From 388288337910f77ecb5de6109ab9eaaf9f9365c9 Mon Sep 17 00:00:00 2001 From: Damiano Clementel Date: Fri, 12 Jul 2024 23:08:13 +0200 Subject: [PATCH 1/9] Resets original pipes; Disables highlights (must be reactivated); Removes background flickering from Mol* --- .vscode/launch.json | 6 +- angular.json | 5 +- .../demo-showcase/src/app/app.component.html | 24 +- .../demo-showcase/src/app/app.component.scss | 4 +- .../demo-showcase/src/app/app.component.ts | 49 ++-- projects/demo-showcase/src/app/app.routes.ts | 29 ++- .../page-sequence-viewer.component.html | 3 - .../page-sequence-viewer.component.ts | 110 +++------ .../page-structure-viewer.component.html | 4 +- .../page-structure-viewer.component.ts | 12 +- .../sections/section-chains.component.html | 55 ++--- .../sections/section-chains.component.ts | 42 ++-- .../theme-selector.component.html | 36 +++ .../theme-selector.component.scss | 10 + .../theme-selector.component.spec.ts | 21 ++ .../theme-selector.component.ts | 26 +++ .../theme-selector.service.spec.ts} | 8 +- .../theme-selector/theme-selector.service.ts | 42 ++++ projects/demo-showcase/src/styles.scss | 40 ++-- .../demo-showcase/src/styles/_background.scss | 6 +- .../lib/ngx-sequence-viewer.component.html | 66 +++--- .../src/lib/ngx-sequence-viewer.component.ts | 210 ++++++------------ .../ngx-sequence-viewer/src/public-api.ts | 2 +- .../lib/ngx-structure-viewer.component.html | 6 +- .../lib/ngx-structure-viewer.component.scss | 54 ++--- .../src/lib/ngx-structure-viewer.component.ts | 73 ++---- .../src/lib/services/canvas.service.ts | 69 ------ .../src/lib/services/highlight.service.ts | 177 +++++++-------- .../src/lib/services/plugin.service.ts | 39 +++- .../lib/services/representation.service.ts | 27 ++- .../src/lib/services/settings.service.ts | 54 ++++- .../src/lib/services/structure.service.ts | 10 - 32 files changed, 646 insertions(+), 673 deletions(-) create mode 100644 projects/demo-showcase/src/app/theme-selector/theme-selector.component.html create mode 100644 projects/demo-showcase/src/app/theme-selector/theme-selector.component.scss create mode 100644 projects/demo-showcase/src/app/theme-selector/theme-selector.component.spec.ts create mode 100644 projects/demo-showcase/src/app/theme-selector/theme-selector.component.ts rename projects/{ngx-structure-viewer/src/lib/services/canvas.service.spec.ts => demo-showcase/src/app/theme-selector/theme-selector.service.spec.ts} (50%) create mode 100644 projects/demo-showcase/src/app/theme-selector/theme-selector.service.ts delete mode 100644 projects/ngx-structure-viewer/src/lib/services/canvas.service.ts diff --git a/.vscode/launch.json b/.vscode/launch.json index 1348ba4..59fa3a9 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,7 +9,11 @@ "request": "launch", "name": "Launch Chrome against localhost", "url": "http://localhost:4200", - "webRoot": "${workspaceFolder}" + "webRoot": "${workspaceFolder}", + // "resolveSourceMapLocations": [ + // "${workspaceFolder}/**", + // "!**/node_modules/**" + // ], } ] } \ No newline at end of file diff --git a/angular.json b/angular.json index 8d4f63a..acdb7d7 100644 --- a/angular.json +++ b/angular.json @@ -32,7 +32,10 @@ "styles": [ "projects/demo-showcase/src/styles.scss" ], - "scripts": [] + "scripts": [ + "node_modules/@popperjs/core/dist/umd/popper.min.js", + "node_modules/bootstrap/dist/js/bootstrap.min.js" + ] }, "configurations": { "production": { diff --git a/projects/demo-showcase/src/app/app.component.html b/projects/demo-showcase/src/app/app.component.html index 830d06e..128ee25 100644 --- a/projects/demo-showcase/src/app/app.component.html +++ b/projects/demo-showcase/src/app/app.component.html @@ -1,11 +1,18 @@
-
@@ -23,14 +30,13 @@

ngx-biocomp-up

- - Developed by Damiano Clementel - + + Developed by Damiano Clementel +
University of Padua
- - + \ No newline at end of file diff --git a/projects/demo-showcase/src/app/app.component.scss b/projects/demo-showcase/src/app/app.component.scss index a23b043..64258e2 100644 --- a/projects/demo-showcase/src/app/app.component.scss +++ b/projects/demo-showcase/src/app/app.component.scss @@ -1,5 +1,5 @@ :host { - height: inherit; - display: inherit; flex-direction: inherit; + display: inherit; + height: inherit; } \ No newline at end of file diff --git a/projects/demo-showcase/src/app/app.component.ts b/projects/demo-showcase/src/app/app.component.ts index 1b39ce0..da366b7 100644 --- a/projects/demo-showcase/src/app/app.component.ts +++ b/projects/demo-showcase/src/app/app.component.ts @@ -1,47 +1,30 @@ -// Import custom components -import { NgxFeaturesViewerComponent } from '@ngx-features-viewer'; -// import { NgxStructureViewerComponent } from 'ngx-structure-viewer'; -import { CommonModule } from '@angular/common'; +// Core dependencies import { RouterModule, RouterOutlet } from '@angular/router'; +import { CommonModule } from '@angular/common'; import { Component } from '@angular/core'; +// Custom dependencies +import { ThemeSelectorComponent } from './theme-selector/theme-selector.component'; +import { ThemeSelectorService } from './theme-selector/theme-selector.service'; -// Define example sequence -// >sp|P05067|A4_HUMAN Amyloid-beta precursor protein OS=Homo sapiens OX=9606 GN=APP PE=1 SV=3 -const P05067 = 'MLPGLALLLLAAWTARALEVPTDGNAGLLAEPQIAMFCGRLNMHMNVQNGKWDSDPSGTK' + - 'TCIDTKEGILQYCQEVYPELQITNVVEANQPVTIQNWCKRGRKQCKTHPHFVIPYRCLVG' + - 'EFVSDALLVPDKCKFLHQERMDVCETHLHWHTVAKETCSEKSTNLHDYGMLLPCGIDKFR' + - 'GVEFVCCPLAEESDNVDSADAEEDDSDVWWGGADTDYADGSEDKVVEVAEEEEVAEVEEE' + - 'EADDDEDDEDGDEVEEEAEEPYEEATERTTSIATTTTTTTESVEEVVREVCSEQAETGPC' + - 'RAMISRWYFDVTEGKCAPFFYGGCGGNRNNFDTEEYCMAVCGSAMSQSLLKTTQEPLARD' + - 'PVKLPTTAASTPDAVDKYLETPGDENEHAHFQKAKERLEAKHRERMSQVMREWEEAERQA' + - 'KNLPKADKKAVIQHFQEKVESLEQEAANERQQLVETHMARVEAMLNDRRRLALENYITAL' + - 'QAVPPRPRHVFNMLKKYVRAEQKDRQHTLKHFEHVRMVDPKKAAQIRSQVMTHLRVIYER' + - 'MNQSLSLLYNVPAVAEEIQDEVDELLQKEQNYSDDVLANMISEPRISYGNDALMPSLTET' + - 'KTTVELLPVNGEFSLDDLQPWHSFGADSVPANTENEVEPVDARPAADRGLTTRPGSGLTN' + - 'IKTEEISEVKMDAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIATVIVITL' + - 'VMLKKKQYTSIHHGVVEVDAAVTPEERHLSKMQQNGYENPTYKFFEQMQN'; @Component({ selector: 'app-root', standalone: true, - imports: [CommonModule, RouterModule, RouterOutlet, NgxFeaturesViewerComponent], + imports: [ + // Custom components + ThemeSelectorComponent, + // Core modules + CommonModule, + RouterModule, + RouterOutlet, + ], + providers: [ + ThemeSelectorService + ], templateUrl: './app.component.html', styleUrl: './app.component.scss' }) export class AppComponent { // TODO Define demo title title = 'ngx-bio-tools'; - - // Define sequence (features viewer) - public readonly sequence = P05067.split(''); - - // Define features (features viewer) - public readonly features = [ - { id: 0, type: 'continuous' as const, color: 'blue', values: this.sequence.map(() => Math.random()), parent: undefined, height: 128 }, - { id: 1, type: 'loci' as const, color: 'red', values: [{ start: 1, end: 3 }, { start: 5, end: 6 }], parent: undefined, height: 96 }, - { id: 2, type: 'pins' as const, color: 'green', values: [{ start: 5 }, { start: 100, color: 'blue' }, { start: 400, color: 'red' }], parent: 1 }, - { id: 3, type: 'loci' as const, color: 'orange', values: [{ start: 10, end: 20 }, { start: 30, end: 70 }], parent: 1 }, - { id: 4, type: 'loci' as const, color: 'purple', values: [{ start: 100, end: 300 }], parent: undefined }, - { id: 5, type: 'dssp' as const, color: 'black', values: [{ start: 30, end: 90, code: 'H' as const, color: 'orange' }, { start: 120, end: 300, code: 'E' as const, color: 'purple' }], parent: undefined }, - ]; } diff --git a/projects/demo-showcase/src/app/app.routes.ts b/projects/demo-showcase/src/app/app.routes.ts index 111334a..16944d0 100644 --- a/projects/demo-showcase/src/app/app.routes.ts +++ b/projects/demo-showcase/src/app/app.routes.ts @@ -1,22 +1,27 @@ // import { PageStructureViewerComponent } from './page-structure-viewer/page-structure-viewer.component'; // import { PageSequenceViewerComponent } from './page-sequence-viewer/page-sequence-viewer.component'; // import { PageFeaturesViewerComponent } from './page-features-viewer/page-features-viewer.component'; +import { PageStructureViewerComponent } from './page-structure-viewer/page-structure-viewer.component'; +import { PageSequenceViewerComponent } from './page-sequence-viewer/page-sequence-viewer.component'; import { PageHomeComponent } from './page-home/page-home.component'; import { Routes } from '@angular/router'; export const routes: Routes = [ - { - path: 'structure', - loadComponent: () => import('./page-structure-viewer/page-structure-viewer.component').then(m => m.PageStructureViewerComponent) - }, - { - path: 'sequence', - loadComponent: () => import('./page-sequence-viewer/page-sequence-viewer.component').then(m => m.PageSequenceViewerComponent) - }, - { - path: 'features', - loadComponent: () => import('./page-features-viewer/page-features-viewer.component').then(m => m.PageFeaturesViewerComponent) - }, + // { + // path: 'structure', + // loadComponent: () => import('./page-structure-viewer/page-structure-viewer.component').then(m => m.PageStructureViewerComponent) + // }, + // { + // path: 'sequence', + // loadComponent: () => import('./page-sequence-viewer/page-sequence-viewer.component').then(m => m.PageSequenceViewerComponent) + // }, + // { + // path: 'features', + // loadComponent: () => import('./page-features-viewer/page-features-viewer.component').then(m => m.PageFeaturesViewerComponent) + // }, + + { path: 'structure', component: PageStructureViewerComponent }, + { path: 'sequence', component: PageSequenceViewerComponent }, { path: '', component: PageHomeComponent }, { path: '**', redirectTo: '' } ]; diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html index dd0486d..9b4beed 100644 --- a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html +++ b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html @@ -14,9 +14,6 @@

Visualize structure

- @if (structure$ | async) { - - }
diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts index cf51e61..aeb4961 100644 --- a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts +++ b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts @@ -1,85 +1,45 @@ -import { NgxSequenceViewerComponent, Loci, Colors } from '@ngx-sequence-viewer'; -import { StructureService, Source } from '@ngx-structure-viewer'; -import { CommonModule, Location } from '@angular/common'; -import { Component, OnDestroy } from '@angular/core'; -import { Subscription } from 'rxjs'; - -// const P05067 = ` -// >sp|P05067|A4_HUMAN Amyloid-beta precursor protein OS=Homo sapiens OX=9606 GN=APP PE=1 SV=3 -// MLPGLALLLLAAWTARALEVPTDGNAGLLAEPQIAMFCGRLNMHMNVQNGKWDSDPSGTK -// TCIDTKEGILQYCQEVYPELQITNVVEANQPVTIQNWCKRGRKQCKTHPHFVIPYRCLVG`; - -// const P05067 = ` -// >sp|P05067|A4_HUMAN Amyloid-beta precursor protein OS=Homo sapiens OX=9606 GN=APP PE=1 SV=3 -// MLPGLALLLLAAWTARALEVPTDGNAGLLAEPQIAMFCGRLNMHMNVQNGKWDSDPSGTK -// TCIDTKEGILQYCQEVYPELQITNVVEANQPVTIQNWCKRGRKQCKTHPHFVIPYRCLVG -// EFVSDALLVPDKCKFLHQERMDVCETHLHWHTVAKETCSEKSTNLHDYGMLLPCGIDKFR -// GVEFVCCPLAEESDNVDSADAEEDDSDVWWGGADTDYADGSEDKVVEVAEEEEVAEVEEE -// EADDDEDDEDGDEVEEEAEEPYEEATERTTSIATTTTTTTESVEEVVREVCSEQAETGPC -// RAMISRWYFDVTEGKCAPFFYGGCGGNRNNFDTEEYCMAVCGSAMSQSLLKTTQEPLARD -// PVKLPTTAASTPDAVDKYLETPGDENEHAHFQKAKERLEAKHRERMSQVMREWEEAERQA -// KNLPKADKKAVIQHFQEKVESLEQEAANERQQLVETHMARVEAMLNDRRRLALENYITAL -// QAVPPRPRHVFNMLKKYVRAEQKDRQHTLKHFEHVRMVDPKKAAQIRSQVMTHLRVIYER -// MNQSLSLLYNVPAVAEEIQDEVDELLQKEQNYSDDVLANMISEPRISYGNDALMPSLTET -// KTTVELLPVNGEFSLDDLQPWHSFGADSVPANTENEVEPVDARPAADRGLTTRPGSGLTN -// IKTEEISEVKMDAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIATVIVITL -// VMLKKKQYTSIHHGVVEVDAAVTPEERHLSKMQQNGYENPTYKFFEQMQN`; +import { NgxSequenceViewerComponent } from '@ngx-sequence-viewer'; +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; + +// Define FASTA file content +const FASTA = `>unit.1.fasta +RFSIAYWHTFTADGTDQFGKATMQRPWNHYTDPMDIA---KARVEAAFEFFDKIN----- +-------- +>unit.7.fasta +----GV------LGSIDANTGDMLLGWDTDQFPTDIRMT----TLAMYEVIKMGG----- +-------- +>unit.2.fasta +---APY-FCFH-DRDIAPEGDTLRET------------------------NKNLDTIVAM +IKDYLKTS +>unit.3.fasta +-KTKVLWGTAN-----LFSNPRFVHGAS-TSCNADVFAYSAAQVKKALEITKELG----- +-------- +>unit.6.fasta +-DKY------------FKVNIEANH----ATLAFHDF------QH-ELRYARIN------ +-------- +>unit.5.fasta +----------F-EGQFLIE-PKPKEP---TK---HQY---DFDVANVLAFLRKYDL---- +-------- +>unit.4.fasta +GENYVFWGGREGYETLLNTDMEFE------LDNFARF------LHMAVDYAKEIG----- +-------- +>unit.8.fasta +---------FD-KGGLNFD-AKVRRA---SFEPEDLF---LGHIAGMDAFAKGFKVAYKL +VKD-----`; @Component({ selector: 'app-page-sequence-viewer', standalone: true, - imports: [CommonModule, NgxSequenceViewerComponent ], - providers: [StructureService], + imports: [ + NgxSequenceViewerComponent, + CommonModule, + ], templateUrl: './page-sequence-viewer.component.html', styleUrl: './page-sequence-viewer.component.scss' }) -export class PageSequenceViewerComponent implements OnDestroy { - - public index!: Array; - - // readonly sequence = P05067.replace(/[\r\n]+[\s\t]*/g, '\n').trim(); - public sequence!: Array; - - readonly source: Source; - - // Define example loci - readonly loci: Loci = [ - { start: '12', end: '43', type: 'range', background: '#007A78', color: '#FFC745' }, - { start: '57', end: '58', type: 'range', background: '#BDE673', color: '#000000' } - ] - - // Define color scheme - readonly colors = Colors.ClustalX; - - public structure$ = this.structureService.structure$; - - protected _structure: Subscription; +export class PageSequenceViewerComponent { - constructor( - public structureService: StructureService, - public location: Location, - ) { - // Subscribe to structure retrieval, in order to not loose emission - this._structure = this.structure$.subscribe(() => { - // Define sequence by extracting residue names - this.sequence = this.structureService.residues.map(({ authCompId1 }) => authCompId1); - // Define index by extracting residue identifier - this.index = this.structureService.residues.map(({ authSeqId, pdbInsCode }) => authSeqId + pdbInsCode); - }); - // Define link to structure file - const link = this.location.prepareExternalUrl('assets/8vap.A.cif'); - // Emit source - this.source = this.structureService.source = { - type: 'remote', - label: '8VAP', - binary: false, - format: 'mmcif', - link - }; - } - - public ngOnDestroy(): void { - this._structure.unsubscribe(); - } + readonly source = { type: 'local', data: FASTA }; } diff --git a/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.html b/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.html index 5fb777f..ecafd3b 100644 --- a/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.html +++ b/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.html @@ -13,7 +13,7 @@

Structure viewer

- + - + \ No newline at end of file diff --git a/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.ts b/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.ts index 842109b..679a9ba 100644 --- a/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.ts +++ b/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.ts @@ -1,10 +1,10 @@ -import { SectionInteractionsComponent } from './sections/section-interactions.component'; -import { SectionSourcesComponent } from './sections/section-sources.component'; +// import { SectionInteractionsComponent } from './sections/section-interactions.component'; +// import { SectionSourcesComponent } from './sections/section-sources.component'; import { SectionChainsComponent } from './sections/section-chains.component'; import { RouterModule } from '@angular/router'; import { CommonModule } from '@angular/common'; import { Component } from '@angular/core'; -import { SectionHighlightsComponent } from './sections/section-highlights.component'; +// import { SectionHighlightsComponent } from './sections/section-highlights.component'; @Component({ // eslint-disable-next-line @angular-eslint/component-selector @@ -13,9 +13,9 @@ import { SectionHighlightsComponent } from './sections/section-highlights.compon imports: [ // NgxStructureViewerComponent, // HttpClientModule, - SectionInteractionsComponent, - SectionHighlightsComponent, - SectionSourcesComponent, + // SectionInteractionsComponent, + // SectionHighlightsComponent, + // SectionSourcesComponent, SectionChainsComponent, RouterModule, CommonModule, diff --git a/projects/demo-showcase/src/app/page-structure-viewer/sections/section-chains.component.html b/projects/demo-showcase/src/app/page-structure-viewer/sections/section-chains.component.html index 9226296..386f542 100644 --- a/projects/demo-showcase/src/app/page-structure-viewer/sections/section-chains.component.html +++ b/projects/demo-showcase/src/app/page-structure-viewer/sections/section-chains.component.html @@ -1,33 +1,34 @@ -@if (chains$ | async; as chains) { - -
- -
-
- - + +@if(settings$ | async; as settings) { + +
+ +
+
+ + +
-
- -
-

Color chain

-
- - @for (chain of chains; track $index) { -
-
- -
- + +
+

Color chain

+
+ + @for (chain of (chains$ | async); track $index) { +
+
+ +
+ +
+ + +
{{ chain | json }}
+
+
- - -
{{ chain | json }}
-
-
+ }
- }
-
} \ No newline at end of file diff --git a/projects/demo-showcase/src/app/page-structure-viewer/sections/section-chains.component.ts b/projects/demo-showcase/src/app/page-structure-viewer/sections/section-chains.component.ts index 9a3de5c..02ba080 100644 --- a/projects/demo-showcase/src/app/page-structure-viewer/sections/section-chains.component.ts +++ b/projects/demo-showcase/src/app/page-structure-viewer/sections/section-chains.component.ts @@ -1,4 +1,5 @@ -import { NgxStructureViewerComponent, Locus, Settings, Source, StructureService, PluginService } from '@ngx-structure-viewer'; +import { NgxStructureViewerComponent, Locus, Settings, Source } from '@ngx-structure-viewer'; +import { ThemeSelectorService } from '../../theme-selector/theme-selector.service'; import { Observable, interval, map, shareReplay, startWith } from 'rxjs'; import { ChangeDetectionStrategy, Component } from '@angular/core'; import { CommonModule } from '@angular/common'; @@ -9,10 +10,6 @@ import { CommonModule } from '@angular/common'; NgxStructureViewerComponent, CommonModule, ], - providers: [ - StructureService, - PluginService, - ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, templateUrl: './section-chains.component.html', @@ -20,23 +17,35 @@ import { CommonModule } from '@angular/common'; }) export class SectionChainsComponent { - readonly settings: Settings; + readonly settings$: Observable; + + // Default settings + private readonly settings: Settings = { + 'background-color': '#2b3035ff', + 'backbone-color': '#6ea8fecc', + 'interaction-color': '#ff0000ff', + 'interaction-size': 1, + }; readonly source: Source; readonly chains$: Observable; constructor( - public structureService: StructureService, - public pluginService: PluginService, + public themeSelectorService: ThemeSelectorService, ) { + const theme$ = this.themeSelectorService.theme$; // Define settings - this.settings = { - 'background-color': '#2b3035ff', - 'backbone-color': '#6ea8fecc', - 'interaction-color': '#ff0000ff', - 'interaction-size': 1, - }; + this.settings$ = theme$.pipe( + // Overwrite default settings + map((theme) => ({ + ...this.settings, + 'background-color': theme === 'light' ? '#f8f9fa' : '#2b3035', + 'backbone-color': theme === 'light' ? '#2b3035' : '#f8f9fa', + })), + // Cache results + shareReplay(1), + ); // Define source retrieval pipeline this.source = { @@ -69,11 +78,6 @@ export class SectionChainsComponent { // Cache result shareReplay(1), ); - - // TODO Check that service has been imported - structureService.structure$.subscribe(() => { - console.log('Hello, world!'); - }); } } diff --git a/projects/demo-showcase/src/app/theme-selector/theme-selector.component.html b/projects/demo-showcase/src/app/theme-selector/theme-selector.component.html new file mode 100644 index 0000000..150b02a --- /dev/null +++ b/projects/demo-showcase/src/app/theme-selector/theme-selector.component.html @@ -0,0 +1,36 @@ + + + + + + + \ No newline at end of file diff --git a/projects/demo-showcase/src/app/theme-selector/theme-selector.component.scss b/projects/demo-showcase/src/app/theme-selector/theme-selector.component.scss new file mode 100644 index 0000000..7c2679f --- /dev/null +++ b/projects/demo-showcase/src/app/theme-selector/theme-selector.component.scss @@ -0,0 +1,10 @@ +// :host { +// // position: relative; +// // display: inherit; + +// // Mock dorpdown-menu-end +// &.menu-end > .dropdown-menu { +// right: 0; +// left: auto; +// } +// } \ No newline at end of file diff --git a/projects/demo-showcase/src/app/theme-selector/theme-selector.component.spec.ts b/projects/demo-showcase/src/app/theme-selector/theme-selector.component.spec.ts new file mode 100644 index 0000000..25f85a8 --- /dev/null +++ b/projects/demo-showcase/src/app/theme-selector/theme-selector.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ThemeSelectorComponent } from './theme-selector.component'; + +describe('ThemeSelectorComponent', () => { + let component: ThemeSelectorComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ThemeSelectorComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(ThemeSelectorComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/demo-showcase/src/app/theme-selector/theme-selector.component.ts b/projects/demo-showcase/src/app/theme-selector/theme-selector.component.ts new file mode 100644 index 0000000..b077531 --- /dev/null +++ b/projects/demo-showcase/src/app/theme-selector/theme-selector.component.ts @@ -0,0 +1,26 @@ +import { Theme, ThemeSelectorService } from './theme-selector.service'; +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-theme-selector', + // Define dependencies + imports: [CommonModule], + standalone: true, + // Define styles + templateUrl: './theme-selector.component.html', + styleUrl: './theme-selector.component.scss', +}) +export class ThemeSelectorComponent { + + // Bind component to logic + public readonly theme$ = this.themeSelectorService.theme$; + + // Dependency injection + constructor(protected themeSelectorService: ThemeSelectorService) {} + + public setTheme(theme: Theme) { + // Emit theme value + this.theme$.next(theme); + } +} diff --git a/projects/ngx-structure-viewer/src/lib/services/canvas.service.spec.ts b/projects/demo-showcase/src/app/theme-selector/theme-selector.service.spec.ts similarity index 50% rename from projects/ngx-structure-viewer/src/lib/services/canvas.service.spec.ts rename to projects/demo-showcase/src/app/theme-selector/theme-selector.service.spec.ts index 331c521..ad169e6 100644 --- a/projects/ngx-structure-viewer/src/lib/services/canvas.service.spec.ts +++ b/projects/demo-showcase/src/app/theme-selector/theme-selector.service.spec.ts @@ -1,13 +1,13 @@ import { TestBed } from '@angular/core/testing'; -import { CanvasService } from './canvas.service'; +import { ThemeSelectorService } from './theme-selector.service'; -describe('CanvasService', () => { - let service: CanvasService; +describe('ThemeSelectorService', () => { + let service: ThemeSelectorService; beforeEach(() => { TestBed.configureTestingModule({}); - service = TestBed.inject(CanvasService); + service = TestBed.inject(ThemeSelectorService); }); it('should be created', () => { diff --git a/projects/demo-showcase/src/app/theme-selector/theme-selector.service.ts b/projects/demo-showcase/src/app/theme-selector/theme-selector.service.ts new file mode 100644 index 0000000..72dc9d0 --- /dev/null +++ b/projects/demo-showcase/src/app/theme-selector/theme-selector.service.ts @@ -0,0 +1,42 @@ +import { Injectable, OnDestroy } from '@angular/core'; +import { BehaviorSubject, Subscription } from 'rxjs'; + +export type Theme = 'light' | 'dark' | 'auto'; + +@Injectable({ providedIn: 'root' }) +export class ThemeSelectorService implements OnDestroy { + + public theme$ = new BehaviorSubject(this.getStoredTheme()); + + public _theme: Subscription; + + constructor() { + // Subscribe to theme change + this._theme = this.theme$.subscribe((theme) => { + // Store theme in local storage + this.setStoredTheme(theme); + // Case theme is `auto` + if (theme === 'auto') { + // Then set theme as either `light` or `dark` according to system preferences + theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; + } + // Update theme in document + document.documentElement.setAttribute('data-bs-theme', theme); + }); + } + + public getStoredTheme(): Theme { + // Attempt to extract theme from + return localStorage.getItem('theme') as Theme || 'auto'; + } + + public setStoredTheme(theme: Theme) { + // Set theme in local storage + localStorage.setItem('theme', theme); + } + + public ngOnDestroy(): void { + // Unsubscribe from theme change + this._theme.unsubscribe(); + } +} diff --git a/projects/demo-showcase/src/styles.scss b/projects/demo-showcase/src/styles.scss index f237ba2..d74a05a 100644 --- a/projects/demo-showcase/src/styles.scss +++ b/projects/demo-showcase/src/styles.scss @@ -2,40 +2,40 @@ // Option B: Include parts of Bootstrap // 1. Include functions first (so you can manipulate colors, SVGs, calc, etc) -@import "../../../node_modules/bootstrap/scss/functions"; +@import "bootstrap/scss/functions"; // 2. Include any default variable overrides here // 3. Include remainder of required Bootstrap stylesheets (including any separate color mode stylesheets) -@import "../../../node_modules/bootstrap/scss/variables"; -@import "../../../node_modules/bootstrap/scss/variables-dark"; +@import "bootstrap/scss/variables"; +@import "bootstrap/scss/variables-dark"; // 4. Include any default map overrides here // 5. Include remainder of required parts -@import "../../../node_modules/bootstrap/scss/maps"; -@import "../../../node_modules/bootstrap/scss/mixins"; -@import "../../../node_modules/bootstrap/scss/root"; +@import "bootstrap/scss/maps"; +@import "bootstrap/scss/mixins"; +@import "bootstrap/scss/root"; // 6. Optionally include any other parts as needed -@import "../../../node_modules/bootstrap/scss/utilities"; -@import "../../../node_modules/bootstrap/scss/reboot"; -@import "../../../node_modules/bootstrap/scss/type"; -@import "../../../node_modules/bootstrap/scss/images"; -@import "../../../node_modules/bootstrap/scss/containers"; -@import "../../../node_modules/bootstrap/scss/grid"; -@import "../../../node_modules/bootstrap/scss/helpers"; -@import "../../../node_modules/bootstrap/scss/navbar"; -@import "../../../node_modules/bootstrap/scss/badge"; -@import "../../../node_modules/bootstrap/scss/progress"; -@import "../../../node_modules/bootstrap/scss/nav"; -@import "../../../node_modules/bootstrap/scss/card"; +@import "bootstrap/scss/utilities"; +@import "bootstrap/scss/reboot"; +@import "bootstrap/scss/type"; +@import "bootstrap/scss/images"; +@import "bootstrap/scss/containers"; +@import "bootstrap/scss/grid"; +@import "bootstrap/scss/helpers"; +@import "bootstrap/scss/navbar"; +@import "bootstrap/scss/nav"; +@import "bootstrap/scss/badge"; +@import "bootstrap/scss/card"; +@import "bootstrap/scss/dropdown"; // 7. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss` -@import "../../../node_modules/bootstrap/scss/utilities/api"; +@import "bootstrap/scss/utilities/api"; // 8. Add additional custom code here -//@import "../../../node_modules/bootstrap-icons/font/bootstrap-icons.scss"; +@import "bootstrap-icons"; @import "./styles/background"; @import "./styles/scaffold"; @import "./styles/utils"; diff --git a/projects/demo-showcase/src/styles/_background.scss b/projects/demo-showcase/src/styles/_background.scss index efffb91..982d67e 100644 --- a/projects/demo-showcase/src/styles/_background.scss +++ b/projects/demo-showcase/src/styles/_background.scss @@ -1,9 +1,9 @@ -$gradient: linear-gradient(45deg, rgb(255, 38, 0), #440064); +// $gradient: linear-gradient(45deg, #648FFF, #DC267F); .navbar { - background: $gradient; + background: #648FFF; } .bg-primary { - background: $gradient; + background: #648FFF; } \ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html index 892057a..15bd1fe 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html @@ -1,33 +1,35 @@ - -
- @for (position of positions$ | async; track $index) { -
- {{ index[$index] }} -
+@if(sequences$ | async; as sequences) { + + @for (chunk of chunks; track $index) { + + + + + + + + + + @for (kv of sequences | keyvalue; track $index) { + + + + + + @for(i of chunk.index; track i) { + @if (kv.value[i - 1] === '-') { + + + } @else { + + + } + + } + + } +
 {{ chunk.end }}
{{ labels && labels[$index] || kv.key }}- + {{ (kv.value[i - 1]).toUpperCase() }} +
} - -
- -
- @for (c of sequence; track $index) { -
- {{ c }} -
- } -
\ No newline at end of file +} \ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts index e919121..9b48050 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts @@ -1,164 +1,102 @@ -import { Component, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; -import { combineLatestWith, map, shareReplay, startWith } from 'rxjs'; -import { SelectionService } from './services/selection.service'; -import { PositionsService } from './services/positions.service'; +import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core'; +// import { combineLatestWith, map, shareReplay, startWith } from 'rxjs'; +// import { SelectionService } from './services/selection.service'; +// import { PositionsService } from './services/positions.service'; import { CommonModule } from '@angular/common'; -import * as Colors from './colors'; - -export interface Locus { - // Define start position (for both point and range loci) - start: T; - // Define end position (for range loci) - end?: T; - // Define type of locus - type: 'range'; - // Background and text color, if defined - background?: string; - color?: string; +// import * as Colors from './colors'; + +// export interface Locus { +// // Define start position (for both point and range loci) +// start: T; +// // Define end position (for range loci) +// end?: T; +// // Define type of locus +// type: 'range'; +// // Background and text color, if defined +// background?: string; +// color?: string; +// } + +// export type Loci = Locus[]; + +export interface Chunk { + // This is the index shown above the chunk + index: number[]; + // These are the boundaries of the chunk + start: number; + end: number; } -export type Loci = Locus[]; +/** Defines logo of aligned sequences + * + * Logo stores the probability of each character in each position of the alignment. + * The Logo array stores one value for each position of the alingnment. + * Each value is a dictionary, mapping key to probability. + * NOTE It includes gap `-` character. Hence, the sum of all probabilities in each position is 1. + */ +export type Logo = Array>; + +/** Define consensus of aligned sequences + * + * This is just the highest probability in each position of the alignment. + * NOTE In this case the gap `-` character is not considered. + */ +export type Consensus = Array; @Component({ // eslint-disable-next-line @angular-eslint/component-selector selector: 'ngx-sequence-viewer', - providers: [PositionsService, SelectionService], + // providers: [PositionsService, SelectionService], imports: [CommonModule], standalone: true, templateUrl: './ngx-sequence-viewer.component.html', styleUrls: ['./ngx-sequence-viewer.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, }) export class NgxSequenceViewerComponent implements OnChanges { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - @Input() loci?: Loci; - - @Input() index!: Array; + @Input() + public split = 5; - @Input() sequence!: Array | string; + @Input() + public labels?: string[]; - @Input() colors!: Colors.Schema; + @Input() + public sequences: string; - @Input() description?: string; + public chunks!: Chunk[]; - public positions$: typeof this.positionsService.output$; + public logo!: Logo; - protected set positions(positions: Array | undefined>) { - this.positionsService.positions = positions; - } - - protected get positions(): Array | undefined> { - return this.positionsService.positions; - } - - // eslint-disable-next-line @angular-eslint/no-output-rename - @Output('selected') - readonly selected$ = this.selectionService.selected$; - - constructor( - public positionsService: PositionsService, - public selectionService: SelectionService, - ) { - // Define output pipeline - this.positions$ = this.selectionService.selected$.pipe( - // Set color for selected locus - map((selected) => ({ ...selected, background: '#FFFFFF', color: '#000000' })), - // This is required to always have a value emitted then - startWith(undefined), - // Combine input positions with selected locus - combineLatestWith(this.positionsService.input$), - // Override positions with selected loci - map(([selected, positions]) => { - // Copy positions array - positions = [...positions]; - // TODO Define index (any) to position (numeric) map - const i2p = new Map(this.index.map((v, i) => [v, i])); - // Extract start, end positions from selected locus - const start = selected?.start, end = selected?.end; - // Do only if selected locus has both start, end positions defined - if (start != undefined && end != undefined) { - // Get start, end position as numeric - let i = i2p.get(start) as number; - let j = i2p.get(end) as number; - // Sort start, end position - if (i > j) [i, j] = [j, i]; - // Replace positions in range with selected locus - positions.splice(i, j - i + 1, ...Array(j - i + 1).fill(selected)); - } - // Return updated list of positions - return positions; - }), - // Cache result - shareReplay(1), - ); - } + public consensus!: Consensus; public ngOnChanges(changes: SimpleChanges): void { + // Check for input change if (changes) { - // Test changes on sequence(s) and index - if (changes['sequence'] || changes['index']) { - // Case sequence is a string, cast it to an array of characters - if (typeof this.sequence === 'string') { - // Case description is not set and first line starts with '>', extract first line as description - if (!this.description && this.sequence[0] === '>') { - const [description, ...sequence] = this.sequence.split('\n'); - this.description = description; - this.sequence = sequence.join('\n'); - } - // Split sequence into an array of characters - this.sequence = this.sequence.replace(/[\n\r\s\t]+/g, '').split(''); + // Initialize variables + const labels = []; + const sequences = [] as string[]; + // Initialize current key + let i = -1; + // Split text by line + const lines = this.sequences.split('\n'); + // Iterate over lines + for (const line of lines) { + // Case line starts with '>' character + if (line.startsWith('>')) { + // Set current label + labels.push(line.slice(1)); + // Initialize sequence + sequences.push(''); + // Update index + i++; + } else { + // Otherwise, add sequence to alignment (if key is defined) + sequences[i] += line; } - // Case index is not set, generate one according to the sequence length - if (!this.index) { - this.index = Array.from({ length: this.sequence.length }, (_, i) => i + 1); - } - } - - // Case color schema is not set, use ClustalX as default - if (!this.colors) { - this.colors = Colors.ClustalX; } - - // Define (any) index to (numeric) position map - const i2p = new Map(this.index.map((v, i) => [v, i])); - // Initialize positions array with undefined values - const positions = new Array | undefined>(this.index.length).fill(undefined); - // Cast input loci to numeric positions - const loci: Loci = (this.loci || []).map(({ start, end, type, background, color }) => { - // Cast start position to numeric - const s = i2p.get(start) as number; - // Cast end position to numeric - const e = (end !== undefined ? i2p.get(end) : start) as number; - // Define current locus - const locus = { start: s, end: e, type, background, color }; - // Update all positions in range between start, end - for (let i = s; i <= e; i++) { - // Update locus in current position - positions[i] = locus; - } - // Return locus with numeric positions - return locus; - }); - // Sort loci by start, end position - loci.sort((a, b) => a.start - b.start || (a.end || 0) - (b.end || 0)); - // Store loci - this.loci = loci; - // Store positions - this.positions = positions; + } } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - public onMouseUp(event: MouseEvent): void { - // console.log('Mouse up', event); - } - - public onMouseDown(event: MouseEvent, position: string | number): void { - this.selectionService.onMouseDown(event, position); - } - - public onMouseEnter(event: MouseEvent, position: string | number) { - this.selectionService.onMouseEnter(event, position); - } } diff --git a/projects/ngx-sequence-viewer/src/public-api.ts b/projects/ngx-sequence-viewer/src/public-api.ts index 2b369ce..46d53c5 100644 --- a/projects/ngx-sequence-viewer/src/public-api.ts +++ b/projects/ngx-sequence-viewer/src/public-api.ts @@ -1,2 +1,2 @@ -export { NgxSequenceViewerComponent, Locus, Loci } from './lib/ngx-sequence-viewer.component'; +export { NgxSequenceViewerComponent } from './lib/ngx-sequence-viewer.component'; export * as Colors from './lib/colors'; diff --git a/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.html b/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.html index 354f503..4ea4ec5 100644 --- a/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.html +++ b/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.html @@ -1,5 +1 @@ - -
- -
- +
\ No newline at end of file diff --git a/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.scss b/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.scss index b968a86..6e5cefe 100644 --- a/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.scss +++ b/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.scss @@ -1,27 +1,31 @@ -.ngx-structure-viewer { - // Define outer container - &-container { - position: relative; +:host { + overflow: hidden; + display: block; height: 100%; - width: 100%; - } - // Define inner canvas - &-canvas { - position: absolute; - height: 100%; - width: 100%; - left: 0; - top: 0; - } - // // Define inner label - // &-label { - // position: absolute; - // padding: .25rem; - // margin: 1rem; - // height: auto; - // width: auto; - // bottom: 0; - // right: 0; - // } -} + width: 100%; + + ::ng-deep { + @import 'molstar/lib/mol-plugin-ui/skin/dark.scss'; + + canvas { + background-image: none !important; + background: transparent !important; + } + + &.msp-plugin .msp-viewport { + background: revert; + } + + .msp-plugin { + background: revert; + } + + .msp-plugin .msp-layout-standard { + border: revert; + } + .msp-highlight-toast-wrapper { + z-index: 3 !important; + } + } +} \ No newline at end of file diff --git a/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts b/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts index a2dc5cf..216278b 100644 --- a/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts +++ b/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts @@ -1,17 +1,16 @@ -import { Component, ElementRef, Injector, Input, Optional, Output, SkipSelf, ViewChild } from '@angular/core'; -import { ViewEncapsulation } from '@angular/core'; +import { Component, ElementRef, Input, Output, ViewChild } from '@angular/core'; import { CommonModule } from '@angular/common'; // Custom dependencies import { RepresentationService } from './services/representation.service'; -import { HighlightService, Highlights } from './services/highlight.service'; +import { HighlightService } from './services/highlight.service'; import { StructureService } from './services/structure.service'; import { SettingsService } from './services/settings.service'; import { PluginService } from './services/plugin.service'; -import { CanvasService } from './services/canvas.service'; import { Interaction } from './interfaces/interaction'; import { Settings } from './interfaces/settings'; import { Source } from './interfaces/source'; import { Locus } from './interfaces/locus'; +import { map, shareReplay } from 'rxjs'; @Component({ // eslint-disable-next-line @angular-eslint/component-selector @@ -21,65 +20,23 @@ import { Locus } from './interfaces/locus'; CommonModule, ], providers: [ - // Mandatory providers RepresentationService, HighlightService, + StructureService, SettingsService, - CanvasService, - // Optional providers - // NOTE Those are created for the instance only if they are not provided by the parent component - { - provide: StructureService, - deps: [Injector, PluginService, [new Optional(), new SkipSelf(), StructureService],], - useFactory: (parentInjector: Injector, pluginService: PluginService, structureService?: StructureService) => { - // Case structure service is not provided, it must be created - if (!structureService) { - // Define injector for current component - const childInjector = Injector.create({ - providers: [StructureService, { provide: PluginService, useValue: pluginService }], - parent: parentInjector - }); - // get injected service - structureService = childInjector.get(StructureService); - } - // Return structure service - return structureService; - } - }, - { - provide: PluginService, - deps: [Injector, [new Optional(), new SkipSelf(), PluginService]], - useFactory: (parentInjector: Injector, pluginService?: PluginService) => { - // Case plugin service is not provided, it must be created - if (!pluginService) { - // Define injector for current component - const childInjector = Injector.create({ - providers: [PluginService], - parent: parentInjector - }); - // get injected service - pluginService = childInjector.get(PluginService); - } - // Return plugin service - return pluginService; - } - } + PluginService, ], standalone: true, // Handle representation templateUrl: './ngx-structure-viewer.component.html', - styleUrls: [ - '../../../../node_modules/molstar/lib/mol-plugin-ui/skin/dark.scss', - './ngx-structure-viewer.component.scss' - ], - encapsulation: ViewEncapsulation.None, + styleUrl: './ngx-structure-viewer.component.scss', }) export class NgxStructureViewerComponent { @ViewChild('container') set container(container: ElementRef) { // Emit container - this.canvasService.container = container; + this.pluginService.initialize$.next(container); } @Input() @@ -102,22 +59,28 @@ export class NgxStructureViewerComponent { this.settingsService.settings = settings; } - @Input() - set highlights(highlights: Highlights) { - this.highlightService.highlights = highlights; - } + // @Input() + // set highlights(highlights: Highlights) { + // this.highlightService.highlights = highlights; + // } // eslint-disable-next-line @angular-eslint/no-output-rename @Output('highlights') public highlights$ = this.highlightService.output$; + public background$ = this.settingsService.settings$.pipe( + // Extract background color + map((settings) => settings['background-color']), + // Cache result + shareReplay(1), + ); + constructor( public representationService: RepresentationService, public highlightService: HighlightService, public structureService: StructureService, public settingsService: SettingsService, public pluginService: PluginService, - public canvasService: CanvasService, ) { } diff --git a/projects/ngx-structure-viewer/src/lib/services/canvas.service.ts b/projects/ngx-structure-viewer/src/lib/services/canvas.service.ts deleted file mode 100644 index b9b5056..0000000 --- a/projects/ngx-structure-viewer/src/lib/services/canvas.service.ts +++ /dev/null @@ -1,69 +0,0 @@ - -import { Observable, ReplaySubject, combineLatestWith, map, shareReplay } from 'rxjs'; -import { PluginUIContext } from 'molstar/lib/mol-plugin-ui/context'; -import { Plugin } from 'molstar/lib/mol-plugin-ui/plugin'; -// import { PluginContext } from 'molstar/lib/mol-plugin/context'; -import { ElementRef, Injectable } from '@angular/core'; -import { SettingsService } from './settings.service'; -import { PluginService } from './plugin.service'; -import { fromHexString } from '../colors'; - -// React dependencies -import { createRoot } from 'react-dom/client'; -import { createElement } from "react"; - -@Injectable() -export class CanvasService { - - readonly initialize$ = new ReplaySubject(1); - - readonly initialized$: Observable; - - set container(container: ElementRef) { - this.initialize$.next(container); - } - - constructor( - public settingsService: SettingsService, - public pluginService: PluginService, - ) { - // Initialize plugin context - const plugin$ = this.pluginService.plugin$; - // Define settings retrieval pipeline - const settings$ = this.settingsService.settings$; - // Define plugin initialization pipeline - this.initialized$ = this.initialize$.pipe( - // Get outer HTML element - map((container) => { - // Get HTML div container - const div = container.nativeElement as HTMLDivElement; - // Get first child of div container - const canvas = div.firstElementChild as HTMLCanvasElement; - // Return both elements - return { div, canvas }; - }), - // Combine with plugin initialization - combineLatestWith(plugin$), - // Combine with settings retrieval - combineLatestWith(settings$), - // Create plugin's React UI - map(([[{ div: container }, plugin], settings]) => { - // Get background color - const [color, alpha] = fromHexString(settings['background-color']); - // Update canvas specs before rendering - this.pluginService.specs.canvas3d = { - renderer: { - backgroundColor: color, - pickingAlphaThreshold: alpha, - } - }; - // Render using React - createRoot(container).render(createElement(Plugin, { plugin })); - // Return initialized plugin - return plugin; - }), - // Cache result - shareReplay(1), - ); - } -} diff --git a/projects/ngx-structure-viewer/src/lib/services/highlight.service.ts b/projects/ngx-structure-viewer/src/lib/services/highlight.service.ts index 9f34bb3..60514e8 100644 --- a/projects/ngx-structure-viewer/src/lib/services/highlight.service.ts +++ b/projects/ngx-structure-viewer/src/lib/services/highlight.service.ts @@ -15,99 +15,100 @@ export class HighlightService implements OnDestroy { readonly input$ = new ReplaySubject(1); - readonly output$: Observable; + readonly output$!: Observable; - public set highlights(highlights: Highlights) { - // Emit highlight - this.input$.next(highlights); - } + // public set highlights(highlights: Highlights) { + // // Emit highlight + // this.input$.next(highlights); + // } - protected _highlights: Subscription; + // protected _highlights: Subscription; - constructor( - // public representationService: RepresentationService, - public structureService: StructureService, - public pluginService: PluginService, - ) { - // Get plugin instance - const plugin = this.pluginService.plugin; - // Define hover event - const hover$ = plugin.behaviors.interaction.hover; - // Subscribe to representation event - const input$ = this.structureService.structure$.pipe( - // Combine with highlights input - combineLatestWith(this.input$), - // eslint-disable-next-line @typescript-eslint/no-unused-vars - map(([structure, highlights ]) => ({ structure, highlights})), - // Get all residue identifiers within locus - map(({ structure, highlights }) => { - // Case highlight is defined - if (highlights) { - const ids = [...this.structureService.i2r.values()]; - const start = this.structureService.r2i.get(highlights.chain + highlights.start)!; - const end = this.structureService.r2i.get(highlights.chain + highlights.end)!; - // Add residue identifier to current locus - return { structure, highlights: { ...highlights, ids: ids.slice(start, end + 1) } }; - } - // Otherwise, return empty locus - return { structure, highlights: { start: '', end: '', chain: '', ids: [] } }; - }), - // Apply highlight on given locus - map(({ structure, highlights }) => { - // Case locus is defined - if (highlights.ids.length > 0) { - // Define Mol* loci instance - const loci = getLocusFromSet(highlights.ids, structure); - // Fire highlight event - plugin.managers.interactivity.lociHighlights.highlightOnly({ loci }); - } - }), - ); - // Subscribe to output event - this.output$ = hover$.pipe( - // Extract current highlights - map((event) => { - // Emit loci from hover event - if (event && event.current.loci.kind === 'element-loci') { - // Check loci type - if (SE.Loci.is(event.current.loci)) { - // Get first - const first = SE.Loci.getFirstLocation(event.current.loci); - // Case first location is defined - if (first) { - // Get chain identifier, sequence identifier, PDB insertion code - const authAsymId = SP.chain.auth_asym_id(first); - const authSeqId = SP.residue.auth_seq_id(first); - const pdbInsCode = SP.residue.pdbx_PDB_ins_code(first); - // Get start, end position - const start = authSeqId + pdbInsCode; - const end = start + ''; - // Return loci - return { start, end, chain: authAsymId }; - } - } - } - // Emit locus - return undefined; - }), - // // Avoid flooding - // distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), - // Cache result - shareReplay(1), - ); - // Define output observable - const highlights$ = input$.pipe( - // Subscribe to both input and output - mergeWith(this.output$), - // Return nothing - map(() => void 0), - ); - // Subscribe to highlights - this._highlights = highlights$.subscribe(); - } + // constructor( + // // public representationService: RepresentationService, + // public structureService: StructureService, + // public pluginService: PluginService, + // ) { + // // Get plugin instance + // const plugin = this.pluginService.plugin; + // // Define hover event + // const hover$ = plugin.behaviors.interaction.hover; + // // Subscribe to representation event + // const input$ = this.structureService.structure$.pipe( + // // Combine with highlights input + // combineLatestWith(this.input$), + // // eslint-disable-next-line @typescript-eslint/no-unused-vars + // map(([structure, highlights ]) => ({ structure, highlights})), + // // Get all residue identifiers within locus + // map(({ structure, highlights }) => { + // // Case highlight is defined + // if (highlights) { + // const ids = [...this.structureService.i2r.values()]; + // const start = this.structureService.r2i.get(highlights.chain + highlights.start)!; + // const end = this.structureService.r2i.get(highlights.chain + highlights.end)!; + // // Add residue identifier to current locus + // return { structure, highlights: { ...highlights, ids: ids.slice(start, end + 1) } }; + // } + // // Otherwise, return empty locus + // return { structure, highlights: { start: '', end: '', chain: '', ids: [] } }; + // }), + // // Apply highlight on given locus + // map(({ structure, highlights }) => { + // // Case locus is defined + // if (highlights.ids.length > 0) { + // // Define Mol* loci instance + // const loci = getLocusFromSet(highlights.ids, structure); + // // Fire highlight event + // plugin.managers.interactivity.lociHighlights.highlightOnly({ loci }); + // } + // }), + // ); + // // Subscribe to output event + // this.output$ = hover$.pipe( + // // Extract current highlights + // map((event) => { + // // Emit loci from hover event + // if (event && event.current.loci.kind === 'element-loci') { + // // Check loci type + // if (SE.Loci.is(event.current.loci)) { + // // Get first + // const first = SE.Loci.getFirstLocation(event.current.loci); + // // Case first location is defined + // if (first) { + // // Get chain identifier, sequence identifier, PDB insertion code + // const authAsymId = SP.chain.auth_asym_id(first); + // const authSeqId = SP.residue.auth_seq_id(first); + // const pdbInsCode = SP.residue.pdbx_PDB_ins_code(first); + // // Get start, end position + // const start = authSeqId + pdbInsCode; + // const end = start + ''; + // // Return loci + // return { start, end, chain: authAsymId }; + // } + // } + // } + // // Emit locus + // return undefined; + // }), + // // // Avoid flooding + // // distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)), + // // Cache result + // shareReplay(1), + // ); + // // Define output observable + // const highlights$ = input$.pipe( + // // Subscribe to both input and output + // mergeWith(this.output$), + // // Return nothing + // map(() => void 0), + // ); + // // Subscribe to highlights + // this._highlights = highlights$.subscribe(); + // } + // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method public ngOnDestroy(): void { - this._highlights.unsubscribe(); + // this._highlights.unsubscribe(); } } diff --git a/projects/ngx-structure-viewer/src/lib/services/plugin.service.ts b/projects/ngx-structure-viewer/src/lib/services/plugin.service.ts index 005c276..963ac4c 100644 --- a/projects/ngx-structure-viewer/src/lib/services/plugin.service.ts +++ b/projects/ngx-structure-viewer/src/lib/services/plugin.service.ts @@ -1,15 +1,16 @@ import { DefaultPluginUISpec, PluginUISpec } from 'molstar/lib/mol-plugin-ui/spec'; import { PluginUIContext } from 'molstar/lib/mol-plugin-ui/context'; +import { renderReact18 } from 'molstar/lib/mol-plugin-ui/react18'; import { PluginConfig } from 'molstar/lib/mol-plugin/config'; +import { createPluginUI } from 'molstar/lib/mol-plugin-ui'; // import { PluginContext } from 'molstar/lib/mol-plugin/context'; -import { Observable, from, map, shareReplay } from 'rxjs'; -import { Injectable } from '@angular/core'; -import { Color } from 'molstar/lib/mol-util/color'; // TODO Remove this +import { Observable, ReplaySubject, from, map, shareReplay, switchMap, tap } from 'rxjs'; +import { ElementRef, Injectable } from '@angular/core'; @Injectable() export class PluginService { - readonly plugin!: PluginUIContext; + public plugin!: PluginUIContext; readonly specs: PluginUISpec = { ...DefaultPluginUISpec(), // Show commands @@ -18,21 +19,37 @@ export class PluginService { ], // TODO Remove this canvas3d: { - renderer: { - backgroundColor: Color(0x000000), - } + // renderer: { + // backgroundColor: Color(0x000000), + // } + transparentBackground: true, } }; + readonly initialize$ = new ReplaySubject(1); + readonly plugin$: Observable; constructor() { - // Initialize plugin context - this.plugin = new PluginUIContext(this.specs); // Define plugin initialization pipeline - this.plugin$ = from(this.plugin.init()).pipe( + this.plugin$ = this.initialize$.pipe( + // Get HTML div container + map((container) => container.nativeElement as HTMLDivElement), + // Create plugin context + switchMap((div) => from(createPluginUI({ + // Define container div + target: div, + // Define rendered + render: renderReact18, + // Define plugin specs + spec: this.specs, + }))), + // TODO Remove this + tap((plugin) => { + console.log('Plugin created', plugin) + }), // Get current plugin instance - map(() => this.plugin), + map((plugin) => this.plugin = plugin), // Cache result shareReplay(1), ); diff --git a/projects/ngx-structure-viewer/src/lib/services/representation.service.ts b/projects/ngx-structure-viewer/src/lib/services/representation.service.ts index 6c8f25e..3547406 100644 --- a/projects/ngx-structure-viewer/src/lib/services/representation.service.ts +++ b/projects/ngx-structure-viewer/src/lib/services/representation.service.ts @@ -9,16 +9,14 @@ import { Overpaint } from 'molstar/lib/mol-theme/overpaint'; import { Vec3 } from 'molstar/lib/mol-math/linear-algebra'; import { Script } from 'molstar/lib/mol-script/script'; // Custom dependencies +import { Interaction, Interactor } from '../interfaces/interaction'; +import { CreateMeshProvider } from './interactions.provider'; import { StructureService } from './structure.service'; import { SettingsService } from './settings.service'; import { PluginService } from './plugin.service'; -import { Interaction, Interactor } from '../interfaces/interaction'; +import { Source } from '../interfaces/source'; import { Locus } from '../interfaces/locus'; import { fromHexString } from '../colors'; -import { CreateMeshProvider } from './interactions.provider'; -import { CanvasService } from './canvas.service'; -import { Source } from '../interfaces/source'; - export function getLocusFromQuery(query: Expression, structure: Structure): StructureElement.Loci { // Execute query, retrieve selection @@ -77,13 +75,14 @@ export class RepresentationService implements OnDestroy { public structureService: StructureService, public settingsService: SettingsService, public pluginService: PluginService, - public canvasService: CanvasService, ) { // Get source const source$ = this.structureService.source$.pipe( // Filter out null values filter((source): source is Source => source != null), ); + + // Get structure this.structure$ = this.structureService.structure$.pipe( // Get latest source @@ -94,13 +93,13 @@ export class RepresentationService implements OnDestroy { const plugin = this.pluginService.plugin; // Create component for the whole structure const component = await plugin.builders.structure.tryCreateComponentStatic(structure, 'polymer', { label: source.label }); - // Define color - const [ value ] = fromHexString(this.settingsService.settings['backbone-color']); - // Initialize white representation + // // Define color + // const [ value ] = fromHexString(this.settingsService.settings['backbone-color']); + // Initialize representation await plugin.builders.structure.representation.addRepresentation(component!, { type: 'cartoon', color: 'uniform', - colorParams: { value }, + colorParams: { value: fromHexString('#FFFFFF') }, }); // Return initial structure return structure.cell.obj.data as Structure; @@ -116,8 +115,6 @@ export class RepresentationService implements OnDestroy { // Combine structure emission this.representation$ = this.structure$.pipe( - // Combine with structure initialization - combineLatestWith(this.canvasService.initialized$), // With loci representation pipeline combineLatestWith(loci$), // And interactions representation pipeline @@ -168,8 +165,10 @@ export class RepresentationService implements OnDestroy { // Return updated loci, as well as structure (data) and plugin return { structure, loci: curr }; }), + // Combine with settings emission + combineLatestWith(this.settingsService.settings$), // Apply colors - switchMap(({ structure, loci }) => { + switchMap(([{ structure, loci }, settings]) => { // Initialize color layers const layers = [] as Overpaint.BundleLayer[]; // Fill in map between color and residues @@ -180,7 +179,7 @@ export class RepresentationService implements OnDestroy { // Define current Mol* bundle const bundle = StructureElement.Bundle.fromLoci(locus); // Compute color - const [color] = fromHexString(hex || this.settingsService.settings['backbone-color']); + const [color] = fromHexString(hex || settings['backbone-color']); // Define and store current layer layers.push({ bundle, color, clear: false }); } diff --git a/projects/ngx-structure-viewer/src/lib/services/settings.service.ts b/projects/ngx-structure-viewer/src/lib/services/settings.service.ts index 7b5efc7..573cead 100644 --- a/projects/ngx-structure-viewer/src/lib/services/settings.service.ts +++ b/projects/ngx-structure-viewer/src/lib/services/settings.service.ts @@ -1,20 +1,54 @@ +import { BehaviorSubject, combineLatest, Subscription } from 'rxjs'; +import { Injectable, OnDestroy } from '@angular/core'; import { Settings } from '../interfaces/settings'; -import { Injectable } from '@angular/core'; -import { ReplaySubject } from 'rxjs'; +import { PluginService } from './plugin.service'; +import { fromHexString } from '../colors'; @Injectable() -export class SettingsService { +export class SettingsService implements OnDestroy { - readonly settings$ = new ReplaySubject(); - - protected _settings!: Settings; + // Define default settings + readonly defaults = { + "backbone-color": "#000000", + "background-color": "#FFFFFF", + "interaction-color": "#FF0000", + "interaction-size": 1, + } - set settings(settings: Settings) { - this.settings$.next(this._settings = settings); + set settings(settings: Settings | null) { + // Emit settings + this.settings$.next({ ...this.defaults, ...settings }); } get settings(): Settings { - return this._settings; + // Return internal settings + return this.settings$.value; } - + + readonly settings$ = new BehaviorSubject(this.defaults); + + readonly _settings: Subscription; + + constructor(public pluginService: PluginService) { + // Subscribe to settings change and plugin instance + const settings$ = combineLatest([ this.pluginService.plugin$, this.settings$ ]); + // Subscribe to settings change + this._settings = settings$.subscribe(([plugin, settings]) => { + // Get background color + const [ color, alpha ] = fromHexString(settings["background-color"]); + // Update plugin settings + plugin.canvas3d?.setProps({ + // Set background color + renderer: { backgroundColor: color }, + // Set background opacity + transparentBackground: alpha === 1, + }); + }); + } + + public ngOnDestroy() { + // Unsubscribe from settings + this._settings.unsubscribe(); + } + } diff --git a/projects/ngx-structure-viewer/src/lib/services/structure.service.ts b/projects/ngx-structure-viewer/src/lib/services/structure.service.ts index e68f820..2f89df6 100644 --- a/projects/ngx-structure-viewer/src/lib/services/structure.service.ts +++ b/projects/ngx-structure-viewer/src/lib/services/structure.service.ts @@ -67,16 +67,6 @@ export class StructureService { const model = await plugin.builders.structure.createModel(trajectory, { modelIndex: 0 }); // TODO Create structure return plugin.builders.structure.createStructure(model, { name: 'model', params: {} }); - // // Create component for the whole structure - // const component = await plugin.builders.structure.tryCreateComponentStatic(structure, 'polymer', { label: source.label }); - // // Define color - // const [ value ] = fromHexString(this.settingsService.settings['backbone-color']); - // // Initialize white representation - // await plugin.builders.structure.representation.addRepresentation(component!, { - // type: 'cartoon', - // color: 'uniform', - // colorParams: { value }, - // }); })())), // Get residues data out of structure tap((structure) => { From 8f9871c36af1229e3df46b19b9117914992e83b8 Mon Sep 17 00:00:00 2001 From: Damiano Clementel Date: Mon, 15 Jul 2024 12:59:00 +0200 Subject: [PATCH 2/9] Updates sequence viewer --- .../page-sequence-viewer.component.html | 18 +- .../page-sequence-viewer.component.ts | 7 +- .../ngx-sequence-viewer/src/lib/colors.ts | 33 +++ .../lib/ngx-sequence-viewer.component.html | 59 +++-- .../lib/ngx-sequence-viewer.component.scss | 130 +++++++---- .../src/lib/ngx-sequence-viewer.component.ts | 220 +++++++++++++++--- 6 files changed, 349 insertions(+), 118 deletions(-) diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html index 9b4beed..7596f91 100644 --- a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html +++ b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html @@ -1,19 +1,7 @@

Sequence viewer

-
-

Visualize structure

-
-
- In this example, the sequence underlying the PDB structure `1BRR`, chain `A` is shown. - The colouring scheme chosen is based on the structural characteristics of the amino acids. -
-
- -
{{ source | json }}
-
-
-
-
-
+ +
+
diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts index aeb4961..2310dca 100644 --- a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts +++ b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts @@ -36,10 +36,13 @@ VKD-----`; CommonModule, ], templateUrl: './page-sequence-viewer.component.html', - styleUrl: './page-sequence-viewer.component.scss' + styleUrl: './page-sequence-viewer.component.scss', + // changeDetection: ChangeDetectionStrategy.OnPush, }) export class PageSequenceViewerComponent { - readonly source = { type: 'local', data: FASTA }; + readonly fasta = FASTA; + + readonly split = 5; } diff --git a/projects/ngx-sequence-viewer/src/lib/colors.ts b/projects/ngx-sequence-viewer/src/lib/colors.ts index 57778f7..3982aff 100644 --- a/projects/ngx-sequence-viewer/src/lib/colors.ts +++ b/projects/ngx-sequence-viewer/src/lib/colors.ts @@ -67,3 +67,36 @@ export const Physical: Schema = { X: { background: '#FFA500', color: '#000000' }, '-': { background: '#FFFFFF', color: '#000000' }, }; + +// Define custom ZAPPO scheme +// Original ZAPPO scheme: +// Custom colorblind Wong palette: +export const ZAPPO: Schema = { + // Aliphatic/hydrophobic + I: { background: '#CC79A7', color: 'black' }, + L: { background: '#CC79A7', color: 'black' }, + V: { background: '#CC79A7', color: 'black' }, + A: { background: '#CC79A7', color: 'black' }, + M: { background: '#CC79A7', color: 'black' }, + // Aromatic + F: { background: '#E69F00', color: 'black' }, + W: { background: '#E69F00', color: 'black' }, + Y: { background: '#E69F00', color: 'black' }, + // Positive charge + K: { background: '#0072B2', color: 'white' }, + R: { background: '#0072B2', color: 'white' }, + H: { background: '#0072B2', color: 'white' }, + // Negative charge + D: { background: '#D55E00', color: 'black' }, + E: { background: '#D55E00', color: 'black' }, + // Hydrophilic + N: { background: '#009E73', color: 'black' }, + Q: { background: '#009E73', color: 'black' }, + S: { background: '#009E73', color: 'black' }, + T: { background: '#009E73', color: 'black' }, + // Conformationally special + P: { background: '#56B4E9', color: 'black' }, + G: { background: '#56B4E9', color: 'black' }, + // Cysteine + C: { background: '#F0E442', color: 'black' }, +} \ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html index 15bd1fe..b259a96 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html @@ -1,35 +1,30 @@ -@if(sequences$ | async; as sequences) { - - @for (chunk of chunks; track $index) { - - + +@for (chunk of chunks; track $index) { +
+ + + + + + + + + @for(aa of consensus.slice(chunk.start, chunk.end); track $index) { + + } + + + @for (sequence of sequences; track i; let i = $index) { - - - - + + + + @for(aa of sequence.slice(chunk.start, chunk.end); track j; let j = $index) { + + } - - @for (kv of sequences | keyvalue; track $index) { - - - - - - @for(i of chunk.index; track i) { - @if (kv.value[i - 1] === '-') { - - - } @else { - - - } - - } - - } -
 {{ chunk.end }}
Consensus{{ aa[0] }}
 {{ chunk.end }}{{ labels && labels[i] }} + {{ aa.toUpperCase() }} +
{{ labels && labels[$index] || kv.key }}- - {{ (kv.value[i - 1]).toUpperCase() }} -
- } + } + } \ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss index 680e8c7..c2945b1 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss @@ -1,48 +1,100 @@ -:host { - // Set cursor to default one - cursor: default; +.not-selectable { // Disable text selection user-select: none; + // Set cursor to default one + cursor: default; +} - .sequence, - .index { - display: flex; - flex-direction: row; - flex-wrap: nowrap; - justify-content: flex-start; - align-items: stretch; - } +:host { + @extend .not-selectable; + // Set font monospace + font-family: monospace, monospace; + // Set display properties + display: flex; + flex-direction: row; + flex-wrap: nowrap; + // justify-content: flex-start; + // Set gap to separate chunks + // gap: .5em; + // Set component to fit parent container + height: auto; + // width: 100%; + // Set overflow properties + overflow-y: hidden; + overflow-x: auto; - .sequence>div, - .index>div { - // Expolit flex properties - flex: 0 0 auto; - // Define properties for containing div - display: block; - height: 1rem; - width: 1rem; - // Define outer, inner size and positioning - text-align: center; - font-size: inherit; - line-height: 1rem; - } + .chunk { + + // Style labels + td:first-child { + // Align label to right + text-align: right; + // Add padding to label + padding-right: .5em; + } - .sequence>div { - text-align: center; - vertical-align: center; + // Style index + tr:first-child { + // Align text to right + text-align: right; + // Decrease font size + font-size: .75em; + } } - .index>div { - // Overwrite height property - height: auto; - // Align text to left (bottom) - text-align: left; - // Rotate text - transform: rotate(-180deg); - writing-mode: vertical-rl; - white-space: nowrap; - // Add padding - padding-bottom: .25rem; - padding-top: .25rem; + .chunk:not(:first-child) { + + // Hide first cell + td:first-child { + // Set opacity to 0 + opacity: 0; + // Unset padding + padding: 0 !important; + // Unset width + max-width: 0; + width: 0; + } } + + // .sequence, + // .index { + // display: flex; + // flex-direction: row; + // flex-wrap: nowrap; + // justify-content: flex-start; + // align-items: stretch; + // } + + // .sequence>div, + // .index>div { + // // Expolit flex properties + // flex: 0 0 auto; + // // Define properties for containing div + // display: block; + // height: 1rem; + // width: 1rem; + // // Define outer, inner size and positioning + // text-align: center; + // font-size: inherit; + // line-height: 1rem; + // } + + // .sequence>div { + // text-align: center; + // vertical-align: center; + // } + + // .index>div { + // // Overwrite height property + // height: auto; + // // Align text to left (bottom) + // text-align: left; + // // Rotate text + // transform: rotate(-180deg); + // writing-mode: vertical-rl; + // white-space: nowrap; + // // Add padding + // padding-bottom: .25rem; + // padding-top: .25rem; + // } } \ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts index 9b48050..0ae8dab 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts @@ -19,10 +19,8 @@ import { CommonModule } from '@angular/common'; // export type Loci = Locus[]; -export interface Chunk { - // This is the index shown above the chunk - index: number[]; - // These are the boundaries of the chunk +export interface Locus { + // These are the boundaries of the locus start: number; end: number; } @@ -34,14 +32,14 @@ export interface Chunk { * Each value is a dictionary, mapping key to probability. * NOTE It includes gap `-` character. Hence, the sum of all probabilities in each position is 1. */ -export type Logo = Array>; +export type Logo = { [aa: string]: number }[]; /** Define consensus of aligned sequences * * This is just the highest probability in each position of the alignment. * NOTE In this case the gap `-` character is not considered. */ -export type Consensus = Array; +export type Consensus = [string, number][]; @Component({ // eslint-disable-next-line @angular-eslint/component-selector @@ -62,9 +60,24 @@ export class NgxSequenceViewerComponent implements OnChanges { public labels?: string[]; @Input() - public sequences: string; + public fasta?: string; - public chunks!: Chunk[]; + @Input() + public sequence?: string; + + public sequences!: string[]; + + public get length(): number { + // Get first sequence + const sequence = this.sequences[0]; + // Just return length of first sequence + return sequence.length; + } + + @Input() + public colors: Record = ZAPPO; + + public chunks!: Locus[]; public logo!: Logo; @@ -73,30 +86,177 @@ export class NgxSequenceViewerComponent implements OnChanges { public ngOnChanges(changes: SimpleChanges): void { // Check for input change if (changes) { - // Initialize variables - const labels = []; - const sequences = [] as string[]; - // Initialize current key - let i = -1; - // Split text by line - const lines = this.sequences.split('\n'); - // Iterate over lines - for (const line of lines) { - // Case line starts with '>' character - if (line.startsWith('>')) { - // Set current label - labels.push(line.slice(1)); - // Initialize sequence - sequences.push(''); - // Update index - i++; - } else { - // Otherwise, add sequence to alignment (if key is defined) - sequences[i] += line; - } + // Handle input sequences + this.setSequences(); + // Cacluclate chunks + this.setChunks(); + // Calculate logo + this.setLogo(); + // Calculate consensus + this.setConsensus(); + // TODO Remove this + console.log('Updated!'); + } + } + + /** Handle input, set sequences + * + * In case `fasta` input is provided, then attempts to parse it. + * In case `sequence` input is provided, then sets it as the only sequence in sequences list. + * In both cases, input string can be in fasta format. Hence, the sequence label is extracted from it. + * However, if `labels` input is provided, then it is used as the sequence label, rather than + * extracting it from the input string. + * `labels` input is expected to be an array of strings, with the same length as `sequences`. + * Each string in `sequences` is expected to have the same length. + * If expectations are not met, then an error is thrown. + */ + public setSequences(): void { + // Case fasta file is provided + if (this.fasta) { + // Attempt to parse fasta file + const parsed = this.parseFasta(this.fasta); + // Set sequences and labels + this.sequences = parsed.map((entry) => entry.sequence); + this.labels = this.labels || parsed.map((entry) => entry.label); + } + // Case sequence is provided + else if (this.sequence) { + // Set sequence as the only sequence in sequences list + this.sequences = [this.sequence]; + } + // Otherwise, throw an error + else throw new Error('No single sequence, nor fasta were provided'); + // Check if labels are defined + if (this.labels) { + // Get number of sequences + const count = this.sequences.length; + // Get length of first sequence + const length = this.sequences[0].length; + // Check if number of sequences is greater than 0 + if (count < 1) { + // Otherwise, throw an error + throw new Error('No sequences were provided'); + } + // Check if number of labels is the same as number of sequences + if (this.labels.length !== count) { + // Otherwise, throw an error + throw new Error('Number of labels does not match number of sequences'); + } + // Check if all sequences have the same length + if (this.sequences.some((sequence) => sequence.length !== length)) { + // Otherwise, throw an error + throw new Error('All sequences must have the same length'); } - } + // Otherwise, throw an error + else throw new Error('No labels were provided'); + } + + /** Parse fasta file + * + * @param {string} text - Input text, in fasta format. + * @returns {{ sequence: string, label: string }[]} - Parsed sequences and labels. + */ + public parseFasta(text: string): { sequence: string, label: string }[] { + // Split line by newline character + const lines = text.split(/[\n\r]+/); + // Define output + const parsed: { sequence: string, label: string }[] = []; + // Define current index + let index = -1; + // Loop through each line + for (let line of lines) { + // Sanitize line + line = line.trim(); + // In case line starts with '>' character, then define new sequence entry + if (line.startsWith('>')) { + // Define new sequence entry + parsed.push({ sequence: '', label: line.slice(1) }); + // Update index + index++ + } + // In case index (0) has been defined beforehand, then current line is sequence + else if (index > -1) parsed[index].sequence += line; + // Otherwise, fine is not fasta formatted and an error is thrown + else throw new Error('Provided text is not in fasta format'); + } + // Return parsed sequences and labels + return parsed; + } + + /** Define chunks + * + * Chunks are defined as ranges of positions in the alignment. + * Each chunk is a locus, defined by its start and end position. + */ + public setChunks(): void { + // Initialize chunks + this.chunks = []; + // Get maximum chunk size, length of any (first) seqeunce + const { split, length } = this; + // Loop until sequence ends + for (let start = 0; start < length; start = start + split) { + // Define start of chunk + const end = Math.min(length, start + split); + // Return chunk + this.chunks.push({ start, end }); + } + } + + /** Compute alignment logo + * + * In a multiple sequence alignment, a logo is an association between amino acids in a position and their probability. + * Here, a logo is a map between amino acids and their probability in each position of the alignment. + * If an amino acid is not present in a position, then it is not included in the logo. + * Therefore, gaps `-` are also included in the logo. + * The sum of all probabilities in each position is 1. + */ + public setLogo(): void { + // Initialize logo + this.logo = []; + // Define number of sequences + const count = this.sequences.length; + // Loop through each position in the alignment + for (let i = 0; i < this.length; i++) { + // Define a position in the logo + let position: { [aa: string]: number } = {}; + // Loop through each sequence in the alignment + for (const sequence of this.sequences) { + // Get amino acid in current position + const aa = sequence[i]; + // Update count of amino acid in position + aa in position ? position[aa]++ : position[aa] = 1; + } + // Loop through each amino acid in the position + for (const aa in position) { + // Normalize count to probability + position[aa] /= count; + } + // Sort amino acids by probability + position = Object.fromEntries(Object.entries(position).sort((a, b) => { + return b[1] - a[1]; + })); + // Store logo of current position + this.logo.push(position); + } + } + + /** Compute alignment consensus */ + public setConsensus(): void { + // Re-initialize consensus + this.consensus = []; + // Consensus is just the highest probability in each position of the alignment + for (let i = 0; i < this.length; i++) { + // Get currrent position in the logo + const positions = Object.entries(this.logo[i]); + // Retrieve first entry (as they are already sorted by probability) + this.consensus.push(positions[0]); + } + } + + public asOpacity(opacity: number): string { + // Just return opacity string, which is CSS compatible + return `${ Math.round(opacity * 100) }%`; } } From 670fed8805a7b74c548f92038f4b1cca765b7117 Mon Sep 17 00:00:00 2001 From: Damiano Clementel Date: Wed, 17 Jul 2024 18:11:04 +0200 Subject: [PATCH 3/9] Initializes seqeunce viewer --- .../page-sequence-viewer.component.html | 2 +- .../page-sequence-viewer.component.ts | 6 + .../ngx-sequence-viewer/src/lib/colors.ts | 8 +- .../lib/ngx-sequence-viewer.component.html | 68 ++++++- .../lib/ngx-sequence-viewer.component.scss | 186 ++++++++++++++---- .../src/lib/ngx-sequence-viewer.component.ts | 77 ++++++-- .../lib/services/positions.service.spec.ts | 16 -- .../src/lib/services/positions.service.ts | 25 --- .../src/lib/services/selection.service.ts | 64 +++--- 9 files changed, 314 insertions(+), 138 deletions(-) delete mode 100644 projects/ngx-sequence-viewer/src/lib/services/positions.service.spec.ts delete mode 100644 projects/ngx-sequence-viewer/src/lib/services/positions.service.ts diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html index 7596f91..d38d61a 100644 --- a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html +++ b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html @@ -2,6 +2,6 @@

Sequence viewer

- +
diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts index 2310dca..a0c2fa6 100644 --- a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts +++ b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts @@ -45,4 +45,10 @@ export class PageSequenceViewerComponent { readonly split = 5; + readonly loci = [ + {start: 20, end: 30, background: '#648FFF' }, + {start: 40, end: 50, background: '#FE6100' }, + {start: 60, end: 70, background: '#648FFF' }, + ] + } diff --git a/projects/ngx-sequence-viewer/src/lib/colors.ts b/projects/ngx-sequence-viewer/src/lib/colors.ts index 3982aff..3f9f47e 100644 --- a/projects/ngx-sequence-viewer/src/lib/colors.ts +++ b/projects/ngx-sequence-viewer/src/lib/colors.ts @@ -1,10 +1,10 @@ -export interface Schema { +export interface ColorMap { // Define amino-acid code to color mapping [key: string]: { background: string; color: string }; } // Define ClustalX color scheme -export const ClustalX: Schema = { +export const ClustalX: ColorMap = { A: { background: '#FFBF00', color: '#000000' }, R: { background: '#FF0000', color: '#FFFFFF' }, N: { background: '#00FFFF', color: '#000000' }, @@ -32,7 +32,7 @@ export const ClustalX: Schema = { }; // Define color scheme based on physical characteristics -export const Physical: Schema = { +export const Physical: ColorMap = { // Nonpolar amino acids G: { background: '#808080', color: '#FFFFFF' }, // Glycine A: { background: '#808080', color: '#FFFFFF' }, // Alanine @@ -71,7 +71,7 @@ export const Physical: Schema = { // Define custom ZAPPO scheme // Original ZAPPO scheme: // Custom colorblind Wong palette: -export const ZAPPO: Schema = { +export const ZAPPO: ColorMap = { // Aliphatic/hydrophobic I: { background: '#CC79A7', color: 'black' }, L: { background: '#CC79A7', color: 'black' }, diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html index b259a96..963c077 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html @@ -1,17 +1,50 @@ + + + +   + Consensus + + @for (sequence of sequences; track i; let i = $index) { + + + + + } +
{{ labels && labels[i] }}
@for (chunk of chunks; track $index) { - + + @for(aa of first.slice(chunk.start, chunk.end); track j; let j = $index) { + + @if(chunk.start + j + 1; as index) { + + + } + } - @for(aa of consensus.slice(chunk.start, chunk.end); track $index) { - - } + @for(aa of consensus.slice(chunk.start, chunk.end); track j; let j = $index) { + + } @for (sequence of sequences; track i; let i = $index) { @@ -20,11 +53,30 @@ @for(aa of sequence.slice(chunk.start, chunk.end); track j; let j = $index) { - + } }
 {{ chunk.end }}
Consensus{{ aa[0] }}
{{ labels && labels[i] }} - {{ aa.toUpperCase() }} -
-} \ No newline at end of file +} + + + + + + + {{ ('' + code).toUpperCase() }} + + + \ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss index c2945b1..19347bc 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss @@ -15,7 +15,7 @@ flex-wrap: nowrap; // justify-content: flex-start; // Set gap to separate chunks - // gap: .5em; + gap: .5em; // Set component to fit parent container height: auto; // width: 100%; @@ -24,6 +24,23 @@ overflow-x: auto; .chunk { + // Collapse borders + border-collapse: collapse; + + td { + // Remove borders + padding: 0; + border: 0; + // Intercept pointer events + pointer-events: all; + + span { + // Set positioning + position: relative; + // Remove events, allows selection on td + pointer-events: none; + } + } // Style labels td:first-child { @@ -31,6 +48,8 @@ text-align: right; // Add padding to label padding-right: .5em; + // Disable pointer events + pointer-events: none; } // Style index @@ -39,7 +58,28 @@ text-align: right; // Decrease font size font-size: .75em; + + td { + // Initialize positioning for table cells + position: relative; + + // Update positioning for inner index + span { + position: absolute; + right: 0; + top: 0; + // Hide all indices by default + display: none; + } + + // Show only last index + &:last-child span { + display: block; + } + } + } + } .chunk:not(:first-child) { @@ -56,45 +96,107 @@ } } - // .sequence, - // .index { - // display: flex; - // flex-direction: row; - // flex-wrap: nowrap; - // justify-content: flex-start; - // align-items: stretch; - // } - - // .sequence>div, - // .index>div { - // // Expolit flex properties - // flex: 0 0 auto; - // // Define properties for containing div - // display: block; - // height: 1rem; - // width: 1rem; - // // Define outer, inner size and positioning - // text-align: center; - // font-size: inherit; - // line-height: 1rem; - // } - - // .sequence>div { - // text-align: center; - // vertical-align: center; - // } - - // .index>div { - // // Overwrite height property - // height: auto; - // // Align text to left (bottom) - // text-align: left; - // // Rotate text - // transform: rotate(-180deg); - // writing-mode: vertical-rl; - // white-space: nowrap; - // // Add padding - // padding-bottom: .25rem; - // padding-top: .25rem; - // } +} + +// Define selection color +$selected-color: greenyellow; +$selected-width: 0.25em; + +// Style selected cells +.selected { + // Set positioning + position: relative; + box-sizing: border-box; + // border: 2px solid greenyellow !important; + // // Initialize outline + // outline-width: 0; + // outline-style: solid; + // outline-color: $selected-color; + // // Update outline + // &.left { + // outline-width: 0 0 0 $selected-width; + // } + // &.right { + // outline-width: 0 $selected-width 0 0; + // } + // &.top { + // outline-width: $selected-width 0 0 0; + // } + // &.bottom { + // outline-width: 0 0 $selected-width 0; + // } + // &.top.left { + // outline-width: $selected-width 0 0 $selected-width; + // } + // &.top.right { + // outline-width: $selected-width $selected-width 0 0; + // } + // &.top.left.right { + // outline-width: $selected-width $selected-width 0 $selected-width; + // } + // &.bottom.left { + // outline-width: 0 0 $selected-width $selected-width; + // } + // &.bottom.right { + // outline-width: 0 $selected-width $selected-width 0; + // } + // &.bottom.left.right { + // outline-width: 0 $selected-width $selected-width $selected-width; + // } + + // &::after { + // // Set positioning + // position: absolute; + // left: 0; + // top: 0; + // // Set size + // display: block; + // height: 100%; + // width: 100%; + // // Set background color + // border-style: solid; + // border-width: 0; + // border-color: $selected-color; + // // Set empty cell + // content: ''; + // } + + // &.left::after { + // border-left-width: $selected-width; + // } + + // &.right::after { + // border-right-width: $selected-width; + // } + + // &.top::after { + // border-top-width: $selected-width; + // } + + // &.bottom::after { + // border-bottom-width: $selected-width; + // } + + // If background is transparent, then turn it to greenyellow + &::before { + // Set positioning + position: absolute; + left: 0; + top: 0; + // Set size + display: block; + height: 100%; + width: 100%; + // Set background color + background-color: $selected-color; + // background: repeating-linear-gradient( + // 45deg, + // transparent, + // transparent .25em, + // rgba(30, 255, 0, 0.3) .25em, + // rgba(30, 255, 0, 0.3) .25em calc(.25em + 1px) + // ); + // Set empty cell + content: ''; + } } \ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts index 0ae8dab..8880cf7 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts @@ -1,9 +1,11 @@ -import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core'; +import { ChangeDetectionStrategy, Component, HostListener, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; // import { combineLatestWith, map, shareReplay, startWith } from 'rxjs'; // import { SelectionService } from './services/selection.service'; // import { PositionsService } from './services/positions.service'; import { CommonModule } from '@angular/common'; -// import * as Colors from './colors'; +import { ColorMap, ZAPPO } from './colors'; +import { SelectionService } from './services/selection.service'; +import { BehaviorSubject } from 'rxjs'; // export interface Locus { // // Define start position (for both point and range loci) @@ -19,12 +21,14 @@ import { CommonModule } from '@angular/common'; // export type Loci = Locus[]; -export interface Locus { +export interface Locus { // These are the boundaries of the locus - start: number; - end: number; + start: T; + end: T; } +type ColoredLocus = Locus & Partial; + /** Defines logo of aligned sequences * * Logo stores the probability of each character in each position of the alignment. @@ -45,6 +49,7 @@ export type Consensus = [string, number][]; // eslint-disable-next-line @angular-eslint/component-selector selector: 'ngx-sequence-viewer', // providers: [PositionsService, SelectionService], + providers: [SelectionService], imports: [CommonModule], standalone: true, templateUrl: './ngx-sequence-viewer.component.html', @@ -67,15 +72,18 @@ export class NgxSequenceViewerComponent implements OnChanges { public sequences!: string[]; + public get first(): string { + // Just return first sequence + return this.sequences[0]; + } + public get length(): number { - // Get first sequence - const sequence = this.sequences[0]; // Just return length of first sequence - return sequence.length; + return this.first.length; } @Input() - public colors: Record = ZAPPO; + public colors: ColorMap = ZAPPO; public chunks!: Locus[]; @@ -83,6 +91,38 @@ export class NgxSequenceViewerComponent implements OnChanges { public consensus!: Consensus; + public loci$ = new BehaviorSubject>({}); + + @Input() + public loci: ColoredLocus[] = []; + + @Input() + public set select(locus: Locus | null) { + // Just emit locus or null + this.selectionService.select = locus; + } + + @Output() + public selected$ = this.selectionService.selected$; + + // Dependency injection + constructor( + public selectionService: SelectionService, + ) {} + + @HostListener('window:mouseup', ['$event']) + public onMouseUp(event: MouseEvent) { + this.selectionService.onMouseUp(event); + } + + public onMouseDown(event:MouseEvent, index: number) { + this.selectionService.onMouseDown(event, index); + } + + public onMouseEnter(event: MouseEvent, index: number) { + this.selectionService.onMouseEnter(event, index); + } + public ngOnChanges(changes: SimpleChanges): void { // Check for input change if (changes) { @@ -94,8 +134,8 @@ export class NgxSequenceViewerComponent implements OnChanges { this.setLogo(); // Calculate consensus this.setConsensus(); - // TODO Remove this - console.log('Updated!'); + // Update loci + this.setLoci(); } } @@ -254,6 +294,21 @@ export class NgxSequenceViewerComponent implements OnChanges { } } + public setLoci(): void { + // Define residue (index) to color map + const colors = this.loci.reduce((cmap: Record, locus: ColoredLocus) => { + // Loop through each position in locus + for (let i = locus.start; i <= locus.end; i++) { + // Update color map + cmap[i] = locus; + } + // Return updated color map + return cmap; + }, {}); + // Just emit loci + this.loci$.next(colors); + } + public asOpacity(opacity: number): string { // Just return opacity string, which is CSS compatible return `${ Math.round(opacity * 100) }%`; diff --git a/projects/ngx-sequence-viewer/src/lib/services/positions.service.spec.ts b/projects/ngx-sequence-viewer/src/lib/services/positions.service.spec.ts deleted file mode 100644 index ff5a25a..0000000 --- a/projects/ngx-sequence-viewer/src/lib/services/positions.service.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { PositionsService } from './positions.service'; - -describe('PositionsService', () => { - let service: PositionsService; - - beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(PositionsService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); -}); diff --git a/projects/ngx-sequence-viewer/src/lib/services/positions.service.ts b/projects/ngx-sequence-viewer/src/lib/services/positions.service.ts deleted file mode 100644 index 4da3c47..0000000 --- a/projects/ngx-sequence-viewer/src/lib/services/positions.service.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Locus } from '../ngx-sequence-viewer.component'; -import { SelectionService } from './selection.service'; -import { BehaviorSubject, Observable } from 'rxjs'; -import { Injectable } from '@angular/core'; - - -@Injectable({ providedIn: 'platform' }) -export class PositionsService { - - public set positions(positions: Array | undefined>) { - this.input$.next(positions); - } - - public get positions(): Array | undefined> { - return this.input$.value; - } - - readonly input$ = new BehaviorSubject | undefined>>([]); - - // TODO - readonly output$!: Observable | undefined>>; - - constructor(public selectionService: SelectionService) { - } -} diff --git a/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts b/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts index 4f16f65..a2b03a0 100644 --- a/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts +++ b/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts @@ -1,6 +1,6 @@ import { Locus } from '../ngx-sequence-viewer.component'; +import { BehaviorSubject, Observable } from 'rxjs'; import { Injectable } from '@angular/core'; -import { BehaviorSubject } from 'rxjs'; @Injectable({ providedIn: 'platform' }) export class SelectionService { @@ -8,34 +8,23 @@ export class SelectionService { // Define currently selected locus // It might be undefined if selection has not yet been initialized // It might not have end position if selection is ongoing - readonly selected$ = new BehaviorSubject | undefined>(undefined); + readonly select$ = new BehaviorSubject(null); - public set selected(value: Locus | undefined) { - this.selected$.next(value); + public set select(locus: Locus | null) { + // Just emit locus or null + this.select$.next(locus); } - public get selected(): Locus | undefined { - return this.selected$.value; + public get select(): Locus | null { + // Just get previously emitted locus + return this.select$.value; } - // constructor() { - // // this.selected$ = this.select$.pipe( - // // // Handle position emission - // // map((position) => { - // // // When position is emitted, fit into existing locus object or create a new one - // // if (this.selected) { - // // // Update end position in previous locus object - // // return this.selected = { ...this.selected, end: position, type: 'range' }; - // // } - // // // Generate new locus object with start position - // // return this.selected = { start: position, end: undefined, type: 'range' }; - // // }), - // // // If locus has both start and end positions, then unset it - // // tap(() => this.selected = (this.selected && this.selected.end !== undefined) ? undefined : this.selected), - // // // Cache result - // // shareReplay(1), - // // ); - // } + // TODO + readonly selected$: Observable = this.select$; + + // Define flag to state where selection is ongoing + protected selecting = false; /** Handle mouse down event * @@ -45,9 +34,11 @@ export class SelectionService { * @param event Mouse event * @param position Position of mouse event */ - public onMouseDown(event: MouseEvent, position: string | number): void { - // Case selection is already defined - this.selected = this.selected ? undefined : { start: position, end: position, type: 'range' }; + public onMouseDown(event: MouseEvent, position: number): void { + // Set selection flag + this.selecting = true; + // Update selection with current residue (column) only + this.select = { start: position, end: position }; } /** Handle mouse enter event @@ -58,11 +49,22 @@ export class SelectionService { * @param event Mouse event * @param position Position of mouse event */ - public onMouseEnter(event: MouseEvent, position: string | number): void { - // Case selection is defined - if (event.buttons === 1 && this.selected) { - this.selected = { ...this.selected, end: position }; + public onMouseEnter(event: MouseEvent, position: number): void { + // In case selection is ongoing + if (this.selecting) { + // Get start position + const start = Math.min(this.select?.start || position, position); + // Get end position + const end = Math.max(this.select?.end || position, position, start); + // Emit new selection + this.select = { start, end }; } } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public onMouseUp(event: MouseEvent): void { + // Just unset selection flag + this.selecting = false; + } + } From 49abb91ed1009aeb776b0aeb48424ee6d802b446 Mon Sep 17 00:00:00 2001 From: Damiano Clementel Date: Fri, 19 Jul 2024 16:09:58 +0200 Subject: [PATCH 4/9] Changes table to flex. This allows for rotated indices. --- .../page-sequence-viewer.component.ts | 2 +- .../lib/ngx-sequence-viewer.component.html | 129 ++--- .../lib/ngx-sequence-viewer.component.scss | 498 +++++++++++------- .../src/lib/ngx-sequence-viewer.component.ts | 70 ++- .../src/lib/services/selection.service.ts | 9 +- 5 files changed, 442 insertions(+), 266 deletions(-) diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts index a0c2fa6..17f87c0 100644 --- a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts +++ b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts @@ -43,7 +43,7 @@ export class PageSequenceViewerComponent { readonly fasta = FASTA; - readonly split = 5; + readonly split = -1; // 5; readonly loci = [ {start: 20, end: 30, background: '#648FFF' }, diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html index 963c077..380c76d 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html @@ -1,82 +1,57 @@ - - - -   - Consensus - - @for (sequence of sequences; track i; let i = $index) { - - - - - } -
{{ labels && labels[i] }}
- -@for (chunk of chunks; track $index) { - - - - - - @for(aa of first.slice(chunk.start, chunk.end); track j; let j = $index) { - - @if(chunk.start + j + 1; as index) { - - + +
+ +
+ +
Index
+ +
Consensus
+ + @for (label of labels; track $index) { +
{{ label }}
+ } +
+ +
+ + @for (position of first; track j; let j = $index) { + +
+ + + + + + @for(sequence of sequences; track i; let i = $index) { + + @if(sequence[j]; as aa) { + + } } -
- - - - @for(aa of consensus.slice(chunk.start, chunk.end); track j; let j = $index) { - - } - - - @for (sequence of sequences; track i; let i = $index) { - - - - - @for(aa of sequence.slice(chunk.start, chunk.end); track j; let j = $index) { - - } - + } -
 
Consensus
{{ labels && labels[i] }}
-} +
+
- - - - - - {{ ('' + code).toUpperCase() }} - - + + +
{{ j * 10 + 1 }}
+
+ + + + + @if(styles$ | async; as styles) { + + @if(styles[i][j]; as style) { + +
+ {{ sequences[i][j] }} +
+ } + }
\ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss index 19347bc..a4b8280 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss @@ -1,202 +1,332 @@ -.not-selectable { - // Disable text selection - user-select: none; - // Set cursor to default one - cursor: default; -} +// .not-selectable { +// // Disable text selection +// user-select: none; +// // Set cursor to default one +// cursor: default; +// } + +// .no-split { +// gap: 0; +// } + +// :host { +// @extend .not-selectable; +// // Set font monospace +// font-family: monospace, monospace; +// // Set display properties +// display: flex; +// flex-direction: row; +// flex-wrap: nowrap; +// // justify-content: flex-start; +// // Set gap to separate chunks +// gap: .5em; +// // Set component to fit parent container +// height: auto; +// // width: 100%; +// // Set overflow properties +// overflow-y: hidden; +// overflow-x: auto; + +// .chunk { +// // Collapse borders +// border-collapse: collapse; + +// td { +// // Remove borders +// padding: 0; +// border: 0; +// // Intercept pointer events +// pointer-events: all; + +// span { +// // Set positioning +// position: relative; +// // Remove events, allows selection on td +// pointer-events: none; +// // Alignn text to center +// text-align: center; +// // Stretch to the whole cell +// width: 100%; +// } +// } + +// // Style labels +// td:first-child { +// // Align label to right +// text-align: right; +// // Add padding to label +// padding-right: .5em; +// // Disable pointer events +// pointer-events: none; +// } + +// // Style index +// tr:first-child { +// // Align text to right +// text-align: right; +// // Decrease font size +// font-size: .75em; + +// td { +// // Initialize positioning for table cells +// position: relative; + +// // Update positioning for inner index +// span { +// position: absolute; +// right: 0; +// top: 0; +// // Hide all indices by default +// display: none; +// } + +// // Show only last index +// &:last-child span { +// display: block; +// } +// } + +// } + +// } + +// .chunk:not(:first-child) { + +// // Hide first cell +// td:first-child { +// // Set opacity to 0 +// opacity: 0; +// // Unset padding +// padding: 0 !important; +// // Unset width +// max-width: 0; +// width: 0; +// } +// } + +// } + +// // Define selection color +// $selected-color: greenyellow; +// $selected-width: 0.25em; + +// // Style selected cells +// td.selected { +// // Set positioning +// position: relative; +// box-sizing: border-box; +// // border: 2px solid greenyellow !important; +// // // Initialize outline +// // outline-width: 0; +// // outline-style: solid; +// // outline-color: $selected-color; +// // // Update outline +// // &.left { +// // outline-width: 0 0 0 $selected-width; +// // } +// // &.right { +// // outline-width: 0 $selected-width 0 0; +// // } +// // &.top { +// // outline-width: $selected-width 0 0 0; +// // } +// // &.bottom { +// // outline-width: 0 0 $selected-width 0; +// // } +// // &.top.left { +// // outline-width: $selected-width 0 0 $selected-width; +// // } +// // &.top.right { +// // outline-width: $selected-width $selected-width 0 0; +// // } +// // &.top.left.right { +// // outline-width: $selected-width $selected-width 0 $selected-width; +// // } +// // &.bottom.left { +// // outline-width: 0 0 $selected-width $selected-width; +// // } +// // &.bottom.right { +// // outline-width: 0 $selected-width $selected-width 0; +// // } +// // &.bottom.left.right { +// // outline-width: 0 $selected-width $selected-width $selected-width; +// // } + +// // &::after { +// // // Set positioning +// // position: absolute; +// // left: 0; +// // top: 0; +// // // Set size +// // display: block; +// // height: 100%; +// // width: 100%; +// // // Set background color +// // border-style: solid; +// // border-width: 0; +// // border-color: $selected-color; +// // // Set empty cell +// // content: ''; +// // } + +// // &.left::after { +// // border-left-width: $selected-width; +// // } + +// // &.right::after { +// // border-right-width: $selected-width; +// // } + +// // &.top::after { +// // border-top-width: $selected-width; +// // } + +// // &.bottom::after { +// // border-bottom-width: $selected-width; +// // } + +// // If background is transparent, then turn it to greenyellow +// &::before { +// // Set positioning +// position: absolute; +// left: 0; +// top: 0; +// // Set size +// display: block; +// height: 100%; +// width: 100%; +// // Set background color +// background-color: $selected-color; +// // background: repeating-linear-gradient( +// // 45deg, +// // transparent, +// // transparent .25em, +// // rgba(30, 255, 0, 0.3) .25em, +// // rgba(30, 255, 0, 0.3) .25em calc(.25em + 1px) +// // ); +// // Set empty cell +// content: ''; +// } +// } + +// td.rotated { + +// span { +// // Change display +// display: block; +// // Change positioning +// position: relative !important; +// // Overwrite height property +// height: auto; +// // Align text to left (bottom) +// text-align: left; +// // Rotate text +// transform: rotate(-180deg); +// writing-mode: vertical-rl; +// white-space: nowrap; +// // Add padding +// padding-bottom: .25rem; +// padding-top: .25rem; +// } + +// } + :host { - @extend .not-selectable; // Set font monospace font-family: monospace, monospace; + // Disable text selection + user-select: none; + // Set cursor to default one + cursor: default; // Set display properties - display: flex; - flex-direction: row; - flex-wrap: nowrap; - // justify-content: flex-start; - // Set gap to separate chunks - gap: .5em; - // Set component to fit parent container + overflow: auto; + position: relative; + display: block; height: auto; - // width: 100%; - // Set overflow properties - overflow-y: hidden; - overflow-x: auto; - - .chunk { - // Collapse borders - border-collapse: collapse; - - td { - // Remove borders - padding: 0; - border: 0; - // Intercept pointer events - pointer-events: all; - - span { - // Set positioning - position: relative; - // Remove events, allows selection on td - pointer-events: none; - } - } + width: 100%; + - // Style labels - td:first-child { - // Align label to right - text-align: right; - // Add padding to label - padding-right: .5em; - // Disable pointer events - pointer-events: none; + .scaffold { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: start; + align-items: stretch; + // Add gap between labels and positions + gap: .25rem; + + .labels { + // Set representation + display: flex; + flex-direction: column; + justify-content: end; + align-items: end; + // // Set positioning + // position: sticky; + // bottom: 0; + // left: 0; + // Bring forward + z-index: 999; + // Set background not transparent + // backdrop-filter: blur(99px); + // Set right shadow + // box-shadow: 0 0 .25em 0 rgba(0, 0, 0, .75); } - // Style index - tr:first-child { - // Align text to right - text-align: right; - // Decrease font size - font-size: .75em; - - td { - // Initialize positioning for table cells - position: relative; - - // Update positioning for inner index - span { - position: absolute; - right: 0; - top: 0; - // Hide all indices by default - display: none; - } + .positions { + display: flex; + flex-shrink: 0; + flex-grow: 1; + flex-direction: row; - // Show only last index - &:last-child span { + .position { + display: flex; + flex-direction: column; + justify-content: end; + align-items: center; + // border: 1px solid blueviolet; + + .index { + // Change display display: block; + // Stretch to the whole cell + flex-grow: 1; + // Set font size + font-size: .75em; + // Change positioning + position: relative !important; + // Overwrite height property + height: auto; + // Align text to left (bottom) + text-align: left; + // Rotate text + transform: rotate(-180deg); + writing-mode: vertical-rl; + white-space: nowrap; + // Add padding + padding-bottom: .25rem; + padding-top: .25rem; } - } + .residue, + .consensus { + // Set residue to stretch the whole cell + width: 100%; + // Show text in the middle of the cell + text-align: center; + } + } } - } - - .chunk:not(:first-child) { - - // Hide first cell - td:first-child { - // Set opacity to 0 - opacity: 0; - // Unset padding - padding: 0 !important; - // Unset width - max-width: 0; - width: 0; + // TODO Remove this + .labels .label, + .positions .index, + .positions .residue, + .positions .consensus { + border-color: transparent; + border-width: 1px; + border-style: solid; } } - -} - -// Define selection color -$selected-color: greenyellow; -$selected-width: 0.25em; - -// Style selected cells -.selected { - // Set positioning - position: relative; - box-sizing: border-box; - // border: 2px solid greenyellow !important; - // // Initialize outline - // outline-width: 0; - // outline-style: solid; - // outline-color: $selected-color; - // // Update outline - // &.left { - // outline-width: 0 0 0 $selected-width; - // } - // &.right { - // outline-width: 0 $selected-width 0 0; - // } - // &.top { - // outline-width: $selected-width 0 0 0; - // } - // &.bottom { - // outline-width: 0 0 $selected-width 0; - // } - // &.top.left { - // outline-width: $selected-width 0 0 $selected-width; - // } - // &.top.right { - // outline-width: $selected-width $selected-width 0 0; - // } - // &.top.left.right { - // outline-width: $selected-width $selected-width 0 $selected-width; - // } - // &.bottom.left { - // outline-width: 0 0 $selected-width $selected-width; - // } - // &.bottom.right { - // outline-width: 0 $selected-width $selected-width 0; - // } - // &.bottom.left.right { - // outline-width: 0 $selected-width $selected-width $selected-width; - // } - - // &::after { - // // Set positioning - // position: absolute; - // left: 0; - // top: 0; - // // Set size - // display: block; - // height: 100%; - // width: 100%; - // // Set background color - // border-style: solid; - // border-width: 0; - // border-color: $selected-color; - // // Set empty cell - // content: ''; - // } - - // &.left::after { - // border-left-width: $selected-width; - // } - - // &.right::after { - // border-right-width: $selected-width; - // } - - // &.top::after { - // border-top-width: $selected-width; - // } - - // &.bottom::after { - // border-bottom-width: $selected-width; - // } - - // If background is transparent, then turn it to greenyellow - &::before { - // Set positioning - position: absolute; - left: 0; - top: 0; - // Set size - display: block; - height: 100%; - width: 100%; - // Set background color - background-color: $selected-color; - // background: repeating-linear-gradient( - // 45deg, - // transparent, - // transparent .25em, - // rgba(30, 255, 0, 0.3) .25em, - // rgba(30, 255, 0, 0.3) .25em calc(.25em + 1px) - // ); - // Set empty cell - content: ''; - } } \ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts index 8880cf7..ddb2583 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts @@ -2,10 +2,10 @@ import { ChangeDetectionStrategy, Component, HostListener, Input, OnChanges, Out // import { combineLatestWith, map, shareReplay, startWith } from 'rxjs'; // import { SelectionService } from './services/selection.service'; // import { PositionsService } from './services/positions.service'; +import { BehaviorSubject, combineLatestWith, map, shareReplay } from 'rxjs'; import { CommonModule } from '@angular/common'; import { ColorMap, ZAPPO } from './colors'; import { SelectionService } from './services/selection.service'; -import { BehaviorSubject } from 'rxjs'; // export interface Locus { // // Define start position (for both point and range loci) @@ -58,6 +58,14 @@ export type Consensus = [string, number][]; }) export class NgxSequenceViewerComponent implements OnChanges { + /** Define split of alignment + * + * For values from 0 and greater, the index above is positioned horizontally and + * gap is set between each chunk. + * For values less than 0 (tipically -1), the index above is positioned vertically + * (rotated 90 degrees), no gap is set between each chunk. Each chunk will contain + * exactly one position, hence an index is defined for each residue. + */ @Input() public split = 5; @@ -105,6 +113,63 @@ export class NgxSequenceViewerComponent implements OnChanges { @Output() public selected$ = this.selectionService.selected$; + // Merge loci with selection in a single styles emitter + readonly styles$ = this.loci$.pipe( + // Combine with latest loci emission + combineLatestWith(this.selected$), + // Define a matrix for styles, according to row and column + map(([loci, selection]) => { + // Initialize styles matrix + const styles: Record> = {}; + // Define sequences: index, consensus, input sequences + const consensus = this.consensus.map(([aa]) => aa).join(''); + const sequences = [consensus, ...this.sequences]; + // Loop through each row (sequence) + for (let i = 0; i < sequences.length; i++) { + // Update index + const k = i < 1 ? 'consensus' : i; + // Initialize row + styles[k] = []; + // Loop through each column (position) + for (let j = 0; j < this.length; j++) { + // Get loci at current position + const locus = loci[j]; + // Define whether current position is selected or not + const selected = selection?.start <= j && j <= selection?.end; + // Define residue name + const residue = sequences[i][j]; + // Define color for current position + const color = this.colors[residue]; + // Define style for current position + const style = { + 'background-color': color ? color['background'] : locus ? locus['background'] : selected ? 'greenyellow' : 'transparent', + 'border-color': selected ? 'grenyellow' : locus ? locus['background'] : undefined, + 'color': color ? color['color'] : selected ? 'black' : undefined, + }; + // Store style for current position + styles[k][j] = style; + } + } + // Add style for index + styles['index'] = []; + // Loop through each position + for (let j = 0; j < this.length; j++) { + // Check whether current position is selected + const selected = selection?.start <= j && j <= selection?.end; + // Initialize style for current position + styles['index'][j] = { + 'background-color': selected ? 'greenyellow' : undefined, + 'border-color': selected ? 'greenyellow' : undefined, + 'color': selected ? 'black' : undefined, + }; + } + // Return styles matrix + return styles; + }), + // Cache results + shareReplay(1), + ); + // Dependency injection constructor( public selectionService: SelectionService, @@ -233,7 +298,8 @@ export class NgxSequenceViewerComponent implements OnChanges { // Initialize chunks this.chunks = []; // Get maximum chunk size, length of any (first) seqeunce - const { split, length } = this; + const length = this.length; + const split = this.split >= 0 ? this.split : 1; // Loop until sequence ends for (let start = 0; start < length; start = start + split) { // Define start of chunk diff --git a/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts b/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts index a2b03a0..5f08b6b 100644 --- a/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts +++ b/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts @@ -1,5 +1,5 @@ import { Locus } from '../ngx-sequence-viewer.component'; -import { BehaviorSubject, Observable } from 'rxjs'; +import { BehaviorSubject, map, Observable, shareReplay } from 'rxjs'; import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'platform' }) @@ -21,7 +21,12 @@ export class SelectionService { } // TODO - readonly selected$: Observable = this.select$; + readonly selected$: Observable = this.select$.pipe( + // Case selected locus is null + map((locus) => locus ? locus : { start: -1, end: -1 }), + // Cache result + shareReplay(1), + ); // Define flag to state where selection is ongoing protected selecting = false; From ad28e055f4f8287490cceea1115ec5133d6ebce1 Mon Sep 17 00:00:00 2001 From: Damiano Clementel Date: Tue, 23 Jul 2024 17:18:16 +0200 Subject: [PATCH 5/9] Introduces custom index; Must fix selection and loci. --- .../demo-showcase/src/app/app.component.ts | 3 + ...multiple-sequence-alignment.component.html | 64 ++++ ...multiple-sequence-alignment.component.scss | 0 ...tiple-sequence-alignment.component.spec.ts | 23 ++ .../multiple-sequence-alignment.component.ts | 90 +++++ .../page-sequence-viewer.component.html | 11 +- .../page-sequence-viewer.component.ts | 44 --- .../page-sequence-viewer.module.ts | 19 ++ .../single-sequence-viewer.component.html | 9 + .../single-sequence-viewer.component.scss | 0 .../single-sequence-viewer.component.spec.ts | 23 ++ .../single-sequence-viewer.component.ts | 69 ++++ .../ngx-sequence-viewer/src/lib/colors.ts | 138 ++++---- .../lib/ngx-sequence-viewer.component.html | 70 ++-- .../lib/ngx-sequence-viewer.component.scss | 310 +++--------------- .../src/lib/ngx-sequence-viewer.component.ts | 195 +++++++++-- .../src/lib/services/index.service.spec.ts | 16 + .../src/lib/services/index.service.ts | 39 +++ .../src/lib/services/selection.service.ts | 35 +- .../ngx-sequence-viewer/src/public-api.ts | 2 +- 20 files changed, 699 insertions(+), 461 deletions(-) create mode 100644 projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.html create mode 100644 projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.scss create mode 100644 projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.spec.ts create mode 100644 projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.ts create mode 100644 projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.module.ts create mode 100644 projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.html create mode 100644 projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.scss create mode 100644 projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.spec.ts create mode 100644 projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.ts create mode 100644 projects/ngx-sequence-viewer/src/lib/services/index.service.spec.ts create mode 100644 projects/ngx-sequence-viewer/src/lib/services/index.service.ts diff --git a/projects/demo-showcase/src/app/app.component.ts b/projects/demo-showcase/src/app/app.component.ts index da366b7..e9f9b2e 100644 --- a/projects/demo-showcase/src/app/app.component.ts +++ b/projects/demo-showcase/src/app/app.component.ts @@ -5,6 +5,7 @@ import { Component } from '@angular/core'; // Custom dependencies import { ThemeSelectorComponent } from './theme-selector/theme-selector.component'; import { ThemeSelectorService } from './theme-selector/theme-selector.service'; +import { PageSequenceViewerModule } from './page-sequence-viewer/page-sequence-viewer.module'; @Component({ @@ -13,6 +14,8 @@ import { ThemeSelectorService } from './theme-selector/theme-selector.service'; imports: [ // Custom components ThemeSelectorComponent, + // TODO Import pages + PageSequenceViewerModule, // Core modules CommonModule, RouterModule, diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.html b/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.html new file mode 100644 index 0000000..28bc5ca --- /dev/null +++ b/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.html @@ -0,0 +1,64 @@ + +
+ +

Mutliple sequence alignment

+ +
+

+ This sequence viewer allows to visualize a multiple sequence alignment (MSA). Index can be shown for each + position in the alignment. Otherwise, positions can be grouped in chunks. Hence, + onlythe index of the last position in each chunk is shown.
+

+

+ For each position in the alignment, logo is computed.
The logo is the relative frequency of a each + amino-acid within a specific + position. Consensus is shown in the first row: the most frequent amino-acid in each specific position. +

+

+ Custom color map can be defined for each residue. However, by default we offer a color map based on the + broadly adopted ZAPPO scheme. + Such scheme has been implemented using the Wong et al. palette for color blindness. +

+
+ +
+ +
+ +
+

+ The tool allows to highlight one or more loci. A locus is defined as one or more contiguous + positions. It is + identified by its start and end positions. +

+

+ Each locus allows to define a custom background-color property which is then applied to the border + of + cells within locus' boundaries, as well as the background for those cells for which the selected color map does + not + have an associated color (e.g. gaps) and index. +

+

+ Currently highlighted loci are: + [
+     {{ loci[0] | json }}
+     {{ loci[1] | json }}
+     {{ loci[2] | json }}
+ ] +
+

+
+ +
+

+ Selection functionality is provided by the component. An event is emitted when a locus is selected. + Selected locus applies `selection-color`, defined in settings, to the border of cells within selected + locus boundaries, to the background of those cells for which the selected color map does not + have an associated color (e.g. gaps) and index. This overrides the style applied by other loci beforehand. +

+

+ Currently selected locus is: {{ selected$ | async | json }} +

+
+
\ No newline at end of file diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.scss b/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.spec.ts b/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.spec.ts new file mode 100644 index 0000000..42c2822 --- /dev/null +++ b/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MultipleSequenceAlignmentComponent } from './multiple-sequence-alignment.component'; + +describe('MultipleSequenceAlignmentComponent', () => { + let component: MultipleSequenceAlignmentComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MultipleSequenceAlignmentComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MultipleSequenceAlignmentComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.ts b/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.ts new file mode 100644 index 0000000..67a246e --- /dev/null +++ b/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.ts @@ -0,0 +1,90 @@ +import { ThemeSelectorService } from '../theme-selector/theme-selector.service'; +import { Locus, Settings } from '@ngx-sequence-viewer'; +import { Component, EventEmitter } from '@angular/core'; +import { map, Observable, shareReplay } from 'rxjs'; + + +// Define FASTA file content +const FASTA = `>unit.1.fasta +RFSIAYWHTFTADGTDQFGKATMQRPWNHYTDPMDIA---KARVEAAFEFFDKIN----- +-------- +>unit.7.fasta +----GV------LGSIDANTGDMLLGWDTDQFPTDIRMT----TLAMYEVIKMGG----- +-------- +>unit.2.fasta +---APY-FCFH-DRDIAPEGDTLRET------------------------NKNLDTIVAM +IKDYLKTS +>unit.3.fasta +-KTKVLWGTAN-----LFSNPRFVHGAS-TSCNADVFAYSAAQVKKALEITKELG----- +-------- +>unit.6.fasta +-DKY------------FKVNIEANH----ATLAFHDF------QH-ELRYARIN------ +-------- +>unit.5.fasta +----------F-EGQFLIE-PKPKEP---TK---HQY---DFDVANVLAFLRKYDL---- +-------- +>unit.4.fasta +GENYVFWGGREGYETLLNTDMEFE------LDNFARF------LHMAVDYAKEIG----- +-------- +>unit.8.fasta +---------FD-KGGLNFD-AKVRRA---SFEPEDLF---LGHIAGMDAFAKGFKVAYKL +VKD-----`; + +@Component({ + selector: 'app-multiple-sequence-alignment', + templateUrl: './multiple-sequence-alignment.component.html', + styleUrl: './multiple-sequence-alignment.component.scss' +}) +export class MultipleSequenceAlignmentComponent { + + readonly fasta = FASTA; + + readonly loci = [ + { start: 20, end: 30, 'background-color': '#648FFF' }, + { start: 40, end: 50, 'background-color': '#FE6100' }, + { start: 60, end: 70, 'background-color': '#648FFF' }, + ]; + + // Define the sequence viewer configuration + public settings$: Observable>; + + // Define emitter for selected locus + public selected$ = new EventEmitter(); + + // Dependency injection + constructor(public themeSelectorService: ThemeSelectorService) { + // Define theme retrieval pipeline + const theme$ = this.themeSelectorService.theme$; + // Define the settings observable + this.settings$ = theme$.pipe( + // Get theme from document + map(() => document.documentElement.getAttribute('data-bs-theme') as 'dark' | 'light'), + // Map theme to settings + map((theme) => { + // Case theme is dark + if (theme === 'dark') { + // Then return dark parameters + return { + 'background-color': '#212529', + 'text-color': 'white', + 'chunk-size': -1, + }; + } + // Otherwise, return light parameters + return { + 'background-color': '#FFFFFF', + 'text-color': 'black', + 'chunk-size': -1, + } + }), + // Cache results + shareReplay(1), + ); + } + + public onSelected(locus: Locus) { + // Just emit selected value + this.selected$.emit(locus); + } + +} diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html index d38d61a..ccd155d 100644 --- a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html +++ b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html @@ -1,7 +1,6 @@
-

Sequence viewer

- -
- -
-
+ + + + +
\ No newline at end of file diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts index 17f87c0..a422156 100644 --- a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts +++ b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts @@ -1,54 +1,10 @@ -import { NgxSequenceViewerComponent } from '@ngx-sequence-viewer'; -import { CommonModule } from '@angular/common'; import { Component } from '@angular/core'; -// Define FASTA file content -const FASTA = `>unit.1.fasta -RFSIAYWHTFTADGTDQFGKATMQRPWNHYTDPMDIA---KARVEAAFEFFDKIN----- --------- ->unit.7.fasta -----GV------LGSIDANTGDMLLGWDTDQFPTDIRMT----TLAMYEVIKMGG----- --------- ->unit.2.fasta ----APY-FCFH-DRDIAPEGDTLRET------------------------NKNLDTIVAM -IKDYLKTS ->unit.3.fasta --KTKVLWGTAN-----LFSNPRFVHGAS-TSCNADVFAYSAAQVKKALEITKELG----- --------- ->unit.6.fasta --DKY------------FKVNIEANH----ATLAFHDF------QH-ELRYARIN------ --------- ->unit.5.fasta -----------F-EGQFLIE-PKPKEP---TK---HQY---DFDVANVLAFLRKYDL---- --------- ->unit.4.fasta -GENYVFWGGREGYETLLNTDMEFE------LDNFARF------LHMAVDYAKEIG----- --------- ->unit.8.fasta ----------FD-KGGLNFD-AKVRRA---SFEPEDLF---LGHIAGMDAFAKGFKVAYKL -VKD-----`; - @Component({ selector: 'app-page-sequence-viewer', - standalone: true, - imports: [ - NgxSequenceViewerComponent, - CommonModule, - ], templateUrl: './page-sequence-viewer.component.html', styleUrl: './page-sequence-viewer.component.scss', - // changeDetection: ChangeDetectionStrategy.OnPush, }) export class PageSequenceViewerComponent { - readonly fasta = FASTA; - - readonly split = -1; // 5; - - readonly loci = [ - {start: 20, end: 30, background: '#648FFF' }, - {start: 40, end: 50, background: '#FE6100' }, - {start: 60, end: 70, background: '#648FFF' }, - ] - } diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.module.ts b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.module.ts new file mode 100644 index 0000000..7a0236d --- /dev/null +++ b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.module.ts @@ -0,0 +1,19 @@ +import { MultipleSequenceAlignmentComponent } from './multiple-sequence-alignment.component'; +import { SingleSequenceViewerComponent } from './single-sequence-viewer.component'; +import { PageSequenceViewerComponent } from './page-sequence-viewer.component'; +import { NgxSequenceViewerComponent } from '@ngx-sequence-viewer'; +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; + +@NgModule({ + declarations: [ + MultipleSequenceAlignmentComponent, + SingleSequenceViewerComponent, + PageSequenceViewerComponent, + ], + imports: [ + NgxSequenceViewerComponent, + CommonModule + ] +}) +export class PageSequenceViewerModule { } diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.html b/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.html new file mode 100644 index 0000000..e9e3e39 --- /dev/null +++ b/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.html @@ -0,0 +1,9 @@ + +
+ +

Single sequence viewer

+ +
+ +
+
\ No newline at end of file diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.scss b/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.spec.ts b/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.spec.ts new file mode 100644 index 0000000..bfeff5c --- /dev/null +++ b/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SingleSequenceViewerComponent } from './single-sequence-viewer.component'; + +describe('SingleSequenceViewerComponent', () => { + let component: SingleSequenceViewerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [SingleSequenceViewerComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(SingleSequenceViewerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.ts b/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.ts new file mode 100644 index 0000000..95de54a --- /dev/null +++ b/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.ts @@ -0,0 +1,69 @@ +import { ThemeSelectorService } from '../theme-selector/theme-selector.service'; +import { map, Observable, shareReplay } from 'rxjs'; +import { Settings } from '@ngx-sequence-viewer'; +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-single-sequence-viewer', + templateUrl: './single-sequence-viewer.component.html', + styleUrl: './single-sequence-viewer.component.scss' +}) +export class SingleSequenceViewerComponent { + + // Define initial settings + readonly settings: Partial = { + // Set background, text color + 'background-color': '#FFFFFF', + 'text-color': 'black', + // Rotate index + 'rotate-index': true, + // Disable splitting into chunks + 'chunk-size': -1, + }; + + // Define test sequence + readonly sequence = 'MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG'; + + // Define custom index + readonly index = this.sequence.split('').map((v, i) => { + // Initialize index to be returned + let index = '' + i; + // If value is a vowel, then add it to the index + if (['A', 'E', 'I', 'O', 'U'].includes(v)) { + index = index + v; + } + // If index is even, then return negative index + if (i % 2 === 0) { + index = '-' + index; + } + // Return changed index + return index; + }); + + // Define the sequence viewer configuration + public settings$: Observable>; + + // Dependency injection + constructor(public themeSelectorService: ThemeSelectorService) { + // Define theme retrieval pipeline + const theme$ = this.themeSelectorService.theme$; + // Define the settings observable + this.settings$ = theme$.pipe( + // Get theme from document + map(() => document.documentElement.getAttribute('data-bs-theme') as 'dark' | 'light'), + // Map theme to settings + map((theme) => { + // Case theme is dark + if (theme === 'dark') { + // Then return dark parameters + return { ...this.settings, 'background-color': '#212529', 'text-color': 'white' }; + } + // Otherwise, return light parameters + return this.settings; + }), + // Cache results + shareReplay(1), + ); + } + +} diff --git a/projects/ngx-sequence-viewer/src/lib/colors.ts b/projects/ngx-sequence-viewer/src/lib/colors.ts index 3f9f47e..996dc19 100644 --- a/projects/ngx-sequence-viewer/src/lib/colors.ts +++ b/projects/ngx-sequence-viewer/src/lib/colors.ts @@ -1,71 +1,71 @@ export interface ColorMap { // Define amino-acid code to color mapping - [key: string]: { background: string; color: string }; + [key: string]: { 'background-color': string; 'text-color': string }; } // Define ClustalX color scheme export const ClustalX: ColorMap = { - A: { background: '#FFBF00', color: '#000000' }, - R: { background: '#FF0000', color: '#FFFFFF' }, - N: { background: '#00FFFF', color: '#000000' }, - D: { background: '#0000FF', color: '#FFFFFF' }, - C: { background: '#FFFF00', color: '#000000' }, - Q: { background: '#00FF00', color: '#000000' }, - E: { background: '#FF00FF', color: '#FFFFFF' }, - G: { background: '#808080', color: '#FFFFFF' }, - H: { background: '#008000', color: '#FFFFFF' }, - I: { background: '#FFA500', color: '#000000' }, - L: { background: '#FFA500', color: '#000000' }, - K: { background: '#FF0000', color: '#FFFFFF' }, - M: { background: '#FFA500', color: '#000000' }, - F: { background: '#FFA500', color: '#000000' }, - P: { background: '#800080', color: '#FFFFFF' }, - S: { background: '#00FF00', color: '#000000' }, - T: { background: '#00FF00', color: '#000000' }, - W: { background: '#FFA500', color: '#000000' }, - Y: { background: '#FFA500', color: '#000000' }, - V: { background: '#FFA500', color: '#000000' }, - B: { background: '#FFA500', color: '#000000' }, - Z: { background: '#FFA500', color: '#000000' }, - X: { background: '#FFA500', color: '#000000' }, - '-': { background: '#FFFFFF', color: '#000000' }, + A: { 'background-color': '#FFBF00', 'text-color': '#000000' }, + R: { 'background-color': '#FF0000', 'text-color': '#FFFFFF' }, + N: { 'background-color': '#00FFFF', 'text-color': '#000000' }, + D: { 'background-color': '#0000FF', 'text-color': '#FFFFFF' }, + C: { 'background-color': '#FFFF00', 'text-color': '#000000' }, + Q: { 'background-color': '#00FF00', 'text-color': '#000000' }, + E: { 'background-color': '#FF00FF', 'text-color': '#FFFFFF' }, + G: { 'background-color': '#808080', 'text-color': '#FFFFFF' }, + H: { 'background-color': '#008000', 'text-color': '#FFFFFF' }, + I: { 'background-color': '#FFA500', 'text-color': '#000000' }, + L: { 'background-color': '#FFA500', 'text-color': '#000000' }, + K: { 'background-color': '#FF0000', 'text-color': '#FFFFFF' }, + M: { 'background-color': '#FFA500', 'text-color': '#000000' }, + F: { 'background-color': '#FFA500', 'text-color': '#000000' }, + P: { 'background-color': '#800080', 'text-color': '#FFFFFF' }, + S: { 'background-color': '#00FF00', 'text-color': '#000000' }, + T: { 'background-color': '#00FF00', 'text-color': '#000000' }, + W: { 'background-color': '#FFA500', 'text-color': '#000000' }, + Y: { 'background-color': '#FFA500', 'text-color': '#000000' }, + V: { 'background-color': '#FFA500', 'text-color': '#000000' }, + B: { 'background-color': '#FFA500', 'text-color': '#000000' }, + Z: { 'background-color': '#FFA500', 'text-color': '#000000' }, + X: { 'background-color': '#FFA500', 'text-color': '#000000' }, + '-': { 'background-color': '#FFFFFF', 'text-color': '#000000' }, }; // Define color scheme based on physical characteristics export const Physical: ColorMap = { // Nonpolar amino acids - G: { background: '#808080', color: '#FFFFFF' }, // Glycine - A: { background: '#808080', color: '#FFFFFF' }, // Alanine - V: { background: '#808080', color: '#FFFFFF' }, // Valine - L: { background: '#808080', color: '#FFFFFF' }, // Leucine - I: { background: '#808080', color: '#FFFFFF' }, // Isoleucine - M: { background: '#808080', color: '#FFFFFF' }, // Methionine - F: { background: '#808080', color: '#FFFFFF' }, // Phenylalanine - W: { background: '#808080', color: '#FFFFFF' }, // Tryptophan - P: { background: '#808080', color: '#FFFFFF' }, // Proline + G: { 'background-color': '#808080', 'text-color': '#FFFFFF' }, // Glycine + A: { 'background-color': '#808080', 'text-color': '#FFFFFF' }, // Alanine + V: { 'background-color': '#808080', 'text-color': '#FFFFFF' }, // Valine + L: { 'background-color': '#808080', 'text-color': '#FFFFFF' }, // Leucine + I: { 'background-color': '#808080', 'text-color': '#FFFFFF' }, // Isoleucine + M: { 'background-color': '#808080', 'text-color': '#FFFFFF' }, // Methionine + F: { 'background-color': '#808080', 'text-color': '#FFFFFF' }, // Phenylalanine + W: { 'background-color': '#808080', 'text-color': '#FFFFFF' }, // Tryptophan + P: { 'background-color': '#808080', 'text-color': '#FFFFFF' }, // Proline // Polar amino acids - S: { background: '#00FF00', color: '#000000' }, // Serine - T: { background: '#00FF00', color: '#000000' }, // Threonine - C: { background: '#00FF00', color: '#000000' }, // Cysteine - Y: { background: '#00FF00', color: '#000000' }, // Tyrosine - N: { background: '#00FF00', color: '#000000' }, // Asparagine - Q: { background: '#00FF00', color: '#000000' }, // Glutamine + S: { 'background-color': '#00FF00', 'text-color': '#000000' }, // Serine + T: { 'background-color': '#00FF00', 'text-color': '#000000' }, // Threonine + C: { 'background-color': '#00FF00', 'text-color': '#000000' }, // Cysteine + Y: { 'background-color': '#00FF00', 'text-color': '#000000' }, // Tyrosine + N: { 'background-color': '#00FF00', 'text-color': '#000000' }, // Asparagine + Q: { 'background-color': '#00FF00', 'text-color': '#000000' }, // Glutamine // Acidic amino acids - D: { background: '#FF0000', color: '#FFFFFF' }, // Aspartic Acid - E: { background: '#FF0000', color: '#FFFFFF' }, // Glutamic Acid + D: { 'background-color': '#FF0000', 'text-color': '#FFFFFF' }, // Aspartic Acid + E: { 'background-color': '#FF0000', 'text-color': '#FFFFFF' }, // Glutamic Acid // Basic amino acids - R: { background: '#0000FF', color: '#FFFFFF' }, // Arginine - H: { background: '#0000FF', color: '#FFFFFF' }, // Histidine - K: { background: '#0000FF', color: '#FFFFFF' }, // Lysine + R: { 'background-color': '#0000FF', 'text-color': '#FFFFFF' }, // Arginine + H: { 'background-color': '#0000FF', 'text-color': '#FFFFFF' }, // Histidine + K: { 'background-color': '#0000FF', 'text-color': '#FFFFFF' }, // Lysine // Undefined or any other amino acid - B: { background: '#FFA500', color: '#000000' }, - Z: { background: '#FFA500', color: '#000000' }, - X: { background: '#FFA500', color: '#000000' }, - '-': { background: '#FFFFFF', color: '#000000' }, + B: { 'background-color': '#FFA500', 'text-color': '#000000' }, + Z: { 'background-color': '#FFA500', 'text-color': '#000000' }, + X: { 'background-color': '#FFA500', 'text-color': '#000000' }, + '-': { 'background-color': '#FFFFFF', 'text-color': '#000000' }, }; // Define custom ZAPPO scheme @@ -73,30 +73,30 @@ export const Physical: ColorMap = { // Custom colorblind Wong palette: export const ZAPPO: ColorMap = { // Aliphatic/hydrophobic - I: { background: '#CC79A7', color: 'black' }, - L: { background: '#CC79A7', color: 'black' }, - V: { background: '#CC79A7', color: 'black' }, - A: { background: '#CC79A7', color: 'black' }, - M: { background: '#CC79A7', color: 'black' }, + I: { 'background-color': '#CC79A7', 'text-color': 'black' }, + L: { 'background-color': '#CC79A7', 'text-color': 'black' }, + V: { 'background-color': '#CC79A7', 'text-color': 'black' }, + A: { 'background-color': '#CC79A7', 'text-color': 'black' }, + M: { 'background-color': '#CC79A7', 'text-color': 'black' }, // Aromatic - F: { background: '#E69F00', color: 'black' }, - W: { background: '#E69F00', color: 'black' }, - Y: { background: '#E69F00', color: 'black' }, + F: { 'background-color': '#E69F00', 'text-color': 'black' }, + W: { 'background-color': '#E69F00', 'text-color': 'black' }, + Y: { 'background-color': '#E69F00', 'text-color': 'black' }, // Positive charge - K: { background: '#0072B2', color: 'white' }, - R: { background: '#0072B2', color: 'white' }, - H: { background: '#0072B2', color: 'white' }, + K: { 'background-color': '#0072B2', 'text-color': 'white' }, + R: { 'background-color': '#0072B2', 'text-color': 'white' }, + H: { 'background-color': '#0072B2', 'text-color': 'white' }, // Negative charge - D: { background: '#D55E00', color: 'black' }, - E: { background: '#D55E00', color: 'black' }, + D: { 'background-color': '#D55E00', 'text-color': 'black' }, + E: { 'background-color': '#D55E00', 'text-color': 'black' }, // Hydrophilic - N: { background: '#009E73', color: 'black' }, - Q: { background: '#009E73', color: 'black' }, - S: { background: '#009E73', color: 'black' }, - T: { background: '#009E73', color: 'black' }, + N: { 'background-color': '#009E73', 'text-color': 'black' }, + Q: { 'background-color': '#009E73', 'text-color': 'black' }, + S: { 'background-color': '#009E73', 'text-color': 'black' }, + T: { 'background-color': '#009E73', 'text-color': 'black' }, // Conformationally special - P: { background: '#56B4E9', color: 'black' }, - G: { background: '#56B4E9', color: 'black' }, + P: { 'background-color': '#56B4E9', 'text-color': 'black' }, + G: { 'background-color': '#56B4E9', 'text-color': 'black' }, // Cysteine - C: { background: '#F0E442', color: 'black' }, + C: { 'background-color': '#F0E442', 'text-color': 'black' }, } \ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html index 380c76d..2248d68 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html @@ -1,14 +1,20 @@ -
+
Index
- -
Consensus
+ + @if(sequences.length > 1) { + +
Consensus
+ } @for (label of labels; track $index) { -
{{ label }}
+
{{ label || 'Sequence' }}
}
@@ -18,15 +24,18 @@
- - - + + + @if(sequences.length > 1) { + + + } @for(sequence of sequences; track i; let i = $index) { @if(sequence[j]; as aa) { - + } }
@@ -35,23 +44,36 @@
- -
{{ j * 10 + 1 }}
+ + + + + + + - - - @if(styles$ | async; as styles) { - - @if(styles[i][j]; as style) { - -
- {{ sequences[i][j] }} -
+ + + + + + + + @if(styles$ | async; as styles) { + + @if(styles[i][j]; as style) { + +
+ {{ value ? value : sequences[i][j] }} +
+ } } - } -
\ No newline at end of file +
\ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss index a4b8280..89feda4 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss @@ -1,251 +1,16 @@ -// .not-selectable { -// // Disable text selection -// user-select: none; -// // Set cursor to default one -// cursor: default; -// } - -// .no-split { -// gap: 0; -// } - -// :host { -// @extend .not-selectable; -// // Set font monospace -// font-family: monospace, monospace; -// // Set display properties -// display: flex; -// flex-direction: row; -// flex-wrap: nowrap; -// // justify-content: flex-start; -// // Set gap to separate chunks -// gap: .5em; -// // Set component to fit parent container -// height: auto; -// // width: 100%; -// // Set overflow properties -// overflow-y: hidden; -// overflow-x: auto; - -// .chunk { -// // Collapse borders -// border-collapse: collapse; - -// td { -// // Remove borders -// padding: 0; -// border: 0; -// // Intercept pointer events -// pointer-events: all; - -// span { -// // Set positioning -// position: relative; -// // Remove events, allows selection on td -// pointer-events: none; -// // Alignn text to center -// text-align: center; -// // Stretch to the whole cell -// width: 100%; -// } -// } - -// // Style labels -// td:first-child { -// // Align label to right -// text-align: right; -// // Add padding to label -// padding-right: .5em; -// // Disable pointer events -// pointer-events: none; -// } - -// // Style index -// tr:first-child { -// // Align text to right -// text-align: right; -// // Decrease font size -// font-size: .75em; - -// td { -// // Initialize positioning for table cells -// position: relative; - -// // Update positioning for inner index -// span { -// position: absolute; -// right: 0; -// top: 0; -// // Hide all indices by default -// display: none; -// } - -// // Show only last index -// &:last-child span { -// display: block; -// } -// } - -// } - -// } - -// .chunk:not(:first-child) { - -// // Hide first cell -// td:first-child { -// // Set opacity to 0 -// opacity: 0; -// // Unset padding -// padding: 0 !important; -// // Unset width -// max-width: 0; -// width: 0; -// } -// } - -// } - -// // Define selection color -// $selected-color: greenyellow; -// $selected-width: 0.25em; - -// // Style selected cells -// td.selected { -// // Set positioning -// position: relative; -// box-sizing: border-box; -// // border: 2px solid greenyellow !important; -// // // Initialize outline -// // outline-width: 0; -// // outline-style: solid; -// // outline-color: $selected-color; -// // // Update outline -// // &.left { -// // outline-width: 0 0 0 $selected-width; -// // } -// // &.right { -// // outline-width: 0 $selected-width 0 0; -// // } -// // &.top { -// // outline-width: $selected-width 0 0 0; -// // } -// // &.bottom { -// // outline-width: 0 0 $selected-width 0; -// // } -// // &.top.left { -// // outline-width: $selected-width 0 0 $selected-width; -// // } -// // &.top.right { -// // outline-width: $selected-width $selected-width 0 0; -// // } -// // &.top.left.right { -// // outline-width: $selected-width $selected-width 0 $selected-width; -// // } -// // &.bottom.left { -// // outline-width: 0 0 $selected-width $selected-width; -// // } -// // &.bottom.right { -// // outline-width: 0 $selected-width $selected-width 0; -// // } -// // &.bottom.left.right { -// // outline-width: 0 $selected-width $selected-width $selected-width; -// // } - -// // &::after { -// // // Set positioning -// // position: absolute; -// // left: 0; -// // top: 0; -// // // Set size -// // display: block; -// // height: 100%; -// // width: 100%; -// // // Set background color -// // border-style: solid; -// // border-width: 0; -// // border-color: $selected-color; -// // // Set empty cell -// // content: ''; -// // } - -// // &.left::after { -// // border-left-width: $selected-width; -// // } - -// // &.right::after { -// // border-right-width: $selected-width; -// // } - -// // &.top::after { -// // border-top-width: $selected-width; -// // } - -// // &.bottom::after { -// // border-bottom-width: $selected-width; -// // } - -// // If background is transparent, then turn it to greenyellow -// &::before { -// // Set positioning -// position: absolute; -// left: 0; -// top: 0; -// // Set size -// display: block; -// height: 100%; -// width: 100%; -// // Set background color -// background-color: $selected-color; -// // background: repeating-linear-gradient( -// // 45deg, -// // transparent, -// // transparent .25em, -// // rgba(30, 255, 0, 0.3) .25em, -// // rgba(30, 255, 0, 0.3) .25em calc(.25em + 1px) -// // ); -// // Set empty cell -// content: ''; -// } -// } - -// td.rotated { - -// span { -// // Change display -// display: block; -// // Change positioning -// position: relative !important; -// // Overwrite height property -// height: auto; -// // Align text to left (bottom) -// text-align: left; -// // Rotate text -// transform: rotate(-180deg); -// writing-mode: vertical-rl; -// white-space: nowrap; -// // Add padding -// padding-bottom: .25rem; -// padding-top: .25rem; -// } - -// } - - :host { + position: relative; + display: block; + height: auto; + width: 100%; + // Unset scrolling + overflow: hidden; // Set font monospace font-family: monospace, monospace; // Disable text selection user-select: none; // Set cursor to default one cursor: default; - // Set display properties - overflow: auto; - position: relative; - display: block; - height: auto; - width: 100%; - .scaffold { display: flex; @@ -253,6 +18,8 @@ flex-wrap: nowrap; justify-content: start; align-items: stretch; + // Set overflow on this element + overflow: auto; // Add gap between labels and positions gap: .25rem; @@ -262,16 +29,14 @@ flex-direction: column; justify-content: end; align-items: end; - // // Set positioning - // position: sticky; - // bottom: 0; - // left: 0; + // Set positioning + position: sticky; + left: 0; // Bring forward z-index: 999; - // Set background not transparent - // backdrop-filter: blur(99px); - // Set right shadow - // box-shadow: 0 0 .25em 0 rgba(0, 0, 0, .75); + // Force background color inheritance + background-color: inherit; + color: inherit; } .positions { @@ -287,28 +52,6 @@ align-items: center; // border: 1px solid blueviolet; - .index { - // Change display - display: block; - // Stretch to the whole cell - flex-grow: 1; - // Set font size - font-size: .75em; - // Change positioning - position: relative !important; - // Overwrite height property - height: auto; - // Align text to left (bottom) - text-align: left; - // Rotate text - transform: rotate(-180deg); - writing-mode: vertical-rl; - white-space: nowrap; - // Add padding - padding-bottom: .25rem; - padding-top: .25rem; - } - .residue, .consensus { // Set residue to stretch the whole cell @@ -329,4 +72,29 @@ border-style: solid; } } + + .scaffold.rotate-index { + + .cell.index { + // Change display + display: block; + // Stretch to the whole cell + flex-grow: 1; + // Set font size + font-size: .75em; + // Change positioning + position: relative !important; + // Overwrite height property + height: auto; + // Align text to left (bottom) + text-align: left; + // Rotate text + transform: rotate(-180deg); + writing-mode: vertical-rl; + white-space: nowrap; + // Add padding + padding-bottom: .25rem; + padding-top: .25rem; + } + } } \ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts index ddb2583..99b0abc 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts @@ -6,6 +6,7 @@ import { BehaviorSubject, combineLatestWith, map, shareReplay } from 'rxjs'; import { CommonModule } from '@angular/common'; import { ColorMap, ZAPPO } from './colors'; import { SelectionService } from './services/selection.service'; +import { IndexService } from './services/index.service'; // export interface Locus { // // Define start position (for both point and range loci) @@ -21,13 +22,13 @@ import { SelectionService } from './services/selection.service'; // export type Loci = Locus[]; -export interface Locus { +export interface Locus { // These are the boundaries of the locus start: T; end: T; } -type ColoredLocus = Locus & Partial; +export type Colored = L & Partial; /** Defines logo of aligned sequences * @@ -45,19 +46,59 @@ export type Logo = { [aa: string]: number }[]; */ export type Consensus = [string, number][]; +/** Define settings for sequence viewer + * + */ +export interface Settings { + // Define chunk size, might be negative for single residue chunks + 'chunk-size': number; + // Define background color, fallback to this color if residue is not locus, nor selected + 'background-color': string; + // Define selection color, use this color if residue is selected + 'selection-color': string; + // Define text color, fallback to this color if residue is not locus, nor selected + 'text-color': string; + // Whether to rotate index, default to false + 'rotate-index': boolean; + // Define color map for residues + 'color-map': ColorMap; +} + @Component({ // eslint-disable-next-line @angular-eslint/component-selector selector: 'ngx-sequence-viewer', - // providers: [PositionsService, SelectionService], - providers: [SelectionService], - imports: [CommonModule], - standalone: true, templateUrl: './ngx-sequence-viewer.component.html', styleUrls: ['./ngx-sequence-viewer.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, + providers: [SelectionService, IndexService], + imports: [CommonModule], + standalone: true, }) export class NgxSequenceViewerComponent implements OnChanges { + protected _settings: Settings = { + 'chunk-size': 5, + 'background-color': 'transparent', + 'selection-color': 'greenyellow', + 'text-color': 'black', + 'rotate-index': false, + 'color-map': ZAPPO, + }; + + @Input() + set settings(settings: Partial | null) { + // Initialize settings + this._settings = { ...this.settings, ...(settings || {}) }; + // Get chunk size, rotate index + const { 'chunk-size': chunkSize, 'rotate-index': rotateIndex } = this.settings; + // Update index rotation according to chunk size + this._settings['rotate-index'] = chunkSize < 0 ? true : rotateIndex; + } + + get settings(): Settings { + return this._settings; + } + /** Define split of alignment * * For values from 0 and greater, the index above is positioned horizontally and @@ -66,8 +107,16 @@ export class NgxSequenceViewerComponent implements OnChanges { * (rotated 90 degrees), no gap is set between each chunk. Each chunk will contain * exactly one position, hence an index is defined for each residue. */ + get split(): number { + return this.settings['chunk-size']; + } + + get cmap(): ColorMap { + return this.settings['color-map']; + } + @Input() - public split = 5; + public label?: string; @Input() public labels?: string[]; @@ -91,7 +140,7 @@ export class NgxSequenceViewerComponent implements OnChanges { } @Input() - public colors: ColorMap = ZAPPO; + public index? : unknown[]; public chunks!: Locus[]; @@ -99,10 +148,10 @@ export class NgxSequenceViewerComponent implements OnChanges { public consensus!: Consensus; - public loci$ = new BehaviorSubject>({}); + public loci$ = new BehaviorSubject>>({}); @Input() - public loci: ColoredLocus[] = []; + public loci: Colored[] = []; @Input() public set select(locus: Locus | null) { @@ -127,25 +176,52 @@ export class NgxSequenceViewerComponent implements OnChanges { // Loop through each row (sequence) for (let i = 0; i < sequences.length; i++) { // Update index - const k = i < 1 ? 'consensus' : i; + const k = (i < 1) ? 'consensus' : (i - 1); // Initialize row styles[k] = []; // Loop through each column (position) for (let j = 0; j < this.length; j++) { - // Get loci at current position - const locus = loci[j]; - // Define whether current position is selected or not - const selected = selection?.start <= j && j <= selection?.end; // Define residue name const residue = sequences[i][j]; - // Define color for current position - const color = this.colors[residue]; - // Define style for current position - const style = { - 'background-color': color ? color['background'] : locus ? locus['background'] : selected ? 'greenyellow' : 'transparent', - 'border-color': selected ? 'grenyellow' : locus ? locus['background'] : undefined, - 'color': color ? color['color'] : selected ? 'black' : undefined, - }; + // Initialize background color + let backgroundColor = this.settings['background-color']; + let borderColor = this.settings['background-color']; + let textColor = this.settings['text-color']; + // Case residue is defined in color map + if (residue in this.settings['color-map']) { + // Define border color here, as it will be overwritten later + borderColor = this.settings['color-map'][residue]['background-color']; + } + // Case residue is among the selected ones + if (selection) { + // Get numeric start, end + const { start, end } = this.indexService.map(selection); + // Case residue is within selection + if (start <= j && j <= end) { + // Define selection color + const selectionColor = this.settings['selection-color']; + // Update background color + backgroundColor = selectionColor; + borderColor = selectionColor; + } + } + // Case residue is within locus + else if (j in loci) { + // Get current locus + const locus = loci[j]; + // Update background color + backgroundColor = locus['background-color'] || backgroundColor; + borderColor = locus['background-color'] || borderColor; + textColor = locus['text-color'] || textColor; + } + // Case residue is defined in color map + if (residue in this.settings['color-map']) { + // Initialize background color + backgroundColor = this.settings['color-map'][residue]['background-color']; + textColor = this.settings['color-map'][residue]['text-color']; + } + // Define CSS colpiant styles + const style = { 'background-color': backgroundColor, 'border-color': borderColor, 'color': textColor }; // Store style for current position styles[k][j] = style; } @@ -154,14 +230,30 @@ export class NgxSequenceViewerComponent implements OnChanges { styles['index'] = []; // Loop through each position for (let j = 0; j < this.length; j++) { - // Check whether current position is selected - const selected = selection?.start <= j && j <= selection?.end; - // Initialize style for current position - styles['index'][j] = { - 'background-color': selected ? 'greenyellow' : undefined, - 'border-color': selected ? 'greenyellow' : undefined, - 'color': selected ? 'black' : undefined, - }; + // Initialize background color + let backgroundColor = this.settings['background-color']; + const textColor = this.settings['text-color']; + // Case locus is selected + if (selection) { + // Get numeric start, end + const { start, end } = this.indexService.map(selection); + // Case residue is within selection + if (start <= j && j <= end) { + // Define selection color + const selectionColor = this.settings['selection-color']; + // Update background color + backgroundColor = selectionColor; + } + } + // Case residue is within locus + else if (j in loci) { + // Get current locus + const locus = loci[j]; + // Update background color + backgroundColor = locus['background-color'] || backgroundColor; + } + // Initialize CSS style for current index position + styles['index'][j] = { 'background-color': backgroundColor, 'border-color': backgroundColor, 'color': textColor }; } // Return styles matrix return styles; @@ -173,6 +265,7 @@ export class NgxSequenceViewerComponent implements OnChanges { // Dependency injection constructor( public selectionService: SelectionService, + public indexService: IndexService, ) {} @HostListener('window:mouseup', ['$event']) @@ -180,11 +273,22 @@ export class NgxSequenceViewerComponent implements OnChanges { this.selectionService.onMouseUp(event); } - public onMouseDown(event:MouseEvent, index: number) { + public onMouseDown(event:MouseEvent, index: string) { + // Set selection this.selectionService.onMouseDown(event, index); + // Prevent default behavior + event.preventDefault(); + // Prevent bubbling + event.stopPropagation(); + } + + @HostListener('window:mousedown') + public onMouseDownOut() { + // Reset selection + this.selectionService.select$.next(null); } - public onMouseEnter(event: MouseEvent, index: number) { + public onMouseEnter(event: MouseEvent, index: string) { this.selectionService.onMouseEnter(event, index); } @@ -199,6 +303,8 @@ export class NgxSequenceViewerComponent implements OnChanges { this.setLogo(); // Calculate consensus this.setConsensus(); + // Handle input index + this.setIndex(); // Update loci this.setLoci(); } @@ -227,6 +333,7 @@ export class NgxSequenceViewerComponent implements OnChanges { // Case sequence is provided else if (this.sequence) { // Set sequence as the only sequence in sequences list + this.labels = [this.label || '']; this.sequences = [this.sequence]; } // Otherwise, throw an error @@ -360,13 +467,29 @@ export class NgxSequenceViewerComponent implements OnChanges { } } + public setIndex(): void { + // Get initial index + let index = this.index; + // Case input index is not defined + if (!index) { + // Then define index as a range from 0 to length of alignment + index = Array.from({ length: this.length }, (_, i) => i + 1); + } + // Define index + this.indexService.index = index; + } + public setLoci(): void { // Define residue (index) to color map - const colors = this.loci.reduce((cmap: Record, locus: ColoredLocus) => { + const colors = this.loci.reduce((cmap: Record>, locus: Colored) => { + // Cast start, end position to number + const { start, end } = this.indexService.map(locus); // Loop through each position in locus - for (let i = locus.start; i <= locus.end; i++) { + for (let i = start; i <= end; i++) { + // Get current index as string + const index = this.indexService.keys[i]; // Update color map - cmap[i] = locus; + cmap[index] = locus; } // Return updated color map return cmap; diff --git a/projects/ngx-sequence-viewer/src/lib/services/index.service.spec.ts b/projects/ngx-sequence-viewer/src/lib/services/index.service.spec.ts new file mode 100644 index 0000000..7580333 --- /dev/null +++ b/projects/ngx-sequence-viewer/src/lib/services/index.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { IndexService } from './index.service'; + +describe('IndexService', () => { + let service: IndexService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(IndexService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/ngx-sequence-viewer/src/lib/services/index.service.ts b/projects/ngx-sequence-viewer/src/lib/services/index.service.ts new file mode 100644 index 0000000..7f16b09 --- /dev/null +++ b/projects/ngx-sequence-viewer/src/lib/services/index.service.ts @@ -0,0 +1,39 @@ +import { Locus } from "@ngx-sequence-viewer"; +import { Injectable } from "@angular/core"; + +Injectable() +export class IndexService { + + protected _index!: Record; + + public keys!: string[]; + + public values!: number[]; + + public set index(index: unknown[]) { + // Define keys, numeric values + this.keys = index.map((v: unknown) => '' + v); + this.values = index.map((v: unknown, i: number) => i); + // Store index mapping external to internal value + this._index = this.keys.reduce((index: Record, v: string, i: number) => { + // Store association between external and internal values + index['' + v] = i; + // Return index + return index; + }, {}); + } + + public get index(): Record { + // Just return internal index + return this._index; + } + + public map>(locus: L): Omit & Locus { + // Map locus to internal index + const start = this._index['' + locus.start]; + const end = this._index['' + locus.end]; + // Return mapped locus + return { ...locus, start, end }; + } + +} diff --git a/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts b/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts index 5f08b6b..7952351 100644 --- a/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts +++ b/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts @@ -1,8 +1,9 @@ -import { Locus } from '../ngx-sequence-viewer.component'; import { BehaviorSubject, map, Observable, shareReplay } from 'rxjs'; +import { Locus } from '../ngx-sequence-viewer.component'; +import { IndexService } from './index.service'; import { Injectable } from '@angular/core'; -@Injectable({ providedIn: 'platform' }) +@Injectable() export class SelectionService { // Define currently selected locus @@ -31,6 +32,9 @@ export class SelectionService { // Define flag to state where selection is ongoing protected selecting = false; + // Dependency injection + constructor(public indexService: IndexService) {} + /** Handle mouse down event * * If curren selection is already defined, then unset it @@ -39,7 +43,7 @@ export class SelectionService { * @param event Mouse event * @param position Position of mouse event */ - public onMouseDown(event: MouseEvent, position: number): void { + public onMouseDown(event: MouseEvent, position: string): void { // Set selection flag this.selecting = true; // Update selection with current residue (column) only @@ -54,15 +58,26 @@ export class SelectionService { * @param event Mouse event * @param position Position of mouse event */ - public onMouseEnter(event: MouseEvent, position: number): void { + public onMouseEnter(event: MouseEvent, position: string): void { // In case selection is ongoing if (this.selecting) { - // Get start position - const start = Math.min(this.select?.start || position, position); - // Get end position - const end = Math.max(this.select?.end || position, position, start); - // Emit new selection - this.select = { start, end }; + // Cast current position to numeric + const current = this.indexService.index[position]; + // In case selection is defined + if (this.select) { + // Get numeric start, end values + const { start, end } = this.indexService.map(this.select); + // Case current position is before start + if (current < start) { + // Update start position + this.select = { ...this.select, start: position }; + } + // Case current position is after end + else if (current > end) { + // Update end position + this.select = { ...this.select, end: position }; + } + } } } diff --git a/projects/ngx-sequence-viewer/src/public-api.ts b/projects/ngx-sequence-viewer/src/public-api.ts index 46d53c5..b952a89 100644 --- a/projects/ngx-sequence-viewer/src/public-api.ts +++ b/projects/ngx-sequence-viewer/src/public-api.ts @@ -1,2 +1,2 @@ -export { NgxSequenceViewerComponent } from './lib/ngx-sequence-viewer.component'; +export { NgxSequenceViewerComponent, Settings, Locus } from './lib/ngx-sequence-viewer.component'; export * as Colors from './lib/colors'; From 48ea5cd316f3e5bd94acf07c649b905b5eb54b8d Mon Sep 17 00:00:00 2001 From: Damiano Clementel Date: Wed, 24 Jul 2024 14:28:44 +0200 Subject: [PATCH 6/9] Introduces chunks split. Fixes style update on selection. --- .../multiple-sequence-alignment.component.ts | 25 +++-- .../page-sequence-viewer.component.html | 2 +- .../single-sequence-viewer.component.html | 31 +++++-- .../single-sequence-viewer.component.ts | 2 +- .../lib/ngx-sequence-viewer.component.html | 85 +++++++++-------- .../lib/ngx-sequence-viewer.component.scss | 93 ++++++++++++++----- .../src/lib/ngx-sequence-viewer.component.ts | 74 +++++---------- .../src/lib/services/selection.service.ts | 15 +-- projects/ngx-sequence-viewer/src/lib/utils.ts | 31 +++++++ .../ngx-sequence-viewer/src/public-api.ts | 1 + 10 files changed, 225 insertions(+), 134 deletions(-) create mode 100644 projects/ngx-sequence-viewer/src/lib/utils.ts diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.ts b/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.ts index 67a246e..cf9bb9a 100644 --- a/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.ts +++ b/projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.ts @@ -39,6 +39,17 @@ export class MultipleSequenceAlignmentComponent { readonly fasta = FASTA; + // Define default settings + readonly settings: Partial = { + // Default settings for light theme + 'background-color': '#FFFFFF', + 'text-color': 'black', + // Split sequence in chunks of 5 + 'chunk-size': 5, + // Do not rotate index + 'rotate-index': false, + } + readonly loci = [ { start: 20, end: 30, 'background-color': '#648FFF' }, { start: 40, end: 50, 'background-color': '#FE6100' }, @@ -49,7 +60,7 @@ export class MultipleSequenceAlignmentComponent { public settings$: Observable>; // Define emitter for selected locus - public selected$ = new EventEmitter(); + public selected$ = new EventEmitter(); // Dependency injection constructor(public themeSelectorService: ThemeSelectorService) { @@ -65,24 +76,22 @@ export class MultipleSequenceAlignmentComponent { if (theme === 'dark') { // Then return dark parameters return { + // Unpack default settings + ...this.settings, + // Override with dark theme settings 'background-color': '#212529', 'text-color': 'white', - 'chunk-size': -1, }; } // Otherwise, return light parameters - return { - 'background-color': '#FFFFFF', - 'text-color': 'black', - 'chunk-size': -1, - } + return this.settings }), // Cache results shareReplay(1), ); } - public onSelected(locus: Locus) { + public onSelected(locus: Locus | null) { // Just emit selected value this.selected$.emit(locus); } diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html index ccd155d..f52d435 100644 --- a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html +++ b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.html @@ -1,6 +1,6 @@
- +
\ No newline at end of file diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.html b/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.html index e9e3e39..79cba7f 100644 --- a/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.html +++ b/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.html @@ -1,9 +1,24 @@ - + +
+ +

Single sequence viewer

+
- -

Single sequence viewer

- -
- -
-
\ No newline at end of file + +
+ +
+

+ In this case, a single sequence is shown by the sequence viewer. No split parameter has been set for chunks, so no + chunk is visible. Instead, the index of each position is visualized. Each index is rotated, in order + for + each position to mantain the same width. +

+

+ A custom index has been set in this specific example. Doing so, not only we allow to show sequences with a numeric + index (e.g. protein sequences from the UniProtKB). Instead, we allow also other kind of sequences, such as those + underlying protein structures from the PDB to be represented. In fact, those have a particular alpha-numeric + index. +

+
+
\ No newline at end of file diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.ts b/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.ts index 95de54a..6fa9ce4 100644 --- a/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.ts +++ b/projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.ts @@ -33,7 +33,7 @@ export class SingleSequenceViewerComponent { index = index + v; } // If index is even, then return negative index - if (i % 2 === 0) { + if (i % 2 === 1) { index = '-' + index; } // Return changed index diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html index 2248d68..8c96ff6 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.html @@ -1,5 +1,6 @@
@@ -18,34 +19,42 @@ }
-
- - @for (position of first; track j; let j = $index) { - -
- - - - @if(sequences.length > 1) { - - - } - - @for(sequence of sequences; track i; let i = $index) { - - @if(sequence[j]; as aa) { - - +
+ + @for (chunk of chunks; track $index) { +
+ + @for (position of first.slice(chunk.start, chunk.end); track j; let j = $index) { + +
+ + + + @if(sequences.length > 1) { + + + } + + @for(sequence of sequences; track i; let i = $index) { + + @if(sequence[j]; as aa) { + + + } + } +
} - } -
+
}
+ + +
{{ indexService.keys[j] }}
@@ -59,21 +68,21 @@ - - - @if(styles$ | async; as styles) { - - @if(styles[i][j]; as style) { - -
- {{ value ? value : sequences[i][j] }} -
- } - } -
\ No newline at end of file + + +@if(styles$ | async; as styles) { + + @if(styles[i][j]; as style) { + +
+ {{ value ? value : sequences[i][j] }} +
+ } +} +
\ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss index 89feda4..8a4ea1b 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss @@ -34,43 +34,74 @@ left: 0; // Bring forward z-index: 999; + // Add padding right + padding-right: .25rem; // Force background color inheritance background-color: inherit; color: inherit; } - .positions { + .chunks { display: flex; + flex-direction: row; flex-shrink: 0; flex-grow: 1; + } + + .chunk { + display: flex; flex-direction: row; + flex-wrap: nowrap; + // Set overflow on this element + overflow: hidden; + // Unset gap + gap: 0; + } + + .position { + display: flex; + flex-direction: column; + justify-content: end; + align-items: center; + // Set positioning + position: relative; + // border: 1px solid blueviolet; - .position { - display: flex; - flex-direction: column; - justify-content: end; - align-items: center; - // border: 1px solid blueviolet; - - .residue, - .consensus { - // Set residue to stretch the whole cell - width: 100%; - // Show text in the middle of the cell - text-align: center; - } + .placeholder.index { + // Position absolutely, exit cell + position: absolute; + right: 0; + top: 0; + // Hide all indices + display: none; + // Disable actions + pointer-events: none; + } + + .residue, + .consensus { + // Set residue to stretch the whole cell + width: 100%; + // Show text in the middle of the cell + text-align: center; } } // TODO Remove this - .labels .label, - .positions .index, - .positions .residue, - .positions .consensus { + .label, + .cell.index, + .cell.residue, + .cell.consensus { border-color: transparent; border-width: 1px; border-style: solid; } + + .cell.index, + .placeholder.index { + // Set font size + font-size: .75em; + } } .scaffold.rotate-index { @@ -80,8 +111,6 @@ display: block; // Stretch to the whole cell flex-grow: 1; - // Set font size - font-size: .75em; // Change positioning position: relative !important; // Overwrite height property @@ -97,4 +126,26 @@ padding-top: .25rem; } } + + .scaffold.split-chunks { + + .chunks { + // Add gap between chunks + gap: .25rem; + } + + .cell.index { + // Hide cell content + font-size: 0; + // Expand width + height: 100%; + width: 100%; + } + + .position:last-child .placeholder.index { + // Show only last index + display: block; + } + } + } \ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts index 99b0abc..7c61d90 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts @@ -7,6 +7,7 @@ import { CommonModule } from '@angular/common'; import { ColorMap, ZAPPO } from './colors'; import { SelectionService } from './services/selection.service'; import { IndexService } from './services/index.service'; +import { parseFasta } from './utils'; // export interface Locus { // // Define start position (for both point and range loci) @@ -60,6 +61,8 @@ export interface Settings { 'text-color': string; // Whether to rotate index, default to false 'rotate-index': boolean; + // Thether to add space between chunks, default to false + 'split-chunks': boolean; // Define color map for residues 'color-map': ColorMap; } @@ -82,6 +85,7 @@ export class NgxSequenceViewerComponent implements OnChanges { 'selection-color': 'greenyellow', 'text-color': 'black', 'rotate-index': false, + 'split-chunks': false, 'color-map': ZAPPO, }; @@ -93,6 +97,8 @@ export class NgxSequenceViewerComponent implements OnChanges { const { 'chunk-size': chunkSize, 'rotate-index': rotateIndex } = this.settings; // Update index rotation according to chunk size this._settings['rotate-index'] = chunkSize < 0 ? true : rotateIndex; + // Update chunk split according to chunk size + this._settings['split-chunks'] = chunkSize < 0 ? false : true; } get settings(): Settings { @@ -142,7 +148,7 @@ export class NgxSequenceViewerComponent implements OnChanges { @Input() public index? : unknown[]; - public chunks!: Locus[]; + public chunks!: Locus[]; public logo!: Logo; @@ -192,6 +198,15 @@ export class NgxSequenceViewerComponent implements OnChanges { // Define border color here, as it will be overwritten later borderColor = this.settings['color-map'][residue]['background-color']; } + // Case residue is within locus + if (j in loci) { + // Get current locus + const locus = loci[j]; + // Update background color + backgroundColor = locus['background-color'] || backgroundColor; + borderColor = locus['background-color'] || borderColor; + textColor = locus['text-color'] || textColor; + } // Case residue is among the selected ones if (selection) { // Get numeric start, end @@ -205,15 +220,6 @@ export class NgxSequenceViewerComponent implements OnChanges { borderColor = selectionColor; } } - // Case residue is within locus - else if (j in loci) { - // Get current locus - const locus = loci[j]; - // Update background color - backgroundColor = locus['background-color'] || backgroundColor; - borderColor = locus['background-color'] || borderColor; - textColor = locus['text-color'] || textColor; - } // Case residue is defined in color map if (residue in this.settings['color-map']) { // Initialize background color @@ -233,6 +239,13 @@ export class NgxSequenceViewerComponent implements OnChanges { // Initialize background color let backgroundColor = this.settings['background-color']; const textColor = this.settings['text-color']; + // Case residue is within locus + if (j in loci) { + // Get current locus + const locus = loci[j]; + // Update background color + backgroundColor = locus['background-color'] || backgroundColor; + } // Case locus is selected if (selection) { // Get numeric start, end @@ -245,13 +258,6 @@ export class NgxSequenceViewerComponent implements OnChanges { backgroundColor = selectionColor; } } - // Case residue is within locus - else if (j in loci) { - // Get current locus - const locus = loci[j]; - // Update background color - backgroundColor = locus['background-color'] || backgroundColor; - } // Initialize CSS style for current index position styles['index'][j] = { 'background-color': backgroundColor, 'border-color': backgroundColor, 'color': textColor }; } @@ -325,7 +331,7 @@ export class NgxSequenceViewerComponent implements OnChanges { // Case fasta file is provided if (this.fasta) { // Attempt to parse fasta file - const parsed = this.parseFasta(this.fasta); + const parsed = parseFasta(this.fasta); // Set sequences and labels this.sequences = parsed.map((entry) => entry.sequence); this.labels = this.labels || parsed.map((entry) => entry.label); @@ -364,38 +370,6 @@ export class NgxSequenceViewerComponent implements OnChanges { else throw new Error('No labels were provided'); } - /** Parse fasta file - * - * @param {string} text - Input text, in fasta format. - * @returns {{ sequence: string, label: string }[]} - Parsed sequences and labels. - */ - public parseFasta(text: string): { sequence: string, label: string }[] { - // Split line by newline character - const lines = text.split(/[\n\r]+/); - // Define output - const parsed: { sequence: string, label: string }[] = []; - // Define current index - let index = -1; - // Loop through each line - for (let line of lines) { - // Sanitize line - line = line.trim(); - // In case line starts with '>' character, then define new sequence entry - if (line.startsWith('>')) { - // Define new sequence entry - parsed.push({ sequence: '', label: line.slice(1) }); - // Update index - index++ - } - // In case index (0) has been defined beforehand, then current line is sequence - else if (index > -1) parsed[index].sequence += line; - // Otherwise, fine is not fasta formatted and an error is thrown - else throw new Error('Provided text is not in fasta format'); - } - // Return parsed sequences and labels - return parsed; - } - /** Define chunks * * Chunks are defined as ranges of positions in the alignment. diff --git a/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts b/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts index 7952351..b980e35 100644 --- a/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts +++ b/projects/ngx-sequence-viewer/src/lib/services/selection.service.ts @@ -1,7 +1,7 @@ -import { BehaviorSubject, map, Observable, shareReplay } from 'rxjs'; import { Locus } from '../ngx-sequence-viewer.component'; import { IndexService } from './index.service'; import { Injectable } from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; @Injectable() export class SelectionService { @@ -22,12 +22,13 @@ export class SelectionService { } // TODO - readonly selected$: Observable = this.select$.pipe( - // Case selected locus is null - map((locus) => locus ? locus : { start: -1, end: -1 }), - // Cache result - shareReplay(1), - ); + // readonly selected$: Observable = this.select$.pipe( + // // // Case selected locus is null + // // map((locus) => locus ? locus : { start: -1, end: -1 }), + // // Cache result + // shareReplay(1), + // ); + readonly selected$ = this.select$; // Define flag to state where selection is ongoing protected selecting = false; diff --git a/projects/ngx-sequence-viewer/src/lib/utils.ts b/projects/ngx-sequence-viewer/src/lib/utils.ts new file mode 100644 index 0000000..659192a --- /dev/null +++ b/projects/ngx-sequence-viewer/src/lib/utils.ts @@ -0,0 +1,31 @@ +/** Parse fasta file +* +* @param {string} text - Input text, in fasta format. +* @returns {{ sequence: string, label: string }[]} - Parsed sequences and labels. +*/ +export function parseFasta(text: string): { sequence: string, label: string }[] { + // Split line by newline character + const lines = text.split(/[\n\r]+/); + // Define output + const parsed: { sequence: string, label: string }[] = []; + // Define current index + let index = -1; + // Loop through each line + for (let line of lines) { + // Sanitize line + line = line.trim(); + // In case line starts with '>' character, then define new sequence entry + if (line.startsWith('>')) { + // Define new sequence entry + parsed.push({ sequence: '', label: line.slice(1) }); + // Update index + index++ + } + // In case index (0) has been defined beforehand, then current line is sequence + else if (index > -1) parsed[index].sequence += line; + // Otherwise, fine is not fasta formatted and an error is thrown + else throw new Error('Provided text is not in fasta format'); + } + // Return parsed sequences and labels + return parsed; + } \ No newline at end of file diff --git a/projects/ngx-sequence-viewer/src/public-api.ts b/projects/ngx-sequence-viewer/src/public-api.ts index b952a89..dc31e1b 100644 --- a/projects/ngx-sequence-viewer/src/public-api.ts +++ b/projects/ngx-sequence-viewer/src/public-api.ts @@ -1,2 +1,3 @@ export { NgxSequenceViewerComponent, Settings, Locus } from './lib/ngx-sequence-viewer.component'; export * as Colors from './lib/colors'; +export * as Utils from './lib/utils'; From 1a8150e5acc65e00ac8792e1af0c4517b6f3f01b Mon Sep 17 00:00:00 2001 From: Damiano Clementel Date: Sat, 27 Jul 2024 11:39:58 +0200 Subject: [PATCH 7/9] Introduces lazy loading for MolStar in ngx-structure-viewer --- angular.json | 7 + docs/39.61769452f9c238cb.js | 1 - docs/3rdpartylicenses.txt | 2117 +- docs/509.ec6a8d82178da6d9.js | 1 - docs/772.0440337245892f34.js | 1 - docs/876.ad26e918280ccdc0.js | 1 - docs/chunk-BDFDQ2SB.js | 24 + docs/chunk-DUVKI6S6.js | 7 + docs/chunk-ED6QR4VZ.js | 1 + docs/chunk-L7IOURQX.js | 1 + docs/chunk-MDWTV2PZ.js | 6067 ++ docs/chunk-SAL4EXGL.js | 6 + docs/chunk-T4BLILQN.js | 3 + docs/chunk-TI7GFU47.js | 15 + docs/index.html | 7 +- docs/main-UMKTUCWS.js | 1 + docs/main.5b859c60ef271fc0.js | 1 - .../bootstrap-icons-OCU552PF.woff} | Bin .../bootstrap-icons-X6UQXWUS.woff2} | Bin .../dssp-helix-OTIKI7SN.svg} | 0 .../dssp-strand-head-QWRJLFK7.svg} | 0 .../dssp-strand-tail-PA4GJMUI.svg} | 0 docs/polyfills-6EAL64PA.js | 2 + docs/polyfills.97b80eb56ae3e13c.js | 1 - docs/runtime.048d90275c60126e.js | 1 - docs/scripts-FR7HA4WI.js | 5 + docs/stats.json | 54957 ++++++++++++++++ docs/styles-BGPFTTQU.css | 1 + docs/styles.2596d53c3a552682.css | 5 - .../demo-showcase/src/app/app.component.ts | 7 +- projects/demo-showcase/src/app/app.config.ts | 5 +- projects/demo-showcase/src/app/app.routes.ts | 23 +- .../page-features-viewer.component.ts | 9 +- .../page-features-viewer.module.ts | 22 + .../page-sequence-viewer.module.ts | 5 + .../page-structure-viewer.component.html | 29 +- .../page-structure-viewer.component.ts | 44 +- .../page-structure-viewer.module.ts | 28 + .../sections/section-chains.component.ts | 8 +- .../sections/section-highlights.component.ts | 8 +- .../section-interactions.component.ts | 9 +- .../sections/section-sources.component.ts | 13 +- projects/demo-showcase/src/styles.scss | 1 + .../src/lib/molstar.spec.ts | 0 .../ngx-structure-viewer/src/lib/molstar.ts | 77 + .../lib/ngx-structure-viewer.component.html | 1 - .../lib/ngx-structure-viewer.component.scss | 12 + .../src/lib/ngx-structure-viewer.component.ts | 127 +- .../src/lib/services/molstar.service.spec.ts | 16 + .../src/lib/services/molstar.service.ts | 21 + .../src/lib/services/plugin.service.ts | 82 +- .../lib/services/representation.service.ts | 527 +- .../src/lib/services/settings.service.ts | 19 +- .../src/lib/services/structure.service.ts | 170 +- .../ngx-structure-viewer/src/public-api.ts | 6 +- webpack.config.js | 5 - 56 files changed, 62628 insertions(+), 1879 deletions(-) delete mode 100644 docs/39.61769452f9c238cb.js delete mode 100644 docs/509.ec6a8d82178da6d9.js delete mode 100644 docs/772.0440337245892f34.js delete mode 100644 docs/876.ad26e918280ccdc0.js create mode 100644 docs/chunk-BDFDQ2SB.js create mode 100644 docs/chunk-DUVKI6S6.js create mode 100644 docs/chunk-ED6QR4VZ.js create mode 100644 docs/chunk-L7IOURQX.js create mode 100644 docs/chunk-MDWTV2PZ.js create mode 100644 docs/chunk-SAL4EXGL.js create mode 100644 docs/chunk-T4BLILQN.js create mode 100644 docs/chunk-TI7GFU47.js create mode 100644 docs/main-UMKTUCWS.js delete mode 100644 docs/main.5b859c60ef271fc0.js rename docs/{bootstrap-icons.70a9dee9e5ab72aa.woff => media/bootstrap-icons-OCU552PF.woff} (100%) rename docs/{bootstrap-icons.bfa90bda92a84a6a.woff2 => media/bootstrap-icons-X6UQXWUS.woff2} (100%) rename docs/{dssp-helix.74d0a47e4d7ed27e.svg => media/dssp-helix-OTIKI7SN.svg} (100%) rename docs/{dssp-strand-head.85a295955fb4c220.svg => media/dssp-strand-head-QWRJLFK7.svg} (100%) rename docs/{dssp-strand-tail.783864b28823e2c7.svg => media/dssp-strand-tail-PA4GJMUI.svg} (100%) create mode 100644 docs/polyfills-6EAL64PA.js delete mode 100644 docs/polyfills.97b80eb56ae3e13c.js delete mode 100644 docs/runtime.048d90275c60126e.js create mode 100644 docs/scripts-FR7HA4WI.js create mode 100644 docs/stats.json create mode 100644 docs/styles-BGPFTTQU.css delete mode 100644 docs/styles.2596d53c3a552682.css create mode 100644 projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.module.ts create mode 100644 projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.module.ts create mode 100644 projects/ngx-structure-viewer/src/lib/molstar.spec.ts create mode 100644 projects/ngx-structure-viewer/src/lib/molstar.ts delete mode 100644 projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.html create mode 100644 projects/ngx-structure-viewer/src/lib/services/molstar.service.spec.ts create mode 100644 projects/ngx-structure-viewer/src/lib/services/molstar.service.ts delete mode 100644 webpack.config.js diff --git a/angular.json b/angular.json index acdb7d7..f04fb09 100644 --- a/angular.json +++ b/angular.json @@ -35,6 +35,13 @@ "scripts": [ "node_modules/@popperjs/core/dist/umd/popper.min.js", "node_modules/bootstrap/dist/js/bootstrap.min.js" + ], + "allowedCommonJsDependencies": [ + "react-dom/client", + "react/jsx-runtime", + "react", + "inline-style-parser", + "extend" ] }, "configurations": { diff --git a/docs/39.61769452f9c238cb.js b/docs/39.61769452f9c238cb.js deleted file mode 100644 index 1cd5cf7..0000000 --- a/docs/39.61769452f9c238cb.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdemo_showcase=self.webpackChunkdemo_showcase||[]).push([[39],{3039:(A,m,u)=>{u.r(m),u.d(m,{PageSequenceViewerComponent:()=>P});const b={A:{background:"#FFBF00",color:"#000000"},R:{background:"#FF0000",color:"#FFFFFF"},N:{background:"#00FFFF",color:"#000000"},D:{background:"#0000FF",color:"#FFFFFF"},C:{background:"#FFFF00",color:"#000000"},Q:{background:"#00FF00",color:"#000000"},E:{background:"#FF00FF",color:"#FFFFFF"},G:{background:"#808080",color:"#FFFFFF"},H:{background:"#008000",color:"#FFFFFF"},I:{background:"#FFA500",color:"#000000"},L:{background:"#FFA500",color:"#000000"},K:{background:"#FF0000",color:"#FFFFFF"},M:{background:"#FFA500",color:"#000000"},F:{background:"#FFA500",color:"#000000"},P:{background:"#800080",color:"#FFFFFF"},S:{background:"#00FF00",color:"#000000"},T:{background:"#00FF00",color:"#000000"},W:{background:"#FFA500",color:"#000000"},Y:{background:"#FFA500",color:"#000000"},V:{background:"#FFA500",color:"#000000"},B:{background:"#FFA500",color:"#000000"},Z:{background:"#FFA500",color:"#000000"},X:{background:"#FFA500",color:"#000000"},"-":{background:"#FFFFFF",color:"#000000"}};var f=u(6354),C=u(9172),$=u(140),q=u(9568),v=u(4412),e=u(4438);let p=(()=>{class r{constructor(){this.selected$=new v.t(void 0)}set selected(o){this.selected$.next(o)}get selected(){return this.selected$.value}onMouseDown(o,n){this.selected=this.selected?void 0:{start:n,end:n,type:"range"}}onMouseEnter(o,n){1===o.buttons&&this.selected&&(this.selected={...this.selected,end:n})}static#e=this.\u0275fac=function(n){return new(n||r)};static#o=this.\u0275prov=e.jDH({token:r,factory:r.\u0275fac,providedIn:"platform"})}return r})(),x=(()=>{class r{set positions(o){this.input$.next(o)}get positions(){return this.input$.value}constructor(o){this.selectionService=o,this.input$=new v.t([])}static#e=this.\u0275fac=function(n){return new(n||r)(e.KVO(p))};static#o=this.\u0275prov=e.jDH({token:r,factory:r.\u0275fac,providedIn:"platform"})}return r})();var l=u(177);function S(r,a){if(1&r){const o=e.RV6();e.j41(0,"div",4),e.bIt("mouseenter",function(t){const s=e.eBV(o).$index,c=e.XpG();return e.Njj(c.onMouseEnter(t,c.index[s]))})("mousedown",function(t){const s=e.eBV(o).$index,c=e.XpG();return e.Njj(c.onMouseDown(t,c.index[s]))})("mouseup",function(t){e.eBV(o);const s=e.XpG();return e.Njj(s.onMouseUp(t))}),e.EFF(1),e.k0s()}if(2&r){const o=a.$implicit,n=a.$index,t=e.XpG();e.xc7("background",null==o?null:o.background)("color",null==o?null:o.color),e.Y8G("id","index-residue-"+n),e.R7$(),e.SpI(" ",t.index[n]," ")}}function y(r,a){if(1&r){const o=e.RV6();e.j41(0,"div",5),e.bIt("mouseenter",function(t){const s=e.eBV(o).$index,c=e.XpG();return e.Njj(c.onMouseEnter(t,c.index[s]))})("mousedown",function(t){const s=e.eBV(o).$index,c=e.XpG();return e.Njj(c.onMouseDown(t,c.index[s]))})("mouseup",function(t){e.eBV(o);const s=e.XpG();return e.Njj(s.onMouseUp(t))}),e.EFF(1),e.k0s()}if(2&r){const o=a.$implicit,n=a.$index,t=e.XpG();e.xc7("background",t.colors[o].background||t.colors["-"].background)("color",t.colors[o].color||t.colors["-"].color),e.Y8G("id","sequence-residue-"+n),e.R7$(),e.SpI(" ",o," ")}}let V=(()=>{class r{set positions(o){this.positionsService.positions=o}get positions(){return this.positionsService.positions}constructor(o,n){this.positionsService=o,this.selectionService=n,this.selected$=this.selectionService.selected$,this.positions$=this.selectionService.selected$.pipe((0,f.T)(t=>({...t,background:"#FFFFFF",color:"#000000"})),(0,C.Z)(void 0),(0,$.v)(this.positionsService.input$),(0,f.T)(([t,s])=>{s=[...s];const c=new Map(this.index.map((F,d)=>[F,d])),i=t?.start,g=t?.end;if(null!=i&&null!=g){let F=c.get(i),d=c.get(g);F>d&&([F,d]=[d,F]),s.splice(F,d-F+1,...Array(d-F+1).fill(t))}return s}),(0,q.t)(1))}ngOnChanges(o){if(o){if(o.sequence||o.index){if("string"==typeof this.sequence){if(!this.description&&">"===this.sequence[0]){const[c,...i]=this.sequence.split("\n");this.description=c,this.sequence=i.join("\n")}this.sequence=this.sequence.replace(/[\n\r\s\t]+/g,"").split("")}this.index||(this.index=Array.from({length:this.sequence.length},(c,i)=>i+1))}this.colors||(this.colors=b);const n=new Map(this.index.map((c,i)=>[c,i])),t=new Array(this.index.length).fill(void 0),s=(this.loci||[]).map(({start:c,end:i,type:g,background:F,color:d})=>{const _=n.get(c),w=void 0!==i?n.get(i):c,M={start:_,end:w,type:g,background:F,color:d};for(let h=_;h<=w;h++)t[h]=M;return M});s.sort((c,i)=>c.start-i.start||(c.end||0)-(i.end||0)),this.loci=s,this.positions=t}}onMouseUp(o){}onMouseDown(o,n){this.selectionService.onMouseDown(o,n)}onMouseEnter(o,n){this.selectionService.onMouseEnter(o,n)}static#e=this.\u0275fac=function(n){return new(n||r)(e.rXU(x),e.rXU(p))};static#o=this.\u0275cmp=e.VBU({type:r,selectors:[["ngx-sequence-viewer"]],inputs:{loci:"loci",index:"index",sequence:"sequence",colors:"colors",description:"description"},outputs:{selected$:"selected"},standalone:!0,features:[e.Jv_([x,p]),e.OA$,e.aNF],decls:7,vars:2,consts:[[1,"index"],[1,"index-residue",3,"id","background","color"],[1,"sequence"],[1,"sequence-residue",3,"id","background","color"],[1,"index-residue",3,"mouseenter","mousedown","mouseup","id"],[1,"sequence-residue",3,"mouseenter","mousedown","mouseup","id"]],template:function(n,t){1&n&&(e.j41(0,"div",0),e.Z7z(1,S,2,6,"div",1,e.Vm6),e.nI1(3,"async"),e.k0s(),e.j41(4,"div",2),e.Z7z(5,y,2,6,"div",3,e.Vm6),e.k0s()),2&n&&(e.R7$(),e.Dyx(e.bMT(3,0,t.positions$)),e.R7$(4),e.Dyx(t.sequence))},dependencies:[l.MD,l.Jj],styles:["[_nghost-%COMP%]{cursor:default;-webkit-user-select:none;user-select:none}[_nghost-%COMP%] .sequence[_ngcontent-%COMP%], [_nghost-%COMP%] .index[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:flex-start;align-items:stretch}[_nghost-%COMP%] .sequence[_ngcontent-%COMP%] > div[_ngcontent-%COMP%], [_nghost-%COMP%] .index[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{flex:0 0 auto;display:block;height:1rem;width:1rem;text-align:center;font-size:inherit;line-height:1rem}[_nghost-%COMP%] .sequence[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{text-align:center;vertical-align:center}[_nghost-%COMP%] .index[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{height:auto;text-align:left;transform:rotate(-180deg);writing-mode:vertical-rl;white-space:nowrap;padding-bottom:.25rem;padding-top:.25rem}"]})}return r})();var k=u(3286);function j(r,a){if(1&r&&e.nrm(0,"ngx-sequence-viewer",6),2&r){const o=e.XpG();e.Y8G("sequence",o.sequence)("index",o.index)("loci",o.loci)("colors",o.colors)}}let P=(()=>{class r{constructor(o,n){this.structureService=o,this.location=n,this.loci=[{start:"12",end:"43",type:"range",background:"#007A78",color:"#FFC745"},{start:"57",end:"58",type:"range",background:"#BDE673",color:"#000000"}],this.colors=b,this.structure$=this.structureService.structure$,this._structure=this.structure$.subscribe(()=>{this.sequence=this.structureService.residues.map(({authCompId1:s})=>s),this.index=this.structureService.residues.map(({authSeqId:s,pdbInsCode:c})=>s+c)});const t=this.location.prepareExternalUrl("assets/8vap.A.cif");this.source=this.structureService.source={type:"remote",label:"8VAP",binary:!1,format:"mmcif",link:t}}ngOnDestroy(){this._structure.unsubscribe()}static#e=this.\u0275fac=function(n){return new(n||r)(e.rXU(k.Z),e.rXU(l.aZ))};static#o=this.\u0275cmp=e.VBU({type:r,selectors:[["app-page-sequence-viewer"]],standalone:!0,features:[e.Jv_([k.Z]),e.aNF],decls:17,vars:6,consts:[[1,"container","pt-3"],[1,"row"],[1,"col-7"],[1,"col-5"],[1,"rounded","bg-body-tertiary","p-3"],["id","sequence-viewer-structure",1,"d-block","rounded","border","w-100","h-auto",2,"overflow-x","auto","overflow-y","hidden"],[3,"sequence","index","loci","colors"]],template:function(n,t){1&n&&(e.j41(0,"div",0)(1,"h1"),e.EFF(2,"Sequence viewer"),e.k0s(),e.j41(3,"div")(4,"h2"),e.EFF(5,"Visualize structure"),e.k0s(),e.j41(6,"div",1)(7,"div",2),e.EFF(8," In this example, the sequence underlying the PDB structure `1BRR`, chain `A` is shown. The colouring scheme chosen is based on the structural characteristics of the amino acids. "),e.k0s(),e.j41(9,"div",3)(10,"code")(11,"pre",4),e.EFF(12),e.nI1(13,"json"),e.k0s()()()(),e.j41(14,"div",5),e.DNE(15,j,1,4,"ngx-sequence-viewer",6),e.nI1(16,"async"),e.k0s()()()),2&n&&(e.R7$(12),e.JRh(e.bMT(13,2,t.source)),e.R7$(3),e.vxM(15,e.bMT(16,4,t.structure$)?15:-1))},dependencies:[l.MD,l.Jj,l.TG,V]})}return r})()}}]); \ No newline at end of file diff --git a/docs/3rdpartylicenses.txt b/docs/3rdpartylicenses.txt index 184cc6a..58b5268 100644 --- a/docs/3rdpartylicenses.txt +++ b/docs/3rdpartylicenses.txt @@ -1,69 +1,107 @@ -@angular/common -MIT -@angular/core -MIT +-------------------------------------------------------------------------------- +Package: react +License: "MIT" -@angular/platform-browser -MIT +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. -@angular/router -MIT +-------------------------------------------------------------------------------- +Package: scheduler +License: "MIT" -@babel/runtime -MIT MIT License -Copyright (c) 2014-present Sebastian McKenzie and other contributors +Copyright (c) Facebook, Inc. and its affiliates. -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-------------------------------------------------------------------------------- +Package: react-dom +License: "MIT" -@ungap/structured-clone -ISC -ISC License +MIT License -Copyright (c) 2021, Andrea Giammarchi, @WebReflection +Copyright (c) Facebook, Inc. and its affiliates. -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE -OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-------------------------------------------------------------------------------- +Package: inline-style-parser +License: "MIT" -bail -MIT (The MIT License) -Copyright (c) 2015 Titus Wormer +Copyright (c) 2012 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: style-to-object +License: "MIT" + +The MIT License (MIT) + +Copyright (c) 2017 Menglin "Mark" Xu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including +"Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to @@ -72,24 +110,25 @@ the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Package: extend +License: "MIT" -comma-separated-tokens -MIT -(The MIT License) +The MIT License (MIT) -Copyright (c) 2016 Titus Wormer +Copyright (c) 2014 Stefan Thomas Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including +"Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to @@ -98,169 +137,379 @@ the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -d3 -ISC -Copyright 2010-2023 Mike Bostock +-------------------------------------------------------------------------------- +Package: molstar +License: "MIT" -Permission to use, copy, modify, and/or distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright notice -and this permission notice appear in all copies. +The MIT License -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. + Copyright (c) 2017 - now, Mol* contributors +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -d3-array -ISC -Copyright 2010-2023 Mike Bostock +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -Permission to use, copy, modify, and/or distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright notice -and this permission notice appear in all copies. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +-------------------------------------------------------------------------------- +Package: immutable +License: "MIT" -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. +MIT License +Copyright (c) 2014-present, Lee Byron and other contributors. -d3-axis -ISC -Copyright 2010-2021 Mike Bostock +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -Permission to use, copy, modify, and/or distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright notice -and this permission notice appear in all copies. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-------------------------------------------------------------------------------- +Package: immer +License: "MIT" -d3-brush -ISC -Copyright 2010-2021 Mike Bostock +MIT License -Permission to use, copy, modify, and/or distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright notice -and this permission notice appear in all copies. +Copyright (c) 2017 Michel Weststrate -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -d3-color -ISC -Copyright 2010-2022 Mike Bostock +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. -Permission to use, copy, modify, and/or distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright notice -and this permission notice appear in all copies. +-------------------------------------------------------------------------------- +Package: comma-separated-tokens +License: "MIT" -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: estree-util-is-identifier-name +License: "MIT" -d3-dispatch -ISC -Copyright 2010-2021 Mike Bostock -Permission to use, copy, modify, and/or distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright notice -and this permission notice appear in all copies. +-------------------------------------------------------------------------------- +Package: hast-util-whitespace +License: "MIT" -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: property-information +License: "MIT" -d3-drag -ISC -Copyright 2010-2021 Mike Bostock -Permission to use, copy, modify, and/or distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright notice -and this permission notice appear in all copies. +-------------------------------------------------------------------------------- +Package: space-separated-tokens +License: "MIT" -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: unist-util-position +License: "MIT" -d3-ease -BSD-3-Clause -Copyright 2010-2021 Mike Bostock -Copyright 2001 Robert Penner -All rights reserved. -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: +-------------------------------------------------------------------------------- +Package: unist-util-stringify-position +License: "MIT" -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. +-------------------------------------------------------------------------------- +Package: vfile-message +License: "MIT" -* Neither the name of the author nor the names of contributors may be used to - endorse or promote products derived from this software without specific prior - written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +Package: hast-util-to-jsx-runtime +License: "MIT" -d3-format -ISC -Copyright 2010-2021 Mike Bostock +-------------------------------------------------------------------------------- +Package: html-url-attributes +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: react-markdown +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: mdast-util-to-string +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: decode-named-character-reference +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-util-chunked +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-util-combine-extensions +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-util-decode-numeric-character-reference +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-util-normalize-identifier +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-util-character +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-util-sanitize-uri +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-factory-space +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-util-classify-character +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-util-resolve-all +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-core-commonmark +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-util-subtokenize +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-factory-destination +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-factory-label +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-factory-title +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-factory-whitespace +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-util-html-tag-name +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: micromark-util-decode-string +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: mdast-util-from-markdown +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: remark-parse +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: mdast-util-to-hast +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: trim-lines +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: @ungap/structured-clone +License: "ISC" + +ISC License + +Copyright (c) 2021, Andrea Giammarchi, @WebReflection + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +-------------------------------------------------------------------------------- +Package: unist-util-is +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: unist-util-visit-parents +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: unist-util-visit +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: remark-rehype +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: bail +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: unified +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: is-plain-obj +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: trough +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: vfile +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: xhr2 +License: "MIT" + +Copyright (c) 2013 Victor Costan + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------------------------------------------------------------------- +Package: d3-array +License: "ISC" + +Copyright 2010-2023 Mike Bostock + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. + +-------------------------------------------------------------------------------- +Package: internmap +License: "ISC" + +Copyright 2021 Mike Bostock Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice @@ -274,9 +523,10 @@ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: d3-axis +License: "ISC" -d3-interpolate -ISC Copyright 2010-2021 Mike Bostock Permission to use, copy, modify, and/or distribute this software for any purpose @@ -291,10 +541,11 @@ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: d3-dispatch +License: "ISC" -d3-path -ISC -Copyright 2015-2022 Mike Bostock +Copyright 2010-2021 Mike Bostock Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice @@ -308,9 +559,10 @@ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: d3-selection +License: "ISC" -d3-scale -ISC Copyright 2010-2021 Mike Bostock Permission to use, copy, modify, and/or distribute this software for any purpose @@ -325,9 +577,10 @@ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: d3-drag +License: "ISC" -d3-selection -ISC Copyright 2010-2021 Mike Bostock Permission to use, copy, modify, and/or distribute this software for any purpose @@ -342,9 +595,10 @@ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: d3-color +License: "ISC" -d3-shape -ISC Copyright 2010-2022 Mike Bostock Permission to use, copy, modify, and/or distribute this software for any purpose @@ -359,9 +613,10 @@ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: d3-interpolate +License: "ISC" -d3-timer -ISC Copyright 2010-2021 Mike Bostock Permission to use, copy, modify, and/or distribute this software for any purpose @@ -376,9 +631,10 @@ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: d3-timer +License: "ISC" -d3-transition -ISC Copyright 2010-2021 Mike Bostock Permission to use, copy, modify, and/or distribute this software for any purpose @@ -393,9 +649,10 @@ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: d3-transition +License: "ISC" -d3-zoom -ISC Copyright 2010-2021 Mike Bostock Permission to use, copy, modify, and/or distribute this software for any purpose @@ -410,233 +667,134 @@ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: d3-ease +License: "BSD-3-Clause" -decode-named-character-reference -MIT -(The MIT License) - -Copyright (c) 2021 Titus Wormer +Copyright 2010-2021 Mike Bostock +Copyright 2001 Robert Penner +All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +* Neither the name of the author nor the names of contributors may be used to + endorse or promote products derived from this software without specific prior + written permission. -devlop -MIT -(The MIT License) +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Copyright (c) 2023 Titus Wormer +-------------------------------------------------------------------------------- +Package: d3-brush +License: "ISC" -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +Copyright 2010-2021 Mike Bostock -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: d3-path +License: "ISC" -estree-util-is-identifier-name -MIT -(The MIT License) +Copyright 2015-2022 Mike Bostock -Copyright (c) 2020 Titus Wormer +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +-------------------------------------------------------------------------------- +Package: d3-format +License: "ISC" -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Copyright 2010-2021 Mike Bostock +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. -extend -MIT -The MIT License (MIT) +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. -Copyright (c) 2014 Stefan Thomas +-------------------------------------------------------------------------------- +Package: d3-scale +License: "ISC" -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +Copyright 2010-2021 Mike Bostock -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: d3-shape +License: "ISC" +Copyright 2010-2022 Mike Bostock -hast-util-to-jsx-runtime -MIT -(The MIT License) +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. -Copyright (c) 2023 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -hast-util-whitespace -MIT -(The MIT License) - -Copyright (c) 2016 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -html-url-attributes -MIT - -immer -MIT -MIT License - -Copyright (c) 2017 Michel Weststrate - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -immutable -MIT -MIT License - -Copyright (c) 2014-present, Lee Byron and other contributors. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -inline-style-parser -MIT -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: d3-zoom +License: "ISC" -internmap -ISC -Copyright 2021 Mike Bostock +Copyright 2010-2021 Mike Bostock Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice @@ -648,1008 +806,255 @@ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. - - -is-plain-obj -MIT -MIT License - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -mdast-util-from-markdown -MIT -(The MIT License) - -Copyright (c) 2020 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -mdast-util-to-hast -MIT -(The MIT License) - -Copyright (c) 2016 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -mdast-util-to-string -MIT -(The MIT License) - -Copyright (c) 2015 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -micromark -MIT - -micromark-core-commonmark -MIT -(The MIT License) - -Copyright (c) Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -micromark-factory-destination -MIT - -micromark-factory-label -MIT - -micromark-factory-space -MIT - -micromark-factory-title -MIT - -micromark-factory-whitespace -MIT - -micromark-util-character -MIT - -micromark-util-chunked -MIT - -micromark-util-classify-character -MIT - -micromark-util-combine-extensions -MIT - -micromark-util-decode-numeric-character-reference -MIT - -micromark-util-decode-string -MIT - -micromark-util-html-tag-name -MIT - -micromark-util-normalize-identifier -MIT - -micromark-util-resolve-all -MIT - -micromark-util-sanitize-uri -MIT - -micromark-util-subtokenize -MIT -(The MIT License) - -Copyright (c) Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -molstar -MIT -The MIT License - - Copyright (c) 2017 - now, Mol* contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -ngx-features-viewer -MIT -MIT License - -Copyright (c) 2024 Damiano Clementel (damiano.clementel@gmail.com), Alessio Del Conte (ale.delconte96@gmail.com), BioComputing UP (biocomp@bio.unipd.it) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -ngx-sequence-viewer - -ngx-structure-viewer -MIT -MIT License - -Copyright (c) 2024 Damiano Clementel (damiano.clementel@gmail.com), Alessio Del Conte (ale.delconte96@gmail.com), BioComputing UP (biocomp@bio.unipd.it) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -property-information -MIT -(The MIT License) - -Copyright (c) 2015 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -react -MIT -MIT License - -Copyright (c) Facebook, Inc. and its affiliates. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -react-dom -MIT -MIT License - -Copyright (c) Facebook, Inc. and its affiliates. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -react-markdown -MIT -The MIT License (MIT) - -Copyright (c) 2015 Espen Hovlandsdal - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -remark-parse -MIT -(The MIT License) - -Copyright (c) 2014 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -remark-rehype -MIT -(The MIT License) - -Copyright (c) 2016 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -rxjs -Apache-2.0 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - -scheduler -MIT -MIT License - -Copyright (c) Facebook, Inc. and its affiliates. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -space-separated-tokens -MIT -(The MIT License) - -Copyright (c) 2016 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -style-to-object -MIT -The MIT License (MIT) - -Copyright (c) 2017 Menglin "Mark" Xu - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -trim-lines -MIT -(The MIT License) - -Copyright (c) 2015 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -trough -MIT -(The MIT License) - -Copyright (c) 2016 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -tslib -0BSD -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -unified -MIT -(The MIT License) - -Copyright (c) 2015 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -unist-util-is -MIT -(The MIT license) - -Copyright (c) 2015 Titus Wormer - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +THIS SOFTWARE. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Package: @angular/core +License: "MIT" -unist-util-position -MIT -(The MIT License) +-------------------------------------------------------------------------------- +Package: @angular/common +License: "MIT" -Copyright (c) 2015 Titus Wormer -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +-------------------------------------------------------------------------------- +Package: @angular/platform-browser +License: "MIT" -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Package: @angular/router +License: "MIT" -unist-util-stringify-position -MIT -(The MIT License) +-------------------------------------------------------------------------------- +Package: rxjs +License: "Apache-2.0" -Copyright (c) 2016 Titus Wormer + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. + 1. Definitions. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. -unist-util-visit -MIT -(The MIT License) + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. -Copyright (c) 2015 Titus Wormer + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. -unist-util-visit-parents -MIT -(The MIT License) + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." -Copyright (c) 2016 Titus Wormer + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and -vfile -MIT -(The MIT License) + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and -Copyright (c) 2015 Titus Wormer + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -vfile-message -MIT -(The MIT License) + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. -Copyright (c) 2017 Titus Wormer + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. + END OF TERMS AND CONDITIONS -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + APPENDIX: How to apply the Apache License to your work. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -xhr2 -MIT -Copyright (c) 2013 Victor Costan + Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + http://www.apache.org/licenses/LICENSE-2.0 -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +-------------------------------------------------------------------------------- +Package: tslib +License: "0BSD" + +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: zone.js +License: "MIT" -zone.js -MIT The MIT License Copyright (c) 2010-2024 Google LLC. https://angular.io/license @@ -1671,3 +1076,5 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-------------------------------------------------------------------------------- diff --git a/docs/509.ec6a8d82178da6d9.js b/docs/509.ec6a8d82178da6d9.js deleted file mode 100644 index e0e18ca..0000000 --- a/docs/509.ec6a8d82178da6d9.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkdemo_showcase=self.webpackChunkdemo_showcase||[]).push([[509],{5621:(tn,Ue,n)=>{"use strict";n.d(Ue,{z:()=>zg});var e={};n.r(e),n.d(e,{AssignColorVolume:()=>L,DownloadDensity:()=>T});var t,oe,o=n(958),r=n(467);(oe=t||(t={})).create=function x(z){return z},oe.getDuration=function F(z,me){var Pe,Ge;if(me.customDurationMs)return me.customDurationMs;const Xe=null===(Ge=(Pe=me.definition).getDuration)||void 0===Ge?void 0:Ge.call(Pe,me.params,z);return"fixed"===Xe?.kind?Xe.durationMs:void 0};var A=n(381),y=n(1073),c=n(1832),i=n(6763),v=n(8277);const O=t.create({name:"built-in.animate-assembly-unwind",display:{name:"Unwind Assembly"},isExportable:!0,params:oe=>{const x=[["all","All"]],F=oe.state.data.select(c.QX.Generators.rootsOfType(A.O.Molecule.Structure));for(const z of F)x.push([z.transform.ref,z.obj.data.models[0].label]);return{durationInMs:v.t.Numeric(3e3,{min:100,max:1e4,step:100}),playOnce:v.t.Boolean(!1),target:v.t.Select(x[0][0],x)}},canApply:oe=>({canApply:oe.state.data.select(c.QX.Generators.ofType(A.O.Molecule.Structure.Representation3D,c.Cn.RootRef)).length>0}),getDuration:oe=>({kind:"fixed",durationMs:oe.durationInMs}),initialState:()=>({t:0}),setup(oe,x,F){const z=F.state.data,Pe=z.select(c.QX.Generators.ofType(A.O.Molecule.Structure.Representation3D,oe.target&&"all"!==oe.target?oe.target:c.Cn.RootRef)),Ge=z.build();let Xe=!1;for(const Qe of Pe)z.select(c.QX.Generators.ofTransformer(y.f.Representation.UnwindStructureAssemblyRepresentation3D,Qe.transform.ref)).length>0||(Xe=!0,Ge.to(Qe).apply(y.f.Representation.UnwindStructureAssemblyRepresentation3D,{t:0},{tags:"animate-assembly-unwind"}));if(Xe)return Ge.commit({doNotUpdateCurrent:!0})},teardown(oe,x,F){const z=F.state.data,me=z.select(c.QX.Generators.ofType(A.O.Molecule.Structure.Representation3DState).withTag("animate-assembly-unwind"));if(0===me.length)return;const Pe=z.build();for(const Ge of me)Pe.delete(Ge.transform.ref);return Pe.commit()},apply:(oe,x,F)=>(0,r.A)(function*(){const z=F.plugin.state.data,Pe=z.select(c.QX.Generators.ofTransformer(y.f.Representation.UnwindStructureAssemblyRepresentation3D,F.params.target&&"all"!==F.params.target?F.params.target:c.Cn.RootRef));if(0===Pe.length)return{kind:"finished"};const Ge=z.build();let Qe=oe.t+(x.current-x.lastApplied)/F.params.durationInMs,lt=!1;F.params.playOnce&&Qe>=1?(lt=!0,Qe=1):Qe%=1;for(const ft of Pe)Ge.to(ft).update({t:Qe});return yield i.a.State.Update(F.plugin,{state:z,tree:Ge,options:{doNotLogTiming:!0}}),lt?{kind:"finished"}:{kind:"next",state:{t:Qe}}})()});var b=n(127),_=n(5126),M=n(2086);const I=(0,M.e)(),l=(0,M.e)(),m=(0,_.k)(),u=t.create({name:"built-in.animate-camera-spin",display:{name:"Camera Spin",description:"Spin the 3D scene around the x-axis in view space"},isExportable:!0,params:()=>({durationInMs:v.t.Numeric(4e3,{min:100,max:2e4,step:100}),speed:v.t.Numeric(1,{min:1,max:10,step:1},{description:"How many times to spin in the specified duration."}),direction:v.t.Select("cw",[["cw","Clockwise"],["ccw","Counter Clockwise"]],{cycle:!0})}),initialState:(oe,x)=>{var F;return{snapshot:null===(F=x.canvas3d)||void 0===F?void 0:F.camera.getSnapshot()}},getDuration:oe=>({kind:"fixed",durationMs:oe.durationInMs}),teardown:(oe,x,F)=>{var z;null===(z=F.canvas3d)||void 0===z||z.requestCameraReset({snapshot:x.snapshot,durationMs:0})},apply:(oe,x,F)=>(0,r.A)(function*(){var z,me;if(0===x.current)return{kind:"next",state:oe};const Pe=oe.snapshot;if(Pe.radiusMax<1e-4)return{kind:"finished"};const Ge=x.animation?(null===(z=x.animation)||void 0===z?void 0:z.currentFrame)/(x.animation.frameCount+1):(0,b.qE)(x.current/F.params.durationInMs,0,1),Xe=2*Math.PI*Ge*F.params.speed*("ccw"===F.params.direction?-1:1);M.e.sub(I,Pe.position,Pe.target),M.e.normalize(l,Pe.up),_.k.setAxisAngle(m,l,Xe),M.e.transformQuat(I,I,m);const Qe=M.e.add((0,M.e)(),Pe.target,I);return null===(me=F.plugin.canvas3d)||void 0===me||me.requestCameraReset({snapshot:{...Pe,position:Qe},durationMs:0}),Ge>=.99999?{kind:"finished"}:{kind:"next",state:oe}})()}),d=t.create({name:"built-in.animate-model-index",display:{name:"Animate Trajectory"},isExportable:!0,params:()=>({mode:v.t.MappedStatic("loop",{palindrome:v.t.Group({}),loop:v.t.Group({direction:v.t.Select("forward",[["forward","Forward"],["backward","Backward"]])}),once:v.t.Group({direction:v.t.Select("forward",[["forward","Forward"],["backward","Backward"]])},{isFlat:!0})},{options:[["palindrome","Palindrome"],["loop","Loop"],["once","Once"]]}),duration:v.t.MappedStatic("fixed",{fixed:v.t.Group({durationInS:v.t.Numeric(5,{min:1,max:120,step:.1},{description:"Duration in seconds"})},{isFlat:!0}),computed:v.t.Group({targetFps:v.t.Numeric(30,{min:5,max:250,step:1},{label:"Target FPS"})},{isFlat:!0}),sequential:v.t.Group({maxFps:v.t.Numeric(30,{min:5,max:60,step:1})},{isFlat:!0})})}),canApply(oe){const x=oe.state.data,F=x.select(c.QX.Generators.ofTransformer(y.f.Model.ModelFromTrajectory));for(const z of F){const me=c.QX.findAncestorOfType(x.tree,x.cells,z.transform.ref,A.O.Molecule.Trajectory);if(me&&me.obj&&me.obj.data.frameCount>1)return{canApply:!0}}return{canApply:!1,reason:"No trajectory to animate"}},getDuration:(oe,x)=>{var F;if("fixed"===(null===(F=oe.duration)||void 0===F?void 0:F.name))return{kind:"fixed",durationMs:1e3*oe.duration.params.durationInS};if("computed"===oe.duration.name){const z=x.state.data,me=z.select(c.QX.Generators.ofTransformer(y.f.Model.ModelFromTrajectory));let Pe=0;for(const Ge of me){const Xe=c.QX.findAncestorOfType(z.tree,z.cells,Ge.transform.ref,A.O.Molecule.Trajectory);Xe&&Xe.obj&&(Pe=Math.max(Math.ceil(1e3*Xe.obj.data.frameCount/oe.duration.params.targetFps),Pe))}return{kind:"fixed",durationMs:Pe}}return{kind:"unknown"}},initialState:()=>({}),apply:(oe,x,F)=>(0,r.A)(function*(){if("sequential"===F.params.duration.name&&x.current>0&&x.current-x.lastApplied<1e3/F.params.duration.params.maxFps)return{kind:"skip"};const z=F.plugin.state.data,me=z.select(c.QX.Generators.ofTransformer(y.f.Model.ModelFromTrajectory));if(0===me.length)return{kind:"finished"};const Pe=z.build(),Ge=F.params,Xe=oe.palindromeDirections||{};let Qe=!1,lt=!0;for(const ft of me){const wt=c.QX.findAncestorOfType(z.tree,z.cells,ft.transform.ref,A.O.Molecule.Trajectory);if(!wt||!wt.obj)continue;const Ut=wt.obj;Ut.data.frameCount<=1||Pe.to(ft).update(Jt=>{const gn=Ut.data.frameCount;if(1===gn)return Jt;if(lt=!1,"sequential"===Ge.duration.name){let Pn=1;if("once"===Ge.mode.name){if(Pn="backward"===Ge.mode.params.direction?-1:1,-1===Pn&&0===Jt.modelIndex||1===Pn&&Jt.modelIndex===gn-1)return Qe=!0,Jt}else"palindrome"===Ge.mode.name&&(Pn=0===Jt.modelIndex?1:Jt.modelIndex===gn-1?-1:Xe[ft.transform.ref]||1);Xe[ft.transform.ref]=Pn;let wn=(Jt.modelIndex+Pn)%gn;return wn<0&&(wn+=gn),Qe=Qe||-1===Pn&&0===wn||1===Pn&&wn===gn-1,{modelIndex:wn}}{const Pn="fixed"===Ge.duration.name?1e3*Ge.duration.params.durationInS:Math.ceil(1e3*Ut.data.frameCount/Ge.duration.params.targetFps);if("once"===Ge.mode.name&&x.current>=Pn)return Qe=!0,{modelIndex:Ut.data.frameCount-1};let wn=x.current%Pn/Pn;return"loop"===Ge.mode.name&&"backward"===Ge.mode.params.direction&&(wn=1-wn),"palindrome"===Ge.mode.name&&(wn*=2,wn>1&&(wn=2-wn)),{modelIndex:Math.min(Math.floor(Ut.data.frameCount*wn),Ut.data.frameCount-1)}}})}return lt||(yield i.a.State.Update(F.plugin,{state:z,tree:Pe,options:{doNotLogTiming:!0}})),lt||"once"===Ge.mode.name&&Qe?{kind:"finished"}:"palindrome"===Ge.mode.name?{kind:"next",state:{palindromeDirections:Xe}}:{kind:"next",state:{}}})()});function s(oe,x){return C.apply(this,arguments)}function C(){return C=(0,r.A)(function*(oe,x,F=!1){var z,me,Pe,Ge;x.snapshot.data&&(yield oe.runTask(oe.state.data.setSnapshot(x.snapshot.data)),null===(z=oe.canvas3d)||void 0===z||z.setProps({trackball:null===(Pe=null===(me=x.snapshot.canvas3d)||void 0===me?void 0:me.props)||void 0===Pe?void 0:Pe.trackball})),x.snapshot.camera&&(null===(Ge=oe.canvas3d)||void 0===Ge||Ge.requestCameraReset({snapshot:x.snapshot.camera.current,durationMs:F||"instant"===x.snapshot.camera.transitionStyle?0:x.snapshot.camera.transitionDurationInMs}))}),C.apply(this,arguments)}const h=t.create({name:"built-in.animate-state-snapshots",display:{name:"State Snapshots"},isExportable:!0,params:()=>({}),canApply(oe){const x=oe.managers.snapshot.state.entries;return x.size<2?{canApply:!1,reason:"At least 2 states required."}:x.some(F=>!!F?.snapshot.startAnimation)?{canApply:!1,reason:"Nested animations not supported."}:{canApply:oe.managers.snapshot.state.entries.size>1}},setup(oe,x,F){const z=F.managers.snapshot.state.entries.get(0);s(F,z,!0)},getDuration:(oe,x)=>({kind:"fixed",durationMs:x.managers.snapshot.state.entries.toArray().reduce((F,z)=>{var me;return F+(null!==(me=z.snapshot.durationInMs)&&void 0!==me?me:0)},0)}),initialState:(oe,x)=>{const F=x.managers.snapshot.state.entries.toArray();return{totalDuration:F.reduce((z,me)=>{var Pe;return z+(null!==(Pe=me.snapshot.durationInMs)&&void 0!==Pe?Pe:0)},0),snapshots:F,currentIndex:0}},apply:(oe,x,F)=>(0,r.A)(function*(){var z;if(x.current>=oe.totalDuration)return{kind:"finished"};let me=0,Pe=0;for(const Ge of oe.snapshots){if(me+=null!==(z=Ge.snapshot.durationInMs)&&void 0!==z?z:0,x.current=oe.snapshots.length?{kind:"finished"}:Pe===oe.currentIndex?{kind:"skip"}:(yield s(F.plugin,oe.snapshots[Pe]),{kind:"next",state:{...oe,currentIndex:Pe}})})()});var a=n(4987),S=n(445),D=n(1732),R=n(4824),f=n(675),p=n(1861),E=n(1372);const T=c.KW.build({from:A.O.Root,display:{name:"Download Density",description:"Load a density from the provided source and create its default visual."},params:(oe,x)=>{const{options:F}=x.dataFormats;return{source:v.t.MappedStatic("pdb-xray",{"pdb-xray":v.t.Group({provider:v.t.Group({id:v.t.Text("1tqn",{label:"Id"}),server:v.t.Select("rcsb",[["pdbe","PDBe"],["rcsb","RCSB PDB"]])},{pivot:"id"}),type:v.t.Select("2fofc",[["2fofc","2Fo-Fc"],["fofc","Fo-Fc"]])},{isFlat:!0}),"pdb-xray-ds":v.t.Group({provider:v.t.Group({id:v.t.Text("1tqn",{label:"Id"}),server:v.t.Select("pdbe",[["pdbe","PDBe"],["rcsb","RCSB PDB"]])},{pivot:"id"}),detail:v.t.Numeric(3,{min:0,max:6,step:1},{label:"Detail"})},{isFlat:!0}),"pdb-emd-ds":v.t.Group({provider:v.t.Group({id:v.t.Text("emd-8004",{label:"Id"}),server:v.t.Select("pdbe",[["pdbe","PDBe"],["rcsb","RCSB PDB"]])},{pivot:"id"}),detail:v.t.Numeric(3,{min:0,max:6,step:1},{label:"Detail"})},{isFlat:!0}),url:v.t.Group({url:v.t.Url(""),isBinary:v.t.Boolean(!1),format:v.t.Select("auto",F)},{isFlat:!0})},{options:[["pdb-xray","PDB X-ray maps"],["pdb-emd-ds","PDB EMD Density Server"],["pdb-xray-ds","PDB X-ray Density Server"],["url","URL"]]})}}})(({params:oe},x)=>R.YZ.create("Download Density",function(){var F=(0,r.A)(function*(z){var me,Pe;const Ge=oe.source;let Xe,Qe;switch(Ge.name){case"url":Xe=Ge.params;break;case"pdb-xray":Xe="pdbe"===Ge.params.provider.server?{url:p.V.Url("2fofc"===Ge.params.type?`https://www.ebi.ac.uk/pdbe/coordinates/files/${Ge.params.provider.id.toLowerCase()}.ccp4`:`https://www.ebi.ac.uk/pdbe/coordinates/files/${Ge.params.provider.id.toLowerCase()}_diff.ccp4`),isBinary:!0,label:`PDBe X-ray map: ${Ge.params.provider.id}`}:{url:p.V.Url("2fofc"===Ge.params.type?`https://edmaps.rcsb.org/maps/${Ge.params.provider.id.toLowerCase()}_2fofc.dsn6`:`https://edmaps.rcsb.org/maps/${Ge.params.provider.id.toLowerCase()}_fofc.dsn6`),isBinary:!0,label:`RCSB X-ray map: ${Ge.params.provider.id}`};break;case"pdb-emd-ds":Xe="pdbe"===Ge.params.provider.server?{url:p.V.Url(`https://www.ebi.ac.uk/pdbe/densities/emd/${Ge.params.provider.id.toLowerCase()}/cell?detail=${Ge.params.detail}`),isBinary:!0,label:`PDBe EMD Density Server: ${Ge.params.provider.id}`}:{url:p.V.Url(`https://maps.rcsb.org/em/${Ge.params.provider.id.toLowerCase()}/cell?detail=${Ge.params.detail}`),isBinary:!0,label:`RCSB PDB EMD Density Server: ${Ge.params.provider.id}`};break;case"pdb-xray-ds":Xe="pdbe"===Ge.params.provider.server?{url:p.V.Url(`https://www.ebi.ac.uk/pdbe/densities/x-ray/${Ge.params.provider.id.toLowerCase()}/cell?detail=${Ge.params.detail}`),isBinary:!0,label:`PDBe X-ray Density Server: ${Ge.params.provider.id}`}:{url:p.V.Url(`https://maps.rcsb.org/x-ray/${Ge.params.provider.id.toLowerCase()}/cell?detail=${Ge.params.detail}`),isBinary:!0,label:`RCSB PDB X-ray Density Server: ${Ge.params.provider.id}`};break;default:(0,E.dr)(Ge)}const lt=yield x.builders.data.download(Xe);let ft;switch(Ge.name){case"url":Xe=Ge.params,Qe="auto"===Ge.params.format?x.dataFormats.auto((0,f.o)(p.V.getUrl(Xe.url)),null===(me=lt.cell)||void 0===me?void 0:me.obj):x.dataFormats.get(Ge.params.format);break;case"pdb-xray":ft=Ge.params.provider.id,Qe=x.dataFormats.get("pdbe"===Ge.params.provider.server?"ccp4":"dsn6");break;case"pdb-emd-ds":case"pdb-xray-ds":ft=Ge.params.provider.id,Qe=x.dataFormats.get("dscif");break;default:(0,E.dr)(Ge)}if(!Qe)return void x.log.warn("DownloadDensity: Format provider not found.");const wt=yield Qe.parse(x,lt,{entryId:ft});yield null===(Pe=Qe.visuals)||void 0===Pe?void 0:Pe.call(Qe,x,wt)});return function(z){return F.apply(this,arguments)}}())),L=c.KW.build({display:{name:"Assign Volume Colors",description:"Assigns another volume to be available for coloring."},from:A.O.Volume.Data,isApplicable:oe=>!oe.data.colorVolume,params(oe,x){const F=x.state.data.select(c.QX.Generators.root.subtree().ofType(A.O.Volume.Data).filter(z=>{var me;return!(!z.obj||null!==(me=z.obj)&&void 0!==me&&me.data.colorVolume||z.obj===oe)}));return 0===F.length?{ref:v.t.Text("",{isHidden:!0,label:"Volume"})}:{ref:v.t.Select(F[0].transform.ref,F.map(z=>[z.transform.ref,z.obj.label]),{label:"Volume"})}}})(({ref:oe,params:x},z)=>z.build().to(oe).apply(y.f.Volume.AssignColorVolume,{ref:x.ref},{dependsOn:[x.ref]}).commit());var w=n(6511);const Q={Structure:D,Volume:e,DataFormat:w};var G=n(9909);const V=t.create({name:"built-in.animate-state-interpolation",display:{name:"Animate State (experimental)"},params:()=>({transtionDurationInMs:v.t.Numeric(2e3,{min:100,max:3e4,step:10})}),canApply:oe=>({canApply:oe.managers.snapshot.state.entries.size>1}),initialState:()=>({}),apply:(oe,x,F)=>(0,r.A)(function*(){const z=F.plugin.managers.snapshot.state.entries;if(z.size<2)return{kind:"finished"};const me=x.current%F.params.transtionDurationInMs/F.params.transtionDurationInMs,Pe=Math.floor(x.current/F.params.transtionDurationInMs)%z.size;let Ge=Math.ceil(x.current/F.params.transtionDurationInMs);Ge===Pe&&Ge++,Ge%=z.size;const Xe=z.get(Pe).snapshot,Qe=z.get(Ge).snapshot;if(!Xe.data||!Qe.data)return{kind:"skip"};const lt=Xe.data.tree.transforms,ft=Qe.data.tree.transforms,wt=F.plugin.state.data,Ut=wt.build();for(const Jt of lt)for(const gn of ft){if(gn.ref!==Jt.ref||gn.version===Jt.version)continue;const Pn=c.Cn.fromJSON(Jt),wn=c.Cn.fromJSON(gn),Bn=wt.cells.get(Jt.ref);if(!Bn)continue;let Mn;Mn=Pn.transformer.definition.interpolate?Pn.transformer.definition.interpolate(Pn.params,wn.params,me,F.plugin):me<=.5?Pn.params:wn.params,(0,G.bN)(Bn,Mn)||Ut.to(Jt.ref).update(Mn)}return yield i.a.State.Update(F.plugin,{state:wt,tree:Ut,options:{doNotLogTiming:!0}}),{kind:"next",state:{}}})()}),U=t.create({name:"built-in.animate-structure-spin",display:{name:"Spin Structure"},isExportable:!0,params:()=>({durationInMs:v.t.Numeric(3e3,{min:100,max:1e4,step:100})}),initialState:()=>({t:0}),getDuration:oe=>({kind:"fixed",durationMs:oe.durationInMs}),setup:(oe,x,F)=>(0,r.A)(function*(){const z=F.state.data,me=z.select(c.QX.Generators.ofType(A.O.Molecule.Structure.Representation3D)),Pe=z.build();let Ge=!1;for(const Xe of me)z.select(c.QX.Generators.ofTransformer(y.f.Representation.SpinStructureRepresentation3D,Xe.transform.ref)).length>0||(Ge=!0,Pe.to(Xe.transform.ref).apply(y.f.Representation.SpinStructureRepresentation3D,{t:0},{tags:"animate-structure-spin"}));if(Ge)return Pe.commit({doNotUpdateCurrent:!0})})(),teardown(oe,x,F){const z=F.state.data,me=z.select(c.QX.Generators.ofType(A.O.Molecule.Structure.Representation3DState).withTag("animate-structure-spin"));if(0===me.length)return;const Pe=z.build();for(const Ge of me)Pe.delete(Ge.transform.ref);return Pe.commit()},apply:(oe,x,F)=>(0,r.A)(function*(){var z;const me=F.plugin.state.data,Pe=me.select(c.QX.Generators.ofTransformer(y.f.Representation.SpinStructureRepresentation3D));if(0===Pe.length)return{kind:"finished"};const Ge=me.build(),Qe=(oe.t+(x.current-x.lastApplied)/F.params.durationInMs)%1;for(const lt of Pe)Ge.to(lt).update({...null===(z=lt.params)||void 0===z?void 0:z.values,t:Qe});return yield i.a.State.Update(F.plugin,{state:me,tree:Ge,options:{doNotLogTiming:!0}}),{kind:"next",state:{t:Qe}}})()});var N=n(4490);const k=(0,M.e)(),H=(0,M.e)(),$=(0,_.k)(),J=t.create({name:"built-in.animate-camera-rock",display:{name:"Camera Rock",description:"Rock the 3D scene around the x-axis in view space"},isExportable:!0,params:()=>({durationInMs:v.t.Numeric(4e3,{min:100,max:2e4,step:100}),speed:v.t.Numeric(1,{min:1,max:10,step:1},{description:"How many times to rock from side to side."}),angle:v.t.Numeric(10,{min:0,max:180,step:1},{description:"How many degrees to rotate in each direction."})}),initialState:(oe,x)=>({snapshot:x.canvas3d.camera.getSnapshot()}),getDuration:oe=>({kind:"fixed",durationMs:oe.durationInMs}),teardown:(oe,x,F)=>{var z;null===(z=F.canvas3d)||void 0===z||z.requestCameraReset({snapshot:x.snapshot,durationMs:0})},apply:(oe,x,F)=>(0,r.A)(function*(){var z,me;if(0===x.current)return{kind:"next",state:oe};const Pe=oe.snapshot;if(Pe.radiusMax<1e-4)return{kind:"finished"};const Ge=x.animation?(null===(z=x.animation)||void 0===z?void 0:z.currentFrame)/(x.animation.frameCount+1):(0,b.qE)(x.current/F.params.durationInMs,0,1),Xe=Math.sin(Ge*F.params.speed*Math.PI*2)*(0,N.pu)(F.params.angle);M.e.sub(k,Pe.position,Pe.target),M.e.normalize(H,Pe.up),_.k.setAxisAngle($,H,Xe),M.e.transformQuat(k,k,$);const Qe=M.e.add((0,M.e)(),Pe.target,k);return null===(me=F.plugin.canvas3d)||void 0===me||me.requestCameraReset({snapshot:{...Pe,position:Qe},durationMs:0}),Ge>=.99999?{kind:"finished"}:{kind:"next",state:oe}})()});var W;!function(oe){oe.Action=function x(z,me){return{action:z,customControl:me&&me.customControl,autoUpdate:me&&me.autoUpdate}},oe.Behavior=function F(z,me={}){return{transformer:z,defaultParams:me}}}(W||(W={}));var de=n(9619),ye=n(1133),j=n(6230),Z=n(3584),q=n(7561),Y=n(7788),ee=n(6853),g=n(4369),_e=n(2745),xe=n(229),le=n(1827),Ae=n(9611);const Be={color:v.t.Color(_e.s.black,{description:"Display color of the volume."}),wireframe:v.t.Boolean(!1,{description:"Control display of the volume as a wireframe."}),opacity:v.t.Numeric(.3,{min:0,max:1,step:.01},{description:"Opacity of the volume."})},Ce=new Map([["em",[-5,5]],["2fo-fc",[0,3]],["fo-fc(+ve)",[1,5]],["fo-fc(-ve)",[-5,-1]]]);class Re extends ye.dL{constructor(){super(...arguments),this.ref=c.QX.findTagInSubtree(this.plugin.state.data.tree,this.props.bCell.transform.ref,this.props.name),this.getVisible=()=>{const F=this.ref;return!!F&&!this.plugin.state.data.cells.get(F).state.isHidden},this.toggleVisible=()=>{const x=this.plugin.state.data,F=this.ref;F&&(0,le.setSubtreeVisibility)(x,F,!x.cells.get(F).state.isHidden)}}componentDidUpdate(){this.ref=c.QX.findTagInSubtree(this.plugin.state.data.tree,this.props.bCell.transform.ref,this.props.name)}componentDidMount(){this.subscribe(this.plugin.state.data.events.cell.stateUpdated,x=>{this.ref===x.ref&&this.forceUpdate()})}render(){const x=this.props,{isRelative:F,stats:z}=x,me=x.channels[x.name],{min:Pe,max:Ge,mean:Xe,sigma:Qe}=z,lt=Math.round(100*("relative"===me.isoValue.kind?me.isoValue.relativeValue:me.isoValue.absoluteValue))/100;let ft=(Pe-Xe)/Qe,wt=(Ge-Xe)/Qe;if(!this.props.isUnbounded){const Bn=Ce.get(this.props.name);"em"===this.props.name?(ft=Math.max(Bn[0],ft),wt=Math.min(Bn[1],wt)):(ft=Bn[0],wt=Bn[1])}const Ut=Xe+Qe*ft,Jt=Xe+Qe*wt,gn=(0,xe.QX)(F?Math.round((Jt-Ut)/Qe)/100:Qe/100,2);return(0,de.jsx)(Z.U2,{label:x.label+(x.isRelative?" \u03c3":""),colorStripe:me.color,pivot:(0,de.jsxs)("div",{className:"msp-volume-channel-inline-controls",children:[(0,de.jsx)(Y.Ap,{value:lt,min:F?ft:Ut,max:F?wt:Jt,step:gn,onChange:Bn=>x.changeIso(x.name,Bn,F),onChangeImmediate:Bn=>x.changeIso(x.name,Bn,F),disabled:x.params.isDisabled,onEnter:x.params.events.onEnter}),(0,de.jsx)(Z.K0,{svg:this.getVisible()?Ae.zs:Ae.qF,onClick:this.toggleVisible,toggleState:!1,disabled:x.params.isDisabled})]}),controls:(0,de.jsx)(q.y1,{onChange:({name:Bn,value:Mn})=>x.changeParams(x.name,Bn,Mn),params:Be,values:me,onEnter:x.params.events.onEnter,isDisabled:x.params.isDisabled})})}}class ke extends ye.dL{constructor(){super(...arguments),this.changeIso=(x,F,z)=>{const me=this.props.params;this.newParams({...me,entry:{name:me.entry.name,params:{...me.entry.params,channels:{...me.entry.params.channels,[x]:{...me.entry.params.channels[x],isoValue:z?ee.f.IsoValue.relative(F):ee.f.IsoValue.absolute(F)}}}}})},this.changeParams=(x,F,z)=>{const me=this.props.params;this.newParams({...me,entry:{name:me.entry.name,params:{...me.entry.params,channels:{...me.entry.params.channels,[x]:{...me.entry.params.channels[x],[F]:z}}}}})},this.changeOption=({name:x,value:F})=>{const z=this.props.params;if("entry"===x)this.newParams({...z,entry:{name:F,params:z.entry.params}});else{const me=this.props.b.data,Pe="em"===me.info.kind,Ge=F.params.isRelative,Xe=me.info.header.sampling[0],Qe=z.entry.params.channels,ft={...z.entry.params.view.name===F.name?z.entry.params.view.params:this.props.info.params.entry.map(z.entry.name).params.view.map(F.name).defaultValue};"selection-box"===F.name?ft.radius=F.params.radius:"camera-target"===F.name?(ft.radius=F.params.radius,ft.dynamicDetailLevel=F.params.dynamicDetailLevel):"box"===F.name?(ft.bottomLeft=F.params.bottomLeft,ft.topRight=F.params.topRight):"auto"===F.name&&(ft.radius=F.params.radius,ft.selectionDetailLevel=F.params.selectionDetailLevel),ft.isUnbounded=!!F.params.isUnbounded,this.newParams({...z,entry:{name:z.entry.name,params:{...z.entry.params,view:{name:F.name,params:ft},detailLevel:F.params.detailLevel,channels:Pe?{em:this.convert(Qe.em,Xe.valuesInfo[0],Ge)}:{"2fo-fc":this.convert(Qe["2fo-fc"],Xe.valuesInfo[0],Ge),"fo-fc(+ve)":this.convert(Qe["fo-fc(+ve)"],Xe.valuesInfo[1],Ge),"fo-fc(-ve)":this.convert(Qe["fo-fc(-ve)"],Xe.valuesInfo[1],Ge)}}}})}}}areInitial(x){return v.t.areEqual(this.props.info.params,x,this.props.info.initialValues)}newParams(x){this.props.events.onChange(x,this.areInitial(x))}convert(x,F,z){return{...x,isoValue:z?ee.f.IsoValue.toRelative(x.isoValue,F):ee.f.IsoValue.toAbsolute(x.isoValue,F)}}render(){if(!this.props.b)return null;const x=this.props.b.data,F="em"===x.info.kind,z=F?"em":"2fo-fc",me=this.props.params,Pe=this.props.info.params.entry.map(me.entry.name),Ge=Pe.params.detailLevel,Xe={...Ge,label:"Dynamic Detail",defaultValue:Pe.params.view.map("camera-target").params.dynamicDetailLevel.defaultValue},Qe={...Ge,label:"Selection Detail",defaultValue:Pe.params.view.map("auto").params.selectionDetailLevel.defaultValue},lt=x.info.header.sampling[0],ft="relative"===me.entry.params.channels[z].isoValue.kind,wt=v.t.Boolean(ft,{description:"Use normalized or absolute isocontour scale.",label:"Normalized"}),Ut=!!me.entry.params.view.params.isUnbounded,Jt=v.t.Boolean(Ut,{description:"Show full/limited range of iso-values for more fine-grained control.",label:"Unbounded"}),gn="off"===me.entry.params.view.name,Pn={entry:v.t.Select(me.entry.name,x.data.entries.map(Bn=>[Bn.dataId,Bn.dataId]),{isHidden:gn,description:"Which entry with volume data to display."}),view:v.t.MappedStatic(me.entry.params.view.name,{off:v.t.Group({isRelative:v.t.Boolean(ft,{isHidden:!0}),isUnbounded:v.t.Boolean(Ut,{isHidden:!0})},{description:"Display off."}),box:v.t.Group({bottomLeft:v.t.Vec3(g.eB.zero()),topRight:v.t.Vec3(g.eB.zero()),detailLevel:Ge,isRelative:wt,isUnbounded:Jt},{description:"Static box defined by cartesian coords."}),"selection-box":v.t.Group({radius:v.t.Numeric(5,{min:0,max:50,step:.5},{description:"Radius in \u212b within which the volume is shown."}),detailLevel:Ge,isRelative:wt,isUnbounded:Jt},{description:"Box around focused element."}),"camera-target":v.t.Group({radius:v.t.Numeric(.5,{min:0,max:1,step:.05},{description:"Radius within which the volume is shown (relative to the field of view)."}),detailLevel:{...Ge,isHidden:!0},dynamicDetailLevel:Xe,isRelative:wt,isUnbounded:Jt},{description:"Box around camera target."}),cell:v.t.Group({detailLevel:Ge,isRelative:wt,isUnbounded:Jt},{description:"Box around the structure's bounding box."}),auto:v.t.Group({radius:v.t.Numeric(5,{min:0,max:50,step:.5},{description:"Radius in \u212b within which the volume is shown."}),detailLevel:Ge,selectionDetailLevel:Qe,isRelative:wt,isUnbounded:Jt},{description:"Box around focused element."})},{options:j.h.ViewTypeOptions,description:'Controls what of the volume is displayed. "Off" hides the volume alltogether. "Bounded box" shows the volume inside the given box. "Around Focus" shows the volume around the element/atom last interacted with. "Around Camera" shows the volume around the point the camera is targeting. "Whole Structure" shows the volume for the whole structure.'})},wn={entry:me.entry.name,view:{name:me.entry.params.view.name,params:{detailLevel:me.entry.params.detailLevel,radius:me.entry.params.view.params.radius,bottomLeft:me.entry.params.view.params.bottomLeft,topRight:me.entry.params.view.params.topRight,selectionDetailLevel:me.entry.params.view.params.selectionDetailLevel,dynamicDetailLevel:me.entry.params.view.params.dynamicDetailLevel,isRelative:ft,isUnbounded:Ut}}};return gn?(0,de.jsx)(q.y1,{onChange:this.changeOption,params:Pn,values:wn,onEnter:this.props.events.onEnter,isDisabled:this.props.isDisabled}):(0,de.jsxs)(de.Fragment,{children:[!F&&(0,de.jsx)(Re,{label:"2Fo-Fc",name:"2fo-fc",bCell:this.props.bCell,channels:me.entry.params.channels,changeIso:this.changeIso,changeParams:this.changeParams,isRelative:ft,params:this.props,stats:lt.valuesInfo[0],isUnbounded:Ut}),!F&&(0,de.jsx)(Re,{label:"Fo-Fc(+ve)",name:"fo-fc(+ve)",bCell:this.props.bCell,channels:me.entry.params.channels,changeIso:this.changeIso,changeParams:this.changeParams,isRelative:ft,params:this.props,stats:lt.valuesInfo[1],isUnbounded:Ut}),!F&&(0,de.jsx)(Re,{label:"Fo-Fc(-ve)",name:"fo-fc(-ve)",bCell:this.props.bCell,channels:me.entry.params.channels,changeIso:this.changeIso,changeParams:this.changeParams,isRelative:ft,params:this.props,stats:lt.valuesInfo[1],isUnbounded:Ut}),F&&(0,de.jsx)(Re,{label:"EM",name:"em",bCell:this.props.bCell,channels:me.entry.params.channels,changeIso:this.changeIso,changeParams:this.changeParams,isRelative:ft,params:this.props,stats:lt.valuesInfo[0],isUnbounded:Ut}),(0,de.jsx)(q.y1,{onChange:this.changeOption,params:Pn,values:wn,onEnter:this.props.events.onEnter,isDisabled:this.props.isDisabled})]})}}var ue,Oe=n(1025),Se=n(39),Ve=n(7786),Ne=n(152),K=n(3386),ne=n(5964),be=n(6697),Te=n(3177),ie=n(6345);!function(oe){oe.Registry=class x{constructor(){this.providers=(0,Se.uY)().asMutable(),this.defaultAutoAttachValues=new Map}getParams(z){const me={},Pe=[],Ge=[];if(z){const Xe=this.providers.values();for(;;){const Qe=Xe.next();if(Qe.done)break;const lt=Qe.value;lt.isApplicable(z)&&(lt.isHidden||(Pe.push([lt.descriptor.name,lt.label]),this.defaultAutoAttachValues.get(lt.descriptor.name)&&Ge.push(lt.descriptor.name)),me[lt.descriptor.name]=v.t.Group({...lt.getParams(z)},{label:lt.label,isHidden:lt.isHidden}))}}return{autoAttach:v.t.MultiSelect(Ge,Pe),properties:v.t.Group(me,{isFlat:!0})}}setDefaultAutoAttach(z,me){this.defaultAutoAttachValues.set(z,me)}get(z){if(!this.providers.get(z))throw new Error(`Custom property '${z}' is not registered.`);return this.providers.get(z)}register(z,me){this.providers.set(z.descriptor.name,z),this.defaultAutoAttachValues.set(z.descriptor.name,me)}unregister(z){this.providers.delete(z),this.defaultAutoAttachValues.delete(z)}}}(ue||(ue={}));var re=n(6990);class ve{get dataState(){return this.plugin.state.data}rawData(x,F){return this.dataState.build().toRoot().apply(re.RawData,x,F).commit({revertOnError:!0})}download(x,F){return this.dataState.build().toRoot().apply(re.Download,x,F).commit({revertOnError:!0})}downloadBlob(x,F){return this.dataState.build().toRoot().apply(re.DownloadBlob,x,F).commit({revertOnError:!0})}readFile(x,F){var z=this;return(0,r.A)(function*(){var me,Pe,Ge;return{data:yield z.dataState.build().toRoot().apply(re.ReadFile,x,F).commit({revertOnError:!0}),fileInfo:(0,f.o)(null!==(Ge=null===(Pe=null===(me=x.file)||void 0===me?void 0:me.file)||void 0===Pe?void 0:Pe.name)&&void 0!==Ge?Ge:"")}})()}constructor(x){this.plugin=x}}var ce=n(8382),se=n(2629),ae=n(9359),ge=n(1893),Ie=n(8010),Le=n(9880),nt=n(6115),je=n(237);class Lt{get dataState(){return this.plugin.state.data}resolveProvider(x){var F;return"string"==typeof x?null!==(F=Le.Bj[x])&&void 0!==F?F:(0,ce.L9)(this._providers,z=>z.id===x):x}hasPreset(x){for(const F of this._providers)if(!F.isApplicable||F.isApplicable(x,this.plugin))return!0;return!1}get providers(){return this._providers}getPresets(x){if(!x)return this.providers;const F=[];for(const z of this._providers)z.isApplicable&&!z.isApplicable(x,this.plugin)||F.push(z);return F}getPresetSelect(x){const F=[];for(const z of this._providers)x&&z.isApplicable&&!z.isApplicable(x,this.plugin)||F.push([z.id,z.display.name,z.display.group]);return v.t.Select("auto",F)}getPresetsWithOptions(x){const F=[],z=Object.create(null);for(const me of this._providers)me.isApplicable&&!me.isApplicable(x,this.plugin)||(F.push([me.id,me.display.name]),z[me.id]=me.params?v.t.Group(me.params(x,this.plugin)):v.t.EmptyGroup());return 0===F.length?v.t.MappedStatic("",{"":v.t.EmptyGroup()}):v.t.MappedStatic(F[0][0],z,{options:F})}registerPreset(x){if(this.providerMap.has(x.id))throw new Error(`Representation provider with id '${x.id}' already registered.`);this._providers.push(x),this.providerMap.set(x.id,x)}unregisterPreset(x){this.providerMap.delete(x.id),(0,nt.mO)(this._providers,x)}applyPreset(x,F,z){var me;const Pe=this.resolveProvider(F);if(!Pe)return;const Xe=c.so.resolveAndCheck(this.plugin.state.data,x);if(!Xe)return void(se.Zq||console.warn("Applying structure repr. provider to bad cell."));const Qe=(null===(me=Pe.params)||void 0===me?void 0:me.call(Pe,Xe.obj,this.plugin))||{};let lt=z||(Pe.params?v.t.getDefaultValues(Qe):{});const ft=this.plugin.config.get(je.AB.Structure.DefaultRepresentationPresetParams);lt=v.t.merge(Qe,ft,lt);const wt=R.YZ.create(`${Pe.display.name}`,()=>Pe.apply(Xe,lt,this.plugin));return this.plugin.runTask(wt)}addRepresentation(x,F,z){var me=this;return(0,r.A)(function*(){const Pe=me.dataState.build(),Ge=me.buildRepresentation(Pe,x,F,z);if(Ge)return yield Pe.commit(),Ge})()}buildRepresentation(x,F,z,me){var Pe,Ge;if(!F)return;const Xe=null===(Ge=null===(Pe=c.so.resolveAndCheck(this.dataState,F))||void 0===Pe?void 0:Pe.obj)||void 0===Ge?void 0:Ge.data;if(!Xe)return;const Qe=(0,ge.pQ)(this.plugin,Xe,z);return me?.tag?x.to(F).applyOrUpdateTagged(me.tag,Ie.StructureRepresentation3D,Qe,{state:me?.initialState}).selector:x.to(F).apply(Ie.StructureRepresentation3D,Qe,{state:me?.initialState}).selector}constructor(x){this.plugin=x,this._providers=[],this.providerMap=new Map,this.defaultProvider=Le.Bj.auto,(0,ae.IF)(Le.Bj,F=>this.registerPreset(F))}}var Je=n(9136),en=n(9651),Bt=n(5384),pn=n(1295),$e=n(5589),mt=n(8103);function _t(oe){return oe}!function(oe){oe.CommonParams=(x,F)=>({modelProperties:v.t.Optional(v.t.Group(c.xE.getParamDefinition(y.f.Model.CustomModelProperties,void 0,F))),structureProperties:v.t.Optional(v.t.Group(c.xE.getParamDefinition(y.f.Model.CustomStructureProperties,void 0,F))),representationPreset:v.t.Optional(v.t.Text("auto"))})}(_t||(_t={}));const Me=_t.CommonParams,ut=_t({id:"preset-trajectory-default",display:{name:"Default (Assembly)",group:"Preset",description:"Shows the first assembly or, if that is unavailable, the first model."},isApplicable:oe=>!0,params:(oe,x)=>({model:v.t.Optional(v.t.Group(c.xE.getParamDefinition(y.f.Model.ModelFromTrajectory,oe,x))),showUnitcell:v.t.Optional(v.t.Boolean(!1)),structure:v.t.Optional(pn.z.getParams(void 0,"assembly").type),representationPresetParams:v.t.Optional(v.t.Group(Le.n9.CommonParams)),...Me(oe,x)}),apply:(oe,x,F)=>(0,r.A)(function*(){const z=F.builders.structure,me=yield z.createModel(oe,x.model),Pe=yield z.insertModelProperties(me,x.modelProperties),Ge=yield z.createStructure(Pe||me,x.structure),Xe=yield z.insertStructureProperties(Ge,x.structureProperties),Qe=void 0===x.showUnitcell||x.showUnitcell?yield z.tryCreateUnitcell(Pe,void 0,{isHidden:!0}):void 0,lt=x.representationPreset||F.config.get(je.AB.Structure.DefaultRepresentationPreset)||Le.Bj.auto.id;return{model:me,modelProperties:Pe,unitcell:Qe,structure:Ge,structureProperties:Xe,representation:yield F.builders.structure.representation.applyPreset(Xe,lt,x.representationPresetParams)}})()}),sn=_t({id:"preset-trajectory-all-models",display:{name:"All Models",group:"Preset",description:"Shows all models; colored by trajectory-index."},isApplicable:oe=>oe.data.frameCount>1,params:(oe,x)=>({useDefaultIfSingleModel:v.t.Optional(v.t.Boolean(!1)),representationPresetParams:v.t.Optional(v.t.Group(Le.n9.CommonParams)),...Me(oe,x)}),apply:(oe,x,F)=>(0,r.A)(function*(){var z,me;const Pe=null===(me=null===(z=c.so.resolveAndCheck(F.state.data,oe))||void 0===z?void 0:z.obj)||void 0===me?void 0:me.data;if(!Pe)return{};if(1===Pe.frameCount&&x.useDefaultIfSingleModel)return ut.apply(oe,x,F);const Ge=F.builders.structure,Xe=[],Qe=[];for(let lt=0;lt({model:v.t.Optional(v.t.Group(c.xE.getParamDefinition(y.f.Model.ModelFromTrajectory,oe,x))),...Me(oe,x)});function yt(oe,x,F,z){return At.apply(this,arguments)}function At(){return At=(0,r.A)(function*(oe,x,F,z){const me=z.builders.structure,Pe=yield me.createModel(x,F.model),Ge=yield me.insertModelProperties(Pe,F.modelProperties),Xe=yield me.createStructure(Ge||Pe,{name:"symmetry",params:oe}),Qe=yield me.insertStructureProperties(Xe,F.structureProperties),lt=yield me.tryCreateUnitcell(Ge,void 0,{isHidden:!1}),ft=F.representationPreset||z.config.get(je.AB.Structure.DefaultRepresentationPreset)||Le.Bj.auto.id;return{model:Pe,modelProperties:Ge,unitcell:lt,structure:Xe,structureProperties:Qe,representation:yield z.builders.structure.representation.applyPreset(Qe,ft,{theme:{globalName:oe.theme}})}}),At.apply(this,arguments)}const Gt=_t({id:"preset-trajectory-unitcell",display:{name:"Unit Cell",group:"Preset",description:"Shows the fully populated unit cell."},isApplicable:oe=>Je.Kx.hasCrystalSymmetry(oe.data.representative),params:gt,apply:(oe,x,F)=>(0,r.A)(function*(){return yield yt({ijkMin:g.eB.create(0,0,0),ijkMax:g.eB.create(0,0,0)},oe,x,F)})()}),rn=_t({id:"preset-trajectory-supercell",display:{name:"Super Cell",group:"Preset",description:"Shows the super cell, i.e. the central unit cell and all adjacent unit cells."},isApplicable:oe=>Je.Kx.hasCrystalSymmetry(oe.data.representative),params:gt,apply:(oe,x,F)=>(0,r.A)(function*(){return yield yt({ijkMin:g.eB.create(-1,-1,-1),ijkMax:g.eB.create(1,1,1),theme:"operator-hkl"},oe,x,F)})()}),Mt=_t({id:"preset-trajectory-crystal-contacts",display:{name:"Crystal Contacts",group:"Preset",description:"Showsasymetric unit and chains from neighbours within 5 \u212b, i.e., symmetry mates."},isApplicable:oe=>Je.Kx.hasCrystalSymmetry(oe.data.representative),params:(oe,x)=>({model:v.t.Optional(v.t.Group(c.xE.getParamDefinition(y.f.Model.ModelFromTrajectory,oe,x))),...Me(oe,x)}),apply:(oe,x,F)=>(0,r.A)(function*(){const z=F.builders.structure,me=yield z.createModel(oe,x.model),Pe=yield z.insertModelProperties(me,x.modelProperties),Ge=yield z.createStructure(Pe||me,{name:"symmetry-mates",params:{radius:5}}),Xe=yield z.insertStructureProperties(Ge,x.structureProperties),Qe=yield z.tryCreateUnitcell(Pe,void 0,{isHidden:!0}),lt=x.representationPreset||F.config.get(je.AB.Structure.DefaultRepresentationPreset)||Le.Bj.auto.id;return{model:me,modelProperties:Pe,unitcell:Qe,structure:Ge,structureProperties:Xe,representation:yield F.builders.structure.representation.applyPreset(Xe,lt,{theme:{globalName:"operator-name",carbonColor:"operator-name",focus:{name:"element-symbol",params:{carbonColor:{name:"operator-name",params:mt.PO.defaultValues}}}}})}})()}),nn={default:ut,"all-models":sn,unitcell:Gt,supercell:rn,crystalContacts:Mt};class bn{resolveProvider(x){var F;return"string"==typeof x?null!==(F=nn[x])&&void 0!==F?F:(0,ce.L9)(this._providers,z=>z.id===x):x}hasPreset(x){for(const F of this._providers)if(!F.isApplicable||F.isApplicable(x,this.plugin))return!0;return!1}get providers(){return this._providers}getPresets(x){if(!x)return this.providers;const F=[];for(const z of this._providers)z.isApplicable&&!z.isApplicable(x,this.plugin)||F.push(z);return F}getPresetSelect(x){const F=[];for(const z of this._providers)x&&z.isApplicable&&!z.isApplicable(x,this.plugin)||F.push([z.id,z.display.name]);return v.t.Select("auto",F)}getPresetsWithOptions(x){const F=[],z=Object.create(null);for(const me of this._providers)me.isApplicable&&!me.isApplicable(x,this.plugin)||(F.push([me.id,me.display.name]),z[me.id]=me.params?v.t.Group(me.params(x,this.plugin)):v.t.EmptyGroup());return 0===F.length?v.t.MappedStatic("",{"":v.t.EmptyGroup()}):v.t.MappedStatic(F[0][0],z,{options:F})}registerPreset(x){if(this.providerMap.has(x.id))throw new Error(`Hierarchy provider with id '${x.id}' already registered.`);this._providers.push(x),this.providerMap.set(x.id,x)}unregisterPreset(x){this.providerMap.delete(x.id),(0,nt.mO)(this._providers,x)}applyPreset(x,F,z){const me=this.resolveProvider(F);if(!me)return;const Ge=c.so.resolveAndCheck(this.plugin.state.data,x);if(!Ge)return void(se.Zq||console.warn("Applying hierarchy preset provider to bad cell."));const Xe=z||(me.params?v.t.getDefaultValues(me.params(Ge.obj,this.plugin)):{}),Qe=R.YZ.create(`${me.display.name}`,()=>me.apply(Ge,Xe,this.plugin));return this.plugin.runTask(Qe)}constructor(x){this.plugin=x,this._providers=[],this.providerMap=new Map,this.defaultProvider=nn.default,(0,ae.IF)(nn,F=>this.registerPreset(F))}}class Dn{get dataState(){return this.plugin.state.data}parseTrajectoryData(x,F){var z=this;return(0,r.A)(function*(){const me="string"==typeof F?z.plugin.dataFormats.get(F):F;if(!me)throw new Error(`'${F}' is not a supported data format.`);const{trajectory:Pe}=yield me.parse(z.plugin,x);return Pe})()}parseTrajectoryBlob(x,F){return this.dataState.build().to(x).apply(y.f.Data.ParseBlob,F,{state:{isGhost:!0}}).apply(y.f.Model.TrajectoryFromBlob,void 0).commit({revertOnError:!0})}parseTrajectory(x,F){const z=c.so.resolveAndCheck(this.dataState,x);if(!z)throw new Error("Invalid data cell.");return A.O.Data.Blob.is(z.obj)?this.parseTrajectoryBlob(x,F):this.parseTrajectoryData(x,F)}createModel(x,F,z){return this.dataState.build().to(x).apply(y.f.Model.ModelFromTrajectory,F||{modelIndex:0},{state:z}).commit({revertOnError:!0})}insertModelProperties(x,F,z){return this.dataState.build().to(x).apply(y.f.Model.CustomModelProperties,F,{state:z}).commit({revertOnError:!0})}tryCreateUnitcell(x,F,z){var me,Pe,Ge;const Xe=this.dataState,Qe=null===(Pe=null===(me=c.so.resolveAndCheck(Xe,x))||void 0===me?void 0:me.obj)||void 0===Pe?void 0:Pe.data;if(!Qe)return;const lt=null===(Ge=en.i.Provider.get(Qe))||void 0===Ge?void 0:Ge.spacegroup.cell;return Bt.O8.isZero(lt)?void 0:Xe.build().to(x).apply(y.f.Representation.ModelUnitcell3D,F,{state:z}).commit({revertOnError:!0})}createStructure(x,F,z,me){var Pe;const Ge=this.dataState;if(!F){const Qe=c.so.resolveAndCheck(Ge,x);if(Qe){const lt=en.i.Provider.get(null===(Pe=Qe.obj)||void 0===Pe?void 0:Pe.data);(!lt||0===lt?.assemblies.length)&&(F={name:"model",params:{}})}}return Ge.build().to(x).apply(y.f.Model.StructureFromModel,{type:F||{name:"assembly",params:{}}},{state:z,tags:me}).commit({revertOnError:!0})}insertStructureProperties(x,F){return this.dataState.build().to(x).apply(y.f.Model.CustomStructureProperties,F).commit({revertOnError:!0})}isComponentTransform(x){return x.transform.transformer===y.f.Model.StructureComponent}tryCreateComponent(x,F,z,me){var Pe=this;return(0,r.A)(function*(){var Ge,Xe;const Qe=Pe.dataState,lt=Qe.build().to(x),ft=`structure-component-${z}`,wt=lt.applyOrUpdateTagged(ft,y.f.Model.StructureComponent,F,{tags:me?[...me,ft]:[ft]});yield wt.commit();const Ut=wt.selector;if(Ut.isOk&&0!==(null===(Xe=null===(Ge=Ut.cell)||void 0===Ge?void 0:Ge.obj)||void 0===Xe?void 0:Xe.data.elementCount))return Ut;yield Qe.build().delete(Ut.ref).commit()})()}tryCreateComponentFromExpression(x,F,z,me){return this.tryCreateComponent(x,{type:{name:"expression",params:F},nullIfEmpty:!0,label:(me?.label||"").trim()},z,me?.tags)}tryCreateComponentStatic(x,F,z){return this.tryCreateComponent(x,{type:{name:"static",params:F},nullIfEmpty:!0,label:(z?.label||"").trim()},`static-${F}`,z?.tags)}tryCreateComponentFromSelection(x,F,z,me){var Pe=this;return this.plugin.runTask(R.YZ.create("Query Component",function(){var Ge=(0,r.A)(function*(Xe){var Qe,lt;let{label:ft,tags:wt}=me||{};ft=(ft||"").trim();const Ut=null===(lt=null===(Qe=c.so.resolveAndCheck(Pe.dataState,x))||void 0===Qe?void 0:Qe.obj)||void 0===lt?void 0:lt.data;if(!Ut)return;const Jt=F.referencesCurrent?{type:{name:"bundle",params:Je.iZ.Bundle.fromSelection(yield F.getSelection(Pe.plugin,Xe,Ut))},nullIfEmpty:!0,label:ft||F.label}:{type:{name:"expression",params:F.expression},nullIfEmpty:!0,label:ft||F.label};return F.ensureCustomProperties&&(yield F.ensureCustomProperties({runtime:Xe,assetManager:Pe.plugin.managers.asset},Ut)),Pe.tryCreateComponent(x,Jt,z,wt)});return function(Xe){return Ge.apply(this,arguments)}}()))}constructor(x){this.plugin=x,this.hierarchy=new bn(this.plugin),this.representation=new Lt(this.plugin)}}var Ct,$t,jt=n(5953),It=n(1425),Dt=n(3442);!function(oe){oe.create=function x(F){const{name:z}=F;return{descriptor:F,get:me=>me._propertyData[z],set(me,Pe){me.customProperties.add(F),me._propertyData[z]=Pe}}}}(Ct||(Ct={})),function(oe){oe.Descriptor={name:"recommended_iso_value"},oe.Provider=Ct.create(oe.Descriptor)}($t||($t={}));var Vt=n(6570);const Wt="Volume";function yn(oe,x){return Zt.apply(this,arguments)}function Zt(){return Zt=(0,r.A)(function*(oe,x){if(!x)return;const{entryId:F}=x;return F&&F.toLowerCase().startsWith("emd")?oe.runTask(R.YZ.create("Try Set Recommended IsoValue",function(){var z=(0,r.A)(function*(me){try{const Pe=yield(0,Vt.$A)(oe,me,F);$t.Provider.set(x,ee.f.IsoValue.absolute(Pe))}catch(Pe){console.warn(Pe)}});return function(me){return z.apply(this,arguments)}}())):void 0}),Zt.apply(this,arguments)}function kt(oe){const x=$t.Provider.get(oe);if(x)return"relative"===x.kind?x:ee.f.adjustedIsoValue(oe,x.absoluteValue,"absolute")}function Ot(oe,x){return An.apply(this,arguments)}function An(){return An=(0,r.A)(function*(oe,x){const F={},z=x.volume.data&&kt(x.volume.data);return z&&(F.isoValue=z),[yield oe.build().to(x.volume).apply(y.f.Representation.VolumeRepresentation3D,(0,Dt.aK)(oe,x.volume.data,{type:"isosurface",typeParams:F})).commit()]}),An.apply(this,arguments)}const jn=(0,It.N)({label:"CCP4/MRC/MAP",description:"CCP4/MRC/MAP",category:Wt,binaryExtensions:["ccp4","mrc","map"],parse:function(){var oe=(0,r.A)(function*(x,F,z){const me=x.build().to(F).apply(y.f.Data.ParseCcp4,{},{state:{isGhost:!0}}),Pe=me.apply(y.f.Volume.VolumeFromCcp4,{entryId:z?.entryId});return yield me.commit({revertOnError:!0}),yield yn(x,Pe.selector.data),{format:me.selector,volume:Pe.selector}});return function(F,z,me){return oe.apply(this,arguments)}}(),visuals:Ot}),On=(0,It.N)({label:"DSN6/BRIX",description:"DSN6/BRIX",category:Wt,binaryExtensions:["dsn6","brix"],parse:function(){var oe=(0,r.A)(function*(x,F,z){const me=x.build().to(F).apply(y.f.Data.ParseDsn6,{},{state:{isGhost:!0}}),Pe=me.apply(y.f.Volume.VolumeFromDsn6,{entryId:z?.entryId});return yield me.commit({revertOnError:!0}),yield yn(x,Pe.selector.data),{format:me.selector,volume:Pe.selector}});return function(F,z,me){return oe.apply(this,arguments)}}(),visuals:Ot}),fr=(0,It.N)({label:"DX",description:"DX",category:Wt,stringExtensions:["dx"],binaryExtensions:["dxbin"],parse:function(){var oe=(0,r.A)(function*(x,F,z){const Pe=x.build().to(F).apply(y.f.Data.ParseDx,{},{state:{isGhost:!0}}).apply(y.f.Volume.VolumeFromDx,{entryId:z?.entryId});return yield Pe.commit({revertOnError:!0}),yield yn(x,Pe.selector.data),{volume:Pe.selector}});return function(F,z,me){return oe.apply(this,arguments)}}(),visuals:Ot}),Dr=(0,It.N)({label:"Cube",description:"Cube",category:Wt,stringExtensions:["cub","cube"],parse:function(){var oe=(0,r.A)(function*(x,F,z){const me=x.build().to(F).apply(y.f.Data.ParseCube,{},{state:{isGhost:!0}}),Pe=me.apply(y.f.Volume.VolumeFromCube,{entryId:z?.entryId}),Ge=me.apply(y.f.Model.TrajectoryFromCube,void 0,{state:{isGhost:!0}}).apply(y.f.Model.ModelFromTrajectory).apply(y.f.Model.StructureFromModel);return yield me.commit({revertOnError:!0}),yield yn(x,Pe.selector.data),{format:me.selector,volume:Pe.selector,structure:Ge.selector}});return function(F,z,me){return oe.apply(this,arguments)}}(),visuals:function(){var oe=(0,r.A)(function*(x,F){var z,me;const Pe=x.build(),Ge=[],Xe=null===(me=null===(z=F.volume.cell)||void 0===z?void 0:z.obj)||void 0===me?void 0:me.data;if(Xe&&ee.f.isOrbitals(Xe)){const ft=Pe.to(F.volume).apply(y.f.Representation.VolumeRepresentation3D,(0,Dt.aK)(x,Xe,{type:"isosurface",typeParams:{isoValue:ee.f.IsoValue.relative(1),alpha:.4},color:"uniform",colorParams:{value:_e.s.blue}})),wt=Pe.to(F.volume).apply(y.f.Representation.VolumeRepresentation3D,(0,Dt.aK)(x,Xe,{type:"isosurface",typeParams:{isoValue:ee.f.IsoValue.relative(-1),alpha:.4},color:"uniform",colorParams:{value:_e.s.red}}));Ge.push(ft.selector,wt.selector)}else{const ft=Pe.to(F.volume).apply(y.f.Representation.VolumeRepresentation3D,(0,Dt.aK)(x,Xe,{type:"isosurface",typeParams:{isoValue:ee.f.IsoValue.relative(2),alpha:.4},color:"uniform",colorParams:{value:_e.s.grey}}));Ge.push(ft.selector)}const Qe=yield x.builders.structure.representation.applyPreset(F.structure,"auto");yield Pe.commit();const lt=[];return(0,ae.IF)(Qe?.representations,ft=>{ft&<.push(ft)}),[...Ge,...lt]});return function(F,z){return oe.apply(this,arguments)}}()}),Pr=(0,It.N)({label:"DensityServer CIF",description:"DensityServer CIF",category:Wt,stringExtensions:["cif"],binaryExtensions:["bcif"],isApplicable:(oe,x)=>"dscif"===(0,It.v)(oe,x),parse:function(){var oe=(0,r.A)(function*(x,F,z){var me;const Pe=yield x.build().to(F).apply(y.f.Data.ParseCif).commit(),Ge=x.build().to(Pe),Xe=Pe.obj.data.blocks;if(0===Xe.length)throw new Error("no data blocks");const Qe=[];let lt=0;for(const ft of Xe){if("SERVER"===ft.header.toUpperCase())continue;const wt=Array.isArray(z?.entryId)?z?.entryId[lt]:z?.entryId;(null===(me=ft.categories.volume_data_3d_info)||void 0===me?void 0:me.rowCount)>0&&(Qe.push(Ge.apply(y.f.Volume.VolumeFromDensityServerCif,{blockHeader:ft.header,entryId:wt}).selector),lt++)}yield Ge.commit();for(const ft of Qe)yield yn(x,ft.data);return{volumes:Qe}});return function(F,z,me){return oe.apply(this,arguments)}}(),visuals:function(){var oe=(0,r.A)(function*(x,F){const{volumes:z}=F,me=x.build(),Pe=[];if(z.length>0){const Ge=z[0].data&&kt(z[0].data)||ee.f.IsoValue.relative(1.5);Pe[0]=me.to(z[0]).apply(y.f.Representation.VolumeRepresentation3D,Ie.VolumeRepresentation3DHelpers.getDefaultParamsStatic(x,"isosurface",{isoValue:Ge,alpha:1},"uniform",{value:_e.s.teal})).selector}if(z.length>1){const Ge=Ie.VolumeRepresentation3DHelpers.getDefaultParamsStatic(x,"isosurface",{isoValue:ee.f.IsoValue.relative(3),alpha:.3},"uniform",{value:_e.s.green}),Xe=Ie.VolumeRepresentation3DHelpers.getDefaultParamsStatic(x,"isosurface",{isoValue:ee.f.IsoValue.relative(-3),alpha:.3},"uniform",{value:_e.s.red});Pe[Pe.length]=me.to(z[1]).apply(y.f.Representation.VolumeRepresentation3D,Ge).selector,Pe[Pe.length]=me.to(z[1]).apply(y.f.Representation.VolumeRepresentation3D,Xe).selector}return yield me.commit(),Pe});return function(F,z){return oe.apply(this,arguments)}}()}),or=(0,It.N)({label:"Segmentation CIF",description:"Segmentation CIF",category:Wt,stringExtensions:["cif"],binaryExtensions:["bcif"],isApplicable:(oe,x)=>"segcif"===(0,It.v)(oe,x),parse:function(){var oe=(0,r.A)(function*(x,F){var z;const me=yield x.build().to(F).apply(y.f.Data.ParseCif).commit(),Pe=x.build().to(me),Ge=me.obj.data.blocks;if(0===Ge.length)throw new Error("no data blocks");const Xe=[];for(const Qe of Ge)"SERVER"!==Qe.header.toUpperCase()&&(null===(z=Qe.categories.volume_data_3d_info)||void 0===z?void 0:z.rowCount)>0&&Xe.push(Pe.apply(y.f.Volume.VolumeFromSegmentationCif,{blockHeader:Qe.header}).selector);return yield Pe.commit(),{volumes:Xe}});return function(F,z){return oe.apply(this,arguments)}}(),visuals:function(){var oe=(0,r.A)(function*(x,F){const{volumes:z}=F,me=x.build(),Pe=[];return z.length>0&&ee.f.Segmentation.get(z[0].data)&&(Pe[Pe.length]=me.to(z[0]).apply(y.f.Representation.VolumeRepresentation3D,Ie.VolumeRepresentation3DHelpers.getDefaultParams(x,"segment",z[0].data,{alpha:1,instanceGranularity:!0},"volume-segment",{})).selector),yield me.commit(),Pe});return function(F,z){return oe.apply(this,arguments)}}()}),Nr=[["ccp4",jn],["dsn6",On],["cube",Dr],["dx",fr],["dscif",Pr],["segcif",or]],Jr=[["ply",(0,It.N)({label:"PLY",description:"PLY",category:"Shape",stringExtensions:["ply"],parse:function(){var oe=(0,r.A)(function*(x,F){const z=x.state.data.build().to(F).apply(y.f.Data.ParsePly,{},{state:{isGhost:!0}}),me=z.apply(y.f.Model.ShapeFromPly);return yield z.commit(),{format:z.selector,shape:me.selector}});return function(F,z){return oe.apply(this,arguments)}}(),visuals:(oe,x)=>oe.state.data.build().to(x.shape).apply(y.f.Representation.ShapeRepresentation3D).commit()})]];var To=n(2945),un=n(1169);class ct{get types(){return this._list.map(x=>[x.name,x.provider.label])}get extensions(){if(this._extensions)return this._extensions;const x=new Set;return this._list.forEach(({provider:F})=>{var z,me;null===(z=F.stringExtensions)||void 0===z||z.forEach(Pe=>x.add(Pe)),null===(me=F.binaryExtensions)||void 0===me||me.forEach(Pe=>x.add(Pe))}),this._extensions=x,x}get binaryExtensions(){if(this._binaryExtensions)return this._binaryExtensions;const x=new Set;return this._list.forEach(({provider:F})=>{var z;return null===(z=F.binaryExtensions)||void 0===z?void 0:z.forEach(me=>x.add(me))}),this._binaryExtensions=x,x}get options(){if(this._options)return this._options;const x=[];return this._list.forEach(({name:F,provider:z})=>x.push([F,z.label,z.category||""])),this._options=x,x}constructor(){this._list=[],this._map=new Map,this._extensions=void 0,this._binaryExtensions=void 0,this._options=void 0;for(const[x,F]of Nr)this.add(x,F);for(const[x,F]of To.PO)this.add(x,F);for(const[x,F]of un.VE)this.add(x,F);for(const[x,F]of Jr)this.add(x,F);for(const[x,F]of jt.HQ)this.add(x,F)}_clear(){this._extensions=void 0,this._binaryExtensions=void 0,this._options=void 0}add(x,F){this._clear(),this._list.push({name:x,provider:F}),this._map.set(x,F)}remove(x){this._clear(),this._list.splice(this._list.findIndex(F=>F.name===x),1),this._map.delete(x)}auto(x,F){var z,me;for(let Pe=0,Ge=this.list.length;Pe[x.name,x.display.name]),{label:"Animation"})}),this._params}updateParams(x){if(this.isEmpty)return;this.updateState({params:{...this.state.params,...x}});const F=this.map.get(this.state.params.current),z=F.params(this.context);this._current={anim:F,params:z,paramValues:v.t.getDefaultValues(z),state:{},startedTime:-1,lastTime:0},this.triggerUpdate()}updateCurrentParams(x){this.isEmpty||(this._current.paramValues={...this._current.paramValues,...x},this.triggerUpdate())}register(x){this.map.has(x.name)?this.context.log.error(`Animation '${x.name}' is already registered.`):(this._params=void 0,this.map.set(x.name,x),this._animations.push(x),1===this._animations.length?this.updateParams({current:x.name}):this.triggerUpdate())}play(x,F){var z=this;return(0,r.A)(function*(){yield z.stop(),z.map.has(x.name)||z.register(x),z.updateParams({current:x.name}),z.updateCurrentParams(F),yield z.start()})()}tick(x,F,z){var me=this;return(0,r.A)(function*(){me.currentTime=x,!me.isStopped&&(F||z?yield me.applyFrame(z):me.applyAsync())})()}start(){var x=this;return(0,r.A)(function*(){x.updateState({animationState:"playing"}),x.context.behaviors.state.isAnimating.value||x.context.behaviors.state.isAnimating.next(!0),x.triggerUpdate();const F=x._current.anim;let z=x._current.anim.initialState(x._current.paramValues,x.context);if(F.setup){const me=yield F.setup(x._current.paramValues,z,x.context);me&&(z=me)}x._current.lastTime=0,x._current.startedTime=-1,x._current.state=z,x.isStopped=!1})()}stop(){var x=this;return(0,r.A)(function*(){if(x.isStopped=!0,"stopped"!==x.state.animationState){const F=x._current.anim;F.teardown&&(yield F.teardown(x._current.paramValues,x._current.state,x.context)),x.updateState({animationState:"stopped"}),x.triggerUpdate()}x.context.behaviors.state.isAnimating.value&&x.context.behaviors.state.isAnimating.next(!1)})()}get isAnimating(){return"playing"===this.state.animationState}applyAsync(){var x=this;return(0,r.A)(function*(){if(!x.isApplying){x.isApplying=!0;try{yield x.applyFrame()}finally{x.isApplying=!1}}})()}applyFrame(x){var F=this;return(0,r.A)(function*(){const z=F.currentTime;F._current.startedTime<0&&(F._current.startedTime=z);const me=yield F._current.anim.apply(F._current.state,{lastApplied:F._current.lastTime,current:z-F._current.startedTime,animation:x},{params:F._current.paramValues,plugin:F.context});"finished"===me.kind?F.stop():"next"===me.kind&&(F._current.state=me.state,F._current.lastTime=z-F._current.startedTime),F.triggerApply()})()}getSnapshot(){return this.current?{state:this.state,current:{paramValues:this._current.paramValues,state:this._current.anim.stateSerialization?this._current.anim.stateSerialization.toJSON(this._current.state):this._current.state}}:{state:this.state}}setSnapshot(x){this.isEmpty||(this.updateState({animationState:x.state.animationState}),this.updateParams(x.state.params),x.current&&(this.current.paramValues=x.current.paramValues,this.current.state=this._current.anim.stateSerialization?this._current.anim.stateSerialization.fromJSON(x.current.state):x.current.state,this.triggerUpdate(),"playing"===this.state.animationState&&this.resume()))}resume(){var x=this;return(0,r.A)(function*(){x._current.lastTime=0,x._current.startedTime=-1;const F=x._current.anim;x.context.behaviors.state.isAnimating.value||x.context.behaviors.state.isAnimating.next(!0),F.setup&&(yield F.setup(x._current.paramValues,x._current.state,x.context)),x.isStopped=!1})()}constructor(x){super({params:{current:""},animationState:"stopped"}),this.context=x,this.map=new Map,this._animations=[],this.currentTime=0,this._params=void 0,this.events={updated:this.ev(),applied:this.ev()},this.isStopped=!0,this.isApplying=!1}}var xn=n(7136),Rn=n(3246),er=n(8199),ir=n(5276);function br(oe,x,F){const z=F[0],me=F[1],Pe=F[2];return(z*oe[0]+me*oe[1]+Pe*oe[2]+(-z*x[0]-me*x[1]-Pe*x[2]))/Math.sqrt(z*z+me*me+Pe*Pe)}const Ur={identity:g.U.create(1,0,0,0,1,0,0,0,1),rotX90:g.U.create(1,0,0,0,0,1,0,-1,0),rotY90:g.U.create(0,0,-1,0,1,0,1,0,0),rotZ90:g.U.create(0,1,0,-1,0,0,0,0,1),rotX270:g.U.create(1,0,0,0,0,-1,0,1,0),rotY270:g.U.create(0,0,1,0,1,0,-1,0,0),rotZ270:g.U.create(0,-1,0,1,0,0,0,0,1),rotX180:g.U.create(1,0,0,0,-1,0,0,0,-1),rotY180:g.U.create(-1,0,0,0,1,0,0,0,-1),rotZ180:g.U.create(-1,0,0,0,-1,0,0,0,1)};function so(oe,x){const{onlyTrace:F,skipHydrogens:z,skipWater:me}=x,{x:Pe,y:Ge,z:Xe,type_symbol:Qe,label_comp_id:lt}=Je.StructureProperties.atom,ft=[];for(const wt of oe){const Ut=Je.iZ.Location.create(wt);for(const Jt of wt.units){Ut.unit=Jt;const gn=F?Jt.polymerElements:Jt.elements;for(let Pn=0;Pnme,F)}focusLoci(x,F){let z;if(Array.isArray(x)&&x.length>1){const me=[];for(const Pe of x){const Ge=Rn.QN.getBoundingSphere(this.transformedLoci(Pe));Ge&&me.push(Ge)}if(0===me.length)return;this.boundaryHelper.reset();for(const Pe of me)this.boundaryHelper.includeSphere(Pe);this.boundaryHelper.finishedIncludeStep();for(const Pe of me)this.boundaryHelper.radiusSphere(Pe);z=this.boundaryHelper.getSphere()}else if(Array.isArray(x)){if(0===x.length)return;z=Rn.QN.getBoundingSphere(this.transformedLoci(x[0]))}else z=Rn.QN.getBoundingSphere(this.transformedLoci(x));z&&this.focusSphere(z,F)}focusSpheres(x,F,z){const me=[];for(const Pe of x){const Ge=F(Pe);Ge&&me.push(Ge)}if(0!==me.length){if(1===me.length)return this.focusSphere(me[0],z);this.boundaryHelper.reset();for(const Pe of me)this.boundaryHelper.includeSphere(Pe);this.boundaryHelper.finishedIncludeStep();for(const Pe of me)this.boundaryHelper.radiusSphere(Pe);this.focusSphere(this.boundaryHelper.getSphere(),z)}}focusSphere(x,F){var z;const{canvas3d:me}=this.plugin;if(!me)return;const{extraRadius:Pe,minRadius:Ge,durationMs:Xe}={...Sn,...F},Qe=Math.max(x.radius+Pe,Ge);if(F?.principalAxes){const lt=function Mr(oe,x,F){if(!oe.canvas3d)return;const{origin:z,dirA:me,dirB:Pe,dirC:Ge}=F.principalAxes.boxAxes,Xe=M.e.clone(me),Qe=M.e.clone(Ge);if(F.positionToFlip){const{aroundX:ft,aroundY:wt}=function vr(oe,x,F,z){const me=br(oe,x,z);return{aroundX:br(oe,x,F)<0,aroundY:me<0}}(F.positionToFlip,z,Xe,Pe);ft&&(M.e.negate(Qe,Qe),M.e.negate(Xe,Xe)),wt&&M.e.negate(Qe,Qe)}const lt=M.e.scale((0,M.e)(),z,-100);return M.e.dot(lt,Xe)<=0&&M.e.negate(Qe,Qe),M.e.dot(M.e.unitY,Qe)<=0&&M.e.negate(Xe,Xe),oe.canvas3d.camera.getFocus(z,x,Xe,Qe,ir.i.createDefaultSnapshot())}(this.plugin,Qe,F);null===(z=this.plugin.canvas3d)||void 0===z||z.requestCameraReset({durationMs:Xe,snapshot:lt})}else{const lt=me.camera.getFocus(x.center,Qe);me.requestCameraReset({durationMs:Xe,snapshot:lt})}}orientAxes(x,F){if(!this.plugin.canvas3d)return;x||(x=this.plugin.state.data.selectQ(Xe=>Xe.ofType(A.O.Molecule.Structure)).filter(Xe=>Xe.obj&&!Xe.transform.transformer.definition.isDecorator&&!Xe.obj.data.parent).map(Xe=>{var Qe;return null===(Qe=Xe.obj)||void 0===Qe?void 0:Qe.data}).filter(Xe=>!!Xe));const{rotation:z}=function Ro(oe,x){const F=function po(oe,x){let F;return F=so(oe,{onlyTrace:!0}),F.length>=3*x||(F=so(oe,{skipHydrogens:!0,skipWater:!0}),F.length>=3*x)||(F=so(oe,{})),F}(oe,3);return function ro(oe,x){if(0===oe.length)return console.warn("Skipping PCA, no atoms"),{rotation:Ur.identity,origin:g.eB.zero()};const F=er.c.calculateMomentsAxes(oe),z=er.c.calculateNormalizedAxes(F),me=function Wo(oe,x,F){const z=(0,g.U)();return g.U.setValue(z,0,0,oe[0]),g.U.setValue(z,0,1,oe[1]),g.U.setValue(z,0,2,oe[2]),g.U.setValue(z,1,0,x[0]),g.U.setValue(z,1,1,x[1]),g.U.setValue(z,1,2,x[2]),g.U.setValue(z,2,0,F[0]),g.U.setValue(z,2,1,F[1]),g.U.setValue(z,2,2,F[2]),z}(z.dirA,z.dirB,z.dirC);!function We(oe){g.U.determinant(oe)<0&&(g.U.setValue(oe,2,0,-g.U.getValue(oe,2,0)),g.U.setValue(oe,2,1,-g.U.getValue(oe,2,1)),g.U.setValue(oe,2,2,-g.U.getValue(oe,2,2)))}(me);const Pe=x?function ho(oe,x){let F=Ur.identity,z=0;const me=(0,g.U)();for(const Pe of[Ur.identity,Ur.rotX180,Ur.rotY180,Ur.rotZ180]){const Ge=g.U.innerProduct(g.U.mul(me,Pe,oe),x);Ge>z&&(F=Pe,z=Ge)}return F}(me,x):function Bo(oe,x,F){const z=g.eB.create(g.U.getValue(x,0,0),g.U.getValue(x,0,1),g.U.getValue(x,0,2)),me=g.eB.create(g.U.getValue(x,1,0),g.U.getValue(x,1,1),g.U.getValue(x,1,2)),Pe=g.eB.create(g.U.getValue(x,2,0),g.U.getValue(x,2,1),g.U.getValue(x,2,2)),Ge=Math.floor(oe.length/3),Xe=(0,g.eB)();let Qe=0,lt=0,ft=0;for(let Jt=0;Jt(z.priority||0)-(F.priority||0)),this.isDirty=!0,this.showLabels()}removeProvider(x){this.providers=this.providers.filter(F=>F!==x),this.isDirty=!0,this.showLabels()}mark(x,F){const z=this.locis.findIndex(me=>dr.YL.Loci.areEqual(x,me));-1===z&&F===xr.xi.Highlight?(this.locis.push(x),this.isDirty=!0):-1!==z&&F===xr.xi.RemoveHighlight&&((0,nt.P6)(this.locis,z),this.isDirty=!0)}showLabels(){this.ctx.behaviors.labels.highlight.next({labels:this.getLabels()})}getLabels(){if(this.isDirty){this.groupedLabels.clear(),this.labels.length=0;for(const x of this.providers)for(const F of this.locis){if(Rn.QN.isEmpty(F.loci))continue;const z=x.label(F.loci,F.repr);if(z){const me=x.group?x.group(z):z.toString(),Pe=this.groupedLabels.get(me);Pe?Pe.push(z):this.groupedLabels.set(me,[z])}}this.labels.length=0,this.groupedLabels.forEach((x,F)=>{const z=x.length,me=z>1&&x[0]!==x[1]?F:x[0];this.labels.push(1===z?me:`${me} || \xd7 ${z}`)}),this.isDirty=!1}return this.labels}constructor(x){this.ctx=x,this.providers=[],this.locis=[],this.isDirty=!1,this.labels=[],this.groupedLabels=new Map,x.managers.interactivity.lociHighlights.addProvider((F,z,me)=>{0!==this.providers.length&&(this.mark(F,z),me||this.showLabels())})}}var Qt=n(856),ht=n(9039),pt=n(3917);class fn extends Yt.e{get current(){return this.state.current}get history(){return this.state.history}tryAddHistory(x){if(Je.iZ.Loci.isEmpty(x.loci))return;let z,F=0;for(const me of this.state.history){if(Je.iZ.Loci.areEqual(me.loci,x.loci)){z=me;break}F++}if(z)return(0,nt.P6)(this.state.history,F),this.state.history.unshift(x),void this.events.historyUpdated.next(void 0);this.state.history.unshift(x),this.state.history.length>8&&this.state.history.pop(),this.events.historyUpdated.next(void 0)}set(x){this.tryAddHistory(x),(!this.state.current||!Je.iZ.Loci.areEqual(this.state.current.loci,x.loci))&&(this.state.current=x,this.behaviors.current.next(x))}setFromLoci(x){const F=Rn.QN.normalize(x);Je.iZ.Loci.is(F)&&!Je.iZ.Loci.isEmpty(F)?this.set({loci:F,label:(0,pt.YQ)(F,{reverse:!0,hidePrefix:!0,htmlStyling:!1})}):this.clear()}addFromLoci(x){const F=this.state.current&&Je.iZ.Loci.is(x)&&x.structure===this.state.current.loci.structure?Je.iZ.Loci.union(x,this.state.current.loci):x;this.setFromLoci(F)}clear(){this.state.current&&(this.state.current=void 0,this.behaviors.current.next(void 0))}getSnapshot(){if(!this.current)return{};const x=this.plugin.helpers.substructureParent.get(this.current.loci.structure),F=x?.transform.ref;return F?{current:{label:this.current.label,ref:F,bundle:Je.iZ.Bundle.fromLoci(this.current.loci),category:this.current.category}}:{}}setSnapshot(x){var F,z;if(!x.current)return void this.clear();const{label:me,ref:Pe,bundle:Ge,category:Xe}=x.current,Qe=null===(z=null===(F=this.plugin.state.data.select(c.QX.Generators.byRef(Pe))[0])||void 0===F?void 0:F.obj)||void 0===z?void 0:z.data;if(!Qe)return;const lt=Je.iZ.Bundle.toLoci(Ge,Qe);this.set({label:me,loci:lt,category:Xe})}constructor(x){super({history:[]}),this.plugin=x,this.events={historyUpdated:this.ev()},this.behaviors={current:this.ev.behavior(void 0)},x.state.data.events.object.removed.subscribe(({obj:z})=>{var me;if(!A.O.Molecule.Structure.is(z))return;(null===(me=this.current)||void 0===me?void 0:me.loci.structure)===z.data&&this.clear();const Pe=[];for(const Ge of this.history)Ge.loci.structure===z.data&&Pe.push(Ge);Pe.length!==this.history.length&&(this.history.length=0,this.history.push(...Pe),this.events.historyUpdated.next(void 0))});const F=(0,Bt.f8)();x.state.data.events.object.updated.subscribe(({oldData:z,obj:me,action:Pe})=>{var Ge;if(A.O.Molecule.Structure.is(me)&&z!==me.data&&"in-place"===Pe){const Xe=this.state.current;if(Xe&&Xe.loci.structure===z){const lt=Je.iZ.Loci.remap(Xe.loci,me.data);this.state.current={...Xe,loci:lt},this.behaviors.current.next(this.state.current),Rn.QN.getBoundingSphere(lt,F);const ft=null===(Ge=this.plugin.canvas3d)||void 0===Ge?void 0:Ge.camera,wt=ft.getTargetDistance(F.radius+4);(g.eB.distance(ft.target,F.center)>F.radius||wt>ft.viewport.height/ft.zoom)&&this.plugin.managers.camera.focusSphere(F,{durationMs:0})}}})}}var on=n(2277),En=n(5995),Tt=n(3543);const Fe=new xn.Z("98");class Ye extends Yt.e{get entries(){return this.state.entries}get additionsHistory(){return this.state.additionsHistory}get stats(){return this.state.stats||(this.state.stats=this.calcStats()),this.state.stats}getEntry(x){const F=this.plugin.helpers.substructureParent.get(x,!0);if(!F)return;const z=F.transform.ref;if(!this.entries.has(z)){const me=new rt(Je.iZ.Loci(x,[]));return this.entries.set(z,me),me}return this.entries.get(z)}calcStats(){let x=0,F=0;const z=Je.iZ.Stats.create();this.entries.forEach(Pe=>{const{elements:Ge}=Pe.selection;if(Ge.length){x+=1;for(let Xe=0,Qe=Ge.length;Xe24&&this.additionsHistory.pop(),this.events.additionsHistoryUpdated.next(void 0)}clearHistory(){0!==this.state.additionsHistory.length&&(this.state.additionsHistory=[],this.events.additionsHistoryUpdated.next(void 0))}clearHistoryForStructure(x){const F=[];for(const z of this.state.additionsHistory)z.loci.structure.root===x.root&&F.push(z);for(const z of F)this.modifyHistory(z,"remove");0!==F.length&&this.events.additionsHistoryUpdated.next(void 0)}onRemove(x,F){var z;this.entries.has(x)&&(this.entries.delete(x),F?.data&&this.clearHistoryForStructure(F.data),(null===(z=this.referenceLoci)||void 0===z?void 0:z.structure)===F?.data&&(this.referenceLoci=void 0),this.state.stats=void 0,this.events.changed.next(void 0))}onUpdate(x,F,z){var me,Pe,Ge,Xe;if(F===z||F?.data===z.data)return;const Qe=this.plugin.helpers.substructureParent.get(z.data,!0);if(!Qe||x!==Qe.transform.ref||!this.entries.has(x))return;const lt=null===(Pe=null===(me=this.plugin.helpers.substructureParent.get(z.data))||void 0===me?void 0:me.obj)||void 0===Pe?void 0:Pe.data;if(lt)if(!F?.data||Je.oE.areUnitIdsAndIndicesEqual(F.data,z.data)){this.entries.set(x,function St(oe,x){return new rt(Je.iZ.Loci.remap(oe.selection,x))}(this.entries.get(x),lt)),(null===(Ge=this.referenceLoci)||void 0===Ge?void 0:Ge.structure.root)===lt.root&&(this.referenceLoci=Je.iZ.Loci.remap(this.referenceLoci,lt));let ft=!1;for(const wt of this.state.additionsHistory)wt.loci.structure.root===lt.root&&(wt.loci=Je.iZ.Loci.remap(wt.loci,lt),ft=!0);ft&&this.events.additionsHistoryUpdated.next(void 0)}else this.entries.set(x,new rt(Je.iZ.Loci(lt,[]))),(null===(Xe=this.referenceLoci)||void 0===Xe?void 0:Xe.structure.root)===lt.root&&(this.referenceLoci=void 0),this.clearHistoryForStructure(lt),this.state.stats=void 0,this.events.changed.next(void 0)}clear(){const x=this.entries.keys(),F=[];for(;;){const z=x.next();if(z.done)break;const me=this.entries.get(z.value);Je.iZ.Loci.isEmpty(me.selection)||F.push(me.selection),me.selection=Je.iZ.Loci(me.selection.structure,[])}return this.referenceLoci=void 0,this.state.stats=void 0,this.events.changed.next(void 0),this.events.loci.clear.next(void 0),this.clearHistory(),F}getLoci(x){const F=this.getEntry(x);return F?F.selection:Rn.BL}getStructure(x){const F=this.getEntry(x);if(F)return F.structure}structureHasSelection(x){var F,z;const me=null===(z=null===(F=x.cell)||void 0===F?void 0:F.obj)||void 0===z?void 0:z.data;if(!me)return!1;const Pe=this.getEntry(me);return!!Pe&&!Je.iZ.Loci.isEmpty(Pe.selection)}has(x){if(Je.iZ.Loci.is(x)){const F=this.getEntry(x.structure);if(F)return Je.iZ.Loci.isSubset(F.selection,x)}return!1}tryGetRange(x){if(!Je.iZ.Loci.is(x)||1!==x.elements.length||!this.getEntry(x.structure))return;const z=x.elements[0];if(!z)return;const me=this.referenceLoci;if(!me||!Je.iZ.Loci.is(me)||me.structure!==x.structure)return;let Pe;for(const Ge of me.elements)if(z.unit===Ge.unit){Pe=Ge;break}return Pe&&z.unit===Pe.unit?function vt(oe,x,F){const z=Math.min(Tt.CD.min(x.indices),Tt.CD.min(F.indices)),me=Math.max(Tt.CD.max(x.indices),Tt.CD.max(F.indices));return Je.iZ.Loci(oe,[{unit:x.unit,indices:Tt.CD.ofRange(z,me)}])}(x.structure,Pe,z):void 0}elementCount(){let x=0;return this.entries.forEach(F=>{x+=Je.iZ.Loci.size(F.selection)}),x}getBoundary(){const x=g.eB.create(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),F=g.eB.create(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);Fe.reset();const z=[];this.entries.forEach(me=>{const Pe=me.selection;Je.iZ.Loci.isEmpty(Pe)||z.push(Je.iZ.Loci.getBoundary(Pe))});for(let me=0,Pe=z.length;meF.selection))}modify(x,F){let z=!1;switch(x){case"add":z=this.add(F);break;case"remove":z=this.remove(F);break;case"intersect":z=this.intersect(F);break;case"set":z=this.set(F)}z&&(this.state.stats=void 0,this.events.changed.next(void 0))}get applicableStructures(){return this.plugin.managers.structure.hierarchy.selection.structures.filter(x=>!!x.cell.obj).map(x=>x.cell.obj.data)}triggerInteraction(x,F,z=!0){switch(x){case"add":this.plugin.managers.interactivity.lociSelects.select({loci:F},z);break;case"remove":this.plugin.managers.interactivity.lociSelects.deselect({loci:F},z);break;case"intersect":this.plugin.managers.interactivity.lociSelects.selectJoin({loci:F},z);break;case"set":this.plugin.managers.interactivity.lociSelects.selectOnly({loci:F},z)}}fromLoci(x,F,z=!0){this.triggerInteraction(x,F,z)}fromCompiledQuery(x,F,z=!0){for(const me of this.applicableStructures){const Pe=F(new Je.cY(me));this.triggerInteraction(x,Je.cv.toLociWithSourceUnits(Pe),z)}}fromSelectionQuery(x,F,z=!0){var me=this;this.plugin.runTask(R.YZ.create("Structure Selection",function(){var Pe=(0,r.A)(function*(Ge){for(const Xe of me.applicableStructures){const Qe=yield F.getSelection(me.plugin,Ge,Xe);me.triggerInteraction(x,Je.cv.toLociWithSourceUnits(Qe),z)}});return function(Ge){return Pe.apply(this,arguments)}}()))}fromSelections(x){var F;const z=c.so.resolveAndCheck(this.plugin.state.data,x);if(z&&z.obj){if(!A.O.Molecule.Structure.Selections.is(z.obj))return void console.warn("fromSelections applied to wrong object type.",z.obj);this.clear();for(const me of null===(F=z.obj)||void 0===F?void 0:F.data)this.fromLoci("set",me.loci)}}getSnapshot(){const x=[];return this.entries.forEach((F,z)=>{x.push({ref:z,bundle:Je.iZ.Bundle.fromLoci(F.selection)})}),{entries:x}}setSnapshot(x){var F,z;this.entries.clear();for(const{ref:me,bundle:Pe}of x.entries){const Ge=null===(z=null===(F=this.plugin.state.data.select(c.QX.Generators.byRef(me))[0])||void 0===F?void 0:F.obj)||void 0===z?void 0:z.data;if(!Ge)continue;const Xe=Je.iZ.Bundle.toLoci(Pe,Ge);this.fromLoci("set",Xe,!1)}}constructor(x){super({entries:new Map,additionsHistory:[],stats:{structureCount:0,elementCount:0,label:"Nothing Selected"}}),this.plugin=x,this.events={changed:this.ev(),additionsHistoryUpdated:this.ev(),loci:{add:this.ev(),remove:this.ev(),clear:this.ev()}},x.helpers.substructureParent.events.removed.subscribe(F=>this.onRemove(F.ref,F.obj)),x.helpers.substructureParent.events.updated.subscribe(F=>this.onUpdate(F.ref,F.oldObj,F.obj))}}class rt{get selection(){return this._selection}set selection(x){this._selection=x,this._structure=void 0}get structure(){return this._structure||(this._structure=Rn.QN.isEmpty(this._selection)?void 0:Je.iZ.Loci.toStructure(this._selection)),this._structure}constructor(x){this._structure=void 0,this._selection=x}}var mn=n(9012);const an=[["full","Full"],["hidden","Hidden"]],Vn={isExpanded:v.t.Boolean(!1),showControls:v.t.Boolean(!0),regionState:v.t.Group({left:v.t.Select("full",[["full","Full"],["collapsed","Collapsed"],["hidden","Hidden"]]),top:v.t.Select("full",an),right:v.t.Select("full",an),bottom:v.t.Select("full",an)}),controlsDisplay:v.t.Value("outside",{isHidden:!0})};class Fn extends Yt.e{updateProps(x){const F=!!this.state.isExpanded;this.updateState(x),this.root&&"boolean"==typeof x.isExpanded&&x.isExpanded!==F&&this.handleExpand(),this.events.updated.next(void 0)}setProps(x){this.updateState(x)}setRoot(x){this.root=x,this.state.isExpanded&&this.handleExpand()}getScrollElement(){return document.scrollingElement?document.scrollingElement:document.documentElement?document.documentElement:document.body}handleExpand(){try{const x=document.getElementsByTagName("body")[0],F=document.getElementsByTagName("head")[0];if(!x||!F||!this.root)return;if(this.state.isExpanded){const z=F.children,me=[];let Pe=!1;for(let ft=0;ftthis.updateProps(F.state)),typeof document<"u"&&(this.expandedViewport=document.createElement("meta"),this.expandedViewport.name="viewport",this.expandedViewport.content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0")}}var rr=n(9283),Vr=n(377),tr=n(2741),Tr=n(2434),oo=n(1888),Gr=n(2556);const Ao={includeTypes:v.t.MultiSelect((0,E.mX)(Tr.I$.Names),v.t.objectToOptions(Tr.I$.Names)),excludeTypes:v.t.MultiSelect([],v.t.objectToOptions(Tr.I$.Names)),ignoreHydrogens:v.t.Boolean(!1),ignoreHydrogensVariant:v.t.Select("all",v.t.arrayToOptions(["all","non-polar"])),aromaticBonds:v.t.Boolean(!0,{description:"Display aromatic bonds with dashes"}),multipleBonds:v.t.Select("symmetric",v.t.arrayToOptions(["off","symmetric","offset"]))},vo=(v.t.getDefaultValues(Ao),{...Vr.Lr,...Ao,adjustCylinderLength:v.t.Boolean(!1,{description:"Shorten cylinders to reduce overlap with spheres. Useful for for transparent bonds. Not working well with aromatic bonds."})}),Do=(v.t.getDefaultValues(vo),{...Vr.T9,...Ao});function So(oe,x,F){return!Tr.I$.is(oe,F)||Tr.I$.is(x,F)}function ao(oe,x,F){const z=x.elements,me=x.bonds,{a:Pe,b:Ge,edgeProps:Xe}=me,{flags:Qe}=Xe,{ignoreHydrogens:lt,ignoreHydrogensVariant:ft,includeTypes:wt,excludeTypes:Ut}=F,Jt=Tr.I$.fromNames(wt),gn=Tr.I$.fromNames(Ut),Pn=Tr.I$.isAll(Jt)&&0===gn,{child:wn}=oe,Bn=wn?.unitMap.get(x.id);if(wn&&!Bn)throw new Error("expected childUnit to exist if child exists");if(!Pn||lt||wn)return Mn=>{const Ln=Pe[Mn],cr=Ge[Mn];return!!(Bn&&!Tt.SortedArray.has(Bn.elements,z[Ln])||!Pn&&So(Jt,gn,Qe[Mn]))||!!lt&&!(!(0,Gr.v3)(oe,x,z[Ln],ft)&&!(0,Gr.v3)(oe,x,z[cr],ft))}}function Po(oe,x){const F=oe.interUnitBonds,{edges:z}=F,{ignoreHydrogens:me,ignoreHydrogensVariant:Pe,includeTypes:Ge,excludeTypes:Xe}=x,Qe=Tr.I$.fromNames(Ge),lt=Tr.I$.fromNames(Xe),ft=Tr.I$.isAll(Qe)&&0===lt,{child:wt}=oe;if(!ft||me||wt)return Ut=>{if(wt){const Jt=z[Ut],gn=wt.unitMap.get(Jt.unitA);if(!gn)return!0;const wn=oe.unitMap.get(Jt.unitA).elements[Jt.indexA];if(!Tt.SortedArray.has(gn.elements,wn))return!0}if(me){const Jt=z[Ut],gn=oe.unitMap.get(Jt.unitA),Pn=oe.unitMap.get(Jt.unitB);if((0,Gr.v3)(oe,gn,gn.elements[Jt.indexA],Pe)||(0,Gr.v3)(oe,Pn,Pn.elements[Jt.indexB],Pe))return!0}return!(ft||!So(Qe,lt,z[Ut].props.flag))}}var Yr;function jr(oe,x,F){const{objectId:z,instanceId:me,groupId:Pe}=oe;if(F===z){const{structure:Ge,group:Xe}=x,Qe=Xe.units[me];if(Je.Nf.isAtomic(Qe)){const{target:lt}=Ge,ft=Qe.bonds.a[Pe],wt=Qe.bonds.b[Pe];return Je.gn.Loci(lt,[Je.gn.Location(lt,Qe,ft,lt,Qe,wt),Je.gn.Location(lt,Qe,wt,lt,Qe,ft)])}}return Rn.BL}function Co(oe,x,F,z){let me=!1;if(Je.gn.isLoci(oe)){const{structure:Pe,group:Ge}=x;if(!Je.oE.areEquivalent(oe.structure,Pe))return!1;const Xe=Ge.units[0];if(!Je.Nf.isAtomic(Xe))return!1;const Qe=2*Xe.bonds.edgeCount;for(const lt of oe.bonds){if(lt.aUnit!==lt.bUnit)continue;const ft=Ge.unitIndexMap.get(lt.aUnit.id);if(void 0!==ft){const wt=Xe.bonds.getDirectedEdgeIndex(lt.aIndex,lt.bIndex);-1!==wt&&F(Tt.IX.ofSingleton(ft*Qe+wt))&&(me=!0)}}}else if(Je.iZ.Loci.is(oe)){const{structure:Pe,group:Ge}=x;if(!Je.oE.areEquivalent(oe.structure,Pe))return!1;const Xe=Ge.units[0];if(!Je.Nf.isAtomic(Xe))return!1;const Qe=2*Xe.bonds.edgeCount;for(const lt of oe.elements){const ft=Ge.unitIndexMap.get(lt.unit.id);if(void 0!==ft){const{offset:wt,b:Ut}=Xe.bonds;Tt.CD.forEach(lt.indices,Jt=>{for(let gn=wt[Jt],Pn=wt[Jt+1];gn{const gn=Pe.units[Jt];return ft.aUnit=gn,ft.bUnit=gn,ft.aIndex=gn.bonds.a[Ut],ft.bIndex=gn.bonds.b[Ut],ft};if(me?.includeLocation2){const Ut=Je.gn.Location(Ge,void 0,void 0,Ge,void 0,void 0);return(0,oo.iQ)(Qe,lt,1,wt,!1,()=>!1,(gn,Pn)=>{const wn=Pe.units[Pn];return Ut.aUnit=wn,Ut.bUnit=wn,Ut.aIndex=wn.bonds.b[gn],Ut.bIndex=wn.bonds.a[gn],Ut})}return(0,oo.iQ)(Qe,lt,1,wt)},oe.fromStructure=function F(z,me){const Pe=z.interUnitBonds.edgeCount,Xe=Je.gn.Location(z,void 0,void 0,z,void 0,void 0),Qe=lt=>{const ft=z.interUnitBonds.edges[lt];return Xe.aUnit=z.unitMap.get(ft.unitA),Xe.aIndex=ft.indexA,Xe.bUnit=z.unitMap.get(ft.unitB),Xe.bIndex=ft.indexB,Xe};if(me?.includeLocation2){const lt=Je.gn.Location(z,void 0,void 0,z,void 0,void 0);return(0,oo.iQ)(Pe,1,1,Qe,!0,()=>!1,wt=>{const Ut=z.interUnitBonds.edges[wt];return lt.aUnit=z.unitMap.get(Ut.unitB),lt.aIndex=Ut.indexB,lt.bUnit=z.unitMap.get(Ut.unitA),lt.bIndex=Ut.indexA,lt})}return(0,oo.iQ)(Pe,1,1,Qe,!0)}}(Yr||(Yr={}));const Fo=new Map;function ei(oe,x,F,z){let me=!1;if(Je.gn.isLoci(oe)){if(!Je.oE.areEquivalent(oe.structure,x))return!1;for(const Pe of oe.bonds){const Ge=x.interUnitBonds.getBondIndexFromLocation(Pe);-1!==Ge&&F(Tt.IX.ofSingleton(Ge))&&(me=!0)}}else if(Je.iZ.Loci.is(oe)){if(!Je.oE.areEquivalent(oe.structure,x)||z&&1===oe.elements.length)return!1;for(const Pe of oe.elements)Fo.set(Pe.unit.id,Pe.indices);for(const Pe of oe.elements){const{unit:Ge}=Pe;Je.Nf.isAtomic(Ge)&&x.interUnitBonds.getConnectedUnits(Ge.id).forEach(Xe=>{const Qe=Fo.get(Xe.unitB);(!z||Qe)&&Tt.CD.forEach(Pe.indices,lt=>{Xe.connectedIndices.includes(lt)&&Xe.getEdges(lt).forEach(ft=>{if(!z||Qe&&Tt.CD.has(Qe,ft.indexB)){const wt=x.interUnitBonds.getEdgeIndex(lt,Ge.id,ft.indexB,Xe.unitB);F(Tt.IX.ofSingleton(wt))&&(me=!0)}})})})}Fo.clear()}return me}var Yo=n(4506),ci=n(283);const Jo=Tr.I$.is;function Fi(oe,x,F,z){const me=oe.elements,Pe=oe.bonds,{edgeCount:Ge,a:Xe,b:Qe,edgeProps:lt,offset:ft}=Pe,{order:wt,flags:Ut}=lt,{sizeFactor:Jt,sizeAspectRatio:gn,adjustCylinderLength:Pn,aromaticBonds:wn,includeTypes:Bn,excludeTypes:Mn,multipleBonds:Ln}=z,cr="off"===Ln,qn="symmetric"===Ln,zn=So(Tr.I$.fromNames(Bn),Tr.I$.fromNames(Mn),32),Lr=(0,g.eB)(),wr=(0,g.eB)(),to=oe.conformation;let Cr;const Zr=Je.iZ.Location.create(x,oe),Io=Je.gn.Location(x,oe,void 0,x,oe,void 0),{child:wo}=x;if(z.includeParent&&wo){const go=wo.unitMap.get(oe.id);if(!go)throw new Error("expected childUnit to exist");Cr=Qo=>{const $o=me[Qe[Qo]];return Tt.SortedArray.has(go.elements,me[Xe[Qo]])&&!Tt.SortedArray.has(go.elements,$o)}}const{elementRingIndices:li,elementAromaticRingIndices:Vo}=oe.rings,jo=wn?oe.resonance.delocalizedTriplets:void 0;return{linkCount:2*Ge,referencePosition:go=>{let Qo=Xe[go],Ko=Qe[go];const $o=jo?.getThirdElement(Qo,Ko);if(void 0!==$o)return to.invariantPosition(me[$o],Lr);Qo>Ko&&([Qo,Ko]=[Ko,Qo]),ft[Qo+1]-ft[Qo]==1&&([Qo,Ko]=[Ko,Qo]);const fi=Vo.get(Qo)||li.get(Qo);let Zo=0;for(let ii=ft[Qo],Ai=ft[Qo+1];iiZo&&(Zo=As,to.invariantPosition(me[Xi],Lr))}}}return Zo>0?Lr:null},position:(go,Qo,Ko)=>{if(to.invariantPosition(me[Xe[Ko]],go),to.invariantPosition(me[Qe[Ko]],Qo),Pn){const $o=(go=>(Zr.element=me[Xe[go]],F.size.size(Zr)*Jt))(Ko),fi=(go=>(Zr.element=me[Qe[go]],F.size.size(Zr)*Jt))(Ko),Zo=Math.min($o,fi)*gn,ii=Math.sqrt(Math.max(0,$o*$o-Zo*Zo))-.05,Ai=Math.sqrt(Math.max(0,fi*fi-Zo*Zo))-.05;if(ii<=.01&&Ai<=.01)return;g.eB.normalize(wr,g.eB.sub(wr,Qo,go)),g.eB.scaleAndAdd(go,go,wr,ii),g.eB.scaleAndAdd(Qo,Qo,wr,-Ai)}},style:go=>{const Qo=wt[go],Ko=Ut[go];if(Jo(Ko,2)||Jo(Ko,4))return 1;if(3===Qo)return cr?0:qn?4:5;if(wn){const fi=Qe[go],Zo=Vo.get(Xe[go]),ii=Vo.get(fi),Ai=Zo&&ii?(0,nt.u$)(Zo,ii):0;if(Jo(Ko,16)||Ai&&!zn)return 2===Ai?8:7}return 2!==Qo||cr?0:qn?2:3},radius:go=>(go=>(Io.aIndex=Xe[go],Io.bIndex=Qe[go],F.size.size(Io)*Jt))(go)*gn,ignore:ao(x,oe,z),stub:Cr}}function hi(oe,x,F,z,me,Pe){if(!Je.Nf.isAtomic(x)||!x.bonds.edgeCount)return ci.S.createEmpty(Pe);const{child:Ge}=F,Xe=Ge?.unitMap.get(x.id);if(Ge&&!Xe)return ci.S.createEmpty(Pe);const Qe=Fi(x,F,z,me),{cylinders:lt,boundingSphere:ft}=(0,Vr.rm)(oe,Qe,me,Pe);if(ft)lt.setBoundingSphere(ft);else if(lt.cylinderCount>0){const wt=Bt.f8.expand((0,Bt.f8)(),(Xe??x).boundary.sphere,1*me.sizeFactor);lt.setBoundingSphere(wt)}return lt}function No(oe,x,F,z,me,Pe){if(!Je.Nf.isAtomic(x)||!x.bonds.edgeCount)return rr.e.createEmpty(Pe);const{child:Ge}=F,Xe=Ge?.unitMap.get(x.id);if(Ge&&!Xe)return rr.e.createEmpty(Pe);const Qe=Fi(x,F,z,me),{mesh:lt,boundingSphere:ft}=(0,Vr.C1)(oe,Qe,me,Pe);if(ft)lt.setBoundingSphere(ft);else if(lt.triangleCount>0){const wt=Bt.f8.expand((0,Bt.f8)(),(Xe??x).boundary.sphere,1*me.sizeFactor);lt.setBoundingSphere(wt)}return lt}const Ci={...tr.Te,...tr.lm,...vo,sizeFactor:v.t.Numeric(.3,{min:0,max:10,step:.01}),sizeAspectRatio:v.t.Numeric(2/3,{min:0,max:3,step:.01}),tryUseImpostor:v.t.Boolean(!0),includeParent:v.t.Boolean(!1)};function mi(oe,x,F,z){return F.tryUseImpostor&&z&&z.extensions.fragDepth?function qi(oe){return(0,tr.Vb)({defaultProps:v.t.getDefaultValues(Ci),createGeometry:hi,createLocationIterator:(x,F)=>Yr.fromGroup(x,{includeLocation2:"interpolate"===F.colorMode}),getLoci:jr,eachLocation:Co,setUpdateState:(x,F,z,me,Pe,Ge,Xe)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.sizeAspectRatio!==z.sizeAspectRatio||F.linkScale!==z.linkScale||F.linkSpacing!==z.linkSpacing||F.ignoreHydrogens!==z.ignoreHydrogens||F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant||F.linkCap!==z.linkCap||F.aromaticScale!==z.aromaticScale||F.aromaticSpacing!==z.aromaticSpacing||F.aromaticDashCount!==z.aromaticDashCount||F.dashCount!==z.dashCount||F.dashScale!==z.dashScale||F.dashCap!==z.dashCap||F.stubCap!==z.stubCap||!(0,G.af)(F.includeTypes,z.includeTypes)||!(0,G.af)(F.excludeTypes,z.excludeTypes)||F.adjustCylinderLength!==z.adjustCylinderLength||F.aromaticBonds!==z.aromaticBonds||F.multipleBonds!==z.multipleBonds,F.colorMode!==z.colorMode&&(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0);const Qe=Ge.group.units[0],lt=Xe.group.units[0];Je.Nf.isAtomic(Qe)&&Je.Nf.isAtomic(lt)&&(Yo.O.areEqual(Qe.bonds,lt.bonds)||(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0,x.updateSize=!0))},mustRecreate:(x,F,z)=>!F.tryUseImpostor||!z},oe)}(oe):function Oi(oe){return(0,tr.Pv)({defaultProps:v.t.getDefaultValues(Ci),createGeometry:No,createLocationIterator:x=>Yr.fromGroup(x),getLoci:jr,eachLocation:Co,setUpdateState:(x,F,z,me,Pe,Ge,Xe)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.sizeAspectRatio!==z.sizeAspectRatio||F.radialSegments!==z.radialSegments||F.linkScale!==z.linkScale||F.linkSpacing!==z.linkSpacing||F.ignoreHydrogens!==z.ignoreHydrogens||F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant||F.linkCap!==z.linkCap||F.aromaticScale!==z.aromaticScale||F.aromaticSpacing!==z.aromaticSpacing||F.aromaticDashCount!==z.aromaticDashCount||F.dashCount!==z.dashCount||F.dashScale!==z.dashScale||F.dashCap!==z.dashCap||F.stubCap!==z.stubCap||!(0,G.af)(F.includeTypes,z.includeTypes)||!(0,G.af)(F.excludeTypes,z.excludeTypes)||F.adjustCylinderLength!==z.adjustCylinderLength||F.aromaticBonds!==z.aromaticBonds||F.multipleBonds!==z.multipleBonds;const Qe=Ge.group.units[0],lt=Xe.group.units[0];Je.Nf.isAtomic(Qe)&&Je.Nf.isAtomic(lt)&&(Yo.O.areEqual(Qe.bonds,lt.bonds)||(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0,x.updateSize=!0))},mustRecreate:(x,F,z)=>F.tryUseImpostor&&!!z},oe)}(oe)}var ti=n(3892),es=n(1839);const Si=new Je.gn.ElementBondIterator;function Pi(oe,x,F,z){for(Si.setElement(x,F,z);Si.hasNext;){const me=Si.move();return me.otherUnit.conformation.position(me.otherUnit.elements[me.otherIndex],oe),oe}return null}const ni=(0,g.eB)();function gi(oe,x,F){const z=Je.iZ.Location.create(oe),me=Je.gn.Location(oe,void 0,void 0,oe,void 0,void 0),Pe=oe.interUnitBonds,{edgeCount:Ge,edges:Xe}=Pe,{sizeFactor:Qe,sizeAspectRatio:lt,adjustCylinderLength:ft,aromaticBonds:wt,multipleBonds:Ut}=F,Jt="off"===Ut,gn="symmetric"===Ut,Pn=(0,g.eB)();let wn;const{child:Bn}=oe;return F.includeParent&&Bn&&(wn=qn=>{const Qn=Xe[qn],Zn=Bn.unitMap.get(Qn.unitA),zn=Bn.unitMap.get(Qn.unitB),wr=oe.unitMap.get(Qn.unitA).elements[Qn.indexA],Cr=oe.unitMap.get(Qn.unitB).elements[Qn.indexB];return Zn&&es.X.has(Zn.elements,wr)&&(!zn||!es.X.has(zn.elements,Cr))}),{linkCount:Ge,referencePosition:qn=>{const Qn=Xe[qn];let Zn,zn,Lr,wr;if(Qn.unitAQn.unitB))throw new Error("same units in createInterUnitBondCylinderMesh");Zn=oe.unitMap.get(Qn.unitB),zn=oe.unitMap.get(Qn.unitA),Lr=Qn.indexB,wr=Qn.indexA}return Pi(ni,oe,Zn,Lr)||Pi(ni,oe,zn,wr)},position:(qn,Qn,Zn)=>{const zn=Xe[Zn],Lr=oe.unitMap.get(zn.unitA),wr=oe.unitMap.get(zn.unitB);if(Lr.conformation.position(Lr.elements[zn.indexA],qn),wr.conformation.position(wr.elements[zn.indexB],Qn),ft){const to=(qn=>{const Qn=Xe[qn];return z.unit=oe.unitMap.get(Qn.unitA),z.element=z.unit.elements[Qn.indexA],x.size.size(z)*Qe})(Zn),Cr=(qn=>{const Qn=Xe[qn];return z.unit=oe.unitMap.get(Qn.unitB),z.element=z.unit.elements[Qn.indexB],x.size.size(z)*Qe})(Zn),Zr=Math.min(to,Cr)*lt,Io=Math.sqrt(Math.max(0,to*to-Zr*Zr))-.05,wo=Math.sqrt(Math.max(0,Cr*Cr-Zr*Zr))-.05;if(Io<=.01&&wo<=.01)return;g.eB.normalize(Pn,g.eB.sub(Pn,Qn,qn)),g.eB.scaleAndAdd(qn,qn,Pn,Io),g.eB.scaleAndAdd(Qn,Qn,Pn,-wo)}},style:qn=>{const Qn=Xe[qn].props.order,Zn=G.NJ.create(Xe[qn].props.flag);return Tr.I$.is(Zn,2)||Tr.I$.is(Zn,4)?1:3===Qn?Jt?0:gn?4:5:wt&&Tr.I$.is(Zn,16)?7:2!==Qn||Jt?0:gn?2:3},radius:qn=>(qn=>{const Qn=Xe[qn];return me.aUnit=oe.unitMap.get(Qn.unitA),me.aIndex=Qn.indexA,me.bUnit=oe.unitMap.get(Qn.unitB),me.bIndex=Qn.indexB,x.size.size(me)*Qe})(qn)*lt,ignore:Po(oe,F),stub:wn}}function Wi(oe,x,F,z,me){if(!x.interUnitBonds.edgeCount)return ci.S.createEmpty(me);const Pe=gi(x,F,z),{cylinders:Ge,boundingSphere:Xe}=(0,Vr.rm)(oe,Pe,z,me);if(Xe)Ge.setBoundingSphere(Xe);else if(Ge.cylinderCount>0){const{child:Qe}=x,lt=Bt.f8.expand((0,Bt.f8)(),(Qe??x).boundary.sphere,1*z.sizeFactor);Ge.setBoundingSphere(lt)}return Ge}function Ri(oe,x,F,z,me){if(!x.interUnitBonds.edgeCount)return rr.e.createEmpty(me);const Pe=gi(x,F,z),{mesh:Ge,boundingSphere:Xe}=(0,Vr.C1)(oe,Pe,z,me);if(Xe)Ge.setBoundingSphere(Xe);else if(Ge.triangleCount>0){const{child:Qe}=x,lt=Bt.f8.expand((0,Bt.f8)(),(Qe??x).boundary.sphere,1*z.sizeFactor);Ge.setBoundingSphere(lt)}return Ge}const Qi={...ti.EN,...ti.KE,...vo,sizeFactor:v.t.Numeric(.3,{min:0,max:10,step:.01}),sizeAspectRatio:v.t.Numeric(2/3,{min:0,max:3,step:.01}),tryUseImpostor:v.t.Boolean(!0),includeParent:v.t.Boolean(!1)};function Hn(oe,x,F,z){return F.tryUseImpostor&&z&&z.extensions.fragDepth?function qr(oe){return(0,ti.UM)({defaultProps:v.t.getDefaultValues(Qi),createGeometry:Wi,createLocationIterator:(x,F)=>Yr.fromStructure(x,{includeLocation2:"interpolate"===F.colorMode}),getLoci:Eo,eachLocation:ei,setUpdateState:(x,F,z,me,Pe,Ge,Xe)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.sizeAspectRatio!==z.sizeAspectRatio||F.linkScale!==z.linkScale||F.linkSpacing!==z.linkSpacing||F.ignoreHydrogens!==z.ignoreHydrogens||F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant||F.linkCap!==z.linkCap||F.aromaticScale!==z.aromaticScale||F.aromaticSpacing!==z.aromaticSpacing||F.aromaticDashCount!==z.aromaticDashCount||F.dashCount!==z.dashCount||F.dashScale!==z.dashScale||F.dashCap!==z.dashCap||F.stubCap!==z.stubCap||!(0,G.af)(F.includeTypes,z.includeTypes)||!(0,G.af)(F.excludeTypes,z.excludeTypes)||F.adjustCylinderLength!==z.adjustCylinderLength||F.multipleBonds!==z.multipleBonds,F.colorMode!==z.colorMode&&(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0),Ge.interUnitBonds!==Xe.interUnitBonds&&(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0,x.updateSize=!0)},mustRecreate:(x,F,z)=>!F.tryUseImpostor||!z},oe)}(oe):function co(oe){return(0,ti.wA)({defaultProps:v.t.getDefaultValues(Qi),createGeometry:Ri,createLocationIterator:x=>Yr.fromStructure(x),getLoci:Eo,eachLocation:ei,setUpdateState:(x,F,z,me,Pe,Ge,Xe)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.sizeAspectRatio!==z.sizeAspectRatio||F.radialSegments!==z.radialSegments||F.linkScale!==z.linkScale||F.linkSpacing!==z.linkSpacing||F.ignoreHydrogens!==z.ignoreHydrogens||F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant||F.linkCap!==z.linkCap||F.aromaticScale!==z.aromaticScale||F.aromaticSpacing!==z.aromaticSpacing||F.aromaticDashCount!==z.aromaticDashCount||F.dashCount!==z.dashCount||F.dashScale!==z.dashScale||F.dashCap!==z.dashCap||F.stubCap!==z.stubCap||!(0,G.af)(F.includeTypes,z.includeTypes)||!(0,G.af)(F.excludeTypes,z.excludeTypes)||F.adjustCylinderLength!==z.adjustCylinderLength||F.multipleBonds!==z.multipleBonds,Ge.interUnitBonds!==Xe.interUnitBonds&&(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0,x.updateSize=!0)},mustRecreate:(x,F,z)=>F.tryUseImpostor&&!!z},oe)}(oe)}var zr=n(9132),lr=n(573),kr=n(4439),Qr=n(8231);const vi=ce.Gm.add3,Ti=ce.Gm.add;var Bi;!function(oe){oe.create=function x(F=2048,z=1024,me){const Pe=ce.Gm.create(Float32Array,3,z,me?me.centerBuffer.ref.value:F),Ge=ce.Gm.create(Float32Array,1,z,me?me.groupBuffer.ref.value:F);return{add:(Xe,Qe,lt,ft)=>{vi(Pe,Xe,Qe,lt),Ti(Ge,ft)},getSpheres:()=>{const Xe=ce.Gm.compact(Pe,!0),Qe=ce.Gm.compact(Ge,!0);return Qr.v.create(Xe,Qe,Pe.elementCount,me)}}}}(Bi||(Bi={}));const Li=g.eB.add;function bi(oe,x,F){const{ignoreHydrogens:z,ignoreHydrogensVariant:me,traceOnly:Pe}=F,Ge=Je.Nf.isCoarse(x),{child:Xe}=oe,Qe=Xe?.unitMap.get(x.id);if(Xe&&!Qe)throw new Error("expected childUnit to exist if child exists");if(Xe||z||Pe)return lt=>!!Qe&&!Tt.SortedArray.has(Qe.elements,lt)||!Ge&&z&&(0,Gr.v3)(oe,x,lt,me)||Pe&&!(0,Gr.UQ)(x,lt)}function Vi(oe,x,F,z,me,Pe){const{child:Ge}=F,Xe=Ge?.unitMap.get(x.id);if(Ge&&!Xe)return rr.e.createEmpty(Pe);const{detail:Qe,sizeFactor:lt,stride:ft}=me,{elements:wt,conformation:Ut}=x,Jt=wt.length,gn=Jt*(0,zr.J)(Qe),Pn=lr.P.createState(gn,gn/2,Pe),wn=(0,g.eB)(),Bn=bi(F,x,me),Mn=Je.iZ.Location.create(F,x),Ln=z.size.size,cr=(0,g.eB)();let qn=0,Qn=0;for(let wr=0;wrqn&&(qn=to),Pn.currentGroup=wr,(0,kr.X)(Pn,wn,to*lt,Qe)}const Zn=Pe?Bt.f8.clone(Pe.boundingSphere):void 0,zn=lr.P.getMesh(Pn);if(0===Qn)return zn;let Lr;return g.eB.scale(cr,cr,1/Qn),Lr=Zn&&g.eB.distance(cr,Zn.center)/Zn.radius<.1?Zn:Bt.f8.expand((0,Bt.f8)(),(Xe??x).boundary.sphere,qn*lt+.05),zn.setBoundingSphere(Lr),zn}function Ei(oe,x,F,z,me,Pe){const{child:Ge}=F,Xe=Ge?.unitMap.get(x.id);if(Ge&&!Xe)return Qr.v.createEmpty(Pe);const{sizeFactor:Qe,stride:lt}=me,{elements:ft,conformation:wt}=x,Ut=ft.length,Jt=Bi.create(Ut,Ut/2,Pe),gn=(0,g.eB)(),Pn=bi(F,x,me),wn=Je.iZ.Location.create(F,x),Bn=z.size.size,Mn=(0,g.eB)();let Ln=0,cr=0;if(lt&<>1||Pn||"uniform"!==z.size.granularity)for(let zn=0;znLn&&(Ln=Lr)}else{for(let zn=0;znPn&&(Pn=Io),Ut.currentGroup=lt(cr,Zr),(0,kr.X)(Ut,Lr,Io*Xe,Ge)}}const Bn=me?Bt.f8.clone(me.boundingSphere):void 0,Mn=lr.P.getMesh(Ut);if(0===wn)return Mn;let Ln;return g.eB.scale(gn,gn,1/wn),Ln=Bn&&g.eB.distance(gn,Bn.center)/Bn.radius<1?Bn:Bt.f8.expand((0,Bt.f8)(),(Pe??x).boundary.sphere,Pn*Xe+.05),Mn.setBoundingSphere(Ln),Mn}function ar(oe,x,F,z,me){const{child:Pe}=x,{sizeFactor:Ge,stride:Xe}=z,{getSerialIndex:Qe}=x.serialMapping,lt=x.elementCount,ft=Bi.create(lt,lt/2,me),wt=F.size.size,Ut=(0,g.eB)();let Jt=0,gn=0;for(const Mn of x.units){const Ln=Pe?.unitMap.get(Mn.id);if(Pe&&!Ln)return Qr.v.createEmpty(me);const{elements:cr,conformation:qn}=Mn,Qn=cr.length,Zn=(0,g.eB)(),zn=bi(x,Mn,z),Lr=Je.iZ.Location.create(x,Mn);if(Xe&&Xe>1||zn||"uniform"!==F.size.granularity)for(let wr=0;wrJt&&(Jt=Cr)}else{for(let wr=0;wr{const Ut=me.units[wt];return Qe.unit=Ut,Qe.element=Ut.elements[ft],Qe})},oe.fromStructure=function F(z){const{units:me,elementCount:Pe}=z,Ge=Pe,{unitIndices:Qe,elementIndices:lt}=z.serialMapping,ft=Je.iZ.Location.create(z);return(0,oo.iQ)(Ge,1,1,Ut=>(ft.unit=me[Qe[Ut]],ft.element=lt[Ut],ft),!0)}}(sr||(sr={}));var Jn=n(5019);const Br={sizeFactor:v.t.Numeric(1,{min:0,max:10,step:.1}),detail:v.t.Numeric(0,{min:0,max:3,step:1},Jn.iy.CustomQualityParamInfo),ignoreHydrogens:v.t.Boolean(!1),ignoreHydrogensVariant:v.t.Select("all",v.t.arrayToOptions(["all","non-polar"])),traceOnly:v.t.Boolean(!1),tryUseImpostor:v.t.Boolean(!0),stride:v.t.Numeric(1,{min:1,max:100,step:1})},st={...tr.Te,...tr.qg,...Br};function et(oe,x,F,z){return F.tryUseImpostor&&z&&z.extensions.fragDepth&&z.extensions.textureFloat?function at(oe){return(0,tr.uF)({defaultProps:v.t.getDefaultValues(st),createGeometry:Ei,createLocationIterator:sr.fromGroup,getLoci:Ht,eachLocation:ln,setUpdateState:(x,F,z)=>{x.createGeometry=F.ignoreHydrogens!==z.ignoreHydrogens||F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant||F.traceOnly!==z.traceOnly||F.stride!==z.stride},mustRecreate:(x,F,z)=>!F.tryUseImpostor||!z},oe)}(oe):function Et(oe){return(0,tr.Pv)({defaultProps:v.t.getDefaultValues(st),createGeometry:Vi,createLocationIterator:sr.fromGroup,getLoci:Ht,eachLocation:ln,setUpdateState:(x,F,z)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.detail!==z.detail||F.ignoreHydrogens!==z.ignoreHydrogens||F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant||F.traceOnly!==z.traceOnly||F.stride!==z.stride},mustRecreate:(x,F,z)=>F.tryUseImpostor&&!!z},oe)}(oe)}const Nt={...ti.EN,...ti.T9,...Br};function qt(oe,x,F,z){return F.tryUseImpostor&&z&&z.extensions.fragDepth&&z.extensions.textureFloat?function Cn(oe){return(0,ti.zo)({defaultProps:v.t.getDefaultValues(Nt),createGeometry:ar,createLocationIterator:sr.fromStructure,getLoci:ur,eachLocation:kn,setUpdateState:(x,F,z)=>{x.createGeometry=F.ignoreHydrogens!==z.ignoreHydrogens||F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant||F.traceOnly!==z.traceOnly||F.stride!==z.stride},mustRecreate:(x,F,z)=>!F.tryUseImpostor||!z},oe)}(oe):function Un(oe){return(0,ti.wA)({defaultProps:v.t.getDefaultValues(Nt),createGeometry:Gn,createLocationIterator:sr.fromStructure,getLoci:ur,eachLocation:kn,setUpdateState:(x,F,z)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.detail!==z.detail||F.ignoreHydrogens!==z.ignoreHydrogens||F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant||F.traceOnly!==z.traceOnly||F.stride!==z.stride},mustRecreate:(x,F,z)=>F.tryUseImpostor&&!!z},oe)}(oe)}var vn=n(8688),nr=n(1137),pr=n(1758),Rr=n(5201);const mo={"element-sphere":(oe,x)=>(0,vn.T)("Element sphere",oe,x,et),"intra-bond":(oe,x)=>(0,vn.T)("Intra-unit bond cylinder",oe,x,mi),"inter-bond":(oe,x)=>(0,nr.K)("Inter-unit bond cylinder",oe,x,Hn)},Uo={...st,traceOnly:v.t.Boolean(!1,{isHidden:!0}),...Ci,...Qi,includeParent:v.t.Boolean(!1),unitKinds:(0,Rr.R8)(["atomic"]),sizeFactor:v.t.Numeric(.15,{min:.01,max:10,step:.01}),sizeAspectRatio:v.t.Numeric(2/3,{min:.01,max:3,step:.01}),visuals:v.t.MultiSelect(["element-sphere","intra-bond","inter-bond"],v.t.objectToOptions(mo)),bumpFrequency:v.t.Numeric(0,{min:0,max:10,step:.1},Jn.iy.ShadingCategory)},fo=(0,pr.GT)({name:"ball-and-stick",label:"Ball & Stick",description:"Displays atoms as spheres and bonds as cylinders.",factory:function ri(oe,x){return dr.YL.createMulti("Ball & Stick",oe,x,pr.J1,mo)},getParams:function qo(oe,x){if(Je.oE.getSize(x)>=Je.oE.Size.Huge){const z=v.t.clone(Uo);return z.visuals.defaultValue=["element-sphere","intra-bond"],z}return Uo},defaultValues:v.t.getDefaultValues(Uo),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"physical"},isApplicable:oe=>oe.elementCount>0,getData:(oe,x)=>x.includeParent?oe.asParent():oe,mustRecreate:(oe,x)=>oe.includeParent!==x.includeParent});function Lo(oe,x,F,z,me){const{links:Pe,elements:Ge}=x.carbohydrates,{linkSizeFactor:Xe}=z,Qe=Je.iZ.Location.create(x),lt={linkCount:Pe.length,position:(Ut,Jt,gn)=>{const Pn=Pe[gn];g.eB.copy(Ut,Ge[Pn.carbohydrateIndexA].geometry.center),g.eB.copy(Jt,Ge[Pn.carbohydrateIndexB].geometry.center)},radius:Ut=>{const gn=Ge[Pe[Ut].carbohydrateIndexA],Pn=gn.unit.rings.all[gn.ringIndex];return Qe.unit=gn.unit,Qe.element=gn.unit.elements[Pn[0]],F.size.size(Qe)*Xe}},{mesh:ft,boundingSphere:wt}=(0,Vr.C1)(oe,lt,z,me);if(wt)ft.setBoundingSphere(wt);else if(ft.triangleCount>0){const Ut=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,1*Xe);ft.setBoundingSphere(Ut)}return ft}const Ni={...tr.Te,...Vr.Lr,linkSizeFactor:v.t.Numeric(.3,{min:0,max:3,step:.01})};function rs(oe){return(0,ti.wA)({defaultProps:v.t.getDefaultValues(Ni),createGeometry:Lo,createLocationIterator:Gi,getLoci:_o,eachLocation:Wr,setUpdateState:(x,F,z)=>{x.createGeometry=F.linkSizeFactor!==z.linkSizeFactor||F.radialSegments!==z.radialSegments||F.linkCap!==z.linkCap}},oe)}function Gi(oe){const{elements:x,links:F}=oe.carbohydrates,z=F.length,Pe=Je.iZ.Location.create(oe);return(0,oo.iQ)(z,1,1,Xe=>{const lt=x[F[Xe].carbohydrateIndexA],ft=lt.unit.rings.all[lt.ringIndex];return Pe.unit=lt.unit,Pe.element=lt.unit.elements[ft[0]],Pe},!0)}function _o(oe,x,F){const{objectId:z,groupId:me}=oe;if(F===z){const{links:Pe,elements:Ge}=x.carbohydrates,Xe=Pe[me],Qe=Ge[Xe.carbohydrateIndexA],lt=Ge[Xe.carbohydrateIndexB];return Je.iZ.Loci.union((0,Gr.rS)(x,Qe.unit,Qe.residueIndex,Qe.altId),(0,Gr.rS)(x,lt.unit,lt.residueIndex,lt.altId))}return Rn.BL}const hr=new Set;function Wr(oe,x,F){let z=!1;if(!Je.iZ.Loci.is(oe)||!Je.oE.areEquivalent(oe.structure,x))return!1;const{getLinkIndices:me}=x.carbohydrates;for(const{unit:Pe,indices:Ge}of oe.elements)Je.Nf.isAtomic(Pe)&&(hr.clear(),Tt.CD.forEach(Ge,Xe=>{const Qe=me(Pe,Pe.elements[Xe]);for(let lt=0,ft=Qe.length;lt{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.detail!==z.detail}},oe)}function Ya(oe){const x=oe.carbohydrates.elements,F=2*x.length,me=Je.iZ.Location.create(oe);return(0,oo.iQ)(F,1,1,function Pe(Xe,Qe){const lt=x[Math.floor(Xe/2)],ft=lt.unit.rings.all[lt.ringIndex];return me.unit=lt.unit,me.element=lt.unit.elements[ft[0]],me},!0,function Ge(Xe,Qe){return Xe%2==1})}function Zc(oe,x,F){const{objectId:z,groupId:me}=oe;if(F===z){const Pe=x.carbohydrates.elements[Math.floor(me/2)];return(0,Gr.rS)(x,Pe.unit,Pe.residueIndex,Pe.altId)}return Rn.BL}const Pa=new Set;function _m(oe,x,F){const{getElementIndices:z}=x.carbohydrates;let me=!1;if(!Je.iZ.Loci.is(oe)||!Je.oE.areEquivalent(oe.structure,x))return!1;for(const{unit:Pe,indices:Ge}of oe.elements)Je.Nf.isAtomic(Pe)&&(Pa.clear(),Tt.CD.forEach(Ge,Xe=>{const Qe=z(Pe,Pe.elements[Xe]);for(let lt=0,ft=Qe.length;lt{const Pn=Pe[gn];Pn.fromCarbohydrate?(g.eB.copy(Ut,Ge[Pn.carbohydrateIndex].geometry.center),Pn.elementUnit.conformation.position(Pn.elementUnit.elements[Pn.elementIndex],Jt)):(Pn.elementUnit.conformation.position(Pn.elementUnit.elements[Pn.elementIndex],Ut),g.eB.copy(Jt,Ge[Pn.carbohydrateIndex].geometry.center))},radius:Ut=>{const Jt=Pe[Ut];if(Jt.fromCarbohydrate){const gn=Ge[Jt.carbohydrateIndex],Pn=gn.unit.rings.all[gn.ringIndex];Qe.unit=gn.unit,Qe.element=gn.unit.elements[Pn[0]]}else Qe.unit=Jt.elementUnit,Qe.element=Jt.elementUnit.elements[Jt.elementIndex];return F.size.size(Qe)*Xe},style:Ut=>{const Jt=Pe[Ut],Pn=(0,sd.Yd)(Jt.elementUnit.model.atomicHierarchy.atoms.type_symbol.value(Jt.elementUnit.elements[Jt.elementIndex]));return sd.ZL.has(Pn)?1:0}},{mesh:ft,boundingSphere:wt}=(0,Vr.C1)(oe,lt,z,me);if(wt)ft.setBoundingSphere(wt);else if(ft.triangleCount>0){const Ut=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,1*Xe);ft.setBoundingSphere(Ut)}return ft}const ad={...tr.Te,...Vr.Lr,terminalLinkSizeFactor:v.t.Numeric(.2,{min:0,max:3,step:.01})};function xm(oe){return(0,ti.wA)({defaultProps:v.t.getDefaultValues(ad),createGeometry:bm,createLocationIterator:Cm,getLoci:Sm,eachLocation:Em,setUpdateState:(x,F,z)=>{x.createGeometry=F.terminalLinkSizeFactor!==z.terminalLinkSizeFactor||F.radialSegments!==z.radialSegments||F.linkCap!==z.linkCap}},oe)}function Cm(oe){const{elements:x,terminalLinks:F}=oe.carbohydrates,z=F.length,Pe=Je.iZ.Location.create(oe);return(0,oo.iQ)(z,1,1,Xe=>{const Qe=F[Xe];if(Qe.fromCarbohydrate){const lt=x[Qe.carbohydrateIndex],ft=lt.unit.rings.all[lt.ringIndex];Pe.unit=lt.unit,Pe.element=lt.unit.elements[ft[0]]}else Pe.unit=Qe.elementUnit,Pe.element=Qe.elementUnit.elements[Qe.elementIndex];return Pe},!0)}function Sm(oe,x,F){const{objectId:z,groupId:me}=oe;if(F===z){const{terminalLinks:Pe,elements:Ge}=x.carbohydrates,Xe=Pe[me],Qe=Ge[Xe.carbohydrateIndex];return Je.iZ.Loci.union((0,Gr.rS)(x,Qe.unit,Qe.residueIndex,Qe.altId),(0,Gr.uh)(x,Xe.elementUnit,Xe.elementUnit.elements[Xe.elementIndex]))}return Rn.BL}const Vu=new Set;function Em(oe,x,F){let z=!1;if(!Je.iZ.Loci.is(oe)||!Je.oE.areEquivalent(oe.structure,x))return!1;const{getTerminalLinkIndices:me}=x.carbohydrates;for(const{unit:Pe,indices:Ge}of oe.elements)Je.Nf.isAtomic(Pe)&&(Vu.clear(),Tt.CD.forEach(Ge,Xe=>{const Qe=me(Pe,Pe.elements[Xe]);for(let lt=0,ft=Qe.length;lt(0,nr.K)("Carbohydrate symbol mesh",oe,x,ma),"carbohydrate-link":(oe,x)=>(0,nr.K)("Carbohydrate link cylinder",oe,x,rs),"carbohydrate-terminal-link":(oe,x)=>(0,nr.K)("Carbohydrate terminal link cylinder",oe,x,xm)},ud={...Es,...Ni,...ad,visuals:v.t.MultiSelect(["carbohydrate-symbol","carbohydrate-link","carbohydrate-terminal-link"],v.t.objectToOptions(cd)),bumpFrequency:v.t.Numeric(0,{min:0,max:10,step:.1},Jn.iy.ShadingCategory)},Pm=(0,pr.GT)({name:"carbohydrate",label:"Carbohydrate",description:"Displays carbohydrate symbols (3D SNFG).",factory:function Am(oe,x){return dr.YL.createMulti("Carbohydrate",oe,x,pr.J1,cd)},getParams:function Im(oe,x){return ud},defaultValues:v.t.getDefaultValues(ud),defaultColorTheme:{name:"carbohydrate-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:oe=>oe.models.some(x=>Je.Kx.hasCarbohydrate(x))});var _i=n(2802),oa=n(5734);function ld(oe,x){switch(oe.kind){case 0:return function Tm(oe,x){const F=oe.model.atomicRanges.cyclicPolymerMap,z=oa.m.transientSegments(Lc(oe),oe.elements),me=Tt.hT.transientSegments(oe.model.atomicHierarchy.residueAtomSegments,oe.elements),Pe=oe.model.atomicHierarchy.derived.residue.traceElementIndex,{moleculeType:Ge}=oe.model.atomicHierarchy.derived.residue;let Xe=-1,Qe=-1,lt=!0,ft=-1,wt=0;for(;z.hasNext;){for(lt=!0,ft=wt,me.setSegment(z.move());me.hasNext;){if(lt){const Jt=me.move().index;if(++wt,!me.hasNext)continue;lt=!1,Qe=Jt}Xe=Qe,Qe=me.move().index,x(Pe[Xe],Pe[Qe],wt-1,wt,Ge[Xe]),++wt}F.has(Qe)&&(Xe=Qe,Qe=F.get(Xe),x(Pe[Xe],Pe[Qe],wt-1,ft,Ge[Xe]))}}(oe,x);case 1:case 2:return function Bm(oe,x){const F=oa.m.transientSegments(Lc(oe),oe.elements),{elements:z}=oe;let me=!0,Pe=0;for(;F.hasNext;){me=!0;const Ge=F.move();for(let lt=Ge.start,ft=Ge.end;ltft)continue;me=!1}x(z[lt-1],z[lt],Pe-1,Pe,0),++Pe}}}(oe,x)}}function dd(oe,x){switch(oe.kind){case 0:return function Dm(oe,x){const F=oa.m.transientSegments(Lc(oe),oe.elements),z=Tt.hT.transientSegments(oe.model.atomicHierarchy.residueAtomSegments,oe.elements),me=oe.model.atomicHierarchy.derived.residue.traceElementIndex;let Pe=0;for(;F.hasNext;)for(z.setSegment(F.move());z.hasNext;)x(me[z.move().index],Pe),++Pe}(oe,x);case 1:case 2:return function Mm(oe,x){const F=oa.m.transientSegments(Lc(oe),oe.elements),{elements:z}=oe;let me=0;for(;F.hasNext;){const Pe=F.move();for(let Qe=Pe.start,lt=Pe.end;Qe({}),isApplicable:oe=>!0,obtain:function(){var oe=(0,r.A)(function*(x,F){return{value:Um(F)}});return function(F,z){return oe.apply(this,arguments)}}()});function Hs(oe){return Tr.gG.is(oe,2)}function zu(oe,x,F={}){switch(oe.kind){case 0:return new Gm(oe,x,F);case 1:case 2:return new zm(oe,x)}}const Xc=Tr.gG.create(536870912);function md(oe,x){return{center:Je.iZ.Location.create(oe,x),centerPrev:Je.iZ.Location.create(oe,x),centerNext:Je.iZ.Location.create(oe,x),first:!1,last:!1,initial:!1,final:!1,secStrucFirst:!1,secStrucLast:!1,secStrucType:Xc,moleculeType:0,coarseBackboneFirst:!1,coarseBackboneLast:!1,isCoarseBackbone:!1,p0:(0,g.eB)(),p1:(0,g.eB)(),p2:(0,g.eB)(),p3:(0,g.eB)(),p4:(0,g.eB)(),d12:(0,g.eB)(),d23:(0,g.eB)()}}const xo=(0,g.eB)(),$c=(0,g.eB)(),Jc=(0,g.eB)();class Gm{atomicPos(x,F){-1!==F&&(x[0]=this.atomicConformation.x[F],x[1]=this.atomicConformation.y[F],x[2]=this.atomicConformation.z[F])}pos(x,F,z){const me=this.traceElementIndex[F];this.helixOrientationCenters&&Hs(z)?g.eB.fromArray(x,this.helixOrientationCenters,3*F):this.atomicPos(x,me)}updateResidueSegmentRange(x){const{index:F}=this.residueAtomSegments;this.residueSegmentMin=F[this.polymerRanges[2*x.index]],this.residueSegmentMax=F[this.polymerRanges[2*x.index+1]]}getResidueIndex(x){if(xthis.residueSegmentMax){const F=this.cyclicPolymerMap.get(this.residueSegmentMax);x=void 0!==F?F+(x-this.residueSegmentMax-1):this.residueSegmentMax}return x}getSecStruc(x){if(this.secondaryStructure){const{type:F,getIndex:z}=this.secondaryStructure,me=F[z(x)];return Hs(me)?2:me}return Xc}setControlPoint(x,F,z,me,Pe){(function Vm(oe){return Tr.gG.is(oe,4)})(Pe)||this.helixOrientationCenters&&Hs(Pe)?g.eB.scale(x,g.eB.add(x,F,g.eB.add(x,me,g.eB.add(x,z,z))),1/4):g.eB.copy(x,z)}setFromToVector(x,F,z){this.value.isCoarseBackbone||this.helixOrientationCenters&&Hs(z)?g.eB.set(x,1,0,0):(this.atomicPos($c,this.directionFromElementIndex[F]),this.atomicPos(Jc,this.directionToElementIndex[F]),g.eB.sub(x,Jc,$c))}setDirection(x,F,z,me){g.eB.matchDirection($c,F,z),g.eB.matchDirection(Jc,me,z),g.eB.scale(x,g.eB.add(x,$c,g.eB.add(x,Jc,g.eB.add(x,z,z))),1/4)}move(){const{residueIt:x,polymerIt:F,value:z}=this;if(0===this.state)for(;F.hasNext;)if(this.polymerSegment=F.move(),x.setSegment(this.polymerSegment),this.updateResidueSegmentRange(this.polymerSegment),x.hasNext){this.state=1;const me=this.residueAtomSegments.index[this.unit.elements[this.polymerSegment.start]],Pe=this.getResidueIndex(me-1);this.currSecStrucType=me===Pe?Xc:this.getSecStruc(Pe),this.nextSecStrucType=this.getSecStruc(me),this.currCoarseBackbone=-1===this.directionFromElementIndex[Pe]||-1===this.directionToElementIndex[Pe],this.nextCoarseBackbone=-1===this.directionFromElementIndex[me]||-1===this.directionToElementIndex[me];break}if(1===this.state){const{index:me}=x.move(),Pe=this.getResidueIndex(me-3),Ge=this.getResidueIndex(me-2),Xe=this.getResidueIndex(me-1),Qe=this.getResidueIndex(me+1),lt=this.getResidueIndex(me+2),ft=this.getResidueIndex(me+3);this.prevSecStrucType=this.getSecStruc(Xe),this.currSecStrucType=this.getSecStruc(me),this.nextSecStrucType=me===Qe?Xc:this.getSecStruc(Qe),this.prevCoarseBackbone=this.currCoarseBackbone,this.currCoarseBackbone=this.nextCoarseBackbone,this.nextCoarseBackbone=-1===this.directionFromElementIndex[Qe]||-1===this.directionToElementIndex[Qe],z.secStrucType=this.currSecStrucType,z.secStrucFirst=this.prevSecStrucType!==this.currSecStrucType,z.secStrucLast=this.currSecStrucType!==this.nextSecStrucType,z.isCoarseBackbone=this.currCoarseBackbone,z.coarseBackboneFirst=this.prevCoarseBackbone!==this.currCoarseBackbone,z.coarseBackboneLast=this.currCoarseBackbone!==this.nextCoarseBackbone,z.first=me===this.residueSegmentMin,z.last=me===this.residueSegmentMax,z.moleculeType=this.moleculeType[me],z.initial=me===Xe,z.final=me===Qe,z.centerPrev.element=this.traceElementIndex[Xe],z.center.element=this.traceElementIndex[me],z.centerNext.element=this.traceElementIndex[Qe];const wt=this.getSecStruc(Pe),Ut=this.getSecStruc(Ge),Jt=this.getSecStruc(Xe),gn=this.getSecStruc(me),Pn=this.getSecStruc(Qe),wn=this.getSecStruc(lt),Bn=this.getSecStruc(ft);this.pos(this.p0,Pe,wt),this.pos(this.p1,Ge,Ut),this.pos(this.p2,Xe,Jt),this.pos(this.p3,me,gn),this.pos(this.p4,Qe,Pn),this.pos(this.p5,lt,wn),this.pos(this.p6,ft,Bn);const Mn=Hs(wt),Ln=Hs(Ut),cr=Hs(Jt),qn=Hs(gn),Qn=Hs(Pn),Zn=Hs(wn),zn=Hs(Bn);this.helixOrientationCenters&&(qn!==cr?qn?(g.eB.copy(this.p0,this.p3),g.eB.copy(this.p1,this.p3),g.eB.copy(this.p2,this.p3)):cr&&(g.eB.scale(xo,g.eB.sub(xo,this.p2,this.p3),2),g.eB.add(this.p2,this.p3,xo),g.eB.add(this.p1,this.p2,xo),g.eB.add(this.p0,this.p1,xo)):qn!==Ln?qn?(g.eB.copy(this.p0,this.p2),g.eB.copy(this.p1,this.p2)):Ln&&(g.eB.scale(xo,g.eB.sub(xo,this.p1,this.p2),2),g.eB.add(this.p1,this.p2,xo),g.eB.add(this.p0,this.p1,xo)):qn!==Mn&&(qn?g.eB.copy(this.p0,this.p1):Mn&&(g.eB.scale(xo,g.eB.sub(xo,this.p0,this.p1),2),g.eB.add(this.p0,this.p1,xo))),qn!==Qn?qn?(g.eB.copy(this.p4,this.p3),g.eB.copy(this.p5,this.p3),g.eB.copy(this.p6,this.p3)):Qn&&(g.eB.scale(xo,g.eB.sub(xo,this.p4,this.p3),2),g.eB.add(this.p4,this.p3,xo),g.eB.add(this.p5,this.p4,xo),g.eB.add(this.p6,this.p5,xo)):qn!==Zn?qn?(g.eB.copy(this.p5,this.p4),g.eB.copy(this.p6,this.p4)):Zn&&(g.eB.scale(xo,g.eB.sub(xo,this.p5,this.p4),2),g.eB.add(this.p5,this.p4,xo),g.eB.add(this.p6,this.p5,xo)):qn!==zn&&(qn?g.eB.copy(this.p6,this.p5):zn&&(g.eB.scale(xo,g.eB.sub(xo,this.p6,this.p5),2),g.eB.add(this.p6,this.p5,xo)))),this.setFromToVector(this.d01,Xe,Jt),this.setFromToVector(this.d12,me,gn),this.setFromToVector(this.d23,Qe,Pn),this.setFromToVector(this.d34,lt,wn);const Lr=qn&&this.helixOrientationCenters,wr=1.5;me===Xe||gn!==Jt&&Lr?(g.eB.setMagnitude(xo,g.eB.sub(xo,this.p3,this.p4),wr),g.eB.add(this.p2,this.p3,xo),g.eB.add(this.p1,this.p2,xo),g.eB.add(this.p0,this.p1,xo)):Xe===Ge||gn!==Ut&&Lr?(g.eB.setMagnitude(xo,g.eB.sub(xo,this.p2,this.p3),wr),g.eB.add(this.p1,this.p2,xo),g.eB.add(this.p0,this.p1,xo)):(Ge===Pe||gn!==wt&&Lr)&&(g.eB.setMagnitude(xo,g.eB.sub(xo,this.p1,this.p2),wr),g.eB.add(this.p0,this.p1,xo)),me===Qe||gn!==Pn&&Lr?(g.eB.setMagnitude(xo,g.eB.sub(xo,this.p3,this.p2),wr),g.eB.add(this.p4,this.p3,xo),g.eB.add(this.p5,this.p4,xo),g.eB.add(this.p6,this.p5,xo)):Qe===lt||gn!==wn&&Lr?(g.eB.setMagnitude(xo,g.eB.sub(xo,this.p4,this.p3),wr),g.eB.add(this.p5,this.p4,xo),g.eB.add(this.p6,this.p5,xo)):(lt===ft||gn!==Bn&&Lr)&&(g.eB.setMagnitude(xo,g.eB.sub(xo,this.p5,this.p4),wr),g.eB.add(this.p6,this.p5,xo)),this.setControlPoint(z.p0,this.p0,this.p1,this.p2,Ut),this.setControlPoint(z.p1,this.p1,this.p2,this.p3,Jt),this.setControlPoint(z.p2,this.p2,this.p3,this.p4,gn),this.setControlPoint(z.p3,this.p3,this.p4,this.p5,Pn),this.setControlPoint(z.p4,this.p4,this.p5,this.p6,wn),this.setDirection(z.d12,this.d01,this.d12,this.d23),this.setDirection(z.d23,this.d12,this.d23,this.d34),x.hasNext||(this.state=0)}return this.hasNext=x.hasNext||F.hasNext,this.value}constructor(x,F,z={}){var me;if(this.unit=x,this.state=0,this.p0=(0,g.eB)(),this.p1=(0,g.eB)(),this.p2=(0,g.eB)(),this.p3=(0,g.eB)(),this.p4=(0,g.eB)(),this.p5=(0,g.eB)(),this.p6=(0,g.eB)(),this.d01=(0,g.eB)(),this.d12=(0,g.eB)(),this.d23=(0,g.eB)(),this.d34=(0,g.eB)(),this.hasNext=!1,this.atomicConformation=x.model.atomicConformation,this.residueAtomSegments=x.model.atomicHierarchy.residueAtomSegments,this.polymerRanges=x.model.atomicRanges.polymerRanges,this.traceElementIndex=x.model.atomicHierarchy.derived.residue.traceElementIndex,this.directionFromElementIndex=x.model.atomicHierarchy.derived.residue.directionFromElementIndex,this.directionToElementIndex=x.model.atomicHierarchy.derived.residue.directionToElementIndex,this.moleculeType=x.model.atomicHierarchy.derived.residue.moleculeType,this.cyclicPolymerMap=x.model.atomicRanges.cyclicPolymerMap,this.polymerIt=oa.m.transientSegments(this.polymerRanges,x.elements),this.residueIt=Tt.hT.transientSegments(this.residueAtomSegments,x.elements),this.value=md(F,x),this.hasNext=this.residueIt.hasNext&&this.polymerIt.hasNext,z.ignoreSecondaryStructure||(this.secondaryStructure=null===(me=Yc.v.get(F).value)||void 0===me?void 0:me.get(x.invariantId)),z.useHelixOrientation){const Pe=Gu.get(x.model).value;if(!Pe)throw new Error("missing helix-orientation");this.helixOrientationCenters=Pe.centers}}}class zm{getElementIndex(x){return Math.min(Math.max(this.polymerSegment.start,x),this.polymerSegment.end-1)}pos(x,F){const z=this.unit.elements[F];x[0]=this.conformation.x[z],x[1]=this.conformation.y[z],x[2]=this.conformation.z[z]}move(){if(0===this.state)for(;this.polymerIt.hasNext;)if(this.polymerSegment=this.polymerIt.move(),this.elementIndex=this.polymerSegment.start,this.elementIndex=this.polymerSegment.end&&(this.state=0)}return this.hasNext=this.elementIndex+1=0)){Xe=lt;break}}if(Ge<0)return!1;let Qe=Ge;for(let lt=Pe;lt>Xe;lt--){const ft=F[lt];if(ft<0)continue;const wt=Tt.CD.indexOf(x,ft);if(wt>=0){Qe=wt;break}}return z(Tt.IX.ofRange(oe+Ge,oe+Qe))}function Sd(oe,x,F,z,me){let Pe=!1;const{elements:Ge}=me.unit,{traceElementIndex:Xe}=me.unit.model.atomicHierarchy.derived.residue,{index:Qe}=me.unit.model.atomicHierarchy.residueAtomSegments,lt=F(me.unit);if(Tt.IX.is(me.indices))Pe=0===Tt.IX.start(me.indices)&&Tt.IX.end(me.indices)===me.unit.elements.length?z(Tt.IX.ofBounds(oe,oe+x))||Pe:Cd(oe,lt,Xe,z,Qe[Ge[Tt.IX.min(me.indices)]],Qe[Ge[Tt.IX.max(me.indices)]])||Pe;else{const{indices:ft}=me;for(let wt=0,Ut=ft.length;wt1)break;gn=wn,Pn++}wt=Pn-1,Pe=Cd(oe,lt,Xe,z,Jt,gn)||Pe}}return Pe}function Xm(oe){return oe.polymerElements}function Da(oe,x,F){let z=!1;if(!Je.iZ.Loci.is(oe))return!1;const{structure:me,group:Pe}=x;if(!Je.oE.areEquivalent(oe.structure,me))return!1;const Ge=Pe.units[0].polymerElements.length;for(const Xe of oe.elements){if(!Pe.unitIndexMap.has(Xe.unit.id))continue;const Qe=Pe.unitIndexMap.get(Xe.unit.id)*Ge;if(Je.Nf.isAtomic(Xe.unit))z=Sd(Qe,Ge,Xm,F,Xe)||z;else if(Tt.IX.is(Xe.indices)){const lt=Qe+Tt.IX.start(Xe.indices),ft=Qe+Tt.IX.end(Xe.indices);z=F(Tt.IX.ofBounds(lt,ft))||z}else for(let lt=0,ft=Xe.indices.length;lt{const ft=Tt.CD.indexOf(Xe.unit.gapElements,Xe.unit.elements[lt]);-1!==ft&&F(Tt.IX.ofSingleton(Qe*Ge+ft))&&(z=!0)})}}return z}function Ma(oe,x,F){const{objectId:z,instanceId:me,groupId:Pe}=oe;if(F===z){const{structure:Ge,group:Xe}=x,Qe=Xe.units[me];if(Je.Nf.isAtomic(Qe))return(0,Gr.nR)(Ge,Qe,Qe.nucleotideElements[Pe])}return Rn.BL}function qm(oe){return oe.nucleotideElements}function Oa(oe,x,F){let z=!1;if(!Je.iZ.Loci.is(oe))return!1;const{structure:me,group:Pe}=x;if(!Je.oE.areEquivalent(oe.structure,me))return!1;const Ge=Pe.units[0];if(!Je.Nf.isAtomic(Ge))return!1;const{nucleotideElements:Xe}=Ge,Qe=Xe.length;for(const lt of oe.elements){if(!Je.Nf.isAtomic(lt.unit)||!Pe.unitIndexMap.has(lt.unit.id))continue;const ft=Pe.unitIndexMap.get(lt.unit.id)*Qe;Je.Nf.isAtomic(lt.unit)&&(z=Sd(ft,Qe,qm,F,lt)||z)}return z}!function(oe){oe.fromGroup=function x(F,z){const{group:me,structure:Pe}=F,Ge=me.units[0].polymerElements,Xe=Ge.length,Qe=me.units.length,lt=Je.iZ.Location.create(Pe),wt=!!z?.asSecondary;return(0,oo.iQ)(Xe,Qe,1,(Jt,gn)=>(lt.unit=me.units[gn],lt.element=Ge[Jt],lt),!1,function Ut(Jt,gn){return wt})}}(ia||(ia={})),function(oe){oe.fromGroup=function x(F){const{group:z,structure:me}=F,Pe=z.units[0].gapElements,Ge=Pe.length,Xe=z.units.length,Qe=Je.iZ.Location.create(me);return(0,oo.iQ)(Ge,Xe,1,(ft,wt)=>(Qe.unit=z.units[wt],Qe.element=Pe[ft],Qe))}}($u||($u={})),function(oe){oe.fromGroup=function x(F){const{group:z,structure:me}=F,Pe=z.units[0],Ge=Je.Nf.isAtomic(Pe)?Pe.nucleotideElements:[],Xe=Ge.length,Qe=z.units.length,lt=Je.iZ.Location.create(me);return(0,oo.iQ)(Xe,Qe,1,(wt,Ut)=>(lt.unit=z.units[Ut],lt.element=Ge[wt],lt))}}(sa||(sa={}));const ep=(0,M.e)(),tp=(0,M.e)();function Ra(oe,x){const{model:F,conformation:z}=oe,{residueAtomSegments:me,atoms:Pe,index:Ge}=F.atomicHierarchy,{label_comp_id:Xe}=Pe,Qe=Xe.value(me.offsets[x]);let lt=(0,Tr.VH)(Qe),ft=(0,Tr.qN)(Qe);if(!lt&&!ft){const wt=Ge.findAtomOnResidue(x,"C4"),Ut=Ge.findAtomOnResidue(x,"N9");-1!==wt&&-1!==Ut&&M.e.distance(z.invariantPosition(wt,ep),z.invariantPosition(Ut,tp))<1.6?lt=!0:ft=!0}return{isPurine:lt,isPyrimidine:ft}}function wa(oe,x,F){const z=x.model.atomicHierarchy.index,{traceElementIndex:me}=x.model.atomicHierarchy.derived.residue;return oe.trace=me[F],oe.N1=z.findAtomOnResidue(F,"N1"),oe.C2=z.findAtomOnResidue(F,"C2"),oe.N3=z.findAtomOnResidue(F,"N3"),oe.C4=z.findAtomOnResidue(F,"C4"),oe.C5=z.findAtomOnResidue(F,"C5"),-1===oe.C5&&(oe.C5=z.findAtomOnResidue(F,"N5")),oe.C6=z.findAtomOnResidue(F,"C6"),oe.N7=z.findAtomOnResidue(F,"N7"),-1===oe.N7&&(oe.N7=z.findAtomOnResidue(F,"C7")),oe.C8=z.findAtomOnResidue(F,"C8"),oe.N9=z.findAtomOnResidue(F,"N9"),oe}function qa(oe){return-1!==oe.trace&&-1!==oe.N1&&-1!==oe.C2&&-1!==oe.N3&&-1!==oe.C4&&-1!==oe.C5&&-1!==oe.C6&&-1!==oe.N7&&-1!==oe.C8&&-1!==oe.N9}function Fa(oe,x,F){const z=x.model.atomicHierarchy.index,{traceElementIndex:me}=x.model.atomicHierarchy.derived.residue;return oe.trace=me[F],oe.N1=z.findAtomOnResidue(F,"N1"),-1===oe.N1&&(oe.N1=z.findAtomOnResidue(F,"C1")),oe.C2=z.findAtomOnResidue(F,"C2"),oe.N3=z.findAtomOnResidue(F,"N3"),oe.C4=z.findAtomOnResidue(F,"C4"),oe.C5=z.findAtomOnResidue(F,"C5"),oe.C6=z.findAtomOnResidue(F,"C6"),oe}function ec(oe){return-1!==oe.trace&&-1!==oe.N1&&-1!==oe.C2&&-1!==oe.N3&&-1!==oe.C4&&-1!==oe.C5&&-1!==oe.C6}function wc(oe,x,F){const z=x.model.atomicHierarchy.index,{traceElementIndex:me}=x.model.atomicHierarchy.derived.residue;return oe.trace=me[F],oe.C1_1=z.findAtomOnResidue(F,"C1'"),oe.C2_1=z.findAtomOnResidue(F,"C2'"),oe.C3_1=z.findAtomOnResidue(F,"C3'"),oe.C4_1=z.findAtomOnResidue(F,"C4'"),oe.O4_1=z.findAtomOnResidue(F,"O4'"),oe}function Fc(oe){return-1!==oe.trace&&-1!==oe.C1_1&&-1!==oe.C2_1&&-1!==oe.C3_1&&-1!==oe.C4_1&&-1!==oe.O4_1}const ru=(0,g.eB)(),Ju=(0,g.eB)(),Ed=(0,g.eB)(),Id=(0,g.eB)(),Ad=(0,g.eB)(),Pd=(0,g.eB)(),ou=(0,g.eB)(),qu=(0,g.eB)(),el=(0,g.eB)(),Td=(0,g.eB)(),Nc=g.$I.identity(),np=(0,g.eB)(),Bd=(0,no.az)(),Dd={sizeFactor:v.t.Numeric(.2,{min:0,max:10,step:.01}),thicknessFactor:v.t.Numeric(1,{min:0,max:2,step:.01}),radialSegments:v.t.Numeric(16,{min:2,max:56,step:2},Jn.iy.CustomQualityParamInfo)};function rp(oe,x,F,z,me,Pe){if(!Je.Nf.isAtomic(x))return rr.e.createEmpty(Pe);const Ge=x.nucleotideElements.length;if(!Ge)return rr.e.createEmpty(Pe);const{sizeFactor:Xe,thicknessFactor:Qe,radialSegments:lt}=me,ft=Ge*(Bd.vertices.length/3+2*lt),wt=lr.P.createState(ft,ft/4,Pe),{elements:Ut,model:Jt,conformation:gn}=x,{chainAtomSegments:Pn,residueAtomSegments:wn}=Jt.atomicHierarchy,{moleculeType:Bn}=Jt.atomicHierarchy.derived.residue,Mn=Tt.hT.transientSegments(Pn,Ut),Ln=Tt.hT.transientSegments(wn,Ut),cr=1*Xe,Qn=Qe*Xe*2,Zn={radiusTop:cr,radiusBottom:cr,radialSegments:lt,bottomCap:!0};let zn=0;for(;Mn.hasNext;)for(Ln.setSegment(Mn.move());Ln.hasNext;){const{index:to}=Ln.move();if((0,Tr.OV)(Bn[to])){const Cr={trace:-1,N1:-1,C2:-1,N3:-1,C4:-1,C5:-1,C6:-1,N7:-1,C8:-1,N9:-1,C1_1:-1,C2_1:-1,C3_1:-1,C4_1:-1,O4_1:-1};let Zr=-1,Io=-1,wo=-1,si=-1,Ii=-1,ai=4.5;const{isPurine:li,isPyrimidine:Vo}=Ra(x,to);li?(ai=4.5,wa(Cr,x,to),Zr=Cr.N1,Io=Cr.C4,wo=Cr.C6,si=Cr.C2,Ii=Cr.N9):Vo&&(ai=3,Fa(Cr,x,to),Zr=Cr.N3,Io=Cr.C6,wo=Cr.C4,si=Cr.C2,Ii=Cr.N1),-1!==Ii&&-1!==Cr.trace&&(gn.invariantPosition(Ii,Ad),gn.invariantPosition(Cr.trace,Pd),wt.currentGroup=zn,(0,_i.y9)(wt,Ad,Pd,1,Zn),-1!==Zr&&-1!==Io&&-1!==wo&&-1!==si&&(gn.invariantPosition(Zr,ru),gn.invariantPosition(Io,Ju),gn.invariantPosition(wo,Ed),gn.invariantPosition(si,Id),g.eB.normalize(ou,g.eB.sub(ou,Ju,ru)),g.eB.normalize(qu,g.eB.sub(qu,Id,Ed)),g.eB.normalize(el,g.eB.cross(el,ou,qu)),g.$I.targetTo(Nc,ru,Ju,el),g.eB.scaleAndAdd(Td,ru,ou,ai/2-.2),g.$I.scale(Nc,Nc,g.eB.set(np,4.5,Qn,ai)),g.$I.setTranslation(Nc,Td),lr.P.addPrimitive(wt,Nc,Bd))),++zn}}const Lr=lr.P.getMesh(wt),wr=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,cr);return Lr.setBoundingSphere(wr),Lr}v.t.getDefaultValues(Dd);const Md={...tr.Te,...Dd};function op(oe){return(0,tr.Pv)({defaultProps:v.t.getDefaultValues(Md),createGeometry:rp,createLocationIterator:sa.fromGroup,getLoci:Ma,eachLocation:Oa,setUpdateState:(x,F,z)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.thicknessFactor!==z.thicknessFactor||F.radialSegments!==z.radialSegments}},oe)}const iu=(0,g.eB)(),ha=(0,g.eB)(),su=(0,g.eB)(),au=(0,g.eB)(),tc=(0,g.eB)(),nc=(0,g.eB)(),cu=(0,g.eB)(),Od=(0,g.eB)(),Rd=(0,g.eB)(),uu=(0,g.eB)(),ga=(0,g.eB)(),Ld={sizeFactor:v.t.Numeric(.2,{min:0,max:10,step:.01}),thicknessFactor:v.t.Numeric(1,{min:0,max:2,step:.01}),radialSegments:v.t.Numeric(16,{min:2,max:56,step:2},Jn.iy.CustomQualityParamInfo),detail:v.t.Numeric(0,{min:0,max:3,step:1},Jn.iy.CustomQualityParamInfo)},lu=(v.t.getDefaultValues(Ld),new Float32Array(54)),ip=new Uint32Array([0,1,2,3,4,5,6,7,16,17,14,15,12,13,8,9,10,11,0,1]),sp=new Uint32Array([8,12,14,16,6,4,2,0,10]),ap=new Uint32Array([9,11,1,3,5,7,17,15,13]),du=new Float32Array(36),cp=new Uint32Array([0,1,2,3,4,5,6,7,8,9,10,11,0,1]),up=new Uint32Array([0,10,8,6,4,2]),lp=new Uint32Array([1,3,5,7,9,11]),wd=(0,g.eB)();function Fd(oe,x,...F){for(let z=0,me=F.length;z{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.thicknessFactor!==z.thicknessFactor||F.radialSegments!==z.radialSegments}},oe)}const rc=(0,g.eB)(),fu=(0,g.eB)(),mu=(0,g.eB)(),oc=(0,g.eB)(),ic=(0,g.eB)(),pu=(0,g.eB)(),Ud=(0,g.eB)(),Vd=(0,g.eB)(),Gd=(0,g.eB)(),hu=(0,g.eB)(),tl=(0,g.eB)(),gu=(0,g.eB)(),yu=(0,g.eB)(),nl=(0,g.eB)(),sc=(0,g.eB)(),fs=(0,g.eB)(),ac=(0,g.eB)(),zd={sizeFactor:v.t.Numeric(.2,{min:0,max:10,step:.01}),thicknessFactor:v.t.Numeric(1,{min:0,max:2,step:.01})},vu=(v.t.getDefaultValues(zd),new Float32Array(54)),mp=new Uint32Array([0,1,2,3,4,5,6,7,16,17,14,15,12,13,8,9,10,11,0,1]),pp=new Uint32Array([8,12,14,16,6,4,2,0,10]),hp=new Uint32Array([9,11,1,3,5,7,17,15,13]),_u=new Float32Array(36),gp=new Uint32Array([2,3,4,5,6,7,8,9,10,11,2,3]),yp=new Uint32Array([0,10,8,6,4,2,10]),vp=new Uint32Array([1,3,5,7,9,11,3]),bu=new Float32Array(36),_p=new Uint32Array([0,1,2,3,4,5,6,7,8,9,10,11,0,1]),bp=new Uint32Array([0,10,8,6,4,2]),xp=new Uint32Array([1,3,5,7,9,11]),kd=(0,g.eB)();function rl(oe,x,...F){for(let z=0,me=F.length;z{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.thicknessFactor!==z.thicknessFactor}},oe)}var jd=n(1989);const ms=(0,g.eB)(),xi=(0,g.eB)(),os=(0,g.eB)(),is=(0,g.eB)(),ki=(0,g.eB)(),Hi=(0,g.eB)(),ss=(0,g.eB)(),Ys=(0,g.eB)(),Xs=(0,g.eB)(),Zi=(0,g.eB)(),Yi=(0,g.eB)(),$s=(0,g.eB)(),Ps=(0,g.eB)(),Js=(0,g.eB)(),qs=(0,g.eB)(),ol={...tr.Te,...tr.lm,sizeFactor:v.t.Numeric(.3,{min:0,max:10,step:.01}),radialSegments:v.t.Numeric(16,{min:2,max:56,step:2},Jn.iy.CustomQualityParamInfo),tryUseImpostor:v.t.Boolean(!0)};function Ep(oe,x,F,z){return F.tryUseImpostor&&z&&z.extensions.fragDepth?function Ap(oe){return(0,tr.Vb)({defaultProps:v.t.getDefaultValues(ol),createGeometry:Ip,createLocationIterator:sa.fromGroup,getLoci:Ma,eachLocation:Oa,setUpdateState:(x,F,z)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor},mustRecreate:(x,F,z)=>!F.tryUseImpostor||!z},oe)}(oe):function Tp(oe){return(0,tr.Pv)({defaultProps:v.t.getDefaultValues(ol),createGeometry:Pp,createLocationIterator:sa.fromGroup,getLoci:Ma,eachLocation:Oa,setUpdateState:(x,F,z)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.radialSegments!==z.radialSegments},mustRecreate:(x,F,z)=>F.tryUseImpostor&&!!z},oe)}(oe)}function Ip(oe,x,F,z,me,Pe){if(!Je.Nf.isAtomic(x))return ci.S.createEmpty(Pe);const Ge=x.nucleotideElements.length;if(!Ge)return ci.S.createEmpty(Pe);const Xe=15*Ge,Qe=jd.h.create(Xe,Xe/4,Pe),{elements:lt,model:ft,conformation:wt}=x,{chainAtomSegments:Ut,residueAtomSegments:Jt}=ft.atomicHierarchy,{moleculeType:gn}=ft.atomicHierarchy.derived.residue,Pn=Tt.hT.transientSegments(Ut,lt),wn=Tt.hT.transientSegments(Jt,lt);let Bn=0;for(;Pn.hasNext;)for(wn.setSegment(Pn.move());wn.hasNext;){const{index:qn}=wn.move();if((0,Tr.OV)(gn[qn])){const Qn={trace:-1,N1:-1,C2:-1,N3:-1,C4:-1,C5:-1,C6:-1,N7:-1,C8:-1,N9:-1,C1_1:-1,C2_1:-1,C3_1:-1,C4_1:-1,O4_1:-1};wc(Qn,x,qn),Fc(Qn)&&(wt.invariantPosition(Qn.C1_1,Yi),wt.invariantPosition(Qn.C2_1,$s),wt.invariantPosition(Qn.C3_1,Ps),wt.invariantPosition(Qn.C4_1,Js),wt.invariantPosition(Qn.O4_1,qs),wt.invariantPosition(Qn.trace,ms),Qe.add(Ps[0],Ps[1],Ps[2],ms[0],ms[1],ms[2],1,!0,!0,2,Bn),Qe.add(Ps[0],Ps[1],Ps[2],Js[0],Js[1],Js[2],1,!0,!0,2,Bn),Qe.add(Js[0],Js[1],Js[2],qs[0],qs[1],qs[2],1,!0,!0,2,Bn),Qe.add(qs[0],qs[1],qs[2],Yi[0],Yi[1],Yi[2],1,!0,!0,2,Bn),Qe.add(Yi[0],Yi[1],Yi[2],$s[0],$s[1],$s[2],1,!0,!0,2,Bn),Qe.add($s[0],$s[1],$s[2],Ps[0],Ps[1],Ps[2],1,!0,!0,2,Bn));const{isPurine:Zn,isPyrimidine:zn}=Ra(x,qn);Zn?(wa(Qn,x,qn),-1!==Qn.C1_1&&-1!==Qn.N9?(wt.invariantPosition(Qn.C1_1,Yi),wt.invariantPosition(Qn.N9,Zi),Qe.add(Zi[0],Zi[1],Zi[2],Yi[0],Yi[1],Yi[2],1,!0,!0,2,Bn)):-1!==Qn.N9&&-1!==Qn.trace&&(wt.invariantPosition(Qn.N9,Zi),wt.invariantPosition(Qn.trace,ms),Qe.add(Zi[0],Zi[1],Zi[2],ms[0],ms[1],ms[2],1,!0,!0,2,Bn)),qa(Qn)&&(wt.invariantPosition(Qn.N1,xi),wt.invariantPosition(Qn.C2,os),wt.invariantPosition(Qn.N3,is),wt.invariantPosition(Qn.C4,ki),wt.invariantPosition(Qn.C5,Hi),wt.invariantPosition(Qn.C6,ss),wt.invariantPosition(Qn.N7,Ys),wt.invariantPosition(Qn.C8,Xs),wt.invariantPosition(Qn.N9,Zi),Qe.add(Zi[0],Zi[1],Zi[2],Xs[0],Xs[1],Xs[2],1,!0,!0,2,Bn),Qe.add(Xs[0],Xs[1],Xs[2],Ys[0],Ys[1],Ys[2],1,!0,!0,2,Bn),Qe.add(Ys[0],Ys[1],Ys[2],Hi[0],Hi[1],Hi[2],1,!0,!0,2,Bn),Qe.add(Hi[0],Hi[1],Hi[2],ss[0],ss[1],ss[2],1,!0,!0,2,Bn),Qe.add(ss[0],ss[1],ss[2],xi[0],xi[1],xi[2],1,!0,!0,2,Bn),Qe.add(xi[0],xi[1],xi[2],os[0],os[1],os[2],1,!0,!0,2,Bn),Qe.add(os[0],os[1],os[2],is[0],is[1],is[2],1,!0,!0,2,Bn),Qe.add(is[0],is[1],is[2],ki[0],ki[1],ki[2],1,!0,!0,2,Bn),Qe.add(ki[0],ki[1],ki[2],Hi[0],Hi[1],Hi[2],1,!0,!0,2,Bn),Qe.add(ki[0],ki[1],ki[2],Zi[0],Zi[1],Zi[2],1,!0,!0,2,Bn))):zn&&(Fa(Qn,x,qn),-1!==Qn.C1_1&&-1!==Qn.N1?(wt.invariantPosition(Qn.N1,xi),wt.invariantPosition(Qn.C1_1,Yi),Qe.add(xi[0],xi[1],xi[2],Yi[0],Yi[1],Yi[2],1,!0,!0,2,Bn)):-1!==Qn.N1&&-1!==Qn.trace&&(wt.invariantPosition(Qn.N1,xi),wt.invariantPosition(Qn.trace,ms),Qe.add(xi[0],xi[1],xi[2],ms[0],ms[1],ms[2],1,!0,!0,2,Bn)),ec(Qn)&&(wt.invariantPosition(Qn.N1,xi),wt.invariantPosition(Qn.C2,os),wt.invariantPosition(Qn.N3,is),wt.invariantPosition(Qn.C4,ki),wt.invariantPosition(Qn.C5,Hi),wt.invariantPosition(Qn.C6,ss),Qe.add(xi[0],xi[1],xi[2],ss[0],ss[1],ss[2],1,!0,!0,2,Bn),Qe.add(ss[0],ss[1],ss[2],Hi[0],Hi[1],Hi[2],1,!0,!0,2,Bn),Qe.add(Hi[0],Hi[1],Hi[2],ki[0],ki[1],ki[2],1,!0,!0,2,Bn),Qe.add(ki[0],ki[1],ki[2],is[0],is[1],is[2],1,!0,!0,2,Bn),Qe.add(is[0],is[1],is[2],os[0],os[1],os[2],1,!0,!0,2,Bn),Qe.add(os[0],os[1],os[2],xi[0],xi[1],xi[2],1,!0,!0,2,Bn))),++Bn}}const Ln=Qe.getCylinders(),cr=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,1*me.sizeFactor);return Ln.setBoundingSphere(cr),Ln}function Pp(oe,x,F,z,me,Pe){if(!Je.Nf.isAtomic(x))return rr.e.createEmpty(Pe);const Ge=x.nucleotideElements.length;if(!Ge)return rr.e.createEmpty(Pe);const{sizeFactor:Xe,radialSegments:Qe}=me,lt=Ge*(15*Qe),ft=lr.P.createState(lt,lt/4,Pe),{elements:wt,model:Ut,conformation:Jt}=x,{chainAtomSegments:gn,residueAtomSegments:Pn}=Ut.atomicHierarchy,{moleculeType:wn}=Ut.atomicHierarchy.derived.residue,Bn=Tt.hT.transientSegments(gn,wt),Mn=Tt.hT.transientSegments(Pn,wt),Ln={radiusTop:1*Xe,radiusBottom:1*Xe,radialSegments:Qe};let cr=0;for(;Bn.hasNext;)for(Mn.setSegment(Bn.move());Mn.hasNext;){const{index:Zn}=Mn.move();if((0,Tr.OV)(wn[Zn])){const zn={trace:-1,N1:-1,C2:-1,N3:-1,C4:-1,C5:-1,C6:-1,N7:-1,C8:-1,N9:-1,C1_1:-1,C2_1:-1,C3_1:-1,C4_1:-1,O4_1:-1};ft.currentGroup=cr,wc(zn,x,Zn),Fc(zn)&&(Jt.invariantPosition(zn.C1_1,Yi),Jt.invariantPosition(zn.C2_1,$s),Jt.invariantPosition(zn.C3_1,Ps),Jt.invariantPosition(zn.C4_1,Js),Jt.invariantPosition(zn.O4_1,qs),Jt.invariantPosition(zn.trace,ms),(0,_i.y9)(ft,Ps,ms,1,Ln),(0,_i.y9)(ft,Ps,Js,1,Ln),(0,_i.y9)(ft,Js,qs,1,Ln),(0,_i.y9)(ft,qs,Yi,1,Ln),(0,_i.y9)(ft,Yi,$s,1,Ln),(0,_i.y9)(ft,$s,Ps,1,Ln));const{isPurine:Lr,isPyrimidine:wr}=Ra(x,Zn);Lr?(wa(zn,x,Zn),-1!==zn.C1_1&&-1!==zn.N9?(Jt.invariantPosition(zn.C1_1,Yi),Jt.invariantPosition(zn.N9,Zi),(0,_i.y9)(ft,Zi,Yi,1,Ln)):-1!==zn.N9&&-1!==zn.trace&&(Jt.invariantPosition(zn.N9,Zi),Jt.invariantPosition(zn.trace,ms),(0,_i.y9)(ft,Zi,ms,1,Ln)),qa(zn)&&(Jt.invariantPosition(zn.N1,xi),Jt.invariantPosition(zn.C2,os),Jt.invariantPosition(zn.N3,is),Jt.invariantPosition(zn.C4,ki),Jt.invariantPosition(zn.C5,Hi),Jt.invariantPosition(zn.C6,ss),Jt.invariantPosition(zn.N7,Ys),Jt.invariantPosition(zn.C8,Xs),Jt.invariantPosition(zn.N9,Zi),(0,_i.y9)(ft,Zi,Xs,1,Ln),(0,_i.y9)(ft,Xs,Ys,1,Ln),(0,_i.y9)(ft,Ys,Hi,1,Ln),(0,_i.y9)(ft,Hi,ss,1,Ln),(0,_i.y9)(ft,ss,xi,1,Ln),(0,_i.y9)(ft,xi,os,1,Ln),(0,_i.y9)(ft,os,is,1,Ln),(0,_i.y9)(ft,is,ki,1,Ln),(0,_i.y9)(ft,ki,Hi,1,Ln),(0,_i.y9)(ft,ki,Zi,1,Ln))):wr&&(Fa(zn,x,Zn),-1!==zn.C1_1&&-1!==zn.N1?(Jt.invariantPosition(zn.N1,xi),Jt.invariantPosition(zn.C1_1,Yi),(0,_i.y9)(ft,xi,Yi,1,Ln)):-1!==zn.N1&&-1!==zn.trace&&(Jt.invariantPosition(zn.N1,xi),Jt.invariantPosition(zn.trace,ms),(0,_i.y9)(ft,xi,ms,1,Ln)),ec(zn)&&(Jt.invariantPosition(zn.N1,xi),Jt.invariantPosition(zn.C2,os),Jt.invariantPosition(zn.N3,is),Jt.invariantPosition(zn.C4,ki),Jt.invariantPosition(zn.C5,Hi),Jt.invariantPosition(zn.C6,ss),(0,_i.y9)(ft,xi,ss,1,Ln),(0,_i.y9)(ft,ss,Hi,1,Ln),(0,_i.y9)(ft,Hi,ki,1,Ln),(0,_i.y9)(ft,ki,is,1,Ln),(0,_i.y9)(ft,is,os,1,Ln),(0,_i.y9)(ft,os,xi,1,Ln))),++cr}}const qn=lr.P.getMesh(ft),Qn=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,1*me.sizeFactor);return qn.setBoundingSphere(Qn),qn}const cc=(0,g.eB)(),Rs=(0,g.eB)(),Ls=(0,g.eB)(),ws=(0,g.eB)(),Fs=(0,g.eB)(),Ds=(0,g.eB)(),Ns=(0,g.eB)(),uc=(0,g.eB)(),lc=(0,g.eB)(),dc=(0,g.eB)(),fc=(0,g.eB)(),mc=(0,g.eB)(),pc=(0,g.eB)(),hc=(0,g.eB)(),gc=(0,g.eB)(),il={...tr.Te,...tr.qg,sizeFactor:v.t.Numeric(.3,{min:0,max:10,step:.01}),detail:v.t.Numeric(0,{min:0,max:3,step:1},Jn.iy.CustomQualityParamInfo),tryUseImpostor:v.t.Boolean(!0)};function Bp(oe,x,F,z){return F.tryUseImpostor&&z&&z.extensions.fragDepth?function Mp(oe){return(0,tr.uF)({defaultProps:v.t.getDefaultValues(il),createGeometry:Dp,createLocationIterator:sa.fromGroup,getLoci:Ma,eachLocation:Oa,setUpdateState:(x,F,z)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor},mustRecreate:(x,F,z)=>!F.tryUseImpostor||!z},oe)}(oe):function Rp(oe){return(0,tr.Pv)({defaultProps:v.t.getDefaultValues(il),createGeometry:Op,createLocationIterator:sa.fromGroup,getLoci:Ma,eachLocation:Oa,setUpdateState:(x,F,z)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.detail!==z.detail},mustRecreate:(x,F,z)=>F.tryUseImpostor&&!!z},oe)}(oe)}function Dp(oe,x,F,z,me,Pe){if(!Je.Nf.isAtomic(x))return Qr.v.createEmpty(Pe);const Ge=x.nucleotideElements.length;if(!Ge)return Qr.v.createEmpty(Pe);const Xe=15*Ge,Qe=Bi.create(Xe,Xe/4,Pe),{elements:lt,model:ft,conformation:wt}=x,{chainAtomSegments:Ut,residueAtomSegments:Jt}=ft.atomicHierarchy,{moleculeType:gn}=ft.atomicHierarchy.derived.residue,Pn=Tt.hT.transientSegments(Ut,lt),wn=Tt.hT.transientSegments(Jt,lt);let Bn=0;for(;Pn.hasNext;)for(wn.setSegment(Pn.move());wn.hasNext;){const{index:cr}=wn.move();if((0,Tr.OV)(gn[cr])){const qn={trace:-1,N1:-1,C2:-1,N3:-1,C4:-1,C5:-1,C6:-1,N7:-1,C8:-1,N9:-1,C1_1:-1,C2_1:-1,C3_1:-1,C4_1:-1,O4_1:-1};wc(qn,x,cr),Fc(qn)&&(wt.invariantPosition(qn.C1_1,fc),wt.invariantPosition(qn.C2_1,mc),wt.invariantPosition(qn.C3_1,pc),wt.invariantPosition(qn.C4_1,hc),wt.invariantPosition(qn.O4_1,gc),wt.invariantPosition(qn.trace,cc),Qe.add(cc[0],cc[1],cc[2],Bn),Qe.add(pc[0],pc[1],pc[2],Bn),Qe.add(hc[0],hc[1],hc[2],Bn),Qe.add(gc[0],gc[1],gc[2],Bn),Qe.add(fc[0],fc[1],fc[2],Bn),Qe.add(mc[0],mc[1],mc[2],Bn));const{isPurine:Qn,isPyrimidine:Zn}=Ra(x,cr);Qn?(wa(qn,x,cr),qa(qn)&&(wt.invariantPosition(qn.N1,Rs),wt.invariantPosition(qn.C2,Ls),wt.invariantPosition(qn.N3,ws),wt.invariantPosition(qn.C4,Fs),wt.invariantPosition(qn.C5,Ds),wt.invariantPosition(qn.C6,Ns),wt.invariantPosition(qn.N7,uc),wt.invariantPosition(qn.C8,lc),wt.invariantPosition(qn.N9,dc),Qe.add(dc[0],dc[1],dc[2],Bn),Qe.add(lc[0],lc[1],lc[2],Bn),Qe.add(uc[0],uc[1],uc[2],Bn),Qe.add(Ds[0],Ds[1],Ds[2],Bn),Qe.add(Ns[0],Ns[1],Ns[2],Bn),Qe.add(Rs[0],Rs[1],Rs[2],Bn),Qe.add(Ls[0],Ls[1],Ls[2],Bn),Qe.add(ws[0],ws[1],ws[2],Bn),Qe.add(Fs[0],Fs[1],Fs[2],Bn))):Zn&&(Fa(qn,x,cr),ec(qn)&&(wt.invariantPosition(qn.N1,Rs),wt.invariantPosition(qn.C2,Ls),wt.invariantPosition(qn.N3,ws),wt.invariantPosition(qn.C4,Fs),wt.invariantPosition(qn.C5,Ds),wt.invariantPosition(qn.C6,Ns),Qe.add(Rs[0],Rs[1],Rs[2],Bn),Qe.add(Ns[0],Ns[1],Ns[2],Bn),Qe.add(Ds[0],Ds[1],Ds[2],Bn),Qe.add(Fs[0],Fs[1],Fs[2],Bn),Qe.add(ws[0],ws[1],ws[2],Bn),Qe.add(Ls[0],Ls[1],Ls[2],Bn))),++Bn}}const Mn=Qe.getSpheres(),Ln=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,1*me.sizeFactor);return Mn.setBoundingSphere(Ln),Mn}function Op(oe,x,F,z,me,Pe){if(!Je.Nf.isAtomic(x))return rr.e.createEmpty(Pe);const Ge=x.nucleotideElements.length;if(!Ge)return rr.e.createEmpty(Pe);const{sizeFactor:Xe,detail:Qe}=me,lt=Ge*(0,zr.J)(Qe),ft=lr.P.createState(lt,lt/2,Pe),{elements:wt,model:Ut,conformation:Jt}=x,{chainAtomSegments:gn,residueAtomSegments:Pn}=Ut.atomicHierarchy,{moleculeType:wn}=Ut.atomicHierarchy.derived.residue,Bn=Tt.hT.transientSegments(gn,wt),Mn=Tt.hT.transientSegments(Pn,wt),Ln=1*Xe;let cr=0;for(;Bn.hasNext;)for(Mn.setSegment(Bn.move());Mn.hasNext;){const{index:Zn}=Mn.move();if((0,Tr.OV)(wn[Zn])){const zn={trace:-1,N1:-1,C2:-1,N3:-1,C4:-1,C5:-1,C6:-1,N7:-1,C8:-1,N9:-1,C1_1:-1,C2_1:-1,C3_1:-1,C4_1:-1,O4_1:-1};ft.currentGroup=cr,wc(zn,x,Zn),Fc(zn)&&(Jt.invariantPosition(zn.C1_1,fc),Jt.invariantPosition(zn.C2_1,mc),Jt.invariantPosition(zn.C3_1,pc),Jt.invariantPosition(zn.C4_1,hc),Jt.invariantPosition(zn.O4_1,gc),Jt.invariantPosition(zn.trace,cc),(0,kr.X)(ft,cc,Ln,Qe),(0,kr.X)(ft,hc,Ln,Qe),(0,kr.X)(ft,gc,Ln,Qe),(0,kr.X)(ft,fc,Ln,Qe),(0,kr.X)(ft,mc,Ln,Qe),(0,kr.X)(ft,pc,Ln,Qe));const{isPurine:Lr,isPyrimidine:wr}=Ra(x,Zn);Lr?(wa(zn,x,Zn),qa(zn)&&(Jt.invariantPosition(zn.N1,Rs),Jt.invariantPosition(zn.C2,Ls),Jt.invariantPosition(zn.N3,ws),Jt.invariantPosition(zn.C4,Fs),Jt.invariantPosition(zn.C5,Ds),Jt.invariantPosition(zn.C6,Ns),Jt.invariantPosition(zn.N7,uc),Jt.invariantPosition(zn.C8,lc),Jt.invariantPosition(zn.N9,dc),(0,kr.X)(ft,lc,Ln,Qe),(0,kr.X)(ft,uc,Ln,Qe),(0,kr.X)(ft,Ds,Ln,Qe),(0,kr.X)(ft,Ns,Ln,Qe),(0,kr.X)(ft,Rs,Ln,Qe),(0,kr.X)(ft,Ls,Ln,Qe),(0,kr.X)(ft,ws,Ln,Qe),(0,kr.X)(ft,Fs,Ln,Qe),(0,kr.X)(ft,Ds,Ln,Qe),(0,kr.X)(ft,dc,Ln,Qe))):wr&&(Fa(zn,x,Zn),ec(zn)&&(Jt.invariantPosition(zn.N1,Rs),Jt.invariantPosition(zn.C2,Ls),Jt.invariantPosition(zn.N3,ws),Jt.invariantPosition(zn.C4,Fs),Jt.invariantPosition(zn.C5,Ds),Jt.invariantPosition(zn.C6,Ns),(0,kr.X)(ft,Ns,Ln,Qe),(0,kr.X)(ft,Ds,Ln,Qe),(0,kr.X)(ft,Fs,Ln,Qe),(0,kr.X)(ft,ws,Ln,Qe),(0,kr.X)(ft,Ls,Ln,Qe),(0,kr.X)(ft,Rs,Ln,Qe))),++cr}}const qn=lr.P.getMesh(ft),Qn=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,1*me.sizeFactor);return qn.setBoundingSphere(Qn),qn}const Na=g.eB.zero(),yc=g.eB.zero(),Ua=g.eB.zero(),Wd=g.eB.zero(),ts=(0,Di.n)(3,!1);let sl;const Va=g.$I.identity(),Fp=g.eB.zero(),Qd=g.eB.zero(),Kd=g.eB.zero(),cl=g.eB.zero(),Np=4,Up=4,Vp=6,Gp=function wp(){return sl||(sl=function Lp(){const oe=(0,zo.nT)(8);for(let x=0;x<3;++x){const F=(x+1)%3;g.eB.set(Na,ts[3*x],ts[3*x+1],-.5),g.eB.set(yc,ts[3*F],ts[3*F+1],-.5),g.eB.set(Ua,ts[3*F],ts[3*F+1],.5),g.eB.set(Wd,ts[3*x],ts[3*x+1],.5),oe.add(Na,yc,Ua),oe.add(Ua,Wd,Na)}return g.eB.set(Na,ts[0],ts[1],-.5),g.eB.set(yc,ts[3],ts[4],-.5),g.eB.set(Ua,ts[6],ts[7],-.5),oe.add(Ua,yc,Na),g.eB.set(Na,ts[0],ts[1],.5),g.eB.set(yc,ts[3],ts[4],.5),g.eB.set(Ua,ts[6],ts[7],.5),oe.add(Na,yc,Ua),oe.getPrimitive()}()),sl}(),Zd={sizeFactor:v.t.Numeric(.2,{min:0,max:10,step:.01})};function zp(oe,x,F,z,me,Pe){const Ge=x.polymerElements.length;if(!Ge)return rr.e.createEmpty(Pe);const{sizeFactor:Xe}=me,Qe=24*Ge,lt=lr.P.createState(Qe,Qe/10,Pe),wt=ju(1),{normalVectors:Ut,binormalVectors:Jt}=wt;let gn=0;const Pn=zu(x,F);for(;Pn.hasNext;){const Mn=Pn.move();lt.currentGroup=gn;const Ln=(0,Tr.OV)(Mn.moleculeType),cr=Tr.gG.is(Mn.secStrucType,4);if(Wu(wt,Mn,Ln||cr?.5:.9,Ln?.3:.5),cr&&!Mn.secStrucLast||!cr){const Zn=z.size.size(Mn.center)*Xe,zn=Np*Zn,Lr=Up*Zn,wr=Vp*Zn,to=Ln?Jt:Ut;g.eB.fromArray(Qd,to,0),g.eB.fromArray(Kd,to,3),g.eB.normalize(cl,g.eB.add(cl,Qd,Kd)),g.$I.targetTo(Va,Mn.p3,Mn.p1,cl),g.$I.mul(Va,Va,g.$I.rotY90Z180),g.$I.scale(Va,Va,g.eB.set(Fp,wr,Lr,zn)),g.$I.setTranslation(Va,Mn.p2),lr.P.addPrimitive(lt,Va,Gp)}++gn}const wn=lr.P.getMesh(lt),Bn=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,1*me.sizeFactor);return wn.setBoundingSphere(Bn),wn}v.t.getDefaultValues(Zd);const Yd={...tr.Te,...Zd};function kp(oe){return(0,tr.Pv)({defaultProps:v.t.getDefaultValues(Yd),createGeometry:zp,createLocationIterator:x=>ia.fromGroup(x),getLoci:Ba,eachLocation:Da,setUpdateState:(x,F,z)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor}},oe)}const ul=10,Xd={sizeFactor:v.t.Numeric(.2,{min:0,max:10,step:.01}),radialSegments:v.t.Numeric(16,{min:2,max:56,step:2},Jn.iy.CustomQualityParamInfo)};function Hp(oe,x,F,z,me,Pe){const Ge=x.gapElements.length;if(!Ge)return rr.e.createEmpty(Pe);const{sizeFactor:Xe,radialSegments:Qe}=me,lt=ul*Qe*2*Ge*2,ft=lr.P.createState(lt,lt/10,Pe),wt=(0,g.eB)(),Ut=(0,g.eB)(),Jt={radiusTop:1,radiusBottom:1,topCap:!0,bottomCap:!0,radialSegments:Qe};let gn=0;const Pn=function Om(oe,x){switch(x.kind){case 0:return new Rm(oe,x);case 1:case 2:return new Lm(oe,x)}}(F,x);for(;Pn.hasNext;){const{centerA:Mn,centerB:Ln}=Pn.move();Mn.element===Ln.element||(x.conformation.invariantPosition(Mn.element,wt),x.conformation.invariantPosition(Ln.element,Ut),Jt.radiusTop=Jt.radiusBottom=z.size.size(Mn)*Xe,ft.currentGroup=gn,(0,_i.GH)(ft,wt,Ut,.5,ul,!1,Jt),Jt.radiusTop=Jt.radiusBottom=z.size.size(Ln)*Xe,ft.currentGroup=gn+1,(0,_i.GH)(ft,Ut,wt,.5,ul,!1,Jt)),gn+=2}const wn=lr.P.getMesh(ft),Bn=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,1*me.sizeFactor);return wn.setBoundingSphere(Bn),wn}v.t.getDefaultValues(Xd);const xu={...tr.Te,...Xd};function ll(oe){return(0,tr.Pv)({defaultProps:v.t.getDefaultValues(xu),createGeometry:Hp,createLocationIterator:$u.fromGroup,getLoci:$m,eachLocation:Jm,setUpdateState:(x,F,z)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.radialSegments!==z.radialSegments}},oe)}const oi=(0,g.eB)(),di=(0,g.eB)(),jp=(0,g.eB)(),Ms=(0,g.eB)(),ea=(0,g.eB)(),Cu=(0,g.eB)(),Su=(0,g.eB)(),Uc=(0,g.eB)(),Ws=(0,g.eB)(),ta=(0,g.eB)(),dl=(0,g.eB)(),ya=(0,g.eB)(),va=(0,g.eB)(),_a=(0,g.eB)(),ba=(0,g.eB)(),Us=g.eB.fromArray,vc=g.eB.scale,Vs=g.eB.add,aa=g.eB.sub,Wp=g.eB.magnitude,$d=g.eB.negate,fl=g.eB.copy,Jd=g.eB.cross,Qp=g.eB.set,yi=ce.Gm.add3,Kp=ce.Gm.add;function Eu(oe,x,F,z,me,Pe,Ge,Xe,Qe){const{vertices:lt,normals:ft,indices:wt}=x,Ut=lt.elementCount;if(Us(oi,z,oe),vc(Su,oi,Ge),vc(Cu,oi,Xe),Us(di,me,oe),vc(Ms,di,Pe),Jd(ta,di,oi),Us(Ws,F,oe),Vs(ya,Vs(ya,Ws,Ms),Cu),aa(va,Vs(va,Ws,Ms),Su),aa(_a,aa(_a,Ws,Ms),Su),Vs(ba,aa(ba,Ws,Ms),Cu),Ge0?(Us(oi,x,0),Us(di,x,3*me),wn=Xe/Wp(aa(jp,di,oi))):Qp(Uc,0,0,0);for(let Mn=0;Mn<=me;++Mn){const Ln=Pe[Mn],qn=0===Xe?Ge[Mn]:Xe*(1-Mn/me),Qn=3*Mn;Us(ea,F,Qn),vc(ea,ea,qn),Us(Ms,z,Qn),vc(Ms,Ms,Ln),Xe>0&&(Us(oi,F,Qn),Us(di,z,Qn),vc(Uc,Jd(Uc,oi,di),wn)),Us(Ws,x,Qn),Us(ta,F,Qn),Us(dl,z,Qn),Vs(oi,Vs(oi,Ws,Ms),ea),Vs(di,ta,Uc),yi(wt,oi[0],oi[1],oi[2]),yi(Ut,di[0],di[1],di[2]),Vs(oi,aa(oi,Ws,Ms),ea),yi(wt,oi[0],oi[1],oi[2]),yi(Ut,di[0],di[1],di[2]),$d(di,dl),yi(wt,oi[0],oi[1],oi[2]),yi(Ut,di[0],di[1],di[2]),aa(oi,aa(oi,Ws,Ms),ea),yi(wt,oi[0],oi[1],oi[2]),yi(Ut,di[0],di[1],di[2]),Vs(di,$d(di,ta),Uc),yi(wt,oi[0],oi[1],oi[2]),yi(Ut,di[0],di[1],di[2]),aa(oi,Vs(oi,Ws,Ms),ea),yi(wt,oi[0],oi[1],oi[2]),yi(Ut,di[0],di[1],di[2]),fl(di,dl),yi(wt,oi[0],oi[1],oi[2]),yi(Ut,di[0],di[1],di[2]),Vs(oi,Vs(oi,Ws,Ms),ea),yi(wt,oi[0],oi[1],oi[2]),yi(Ut,di[0],di[1],di[2])}for(let Mn=0;Mn0){const Mn=Pe[0],Ln=Ge[0];Eu(0,oe,x,F,z,Mn,Xe,-Ln,!1),Eu(0,oe,x,F,z,Mn,-Xe,Ln,!1)}if(lt&&0===Xe){const Ln=Ge[me];Eu(3*me,oe,x,F,z,Pe[me],Ln,Ln,!0)}for(let Mn=0,Ln=8*(me+1)+(Qe?4:Xe>0?8:0)+(lt&&0===Xe?4:0);MnLr;for(let Cr=0;Cr=cr?wr-Lr:-wr+Lr:Cr>=Ln&&CrLr;to&&(wr-=Lr),wn=Ut.elementCount;for(let Cr=0;Cr=cr?wr:-wr)):_c(ns,ps,xs,Is,wr*Bn[Cr],Lr*Mn[Cr]),Cs(Ut,ns[0],ns[1],ns[2]),Cs(Jt,ji[0],ji[1],ji[2]),Cs(gn,wn+(Cr+1)%Pe,wn+Cr,zn)}if(lt){const Zn=3*me,zn=Ut.elementCount;ca(ps,F,Zn),ca(xs,z,Zn),ca(Is,x,Zn),qd(ji,ps,xs),Cs(Ut,Is[0],Is[1],Is[2]),Cs(Jt,ji[0],ji[1],ji[2]);const Lr=Ge[me];let wr=Xe[me];const to="rounded"===ft&&wr>Lr;to&&(wr-=Lr),wn=Ut.elementCount;for(let Cr=0;Cr=cr?wr:-wr)):_c(ns,ps,xs,Is,wr*Bn[Cr],Lr*Mn[Cr]),Cs(Ut,ns[0],ns[1],ns[2]),Cs(Jt,ji[0],ji[1],ji[2]),Cs(gn,wn+Cr,wn+(Cr+1)%Pe,zn)}ce.Gm.addRepeat(Pn,(me+1)*Pe+(Qe?Pe+1:0)+(lt?Pe+1:0),wt)}const ua=g.eB.fromArray,Jp=g.eB.magnitude,gl=g.eB.sub,ef=g.eB.add,yl=g.eB.scale,qp=g.eB.negate,eh=g.eB.copy,th=g.eB.cross,Gs=ce.Gm.add3,nh=ce.Gm.add,as=(0,g.eB)(),hs=(0,g.eB)(),rh=(0,g.eB)(),vl=(0,g.eB)(),Ga=(0,g.eB)(),tf=(0,g.eB)(),Vc=(0,g.eB)(),oh=(0,g.eB)(),_l=(0,g.eB)();function Pu(oe,x,F,z,me,Pe,Ge,Xe){const{currentGroup:Qe,vertices:lt,normals:ft,indices:wt,groups:Ut}=oe,Jt=lt.elementCount;let gn=0;Xe>0&&(ua(as,x,0),ua(hs,x,3*me),gn=Xe/Jp(gl(rh,hs,as)));for(let wn=0;wn<=me;++wn){const Bn=Pe[wn],Ln=0===Xe?Ge[wn]:Xe*(1-wn/me),cr=3*wn;ua(Ga,F,cr),yl(Ga,Ga,Ln),ua(vl,z,cr),yl(vl,vl,Bn),Xe>0&&(ua(as,F,cr),ua(hs,z,cr),yl(tf,th(tf,as,hs),gn)),ua(Vc,x,cr),ua(oh,F,cr),ua(_l,z,cr),ef(as,Vc,Ga),qp(hs,_l),Gs(lt,as[0],as[1],as[2]),Gs(ft,hs[0],hs[1],hs[2]),gl(as,Vc,Ga),Gs(lt,as[0],as[1],as[2]),Gs(ft,hs[0],hs[1],hs[2]),ef(as,Vc,Ga),eh(hs,_l),Gs(lt,as[0],as[1],as[2]),Gs(ft,hs[0],hs[1],hs[2]),gl(as,Vc,Ga),Gs(lt,as[0],as[1],as[2]),Gs(ft,hs[0],hs[1],hs[2])}for(let wn=0;wnia.fromGroup(x,{asSecondary:!0}),getLoci:Ba,eachLocation:Da,setUpdateState:(x,F,z,me,Pe,Ge,Xe)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.tubularHelices!==z.tubularHelices||F.detail!==z.detail||F.linearSegments!==z.linearSegments||F.radialSegments!==z.radialSegments||F.aspectRatio!==z.aspectRatio||F.arrowFactor!==z.arrowFactor||F.helixProfile!==z.helixProfile||F.nucleicProfile!==z.nucleicProfile;const Qe=Yc.v.get(Ge.structure).version;x.info.secondaryStructureHash!==Qe&&(void 0!==x.info.secondaryStructureHash&&(x.createGeometry=!0),x.info.secondaryStructureHash=Qe)}},oe)}const of={"polymer-trace":(oe,x)=>(0,vn.T)("Polymer trace mesh",oe,x,sh),"polymer-gap":(oe,x)=>(0,vn.T)("Polymer gap cylinder",oe,x,ll),"nucleotide-block":(oe,x)=>(0,vn.T)("Nucleotide block mesh",oe,x,op),"nucleotide-ring":(oe,x)=>(0,vn.T)("Nucleotide ring mesh",oe,x,fp),"nucleotide-atomic-ring-fill":(oe,x)=>(0,vn.T)("Nucleotide atomic ring fill",oe,x,Sp),"nucleotide-atomic-bond":(oe,x)=>(0,vn.T)("Nucleotide atomic bond",oe,x,Ep),"nucleotide-atomic-element":(oe,x)=>(0,vn.T)("Nucleotide atomic element",oe,x,Bp),"direction-wedge":(oe,x)=>(0,vn.T)("Polymer direction wedge",oe,x,kp)},sf={...rf,...xu,...Md,...Nd,...ol,...il,...Hd,...Yd,sizeFactor:v.t.Numeric(.2,{min:0,max:10,step:.01}),visuals:v.t.MultiSelect(["polymer-trace","polymer-gap","nucleotide-ring","nucleotide-atomic-ring-fill","nucleotide-atomic-bond","nucleotide-atomic-element"],v.t.objectToOptions(of)),bumpFrequency:v.t.Numeric(2,{min:0,max:10,step:.1},Jn.iy.ShadingCategory),colorMode:v.t.Select("default",v.t.arrayToOptions(["default","interpolate"]),{...Jn.iy.ShadingCategory,isHidden:!0})},uh=(0,pr.GT)({name:"cartoon",label:"Cartoon",description:"Displays ribbons, planks, tubes smoothly following the trace atoms of polymers.",factory:function ch(oe,x){return dr.YL.createMulti("Cartoon",oe,x,pr.J1,of)},getParams:function ah(oe,x){const F=v.t.clone(sf);let z=!1,me=!1;return x.units.forEach(Pe=>{!z&&Je.Nf.isAtomic(Pe)&&Pe.nucleotideElements.length&&(z=!0),!me&&Pe.gapElements.length&&(me=!0)}),F.visuals.defaultValue=["polymer-trace"],z&&F.visuals.defaultValue.push("nucleotide-ring"),me&&F.visuals.defaultValue.push("polymer-gap"),F},defaultValues:v.t.getDefaultValues(sf),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uniform"},isApplicable:oe=>oe.polymerResidueCount>0,ensureCustomProperties:{attach:function(){var oe=(0,r.A)(function*(x,F){yield Yc.v.attach(x,F,void 0,!0);for(const z of F.models)yield Gu.attach(x,z,void 0,!0)});return function(F,z){return oe.apply(this,arguments)}}(),detach:oe=>{Yc.v.ref(oe,!1);for(const x of oe.models)Gu.ref(x,!1)}}});var af=n(4777),cf=n(8593),bc=n(2028);const uf={...tr.Te,sizeFactor:v.t.Numeric(1,{min:0,max:10,step:.1}),detail:v.t.Numeric(0,{min:0,max:3,step:1},Jn.iy.CustomQualityParamInfo),ignoreHydrogens:v.t.Boolean(!1)};function lh(oe){return(0,tr.Pv)({defaultProps:v.t.getDefaultValues(uf),createGeometry:dh,createLocationIterator:sr.fromGroup,getLoci:Ht,eachLocation:ln,setUpdateState:(x,F,z)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.detail!==z.detail||F.ignoreHydrogens!==z.ignoreHydrogens}},oe)}function dh(oe,x,F,z,me,Pe){const{child:Ge}=F,Xe=Ge?.unitMap.get(x.id);if(Ge&&!Xe)return rr.e.createEmpty(Pe);const{detail:Qe,sizeFactor:lt,ignoreHydrogens:ft}=me,{elements:wt,model:Ut}=x,{atomicNumber:Jt}=x.model.atomicHierarchy.derived.atom,gn=wt.length,Pn=gn*(0,zr.J)(Qe),wn=lr.P.createState(Pn,Pn/2,Pe),Bn=cf._.Provider.get(Ut);if(!Bn)return rr.e.createEmpty(Pe);const Mn=(0,g.eB)(),Ln=(0,g.U)(),cr=(0,g.eB)(),qn=(0,g.eB)(),Qn=(0,g.eB)(),{elementToAnsiotrop:Zn,data:zn}=Bn,{U:Lr}=zn,wr=zn._schema.U.space,to=x.conformation,Cr=Je.iZ.Location.create(F);Cr.unit=x;for(let wo=0;wo(0,pr.TP)("Ellipsoid Mesh",oe,x,lh),"intra-bond":(oe,x)=>(0,pr.TP)("Intra-unit bond cylinder",oe,x,mi),"inter-bond":(oe,x)=>(0,pr.Kp)("Inter-unit bond cylinder",oe,x,Hn)},df={...uf,...Ci,...Qi,includeParent:v.t.Boolean(!1),adjustCylinderLength:v.t.Boolean(!1,{isHidden:!0}),unitKinds:(0,Rr.R8)(["atomic"]),sizeFactor:v.t.Numeric(1,{min:.01,max:10,step:.01}),sizeAspectRatio:v.t.Numeric(.1,{min:.01,max:3,step:.01}),linkCap:v.t.Boolean(!0),visuals:v.t.MultiSelect(["ellipsoid-mesh","intra-bond","inter-bond"],v.t.objectToOptions(lf)),bumpFrequency:v.t.Numeric(0,{min:0,max:10,step:.1},Jn.iy.ShadingCategory)},ph=(0,pr.GT)({name:"ellipsoid",label:"Ellipsoid",description:"Displays anisotropic displacement ellipsoids of atomic elements plus bonds as cylinders.",factory:function mh(oe,x){return dr.YL.createMulti("Ellipsoid",oe,x,pr.J1,lf)},getParams:function fh(oe,x){return df},defaultValues:v.t.getDefaultValues(df),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:oe=>oe.elementCount>0&&oe.models.some(x=>cf._.Provider.isApplicable(x)),getData:(oe,x)=>x.includeParent?oe.asParent():oe,mustRecreate:(oe,x)=>oe.includeParent!==x.includeParent});var hh=n(9421),gh=(n(4951),n(2897)),yh=n(4143),cs=n(4511);const vh="\nprecision highp float;\n\nattribute vec3 aPosition;\nattribute float aRadius;\n\nvarying vec3 vPosition;\nvarying float vRadiusSqInv;\n\n#if defined(dCalcType_groupId)\n attribute float aGroup;\n varying float vGroup;\n#endif\n\nuniform vec3 uBboxSize;\nuniform vec3 uBboxMin;\nuniform float uResolution;\n\nvoid main() {\n vRadiusSqInv = 1.0 / (aRadius * aRadius);\n #if defined(dCalcType_groupId)\n vGroup = aGroup;\n #endif\n gl_PointSize = ceil(((aRadius * 3.0) / uResolution) + uResolution);\n vPosition = (aPosition - uBboxMin) / uResolution;\n gl_Position = vec4(((aPosition - uBboxMin) / uBboxSize) * 2.0 - 1.0, 1.0);\n}\n",_h="\nprecision highp float;\n\nvarying vec3 vPosition;\nvarying float vRadiusSqInv;\n#if defined(dCalcType_groupId)\n #if defined(dGridTexType_2d)\n precision highp sampler2D;\n uniform sampler2D tMinDistanceTex;\n uniform vec3 uGridTexDim;\n #elif defined(dGridTexType_3d)\n precision highp sampler3D;\n uniform sampler3D tMinDistanceTex;\n #endif\n varying float vGroup;\n#endif\n\n#include common\n\nuniform vec3 uGridDim;\nuniform vec2 uGridTexScale;\nuniform float uCurrentSlice;\nuniform float uCurrentX;\nuniform float uCurrentY;\nuniform float uAlpha;\nuniform float uResolution;\nuniform float uRadiusFactorInv;\n\nvoid main() {\n vec2 v = gl_FragCoord.xy - vec2(uCurrentX, uCurrentY) - 0.5;\n vec3 fragPos = vec3(v.x, v.y, uCurrentSlice);\n float dist = distance(fragPos, vPosition) * uResolution;\n\n #if defined(dCalcType_density)\n float density = exp(-uAlpha * ((dist * dist) * vRadiusSqInv));\n gl_FragColor.a = density * uRadiusFactorInv;\n #elif defined(dCalcType_minDistance)\n gl_FragColor.a = 1.0 - dist * uRadiusFactorInv;\n #elif defined(dCalcType_groupId)\n #if defined(dGridTexType_2d)\n float minDistance = 1.0 - texture2D(tMinDistanceTex, (gl_FragCoord.xy) / (uGridTexDim.xy / uGridTexScale)).a;\n #elif defined(dGridTexType_3d)\n float minDistance = 1.0 - texelFetch(tMinDistanceTex, ivec3(gl_FragCoord.xy, uCurrentSlice), 0).a;\n #endif\n if (dist * uRadiusFactorInv > minDistance + uResolution * 0.05)\n discard;\n gl_FragColor.rgb = packIntToRGB(vGroup);\n #endif\n}\n",bh={drawCount:(0,cs.Xb)("number"),instanceCount:(0,cs.Xb)("number"),aRadius:(0,cs.Yz)("float32",1,0),aPosition:(0,cs.Yz)("float32",3,0),aGroup:(0,cs.Yz)("float32",1,0),uCurrentSlice:(0,cs.w5)("f"),uCurrentX:(0,cs.w5)("f"),uCurrentY:(0,cs.w5)("f"),uBboxMin:(0,cs.w5)("v3","material"),uBboxSize:(0,cs.w5)("v3","material"),uGridDim:(0,cs.w5)("v3","material"),uGridTexDim:(0,cs.w5)("v3","material"),uGridTexScale:(0,cs.w5)("v2","material"),uAlpha:(0,cs.w5)("f","material"),uResolution:(0,cs.w5)("f","material"),uRadiusFactorInv:(0,cs.w5)("f","material"),tMinDistanceTex:(0,cs.$G)("texture","rgba","float","nearest","material"),dGridTexType:(0,cs.$F)("string",["2d","3d"]),dCalcType:(0,cs.$F)("string",["density","minDistance","groupId"])},na="gaussian-density";function bl(oe){return oe.namedFramebuffers[na]||(oe.namedFramebuffers[na]=oe.resources.framebuffer()),oe.namedFramebuffers[na]}function xl(oe,x,F,z,me,Pe){const Ge=`${na}-${oe}`;return x.namedTextures[Ge]||(x.namedTextures[Ge]=x.resources.texture(F,z,me,Pe)),x.namedTextures[Ge]}function ff(oe,x,F,z,me,Pe){return oe.isWebGL2?function xh(oe,x,F,z,me,Pe){se.g$&&oe.timer.mark("GaussianDensityTexture3d");const Ge=function Ch(oe,x,F,z,me,Pe){const{gl:Ge,resources:Xe,state:Qe,extensions:{colorBufferFloat:lt,textureFloat:ft,colorBufferHalfFloat:wt,textureHalfFloat:Ut}}=oe,{smoothness:Jt,resolution:gn}=me,{drawCount:Pn,positions:wn,radii:Bn,groups:Mn,scale:Ln,expandedBox:cr,dim:qn,maxRadius:Qn}=gf(x,F,z,me),[Zn,zn,Lr]=qn,wr=xl("min-dist-3d",oe,"volume-uint8","rgba","ubyte","nearest");wr.define(Zn,zn,Lr);const to=g.ZY.create(1,1),Cr=2*Qn,Zr=yf(oe,Pn,wn,Bn,Mn,wr,cr,qn,qn,to,Jt,gn,Cr),{uCurrentSlice:Io}=Zr.values,wo=bl(oe);function si(Ii,ai){Qe.currentRenderItemId=-1;for(let li=0;li=Io&&(Xi-=Io,vs+=wr,As=0,G.IQ.update($o,vs)),G.IQ.update(Ko,As),G.IQ.update(Qo,xa),lt.viewport(As,vs,Lr,wr),lt.scissor(As,vs,Lr,wr),go.render(),++Xi,As+=Lr;Xe.flush()}return fi.bind(),vf(oe),Ge||(Ge=Ut&&Jt?Qe.texture("image-float16","rgba","fp16","linear"):ft&&wt?Qe.texture("image-float32","rgba","float","linear"):Qe.texture("image-uint8","rgba","ubyte","linear")),Ge.define(li,Vo),bf(oe,go),Zo(Ge,!0),gn&&(_f(oe,go),Zo(jo,!0),xf(oe,go),Zo(Ge,!1)),{texture:Ge,scale:qn,bbox:Qn,gridDim:Zn,gridTexDim:si,gridTexScale:Ii,radiusFactor:ai,resolution:wn,maxRadius:zn}}(oe,x,F,z,me,Pe,Ge);return se.g$&&oe.timer.markEnd("GaussianDensityTexture2d"),mf(Xe)}function mf({texture:oe,scale:x,bbox:F,gridDim:z,gridTexDim:me,gridTexScale:Pe,radiusFactor:Ge,resolution:Xe,maxRadius:Qe}){return{transform:pf(x,F),texture:oe,bbox:F,gridDim:z,gridTexDim:me,gridTexScale:Pe,radiusFactor:Ge,resolution:Xe,maxRadius:Qe}}function pf(oe,x){const F=g.$I.identity();return g.$I.fromScaling(F,oe),g.$I.setTranslation(F,x.min),F}function gf(oe,x,F,z){const{resolution:me,radiusOffset:Pe}=z,Ge=1/me,{indices:Xe,x:Qe,y:lt,z:ft,id:wt}=oe,Ut=Tt.CD.size(Xe),Jt=new Float32Array(3*Ut),gn=new Float32Array(Ut),Pn=new Float32Array(Ut);let wn=0;for(let Qn=0;Qn0?"3d":"2d"),G.IQ.updateIfChanged(gn.dCalcType,"density"),oe.namedComputeRenderables[na].update()}else oe.namedComputeRenderables[na]=function Sh(oe,x,F,z,me,Pe,Ge,Xe,Qe,lt,ft,wt,Ut){const Jt=g.eB.sub((0,g.eB)(),Ge.max,Ge.min),gn={drawCount:G.IQ.create(x),instanceCount:G.IQ.create(1),aRadius:G.IQ.create(z),aPosition:G.IQ.create(F),aGroup:G.IQ.create(me),uCurrentSlice:G.IQ.create(0),uCurrentX:G.IQ.create(0),uCurrentY:G.IQ.create(0),uBboxMin:G.IQ.create(Ge.min),uBboxSize:G.IQ.create(Jt),uGridDim:G.IQ.create(Xe),uGridTexDim:G.IQ.create(Qe),uGridTexScale:G.IQ.create(lt),uAlpha:G.IQ.create(ft),uResolution:G.IQ.create(wt),uRadiusFactorInv:G.IQ.create(1/Ut),tMinDistanceTex:G.IQ.create(Pe),dGridTexType:G.IQ.create(Pe.getDepth()>0?"3d":"2d"),dCalcType:G.IQ.create("density")},Pn={...bh},wn=(0,gh.NG)(na,vh,_h),Bn=(0,yh.$h)(oe,"points",wn,Pn,gn);return(0,hh._)(Bn,gn)}(oe,x,F,z,me,Pe,Ge,Xe,Qe,lt,ft,wt,Ut);return oe.namedComputeRenderables[na]}function vf(oe){const{gl:x,state:F}=oe;F.disable(x.CULL_FACE),F.enable(x.BLEND),F.disable(x.DEPTH_TEST),F.enable(x.SCISSOR_TEST),F.depthMask(!1),F.clearColor(0,0,0,0)}function _f(oe,x){const{gl:F,state:z}=oe;if(G.IQ.update(x.values.dCalcType,"minDistance"),x.update(),z.colorMask(!1,!1,!1,!0),z.blendFunc(F.ONE,F.ONE),!oe.extensions.blendMinMax)throw new Error("GPU gaussian surface calculation requires EXT_blend_minmax");z.blendEquation(oe.extensions.blendMinMax.MAX)}function bf(oe,x){const{gl:F,state:z}=oe;G.IQ.update(x.values.dCalcType,"density"),x.update(),z.colorMask(!1,!1,!1,!0),z.blendFunc(F.ONE,F.ONE),z.blendEquation(F.FUNC_ADD)}function xf(oe,x){const{gl:F,state:z}=oe;G.IQ.update(x.values.dCalcType,"groupId"),x.update(),z.colorMask(!0,!0,!0,!1),z.blendFunc(F.ONE,F.ZERO),z.blendEquation(F.FUNC_ADD)}var Ah=n(9886);function Cf(oe,x,F,z,me){return Sl.apply(this,arguments)}function Sl(){return Sl=(0,r.A)(function*(oe,x,F,z,me){const{resolution:Pe,radiusOffset:Ge,smoothness:Xe}=me,Qe=1/Pe,{indices:lt,x:ft,y:wt,z:Ut,id:Jt}=x,gn=Tt.CD.size(lt),Pn=new Float32Array(gn);let wn=0;for(let Zo=0;ZoVo[ra]&&(Vo[ra]=fa,Lr[ra]=Jt?Jt[Ai]:Ai)}}}}}}function $o(){return($o=(0,r.A)(function*(){for(let Zo=0;Zo1)return!1;const z=F.maxTextureSize/3,{areaCells:me,maxAreaCells:Pe}=(0,Gr.Dt)(oe.boundary.box,x.resolution,z*z);return me{F.resolution!==z.resolution&&(x.createGeometry=!0),F.radiusOffset!==z.radiusOffset&&(x.createGeometry=!0),F.smoothness!==z.smoothness&&(x.createGeometry=!0),F.ignoreHydrogens!==z.ignoreHydrogens&&(x.createGeometry=!0),F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant&&(x.createGeometry=!0),F.traceOnly!==z.traceOnly&&(x.createGeometry=!0),F.includeParent!==z.includeParent&&(x.createGeometry=!0),F.smoothColors.name!==z.smoothColors.name?x.updateColor=!0:"on"===F.smoothColors.name&&"on"===z.smoothColors.name&&(F.smoothColors.params.resolutionFactor!==z.smoothColors.params.resolutionFactor&&(x.updateColor=!0),F.smoothColors.params.sampleStride!==z.smoothColors.params.sampleStride&&(x.updateColor=!0))},mustRecreate:(x,F,z)=>!F.tryUseGpu||!z||!Cc(x.structure,F,z),processValues:(x,F,z,me,Pe)=>{const{resolution:Ge,colorTexture:Xe}=F.meta,Qe=(0,Jn.Y0)(z.smoothColors,me.color.preferSmoothing,Ge);Qe&&Pe&&((0,Pf._i)(x,Qe.resolution,Qe.stride,Pe,Xe),F.meta.colorTexture=x.tColorGrid.ref.value)},dispose:x=>{var F;x.vertexTexture.ref.value.destroy(),x.groupTexture.ref.value.destroy(),x.normalTexture.ref.value.destroy(),x.doubleBuffer.destroy(),null===(F=x.meta.colorTexture)||void 0===F||F.destroy()}},oe)}(oe):function wh(oe){return(0,tr.Pv)({defaultProps:v.t.getDefaultValues(El),createGeometry:Lh,createLocationIterator:sr.fromGroup,getLoci:Ht,eachLocation:ln,setUpdateState:(x,F,z)=>{F.resolution!==z.resolution&&(x.createGeometry=!0),F.radiusOffset!==z.radiusOffset&&(x.createGeometry=!0),F.smoothness!==z.smoothness&&(x.createGeometry=!0),F.ignoreHydrogens!==z.ignoreHydrogens&&(x.createGeometry=!0),F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant&&(x.createGeometry=!0),F.traceOnly!==z.traceOnly&&(x.createGeometry=!0),F.includeParent!==z.includeParent&&(x.createGeometry=!0),F.smoothColors.name!==z.smoothColors.name?x.updateColor=!0:"on"===F.smoothColors.name&&"on"===z.smoothColors.name&&(F.smoothColors.params.resolutionFactor!==z.smoothColors.params.resolutionFactor&&(x.updateColor=!0),F.smoothColors.params.sampleStride!==z.smoothColors.params.sampleStride&&(x.updateColor=!0))},mustRecreate:(x,F,z)=>F.tryUseGpu&&!!z&&Cc(x.structure,F,z),processValues:(x,F,z,me,Pe)=>{const{resolution:Ge,colorTexture:Xe}=F.meta,Qe=(0,Jn.Y0)(z.smoothColors,me.color.preferSmoothing,Ge);Qe&&((0,Tu.XP)(x,Qe.resolution,Qe.stride,Pe,Xe),F.meta.colorTexture=x.tColorGrid.ref.value)},dispose:x=>{var F;null===(F=x.meta.colorTexture)||void 0===F||F.destroy()}},oe)}(oe)}function Rh(oe,x,F,z){return F.tryUseGpu&&z&&Df(z)&&Cc(x,F,z)?function zh(oe){return(0,ti.hJ)({defaultProps:v.t.getDefaultValues(Bf),createGeometry:Gh,createLocationIterator:sr.fromStructure,getLoci:ur,eachLocation:kn,setUpdateState:(x,F,z)=>{F.resolution!==z.resolution&&(x.createGeometry=!0),F.radiusOffset!==z.radiusOffset&&(x.createGeometry=!0),F.smoothness!==z.smoothness&&(x.createGeometry=!0),F.ignoreHydrogens!==z.ignoreHydrogens&&(x.createGeometry=!0),F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant&&(x.createGeometry=!0),F.traceOnly!==z.traceOnly&&(x.createGeometry=!0),F.includeParent!==z.includeParent&&(x.createGeometry=!0),F.smoothColors.name!==z.smoothColors.name?x.updateColor=!0:"on"===F.smoothColors.name&&"on"===z.smoothColors.name&&(F.smoothColors.params.resolutionFactor!==z.smoothColors.params.resolutionFactor&&(x.updateColor=!0),F.smoothColors.params.sampleStride!==z.smoothColors.params.sampleStride&&(x.updateColor=!0))},mustRecreate:(x,F,z)=>!F.tryUseGpu||!z||!Cc(x,F,z),processValues:(x,F,z,me,Pe)=>{const{resolution:Ge,colorTexture:Xe}=F.meta,Qe=(0,Jn.Y0)(z.smoothColors,me.color.preferSmoothing,Ge);Qe&&Pe&&((0,Pf._i)(x,Qe.resolution,Qe.stride,Pe,Xe),F.meta.colorTexture=x.tColorGrid.ref.value)},dispose:x=>{var F;x.vertexTexture.ref.value.destroy(),x.groupTexture.ref.value.destroy(),x.normalTexture.ref.value.destroy(),x.doubleBuffer.destroy(),null===(F=x.meta.colorTexture)||void 0===F||F.destroy()}},oe)}(oe):function Nh(oe){return(0,ti.wA)({defaultProps:v.t.getDefaultValues(Bf),createGeometry:Fh,createLocationIterator:sr.fromStructure,getLoci:ur,eachLocation:kn,setUpdateState:(x,F,z)=>{F.resolution!==z.resolution&&(x.createGeometry=!0),F.radiusOffset!==z.radiusOffset&&(x.createGeometry=!0),F.smoothness!==z.smoothness&&(x.createGeometry=!0),F.ignoreHydrogens!==z.ignoreHydrogens&&(x.createGeometry=!0),F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant&&(x.createGeometry=!0),F.traceOnly!==z.traceOnly&&(x.createGeometry=!0),F.smoothColors.name!==z.smoothColors.name?x.updateColor=!0:"on"===F.smoothColors.name&&"on"===z.smoothColors.name&&(F.smoothColors.params.resolutionFactor!==z.smoothColors.params.resolutionFactor&&(x.updateColor=!0),F.smoothColors.params.sampleStride!==z.smoothColors.params.sampleStride&&(x.updateColor=!0))},mustRecreate:(x,F,z)=>F.tryUseGpu&&!!z&&Cc(x,F,z),processValues:(x,F,z,me,Pe)=>{const{resolution:Ge,colorTexture:Xe}=F.meta,Qe=(0,Jn.Y0)(z.smoothColors,me.color.preferSmoothing,Ge);Qe&&((0,Tu.XP)(x,Qe.resolution,Qe.stride,Pe,Xe),F.meta.colorTexture=x.tColorGrid.ref.value)},dispose:x=>{var F;null===(F=x.meta.colorTexture)||void 0===F||F.destroy()}},oe)}(oe)}function Lh(oe,x,F,z,me,Pe){return Il.apply(this,arguments)}function Il(){return Il=(0,r.A)(function*(oe,x,F,z,me,Pe){const{smoothness:Ge}=me,{transform:Xe,field:Qe,idField:lt,radiusFactor:ft,resolution:wt,maxRadius:Ut}=yield Ef(F,x,z.size,me).runInContext(oe.runtime),Jt={isoLevel:Math.exp(-Ge)/ft,scalarField:Qe,idField:lt},gn=yield(0,xc.O)(Jt,Pe).runAsChild(oe.runtime);gn.meta.resolution=wt,rr.e.transform(gn,Xe),oe.webgl&&!oe.webgl.isWebGL2?(rr.e.uniformTriangleGroup(gn),Bu.IQ.updateIfChanged(gn.varyingGroup,!1)):Bu.IQ.updateIfChanged(gn.varyingGroup,!0);const Pn=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,Ut);return gn.setBoundingSphere(Pn),gn}),Il.apply(this,arguments)}function Fh(oe,x,F,z,me){return Al.apply(this,arguments)}function Al(){return Al=(0,r.A)(function*(oe,x,F,z,me){const{smoothness:Pe}=z,{transform:Ge,field:Xe,idField:Qe,radiusFactor:lt,resolution:ft,maxRadius:wt}=yield function Bh(oe,x,F){const{position:z,boundary:me,radius:Pe}=(0,Gr.oc)(oe,x,F),Ge=(0,Gr.FC)(me.box,F);return R.YZ.create("Gaussian Density",function(){var Xe=(0,r.A)(function*(Qe){return yield Cf(Qe,z,me.box,Pe,Ge)});return function(Qe){return Xe.apply(this,arguments)}}())}(x,F.size,z).runInContext(oe.runtime),Ut={isoLevel:Math.exp(-Pe)/lt,scalarField:Xe,idField:Qe},Jt=yield(0,xc.O)(Ut,me).runAsChild(oe.runtime);Jt.meta.resolution=ft,rr.e.transform(Jt,Ge),oe.webgl&&!oe.webgl.isWebGL2?(rr.e.uniformTriangleGroup(Jt),Bu.IQ.updateIfChanged(Jt.varyingGroup,!1)):Bu.IQ.updateIfChanged(Jt.varyingGroup,!0);const gn=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,wt);return Jt.setBoundingSphere(gn),Jt}),Al.apply(this,arguments)}const Sc="gaussian-surface";function Uh(oe,x,F,z,me,Pe){return Pl.apply(this,arguments)}function Pl(){return Pl=(0,r.A)(function*(oe,x,F,z,me,Pe){if(!oe.webgl)throw new Error("webgl context required to create gaussian surface texture-mesh");se.g$&&oe.webgl.timer.mark("createGaussianSurfaceTextureMesh");const{namedTextures:Ge,resources:Xe,extensions:{colorBufferFloat:Qe,textureFloat:lt,colorBufferHalfFloat:ft,textureHalfFloat:wt}}=oe.webgl;Ge[Sc]||(Ge[Sc]=ft&&wt?Xe.texture("image-float16","rgba","fp16","linear"):Qe&<?Xe.texture("image-float32","rgba","float","linear"):Xe.texture("image-uint8","rgba","ubyte","linear"));const Ut=yield function Th(oe,x,F,z,me,Pe,Ge){const{position:Xe,boundary:Qe,radius:lt}=(0,Gr.LT)(oe,x,F,me),ft=(0,Gr.FC)(Qe.box,me,Sf(Pe,oe));return R.YZ.create("Gaussian Density",function(){var wt=(0,r.A)(function*(Ut){return Cl(Pe,Xe,Qe.box,lt,z,ft,Ge)});return function(Ut){return wt.apply(this,arguments)}}())}(F,x,z.size,!0,me,oe.webgl,Ge[Sc]).runInContext(oe.runtime),Jt=Math.exp(-me.smoothness)/Ut.radiusFactor,gn=g.eB.create(0,1,2),Pn=Pe?.doubleBuffer.get(),wn=(0,Af._)(oe.webgl,Ut.texture,Ut.gridDim,Ut.gridTexDim,Ut.gridTexScale,Ut.transform,Jt,!1,!0,gn,!0,Pn?.vertex,Pn?.group,Pn?.normal);se.g$&&oe.webgl.timer.markEnd("createGaussianSurfaceTextureMesh");const Bn=x.elements.length,Mn=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,Ut.maxRadius),Ln=If.X.create(wn.vertexCount,Bn,wn.vertexTexture,wn.groupTexture,wn.normalTexture,Mn,Pe);return Ln.meta.resolution=Ut.resolution,Ln.meta.webgl=oe.webgl,Ln}),Pl.apply(this,arguments)}function Gh(oe,x,F,z,me){return Tl.apply(this,arguments)}function Tl(){return Tl=(0,r.A)(function*(oe,x,F,z,me){if(!oe.webgl)throw new Error("webgl context required to create structure gaussian surface texture-mesh");se.g$&&oe.webgl.timer.mark("createStructureGaussianSurfaceTextureMesh");const{namedTextures:Pe,resources:Ge,extensions:{colorBufferFloat:Xe,textureFloat:Qe,colorBufferHalfFloat:lt,textureHalfFloat:ft}}=oe.webgl;Pe[Sc]||(Pe[Sc]=lt&&ft?Ge.texture("image-float16","rgba","fp16","linear"):Xe&&Qe?Ge.texture("image-float32","rgba","float","linear"):Ge.texture("image-uint8","rgba","ubyte","linear"));const wt=yield function Mh(oe,x,F,z,me,Pe){const{box:Ge}=oe.lookup3d.boundary,{position:Xe,boundary:Qe,radius:lt}=(0,Gr.oc)(oe,x,z),ft=(0,Gr.FC)(Qe.box,z);return R.YZ.create("Gaussian Density",function(){var wt=(0,r.A)(function*(Ut){return Cl(me,Xe,Ge,lt,F,ft,Pe)});return function(Ut){return wt.apply(this,arguments)}}())}(x,F.size,!0,z,oe.webgl,Pe[Sc]).runInContext(oe.runtime),Ut=Math.exp(-z.smoothness)/wt.radiusFactor,Jt=g.eB.create(0,1,2),gn=me?.doubleBuffer.get(),Pn=(0,Af._)(oe.webgl,wt.texture,wt.gridDim,wt.gridTexDim,wt.gridTexScale,wt.transform,Ut,!1,!0,Jt,!0,gn?.vertex,gn?.group,gn?.normal);se.g$&&oe.webgl.timer.markEnd("createStructureGaussianSurfaceTextureMesh");const wn=x.elementCount,Bn=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,wt.maxRadius),Mn=If.X.create(Pn.vertexCount,wn,Pn.vertexTexture,Pn.groupTexture,Pn.normalTexture,Bn,me);return Mn.meta.resolution=wt.resolution,Mn.meta.webgl=oe.webgl,Mn}),Tl.apply(this,arguments)}var za=n(5315);function kh(oe,x,F,z,me,Pe){return Bl.apply(this,arguments)}function Bl(){return Bl=(0,r.A)(function*(oe,x,F,z,me,Pe){const{smoothness:Ge}=me,{transform:Xe,field:Qe,idField:lt,maxRadius:ft}=yield Ef(F,x,z.size,me).runInContext(oe.runtime),wt={isoLevel:Math.exp(-Ge),scalarField:Qe,idField:lt},Ut=yield(0,xc.e)(wt,Pe).runAsChild(oe.runtime);za.q.transform(Ut,Xe);const Jt=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,ft);return Ut.setBoundingSphere(Jt),Ut}),Bl.apply(this,arguments)}const Mf={...tr.zj,...Gc,sizeFactor:v.t.Numeric(3,{min:0,max:10,step:.1}),lineSizeAttenuation:v.t.Boolean(!1),ignoreHydrogens:v.t.Boolean(!1),ignoreHydrogensVariant:v.t.Select("all",v.t.arrayToOptions(["all","non-polar"])),includeParent:v.t.Boolean(!1,{isHidden:!0})};function Hh(oe){return(0,tr.zK)({defaultProps:v.t.getDefaultValues(Mf),createGeometry:kh,createLocationIterator:sr.fromGroup,getLoci:Ht,eachLocation:ln,setUpdateState:(x,F,z)=>{F.resolution!==z.resolution&&(x.createGeometry=!0),F.radiusOffset!==z.radiusOffset&&(x.createGeometry=!0),F.smoothness!==z.smoothness&&(x.createGeometry=!0),F.ignoreHydrogens!==z.ignoreHydrogens&&(x.createGeometry=!0),F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant&&(x.createGeometry=!0),F.traceOnly!==z.traceOnly&&(x.createGeometry=!0),F.includeParent!==z.includeParent&&(x.createGeometry=!0)}},oe)}const Of={"gaussian-surface-mesh":(oe,x)=>(0,vn.T)("Gaussian surface mesh",oe,x,Oh),"structure-gaussian-surface-mesh":(oe,x)=>(0,pr.Kp)("Structure-Gaussian surface mesh",oe,x,Rh),"gaussian-surface-wireframe":(oe,x)=>(0,vn.T)("Gaussian surface wireframe",oe,x,Hh)},Rf={...El,...Mf,visuals:v.t.MultiSelect(["gaussian-surface-mesh"],v.t.objectToOptions(Of)),bumpFrequency:v.t.Numeric(1,{min:0,max:10,step:.1},Jn.iy.ShadingCategory)},Qh=(0,pr.GT)({name:"gaussian-surface",label:"Gaussian Surface",description:"Displays a gaussian molecular surface.",factory:function Wh(oe,x){return dr.YL.createMulti("Gaussian Surface",oe,x,pr.J1,Of)},getParams:function jh(oe,x){return Rf},defaultValues:v.t.getDefaultValues(Rf),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"physical"},isApplicable:oe=>oe.elementCount>0});var Dl=n(7377);const Lf={...ti.ip,background:v.t.Boolean(!1),backgroundMargin:v.t.Numeric(0,{min:0,max:1,step:.01}),backgroundColor:v.t.Color(_e.s.black),backgroundOpacity:v.t.Numeric(.5,{min:0,max:1,step:.01}),borderWidth:v.t.Numeric(.25,{min:0,max:.5,step:.01}),level:v.t.Select("residue",[["chain","Chain"],["residue","Residue"],["element","Element"]],{isEssential:!0}),ignoreHydrogens:v.t.Boolean(!1),ignoreHydrogensVariant:v.t.Select("all",v.t.arrayToOptions(["all","non-polar"])),chainScale:v.t.Numeric(10,{min:0,max:20,step:.1}),residueScale:v.t.Numeric(1,{min:0,max:20,step:.1}),elementScale:v.t.Numeric(.5,{min:0,max:20,step:.1})};function Kh(oe){return(0,ti.Go)({defaultProps:v.t.getDefaultValues(Lf),createGeometry:Zh,createLocationIterator:sr.fromStructure,getLoci:ur,eachLocation:kn,setUpdateState:(x,F,z)=>{x.createGeometry=F.level!==z.level||"chain"===F.level&&F.chainScale!==z.chainScale||"residue"===F.level&&F.residueScale!==z.residueScale||"element"===F.level&&F.elementScale!==z.elementScale||F.ignoreHydrogens!==z.ignoreHydrogens||F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant}},oe)}function Zh(oe,x,F,z,me){switch(z.level){case"chain":return function Yh(oe,x,F,z,me){const Pe=Je.iZ.Location.create(x),{units:Ge,serialMapping:Xe}=x,{auth_asym_id:Qe,label_asym_id:lt}=Je.StructureProperties.chain,{cumulativeUnitElementCount:ft}=Xe,wt=Ge.length,{chainScale:Ut}=z,Jt=Dl.t.create(z,wt,wt/2,me);for(let gn=0,Pn=Ge.length;gn(0,pr.Kp)("Label text",oe,x,Kh)},Ff={...Lf,visuals:v.t.MultiSelect(["label-text"],v.t.objectToOptions(wf))},e0=(0,pr.GT)({name:"label",label:"Label",description:"Displays labels.",factory:function qh(oe,x){const F=dr.YL.createMulti("Label",oe,x,pr.J1,wf);return F.setState({pickable:!1,markerActions:xr.xi.None}),F},getParams:function Jh(oe,x){return Ff},defaultValues:v.t.getDefaultValues(Ff),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"physical"},isApplicable:oe=>oe.elementCount>0});var Ml=n(6639);const Ol={probeRadius:v.t.Numeric(1.4,{min:0,max:10,step:.1},{description:"Radius of the probe tracing the molecular surface."}),resolution:v.t.Numeric(.5,{min:.01,max:20,step:.01},{description:"Grid resolution/cell spacing.",...Jn.iy.CustomQualityParamInfo}),probePositions:v.t.Numeric(36,{min:12,max:90,step:1},{description:"Number of positions tested for probe target intersection.",...Jn.iy.CustomQualityParamInfo})};function Rl(){return Rl=(0,r.A)(function*(oe,x,F,z,me,Pe){let Ge=-1;function Xe(pi,_s,$i,Ji,us){if(-1!==Ge){const Ui=Ge;if(Ui!==Ji&&Ui!==us&&Qe(Ui,pi,_s,$i))return Ui;Ge=-1}for(let Ui=0,gs=to.count;Ui0&&vm{F.resolution!==z.resolution&&(x.createGeometry=!0),F.probeRadius!==z.probeRadius&&(x.createGeometry=!0),F.probePositions!==z.probePositions&&(x.createGeometry=!0),F.ignoreHydrogens!==z.ignoreHydrogens&&(x.createGeometry=!0),F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant&&(x.createGeometry=!0),F.traceOnly!==z.traceOnly&&(x.createGeometry=!0),F.includeParent!==z.includeParent&&(x.createGeometry=!0),F.smoothColors.name!==z.smoothColors.name?x.updateColor=!0:"on"===F.smoothColors.name&&"on"===z.smoothColors.name&&(F.smoothColors.params.resolutionFactor!==z.smoothColors.params.resolutionFactor&&(x.updateColor=!0),F.smoothColors.params.sampleStride!==z.smoothColors.params.sampleStride&&(x.updateColor=!0))},processValues:(x,F,z,me,Pe)=>{const{resolution:Ge,colorTexture:Xe}=F.meta,Qe=(0,Jn.Y0)(z.smoothColors,me.color.preferSmoothing,Ge);Qe&&((0,Tu.XP)(x,Qe.resolution,Qe.stride,Pe,Xe),F.meta.colorTexture=x.tColorGrid.ref.value)},dispose:x=>{var F;null===(F=x.meta.colorTexture)||void 0===F||F.destroy()}},oe)}function u0(oe,x,F,z,me){return Nl.apply(this,arguments)}function Nl(){return Nl=(0,r.A)(function*(oe,x,F,z,me){const{transform:Pe,field:Ge,idField:Xe,resolution:Qe,maxRadius:lt}=yield function s0(oe,x,F){const{position:z,boundary:me,maxRadius:Pe}=function i0(oe,x,F){const{probeRadius:z}=F,{position:me,boundary:Pe,radius:Ge}=(0,Gr.oc)(oe,x,F),{indices:Xe}=me,Qe=Tt.CD.size(Xe),lt=new Float32Array(Tt.CD.end(Xe));let ft=0;for(let wt=0;wt{F.resolution!==z.resolution&&(x.createGeometry=!0),F.probeRadius!==z.probeRadius&&(x.createGeometry=!0),F.probePositions!==z.probePositions&&(x.createGeometry=!0),F.ignoreHydrogens!==z.ignoreHydrogens&&(x.createGeometry=!0),F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant&&(x.createGeometry=!0),F.traceOnly!==z.traceOnly&&(x.createGeometry=!0),F.includeParent!==z.includeParent&&(x.createGeometry=!0),F.smoothColors.name!==z.smoothColors.name?x.updateColor=!0:"on"===F.smoothColors.name&&"on"===z.smoothColors.name&&(F.smoothColors.params.resolutionFactor!==z.smoothColors.params.resolutionFactor&&(x.updateColor=!0),F.smoothColors.params.sampleStride!==z.smoothColors.params.sampleStride&&(x.updateColor=!0))},processValues:(x,F,z,me,Pe)=>{const{resolution:Ge,colorTexture:Xe}=F.meta,Qe=(0,Jn.Y0)(z.smoothColors,me.color.preferSmoothing,Ge);Qe&&((0,Tu.XP)(x,Qe.resolution,Qe.stride,Pe,Xe),F.meta.colorTexture=x.tColorGrid.ref.value)},dispose:x=>{var F;null===(F=x.meta.colorTexture)||void 0===F||F.destroy()}},oe)}const Vf={...tr.zj,...Ol,...Gr.$J,sizeFactor:v.t.Numeric(1.5,{min:0,max:10,step:.1})};function d0(oe,x,F,z,me,Pe){return Ul.apply(this,arguments)}function Ul(){return Ul=(0,r.A)(function*(oe,x,F,z,me,Pe){const{transform:Ge,field:Xe,idField:Qe,maxRadius:lt}=yield Nf(F,x,z.size,me).runInContext(oe.runtime),ft={isoLevel:me.probeRadius,scalarField:Xe,idField:Qe},wt=yield(0,xc.e)(ft,Pe).runAsChild(oe.runtime);za.q.transform(wt,Ge);const Ut=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,lt);return wt.setBoundingSphere(Ut),wt}),Ul.apply(this,arguments)}function f0(oe){return(0,tr.zK)({defaultProps:v.t.getDefaultValues(Vf),createGeometry:d0,createLocationIterator:sr.fromGroup,getLoci:Ht,eachLocation:ln,setUpdateState:(x,F,z)=>{F.resolution!==z.resolution&&(x.createGeometry=!0),F.probeRadius!==z.probeRadius&&(x.createGeometry=!0),F.probePositions!==z.probePositions&&(x.createGeometry=!0),F.ignoreHydrogens!==z.ignoreHydrogens&&(x.createGeometry=!0),F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant&&(x.createGeometry=!0),F.includeParent!==z.includeParent&&(x.createGeometry=!0)}},oe)}const Gf={"molecular-surface-mesh":(oe,x)=>(0,vn.T)("Molecular surface mesh",oe,x,c0),"structure-molecular-surface-mesh":(oe,x)=>(0,pr.Kp)("Structure Molecular surface mesh",oe,x,l0),"molecular-surface-wireframe":(oe,x)=>(0,vn.T)("Molecular surface wireframe",oe,x,f0)},zf={...wl,...Vf,visuals:v.t.MultiSelect(["molecular-surface-mesh"],v.t.objectToOptions(Gf)),bumpFrequency:v.t.Numeric(1,{min:0,max:10,step:.1},Jn.iy.ShadingCategory)},h0=(0,pr.GT)({name:"molecular-surface",label:"Molecular Surface",description:"Displays a molecular surface.",factory:function p0(oe,x){return dr.YL.createMulti("Molecular Surface",oe,x,pr.J1,Gf)},getParams:function m0(oe,x){return zf},defaultValues:v.t.getDefaultValues(zf),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"physical"},isApplicable:oe=>oe.elementCount>0}),kf={...tr.Te,sizeFactor:v.t.Numeric(1,{min:0,max:2,step:.1}),detail:v.t.Numeric(0,{min:0,max:3,step:1},Jn.iy.CustomQualityParamInfo)};function g0(oe){return(0,tr.Pv)({defaultProps:v.t.getDefaultValues(kf),createGeometry:v0,createLocationIterator:_0,getLoci:b0,eachLocation:x0,setUpdateState:(x,F,z)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.detail!==z.detail}},oe)}function v0(oe,x,F,z,me,Pe){if(!function y0(oe){if(Je.Nf.Traits.is(oe.traits,Je.Nf.Trait.MultiChain)||Je.Nf.Traits.is(oe.traits,Je.Nf.Trait.Partitioned))return!1;if(Je.Nf.isCoarse(oe))return!0;if(0===oe.elements.length)return!1;const F=oe.model.atomicHierarchy.derived.residue.moleculeType[oe.residueIndex[oe.elements[0]]];return!(3===F||2===F)}(x))return rr.e.createEmpty(Pe);const{detail:Ge,sizeFactor:Xe}=me,lt=lr.P.createState(256,128,Pe),ft=x.principalAxes.boxAxes,{origin:wt,dirA:Ut,dirB:Jt}=ft,gn=Bt.n.size((0,g.eB)(),ft);g.eB.scale(gn,gn,Xe/2);const Pn=g.eB.create(gn[2],gn[1],gn[0]);lt.currentGroup=0,(0,af.P)(lt,wt,Ut,Jt,Pn,Ge+1);const wn=lr.P.getMesh(lt),Bn=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,1*me.sizeFactor);return wn.setBoundingSphere(Bn),wn}function _0(oe){const{group:x,structure:F}=oe,me=x.units.length,Pe=Je.iZ.Location.create(F);return(0,oo.iQ)(1,me,1,(Xe,Qe)=>{const lt=x.units[Qe];return Pe.unit=lt,Pe.element=lt.elements[Xe],Pe})}function b0(oe,x,F){const{objectId:z,instanceId:me}=oe;if(F===z){const{structure:Pe,group:Ge}=x,Xe=Ge.units[me],Qe=Tt.CD.ofBounds(0,Xe.elements.length);return Je.iZ.Loci(Pe,[{unit:Xe,indices:Qe}])}return Rn.BL}function x0(oe,x,F){let z=!1;if(!Je.iZ.Loci.is(oe))return!1;const{structure:me,group:Pe}=x;if(!Je.oE.areEquivalent(oe.structure,me))return!1;const Ge=Pe.elements.length;for(const Xe of oe.elements){const Qe=Pe.unitIndexMap.get(Xe.unit.id);void 0!==Qe&&Tt.CD.size(Xe.indices)===Ge&&F(Tt.IX.ofSingleton(Qe))&&(z=!0)}return z}const Hf={"orientation-ellipsoid-mesh":(oe,x)=>(0,vn.T)("Orientation ellipsoid mesh",oe,x,g0)},jf={...kf,visuals:v.t.MultiSelect(["orientation-ellipsoid-mesh"],v.t.objectToOptions(Hf)),bumpFrequency:v.t.Numeric(1,{min:0,max:10,step:.1},Jn.iy.ShadingCategory)},E0=(0,pr.GT)({name:"orientation",label:"Orientation",description:"Displays orientation ellipsoids for polymer chains.",factory:function S0(oe,x){return dr.YL.createMulti("Orientation",oe,x,pr.J1,Hf)},getParams:function C0(oe,x){return jf},defaultValues:v.t.getDefaultValues(jf),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uniform"},isApplicable:oe=>oe.elementCount>0});var Vl=n(5299);const I0=ce.Gm.add3,A0=ce.Gm.add;var Gl;!function(oe){oe.create=function x(F=2048,z=1024,me){const Pe=ce.Gm.create(Float32Array,3,z,me?me.centerBuffer.ref.value:F),Ge=ce.Gm.create(Float32Array,1,z,me?me.groupBuffer.ref.value:F);return{add:(Xe,Qe,lt,ft)=>{I0(Pe,Xe,Qe,lt),A0(Ge,ft)},getPoints:()=>{const Xe=ce.Gm.compact(Pe,!0),Qe=ce.Gm.compact(Ge,!0);return Vl.O.create(Xe,Qe,Pe.elementCount,me)}}}}(Gl||(Gl={}));const Wf=g.eB.add,zl={...tr.PJ,pointSizeAttenuation:v.t.Boolean(!1),ignoreHydrogens:v.t.Boolean(!1),ignoreHydrogensVariant:v.t.Select("all",v.t.arrayToOptions(["all","non-polar"])),traceOnly:v.t.Boolean(!1),stride:v.t.Numeric(1,{min:1,max:100,step:1})};function P0(oe,x,F,z,me,Pe){const{child:Ge}=F;if(Ge&&!Ge.unitMap.get(x.id))return Vl.O.createEmpty(Pe);const Xe=x.elements,Qe=Xe.length,lt=Gl.create(Qe,Qe/10,Pe),ft=(0,g.eB)(),wt=x.conformation,Ut=bi(F,x,me),Jt=(0,g.eB)();let gn=0;if(Ut)for(let Mn=0;Mn{x.createGeometry=F.ignoreHydrogens!==z.ignoreHydrogens||F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant||F.traceOnly!==z.traceOnly||F.stride!==z.stride}},oe)}const T0={"element-point":(oe,x)=>(0,vn.T)("Points",oe,x,Qf)},Kf={...zl},M0=(0,pr.GT)({name:"point",label:"Point",description:"Displays elements (atoms, coarse spheres) as points.",factory:function D0(oe,x){return dr.YL.createMulti("Point",oe,x,pr.J1,T0)},getParams:function B0(oe,x){return Kf},defaultValues:v.t.getDefaultValues(Kf),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:oe=>oe.elementCount>0}),Zf={sizeFactor:v.t.Numeric(.2,{min:0,max:10,step:.01}),detail:v.t.Numeric(0,{min:0,max:3,step:1},Jn.iy.CustomQualityParamInfo),linearSegments:v.t.Numeric(8,{min:1,max:48,step:1},Jn.iy.CustomQualityParamInfo),radialSegments:v.t.Numeric(16,{min:2,max:56,step:2},Jn.iy.CustomQualityParamInfo)},Bs=(v.t.getDefaultValues(Zf),(0,g.eB)());function O0(oe,x,F,z,me,Pe){const Ge=x.polymerElements.length;if(!Ge)return rr.e.createEmpty(Pe);const{sizeFactor:Xe,detail:Qe,linearSegments:lt,radialSegments:ft}=me,wt=lt*ft*Ge+(ft+1)*Ge*2,Ut=lr.P.createState(wt,wt/10,Pe),Jt=ju(lt),{curvePoints:gn,normalVectors:Pn,binormalVectors:wn,widthValues:Bn,heightValues:Mn}=Jt;let Ln=0;const cr=zu(x,F,{ignoreSecondaryStructure:!0});for(;cr.hasNext;){const Zn=cr.move();Ut.currentGroup=Ln;const Lr=(0,Tr.OV)(Zn.moleculeType)?tu:eu;Wu(Jt,Zn,bd,Lr);const wr=Zn.coarseBackboneFirst||Zn.first,to=Zn.coarseBackboneLast||Zn.last,Cr=z.size.size(Zn.centerPrev)*Xe,Zr=z.size.size(Zn.center)*Xe,Io=z.size.size(Zn.centerNext)*Xe;Xu(Jt,Cr,Zr,Io,Cr,Zr,Io,Lr);let wo=lt;if(Zn.initial){wo=Math.max(Math.round(lt*Lr),1);const si=lt-wo;gn.copyWithin(0,3*si),wn.copyWithin(0,3*si),Pn.copyWithin(0,3*si),Bn.copyWithin(0,3*si),Mn.copyWithin(0,3*si),g.eB.fromArray(Bs,gn,3),g.eB.normalize(Bs,g.eB.sub(Bs,Zn.p2,Bs)),g.eB.scaleAndAdd(Bs,Zn.p2,Bs,Zr*nu),g.eB.toArray(Bs,gn,0)}else Zn.final&&(wo=Math.max(Math.round(lt*(1-Lr)),1),g.eB.fromArray(Bs,gn,3*wo-3),g.eB.normalize(Bs,g.eB.sub(Bs,Zn.p2,Bs)),g.eB.scaleAndAdd(Bs,Zn.p2,Bs,Zr*nu),g.eB.toArray(Bs,gn,3*wo));!0===Zn.initial&&!0===Zn.final?(0,kr.X)(Ut,Zn.p2,2*Zr,Qe):2===ft?Pu(Ut,gn,Pn,wn,wo,Bn,Mn,0):4===ft?Iu(Ut,gn,Pn,wn,wo,Bn,Mn,0,wr,to):hl(Ut,gn,Pn,wn,wo,ft,Bn,Mn,wr,to,"elliptical"),++Ln}const qn=lr.P.getMesh(Ut),Qn=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,1*me.sizeFactor);return qn.setBoundingSphere(Qn),qn}const Yf={...tr.Te,...Zf};function R0(oe){return(0,tr.Pv)({defaultProps:v.t.getDefaultValues(Yf),createGeometry:O0,createLocationIterator:x=>ia.fromGroup(x,{asSecondary:!0}),getLoci:Ba,eachLocation:Da,setUpdateState:(x,F,z)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.detail!==z.detail||F.linearSegments!==z.linearSegments||F.radialSegments!==z.radialSegments}},oe)}const Xf={"polymer-tube":(oe,x)=>(0,vn.T)("Polymer tube mesh",oe,x,R0),"polymer-gap":(oe,x)=>(0,vn.T)("Polymer gap cylinder",oe,x,ll)},$f={...Yf,...xu,sizeFactor:v.t.Numeric(.2,{min:0,max:10,step:.01}),visuals:v.t.MultiSelect(["polymer-tube","polymer-gap"],v.t.objectToOptions(Xf)),bumpFrequency:v.t.Numeric(2,{min:0,max:10,step:.1},Jn.iy.ShadingCategory)},F0=(0,pr.GT)({name:"putty",label:"Putty",description:"Displays a tube smoothly following the trace atoms of polymers.",factory:function w0(oe,x){return dr.YL.createMulti("Putty",oe,x,pr.J1,Xf)},getParams:function L0(oe,x){const F=v.t.clone($f);let z=!1,me=!1;return x.units.forEach(Pe=>{!z&&Je.Nf.isAtomic(Pe)&&Pe.nucleotideElements.length&&(z=!0),!me&&Pe.gapElements.length&&(me=!0)}),F.visuals.defaultValue=["polymer-tube"],me&&F.visuals.defaultValue.push("polymer-gap"),F},defaultValues:v.t.getDefaultValues($f),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uncertainty"},isApplicable:oe=>oe.polymerResidueCount>0}),Jf={"element-sphere":(oe,x)=>(0,vn.T)("Sphere mesh/impostor",oe,x,et),"structure-element-sphere":(oe,x)=>(0,pr.Kp)("Structure sphere mesh/impostor",oe,x,qt)},kl={...st,bumpFrequency:v.t.Numeric(1,{min:0,max:10,step:.1},Jn.iy.ShadingCategory),visuals:v.t.MultiSelect(["element-sphere"],v.t.objectToOptions(Jf))};let Du;const V0=(0,pr.GT)({name:"spacefill",label:"Spacefill",description:"Displays atomic/coarse elements as spheres.",factory:function U0(oe,x){return dr.YL.createMulti("Spacefill",oe,x,pr.J1,Jf)},getParams:function N0(oe,x){return x.isCoarseGrained?(Du||(Du=v.t.clone(kl),Du.sizeFactor.defaultValue=2),Du):kl},defaultValues:v.t.getDefaultValues(kl),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"physical"},isApplicable:oe=>oe.elementCount>0}),Hl=Tr.I$.is;function G0(oe,x,F,z,me,Pe){if(!Je.Nf.isAtomic(x))return za.q.createEmpty(Pe);const{child:Ge}=F,Xe=Ge?.unitMap.get(x.id);if(Ge&&!Xe)return za.q.createEmpty(Pe);const Qe=Je.iZ.Location.create(F,x),lt=x.elements,ft=x.bonds,{edgeCount:wt,a:Ut,b:Jt,edgeProps:gn,offset:Pn}=ft;if(!wt)return za.q.createEmpty(Pe);const{order:wn,flags:Bn}=gn,{sizeFactor:Mn,aromaticBonds:Ln,includeTypes:cr,excludeTypes:qn,multipleBonds:Qn}=me,Zn="off"===Qn,zn="symmetric"===Qn,to=So(Tr.I$.fromNames(cr),Tr.I$.fromNames(qn),32),Cr=(0,g.eB)(),Zr=x.conformation,{elementRingIndices:Io,elementAromaticRingIndices:wo}=x.rings,si=Ln?x.resonance.delocalizedTriplets:void 0,Ii={linkCount:2*wt,referencePosition:Vo=>{let jo=Ut[Vo],go=Jt[Vo];const Qo=si?.getThirdElement(jo,go);if(void 0!==Qo)return Zr.invariantPosition(lt[Qo],Cr);jo>go&&([jo,go]=[go,jo]),Pn[jo+1]-Pn[jo]==1&&([jo,go]=[go,jo]);const Ko=wo.get(jo)||Io.get(jo);let $o=0;for(let fi=Pn[jo],Zo=Pn[jo+1];fi$o&&($o=Xi,Zr.invariantPosition(lt[ii],Cr))}}}return $o>0?Cr:null},position:(Vo,jo,go)=>{Zr.invariantPosition(lt[Ut[go]],Vo),Zr.invariantPosition(lt[Jt[go]],jo)},style:Vo=>{const jo=wn[Vo],go=Bn[Vo];if(Hl(go,2)||Hl(go,4))return 1;if(3===jo)return Zn?0:zn?4:5;if(Ln){const Ko=Jt[Vo],$o=wo.get(Ut[Vo]),fi=wo.get(Ko),Zo=$o&&fi?(0,nt.u$)($o,fi):0;if(Hl(go,16)||Zo&&!to)return 2===Zo?8:7}return 2!==jo||Zn?0:zn?2:3},radius:Vo=>{Qe.element=lt[Ut[Vo]];const jo=z.size.size(Qe);Qe.element=lt[Jt[Vo]];const go=z.size.size(Qe);return Math.min(jo,go)*Mn},ignore:ao(F,x,me)},{lines:ai,boundingSphere:li}=(0,Vr.Yz)(oe,Ii,me,Pe);if(li)ai.setBoundingSphere(li);else if(ai.lineCount>0){const Vo=Bt.f8.expand((0,Bt.f8)(),(Xe??x).boundary.sphere,1*Mn);ai.setBoundingSphere(Vo)}return ai}const qf={...tr.zj,...Do,includeParent:v.t.Boolean(!1)};function z0(oe){return(0,tr.zK)({defaultProps:v.t.getDefaultValues(qf),createGeometry:G0,createLocationIterator:x=>Yr.fromGroup(x),getLoci:jr,eachLocation:Co,setUpdateState:(x,F,z,me,Pe,Ge,Xe)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.linkScale!==z.linkScale||F.linkSpacing!==z.linkSpacing||F.aromaticDashCount!==z.aromaticDashCount||F.dashCount!==z.dashCount||F.ignoreHydrogens!==z.ignoreHydrogens||F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant||!(0,G.af)(F.includeTypes,z.includeTypes)||!(0,G.af)(F.excludeTypes,z.excludeTypes)||F.aromaticBonds!==z.aromaticBonds||F.multipleBonds!==z.multipleBonds;const Qe=Ge.group.units[0],lt=Xe.group.units[0];Je.Nf.isAtomic(Qe)&&Je.Nf.isAtomic(lt)&&(Yo.O.areEqual(Qe.bonds,lt.bonds)||(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0,x.updateSize=!0))}},oe)}const jl=new Je.gn.ElementBondIterator;function em(oe,x,F,z){for(jl.setElement(x,F,z);jl.hasNext;){const me=jl.move();return me.otherUnit.conformation.position(me.otherUnit.elements[me.otherIndex],oe),oe}return null}function k0(oe,x,F,z,me){const Pe=x.interUnitBonds,{edgeCount:Ge,edges:Xe}=Pe;if(!Ge)return za.q.createEmpty(me);const{sizeFactor:Qe,aromaticBonds:lt,multipleBonds:ft}=z,wt="off"===ft,Ut="symmetric"===ft,Jt=(0,g.eB)(),gn=Je.iZ.Location.create(),Pn={linkCount:Ge,referencePosition:Mn=>{const Ln=Xe[Mn];let cr,qn,Qn,Zn;if(Ln.unitALn.unitB))throw new Error("same units in createInterUnitBondLines");cr=x.unitMap.get(Ln.unitB),qn=x.unitMap.get(Ln.unitA),Qn=Ln.indexB,Zn=Ln.indexA}return em(Jt,x,cr,Qn)||em(Jt,x,qn,Zn)},position:(Mn,Ln,cr)=>{const qn=Xe[cr],Qn=x.unitMap.get(qn.unitA),Zn=x.unitMap.get(qn.unitB);Qn.conformation.position(Qn.elements[qn.indexA],Mn),Zn.conformation.position(Zn.elements[qn.indexB],Ln)},style:Mn=>{const Ln=Xe[Mn].props.order,cr=G.NJ.create(Xe[Mn].props.flag);return Tr.I$.is(cr,2)||Tr.I$.is(cr,4)?1:3===Ln?wt?0:Ut?4:5:lt&&Tr.I$.is(cr,16)?7:2!==Ln||wt?0:Ut?2:3},radius:Mn=>{const Ln=Xe[Mn];gn.structure=x,gn.unit=x.unitMap.get(Ln.unitA),gn.element=gn.unit.elements[Ln.indexA];const cr=F.size.size(gn);gn.unit=x.unitMap.get(Ln.unitB),gn.element=gn.unit.elements[Ln.indexB];const qn=F.size.size(gn);return Math.min(cr,qn)*Qe},ignore:Po(x,z)},{lines:wn,boundingSphere:Bn}=(0,Vr.Yz)(oe,Pn,z,me);if(Bn)wn.setBoundingSphere(Bn);else if(wn.lineCount>0){const{child:Mn}=x,Ln=Bt.f8.expand((0,Bt.f8)(),(Mn??x).boundary.sphere,1*Qe);wn.setBoundingSphere(Ln)}return wn}const tm={...ti.YD,...Do,includeParent:v.t.Boolean(!1)};function H0(oe){return(0,ti.yd)({defaultProps:v.t.getDefaultValues(tm),createGeometry:k0,createLocationIterator:x=>Yr.fromStructure(x),getLoci:Eo,eachLocation:ei,setUpdateState:(x,F,z,me,Pe,Ge,Xe)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.linkScale!==z.linkScale||F.linkSpacing!==z.linkSpacing||F.aromaticDashCount!==z.aromaticDashCount||F.dashCount!==z.dashCount||F.ignoreHydrogens!==z.ignoreHydrogens||F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant||!(0,G.af)(F.includeTypes,z.includeTypes)||!(0,G.af)(F.excludeTypes,z.excludeTypes)||F.multipleBonds!==z.multipleBonds,Ge.interUnitBonds!==Xe.interUnitBonds&&(x.createGeometry=!0,x.updateTransform=!0,x.updateColor=!0,x.updateSize=!0)}},oe)}var j0=n(5821),W0=n(7767);const Ec=g.eB.scaleAndAdd,nm=g.eB.unitX,rm=g.eB.unitY,om=g.eB.unitZ,im={...tr.zj,lineSizeAttenuation:v.t.Boolean(!1),ignoreHydrogens:v.t.Boolean(!1),ignoreHydrogensVariant:v.t.Select("all",v.t.arrayToOptions(["all","non-polar"])),traceOnly:v.t.Boolean(!1),crosses:v.t.Select("lone",v.t.arrayToOptions(["lone","all"])),crossSize:v.t.Numeric(.35,{min:0,max:2,step:.01})};function Q0(oe,x,F,z,me,Pe){const{child:Ge}=F;if(Ge&&!Ge.unitMap.get(x.id))return za.q.createEmpty(Pe);const Xe=x.elements,Qe=Xe.length,lt=j0.d.create(Qe,Qe/10,Pe),ft=(0,g.eB)(),wt=(0,g.eB)(),Ut=(0,g.eB)(),Jt=x.conformation,gn=bi(F,x,me),Pn=me.crossSize/2,wn="lone"===me.crosses;for(let Ln=0;Ln{x.createGeometry=F.ignoreHydrogens!==z.ignoreHydrogens||F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant||F.traceOnly!==z.traceOnly||F.crosses!==z.crosses||F.crossSize!==z.crossSize}},oe)}const sm={"intra-bond":(oe,x)=>(0,vn.T)("Intra-unit bond line",oe,x,z0),"inter-bond":(oe,x)=>(0,nr.K)("Inter-unit bond line",oe,x,H0),"element-point":(oe,x)=>(0,vn.T)("Points",oe,x,Qf),"element-cross":(oe,x)=>(0,vn.T)("Crosses",oe,x,K0)},Wl={...qf,...tm,...zl,...im,pointStyle:v.t.Select("circle",v.t.objectToOptions(Vl.O.StyleTypes)),multipleBonds:v.t.Select("offset",v.t.arrayToOptions(["off","symmetric","offset"])),includeParent:v.t.Boolean(!1),sizeFactor:v.t.Numeric(2,{min:.01,max:10,step:.01}),unitKinds:(0,Rr.R8)(["atomic"]),visuals:v.t.MultiSelect(["intra-bond","inter-bond","element-point","element-cross"],v.t.objectToOptions(sm))},X0=(0,pr.GT)({name:"line",label:"Line",description:"Displays bonds as lines and atoms as points or croses.",factory:function Y0(oe,x){return dr.YL.createMulti("Line",oe,x,pr.J1,sm)},getParams:function Z0(oe,x){if(Je.oE.getSize(x)>=Je.oE.Size.Huge){const z=v.t.clone(Wl);return z.visuals.defaultValue=["intra-bond","element-point","element-cross"],z}return Wl},defaultValues:v.t.getDefaultValues(Wl),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:oe=>oe.elementCount>0,getData:(oe,x)=>x.includeParent?oe.asParent():oe,mustRecreate:(oe,x)=>oe.includeParent!==x.includeParent});var am=n(9928);function $0(oe,x,F,z,me){return Ql.apply(this,arguments)}function Ql(){return Ql=(0,r.A)(function*(oe,x,F,z,me){const{runtime:Pe,webgl:Ge}=oe;if(!Ge||!Ge.extensions.blendMinMax)throw new Error("GaussianDensityVolume requires `webgl` and `blendMinMax` extension");const Xe=me?me.gridTexture.ref.value:void 0,Qe=yield function Dh(oe,x,F,z,me){const{position:Pe,boundary:Ge,radius:Xe}=(0,Gr.oc)(oe,x,F),Qe=(0,Gr.FC)(Ge.box,F);return R.YZ.create("Gaussian Density",function(){var lt=(0,r.A)(function*(ft){return ff(z,Pe,Ge.box,Xe,Qe,me)});return function(ft){return lt.apply(this,arguments)}}())}(x,F.size,z,Ge,Xe).runInContext(Pe),{transform:lt,texture:ft,bbox:wt,gridDim:Ut}=Qe,gn=g.$I.mul((0,g.$I)(),lt,g.$I.fromScaling((0,g.$I)(),Ut)),Pn=g.$I.getScaling((0,g.eB)(),lt),wn=g.eB.create(0,1,2),Bn=am.E.create(wt,Ut,lt,gn,Pn,ft,{min:0,max:1,mean:.04,sigma:.01},!0,wn,me),Mn=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,Qe.maxRadius);return Bn.setBoundingSphere(Mn),Bn}),Ql.apply(this,arguments)}const cm={...ti.I,...Gc,ignoreHydrogens:v.t.Boolean(!1),ignoreHydrogensVariant:v.t.Select("all",v.t.arrayToOptions(["all","non-polar"])),includeParent:v.t.Boolean(!1,{isHidden:!0})};function J0(oe){return(0,ti.Yl)({defaultProps:v.t.getDefaultValues(cm),createGeometry:$0,createLocationIterator:sr.fromStructure,getLoci:ur,eachLocation:kn,setUpdateState:(x,F,z)=>{F.resolution!==z.resolution&&(x.createGeometry=!0),F.radiusOffset!==z.radiusOffset&&(x.createGeometry=!0),F.smoothness!==z.smoothness&&(x.createGeometry=!0),F.ignoreHydrogens!==z.ignoreHydrogens&&(x.createGeometry=!0),F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant&&(x.createGeometry=!0),F.traceOnly!==z.traceOnly&&(x.createGeometry=!0),F.includeParent!==z.includeParent&&(x.createGeometry=!0)},dispose:x=>{x.gridTexture.ref.value.destroy()}},oe)}function q0(oe,x,F,z,me,Pe){return Kl.apply(this,arguments)}function Kl(){return Kl=(0,r.A)(function*(oe,x,F,z,me,Pe){const{runtime:Ge,webgl:Xe}=oe;if(!Xe)throw new Error("GaussianDensityVolume requires `webgl`");const Qe=Pe?Pe.gridTexture.ref.value:void 0,lt=yield function Ph(oe,x,F,z,me,Pe){const{position:Ge,boundary:Xe,radius:Qe}=(0,Gr.LT)(oe,x,F,z),lt=(0,Gr.FC)(Xe.box,z,Sf(me,oe));return R.YZ.create("Gaussian Density",function(){var ft=(0,r.A)(function*(wt){return ff(me,Ge,Xe.box,Qe,lt,Pe)});return function(wt){return ft.apply(this,arguments)}}())}(F,x,z.size,me,Xe,Qe).runInContext(Ge),{transform:ft,texture:wt,bbox:Ut,gridDim:Jt}=lt,Pn=g.$I.mul((0,g.$I)(),ft,g.$I.fromScaling((0,g.$I)(),Jt)),wn=g.$I.getScaling((0,g.eB)(),ft),Bn=g.eB.create(0,1,2),Mn=am.E.create(Ut,Jt,ft,Pn,wn,wt,{min:0,max:1,mean:.04,sigma:.01},!0,Bn,Pe),Ln=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,lt.maxRadius);return Mn.setBoundingSphere(Ln),Mn}),Kl.apply(this,arguments)}const eg={...tr.Ny,...Gc,ignoreHydrogens:v.t.Boolean(!1),ignoreHydrogensVariant:v.t.Select("all",v.t.arrayToOptions(["all","non-polar"])),includeParent:v.t.Boolean(!1,{isHidden:!0})};function tg(oe){return(0,tr.Pi)({defaultProps:v.t.getDefaultValues(eg),createGeometry:q0,createLocationIterator:sr.fromGroup,getLoci:Ht,eachLocation:ln,setUpdateState:(x,F,z)=>{F.resolution!==z.resolution&&(x.createGeometry=!0),F.radiusOffset!==z.radiusOffset&&(x.createGeometry=!0),F.smoothness!==z.smoothness&&(x.createGeometry=!0),F.ignoreHydrogens!==z.ignoreHydrogens&&(x.createGeometry=!0),F.ignoreHydrogensVariant!==z.ignoreHydrogensVariant&&(x.createGeometry=!0),F.traceOnly!==z.traceOnly&&(x.createGeometry=!0),F.includeParent!==z.includeParent&&(x.createGeometry=!0)},dispose:x=>{x.gridTexture.ref.value.destroy()}},oe)}const um={"gaussian-volume":(oe,x)=>(0,pr.Kp)("Gaussian volume",oe,x,J0),"units-gaussian-volume":(oe,x)=>(0,pr.TP)("Units-Gaussian volume",oe,x,tg)},lm={...cm,jumpLength:v.t.Numeric(4,{min:0,max:20,step:.1}),visuals:v.t.MultiSelect(["gaussian-volume"],v.t.objectToOptions(um))},og=(0,pr.GT)({name:"gaussian-volume",label:"Gaussian Volume",description:"Displays a gaussian molecular density using direct volume rendering.",factory:function rg(oe,x){return dr.YL.createMulti("Gaussian Volume",oe,x,pr.J1,um)},getParams:function ng(oe,x){return lm},defaultValues:v.t.getDefaultValues(lm),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"physical"},isApplicable:oe=>oe.elementCount>0}),ig=g.eB.scale,sg=g.eB.add,ag=g.eB.sub,Zl={...tr.Te,...tr.lm,sizeFactor:v.t.Numeric(.3,{min:0,max:10,step:.01}),radialSegments:v.t.Numeric(16,{min:2,max:56,step:2},Jn.iy.CustomQualityParamInfo),tryUseImpostor:v.t.Boolean(!0)};function cg(oe,x,F,z){return F.tryUseImpostor&&z&&z.extensions.fragDepth?function lg(oe){return(0,tr.Vb)({defaultProps:v.t.getDefaultValues(Zl),createGeometry:ug,createLocationIterator:x=>ia.fromGroup(x),getLoci:Ba,eachLocation:Da,setUpdateState:(x,F,z)=>{},mustRecreate:(x,F,z)=>!F.tryUseImpostor||!z},oe)}(oe):function fg(oe){return(0,tr.Pv)({defaultProps:v.t.getDefaultValues(Zl),createGeometry:dg,createLocationIterator:x=>ia.fromGroup(x),getLoci:Ba,eachLocation:Da,setUpdateState:(x,F,z)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.radialSegments!==z.radialSegments},mustRecreate:(x,F,z)=>F.tryUseImpostor&&!!z},oe)}(oe)}function ug(oe,x,F,z,me,Pe){const Ge=x.polymerElements.length;if(!Ge)return ci.S.createEmpty(Pe);const Xe=2*Ge,Qe=jd.h.create(Xe,Xe/4,Pe),lt=x.conformation,ft=(0,g.eB)(),wt=(0,g.eB)(),Ut=(0,g.eB)();ld(x,function(wn,Bn,Mn,Ln,cr){lt.invariantPosition(wn,ft),lt.invariantPosition(Bn,wt);const Qn=(0,Tr.OV)(cr)?tu:eu;sg(Ut,ft,ig(Ut,ag(Ut,wt,ft),Qn)),Qe.add(ft[0],ft[1],ft[2],Ut[0],Ut[1],Ut[2],1,!1,!1,2,Mn),Qe.add(Ut[0],Ut[1],Ut[2],wt[0],wt[1],wt[2],1,!1,!1,2,Ln)});const gn=Qe.getCylinders(),Pn=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,1*me.sizeFactor);return gn.setBoundingSphere(Pn),gn}function dg(oe,x,F,z,me,Pe){const Ge=x.polymerElements.length;if(!Ge)return rr.e.createEmpty(Pe);const{radialSegments:Xe,sizeFactor:Qe}=me,lt=2*Xe*Ge*2,ft=lr.P.createState(lt,lt/10,Pe),wt=x.conformation,Ut=(0,g.eB)(),Jt=(0,g.eB)(),gn={radiusTop:1,radiusBottom:1,radialSegments:Xe},Pn=Je.iZ.Location.create(F,x),wn=Je.iZ.Location.create(F,x);ld(x,function(cr,qn,Qn,Zn,zn){Pn.element=cr,wn.element=qn,wt.invariantPosition(Pn.element,Ut),wt.invariantPosition(wn.element,Jt);const wr=(0,Tr.OV)(zn)?tu:eu;gn.radiusTop=gn.radiusBottom=z.size.size(Pn)*Qe,ft.currentGroup=Qn,(0,_i.y9)(ft,Ut,Jt,wr,gn),gn.radiusTop=gn.radiusBottom=z.size.size(wn)*Qe,ft.currentGroup=Zn,(0,_i.y9)(ft,Jt,Ut,1-wr,gn)});const Mn=lr.P.getMesh(ft),Ln=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,1*me.sizeFactor);return Mn.setBoundingSphere(Ln),Mn}const Yl={...tr.Te,...tr.qg,sizeFactor:v.t.Numeric(.3,{min:0,max:10,step:.01}),detail:v.t.Numeric(0,{min:0,max:3,step:1},Jn.iy.CustomQualityParamInfo),tryUseImpostor:v.t.Boolean(!0)};function mg(oe,x,F,z){return F.tryUseImpostor&&z&&z.extensions.fragDepth&&z.extensions.textureFloat?function hg(oe){return(0,tr.uF)({defaultProps:v.t.getDefaultValues(Yl),createGeometry:pg,createLocationIterator:x=>ia.fromGroup(x),getLoci:Ba,eachLocation:Da,setUpdateState:(x,F,z)=>{},mustRecreate:(x,F,z)=>!F.tryUseImpostor||!z},oe)}(oe):function yg(oe){return(0,tr.Pv)({defaultProps:v.t.getDefaultValues(Yl),createGeometry:gg,createLocationIterator:x=>ia.fromGroup(x),getLoci:Ba,eachLocation:Da,setUpdateState:(x,F,z)=>{x.createGeometry=F.sizeFactor!==z.sizeFactor||F.detail!==z.detail},mustRecreate:(x,F,z)=>F.tryUseImpostor&&!!z},oe)}(oe)}function pg(oe,x,F,z,me,Pe){const Ge=x.polymerElements.length;if(!Ge)return Qr.v.createEmpty(Pe);const Xe=Bi.create(Ge,Ge/2,Pe),Qe=x.conformation,lt=(0,g.eB)();dd(x,(Jt,gn)=>{Qe.invariantPosition(Jt,lt),Xe.add(lt[0],lt[1],lt[2],gn)});const wt=Xe.getSpheres(),Ut=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,1*me.sizeFactor);return wt.setBoundingSphere(Ut),wt}function gg(oe,x,F,z,me,Pe){const Ge=x.polymerElements.length;if(!Ge)return rr.e.createEmpty(Pe);const{detail:Xe,sizeFactor:Qe}=me,lt=Ge*(0,zr.J)(Xe),ft=lr.P.createState(lt,lt/2,Pe),wt=x.conformation,Ut=(0,g.eB)(),Jt=Je.iZ.Location.create(F,x);dd(x,(Bn,Mn)=>{Jt.element=Bn,wt.invariantPosition(Jt.element,Ut),ft.currentGroup=Mn,(0,kr.X)(ft,Ut,z.size.size(Jt)*Qe,Xe)});const Pn=lr.P.getMesh(ft),wn=Bt.f8.expand((0,Bt.f8)(),x.boundary.sphere,1*me.sizeFactor);return Pn.setBoundingSphere(wn),Pn}const dm={"polymer-backbone-cylinder":(oe,x)=>(0,vn.T)("Polymer backbone cylinder",oe,x,cg),"polymer-backbone-sphere":(oe,x)=>(0,vn.T)("Polymer backbone sphere",oe,x,mg),"polymer-gap":(oe,x)=>(0,vn.T)("Polymer gap cylinder",oe,x,ll)},fm={...Yl,...Zl,...xu,sizeAspectRatio:v.t.Numeric(1,{min:.1,max:3,step:.1}),visuals:v.t.MultiSelect(["polymer-backbone-cylinder","polymer-backbone-sphere","polymer-gap"],v.t.objectToOptions(dm)),bumpFrequency:v.t.Numeric(0,{min:0,max:10,step:.1},Jn.iy.ShadingCategory),colorMode:v.t.Select("default",v.t.arrayToOptions(["default","interpolate"]),{...Jn.iy.ShadingCategory,isHidden:!0})},bg=(0,pr.GT)({name:"backbone",label:"Backbone",description:"Displays polymer backbone with cylinders and spheres.",factory:function _g(oe,x){return dr.YL.createMulti("Backbone",oe,x,pr.J1,dm)},getParams:function vg(oe,x){const F=v.t.clone(fm);let z=!1;return x.units.forEach(me=>{!z&&me.gapElements.length&&(z=!0)}),F.visuals.defaultValue=["polymer-backbone-cylinder","polymer-backbone-sphere"],z&&F.visuals.defaultValue.push("polymer-gap"),F},defaultValues:v.t.getDefaultValues(fm),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uniform"},isApplicable:oe=>oe.polymerResidueCount>0});class kc extends dr.lN{constructor(){super(),(0,ae.IF)(kc.BuiltIn,(x,F)=>{if(x.name!==F)throw new Error(`Fix BuiltInStructureRepresentations to have matching names. ${x.name} ${F}`);this.add(x)})}}!function(oe){oe.BuiltIn={cartoon:uh,backbone:bg,"ball-and-stick":fo,carbohydrate:Pm,ellipsoid:ph,"gaussian-surface":Qh,"gaussian-volume":og,label:e0,line:X0,"molecular-surface":h0,orientation:E0,point:M0,putty:F0,spacefill:V0}}(kc||(kc={}));var xg=n(3866),mm=n(274),pm=n(2832),hm=n(190),Cg=n(3188),Hc=n(4080),Mu=n(2229),Xl=n(8956),$l=n(9854),Sg=n(2098);class Eg{get isAnimating(){return this._isAnimating}tick(x,F){var z=this;return(0,r.A)(function*(){var me,Pe;if(yield z.plugin.managers.animation.tick(x,F?.isSynchronous,F?.animation),null===(me=z.plugin.canvas3d)||void 0===me||me.tick(x,F),se.g$){const Ge=null===(Pe=z.plugin.canvas3d)||void 0===Pe?void 0:Pe.webgl.timer.resolve();if(Ge)for(const Xe of Ge)(0,Sg.d)([Xe])}})()}resetTime(x=(0,$l.t)()){var F;null===(F=this.plugin.canvas3d)||void 0===F||F.resetTime(x)}start(x){var F;null===(F=this.plugin.canvas3d)||void 0===F||F.resume(),this._isAnimating=!0,this.resetTime(),x?.immediate?this.frame():this.currentFrame=requestAnimationFrame(this.frame)}stop(x){var F;this._isAnimating=!1,void 0!==this.currentFrame&&(cancelAnimationFrame(this.currentFrame),this.currentFrame=void 0),x?.noDraw&&(null===(F=this.plugin.canvas3d)||void 0===F||F.pause(x?.noDraw))}constructor(x){this.plugin=x,this.currentFrame=void 0,this._isAnimating=!1,this.frame=()=>{this.tick((0,$l.t)()),this._isAnimating&&(this.currentFrame=requestAnimationFrame(this.frame))}}}var ka=n(1164),Ig=n(6852),Ag=n(2768);class Pg{getDecorator(x){const F=this.plugin.state.data.tree,z=F.children.get(x);if(1!==z.size)return x;const me=z.first();return F.transforms.get(me).transformer.definition.isDecorator?this.getDecorator(me):x}get(x,F=!1){const z=this.root.get(x);if(z)return this.plugin.state.data.cells.get(F?z.ref:this.getDecorator(z.ref))}addMapping(x,F,z){if(!A.O.Molecule.Structure.is(z))return!1;if(this.tracked.set(F,z.data),this.root.has(z.data))this.root.get(z.data).count++;else{const me=x.select(c.QX.Generators.byRef(F).rootOfType([A.O.Molecule.Structure]))[0];this.root.set(z.data,me?{ref:me.transform.ref,count:1}:{ref:F,count:1})}return!0}removeMapping(x){if(!this.tracked.has(x))return!1;const F=this.tracked.get(x);this.tracked.delete(x);const z=this.root.get(F);return z.count>1?z.count--:this.root.delete(F),!0}updateMapping(x,F,z,me){return!!A.O.Molecule.Structure.is(me)&&(this.removeMapping(F),this.addMapping(x,F,me),!0)}dispose(){this.ev.dispose()}constructor(x){this.plugin=x,this.ev=Xl.V.create(),this.events={updated:this.ev(),removed:this.ev()},this.root=new Map,this.tracked=new Map,x.state.data.events.object.created.subscribe(F=>{this.addMapping(F.state,F.ref,F.obj)}),x.state.data.events.object.removed.subscribe(F=>{this.removeMapping(F.ref)&&this.events.removed.next({ref:F.ref,obj:F.obj})}),x.state.data.events.object.updated.subscribe(F=>{this.updateMapping(F.state,F.ref,F.oldObj,F.obj)&&this.events.updated.next({ref:F.ref,oldObj:F.oldObj,obj:F.obj})})}}var gm=n(6241);class Jl{constructor(){this.ev=Xl.V.create(),this.id=0,this.runningTasks=new Set,this.abortRequests=new Map,this.options=new Map,this.currentContext=[],this.events={progress:this.ev(),finished:this.ev()}}tryGetAbortTaskId(x){if(this.abortRequests.has(x.progress.taskId))return x.progress.taskId;for(const F of x.children){const z=this.tryGetAbortTaskId(F);if(void 0!==z)return z}}track(x,F){return z=>{var me;if(z.canAbort&&z.requestAbort){const Ge=this.tryGetAbortTaskId(z.root);void 0!==Ge&&z.requestAbort(this.abortRequests.get(Ge))}const Pe=(0,$l.t)()-z.root.progress.startedTime;this.events.progress.next({id:x,useOverlay:null===(me=this.options.get(F))||void 0===me?void 0:me.useOverlay,level:Pe<250?"none":"background",progress:z})}}run(x,F){var z=this;return(0,r.A)(function*(){const me=z.id++;let Pe;F?.createNewContext||0===z.currentContext.length?Pe={ctx:(0,gm.pm)(x,z.track(me,x.id),100),refCount:1}:(Pe=z.currentContext[z.currentContext.length-1],Pe.refCount++);try{return z.options.set(x.id,{useOverlay:!!F?.useOverlay}),z.runningTasks.add(x.id),yield(0,gm.yR)(Pe.ctx,x)}finally{z.options.delete(x.id),z.runningTasks.delete(x.id),z.events.finished.next({id:me}),z.abortRequests.delete(x.id),Pe.refCount--,0===Pe.refCount&&(0,nt.mO)(z.currentContext,Pe)}})()}requestAbortAll(x){this.runningTasks.forEach(F=>this.abortRequests.set(F,x))}requestAbort(x,F){this.abortRequests.set("number"==typeof x?x:x.root.progress.taskId,F)}dispose(){this.ev.dispose()}}!function(oe){function x(z){return new Promise(me=>setTimeout(me,z))}oe.testTask=function F(z){return R.YZ.create("Test",function(){var me=(0,r.A)(function*(Pe){let Ge=0;for(;Ge!!F&&F.key===x)}show(x){let z,F=this.state.entries;const me=++this.serialId;let Pe;x.key&&(z=this.findByKey(x.key))?(void 0!==z.timeout&&clearTimeout(z.timeout),Pe=z.serialNumber,F=F.remove(z.id)):Pe=++this.serialNumber,z={id:me,serialNumber:Pe,key:x.key,title:x.title,message:x.message,timeout:this.timeout(me,x.timeoutMs),hide:()=>this.hideId(me)},this.updateState({entries:F.set(me,z)})&&this.events.changed.next(void 0)}timeout(x,F){if(void 0!==F)return F<0&&(F=500),setTimeout(()=>{const z=this.state.entries.get(x);z.timeout=void 0,this.hide(z)},F)}hideId(x){this.hide(this.state.entries.get(x))}hide(x){x&&(void 0!==x.timeout&&clearTimeout(x.timeout),x.hide=void 0,this.updateState({entries:this.state.entries.delete(x.id)})&&this.events.changed.next(void 0))}constructor(x){super({entries:(0,Se.uY)()}),this.events={changed:this.ev()},this.serialNumber=0,this.serialId=0,i.a.Toast.Show.subscribe(x,F=>this.show(F)),i.a.Toast.Hide.subscribe(x,F=>this.hide(this.findByKey(F.key)))}}var Bg=n(7028),Dg=n(2732),Mg=n(9986);class Og extends Yt.N{createParams(){const x=Math.min(this.plugin.canvas3d?this.plugin.canvas3d.webgl.maxRenderbufferSize:4096,4096);return{resolution:v.t.MappedStatic("viewport",{viewport:v.t.Group({}),hd:v.t.Group({}),"full-hd":v.t.Group({}),"ultra-hd":v.t.Group({}),custom:v.t.Group({width:v.t.Numeric(1920,{min:128,max:x,step:1}),height:v.t.Numeric(1080,{min:128,max:x,step:1})},{isFlat:!0})},{options:[["viewport","Viewport"],["hd","HD (1280 x 720)"],["full-hd","Full HD (1920 x 1080)"],["ultra-hd","Ultra HD (3840 x 2160)"],["custom","Custom"]]}),transparent:v.t.Boolean(!1),axes:Bg.kf.axes}}get params(){return this._params?this._params:this._params=this.createParams()}get values(){return this.behaviors.values.value}get cropParams(){return this.behaviors.cropParams.value}get relativeCrop(){return this.behaviors.relativeCrop.value}getCanvasSize(){var x,F;return{width:(null===(x=this.plugin.canvas3d)||void 0===x?void 0:x.webgl.gl.drawingBufferWidth)||0,height:(null===(F=this.plugin.canvas3d)||void 0===F?void 0:F.webgl.gl.drawingBufferHeight)||0}}getSize(){const x=this.values;switch(x.resolution.name){case"viewport":return this.getCanvasSize();case"hd":return{width:1280,height:720};case"full-hd":return{width:1920,height:1080};case"ultra-hd":return{width:3840,height:2160};default:return{width:x.resolution.params.width,height:x.resolution.params.height}}}createPass(x){const F=this.plugin.canvas3d,{colorBufferFloat:z,textureFloat:me}=F.webgl.extensions,Pe=F.props.postprocessing.occlusion;return F.getImagePass({transparentBackground:this.values.transparent,cameraHelper:{axes:this.values.axes},multiSample:{...F.props.multiSample,mode:x?"on":"off",sampleLevel:z&&me?4:2},postprocessing:{...F.props.postprocessing,occlusion:"on"===Pe.name?{name:"on",params:{...Pe.params,samples:128,resolutionScale:F.webgl.pixelRatio}}:Pe},marking:{...F.props.marking}})}get previewPass(){return this._previewPass||(this._previewPass=this.createPass(!1))}get imagePass(){if(this._imagePass){const x=this.plugin.canvas3d,F=x.props.postprocessing.occlusion;return this._imagePass.setProps({cameraHelper:{axes:this.values.axes},transparentBackground:this.values.transparent,postprocessing:{...x.props.postprocessing,occlusion:"on"===F.name?{name:"on",params:{...F.params,samples:128,resolutionScale:x.webgl.pixelRatio}}:F},marking:{...x.props.marking}}),this._imagePass}return this._imagePass=this.createPass(!0)}getFilename(x=".png"){const F=this.plugin.state.data.select(c.QX.Generators.rootsOfType(A.O.Molecule.Model)).map(Pe=>Pe.obj.data),z=new Set;return F.forEach(Pe=>z.add(Pe.entryId.toUpperCase())),`${Mg.M.toArray(z).join("-")||"molstar-image"}${x}`}resetCrop(){this.behaviors.relativeCrop.next({x:0,y:0,width:1,height:1})}toggleAutocrop(){this.cropParams.auto?(this.behaviors.cropParams.next({...this.cropParams,auto:!1}),this.resetCrop()):this.behaviors.cropParams.next({...this.cropParams,auto:!0})}get isFullFrame(){const x=this.relativeCrop;return(0,bc.T)(x.x,0,1e-5)&&(0,bc.T)(x.y,0,1e-5)&&(0,bc.T)(x.width,1,1e-5)&&(0,bc.T)(x.height,1,1e-5)}autocrop(x=this.cropParams.relativePadding){const{data:F,width:z,height:me}=this.previewData.image,Pe=this.previewData.transparent,Ge=Pe?this.previewData.background:4278190080|this.previewData.background;let Xe=z,Qe=0,lt=me,ft=0;for(let gn=0;gnQe&&(Qe=wn),gnft&&(ft=gn)}}if(Xe>Qe){const gn=Xe;Xe=Qe,Qe=gn}if(lt>ft){const gn=lt;lt=ft,ft=gn}const wt=Qe-Xe+1,Ut=ft-lt+1;Xe-=x*wt,Qe+=x*wt,lt-=x*Ut,ft+=x*Ut;const Jt={x:Math.max(0,Xe/z),y:Math.max(0,lt/me),width:Math.min(1,(Qe-Xe+1)/z),height:Math.min(1,(ft-lt+1)/me)};this.behaviors.relativeCrop.next(Jt)}getPreview(x=320){const{width:F,height:z}=this.getSize();if(F<=0||z<=0)return;const me=F/z;let Pe=0,Ge=0;me>1?(Pe=x,Ge=Math.round(x/me)):(Ge=x,Pe=Math.round(x*me));const Xe=this.plugin.canvas3d.props;this.previewPass.setProps({cameraHelper:{axes:this.values.axes},transparentBackground:this.values.transparent,postprocessing:Xe.postprocessing,marking:Xe.marking});const Qe=this.previewPass.getImageData(Pe,Ge),lt=this.previewCanvas;lt.width=Qe.width,lt.height=Qe.height,this.previewData.image=Qe,this.previewData.background=Xe.renderer.backgroundColor,this.previewData.transparent=this.values.transparent;const ft=lt.getContext("2d");if(!ft)throw new Error("Could not create canvas 2d context");return ft.putImageData(Qe,0,0),this.cropParams.auto&&this.autocrop(),this.events.previewed.next(void 0),{canvas:lt,width:Pe,height:Ge}}getSizeAndViewport(){const{width:x,height:F}=this.getSize(),z=this.relativeCrop,me={x:Math.floor(z.x*x),y:Math.floor(z.y*F),width:Math.ceil(z.width*x),height:Math.ceil(z.height*F)};return me.width+me.x>x&&(me.width=x-me.x),me.height+me.y>F&&(me.height=F-me.y),{width:x,height:F,viewport:me}}draw(x){var F=this;return(0,r.A)(function*(){const{width:z,height:me,viewport:Pe}=F.getSizeAndViewport();if(z<=0||me<=0)return;yield x.update("Rendering image...");const Ge=F.imagePass;yield Ge.updateBackground();const Xe=Ge.getImageData(z,me,Pe);yield x.update("Encoding image...");const Qe=F.canvas;Qe.width=Xe.width,Qe.height=Xe.height;const lt=Qe.getContext("2d");if(!lt)throw new Error("Could not create canvas 2d context");lt.putImageData(Xe,0,0)})()}copyToClipboardTask(){var x=this;const F=navigator.clipboard;if(F?.write)return R.YZ.create("Copy Image",function(){var z=(0,r.A)(function*(me){yield x.draw(me),yield me.update("Converting image...");const Pe=yield(0,ie.PG)(x.canvas,"png"),Ge=new ClipboardItem({"image/png":Pe});yield F.write([Ge]),x.plugin.log.message("Image copied to clipboard.")});return function(me){return z.apply(this,arguments)}}());this.plugin.log.error("clipboard.write not supported!")}getImageDataUri(){var x=this;return this.plugin.runTask(R.YZ.create("Generate Image",function(){var F=(0,r.A)(function*(z){return yield x.draw(z),yield z.update("Converting image..."),x.canvas.toDataURL("png")});return function(z){return F.apply(this,arguments)}}()))}copyToClipboard(){const x=this.copyToClipboardTask();if(x)return this.plugin.runTask(x)}downloadTask(x){var F=this;return R.YZ.create("Download Image",function(){var z=(0,r.A)(function*(me){yield F.draw(me),yield me.update("Downloading image...");const Pe=yield(0,ie.PG)(F.canvas,"png");(0,Dg.R)(Pe,x??F.getFilename())});return function(me){return z.apply(this,arguments)}}())}download(x){this.plugin.runTask(this.downloadTask(x))}constructor(x){super(),this.plugin=x,this._params=void 0,this.behaviors={values:this.ev.behavior({transparent:this.params.transparent.defaultValue,axes:{name:"off",params:{}},resolution:this.params.resolution.defaultValue}),cropParams:this.ev.behavior({auto:!0,relativePadding:.1}),relativeCrop:this.ev.behavior({x:0,y:0,width:1,height:1})},this.events={previewed:this.ev()},this.canvas=document.createElement("canvas"),this.previewCanvas=document.createElement("canvas"),this.previewData={image:{data:new Uint8ClampedArray(1),width:1,height:0},background:(0,hm.Q1)(0),transparent:!1}}}var ym=n(6101);class Rg{addHandler(x,F){const z=this.handlers.findIndex(me=>me[0]===x);z<0?this.handlers.push([x,F]):this.handlers[z][1]=F}removeHandler(x){const F=this.handlers.findIndex(z=>z[0]===x);F>=0&&this.handlers.splice(F,1)}handle(x){var F=this;return(0,r.A)(function*(){for(let z=F.handlers.length-1;z>=0;z--){const me=F.handlers[z][1];if(yield me(x,F.plugin))return}!function Lg(oe,x){const F=x.filter(z=>{const me=z.name.toLowerCase();return me.endsWith(".molx")||me.endsWith(".molj")});F.length>0?i.a.State.Snapshots.OpenFile(oe,{file:F[0]}):oe.runTask(oe.state.data.applyAction(w.OpenFiles,{files:x.map(z=>p.V.File(z)),format:{name:"auto",params:{}},visuals:!0}))}(F.plugin,x)})()}dispose(){this.handlers.length=0}constructor(x){this.plugin=x,this.handlers=[]}}class wg{get isInitialized(){return this._isInitialized}build(){return this.state.data.build()}initContainer(x){var F;if(this.canvasContainer)return!0;const z=document.createElement("div");Object.assign(z.style,{position:"absolute",left:0,top:0,right:0,bottom:0,"-webkit-user-select":"none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","-webkit-touch-callout":"none","touch-action":"manipulation"});let me=null===(F=x?.canvas3dContext)||void 0===F?void 0:F.canvas;return me||(me=document.createElement("canvas"),x?.checkeredCanvasBackground&&Object.assign(me.style,{"background-image":"linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%, lightgrey), linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%, lightgrey)","background-size":"60px 60px","background-position":"0 0, 30px 30px"}),z.appendChild(me)),!!this.initViewer(me,z,x?.canvas3dContext)&&(this.canvasContainer=z,!0)}mount(x,F){var z;if(this.disposed)throw new Error("Cannot mount a disposed context");return!!this.initContainer(F)&&(this.canvasContainer.parentElement!==x&&(null===(z=this.canvasContainer.parentElement)||void 0===z||z.removeChild(this.canvasContainer)),x.appendChild(this.canvasContainer),this.handleResize(),!0)}unmount(){var x,F;null===(F=null===(x=this.canvasContainer)||void 0===x?void 0:x.parentElement)||void 0===F||F.removeChild(this.canvasContainer)}initViewer(x,F,z){var me,Pe,Ge,Xe,Qe,lt;try{this.layout.setRoot(F),this.spec.layout&&this.spec.layout.initial&&this.layout.setProps(this.spec.layout.initial),z||(z=Te.H7.fromCanvas(x,this.managers.asset,{antialias:!(null!==(me=this.config.get(je.AB.General.DisableAntialiasing))&&void 0!==me&&me),preserveDrawingBuffer:!(null!==(Pe=this.config.get(je.AB.General.DisablePreserveDrawingBuffer))&&void 0!==Pe&&Pe),preferWebGl1:this.config.get(je.AB.General.PreferWebGl1)||!1,failIfMajorPerformanceCaveat:!(null!==(Ge=this.config.get(je.AB.General.AllowMajorPerformanceCaveat))&&void 0!==Ge&&Ge),powerPreference:this.config.get(je.AB.General.PowerPreference)||"high-performance",handleResize:this.handleResize},{pixelScale:this.config.get(je.AB.General.PixelScale)||1,pickScale:this.config.get(je.AB.General.PickScale)||.25,transparency:this.config.get(je.AB.General.Transparency)||"wboit"})),this.canvas3dContext=z,this.canvas3d=Te.mX.create(this.canvas3dContext),this.canvas3dInit.next(!0);let ft=this.spec.canvas3d;const wt=(0,hm.Q1)(16579577);return ft?(void 0===(null===(Qe=ft.renderer)||void 0===Qe?void 0:Qe.backgroundColor)&&(ft=(0,Oe.jM)(ft,Ut=>{Ut.renderer?Ut.renderer.backgroundColor=wt:Ut.renderer={backgroundColor:wt}})),null===(lt=this.canvas3d)||void 0===lt||lt.setProps(ft)):null===(Xe=this.canvas3d)||void 0===Xe||Xe.setProps({renderer:{backgroundColor:wt}}),this.animationLoop.start(),this.helpers.viewportScreenshot=new Og(this),this.subs.push(this.canvas3d.interaction.click.subscribe(Ut=>this.behaviors.interaction.click.next(Ut))),this.subs.push(this.canvas3d.interaction.drag.subscribe(Ut=>this.behaviors.interaction.drag.next(Ut))),this.subs.push(this.canvas3d.interaction.hover.subscribe(Ut=>this.behaviors.interaction.hover.next(Ut))),this.subs.push(this.canvas3d.input.resize.pipe((0,Ne.B)(50),(0,K.c)(100,void 0,{leading:!1,trailing:!0})).subscribe(()=>this.handleResize())),this.subs.push(this.canvas3d.input.keyDown.subscribe(Ut=>this.behaviors.interaction.key.next(Ut))),this.subs.push(this.canvas3d.input.keyUp.subscribe(Ut=>this.behaviors.interaction.keyReleased.next(Ut))),this.subs.push(this.layout.events.updated.subscribe(()=>requestAnimationFrame(()=>this.handleResize()))),this.handleResize(),R._F.setImmediate(()=>this.initCanvas3dPromiseCallbacks[0]()),!0}catch(ft){return this.log.error(""+ft),console.error(ft),R._F.setImmediate(()=>this.initCanvas3dPromiseCallbacks[1](ft)),!1}}get isBusy(){return this.behaviors.state.isAnimating.value||this.behaviors.state.isUpdating.value}get selectionMode(){return this.behaviors.interaction.selectionMode.value}set selectionMode(x){this.behaviors.interaction.selectionMode.next(x)}dataTransaction(x,F){return this.runTask(this.state.data.transaction(x,F))}clear(x=!1){var F;return x&&(null===(F=this.canvas3d)||void 0===F||F.setProps(Te.FN)),i.a.State.RemoveObject(this,{state:this.state.data,ref:c.Cn.RootRef})}dispose(x){var F,z;if(!this.disposed){for(const me of this.subs)me.unsubscribe();this.subs=[],this.animationLoop.stop(),this.commands.dispose(),null===(F=this.canvas3d)||void 0===F||F.dispose(),null===(z=this.canvas3dContext)||void 0===z||z.dispose(x),this.ev.dispose(),this.state.dispose(),this.helpers.substructureParent.dispose(),(0,ae.IF)(this.managers,me=>{var Pe;return null===(Pe=me?.dispose)||void 0===Pe?void 0:Pe.call(me)}),(0,ae.IF)(this.managers.structure,me=>{var Pe;return null===(Pe=me?.dispose)||void 0===Pe?void 0:Pe.call(me)}),(0,ae.IF)(this.managers.volume,me=>{var Pe;return null===(Pe=me?.dispose)||void 0===Pe?void 0:Pe.call(me)}),this.unmount(),this.canvasContainer=void 0,this.customState={},this.disposed=!0}}initBehaviorEvents(){this.subs.push((0,Ve.h)(this.state.data.behaviors.isUpdating,this.state.behaviors.behaviors.isUpdating).subscribe(Ge=>{this.behaviors.state.isUpdating.value!==Ge&&this.behaviors.state.isUpdating.next(Ge)}));const x=this.config.get(je.AB.General.IsBusyTimeoutMs)||750,F=this.behaviors.state.isBusy;let z;const me=()=>{F.value||F.next(!0)},Pe=()=>{void 0!==z&&clearTimeout(z),z=void 0};this.subs.push((0,Ve.h)(this.behaviors.state.isUpdating,this.behaviors.state.isAnimating).subscribe(Ge=>{this.behaviors.state.isUpdating.value||this.behaviors.state.isAnimating.value?F.value||(Pe(),z=setTimeout(me,x)):(Pe(),F.next(!1))})),this.subs.push(this.behaviors.interaction.selectionMode.subscribe(Ge=>{var Xe;Ge||null===(Xe=this.managers.interactivity)||void 0===Xe||Xe.lociSelects.deselectAll()}))}initBuiltInBehavior(){a.U0.State.registerDefault(this),a.U0.Representation.registerDefault(this),a.U0.Camera.registerDefault(this),a.U0.Misc.registerDefault(this),this.subs.push((0,Ve.h)(this.state.data.events.log,this.state.behaviors.events.log).subscribe(x=>this.events.log.next(x)))}initBehaviors(){var x=this;return(0,r.A)(function*(){let F=x.state.behaviors.build();for(const z of Object.keys(ka.A.Categories))F.toRoot().apply(ka.A.CreateCategory,{label:ka.A.Categories[z]},{ref:z,state:{isLocked:!0}});for(const z of x.spec.behaviors)"custom-props"===ka.A.getCategoryId(z.transformer)&&F.to(ka.A.getCategoryId(z.transformer)).apply(z.transformer,z.defaultParams,{ref:z.transformer.id});yield x.runTask(x.state.behaviors.updateTree(F,{doNotUpdateCurrent:!0,doNotLogTiming:!0})),F=x.state.behaviors.build();for(const z of x.spec.behaviors)"custom-props"!==ka.A.getCategoryId(z.transformer)&&F.to(ka.A.getCategoryId(z.transformer)).apply(z.transformer,z.defaultParams,{ref:z.transformer.id});yield x.runTask(x.state.behaviors.updateTree(F,{doNotUpdateCurrent:!0,doNotLogTiming:!0}))})()}initCustomFormats(){if(this.spec.customFormats)for(const x of this.spec.customFormats)this.dataFormats.add(x[0],x[1])}initAnimations(){if(this.spec.animations)for(const x of this.spec.animations)this.managers.animation.register(x)}initDataActions(){if(this.spec.actions)for(const x of this.spec.actions)this.state.data.actions.add(x.action)}init(){var x=this;return(0,r.A)(function*(){try{x.subs.push(x.events.log.subscribe(F=>x.log.entries=x.log.entries.push(F))),x.initCustomFormats(),x.initBehaviorEvents(),x.initBuiltInBehavior(),x.managers.interactivity=new Kn.d(x),x.managers.lociLabels=new Ft(x),x.builders.structure=new Dn(x),x.initAnimations(),x.initDataActions(),yield x.initBehaviors(),x.log.message(`Mol* Plugin ${ym.j} [${ym.s.toLocaleString()}]`),se.Zq||x.log.message("Development mode enabled"),se.Bb&&x.log.message("Debug mode enabled"),x._isInitialized=!0,x.initializedPromiseCallbacks[0]()}catch(F){throw x.initializedPromiseCallbacks[1](F),F}})()}constructor(x){var F;this.spec=x,this.runTask=(z,me)=>this.managers.task.run(z,me),this.resolveTask=z=>{if(z)return R.YZ.is(z)?this.runTask(z):z},this.subs=[],this.initCanvas3dPromiseCallbacks=[()=>{},()=>{}],this._isInitialized=!1,this.initializedPromiseCallbacks=[()=>{},()=>{}],this.disposed=!1,this.canvasContainer=void 0,this.ev=Xl.V.create(),this.config=new je.tf(this.spec.config),this.state=new Ag.p(this),this.commands=new Ig.K,this.canvas3dInit=this.ev.behavior(!1),this.behaviors={state:{isAnimating:this.ev.behavior(!1),isUpdating:this.ev.behavior(!1),isBusy:this.ev.behavior(!1)},interaction:{hover:this.ev.behavior({current:dr.YL.Loci.Empty,modifiers:Hc.Fs.None,buttons:0,button:0}),click:this.ev.behavior({current:dr.YL.Loci.Empty,modifiers:Hc.Fs.None,buttons:0,button:0}),drag:this.ev.behavior({current:dr.YL.Loci.Empty,modifiers:Hc.Fs.None,buttons:0,button:0,pageStart:(0,g.ZY)(),pageEnd:(0,g.ZY)()}),key:this.ev.behavior(Hc.Vl),keyReleased:this.ev.behavior(Hc.Vl),selectionMode:this.ev.behavior(!1)},labels:{highlight:this.ev.behavior({labels:[]})},layout:{leftPanelTabName:this.ev.behavior("root")},canvas3d:{initialized:this.canvas3dInit.pipe((0,ne.p)(z=>!!z),(0,be.s)(1))}},this.canvas3dInitialized=new Promise((z,me)=>{this.initCanvas3dPromiseCallbacks=[z,me]}),this.initialized=new Promise((z,me)=>{this.initializedPromiseCallbacks=[z,me]}),this.layout=new Fn(this),this.animationLoop=new Eg(this),this.representation={structure:{registry:new kc,themes:{colorThemeRegistry:mm.J.createRegistry(),sizeThemeRegistry:pm.F.createRegistry()}},volume:{registry:new xg.H,themes:{colorThemeRegistry:mm.J.createRegistry(),sizeThemeRegistry:pm.F.createRegistry()}}},this.query={structure:{registry:new dt.lL}},this.dataFormats=new ct,this.builders={data:new ve(this),structure:void 0},this.helpers={substructureParent:new Pg(this),viewportScreenshot:void 0},this.managers={structure:{hierarchy:new on.G(this),component:new ht.C(this),measurement:new En.$T(this),selection:new Ye(this),focus:new fn(this)},volume:{hierarchy:new mn.L(this)},interactivity:void 0,camera:new Nn(this),animation:new cn(this),snapshot:new Qt.g(this),lociLabels:void 0,toast:new Tg(this),asset:new p.E,task:new Jl,dragAndDrop:new Rg(this)},this.events={log:this.ev(),task:this.managers.task.events,canvas3d:{settingsUpdated:this.ev()}},this.customModelProperties=new ue.Registry,this.customStructureProperties=new ue.Registry,this.customStructureControls=new Map,this.customImportControls=new Map,this.genericRepresentationControls=new Map,this.customState=Object.create(null),this.handleResize=()=>{var z,me;const Pe=null===(z=this.canvas3dContext)||void 0===z?void 0:z.canvas,Ge=this.layout.root;Ge&&Pe&&((0,ie.H5)(Pe,Ge,this.canvas3dContext.props.pixelScale),null===(me=this.canvas3d)||void 0===me||me.requestResize())},this.log={entries:(0,Se.B8)(),entry:z=>this.events.log.next(z),error:z=>this.events.log.next(Mu.x.error(z)),message:z=>this.events.log.next(Mu.x.message(z)),info:z=>this.events.log.next(Mu.x.info(z)),warn:z=>this.events.log.next(Mu.x.warning(z))},this.fetch=Cg.hW,(0,Oe.ht)(!1),(0,uo.GW)(null!==(F=this.config.get(je.AB.Structure.SaccharideCompIdMapType))&&void 0!==F?F:"default")}}class Fg extends wg{initCustomParamEditors(){if(this.spec.customParamEditors)for(const[x,F]of this.spec.customParamEditors)this.customParamEditors.set(x.id,F)}dispose(x){super.dispose(x),this.layout.dispose()}constructor(x){super(x),this.spec=x,this.customParamEditors=new Map,this.initCustomParamEditors()}}var Ng=n(6648),Ug=n(6354),Vg=n(9568),Gg=n(4438);let zg=(()=>{class oe{constructor(){this.plugin=new Fg({actions:[W.Action(Q.Structure.DownloadStructure),W.Action(Q.Volume.DownloadDensity),W.Action(Q.DataFormat.DownloadFile),W.Action(Q.DataFormat.OpenFiles),W.Action(Q.Structure.LoadTrajectory),W.Action(Q.Structure.EnableModelCustomProps),W.Action(Q.Structure.EnableStructureCustomProps),W.Action(o.p3),W.Action(o.Cd),W.Action(o.N$),W.Action(y.f.Data.Download),W.Action(y.f.Data.ParseCif),W.Action(y.f.Data.ParseCcp4),W.Action(y.f.Data.ParseDsn6),W.Action(y.f.Model.TrajectoryFromMmCif),W.Action(y.f.Model.TrajectoryFromCifCore),W.Action(y.f.Model.TrajectoryFromPDB),W.Action(y.f.Model.TransformStructureConformation),W.Action(y.f.Model.StructureFromModel),W.Action(y.f.Model.StructureFromTrajectory),W.Action(y.f.Model.ModelFromTrajectory),W.Action(y.f.Model.StructureSelectionFromScript),W.Action(y.f.Representation.StructureRepresentation3D),W.Action(y.f.Representation.StructureSelectionsDistance3D),W.Action(y.f.Representation.StructureSelectionsAngle3D),W.Action(y.f.Representation.StructureSelectionsDihedral3D),W.Action(y.f.Representation.StructureSelectionsLabel3D),W.Action(y.f.Representation.StructureSelectionsOrientation3D),W.Action(y.f.Representation.ModelUnitcell3D),W.Action(y.f.Representation.StructureBoundingBox3D),W.Action(y.f.Representation.ExplodeStructureRepresentation3D),W.Action(y.f.Representation.SpinStructureRepresentation3D),W.Action(y.f.Representation.UnwindStructureAssemblyRepresentation3D),W.Action(y.f.Representation.OverpaintStructureRepresentation3DFromScript),W.Action(y.f.Representation.TransparencyStructureRepresentation3DFromScript),W.Action(y.f.Representation.ClippingStructureRepresentation3DFromScript),W.Action(y.f.Representation.SubstanceStructureRepresentation3DFromScript),W.Action(y.f.Representation.ThemeStrengthRepresentation3D),W.Action(L),W.Action(y.f.Volume.VolumeFromCcp4),W.Action(y.f.Volume.VolumeFromDsn6),W.Action(y.f.Volume.VolumeFromCube),W.Action(y.f.Volume.VolumeFromDx),W.Action(y.f.Representation.VolumeRepresentation3D)],behaviors:[W.Behavior(a.Zw.Representation.HighlightLoci),W.Behavior(a.Zw.Representation.SelectLoci),W.Behavior(a.Zw.Representation.DefaultLociLabelProvider),W.Behavior(a.Zw.Representation.FocusLoci),W.Behavior(a.Zw.Camera.FocusLoci),W.Behavior(a.Zw.Camera.CameraAxisHelper),W.Behavior(a.Zw.Camera.CameraControls),W.Behavior(S.b),W.Behavior(a.Zw.CustomProps.StructureInfo),W.Behavior(a.Zw.CustomProps.AccessibleSurfaceArea),W.Behavior(a.Zw.CustomProps.BestDatabaseSequenceMapping),W.Behavior(a.Zw.CustomProps.Interactions),W.Behavior(a.Zw.CustomProps.SecondaryStructure),W.Behavior(a.Zw.CustomProps.ValenceModel),W.Behavior(a.Zw.CustomProps.CrossLinkRestraint)],animations:[d,u,J,h,O,U,V],customParamEditors:[[o.N$,ke]],config:[[je.AB.VolumeStreaming.Enabled,!1]]}),this.plugin$=(0,Ng.H)(this.plugin.init()).pipe((0,Ug.T)(()=>this.plugin),(0,Vg.t)(1))}static#e=this.\u0275fac=function(z){return new(z||oe)};static#t=this.\u0275prov=Gg.jDH({token:oe,factory:oe.\u0275fac,providedIn:"platform"})}return oe})()},3286:(tn,Ue,n)=>{"use strict";n.d(Ue,{Z:()=>l});var e=n(467),o=n(4412),r=n(5558),t=n(5964),A=n(6354),y=n(6648),c=n(8141),i=n(9568),v=n(9136),O=n(1861);const b=new Map([["ALA","A"],["ARG","R"],["ASN","N"],["ASP","D"],["CYS","C"],["GLN","Q"],["GLU","E"],["GLY","G"],["HIS","H"],["ILE","I"],["LEU","L"],["LYS","K"],["MET","M"],["PHE","F"],["PRO","P"],["SER","S"],["THR","T"],["TRP","W"],["TYR","Y"],["VAL","V"]]);new Map(Array.from(b.entries()).map(([m,u])=>[u,m]));var M=n(4438),I=n(5621);let l=(()=>{class m{set source(d){this.source$.next(d)}constructor(d){var s=this;this.pluginService=d,this.source$=new o.t(null),this.structure$=this.pluginService.plugin$.pipe((0,r.n)(C=>this.source$.pipe((0,t.p)(h=>null!=h),(0,A.T)(h=>({plugin:C,source:h})))),(0,r.n)(({source:C})=>(0,y.H)((0,e.A)(function*(){return"local"===C.type?{data:yield s.parseLocalSource(C),source:C}:{data:yield s.parseRemoteSource(C),source:C}})())),(0,r.n)(({data:C,source:h})=>(0,y.H)((0,e.A)(function*(){const a=s.pluginService.plugin,S=yield a.builders.structure.parseTrajectory(C,h.format),D=yield a.builders.structure.createModel(S,{modelIndex:0});return a.builders.structure.createStructure(D,{name:"model",params:{}})})())),(0,c.M)(C=>{let h=0;this.residues=[];const a=this.r2i=new Map,S=this.i2r=new Map;v.oE.eachAtomicHierarchyElement(C.cell?.obj?.data,{residue:D=>{const R=v.StructureProperties.residue.auth_seq_id(D),f=v.StructureProperties.residue.pdbx_PDB_ins_code(D),p=v.StructureProperties.chain.auth_asym_id(D),E=v.StructureProperties.atom.auth_comp_id(D),T=(p+R+f).trim();a.set(T,h),S.set(h,T),this.residues.push({pdbInsCode:f,authSeqId:R,authAsymId:p,authCompId3:b.has(E)?E:"XXX",authCompId1:b.get(E)||"X"}),h++}})}),(0,i.t)(1))}parseRemoteSource(d){var s=this;return(0,e.A)(function*(){const C=O.V.Url(d.link);return s.pluginService.plugin.builders.data.download({url:C,label:d.label,isBinary:d.binary})})()}parseLocalSource(d){var s=this;return(0,e.A)(function*(){const C=d.binary,h=d.label,a=s.pluginService.plugin;if("string"==typeof d.data)return a.builders.data.rawData({data:d.data,label:h});let S;S=d.data instanceof File?O.V.File(d.data):O.V.File(new File([d.data],`${h}.${"mmcif"===d.format?"cif":"ent"}`));const{data:D}=yield a.builders.data.readFile({file:S,label:h,isBinary:C});return D})()}static#e=this.\u0275fac=function(s){return new(s||m)(M.KVO(I.z))};static#t=this.\u0275prov=M.jDH({token:m,factory:m.\u0275fac,providedIn:"platform"})}return m})()},39:(tn,Ue,n)=>{"use strict";n.d(Ue,{B8:()=>ao,CD:()=>nr,T5:()=>fn,uY:()=>Ci});var e="delete",o=5,r=1<>>0;if(""+ze!==fe||4294967295===ze)return NaN;fe=ze}return fe<0?v(he)+fe:fe}function b(){return!0}function _(he,fe,ze){return(0===he&&!m(he)||void 0!==ze&&he<=-ze)&&(void 0===fe||void 0!==ze&&fe>=ze)}function M(he,fe){return l(he,fe,0)}function I(he,fe){return l(he,fe,fe)}function l(he,fe,ze){return void 0===he?ze:m(he)?fe===1/0?fe:0|Math.max(0,fe+he):void 0===fe||fe===he?he:0|Math.min(fe,he)}function m(he){return he<0||0===he&&1/he==-1/0}var u="@@__IMMUTABLE_ITERABLE__@@";function d(he){return!(!he||!he[u])}var s="@@__IMMUTABLE_KEYED__@@";function C(he){return!(!he||!he[s])}var h="@@__IMMUTABLE_INDEXED__@@";function a(he){return!(!he||!he[h])}function S(he){return C(he)||a(he)}var D=function(fe){return d(fe)?fe:xe(fe)},R=function(he){function fe(ze){return C(ze)?ze:le(ze)}return he&&(fe.__proto__=he),(fe.prototype=Object.create(he&&he.prototype)).constructor=fe,fe}(D),f=function(he){function fe(ze){return a(ze)?ze:Ae(ze)}return he&&(fe.__proto__=he),(fe.prototype=Object.create(he&&he.prototype)).constructor=fe,fe}(D),p=function(he){function fe(ze){return d(ze)&&!S(ze)?ze:Be(ze)}return he&&(fe.__proto__=he),(fe.prototype=Object.create(he&&he.prototype)).constructor=fe,fe}(D);D.Keyed=R,D.Indexed=f,D.Set=p;var E="@@__IMMUTABLE_SEQ__@@";function T(he){return!(!he||!he[E])}var L="@@__IMMUTABLE_RECORD__@@";function w(he){return!(!he||!he[L])}function Q(he){return d(he)||w(he)}var G="@@__IMMUTABLE_ORDERED__@@";function V(he){return!(!he||!he[G])}var U=0,N=1,k=2,H="function"==typeof Symbol&&Symbol.iterator,$="@@iterator",J=H||$,W=function(fe){this.next=fe};function te(he,fe,ze,Ze){var it=0===he?fe:1===he?ze:[fe,ze];return Ze?Ze.value=it:Ze={value:it,done:!1},Ze}function de(){return{value:void 0,done:!0}}function ye(he){return!!Array.isArray(he)||!!q(he)}function j(he){return he&&"function"==typeof he.next}function Z(he){var fe=q(he);return fe&&fe.call(he)}function q(he){var fe=he&&(H&&he[H]||he[$]);if("function"==typeof fe)return fe}W.prototype.toString=function(){return"[Iterator]"},W.KEYS=U,W.VALUES=N,W.ENTRIES=k,W.prototype.inspect=W.prototype.toSource=function(){return this.toString()},W.prototype[J]=function(){return this};var g=Object.prototype.hasOwnProperty;function _e(he){return!(!Array.isArray(he)&&"string"!=typeof he)||he&&"object"==typeof he&&Number.isInteger(he.length)&&he.length>=0&&(0===he.length?1===Object.keys(he).length:he.hasOwnProperty(he.length-1))}var xe=function(he){function fe(ze){return null==ze?Oe():Q(ze)?ze.toSeq():function Ne(he){var fe=K(he);if(fe)return function Y(he){var fe=q(he);return fe&&fe===he.entries}(he)?fe.fromEntrySeq():function ee(he){var fe=q(he);return fe&&fe===he.keys}(he)?fe.toSetSeq():fe;if("object"==typeof he)return new Re(he);throw new TypeError("Expected Array or collection object of values, or keyed object: "+he)}(ze)}return he&&(fe.__proto__=he),(fe.prototype=Object.create(he&&he.prototype)).constructor=fe,fe.prototype.toSeq=function(){return this},fe.prototype.toString=function(){return this.__toString("Seq {","}")},fe.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},fe.prototype.__iterate=function(Ze,it){var Rt=this._cache;if(Rt){for(var X=Rt.length,pe=0;pe!==X;){var De=Rt[it?X-++pe:pe++];if(!1===Ze(De[1],De[0],this))break}return pe}return this.__iterateUncached(Ze,it)},fe.prototype.__iterator=function(Ze,it){var Rt=this._cache;if(Rt){var X=Rt.length,pe=0;return new W(function(){if(pe===X)return{value:void 0,done:!0};var De=Rt[it?X-++pe:pe++];return te(Ze,De[0],De[1])})}return this.__iteratorUncached(Ze,it)},fe}(D),le=function(he){function fe(ze){return null==ze?Oe().toKeyedSeq():d(ze)?C(ze)?ze.toSeq():ze.fromEntrySeq():w(ze)?ze.toSeq():Se(ze)}return he&&(fe.__proto__=he),(fe.prototype=Object.create(he&&he.prototype)).constructor=fe,fe.prototype.toKeyedSeq=function(){return this},fe}(xe),Ae=function(he){function fe(ze){return null==ze?Oe():d(ze)?C(ze)?ze.entrySeq():ze.toIndexedSeq():w(ze)?ze.toSeq().entrySeq():Ve(ze)}return he&&(fe.__proto__=he),(fe.prototype=Object.create(he&&he.prototype)).constructor=fe,fe.of=function(){return fe(arguments)},fe.prototype.toIndexedSeq=function(){return this},fe.prototype.toString=function(){return this.__toString("Seq [","]")},fe}(xe),Be=function(he){function fe(ze){return(d(ze)&&!S(ze)?ze:Ae(ze)).toSetSeq()}return he&&(fe.__proto__=he),(fe.prototype=Object.create(he&&he.prototype)).constructor=fe,fe.of=function(){return fe(arguments)},fe.prototype.toSetSeq=function(){return this},fe}(xe);xe.isSeq=T,xe.Keyed=le,xe.Set=Be,xe.Indexed=Ae,xe.prototype[E]=!0;var Ce=function(he){function fe(ze){this._array=ze,this.size=ze.length}return he&&(fe.__proto__=he),(fe.prototype=Object.create(he&&he.prototype)).constructor=fe,fe.prototype.get=function(Ze,it){return this.has(Ze)?this._array[O(this,Ze)]:it},fe.prototype.__iterate=function(Ze,it){for(var Rt=this._array,X=Rt.length,pe=0;pe!==X;){var De=it?X-++pe:pe++;if(!1===Ze(Rt[De],De,this))break}return pe},fe.prototype.__iterator=function(Ze,it){var Rt=this._array,X=Rt.length,pe=0;return new W(function(){if(pe===X)return{value:void 0,done:!0};var De=it?X-++pe:pe++;return te(Ze,De,Rt[De])})},fe}(Ae),Re=function(he){function fe(ze){var Ze=Object.keys(ze).concat(Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(ze):[]);this._object=ze,this._keys=Ze,this.size=Ze.length}return he&&(fe.__proto__=he),(fe.prototype=Object.create(he&&he.prototype)).constructor=fe,fe.prototype.get=function(Ze,it){return void 0===it||this.has(Ze)?this._object[Ze]:it},fe.prototype.has=function(Ze){return g.call(this._object,Ze)},fe.prototype.__iterate=function(Ze,it){for(var Rt=this._object,X=this._keys,pe=X.length,De=0;De!==pe;){var Ee=X[it?pe-++De:De++];if(!1===Ze(Rt[Ee],Ee,this))break}return De},fe.prototype.__iterator=function(Ze,it){var Rt=this._object,X=this._keys,pe=X.length,De=0;return new W(function(){if(De===pe)return{value:void 0,done:!0};var Ee=X[it?pe-++De:De++];return te(Ze,Ee,Rt[Ee])})},fe}(le);Re.prototype[G]=!0;var we,ke=function(he){function fe(ze){this._collection=ze,this.size=ze.length||ze.size}return he&&(fe.__proto__=he),(fe.prototype=Object.create(he&&he.prototype)).constructor=fe,fe.prototype.__iterateUncached=function(Ze,it){if(it)return this.cacheResult().__iterate(Ze,it);var X=Z(this._collection),pe=0;if(j(X))for(var De;!(De=X.next()).done&&!1!==Ze(De.value,pe++,this););return pe},fe.prototype.__iteratorUncached=function(Ze,it){if(it)return this.cacheResult().__iterator(Ze,it);var X=Z(this._collection);if(!j(X))return new W(de);var pe=0;return new W(function(){var De=X.next();return De.done?De:te(Ze,pe++,De.value)})},fe}(Ae);function Oe(){return we||(we=new Ce([]))}function Se(he){var fe=K(he);if(fe)return fe.fromEntrySeq();if("object"==typeof he)return new Re(he);throw new TypeError("Expected Array or collection object of [k, v] entries, or keyed object: "+he)}function Ve(he){var fe=K(he);if(fe)return fe;throw new TypeError("Expected Array or collection object of values: "+he)}function K(he){return _e(he)?new Ce(he):ye(he)?new ke(he):void 0}var ne="@@__IMMUTABLE_MAP__@@";function be(he){return!(!he||!he[ne])}function Te(he){return be(he)&&V(he)}function ie(he){return!(!he||"function"!=typeof he.equals||"function"!=typeof he.hashCode)}function ue(he,fe){if(he===fe||he!=he&&fe!=fe)return!0;if(!he||!fe)return!1;if("function"==typeof he.valueOf&&"function"==typeof fe.valueOf){if((he=he.valueOf())===(fe=fe.valueOf())||he!=he&&fe!=fe)return!0;if(!he||!fe)return!1}return!!(ie(he)&&ie(fe)&&he.equals(fe))}var re="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(fe,ze){var Ze=65535&(fe|=0),it=65535&(ze|=0);return Ze*it+((fe>>>16)*it+Ze*(ze>>>16)<<16>>>0)|0};function ve(he){return he>>>1&1073741824|3221225471&he}var ce=Object.prototype.valueOf;function se(he){if(null==he)return ae(he);if("function"==typeof he.hashCode)return ve(he.hashCode(he));var fe=function Bt(he){return he.valueOf!==ce&&"function"==typeof he.valueOf?he.valueOf(he):he}(he);if(null==fe)return ae(fe);switch(typeof fe){case"boolean":return fe?1108378657:1108378656;case"number":return function ge(he){if(he!=he||he===1/0)return 0;var fe=0|he;for(fe!==he&&(fe^=4294967295*he);he>4294967295;)fe^=he/=4294967295;return ve(fe)}(fe);case"string":return fe.length>ut?function Ie(he){var fe=gt[he];return void 0===fe&&(fe=Le(he),sn===Kt&&(sn=0,gt={}),sn++,gt[he]=fe),fe}(fe):Le(fe);case"object":case"function":return function je(he){var fe;if($e&&void 0!==(fe=mt.get(he))||void 0!==(fe=he[Ke])||!Je&&(void 0!==(fe=he.propertyIsEnumerable&&he.propertyIsEnumerable[Ke])||(fe=function en(he){if(he&&he.nodeType>0)switch(he.nodeType){case 1:return he.uniqueID;case 9:return he.documentElement&&he.documentElement.uniqueID}}(he),void 0!==fe)))return fe;if(fe=pn(),$e)mt.set(he,fe);else{if(void 0!==Lt&&!1===Lt(he))throw new Error("Non-extensible objects are not allowed as keys.");if(Je)Object.defineProperty(he,Ke,{enumerable:!1,configurable:!1,writable:!1,value:fe});else if(void 0!==he.propertyIsEnumerable&&he.propertyIsEnumerable===he.constructor.prototype.propertyIsEnumerable)he.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},he.propertyIsEnumerable[Ke]=fe;else{if(void 0===he.nodeType)throw new Error("Unable to set a non-enumerable property on object.");he[Ke]=fe}}return fe}(fe);case"symbol":return function nt(he){var fe=_t[he];return void 0!==fe||(fe=pn(),_t[he]=fe),fe}(fe);default:if("function"==typeof fe.toString)return Le(fe.toString());throw new Error("Value type "+typeof fe+" cannot be hashed.")}}function ae(he){return null===he?1108378658:1108378659}function Le(he){for(var fe=0,ze=0;ze=0&&(Ee.get=function(qe,bt){return(qe=O(this,qe))>=0&&qeDe)return{value:void 0,done:!0};var In=xt.next();return Ze||qe===N||In.done?In:te(qe,dn-1,qe===U?void 0:In.value[1],In)})},Ee}function $t(he,fe,ze,Ze){var it=Pr(he);return it.__iterateUncached=function(Rt,X){var pe=this;if(X)return this.cacheResult().__iterate(Rt,X);var De=!0,Ee=0;return he.__iterate(function(qe,bt,xt){if(!De||!(De=fe.call(ze,qe,bt,xt)))return Ee++,Rt(qe,Ze?bt:Ee-1,pe)}),Ee},it.__iteratorUncached=function(Rt,X){var pe=this;if(X)return this.cacheResult().__iterator(Rt,X);var De=he.__iterator(k,X),Ee=!0,qe=0;return new W(function(){var bt,xt,hn;do{if((bt=De.next()).done)return Ze||Rt===N?bt:te(Rt,qe++,Rt===U?void 0:bt.value[1],bt);var dn=bt.value;xt=dn[0],hn=dn[1],Ee&&(Ee=fe.call(ze,hn,xt,pe))}while(Ee);return Rt===k?bt:te(Rt,xt,hn,bt)})},it}function Wt(he,fe,ze){var Ze=Pr(he);return Ze.__iterateUncached=function(it,Rt){if(Rt)return this.cacheResult().__iterate(it,Rt);var X=0,pe=!1;return function De(Ee,qe){Ee.__iterate(function(bt,xt){return(!fe||qe0}function jn(he,fe,ze,Ze){var it=Pr(he),Rt=new Ce(ze).map(function(X){return X.size});return it.size=Ze?Rt.max():Rt.min(),it.__iterate=function(X,pe){for(var Ee,De=this.__iterator(N,pe),qe=0;!(Ee=De.next()).done&&!1!==X(Ee.value,qe++,this););return qe},it.__iteratorUncached=function(X,pe){var De=ze.map(function(bt){return bt=D(bt),Z(pe?bt.reverse():bt)}),Ee=0,qe=!1;return new W(function(){var bt;return qe||(bt=De.map(function(xt){return xt.next()}),qe=Ze?bt.every(function(xt){return xt.done}):bt.some(function(xt){return xt.done})),qe?{value:void 0,done:!0}:te(X,Ee++,fe.apply(null,bt.map(function(xt){return xt.value})))})},it}function On(he,fe){return he===fe?he:T(he)?fe:he.constructor(fe)}function fr(he){if(he!==Object(he))throw new TypeError("Expected [K, V] tuple: "+he)}function Dr(he){return C(he)?R:a(he)?f:p}function Pr(he){return Object.create((C(he)?le:a(he)?Ae:Be).prototype)}function or(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):xe.prototype.cacheResult.call(this)}function Nr(he,fe){return void 0===he&&void 0===fe?0:void 0===he?1:void 0===fe?-1:he>fe?1:he0;)fe[ze]=arguments[ze+1];if("function"!=typeof he)throw new TypeError("Invalid merger function: "+he);return so(this,fe,he)}function so(he,fe,ze){for(var Ze=[],it=0;it0;)fe[ze]=arguments[ze+1];return We(this,fe,he)}function xr(he){for(var fe=[],ze=arguments.length-1;ze-- >0;)fe[ze]=arguments[ze+1];return Yn(this,he,zt(),function(Ze){return Pt(Ze,fe)})}function Ft(he){for(var fe=[],ze=arguments.length-1;ze-- >0;)fe[ze]=arguments[ze+1];return Yn(this,he,zt(),function(Ze){return We(Ze,fe)})}function Qt(he){var fe=this.asMutable();return he(fe),fe.wasAltered()?fe.__ensureOwner(this.__ownerID):this}function ht(){return this.__ownerID?this:this.__ensureOwner(new i)}function pt(){return this.__ensureOwner()}function Xt(){return this.__altered}var fn=function(he){function fe(ze){return null==ze?zt():be(ze)&&!V(ze)?ze:zt().withMutations(function(Ze){var it=he(ze);Jr(it.size),it.forEach(function(Rt,X){return Ze.set(X,Rt)})})}return he&&(fe.__proto__=he),(fe.prototype=Object.create(he&&he.prototype)).constructor=fe,fe.of=function(){for(var Ze=[],it=arguments.length;it--;)Ze[it]=arguments[it];return zt().withMutations(function(Rt){for(var X=0;X=Ze.length)throw new Error("Missing value for key: "+Ze[X]);Rt.set(Ze[X],Ze[X+1])}})},fe.prototype.toString=function(){return this.__toString("Map {","}")},fe.prototype.get=function(Ze,it){return this._root?this._root.get(0,void 0,Ze,it):it},fe.prototype.set=function(Ze,it){return an(this,Ze,it)},fe.prototype.remove=function(Ze){return an(this,Ze,A)},fe.prototype.deleteAll=function(Ze){var it=D(Ze);return 0===it.size?this:this.withMutations(function(Rt){it.forEach(function(X){return Rt.remove(X)})})},fe.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):zt()},fe.prototype.sort=function(Ze){return Ci(kt(this,Ze))},fe.prototype.sortBy=function(Ze,it){return Ci(kt(this,it,Ze))},fe.prototype.map=function(Ze,it){var Rt=this;return this.withMutations(function(X){X.forEach(function(pe,De){X.set(De,Ze.call(it,pe,De,Rt))})})},fe.prototype.__iterator=function(Ze,it){return new ot(this,Ze,it)},fe.prototype.__iterate=function(Ze,it){var Rt=this,X=0;return this._root&&this._root.iterate(function(pe){return X++,Ze(pe[1],pe[0],Rt)},it),X},fe.prototype.__ensureOwner=function(Ze){return Ze===this.__ownerID?this:Ze?vt(this.size,this._root,Ze,this.__hash):0===this.size?zt():(this.__ownerID=Ze,this.__altered=!1,this)},fe}(R);fn.isMap=be;var on=fn.prototype;on[ne]=!0,on[e]=on.remove,on.removeAll=on.deleteAll,on.setIn=Hr,on.removeIn=on.deleteIn=Fr,on.update=Ur,on.updateIn=Ro,on.merge=on.concat=ro,on.mergeWith=po,on.mergeDeep=Kn,on.mergeDeepWith=dr,on.mergeIn=xr,on.mergeDeepIn=Ft,on.withMutations=Qt,on.wasAltered=Xt,on.asImmutable=pt,on["@@transducer/init"]=on.asMutable=ht,on["@@transducer/step"]=function(he,fe){return he.set(fe[0],fe[1])},on["@@transducer/result"]=function(he){return he.asImmutable()};var En=function(fe,ze){this.ownerID=fe,this.entries=ze};En.prototype.get=function(fe,ze,Ze,it){for(var Rt=this.entries,X=0,pe=Rt.length;X=vo)return function Vr(he,fe,ze,Ze){he||(he=new i);for(var it=new Ye(he,se(ze),[ze,Ze]),Rt=0;Rt>>fe)&t),X=this.bitmap;return X&Rt?this.nodes[oo(X&Rt-1)].get(fe+o,ze,Ze,it):it},Tt.prototype.update=function(fe,ze,Ze,it,Rt,X,pe){void 0===Ze&&(Ze=se(it));var De=(0===ze?Ze:Ze>>>ze)&t,Ee=1<=Kr)return function Tr(he,fe,ze,Ze,it){for(var Rt=0,X=new Array(r),pe=0;0!==ze;pe++,ze>>>=1)X[pe]=1&ze?fe[Rt++]:void 0;return X[Ze]=it,new Fe(he,Rt+1,X)}(fe,hn,qe,De,In);if(bt&&!In&&2===hn.length&&Fn(hn[1^xt]))return hn[1^xt];if(bt&&In&&1===hn.length&&Fn(In))return In;var Tn=fe&&fe===this.ownerID,_n=bt?In?qe:qe^Ee:qe|Ee,Wn=bt?In?Gr(hn,xt,In,Tn):function yo(he,fe,ze){var Ze=he.length-1;if(ze&&fe===Ze)return he.pop(),he;for(var it=new Array(Ze),Rt=0,X=0;X>>fe)&t];return X?X.get(fe+o,ze,Ze,it):it},Fe.prototype.update=function(fe,ze,Ze,it,Rt,X,pe){void 0===Ze&&(Ze=se(it));var De=(0===ze?Ze:Ze>>>ze)&t,qe=this.nodes,bt=qe[De];if(Rt===A&&!bt)return this;var xt=Vn(bt,fe,ze+o,Ze,it,Rt,X,pe);if(xt===bt)return this;var hn=this.count;if(bt){if(!xt&&--hn>>ze)&t,X=(0===ze?Ze:Ze>>>ze)&t,De=Rt===X?[rr(he,fe,ze+o,Ze,it)]:(pe=new Ye(fe,Ze,it),Rt>1&1431655765))+(he>>2&858993459))+(he>>4)&252645135,127&(he+=he>>8)+(he>>16)}function Gr(he,fe,ze,Ze){var it=Ze?he:Ir(he);return it[fe]=ze,it}var vo=r/4,Kr=r/2,Do=r/4,lo="@@__IMMUTABLE_LIST__@@";function So(he){return!(!he||!he[lo])}var ao=function(he){function fe(ze){var Ze=ei();if(null==ze)return Ze;if(So(ze))return ze;var it=he(ze),Rt=it.size;return 0===Rt?Ze:(Jr(Rt),Rt>0&&Rt=0&&Ze=he.size||fe<0)return he.withMutations(function(X){fe<0?hi(X,fe).set(0,ze):hi(X,0,fe+1).set(fe,ze)});var Ze=he._tail,it=he._root,Rt={value:!1};return(fe+=he._origin)>=No(he._capacity)?Ze=ci(Ze,he.__ownerID,0,fe,ze,Rt):it=ci(it,he.__ownerID,he._level,fe,ze,Rt),Rt.value?he.__ownerID?(he._root=it,he._tail=Ze,he.__hash=void 0,he.__altered=!0,he):Eo(he._origin,he._capacity,he._level,it,Ze):he}(this,Ze,it)},fe.prototype.remove=function(Ze){return this.has(Ze)?0===Ze?this.shift():Ze===this.size-1?this.pop():this.splice(Ze,1):this},fe.prototype.insert=function(Ze,it){return this.splice(Ze,0,it)},fe.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=o,this._root=this._tail=this.__hash=void 0,this.__altered=!0,this):ei()},fe.prototype.push=function(){var Ze=arguments,it=this.size;return this.withMutations(function(Rt){hi(Rt,0,it+Ze.length);for(var X=0;X>>ze&t;if(it>=this.array.length)return new Yr([],fe);var X,Rt=0===it;if(ze>0){var pe=this.array[it];if((X=pe&&pe.removeBefore(fe,ze-o,Ze))===pe&&Rt)return this}if(Rt&&!X)return this;var De=Jo(this,fe);if(!Rt)for(var Ee=0;Ee>>ze&t;if(it>=this.array.length)return this;if(ze>0){var X=this.array[it];if((Rt=X&&X.removeAfter(fe,ze-o,Ze))===X&&it===this.array.length-1)return this}var pe=Jo(this,fe);return pe.array.splice(it+1),Rt&&(pe.array[it]=Rt),pe};var Fo,jr={};function Co(he,fe){var ze=he._origin,Ze=he._capacity,it=No(Ze),Rt=he._tail;return function X(Ee,qe,bt){return 0===qe?function pe(Ee,qe){var bt=qe===it?Rt&&Rt.array:Ee&&Ee.array,xt=qe>ze?0:ze-qe,hn=Ze-qe;return hn>r&&(hn=r),function(){if(xt===hn)return jr;var dn=fe?--hn:xt++;return bt&&bt[dn]}}(Ee,bt):function De(Ee,qe,bt){var xt,hn=Ee&&Ee.array,dn=bt>ze?0:ze-bt>>qe,In=1+(Ze-bt>>qe);return In>r&&(In=r),function(){for(;;){if(xt){var Tn=xt();if(Tn!==jr)return Tn;xt=null}if(dn===In)return jr;var _n=fe?--In:dn++;xt=X(hn&&hn[_n],qe-o,bt+(_n<>>ze&t,pe=he&&X0){var Ee=he&&he.array[X],qe=ci(Ee,fe,ze-o,Ze,it,Rt);return qe===Ee?he:((De=Jo(he,fe)).array[X]=qe,De)}return pe&&he.array[X]===it?he:(Rt&&c(Rt),De=Jo(he,fe),void 0===it&&X===De.array.length-1?De.array.pop():De.array[X]=it,De)}function Jo(he,fe){return fe&&he&&fe===he.ownerID?he:new Yr(he?he.array.slice():[],fe)}function Fi(he,fe){if(fe>=No(he._capacity))return he._tail;if(fe<1<0;)ze=ze.array[fe>>>Ze&t],Ze-=o;return ze}}function hi(he,fe,ze){void 0!==fe&&(fe|=0),void 0!==ze&&(ze|=0);var Ze=he.__ownerID||new i,it=he._origin,Rt=he._capacity,X=it+fe,pe=void 0===ze?Rt:ze<0?Rt+ze:it+ze;if(X===it&&pe===Rt)return he;if(X>=pe)return he.clear();for(var De=he._level,Ee=he._root,qe=0;X+qe<0;)Ee=new Yr(Ee&&Ee.array.length?[void 0,Ee]:[],Ze),qe+=1<<(De+=o);qe&&(X+=qe,it+=qe,pe+=qe,Rt+=qe);for(var bt=No(Rt),xt=No(pe);xt>=1<bt?new Yr([],Ze):hn;if(hn&&xt>bt&&Xo;Tn-=o){var _n=bt>>>Tn&t;In=In.array[_n]=Jo(In.array[_n],Ze)}In.array[bt>>>o&t]=hn}if(pe=xt)X-=xt,pe-=xt,De=o,Ee=null,dn=dn&&dn.removeBefore(Ze,0,X);else if(X>it||xt>>De&t;if(Wn!==xt>>>De&t)break;Wn&&(qe+=(1<it&&(Ee=Ee.removeBefore(Ze,De,X-qe)),Ee&&xt>>o<=r&&it.size>=2*Ze.size?(pe=(De=it.filter(function(Ee,qe){return void 0!==Ee&&Rt!==qe})).toKeyedSeq().map(function(Ee){return Ee[0]}).flip().toMap(),he.__ownerID&&(pe.__ownerID=De.__ownerID=he.__ownerID)):(pe=Ze.remove(fe),De=Rt===it.size-1?it.pop():it.set(Rt,void 0))}else if(X){if(ze===it.get(Rt)[1])return he;pe=Ze,De=it.set(Rt,[fe,ze])}else pe=Ze.set(fe,it.size),De=it.set(it.size,[fe,ze]);return he.__ownerID?(he.size=pe.size,he._map=pe,he._list=De,he.__hash=void 0,he.__altered=!0,he):mi(pe,De)}Ci.isOrderedMap=Te,Ci.prototype[G]=!0,Ci.prototype[e]=Ci.prototype.remove;var es="@@__IMMUTABLE_STACK__@@";function Si(he){return!(!he||!he[es])}var Pi=function(he){function fe(ze){return null==ze?Ri():Si(ze)?ze:Ri().pushAll(ze)}return he&&(fe.__proto__=he),(fe.prototype=Object.create(he&&he.prototype)).constructor=fe,fe.of=function(){return this(arguments)},fe.prototype.toString=function(){return this.__toString("Stack [","]")},fe.prototype.get=function(Ze,it){var Rt=this._head;for(Ze=O(this,Ze);Rt&&Ze--;)Rt=Rt.next;return Rt?Rt.value:it},fe.prototype.peek=function(){return this._head&&this._head.value},fe.prototype.push=function(){var Ze=arguments;if(0===arguments.length)return this;for(var it=this.size+arguments.length,Rt=this._head,X=arguments.length-1;X>=0;X--)Rt={value:Ze[X],next:Rt};return this.__ownerID?(this.size=it,this._head=Rt,this.__hash=void 0,this.__altered=!0,this):gi(it,Rt)},fe.prototype.pushAll=function(Ze){if(0===(Ze=he(Ze)).size)return this;if(0===this.size&&Si(Ze))return Ze;Jr(Ze.size);var it=this.size,Rt=this._head;return Ze.__iterate(function(X){it++,Rt={value:X,next:Rt}},!0),this.__ownerID?(this.size=it,this._head=Rt,this.__hash=void 0,this.__altered=!0,this):gi(it,Rt)},fe.prototype.pop=function(){return this.slice(1)},fe.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Ri()},fe.prototype.slice=function(Ze,it){if(_(Ze,it,this.size))return this;var Rt=M(Ze,this.size);if(I(it,this.size)!==this.size)return he.prototype.slice.call(this,Ze,it);for(var pe=this.size-Rt,De=this._head;Rt--;)De=De.next;return this.__ownerID?(this.size=pe,this._head=De,this.__hash=void 0,this.__altered=!0,this):gi(pe,De)},fe.prototype.__ensureOwner=function(Ze){return Ze===this.__ownerID?this:Ze?gi(this.size,this._head,Ze,this.__hash):0===this.size?Ri():(this.__ownerID=Ze,this.__altered=!1,this)},fe.prototype.__iterate=function(Ze,it){var Rt=this;if(it)return new Ce(this.toArray()).__iterate(function(De,Ee){return Ze(De,Ee,Rt)},it);for(var X=0,pe=this._head;pe&&!1!==Ze(pe.value,X++,this);)pe=pe.next;return X},fe.prototype.__iterator=function(Ze,it){if(it)return new Ce(this.toArray()).__iterator(Ze,it);var Rt=0,X=this._head;return new W(function(){if(X){var pe=X.value;return X=X.next,te(Ze,Rt++,pe)}return{value:void 0,done:!0}})},fe}(f);Pi.isStack=Si;var Wi,ni=Pi.prototype;function gi(he,fe,ze,Ze){var it=Object.create(ni);return it.size=he,it._head=fe,it.__ownerID=ze,it.__hash=Ze,it.__altered=!1,it}function Ri(){return Wi||(Wi=gi(0))}ni[es]=!0,ni.shift=ni.pop,ni.unshift=ni.push,ni.unshiftAll=ni.pushAll,ni.withMutations=Qt,ni.wasAltered=Xt,ni.asImmutable=pt,ni["@@transducer/init"]=ni.asMutable=ht,ni["@@transducer/step"]=function(he,fe){return he.unshift(fe)},ni["@@transducer/result"]=function(he){return he.asImmutable()};var Qi="@@__IMMUTABLE_SET__@@";function Hn(he){return!(!he||!he[Qi])}function qr(he){return Hn(he)&&V(he)}function co(he,fe){if(he===fe)return!0;if(!d(fe)||void 0!==he.size&&void 0!==fe.size&&he.size!==fe.size||void 0!==he.__hash&&void 0!==fe.__hash&&he.__hash!==fe.__hash||C(he)!==C(fe)||a(he)!==a(fe)||V(he)!==V(fe))return!1;if(0===he.size&&0===fe.size)return!0;var ze=!S(he);if(V(he)){var Ze=he.entries();return fe.every(function(De,Ee){var qe=Ze.next().value;return qe&&ue(qe[1],De)&&(ze||ue(qe[0],Ee))})&&Ze.next().done}var it=!1;if(void 0===he.size)if(void 0===fe.size)"function"==typeof he.cacheResult&&he.cacheResult();else{it=!0;var Rt=he;he=fe,fe=Rt}var X=!0,pe=fe.__iterate(function(De,Ee){if(ze?!he.has(De):it?!ue(De,he.get(Ee,A)):!ue(he.get(Ee,A),De))return X=!1,!1});return X&&he.size===pe}function zr(he,fe){var ze=function(Ze){he.prototype[Ze]=fe[Ze]};return Object.keys(fe).forEach(ze),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(fe).forEach(ze),he}function lr(he){if(!he||"object"!=typeof he)return he;if(!d(he)){if(!dt(he))return he;he=xe(he)}if(C(he)){var fe={};return he.__iterate(function(Ze,it){fe[it]=lr(Ze)}),fe}var ze=[];return he.__iterate(function(Ze){ze.push(lr(Ze))}),ze}var kr=function(he){function fe(ze){return null==ze?Li():Hn(ze)&&!V(ze)?ze:Li().withMutations(function(Ze){var it=he(ze);Jr(it.size),it.forEach(function(Rt){return Ze.add(Rt)})})}return he&&(fe.__proto__=he),(fe.prototype=Object.create(he&&he.prototype)).constructor=fe,fe.of=function(){return this(arguments)},fe.fromKeys=function(Ze){return this(R(Ze).keySeq())},fe.intersect=function(Ze){return(Ze=D(Ze).toArray()).length?Qr.intersect.apply(fe(Ze.pop()),Ze):Li()},fe.union=function(Ze){return(Ze=D(Ze).toArray()).length?Qr.union.apply(fe(Ze.pop()),Ze):Li()},fe.prototype.toString=function(){return this.__toString("Set {","}")},fe.prototype.has=function(Ze){return this._map.has(Ze)},fe.prototype.add=function(Ze){return vi(this,this._map.set(Ze,Ze))},fe.prototype.remove=function(Ze){return vi(this,this._map.remove(Ze))},fe.prototype.clear=function(){return vi(this,this._map.clear())},fe.prototype.map=function(Ze,it){var Rt=this,X=!1,pe=vi(this,this._map.mapEntries(function(De){var Ee=De[1],qe=Ze.call(it,Ee,Ee,Rt);return qe!==Ee&&(X=!0),[qe,qe]},it));return X?pe:this},fe.prototype.union=function(){for(var Ze=[],it=arguments.length;it--;)Ze[it]=arguments[it];return 0===(Ze=Ze.filter(function(Rt){return 0!==Rt.size})).length?this:0!==this.size||this.__ownerID||1!==Ze.length?this.withMutations(function(Rt){for(var X=0;X=0&&it=0&&Rt>>-15,461845907),fe=re(fe<<13|fe>>>-13,5),fe=re((fe=fe+3864292196^he)^fe>>>16,2246822507),fe=ve((fe=re(fe^fe>>>13,3266489909))^fe>>>16)}(he.__iterate(ze?fe?function(Rt,X){Ze=31*Ze+vn(se(Rt),se(X))|0}:function(Rt,X){Ze=Ze+vn(se(Rt),se(X))|0}:fe?function(Rt){Ze=31*Ze+se(Rt)|0}:function(Rt){Ze=Ze+se(Rt)|0}),Ze)}(this))}});var kn=D.prototype;kn[u]=!0,kn[J]=kn.values,kn.toJSON=kn.toArray,kn.__toStringMapper=Yt,kn.inspect=kn.toSource=function(){return this.toString()},kn.chain=kn.flatMap,kn.contains=kn.includes,zr(R,{flip:function(){return On(this,tt(this))},mapEntries:function(fe,ze){var Ze=this,it=0;return On(this,this.toSeq().map(function(Rt,X){return fe.call(ze,[X,Rt],it++,Ze)}).fromEntrySeq())},mapKeys:function(fe,ze){var Ze=this;return On(this,this.toSeq().flip().map(function(it,Rt){return fe.call(ze,it,Rt,Ze)}).flip())}});var ur=R.prototype;ur[s]=!0,ur[J]=kn.entries,ur.toJSON=ar,ur.__toStringMapper=function(he,fe){return Yt(fe)+": "+Yt(he)},zr(f,{toKeyedSeq:function(){return new yt(this,!1)},filter:function(fe,ze){return On(this,bn(this,fe,ze,!1))},findIndex:function(fe,ze){var Ze=this.findEntry(fe,ze);return Ze?Ze[0]:-1},indexOf:function(fe){var ze=this.keyOf(fe);return void 0===ze?-1:ze},lastIndexOf:function(fe){var ze=this.lastKeyOf(fe);return void 0===ze?-1:ze},reverse:function(){return On(this,nn(this,!1))},slice:function(fe,ze){return On(this,Dt(this,fe,ze,!1))},splice:function(fe,ze){var Ze=arguments.length;if(ze=Math.max(ze||0,0),0===Ze||2===Ze&&!ze)return this;fe=M(fe,fe<0?this.count():this.size);var it=this.slice(0,fe);return On(this,1===Ze?it:it.concat(Ir(arguments,2),this.slice(fe+ze)))},findLastIndex:function(fe,ze){var Ze=this.findLastEntry(fe,ze);return Ze?Ze[0]:-1},first:function(fe){return this.get(0,fe)},flatten:function(fe){return On(this,Wt(this,fe,!1))},get:function(fe,ze){return(fe=O(this,fe))<0||this.size===1/0||void 0!==this.size&&fe>this.size?ze:this.find(function(Ze,it){return it===fe},void 0,ze)},has:function(fe){return(fe=O(this,fe))>=0&&(void 0!==this.size?this.size===1/0||fefe?-1:0}function vn(he,fe){return he^fe+2654435769+(he<<6)+(he>>2)}Jn.has=kn.includes,Jn.contains=Jn.includes,Jn.keys=Jn.values,zr(le,ur),zr(Ae,sr),zr(Be,Jn);var nr=function(he){function fe(ze){return null==ze?Uo():qr(ze)?ze:Uo().withMutations(function(Ze){var it=p(ze);Jr(it.size),it.forEach(function(Rt){return Ze.add(Rt)})})}return he&&(fe.__proto__=he),(fe.prototype=Object.create(he&&he.prototype)).constructor=fe,fe.of=function(){return this(arguments)},fe.fromKeys=function(Ze){return this(R(Ze).keySeq())},fe.prototype.toString=function(){return this.__toString("OrderedSet {","}")},fe}(kr);nr.isOrderedSet=qr;var mo,pr=nr.prototype;function Rr(he,fe){var ze=Object.create(pr);return ze.size=he?he.size:0,ze._map=he,ze.__ownerID=fe,ze}function Uo(){return mo||(mo=Rr(Oi()))}pr[G]=!0,pr.zip=sr.zip,pr.zipWith=sr.zipWith,pr.zipAll=sr.zipAll,pr.__empty=Uo,pr.__make=Rr;var fo=function(fe,ze){var Ze;!function ri(he){if(w(he))throw new Error("Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.");if(Q(he))throw new Error("Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.");if(null===he||"object"!=typeof he)throw new Error("Can not call `Record` with a non-object as default values. Use a plain javascript object instead.")}(fe);var it=function(pe){var De=this;if(pe instanceof it)return pe;if(!(this instanceof it))return new it(pe);if(!Ze){Ze=!0;var Ee=Object.keys(fe),qe=Rt._indices={};Rt._name=ze,Rt._keys=Ee,Rt._defaultValues=fe;for(var bt=0;bt{"use strict";n.d(Ue,{i:()=>O});var e=n(4369),o=n(7361),r=n(127);class t{get source(){return this._source}get target(){return this._target}apply(l,m=0,u){(!this.inTransition||m>0)&&O.copySnapshot(this._source,this.camera.state),this.inTransition||O.copySnapshot(this._target,this.camera.state),O.copySnapshot(this._target,l),this._target.radius>this._target.radiusMax&&(this._target.radius=this._target.radiusMax),this._target.radius<.01&&(this._target.radius=.01),this._target.radiusMax<.01&&(this._target.radiusMax=.01),!this.inTransition&&m<=0||typeof l.mode<"u"&&l.mode!==this.camera.state.mode?this.finish(this._target):(this.inTransition=!0,this.func=u||t.defaultTransition,(!this.inTransition||m>0)&&(this.start=this.t,this.durationMs=m))}tick(l){this.t=l,this.update()}finish(l){O.copySnapshot(this.camera.state,l),this.inTransition=!1}update(){if(!this.inTransition)return;const l=Math.min((this.t-this.start)/this.durationMs,1);1!==l?(this.func(this._current,l,this._source,this._target),O.copySnapshot(this.camera.state,this._current)):this.finish(this._target)}constructor(l){this.camera=l,this.t=0,this.func=t.defaultTransition,this.start=0,this.inTransition=!1,this.durationMs=0,this._source=O.createDefaultSnapshot(),this._target=O.createDefaultSnapshot(),this._current=O.createDefaultSnapshot()}}!function(I){const l=e.k.identity();I.defaultTransition=function m(u,d,s,C){O.copySnapshot(u,C),e.k.slerp(l,e.k.Identity,e.k.rotationTo(l,s.up,C.up),d),e.eB.transformQuat(u.up,s.up,l),e.eB.lerp(u.target,s.target,C.target,d),e.eB.lerp(u.position,s.position,C.position,d),u.radius=(0,r.Cc)(s.radius,C.radius,d),u.radiusMax=(0,r.Cc)(s.radiusMax,C.radiusMax,d),u.fov=(0,r.Cc)(s.fov,C.fov,d),u.fog=(0,r.Cc)(s.fog,C.fog,d)}}(t||(t={}));var A=n(4412),y=n(1372);const c=(0,e.eB)(),i=(0,e.eB)(),v=(0,e.Zb)();class O{get position(){return this.state.position}set position(l){e.eB.copy(this.state.position,l)}get up(){return this.state.up}set up(l){e.eB.copy(this.state.up,l)}get target(){return this.state.target}set target(l){e.eB.copy(this.state.target,l)}update(){const l=this.state;if(0===l.radiusMax)return!1;const m=2*Math.tan(l.fov/2)*e.eB.distance(l.position,l.target);switch(this.zoom=this.viewport.height/m,function M(I){let{radius:l,radiusMax:m,fog:d,clipFar:s,minNear:C,minFar:h}=I.state;l<.01&&(l=.01);const a=Math.max(s?l:m,h),S=e.eB.distance(I.position,I.target);let D=S-l,R=S+a;D=Math.max(Math.min(m,C),D),R=Math.max(C,R),D===R&&(R=D+.01);const p=S-a*(-(50-d)/50),E=R;I.near=D,I.far=R,I.fogNear=p,I.fogFar=E}(this),this.state.mode){case"orthographic":!function b(I){const{viewport:l,zoom:m,near:u,far:d,viewOffset:s}=I,C=-l.width/2,h=l.width/2,a=l.height/2,S=-l.height/2,D=(h-C)/(2*m),R=(a-S)/(2*m),f=(h+C)/2,p=(a+S)/2;let E=f-D,T=f+D,L=p+R,w=p-R;if(s.enabled){const Q=m/(s.width/s.fullWidth),G=m/(s.height/s.fullHeight),V=(h-C)/s.width,U=(a-S)/s.height;E+=V*(s.offsetX/Q),T=E+V*(s.width/Q),L-=U*(s.offsetY/G),w=L-U*(s.height/G)}e.$I.ortho(I.projection,E,T,L,w,u,d),e.$I.lookAt(I.view,I.position,I.target,I.up)}(this);break;case"perspective":!function _(I){const l=I.viewport.width/I.viewport.height,{near:m,far:u,viewOffset:d}=I;let s=m*Math.tan(.5*I.state.fov),C=2*s,h=l*C,a=-.5*h;d.enabled&&(a+=d.offsetX*h/d.fullWidth,s-=d.offsetY*C/d.fullHeight,h*=d.width/d.fullWidth,C*=d.height/d.fullHeight),e.$I.perspective(I.projection,a,a+h,s,s-C,m,u),e.$I.lookAt(I.view,I.position,I.target,I.up)}(this);break;default:(0,y.dr)(this.state.mode)}const u=!e.$I.areEqual(this.projection,this.prevProjection,e.p8)||!e.$I.areEqual(this.view,this.prevView,e.p8);if(u){if(e.$I.mul(this.projectionView,this.projection,this.view),!e.$I.tryInvert(this.inverseProjectionView,this.projectionView))return e.$I.copy(this.view,this.prevView),e.$I.copy(this.projection,this.prevProjection),e.$I.mul(this.projectionView,this.projection,this.view),!1;e.$I.copy(this.prevView,this.view),e.$I.copy(this.prevProjection,this.projection)}return u}setState(l,m){this.transition.apply(l,m),this.stateChanged.next(l)}getSnapshot(){return O.copySnapshot(O.createDefaultSnapshot(),this.state)}getTargetDistance(l){return O.targetDistance(l,this.state.mode,this.state.fov,this.viewport.width,this.viewport.height)}getFocus(l,m,u,d,s){var C,h;const a=Math.max(m,.01),S=this.getTargetDistance(a);e.eB.sub(this.deltaDirection,null!==(C=s?.target)&&void 0!==C?C:this.target,null!==(h=s?.position)&&void 0!==h?h:this.position),d&&e.eB.matchDirection(this.deltaDirection,d,this.deltaDirection),e.eB.setMagnitude(this.deltaDirection,this.deltaDirection,S),e.eB.sub(this.newPosition,l,this.deltaDirection);const D=O.copySnapshot(O.createDefaultSnapshot(),this.state);return D.target=e.eB.clone(l),D.radius=a,D.position=e.eB.clone(this.newPosition),u&&e.eB.matchDirection(D.up,u,D.up),D}getCenter(l,m){e.eB.sub(this.deltaDirection,this.target,this.position),e.eB.sub(this.newPosition,l,this.deltaDirection);const u=O.copySnapshot(O.createDefaultSnapshot(),this.state);return u.target=e.eB.clone(l),u.position=e.eB.clone(this.newPosition),m&&(u.radius=Math.max(m,.01)),u}getInvariantFocus(l,m,u,d){const s=Math.max(m,.01),C=this.getTargetDistance(s);e.eB.copy(this.deltaDirection,d),e.eB.setMagnitude(this.deltaDirection,this.deltaDirection,C),e.eB.sub(this.newPosition,l,this.deltaDirection);const h=O.copySnapshot(O.createDefaultSnapshot(),this.state);return h.target=e.eB.clone(l),h.radius=s,h.position=e.eB.clone(this.newPosition),e.eB.copy(h.up,u),h}focus(l,m,u,d,s){m>0&&this.setState(this.getFocus(l,m,d,s),u)}center(l,m){this.setState(this.getCenter(l),m)}project(l,m){return(0,o.$u)(l,m,this.viewport,this.projectionView)}unproject(l,m){return(0,o.IW)(l,m,this.viewport,this.inverseProjectionView)}getPixelSize(l){return this.project(v,l),this.unproject(c,v),v[0]+=1,this.unproject(i,v),e.eB.distance(c,i)}constructor(l,m=o.LM.create(0,0,128,128)){this.view=e.$I.identity(),this.projection=e.$I.identity(),this.projectionView=e.$I.identity(),this.inverseProjectionView=e.$I.identity(),this.state=O.createDefaultSnapshot(),this.viewOffset=O.ViewOffset(),this.near=1,this.far=1e4,this.fogNear=5e3,this.fogFar=1e4,this.zoom=1,this.transition=new t(this),this.stateChanged=new A.t(this.state),this.prevProjection=e.$I.identity(),this.prevView=e.$I.identity(),this.deltaDirection=(0,e.eB)(),this.newPosition=(0,e.eB)(),this.viewport=m,O.copySnapshot(this.state,l)}}var I;(I=O||(O={})).ViewOffset=function l(){return{enabled:!1,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}},I.setViewOffset=function m(a,S,D,R,f,p,E){a.fullWidth=S,a.fullHeight=D,a.offsetX=R,a.offsetY=f,a.width=p,a.height=E},I.copyViewOffset=function u(a,S){a.enabled=S.enabled,a.fullWidth=S.fullWidth,a.fullHeight=S.fullHeight,a.offsetX=S.offsetX,a.offsetY=S.offsetY,a.width=S.width,a.height=S.height},I.targetDistance=function d(a,S,D,R,f){const p=Math.max(a,.01),T=f{"use strict";n.d(Ue,{$u:()=>t,IW:()=>A,LM:()=>o});var y,e=n(4369);function o(){return o.zero()}(y=o||(o={})).zero=function c(){return{x:0,y:0,width:0,height:0}},y.create=function i(I,l,m,u){return{x:I,y:l,width:m,height:u}},y.clone=function v(I){return{...I}},y.copy=function O(I,l){return Object.assign(I,l)},y.set=function b(I,l,m,u,d){return I.x=l,I.y=m,I.width=u,I.height=d,I},y.toVec4=function _(I,l){return I[0]=l.x,I[1]=l.y,I[2]=l.width,I[3]=l.height,I},y.equals=function M(I,l){return I.x===l.x&&I.y===l.y&&I.width===l.width&&I.height===l.height};const r=(0,e.Zb)();function t(y,c,i,v){const{x:O,y:b,width:_,height:M}=i;e.Zb.set(r,c[0],c[1],c[2],1),e.Zb.transformMat4(r,r,v);const I=r[3];return 0!==I&&(r[0]/=I,r[1]/=I,r[2]/=I),y[0]=(r[0]+1)*_*.5+O,y[1]=(r[1]+1)*M*.5+b,y[2]=.5*(r[2]+1),y[3]=0===I?0:1/I,y}function A(y,c,i,v){const{x:O,y:b,width:_,height:M}=i,l=c[1]-b,m=c[2];return y[0]=2*(c[0]-O)/_-1,y[1]=2*l/M-1,y[2]=2*m-1,e.eB.transformMat4(y,y,v)}},3177:(tn,Ue,n)=>{"use strict";n.d(Ue,{mX:()=>En,H7:()=>Xt,_i:()=>ht,FN:()=>pt});var e=n(4412),o=n(9854),r=n(4369),t=n(4080),A=n(7361),y=n(190),c=n(9909),i=n(8277),v=n(4490),O=n(6115),b=n(127),_=n(2629),M=n(9137),I=n(9457),l=function(Tt){return Tt[Tt.None=0]="None",Tt[Tt.Object=1]="Object",Tt[Tt.Instance=2]="Instance",Tt[Tt.Group=3]="Group",Tt}(l||{}),m=function(Tt){return Tt[Tt.None=0]="None",Tt[Tt.Depth=1]="Depth",Tt[Tt.Mask=2]="Mask",Tt}(m||{});const u={backgroundColor:i.t.Color((0,y.Q1)(0),{description:"Background color of the 3D canvas"}),pickingAlphaThreshold:i.t.Numeric(.5,{min:0,max:1,step:.01},{description:"The minimum opacity value needed for an object to be pickable."}),interiorDarkening:i.t.Numeric(.5,{min:0,max:1,step:.01}),interiorColorFlag:i.t.Boolean(!0,{label:"Use Interior Color"}),interiorColor:i.t.Color(y.Q1.fromNormalizedRgb(.3,.3,.3)),colorMarker:i.t.Boolean(!0,{description:"Enable color marker"}),highlightColor:i.t.Color(y.Q1.fromNormalizedRgb(1,.4,.6)),selectColor:i.t.Color(y.Q1.fromNormalizedRgb(.2,1,.1)),dimColor:i.t.Color(y.Q1.fromNormalizedRgb(1,1,1)),highlightStrength:i.t.Numeric(.3,{min:0,max:1,step:.1}),selectStrength:i.t.Numeric(.3,{min:0,max:1,step:.1}),dimStrength:i.t.Numeric(0,{min:0,max:1,step:.1}),markerPriority:i.t.Select(1,[[1,"Highlight"],[2,"Select"]]),xrayEdgeFalloff:i.t.Numeric(1,{min:0,max:3,step:.1}),exposure:i.t.Numeric(1,{min:0,max:3,step:.01}),light:i.t.ObjectList({inclination:i.t.Numeric(150,{min:0,max:180,step:1}),azimuth:i.t.Numeric(320,{min:0,max:360,step:1}),color:i.t.Color(y.Q1.fromNormalizedRgb(1,1,1)),intensity:i.t.Numeric(.6,{min:0,max:5,step:.01})},Tt=>y.Q1.toHexString(Tt.color),{defaultValue:[{inclination:150,azimuth:320,color:y.Q1.fromNormalizedRgb(1,1,1),intensity:.6}]}),ambientColor:i.t.Color(y.Q1.fromNormalizedRgb(1,1,1)),ambientIntensity:i.t.Numeric(.4,{min:0,max:2,step:.01})},d=(0,r.eB)(),s=(0,r.eB)();function C(Tt,Fe){const He=Tt.length,{direction:Ye,color:ot}=Fe||{direction:new Array(3*He).fill(0),color:new Array(3*He).fill(0)};for(let rt=0;rt{var zr,lr,kr;if(Hn.state.disposed||!Hn.state.visible||!Hn.state.pickable&&"pick"===qr||!M.Q.intersectsSphere3D(Po,Hn.values.boundingSphere.ref.value))return;const[Qr,vi]=Hn.values.uLod.ref.value;if(0!==Qr||0!==vi){const{center:bi,radius:Vi}=Hn.values.boundingSphere.ref.value,Ei=I.i.distanceToPoint(So,bi);if(Ei+Vivi)return}const Ti=Hn.values.instanceGrid.ref.value.cellSize>1;Ti||Ti&&Hn.values.lodLevels?Hn.cull(So,Po,rr,He.stats):Hn.uncull();let Bi=!1;Hn.values.dLightCount.ref.value!==mn.count&&(c.IQ.update(Hn.values.dLightCount,mn.count),Bi=!0),Hn.values.dColorMarker.ref.value!==vt.colorMarker&&(c.IQ.update(Hn.values.dColorMarker,vt.colorMarker),Bi=!0),Bi&&Hn.update();const Li=Hn.getProgram(qr);if(rt.currentProgramId!==Li.id&&(Eo=!0,Li.use()),Eo&&(Li.setUniforms(Co),Li.bindTextures(tr,0),Eo=!1),"directVolume"===Hn.values.dGeometryType.ref.value){if("color"!==qr)return;rt.disable(ot.CULL_FACE),rt.frontFace(ot.CCW),3===co&&(rt.disable(ot.DEPTH_TEST),rt.depthMask(!1))}else 1===co?(rt.enable(ot.CULL_FACE),null!==(zr=Hn.values.dFlipSided)&&void 0!==zr&&zr.ref.value?(rt.frontFace(ot.CW),rt.cullFace(ot.FRONT)):(rt.frontFace(ot.CCW),rt.cullFace(ot.BACK))):2===co?(rt.enable(ot.CULL_FACE),null!==(lr=Hn.values.dFlipSided)&&void 0!==lr&&lr.ref.value?(rt.frontFace(ot.CW),rt.cullFace(ot.BACK)):(rt.frontFace(ot.CCW),rt.cullFace(ot.FRONT))):(Hn.values.uDoubleSided?Hn.values.uDoubleSided.ref.value||Hn.values.hasReflection.ref.value?rt.disable(ot.CULL_FACE):rt.enable(ot.CULL_FACE):rt.disable(ot.CULL_FACE),null!==(kr=Hn.values.dFlipSided)&&void 0!==kr&&kr.ref.value?(rt.frontFace(ot.CW),rt.cullFace(ot.FRONT)):(rt.frontFace(ot.CCW),rt.cullFace(ot.BACK)));Hn.render(qr,tr.length)},Yo=(Hn,qr,co,zr,lr)=>{(0,O.$6)(tr,"tDepth",co||Vr),c.IQ.update(jr.uModel,Hn.view),c.IQ.update(jr.uModelView,r.$I.mul(Gr,qr.view,Hn.view)),c.IQ.update(jr.uInvModelView,r.$I.invert(Ao,Gr)),c.IQ.update(jr.uModelViewProjection,r.$I.mul(vo,Gr,qr.projection)),c.IQ.update(jr.uInvModelViewProjection,r.$I.invert(Kr,vo)),c.IQ.updateIfChanged(jr.uRenderMask,zr),c.IQ.updateIfChanged(jr.uMarkingDepthTest,lr),rt.enable(ot.SCISSOR_TEST),rt.colorMask(!0,!0,!0,!0);const{x:kr,y:Qr,width:vi,height:Ti}=zt;rt.viewport(kr,Qr,vi,Ti),rt.scissor(kr,Qr,vi,Ti),Eo=!0,rt.currentRenderItemId=-1},ci=function(Hn){var qr,co,zr,lr;const kr=(0,b.qE)(Hn.values.alpha.ref.value*Hn.state.alphaFactor,0,1),Qr="on"===(null===(qr=Hn.values.dXrayShaded)||void 0===qr?void 0:qr.ref.value)||"inverted"===(null===(co=Hn.values.dXrayShaded)||void 0===co?void 0:co.ref.value);return 1===kr&&1!==Hn.values.transparencyAverage.ref.value&&"directVolume"!==Hn.values.dGeometryType.ref.value&&"fuzzy"!==(null===(zr=Hn.values.dPointStyle)||void 0===zr?void 0:zr.ref.value)&&!Qr||"opaque"===(null===(lr=Hn.values.dTransparentBackfaces)||void 0===lr?void 0:lr.ref.value)},Jo=function(Hn){var qr,co,zr;const lr=(0,b.qE)(Hn.values.alpha.ref.value*Hn.state.alphaFactor,0,1),kr="on"===(null===(qr=Hn.values.dXrayShaded)||void 0===qr?void 0:qr.ref.value)||"inverted"===(null===(co=Hn.values.dXrayShaded)||void 0===co?void 0:co.ref.value);return lr<1&&0!==lr||Hn.values.transparencyAverage.ref.value>0||"directVolume"===Hn.values.dGeometryType.ref.value||"fuzzy"===(null===(zr=Hn.values.dPointStyle)||void 0===zr?void 0:zr.ref.value)||"text"===Hn.values.dGeometryType.ref.value||"image"===Hn.values.dGeometryType.ref.value||kr},es=(Hn,qr,co)=>{_.g$&&He.timer.mark("Renderer.renderBlendedOpaque"),rt.disable(ot.BLEND),rt.enable(ot.DEPTH_TEST),rt.depthMask(!0),Yo(Hn,qr,co,1,!1);const{renderables:zr}=Hn;for(let lr=0,kr=zr.length;lr{var zr,lr;_.g$&&He.timer.mark("Renderer.renderBlendedTransparent"),Fn?rt.blendFunc(ot.ONE,ot.ONE_MINUS_SRC_ALPHA):rt.blendFuncSeparate(ot.SRC_ALPHA,ot.ONE_MINUS_SRC_ALPHA,ot.ONE,ot.ONE_MINUS_SRC_ALPHA),rt.enable(ot.BLEND),rt.enable(ot.DEPTH_TEST),rt.depthMask(!1),Yo(Hn,qr,co,2,!1);const{renderables:kr}=Hn;for(let Qr=0,vi=kr.length;Qr{rt.enable(ot.SCISSOR_TEST),rt.enable(ot.DEPTH_TEST),rt.colorMask(!0,!0,!0,!0),rt.depthMask(!0),Fn&&!qr?rt.clearColor(0,0,0,0):Hn?rt.clearColor(Vn[0],Vn[1],Vn[2],1):rt.clearColor(1,1,1,1),ot.clear(ot.COLOR_BUFFER_BIT|ot.DEPTH_BUFFER_BIT)},clearDepth:(Hn=!1)=>{rt.enable(ot.SCISSOR_TEST),Hn?(rt.colorMask(!0,!0,!0,!0),rt.clearColor(1,1,1,1),ot.clear(ot.COLOR_BUFFER_BIT|ot.DEPTH_BUFFER_BIT)):(rt.enable(ot.DEPTH_TEST),rt.depthMask(!0),ot.clear(ot.DEPTH_BUFFER_BIT))},update:(Hn,qr)=>{c.IQ.update(jr.uView,Hn.view),c.IQ.update(jr.uInvView,r.$I.invert(oo,Hn.view)),c.IQ.update(jr.uProjection,Hn.projection),c.IQ.update(jr.uInvProjection,r.$I.invert(yo,Hn.projection)),c.IQ.updateIfChanged(jr.uIsOrtho,"orthographic"===Hn.state.mode?1:0),c.IQ.update(jr.uViewOffset,Hn.viewOffset.enabled?r.ZY.set(ao,16*Hn.viewOffset.offsetX,16*Hn.viewOffset.offsetY):r.ZY.set(ao,0,0)),c.IQ.update(jr.uCameraPosition,r.eB.copy(lo,Hn.state.position)),c.IQ.update(jr.uCameraDir,r.eB.normalize(Do,r.eB.sub(Do,Hn.state.target,Hn.state.position))),c.IQ.updateIfChanged(jr.uFar,Hn.far),c.IQ.updateIfChanged(jr.uNear,Hn.near),c.IQ.updateIfChanged(jr.uFog,Hn.state.fog>0),c.IQ.updateIfChanged(jr.uFogFar,Hn.fogFar),c.IQ.updateIfChanged(jr.uFogNear,Hn.fogNear),c.IQ.updateIfChanged(jr.uTransparentBackground,Fn),M.Q.fromProjectionMatrix(Po,Hn.projectionView),I.i.copy(So,Po[5]),So.constant-=I.i.distanceToPoint(So,lo),c.IQ.update(jr.uCameraPlane,I.i.toArray(So,jr.uCameraPlane.ref.value,0)),c.IQ.updateIfChanged(jr.uMarkerAverage,qr.markerAverage)},renderPick:(Hn,qr,co,zr,lr)=>{_.g$&&He.timer.mark("Renderer.renderPick"),rt.disable(ot.BLEND),rt.enable(ot.DEPTH_TEST),rt.depthMask(!0),Yo(Hn,qr,zr,0,!1),c.IQ.updateIfChanged(jr.uPickType,lr);const{renderables:kr}=Hn;for(let Qr=0,vi=kr.length;Qr{_.g$&&He.timer.mark("Renderer.renderDepth"),rt.disable(ot.BLEND),rt.enable(ot.DEPTH_TEST),rt.depthMask(!0),Yo(Hn,qr,co,0,!1);const{renderables:zr}=Hn;for(let lr=0,kr=zr.length;lr{_.g$&&He.timer.mark("Renderer.renderDepthOpaque"),rt.disable(ot.BLEND),rt.enable(ot.DEPTH_TEST),rt.depthMask(!0),Yo(Hn,qr,co,1,!1);const{renderables:zr}=Hn;for(let lr=0,kr=zr.length;lr{_.g$&&He.timer.mark("Renderer.renderDepthTransparent"),rt.disable(ot.BLEND),rt.enable(ot.DEPTH_TEST),rt.depthMask(!0),Yo(Hn,qr,co,2,!1);const{renderables:zr}=Hn;for(let lr=0,kr=zr.length;lr{_.g$&&He.timer.mark("Renderer.renderMarkingDepth"),rt.disable(ot.BLEND),rt.enable(ot.DEPTH_TEST),rt.depthMask(!0),Yo(Hn,qr,co,0,!1),c.IQ.updateIfChanged(jr.uMarkingType,m.Depth);const{renderables:zr}=Hn;for(let lr=0,kr=zr.length;lr{_.g$&&He.timer.mark("Renderer.renderMarkingMask"),rt.disable(ot.BLEND),rt.enable(ot.DEPTH_TEST),rt.depthMask(!0),Yo(Hn,qr,co,0,!!co),c.IQ.updateIfChanged(jr.uMarkingType,m.Mask);const{renderables:zr}=Hn;for(let lr=0,kr=zr.length;lr0&&Fo(zr[lr],"marking",0);_.g$&&He.timer.markEnd("Renderer.renderMarkingMask")},renderEmissive:(Hn,qr,co)=>{_.g$&&He.timer.mark("Renderer.renderEmissive"),rt.disable(ot.BLEND),rt.enable(ot.DEPTH_TEST),rt.depthMask(!0),Yo(Hn,qr,co,1,!1);const{renderables:zr}=Hn;for(let lr=0,kr=zr.length;lr{Hn.hasOpaque&&es(Hn,qr,null),Hn.opacityAverage<1&&Si(Hn,qr,null)},renderBlendedOpaque:es,renderBlendedTransparent:Si,renderBlendedVolume:(Hn,qr,co)=>{_.g$&&He.timer.mark("Renderer.renderBlendedVolume"),rt.blendFunc(ot.ONE,ot.ONE_MINUS_SRC_ALPHA),rt.enable(ot.BLEND),rt.depthMask(!1),Yo(Hn,qr,co,2,!1);const{renderables:zr}=Hn;for(let lr=0,kr=zr.length;lr{_.g$&&He.timer.mark("Renderer.renderWboitOpaque"),rt.disable(ot.BLEND),rt.enable(ot.DEPTH_TEST),rt.depthMask(!0),Yo(Hn,qr,co,1,!1);const{renderables:zr}=Hn;for(let lr=0,kr=zr.length;lr{_.g$&&He.timer.mark("Renderer.renderWboitTransparent"),Yo(Hn,qr,co,2,!1);const{renderables:zr}=Hn;for(let lr=0,kr=zr.length;lr{_.g$&&He.timer.mark("Renderer.renderDpoitOpaque"),rt.disable(ot.BLEND),rt.enable(ot.DEPTH_TEST),rt.depthMask(!0),Yo(Hn,qr,co,1,!1);const{renderables:zr}=Hn;for(let lr=0,kr=zr.length;lr{_.g$&&He.timer.mark("Renderer.renderDpoitTransparent"),rt.enable(ot.BLEND),(0,O.$6)(tr,"tDpoitDepth",zr.depth),(0,O.$6)(tr,"tDpoitFrontColor",zr.frontColor),(0,O.$6)(tr,"tDpoitBackColor",zr.backColor),Yo(Hn,qr,co,2,!1);const{renderables:lr}=Hn;for(let kr=0,Qr=lr.length;kr{_.g$&&He.timer.mark("Renderer.renderDpoitVolume"),rt.blendFunc(ot.ONE,ot.ONE_MINUS_SRC_ALPHA),rt.enable(ot.BLEND),Yo(Hn,qr,co,2,!1);const{renderables:zr}=Hn;for(let lr=0,kr=zr.length;lr{void 0!==Hn.backgroundColor&&Hn.backgroundColor!==vt.backgroundColor&&(vt.backgroundColor=Hn.backgroundColor,y.Q1.toVec3Normalized(Vn,vt.backgroundColor),c.IQ.update(jr.uFogColor,r.eB.copy(jr.uFogColor.ref.value,Vn))),void 0!==Hn.pickingAlphaThreshold&&Hn.pickingAlphaThreshold!==vt.pickingAlphaThreshold&&(vt.pickingAlphaThreshold=Hn.pickingAlphaThreshold,c.IQ.update(jr.uPickingAlphaThreshold,vt.pickingAlphaThreshold)),void 0!==Hn.interiorDarkening&&Hn.interiorDarkening!==vt.interiorDarkening&&(vt.interiorDarkening=Hn.interiorDarkening,c.IQ.update(jr.uInteriorDarkening,vt.interiorDarkening)),void 0!==Hn.interiorColorFlag&&Hn.interiorColorFlag!==vt.interiorColorFlag&&(vt.interiorColorFlag=Hn.interiorColorFlag,c.IQ.update(jr.uInteriorColorFlag,vt.interiorColorFlag)),void 0!==Hn.interiorColor&&Hn.interiorColor!==vt.interiorColor&&(vt.interiorColor=Hn.interiorColor,c.IQ.update(jr.uInteriorColor,y.Q1.toVec3Normalized(jr.uInteriorColor.ref.value,vt.interiorColor))),void 0!==Hn.colorMarker&&Hn.colorMarker!==vt.colorMarker&&(vt.colorMarker=Hn.colorMarker),void 0!==Hn.highlightColor&&Hn.highlightColor!==vt.highlightColor&&(vt.highlightColor=Hn.highlightColor,c.IQ.update(jr.uHighlightColor,y.Q1.toVec3Normalized(jr.uHighlightColor.ref.value,vt.highlightColor))),void 0!==Hn.selectColor&&Hn.selectColor!==vt.selectColor&&(vt.selectColor=Hn.selectColor,c.IQ.update(jr.uSelectColor,y.Q1.toVec3Normalized(jr.uSelectColor.ref.value,vt.selectColor))),void 0!==Hn.dimColor&&Hn.dimColor!==vt.dimColor&&(vt.dimColor=Hn.dimColor,c.IQ.update(jr.uDimColor,y.Q1.toVec3Normalized(jr.uDimColor.ref.value,vt.dimColor))),void 0!==Hn.highlightStrength&&Hn.highlightStrength!==vt.highlightStrength&&(vt.highlightStrength=Hn.highlightStrength,c.IQ.update(jr.uHighlightStrength,vt.highlightStrength)),void 0!==Hn.selectStrength&&Hn.selectStrength!==vt.selectStrength&&(vt.selectStrength=Hn.selectStrength,c.IQ.update(jr.uSelectStrength,vt.selectStrength)),void 0!==Hn.dimStrength&&Hn.dimStrength!==vt.dimStrength&&(vt.dimStrength=Hn.dimStrength,c.IQ.update(jr.uDimStrength,vt.dimStrength)),void 0!==Hn.markerPriority&&Hn.markerPriority!==vt.markerPriority&&(vt.markerPriority=Hn.markerPriority,c.IQ.update(jr.uMarkerPriority,vt.markerPriority)),void 0!==Hn.xrayEdgeFalloff&&Hn.xrayEdgeFalloff!==vt.xrayEdgeFalloff&&(vt.xrayEdgeFalloff=Hn.xrayEdgeFalloff,c.IQ.update(jr.uXrayEdgeFalloff,vt.xrayEdgeFalloff)),void 0!==Hn.exposure&&Hn.exposure!==vt.exposure&&(vt.exposure=Hn.exposure,c.IQ.update(jr.uExposure,vt.exposure)),void 0!==Hn.light&&!(0,c.bD)(Hn.light,vt.light)&&(vt.light=Hn.light,Object.assign(mn,C(Hn.light,mn)),c.IQ.update(jr.uLightDirection,mn.direction),c.IQ.update(jr.uLightColor,mn.color)),void 0!==Hn.ambientColor&&Hn.ambientColor!==vt.ambientColor&&(vt.ambientColor=Hn.ambientColor,r.eB.scale(Yr,y.Q1.toArrayNormalized(vt.ambientColor,Yr,0),vt.ambientIntensity),c.IQ.update(jr.uAmbientColor,Yr)),void 0!==Hn.ambientIntensity&&Hn.ambientIntensity!==vt.ambientIntensity&&(vt.ambientIntensity=Hn.ambientIntensity,r.eB.scale(Yr,y.Q1.toArrayNormalized(vt.ambientColor,Yr,0),vt.ambientIntensity),c.IQ.update(jr.uAmbientColor,Yr))},setViewport:(Hn,qr,co,zr)=>{rt.viewport(Hn,qr,co,zr),rt.scissor(Hn,qr,co,zr),(Hn!==zt.x||qr!==zt.y||co!==zt.width||zr!==zt.height)&&(A.LM.set(zt,Hn,qr,co,zr),c.IQ.update(jr.uViewport,r.Zb.set(jr.uViewport.ref.value,Hn,qr,co,zr)))},setTransparentBackground:Hn=>{Fn=Hn},setDrawingBufferSize:(Hn,qr)=>{(Hn!==an[0]||qr!==an[1])&&c.IQ.update(jr.uDrawingBufferSize,r.ZY.set(an,Hn,qr))},setPixelRatio:Hn=>{c.IQ.update(jr.uPixelRatio,Hn)},setOcclusionTest:Hn=>{rr=Hn},props:vt,get stats(){return{programCount:He.stats.resourceCounts.program,shaderCount:He.stats.resourceCounts.shader,attributeCount:He.stats.resourceCounts.attribute,elementsCount:He.stats.resourceCounts.elements,framebufferCount:He.stats.resourceCounts.framebuffer,renderbufferCount:He.stats.resourceCounts.renderbuffer,textureCount:He.stats.resourceCounts.texture,vertexArrayCount:He.stats.resourceCounts.vertexArray,drawCount:St.drawCount,instanceCount:St.instanceCount,instancedDrawCount:St.instancedDrawCount}},get light(){return mn},dispose:()=>{}}};var a=n(4123);const S=t.qt,D=t.Fs,R=a.O.Trigger,f=a.O.TriggerKey,p={dragRotate:(0,a.O)([R(S.Flag.Primary,D.create())],"Rotate","Drag using ${triggers}"),dragRotateZ:(0,a.O)([R(S.Flag.Primary,D.create({shift:!0,control:!0}))],"Rotate around z-axis (roll)","Drag using ${triggers}"),dragPan:(0,a.O)([R(S.Flag.Secondary,D.create()),R(S.Flag.Primary,D.create({control:!0}))],"Pan","Drag using ${triggers}"),dragZoom:a.O.Empty,dragFocus:(0,a.O)([R(S.Flag.Forth,D.create())],"Focus","Drag using ${triggers}"),dragFocusZoom:(0,a.O)([R(S.Flag.Auxilary,D.create())],"Focus and zoom","Drag using ${triggers}"),scrollZoom:(0,a.O)([R(S.Flag.Auxilary,D.create())],"Zoom","Scroll using ${triggers}"),scrollFocus:(0,a.O)([R(S.Flag.Auxilary,D.create({shift:!0}))],"Clip","Scroll using ${triggers}"),scrollFocusZoom:a.O.Empty,keyMoveForward:(0,a.O)([f("KeyW")],"Move forward","Press ${triggers}"),keyMoveBack:(0,a.O)([f("KeyS")],"Move back","Press ${triggers}"),keyMoveLeft:(0,a.O)([f("KeyA")],"Move left","Press ${triggers}"),keyMoveRight:(0,a.O)([f("KeyD")],"Move right","Press ${triggers}"),keyMoveUp:(0,a.O)([f("KeyR")],"Move up","Press ${triggers}"),keyMoveDown:(0,a.O)([f("KeyF")],"Move down","Press ${triggers}"),keyRollLeft:(0,a.O)([f("KeyQ")],"Roll left","Press ${triggers}"),keyRollRight:(0,a.O)([f("KeyE")],"Roll right","Press ${triggers}"),keyPitchUp:(0,a.O)([f("ArrowUp",D.create({shift:!0}))],"Pitch up","Press ${triggers}"),keyPitchDown:(0,a.O)([f("ArrowDown",D.create({shift:!0}))],"Pitch down","Press ${triggers}"),keyYawLeft:(0,a.O)([f("ArrowLeft",D.create({shift:!0}))],"Yaw left","Press ${triggers}"),keyYawRight:(0,a.O)([f("ArrowRight",D.create({shift:!0}))],"Yaw right","Press ${triggers}"),boostMove:(0,a.O)([f("ShiftLeft")],"Boost move","Press ${triggers}"),enablePointerLock:(0,a.O)([f("Space",D.create({control:!0}))],"Enable pointer lock","Press ${triggers}")},E={noScroll:i.t.Boolean(!0,{isHidden:!0}),rotateSpeed:i.t.Numeric(5,{min:1,max:10,step:1}),zoomSpeed:i.t.Numeric(7,{min:1,max:15,step:1}),panSpeed:i.t.Numeric(1,{min:.1,max:5,step:.1}),moveSpeed:i.t.Numeric(.75,{min:.1,max:3,step:.1}),boostMoveFactor:i.t.Numeric(5,{min:.1,max:10,step:.1}),flyMode:i.t.Boolean(!1),animate:i.t.MappedStatic("off",{off:i.t.EmptyGroup(),spin:i.t.Group({speed:i.t.Numeric(1,{min:-20,max:20,step:1})},{description:"Spin the 3D scene around the x-axis in view space"}),rock:i.t.Group({speed:i.t.Numeric(.3,{min:-5,max:5,step:.1}),angle:i.t.Numeric(10,{min:0,max:90,step:1},{description:"How many degrees to rotate in each direction."})},{description:"Rock the 3D scene around the x-axis in view space"})}),staticMoving:i.t.Boolean(!0,{isHidden:!0}),dynamicDampingFactor:i.t.Numeric(.2,{},{isHidden:!0}),minDistance:i.t.Numeric(.01,{},{isHidden:!0}),maxDistance:i.t.Numeric(1e150,{},{isHidden:!0}),gestureScaleFactor:i.t.Numeric(1,{},{isHidden:!0}),maxWheelDelta:i.t.Numeric(.02,{},{isHidden:!0}),bindings:i.t.Value(p,{isHidden:!0}),autoAdjustMinMaxDistance:i.t.MappedStatic("on",{off:i.t.EmptyGroup(),on:i.t.Group({minDistanceFactor:i.t.Numeric(0),minDistancePadding:i.t.Numeric(5),maxDistanceFactor:i.t.Numeric(10),maxDistanceMin:i.t.Numeric(20)})},{isHidden:!0})};var T;(T||(T={})).create=function Fe(He,Ye,ot,rt={}){const St={...i.t.getDefaultValues(E),...rt,bindings:{...p,...rt.bindings}},vt=St.bindings,mn=A.LM.clone(Ye.viewport);let zt=!1;const an=He.drag.subscribe(function et({x:hr,y:Wr,pageX:no,pageY:zo,buttons:Di,modifiers:zi,isStart:Ki}){const Mi=sr(hr,Wr);if(Ki&&Mi||!Ki&&!yo)return;yo=!0,Gi();const ds=a.O.match(vt.dragRotate,Di,zi),he=a.O.match(vt.dragRotateZ,Di,zi),fe=a.O.match(vt.dragPan,Di,zi),ze=a.O.match(vt.dragZoom,Di,zi),Ze=a.O.match(vt.dragFocus,Di,zi),it=a.O.match(vt.dragFocusZoom,Di,zi);ti(no,zo),function qi(hr,Wr){r.ZY.set(mi,(hr-mn.x)/mn.width,(Wr-mn.y)/mn.height)}(no,zo);const Rt=He.pixelRatio,X=(hr*Rt-mn.width/2-mn.x)/mn.width,pe=-(He.height-Wr*Rt-mn.height/2-mn.y)/mn.height;if(Ki&&(ds&&(r.ZY.copy(lo,Oi),r.ZY.copy(Do,lo)),he&&(r.ZY.set(Yr,X,pe),r.ZY.copy(Po,Yr)),(ze||it)&&(r.ZY.copy(Fo,mi),r.ZY.copy(ei,Fo)),Ze&&(r.ZY.copy(Yo,mi),r.ZY.copy(ci,Yo)),fe&&(r.ZY.copy(Jo,mi),r.ZY.copy(Fi,Jo))),ds&&r.ZY.copy(lo,Oi),he&&r.ZY.set(Yr,X,pe),(ze||it)&&r.ZY.copy(ei,mi),Ze&&r.ZY.copy(ci,mi),it){const De=r.eB.distance(Ye.state.position,Ye.state.target);Ye.setState({radius:De/5})}fe&&r.ZY.copy(Fi,mi)}),Vn=He.interactionEnd.subscribe(function at(){yo=!1}),Fn=He.wheel.subscribe(function Et({x:hr,y:Wr,spinX:no,spinY:zo,dz:Di,buttons:zi,modifiers:Ki}){if(sr(hr,Wr))return;let Mi=(0,v.TY)(.075*no,.075*zo,1e-4*Di);Mi<-St.maxWheelDelta?Mi=-St.maxWheelDelta:Mi>St.maxWheelDelta&&(Mi=St.maxWheelDelta),a.O.match(vt.scrollZoom,zi,Ki)&&(ei[1]+=Mi),a.O.match(vt.scrollFocus,zi,Ki)&&(ci[1]+=Mi)}),rr=He.pinch.subscribe(function Nt({fractionDelta:hr,buttons:Wr,modifiers:no}){a.O.match(vt.scrollZoom,Wr,no)&&(yo=!0,ei[1]+=St.gestureScaleFactor*hr)}),Vr=He.gesture.subscribe(function qt({deltaScale:hr}){yo=!0,ei[1]+=St.gestureScaleFactor*hr}),tr=He.keyDown.subscribe(function Un({modifiers:hr,code:Wr,key:no,x:zo,y:Di}){sr(zo,Di)||(a.O.matchKey(vt.keyMoveForward,Wr,hr,no)?Ht.moveForward=1:a.O.matchKey(vt.keyMoveBack,Wr,hr,no)?Ht.moveBack=1:a.O.matchKey(vt.keyMoveLeft,Wr,hr,no)?Ht.moveLeft=1:a.O.matchKey(vt.keyMoveRight,Wr,hr,no)?Ht.moveRight=1:a.O.matchKey(vt.keyMoveUp,Wr,hr,no)?Ht.moveUp=1:a.O.matchKey(vt.keyMoveDown,Wr,hr,no)?Ht.moveDown=1:a.O.matchKey(vt.keyRollLeft,Wr,hr,no)?Ht.rollLeft=1:a.O.matchKey(vt.keyRollRight,Wr,hr,no)?Ht.rollRight=1:a.O.matchKey(vt.keyPitchUp,Wr,hr,no)?Ht.pitchUp=1:a.O.matchKey(vt.keyPitchDown,Wr,hr,no)?Ht.pitchDown=1:a.O.matchKey(vt.keyYawLeft,Wr,hr,no)?Ht.yawLeft=1:a.O.matchKey(vt.keyYawRight,Wr,hr,no)&&(Ht.yawRight=1),a.O.matchKey(vt.boostMove,Wr,hr,no)&&(Ht.boostMove=1),a.O.matchKey(vt.enablePointerLock,Wr,hr,no)&&He.requestPointerLock(mn))}),Tr=He.keyUp.subscribe(function vn({modifiers:hr,code:Wr,key:no,x:zo,y:Di}){var zi,Ki,Mi,ds,he,fe,ze,Ze,it,Rt,X,pe;if(sr(zo,Di))return;let De=!1;Wr.startsWith("Alt")?(De=!0,hr.alt=!0):Wr.startsWith("Shift")?(De=!0,hr.shift=!0):Wr.startsWith("Control")?(De=!0,hr.control=!0):Wr.startsWith("Meta")&&(De=!0,hr.meta=!0);const Ee=[];De?(Ht.moveForward&&Ee.push((null===(zi=vt.keyMoveForward.triggers[0])||void 0===zi?void 0:zi.code)||""),Ht.moveBack&&Ee.push((null===(Ki=vt.keyMoveBack.triggers[0])||void 0===Ki?void 0:Ki.code)||""),Ht.moveLeft&&Ee.push((null===(Mi=vt.keyMoveLeft.triggers[0])||void 0===Mi?void 0:Mi.code)||""),Ht.moveRight&&Ee.push((null===(ds=vt.keyMoveRight.triggers[0])||void 0===ds?void 0:ds.code)||""),Ht.moveUp&&Ee.push((null===(he=vt.keyMoveUp.triggers[0])||void 0===he?void 0:he.code)||""),Ht.moveDown&&Ee.push((null===(fe=vt.keyMoveDown.triggers[0])||void 0===fe?void 0:fe.code)||""),Ht.rollLeft&&Ee.push((null===(ze=vt.keyRollLeft.triggers[0])||void 0===ze?void 0:ze.code)||""),Ht.rollRight&&Ee.push((null===(Ze=vt.keyRollRight.triggers[0])||void 0===Ze?void 0:Ze.code)||""),Ht.pitchUp&&Ee.push((null===(it=vt.keyPitchUp.triggers[0])||void 0===it?void 0:it.code)||""),Ht.pitchDown&&Ee.push((null===(Rt=vt.keyPitchDown.triggers[0])||void 0===Rt?void 0:Rt.code)||""),Ht.yawLeft&&Ee.push((null===(X=vt.keyYawLeft.triggers[0])||void 0===X?void 0:X.code)||""),Ht.yawRight&&Ee.push((null===(pe=vt.keyYawRight.triggers[0])||void 0===pe?void 0:pe.code)||"")):Ee.push(Wr);for(const qe of Ee)a.O.matchKey(vt.keyMoveForward,qe,hr,no)?Ht.moveForward=0:a.O.matchKey(vt.keyMoveBack,qe,hr,no)?Ht.moveBack=0:a.O.matchKey(vt.keyMoveLeft,qe,hr,no)?Ht.moveLeft=0:a.O.matchKey(vt.keyMoveRight,qe,hr,no)?Ht.moveRight=0:a.O.matchKey(vt.keyMoveUp,qe,hr,no)?Ht.moveUp=0:a.O.matchKey(vt.keyMoveDown,qe,hr,no)?Ht.moveDown=0:a.O.matchKey(vt.keyRollLeft,qe,hr,no)?Ht.rollLeft=0:a.O.matchKey(vt.keyRollRight,qe,hr,no)?Ht.rollRight=0:a.O.matchKey(vt.keyPitchUp,qe,hr,no)?Ht.pitchUp=0:a.O.matchKey(vt.keyPitchDown,qe,hr,no)?Ht.pitchDown=0:a.O.matchKey(vt.keyYawLeft,qe,hr,no)?Ht.yawLeft=0:a.O.matchKey(vt.keyYawRight,qe,hr,no)&&(Ht.yawRight=0);a.O.matchKey(vt.boostMove,Wr,hr,no)&&(Ht.boostMove=0)}),oo=He.move.subscribe(function Cn({movementX:hr,movementY:Wr}){if(!He.pointerLock||void 0===hr||void 0===Wr)return;const no=.5*mn.width-mn.x,zo=.5*mn.height-mn.y;r.ZY.copy(Do,ti(no,zo)),r.ZY.copy(lo,ti(hr+no,Wr+zo))}),Gr=He.lock.subscribe(function Rr(hr){hr?nr():pr()}),Ao=He.leave.subscribe(function Uo(){!function mo(){Ht.moveForward=0,Ht.moveBack=0,Ht.moveLeft=0,Ht.moveRight=0,Ht.moveUp=0,Ht.moveDown=0,Ht.rollLeft=0,Ht.rollRight=0,Ht.pitchUp=0,Ht.pitchDown=0,Ht.yawLeft=0,Ht.yawRight=0,Ht.boostMove=0}()});let yo=!1;const vo=(0,r.eB)(),Kr=(0,r.eB)(),Do=(0,r.ZY)(),lo=(0,r.ZY)(),So=(0,r.eB)();let ao=0;const Po=(0,r.ZY)(),Yr=(0,r.ZY)();let jr=0,Co=0,Eo=0;const Fo=(0,r.ZY)(),ei=(0,r.ZY)(),Yo=(0,r.ZY)(),ci=(0,r.ZY)(),Jo=(0,r.ZY)(),Fi=(0,r.ZY)(),hi=r.eB.clone(Ye.target),No=r.eB.clone(Ye.position),Ci=r.eB.clone(Ye.up),mi=(0,r.ZY)(),Oi=(0,r.ZY)();function ti(hr,Wr){return r.ZY.set(Oi,(hr-.5*mn.width-mn.x)/(.5*mn.width),(mn.height+2*(mn.y-Wr))/mn.width)}function es(){return St.rotateSpeed*He.pixelRatio*(He.width/He.height||1)}const Si=(0,r.eB)(),Pi=(0,r.k)(),ni=(0,r.eB)(),gi=(0,r.eB)(),Wi=(0,r.eB)(),Ri=(0,r.eB)(),Hn=(0,r.k)(),qr=(0,r.eB)(),zr=(0,r.k)(),lr=(0,r.eB)(),Qr=(0,r.k)(),vi=(0,r.eB)(),bi=(0,r.ZY)(),Vi=(0,r.eB)(),Ei=(0,r.eB)(),Ht={moveUp:0,moveDown:0,moveLeft:0,moveRight:0,moveForward:0,moveBack:0,pitchUp:0,pitchDown:0,yawLeft:0,yawRight:0,rollLeft:0,rollRight:0,boostMove:0},Gn=(0,r.eB)(),ar=(0,r.eB)();function ur(){const hr=Math.min(Math.max(1e3*Ye.state.radiusMax,.01),St.maxDistance);r.eB.squaredMagnitude(Kr)>hr*hr&&(r.eB.setMagnitude(Kr,Kr,hr),r.eB.add(Ye.position,Ye.target,Kr),r.ZY.copy(Fo,ei),r.ZY.copy(Yo,ci)),r.eB.squaredMagnitude(Kr)mn.x+mn.width||He.height-Wr>mn.y+mn.height||hr0&&("spin"===St.animate.name?function fo(hr){if("spin"!==St.animate.name||0===St.animate.params.speed||yo)return;const Wr=St.animate.params.speed/1e3;ri[0]=60*Math.min(Math.abs(hr),125)/1e3*Wr,r.ZY.add(lo,Do,ri)}(Wr):"rock"===St.animate.name&&function rs(hr){if("rock"!==St.animate.name||0===St.animate.params.speed||yo)return;const Wr=hr/1e3*St.animate.params.speed,no=(0,v.pu)(St.animate.params.angle)/es(),zo=Math.sin(Lo*Math.PI*2)*no,Di=Math.sin((Lo+Wr)*Math.PI*2)*no;Ni[0]=Di-zo,r.ZY.add(lo,Do,Ni),Lo+=Wr,Lo>=1&&(Lo=0)}(Wr)),r.eB.sub(Kr,Ye.position,Ye.target),function Qi(){const hr=lo[0]-Do[0],Wr=lo[1]-Do[1];r.eB.set(Ri,hr,Wr,0);const no=r.eB.magnitude(Ri)*es();no?(r.eB.sub(Kr,Ye.position,Ye.target),r.eB.normalize(ni,Kr),r.eB.normalize(gi,Ye.up),r.eB.normalize(Wi,r.eB.cross(Wi,gi,ni)),r.eB.setMagnitude(gi,gi,Wr),r.eB.setMagnitude(Wi,Wi,hr),r.eB.add(Ri,gi,Wi),r.eB.normalize(Si,r.eB.cross(Si,Ri,Kr)),r.k.setAxisAngle(Pi,Si,no),r.eB.transformQuat(Kr,Kr,Pi),r.eB.transformQuat(Ye.up,Ye.up,Pi),r.eB.copy(So,Si),ao=no):!St.staticMoving&&ao&&(ao*=Math.sqrt(1-St.dynamicDampingFactor),r.eB.sub(Kr,Ye.position,Ye.target),r.k.setAxisAngle(Pi,So,ao),r.eB.transformQuat(Kr,Kr,Pi),r.eB.transformQuat(Ye.up,Ye.up,Pi)),r.ZY.copy(Do,lo)}(),function co(){const hr=(Ht.rollRight-Ht.rollLeft)/45,Wr=(Yr[0]-Po[0])*-Math.sign(Yr[1]),no=(Yr[1]-Po[1])*-Math.sign(Yr[0]),zo=-St.rotateSpeed*(-Wr+no)+hr;zo?(r.eB.normalize(qr,Kr),r.k.setAxisAngle(Hn,qr,zo),r.eB.transformQuat(Ye.up,Ye.up,Hn),jr=zo):!St.staticMoving&&jr&&(jr*=Math.sqrt(1-St.dynamicDampingFactor),r.eB.normalize(qr,Kr),r.k.setAxisAngle(Hn,qr,jr),r.eB.transformQuat(Ye.up,Ye.up,Hn)),r.ZY.copy(Po,Yr)}(),function kr(){const Wr=(Ht.pitchUp-Ht.pitchDown)/(St.flyMode?360:90)*-St.rotateSpeed;Wr?(r.eB.cross(lr,Kr,Ye.up),r.eB.normalize(lr,lr),r.k.setAxisAngle(zr,lr,Wr),r.eB.transformQuat(Kr,Kr,zr),r.eB.transformQuat(Ye.up,Ye.up,zr),Co=Wr):!St.staticMoving&&Co&&(Co*=Math.sqrt(1-St.dynamicDampingFactor),r.eB.cross(lr,Kr,Ye.up),r.eB.normalize(lr,lr),r.k.setAxisAngle(zr,lr,Co),r.eB.transformQuat(Kr,Kr,zr),r.eB.transformQuat(Ye.up,Ye.up,zr))}(),function Ti(){const Wr=(Ht.yawRight-Ht.yawLeft)/(St.flyMode?360:90)*-St.rotateSpeed;Wr?(r.eB.normalize(vi,Ye.up),r.k.setAxisAngle(Qr,vi,Wr),r.eB.transformQuat(Kr,Kr,Qr),r.eB.transformQuat(Ye.up,Ye.up,Qr),Eo=Wr):!St.staticMoving&&Eo&&(Eo*=Math.sqrt(1-St.dynamicDampingFactor),r.eB.normalize(vi,Ye.up),r.k.setAxisAngle(Qr,vi,Eo),r.eB.transformQuat(Kr,Kr,Qr),r.eB.transformQuat(Ye.up,Ye.up,Qr))}(),function Bi(){const hr=1+(ei[1]-Fo[1])*St.zoomSpeed;1!==hr&&hr>0&&r.eB.scale(Kr,Kr,hr),St.staticMoving?r.ZY.copy(Fo,ei):Fo[1]+=(ei[1]-Fo[1])*St.dynamicDampingFactor}(),function Li(){const hr=(ci[1]-Yo[1])*St.zoomSpeed;if(0!==hr){const Wr=Math.max(1,Ye.state.radius+Ye.state.radius*hr);Ye.setState({radius:Wr})}St.staticMoving?r.ZY.copy(Yo,ci):Yo[1]+=(ci[1]-Yo[1])*St.dynamicDampingFactor}(),function ln(){if(r.ZY.sub(bi,r.ZY.copy(bi,Fi),Jo),r.ZY.squaredMagnitude(bi)){const hr=He.pixelRatio*St.panSpeed;bi[0]*=1/Ye.zoom*Ye.viewport.width*hr,bi[1]*=1/Ye.zoom*Ye.viewport.height*hr,r.eB.cross(Ei,r.eB.copy(Ei,Kr),Ye.up),r.eB.setMagnitude(Ei,Ei,bi[0]),r.eB.setMagnitude(Vi,Ye.up,bi[1]),r.eB.add(Ei,Ei,Vi),r.eB.add(Ye.position,Ye.position,Ei),r.eB.add(Ye.target,Ye.target,Ei),St.staticMoving?r.ZY.copy(Jo,Fi):(r.ZY.sub(bi,Fi,Jo),r.ZY.scale(bi,bi,St.dynamicDampingFactor),r.ZY.add(Jo,Jo,bi))}}(),r.eB.add(Ye.position,Ye.target,Kr),ur(),Jn>0&&function kn(hr){r.eB.sub(ar,Ye.position,Ye.target);const Wr=Math.max(Ye.state.minNear,St.minDistance);r.eB.setMagnitude(ar,ar,Wr);const no=.06*hr*St.moveSpeed*(1===Ht.boostMove?St.boostMoveFactor:1);if(1===Ht.moveForward&&(r.eB.normalize(Gn,ar),r.eB.scaleAndSub(Ye.position,Ye.position,Gn,no),(St.flyMode||He.pointerLock)&&r.eB.sub(Ye.target,Ye.position,ar)),1===Ht.moveBack&&(r.eB.normalize(Gn,ar),r.eB.scaleAndAdd(Ye.position,Ye.position,Gn,no),(St.flyMode||He.pointerLock)&&r.eB.sub(Ye.target,Ye.position,ar)),1===Ht.moveLeft&&(r.eB.cross(Gn,ar,Ye.up),r.eB.normalize(Gn,Gn),St.flyMode||He.pointerLock?(r.eB.scaleAndAdd(Ye.position,Ye.position,Gn,no),r.eB.sub(Ye.target,Ye.position,ar)):(r.eB.scaleAndSub(Ye.position,Ye.position,Gn,no),r.eB.sub(Ye.target,Ye.position,Kr))),1===Ht.moveRight&&(r.eB.cross(Gn,ar,Ye.up),r.eB.normalize(Gn,Gn),St.flyMode||He.pointerLock?(r.eB.scaleAndSub(Ye.position,Ye.position,Gn,no),r.eB.sub(Ye.target,Ye.position,ar)):(r.eB.scaleAndAdd(Ye.position,Ye.position,Gn,no),r.eB.sub(Ye.target,Ye.position,Kr))),1===Ht.moveUp&&(r.eB.normalize(Gn,Ye.up),St.flyMode||He.pointerLock?(r.eB.scaleAndAdd(Ye.position,Ye.position,Gn,no),r.eB.sub(Ye.target,Ye.position,ar)):(r.eB.scaleAndSub(Ye.position,Ye.position,Gn,no),r.eB.sub(Ye.target,Ye.position,Kr))),1===Ht.moveDown&&(r.eB.normalize(Gn,Ye.up),St.flyMode||He.pointerLock?(r.eB.scaleAndSub(Ye.position,Ye.position,Gn,no),r.eB.sub(Ye.target,Ye.position,ar)):(r.eB.scaleAndAdd(Ye.position,Ye.position,Gn,no),r.eB.sub(Ye.target,Ye.position,Kr))),St.flyMode||He.pointerLock){const zo=r.eB.distance(Ye.position,ot.boundingSphereVisible.center);Ye.setState({minFar:zo+ot.boundingSphereVisible.radius})}}(Math.min(Wr,250)),r.eB.sub(Kr,Ye.position,Ye.target),ur(),r.eB.squaredDistance(vo,Ye.position)>r.p8&&r.eB.copy(vo,Ye.position),Jn=hr}function nr(){r.eB.sub(ar,Ye.position,Ye.target);const hr=Math.max(Ye.state.minNear,St.minDistance);r.eB.setMagnitude(ar,ar,hr),r.eB.sub(Ye.target,Ye.position,ar);const Wr=r.eB.distance(Ye.position,ot.boundingSphereVisible.center);Ye.setState({minFar:Wr+ot.boundingSphereVisible.radius})}function pr(){const{center:hr,radius:Wr}=ot.boundingSphereVisible;if(r.eB.distance(Ye.position,hr)>Wr){const zo=Ye.getFocus(hr,Wr);Ye.setState({...zo,minFar:0})}else Ye.setState({minFar:0,radius:ot.boundingSphereVisible.radius})}const ri=r.ZY.create(.005,0);let Lo=0;const Ni=r.ZY.create(.005,0);function Gi(){Lo=0}return{viewport:mn,get isAnimating(){return"off"!==St.animate.name},get isMoving(){return 1===Ht.moveForward||1===Ht.moveBack||1===Ht.moveLeft||1===Ht.moveRight||1===Ht.moveUp||1===Ht.moveDown||1===Ht.rollLeft||1===Ht.rollRight||1===Ht.pitchUp||1===Ht.pitchDown||1===Ht.yawLeft||1===Ht.yawRight},get props(){return St},setProps:hr=>{var Wr;"rock"===(null===(Wr=hr.animate)||void 0===Wr?void 0:Wr.name)&&"rock"!==St.animate.name&&Gi(),void 0!==hr.flyMode&&hr.flyMode!==St.flyMode&&(hr.flyMode?nr():pr()),Object.assign(St,hr),Object.assign(vt,hr.bindings)},start:function _o(hr){Jn=-1,Br(hr)},update:Br,reset:function st(){r.eB.copy(Ye.target,hi),r.eB.copy(Ye.position,No),r.eB.copy(Ye.up,Ci),r.eB.sub(Kr,Ye.position,Ye.target),r.eB.copy(vo,Ye.position)},dispose:function qo(){zt||(zt=!0,an.unsubscribe(),Fn.unsubscribe(),rr.unsubscribe(),Vr.unsubscribe(),Vn.unsubscribe(),tr.unsubscribe(),Tr.unsubscribe(),oo.unsubscribe(),Gr.unsubscribe(),Ao.unsubscribe())}}};var L=n(6349),w=n(2443),Q=n(4536),G=n(3246),V=n(5276),U=n(8353),N=n(573),k=n(4439),H=n(9283),$=n(5384),J=n(2745),W=n(9132),te=n(542);const de={sceneBoundingSpheres:i.t.Boolean(!1,{description:"Show full scene bounding spheres."}),visibleSceneBoundingSpheres:i.t.Boolean(!1,{description:"Show visible scene bounding spheres."}),objectBoundingSpheres:i.t.Boolean(!1,{description:"Show bounding spheres of visible render objects."}),instanceBoundingSpheres:i.t.Boolean(!1,{description:"Show bounding spheres of visible instances."})};class ye{constructor(Fe,He,Ye){this.objectsData=new Map,this.instancesData=new Map,this.scene=Q.Z.create(Fe,"blended"),this.parent=He,this._props={...i.t.getDefaultValues(de),...Ye}}update(){const Fe=j(this.scene,this.parent.boundingSphere,this.sceneData,J.s.lightgrey,q);Fe&&(this.sceneData=Fe);const He=j(this.scene,this.parent.boundingSphereVisible,this.visibleSceneData,J.s.black,Y);He&&(this.visibleSceneData=He),this.parent.forEach((Ye,ot)=>{const rt=this.objectsData.get(ot),St=j(this.scene,Ye.values.boundingSphere.ref.value,rt,J.s.tomato,ee);St&&this.objectsData.set(ot,St);const vt=this.instancesData.get(ot),mn=j(this.scene,Ye.values.invariantBoundingSphere.ref.value,vt,J.s.skyblue,g,{aTransform:ot.values.aTransform,matrix:ot.values.matrix,transform:ot.values.transform,extraTransform:ot.values.extraTransform,uInstanceCount:ot.values.uInstanceCount,instanceCount:ot.values.instanceCount,aInstance:ot.values.aInstance,hasReflection:ot.values.hasReflection,instanceGrid:ot.values.instanceGrid});mn&&this.instancesData.set(ot,mn)}),this.objectsData.forEach((Ye,ot)=>{this.parent.has(ot)||(this.scene.remove(Ye.renderObject),this.objectsData.delete(ot))}),this.instancesData.forEach((Ye,ot)=>{this.parent.has(ot)||(this.scene.remove(Ye.renderObject),this.instancesData.delete(ot))}),this.scene.update(void 0,!1),this.scene.commit()}syncVisibility(){this.sceneData&&(this.sceneData.renderObject.state.visible=this._props.sceneBoundingSpheres),this.visibleSceneData&&(this.visibleSceneData.renderObject.state.visible=this._props.visibleSceneBoundingSpheres),this.parent.forEach((Fe,He)=>{const Ye=this.objectsData.get(He);Ye&&(Ye.renderObject.state.visible=He.state.visible&&this._props.objectBoundingSpheres);const ot=this.instancesData.get(He);ot&&(ot.renderObject.state.visible=He.state.visible&&this._props.instanceBoundingSpheres)})}clear(){this.sceneData=void 0,this.objectsData.clear(),this.scene.clear()}get isEnabled(){return this._props.sceneBoundingSpheres||this._props.visibleSceneBoundingSpheres||this._props.objectBoundingSpheres||this._props.instanceBoundingSpheres}get props(){return this._props}setProps(Fe){Object.assign(this._props,Fe),this.isEnabled&&this.update()}}function j(Tt,Fe,He,Ye,ot,rt){if(!He||!$.f8.equals(He.boundingSphere,Fe)){const St=function Z(Tt,Fe){const Ye=(0,W.J)(2),ot=N.P.createState(Ye,Ye/2,Fe);if(Tt.radius&&((0,k.X)(ot,Tt.center,Tt.radius,2),$.f8.hasExtrema(Tt)))for(const rt of Tt.extrema)(0,k.X)(ot,rt,1,0);return N.P.getMesh(ot)}(Fe,He&&He.mesh),vt=He?He.renderObject:function _e(Tt,Fe,He,Ye){const ot=H.e.Utils.createValuesSimple(Tt,{alpha:.1,doubleSided:!1,cellSize:0,batchSize:0},Fe,1,Ye);return(0,U.o)("mesh",ot,{disposed:!1,visible:!0,alphaFactor:1,pickable:!1,colorOnly:!1,opaque:!1,writeDepth:!1},He)}(St,Ye,ot,rt);return He?c.IQ.updateIfChanged(vt.values.drawCount,te.V.getDrawCount(St)):Tt.add(vt),{boundingSphere:$.f8.clone(Fe),renderObject:vt,mesh:St}}}const q=(0,U.Q0)(),Y=(0,U.Q0)(),ee=(0,U.Q0)(),g=(0,U.Q0)();var xe=n(9986),le=n(8956),Ae=n(9136),Be=function(Tt){return Tt[Tt.Move=0]="Move",Tt[Tt.Click=1]="Click",Tt[Tt.Drag=2]="Drag",Tt}(Be||{});const Ce=(0,r.eB)(),Re=(0,r.eB)(),ke=(0,r.eB)(),we={maxFps:i.t.Numeric(30,{min:10,max:60,step:10}),preferAtomPixelPadding:i.t.Numeric(3,{min:0,max:20,step:1},{description:"Number of extra pixels at which to prefer atoms over bonds."})};class Oe{setProps(Fe){Object.assign(this.props,Fe)}identify(Fe,He){const Ye=this.startX!==this.endX||this.startY!==this.endY||this.input.pointerLock&&!this.controls.isMoving;if(Fe===Be.Drag)return void(Ye&&!this.outsideViewport(this.startX,this.startY)&&(this.events.drag.next({current:this.prevLoci,buttons:this.buttons,button:this.button,modifiers:this.modifiers,pageStart:r.ZY.create(this.startX,this.startY),pageEnd:r.ZY.create(this.endX,this.endY)}),this.startX=this.endX,this.startY=this.endY));if(Ye){const rt=this.canvasIdentify(this.endX,this.endY);this.id=rt?.id,this.position=rt?.position,this.startX=this.endX,this.startY=this.endY}if(Fe===Be.Click){const rt=this.getLoci(this.id,this.position);return this.events.click.next({current:rt,buttons:this.buttons,button:this.button,modifiers:this.modifiers,page:r.ZY.create(this.endX,this.endY),position:this.position}),void(this.prevLoci=rt)}if(!this.inside||this.currentIdentifyT!==He||!Ye||this.outsideViewport(this.endX,this.endY))return;const ot=this.getLoci(this.id,this.position);this.events.hover.next({current:ot,buttons:this.buttons,button:this.button,modifiers:this.modifiers,page:r.ZY.create(this.endX,this.endY),position:this.position}),this.prevLoci=ot}tick(Fe){this.inside&&Fe-this.prevT>1e3/this.props.maxFps&&(this.prevT=Fe,this.currentIdentifyT=Fe,this.identify(this.isInteracting?Be.Drag:Be.Move,Fe))}leave(){this.inside=!1,w.YL.Loci.isEmpty(this.prevLoci)||(this.prevLoci=w.YL.Loci.Empty,this.events.hover.next({current:this.prevLoci,buttons:this.buttons,button:this.button,modifiers:this.modifiers}))}move(Fe,He,Ye,ot,rt){this.inside=!0,this.buttons=Ye,this.button=ot,this.modifiers=rt,this.endX=Fe,this.endY=He}click(Fe,He,Ye,ot,rt){this.endX=Fe,this.endY=He,this.buttons=Ye,this.button=ot,this.modifiers=rt,this.identify(Be.Click,0)}drag(Fe,He,Ye,ot,rt){this.endX=Fe,this.endY=He,this.buttons=Ye,this.button=ot,this.modifiers=rt,this.identify(Be.Drag,0)}modify(Fe){t.Fs.areEqual(Fe,this.modifiers)||(this.modifiers=Fe,this.events.hover.next({current:this.prevLoci,buttons:this.buttons,button:this.button,modifiers:this.modifiers,page:r.ZY.create(this.endX,this.endY),position:this.position}))}outsideViewport(Fe,He){const{input:Ye,camera:{viewport:ot}}=this;return He*=Ye.pixelRatio,(Fe*=Ye.pixelRatio)>ot.x+ot.width||Ye.height-He>ot.y+ot.height||Fe{this.isInteracting=!0,this.drag(vt,mn,zt,an,Vn)}),Ye.move.subscribe(({x:vt,y:mn,inside:zt,buttons:an,button:Vn,modifiers:Fn,onElement:rr})=>{if(zt&&!this.isInteracting){if(!rr)return void this.leave();this.move(vt,mn,an,Vn,Fn)}}),Ye.leave.subscribe(()=>{this.leave()}),Ye.click.subscribe(({x:vt,y:mn,buttons:zt,button:an,modifiers:Vn})=>{this.outsideViewport(vt,mn)||this.click(vt,mn,zt,an,Vn)}),Ye.interactionEnd.subscribe(()=>{this.isInteracting=!1}),Ye.modifiers.subscribe(vt=>{this.modify(vt)})}}var Se=n(3099),Ve=n(9007),Ne=n(4511),K=n(2897),ne=n(4143),be=n(9421),Te=n(9387);const ue={...Ve.du,tColor:(0,Ne.$G)("texture","rgba","ubyte","nearest"),uTexSize:(0,Ne.w5)("v2"),uWeight:(0,Ne.w5)("f")},re=(0,K.NG)("compose",Te.e,"\nprecision highp float;\nprecision highp sampler2D;\n\nuniform sampler2D tColor;\nuniform vec2 uTexSize;\nuniform float uWeight;\n\nvoid main() {\n vec2 coords = gl_FragCoord.xy / uTexSize;\n gl_FragColor = texture2D(tColor, coords) * uWeight;\n}\n"),ce={mode:i.t.Select("temporal",[["off","Off"],["on","On"],["temporal","Temporal"]]),sampleLevel:i.t.Numeric(2,{min:0,max:5,step:1},{description:"Take level^2 samples."}),reduceFlicker:i.t.Boolean(!0,{description:'Reduce flicker in "temporal" mode.'})};class se{static isEnabled(Fe){return"off"!==Fe.mode}constructor(Fe,He){this.webgl=Fe,this.drawPass=He;const{colorBufferFloat:Ye,textureFloat:ot,colorBufferHalfFloat:rt,textureHalfFloat:St}=Fe.extensions,vt=He.colorTarget.getWidth(),mn=He.colorTarget.getHeight();this.colorTarget=Fe.createRenderTarget(vt,mn,!1),this.composeTarget=Fe.createRenderTarget(vt,mn,!1,rt&&St?"fp16":Ye&&ot?"float32":"uint8"),this.holdTarget=Fe.createRenderTarget(vt,mn,!1),this.compose=function ve(Tt,Fe){const He={...Ve.OM,tColor:c.IQ.create(Fe),uTexSize:c.IQ.create(r.ZY.create(Fe.getWidth(),Fe.getHeight())),uWeight:c.IQ.create(1)},Ye={...ue},ot=(0,ne.$h)(Tt,"triangles",re,Ye,He);return(0,be._)(ot,He)}(Fe,He.colorTarget.texture)}syncSize(){const Fe=this.drawPass.colorTarget.getWidth(),He=this.drawPass.colorTarget.getHeight(),[Ye,ot]=this.compose.values.uTexSize.ref.value;(Fe!==Ye||He!==ot)&&(this.colorTarget.setSize(Fe,He),this.composeTarget.setSize(Fe,He),this.holdTarget.setSize(Fe,He),c.IQ.update(this.compose.values.uTexSize,r.ZY.set(this.compose.values.uTexSize.ref.value,Fe,He)))}render(Fe,He,Ye,ot,rt){return"temporal"!==Ye.multiSample.mode||rt?(this.renderMultiSample(He,ot,Ye),-2):this.renderTemporalMultiSample(Fe,He,Ye,ot)}bindOutputTarget(Fe){Fe?this.webgl.unbindFramebuffer():this.colorTarget.bind()}renderMultiSample(Fe,He,Ye){const{camera:ot}=Fe,{compose:rt,composeTarget:St,drawPass:vt,webgl:mn}=this,{gl:zt,state:an}=mn;_.g$&&mn.timer.mark("MultiSamplePass.renderMultiSample");const Vn=ae[Math.max(0,Math.min(Ye.multiSample.sampleLevel,5))],{x:Fn,y:rr,width:Vr,height:tr}=ot.viewport,Tr=1/Vn.length;ot.viewOffset.enabled=!0,c.IQ.update(rt.values.tColor,vt.getColorTarget(Ye.postprocessing).texture),rt.update();for(let Gr=0;Gr=rr.length)return-2;const{x:Vr,y:tr,width:Tr,height:oo}=rt.viewport,Gr=1/rr.length;if(-1===Fe)zt.render(He,Ye,!1),c.IQ.update(St.values.uWeight,1),c.IQ.update(St.values.tColor,zt.getColorTarget(Ye.postprocessing).texture),St.update(),mn.bind(),Fn.disable(Vn.BLEND),Fn.disable(Vn.DEPTH_TEST),Fn.depthMask(!1),Fn.viewport(Vr,tr,Tr,oo),Fn.scissor(Vr,tr,Tr,oo),St.render(),Fe+=1;else{rt.viewOffset.enabled=!0,c.IQ.update(St.values.tColor,zt.getColorTarget(Ye.postprocessing).texture),c.IQ.update(St.values.uWeight,Gr),St.update();const yo=Math.pow(2,Math.max(0,Ye.multiSample.sampleLevel-2));for(let vo=0;vo=rr.length)break}}zt.postprocessing.setOcclusionOffset(0,0),this.bindOutputTarget(ot),Fn.viewport(Vr,tr,Tr,oo),Fn.scissor(Vr,tr,Tr,oo);const Ao=Fe*Gr;return Ao>0&&(c.IQ.update(St.values.uWeight,1),c.IQ.update(St.values.tColor,vt.texture),St.update(),Fn.disable(Vn.BLEND),St.render()),Ao<1&&(c.IQ.update(St.values.uWeight,1-Ao),c.IQ.update(St.values.tColor,mn.texture),St.update(),0===Ao?Fn.disable(Vn.BLEND):Fn.enable(Vn.BLEND),St.render()),rt.viewOffset.enabled=!1,rt.update(),_.g$&&an.timer.markEnd("MultiSamplePass.renderTemporalMultiSample"),Fe>=rr.length?-2:Fe}}const ae=[[[0,0]],[[0,0],[-4,-4]],[[0,0],[6,-2],[-6,2],[2,6]],[[0,0],[-1,3],[5,1],[-3,-5],[-5,5],[-7,-1],[3,7],[7,-7]],[[0,0],[-1,-3],[-3,2],[4,-1],[-5,-2],[2,5],[5,3],[3,-5],[-2,6],[0,-7],[-4,-6],[-6,4],[-8,0],[7,-4],[6,7],[-7,-8]],[[0,0],[-7,-5],[-3,-5],[-5,-4],[-1,-4],[-2,-2],[-6,-1],[-4,0],[-7,1],[-1,2],[-6,3],[-3,3],[-7,6],[-3,6],[-5,7],[-1,7],[5,-7],[1,-6],[6,-5],[4,-4],[2,-3],[7,-2],[1,-1],[4,-1],[2,1],[6,2],[0,4],[4,4],[2,5],[7,5],[5,6],[3,7]]];ae.forEach(Tt=>{Tt.forEach(Fe=>{Fe[0]*=.0625,Fe[1]*=.0625})});class ge{update(Fe,He){return Fe&&(this.sampleIndex=-1),"temporal"===He.mode&&-2!==this.sampleIndex}render(Fe,He,Ye,ot){return this.sampleIndex=this.multiSamplePass.render(this.sampleIndex,Fe,He,Ye,!!ot),this.sampleIndex<0}constructor(Fe){this.multiSamplePass=Fe,this.sampleIndex=-2}}var Ie=n(8437),Le=n(4951);const nt={eyeSeparation:i.t.Numeric(.062,{min:.02,max:.1,step:.001},{description:"Distance between left and right camera."}),focus:i.t.Numeric(10,{min:1,max:20,step:.1},{description:"Apparent object distance."})},je=i.t.getDefaultValues(nt);class Lt{get viewport(){return this.parent.viewport}get viewOffset(){return this.parent.viewOffset}constructor(Fe,He={}){this.parent=Fe,this.left=new Je,this.right=new Je,this.props={...je,...He}}setProps(Fe){Object.assign(this.props,Fe)}update(){this.parent.update(),function pn(Tt,Fe,He,Ye){A.LM.copy(He.viewport,Tt.viewport),r.$I.copy(He.view,Tt.view),r.$I.copy(He.projection,Tt.projection),V.i.copySnapshot(He.state,Tt.state),V.i.copyViewOffset(He.viewOffset,Tt.viewOffset),He.far=Tt.far,He.near=Tt.near,He.fogFar=Tt.fogFar,He.fogNear=Tt.fogNear,A.LM.copy(Ye.viewport,Tt.viewport),r.$I.copy(Ye.view,Tt.view),r.$I.copy(Ye.projection,Tt.projection),V.i.copySnapshot(Ye.state,Tt.state),V.i.copyViewOffset(Ye.viewOffset,Tt.viewOffset),Ye.far=Tt.far,Ye.near=Tt.near,Ye.fogFar=Tt.fogFar,Ye.fogNear=Tt.fogNear;const ot=Math.floor(Tt.viewport.width/2),rt=ot/Tt.viewport.height;He.viewport.width=ot,Ye.viewport.x+=ot,Ye.viewport.width-=ot;const St=Fe.eyeSeparation/2,vt=St*Tt.near/Fe.focus,mn=Tt.near*Math.tan(.5*Tt.state.fov);let zt,an;en[12]=-St,Bt[12]=St,zt=-mn*rt+vt,an=mn*rt+vt,He.projection[0]=2*Tt.near/(an-zt),He.projection[8]=(an+zt)/(an-zt),r.$I.mul(He.view,He.view,en),r.$I.mul(He.projectionView,He.projection,He.view),r.$I.invert(He.inverseProjectionView,He.projectionView),zt=-mn*rt-vt,an=mn*rt-vt,Ye.projection[0]=2*Tt.near/(an-zt),Ye.projection[8]=(an+zt)/(an-zt),r.$I.mul(Ye.view,Ye.view,Bt),r.$I.mul(Ye.projectionView,Ye.projection,Ye.view),r.$I.invert(Ye.inverseProjectionView,Ye.projectionView)}(this.parent,this.props,this.left,this.right)}}!function(Tt){Tt.is=function Fe(He){return"left"in He&&"right"in He}}(Lt||(Lt={}));class Je{constructor(){this.viewport=A.LM.create(0,0,0,0),this.view=(0,r.$I)(),this.projection=(0,r.$I)(),this.projectionView=(0,r.$I)(),this.inverseProjectionView=(0,r.$I)(),this.state=V.i.createDefaultSnapshot(),this.viewOffset=V.i.ViewOffset(),this.far=0,this.near=0,this.fogFar=0,this.fogNear=0}}const en=r.$I.identity(),Bt=r.$I.identity(),$e=Math.pow(2,24)-2;class mt{constructor(Fe,He,Ye){this.webgl=Fe,this.drawPass=He,this.pickScale=Ye;const ot=Ye/Fe.pixelRatio;this.pickWidth=Math.ceil(He.colorTarget.getWidth()*ot),this.pickHeight=Math.ceil(He.colorTarget.getHeight()*ot);const{resources:rt,extensions:{drawBuffers:St},gl:vt}=Fe;St?(this.objectPickTexture=rt.texture("image-uint8","rgba","ubyte","nearest"),this.objectPickTexture.define(this.pickWidth,this.pickHeight),this.instancePickTexture=rt.texture("image-uint8","rgba","ubyte","nearest"),this.instancePickTexture.define(this.pickWidth,this.pickHeight),this.groupPickTexture=rt.texture("image-uint8","rgba","ubyte","nearest"),this.groupPickTexture.define(this.pickWidth,this.pickHeight),this.depthPickTexture=rt.texture("image-uint8","rgba","ubyte","nearest"),this.depthPickTexture.define(this.pickWidth,this.pickHeight),this.framebuffer=rt.framebuffer(),this.objectPickFramebuffer=rt.framebuffer(),this.instancePickFramebuffer=rt.framebuffer(),this.groupPickFramebuffer=rt.framebuffer(),this.depthPickFramebuffer=rt.framebuffer(),this.framebuffer.bind(),St.drawBuffers([St.COLOR_ATTACHMENT0,St.COLOR_ATTACHMENT1,St.COLOR_ATTACHMENT2,St.COLOR_ATTACHMENT3]),this.objectPickTexture.attachFramebuffer(this.framebuffer,"color0"),this.instancePickTexture.attachFramebuffer(this.framebuffer,"color1"),this.groupPickTexture.attachFramebuffer(this.framebuffer,"color2"),this.depthPickTexture.attachFramebuffer(this.framebuffer,"color3"),this.depthRenderbuffer=(0,Ie.C6)(vt)?rt.renderbuffer("depth32f","depth",this.pickWidth,this.pickHeight):rt.renderbuffer("depth16","depth",this.pickWidth,this.pickHeight),this.depthRenderbuffer.attachFramebuffer(this.framebuffer),this.objectPickTexture.attachFramebuffer(this.objectPickFramebuffer,"color0"),this.instancePickTexture.attachFramebuffer(this.instancePickFramebuffer,"color0"),this.groupPickTexture.attachFramebuffer(this.groupPickFramebuffer,"color0"),this.depthPickTexture.attachFramebuffer(this.depthPickFramebuffer,"color0")):(this.objectPickTarget=Fe.createRenderTarget(this.pickWidth,this.pickHeight),this.instancePickTarget=Fe.createRenderTarget(this.pickWidth,this.pickHeight),this.groupPickTarget=Fe.createRenderTarget(this.pickWidth,this.pickHeight),this.depthPickTarget=Fe.createRenderTarget(this.pickWidth,this.pickHeight))}get pickRatio(){return this.pickScale/this.webgl.pixelRatio}setPickScale(Fe){this.pickScale=Fe,this.syncSize()}bindObject(){this.webgl.extensions.drawBuffers?this.objectPickFramebuffer.bind():this.objectPickTarget.bind()}bindInstance(){this.webgl.extensions.drawBuffers?this.instancePickFramebuffer.bind():this.instancePickTarget.bind()}bindGroup(){this.webgl.extensions.drawBuffers?this.groupPickFramebuffer.bind():this.groupPickTarget.bind()}bindDepth(){this.webgl.extensions.drawBuffers?this.depthPickFramebuffer.bind():this.depthPickTarget.bind()}get drawingBufferHeight(){return this.drawPass.colorTarget.getHeight()}syncSize(){const Fe=this.pickScale/this.webgl.pixelRatio,He=Math.ceil(this.drawPass.colorTarget.getWidth()*Fe),Ye=Math.ceil(this.drawPass.colorTarget.getHeight()*Fe);(He!==this.pickWidth||Ye!==this.pickHeight)&&(this.pickWidth=He,this.pickHeight=Ye,this.webgl.extensions.drawBuffers?(this.objectPickTexture.define(this.pickWidth,this.pickHeight),this.instancePickTexture.define(this.pickWidth,this.pickHeight),this.groupPickTexture.define(this.pickWidth,this.pickHeight),this.depthPickTexture.define(this.pickWidth,this.pickHeight),this.depthRenderbuffer.setSize(this.pickWidth,this.pickHeight)):(this.objectPickTarget.setSize(this.pickWidth,this.pickHeight),this.instancePickTarget.setSize(this.pickWidth,this.pickHeight),this.groupPickTarget.setSize(this.pickWidth,this.pickHeight),this.depthPickTarget.setSize(this.pickWidth,this.pickHeight)))}renderVariant(Fe,He,Ye,ot,rt,St){Fe.clear(!1),Fe.update(He,Ye),Fe.renderPick(Ye.primitives,He,rt,null,St),ot.handle.isEnabled&&Fe.renderPick(ot.handle.scene,He,rt,null,St),ot.camera.isEnabled&&(ot.camera.update(He),Fe.update(ot.camera.camera,ot.camera.scene),Fe.renderPick(ot.camera.scene,ot.camera.camera,rt,null,St))}render(Fe,He,Ye,ot){this.webgl.extensions.drawBuffers?(this.framebuffer.bind(),this.renderVariant(Fe,He,Ye,ot,"pick",l.None)):(this.objectPickTarget.bind(),this.renderVariant(Fe,He,Ye,ot,"pick",l.Object),this.instancePickTarget.bind(),this.renderVariant(Fe,He,Ye,ot,"pick",l.Instance),this.groupPickTarget.bind(),this.renderVariant(Fe,He,Ye,ot,"pick",l.Group),this.depthPickTarget.bind(),this.renderVariant(Fe,He,Ye,ot,"depth",l.None))}}class _t{setupBuffers(){const Fe=this.pickWidth*this.pickHeight*4;(!this.objectBuffer||this.objectBuffer.length!==Fe)&&(this.objectBuffer=new Uint8Array(Fe),this.instanceBuffer=new Uint8Array(Fe),this.groupBuffer=new Uint8Array(Fe),this.depthBuffer=new Uint8Array(Fe))}setViewport(Fe,He,Ye,ot){A.LM.set(this.viewport,Fe,He,Ye,ot),this.pickRatio=this.pickPass.pickRatio,this.pickX=Math.ceil(Fe*this.pickRatio),this.pickY=Math.ceil(He*this.pickRatio);const rt=Math.floor(Ye*this.pickRatio),St=Math.floor(ot*this.pickRatio);(rt!==this.pickWidth||St!==this.pickHeight)&&(this.pickWidth=rt,this.pickHeight=St,this.halfPickWidth=Math.floor(this.pickWidth/2),this.setupBuffers()),this.spiral=(0,v.k4)(Math.round(this.pickRatio*this.pickPadding))}syncBuffers(){_.g$&&this.webgl.timer.mark("PickHelper.syncBuffers");const{pickX:Fe,pickY:He,pickWidth:Ye,pickHeight:ot}=this;this.pickPass.bindObject(),this.webgl.readPixels(Fe,He,Ye,ot,this.objectBuffer),this.pickPass.bindInstance(),this.webgl.readPixels(Fe,He,Ye,ot,this.instanceBuffer),this.pickPass.bindGroup(),this.webgl.readPixels(Fe,He,Ye,ot,this.groupBuffer),this.pickPass.bindDepth(),this.webgl.readPixels(Fe,He,Ye,ot,this.depthBuffer),_.g$&&this.webgl.timer.markEnd("PickHelper.syncBuffers")}getBufferIdx(Fe,He){return 4*(He*this.pickWidth+Fe)}getDepth(Fe,He){const Ye=this.getBufferIdx(Fe,He),ot=this.depthBuffer;return(0,Le.FO)(ot[Ye],ot[Ye+1],ot[Ye+2],ot[Ye+3])}getId(Fe,He,Ye){const ot=this.getBufferIdx(Fe,He);return(0,Le.OK)(Ye[ot],Ye[ot+1],Ye[ot+2])}render(Fe){_.g$&&this.webgl.timer.mark("PickHelper.render",!0);const{pickX:He,pickY:Ye,pickWidth:ot,pickHeight:rt,halfPickWidth:St}=this,{renderer:vt,scene:mn,helper:zt}=this;vt.setTransparentBackground(!1),vt.setDrawingBufferSize(ot,rt),vt.setPixelRatio(this.pickRatio),Lt.is(Fe)?(vt.setViewport(He,Ye,St,rt),this.pickPass.render(vt,Fe.left,mn,zt),vt.setViewport(He+St,Ye,ot-St,rt),this.pickPass.render(vt,Fe.right,mn,zt)):(vt.setViewport(He,Ye,ot,rt),this.pickPass.render(vt,Fe,mn,zt)),this.dirty=!1,_.g$&&this.webgl.timer.markEnd("PickHelper.render")}identifyInternal(Fe,He,Ye){const{webgl:ot,pickRatio:rt}=this;if(ot.isContextLost)return;Fe*=ot.pixelRatio,He=this.pickPass.drawingBufferHeight-(He*=ot.pixelRatio);const{viewport:St}=this;if(FeSt.x+St.width||He>St.y+St.height)return;this.dirty&&(_.g$&&this.webgl.timer.mark("PickHelper.identify"),this.render(Ye),this.syncBuffers(),_.g$&&this.webgl.timer.markEnd("PickHelper.identify"));const vt=Fe-St.x,mn=He-St.y,zt=Math.floor(vt*rt),an=Math.floor(mn*rt),Vn=this.getId(zt,an,this.objectBuffer);if(-1===Vn||Vn===$e)return;const Fn=this.getId(zt,an,this.instanceBuffer);if(-1===Fn||Fn===$e)return;const rr=this.getId(zt,an,this.groupBuffer);if(-1===rr||rr===$e)return;const Vr=this.getDepth(zt,an),tr=r.eB.create(Fe,He,Vr);if(Lt.is(Ye)){const Tr=Math.floor(St.width/2);Fe>St.x+Tr?(tr[0]=St.x+2*(vt-Tr),(0,A.IW)(tr,tr,St,Ye.right.inverseProjectionView)):(tr[0]=St.x+2*vt,(0,A.IW)(tr,tr,St,Ye.left.inverseProjectionView))}else(0,A.IW)(tr,tr,St,Ye.inverseProjectionView);return{id:{objectId:Vn,instanceId:Fn,groupId:rr},position:tr}}identify(Fe,He,Ye){for(const ot of this.spiral){const rt=this.identifyInternal(Fe+ot[0],He+ot[1],Ye);if(rt)return rt}}constructor(Fe,He,Ye,ot,rt,St,vt=1){this.webgl=Fe,this.renderer=He,this.scene=Ye,this.helper=ot,this.pickPass=rt,this.pickPadding=vt,this.dirty=!0,this.viewport=(0,A.LM)(),this.setViewport(St.x,St.y,St.width,St.height)}}var Me=n(2021);const ut={...Ve.du,tWboitA:(0,Ne.$G)("texture","rgba","float","nearest"),tWboitB:(0,Ne.$G)("texture","rgba","float","nearest"),uTexSize:(0,Ne.w5)("v2")},Kt=(0,K.NG)("evaluate-wboit",Te.e,"\nprecision highp float;\n\nuniform sampler2D tWboitA;\nuniform sampler2D tWboitB;\nuniform vec2 uTexSize;\n\nvoid main() {\n vec2 coords = gl_FragCoord.xy / uTexSize;\n\n vec4 accum = texture2D(tWboitA, coords);\n float r = 1.0 - accum.a;\n\n accum.a = texture2D(tWboitB, coords).r;\n // divisor needs to allow very small values for nice fading\n gl_FragColor = vec4(accum.rgb / clamp(accum.a, 0.00000001, 50000.0), r);\n}\n");class gt{get supported(){return this._supported}bind(){const{state:Fe,gl:He}=this.webgl;this.framebuffer.bind(),Fe.clearColor(0,0,0,1),He.clear(He.COLOR_BUFFER_BIT),Fe.disable(He.DEPTH_TEST),Fe.blendFuncSeparate(He.ONE,He.ONE,He.ZERO,He.ONE_MINUS_SRC_ALPHA),Fe.enable(He.BLEND)}render(){_.g$&&this.webgl.timer.mark("WboitPass.render");const{state:Fe,gl:He}=this.webgl;Fe.blendFuncSeparate(He.SRC_ALPHA,He.ONE_MINUS_SRC_ALPHA,He.ONE,He.ONE_MINUS_SRC_ALPHA),Fe.enable(He.BLEND),this.renderable.update(),this.renderable.render(),_.g$&&this.webgl.timer.markEnd("WboitPass.render")}setSize(Fe,He){const[Ye,ot]=this.renderable.values.uTexSize.ref.value;(Fe!==Ye||He!==ot)&&(this.textureA.define(Fe,He),this.textureB.define(Fe,He),this.depthRenderbuffer.setSize(Fe,He),c.IQ.update(this.renderable.values.uTexSize,r.ZY.set(this.renderable.values.uTexSize.ref.value,Fe,He)))}reset(){this._supported&&this._init()}_init(){const{extensions:{drawBuffers:Fe}}=this.webgl;this.framebuffer.bind(),Fe.drawBuffers([Fe.COLOR_ATTACHMENT0,Fe.COLOR_ATTACHMENT1]),this.textureA.attachFramebuffer(this.framebuffer,"color0"),this.textureB.attachFramebuffer(this.framebuffer,"color1"),this.depthRenderbuffer.attachFramebuffer(this.framebuffer)}static isSupported(Fe){const{extensions:{drawBuffers:He,textureFloat:Ye,colorBufferFloat:ot,depthTexture:rt}}=Fe;if(Ye&&ot&&rt&&He)return!0;if(_.Bb){const St=[];Ye||St.push("textureFloat"),ot||St.push("colorBufferFloat"),rt||St.push("depthTexture"),He||St.push("drawBuffers"),console.log(`Missing "${St.join('", "')}" extensions required for "wboit"`)}return!1}constructor(Fe,He,Ye){if(this.webgl=Fe,this._supported=!1,!gt.isSupported(Fe))return;const{resources:ot,gl:rt}=Fe;this.textureA=ot.texture("image-float32","rgba","float","nearest"),this.textureA.define(He,Ye),this.textureB=ot.texture("image-float32","rgba","float","nearest"),this.textureB.define(He,Ye),this.depthRenderbuffer=(0,Ie.C6)(rt)?ot.renderbuffer("depth32f","depth",He,Ye):ot.renderbuffer("depth16","depth",He,Ye),this.renderable=function sn(Tt,Fe,He){const Ye={...Ve.OM,tWboitA:c.IQ.create(Fe),tWboitB:c.IQ.create(He),uTexSize:c.IQ.create(r.ZY.create(Fe.getWidth(),Fe.getHeight()))},ot={...ut},rt=(0,ne.$h)(Tt,"triangles",Kt,ot,Ye);return(0,be._)(rt,Ye)}(Fe,this.textureA,this.textureB),this.framebuffer=ot.framebuffer(),this._supported=!0,this._init()}}const Gt={...Ve.du,tDpoitBackColor:(0,Ne.$G)("texture","rgba","float","nearest"),uTexSize:(0,Ne.w5)("v2")},rn=(0,K.NG)("blend-back-dpoit",Te.e,"\n precision highp float;\n\n uniform sampler2D tDpoitBackColor;\n uniform vec2 uTexSize;\n\n void main() {\n vec2 coords = gl_FragCoord.xy / uTexSize;\n gl_FragColor = texture2D(tDpoitBackColor, coords);\n if (gl_FragColor.a == 0.0) {\n discard;\n }\n }\n"),Mt={...Ve.du,tDpoitFrontColor:(0,Ne.$G)("texture","rgba","float","nearest"),uTexSize:(0,Ne.w5)("v2")},nn=(0,K.NG)("evaluate-dpoit",Te.e,"\nprecision highp float;\n\nuniform sampler2D tDpoitFrontColor;\nuniform vec2 uTexSize;\n\nvoid main() {\n vec2 coords = gl_FragCoord.xy / uTexSize;\n gl_FragColor = texture2D(tDpoitFrontColor, coords);\n}\n");class Dn{get supported(){return this._supported}bind(){const{state:Fe,gl:He,extensions:{blendMinMax:Ye}}=this.webgl;return this.passCount=0,this.depthFramebuffers[0].bind(),Fe.clearColor(this.DEPTH_CLEAR_VALUE,this.DEPTH_CLEAR_VALUE,0,0),He.clear(He.COLOR_BUFFER_BIT),this.depthFramebuffers[1].bind(),Fe.clearColor(-this.MIN_DEPTH,this.MAX_DEPTH,0,0),He.clear(He.COLOR_BUFFER_BIT),this.colorFramebuffers[0].bind(),Fe.clearColor(0,0,0,0),He.clear(He.COLOR_BUFFER_BIT),this.colorFramebuffers[1].bind(),Fe.clearColor(0,0,0,0),He.clear(He.COLOR_BUFFER_BIT),this.depthFramebuffers[0].bind(),Fe.blendEquation(Ye.MAX),Fe.depthMask(!1),{depth:this.depthTextures[1],frontColor:this.colorFrontTextures[1],backColor:this.colorBackTextures[1]}}bindDualDepthPeeling(){const{state:Fe,gl:He,extensions:{blendMinMax:Ye}}=this.webgl;return this.readId=this.passCount%2,this.writeId=1-this.readId,this.passCount+=1,this.depthFramebuffers[this.writeId].bind(),Fe.clearColor(this.DEPTH_CLEAR_VALUE,this.DEPTH_CLEAR_VALUE,0,0),He.clear(He.COLOR_BUFFER_BIT),this.colorFramebuffers[this.writeId].bind(),Fe.clearColor(0,0,0,0),He.clear(He.COLOR_BUFFER_BIT),this.depthFramebuffers[this.writeId].bind(),Fe.blendEquation(Ye.MAX),Fe.depthMask(!1),{depth:this.depthTextures[this.readId],frontColor:this.colorFrontTextures[this.readId],backColor:this.colorBackTextures[this.readId]}}renderBlendBack(){_.g$&&this.webgl.timer.mark("DpoitPass.renderBlendBack");const{state:Fe,gl:He}=this.webgl;Fe.blendEquation(He.FUNC_ADD),Fe.blendFuncSeparate(He.SRC_ALPHA,He.ONE_MINUS_SRC_ALPHA,He.ONE,He.ONE_MINUS_SRC_ALPHA),c.IQ.update(this.blendBackRenderable.values.tDpoitBackColor,this.colorBackTextures[this.writeId]),this.blendBackRenderable.update(),this.blendBackRenderable.render(),_.g$&&this.webgl.timer.markEnd("DpoitPass.renderBlendBack")}render(){_.g$&&this.webgl.timer.mark("DpoitPass.render");const{state:Fe,gl:He}=this.webgl;Fe.blendFunc(He.ONE,He.ONE_MINUS_SRC_ALPHA),c.IQ.update(this.renderable.values.tDpoitFrontColor,this.colorFrontTextures[this.writeId]),this.renderable.update(),this.renderable.render(),_.g$&&this.webgl.timer.markEnd("DpoitPass.render")}setSize(Fe,He){const[Ye,ot]=this.renderable.values.uTexSize.ref.value;if(Fe!==Ye||He!==ot){for(let rt=0;rt<2;rt++)this.depthTextures[rt].define(Fe,He),this.colorFrontTextures[rt].define(Fe,He),this.colorBackTextures[rt].define(Fe,He);c.IQ.update(this.renderable.values.uTexSize,r.ZY.set(this.renderable.values.uTexSize.ref.value,Fe,He)),c.IQ.update(this.blendBackRenderable.values.uTexSize,r.ZY.set(this.blendBackRenderable.values.uTexSize.ref.value,Fe,He))}}reset(){this._supported&&this._init()}_init(){const{extensions:{drawBuffers:Fe}}=this.webgl;for(let He=0;He<2;He++)this.depthFramebuffers[He].bind(),Fe.drawBuffers([Fe.COLOR_ATTACHMENT0,Fe.COLOR_ATTACHMENT1,Fe.COLOR_ATTACHMENT2]),this.colorFrontTextures[He].attachFramebuffer(this.depthFramebuffers[He],"color0"),this.colorBackTextures[He].attachFramebuffer(this.depthFramebuffers[He],"color1"),this.depthTextures[He].attachFramebuffer(this.depthFramebuffers[He],"color2"),this.colorFramebuffers[He].bind(),Fe.drawBuffers([Fe.COLOR_ATTACHMENT0,Fe.COLOR_ATTACHMENT1]),this.colorFrontTextures[He].attachFramebuffer(this.colorFramebuffers[He],"color0"),this.colorBackTextures[He].attachFramebuffer(this.colorFramebuffers[He],"color1")}static isSupported(Fe){const{extensions:{drawBuffers:He,textureFloat:Ye,colorBufferFloat:ot,depthTexture:rt,blendMinMax:St}}=Fe;if(Ye&&ot&&rt&&He&&St)return!0;if(_.Bb){const vt=[];Ye||vt.push("textureFloat"),ot||vt.push("colorBufferFloat"),rt||vt.push("depthTexture"),He||vt.push("drawBuffers"),St||vt.push("blendMinMax"),console.log(`Missing "${vt.join('", "')}" extensions required for "dpoit"`)}return!1}constructor(Fe,He,Ye){if(this.webgl=Fe,this.DEPTH_CLEAR_VALUE=-99999,this.MAX_DEPTH=1,this.MIN_DEPTH=0,this.passCount=0,this._supported=!1,!Dn.isSupported(Fe))return;const{resources:ot,extensions:{colorBufferHalfFloat:rt,textureHalfFloat:St}}=Fe;(0,Ie.C6)(Fe.gl)?(this.depthTextures=[ot.texture("image-float32","rg","float","nearest"),ot.texture("image-float32","rg","float","nearest")],this.colorFrontTextures=rt&&St?[ot.texture("image-float16","rgba","fp16","nearest"),ot.texture("image-float16","rgba","fp16","nearest")]:[ot.texture("image-float32","rgba","float","nearest"),ot.texture("image-float32","rgba","float","nearest")],this.colorBackTextures=rt&&St?[ot.texture("image-float16","rgba","fp16","nearest"),ot.texture("image-float16","rgba","fp16","nearest")]:[ot.texture("image-float32","rgba","float","nearest"),ot.texture("image-float32","rgba","float","nearest")]):(this.depthTextures=[ot.texture("image-float32","rgba","float","nearest"),ot.texture("image-float32","rgba","float","nearest")],this.colorFrontTextures=[ot.texture("image-float32","rgba","float","nearest"),ot.texture("image-float32","rgba","float","nearest")],this.colorBackTextures=[ot.texture("image-float32","rgba","float","nearest"),ot.texture("image-float32","rgba","float","nearest")]),this.depthTextures[0].define(He,Ye),this.depthTextures[1].define(He,Ye),this.colorFrontTextures[0].define(He,Ye),this.colorFrontTextures[1].define(He,Ye),this.colorBackTextures[0].define(He,Ye),this.colorBackTextures[1].define(He,Ye),this.depthFramebuffers=[ot.framebuffer(),ot.framebuffer()],this.colorFramebuffers=[ot.framebuffer(),ot.framebuffer()],this.blendBackRenderable=function tt(Tt,Fe){const He={...Ve.OM,tDpoitBackColor:c.IQ.create(Fe),uTexSize:c.IQ.create(r.ZY.create(Fe.getWidth(),Fe.getHeight()))},Ye={...Gt},ot=(0,ne.$h)(Tt,"triangles",rn,Ye,He);return(0,be._)(ot,He)}(Fe,this.colorBackTextures[0]),this.renderable=function bn(Tt,Fe){const He={...Ve.OM,tDpoitFrontColor:c.IQ.create(Fe),uTexSize:c.IQ.create(r.ZY.create(Fe.getWidth(),Fe.getHeight()))},Ye={...Mt},ot=(0,ne.$h)(Tt,"triangles",nn,Ye,He);return(0,be._)(ot,He)}(Fe,this.colorFrontTextures[0]),this._supported=!0,this._init()}}const Dt={enabled:i.t.Boolean(!0),highlightEdgeColor:i.t.Color(y.Q1.darken(y.Q1.fromNormalizedRgb(1,.4,.6),1)),selectEdgeColor:i.t.Color(y.Q1.darken(y.Q1.fromNormalizedRgb(.2,1,.1),1)),edgeScale:i.t.Numeric(1,{min:1,max:3,step:1},{description:"Thickness of the edge."}),highlightEdgeStrength:i.t.Numeric(1,{min:0,max:1,step:.1}),selectEdgeStrength:i.t.Numeric(1,{min:0,max:1,step:.1}),ghostEdgeStrength:i.t.Numeric(.3,{min:0,max:1,step:.1},{description:"Opacity of the hidden edges that are covered by other geometry. When set to 1, one less geometry render pass is done."}),innerEdgeFactor:i.t.Numeric(1.5,{min:0,max:3,step:.1},{description:"Factor to multiply the inner edge color with - for added contrast."})};class Ct{static isEnabled(Fe){return Fe.enabled}constructor(Fe,He,Ye){this.webgl=Fe,this.depthTarget=Fe.createRenderTarget(He,Ye),this.maskTarget=Fe.createRenderTarget(He,Ye),this.edgesTarget=Fe.createRenderTarget(He,Ye),this.edge=function Wt(Tt,Fe){const He=Fe.getWidth(),Ye=Fe.getHeight(),ot={...Ve.OM,tMaskTexture:c.IQ.create(Fe),uTexSizeInv:c.IQ.create(r.ZY.create(1/He,1/Ye)),dEdgeScale:c.IQ.create(1)},rt={...$t},St=(0,ne.$h)(Tt,"triangles",Vt,rt,ot);return(0,be._)(St,ot)}(Fe,this.maskTarget.texture),this.overlay=function kt(Tt,Fe){const He=Fe.getWidth(),Ye=Fe.getHeight(),ot={...Ve.OM,tEdgeTexture:c.IQ.create(Fe),uTexSizeInv:c.IQ.create(r.ZY.create(1/He,1/Ye)),uHighlightEdgeColor:c.IQ.create((0,r.eB)()),uSelectEdgeColor:c.IQ.create((0,r.eB)()),uHighlightEdgeStrength:c.IQ.create(1),uSelectEdgeStrength:c.IQ.create(1),uGhostEdgeStrength:c.IQ.create(0),uInnerEdgeFactor:c.IQ.create(0)},rt={...yn},St=(0,ne.$h)(Tt,"triangles",Zt,rt,ot);return(0,be._)(St,ot)}(Fe,this.edgesTarget.texture)}setEdgeState(Fe){const{gl:He,state:Ye}=this.webgl;Ye.enable(He.SCISSOR_TEST),Ye.enable(He.BLEND),Ye.blendFunc(He.ONE,He.ONE),Ye.blendEquation(He.FUNC_ADD),Ye.disable(He.DEPTH_TEST),Ye.depthMask(!1);const{x:ot,y:rt,width:St,height:vt}=Fe;Ye.viewport(ot,rt,St,vt),Ye.scissor(ot,rt,St,vt),Ye.clearColor(0,0,0,0),He.clear(He.COLOR_BUFFER_BIT)}setOverlayState(Fe){const{gl:He,state:Ye}=this.webgl;Ye.enable(He.SCISSOR_TEST),Ye.enable(He.BLEND),Ye.blendFunc(He.SRC_ALPHA,He.ONE_MINUS_SRC_ALPHA),Ye.blendEquation(He.FUNC_ADD),Ye.disable(He.DEPTH_TEST),Ye.depthMask(!1);const{x:ot,y:rt,width:St,height:vt}=Fe;Ye.viewport(ot,rt,St,vt),Ye.scissor(ot,rt,St,vt)}setSize(Fe,He){const Ye=this.depthTarget.getWidth(),ot=this.depthTarget.getHeight();(Fe!==Ye||He!==ot)&&(this.depthTarget.setSize(Fe,He),this.maskTarget.setSize(Fe,He),this.edgesTarget.setSize(Fe,He),c.IQ.update(this.edge.values.uTexSizeInv,r.ZY.set(this.edge.values.uTexSizeInv.ref.value,1/Fe,1/He)),c.IQ.update(this.overlay.values.uTexSizeInv,r.ZY.set(this.overlay.values.uTexSizeInv.ref.value,1/Fe,1/He)))}update(Fe){const{highlightEdgeColor:He,selectEdgeColor:Ye,edgeScale:ot,innerEdgeFactor:rt,ghostEdgeStrength:St,highlightEdgeStrength:vt,selectEdgeStrength:mn}=Fe,{values:zt}=this.edge,an=Math.max(1,Math.round(ot*this.webgl.pixelRatio));zt.dEdgeScale.ref.value!==an&&(c.IQ.update(zt.dEdgeScale,an),this.edge.update());const{values:Vn}=this.overlay;c.IQ.update(Vn.uHighlightEdgeColor,y.Q1.toVec3Normalized(Vn.uHighlightEdgeColor.ref.value,He)),c.IQ.update(Vn.uSelectEdgeColor,y.Q1.toVec3Normalized(Vn.uSelectEdgeColor.ref.value,Ye)),c.IQ.updateIfChanged(Vn.uInnerEdgeFactor,rt),c.IQ.updateIfChanged(Vn.uGhostEdgeStrength,St),c.IQ.updateIfChanged(Vn.uHighlightEdgeStrength,vt),c.IQ.updateIfChanged(Vn.uSelectEdgeStrength,mn)}render(Fe,He){_.g$&&this.webgl.timer.mark("MarkingPass.render"),this.edgesTarget.bind(),this.setEdgeState(Fe),this.edge.render(),He?He.bind():this.webgl.unbindFramebuffer(),this.setOverlayState(Fe),this.overlay.render(),_.g$&&this.webgl.timer.markEnd("MarkingPass.render")}}const $t={...Ve.du,tMaskTexture:(0,Ne.$G)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,Ne.w5)("v2"),dEdgeScale:(0,Ne.$F)("number")},Vt=(0,K.NG)("edge",Te.e,"\nprecision highp float;\nprecision highp sampler2D;\n\nuniform sampler2D tMaskTexture;\nuniform vec2 uTexSizeInv;\n\nvoid main() {\n vec2 coords = gl_FragCoord.xy * uTexSizeInv;\n vec4 offset = vec4(float(dEdgeScale), 0.0, 0.0, float(dEdgeScale)) * vec4(uTexSizeInv, uTexSizeInv);\n vec4 c0 = texture2D(tMaskTexture, coords);\n vec4 c1 = texture2D(tMaskTexture, coords + offset.xy);\n vec4 c2 = texture2D(tMaskTexture, coords - offset.xy);\n vec4 c3 = texture2D(tMaskTexture, coords + offset.yw);\n vec4 c4 = texture2D(tMaskTexture, coords - offset.yw);\n float diff1 = (c1.r - c2.r) * 0.5;\n float diff2 = (c3.r - c4.r) * 0.5;\n float d = length(vec2(diff1, diff2));\n if (d <= 0.0)\n discard;\n float a1 = min(c1.g, c2.g);\n float a2 = min(c3.g, c4.g);\n float visibility = min(a1, a2) > 0.001 ? 1.0 : 0.0;\n float mask = c0.r;\n float marker = min(c1.b, min(c2.b, min(c3.b, c4.b)));\n float fogAlpha = min(c1.a, min(c2.a, min(c3.a, c4.a)));\n gl_FragColor = vec4(visibility, mask, marker, fogAlpha);\n}\n"),yn={...Ve.du,tEdgeTexture:(0,Ne.$G)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,Ne.w5)("v2"),uHighlightEdgeColor:(0,Ne.w5)("v3"),uSelectEdgeColor:(0,Ne.w5)("v3"),uHighlightEdgeStrength:(0,Ne.w5)("f"),uSelectEdgeStrength:(0,Ne.w5)("f"),uGhostEdgeStrength:(0,Ne.w5)("f"),uInnerEdgeFactor:(0,Ne.w5)("f")},Zt=(0,K.NG)("overlay",Te.e,"\nprecision highp float;\nprecision highp sampler2D;\n\nuniform vec2 uTexSizeInv;\nuniform sampler2D tEdgeTexture;\nuniform vec3 uHighlightEdgeColor;\nuniform vec3 uSelectEdgeColor;\nuniform float uHighlightEdgeStrength;\nuniform float uSelectEdgeStrength;\nuniform float uGhostEdgeStrength;\nuniform float uInnerEdgeFactor;\n\nvoid main() {\n vec2 coords = gl_FragCoord.xy * uTexSizeInv;\n vec4 edgeValue = texture2D(tEdgeTexture, coords);\n if (edgeValue.a > 0.0) {\n vec3 edgeColor = edgeValue.b == 1.0 ? uHighlightEdgeColor : uSelectEdgeColor;\n gl_FragColor.rgb = edgeValue.g > 0.0 ? edgeColor : edgeColor * uInnerEdgeFactor;\n gl_FragColor.a = (edgeValue.r == 1.0 ? uGhostEdgeStrength : 1.0) * edgeValue.a;\n float edgeStrength = edgeValue.b == 1.0 ? uHighlightEdgeStrength : uSelectEdgeStrength;\n gl_FragColor.a *= edgeStrength;\n } else {\n gl_FragColor = vec4(0.0);\n }\n}\n");var Ot=n(6049),An=n(3770);class jn{setTransparency(Fe){"wboit"===Fe?(this.transparencyMode=this.wboit.supported?"wboit":"blended",_.Bb&&!this.wboit.supported&&console.log('Missing "wboit" support, falling back to "blended".')):"dpoit"===Fe?(this.transparencyMode=this.dpoit.supported?"dpoit":"blended",_.Bb&&!this.dpoit.supported&&console.log('Missing "dpoit" support, falling back to "blended".')):this.transparencyMode="blended",this.depthTextureOpaque.detachFramebuffer(this.postprocessing.target.framebuffer,"depth")}get transparency(){return this.transparencyMode}constructor(Fe,He,Ye,ot,rt){this.webgl=Fe,this.transparencyMode="blended";const{extensions:St,resources:vt,isWebGL2:mn}=Fe;this.drawTarget=(0,Me.T)(Fe.gl),this.colorTarget=Fe.createRenderTarget(Ye,ot,!0,"uint8","linear"),this.packedDepth=!St.depthTexture,this.depthTargetTransparent=Fe.createRenderTarget(Ye,ot),this.depthTextureTransparent=this.depthTargetTransparent.texture,this.depthTargetOpaque=this.packedDepth?Fe.createRenderTarget(Ye,ot):null,this.depthTextureOpaque=this.depthTargetOpaque?this.depthTargetOpaque.texture:vt.texture("image-depth","depth",mn?"float":"ushort","nearest"),this.packedDepth||this.depthTextureOpaque.define(Ye,ot),this.wboit=new gt(Fe,Ye,ot),this.dpoit=new Dn(Fe,Ye,ot),this.marking=new Ct(Fe,Ye,ot),this.postprocessing=new Se.Pv(Fe,He,this),this.antialiasing=new Se.SK(Fe,Ye,ot),this.bloom=new An.P(Fe,Ye,ot),this.dof=new Ot.z(Fe,Ye,ot),this.copyFboTarget=(0,Ve._0)(Fe,this.colorTarget.texture),this.copyFboPostprocessing=(0,Ve._0)(Fe,this.postprocessing.target.texture),this.setTransparency(rt)}reset(){this.wboit.reset(),this.dpoit.reset()}setSize(Fe,He){const Ye=this.colorTarget.getWidth(),ot=this.colorTarget.getHeight();(Fe!==Ye||He!==ot)&&(this.colorTarget.setSize(Fe,He),this.depthTargetTransparent.setSize(Fe,He),this.depthTargetOpaque?this.depthTargetOpaque.setSize(Fe,He):this.depthTextureOpaque.define(Fe,He),c.IQ.update(this.copyFboTarget.values.uTexSize,r.ZY.set(this.copyFboTarget.values.uTexSize.ref.value,Fe,He)),c.IQ.update(this.copyFboPostprocessing.values.uTexSize,r.ZY.set(this.copyFboPostprocessing.values.uTexSize.ref.value,Fe,He))),this.wboit.supported&&this.wboit.setSize(Fe,He),this.dpoit.supported&&this.dpoit.setSize(Fe,He),this.marking.setSize(Fe,He),this.postprocessing.setSize(Fe,He),this.antialiasing.setSize(Fe,He),this.dof.setSize(Fe,He),this.bloom.setSize(Fe,He)}_renderDpoit(Fe,He,Ye,ot,rt,St){if(!this.dpoit.supported)throw new Error("expected dpoit to be supported");if(this.depthTextureOpaque.attachFramebuffer(this.colorTarget.framebuffer,"depth"),Fe.clear(!0),Ye.hasOpaque&&Fe.renderDpoitOpaque(Ye.primitives,He,null),Se.Pv.isEnabled(St)&&((Se.Pv.isTransparentOutlineEnabled(St)||Ot.z.isEnabled(St))&&(this.depthTargetTransparent.bind(),Fe.clearDepth(!0),Ye.opacityAverage<1&&Fe.renderDepthTransparent(Ye.primitives,He,this.depthTextureOpaque)),this.postprocessing.render(He,!1,rt,Fe.props.backgroundColor,St,Fe.light)),this.depthTextureOpaque.detachFramebuffer(this.colorTarget.framebuffer,"depth"),Ye.opacityAverage<1){const vt=Se.Pv.isEnabled(St)?this.postprocessing.target:this.colorTarget,mn=this.dpoit.bind();Fe.renderDpoitTransparent(Ye.primitives,He,this.depthTextureOpaque,mn);for(let zt=0;zt0&&Fe.renderDpoitVolume(Ye.volumes,He,this.depthTextureOpaque)}_renderWboit(Fe,He,Ye,ot,rt){if(!this.wboit.supported)throw new Error("expected wboit to be supported");this.depthTextureOpaque.attachFramebuffer(this.colorTarget.framebuffer,"depth"),Fe.clear(!0),Ye.hasOpaque&&Fe.renderWboitOpaque(Ye.primitives,He,null),Se.Pv.isEnabled(rt)&&((Se.Pv.isTransparentOutlineEnabled(rt)||Ot.z.isEnabled(rt))&&(this.depthTargetTransparent.bind(),Fe.clearDepth(!0),Ye.opacityAverage<1&&Fe.renderDepthTransparent(Ye.primitives,He,this.depthTextureOpaque)),this.postprocessing.render(He,!1,ot,Fe.props.backgroundColor,rt,Fe.light)),(Ye.opacityAverage<1||Ye.volumes.renderables.length>0)&&(this.wboit.bind(),Ye.opacityAverage<1&&Fe.renderWboitTransparent(Ye.primitives,He,this.depthTextureOpaque),Ye.volumes.renderables.length>0&&Fe.renderWboitTransparent(Ye.volumes,He,this.depthTextureOpaque),Se.Pv.isEnabled(rt)?this.postprocessing.target.bind():this.colorTarget.bind(),this.wboit.render())}_renderBlended(Fe,He,Ye,ot,rt,St){var vt,mn,zt,an;if(ot?this.drawTarget.bind():this.packedDepth?this.colorTarget.bind():this.depthTextureOpaque.attachFramebuffer(this.colorTarget.framebuffer,"depth"),Fe.clear(!0),Ye.hasOpaque&&Fe.renderBlendedOpaque(Ye.primitives,He,null),!ot&&(this.depthTargetOpaque&&(this.depthTargetOpaque.bind(),Fe.clearDepth(!0),Fe.renderDepthOpaque(Ye.primitives,He,null),this.colorTarget.bind()),Se.Pv.isEnabled(St)&&(this.packedDepth?null===(vt=this.colorTarget.depthRenderbuffer)||void 0===vt||vt.detachFramebuffer(this.postprocessing.target.framebuffer):this.depthTextureOpaque.detachFramebuffer(this.postprocessing.target.framebuffer,"depth"),(Se.Pv.isTransparentOutlineEnabled(St)||Ot.z.isEnabled(St))&&(this.depthTargetTransparent.bind(),Fe.clearDepth(!0),Ye.opacityAverage<1&&Fe.renderDepthTransparent(Ye.primitives,He,this.depthTextureOpaque)),this.postprocessing.render(He,!1,rt,Fe.props.backgroundColor,St,Fe.light),this.packedDepth?null===(mn=this.colorTarget.depthRenderbuffer)||void 0===mn||mn.attachFramebuffer(this.postprocessing.target.framebuffer):this.depthTextureOpaque.attachFramebuffer(this.postprocessing.target.framebuffer,"depth")),Ye.volumes.renderables.length>0)){const Vn=Se.Pv.isEnabled(St)?this.postprocessing.target:this.colorTarget;this.packedDepth?null===(zt=this.colorTarget.depthRenderbuffer)||void 0===zt||zt.detachFramebuffer(Vn.framebuffer):this.depthTextureOpaque.detachFramebuffer(Vn.framebuffer,"depth"),Vn.bind(),Fe.renderBlendedVolume(Ye.volumes,He,this.depthTextureOpaque),this.packedDepth?null===(an=this.colorTarget.depthRenderbuffer)||void 0===an||an.attachFramebuffer(Vn.framebuffer):this.depthTextureOpaque.attachFramebuffer(Vn.framebuffer,"depth"),Vn.bind()}Ye.opacityAverage<1&&Fe.renderBlendedTransparent(Ye.primitives,He,null)}_render(Fe,He,Ye,ot,rt,St,vt){var mn,zt;const an=Ye.volumes.renderables.length>0,Vn=Se.Pv.isEnabled(vt.postprocessing),Fn=Se.SK.isEnabled(vt.postprocessing),rr=Ct.isEnabled(vt.marking),Vr=Ot.z.isEnabled(vt.postprocessing),{x:tr,y:Tr,width:oo,height:Gr}=He.viewport;Fe.setViewport(tr,Tr,oo,Gr),Fe.update(He,Ye),St&&!Fn&&rt&&(this.drawTarget.bind(),Fe.clear(!1));let Ao=!1;"wboit"===this.transparencyMode&&this.wboit.supported?(this._renderWboit(Fe,He,Ye,St,vt.postprocessing),Ao=!0):"dpoit"===this.transparencyMode&&this.dpoit.supported?(this._renderDpoit(Fe,He,Ye,vt.dpoitIterations,St,vt.postprocessing),Ao=!0):this._renderBlended(Fe,He,Ye,!an&&!Vn&&!Fn&&rt,St,vt.postprocessing);const yo=Vn?this.postprocessing.target:!rt||an||Ao?this.colorTarget:this.drawTarget;if(rr&&Ye.markerAverage>0){const Kr=vt.marking.ghostEdgeStrength<1;Kr&&1!==Ye.markerAverage&&(this.marking.depthTarget.bind(),Fe.clear(!1,!0),Fe.renderMarkingDepth(Ye.primitives,He,null)),this.marking.maskTarget.bind(),Fe.clear(!1,!0),Fe.renderMarkingMask(Ye.primitives,He,Kr?this.marking.depthTarget.texture:null),this.marking.update(vt.marking),this.marking.render(He.viewport,yo)}else yo.bind();ot.debug.isEnabled&&(ot.debug.syncVisibility(),Fe.renderBlended(ot.debug.scene,He)),ot.handle.isEnabled&&Fe.renderBlended(ot.handle.scene,He),ot.camera.isEnabled&&(ot.camera.update(He),Fe.update(ot.camera.camera,ot.camera.scene),Fe.renderBlended(ot.camera.scene,ot.camera.camera));let vo=!1;if(Fn){const Kr=Se.Pv.isEnabled(vt.postprocessing)?this.postprocessing.target.texture:this.colorTarget.texture;this.antialiasing.render(He,Kr,rt&&!Vr,vt.postprocessing)}else rt&&!Ot.z.isEnabled(vt.postprocessing)&&(vo=!0);if("on"===vt.postprocessing.dof.name){const Kr=Se.SK.isEnabled(vt.postprocessing)?this.antialiasing.target.texture:Se.Pv.isEnabled(vt.postprocessing)?this.postprocessing.target.texture:this.colorTarget.texture;this.dof.update(He,Kr,(null===(mn=this.depthTargetOpaque)||void 0===mn?void 0:mn.texture)||this.depthTextureOpaque,this.depthTextureTransparent,vt.postprocessing.dof.params,Ye.boundingSphereVisible),this.dof.render(He.viewport,rt?void 0:this.getColorTarget(vt.postprocessing))}else rt&&!Se.SK.isEnabled(vt.postprocessing)&&(vo=!0);if(vo&&(this.drawTarget.bind(),this.webgl.state.disable(this.webgl.gl.DEPTH_TEST),Vn?this.copyFboPostprocessing.render():(an||Ao)&&this.copyFboTarget.render()),"on"===vt.postprocessing.bloom.name){const Kr="emissive"===vt.postprocessing.bloom.params.mode;Kr&&Ye.emissiveAverage>0&&(this.bloom.emissiveTarget.bind(),Fe.clear(!1,!0),Fe.update(He,Ye),Fe.renderEmissive(Ye.primitives,He,null)),(!Kr||Ye.emissiveAverage>0)&&(this.bloom.update(this.colorTarget.texture,this.bloom.emissiveTarget.texture,(null===(zt=this.depthTargetOpaque)||void 0===zt?void 0:zt.texture)||this.depthTextureOpaque,vt.postprocessing.bloom.params),this.bloom.render(He.viewport,rt?void 0:this.getColorTarget(vt.postprocessing)))}this.webgl.gl.flush()}render(Fe,He,Ye){_.g$&&this.webgl.timer.mark("DrawPass.render");const{renderer:ot,camera:rt,scene:St,helper:vt}=Fe;this.postprocessing.setTransparentBackground(He.transparentBackground);const mn=He.transparentBackground||this.postprocessing.background.isEnabled(He.postprocessing.background);ot.setTransparentBackground(mn),ot.setDrawingBufferSize(this.colorTarget.getWidth(),this.colorTarget.getHeight()),ot.setPixelRatio(this.webgl.pixelRatio),Lt.is(rt)?(_.g$&&this.webgl.timer.mark("StereoCamera.left"),this._render(ot,rt.left,St,vt,Ye,mn,He),_.g$&&this.webgl.timer.markEnd("StereoCamera.left"),_.g$&&this.webgl.timer.mark("StereoCamera.right"),this._render(ot,rt.right,St,vt,Ye,mn,He),_.g$&&this.webgl.timer.markEnd("StereoCamera.right")):this._render(ot,rt,St,vt,Ye,mn,He),_.g$&&this.webgl.timer.markEnd("DrawPass.render")}getColorTarget(Fe){return Ot.z.isEnabled(Fe)?this.dof.target:Se.SK.isEnabled(Fe)?this.antialiasing.target:Se.Pv.isEnabled(Fe)?this.postprocessing.target:this.colorTarget}}var On=n(2775),fr=n(7028);const Dr={transparentBackground:i.t.Boolean(!1),dpoitIterations:i.t.Numeric(2,{min:1,max:10,step:1}),multiSample:i.t.Group(ce),postprocessing:i.t.Group(Se.co),marking:i.t.Group(Dt),cameraHelper:i.t.Group(fr.kf)};class Pr{get colorTarget(){return this._colorTarget}get width(){return this._width}get height(){return this._height}constructor(Fe,He,Ye,ot,rt,St,vt,mn){this.webgl=Fe,this.renderer=Ye,this.scene=ot,this.camera=rt,this._width=0,this._height=0,this._camera=new V.i,this.props={...i.t.getDefaultValues(Dr),...mn},this.drawPass=new jn(Fe,He,128,128,vt),this.multiSamplePass=new se(Fe,this.drawPass),this.multiSampleHelper=new ge(this.multiSamplePass),this.helper={camera:new fr.WT(Fe,this.props.cameraHelper),debug:St.debug,handle:St.handle},this.setSize(1024,768)}updateBackground(){return new Promise(Fe=>{this.drawPass.postprocessing.background.update(this.camera,this.props.postprocessing.background,()=>{Fe()})})}setSize(Fe,He){Fe===this._width&&He===this._height||(this._width=Fe,this._height=He,this.drawPass.setSize(Fe,He),this.multiSamplePass.syncSize())}setProps(Fe={}){Object.assign(this.props,Fe),Fe.cameraHelper&&this.helper.camera.setProps(Fe.cameraHelper)}render(){V.i.copySnapshot(this._camera.state,this.camera.state),A.LM.set(this._camera.viewport,0,0,this._width,this._height),this._camera.update();const Fe={renderer:this.renderer,camera:this._camera,scene:this.scene,helper:this.helper};se.isEnabled(this.props.multiSample)?(this.multiSampleHelper.render(Fe,this.props,!1),this._colorTarget=this.multiSamplePass.colorTarget):(this.drawPass.render(Fe,this.props,!1),this._colorTarget=this.drawPass.getColorTarget(this.props.postprocessing))}getImageData(Fe,He,Ye){var ot,rt;this.setSize(Fe,He),this.render(),this.colorTarget.bind();const St=null!==(ot=Ye?.width)&&void 0!==ot?ot:Fe,vt=null!==(rt=Ye?.height)&&void 0!==rt?rt:He,mn=new Uint8Array(St*vt*4);Ye?this.webgl.readPixels(Ye.x,He-Ye.y-Ye.height,St,vt,mn):this.webgl.readPixels(0,0,St,vt,mn);const zt=On.N.create(mn,St,vt);return On.N.flipY(zt),On.N.divideByAlpha(zt),new ImageData(new Uint8ClampedArray(mn),St,vt)}}var or=n(1025),Nr=n(2802),Ir=n(3558),Or=n(6825),Jr=n(5117),To=n(3543);const un={...H.e.Params,alpha:{...H.e.Params.alpha,defaultValue:1},ignoreLight:{...H.e.Params.ignoreLight,defaultValue:!0},colorX:i.t.Color(J.s.red,{isEssential:!0}),colorY:i.t.Color(J.s.green,{isEssential:!0}),colorZ:i.t.Color(J.s.blue,{isEssential:!0}),scale:i.t.Numeric(.33,{min:.1,max:2,step:.1},{isEssential:!0})},ct={handle:i.t.MappedStatic("off",{on:i.t.Group(un),off:i.t.Group({})},{cycle:!0,description:"Show handle tool"})};class dt{getBoundingSphere(Fe,He){return this.renderObject&&($.f8.copy(Fe,this.renderObject.values.invariantBoundingSphere.ref.value),r.$I.fromArray(this._transform,this.renderObject.values.aTransform.ref.value,16*He),$.f8.transform(Fe,Fe,this._transform)),Fe}setProps(Fe){this.props=(0,or.jM)(this.props,He=>{if(void 0!==Fe.handle&&(He.handle.name=Fe.handle.name,"on"===Fe.handle.name)){this.scene.clear(),this.pixelRatio=this.webgl.pixelRatio;const Ye={...Fe.handle.params,scale:Fe.handle.params.scale*this.webgl.pixelRatio,cellSize:0};this.renderObject=function ir(Tt){const Fe=function er(Tt,Fe){const He=10*Tt.scale,Ye=function Yt(Tt,Fe){const He=N.P.createState(512,256,Fe),Ye=.05*Tt,ot=r.eB.scale((0,r.eB)(),r.eB.unitX,Tt),rt=r.eB.scale((0,r.eB)(),r.eB.unitY,Tt),St=r.eB.scale((0,r.eB)(),r.eB.unitZ,Tt),vt={radiusTop:Ye,radiusBottom:Ye,radialSegments:32};return He.currentGroup=cn.TranslateScreenXY,(0,k.X)(He,r.eB.origin,3*Ye,2),He.currentGroup=cn.TranslateObjectX,(0,k.X)(He,ot,Ye,2),(0,Nr.y9)(He,r.eB.origin,ot,1,vt),He.currentGroup=cn.TranslateObjectY,(0,k.X)(He,rt,Ye,2),(0,Nr.y9)(He,r.eB.origin,rt,1,vt),He.currentGroup=cn.TranslateObjectZ,(0,k.X)(He,St,Ye,2),(0,Nr.y9)(He,r.eB.origin,St,1,vt),N.P.getMesh(He)}(He,Fe?.geometry);Ye.setBoundingSphere($.f8.create(r.eB.create(He/2,He/2,He/2),He+He/4));return Ir.y.create("handle",{},Ye,rt=>{switch(rt){case cn.TranslateObjectX:return Tt.colorX;case cn.TranslateObjectY:return Tt.colorY;case cn.TranslateObjectZ:return Tt.colorZ;default:return J.s.grey}},()=>1,()=>"")}(Tt);return Ir.y.createRenderObject(Fe,Tt)}(Ye),this.scene.add(this.renderObject),this.scene.commit(),He.handle.params={...Fe.handle.params}}})}get isEnabled(){return"on"===this.props.handle.name}update(Fe,He,Ye){this.renderObject&&(this.pixelRatio!==this.webgl.pixelRatio&&this.setProps(this.props),r.$I.setTranslation(this.renderObject.values.aTransform.ref.value,He),r.$I.fromMat3(this.renderObject.values.aTransform.ref.value,Ye),c.IQ.update(this.renderObject.values.aTransform,this.renderObject.values.aTransform.ref.value),this.scene.update([this.renderObject],!0))}getLoci(Fe){const{objectId:He,groupId:Ye,instanceId:ot}=Fe;return this.renderObject&&He===this.renderObject.id?function xn(Tt,Fe,He){return(0,G.g9)("handle",Tt,[{groupId:Fe,instanceId:He}],Ye=>Tt.getBoundingSphere(Ye,He),()=>`Handle Helper | Group Id ${Fe} | Instance Id ${He}`)}(this,Ye,ot):G.BL}mark(Fe,He){return!(!Or.sY.is(Or.sY.Highlighting,He)||!((0,G.xc)(Fe)||Rn(Fe)&&Fe.data===this))&&Jr.b.mark(this.renderObject,Fe,He,this.eachGroup)}constructor(Fe,He={}){this.webgl=Fe,this.props={handle:{name:"off",params:{}}},this.pixelRatio=1,this._transform=(0,r.$I)(),this.eachGroup=(Ye,ot)=>{if(!this.renderObject||!Rn(Ye))return!1;let rt=!1;const St=this.renderObject.values.uGroupCount.ref.value,{elements:vt}=Ye;for(const{groupId:mn,instanceId:zt}of vt)ot(To.IX.ofSingleton(zt*St+mn))&&(rt=!0);return rt},this.scene=Q.Z.create(Fe,"blended"),this.setProps(He)}}const cn={None:0,TranslateScreenXY:1,TranslateObjectX:3,TranslateObjectY:4,TranslateObjectZ:5};function Rn(Tt){return"data-loci"===Tt.kind&&"handle"===Tt.tag}const Yn={debug:i.t.Group(de),camera:i.t.Group({helper:i.t.Group(fr.kf)}),handle:i.t.Group(ct)},br=i.t.getDefaultValues(Yn);class vr{constructor(Fe,He,Ye={}){const ot={...br,...Ye};this.debug=new ye(Fe,He,ot.debug),this.camera=new fr.WT(Fe,ot.camera.helper),this.handle=new dt(Fe,ot.handle)}}class Hr{constructor(Fe,He,Ye={}){this.webgl=Fe;const{gl:ot}=Fe;this.draw=new jn(Fe,He,ot.drawingBufferWidth,ot.drawingBufferHeight,Ye.transparency||"blended"),this.pick=new mt(Fe,this.draw,Ye.pickScale||.25),this.multiSample=new se(Fe,this.draw)}setPickScale(Fe){this.pick.setPickScale(Fe)}setTransparency(Fe){this.draw.setTransparency(Fe)}updateSize(){const{gl:Fe}=this.webgl,He=Math.max(Fe.drawingBufferWidth,2),Ye=Math.max(Fe.drawingBufferHeight,2);this.draw.setSize(He,Ye),this.pick.syncSize(),this.multiSample.syncSize()}}var Mr=n(9359),Fr=n(325),Sr=n(7187);const Ro={...Ve.du,tPreviousLevel:(0,Ne.$G)("texture","alpha","float","nearest"),uInvSize:(0,Ne.w5)("v2"),uOffset:(0,Ne.w5)("v2")},ro=(0,K.NG)("hi-z",Te.e,"\nprecision highp float;\nprecision highp sampler2D;\n\nuniform sampler2D tPreviousLevel;\nuniform vec2 uInvSize;\nuniform vec2 uOffset;\n\nvoid main(void) {\n vec2 position = gl_FragCoord.xy * uInvSize + uOffset;\n\n float x = texture(tPreviousLevel, position).r;\n float y = textureOffset(tPreviousLevel, position, ivec2(-1, 0)).r;\n float z = textureOffset(tPreviousLevel, position, ivec2(-1, -1)).r;\n float w = textureOffset(tPreviousLevel, position, ivec2(0, -1)).r;\n\n gl_FragColor = vec4(max(max(x, y), max(z, w)));\n}\n");var so=n(9886),ho=n(2086),Bo=n(4677);const Go=ho.e.transformMat4,Wo=r.Zb.set,We=so.ey;function Nn(Tt,Fe,He,Ye){return-1===Ye[11]?function Pt(Tt,Fe,He){return Fe*He/((He-Fe)*Tt-He)}(Tt,Fe,He):function Sn(Tt,Fe,He){return Tt*(Fe-He)-Fe}(Tt,Fe,He)}const Ft={enabled:i.t.Boolean(!1,{description:"Hierarchical Z-buffer occlusion culling. Only available for WebGL2."}),maxFrameLag:i.t.Numeric(10,{min:1,max:30,step:1},{description:"Maximum number of frames to wait for Z-buffer data."}),minLevel:i.t.Numeric(3,{min:1,max:10,step:1})};class Qt{clear(){if(!this.supported)return;const{gl:Fe}=this.webgl;(0,Ie.C6)(Fe)&&(null!==this.sync&&(Fe.deleteSync(this.sync),this.sync=null),this.frameLag=0,this.ready=!1,this.debug&&(this.debug.rect.style.display="none",this.debug.container.style.display="none"))}render(Fe){if(!this.supported||!this.props.enabled)return;const{gl:He,state:Ye}=this.webgl;if(!(0,Ie.C6)(He)||null!==this.sync)return;this.nextNear=Fe.near,this.nextFar=Fe.far,r.$I.copy(this.nextView,Fe.view),r.$I.copy(this.nextProjection,Fe.projection),_.g$&&this.webgl.timer.mark("hi-Z"),Ye.disable(He.CULL_FACE),Ye.disable(He.BLEND),Ye.disable(He.DEPTH_TEST),Ye.disable(He.SCISSOR_TEST),Ye.depthMask(!1),Ye.colorMask(!0,!0,!0,!0),Ye.clearColor(0,0,0,0);const ot=this.renderable.values,rt=Math.pow(2,Math.ceil(Math.log(Math.max(He.drawingBufferWidth,He.drawingBufferHeight))/Math.log(2))-1);for(let mn=0,zt=this.levelData.length;mn0?(Sr.IQ.update(ot.uInvSize,an.invSize),Sr.IQ.update(ot.uOffset,Fr.Z.set(ot.uOffset.ref.value,0,0)),Sr.IQ.update(ot.tPreviousLevel,this.levelData[mn-1].texture)):(Sr.IQ.update(ot.uInvSize,Fr.Z.set(ot.uInvSize.ref.value,1/rt,1/rt)),Sr.IQ.update(ot.uOffset,Fr.Z.set(ot.uOffset.ref.value,this.viewport.x/He.drawingBufferWidth,this.viewport.y/He.drawingBufferHeight)),Sr.IQ.update(ot.tPreviousLevel,this.drawPass.depthTextureOpaque)),Ye.currentRenderItemId=-1,Ye.viewport(0,0,an.size[0],an.size[1]),He.clear(He.COLOR_BUFFER_BIT),this.renderable.update(),this.renderable.render(),mn>=this.props.minLevel&&(this.tex.bind(0),He.copyTexSubImage2D(He.TEXTURE_2D,0,an.offset,0,0,0,an.size[0],an.size[1]),this.tex.unbind(0))}this.tex.attachFramebuffer(this.fb,0);const St=this.tex.getWidth(),vt=this.tex.getHeight();He.bindBuffer(He.PIXEL_PACK_BUFFER,this.buf),He.bufferData(He.PIXEL_PACK_BUFFER,this.buffer.byteLength,He.STREAM_READ),He.readPixels(0,0,St,vt,He.RED,He.FLOAT,0),He.bindBuffer(He.PIXEL_PACK_BUFFER,null),this.sync=He.fenceSync(He.SYNC_GPU_COMMANDS_COMPLETE,0),He.flush(),_.g$&&this.webgl.timer.markEnd("hi-Z")}tick(){if(!this.supported||!this.props.enabled||null===this.sync)return;const{gl:Fe}=this.webgl;if(!(0,Ie.C6)(Fe))return;const He=Fe.clientWaitSync(this.sync,0,0);He===Fe.WAIT_FAILED||this.frameLag>=this.props.maxFrameLag?(Fe.deleteSync(this.sync),this.sync=null,this.frameLag=0,this.ready=!1):He===Fe.TIMEOUT_EXPIRED?this.frameLag+=1:(Fe.bindBuffer(Fe.PIXEL_PACK_BUFFER,this.buf),Fe.getBufferSubData(Fe.PIXEL_PACK_BUFFER,0,this.buffer),Fe.bindBuffer(Fe.PIXEL_PACK_BUFFER,null),Fe.deleteSync(this.sync),this.sync=null,this.frameLag=0,this.ready=!0,this.near=this.nextNear,this.far=this.nextFar,r.$I.copy(this.view,this.nextView),r.$I.copy(this.projection,this.nextProjection))}transform(Fe){const{view:He,vp:Ye}=this;return Go(Ye,Fe.center,He),{vp:Ye,r:1.2*Fe.radius+1.52}}project(Fe,He){const{projection:Ye,aabb:ot,viewport:rt}=this;!function xr(Tt,Fe,He,Ye){return-1===Ye[11]?function Kn(Tt,Fe,He,Ye){const ot=Fe[0]*He,rt=Fe[1]*He,St=Fe[2]*He,vt=Fe[2]*Fe[2]-He*He,mn=Math.sqrt(Fe[0]*Fe[0]+vt),zt=(mn*Fe[0]-St)/(mn*Fe[2]+ot)*Ye[0],an=(mn*Fe[0]+St)/(mn*Fe[2]-ot)*Ye[0],Vn=Math.sqrt(Fe[1]*Fe[1]+vt);return Wo(Tt,-.5*an+.5,(Vn*Fe[1]-St)/(Vn*Fe[2]+rt)*Ye[5]*.5+.5,-.5*zt+.5,(Vn*Fe[1]+St)/(Vn*Fe[2]-rt)*Ye[5]*.5+.5)}(Tt,Fe,He,Ye):function dr(Tt,Fe,He,Ye){const ot=Ye[0],rt=Ye[5];return Wo(Tt,(Fe[0]-He)*ot*.5+.5,(Fe[1]+He)*rt*-.5+.5,(Fe[0]+He)*ot*.5+.5,(Fe[1]-He)*rt*-.5+.5)}(Tt,Fe,He,Ye)}(ot,Fe,He,Ye);const St=ot[2]-ot[0],vt=ot[3]-ot[1],mn=Math.max(St*rt.width,vt*rt.height);return{aabb:ot,w:St,h:vt,pr:mn,lod:Math.ceil(We(mn/2))}}setViewport(Fe,He,Ye,ot){if(!this.supported)return;Ye=Math.max(Ye,2),ot=Math.max(ot,2),A.LM.set(this.viewport,Fe,He,Ye,ot);const rt=Math.ceil(Math.log(Math.max(Ye,ot))/Math.log(2));if(rt===this.levelData.length)return;const{minLevel:St}=this.props;this.buffer=new Float32Array(Math.pow(2,rt-St)*Math.pow(2,rt-1-St)),this.tex.define(Math.pow(2,rt-St),Math.pow(2,rt-1-St));for(const mn of this.levelData)mn.framebuffer.destroy(),mn.texture.destroy();this.levelData.length=0;for(let mn=0;mn=St&&(this.levelData[mn].offset=vt,vt+=an.size[0])}this.clear()}setProps(Fe){if(this.supported)if(this.props.minLevel!==Fe.minLevel){Object.assign(this.props,Fe);const{x:He,y:Ye,width:ot,height:rt}=this.viewport;this.setViewport(He,Ye,ot,rt)}else Object.assign(this.props,Fe),this.props.enabled||this.clear()}initDebug(Fe){if(!Fe.parentElement)return;const He=document.createElement("div");Object.assign(He.style,{display:"block",position:"absolute",pointerEvents:"none"}),Fe.parentElement.appendChild(He);const Ye=document.createElement("canvas"),ot=Ye.getContext("2d");if(!ot)throw new Error("Could not create canvas 2d context");Object.assign(Ye.style,{width:"100%",height:"100%",imageRendering:"pixelated",position:"relative",pointerEvents:"none"}),He.appendChild(Ye);const rt=document.createElement("div");Object.assign(rt.style,{display:"none",position:"absolute",pointerEvents:"none"}),Fe.parentElement.appendChild(rt),this.debug={container:He,canvas:Ye,ctx:ot,rect:rt}}canDebug(Fe){return this.supported&&this.props.enabled&&this.ready&&!!this.debug}showRect(Fe,He){if(!this.canDebug(this.debug))return;const{gl:{drawingBufferHeight:Ye},pixelRatio:ot}=this.webgl,{viewport:{x:rt,y:St,width:vt,height:mn}}=this,zt=(Fe[0]*vt+rt)/ot,an=(Fe[1]*mn-St)/ot;Object.assign(this.debug.rect.style,{border:He?"solid red":"solid green",display:"block",left:`${zt}px`,top:`${an+(Ye-mn)/ot}px`,width:(Fe[2]*vt+rt)/ot-zt+"px",height:(Fe[3]*mn-St)/ot-an+"px"})}showBuffer(Fe){if(!this.canDebug(this.debug))return;if(Fe>=this.levelData.length||Fe{if(!this.supported||!this.props.enabled||!this.ready)return!1;const{vp:an,r:Vn}=this.transform(zt),{near:Fn,far:rr,projection:Vr}=this,tr=an[2]+Vn;if(-tr=this.levelData.length||Ao=lo||Yr+1>=lo)return!1;const Co=(lo-Yr-1)*jr+Po+yo;if(tr>Nn(this.buffer[Co],Fn,rr,Vr)||tr>Nn(this.buffer[Co+1],Fn,rr,Vr))return!1;const Eo=(lo-Yr+1-1)*jr+Po+yo;return!(tr>Nn(this.buffer[Eo],Fn,rr,Vr)||tr>Nn(this.buffer[Eo+1],Fn,rr,Vr))};const{gl:rt,extensions:St}=Fe;if(!(0,Ie.C6)(rt)||!St.colorBufferFloat)return _.Bb&&console.log('Missing webgl2 and/or colorBufferFloat support required for "Hi-Z"'),void(this.supported=!1);this.fb=Fe.resources.framebuffer(),this.tex=Fe.resources.texture("image-float32","alpha","float","nearest"),this.tex.attachFramebuffer(this.fb,0);const vt=rt.getParameter(rt.IMPLEMENTATION_COLOR_READ_FORMAT),mn=rt.getParameter(rt.IMPLEMENTATION_COLOR_READ_TYPE);if(vt!==rt.RED||mn!==rt.FLOAT)return _.Bb&&console.log('Missing red/float reading support required for "Hi-Z"'),void(this.supported=!1);this.supported=!0,this.props={...i.t.getDefaultValues(Ft),...ot},this.buf=(0,Bo.Zo)(rt),this.renderable=function po(Tt,Fe){const He={...Ve.OM,tPreviousLevel:Sr.IQ.create(Fe),uInvSize:Sr.IQ.create((0,Fr.Z)()),uOffset:Sr.IQ.create((0,Fr.Z)())},Ye={...Ro},ot=(0,ne.$h)(Tt,"triangles",ro,Ye,He);return(0,be._)(ot,He)}(Fe,this.drawPass.depthTextureOpaque),_.Bb&&Ye&&this.initDebug(Ye)}}const ht={camera:i.t.Group({mode:i.t.Select("perspective",i.t.arrayToOptions(["perspective","orthographic"]),{label:"Camera"}),helper:i.t.Group(fr.kf,{isFlat:!0}),stereo:i.t.MappedStatic("off",{on:i.t.Group(nt),off:i.t.Group({})},{cycle:!0,hideIf:Tt=>"perspective"!==Tt?.mode}),fov:i.t.Numeric(45,{min:10,max:130,step:1},{label:"Field of View"}),manualReset:i.t.Boolean(!1,{isHidden:!0})},{pivot:"mode"}),cameraFog:i.t.MappedStatic("on",{on:i.t.Group({intensity:i.t.Numeric(15,{min:1,max:100,step:1})}),off:i.t.Group({})},{cycle:!0,description:"Show fog in the distance"}),cameraClipping:i.t.Group({radius:i.t.Numeric(100,{min:0,max:99,step:1},{label:"Clipping",description:"How much of the scene to show."}),far:i.t.Boolean(!0,{description:"Hide scene in the distance"}),minNear:i.t.Numeric(5,{min:.1,max:100,step:.1},{description:"Note, may cause performance issues rendering impostors when set too small and cause issues with outline rendering when too close to 0."})},{pivot:"radius"}),viewport:i.t.MappedStatic("canvas",{canvas:i.t.Group({}),"static-frame":i.t.Group({x:i.t.Numeric(0),y:i.t.Numeric(0),width:i.t.Numeric(128),height:i.t.Numeric(128)}),"relative-frame":i.t.Group({x:i.t.Numeric(.33,{min:0,max:1,step:.01}),y:i.t.Numeric(.33,{min:0,max:1,step:.01}),width:i.t.Numeric(.5,{min:.01,max:1,step:.01}),height:i.t.Numeric(.5,{min:.01,max:1,step:.01})})}),cameraResetDurationMs:i.t.Numeric(250,{min:0,max:1e3,step:1},{description:"The time it takes to reset the camera."}),sceneRadiusFactor:i.t.Numeric(1,{min:1,max:10,step:.1}),transparentBackground:i.t.Boolean(!1),dpoitIterations:i.t.Numeric(2,{min:1,max:10,step:1}),pickPadding:i.t.Numeric(3,{min:0,max:10,step:1},{description:"extra pixels to around target to check in case target is empty"}),multiSample:i.t.Group(ce),postprocessing:i.t.Group(Se.co),marking:i.t.Group(Dt),hiZ:i.t.Group(Ft),renderer:i.t.Group(u),trackball:i.t.Group(E),interaction:i.t.Group(we),debug:i.t.Group(de),handle:i.t.Group(ct)},pt=i.t.getDefaultValues(ht);var Xt;!function(Tt){Tt.DefaultAttribs={powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,antialias:!0,preserveDrawingBuffer:!0,preferWebGl1:!1,handleResize:()=>{}},Tt.Params={pixelScale:i.t.Numeric(1,{min:.1,max:2,step:.05}),pickScale:i.t.Numeric(.25,{min:.1,max:1,step:.05}),transparency:i.t.Select("wboit",[["blended","Blended"],["wboit","Weighted, Blended"],["dpoit","Depth Peeling"]])},Tt.DefaultProps=i.t.getDefaultValues(Tt.Params),Tt.fromCanvas=function Fe(He,Ye,ot={},rt={}){const St={...Tt.DefaultAttribs,...ot},vt={...Tt.DefaultProps,...rt},{powerPreference:mn,failIfMajorPerformanceCaveat:zt,antialias:an,preserveDrawingBuffer:Vn,preferWebGl1:Fn}=St,rr=(0,L.$i)(He,{powerPreference:mn,failIfMajorPerformanceCaveat:zt,antialias:an,preserveDrawingBuffer:Vn,alpha:!0,depth:!0,premultipliedAlpha:!0,preferWebGl1:Fn});if(null===rr)throw new Error("Could not create a WebGL rendering context");const{pixelScale:Vr,pickScale:tr,transparency:Tr}=vt,oo=t.bP.fromElement(He,{pixelScale:Vr,preventGestures:!0}),Gr=(0,L.q6)(rr,{pixelScale:Vr}),Ao=new Hr(Gr,Ye,{pickScale:tr,transparency:Tr});if(_.Bb){const lo=rr.getExtension("WEBGL_lose_context");lo&&He.addEventListener("mousedown",So=>{Gr.isContextLost||!So.shiftKey||!So.ctrlKey||!So.altKey||(_.Bb&&console.log("lose context"),lo.loseContext(),setTimeout(()=>{Gr.isContextLost&&(_.Bb&&console.log("restore context"),lo.restoreContext())},1e3))},!1)}const yo=new e.t(0),vo=lo=>{Gr.setContextLost(),lo.preventDefault(),_.Bb&&console.log("context lost"),yo.next((0,o.t)())},Kr=()=>{Gr.isContextLost&&(Gr.handleContextRestored(()=>{Ao.draw.reset()}),_.Bb&&console.log("context restored"))};He.addEventListener("webglcontextlost",vo,!1),He.addEventListener("webglcontextrestored",Kr,!1);const Do=new e.t(void 0);return{canvas:He,webgl:Gr,input:oo,passes:Ao,attribs:St,get props(){return{...vt}},contextLost:yo,contextRestored:Gr.contextRestored,assetManager:Ye,changed:Do,setProps:lo=>{if(!lo)return;let So=!1;void 0!==lo.pixelScale&&lo.pixelScale!==vt.pixelScale&&(vt.pixelScale=lo.pixelScale,oo.setPixelScale(lo.pixelScale),Gr.setPixelScale(lo.pixelScale),St.handleResize(),So=!0),void 0!==lo.pickScale&&lo.pickScale!==vt.pickScale&&(vt.pickScale=lo.pickScale,Ao.setPickScale(lo.pickScale),So=!0),void 0!==lo.transparency&&lo.transparency!==vt.transparency&&(vt.transparency=lo.transparency,Ao.setTransparency(lo.transparency),So=!0),So&&Do.next(void 0)},dispose:lo=>{oo.dispose(),He.removeEventListener("webglcontextlost",vo,!1),He.removeEventListener("webglcontextrestored",Kr,!1),Gr.destroy(lo)}}}}(Xt||(Xt={}));const fn=typeof window<"u"?window.requestAnimationFrame:Tt=>setImmediate(()=>Tt(Date.now())),on=typeof window<"u"?window.cancelAnimationFrame:Tt=>clearImmediate(Tt);var En;!function(Tt){Tt.create=function Fe(He,Ye={}){var ot;const{webgl:rt,input:St,passes:vt,assetManager:mn,canvas:zt}=He,an={...(0,Mr.Go)(pt),...(0,Mr.Go)(Ye)},Vn=new Map,Fn=new Map,rr=new e.t(0);let Vr=(0,o.t)();const tr=new e.t(0),Tr=new e.t(0),oo=new e.t(0),{gl:Gr,contextRestored:Ao}=rt;let yo=0,vo=0,Kr=128,Do=128,lo=!1,So=0;st();const ao=Q.Z.create(rt,vt.draw.transparency);function Po(){return ao.boundingSphere.radius*an.sceneRadiusFactor}const Yr=new V.i({position:r.eB.create(0,0,100),mode:an.camera.mode,fog:"on"===an.cameraFog.name?an.cameraFog.params.intensity:0,clipFar:an.cameraClipping.far,minNear:an.cameraClipping.minNear,fov:(0,v.pu)(an.camera.fov)},{x:yo,y:vo,width:Kr,height:Do}),jr=new Lt(Yr,an.camera.stereo.params),Co=T.create(St,Yr,ao,an.trackball),Eo=new vr(rt,ao,an),Fo=new Qt(rt,vt.draw,zt,an.hiZ),ei=h.create(rt,an.renderer);ei.setOcclusionTest(Fo.isOccluded);const Yo=new _t(rt,ei,ao,Eo,vt.pick,{x:yo,y:vo,width:Kr,height:Do},an.pickPadding),ci=new Oe(kr,qi,St,Yr,Co,an.interaction),Jo=new ge(vt.multiSample);vt.draw.postprocessing.background.update(Yr,an.postprocessing.background,at=>{at&&Ri()});let hi,No,Fi=!1,Ci=!1,mi=!0;function qi(at){let Et=G.BL,Nt=w.YL.Empty;if(at){const qt=Eo.camera.getLoci(at);if(qt!==G.BL)return{loci:qt,repr:Nt};Et=Eo.handle.getLoci(at),Vn.forEach((Cn,Un)=>{const vn=Un.getLoci(at);(0,G.$M)(vn)||((0,G.$M)(Et)||console.warn("found another loci, this should not happen"),Et=vn,Nt=Un)})}return{loci:Et,repr:Nt}}let Oi=[];function Si(at,Et){const{repr:Nt,loci:qt}=at;let Cn=!1;return Nt?Cn=Nt.mark(qt,Et)||Cn:Vn.forEach((Un,vn)=>{Cn=vn.mark(qt,Et)||Cn}),Cn=Eo.handle.mark(qt,Et)||Cn,Cn=Eo.camera.mark(qt,Et)||Cn,Cn}let ni=!1,gi=!1;function Wi(at){gi||function Pi(at){if(rt.isContextLost)return!1;let Et=!1;if(Ci&&(Jn(!1),Ci=!1,Et=!0),yo>Gr.drawingBufferWidth||yo+Kr<0||vo>Gr.drawingBufferHeight||vo+Do<0)return!1;const Nt=function es(){let at=!1;for(const[Et,Nt]of Oi)at=Si(Et,Nt)||at;return Oi=[],at&&(ao.update(void 0,!0),Eo.handle.scene.update(void 0,!0),Eo.camera.scene.update(void 0,!0)),at}()&&(ei.props.colorMarker||an.marking.enabled);let qt=!1;Co.update(So);const Cn=Yr.update(),Un=at||Cn||Et||lo;lo=!1;const vn=Jo.update(Nt||Un,an.multiSample);if(Un||vn||Nt){let nr=Yr;"on"===an.camera.stereo.name&&(jr.update(),nr=jr),_.g$&&rt.timer.mark("Canvas3D.render",!0);const pr={renderer:ei,camera:nr,scene:ao,helper:Eo};se.isEnabled(an.multiSample)?Jo.render(pr,an,!0,an.multiSample.reduceFlicker&&!Cn&&Nt&&!Co.isAnimating):vt.draw.render(pr,an,!0),Fo.render(Yr),_.g$&&rt.timer.markEnd("Canvas3D.render"),Yo.dirty=Yo.dirty||Un,qt=!0}return qt}(!!at?.force)&&mi&&tr.next((0,o.t)()-Vr)}function Ri(){lo=!0}let Qi=0;function Hn(at,Et){So=at,Qr(Et?.isSynchronous),Et?.updateControls&&Co.update(So),Yr.transition.tick(So),Fo.tick(),!Et?.manualDraw&&(Wi(),!Yr.transition.inTransition&&!rt.isContextLost&&ci.tick(So))}function qr(){Hn((0,o.t)()),Qi=fn(qr)}function kr(at,Et){return rt.isContextLost?void 0:Yo.identify(at,Et,"on"===an.camera.stereo.name?jr:Yr)}function Qr(at=!1){(function Vi(at){return!ao.needsCommit||($.f8.copy(Ti,ao.boundingSphereVisible),Fo.clear(),ao.commit(at?void 0:bi)?(oo.next(0),Eo.debug.isEnabled&&Eo.debug.update(),!an.camera.manualReset&&(0===rr.value||function Li(){if(0===Yr.state.radiusMax)return!0;if(Yr.transition.inTransition||No)return!1;let at=!0,Et=!0;$.f8.set(Bi,Yr.state.target,Yr.state.radius);for(const Nt of ao.renderables){if(!Nt.state.visible)continue;const qt=Nt.values.boundingSphere.ref.value;if(!qt.radius)continue;Et=!1;const Cn=r.eB.distance(Bi.center,qt.center);if((Cn>Bi.radius||Cn>qt.radius||qt.radius>Yr.state.radiusMax)&&!$.f8.includes(Ti,qt))return!0;$.f8.overlaps(Bi,qt)&&(at=!1)}return at||!Et&&Bi.radius<=.1}())&&(Fi=!0),0===Ti.radius&&(hi=0),an.camera.manualReset||Yr.setState({radiusMax:Po()},0),rr.next(Vn.size),_.Bb&&Ei(),!0):(oo.next(ao.commitQueueSize),!1))})(at)&&(function vi(){if(!Fi)return;const at=ao.boundingSphereVisible,{center:Et,radius:Nt}=at,qt=Co.props.autoAdjustMinMaxDistance;if("on"===qt.name){const Cn=qt.params.minDistanceFactor*Nt+qt.params.minDistancePadding,Un=Math.max(qt.params.maxDistanceFactor*Nt,qt.params.maxDistanceMin);Co.setProps({minDistance:Cn,maxDistance:Un})}if(Nt>0){const Cn=void 0===hi?an.cameraResetDurationMs:hi,Un=Yr.getFocus(Et,Nt),vn="function"==typeof No?No(ao,Yr):No,nr=vn?{...Un,...vn}:Un;Yr.setState({...nr,radiusMax:Po()},Cn)}hi=void 0,No=void 0,Fi=!1}(),ni&&(Eo.debug.isEnabled&&Eo.debug.update(),Wi({force:!0}),ni=!1),Tr.next((0,o.t)()))}const Ti=(0,$.f8)(),Bi=(0,$.f8)(),bi=250;function Ei(){const at=ao.renderables.map(Cn=>({drawCount:Cn.values.drawCount.ref.value,instanceCount:Cn.values.instanceCount.ref.value,materialId:Cn.materialId,renderItemId:Cn.id}));console.groupCollapsed(`${at.length} RenderItems`),at.length<50?console.table(at):console.log(at),console.log(JSON.stringify(rt.stats,void 0,4));const{texture:Et,attribute:Nt,elements:qt}=rt.resources.getByteCounts();console.log(JSON.stringify({texture:`${(Et/1024/1024).toFixed(3)} MiB`,attribute:`${(Nt/1024/1024).toFixed(3)} MiB`,elements:`${(qt/1024/1024).toFixed(3)} MiB`},void 0,4)),console.log(JSON.stringify(rt.timer.formatedStats(),void 0,4)),console.groupEnd()}function kn(){const at=ao.boundingSphere.radius>0?100-Math.round(Yr.transition.target.radius/Po()*100):0;return{camera:{mode:Yr.state.mode,helper:{...Eo.camera.props},stereo:{...an.camera.stereo},fov:Math.round((0,v.H)(Yr.state.fov)),manualReset:!!an.camera.manualReset},cameraFog:Yr.state.fog>0?{name:"on",params:{intensity:Yr.state.fog}}:{name:"off",params:{}},cameraClipping:{far:Yr.state.clipFar,radius:at,minNear:Yr.state.minNear},cameraResetDurationMs:an.cameraResetDurationMs,sceneRadiusFactor:an.sceneRadiusFactor,transparentBackground:an.transparentBackground,dpoitIterations:an.dpoitIterations,pickPadding:an.pickPadding,viewport:an.viewport,postprocessing:{...an.postprocessing},marking:{...an.marking},multiSample:{...an.multiSample},hiZ:{...Fo.props},renderer:{...ei.props},trackball:{...Co.props},interaction:{...ci.props},debug:{...Eo.debug.props},handle:{...Eo.handle.props}}}const ur=Ao.subscribe(()=>{Yo.dirty=!0,Wi({force:!0}),Wi({force:!0})}),sr=new e.t(0);function Jn(at=!0){vt.updateSize(),st(),et(),at&&Ri(),sr.next(+new Date)}(0,_.fv)(Ei);const Br=null===(ot=He.changed)||void 0===ot?void 0:ot.subscribe(()=>{ao.setTransparency(vt.draw.transparency),Ri()});if(_.Bb&&zt){let at;const Et=Nt=>{const qt=Nt&&G.QN.getBoundingSphere(G.QN.normalize(Nt,"residue"));Fo.debugOcclusion(qt)};St.click.subscribe(Nt=>{if(!Nt.modifiers.control||2!==Nt.button)return;const qt=kr(Nt.x,Nt.y);if(!qt)return at=void 0,void Et(at);at=qi(qt.id).loci,Et(at)}),tr.subscribe(()=>{setTimeout(()=>{Et(at)},100)})}return{webgl:rt,add:function ln(at){!function Gn(at){Fn.has(at)||Fn.set(at,at.updated.subscribe(Et=>{at.state.syncManually||ln(at)}))}(at);const Et=Vn.get(at),Nt=new Set;at.renderObjects.forEach(qt=>Nt.add(qt)),Et?xe.M.areEqual(Nt,Et)||(Nt.forEach(qt=>{Et.has(qt)||ao.add(qt)}),Et.forEach(qt=>{Nt.has(qt)||ao.remove(qt)})):at.renderObjects.forEach(qt=>ao.add(qt)),Vn.set(at,Nt),ao.update(at.renderObjects,!1),ni=!0,_.Bb&&Ei()},remove:function Ht(at){!function ar(at){const Et=Fn.get(at);Et&&(Et.unsubscribe(),Fn.delete(at))}(at);const Et=Vn.get(at);Et&&(Et.forEach(Nt=>ao.remove(Nt)),Vn.delete(at),ni=!0,_.Bb&&Ei())},commit:Qr,update:(at,Et)=>{if(at){if(!Vn.has(at))return;ao.update(at.renderObjects,!!Et)}else ao.update(void 0,!!Et);ni=!0},clear:()=>{Fn.forEach(at=>at.unsubscribe()),Fn.clear(),Vn.clear(),ao.clear(),Eo.debug.clear(),Ri(),rr.next(Vn.size)},syncVisibility:()=>{0===Yr.state.radiusMax&&(Fi=!0,hi=0),ao.syncVisibility()&&Eo.debug.isEnabled&&Eo.debug.update(),Ri()},requestDraw:Ri,tick:Hn,animate:function zr(){gi=!1,Co.start((0,o.t)()),0===Qi&&qr()},resetTime:function co(at){Vr=at,Co.start(at)},pause:function lr(at=!1){gi=at,on(Qi),Qi=0},resume:()=>{gi=!1},identify:kr,mark:function ti(at,Et){Oi.push([at,Et])},getLoci:qi,handleResize:Jn,requestResize:()=>{Ci=!0},requestCameraReset:at=>{hi=at?.durationMs,No=at?.snapshot,Fi=!0},camera:Yr,boundingSphere:ao.boundingSphere,boundingSphereVisible:ao.boundingSphereVisible,get notifyDidDraw(){return mi},set notifyDidDraw(at){mi=at},didDraw:tr,commited:Tr,commitQueueSize:oo,reprCount:rr,resized:sr,setProps:(at,Et=!1)=>{var Nt,qt,Cn,Un;const vn="function"==typeof at?(0,or.jM)(kn(),at):at;void 0!==vn.sceneRadiusFactor&&(an.sceneRadiusFactor=vn.sceneRadiusFactor,Yr.setState({radiusMax:Po()},0));const nr=Object.create(null);vn.camera&&void 0!==vn.camera.mode&&vn.camera.mode!==Yr.state.mode&&(nr.mode=vn.camera.mode);const pr=Math.round((0,v.H)(Yr.state.fov));if(vn.camera&&void 0!==vn.camera.fov&&vn.camera.fov!==pr&&(nr.fov=(0,v.pu)(vn.camera.fov)),void 0!==vn.cameraFog&&vn.cameraFog.params){const Rr="on"===vn.cameraFog.name?vn.cameraFog.params.intensity:0;Rr!==Yr.state.fog&&(nr.fog=Rr)}if(void 0!==vn.cameraClipping&&(void 0!==vn.cameraClipping.far&&vn.cameraClipping.far!==Yr.state.clipFar&&(nr.clipFar=vn.cameraClipping.far),void 0!==vn.cameraClipping.minNear&&vn.cameraClipping.minNear!==Yr.state.minNear&&(nr.minNear=vn.cameraClipping.minNear),void 0!==vn.cameraClipping.radius)){const Rr=Po()/100*(100-vn.cameraClipping.radius);Rr>0&&Rr!==nr.radius&&(nr.radius=Math.max(Rr,.01))}Object.keys(nr).length>0&&Yr.setState(nr),!(null===(Nt=vn.camera)||void 0===Nt)&&Nt.helper&&Eo.camera.setProps(vn.camera.helper),void 0!==(null===(qt=vn.camera)||void 0===qt?void 0:qt.manualReset)&&(an.camera.manualReset=vn.camera.manualReset),void 0!==(null===(Cn=vn.camera)||void 0===Cn?void 0:Cn.stereo)&&(Object.assign(an.camera.stereo,vn.camera.stereo),jr.setProps(an.camera.stereo.params)),void 0!==vn.cameraResetDurationMs&&(an.cameraResetDurationMs=vn.cameraResetDurationMs),void 0!==vn.transparentBackground&&(an.transparentBackground=vn.transparentBackground),void 0!==vn.dpoitIterations&&(an.dpoitIterations=vn.dpoitIterations),void 0!==vn.pickPadding&&(an.pickPadding=vn.pickPadding),void 0!==vn.viewport&&(an.viewport===vn.viewport||an.viewport.name===vn.viewport.name&&(0,c.bN)(an.viewport.params,vn.viewport.params)||(an.viewport=vn.viewport,st(),et())),!(null===(Un=vn.postprocessing)||void 0===Un)&&Un.background&&(Object.assign(an.postprocessing.background,vn.postprocessing.background),vt.draw.postprocessing.background.update(Yr,an.postprocessing.background,Rr=>{Rr&&!Et&&Ri()})),vn.postprocessing&&Object.assign(an.postprocessing,vn.postprocessing),vn.marking&&Object.assign(an.marking,vn.marking),vn.multiSample&&Object.assign(an.multiSample,vn.multiSample),vn.hiZ&&Fo.setProps(vn.hiZ),vn.renderer&&ei.setProps(vn.renderer),vn.trackball&&Co.setProps(vn.trackball),vn.interaction&&ci.setProps(vn.interaction),vn.debug&&Eo.debug.setProps(vn.debug),vn.handle&&Eo.handle.setProps(vn.handle),"orthographic"===nr.mode&&(an.camera.stereo.name="off"),Et||Ri()},getImagePass:(at={})=>new Pr(rt,mn,ei,ao,Yr,Eo,vt.draw.transparency,at),getRenderObjects(){const at=[];return ao.forEach((Et,Nt)=>at.push(Nt)),at},get props(){return kn()},get input(){return St},get stats(){return ei.stats},get interaction(){return ci.events},dispose:()=>{ur.unsubscribe(),Br?.unsubscribe(),on(Qi),Oi=[],ao.clear(),Eo.debug.clear(),Co.dispose(),ei.dispose(),ci.dispose(),Fo.dispose(),(0,_.EF)(Ei)}};function st(){const at=yo,Et=vo,Nt=Kr,qt=Do;"canvas"===an.viewport.name?(yo=0,vo=0,Kr=Gr.drawingBufferWidth,Do=Gr.drawingBufferHeight):"static-frame"===an.viewport.name?(yo=an.viewport.params.x*rt.pixelRatio,Do=an.viewport.params.height*rt.pixelRatio,vo=Gr.drawingBufferHeight-Do-an.viewport.params.y*rt.pixelRatio,Kr=an.viewport.params.width*rt.pixelRatio):"relative-frame"===an.viewport.name&&(yo=Math.round(an.viewport.params.x*Gr.drawingBufferWidth),Do=Math.round(an.viewport.params.height*Gr.drawingBufferHeight),vo=Math.round(Gr.drawingBufferHeight-Do-an.viewport.params.y*Gr.drawingBufferHeight),Kr=Math.round(an.viewport.params.width*Gr.drawingBufferWidth)),(at!==yo||Et!==vo||Nt!==Kr||qt!==Do)&&(lo=!0)}function et(){Yo.setViewport(yo,vo,Kr,Do),ei.setViewport(yo,vo,Kr,Do),A.LM.set(Yr.viewport,yo,vo,Kr,Do),A.LM.set(Co.viewport,yo,vo,Kr,Do),Fo.setViewport(yo,vo,Kr,Do)}}}(En||(En={}))},7028:(tn,Ue,n)=>{"use strict";n.d(Ue,{E2:()=>f,Nz:()=>S,WT:()=>a,kf:()=>h});var e=n(1025),o=n(7103),r=n(2802),t=n(4439),A=n(9283),y=n(573),c=n(4255),i=n(7377),v=n(4536),O=n(5384),b=n(4369),_=n(3246),M=n(3558),I=n(5117),l=n(2745),m=n(6825),u=n(8277),d=n(1372),s=n(5276);const C={alpha:u.t.Numeric(.51,{min:0,max:1,step:.01},{isEssential:!0,label:"Opacity"}),colorX:u.t.Color(l.s.red,{isEssential:!0}),colorY:u.t.Color(l.s.green,{isEssential:!0}),colorZ:u.t.Color(l.s.blue,{isEssential:!0}),scale:u.t.Numeric(.33,{min:.1,max:2,step:.1},{isEssential:!0}),location:u.t.Select("bottom-left",u.t.arrayToOptions(["bottom-left","bottom-right","top-left","top-right"])),locationOffsetX:u.t.Numeric(0),locationOffsetY:u.t.Numeric(0),originColor:u.t.Color(l.s.grey),radiusScale:u.t.Numeric(.075,{min:.01,max:.3,step:.001}),showPlanes:u.t.Boolean(!0),planeColorXY:u.t.Color(l.s.grey,{label:"Plane Color XY"}),planeColorXZ:u.t.Color(l.s.grey,{label:"Plane Color XZ"}),planeColorYZ:u.t.Color(l.s.grey,{label:"Plane Color YZ"}),showLabels:u.t.Boolean(!1),labelX:u.t.Text("X"),labelY:u.t.Text("Y"),labelZ:u.t.Text("Z"),labelColorX:u.t.Color(l.s.grey),labelColorY:u.t.Color(l.s.grey),labelColorZ:u.t.Color(l.s.grey),labelOpacity:u.t.Numeric(1,{min:0,max:1,step:.01}),labelScale:u.t.Numeric(.25,{min:.1,max:1,step:.01})},h={axes:u.t.MappedStatic("on",{on:u.t.Group(C),off:u.t.Group({})},{cycle:!0,description:"Show camera orientation axes"})};class a{constructor(U,N={}){this.webgl=U,this.props={axes:{name:"off",params:{}}},this.pixelRatio=1,this.eachGroup=(k,H)=>{if(!f(k))return!1;let $=!1;if(this.meshRenderObject){const J=this.meshRenderObject.values.uGroupCount.ref.value;for(const{groupId:W,instanceId:te}of k.elements)H(o.I.ofSingleton(te*J+W))&&($=!0)}if(this.textRenderObject){const J=this.textRenderObject.values.uGroupCount.ref.value;for(const{groupId:W,instanceId:te}of k.elements)H(o.I.ofSingleton(te*J+W))&&($=!0)}return $},this.scene=v.Z.create(U,"blended"),this.camera=new s.i,b.eB.set(this.camera.up,0,1,0),b.eB.set(this.camera.target,0,0,0),this.setProps(N)}setProps(U){this.props=(0,e.jM)(this.props,N=>{if(void 0!==U.axes&&(N.axes.name=U.axes.name,"on"===U.axes.name)){this.scene.clear(),this.pixelRatio=this.webgl.pixelRatio;const k={...U.axes.params,scale:U.axes.params.scale*this.pixelRatio,labelScale:U.axes.params.labelScale*this.pixelRatio};this.meshRenderObject=function L(V){const U=function T(V,U){const N=100*V.scale,k=function E(V,U){const N=y.P.createState(512,256,U),k=100*V.scale,H=V.radiusScale*k,$=V.showLabels?100*V.labelScale/3:0,J=b.eB.scale((0,b.eB)(),b.eB.unitX,k-$),W=b.eB.scale((0,b.eB)(),b.eB.unitY,k-$),te=b.eB.scale((0,b.eB)(),b.eB.unitZ,k-$),de={radiusTop:H,radiusBottom:H,radialSegments:32};if(N.currentGroup=S.Origin,(0,t.X)(N,b.eB.origin,H,2),N.currentGroup=S.X,(0,t.X)(N,J,H,2),(0,r.y9)(N,b.eB.origin,J,1,de),N.currentGroup=S.Y,(0,t.X)(N,W,H,2),(0,r.y9)(N,b.eB.origin,W,1,de),N.currentGroup=S.Z,(0,t.X)(N,te,H,2),(0,r.y9)(N,b.eB.origin,te,1,de),V.showPlanes){b.eB.scale(J,J,.5),b.eB.scale(W,W,.5),b.eB.scale(te,te,.5),N.currentGroup=S.XY,y.P.addTriangle(N,b.eB.origin,J,W),y.P.addTriangle(N,b.eB.origin,W,J);const ye=b.eB.add((0,b.eB)(),J,W);y.P.addTriangle(N,ye,J,W),y.P.addTriangle(N,ye,W,J),N.currentGroup=S.XZ,y.P.addTriangle(N,b.eB.origin,J,te),y.P.addTriangle(N,b.eB.origin,te,J);const j=b.eB.add((0,b.eB)(),J,te);y.P.addTriangle(N,j,J,te),y.P.addTriangle(N,j,te,J),N.currentGroup=S.YZ,y.P.addTriangle(N,b.eB.origin,W,te),y.P.addTriangle(N,b.eB.origin,te,W);const Z=b.eB.add((0,b.eB)(),W,te);y.P.addTriangle(N,Z,W,te),y.P.addTriangle(N,Z,te,W)}return y.P.getMesh(N)}(V,U?.geometry);k.setBoundingSphere(O.f8.create(b.eB.create(N/2,N/2,N/2),N+N/4));return M.y.create("axes-mesh",{},k,$=>{switch($){case S.X:return V.colorX;case S.Y:return V.colorY;case S.Z:return V.colorZ;case S.XY:return V.planeColorXY;case S.XZ:return V.planeColorXZ;case S.YZ:return V.planeColorYZ;case S.Origin:return V.originColor;default:return l.s.grey}},()=>1,()=>"")}(V);return M.y.createRenderObject(U,{...u.t.getDefaultValues(A.e.Params),...V,ignoreLight:!0,cellSize:0})}(k),this.scene.add(this.meshRenderObject),U.axes.params.showLabels?(this.textRenderObject=function G(V){const U=function Q(V,U){const N=100*V.scale,k=function w(V,U){const N=i.t.create(V,8,8,U),k=100*V.scale,H=b.eB.scale((0,b.eB)(),b.eB.unitX,k),$=b.eB.scale((0,b.eB)(),b.eB.unitY,k),J=b.eB.scale((0,b.eB)(),b.eB.unitZ,k),W=100*V.labelScale;return N.add(V.labelX,H[0],H[1],H[2],0,W,S.X),N.add(V.labelY,$[0],$[1],$[2],0,W,S.Y),N.add(V.labelZ,J[0],J[1],J[2],0,W,S.Z),N.getText()}(V,U?.geometry);k.setBoundingSphere(O.f8.create(b.eB.create(N/2,N/2,N/2),N));return M.y.create("axes-text",{},k,$=>{switch($){case S.X:return V.labelColorX;case S.Y:return V.labelColorY;case S.Z:return V.labelColorZ;default:return l.s.grey}},()=>1,()=>"")}(V);return M.y.createRenderObject(U,{...u.t.getDefaultValues(c.E.Params),...V,alpha:V.labelOpacity,cellSize:0})}(k),this.scene.add(this.textRenderObject)):this.textRenderObject=void 0,this.scene.commit(),b.eB.set(this.camera.position,0,0,200*k.scale),b.$I.lookAt(this.camera.view,this.camera.position,this.camera.target,this.camera.up),N.axes.params={...U.axes.params}}})}get isEnabled(){return"on"===this.props.axes.name}getLoci(U){const{objectId:N,groupId:k,instanceId:H}=U;return(this.meshRenderObject&&N===this.meshRenderObject.id||this.textRenderObject&&N===this.textRenderObject.id)&&k!==S.None?function R(V,U,N){return(0,_.g9)("camera-axes",V,[{groupId:U,instanceId:N}],void 0,()=>function D(V,U){const N=U.props.axes,k="on"===N.name?N.params.labelX:"X",H="on"===N.name?N.params.labelY:"Y",$="on"===N.name?N.params.labelZ:"Z";switch(V){case S.X:return`${k} Axis`;case S.Y:return`${H} Axis`;case S.Z:return`${$} Axis`;case S.XY:return`${k}${H} Plane`;case S.XZ:return`${k}${$} Plane`;case S.YZ:return`${H}${$} Plane`;case S.Origin:return"Origin";default:return"Axes"}}(U,V))}(this,k,H):_.BL}mark(U,N){return!(!m.sY.is(m.sY.Highlighting,N)||!((0,_.xc)(U)||f(U)&&U.data===this))&&(I.b.mark(this.meshRenderObject,U,N,this.eachGroup)||I.b.mark(this.textRenderObject,U,N,this.eachGroup))}update(U){if(!this.meshRenderObject||"off"===this.props.axes.name)return;this.pixelRatio!==this.webgl.pixelRatio&&this.setProps(this.props),function p(V,U,N){const{near:k,far:H}=V,$=-U.width/2,J=U.width/2,W=U.height/2,te=-U.height/2,de=(J-$)/2,ye=(W-te)/2,j=(J+$)/2,Z=(W+te)/2;let q=j-de,Y=j+de,ee=Z+ye,g=Z-ye;if(N.enabled){const _e=(J-$)/N.width,xe=(W-te)/N.height;q+=_e*N.offsetX,Y=q+_e*N.width,ee-=xe*N.offsetY,g=ee-xe*N.height}b.$I.ortho(V.projection,q,Y,ee,g,k,H)}(this.camera,U.viewport,U.viewOffset),b.$I.extractRotation(this.scene.view,U.view);const N=this.textRenderObject?this.textRenderObject.values.boundingSphere.ref.value.radius:this.meshRenderObject.values.boundingSphere.ref.value.radius,k=this.props.axes.params.location,H=this.props.axes.params.locationOffsetX*this.pixelRatio,$=this.props.axes.params.locationOffsetY*this.pixelRatio;"bottom-left"===k?b.$I.setTranslation(this.scene.view,b.eB.create(-U.viewport.width/2+N+H,-U.viewport.height/2+N+$,0)):"bottom-right"===k?b.$I.setTranslation(this.scene.view,b.eB.create(U.viewport.width/2-N-H,-U.viewport.height/2+N+$,0)):"top-left"===k?b.$I.setTranslation(this.scene.view,b.eB.create(-U.viewport.width/2+N+H,U.viewport.height/2-N-$,0)):"top-right"===k?b.$I.setTranslation(this.scene.view,b.eB.create(U.viewport.width/2-N-H,U.viewport.height/2-N-$,0)):(0,d.dr)(k)}}var S=function(V){return V[V.None=0]="None",V[V.X=1]="X",V[V.Y=2]="Y",V[V.Z=3]="Z",V[V.XY=4]="XY",V[V.XZ=5]="XZ",V[V.YZ=6]="YZ",V[V.Origin=7]="Origin",V}(S||{});function f(V){return"data-loci"===V.kind&&"camera-axes"===V.tag}},3770:(tn,Ue,n)=>{"use strict";n.d(Ue,{c:()=>u,P:()=>d});var e=n(9007),o=n(9421),r=n(4511),t=n(2897),A=n(4143),y=n(4648),c=n(4369),i=n(9909),v=n(8277),O=n(9387),b=n(2629),l=n(1094);const u={strength:v.t.Numeric(1,{min:0,max:3,step:.1}),radius:v.t.Numeric(0,{min:0,max:1,step:.01}),threshold:v.t.Numeric(0,{min:0,max:1,step:.01},{description:"Luminosity threshold",hideIf:G=>"emissive"===G.mode}),mode:v.t.Select("emissive",[["luminosity","Luminosity"],["emissive","Emissive"]])};class d{static isEnabled(V){return"on"===V.bloom.name}constructor(V,U,N){this.webgl=V,this.horizontalBlurTargets=[],this.verticalBlurTargets=[],this.emissiveTarget=V.createRenderTarget(U,N,!0,"uint8","linear","rgba"),this.luminosityTarget=V.createRenderTarget(U,N,!1,"uint8","linear"),this.compositeTarget=V.createRenderTarget(U,N,!1,"uint8","linear");let k=Math.round(U/2),H=Math.round(N/2);for(let J=0;J<5;++J)this.horizontalBlurTargets[J]=V.createRenderTarget(k,H,!1,"uint8","linear"),this.verticalBlurTargets[J]=V.createRenderTarget(k,H,!1,"uint8","linear"),k=Math.round(k/2),H=Math.round(H/2);const $=(0,y.z6)();this.luminosityRenderable=function h(G,V,U,N){const k=V.getWidth(),H=V.getHeight(),$={...e.OM,tColor:i.IQ.create(V),tEmissive:i.IQ.create(U),tDepth:i.IQ.create(N),uTexSizeInv:i.IQ.create(c.ZY.create(1/k,1/H)),uDefaultColor:i.IQ.create((0,c.eB)()),uDefaultOpacity:i.IQ.create(0),uLuminosityThreshold:i.IQ.create(0),uSmoothWidth:i.IQ.create(1),dMode:i.IQ.create("emissive")},J={...s},W=(0,A.$h)(G,"triangles",C,J,$);return(0,o._)(W,$)}(V,$,$,$),this.blurRenderable=function T(G,V){const U=V.getWidth(),N=V.getHeight(),k={...e.OM,tInput:i.IQ.create(V),uTexSizeInv:i.IQ.create(c.ZY.create(1/U,1/N)),uDirection:i.IQ.create((0,c.ZY)()),uGaussianCoefficients:i.IQ.create([]),dKernelRadius:i.IQ.create(D[0])},H={...p},$=(0,A.$h)(G,"triangles",E,H,k);return(0,o._)($,k)}(V,$),this.compositeRenderable=function Q(G,V,U,N,k,H,$,J){const W={...e.OM,uTexSizeInv:i.IQ.create(c.ZY.create(V,U)),tBlur1:i.IQ.create(N),tBlur2:i.IQ.create(k),tBlur3:i.IQ.create(H),tBlur4:i.IQ.create($),tBlur5:i.IQ.create(J),uBloomStrength:i.IQ.create(1),uBloomRadius:i.IQ.create(0),uBloomFactors:i.IQ.create([1,.8,.6,.4,.2]),uBloomTints:i.IQ.create(new Array(15).fill(1))},te={...L},de=(0,A.$h)(G,"triangles",w,te,W);return(0,o._)(de,W)}(V,U,N,this.verticalBlurTargets[0].texture,this.verticalBlurTargets[1].texture,this.verticalBlurTargets[2].texture,this.verticalBlurTargets[3].texture,this.verticalBlurTargets[4].texture),this.copyRenderable=(0,e._0)(V,this.compositeTarget.texture)}setSize(V,U){const N=this.luminosityTarget.getWidth(),k=this.luminosityTarget.getHeight();if(V!==N||U!==k){this.emissiveTarget.setSize(V,U),this.luminosityTarget.setSize(V,U),this.compositeTarget.setSize(V,U);let H=Math.round(V/2),$=Math.round(U/2);for(let J=0;J<5;++J)this.horizontalBlurTargets[J].setSize(H,$),this.verticalBlurTargets[J].setSize(H,$),H=Math.round(H/2),$=Math.round($/2);i.IQ.update(this.luminosityRenderable.values.uTexSizeInv,c.ZY.set(this.compositeRenderable.values.uTexSizeInv.ref.value,1/V,1/U)),i.IQ.update(this.compositeRenderable.values.uTexSizeInv,c.ZY.set(this.compositeRenderable.values.uTexSizeInv.ref.value,1/V,1/U)),i.IQ.update(this.copyRenderable.values.uTexSize,c.ZY.set(this.copyRenderable.values.uTexSize.ref.value,V,U))}}update(V,U,N,k){let H=!1;this.luminosityRenderable.values.tColor.ref.value!==V&&(i.IQ.update(this.luminosityRenderable.values.tColor,V),H=!0),this.luminosityRenderable.values.tEmissive.ref.value!==U&&(i.IQ.update(this.luminosityRenderable.values.tEmissive,U),H=!0),this.luminosityRenderable.values.tDepth.ref.value!==N&&(i.IQ.update(this.luminosityRenderable.values.tDepth,N),H=!0),this.luminosityRenderable.values.dMode.ref.value!==k.mode&&(i.IQ.update(this.luminosityRenderable.values.dMode,k.mode),H=!0),i.IQ.updateIfChanged(this.luminosityRenderable.values.uLuminosityThreshold,k.threshold),H&&this.luminosityRenderable.update();let $=!1;this.blurRenderable.values.tInput.ref.value!==V&&(i.IQ.update(this.blurRenderable.values.tInput,V),$=!0),$&&this.blurRenderable.update(),i.IQ.update(this.compositeRenderable.values.uBloomRadius,k.radius),i.IQ.update(this.compositeRenderable.values.uBloomStrength,k.strength)}render(V,U){b.g$&&this.webgl.timer.mark("BloomPass.render");const{gl:N,state:k}=this.webgl,{x:H,y:$,width:J,height:W}=V;k.viewport(H,$,J,W),k.scissor(H,$,J,W),k.enable(N.SCISSOR_TEST),k.disable(N.BLEND),k.disable(N.DEPTH_TEST),k.depthMask(!1),this.luminosityTarget.bind(),this.luminosityRenderable.render();for(let te=0;te<5;++te){const de=this.horizontalBlurTargets[te].getWidth(),ye=this.horizontalBlurTargets[te].getHeight();k.viewport(0,0,de,ye),k.scissor(0,0,de,ye),i.IQ.update(this.blurRenderable.values.dKernelRadius,D[te]),i.IQ.update(this.blurRenderable.values.uGaussianCoefficients,S(D[te])),i.IQ.update(this.blurRenderable.values.uTexSizeInv,c.ZY.set(this.blurRenderable.values.uTexSizeInv.ref.value,1/de,1/ye)),this.horizontalBlurTargets[te].bind(),i.IQ.update(this.blurRenderable.values.tInput,0===te?this.luminosityTarget.texture:this.verticalBlurTargets[te-1].texture),i.IQ.update(this.blurRenderable.values.uDirection,R),this.blurRenderable.update(),this.blurRenderable.render(),this.verticalBlurTargets[te].bind(),i.IQ.update(this.blurRenderable.values.tInput,this.horizontalBlurTargets[te].texture),i.IQ.update(this.blurRenderable.values.uDirection,f),this.blurRenderable.update(),this.blurRenderable.render()}k.viewport(H,$,J,W),k.scissor(H,$,J,W),this.compositeTarget.bind(),this.compositeRenderable.update(),this.compositeRenderable.render(),U?U.bind():this.webgl.unbindFramebuffer(),k.enable(N.BLEND),k.blendFunc(N.ONE,N.ONE),this.copyRenderable.render(),b.g$&&this.webgl.timer.markEnd("BloomPass.render")}}const s={...e.du,tColor:(0,r.$G)("texture","rgba","ubyte","linear"),tEmissive:(0,r.$G)("texture","rgba","ubyte","linear"),tDepth:(0,r.$G)("texture","rgba","ubyte","nearest"),uTexSizeInv:(0,r.w5)("v2"),uDefaultColor:(0,r.w5)("v3"),uDefaultOpacity:(0,r.w5)("f"),uLuminosityThreshold:(0,r.w5)("f"),uSmoothWidth:(0,r.w5)("f"),dMode:(0,r.$F)("string",["luminosity","emissive"])},C=(0,t.NG)("Bloom Luminosity",O.e,"\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nuniform sampler2D tColor;\nuniform sampler2D tEmissive;\nuniform sampler2D tDepth;\nuniform vec2 uTexSizeInv;\n\nuniform vec3 uDefaultColor;\nuniform float uDefaultOpacity;\nuniform float uLuminosityThreshold;\nuniform float uSmoothWidth;\n\n#include common\n\nfloat getDepth(const in vec2 coords) {\n #ifdef depthTextureSupport\n return texture2D(tDepth, coords).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n #endif\n}\n\nbool isBackground(const in float depth) {\n return depth == 1.0;\n}\n\nvoid main(void) {\n vec2 coords = gl_FragCoord.xy * uTexSizeInv;\n vec4 texel = texture2D(tColor, coords);\n float emissive = texture2D(tEmissive, coords).a;\n float depth = getDepth(coords);\n\n if (isBackground(depth)) {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n return;\n }\n\n vec4 outputColor = vec4(uDefaultColor.rgb, uDefaultOpacity);\n\n #if defined(dMode_luminosity)\n vec3 luma = vec3(0.299, 0.587, 0.114);\n float v = dot(texel.xyz, luma);\n float alpha = smoothstep(uLuminosityThreshold, uLuminosityThreshold + uSmoothWidth, v);\n\n gl_FragColor = mix(outputColor, texel, alpha);\n #elif defined(dMode_emissive)\n gl_FragColor = mix(outputColor, texel, emissive);\n #endif\n}\n"),S=(0,l.E)(function a(G){const V=[];for(let U=0;U{"use strict";n.d(Ue,{w:()=>M,z:()=>I});var e=n(9007),o=n(9421),r=n(4511),t=n(2897),A=n(4143),y=n(4648),c=n(4369),i=n(9909),v=n(8277),O=n(9387),_=n(2629);const M={blurSize:v.t.Numeric(9,{min:1,max:32,step:1}),blurSpread:v.t.Numeric(1,{min:0,max:10,step:.1}),inFocus:v.t.Numeric(0,{min:-5e3,max:5e3,step:1},{description:"Distance from the scene center that will be in focus"}),PPM:v.t.Numeric(20,{min:0,max:5e3,step:.1},{description:"Size of the area that will be in focus"}),center:v.t.Select("camera-target",v.t.arrayToOptions(["scene-center","camera-target"])),mode:v.t.Select("plane",v.t.arrayToOptions(["plane","sphere"]))};class I{static isEnabled(s){return"off"!==s.dof.name}constructor(s,C,h){this.webgl=s,this.target=s.createRenderTarget(C,h,!1);const a=(0,y.z6)();this.renderable=function u(d,s,C,h){const a=s.getWidth(),S=s.getHeight(),D={...e.OM,tDepthOpaque:i.IQ.create(C),tDepthTransparent:i.IQ.create(h),tColor:i.IQ.create(s),uTexSize:i.IQ.create(c.ZY.create(a,S)),uProjection:i.IQ.create(c.$I.identity()),uInvProjection:i.IQ.create(c.$I.identity()),uBounds:i.IQ.create((0,c.Zb)()),uCenter:i.IQ.create((0,c.eB)()),uMode:i.IQ.create(0),dOrthographic:i.IQ.create(0),uNear:i.IQ.create(1),uFar:i.IQ.create(1e4),dBlurSize:i.IQ.create(5),uBlurSpread:i.IQ.create(300),uInFocus:i.IQ.create(20),uPPM:i.IQ.create(20)},R={...l},f=(0,A.$h)(d,"triangles",m,R,D);return(0,o._)(f,D)}(s,a,a,a)}updateState(s){const{gl:C,state:h}=this.webgl;h.enable(C.SCISSOR_TEST),h.disable(C.BLEND),h.disable(C.DEPTH_TEST),h.depthMask(!1);const{x:a,y:S,width:D,height:R}=s;h.viewport(a,S,D,R),h.scissor(a,S,D,R),h.clearColor(0,0,0,1),C.clear(C.COLOR_BUFFER_BIT)}setSize(s,C){const h=this.target.texture.getWidth(),a=this.target.texture.getHeight();(s!==h||C!==a)&&(this.target.setSize(s,C),i.IQ.update(this.renderable.values.uTexSize,c.ZY.set(this.renderable.values.uTexSize.ref.value,s,C)))}update(s,C,h,a,S,D){let R=!1;this.renderable.values.tColor.ref.value!==C&&(i.IQ.update(this.renderable.values.tColor,C),R=!0),this.renderable.values.tDepthOpaque.ref.value!==h&&(i.IQ.update(this.renderable.values.tDepthOpaque,h),R=!0),this.renderable.values.tDepthTransparent.ref.value!==a&&(i.IQ.update(this.renderable.values.tDepthTransparent,a),R=!0);const f="orthographic"===s.state.mode?1:0,p=this.renderable.values.uInvProjection.ref.value;c.$I.invert(p,s.projection);const[E,T]=this.renderable.values.uTexSize.ref.value,L=s.viewport;i.IQ.update(this.renderable.values.uProjection,s.projection),i.IQ.update(this.renderable.values.uInvProjection,p),i.IQ.update(this.renderable.values.uMode,"sphere"===S.mode?1:0),c.Zb.set(this.renderable.values.uBounds.ref.value,L.x/E,L.y/T,(L.x+L.width)/E,(L.y+L.height)/T),i.IQ.update(this.renderable.values.uBounds,this.renderable.values.uBounds.ref.value),i.IQ.updateIfChanged(this.renderable.values.uNear,s.near),i.IQ.updateIfChanged(this.renderable.values.uFar,s.far),i.IQ.updateIfChanged(this.renderable.values.dOrthographic,f),this.renderable.values.dBlurSize.ref.value!==S.blurSize&&(i.IQ.update(this.renderable.values.dBlurSize,S.blurSize),R=!0);const w="scene-center"===S.center?D.center:s.state.target,G=c.eB.distance(s.state.position,w)+S.inFocus;i.IQ.updateIfChanged(this.renderable.values.uInFocus,G);const V=this.renderable.values.uCenter.ref.value;c.eB.transformMat4(V,w,s.view),i.IQ.update(this.renderable.values.uCenter,V),i.IQ.updateIfChanged(this.renderable.values.uBlurSpread,S.blurSpread),i.IQ.updateIfChanged(this.renderable.values.uPPM,S.PPM),R&&this.renderable.update()}render(s,C){_.g$&&this.webgl.timer.mark("DofPass.render"),C?C.bind():this.webgl.unbindFramebuffer(),this.updateState(s),this.renderable.render(),_.g$&&this.webgl.timer.markEnd("DofPass.render")}}const l={...e.du,tDepthOpaque:(0,r.$G)("texture","rgba","ubyte","nearest"),tDepthTransparent:(0,r.$G)("texture","rgba","ubyte","nearest"),tColor:(0,r.$G)("texture","rgba","ubyte","nearest"),uTexSize:(0,r.w5)("v2"),uProjection:(0,r.w5)("m4"),uInvProjection:(0,r.w5)("m4"),uBounds:(0,r.w5)("v4"),uCenter:(0,r.w5)("v3"),uMode:(0,r.w5)("i"),dOrthographic:(0,r.$F)("number"),uNear:(0,r.w5)("f"),uFar:(0,r.w5)("f"),dBlurSize:(0,r.$F)("number"),uBlurSpread:(0,r.w5)("f"),uInFocus:(0,r.w5)("f"),uPPM:(0,r.w5)("f")},m=(0,t.NG)("dof",O.e,"\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n#include common\n\nuniform sampler2D tColor;\nuniform sampler2D tDepthOpaque;\nuniform sampler2D tDepthTransparent;\n\nuniform vec2 uTexSize;\nuniform vec4 uBounds;\n\nuniform float uBlurSpread;\nuniform float uInFocus;\nuniform float uPPM;\n\nuniform float uNear; // Near plane\nuniform float uFar; // Far plane\n\nuniform mat4 uInvProjection; // Inverse projection\nuniform mat4 uProjection; // projection\n\nuniform int uMode; // 0-planar, 1-spherical\nuniform vec3 uCenter; // Center of focus sphere in view space\n\n// Function to convert depth value from depth buffer to view space Z\nfloat getViewZ(const in float depth) {\n #if dOrthographic == 1\n return orthographicDepthToViewZ(depth, uNear, uFar);\n #else\n return perspectiveDepthToViewZ(depth, uNear, uFar);\n #endif\n}\n\n// Retrieve depth from opaque depth texture\nfloat getDepthOpaque(const in vec2 coords) {\n #ifdef depthTextureSupport\n return texture2D(tDepthOpaque, coords).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepthOpaque, coords));\n #endif\n}\n\n// Retrieve depth from transparent depth texture\nfloat getDepthTransparent(const in vec2 coords) {\n return unpackRGBAToDepth(texture2D(tDepthTransparent, coords));\n}\n\nbool isBackground(const in float depth) {\n return depth == 1.0;\n}\n\nfloat getDepth(const in vec2 coords) {\n return min(getDepthOpaque(coords), getDepthTransparent(coords));\n}\n\nfloat getCOC(vec2 uv) {\n float depth = getDepth(uv);\n float viewDist = getViewZ(depth);\n vec3 aposition = screenSpaceToViewSpace(vec3(uv.xy, depth), uInvProjection);\n float focusDist = length(aposition - uCenter);\n float coc = 0.0; // Circle of Confusion\n if (uMode == 0) { // planar Depth of field\n coc = (abs(viewDist) - uInFocus) / uPPM; //focus distance, focus range\n } else if(uMode == 1) { // spherical Depth of field\n coc = focusDist / uPPM ;\n }\n coc = clamp(coc, -1.0, 1.0);\n return coc;\n}\n\n// Simple box blur for blurring the image\nvec3 getBlurredImage(vec2 coords) {\n vec4 blurColor = vec4(0);\n vec2 texelSize = vec2(1.0 / uTexSize.x, 1.0 / uTexSize.y);\n float count = 0.0;\n for (int x = 0; x < int(dBlurSize); x++) {\n for (int y = 0; y < int(dBlurSize); y++) {\n vec2 offset = vec2(float(x) - float(dBlurSize) / 2.0, float(y) - float(dBlurSize) / 2.0);\n vec2 uvPixel = coords.xy + offset * texelSize * uBlurSpread;\n float coc = getCOC(uvPixel);\n coc = smoothstep(0.0, 1.0, abs(coc));\n // mix blurColor with new color with weight coc\n blurColor.rgb = blurColor.rgb + texture2D(tColor, uvPixel).xyz * coc;\n count+=coc;\n }\n }\n blurColor = blurColor / count;\n return blurColor.rgb;\n}\n\n// simplification from https://catlikecoding.com/unity/tutorials/advanced-rendering/depth-of-field/\nvoid main() {\n vec2 uv = gl_FragCoord.xy / uTexSize;\n vec4 color = texture2D(tColor, uv);\n float depth = getDepth(uv);\n\n float viewDist = getViewZ(depth);\n\n vec3 aposition = screenSpaceToViewSpace(vec3(uv.xy, depth), uInvProjection);\n float focusDist = length(aposition - uCenter);\n vec3 blurColor = getBlurredImage(uv);\n\n float coc = getCOC(uv); // Circle of Confusion\n\n // for debugging the coc\n // color.rgb = (coc < 0.0) ? (1.0 - abs(coc)) * vec3(1.0,0.0,0.0) : vec3(0.0, 1.0 - coc, 0.0) ;//mix(color.rgb, blurColor.rgb, abs(coc));\n color.rgb = mix(color.rgb, blurColor, smoothstep(0.0, 1.0, abs(coc))); // Smooth blending based on CoC\n gl_FragColor = color;\n}\n")},3099:(tn,Ue,n)=>{"use strict";n.d(Ue,{SK:()=>Dn,co:()=>Mt,Pv:()=>bn});var e=n(9007),o=n(4511),r=n(2897),t=n(9909),A=n(4143),y=n(9421),c=n(4369),i=n(8277),v=n(9387),I=n(190),m=n(2629);const u={edgeThresholdMin:i.t.Numeric(.0312,{min:.0312,max:.0833,step:1e-4},{description:"Trims the algorithm from processing darks."}),edgeThresholdMax:i.t.Numeric(.063,{min:.063,max:.333,step:.001},{description:"The minimum amount of local contrast required to apply algorithm."}),iterations:i.t.Numeric(12,{min:0,max:16,step:1},{description:"Number of edge exploration steps."}),subpixelQuality:i.t.Numeric(.3,{min:0,max:1,step:.01},{description:"Choose the amount of sub-pixel aliasing removal."})};class d{constructor(It,Dt){this.webgl=It,this.renderable=function h(jt,It){const Dt=It.getWidth(),Ct=It.getHeight(),$t={...e.OM,tColor:t.IQ.create(It),uTexSizeInv:t.IQ.create(c.ZY.create(1/Dt,1/Ct)),dEdgeThresholdMin:t.IQ.create(.0312),dEdgeThresholdMax:t.IQ.create(.125),dIterations:t.IQ.create(12),dSubpixelQuality:t.IQ.create(.3)},Vt={...s},Wt=(0,A.$h)(jt,"triangles",C,Vt,$t);return(0,y._)(Wt,$t)}(It,Dt)}updateState(It){const{gl:Dt,state:Ct}=this.webgl;Ct.enable(Dt.SCISSOR_TEST),Ct.disable(Dt.BLEND),Ct.disable(Dt.DEPTH_TEST),Ct.depthMask(!1);const{x:$t,y:Vt,width:Wt,height:yn}=It;Ct.viewport($t,Vt,Wt,yn),Ct.scissor($t,Vt,Wt,yn),Ct.clearColor(0,0,0,1),Dt.clear(Dt.COLOR_BUFFER_BIT)}setSize(It,Dt){t.IQ.update(this.renderable.values.uTexSizeInv,c.ZY.set(this.renderable.values.uTexSizeInv.ref.value,1/It,1/Dt))}update(It,Dt){const{values:Ct}=this.renderable,{edgeThresholdMin:$t,edgeThresholdMax:Vt,iterations:Wt,subpixelQuality:yn}=Dt;let Zt=!1;Ct.tColor.ref.value!==It&&(t.IQ.update(this.renderable.values.tColor,It),Zt=!0),Ct.dEdgeThresholdMin.ref.value!==$t&&(Zt=!0),t.IQ.updateIfChanged(Ct.dEdgeThresholdMin,$t),Ct.dEdgeThresholdMax.ref.value!==Vt&&(Zt=!0),t.IQ.updateIfChanged(Ct.dEdgeThresholdMax,Vt),Ct.dIterations.ref.value!==Wt&&(Zt=!0),t.IQ.updateIfChanged(Ct.dIterations,Wt),Ct.dSubpixelQuality.ref.value!==yn&&(Zt=!0),t.IQ.updateIfChanged(Ct.dSubpixelQuality,yn),Zt&&this.renderable.update()}render(It,Dt){m.g$&&this.webgl.timer.mark("FxaaPass.render"),Dt?Dt.bind():this.webgl.unbindFramebuffer(),this.updateState(It),this.renderable.render(),m.g$&&this.webgl.timer.markEnd("FxaaPass.render")}}const s={...e.du,tColor:(0,o.$G)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,o.w5)("v2"),dEdgeThresholdMin:(0,o.$F)("number"),dEdgeThresholdMax:(0,o.$F)("number"),dIterations:(0,o.$F)("number"),dSubpixelQuality:(0,o.$F)("number")},C=(0,r.NG)("fxaa",v.e,"\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nuniform sampler2D tColor;\nuniform vec2 uTexSizeInv;\n\n// adapted from https://github.com/kosua20/Rendu\n// MIT License Copyright (c) 2017 Simon Rodriguez\n\n#define QUALITY(q) ((q) < 5 ? 1.0 : ((q) > 5 ? ((q) < 10 ? 2.0 : ((q) < 11 ? 4.0 : 8.0)) : 1.5))\n\nfloat rgb2luma(vec3 rgb){\n return sqrt(dot(rgb, vec3(0.299, 0.587, 0.114)));\n}\n\nfloat sampleLuma(vec2 uv) {\n return rgb2luma(texture2D(tColor, uv).rgb);\n}\n\nfloat sampleLuma(vec2 uv, float uOffset, float vOffset) {\n uv += uTexSizeInv * vec2(uOffset, vOffset);\n return sampleLuma(uv);\n}\n\nvoid main(void) {\n vec2 coords = gl_FragCoord.xy * uTexSizeInv;\n vec2 inverseScreenSize = uTexSizeInv;\n\n vec4 colorCenter = texture2D(tColor, coords);\n\n // Luma at the current fragment\n float lumaCenter = rgb2luma(colorCenter.rgb);\n\n // Luma at the four direct neighbours of the current fragment.\n float lumaDown = sampleLuma(coords, 0.0, -1.0);\n float lumaUp = sampleLuma(coords, 0.0, 1.0);\n float lumaLeft = sampleLuma(coords, -1.0, 0.0);\n float lumaRight = sampleLuma(coords, 1.0, 0.0);\n\n // Find the maximum and minimum luma around the current fragment.\n float lumaMin = min(lumaCenter, min(min(lumaDown, lumaUp), min(lumaLeft, lumaRight)));\n float lumaMax = max(lumaCenter, max(max(lumaDown, lumaUp), max(lumaLeft, lumaRight)));\n\n // Compute the delta.\n float lumaRange = lumaMax - lumaMin;\n\n // If the luma variation is lower that a threshold (or if we are in a really dark area),\n // we are not on an edge, don't perform any AA.\n if (lumaRange < max(dEdgeThresholdMin, lumaMax * dEdgeThresholdMax)) {\n gl_FragColor = colorCenter;\n return;\n }\n\n // Query the 4 remaining corners lumas.\n float lumaDownLeft = sampleLuma(coords, -1.0, -1.0);\n float lumaUpRight = sampleLuma(coords, 1.0, 1.0);\n float lumaUpLeft = sampleLuma(coords, -1.0, 1.0);\n float lumaDownRight = sampleLuma(coords, 1.0, -1.0);\n\n // Combine the four edges lumas (using intermediary variables for future computations\n // with the same values).\n float lumaDownUp = lumaDown + lumaUp;\n float lumaLeftRight = lumaLeft + lumaRight;\n\n // Same for corners\n float lumaLeftCorners = lumaDownLeft + lumaUpLeft;\n float lumaDownCorners = lumaDownLeft + lumaDownRight;\n float lumaRightCorners = lumaDownRight + lumaUpRight;\n float lumaUpCorners = lumaUpRight + lumaUpLeft;\n\n // Compute an estimation of the gradient along the horizontal and vertical axis.\n float edgeHorizontal = abs(-2.0 * lumaLeft + lumaLeftCorners) + abs(-2.0 * lumaCenter + lumaDownUp) * 2.0 + abs(-2.0 * lumaRight + lumaRightCorners);\n float edgeVertical = abs(-2.0 * lumaUp + lumaUpCorners) + abs(-2.0 * lumaCenter + lumaLeftRight) * 2.0 + abs(-2.0 * lumaDown + lumaDownCorners);\n\n // Is the local edge horizontal or vertical ?\n bool isHorizontal = (edgeHorizontal >= edgeVertical);\n\n // Choose the step size (one pixel) accordingly.\n float stepLength = isHorizontal ? inverseScreenSize.y : inverseScreenSize.x;\n\n // Select the two neighboring texels lumas in the opposite direction to the local edge.\n float luma1 = isHorizontal ? lumaDown : lumaLeft;\n float luma2 = isHorizontal ? lumaUp : lumaRight;\n // Compute gradients in this direction.\n float gradient1 = luma1 - lumaCenter;\n float gradient2 = luma2 - lumaCenter;\n\n // Which direction is the steepest ?\n bool is1Steepest = abs(gradient1) >= abs(gradient2);\n\n // Gradient in the corresponding direction, normalized.\n float gradientScaled = 0.25 * max(abs(gradient1), abs(gradient2));\n\n // Average luma in the correct direction.\n float lumaLocalAverage = 0.0;\n if(is1Steepest){\n // Switch the direction\n stepLength = -stepLength;\n lumaLocalAverage = 0.5 * (luma1 + lumaCenter);\n } else {\n lumaLocalAverage = 0.5 * (luma2 + lumaCenter);\n }\n\n // Shift UV in the correct direction by half a pixel.\n vec2 currentUv = coords;\n if(isHorizontal){\n currentUv.y += stepLength * 0.5;\n } else {\n currentUv.x += stepLength * 0.5;\n }\n\n // Compute offset (for each iteration step) in the right direction.\n vec2 offset = isHorizontal ? vec2(inverseScreenSize.x, 0.0) : vec2(0.0, inverseScreenSize.y);\n // Compute UVs to explore on each side of the edge, orthogonally.\n // The QUALITY allows us to step faster.\n vec2 uv1 = currentUv - offset * QUALITY(0);\n vec2 uv2 = currentUv + offset * QUALITY(0);\n\n // Read the lumas at both current extremities of the exploration segment,\n // and compute the delta wrt to the local average luma.\n float lumaEnd1 = sampleLuma(uv1);\n float lumaEnd2 = sampleLuma(uv2);\n lumaEnd1 -= lumaLocalAverage;\n lumaEnd2 -= lumaLocalAverage;\n\n // If the luma deltas at the current extremities is larger than the local gradient,\n // we have reached the side of the edge.\n bool reached1 = abs(lumaEnd1) >= gradientScaled;\n bool reached2 = abs(lumaEnd2) >= gradientScaled;\n bool reachedBoth = reached1 && reached2;\n\n // If the side is not reached, we continue to explore in this direction.\n if(!reached1){\n uv1 -= offset * QUALITY(1);\n }\n if(!reached2){\n uv2 += offset * QUALITY(1);\n }\n\n // If both sides have not been reached, continue to explore.\n if(!reachedBoth){\n for(int i = 2; i < dIterations; i++){\n // If needed, read luma in 1st direction, compute delta.\n if(!reached1){\n lumaEnd1 = sampleLuma(uv1);\n lumaEnd1 = lumaEnd1 - lumaLocalAverage;\n }\n // If needed, read luma in opposite direction, compute delta.\n if(!reached2){\n lumaEnd2 = sampleLuma(uv2);\n lumaEnd2 = lumaEnd2 - lumaLocalAverage;\n }\n // If the luma deltas at the current extremities is larger than the local gradient,\n // we have reached the side of the edge.\n reached1 = abs(lumaEnd1) >= gradientScaled;\n reached2 = abs(lumaEnd2) >= gradientScaled;\n reachedBoth = reached1 && reached2;\n\n // If the side is not reached, we continue to explore in this direction,\n // with a variable quality.\n if(!reached1){\n uv1 -= offset * QUALITY(i);\n }\n if(!reached2){\n uv2 += offset * QUALITY(i);\n }\n\n // If both sides have been reached, stop the exploration.\n if(reachedBoth){\n break;\n }\n }\n }\n\n // Compute the distances to each side edge of the edge (!).\n float distance1 = isHorizontal ? (coords.x - uv1.x) : (coords.y - uv1.y);\n float distance2 = isHorizontal ? (uv2.x - coords.x) : (uv2.y - coords.y);\n\n // In which direction is the side of the edge closer ?\n bool isDirection1 = distance1 < distance2;\n float distanceFinal = min(distance1, distance2);\n\n // Thickness of the edge.\n float edgeThickness = (distance1 + distance2);\n\n // Is the luma at center smaller than the local average ?\n bool isLumaCenterSmaller = lumaCenter < lumaLocalAverage;\n\n // If the luma at center is smaller than at its neighbour,\n // the delta luma at each end should be positive (same variation).\n bool correctVariation1 = (lumaEnd1 < 0.0) != isLumaCenterSmaller;\n bool correctVariation2 = (lumaEnd2 < 0.0) != isLumaCenterSmaller;\n\n // Only keep the result in the direction of the closer side of the edge.\n bool correctVariation = isDirection1 ? correctVariation1 : correctVariation2;\n\n // UV offset: read in the direction of the closest side of the edge.\n float pixelOffset = - distanceFinal / edgeThickness + 0.5;\n\n // If the luma variation is incorrect, do not offset.\n float finalOffset = correctVariation ? pixelOffset : 0.0;\n\n // Sub-pixel shifting\n // Full weighted average of the luma over the 3x3 neighborhood.\n float lumaAverage = (1.0 / 12.0) * (2.0 * (lumaDownUp + lumaLeftRight) + lumaLeftCorners + lumaRightCorners);\n // Ratio of the delta between the global average and the center luma,\n // over the luma range in the 3x3 neighborhood.\n float subPixelOffset1 = clamp(abs(lumaAverage - lumaCenter) / lumaRange, 0.0, 1.0);\n float subPixelOffset2 = (-2.0 * subPixelOffset1 + 3.0) * subPixelOffset1 * subPixelOffset1;\n // Compute a sub-pixel offset based on this delta.\n float subPixelOffsetFinal = subPixelOffset2 * subPixelOffset2 * float(dSubpixelQuality);\n\n // Pick the biggest of the two offsets.\n finalOffset = max(finalOffset, subPixelOffsetFinal);\n\n // Compute the final UV coordinates.\n vec2 finalUv = coords;\n if(isHorizontal){\n finalUv.y += finalOffset * stepLength;\n } else {\n finalUv.x += finalOffset * stepLength;\n }\n\n // Read the color at the new UV coordinates, and use it.\n gl_FragColor = texture2D(tColor, finalUv);\n}\n");var a=n(4648),T=n(7361);const L={edgeThreshold:i.t.Numeric(.1,{min:.05,max:.15,step:.01}),maxSearchSteps:i.t.Numeric(16,{min:0,max:32,step:1})};class w{get supported(){return this._supported}constructor(It,Dt){if(this.webgl=It,this._supported=!1,typeof HTMLImageElement>"u")return void(m.Bb&&console.log('Missing "HTMLImageElement" required for "SMAA"'));const Ct=Dt.getWidth(),$t=Dt.getHeight();this.edgesTarget=It.createRenderTarget(Ct,$t,!1,"uint8","linear"),this.weightsTarget=It.createRenderTarget(Ct,$t,!1,"uint8","linear"),this.edgesRenderable=function V(jt,It){const Dt=It.getWidth(),Ct=It.getHeight(),$t={...e.OM,tColor:t.IQ.create(It),uTexSizeInv:t.IQ.create(c.ZY.create(1/Dt,1/Ct)),uViewport:t.IQ.create((0,c.Zb)()),dEdgeThreshold:t.IQ.create(.1)},Vt={...Q},Wt=(0,A.$h)(jt,"triangles",G,Vt,$t);return(0,y._)(Wt,$t)}(It,Dt),this.weightsRenderable=function k(jt,It){const Dt=It.getWidth(),Ct=It.getHeight(),$t=jt.resources.texture("image-uint8","rgb","ubyte","linear"),Vt=jt.resources.texture("image-uint8","rgba","ubyte","nearest"),Wt={...e.OM,tEdges:t.IQ.create(It),tArea:t.IQ.create($t),tSearch:t.IQ.create(Vt),uTexSizeInv:t.IQ.create(c.ZY.create(1/Dt,1/Ct)),uViewport:t.IQ.create((0,c.Zb)()),dMaxSearchSteps:t.IQ.create(16)};(0,a.pg)("data:image/png;base64,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",Wt.tArea,$t),(0,a.pg)("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAhCAAAAABIXyLAAAAAOElEQVRIx2NgGAWjYBSMglEwEICREYRgFBZBqDCSLA2MGPUIVQETE9iNUAqLR5gIeoQKRgwXjwAAGn4AtaFeYLEAAAAASUVORK5CYII=",Wt.tSearch,Vt);const yn={...U},Zt=(0,A.$h)(jt,"triangles",N,yn,Wt);return(0,y._)(Zt,Wt)}(It,this.edgesTarget.texture),this.blendRenderable=function J(jt,It,Dt){const Ct=It.getWidth(),$t=It.getHeight(),Vt={...e.OM,tColor:t.IQ.create(It),tWeights:t.IQ.create(Dt),uTexSizeInv:t.IQ.create(c.ZY.create(1/Ct,1/$t)),uViewport:t.IQ.create((0,c.Zb)())},Wt={...H},yn=(0,A.$h)(jt,"triangles",$,Wt,Vt);return(0,y._)(yn,Vt)}(It,Dt,this.weightsTarget.texture),this._supported=!0}updateState(It){const{gl:Dt,state:Ct}=this.webgl;Ct.enable(Dt.SCISSOR_TEST),Ct.disable(Dt.BLEND),Ct.disable(Dt.DEPTH_TEST),Ct.depthMask(!1);const{x:$t,y:Vt,width:Wt,height:yn}=It;Ct.viewport($t,Vt,Wt,yn),Ct.scissor($t,Vt,Wt,yn),Ct.colorMask(!0,!0,!0,!0),Ct.clearColor(0,0,0,1),Dt.clear(Dt.COLOR_BUFFER_BIT),t.IQ.update(this.edgesRenderable.values.uViewport,T.LM.toVec4(this.edgesRenderable.values.uViewport.ref.value,It)),t.IQ.update(this.weightsRenderable.values.uViewport,T.LM.toVec4(this.weightsRenderable.values.uViewport.ref.value,It)),t.IQ.update(this.blendRenderable.values.uViewport,T.LM.toVec4(this.blendRenderable.values.uViewport.ref.value,It))}setSize(It,Dt){const Ct=this.edgesTarget.getWidth(),$t=this.edgesTarget.getHeight();(It!==Ct||Dt!==$t)&&(this.edgesTarget.setSize(It,Dt),this.weightsTarget.setSize(It,Dt),t.IQ.update(this.edgesRenderable.values.uTexSizeInv,c.ZY.set(this.edgesRenderable.values.uTexSizeInv.ref.value,1/It,1/Dt)),t.IQ.update(this.weightsRenderable.values.uTexSizeInv,c.ZY.set(this.weightsRenderable.values.uTexSizeInv.ref.value,1/It,1/Dt)),t.IQ.update(this.blendRenderable.values.uTexSizeInv,c.ZY.set(this.blendRenderable.values.uTexSizeInv.ref.value,1/It,1/Dt)))}update(It,Dt){let Ct=!1;this.edgesRenderable.values.tColor.ref.value!==It&&(t.IQ.update(this.edgesRenderable.values.tColor,It),Ct=!0),this.edgesRenderable.values.dEdgeThreshold.ref.value!==Dt.edgeThreshold&&(t.IQ.update(this.edgesRenderable.values.dEdgeThreshold,Dt.edgeThreshold),Ct=!0),Ct&&this.edgesRenderable.update(),this.weightsRenderable.values.dMaxSearchSteps.ref.value!==Dt.maxSearchSteps&&(t.IQ.update(this.weightsRenderable.values.dMaxSearchSteps,Dt.maxSearchSteps),this.weightsRenderable.update()),this.blendRenderable.values.tColor.ref.value!==It&&(t.IQ.update(this.blendRenderable.values.tColor,It),this.blendRenderable.update())}render(It,Dt){m.g$&&this.webgl.timer.mark("SmaaPass.render"),this.edgesTarget.bind(),this.updateState(It),this.edgesRenderable.render(),this.weightsTarget.bind(),this.updateState(It),this.weightsRenderable.render(),Dt?Dt.bind():this.webgl.unbindFramebuffer(),this.updateState(It),this.blendRenderable.render(),m.g$&&this.webgl.timer.markEnd("SmaaPass.render")}}const Q={...e.du,tColor:(0,o.$G)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,o.w5)("v2"),uViewport:(0,o.w5)("v4"),dEdgeThreshold:(0,o.$F)("number")},G=(0,r.NG)("smaa-edges","\nprecision highp float;\n\nattribute vec2 aPosition;\nuniform vec2 uQuadScale;\n\nuniform vec2 uTexSizeInv;\nuniform vec4 uViewport;\n\nvarying vec2 vUv;\nvarying vec4 vOffset[3];\n\nvoid SMAAEdgeDetectionVS(vec2 texCoord) {\n vOffset[0] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-1.0, 0.0, 0.0, 1.0); // WebGL port note: Changed sign in W component\n vOffset[1] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(1.0, 0.0, 0.0, -1.0); // WebGL port note: Changed sign in W component\n vOffset[2] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-2.0, 0.0, 0.0, 2.0); // WebGL port note: Changed sign in W component\n}\n\nvoid main() {\n vec2 scale = uViewport.zw * uTexSizeInv;\n vec2 shift = uViewport.xy * uTexSizeInv;\n vUv = (aPosition + 1.0) * 0.5 * scale + shift;\n SMAAEdgeDetectionVS(vUv);\n vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale;\n gl_Position = vec4(position, 0.0, 1.0);\n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nuniform sampler2D tColor;\nuniform vec2 uTexSizeInv;\n\nvarying vec2 vUv;\nvarying vec4 vOffset[3];\n\nvec4 SMAAColorEdgeDetectionPS(vec2 texcoord, vec4 offset[3], sampler2D colorTex) {\n vec2 threshold = vec2(dEdgeThreshold, dEdgeThreshold);\n\n // Calculate color deltas:\n vec4 delta;\n vec3 C = texture2D(colorTex, texcoord).rgb;\n\n vec3 Cleft = texture2D(colorTex, offset[0].xy).rgb;\n vec3 t = abs(C - Cleft);\n delta.x = max(max(t.r, t.g), t.b);\n\n vec3 Ctop = texture2D(colorTex, offset[0].zw).rgb;\n t = abs(C - Ctop);\n delta.y = max(max(t.r, t.g), t.b);\n\n // We do the usual threshold:\n vec2 edges = step(threshold, delta.xy);\n\n // Then discard if there is no edge:\n if (dot(edges, vec2(1.0, 1.0 )) == 0.0)\n discard;\n\n // Calculate right and bottom deltas:\n vec3 Cright = texture2D(colorTex, offset[1].xy).rgb;\n t = abs( C - Cright );\n delta.z = max(max(t.r, t.g), t.b);\n\n vec3 Cbottom = texture2D(colorTex, offset[1].zw).rgb;\n t = abs(C - Cbottom);\n delta.w = max(max(t.r, t.g), t.b);\n\n // Calculate the maximum delta in the direct neighborhood:\n float maxDelta = max(max(max(delta.x, delta.y), delta.z), delta.w );\n\n // Calculate left-left and top-top deltas:\n vec3 Cleftleft = texture2D(colorTex, offset[2].xy).rgb;\n t = abs( C - Cleftleft );\n delta.z = max(max(t.r, t.g), t.b);\n\n vec3 Ctoptop = texture2D(colorTex, offset[2].zw).rgb;\n t = abs(C - Ctoptop);\n delta.w = max(max(t.r, t.g), t.b);\n\n // Calculate the final maximum delta:\n maxDelta = max(max(maxDelta, delta.z), delta.w);\n\n // Local contrast adaptation in action:\n edges.xy *= step(0.5 * maxDelta, delta.xy);\n\n return vec4(edges, 0.0, 0.0);\n}\n\nvoid main() {\n gl_FragColor = SMAAColorEdgeDetectionPS(vUv, vOffset, tColor);\n}\n"),U={...e.du,tEdges:(0,o.$G)("texture","rgba","ubyte","linear"),tArea:(0,o.$G)("texture","rgb","ubyte","linear"),tSearch:(0,o.$G)("texture","rgba","ubyte","nearest"),uTexSizeInv:(0,o.w5)("v2"),uViewport:(0,o.w5)("v4"),dMaxSearchSteps:(0,o.$F)("number")},N=(0,r.NG)("smaa-weights","\nprecision highp float;\n\nattribute vec2 aPosition;\nuniform vec2 uQuadScale;\n\nuniform vec2 uTexSizeInv;\nuniform vec4 uViewport;\n\nvarying vec2 vUv;\nvarying vec4 vOffset[3];\nvarying vec2 vPixCoord;\n\nvoid SMAABlendingWeightCalculationVS(vec2 texCoord) {\n vPixCoord = texCoord / uTexSizeInv;\n\n // We will use these offsets for the searches later on (see @PSEUDO_GATHER4):\n vOffset[0] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-0.25, 0.125, 1.25, 0.125); // WebGL port note: Changed sign in Y and W components\n vOffset[1] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-0.125, 0.25, -0.125, -1.25); // WebGL port note: Changed sign in Y and W components\n\n // And these for the searches, they indicate the ends of the loops:\n vOffset[2] = vec4(vOffset[0].xz, vOffset[1].yw) + vec4(-2.0, 2.0, -2.0, 2.0) * uTexSizeInv.xxyy * float(dMaxSearchSteps);\n}\n\nvoid main() {\n vec2 scale = uViewport.zw * uTexSizeInv;\n vec2 shift = uViewport.xy * uTexSizeInv;\n vUv = (aPosition + 1.0) * 0.5 * scale + shift;\n SMAABlendingWeightCalculationVS(vUv);\n vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale;\n gl_Position = vec4(position, 0.0, 1.0);\n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n#define SMAASampleLevelZeroOffset(tex, coord, offset) texture2D(tex, coord + float(offset) * uTexSizeInv, 0.0)\n\n#define SMAA_AREATEX_MAX_DISTANCE 16\n#define SMAA_AREATEX_PIXEL_SIZE (1.0 / vec2(160.0, 560.0))\n#define SMAA_AREATEX_SUBTEX_SIZE (1.0 / 7.0)\n\nuniform sampler2D tEdges;\nuniform sampler2D tArea;\nuniform sampler2D tSearch;\nuniform vec2 uTexSizeInv;\n\nvarying vec2 vUv;\nvarying vec4 vOffset[3];\nvarying vec2 vPixCoord;\n\n#if __VERSION__ == 100\n vec2 round(vec2 x) {\n return sign(x) * floor(abs(x) + 0.5);\n }\n#endif\n\nfloat SMAASearchLength(sampler2D searchTex, vec2 e, float bias, float scale) {\n // Not required if searchTex accesses are set to point:\n // float2 SEARCH_TEX_PIXEL_SIZE = 1.0 / float2(66.0, 33.0);\n // e = float2(bias, 0.0) + 0.5 * SEARCH_TEX_PIXEL_SIZE +\n // e * float2(scale, 1.0) * float2(64.0, 32.0) * SEARCH_TEX_PIXEL_SIZE;\n e.r = bias + e.r * scale;\n return 255.0 * texture2D(searchTex, e, 0.0).r;\n}\n\nfloat SMAASearchXLeft(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) {\n /**\n * @PSEUDO_GATHER4\n * This texCoord has been offset by (-0.25, -0.125) in the vertex shader to\n * sample between edge, thus fetching four edges in a row.\n * Sampling with different offsets in each direction allows to disambiguate\n * which edges are active from the four fetched ones.\n */\n vec2 e = vec2(0.0, 1.0);\n\n for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for\n e = texture2D( edgesTex, texCoord, 0.0).rg;\n texCoord -= vec2(2.0, 0.0) * uTexSizeInv;\n if (!(texCoord.x > end && e.g > 0.8281 && e.r == 0.0)) break;\n }\n\n // We correct the previous (-0.25, -0.125) offset we applied:\n texCoord.x += 0.25 * uTexSizeInv.x;\n\n // The searches are bias by 1, so adjust the coords accordingly:\n texCoord.x += uTexSizeInv.x;\n\n // Disambiguate the length added by the last step:\n texCoord.x += 2.0 * uTexSizeInv.x; // Undo last step\n texCoord.x -= uTexSizeInv.x * SMAASearchLength(searchTex, e, 0.0, 0.5);\n\n return texCoord.x;\n}\n\nfloat SMAASearchXRight(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) {\n vec2 e = vec2( 0.0, 1.0 );\n\n for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for\n e = texture2D(edgesTex, texCoord, 0.0).rg;\n texCoord += vec2(2.0, 0.0) * uTexSizeInv;\n if (!(texCoord.x < end && e.g > 0.8281 && e.r == 0.0)) break;\n }\n\n texCoord.x -= 0.25 * uTexSizeInv.x;\n texCoord.x -= uTexSizeInv.x;\n texCoord.x -= 2.0 * uTexSizeInv.x;\n texCoord.x += uTexSizeInv.x * SMAASearchLength( searchTex, e, 0.5, 0.5 );\n\n return texCoord.x;\n}\n\nfloat SMAASearchYUp(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) {\n vec2 e = vec2( 1.0, 0.0 );\n\n for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for\n e = texture2D(edgesTex, texCoord, 0.0).rg;\n texCoord += vec2(0.0, 2.0) * uTexSizeInv; // WebGL port note: Changed sign\n if (!(texCoord.y > end && e.r > 0.8281 && e.g == 0.0)) break;\n }\n\n texCoord.y -= 0.25 * uTexSizeInv.y; // WebGL port note: Changed sign\n texCoord.y -= uTexSizeInv.y; // WebGL port note: Changed sign\n texCoord.y -= 2.0 * uTexSizeInv.y; // WebGL port note: Changed sign\n texCoord.y += uTexSizeInv.y * SMAASearchLength(searchTex, e.gr, 0.0, 0.5); // WebGL port note: Changed sign\n\n return texCoord.y;\n}\n\nfloat SMAASearchYDown(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) {\n vec2 e = vec2( 1.0, 0.0 );\n\n for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for\n e = texture2D(edgesTex, texCoord, 0.0).rg;\n texCoord -= vec2( 0.0, 2.0 ) * uTexSizeInv; // WebGL port note: Changed sign\n if (!(texCoord.y < end && e.r > 0.8281 && e.g == 0.0)) break;\n }\n\n texCoord.y += 0.25 * uTexSizeInv.y; // WebGL port note: Changed sign\n texCoord.y += uTexSizeInv.y; // WebGL port note: Changed sign\n texCoord.y += 2.0 * uTexSizeInv.y; // WebGL port note: Changed sign\n texCoord.y -= uTexSizeInv.y * SMAASearchLength(searchTex, e.gr, 0.5, 0.5); // WebGL port note: Changed sign\n\n return texCoord.y;\n}\n\nvec2 SMAAArea(sampler2D areaTex, vec2 dist, float e1, float e2, float offset) {\n // Rounding prevents precision errors of bilinear filtering:\n vec2 texCoord = float(SMAA_AREATEX_MAX_DISTANCE) * round(4.0 * vec2(e1, e2)) + dist;\n\n // We do a scale and bias for mapping to texel space:\n texCoord = SMAA_AREATEX_PIXEL_SIZE * texCoord + (0.5 * SMAA_AREATEX_PIXEL_SIZE);\n\n // Move to proper place, according to the subpixel offset:\n texCoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset;\n\n return texture2D(areaTex, texCoord, 0.0).rg;\n}\n\nvec4 SMAABlendingWeightCalculationPS(vec2 texCoord, vec2 pixCoord, vec4 offset[3], sampler2D edgesTex, sampler2D areaTex, sampler2D searchTex, ivec4 subsampleIndices) {\n vec4 weights = vec4(0.0, 0.0, 0.0, 0.0);\n\n vec2 e = texture2D(edgesTex, texCoord).rg;\n\n if (e.g > 0.0) { // Edge at north\n vec2 d;\n\n // Find the distance to the left:\n vec2 coords;\n coords.x = SMAASearchXLeft(edgesTex, searchTex, offset[0].xy, offset[2].x );\n coords.y = offset[1].y; // offset[1].y = texCoord.y - 0.25 * uTexSizeInv.y (@CROSSING_OFFSET)\n d.x = coords.x;\n\n // Now fetch the left crossing edges, two at a time using bilinear\n // filtering. Sampling at -0.25 (see @CROSSING_OFFSET) enables to\n // discern what value each edge has:\n float e1 = texture2D(edgesTex, coords, 0.0).r;\n\n // Find the distance to the right:\n coords.x = SMAASearchXRight(edgesTex, searchTex, offset[0].zw, offset[2].y);\n d.y = coords.x;\n\n // We want the distances to be in pixel units (doing this here allow to\n // better interleave arithmetic and memory accesses):\n d = d / uTexSizeInv.x - pixCoord.x;\n\n // SMAAArea below needs a sqrt, as the areas texture is compressed\n // quadratically:\n vec2 sqrt_d = sqrt(abs(d));\n\n // Fetch the right crossing edges:\n coords.y -= 1.0 * uTexSizeInv.y; // WebGL port note: Added\n float e2 = SMAASampleLevelZeroOffset(edgesTex, coords, ivec2(1, 0)).r;\n\n // Ok, we know how this pattern looks like, now it is time for getting\n // the actual area:\n weights.rg = SMAAArea(areaTex, sqrt_d, e1, e2, float(subsampleIndices.y));\n }\n\n if (e.r > 0.0) { // Edge at west\n vec2 d;\n\n // Find the distance to the top:\n vec2 coords;\n\n coords.y = SMAASearchYUp(edgesTex, searchTex, offset[1].xy, offset[2].z );\n coords.x = offset[0].x; // offset[1].x = texCoord.x - 0.25 * uTexSizeInv.x;\n d.x = coords.y;\n\n // Fetch the top crossing edges:\n float e1 = texture2D(edgesTex, coords, 0.0).g;\n\n // Find the distance to the bottom:\n coords.y = SMAASearchYDown(edgesTex, searchTex, offset[1].zw, offset[2].w);\n d.y = coords.y;\n\n // We want the distances to be in pixel units:\n d = d / uTexSizeInv.y - pixCoord.y;\n\n // SMAAArea below needs a sqrt, as the areas texture is compressed\n // quadratically:\n vec2 sqrt_d = sqrt(abs(d));\n\n // Fetch the bottom crossing edges:\n coords.y -= 1.0 * uTexSizeInv.y; // WebGL port note: Added\n float e2 = SMAASampleLevelZeroOffset(edgesTex, coords, ivec2(0, 1)).g;\n\n // Get the area for this direction:\n weights.ba = SMAAArea(areaTex, sqrt_d, e1, e2, float(subsampleIndices.x));\n }\n\n return weights;\n}\n\nvoid main() {\n gl_FragColor = SMAABlendingWeightCalculationPS(vUv, vPixCoord, vOffset, tEdges, tArea, tSearch, ivec4(0.0));\n}\n"),H={...e.du,tColor:(0,o.$G)("texture","rgba","ubyte","linear"),tWeights:(0,o.$G)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,o.w5)("v2"),uViewport:(0,o.w5)("v4")},$=(0,r.NG)("smaa-blend","\nprecision highp float;\n\nattribute vec2 aPosition;\nuniform vec2 uQuadScale;\n\nuniform vec2 uTexSizeInv;\nuniform vec4 uViewport;\n\nvarying vec2 vUv;\nvarying vec4 vOffset[2];\n\nvoid SMAANeighborhoodBlendingVS(vec2 texCoord) {\n vOffset[0] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-1.0, 0.0, 0.0, 1.0); // WebGL port note: Changed sign in W component\n vOffset[1] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(1.0, 0.0, 0.0, -1.0); // WebGL port note: Changed sign in W component\n}\n\nvoid main() {\n vec2 scale = uViewport.zw * uTexSizeInv;\n vec2 shift = uViewport.xy * uTexSizeInv;\n vUv = (aPosition + 1.0) * 0.5 * scale + shift;\n SMAANeighborhoodBlendingVS(vUv);\n vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale;\n gl_Position = vec4(position, 0.0, 1.0);\n}\n","\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nuniform sampler2D tWeights;\nuniform sampler2D tColor;\nuniform vec2 uTexSizeInv;\n\nvarying vec2 vUv;\nvarying vec4 vOffset[2];\n\nvec4 SMAANeighborhoodBlendingPS(vec2 texCoord, vec4 offset[2], sampler2D colorTex, sampler2D blendTex) {\n // Fetch the blending weights for current pixel:\n vec4 a;\n a.xz = texture2D(blendTex, texCoord).xz;\n a.y = texture2D(blendTex, offset[1].zw).g;\n a.w = texture2D(blendTex, offset[1].xy).a;\n\n // Is there any blending weight with a value greater than 0.0?\n if (dot(a, vec4(1.0, 1.0, 1.0, 1.0)) < 1e-5) {\n return texture2D(colorTex, texCoord, 0.0);\n } else {\n // Up to 4 lines can be crossing a pixel (one through each edge). We\n // favor blending by choosing the line with the maximum weight for each\n // direction:\n vec2 offset;\n offset.x = a.a > a.b ? a.a : -a.b; // left vs. right\n offset.y = a.g > a.r ? -a.g : a.r; // top vs. bottom // WebGL port note: Changed signs\n\n // Then we go in the direction that has the maximum weight:\n if (abs(offset.x) > abs(offset.y)) { // horizontal vs. vertical\n offset.y = 0.0;\n } else {\n offset.x = 0.0;\n }\n\n // Fetch the opposite color and lerp by hand:\n vec4 C = texture2D(colorTex, texCoord, 0.0);\n texCoord += sign(offset) * uTexSizeInv;\n vec4 Cop = texture2D(colorTex, texCoord, 0.0);\n float s = abs(offset.x) > abs(offset.y) ? abs(offset.x) : abs(offset.y);\n\n // WebGL port note: Added gamma correction\n C.xyz = pow(C.xyz, vec3(2.2));\n Cop.xyz = pow(Cop.xyz, vec3(2.2));\n vec4 mixed = mix(C, Cop, s);\n mixed.xyz = pow(mixed.xyz, vec3(1.0 / 2.2));\n\n return mixed;\n }\n}\n\nvoid main() {\n gl_FragColor = SMAANeighborhoodBlendingPS(vUv, vOffset, tColor, tWeights);\n}\n");var j=n(6639),Z=n(7187),q=n(5276),Y=n(2086),ee=n(325),g=n(1861),_e=n(8599),xe=n(4490),le=n(7630),Ae=n(1372),Be=n(127);function Ce(){return Ce.zero()}!function(jt){function It(){const On=[.1,0,0];return On[0]=0,On}function Ct(On,fr,Dr,Pr){return On[0]=fr,On[0]=Dr,On[0]=Pr,On}function Wt(On,fr,Dr){const Pr=fr[0],or=fr[4],Nr=fr[8],Ir=fr[1],Or=fr[5],Jr=fr[9],To=fr[2],un=fr[6],ct=fr[10];switch(Dr){case"XYZ":On[1]=Math.asin((0,Be.qE)(Nr,-1,1)),Math.abs(Nr)<.9999999?(On[0]=Math.atan2(-Jr,ct),On[2]=Math.atan2(-or,Pr)):(On[0]=Math.atan2(un,Or),On[2]=0);break;case"YXZ":On[0]=Math.asin(-(0,Be.qE)(Jr,-1,1)),Math.abs(Jr)<.9999999?(On[1]=Math.atan2(Nr,ct),On[2]=Math.atan2(Ir,Or)):(On[1]=Math.atan2(-To,Pr),On[2]=0);break;case"ZXY":On[0]=Math.asin((0,Be.qE)(un,-1,1)),Math.abs(un)<.9999999?(On[1]=Math.atan2(-To,ct),On[2]=Math.atan2(-or,Or)):(On[1]=0,On[2]=Math.atan2(Ir,Pr));break;case"ZYX":On[1]=Math.asin(-(0,Be.qE)(To,-1,1)),Math.abs(To)<.9999999?(On[0]=Math.atan2(un,ct),On[2]=Math.atan2(Ir,Pr)):(On[0]=0,On[2]=Math.atan2(-or,Or));break;case"YZX":On[2]=Math.asin((0,Be.qE)(Ir,-1,1)),Math.abs(Ir)<.9999999?(On[0]=Math.atan2(-Jr,Or),On[1]=Math.atan2(-To,Pr)):(On[0]=0,On[1]=Math.atan2(Nr,ct));break;case"XZY":On[2]=Math.asin(-(0,Be.qE)(or,-1,1)),Math.abs(or)<.9999999?(On[0]=Math.atan2(un,Or),On[1]=Math.atan2(Nr,Pr)):(On[0]=Math.atan2(-Jr,ct),On[1]=0);break;default:(0,Ae.dr)(Dr)}return On}jt.zero=It,jt.create=function Dt(On,fr,Dr){const Pr=It();return Pr[0]=On,Pr[1]=fr,Pr[2]=Dr,Pr},jt.set=Ct,jt.clone=function $t(On){const fr=It();return fr[0]=On[0],fr[1]=On[1],fr[2]=On[2],fr},jt.copy=function Vt(On,fr){return On[0]=fr[0],On[1]=fr[1],On[2]=fr[2],On},jt.fromMat4=Wt;const yn=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];jt.fromQuat=function Zt(On,fr,Dr){return j.$.fromQuat(yn,fr),Wt(On,yn,Dr)},jt.fromVec3=function kt(On,fr){return Ct(On,fr[0],fr[1],fr[2])},jt.exactEquals=function Ot(On,fr){return On[0]===fr[0]&&On[1]===fr[1]&&On[2]===fr[2]},jt.fromArray=function An(On,fr,Dr){return On[0]=fr[Dr+0],On[1]=fr[Dr+1],On[2]=fr[Dr+2],On},jt.toArray=function jn(On,fr,Dr){return fr[Dr+0]=On[0],fr[Dr+1]=On[1],fr[Dr+2]=On[2],fr}}(Ce||(Ce={}));const Re={opacity:i.t.Numeric(1,{min:0,max:1,step:.01}),saturation:i.t.Numeric(0,{min:-1,max:1,step:.01}),lightness:i.t.Numeric(0,{min:-1,max:1,step:.01})},ke={faces:i.t.MappedStatic("urls",{urls:i.t.Group({nx:i.t.Text("",{label:"Negative X / Left"}),ny:i.t.Text("",{label:"Negative Y / Bottom"}),nz:i.t.Text("",{label:"Negative Z / Back"}),px:i.t.Text("",{label:"Positive X / Right"}),py:i.t.Text("",{label:"Positive Y / Top"}),pz:i.t.Text("",{label:"Positive Z / Front"})},{isExpanded:!0,label:"URLs"}),files:i.t.Group({nx:i.t.File({label:"Negative X / Left",accept:"image/*"}),ny:i.t.File({label:"Negative Y / Bottom",accept:"image/*"}),nz:i.t.File({label:"Negative Z / Back",accept:"image/*"}),px:i.t.File({label:"Positive X / Right",accept:"image/*"}),py:i.t.File({label:"Positive Y / Top",accept:"image/*"}),pz:i.t.File({label:"Positive Z / Front",accept:"image/*"})},{isExpanded:!0,label:"Files"})}),blur:i.t.Numeric(0,{min:0,max:1,step:.01},{description:'Note, this only works in WebGL2 or when "EXT_shader_texture_lod" is available.'}),rotation:i.t.Group({x:i.t.Numeric(0,{min:0,max:360,step:1},{immediateUpdate:!0}),y:i.t.Numeric(0,{min:0,max:360,step:1},{immediateUpdate:!0}),z:i.t.Numeric(0,{min:0,max:360,step:1},{immediateUpdate:!0})}),...Re},we={source:i.t.MappedStatic("url",{url:i.t.Text(""),file:i.t.File({accept:"image/*"})}),blur:i.t.Numeric(0,{min:0,max:1,step:.01},{description:'Note, this only works in WebGL2 or with power-of-two images and when "EXT_shader_texture_lod" is available.'}),...Re,coverage:i.t.Select("viewport",i.t.arrayToOptions(["viewport","canvas"]))},Oe={topColor:i.t.Color((0,I.Q1)(14540253)),bottomColor:i.t.Color((0,I.Q1)(15658734)),ratio:i.t.Numeric(.5,{min:0,max:1,step:.01}),coverage:i.t.Select("viewport",i.t.arrayToOptions(["viewport","canvas"]))},Se={centerColor:i.t.Color((0,I.Q1)(14540253)),edgeColor:i.t.Color((0,I.Q1)(15658734)),ratio:i.t.Numeric(.5,{min:0,max:1,step:.01}),coverage:i.t.Select("viewport",i.t.arrayToOptions(["viewport","canvas"]))},Ve={variant:i.t.MappedStatic("off",{off:i.t.EmptyGroup(),skybox:i.t.Group(ke,{isExpanded:!0}),image:i.t.Group(we,{isExpanded:!0}),horizontalGradient:i.t.Group(Oe,{isExpanded:!0}),radialGradient:i.t.Group(Se,{isExpanded:!0})},{label:"Environment"})};class Ne{constructor(It,Dt,Ct,$t){this.webgl=It,this.assetManager=Dt,this.camera=new q.i,this.target=(0,Y.e)(),this.position=(0,Y.e)(),this.dir=(0,Y.e)(),this.renderable=function Ie(jt,It,Dt){const Ct={drawCount:Z.IQ.create(6),instanceCount:Z.IQ.create(1),aPosition:Z.IQ.create(e.Wp),tSkybox:Z.IQ.create((0,a.z6)()),tImage:Z.IQ.create((0,a.z6)()),uImageScale:Z.IQ.create((0,ee.Z)()),uImageOffset:Z.IQ.create((0,ee.Z)()),uTexSize:Z.IQ.create(ee.Z.create(It,Dt)),uViewport:Z.IQ.create((0,_e.Z)()),uViewportAdjusted:Z.IQ.create(!0),uViewDirectionProjectionInverse:Z.IQ.create((0,j.$)()),uGradientColorA:Z.IQ.create((0,Y.e)()),uGradientColorB:Z.IQ.create((0,Y.e)()),uGradientRatio:Z.IQ.create(.5),uBlur:Z.IQ.create(0),uOpacity:Z.IQ.create(1),uSaturation:Z.IQ.create(0),uLightness:Z.IQ.create(0),uRotation:Z.IQ.create(le.U.identity()),dVariant:Z.IQ.create("skybox")},$t={...ae},Vt=(0,A.$h)(jt,"triangles",ge,$t,Ct);return(0,y._)(Vt,Ct)}(It,Ct,$t)}setSize(It,Dt){const[Ct,$t]=this.renderable.values.uTexSize.ref.value;(It!==Ct||Dt!==$t)&&Z.IQ.update(this.renderable.values.uTexSize,ee.Z.set(this.renderable.values.uTexSize.ref.value,It,Dt))}clearSkybox(){void 0!==this.skybox&&(this.skybox.texture.destroy(),this.skybox.assets.forEach(It=>this.assetManager.release(It)),this.skybox=void 0)}updateSkybox(It,Dt,Ct){var $t;const Vt=null===($t=this.skybox)||void 0===$t?void 0:$t.props.faces,Wt=Dt.faces.params;if(!(Wt.nx&&Wt.ny&&Wt.nz&&Wt.px&&Wt.py&&Wt.pz))return this.clearSkybox(),void Ct?.(!1);if(this.skybox&&Vt&&function ie(jt,It){return Te(jt)===Te(It)}(Dt.faces,this.skybox.props.faces))Ct?.(!1);else{this.clearSkybox();const{texture:Ot,assets:An}=function ue(jt,It,Dt,Ct){const $t=function ne(jt,It){return"urls"===It.name?{nx:g.V.getUrlAsset(jt,It.params.nx),ny:g.V.getUrlAsset(jt,It.params.ny),nz:g.V.getUrlAsset(jt,It.params.nz),px:g.V.getUrlAsset(jt,It.params.px),py:g.V.getUrlAsset(jt,It.params.py),pz:g.V.getUrlAsset(jt,It.params.pz)}:{nx:It.params.nx,ny:It.params.ny,nz:It.params.nz,px:It.params.px,py:It.params.py,pz:It.params.pz}}(It,Dt),Vt=function be(jt,It){const Dt=Ct=>jt.resolve(Ct,"binary").run().then($t=>new Blob([$t.data]));return{nx:Dt(It.nx),ny:Dt(It.ny),nz:Dt(It.nz),px:Dt(It.px),py:Dt(It.py),pz:Dt(It.pz)}}(It,$t),Wt=[$t.nx,$t.ny,$t.nz,$t.px,$t.py,$t.pz];return typeof HTMLImageElement>"u"?(console.error('Missing "HTMLImageElement" required for background skybox'),Ct?.(!0),{texture:(0,a.z6)(),assets:Wt}):{texture:jt.resources.cubeTexture(Vt,!0,Ct),assets:Wt}}(this.webgl,this.assetManager,Dt.faces,jn=>{this.skybox&&(this.skybox.loaded=!jn),Ct?.(!0)});this.skybox={texture:Ot,props:{...Dt},assets:An,loaded:!1},Z.IQ.update(this.renderable.values.tSkybox,Ot),this.renderable.update()}if(!this.skybox)return;let yn=It;"orthographic"===It.state.mode&&(this.camera.setState({...It.state,mode:"perspective"}),this.camera.update(),yn=this.camera);const Zt=this.renderable.values.uViewDirectionProjectionInverse.ref.value;Y.e.sub(this.dir,yn.state.position,yn.state.target),Y.e.setMagnitude(this.dir,this.dir,.1),Y.e.copy(this.position,this.dir),j.$.lookAt(Zt,this.position,this.target,yn.state.up),j.$.mul(Zt,yn.projection,Zt),j.$.invert(Zt,Zt),Z.IQ.update(this.renderable.values.uViewDirectionProjectionInverse,Zt);const kt=this.renderable.values.uRotation.ref.value;le.U.fromEuler(kt,Ce.create((0,xe.pu)(Dt.rotation.x),(0,xe.pu)(Dt.rotation.y),(0,xe.pu)(Dt.rotation.z)),"XYZ"),Z.IQ.update(this.renderable.values.uRotation,kt),Z.IQ.updateIfChanged(this.renderable.values.uBlur,Dt.blur),Z.IQ.updateIfChanged(this.renderable.values.uOpacity,Dt.opacity),Z.IQ.updateIfChanged(this.renderable.values.uSaturation,Dt.saturation),Z.IQ.updateIfChanged(this.renderable.values.uLightness,Dt.lightness),Z.IQ.updateIfChanged(this.renderable.values.dVariant,"skybox"),this.renderable.update()}clearImage(){void 0!==this.image&&(this.image.texture.destroy(),this.assetManager.release(this.image.asset),this.image=void 0)}updateImage(It,Dt){if(!It.source.params)return this.clearImage(),void Dt?.(!1);if(this.image&&this.image.props.source.params&&function ce(jt,It){return ve(jt)===ve(It)}(It.source,this.image.props.source))Dt?.(!1);else{this.clearImage();const{texture:Ct,asset:$t}=function se(jt,It,Dt,Ct){const $t="url"===Dt.name?g.V.getUrlAsset(It,Dt.params):Dt.params;if(typeof HTMLImageElement>"u")return console.error('Missing "HTMLImageElement" required for background image'),Ct?.(!0),{texture:(0,a.z6)(),asset:$t};const Vt=jt.resources.texture("image-uint8","rgba","ubyte","linear"),Wt=new Image;return Wt.onload=()=>{Vt.load(Wt),(jt.isWebGL2||(0,xe.r6)(Wt.width)&&(0,xe.r6)(Wt.height))&&Vt.mipmap(),Ct?.()},Wt.onerror=()=>{Ct?.(!0)},It.resolve($t,"binary").run().then(yn=>{const Zt=new Blob([yn.data]);Wt.src=URL.createObjectURL(Zt)}),{texture:Vt,asset:$t}}(this.webgl,this.assetManager,It.source,Vt=>{this.image&&(this.image.loaded=!Vt),Dt?.(!0)});this.image={texture:Ct,props:{...It},asset:$t,loaded:!1},Z.IQ.update(this.renderable.values.tImage,Ct),this.renderable.update()}this.image&&(Z.IQ.updateIfChanged(this.renderable.values.uBlur,It.blur),Z.IQ.updateIfChanged(this.renderable.values.uOpacity,It.opacity),Z.IQ.updateIfChanged(this.renderable.values.uSaturation,It.saturation),Z.IQ.updateIfChanged(this.renderable.values.uLightness,It.lightness),Z.IQ.updateIfChanged(this.renderable.values.uViewportAdjusted,"viewport"===It.coverage),Z.IQ.updateIfChanged(this.renderable.values.dVariant,"image"),this.renderable.update())}updateImageScaling(){var It,Dt;const Ct=this.renderable.values,[$t,Vt]=Ct.uTexSize.ref.value,Wt=(null===(It=this.image)||void 0===It?void 0:It.texture.getWidth())||0,yn=(null===(Dt=this.image)||void 0===Dt?void 0:Dt.texture.getHeight())||0,Zt=$t/Vt;Z.IQ.update(Ct.uImageScale,ZtZt?ee.Z.set(Ct.uImageOffset.ref.value,(1-Zt/jn)/2,0):ee.Z.set(Ct.uImageOffset.ref.value,0,(1-jn/Zt)/2))}updateGradient(It,Dt,Ct,$t,Vt){Z.IQ.update(this.renderable.values.uGradientColorA,I.Q1.toVec3Normalized(this.renderable.values.uGradientColorA.ref.value,It)),Z.IQ.update(this.renderable.values.uGradientColorB,I.Q1.toVec3Normalized(this.renderable.values.uGradientColorB.ref.value,Dt)),Z.IQ.updateIfChanged(this.renderable.values.uGradientRatio,Ct),Z.IQ.updateIfChanged(this.renderable.values.uViewportAdjusted,Vt),Z.IQ.updateIfChanged(this.renderable.values.dVariant,$t),this.renderable.update()}update(It,Dt,Ct){if("off"===Dt.variant.name)return this.clearSkybox(),this.clearImage(),void Ct?.(!1);"skybox"===Dt.variant.name?(this.clearImage(),this.updateSkybox(It,Dt.variant.params,Ct)):"image"===Dt.variant.name?(this.clearSkybox(),this.updateImage(Dt.variant.params,Ct)):"horizontalGradient"===Dt.variant.name?(this.clearSkybox(),this.clearImage(),this.updateGradient(Dt.variant.params.topColor,Dt.variant.params.bottomColor,Dt.variant.params.ratio,Dt.variant.name,"viewport"===Dt.variant.params.coverage),Ct?.(!1)):"radialGradient"===Dt.variant.name&&(this.clearSkybox(),this.clearImage(),this.updateGradient(Dt.variant.params.centerColor,Dt.variant.params.edgeColor,Dt.variant.params.ratio,Dt.variant.name,"viewport"===Dt.variant.params.coverage),Ct?.(!1));const{x:$t,y:Vt,width:Wt,height:yn}=It.viewport;Z.IQ.update(this.renderable.values.uViewport,_e.Z.set(this.renderable.values.uViewport.ref.value,$t,Vt,Wt,yn))}isEnabled(It){return!!(this.skybox&&this.skybox.loaded||this.image&&this.image.loaded||"horizontalGradient"===It.variant.name||"radialGradient"===It.variant.name)}isReady(){return!!(this.skybox&&this.skybox.loaded||this.image&&this.image.loaded||"horizontalGradient"===this.renderable.values.dVariant.ref.value||"radialGradient"===this.renderable.values.dVariant.ref.value)}render(){this.isReady()&&("image"===this.renderable.values.dVariant.ref.value&&this.updateImageScaling(),m.g$&&this.webgl.timer.mark("BackgroundPass.render"),this.renderable.render(),m.g$&&this.webgl.timer.markEnd("BackgroundPass.render"))}dispose(){this.clearSkybox(),this.clearImage()}}const K="background-skybox";function Te(jt){var It,Dt,Ct,$t,Vt,Wt;return"urls"===jt.name?`${K}_${jt.params.nx}|${jt.params.ny}|${jt.params.nz}|${jt.params.px}|${jt.params.py}|${jt.params.pz}`:`${K}_${null===(It=jt.params.nx)||void 0===It?void 0:It.id}|${null===(Dt=jt.params.ny)||void 0===Dt?void 0:Dt.id}|${null===(Ct=jt.params.nz)||void 0===Ct?void 0:Ct.id}|${null===($t=jt.params.px)||void 0===$t?void 0:$t.id}|${null===(Vt=jt.params.py)||void 0===Vt?void 0:Vt.id}|${null===(Wt=jt.params.pz)||void 0===Wt?void 0:Wt.id}`}const re="background-image";function ve(jt){var It;return"url"===jt.name?`${re}_${jt.params}`:`${re}_${null===(It=jt.params)||void 0===It?void 0:It.id}`}const ae={drawCount:(0,o.Xb)("number"),instanceCount:(0,o.Xb)("number"),aPosition:(0,o.Yz)("float32",2,0),tSkybox:(0,o.$G)("texture","rgba","ubyte","linear"),tImage:(0,o.$G)("texture","rgba","ubyte","linear"),uImageScale:(0,o.w5)("v2"),uImageOffset:(0,o.w5)("v2"),uTexSize:(0,o.w5)("v2"),uViewport:(0,o.w5)("v4"),uViewportAdjusted:(0,o.w5)("b"),uViewDirectionProjectionInverse:(0,o.w5)("m4"),uGradientColorA:(0,o.w5)("v3"),uGradientColorB:(0,o.w5)("v3"),uGradientRatio:(0,o.w5)("f"),uBlur:(0,o.w5)("f"),uOpacity:(0,o.w5)("f"),uSaturation:(0,o.w5)("f"),uLightness:(0,o.w5)("f"),uRotation:(0,o.w5)("m3"),dVariant:(0,o.$F)("string",["skybox","image","verticalGradient","horizontalGradient","radialGradient"])},ge=(0,r.NG)("background","\nprecision mediump float;\n\nattribute vec2 aPosition;\n\nvarying vec4 vPosition;\n\nvoid main() {\n vPosition = vec4(aPosition, 1.0, 1.0);\n gl_Position = vec4(aPosition, 1.0, 1.0);\n}\n","\nprecision mediump float;\nprecision mediump samplerCube;\nprecision mediump sampler2D;\n\n#if defined(dVariant_skybox)\n uniform samplerCube tSkybox;\n uniform mat4 uViewDirectionProjectionInverse;\n uniform float uBlur;\n uniform float uOpacity;\n uniform float uSaturation;\n uniform float uLightness;\n uniform mat3 uRotation;\n#elif defined(dVariant_image)\n uniform sampler2D tImage;\n uniform vec2 uImageScale;\n uniform vec2 uImageOffset;\n uniform float uBlur;\n uniform float uOpacity;\n uniform float uSaturation;\n uniform float uLightness;\n#elif defined(dVariant_horizontalGradient) || defined(dVariant_radialGradient)\n uniform vec3 uGradientColorA;\n uniform vec3 uGradientColorB;\n uniform float uGradientRatio;\n#endif\n\nuniform vec2 uTexSize;\nuniform vec4 uViewport;\nuniform bool uViewportAdjusted;\nvarying vec4 vPosition;\n\n// TODO: add as general pp option to remove banding?\n// Iestyn's RGB dither from http://alex.vlachos.com/graphics/Alex_Vlachos_Advanced_VR_Rendering_GDC2015.pdf\nvec3 ScreenSpaceDither(vec2 vScreenPos) {\n vec3 vDither = vec3(dot(vec2(171.0, 231.0), vScreenPos.xy));\n vDither.rgb = fract(vDither.rgb / vec3(103.0, 71.0, 97.0));\n return vDither.rgb / 255.0;\n}\n\nvec3 saturateColor(vec3 c, float amount) {\n // https://www.w3.org/TR/WCAG21/#dfn-relative-luminance\n const vec3 W = vec3(0.2125, 0.7154, 0.0721);\n vec3 intensity = vec3(dot(c, W));\n return mix(intensity, c, 1.0 + amount);\n}\n\nvec3 lightenColor(vec3 c, float amount) {\n return c + amount;\n}\n\nvoid main() {\n #if defined(dVariant_skybox)\n vec4 t = uViewDirectionProjectionInverse * vPosition;\n #ifdef enabledShaderTextureLod\n gl_FragColor = textureCubeLodEXT(tSkybox, uRotation * normalize(t.xyz / t.w), uBlur * 8.0);\n #else\n gl_FragColor = textureCube(tSkybox, uRotation * normalize(t.xyz / t.w));\n #endif\n gl_FragColor.a = uOpacity;\n gl_FragColor.rgb = lightenColor(saturateColor(gl_FragColor.rgb, uSaturation), uLightness);\n #elif defined(dVariant_image)\n vec2 coords;\n if (uViewportAdjusted) {\n coords = ((gl_FragCoord.xy - uViewport.xy) * (uTexSize / uViewport.zw) / uImageScale) + uImageOffset;\n } else {\n coords = (gl_FragCoord.xy / uImageScale) + uImageOffset;\n }\n #ifdef enabledShaderTextureLod\n gl_FragColor = texture2DLodEXT(tImage, vec2(coords.x, 1.0 - coords.y), uBlur * 8.0);\n #else\n gl_FragColor = texture2D(tImage, vec2(coords.x, 1.0 - coords.y));\n #endif\n gl_FragColor.a = uOpacity;\n gl_FragColor.rgb = lightenColor(saturateColor(gl_FragColor.rgb, uSaturation), uLightness);\n #elif defined(dVariant_horizontalGradient)\n float d;\n if (uViewportAdjusted) {\n d = ((gl_FragCoord.y - uViewport.y) * (uTexSize.y / uViewport.w) / uTexSize.y) + 1.0 - (uGradientRatio * 2.0);\n } else {\n d = (gl_FragCoord.y / uTexSize.y) + 1.0 - (uGradientRatio * 2.0);\n }\n gl_FragColor = vec4(mix(uGradientColorB, uGradientColorA, clamp(d, 0.0, 1.0)), 1.0);\n gl_FragColor.rgb += ScreenSpaceDither(gl_FragCoord.xy);\n #elif defined(dVariant_radialGradient)\n float d;\n if (uViewportAdjusted) {\n d = distance(vec2(0.5), (gl_FragCoord.xy - uViewport.xy) * (uTexSize / uViewport.zw) / uTexSize) + uGradientRatio - 0.5;\n } else {\n d = distance(vec2(0.5), gl_FragCoord.xy / uTexSize) + uGradientRatio - 0.5;\n }\n gl_FragColor = vec4(mix(uGradientColorB, uGradientColorA, 1.0 - clamp(d, 0.0, 1.0)), 1.0);\n gl_FragColor.rgb += ScreenSpaceDither(gl_FragCoord.xy);\n #endif\n}\n",{shaderTextureLod:"optional"}),je={sharpness:i.t.Numeric(.5,{min:0,max:1,step:.05}),denoise:i.t.Boolean(!0)};class Lt{constructor(It,Dt){this.webgl=It,this.renderable=function Bt(jt,It){const Dt=It.getWidth(),Ct=It.getHeight(),$t={...e.OM,tColor:t.IQ.create(It),uTexSizeInv:t.IQ.create(c.ZY.create(1/Dt,1/Ct)),uSharpness:t.IQ.create(.5),dDenoise:t.IQ.create(!0)},Vt={...Je},Wt=(0,A.$h)(jt,"triangles",en,Vt,$t);return(0,y._)(Wt,$t)}(It,Dt)}updateState(It){const{gl:Dt,state:Ct}=this.webgl;Ct.enable(Dt.SCISSOR_TEST),Ct.disable(Dt.BLEND),Ct.disable(Dt.DEPTH_TEST),Ct.depthMask(!1);const{x:$t,y:Vt,width:Wt,height:yn}=It;Ct.viewport($t,Vt,Wt,yn),Ct.scissor($t,Vt,Wt,yn),Ct.clearColor(0,0,0,1),Dt.clear(Dt.COLOR_BUFFER_BIT)}setSize(It,Dt){t.IQ.update(this.renderable.values.uTexSizeInv,c.ZY.set(this.renderable.values.uTexSizeInv.ref.value,1/It,1/Dt))}update(It,Dt){const{values:Ct}=this.renderable,{sharpness:$t,denoise:Vt}=Dt;let Wt=!1;Ct.tColor.ref.value!==It&&(t.IQ.update(this.renderable.values.tColor,It),Wt=!0),t.IQ.updateIfChanged(Ct.uSharpness,2-2*Math.pow($t,.25)),Ct.dDenoise.ref.value!==Vt&&(Wt=!0),t.IQ.updateIfChanged(Ct.dDenoise,Vt),Wt&&this.renderable.update()}render(It,Dt){m.g$&&this.webgl.timer.mark("CasPass.render"),Dt?Dt.bind():this.webgl.unbindFramebuffer(),this.updateState(It),this.renderable.render(),m.g$&&this.webgl.timer.markEnd("CasPass.render")}}const Je={...e.du,tColor:(0,o.$G)("texture","rgba","ubyte","linear"),uTexSizeInv:(0,o.w5)("v2"),uSharpness:(0,o.w5)("f"),dDenoise:(0,o.$F)("boolean")},en=(0,r.NG)("cas",v.e,"\nprecision mediump float;\nprecision mediump sampler2D;\n\nuniform sampler2D tColor;\nuniform vec2 uTexSizeInv;\n\nuniform float uSharpness;\n\n// adapted from https://www.shadertoy.com/view/stXSWB\n\n/*\n* FidelityFX Super Resolution scales up a low resolution\n* image, while adding fine detail.\n*\n* MIT Open License\n*\n* https://gpuopen.com/fsr\n*\n* Left: FSR processed\n* Right: Original texture, bilinear interpolation\n*\n* Mouse at top: Sharpness 0 stops (maximum)\n* Mouse at bottom: Sharpness 2 stops (minimum)\n*\n* It works in two passes-\n* EASU upsamples the image with a clamped Lanczos kernel.\n* RCAS sharpens the image at the target resolution.\n*\n* I needed to make a few changes to improve readability and\n* WebGL compatibility in an algorithm I don't fully understand.\n* Expect bugs.\n*\n* Shader not currently running for WebGL1 targets (eg. mobile Safari)\n*\n* There is kind of no point to using FSR in Shadertoy, as it renders buffers\n* at full target resolution. But this might be useful for WebGL based demos\n* running smaller-than-target render buffers.\n*\n* For sharpening with a full resolution render buffer,\n* FidelityFX CAS is a better option.\n* https://www.shadertoy.com/view/ftsXzM\n*\n* For readability and compatibility, these optimisations have been removed:\n* * Fast approximate inverse and inversesqrt\n* * textureGather fetches (not WebGL compatible)\n* * Multiplying by reciprocal instead of division\n*\n* Apologies to AMD for the numerous slowdowns and errors I have introduced.\n*\n*/\n\n/***** RCAS *****/\n#define FSR_RCAS_LIMIT (0.25-(1.0/16.0))\n\n// Input callback prototypes that need to be implemented by calling shader\nvec4 FsrRcasLoadF(vec2 p);\n//------------------------------------------------------------------------------------------------------------------------------\nvoid FsrRcasCon(\n out float con,\n // The scale is {0.0 := maximum, to N>0, where N is the number of stops (halving) of the reduction of sharpness}.\n float sharpness\n) {\n // Transform from stops to linear value.\n con = exp2(-sharpness);\n}\n\nvec3 FsrRcasF(\n vec2 ip, // Integer pixel position in output.\n float con\n) {\n // Constant generated by RcasSetup().\n // Algorithm uses minimal 3x3 pixel neighborhood.\n // b\n // d e f\n // h\n vec2 sp = vec2(ip);\n vec3 b = FsrRcasLoadF(sp + vec2( 0,-1)).rgb;\n vec3 d = FsrRcasLoadF(sp + vec2(-1, 0)).rgb;\n vec3 e = FsrRcasLoadF(sp).rgb;\n vec3 f = FsrRcasLoadF(sp + vec2( 1, 0)).rgb;\n vec3 h = FsrRcasLoadF(sp + vec2( 0, 1)).rgb;\n\n // Luma times 2.\n float bL = b.g + .5 * (b.b + b.r);\n float dL = d.g + .5 * (d.b + d.r);\n float eL = e.g + .5 * (e.b + e.r);\n float fL = f.g + .5 * (f.b + f.r);\n float hL = h.g + .5 * (h.b + h.r);\n\n // Noise detection.\n #ifdef dDenoise\n float nz = .25 * (bL + dL + fL + hL) - eL;\n nz=clamp(\n abs(nz)\n /(\n max(max(bL,dL),max(eL,max(fL,hL)))\n -min(min(bL,dL),min(eL,min(fL,hL)))\n ),\n 0., 1.\n );\n nz=1.-.5*nz;\n #endif\n\n // Min and max of ring.\n vec3 mn4 = min(b, min(f, h));\n vec3 mx4 = max(b, max(f, h));\n\n // Immediate constants for peak range.\n vec2 peakC = vec2(1., -4.);\n\n // Limiters, these need to be high precision RCPs.\n vec3 hitMin = mn4 / (4. * mx4);\n vec3 hitMax = (peakC.x - mx4) / (4.* mn4 + peakC.y);\n vec3 lobeRGB = max(-hitMin, hitMax);\n float lobe = max(\n -FSR_RCAS_LIMIT,\n min(max(lobeRGB.r, max(lobeRGB.g, lobeRGB.b)), 0.)\n )*con;\n\n // Apply noise removal.\n #ifdef dDenoise\n lobe *= nz;\n #endif\n\n // Resolve, which needs the medium precision rcp approximation to avoid visible tonality changes.\n return (lobe * (b + d + h + f) + e) / (4. * lobe + 1.);\n}\n\n\nvec4 FsrRcasLoadF(vec2 p) {\n return texture2D(tColor, p * uTexSizeInv);\n}\n\nvoid main() {\n // Set up constants\n float con;\n FsrRcasCon(con, uSharpness);\n\n // Perform RCAS pass\n vec3 col = FsrRcasF(gl_FragCoord.xy, con);\n\n gl_FragColor = vec4(col, FsrRcasLoadF(gl_FragCoord.xy).a);\n}\n");var pn=n(6049),$e=n(3770);const mt={...e.du,tDepthOpaque:(0,o.$G)("texture","rgba","ubyte","nearest"),tDepthTransparent:(0,o.$G)("texture","rgba","ubyte","nearest"),uTexSize:(0,o.w5)("v2"),dOrthographic:(0,o.$F)("number"),uNear:(0,o.w5)("f"),uFar:(0,o.w5)("f"),uInvProjection:(0,o.w5)("m4"),uOutlineThreshold:(0,o.w5)("f"),dTransparentOutline:(0,o.$F)("boolean")},Me={...e.du,tDepth:(0,o.$G)("texture","rgba","ubyte","nearest"),uTexSize:(0,o.w5)("v2"),uProjection:(0,o.w5)("m4"),uInvProjection:(0,o.w5)("m4"),uBounds:(0,o.w5)("v4"),dOrthographic:(0,o.$F)("number"),uNear:(0,o.w5)("f"),uFar:(0,o.w5)("f"),dSteps:(0,o.$F)("number"),uMaxDistance:(0,o.w5)("f"),uTolerance:(0,o.w5)("f"),uBias:(0,o.w5)("f"),uLightDirection:(0,o.w5)("v3[]"),uLightColor:(0,o.w5)("v3[]"),dLightCount:(0,o.$F)("number")},ut={...e.du,tDepth:(0,o.$G)("texture","rgba","ubyte","nearest"),tDepthHalf:(0,o.$G)("texture","rgba","ubyte","nearest"),tDepthQuarter:(0,o.$G)("texture","rgba","ubyte","nearest"),uSamples:(0,o.w5)("v3[]"),dNSamples:(0,o.$F)("number"),uProjection:(0,o.w5)("m4"),uInvProjection:(0,o.w5)("m4"),uBounds:(0,o.w5)("v4"),uTexSize:(0,o.w5)("v2"),uRadius:(0,o.w5)("f"),uBias:(0,o.w5)("f"),dMultiScale:(0,o.$F)("boolean"),dLevels:(0,o.$F)("number"),uLevelRadius:(0,o.w5)("f[]"),uLevelBias:(0,o.w5)("f[]"),uNearThreshold:(0,o.w5)("f"),uFarThreshold:(0,o.w5)("f")},sn={...e.du,tSsaoDepth:(0,o.$G)("texture","rgba","ubyte","nearest"),uTexSize:(0,o.w5)("v2"),uKernel:(0,o.w5)("f[]"),dOcclusionKernelSize:(0,o.$F)("number"),uBlurDirectionX:(0,o.w5)("f"),uBlurDirectionY:(0,o.w5)("f"),uInvProjection:(0,o.w5)("m4"),uNear:(0,o.w5)("f"),uFar:(0,o.w5)("f"),uBounds:(0,o.w5)("v4"),dOrthographic:(0,o.$F)("number")};function gt(jt,It,Dt){const Ct={...e.OM,tSsaoDepth:t.IQ.create(It),uTexSize:t.IQ.create(c.ZY.create(It.getWidth(),It.getHeight())),uKernel:t.IQ.create(yt(15)),dOcclusionKernelSize:t.IQ.create(15),uBlurDirectionX:t.IQ.create("horizontal"===Dt?1:0),uBlurDirectionY:t.IQ.create("vertical"===Dt?1:0),uInvProjection:t.IQ.create(c.$I.identity()),uNear:t.IQ.create(0),uFar:t.IQ.create(1e4),uBounds:t.IQ.create((0,c.Zb)()),dOrthographic:t.IQ.create(0)},$t={...sn},Vt=(0,r.NG)("ssao_blur",v.e,"\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nuniform sampler2D tSsaoDepth;\nuniform vec2 uTexSize;\nuniform vec4 uBounds;\n\nuniform float uKernel[dOcclusionKernelSize];\n\nuniform float uBlurDirectionX;\nuniform float uBlurDirectionY;\n\nuniform mat4 uInvProjection;\nuniform float uNear;\nuniform float uFar;\n\n#include common\n\nfloat getViewZ(const in float depth) {\n #if dOrthographic == 1\n return orthographicDepthToViewZ(depth, uNear, uFar);\n #else\n return perspectiveDepthToViewZ(depth, uNear, uFar);\n #endif\n}\n\nbool isBackground(const in float depth) {\n return depth == 1.0;\n}\n\nbool outsideBounds(const in vec2 p) {\n return p.x < uBounds.x || p.y < uBounds.y || p.x > uBounds.z || p.y > uBounds.w;\n}\n\nfloat getPixelSize(const in vec2 coords, const in float depth) {\n vec3 viewPos0 = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection);\n vec3 viewPos1 = screenSpaceToViewSpace(vec3(coords + vec2(1.0, 0.0) / uTexSize, depth), uInvProjection);\n return distance(viewPos0, viewPos1);\n}\n\nvoid main(void) {\n vec2 coords = gl_FragCoord.xy / uTexSize;\n\n vec2 packedDepth = texture2D(tSsaoDepth, coords).zw;\n\n if (outsideBounds(coords)) {\n gl_FragColor = vec4(packUnitIntervalToRG(1.0), packedDepth);\n return;\n }\n\n float selfDepth = unpackRGToUnitInterval(packedDepth);\n // if background and if second pass\n if (isBackground(selfDepth) && uBlurDirectionY != 0.0) {\n gl_FragColor = vec4(packUnitIntervalToRG(1.0), packedDepth);\n return;\n }\n\n float selfViewZ = getViewZ(selfDepth);\n float pixelSize = getPixelSize(coords, selfDepth);\n // max diff depth between two pixels\n float maxDiffViewZ = 1.0;\n\n vec2 offset = vec2(uBlurDirectionX, uBlurDirectionY) / uTexSize;\n\n float sum = 0.0;\n float kernelSum = 0.0;\n // only if kernelSize is odd\n for (int i = -dOcclusionKernelSize / 2; i <= dOcclusionKernelSize / 2; i++) {\n if (abs(float(i)) > 1.0 && abs(float(i)) * pixelSize > 0.8) continue;\n\n vec2 sampleCoords = coords + float(i) * offset;\n if (outsideBounds(sampleCoords)) {\n continue;\n }\n\n vec4 sampleSsaoDepth = texture2D(tSsaoDepth, sampleCoords);\n\n float sampleDepth = unpackRGToUnitInterval(sampleSsaoDepth.zw);\n if (isBackground(sampleDepth)) {\n continue;\n }\n\n float sampleViewZ = getViewZ(sampleDepth);\n if (abs(selfViewZ - sampleViewZ) > maxDiffViewZ) {\n continue;\n }\n\n float kernel = uKernel[int(abs(float(i)))]; // abs is not defined for int in webgl1\n float sampleValue = unpackRGToUnitInterval(sampleSsaoDepth.xy);\n\n sum += kernel * sampleValue;\n kernelSum += kernel;\n }\n gl_FragColor = vec4(packUnitIntervalToRG(sum / kernelSum), packedDepth);\n}\n"),Wt=(0,A.$h)(jt,"triangles",Vt,$t,Ct);return(0,y._)(Wt,Ct)}function yt(jt){const It=jt/3,Dt=Math.floor((jt+1)/2),Ct=[];for(let $t=0;$t`${jt.radius}, ${jt.bias}`,{defaultValue:[{radius:2,bias:1},{radius:5,bias:1},{radius:8,bias:1},{radius:11,bias:1}]}),nearThreshold:i.t.Numeric(10,{min:0,max:50,step:1}),farThreshold:i.t.Numeric(1500,{min:0,max:1e4,step:100})}),off:i.t.Group({})},{cycle:!0}),radius:i.t.Numeric(5,{min:0,max:20,step:.1},{description:"Final occlusion radius is 2^x",hideIf:jt=>"on"===jt?.multiScale.name}),bias:i.t.Numeric(.8,{min:0,max:3,step:.1}),blurKernelSize:i.t.Numeric(15,{min:1,max:25,step:2}),resolutionScale:i.t.Numeric(1,{min:.1,max:1,step:.05},{description:"Adjust resolution of occlusion calculation"}),color:i.t.Color((0,I.Q1)(0))}),off:i.t.Group({})},{cycle:!0,description:"Darken occluded crevices with the ambient occlusion effect"}),shadow:i.t.MappedStatic("off",{on:i.t.Group({steps:i.t.Numeric(1,{min:1,max:64,step:1}),bias:i.t.Numeric(.6,{min:0,max:1,step:.01}),maxDistance:i.t.Numeric(3,{min:0,max:256,step:1}),tolerance:i.t.Numeric(1,{min:0,max:10,step:.1})}),off:i.t.Group({})},{cycle:!0,description:"Simplistic shadows"}),outline:i.t.MappedStatic("off",{on:i.t.Group({scale:i.t.Numeric(1,{min:1,max:5,step:1}),threshold:i.t.Numeric(.33,{min:.01,max:1,step:.01}),color:i.t.Color((0,I.Q1)(0)),includeTransparent:i.t.Boolean(!0,{description:"Whether to show outline for transparent objects"})}),off:i.t.Group({})},{cycle:!0,description:"Draw outline around 3D objects"}),dof:i.t.MappedStatic("off",{on:i.t.Group(pn.w),off:i.t.Group({})},{cycle:!0,description:"DOF"}),antialiasing:i.t.MappedStatic("smaa",{fxaa:i.t.Group(u),smaa:i.t.Group(L),off:i.t.Group({})},{options:[["fxaa","FXAA"],["smaa","SMAA"],["off","Off"]],description:"Smooth pixel edges"}),sharpening:i.t.MappedStatic("off",{on:i.t.Group(je),off:i.t.Group({})},{cycle:!0,description:"Contrast Adaptive Sharpening"}),background:i.t.Group(Ve,{isFlat:!0}),bloom:i.t.MappedStatic("on",{on:i.t.Group($e.c),off:i.t.Group({})},{cycle:!0,description:"Bloom"})};class bn{static isEnabled(It){return"on"===It.occlusion.name||"on"===It.shadow.name||"on"===It.outline.name||"off"!==It.background.variant.name}static isTransparentOutlineEnabled(It){return"on"===It.outline.name&&It.outline.params.includeTransparent}calcSsaoScale(It){return Math.min(1,1/this.webgl.pixelRatio)*It}constructor(It,Dt,Ct){this.webgl=It,this.drawPass=Ct,this.bgColor=(0,c.eB)(),this.occlusionOffset=[0,0],this.transparentBackground=!1;const{colorTarget:$t,depthTextureTransparent:Vt,depthTextureOpaque:Wt}=Ct,yn=$t.getWidth(),Zt=$t.getHeight();this.nSamples=1,this.blurKernelSize=1,this.ssaoScale=this.calcSsaoScale(1),this.levels=[],this.target=It.createRenderTarget(yn,Zt,!1,"uint8","linear"),this.outlinesTarget=It.createRenderTarget(yn,Zt,!1),this.outlinesRenderable=function _t(jt,It,Dt,Ct){const $t=It.getWidth(),Vt=It.getHeight(),Wt={...e.OM,tDepthOpaque:t.IQ.create(It),tDepthTransparent:t.IQ.create(Dt),uTexSize:t.IQ.create(c.ZY.create($t,Vt)),dOrthographic:t.IQ.create(0),uNear:t.IQ.create(1),uFar:t.IQ.create(1e4),uInvProjection:t.IQ.create(c.$I.identity()),uOutlineThreshold:t.IQ.create(.33),dTransparentOutline:t.IQ.create(Ct)},yn={...mt},Zt=(0,r.NG)("outlines",v.e,"\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nuniform sampler2D tDepthOpaque;\nuniform sampler2D tDepthTransparent;\nuniform vec2 uTexSize;\n\nuniform float uNear;\nuniform float uFar;\nuniform mat4 uInvProjection;\n\nuniform float uOutlineThreshold;\n\n#include common\n\nfloat getViewZ(const in float depth) {\n #if dOrthographic == 1\n return orthographicDepthToViewZ(depth, uNear, uFar);\n #else\n return perspectiveDepthToViewZ(depth, uNear, uFar);\n #endif\n}\n\nfloat getDepthOpaque(const in vec2 coords) {\n #ifdef depthTextureSupport\n return texture2D(tDepthOpaque, coords).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepthOpaque, coords));\n #endif\n}\n\nfloat getDepthTransparent(const in vec2 coords) {\n #ifdef dTransparentOutline\n return unpackRGBAToDepth(texture2D(tDepthTransparent, coords));\n #else\n return 1.0;\n #endif\n}\n\nbool isBackground(const in float depth) {\n return depth == 1.0;\n}\n\nfloat getPixelSize(const in vec2 coords, const in float depth) {\n vec3 viewPos0 = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection);\n vec3 viewPos1 = screenSpaceToViewSpace(vec3(coords + vec2(1.0, 0.0) / uTexSize, depth), uInvProjection);\n return distance(viewPos0, viewPos1);\n}\n\nvoid main(void) {\n float backgroundViewZ = 2.0 * uFar;\n\n vec2 coords = gl_FragCoord.xy / uTexSize;\n vec2 invTexSize = 1.0 / uTexSize;\n\n float selfDepthOpaque = getDepthOpaque(coords);\n float selfViewZOpaque = isBackground(selfDepthOpaque) ? backgroundViewZ : getViewZ(selfDepthOpaque);\n float pixelSizeOpaque = getPixelSize(coords, selfDepthOpaque) * uOutlineThreshold;\n\n float selfDepthTransparent = getDepthTransparent(coords);\n float selfViewZTransparent = isBackground(selfDepthTransparent) ? backgroundViewZ : getViewZ(selfDepthTransparent);\n float pixelSizeTransparent = getPixelSize(coords, selfDepthTransparent) * uOutlineThreshold;\n\n float outline = 1.0;\n float bestDepth = 1.0;\n float transparentFlag = 0.0;\n\n for (int y = -1; y <= 1; y++) {\n for (int x = -1; x <= 1; x++) {\n vec2 sampleCoords = coords + vec2(float(x), float(y)) * invTexSize;\n\n float sampleDepthOpaque = getDepthOpaque(sampleCoords);\n float sampleDepthTransparent = getDepthTransparent(sampleCoords);\n\n float sampleViewZOpaque = isBackground(sampleDepthOpaque) ? backgroundViewZ : getViewZ(sampleDepthOpaque);\n if (abs(selfViewZOpaque - sampleViewZOpaque) > pixelSizeOpaque && selfDepthOpaque > sampleDepthOpaque && sampleDepthOpaque <= bestDepth) {\n outline = 0.0;\n bestDepth = sampleDepthOpaque;\n }\n\n if (sampleDepthTransparent < sampleDepthOpaque) {\n float sampleViewZTransparent = isBackground(sampleDepthTransparent) ? backgroundViewZ : getViewZ(sampleDepthTransparent);\n if (abs(selfViewZTransparent - sampleViewZTransparent) > pixelSizeTransparent && selfDepthTransparent > sampleDepthTransparent && sampleDepthTransparent <= bestDepth) {\n outline = 0.0;\n bestDepth = sampleDepthTransparent;\n transparentFlag = 1.0;\n }\n }\n }\n }\n\n gl_FragColor = vec4(outline, packUnitIntervalToRG(bestDepth), transparentFlag);\n}\n"),kt=(0,A.$h)(jt,"triangles",Zt,yn,Wt);return(0,y._)(kt,Wt)}(It,Wt,Vt,!0),this.shadowsTarget=It.createRenderTarget(yn,Zt,!1),this.shadowsRenderable=function Ke(jt,It){const Dt=It.getWidth(),Ct=It.getHeight(),$t={...e.OM,tDepth:t.IQ.create(It),uTexSize:t.IQ.create(c.ZY.create(Dt,Ct)),uProjection:t.IQ.create(c.$I.identity()),uInvProjection:t.IQ.create(c.$I.identity()),uBounds:t.IQ.create((0,c.Zb)()),dOrthographic:t.IQ.create(0),uNear:t.IQ.create(1),uFar:t.IQ.create(1e4),dSteps:t.IQ.create(1),uMaxDistance:t.IQ.create(3),uTolerance:t.IQ.create(1),uBias:t.IQ.create(.6),uLightDirection:t.IQ.create([]),uLightColor:t.IQ.create([]),dLightCount:t.IQ.create(0)},Vt={...Me},Wt=(0,r.NG)("shadows",v.e,"\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n#include common\n\nuniform sampler2D tDepth;\nuniform vec2 uTexSize;\nuniform vec4 uBounds;\n\nuniform float uNear;\nuniform float uFar;\n\n#if dLightCount != 0\n uniform vec3 uLightDirection[dLightCount];\n uniform vec3 uLightColor[dLightCount];\n#endif\n\nuniform mat4 uProjection;\nuniform mat4 uInvProjection;\n\nuniform float uMaxDistance;\nuniform float uTolerance;\nuniform float uBias;\n\nbool isBackground(const in float depth) {\n return depth == 1.0;\n}\n\nbool outsideBounds(const in vec2 p) {\n return p.x < uBounds.x || p.y < uBounds.y || p.x > uBounds.z || p.y > uBounds.w;\n}\n\nfloat getViewZ(const in float depth) {\n #if dOrthographic == 1\n return orthographicDepthToViewZ(depth, uNear, uFar);\n #else\n return perspectiveDepthToViewZ(depth, uNear, uFar);\n #endif\n}\n\nfloat getDepth(const in vec2 coords) {\n #ifdef depthTextureSupport\n return texture2D(tDepth, coords).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n #endif\n}\n\nfloat screenFade(const in vec2 coords) {\n vec2 c = (coords - uBounds.xy) / (uBounds.zw - uBounds.xy);\n vec2 fade = max(12.0 * abs(c - 0.5) - 5.0, vec2(0.0));\n return saturate(1.0 - dot(fade, fade));\n}\n\n// based on https://panoskarabelas.com/posts/screen_space_shadows/\nfloat screenSpaceShadow(const in vec3 position, const in vec3 lightDirection, const in float stepLength) {\n // Ray position and direction (in view-space)\n vec3 rayPos = position;\n vec3 rayDir = -lightDirection;\n\n // Compute ray step\n vec3 rayStep = rayDir * stepLength;\n\n // Ray march towards the light\n float occlusion = 0.0;\n vec4 rayCoords = vec4(0.0);\n for (int i = 0; i < dSteps; ++i) {\n // Step the ray\n rayPos += rayStep;\n\n rayCoords = uProjection * vec4(rayPos, 1.0);\n rayCoords.xyz = (rayCoords.xyz / rayCoords.w) * 0.5 + 0.5;\n\n if (outsideBounds(rayCoords.xy))\n return 1.0;\n\n // Compute the difference between the ray's and the camera's depth\n float depth = getDepth(rayCoords.xy);\n float viewZ = getViewZ(depth);\n float zDelta = rayPos.z - viewZ;\n\n if (zDelta < uTolerance) {\n occlusion = 1.0;\n\n // Fade out as we approach the edges of the screen\n occlusion *= screenFade(rayCoords.xy);\n\n break;\n }\n }\n\n return 1.0 - (uBias * occlusion);\n}\n\nvoid main(void) {\n vec2 invTexSize = 1.0 / uTexSize;\n vec2 selfCoords = gl_FragCoord.xy * invTexSize;\n\n float selfDepth = getDepth(selfCoords);\n\n if (isBackground(selfDepth)) {\n gl_FragColor = vec4(0.0);\n return;\n }\n\n vec3 selfViewPos = screenSpaceToViewSpace(vec3(selfCoords, selfDepth), uInvProjection);\n float stepLength = uMaxDistance / float(dSteps);\n\n float o = 1.0;\n #if dLightCount != 0\n float sh[dLightCount];\n #pragma unroll_loop_start\n for (int i = 0; i < dLightCount; ++i) {\n sh[i] = screenSpaceShadow(selfViewPos, uLightDirection[i], stepLength);\n o = min(o, sh[i]);\n }\n #pragma unroll_loop_end\n #endif\n\n gl_FragColor = vec4(o);\n}\n"),yn=(0,A.$h)(jt,"triangles",Wt,Vt,$t);return(0,y._)(yn,$t)}(It,Wt),this.ssaoFramebuffer=It.resources.framebuffer(),this.ssaoBlurFirstPassFramebuffer=It.resources.framebuffer(),this.ssaoBlurSecondPassFramebuffer=It.resources.framebuffer();const kt=Math.floor(yn*this.ssaoScale),Ot=Math.floor(Zt*this.ssaoScale),An=Math.max(1,Math.floor(.5*kt)),jn=Math.max(1,Math.floor(.5*Ot)),On=Math.max(1,Math.floor(.25*kt)),fr=Math.max(1,Math.floor(.25*Ot));this.downsampledDepthTarget=Ct.packedDepth?It.createRenderTarget(kt,Ot,!1,"uint8","nearest","rgba"):It.createRenderTarget(kt,Ot,!1,"float32","nearest",It.isWebGL2?"alpha":"rgba"),this.downsampleDepthRenderable=(0,e._0)(It,Wt);const Dr=1===this.ssaoScale?Wt:this.downsampledDepthTarget.texture;this.depthHalfTarget=Ct.packedDepth?It.createRenderTarget(An,jn,!1,"uint8","nearest","rgba"):It.createRenderTarget(An,jn,!1,"float32","nearest",It.isWebGL2?"alpha":"rgba"),this.depthHalfRenderable=(0,e._0)(It,Dr),this.depthQuarterTarget=Ct.packedDepth?It.createRenderTarget(On,fr,!1,"uint8","nearest","rgba"):It.createRenderTarget(On,fr,!1,"float32","nearest",It.isWebGL2?"alpha":"rgba"),this.depthQuarterRenderable=(0,e._0)(It,this.depthHalfTarget.texture),this.ssaoDepthTexture=It.resources.texture("image-uint8","rgba","ubyte","nearest"),this.ssaoDepthTexture.define(kt,Ot),this.ssaoDepthTexture.attachFramebuffer(this.ssaoFramebuffer,"color0"),this.ssaoDepthBlurProxyTexture=It.resources.texture("image-uint8","rgba","ubyte","nearest"),this.ssaoDepthBlurProxyTexture.define(kt,Ot),this.ssaoDepthBlurProxyTexture.attachFramebuffer(this.ssaoBlurFirstPassFramebuffer,"color0"),this.ssaoDepthTexture.attachFramebuffer(this.ssaoBlurSecondPassFramebuffer,"color0"),this.ssaoRenderable=function Kt(jt,It,Dt,Ct){const $t={...e.OM,tDepth:t.IQ.create(It),tDepthHalf:t.IQ.create(Dt),tDepthQuarter:t.IQ.create(Ct),uSamples:t.IQ.create(Gt(32)),dNSamples:t.IQ.create(32),uProjection:t.IQ.create(c.$I.identity()),uInvProjection:t.IQ.create(c.$I.identity()),uBounds:t.IQ.create((0,c.Zb)()),uTexSize:t.IQ.create(c.ZY.create(jt.gl.drawingBufferWidth,jt.gl.drawingBufferHeight)),uRadius:t.IQ.create(Math.pow(2,5)),uBias:t.IQ.create(.8),dMultiScale:t.IQ.create(!1),dLevels:t.IQ.create(3),uLevelRadius:t.IQ.create([Math.pow(2,2),Math.pow(2,5),Math.pow(2,8)]),uLevelBias:t.IQ.create([.8,.8,.8]),uNearThreshold:t.IQ.create(10),uFarThreshold:t.IQ.create(1500)},Vt={...ut},Wt=(0,r.NG)("ssao",v.e,"\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n#include common\n\nuniform sampler2D tDepth;\nuniform sampler2D tDepthHalf;\nuniform sampler2D tDepthQuarter;\nuniform vec2 uTexSize;\nuniform vec4 uBounds;\n\nuniform vec3 uSamples[dNSamples];\n\nuniform mat4 uProjection;\nuniform mat4 uInvProjection;\n\n#ifdef dMultiScale\n uniform float uLevelRadius[dLevels];\n uniform float uLevelBias[dLevels];\n uniform float uNearThreshold;\n uniform float uFarThreshold;\n#else\n uniform float uRadius;\n#endif\nuniform float uBias;\n\nfloat smootherstep(float edge0, float edge1, float x) {\n x = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\n return x * x * x * (x * (x * 6.0 - 15.0) + 10.0);\n}\n\nfloat noise(const in vec2 coords) {\n float a = 12.9898;\n float b = 78.233;\n float c = 43758.5453;\n float dt = dot(coords, vec2(a,b));\n float sn = mod(dt, PI);\n return abs(fract(sin(sn) * c)); // is abs necessary?\n}\n\nvec2 getNoiseVec2(const in vec2 coords) {\n return vec2(noise(coords), noise(coords + vec2(PI, 2.71828)));\n}\n\nbool isBackground(const in float depth) {\n return depth == 1.0;\n}\n\nfloat getDepth(const in vec2 coords) {\n vec2 c = vec2(clamp(coords.x, uBounds.x, uBounds.z), clamp(coords.y, uBounds.y, uBounds.w));\n #ifdef depthTextureSupport\n return texture2D(tDepth, c).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepth, c));\n #endif\n}\n\n#define dQuarterThreshold 0.1\n#define dHalfThreshold 0.05\n\nfloat getMappedDepth(const in vec2 coords, const in vec2 selfCoords) {\n vec2 c = vec2(clamp(coords.x, uBounds.x, uBounds.z), clamp(coords.y, uBounds.y, uBounds.w));\n float d = distance(coords, selfCoords);\n #ifdef depthTextureSupport\n if (d > dQuarterThreshold) {\n return texture2D(tDepthQuarter, c).r;\n } else if (d > dHalfThreshold) {\n return texture2D(tDepthHalf, c).r;\n } else {\n return texture2D(tDepth, c).r;\n }\n #else\n if (d > dQuarterThreshold) {\n return unpackRGBAToDepth(texture2D(tDepthQuarter, c));\n } else if (d > dHalfThreshold) {\n return unpackRGBAToDepth(texture2D(tDepthHalf, c));\n } else {\n return unpackRGBAToDepth(texture2D(tDepth, c));\n }\n #endif\n}\n\n// adapted from https://gist.github.com/bgolus/a07ed65602c009d5e2f753826e8078a0\nvec3 viewNormalAtPixelPositionAccurate(vec2 vpos) {\n // current pixel's depth\n float c = getDepth(vpos);\n\n // get current pixel's view space position\n vec3 viewSpacePos_c = screenSpaceToViewSpace(vec3(vpos, c), uInvProjection);\n\n // get view space position at 1 pixel offsets in each major direction\n vec3 viewSpacePos_l = screenSpaceToViewSpace(vec3(vpos + vec2(-1.0, 0.0) / uTexSize, getDepth(vpos + vec2(-1.0, 0.0) / uTexSize)), uInvProjection);\n vec3 viewSpacePos_r = screenSpaceToViewSpace(vec3(vpos + vec2( 1.0, 0.0) / uTexSize, getDepth(vpos + vec2( 1.0, 0.0) / uTexSize)), uInvProjection);\n vec3 viewSpacePos_d = screenSpaceToViewSpace(vec3(vpos + vec2( 0.0,-1.0) / uTexSize, getDepth(vpos + vec2( 0.0,-1.0) / uTexSize)), uInvProjection);\n vec3 viewSpacePos_u = screenSpaceToViewSpace(vec3(vpos + vec2( 0.0, 1.0) / uTexSize, getDepth(vpos + vec2( 0.0, 1.0) / uTexSize)), uInvProjection);\n\n // get the difference between the current and each offset position\n vec3 l = viewSpacePos_c - viewSpacePos_l;\n vec3 r = viewSpacePos_r - viewSpacePos_c;\n vec3 d = viewSpacePos_c - viewSpacePos_d;\n vec3 u = viewSpacePos_u - viewSpacePos_c;\n\n // get depth values at 1 & 2 pixels offsets from current along the horizontal axis\n vec4 H = vec4(\n getDepth(vpos + vec2(-1.0, 0.0) / uTexSize),\n getDepth(vpos + vec2( 1.0, 0.0) / uTexSize),\n getDepth(vpos + vec2(-2.0, 0.0) / uTexSize),\n getDepth(vpos + vec2( 2.0, 0.0) / uTexSize)\n );\n\n // get depth values at 1 & 2 pixels offsets from current along the vertical axis\n vec4 V = vec4(\n getDepth(vpos + vec2(0.0,-1.0) / uTexSize),\n getDepth(vpos + vec2(0.0, 1.0) / uTexSize),\n getDepth(vpos + vec2(0.0,-2.0) / uTexSize),\n getDepth(vpos + vec2(0.0, 2.0) / uTexSize)\n );\n\n // current pixel's depth difference from slope of offset depth samples\n // differs from original article because we're using non-linear depth values\n // see article's comments\n vec2 he = abs((2.0 * H.xy - H.zw) - c);\n vec2 ve = abs((2.0 * V.xy - V.zw) - c);\n\n // pick horizontal and vertical diff with the smallest depth difference from slopes\n vec3 hDeriv = he.x < he.y ? l : r;\n vec3 vDeriv = ve.x < ve.y ? d : u;\n\n // get view space normal from the cross product of the best derivatives\n vec3 viewNormal = normalize(cross(hDeriv, vDeriv));\n\n return viewNormal;\n}\n\nfloat getPixelSize(const in vec2 coords, const in float depth) {\n vec3 viewPos0 = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection);\n vec3 viewPos1 = screenSpaceToViewSpace(vec3(coords + vec2(1.0, 0.0) / uTexSize, depth), uInvProjection);\n return distance(viewPos0, viewPos1);\n}\n\n// StarCraft II Ambient Occlusion by [Filion and McNaughton 2008]\nvoid main(void) {\n vec2 invTexSize = 1.0 / uTexSize;\n vec2 selfCoords = gl_FragCoord.xy * invTexSize;\n\n float selfDepth = getDepth(selfCoords);\n vec2 selfPackedDepth = packUnitIntervalToRG(selfDepth);\n\n if (isBackground(selfDepth)) {\n gl_FragColor = vec4(packUnitIntervalToRG(1.0), selfPackedDepth);\n return;\n }\n\n vec3 selfViewNormal = viewNormalAtPixelPositionAccurate(selfCoords);\n vec3 selfViewPos = screenSpaceToViewSpace(vec3(selfCoords, selfDepth), uInvProjection);\n\n vec3 randomVec = normalize(vec3(getNoiseVec2(selfCoords) * 2.0 - 1.0, 0.0));\n vec3 tangent = normalize(randomVec - selfViewNormal * dot(randomVec, selfViewNormal));\n vec3 bitangent = cross(selfViewNormal, tangent);\n mat3 TBN = mat3(tangent, bitangent, selfViewNormal);\n\n float occlusion = 0.0;\n #ifdef dMultiScale\n float pixelSize = getPixelSize(selfCoords, selfDepth);\n\n for(int l = 0; l < dLevels; l++) {\n // TODO: smooth transition\n if (pixelSize * uNearThreshold > uLevelRadius[l]) continue;\n if (pixelSize * uFarThreshold < uLevelRadius[l]) continue;\n\n float levelOcclusion = 0.0;\n for(int i = 0; i < dNSamples; i++) {\n // get sample position:\n vec3 sampleViewPos = TBN * uSamples[i];\n sampleViewPos = selfViewPos + sampleViewPos * uLevelRadius[l];\n\n // project sample position:\n vec4 offset = vec4(sampleViewPos, 1.0);\n offset = uProjection * offset;\n offset.xyz = (offset.xyz / offset.w) * 0.5 + 0.5;\n\n // get sample depth:\n float sampleDepth = getMappedDepth(offset.xy, selfCoords);\n float sampleViewZ = screenSpaceToViewSpace(vec3(offset.xy, sampleDepth), uInvProjection).z;\n levelOcclusion += step(sampleViewPos.z + 0.025, sampleViewZ) * smootherstep(0.0, 1.0, uLevelRadius[l] / abs(selfViewPos.z - sampleViewZ)) * uLevelBias[l];\n }\n occlusion = max(occlusion, levelOcclusion);\n }\n #else\n for(int i = 0; i < dNSamples; i++) {\n vec3 sampleViewPos = TBN * uSamples[i];\n sampleViewPos = selfViewPos + sampleViewPos * uRadius;\n\n vec4 offset = vec4(sampleViewPos, 1.0);\n offset = uProjection * offset;\n offset.xyz = (offset.xyz / offset.w) * 0.5 + 0.5;\n\n float sampleDepth = getMappedDepth(offset.xy, selfCoords);\n float sampleViewZ = screenSpaceToViewSpace(vec3(offset.xy, sampleDepth), uInvProjection).z;\n\n occlusion += step(sampleViewPos.z + 0.025, sampleViewZ) * smootherstep(0.0, 1.0, uRadius / abs(selfViewPos.z - sampleViewZ));\n }\n #endif\n occlusion = 1.0 - (uBias * occlusion / float(dNSamples));\n\n vec2 packedOcclusion = packUnitIntervalToRG(clamp(occlusion, 0.01, 1.0));\n\n gl_FragColor = vec4(packedOcclusion, selfPackedDepth);\n}\n"),yn=(0,A.$h)(jt,"triangles",Wt,Vt,$t);return(0,y._)(yn,$t)}(It,Dr,this.depthHalfTarget.texture,this.depthQuarterTarget.texture),this.ssaoBlurFirstPassRenderable=gt(It,this.ssaoDepthTexture,"horizontal"),this.ssaoBlurSecondPassRenderable=gt(It,this.ssaoDepthBlurProxyTexture,"vertical"),this.renderable=function tt(jt,It,Dt,Ct,$t,Vt,Wt,yn){const Zt={...e.OM,tSsaoDepth:t.IQ.create(Wt),tColor:t.IQ.create(It),tDepthOpaque:t.IQ.create(Dt),tDepthTransparent:t.IQ.create(Ct),tShadows:t.IQ.create($t),tOutlines:t.IQ.create(Vt),uTexSize:t.IQ.create(c.ZY.create(It.getWidth(),It.getHeight())),dOrthographic:t.IQ.create(0),uNear:t.IQ.create(1),uFar:t.IQ.create(1e4),uFogNear:t.IQ.create(1e4),uFogFar:t.IQ.create(1e4),uFogColor:t.IQ.create(c.eB.create(1,1,1)),uOutlineColor:t.IQ.create(c.eB.create(0,0,0)),uOcclusionColor:t.IQ.create(c.eB.create(0,0,0)),uTransparentBackground:t.IQ.create(!1),dOcclusionEnable:t.IQ.create(!0),uOcclusionOffset:t.IQ.create(c.ZY.create(0,0)),dShadowEnable:t.IQ.create(!1),dOutlineEnable:t.IQ.create(!1),dOutlineScale:t.IQ.create(1),dTransparentOutline:t.IQ.create(yn)},kt={...rn},Ot=(0,r.NG)("postprocessing",v.e,"\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nuniform sampler2D tSsaoDepth;\nuniform sampler2D tColor;\nuniform sampler2D tDepthOpaque;\nuniform sampler2D tDepthTransparent;\nuniform sampler2D tShadows;\nuniform sampler2D tOutlines;\nuniform vec2 uTexSize;\n\nuniform float uNear;\nuniform float uFar;\nuniform float uFogNear;\nuniform float uFogFar;\nuniform vec3 uFogColor;\nuniform vec3 uOutlineColor;\nuniform vec3 uOcclusionColor;\nuniform bool uTransparentBackground;\nuniform vec2 uOcclusionOffset;\n\n#include common\n\nfloat getViewZ(const in float depth) {\n #if dOrthographic == 1\n return orthographicDepthToViewZ(depth, uNear, uFar);\n #else\n return perspectiveDepthToViewZ(depth, uNear, uFar);\n #endif\n}\n\nfloat getDepthOpaque(const in vec2 coords) {\n #ifdef depthTextureSupport\n return texture2D(tDepthOpaque, coords).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepthOpaque, coords));\n #endif\n}\n\nfloat getDepthTransparent(const in vec2 coords) {\n #ifdef dTransparentOutline\n return unpackRGBAToDepth(texture2D(tDepthTransparent, coords));\n #else\n return 1.0;\n #endif\n}\n\nbool isBackground(const in float depth) {\n return depth == 1.0;\n}\n\nfloat getOutline(const in vec2 coords, const in float opaqueDepth, out float closestTexel) {\n float backgroundViewZ = 2.0 * uFar;\n vec2 invTexSize = 1.0 / uTexSize;\n\n float transparentDepth = getDepthTransparent(coords);\n float opaqueSelfViewZ = isBackground(opaqueDepth) ? backgroundViewZ : getViewZ(opaqueDepth);\n float transparentSelfViewZ = isBackground(transparentDepth) ? backgroundViewZ : getViewZ(transparentDepth);\n float selfDepth = min(opaqueDepth, transparentDepth);\n\n float outline = 1.0;\n closestTexel = 1.0;\n for (int y = -dOutlineScale; y <= dOutlineScale; y++) {\n for (int x = -dOutlineScale; x <= dOutlineScale; x++) {\n if (x * x + y * y > dOutlineScale * dOutlineScale) {\n continue;\n }\n\n vec2 sampleCoords = coords + vec2(float(x), float(y)) * invTexSize;\n\n vec4 sampleOutlineCombined = texture2D(tOutlines, sampleCoords);\n float sampleOutline = sampleOutlineCombined.r;\n float sampleOutlineDepth = unpackRGToUnitInterval(sampleOutlineCombined.gb);\n float sampleOutlineViewZ = isBackground(sampleOutlineDepth) ? backgroundViewZ : getViewZ(sampleOutlineDepth);\n\n float selfViewZ = sampleOutlineCombined.a == 0.0 ? opaqueSelfViewZ : transparentSelfViewZ;\n if (sampleOutline == 0.0 && sampleOutlineDepth < closestTexel) {\n outline = 0.0;\n closestTexel = sampleOutlineDepth;\n }\n }\n }\n return closestTexel < opaqueDepth ? outline : 1.0;\n}\n\nfloat getSsao(vec2 coords) {\n float rawSsao = unpackRGToUnitInterval(texture2D(tSsaoDepth, coords).xy);\n if (rawSsao > 0.999) {\n return 1.0;\n } else if (rawSsao > 0.001) {\n return rawSsao;\n }\n // treat values close to 0.0 as errors and return no occlusion\n return 1.0;\n}\n\nvoid main(void) {\n vec2 coords = gl_FragCoord.xy / uTexSize;\n vec4 color = texture2D(tColor, coords);\n\n float viewDist;\n float fogFactor;\n float opaqueDepth = getDepthOpaque(coords);\n\n #ifdef dOcclusionEnable\n if (!isBackground(opaqueDepth)) {\n viewDist = abs(getViewZ(opaqueDepth));\n fogFactor = smoothstep(uFogNear, uFogFar, viewDist);\n float occlusionFactor = getSsao(coords + uOcclusionOffset);\n if (!uTransparentBackground) {\n color.rgb = mix(mix(uOcclusionColor, uFogColor, fogFactor), color.rgb, occlusionFactor);\n } else {\n color.rgb = mix(uOcclusionColor * (1.0 - fogFactor), color.rgb, occlusionFactor);\n }\n }\n #endif\n\n #ifdef dShadowEnable\n if (!isBackground(opaqueDepth)) {\n viewDist = abs(getViewZ(opaqueDepth));\n fogFactor = smoothstep(uFogNear, uFogFar, viewDist);\n vec4 shadow = texture2D(tShadows, coords);\n if (!uTransparentBackground) {\n color.rgb = mix(mix(vec3(0), uFogColor, fogFactor), color.rgb, shadow.a);\n } else {\n color.rgb = mix(vec3(0) * (1.0 - fogFactor), color.rgb, shadow.a);\n }\n }\n #endif\n\n // outline needs to be handled after occlusion and shadow to keep them clean\n #ifdef dOutlineEnable\n float closestTexel;\n float outline = getOutline(coords, opaqueDepth, closestTexel);\n if (outline == 0.0) {\n viewDist = abs(getViewZ(closestTexel));\n fogFactor = smoothstep(uFogNear, uFogFar, viewDist);\n if (!uTransparentBackground) {\n color.rgb = mix(uOutlineColor, uFogColor, fogFactor);\n } else {\n color.a = 1.0 - fogFactor;\n color.rgb = mix(uOutlineColor, color.rgb, fogFactor);\n }\n }\n #endif\n\n gl_FragColor = color;\n}\n"),An=(0,A.$h)(jt,"triangles",Ot,kt,Zt);return(0,y._)(An,Zt)}(It,$t.texture,Wt,Vt,this.shadowsTarget.texture,this.outlinesTarget.texture,this.ssaoDepthTexture,!0),this.background=new Ne(It,Dt,yn,Zt)}setSize(It,Dt){const[Ct,$t]=this.renderable.values.uTexSize.ref.value,Vt=this.calcSsaoScale(1);if(It!==Ct||Dt!==$t||this.ssaoScale!==Vt){this.ssaoScale=Vt,this.target.setSize(It,Dt),this.outlinesTarget.setSize(It,Dt),this.shadowsTarget.setSize(It,Dt);const Wt=Math.floor(It*this.ssaoScale),yn=Math.floor(Dt*this.ssaoScale);this.downsampledDepthTarget.setSize(Wt,yn),this.ssaoDepthTexture.define(Wt,yn),this.ssaoDepthBlurProxyTexture.define(Wt,yn);const Zt=Math.max(1,Math.floor(.5*Wt)),kt=Math.max(1,Math.floor(.5*yn));this.depthHalfTarget.setSize(Zt,kt);const Ot=Math.max(1,Math.floor(.25*Wt)),An=Math.max(1,Math.floor(.25*yn));this.depthQuarterTarget.setSize(Ot,An),t.IQ.update(this.renderable.values.uTexSize,c.ZY.set(this.renderable.values.uTexSize.ref.value,It,Dt)),t.IQ.update(this.outlinesRenderable.values.uTexSize,c.ZY.set(this.outlinesRenderable.values.uTexSize.ref.value,It,Dt)),t.IQ.update(this.shadowsRenderable.values.uTexSize,c.ZY.set(this.shadowsRenderable.values.uTexSize.ref.value,It,Dt)),t.IQ.update(this.downsampleDepthRenderable.values.uTexSize,c.ZY.set(this.downsampleDepthRenderable.values.uTexSize.ref.value,Wt,yn)),t.IQ.update(this.depthHalfRenderable.values.uTexSize,c.ZY.set(this.depthHalfRenderable.values.uTexSize.ref.value,Zt,kt)),t.IQ.update(this.depthQuarterRenderable.values.uTexSize,c.ZY.set(this.depthQuarterRenderable.values.uTexSize.ref.value,Ot,An)),t.IQ.update(this.ssaoRenderable.values.uTexSize,c.ZY.set(this.ssaoRenderable.values.uTexSize.ref.value,Wt,yn)),t.IQ.update(this.ssaoBlurFirstPassRenderable.values.uTexSize,c.ZY.set(this.ssaoBlurFirstPassRenderable.values.uTexSize.ref.value,Wt,yn)),t.IQ.update(this.ssaoBlurSecondPassRenderable.values.uTexSize,c.ZY.set(this.ssaoBlurSecondPassRenderable.values.uTexSize.ref.value,Wt,yn));const jn=1===this.ssaoScale?this.drawPass.depthTextureOpaque:this.downsampledDepthTarget.texture;t.IQ.update(this.depthHalfRenderable.values.tColor,jn),t.IQ.update(this.ssaoRenderable.values.tDepth,jn),this.depthHalfRenderable.update(),this.ssaoRenderable.update(),this.background.setSize(It,Dt)}}updateState(It,Dt,Ct,$t,Vt){var Wt;let yn=!1,Zt=!1,kt=!1,Ot=!1,An=!1,jn=!1;const On="orthographic"===It.state.mode?1:0,fr="on"===$t.outline.name,Dr="on"===$t.shadow.name,Pr="on"===$t.occlusion.name,or=c.$I.identity();c.$I.invert(or,It.projection);const[Nr,Ir]=this.renderable.values.uTexSize.ref.value,Or=It.viewport;if("on"===$t.occlusion.name){t.IQ.update(this.ssaoRenderable.values.uProjection,It.projection),t.IQ.update(this.ssaoRenderable.values.uInvProjection,or);const un=this.ssaoRenderable.values.uBounds,ct=this.ssaoScale;c.Zb.set(un.ref.value,Math.floor(Or.x*ct)/(Nr*ct),Math.floor(Or.y*ct)/(Ir*ct),Math.ceil((Or.x+Or.width)*ct)/(Nr*ct),Math.ceil((Or.y+Or.height)*ct)/(Ir*ct)),t.IQ.update(un,un.ref.value),t.IQ.update(this.ssaoBlurFirstPassRenderable.values.uBounds,un.ref.value),t.IQ.update(this.ssaoBlurSecondPassRenderable.values.uBounds,un.ref.value),t.IQ.updateIfChanged(this.ssaoBlurFirstPassRenderable.values.uNear,It.near),t.IQ.updateIfChanged(this.ssaoBlurSecondPassRenderable.values.uNear,It.near),t.IQ.updateIfChanged(this.ssaoBlurFirstPassRenderable.values.uFar,It.far),t.IQ.updateIfChanged(this.ssaoBlurSecondPassRenderable.values.uFar,It.far),t.IQ.update(this.ssaoBlurFirstPassRenderable.values.uInvProjection,or),t.IQ.update(this.ssaoBlurSecondPassRenderable.values.uInvProjection,or),this.ssaoBlurFirstPassRenderable.values.dOrthographic.ref.value!==On&&(Ot=!0,t.IQ.update(this.ssaoBlurFirstPassRenderable.values.dOrthographic,On),t.IQ.update(this.ssaoBlurSecondPassRenderable.values.dOrthographic,On)),this.nSamples!==$t.occlusion.params.samples&&(kt=!0,this.nSamples=$t.occlusion.params.samples,t.IQ.update(this.ssaoRenderable.values.uSamples,Gt(this.nSamples)),t.IQ.updateIfChanged(this.ssaoRenderable.values.dNSamples,this.nSamples));const dt="on"===$t.occlusion.params.multiScale.name;if(this.ssaoRenderable.values.dMultiScale.ref.value!==dt&&(kt=!0,t.IQ.update(this.ssaoRenderable.values.dMultiScale,dt)),"on"===$t.occlusion.params.multiScale.name){const cn=$t.occlusion.params.multiScale.params;if(!(0,t.bD)(this.levels,cn.levels)){kt=!0,this.levels=cn.levels;const xn=function nn(jt,It){const Dt=jt.length,{radius:Ct,bias:$t}=It||{radius:new Array(3*Dt).fill(0),bias:new Array(3*Dt).fill(0)};jt=jt.slice().sort((Vt,Wt)=>Vt.radius-Wt.radius);for(let Vt=0;Vt{"use strict";n.d(Ue,{H5:()=>r,PG:()=>A});var e=n(467);function r(c,i,v=1){let O=window.innerWidth,b=window.innerHeight;i!==document.body&&(O=i.offsetWidth,b=i.offsetHeight),function o(c,i,v,O=1){c.width=Math.round(window.devicePixelRatio*O*i),c.height=Math.round(window.devicePixelRatio*O*v),Object.assign(c.style,{width:`${i}px`,height:`${v}px`})}(c,O,b,v)}function A(c,i,v){return y.apply(this,arguments)}function y(){return(y=(0,e.A)(function*(c,i,v){return new Promise((O,b)=>{const _=M=>{M?O(M):b("no blob returned")};HTMLCanvasElement.prototype.toBlob?c.toBlob(_,i,v):function t(c,i,v,O){const b=atob(c.toDataURL(v,O).split(",")[1]),_=b.length,M=_>>2,I=new Uint8Array(_),l=new Uint32Array(I.buffer,0,M);let m=0;for(let d=0;d{"use strict";n.d(Ue,{VP:()=>O,iu:()=>e,Wm:()=>w,XI:()=>L});var e={};function o(Q,G){return{start:G&&typeof G.start<"u"?Math.max(Math.min(G.start,Q-1),0):0,end:G&&typeof G.end<"u"?Math.min(G.end,Q):Q}}function r(Q,G){const V=G&&typeof G.array<"u"?G.array:Array,{start:U,end:N}=o(Q,G);return{array:new V(N-U),start:U,end:N}}function t(Q,G,V){for(let U=0,N=G.length;UA,createArray:()=>r,fillArrayValues:()=>t,getArrayBounds:()=>o,isTypedArray:()=>y,typedArrayWindow:()=>c});var O,i=n(4369),v=n(2025);function M(Q,G,V,U){return{schema:V,__array:void 0,isDefined:0===U,rowCount:G,value:k=>Q,valueKind:k=>U,toArray:k=>{const{array:H}=r(G,k);for(let $=0,J=H.length;$!0}}function I({value:Q,valueKind:G,areValuesEqual:V,rowCount:U,schema:N}){return{schema:N,__array:void 0,isDefined:!0,rowCount:U,value:Q,valueKind:G||(k=>0),toArray:k=>{const{array:H,start:$}=r(U,k);for(let J=0,W=H.length;JQ(k)===Q(H))}}function l({array:Q,schema:G,valueKind:V}){const U=Q.length,N=G.T,k="str"===G.valueType?"lowercase"===G.transform?$=>{const J=Q[$];return"string"==typeof J?J.toLowerCase():`${J??N}`.toLowerCase()}:"uppercase"===G.transform?$=>{const J=Q[$];return"string"==typeof J?J.toUpperCase():`${J??N}`.toUpperCase()}:$=>{const J=Q[$];return"string"==typeof J?J:`${J??N}`}:$=>Q[$],H=y(Q);return{schema:G,__array:Q,isDefined:!0,rowCount:U,value:k,valueKind:V||($=>0),toArray:"str"===G.valueType?"lowercase"===G.transform?$=>{const{start:J,end:W}=o(U,$),te=new($&&typeof $.array<"u"?$.array:Q.constructor)(W-J);for(let de=0,ye=W-J;de{const{start:J,end:W}=o(U,$),te=new($&&typeof $.array<"u"?$.array:Q.constructor)(W-J);for(let de=0,ye=W-J;de{const{start:J,end:W}=o(U,$),te=new($&&typeof $.array<"u"?$.array:Q.constructor)(W-J);for(let de=0,ye=W-J;dec(Q,$):$=>{const{start:J,end:W}=o(U,$);if(0===J&&W===Q.length)return Q;const te=new($&&typeof $.array<"u"?$.array:Q.constructor)(W-J);for(let de=0,ye=W-J;deQ[$]===Q[J]}}!function(Q){let G;function U(ke,we){return M(we.T,ke,we,1)}function k(ke){return I(ke)}!function(ke){function Ve(Te,ie=ke.float){return{"@type":"tensor",T:Te.create(),space:Te,valueType:"tensor",baseType:ie}}ke.str={"@type":"str",T:"",valueType:"str"},ke.ustr={"@type":"str",T:"",valueType:"str",transform:"uppercase"},ke.lstr={"@type":"str",T:"",valueType:"str",transform:"lowercase"},ke.int={"@type":"int",T:0,valueType:"int"},ke.coord={"@type":"coord",T:0,valueType:"float"},ke.float={"@type":"float",T:0,valueType:"float"},ke.Str=function we(Te){var ie;return{"@type":"str",T:null!==(ie=Te?.defaultValue)&&void 0!==ie?ie:"",transform:Te?.transform,valueType:"str"}},ke.Int=function Oe(Te=0){return{"@type":"int",T:Te,valueType:"int"}},ke.Float=function Se(Te=0){return{"@type":"float",T:Te,valueType:"float"}},ke.Tensor=Ve,ke.Vector=function Ne(Te,ie=ke.float){return Ve(i.qY.Vector(Te,"int"===ie["@type"]?Int32Array:Float64Array),ie)},ke.Matrix=function K(Te,ie,ue=ke.float){return Ve(i.qY.ColumnMajorMatrix(Te,ie,"int"===ue["@type"]?Int32Array:Float64Array),ue)},ke.Aliased=function ne(Te){return Te},ke.List=function be(Te,ie,ue=[]){return{"@type":"list",T:ue,separator:Te,itemParse:ie,valueType:"list"}}}(G=Q.Schema||(Q.Schema={})),Q.is=function V(ke){return!!ke&&!!ke.schema&&!!ke.value},Q.ValueKind={Present:0,NotPresent:1,Unknown:2},Q.Undefined=U,Q.ofConst=function N(ke,we,Oe){return M(ke,we,Oe,0)},Q.ofLambda=k,Q.range=function H(ke,we){return k({value:Oe=>Oe+ke,rowCount:Math.max(we-ke+1,0),schema:G.int})},Q.ofArray=function $(ke){return l(ke)},Q.ofIntArray=function J(ke){return l({array:ke,schema:G.int})},Q.ofFloatArray=function W(ke){return l({array:ke,schema:G.float})},Q.ofStringArray=function te(ke){return l({array:ke,schema:G.str})},Q.ofStringAliasArray=function de(ke){return l({array:ke,schema:G.Aliased(G.str)})},Q.ofStringListArray=function ye(ke,we=","){return l({array:ke,schema:G.List(we,Oe=>Oe)})},Q.ofIntTokens=function j(ke){const{count:we,data:Oe,indices:Se}=ke;return I({value:Ve=>(0,v.H9)(Oe,Se[2*Ve],Se[2*Ve+1])||0,rowCount:we,schema:G.int})},Q.ofFloatTokens=function Z(ke){const{count:we,data:Oe,indices:Se}=ke;return I({value:Ve=>(0,v.sS)(Oe,Se[2*Ve],Se[2*Ve+1])||0,rowCount:we,schema:G.float})},Q.ofStringTokens=function q(ke){const{count:we,data:Oe,indices:Se}=ke;return I({value:Ve=>{const Ne=Oe.substring(Se[2*Ve],Se[2*Ve+1]);return"."===Ne||"?"===Ne?"":Ne},rowCount:we,schema:G.str})},Q.window=function Y(ke,we,Oe){return function m(Q,G,V){return Q.isDefined?0===G&&V===Q.rowCount?Q:Q.__array&&y(Q.__array)?function u(Q,G,V){const U=c(Q.__array,{start:G,end:V}),N=Q.valueKind;return l({array:U,schema:Q.schema,valueKind:k=>N(G+k)})}(Q,G,V):function d(Q,G,V){const U=Q.value,N=Q.valueKind,k=Q.areValuesEqual,H=0===G?U:J=>U(J+G),$=V-G;return{schema:Q.schema,__array:void 0,isDefined:Q.isDefined,rowCount:$,value:H,valueKind:0===G?N:J=>N(J+G),toArray:J=>{const{array:W}=r($,J);for(let te=0,de=W.length;tek(J+G,W+G)}}(Q,G,V):O.Undefined(V-G,Q.schema)}(ke,we,Oe)},Q.view=function ee(ke,we,Oe=!0){return function C(Q,G,V){return 0===Q.rowCount||V&&function s(Q,G){if(Q.length!==G)return!1;for(let V=0,U=Q.length;VN(G[k])})}(Q,G):function a(Q,G){const V=Q.value,U=Q.valueKind,N=Q.areValuesEqual,H=G.length;return{schema:Q.schema,__array:void 0,isDefined:Q.isDefined,rowCount:H,value:$=>V(G[$]),valueKind:$=>U(G[$]),toArray:$=>{const{array:J}=r(H,$);for(let W=0,te=J.length;WN(G[$],G[J])}}(Q,G)}(ke,we,Oe)},Q.createFirstIndexMap=function g(ke){return function b(Q){const G=new Map;for(let V=0,U=Q.rowCount;VG.has(V)?G.get(V):-1}(ke)},Q.mapToArray=function xe(ke,we,Oe){return function S(Q,G,V){const U=new V(Q.rowCount);for(let N=0,k=Q.rowCount;Nle[ke][Re],valueKind:ke=>typeof le[ke][Re]>"u"?1:0});return Ae},Q.ofArrays=function $(xe,le){var Ae;const Be=Object.create(null),Ce=Object.keys(xe);Be._rowCount=0,Be._columns=Ce,Be._schema=xe;for(const Re of Ce)typeof le[Re]<"u"?(Be[Re]=O.ofArray({array:le[Re],schema:xe[Re]}),Be._rowCount=null===(Ae=le[Re])||void 0===Ae?void 0:Ae.length):Be[Re]=O.Undefined(Be._rowCount,xe[Re]);return Be},Q.view=J,Q.pick=function W(xe,le,Ae){const Be=[];for(let Ce=0,Re=xe._rowCount;Cele(ke,we));let Be=!0;for(let Re=0,ke=Ae.length;Re{"use strict";n.d(Ue,{bw:()=>o,wl:()=>r,th:()=>y});class e{add(i){const v=this.getHash(i);if(this.byHash.has(v)){const O=this.byHash.get(v);for(let b=0,_=O.length;b<_;b++)if(this.areEqual(i,O[b]))return!1;return O[O.length]=i,this.size++,!0}return this.byHash.set(v,[i]),this.size++,!0}has(i){const v=this.getHash(i);if(!this.byHash.has(v))return!1;const O=this.byHash.get(v);for(let b=0,_=O.length;b<_;b++)if(this.areEqual(i,O[b]))return!0;return!1}constructor(i,v){this.getHash=i,this.areEqual=v,this.size=0,this.byHash=new Map}}function o(c,i){return new e(c,i)}function r(){return new A}function t(c){return{previous:null,next:null,inList:!0,value:c}}class A{constructor(){this.count=0,this.first=null,this.last=null}addFirst(i){const v=t(i);return v.inList=!0,this.first&&(this.first.previous=v),v.next=this.first,this.first=v,this.count++,this.last||(this.last=v),v}addLast(i){const v=t(i);return null!==this.last&&(this.last.next=v),v.previous=this.last,this.last=v,null===this.first&&(this.first=v),v.inList=!0,this.count++,v}removeFirst(){const i=this.first;if(i)return this.remove(i),i.value}removeLast(){const i=this.last;if(i)return this.remove(i),i.value}remove(i){i.inList&&(i.inList=!1,null!==i.previous?i.previous.next=i.next:null===i.previous&&(this.first=i.next),null!==i.next?i.next.previous=i.previous:null===i.next&&(this.last=i.previous),i.next=null,i.previous=null,this.count--)}find(i){let v=this.first;for(;null!==v;){if(v.value===i)return v;v=v.next}}}var y,c;(c=y||(y={})).create=function i(){return{keys:new Set,array:[]}},c.add=function v({keys:b,array:_},M,I){return!b.has(M)&&(b.add(M),_[_.length]=I,!0)},c.has=function O({keys:b},_){return b.has(_)}},3543:(tn,Ue,n)=>{"use strict";n.d(Ue,{Yz:()=>v,IX:()=>e.I,YB:()=>y,CD:()=>o.C,hT:()=>r.h,SortedArray:()=>t.X});var e=n(7103),o=n(5100),r=n(2928),t=n(1839);function y(b){return new c(b)}n(3370);class c{remove(_){const{prev:M,next:I}=this,l=M[_],m=I[_];l>=0&&(I[l]=m,M[_]=-1),m>=0&&(M[m]=l,I[_]=-1),_===this.head&&(this.head=l<0?m:l)}has(_){return this.prev[_]>=0||this.next[_]>=0||this.head===_}constructor(_){this.head=_>0?0:-1,this.prev=new Int32Array(_),this.next=new Int32Array(_);for(let M=0;M<_;M++)this.next[M]=M+1,this.prev[M]=M-1;this.prev[0]=-1,this.next[_-1]=-1}}var v,i=n(8382);!function(b){function M(){return new Map}b.Empty=new Map,b.keyArray=function _(u){return(0,i.ZR)(u.keys())},b.Mutable=M,b.asImmutable=function I(u){return u},b.copy=function l(u){const d=M(),s=u.keys();for(;;){const{done:C,value:h}=s.next();if(C)break;d.set(h,u.get(h))}return d},b.addFrom=function m(u,d){const s=d.keys();for(;;){const{done:C,value:h}=s.next();if(C)break;u.set(h,d.get(h))}return u}}(v||(v={})),n(862)},7103:(tn,Ue,n)=>{"use strict";n.d(Ue,{I:()=>R});var e=n(3370);const o=e.U.Zero;function r(f,p){return e.U.create(f,p0&&T>0&&O(f)>=v(p)&&v(f)<=O(p)}function C(f,p){const E=c(f);if(p<=E)return 0;const T=i(f);return p>=T?T-E:p-E}function a(f,p,E){return t(C(f,p),C(f,E+1))}var R,f;(f=R||(R={})).Empty=o,f.ofSingleton=p=>r(p,p),f.ofRange=r,f.ofBounds=t,f.ofLength=function A(f){return e.U.create(0,f<0?0:f)},f.is=y,f.has=function I(f,p){return e.U.fst(f)<=p&&p=E&&p=i(p):0===b(p)},f.findPredecessorIndex=C,f.findPredecessorIndexInInterval=function h(f,p,E){const T=c(E),L=c(f);if(p<=T+L)return T;const w=i(E);return p>=w+L?w:p-L},f.findRange=a,f.intersectionSize=function D(f,p){return b(a(f,v(p),O(p)))},f.intersect=function S(f,p){return d(f,p)?t(Math.max(c(f),c(p)),Math.min(i(f),i(p))):o}},5100:(tn,Ue,n)=>{"use strict";n.d(Ue,{C:()=>ye});var e=n(1839),o=n(7103);const r=o.I.Empty,t=o.I.ofSingleton,A=o.I.ofRange,y=o.I.ofBounds;function c(j){return j.length?e.X.isRange(j)?o.I.ofRange(j[0],j[j.length-1]):j:r}function i(j){return o.I.is(j)?o.I.size(j):e.X.size(j)}function b(j,Z){return o.I.is(j)?o.I.getAt(j,Z):j[Z]}function _(j){return o.I.is(j)?o.I.min(j):e.X.min(j)}function M(j){return o.I.is(j)?o.I.max(j):e.X.max(j)}function E(j,Z){return o.I.size(j)===e.X.size(Z)&&o.I.start(j)===e.X.start(Z)&&o.I.end(j)===e.X.end(Z)}function T(j,Z){return 0!==j.length&&0!==o.I.size(e.X.findRange(j,o.I.min(Z),o.I.max(Z)))}function U(j,Z){const q=o.I.size(Z);if(!q)return j;if(function G(j,Z){return i(j)?!i(Z)||_(j)<=_(Z)&&M(j)>=M(Z):0===i(Z)}(Z,j))return Z;const Y=o.I.min(Z),ee=o.I.max(Z),g=e.X.findRange(j,Y,ee),_e=o.I.start(g),xe=o.I.end(g),le=new Int32Array(_e+(j.length-xe)+q);let Ae=0;for(let Be=0;Be<_e;Be++)le[Ae++]=j[Be];for(let Be=Y;Be<=ee;Be++)le[Ae++]=Be;for(let Be=xe,Ce=j.length;Be=q&&g<=Y}(j,Z):o.I.is(Z)?function L(j,Z){const q=o.I.min(Z),Y=o.I.max(Z);if(Y-q+1==0)return!0;const ee=e.X.min(j),g=e.X.max(j);if(qg)return!1;const _e=e.X.findRange(j,q,Y);return o.I.size(_e)===o.I.size(Z)}(j,Z):e.X.isSubset(j,Z)},j.union=function R(j,Z){return o.I.is(j)?o.I.is(Z)?function V(j,Z){if(o.I.areEqual(j,Z))return j;const q=o.I.size(j),Y=o.I.size(Z);if(!Y)return j;if(!q)return Z;const ee=o.I.min(j),g=o.I.min(Z);if(function Q(j,Z){const q=i(j),Y=i(Z);return 0===q&&0===Y||q>0&&Y>0&&M(j)>=_(Z)&&_(j)<=M(Z)}(j,Z))return o.I.ofRange(Math.min(ee,g),Math.max(o.I.max(j),o.I.max(Z)));let _e,xe,le,Ae;eewe||(le++,Be++),Ce++)}if(0===le)return r;if(le===ee&&le===g)return j;const Re=new Int32Array(le);for(Ae=0,Be=0,Ce=_e;Bewe||(Re[Ae++]=Ce,Be++),Ce++)}return c(Re)},j.subtract=function p(j,Z){return o.I.is(j)?o.I.is(Z)?function H(j,Z){if(o.I.areEqual(j,Z))return r;if(!o.I.areIntersecting(j,Z))return j;const q=o.I.min(j),Y=o.I.max(j),ee=o.I.min(Z),g=o.I.max(Z);if(Yle.push(Ae)),le},j.toString=function _e(xe){return function u(j){return o.I.is(j)?o.I.toString(j):e.X.toString(j)}(xe)}},2928:(tn,Ue,n)=>{"use strict";n.d(Ue,{h:()=>b});var b,_,e=n(5100),o=n(7103),r=n(1839);function t(_){const M=r.X.ofSortedArray(_),I=r.X.max(M),l=new Int32Array(I);for(let m=0,u=_.length-1;m=this.segmentMin&&o.I.size(this.setRange)>0;break}this.updateSegmentRange()}return this.value}updateValue(){const I=e.C.findPredecessorIndexInInterval(this.set,this.segments[this.segmentMin+1],this.setRange);return this.value.start=o.I.start(this.setRange),this.value.end=I,this.setRange=o.I.ofBounds(I,o.I.end(this.setRange)),I>this.value.start}updateSegmentRange(){const M=o.I.min(this.setRange),I=o.I.max(this.setRange);I=this.segmentMin)}setSegment(M){this.setRange=o.I.ofBounds(M.start,M.end),this.updateSegmentRange()}constructor(M,I,l,m){this.segments=M,this.segmentMap=I,this.set=l,this.segmentMin=0,this.segmentMax=0,this.setRange=o.I.Empty,this.value={index:0,start:0,end:0},this.hasNext=!1,this.setRange=m,this.updateSegmentRange()}}(_=b||(b={})).create=t,_.ofOffsets=function A(_,M){const I=o.I.start(M),l=new Int32Array(_.length+1);for(let m=0,u=_.length;m=e.C.max(_)?-1:e.C.findPredecessorIndex(_,I-1);return e.C.findRange(M,e.C.getAt(_,m),e.C.getAt(_,m+1)-1)},_.transientSegments=function O(_,M,I){const l=typeof I<"u"?o.I.ofBounds(I.start,I.end):o.I.ofBounds(0,e.C.size(M));return new v(_.offsets,_.index,M,l)}},1839:(tn,Ue,n)=>{"use strict";n.d(Ue,{X:()=>J});var e=n(8382),o=n(7103);const r=[];function c(W,te){if(teW[de-1]?de:p(W,te,0,de)}function f(W,te,de,ye){let j=de,Z=ye-1;for(;j<=Z;){if(j+11>Z){for(let ee=j;ee<=Z;ee++)if(te===W[ee])return ee;return-1}const q=j+Z>>1,Y=W[q];if(teY))return q;j=q+1}}return-1}function p(W,te,de,ye){let j=de,Z=ye-1;for(;jZ){for(let ee=j;ee<=Z;ee++)if(te<=W[ee])return ee;return Z+1}const q=j+Z>>1,Y=W[q];if(teY))return q;j=q+1}}return j>Z?Z+1:W[j]>=te?j:j+1}function G(W,te,de,ye,j,Z){let q=de,Y=ye,ee=0;for(;q_e?Y++:(q++,Y++,ee++)}return ee}const H={startI:0,startJ:0,endI:0,endJ:0};function $(W,te){const de=W.length,ye=te.length,j=de/ye;return de>=128||ye>=128||j<=.34||j>=2.99?(H.startI=S(W,O(te)),H.startJ=S(te,O(W)),H.endI=S(W,b(te)),H.endJ=S(te,b(W))):(H.startI=0,H.startJ=0,H.endI=de,H.endJ=ye),H}var J,W;(W=J||(J={})).Empty=r,W.ofUnsortedArray=function y(W){return(0,e.eh)(W),W},W.ofSingleton=function t(W){return[W]},W.ofSortedArray=function A(W){return W},W.ofRange=c,W.ofBounds=(te,de)=>c(te,de-1),W.is=function i(W){return W&&(Array.isArray(W)||!!W.buffer)},W.isRange=v,W.has=function C(W,te){return u(W,te)>=0},W.indexOf=u,W.indexOfInInterval=function d(W,te,de){return s(W,te,o.I.start(de),o.I.end(de))},W.indexOfInRange=s,W.start=O,W.end=b,W.min=function _(W){return W[0]},W.max=function M(W){return W[W.length-1]},W.size=I,W.hashCode=function l(W){const te=W.length;return te?te>2?(0,e.hX)(te,W[0],W[te-1],W[te>>1]):(0,e.CP)(te,W[0],W[te-1]):0},W.toString=function m(W){const te=W.length;return te>5?`[${W[0]}, ${W[1]}, ..., ${W[te-1]}], length ${te}`:`[${W.join(", ")}]`},W.areEqual=a,W.areIntersecting=function T(W,te){if(W===te)return!0;let{startI:de,startJ:ye,endI:j,endJ:Z}=$(W,te);for(;deY))return!0;ye++}}return!1},W.isSubset=function L(W,te){if(W===te)return!0;const de=te.length;let{startI:ye,startJ:j,endI:Z,endJ:q}=$(W,te);if(q-jg?j++:(ye++,j++,Y++)}return Y===de},W.union=function w(W,te){if(W===te)return W;const de=W.length,ye=te.length;if(0===de)return te;if(0===ye)return W;if(W[0]>te[0])return w(te,W);const{startI:j,startJ:Z,endI:q,endJ:Y}=$(W,te),ee=G(W,te,j,Z,q,Y);if(ee===de&&ee===ye||ee===ye)return W;if(ee===de)return te;const g=new Int32Array(de+ye-ee);let _e=0,xe=0,le=0;for(_e=0;_ete[xe];)g[le++]=te[xe++];for(;_eBe?(g[le++]=Be,xe++):(g[le++]=Ae,_e++,xe++)}for(;_eBe||(g[_e++]=Ae,xe++),le++)}return g},W.subtract=function U(W,te){if(W===te)return r;const de=W.length,{startI:ye,startJ:j,endI:Z,endJ:q}=$(W,te);let Y=ye,ee=j,g=0;for(;YAe?ee++:(Y++,ee++,g++)}if(!g)return W;if(g>=de)return r;const _e=new Int32Array(de-g);let xe=0;for(let le=0;leAe||Y++,ee++)}for(;Yye&&te>W[j-1]?j:te-Z<=11?function E(W,te,de,ye){for(let j=de;jAe?Y++:(q++,Y++,ee++)}if(!ee)return r;if(ee===W.length)return(0,e.vc)(0,W.length-1);const _e=new Int32Array(ee);let xe=0;for(q=de,Y=ye;qAe||(_e[xe++]=q,q++),Y++)}return _e}},5734:(tn,Ue,n)=>{"use strict";n.d(Ue,{m:()=>o});var o,e=n(3543);!function(r){function i(S){return S[S.length-1]}function O(S){return S.length/2}function b(S,D){return S[2*D]}function _(S,D){return S[2*D+1]+1}function M(S,D){return S[2*D]}function I(S,D){return S[2*D+1]}function s(S,D){return C(S,D,0)}function C(S,D,R){if(M(S,R)>e.CD.max(D)||i(S){"use strict";n.d(Ue,{U:()=>o});var o,e=n(8382);!function(r){r.Zero=0;const{_int32:t,_float64:A,_int32_1:y,_float64_1:c}=function(){const d=new ArrayBuffer(8),s=new ArrayBuffer(8);return{_int32:new Int32Array(d),_float64:new Float64Array(d),_int32_1:new Int32Array(s),_float64_1:new Float64Array(s)}}();r.is=function i(d){return"number"==typeof d},r.create=function v(d,s){return t[0]=d,t[1]=s,A[0]},r.diff=function O(d){return A[0]=d,t[1]-t[0]},r.fst=function b(d){return A[0]=d,t[0]},r.snd=function _(d){return A[0]=d,t[1]},r.areEqual=function M(d,s){return A[0]=d,c[0]=s,t[0]===y[0]&&t[1]===y[1]},r.compare=function I(d,s){A[0]=d,c[0]=s;const C=t[0]-y[0];return 0!==C?C:t[1]-y[1]},r.compareInArray=function l(d,s,C){A[0]=d[s],c[0]=d[C];const h=t[0]-y[0];return 0!==h?h:t[1]-y[1]},r.hashCode=function m(d){return A[0]=d,(0,e.vb)(t[0],t[1])},r.toString=function u(d){return A[0]=d,`(${t[0]}, ${t[1]})`}}(o||(o={}))},862:(tn,Ue,n)=>{"use strict";n.d(Ue,{f:()=>y});class e{move(){return++this.index,this.lastValue=this.xs[this.index],this.hasNext=this.index0,this.xs=i,this.index=-1,this.lastValue=i.length>0?i[0]:void 0}}class o{move(){return++this.value,this.hasNext=this.value=i}}class r{move(){return this.hasNext=!1,this.value}constructor(i){this.value=i,this.hasNext=!0}}class t{move(){const i=this.f(this.base.move());return this.hasNext=this.base.hasNext,i}constructor(i,v){this.base=i,this.f=v,this.hasNext=!1,this.hasNext=i.hasNext}}class A{move(){const i=this.next;return this.hasNext=this.findNext(),i}findNext(){for(;this.base.hasNext;)if(this.next=this.base.move(),this.p(this.next))return!0;return!1}constructor(i,v){this.base=i,this.p=v,this.hasNext=this.findNext()}}var y,c;(c=y||(y={})).Empty=new o(0,-1),c.Array=function i(I){return new e(I)},c.Value=function v(I){return new r(I)},c.Range=function O(I,l){return new o(I,l)},c.map=function b(I,l){return new t(I,l)},c.filter=function _(I,l){return new A(I,l)},c.forEach=function M(I,l,m){for(;I.hasNext;)if(l(I.move(),m))return m;return m}},8382:(tn,Ue,n)=>{"use strict";var e;n.d(Ue,{Gm:()=>e,BI:()=>c,L9:()=>h,qI:()=>D,VE:()=>o.VE,m1:()=>M,vc:()=>S,C_:()=>i,vb:()=>v,CP:()=>O,hX:()=>b,TI:()=>m,YZ:()=>_,Ao:()=>l,ZR:()=>a,h3:()=>A,di:()=>o.di,eh:()=>o.eh,bd:()=>I}),function(f){function E(H){const $=H.growBy*H.elementSize;H.currentSize=$,H.currentIndex=0,H.currentChunk=new H.ctor($),H.allocatedSize+=$,H.chunks[H.chunks.length]=H.currentChunk}function N(H,$){const{ctor:J,chunks:W,currentIndex:te}=H;if(!W.length)return new J(0);if(1===W.length&&($||te===H.allocatedSize))return W[0];let de=0;for(let q=0,Y=W.length-1;q=H.currentSize)ye.set(Z,j);else for(let q=0,Y=Z.length;q=H.currentSize&&E(H);const de=H.currentChunk,ye=H.currentIndex;return de[ye]=$,de[ye+1]=J,de[ye+2]=W,de[ye+3]=te,H.currentIndex+=4,H.elementCount++},f.add3=function L(H,$,J,W){H.currentIndex>=H.currentSize&&E(H);const te=H.currentChunk,de=H.currentIndex;return te[de]=$,te[de+1]=J,te[de+2]=W,H.currentIndex+=3,H.elementCount++},f.add2=function w(H,$,J){H.currentIndex>=H.currentSize&&E(H);const W=H.currentChunk,te=H.currentIndex;return W[te]=$,W[te+1]=J,H.currentIndex+=2,H.elementCount++},f.add=function Q(H,$){return H.currentIndex>=H.currentSize&&E(H),H.currentChunk[H.currentIndex]=$,H.currentIndex+=1,H.elementCount++},f.addRepeat=function G(H,$,J){for(let W=0;W<$;W++)H.currentIndex>=H.currentSize&&E(H),H.currentChunk[H.currentIndex++]=J,H.elementCount++;return H.elementCount},f.addMany=function V(H,$){const{elementSize:J}=H;for(let W=0,te=$.length;W=H.currentSize&&E(H);const{currentChunk:de}=H;for(let ye=0;ye"u")return te;if("number"==typeof W)return te.currentChunk=new H(W*$),te.allocatedSize=W*$,te.currentSize=te.currentChunk.length,te.chunks[0]=te.currentChunk,te;const de=W;if(de.length%$!=0)throw new Error("initialChunk length must be a multiple of the element size.");return te.currentChunk=de,te.allocatedSize=de.length,te.currentSize=de.length,te.chunks[0]=de,te}}(e||(e={}));var o=n(5527);function r(f,p,E){return f[p].keyQ[$].key){N=!1;break}if(V&&N){for(let $=0;$>4;return p=(3735928559^p)+(p<<5),p^=p>>11,p}function v(f,p){let E=23;return E=31*E+f|0,E=31*E+p|0,E^=E>>4,E=(3735928559^E)+(E<<5),E^=E>>11,E}function O(f,p,E){let T=23;return T=31*T+f|0,T=31*T+p|0,T=31*T+E|0,T^=T>>4,T=(3735928559^T)+(T<<5),T^=T>>11,T}function b(f,p,E,T){let L=23;return L=31*L+f|0,L=31*L+p|0,L=31*L+E|0,L=31*L+T|0,L^=L>>4,L=(3735928559^L)+(L<<5),L^=L>>11,L}function _(f){let p=0;for(let E=0,T=f.length;E>>0}function h(f,p){for(let E=0,T=f.length;E{"use strict";function e(M,I,l){return M[I]-M[l]}function o(M,I,l){const m=M[I];M[I]=M[l],M[l]=m}function r(M,I,l,m){const u=l+m>>1;return I(M,l,m)>0?I(M,l,u)>0?I(M,u,m)>0?u:m:l:I(M,m,u)>0?I(M,u,l)>0?u:l:m}function t(M,I,l){const{cmp:m,swap:u,data:d,parts:s}=M;let C=I+1,h=l;for(u(d,I,r(d,m,I,l));m(d,h,I)>0;)--h;for(let a=I+1;a<=h;a++){const S=m(d,a,I);if(S>0){for(u(d,a,h),--h;m(d,h,I)>0;)--h;a--}else 0===S&&(u(d,a,C),C++)}for(let a=I;a=m&&I(M,s,s+1)>0;)l(M,s,s+1),s-=1}}function y(M,I,l){const{parts:m}=M;for(;Is;)--d;for(let C=l+1;C<=d;C++){const h=M[C];if(h>s){for(o(M,C,d),--d;M[d]>s;)--d;C--}else h===s&&(o(M,C,u),++u)}for(let C=l;C=I&&M[d]>u;)M[d+1]=M[d],d-=1;M[d+1]=u}}function v(M,I,l,m){for(;lo,di:()=>_,eh:()=>O})},5019:(tn,Ue,n)=>{"use strict";n.d(Ue,{Y0:()=>s,iy:()=>C,jH:()=>d,sF:()=>m,uE:()=>u});var e=n(9909),o=n(1888),r=n(8277),t=n(3596),A=n(2745),y=n(364),c=n(9347),i=n(5013),v=n(127),O=n(6765),b=n(9390),_=n(2086),M=n(8599);const l=Object.keys({custom:{},auto:{},highest:{},higher:{},high:{},medium:{},low:{},lower:{},lowest:{}}),m=r.t.arrayToOptions(l),u={smoothColors:r.t.MappedStatic("auto",{auto:r.t.Group({}),on:r.t.Group({resolutionFactor:r.t.Numeric(2,{min:.5,max:6,step:.1}),sampleStride:r.t.Numeric(3,{min:1,max:12,step:1})}),off:r.t.Group({})})};function d(h){return!!h.smoothColors}function s(h,a,S){if(("on"===h.name||"auto"===h.name&&a)&&S&&S<3){let D=3;return"on"===h.name?(S*=h.params.resolutionFactor,D=h.params.sampleStride):(S*=2-(0,v.TF)(0,1.1,S),(S=Math.max(.5,S))>1.2&&(D=2)),{resolution:S,stride:D}}}var C,h;(h=C||(C={})).MaterialCategory={category:"Material"},h.ShadingCategory={category:"Shading"},h.CullingLodCategory={category:"Culling & LOD"},h.CustomQualityParamInfo={category:"Custom Quality",hideIf:p=>typeof p.quality<"u"&&"custom"!==p.quality},h.Params={alpha:r.t.Numeric(1,{min:0,max:1,step:.01},{label:"Opacity",isEssential:!0,description:"How opaque/transparent the representation is rendered."}),quality:r.t.Select("auto",m,{isEssential:!0,description:"Visual/rendering quality of the representation."}),material:O.i.getParam(),clip:r.t.Group(b.B.Params),emissive:r.t.Numeric(0,{min:0,max:1,step:.01}),instanceGranularity:r.t.Boolean(!1,{description:"Use instance granularity for marker, transparency, clipping, overpaint, substance data to save memory."}),lod:r.t.Vec3((0,_.e)(),void 0,{...h.CullingLodCategory,description:"Level of detail.",fieldLabels:{x:"Min Distance",y:"Max Distance",z:"Overlap (Shader)"}}),cellSize:r.t.Numeric(200,{min:0,max:5e3,step:100},{...h.CullingLodCategory,description:"Instance grid cell size."}),batchSize:r.t.Numeric(2e3,{min:0,max:5e4,step:500},{...h.CullingLodCategory,description:"Instance grid batch size."})},h.createSimple=function a(p=A.s.grey,E=1,T){return T||(T=(0,t.Zk)()),{transform:T,locationIterator:(0,o.iQ)(1,T.instanceCount.ref.value,1,()=>y.LU,!1,()=>!1),theme:{color:(0,c.TA)({},{value:p,lightness:0,saturation:0}),size:(0,i.ru)({},{value:E})}}},h.createValues=function S(p,E){const T=b.B.getClip(p.clip);return{alpha:e.IQ.create(p.alpha),uAlpha:e.IQ.create(p.alpha),uVertexCount:e.IQ.create(E.vertexCount),uGroupCount:e.IQ.create(E.groupCount),drawCount:e.IQ.create(E.drawCount),uMetalness:e.IQ.create(p.material.metalness),uRoughness:e.IQ.create(p.material.roughness),uBumpiness:e.IQ.create(p.material.bumpiness),uEmissive:e.IQ.create(p.emissive),dLightCount:e.IQ.create(1),dColorMarker:e.IQ.create(!0),dClipObjectCount:e.IQ.create(T.objects.count),dClipVariant:e.IQ.create(T.variant),uClipObjectType:e.IQ.create(T.objects.type),uClipObjectInvert:e.IQ.create(T.objects.invert),uClipObjectPosition:e.IQ.create(T.objects.position),uClipObjectRotation:e.IQ.create(T.objects.rotation),uClipObjectScale:e.IQ.create(T.objects.scale),instanceGranularity:e.IQ.create(p.instanceGranularity),uLod:e.IQ.create(M.Z.create(p.lod[0],p.lod[1],p.lod[2],0))}},h.updateValues=function D(p,E){e.IQ.updateIfChanged(p.alpha,E.alpha),e.IQ.updateIfChanged(p.uMetalness,E.material.metalness),e.IQ.updateIfChanged(p.uRoughness,E.material.roughness),e.IQ.updateIfChanged(p.uBumpiness,E.material.bumpiness),e.IQ.updateIfChanged(p.uEmissive,E.emissive);const T=b.B.getClip(E.clip);e.IQ.updateIfChanged(p.dClipObjectCount,T.objects.count),e.IQ.updateIfChanged(p.dClipVariant,T.variant),e.IQ.update(p.uClipObjectType,T.objects.type),e.IQ.update(p.uClipObjectInvert,T.objects.invert),e.IQ.update(p.uClipObjectPosition,T.objects.position),e.IQ.update(p.uClipObjectRotation,T.objects.rotation),e.IQ.update(p.uClipObjectScale,T.objects.scale),e.IQ.updateIfChanged(p.instanceGranularity,E.instanceGranularity),e.IQ.update(p.uLod,M.Z.set(p.uLod.ref.value,E.lod[0],E.lod[1],E.lod[2],0))},h.createRenderableState=function R(p={}){const E=void 0===p.alpha||1===p.alpha;return{disposed:!1,visible:!0,alphaFactor:1,pickable:!0,colorOnly:!1,opaque:E,writeDepth:E}},h.updateRenderableState=function f(p,E){p.opaque=E.alpha*p.alphaFactor>=1,p.writeDepth=p.opaque}},5077:(tn,Ue,n)=>{"use strict";n.d(Ue,{$G:()=>y,EN:()=>i,HB:()=>t,eO:()=>A});var e=n(7187),o=n(4369),r=n(3784);function t(v,O,b,_){return v.fill(_,O,b),!0}function A(v,O,b){v.fill(0,O,b)}function y(v,O,b){const _=(0,r.xg)(Math.max(1,v),1,Uint8Array,b&&b.tClipping.ref.value.array);return b?(e.IQ.update(b.tClipping,_),e.IQ.update(b.uClippingTexDim,o.ZY.create(_.width,_.height)),e.IQ.updateIfChanged(b.dClipping,v>0),e.IQ.updateIfChanged(b.dClippingType,O),b):{tClipping:e.IQ.create(_),uClippingTexDim:e.IQ.create(o.ZY.create(_.width,_.height)),dClipping:e.IQ.create(v>0),dClippingType:e.IQ.create(O)}}const c={array:new Uint8Array(1),width:1,height:1};function i(v){return v?(e.IQ.update(v.tClipping,c),e.IQ.update(v.uClippingTexDim,o.ZY.create(1,1)),e.IQ.updateIfChanged(v.dClipping,!1),v):{tClipping:e.IQ.create(c),uClippingTexDim:e.IQ.create(o.ZY.create(1,1)),dClipping:e.IQ.create(!1),dClippingType:e.IQ.create("groupInstance")}}},2712:(tn,Ue,n)=>{"use strict";n.d(Ue,{D1:()=>c});var e=n(9909),o=n(3784),r=n(190),t=n(4369),A=n(364),y=n(4648);function c(C,h,a,S){const D=function i(C,h,a,S){switch(a.granularity){case"uniform":return function b(C,h,a){return function O(C,h){return h?(e.IQ.update(h.uColor,r.Q1.toVec3Normalized(h.uColor.ref.value,C)),e.IQ.updateIfChanged(h.dColorType,"uniform"),h):{uColor:e.IQ.create(r.Q1.toVec3Normalized((0,t.eB)(),C)),tColor:e.IQ.create({array:new Uint8Array(3),width:1,height:1}),tColorGrid:e.IQ.create((0,y.z6)()),tPalette:e.IQ.create({array:new Uint8Array(3),width:1,height:1}),uColorTexDim:e.IQ.create(t.ZY.create(1,1)),uColorGridDim:e.IQ.create(t.eB.create(1,1,1)),uColorGridTransform:e.IQ.create(t.Zb.create(0,0,0,1)),dColorType:e.IQ.create("uniform"),dUsePalette:e.IQ.create(!1)}}(h(A.LU,!1),a)}(0,a.color,S);case"instance":return C.nonInstanceable?I(C,a.color,S):function M(C,h,a){const{instanceCount:S}=C,D=(0,o.xg)(Math.max(1,S),3,Uint8Array,a&&a.tColor.ref.value.array);for(C.reset();C.hasNext;){const{location:R,isSecondary:f,instanceIndex:p}=C.move();r.Q1.toArray(h(R,f),D.array,3*p),C.skipInstance()}return _(D,"instance",a)}(C,a.color,S);case"group":return I(C,a.color,S);case"groupInstance":return function l(C,h,a){const{groupCount:S,instanceCount:D,hasLocation2:R}=C,p=(0,o.xg)(Math.max(1,D*S*(R?2:1)),3,Uint8Array,a&&a.tColor.ref.value.array);C.reset();const E=R?6:3;for(;C.hasNext;){const{location:T,location2:L,isSecondary:w,index:Q}=C.move();r.Q1.toArray(h(T,w),p.array,Q*E),R&&r.Q1.toArray(h(L,w),p.array,Q*E+3)}return _(p,"groupInstance",a)}(C,a.color,S);case"vertex":return function m(C,h,a){const{groupCount:S,stride:D}=C,R=(0,o.xg)(Math.max(1,S),3,Uint8Array,a&&a.tColor.ref.value.array);for(C.reset(),C.voidInstances();C.hasNext&&!C.isNextNewInstance;){const{location:f,isSecondary:p,groupIndex:E}=C.move(),T=h(f,p);for(let L=0;L{"use strict";n.d(Ue,{h:()=>v});var e=n(8382),o=n(283),r=n(4369);const t=(0,r.eB)(),A=(0,r.eB)(),y=(0,r.eB)(),c=e.Gm.add,i=e.Gm.add3;var v;(v||(v={})).create=function _(M=2048,I=1024,l){const m=e.Gm.create(Float32Array,1,I,l?l.groupBuffer.ref.value:M),u=e.Gm.create(Float32Array,3,I,l?l.startBuffer.ref.value:M),d=e.Gm.create(Float32Array,3,I,l?l.endBuffer.ref.value:M),s=e.Gm.create(Float32Array,1,I,l?l.scaleBuffer.ref.value:M),C=e.Gm.create(Float32Array,1,I,l?l.capBuffer.ref.value:M),h=e.Gm.create(Float32Array,1,I,l?l.colorModeBuffer.ref.value:M),a=(D,R,f,p,E,T,L,w,Q,G,V)=>{for(let U=0;U<6;++U)i(u,D,R,f),i(d,p,E,T),c(m,V),c(s,L),c(C,(w?1:0)+(Q?2:0)),c(h,G)},S=(D,R,f,p,E,T,L,w,Q)=>{const G=r.eB.distance(D,R),V=f%2!=0,U=Math.floor((f+1)/2),N=G/(f+.5);let k=2;r.eB.setMagnitude(y,r.eB.sub(y,R,D),N),r.eB.copy(t,D);for(let H=0;H{const Q=r.eB.distance(D,R);S(D,R,Q/f,p,E,T,!0,L,w)},getCylinders:()=>{const D=m.elementCount/6,R=e.Gm.compact(m,!0),f=e.Gm.compact(u,!0),p=e.Gm.compact(d,!0),E=e.Gm.compact(s,!0),T=e.Gm.compact(C,!0),L=e.Gm.compact(h,!0),w=l&&D<=l.cylinderCount?l.mappingBuffer.ref.value:new Float32Array(18*D),Q=l&&D<=l.cylinderCount?l.indexBuffer.ref.value:new Uint32Array(12*D);return(!l||D>l.cylinderCount)&&function O(b,_,M){for(let I=0;I{"use strict";n.d(Ue,{S:()=>d});var d,e=n(9909),o=n(4369),r=n(4559),t=n(2712),A=n(8013),y=n(7684),c=n(1888),i=n(8277),v=n(3784),O=n(5384),b=n(5019),_=n(2075),M=n(9197),I=n(8382),l=n(5077),m=n(8307),u=n(6022);!function(s){function C(G,V,U,N,k,H,$,J,W,te){return te?function D(G,V,U,N,k,H,$,J,W,te){return W>te.cylinderCount&&(e.IQ.update(te.mappingBuffer,G),e.IQ.update(te.indexBuffer,V)),te.cylinderCount=W,e.IQ.update(te.groupBuffer,U),e.IQ.update(te.startBuffer,N),e.IQ.update(te.endBuffer,k),e.IQ.update(te.scaleBuffer,H),e.IQ.update(te.capBuffer,$),e.IQ.update(te.colorModeBuffer,J),te}(G,V,U,N,k,H,$,J,W,te):function S(G,V,U,N,k,H,$,J,W){const te=(0,O.f8)();let de,ye=-1,j=-1;const Z={kind:"cylinders",cylinderCount:W,mappingBuffer:e.IQ.create(G),indexBuffer:e.IQ.create(V),groupBuffer:e.IQ.create(U),startBuffer:e.IQ.create(N),endBuffer:e.IQ.create(k),scaleBuffer:e.IQ.create(H),capBuffer:e.IQ.create($),colorModeBuffer:e.IQ.create(J),get boundingSphere(){const q=a(Z);if(q!==ye){const Y=(0,v.sL)(Z.startBuffer.ref.value,6*Z.cylinderCount,6),ee=(0,v.sL)(Z.endBuffer.ref.value,6*Z.cylinderCount,6);O.f8.expandBySphere(te,Y,ee),ye=q}return te},get groupMapping(){return Z.groupBuffer.ref.version!==j&&(de=(0,r.AA)(Z.groupBuffer.ref.value,Z.cylinderCount,6),j=Z.groupBuffer.ref.version),de},setBoundingSphere(q){O.f8.copy(te,q),ye=a(Z)}};return Z}(G,V,U,N,k,H,$,J,W)}function h(G){return C(G?G.mappingBuffer.ref.value:new Float32Array(0),G?G.indexBuffer.ref.value:new Uint32Array(0),G?G.groupBuffer.ref.value:new Float32Array(0),G?G.startBuffer.ref.value:new Float32Array(0),G?G.endBuffer.ref.value:new Float32Array(0),G?G.scaleBuffer.ref.value:new Float32Array(0),G?G.capBuffer.ref.value:new Float32Array(0),G?G.colorModeBuffer.ref.value:new Float32Array(0),0,G)}function a(G){return(0,I.TI)([G.cylinderCount,G.mappingBuffer.ref.version,G.indexBuffer.ref.version,G.groupBuffer.ref.version,G.startBuffer.ref.version,G.endBuffer.ref.version,G.scaleBuffer.ref.version,G.capBuffer.ref.version,G.colorModeBuffer.ref.version])}function f(G,V){const U=6*G.cylinderCount,N=V.instanceCount.ref.value,k=(0,c.tu)(),H=k.position,$=G.startBuffer.ref.value,J=G.endBuffer.ref.value,W=V.aTransform.ref.value;return(0,c.iQ)(U,N,2,(de,ye)=>{const j=de%6==0?$:J;return ye<0?o.eB.fromArray(H,j,3*de):o.eB.transformMat4Offset(H,j,W,0,3*de,16*ye),k})}function p(G,V,U,N,k){const{instanceCount:H,groupCount:$}=U,J=f(G,V),W=(0,t.D1)(U,J,N.color),te=(0,y.v3)(U,N.size),de=k.instanceGranularity?(0,A.Km)(H,"instance"):(0,A.Km)(H*$,"groupInstance"),ye=(0,_.WG)(),j=(0,M.MD)(),Z=(0,u.JS)(),q=(0,m.IB)(),Y=(0,l.EN)(),ee={drawCount:4*G.cylinderCount*3,vertexCount:6*G.cylinderCount,groupCount:$,instanceCount:H},g=(0,y.yx)(te)*k.sizeFactor,_e=O.f8.clone(G.boundingSphere),xe=(0,v.Ax)(_e,V.aTransform.ref.value,H,0);return{dGeometryType:e.IQ.create("cylinders"),aMapping:G.mappingBuffer,aGroup:G.groupBuffer,aStart:G.startBuffer,aEnd:G.endBuffer,aScale:G.scaleBuffer,aCap:G.capBuffer,aColorMode:G.colorModeBuffer,elements:G.indexBuffer,boundingSphere:e.IQ.create(xe),invariantBoundingSphere:e.IQ.create(_e),uInvariantBoundingSphere:e.IQ.create(o.Zb.ofSphere(_e)),...W,...te,...de,...ye,...j,...Z,...q,...Y,...V,padding:e.IQ.create(g),...b.iy.createValues(k,ee),uSizeFactor:e.IQ.create(k.sizeFactor*k.sizeAspectRatio),uDoubleSided:e.IQ.create(k.doubleSided),dIgnoreLight:e.IQ.create(k.ignoreLight),dXrayShaded:e.IQ.create("inverted"===k.xrayShaded?"inverted":!0===k.xrayShaded?"on":"off"),dTransparentBackfaces:e.IQ.create(k.transparentBackfaces),dSolidInterior:e.IQ.create(k.solidInterior),uBumpFrequency:e.IQ.create(k.bumpFrequency),uBumpAmplitude:e.IQ.create(k.bumpAmplitude),dDualColor:e.IQ.create("interpolate"===k.colorMode)}}function Q(G,V){b.iy.updateRenderableState(G,V),G.opaque=G.opaque&&!V.xrayShaded,G.writeDepth=G.opaque}s.create=C,s.createEmpty=h,s.transform=function R(G,V){const U=G.startBuffer.ref.value;(0,r.pi)(V,U,0,6*G.cylinderCount),e.IQ.update(G.startBuffer,U);const N=G.endBuffer.ref.value;(0,r.pi)(V,N,0,6*G.cylinderCount),e.IQ.update(G.endBuffer,N)},s.Params={...b.iy.Params,sizeFactor:i.t.Numeric(1,{min:0,max:10,step:.1}),sizeAspectRatio:i.t.Numeric(1,{min:0,max:3,step:.01}),doubleSided:i.t.Boolean(!1,b.iy.CustomQualityParamInfo),ignoreLight:i.t.Boolean(!1,b.iy.ShadingCategory),xrayShaded:i.t.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],b.iy.ShadingCategory),transparentBackfaces:i.t.Select("off",i.t.arrayToOptions(["off","on","opaque"]),b.iy.ShadingCategory),solidInterior:i.t.Boolean(!0,b.iy.ShadingCategory),bumpFrequency:i.t.Numeric(0,{min:0,max:10,step:.1},b.iy.ShadingCategory),bumpAmplitude:i.t.Numeric(1,{min:0,max:5,step:.1},b.iy.ShadingCategory),colorMode:i.t.Select("default",i.t.arrayToOptions(["default","interpolate"]),b.iy.ShadingCategory)},s.Utils={Params:s.Params,createEmpty:h,createValues:p,createValuesSimple:function E(G,V,U,N,k){const H=b.iy.createSimple(U,N,k),$={...i.t.getDefaultValues(s.Params),...V};return p(G,H.transform,H.locationIterator,H.theme,$)},updateValues:function T(G,V){b.iy.updateValues(G,V),e.IQ.updateIfChanged(G.uSizeFactor,V.sizeFactor*V.sizeAspectRatio),e.IQ.updateIfChanged(G.uDoubleSided,V.doubleSided),e.IQ.updateIfChanged(G.dIgnoreLight,V.ignoreLight),e.IQ.updateIfChanged(G.dXrayShaded,"inverted"===V.xrayShaded?"inverted":!0===V.xrayShaded?"on":"off"),e.IQ.updateIfChanged(G.dTransparentBackfaces,V.transparentBackfaces),e.IQ.updateIfChanged(G.dSolidInterior,V.solidInterior),e.IQ.updateIfChanged(G.uBumpFrequency,V.bumpFrequency),e.IQ.updateIfChanged(G.uBumpAmplitude,V.bumpAmplitude),e.IQ.updateIfChanged(G.dDualColor,"interpolate"===V.colorMode)},updateBoundingSphere:function L(G,V){const U=O.f8.clone(V.boundingSphere),N=(0,v.Ax)(U,G.aTransform.ref.value,G.instanceCount.ref.value,0);O.f8.equals(N,G.boundingSphere.ref.value)||e.IQ.update(G.boundingSphere,N),O.f8.equals(U,G.invariantBoundingSphere.ref.value)||(e.IQ.update(G.invariantBoundingSphere,U),e.IQ.update(G.uInvariantBoundingSphere,o.Zb.fromSphere(G.uInvariantBoundingSphere.ref.value,U)))},createRenderableState:function w(G){const V=b.iy.createRenderableState(G);return Q(V,G),V},updateRenderableState:Q,createPositionIterator:f}}(d||(d={}))},9928:(tn,Ue,n)=>{"use strict";n.d(Ue,{E:()=>D});var e=n(8382),o=n(1888),r=n(3784),t=n(4648),A=n(5384),y=n(4369),c=n(9909),i=n(8277),v=n(3280),O=n(5019),b=n(2712),_=n(8013),M=n(2075),I=n(9197),l=n(127);function u(f){return f.map(p=>({x:p[0],alpha:p[1]}))}function d(f,p){const E=[{x:0,alpha:0},{x:0,alpha:0},...f,{x:1,alpha:0},{x:1,alpha:0}],L=p?p.ref.value.array:new Uint8Array(256);let Q,G,V,U,N,k,w=0;const H=f.length+1;for(let J=0;J0?"3d":"2d"),uGridTexDim:Y,tGridTex:q,uGridStats:ee,uCellDim:te.cellDim,uCartnToUnit:te.cartnToUnit,uUnitToCartn:te.unitToCartn,dPackedGroup:te.packedGroup,dAxisOrder:c.IQ.create(te.axisOrder.ref.value.join("")),dIgnoreLight:c.IQ.create(Z.ignoreLight),dXrayShaded:c.IQ.create("inverted"===Z.xrayShaded?"inverted":!0===Z.xrayShaded?"on":"off")}}f.create=p,f.createEmpty=w,f.Params={...O.iy.Params,ignoreLight:i.t.Boolean(!1,O.iy.ShadingCategory),xrayShaded:i.t.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],O.iy.ShadingCategory),controlPoints:i.t.LineGraph([y.ZY.create(.19,0),y.ZY.create(.2,.05),y.ZY.create(.25,.05),y.ZY.create(.26,0),y.ZY.create(.79,0),y.ZY.create(.8,.05),y.ZY.create(.85,.05),y.ZY.create(.86,0)],{isEssential:!0}),stepsPerCell:i.t.Numeric(3,{min:1,max:10,step:1}),jumpLength:i.t.Numeric(0,{min:0,max:20,step:.1})},f.Utils={Params:f.Params,createEmpty:w,createValues:N,createValuesSimple:function k(te,de,ye,j,Z){const q=O.iy.createSimple(ye,j,Z),Y={...i.t.getDefaultValues(f.Params),...de};return N(te,q.transform,q.locationIterator,q.theme,Y)},updateValues:function H(te,de){O.iy.updateValues(te,de),c.IQ.updateIfChanged(te.dIgnoreLight,de.ignoreLight),c.IQ.updateIfChanged(te.dXrayShaded,"inverted"===de.xrayShaded?"inverted":!0===de.xrayShaded?"on":"off"),d(u(de.controlPoints),te.tTransferTex),c.IQ.updateIfChanged(te.uMaxSteps,G(te.uGridDim.ref.value,de.stepsPerCell)),c.IQ.updateIfChanged(te.uStepScale,V(te.uCellDim.ref.value,de.stepsPerCell)),c.IQ.updateIfChanged(te.uTransferScale,U(de.stepsPerCell)),c.IQ.updateIfChanged(te.uJumpLength,de.jumpLength)},updateBoundingSphere:function $(te,de){const ye=A.f8.clone(de.boundingSphere),j=(0,r.Ax)(ye,te.aTransform.ref.value,te.instanceCount.ref.value,0);A.f8.equals(j,te.boundingSphere.ref.value)||c.IQ.update(te.boundingSphere,j),A.f8.equals(ye,te.invariantBoundingSphere.ref.value)||(c.IQ.update(te.invariantBoundingSphere,ye),c.IQ.update(te.uInvariantBoundingSphere,y.Zb.fromSphere(te.uInvariantBoundingSphere.ref.value,ye)))},createRenderableState:function J(te){const de=O.iy.createRenderableState(te);return de.opaque=!1,de.writeDepth=!1,de},updateRenderableState:function W(te,de){O.iy.updateRenderableState(te,de),te.opaque=!1,te.writeDepth=!1},createPositionIterator:function Q(te,de){const ye=te.transform.ref.value,[j,Z,q]=te.gridDimension.ref.value,Y=j*Z*q,ee=de.instanceCount.ref.value,g=(0,o.tu)(),_e=g.position,xe=de.aTransform.ref.value;return(0,o.iQ)(Y,ee,1,(Ae,Be)=>{const Ce=Math.floor(Ae/q);return _e[0]=Math.floor(Ce/Z),_e[1]=Ce%Z,_e[2]=Ae%q,y.eB.transformMat4(_e,_e,ye),Be>=0&&y.eB.transformMat4Offset(_e,_e,xe,0,0,16*Be),g})}}}(D||(D={}))},6022:(tn,Ue,n)=>{"use strict";n.d(Ue,{JS:()=>O,Ns:()=>A,Sj:()=>i,bO:()=>y,dQ:()=>c});var e=n(7187),o=n(4369),r=n(3784),t=n(4648);function A(b,_,M,I){for(let l=_;l0),e.IQ.updateIfChanged(M.emissiveAverage,y(I.array,b)),e.IQ.updateIfChanged(M.dEmissiveType,_),M):{tEmissive:e.IQ.create(I),uEmissiveTexDim:e.IQ.create(o.ZY.create(I.width,I.height)),dEmissive:e.IQ.create(b>0),emissiveAverage:e.IQ.create(0),tEmissiveGrid:e.IQ.create((0,t.z6)()),uEmissiveGridDim:e.IQ.create(o.eB.create(1,1,1)),uEmissiveGridTransform:e.IQ.create(o.Zb.create(0,0,0,1)),dEmissiveType:e.IQ.create(_),uEmissiveStrength:e.IQ.create(1)}}const v={array:new Uint8Array(1),width:1,height:1};function O(b){return b?(e.IQ.update(b.tEmissive,v),e.IQ.update(b.uEmissiveTexDim,o.ZY.create(1,1)),b):{tEmissive:e.IQ.create(v),uEmissiveTexDim:e.IQ.create(o.ZY.create(1,1)),dEmissive:e.IQ.create(!1),emissiveAverage:e.IQ.create(0),tEmissiveGrid:e.IQ.create((0,t.z6)()),uEmissiveGridDim:e.IQ.create(o.eB.create(1,1,1)),uEmissiveGridTransform:e.IQ.create(o.Zb.create(0,0,0,1)),dEmissiveType:e.IQ.create("groupInstance"),uEmissiveStrength:e.IQ.create(1)}}},542:(tn,Ue,n)=>{"use strict";n.d(Ue,{V:()=>b});var b,e=n(9283),o=n(5299),r=n(4255),t=n(5315),A=n(9928),y=n(8231),c=n(6115),i=n(799),v=n(7135),O=n(283);!function(_){function M(d){switch(d.kind){case"mesh":return 3*d.triangleCount;case"points":return d.pointCount;case"spheres":return 2*d.sphereCount*3;case"cylinders":return 4*d.cylinderCount*3;case"text":return 2*d.charCount*3;case"lines":return 2*d.lineCount*3;case"direct-volume":return 36;case"image":return 6;case"texture-mesh":return d.vertexCount}}_.getDrawCount=M,_.getVertexCount=function I(d){switch(d.kind){case"mesh":case"texture-mesh":return d.vertexCount;case"points":return d.pointCount;case"spheres":return 6*d.sphereCount;case"cylinders":return 6*d.cylinderCount;case"text":return 4*d.charCount;case"lines":return 4*d.lineCount;case"direct-volume":const[s,C,h]=d.gridDimension.ref.value;return s*C*h;case"image":return 4}},_.getGroupCount=function l(d){switch(d.kind){case"mesh":case"points":case"spheres":case"cylinders":case"text":case"lines":return 0===M(d)?0:(0,c._M)(d.groupBuffer.ref.value)+1;case"direct-volume":return 1;case"image":return(0,c._M)(d.groupTexture.ref.value.array)+1;case"texture-mesh":return d.groupCount}},_.getUtils=function m(d){switch(d.kind){case"mesh":return e.e.Utils;case"points":return o.O.Utils;case"spheres":return y.v.Utils;case"cylinders":return O.S.Utils;case"text":return r.E.Utils;case"lines":return t.q.Utils;case"direct-volume":return A.E.Utils;case"image":return v._V.Utils;case"texture-mesh":return i.X.Utils}},_.getGranularity=function u(d,s){return"instance"===s&&d.nonInstanceable?"group":s}}(b||(b={}))},7135:(tn,Ue,n)=>{"use strict";n.d(Ue,{Bd:()=>a,_V:()=>S});var e=n(8382),o=n(1888),r=n(3784),t=n(5384),A=n(4369),y=n(9909),c=n(8277),i=n(5019),v=n(2712),O=n(8013),b=n(2075),_=n(9197),M=n(6115),I=n(5077),l=n(364),m=n(9007),u=n(8307),d=n(6022);const s=new Uint32Array([0,1,2,1,3,2]),C=new Float32Array([0,1,0,0,1,1,1,0]),h={nearest:"Nearest",catmulrom:"Catmulrom (Cubic)",mitchell:"Mitchell (Cubic)",bspline:"B-Spline (Cubic)"},a=Object.keys(h);var S;!function(R){function f(k,H,$,J){return J?function T(k,H,$,J){const W=k.width,te=k.height;return y.IQ.update(J.imageTexture,k),y.IQ.update(J.imageTextureDim,A.ZY.set(J.imageTextureDim.ref.value,W,te)),y.IQ.update(J.cornerBuffer,H),y.IQ.update(J.groupTexture,$),J}(k,H,$,J):function E(k,H,$){const J=(0,t.f8)();let W=-1;const te=k.width,de=k.height,ye={kind:"image",imageTexture:y.IQ.create(k),imageTextureDim:y.IQ.create(A.ZY.create(te,de)),cornerBuffer:y.IQ.create(H),groupTexture:y.IQ.create($),get boundingSphere(){const j=function p(k){return(0,e.TI)([k.cornerBuffer.ref.version])}(ye);if(j!==W){const Z=function D(R){const f=(0,A.eB)(),p=[];for(let L=0,w=R.length;LE&&(E=w)}const T=t.f8.create(f,E);return t.f8.setExtrema(T,p),T}(ye.cornerBuffer.ref.value);t.f8.copy(J,Z),W=j}return J}};return ye}(k,H,$)}function L(k){return f((0,r.xg)(0,4,Uint8Array),k?k.cornerBuffer.ref.value:new Float32Array(24),(0,r.xg)(0,4,Uint8Array),k)}function w(k,H,$,J,W){const{instanceCount:te,groupCount:de}=$,ye=R.Utils.createPositionIterator(k,H),j=(0,v.D1)($,ye,J.color),Z=W.instanceGranularity?(0,O.Km)(te,"instance"):(0,O.Km)(te*de,"groupInstance"),q=(0,b.WG)(),Y=(0,_.MD)(),ee=(0,d.JS)(),g=(0,u.IB)(),_e=(0,I.EN)(),xe={drawCount:s.length,vertexCount:m.Wp.length/3,groupCount:de,instanceCount:te},le=t.f8.clone(k.boundingSphere),Ae=(0,r.Ax)(le,H.aTransform.ref.value,te,0);return{dGeometryType:y.IQ.create("image"),...j,...Z,...q,...Y,...ee,...g,..._e,...H,...i.iy.createValues(W,xe),aPosition:k.cornerBuffer,aUv:y.IQ.create(C),elements:y.IQ.create(s),aGroup:y.IQ.create((0,M.WE)(new Float32Array(4))),boundingSphere:y.IQ.create(Ae),invariantBoundingSphere:y.IQ.create(le),uInvariantBoundingSphere:y.IQ.create(A.Zb.ofSphere(le)),dInterpolation:y.IQ.create(W.interpolation),uImageTexDim:k.imageTextureDim,tImageTex:k.imageTexture,tGroupTex:k.groupTexture}}R.create=f,R.createEmpty=L,R.Params={...i.iy.Params,interpolation:c.t.Select("bspline",c.t.objectToOptions(h))},R.Utils={Params:R.Params,createEmpty:L,createValues:w,createValuesSimple:function Q(k,H,$,J,W){const te=i.iy.createSimple($,J,W),de={...c.t.getDefaultValues(R.Params),...H};return w(k,te.transform,te.locationIterator,te.theme,de)},updateValues:function G(k,H){i.iy.updateValues(k,H),y.IQ.updateIfChanged(k.dInterpolation,H.interpolation)},updateBoundingSphere:function V(k,H){const $=t.f8.clone(H.boundingSphere),J=(0,r.Ax)($,k.aTransform.ref.value,k.instanceCount.ref.value,0);t.f8.equals(J,k.boundingSphere.ref.value)||y.IQ.update(k.boundingSphere,J),t.f8.equals($,k.invariantBoundingSphere.ref.value)||(y.IQ.update(k.invariantBoundingSphere,$),y.IQ.update(k.uInvariantBoundingSphere,A.Zb.fromSphere(k.uInvariantBoundingSphere.ref.value,$)))},createRenderableState:function U(k){const H=i.iy.createRenderableState(k);return H.opaque=!1,H},updateRenderableState:function N(k,H){i.iy.updateRenderableState(k,H),k.opaque=!1},createPositionIterator:()=>(0,o.iQ)(1,1,1,()=>l.LU)}}(S||(S={}))},5821:(tn,Ue,n)=>{"use strict";n.d(Ue,{d:()=>v});var e=n(8382),o=n(5315),r=n(4369);const t=(0,r.eB)(),A=(0,r.eB)(),y=(0,r.eB)(),c=e.Gm.add,i=e.Gm.add3;var v;(v||(v={})).create=function _(M=2048,I=1024,l){const m=e.Gm.create(Float32Array,1,I,l?l.groupBuffer.ref.value:M),u=e.Gm.create(Float32Array,3,I,l?l.startBuffer.ref.value:M),d=e.Gm.create(Float32Array,3,I,l?l.endBuffer.ref.value:M),s=(a,S,D,R,f,p,E)=>{for(let T=0;T<4;++T)i(u,a,S,D),i(d,R,f,p),c(m,E)},h=(a,S,D,R)=>{const f=r.eB.distance(a,S),p=D%2!=0,E=Math.floor((D+1)/2),T=f/(D+.5);r.eB.setMagnitude(y,r.eB.sub(y,S,a),T),r.eB.copy(t,a);for(let L=0;L{for(let R=0;R<4;++R)i(u,a[0],a[1],a[2]),i(d,S[0],S[1],S[2]),c(m,D)},addFixedCountDashes:h,addFixedLengthDashes:(a,S,D,R)=>{const f=r.eB.distance(a,S);h(a,S,f/D,R)},addCage:(a,S,D)=>{const{vertices:R,edges:f}=S;for(let p=0,E=f.length;p{const a=m.elementCount/4,S=e.Gm.compact(m,!0),D=e.Gm.compact(u,!0),R=e.Gm.compact(d,!0),f=l&&a<=l.lineCount?l.mappingBuffer.ref.value:new Float32Array(8*a),p=l&&a<=l.lineCount?l.indexBuffer.ref.value:new Uint32Array(6*a);return(!l||a>l.lineCount)&&function O(b,_,M){for(let I=0;I{"use strict";n.d(Ue,{q:()=>s});var s,e=n(9909),o=n(4369),r=n(4559),t=n(2712),A=n(8013),y=n(7684),c=n(1888),i=n(5821),v=n(8277),O=n(3784),b=n(5384),_=n(5019),M=n(2075),I=n(9197),l=n(8382),m=n(5077),u=n(8307),d=n(6022);!function(C){function h(G,V,U,N,k,H,$){return $?function f(G,V,U,N,k,H,$){return H>$.lineCount&&(e.IQ.update($.mappingBuffer,G),e.IQ.update($.indexBuffer,V)),$.lineCount=H,e.IQ.update($.groupBuffer,U),e.IQ.update($.startBuffer,N),e.IQ.update($.endBuffer,k),$}(G,V,U,N,k,H,$):function R(G,V,U,N,k,H){const $=(0,b.f8)();let J,W=-1,te=-1;const de={kind:"lines",lineCount:H,mappingBuffer:e.IQ.create(G),indexBuffer:e.IQ.create(V),groupBuffer:e.IQ.create(U),startBuffer:e.IQ.create(N),endBuffer:e.IQ.create(k),get boundingSphere(){const ye=D(de);if(ye!==W){const j=(0,O.sL)(de.startBuffer.ref.value,4*de.lineCount,4),Z=(0,O.sL)(de.endBuffer.ref.value,4*de.lineCount,4);b.f8.expandBySphere($,j,Z),W=ye}return $},get groupMapping(){return de.groupBuffer.ref.version!==te&&(J=(0,r.AA)(de.groupBuffer.ref.value,de.lineCount,4),te=de.groupBuffer.ref.version),J},setBoundingSphere(ye){b.f8.copy($,ye),W=D(de)}};return de}(G,V,U,N,k,H)}function a(G){return h(G?G.mappingBuffer.ref.value:new Float32Array(0),G?G.indexBuffer.ref.value:new Uint32Array(0),G?G.groupBuffer.ref.value:new Float32Array(0),G?G.startBuffer.ref.value:new Float32Array(0),G?G.endBuffer.ref.value:new Float32Array(0),0,G)}function D(G){return(0,l.TI)([G.lineCount,G.mappingBuffer.ref.version,G.indexBuffer.ref.version,G.groupBuffer.ref.version,G.startBuffer.ref.version,G.endBuffer.ref.version])}function E(G,V){const U=4*G.lineCount,N=V.instanceCount.ref.value,k=(0,c.tu)(),H=k.position,$=G.startBuffer.ref.value,J=G.endBuffer.ref.value,W=V.aTransform.ref.value;return(0,c.iQ)(U,N,2,(de,ye)=>{const j=de%4==0?$:J;return ye<0?o.eB.fromArray(H,j,3*de):o.eB.transformMat4Offset(H,j,W,0,3*de,16*ye),k})}function T(G,V,U,N,k){const{instanceCount:H,groupCount:$}=U,J=E(G,V),W=(0,t.D1)(U,J,N.color),te=(0,y.v3)(U,N.size),de=k.instanceGranularity?(0,A.Km)(H,"instance"):(0,A.Km)(H*$,"groupInstance"),ye=(0,M.WG)(),j=(0,I.MD)(),Z=(0,d.JS)(),q=(0,u.IB)(),Y=(0,m.EN)(),ee={drawCount:2*G.lineCount*3,vertexCount:4*G.lineCount,groupCount:$,instanceCount:H},g=b.f8.clone(G.boundingSphere),_e=(0,O.Ax)(g,V.aTransform.ref.value,H,0);return{dGeometryType:e.IQ.create("lines"),aMapping:G.mappingBuffer,aGroup:G.groupBuffer,aStart:G.startBuffer,aEnd:G.endBuffer,elements:G.indexBuffer,boundingSphere:e.IQ.create(_e),invariantBoundingSphere:e.IQ.create(g),uInvariantBoundingSphere:e.IQ.create(o.Zb.ofSphere(g)),...W,...te,...de,...ye,...j,...Z,...q,...Y,...V,..._.iy.createValues(k,ee),uSizeFactor:e.IQ.create(k.sizeFactor),dLineSizeAttenuation:e.IQ.create(k.lineSizeAttenuation),uDoubleSided:e.IQ.create(!0),dFlipSided:e.IQ.create(!1)}}C.create=h,C.createEmpty=a,C.fromMesh=function S(G,V){const U=G.vertexBuffer.ref.value,N=G.indexBuffer.ref.value,k=G.groupBuffer.ref.value,H=i.d.create(3*G.triangleCount,G.triangleCount/10,V);for(let $=0,J=3*G.triangleCount;${"use strict";n.d(Ue,{Km:()=>y,Xl:()=>A});var e=n(7187),o=n(4369),r=n(3784);const t=new Uint8Array(772);function A(v,O){if(0===O)return 0;const b=new Uint32Array(v.buffer,0,v.buffer.byteLength>>2),_=O-4>>2,M=4*_;let I=0;if(_<0)for(let l=0;l>16]}for(let l=M;l{"use strict";n.d(Ue,{y9:()=>D,Jz:()=>R,GH:()=>f});var e=n(4369),o=n(573),r=n(6928);const t={radiusTop:1,radiusBottom:1,height:1,radialSegments:8,heightSegments:1,topCap:!1,bottomCap:!1,thetaStart:0,thetaLength:2*Math.PI};var y=n(3220),c=n(863),i=n(8382);const v=new Map,O=e.eB.create(0,1,0),b=(0,e.eB)(),_=(0,e.eB)(),M=(0,e.eB)(),I=(0,e.$I)(),l=(0,e.$I)(),m=(0,e.eB)(),u=(0,e.eB)(),d=(0,e.eB)();function s(p,E,T,L,w){return e.eB.setMagnitude(_,T,L/2),e.eB.add(M,E,_),w?e.eB.matchDirection(d,O,_):e.eB.copy(d,O),e.eB.set(m,1,L,1),e.eB.makeRotation(l,d,_),e.$I.scale(p,l,m),e.$I.setTranslation(p,M)}const C=new Int32Array(9);function a(p){const E=function h(p){var E,T,L,w,Q,G,V,U,N;return C[0]=Math.round(1e3*(null!==(E=p.radiusTop)&&void 0!==E?E:t.radiusTop)),C[1]=Math.round(1e3*(null!==(T=p.radiusBottom)&&void 0!==T?T:t.radiusBottom)),C[2]=Math.round(1e3*(null!==(L=p.height)&&void 0!==L?L:t.height)),C[3]=null!==(w=p.radialSegments)&&void 0!==w?w:t.radialSegments,C[4]=null!==(Q=p.heightSegments)&&void 0!==Q?Q:t.heightSegments,C[5]=(null!==(G=p.topCap)&&void 0!==G?G:t.topCap)?1:0,C[6]=(null!==(V=p.bottomCap)&&void 0!==V?V:t.bottomCap)?1:0,C[7]=Math.round(1e3*(null!==(U=p.thetaStart)&&void 0!==U?U:t.thetaStart)),C[8]=Math.round(1e3*(null!==(N=p.thetaLength)&&void 0!==N?N:t.thetaLength)),(0,i.TI)(C)}(p);let T=v.get(E);if(void 0===T){if(p.radialSegments&&p.radialSegments<=4){const L=Math.max(3,p.radialSegments),w=(0,y.My)((0,c.n)(L,!0,p.radiusTop),p);T=(0,r._2)(w,e.$I.rotX90)}else T=function A(p){const{radiusTop:E,radiusBottom:T,height:L,radialSegments:w,heightSegments:Q,topCap:G,bottomCap:V,thetaStart:U,thetaLength:N}={...t,...p},k=[],H=[],$=[];let J=0;const W=[],te=L/2;return function de(){const j=e.eB.zero(),Z=(T-E)/L;for(let q=0;q<=Q;++q){const Y=[],ee=q/Q,g=ee*(T-E)+E;for(let _e=0;_e<=w;++_e){const le=_e/w*N+U,Ae=Math.sin(le),Be=Math.cos(le);H.push(g*Ae,-ee*L+te,g*Be),e.eB.normalize(j,e.eB.set(j,Ae,Z,Be)),$.push(...j),Y.push(J++)}W.push(Y)}for(let q=0;q0&&ye(!0),V&&T>0&&ye(!1),{vertices:new Float32Array(H),normals:new Float32Array($),indices:new Uint32Array(k)};function ye(j){const Z=!0===j?E:T,q=!0===j?1:-1,Y=J;for(let g=1;g<=w;++g)H.push(0,te*q,0),$.push(0,q,0),++J;const ee=J;for(let g=0;g<=w;++g){const xe=g/w*N+U,le=Math.cos(xe),Ae=Math.sin(xe);H.push(Z*Ae,te*q,Z*le),$.push(0,q,0),++J}for(let g=0;g{"use strict";n.d(Ue,{P:()=>c});var e=n(4369),o=n(573),r=n(4439);const t=e.$I.identity(),A=(0,e.eB)();function c(i,v,O,b,_,M){o.P.addPrimitive(i,function y(i,v,O,b,_){return e.eB.add(A,v,O),e.$I.targetTo(i,v,A,b),e.$I.setTranslation(i,v),e.$I.scale(i,i,_)}(t,v,O,b,_),(0,r.q)(M))}},4439:(tn,Ue,n)=>{"use strict";n.d(Ue,{X:()=>i,q:()=>c});var e=n(4369),o=n(573),r=n(9132);const t=new Map,A=e.$I.identity();function c(v){let O=t.get(v);return void 0===O&&(O=(0,r.i)(v),t.set(v,O)),O}function i(v,O,b,_){o.P.addPrimitive(v,function y(v,O,b){return e.$I.scaleUniformly(v,e.$I.fromTranslation(v,O),b)}(A,O,b),c(_))}},4992:(tn,Ue,n)=>{"use strict";n.d(Ue,{Cn:()=>d,WT:()=>_,XP:()=>O,_j:()=>I,bj:()=>m});var e=n(3784),o=n(5384),r=n(127),t=n(4369),A=n(4178),y=n(9909);function c(s,C,h,a,S){const{colorType:D,vertexCount:R,groupCount:f,positionBuffer:p,transformBuffer:E,groupBuffer:T,itemSize:L}=s,w=D.endsWith("Instance"),Q=o.DJ.fromSphere3D((0,o.DJ)(),w?s.boundingSphere:s.invariantBoundingSphere),G=1+C,V=o.DJ.expand((0,o.DJ)(),Q,t.eB.create(G,G,G)),U=1/C,N=o.DJ.scale((0,o.DJ)(),V,U),k=o.DJ.size((0,t.eB)(),N);t.eB.ceil(k,k),t.eB.add(k,k,t.eB.create(2,2,2));const{min:H}=V,[$,J]=k,{width:W,height:te}=(0,A.Ud)(k),de=new Float32Array(W*te*L),ye=new Float32Array(W*te),j=new Uint8Array(W*te*L),Z={array:j,width:W,height:te,filter:"linear"},q=w?s.instanceCount:1,Y=s.colorData.array;function ee(ke,we,Oe){const Se=Math.floor(Oe*$%W/$),Ve=Math.floor(Oe*$/W);return L*(Ve*J*W+we*W+(Se*$+ke))}const[_e,xe,le]=k,Ae=(0,t.eB)();for(let ke=0;ke2)continue;const Lt=2-je,Je=ee(se,ge,Le);for(let en=0;enE)throw new Error("outputStride + itemOffset must NOT be larger than colorStride");const w=s.colorType.endsWith("Instance"),Q=w?s.instanceCount:1,G=(0,e.xg)(Math.max(1,Q*C),L,Uint8Array),{array:V}=G,[U,N]=D,k=R[0],H=t.eB.fromArray((0,t.eB)(),f,0),$=f[3];function J(j,Z,q){const Y=Math.floor(q*U%k/U),ee=Math.floor(q*U/k);return E*(ee*N*k+Z*k+(Y*U+j))}const W=(0,t.eB)(),te=(0,t.eB)(),de=(0,t.eB)(),ye=(0,t.eB)();for(let j=0;j{"use strict";n.d(Ue,{P:()=>C});var e=n(4369),o=n(8382),r=n(9283),t=n(4439),A=n(2802);const y=(0,e.eB)(),c=(0,e.U)(),i=(0,e.eB)(),v=(0,e.eB)(),O=(0,e.eB)(),b=(0,e.eB)(),_=e.eB.fromArray,M=e.eB.triangleNormal,I=e.eB.copy,l=e.eB.transformMat4,m=e.eB.transformMat3,u=e.U.directionTransform,d=o.Gm.add3,s=o.Gm.add;var C;!function(h){function S(G,V,U,N){const{vertices:k,normals:H,indices:$,groups:J,currentGroup:W}=G,te=k.elementCount;d(k,V[0],V[1],V[2]),d(k,U[0],U[1],U[2]),d(k,N[0],N[1],N[2]),M(y,V,U,N);for(let de=0;de<3;++de)d(H,y[0],y[1],y[2]),s(J,W);d($,te,te+1,te+2)}function D(G,V,U,N,k){const{vertices:H,normals:$,indices:J,groups:W,currentGroup:te}=G,de=H.elementCount;d(H,V[0],V[1],V[2]),d(H,U[0],U[1],U[2]),d(H,N[0],N[1],N[2]);for(let ye=0;ye<3;++ye)d($,k[0],k[1],k[2]),s(W,te);d(J,de,de+1,de+2)}function E(G,V,U){const{vertices:N,normals:k,indices:H}=U,{vertices:$,normals:J,indices:W,groups:te,currentGroup:de}=G,ye=$.elementCount,j=u(c,V);for(let Z=0,q=N.length;Z{"use strict";n.d(Ue,{e:()=>s});var s,e=n(9909),o=n(4369),r=n(5384),t=n(4559),A=n(8013),y=n(1888),c=n(2712),i=n(8382),v=n(8277),O=n(3784),b=n(5019),_=n(2075),M=n(9197),I=n(5077),l=n(6115),m=n(4490),u=n(8307),d=n(6022);!function(C){function h(q,Y,ee,g,_e,xe,le){return le?function R(q,Y,ee,g,_e,xe,le){return le.vertexCount=_e,le.triangleCount=xe,e.IQ.update(le.vertexBuffer,q),e.IQ.update(le.indexBuffer,Y),e.IQ.update(le.normalBuffer,ee),e.IQ.update(le.groupBuffer,g),le}(q,Y,ee,g,_e,xe,le):function D(q,Y,ee,g,_e,xe){const le=(0,r.f8)();let Ae,Be=-1,Ce=-1;const Re={kind:"mesh",vertexCount:_e,triangleCount:xe,vertexBuffer:e.IQ.create(q),indexBuffer:e.IQ.create(Y),normalBuffer:e.IQ.create(ee),groupBuffer:e.IQ.create(g),varyingGroup:e.IQ.create(!1),get boundingSphere(){const ke=S(Re);if(ke!==Be){const we=(0,O.sL)(Re.vertexBuffer.ref.value,Re.vertexCount,1);r.f8.copy(le,we),Be=ke}return le},get groupMapping(){return Re.groupBuffer.ref.version!==Ce&&(Ae=(0,t.AA)(Re.groupBuffer.ref.value,Re.vertexCount),Ce=Re.groupBuffer.ref.version),Ae},setBoundingSphere(ke){r.f8.copy(le,ke),Be=S(Re)},meta:{}};return Re}(q,Y,ee,g,_e,xe)}function a(q){return h(q?q.vertexBuffer.ref.value:new Float32Array(0),q?q.indexBuffer.ref.value:new Uint32Array(0),q?q.normalBuffer.ref.value:new Float32Array(0),q?q.groupBuffer.ref.value:new Float32Array(0),0,0,q)}function S(q){return(0,i.TI)([q.vertexCount,q.triangleCount,q.vertexBuffer.ref.version,q.indexBuffer.ref.version,q.normalBuffer.ref.version,q.groupBuffer.ref.version])}C.create=h,C.createEmpty=a,C.computeNormals=function f(q){const{vertexCount:Y,triangleCount:ee}=q,g=q.vertexBuffer.ref.value,_e=q.indexBuffer.ref.value,xe=q.normalBuffer.ref.value.length>=3*Y?q.normalBuffer.ref.value:new Float32Array(3*Y);xe===q.normalBuffer.ref.value&&xe.fill(0,0,3*Y),(0,t.xL)(g,_e,xe,Y,ee),e.IQ.update(q.normalBuffer,xe)},C.checkForDuplicateVertices=function p(q,Y=3){const ee=q.vertexBuffer.ref.value,g=new Map,_e=(Ae,Be)=>`${Ae[0].toFixed(Be)}|${Ae[1].toFixed(Be)}|${Ae[2].toFixed(Be)}`;let xe=0;const le=(0,o.eB)();for(let Ae=0,Be=q.vertexCount;Ae{const Ae=(0,i.bd)(xe,le),Be=g.get(Ae)||0;g.set(Ae,Be+1)};for(let xe=0;xe{1===g&&((0,i.Ao)(ee,_e),Y.add(ee[0]),Y.add(ee[1]))}),Y}function U(q,Y,ee){const g=new Map,_e=(xe,le)=>{g.has(xe)?(0,l.Z2)(g.get(xe),le):g.set(xe,[le])};return Y.forEach(xe=>{const le=q[xe];for(const Ae of le)Y.has(Ae)&&1===ee.get((0,i.bd)(xe,Ae))&&_e(xe,Ae)}),g}function k(q,Y,ee,g){var _e;const{vertexBuffer:xe,indexBuffer:le,normalBuffer:Ae,triangleCount:Be}=q,Ce=xe.ref.value,Re=le.ref.value,ke=Ae.ref.value,we=i.Gm.create(Uint32Array,3,1024,Be);let Oe=0;for(let ge=0;geee.get(ge).length<2).map(ge=>{const Ie=ee.get(ge);return o.eB.fromArray(Se,Ce,3*ge),o.eB.fromArray(Ve,Ce,3*Ie[0]),o.eB.fromArray(Ne,Ce,3*Ie[1]),o.eB.sub(ne,Ve,Se),o.eB.sub(be,Ne,Se),[ge,o.eB.angle(ne,be)]});se.sort(([,ge],[,Ie])=>ge-Ie);for(const[ge,Ie]of se){if(ce.has(ge)||Ie>ve)continue;const Le=ee.get(ge);if(Y[Le[0]].includes(Le[1])&&(null===(_e=ee.get(Le[0]))||void 0===_e||!_e.includes(Le[1]))||(o.eB.fromArray(Se,Ce,3*ge),o.eB.fromArray(Ve,Ce,3*Le[0]),o.eB.fromArray(Ne,Ce,3*Le[1]),o.eB.sub(ne,Ve,Se),o.eB.sub(be,Ne,Se),o.eB.add(ie,ne,be),o.eB.squaredDistance(Se,Ve)>=g))continue;let nt=!1;for(const je of Y[ge])if(!Le.includes(je)&&(o.eB.fromArray(K,Ce,3*je),o.eB.sub(Te,K,Se),o.eB.dot(ie,Te)<0)){nt=!0;break}nt&&(o.eB.fromArray(ue,ke,3*ge),o.eB.triangleNormal(re,Se,Ve,Ne),o.eB.dot(re,ue)>0?i.Gm.add3(we,ge,Le[0],Le[1]):i.Gm.add3(we,Le[1],Le[0],ge),ce.add(ge),ce.add(Le[0]),ce.add(Le[1]),Oe+=1)}const ae=i.Gm.compact(we);return q.triangleCount=Oe,e.IQ.update(le,ae),q}function J(q,Y){const ee=q.vertexCount,g=Y.instanceCount.ref.value,_e=(0,y.tu)(),xe=_e.position,le=_e.normal,Ae=q.vertexBuffer.ref.value,Be=q.normalBuffer.ref.value,Ce=Y.aTransform.ref.value;return(0,y.iQ)(ee,g,1,(ke,we)=>(we<0?(o.eB.fromArray(xe,Ae,3*ke),o.eB.fromArray(le,Be,3*ke)):(o.eB.transformMat4Offset(xe,Ae,Ce,0,3*ke,16*we),o.eB.transformDirectionOffset(le,Be,Ce,0,3*ke,16*we)),_e))}function W(q,Y,ee,g,_e){const{instanceCount:xe,groupCount:le}=ee,Ae=J(q,Y),Be=(0,c.D1)(ee,Ae,g.color),Ce=_e.instanceGranularity?(0,A.Km)(xe,"instance"):(0,A.Km)(xe*le,"groupInstance"),Re=(0,_.WG)(),ke=(0,M.MD)(),we=(0,d.JS)(),Oe=(0,u.IB)(),Se=(0,I.EN)(),Ve={drawCount:3*q.triangleCount,vertexCount:q.vertexCount,groupCount:le,instanceCount:xe},Ne=r.f8.clone(q.boundingSphere),K=(0,O.Ax)(Ne,Y.aTransform.ref.value,xe,0);return{dGeometryType:e.IQ.create("mesh"),aPosition:q.vertexBuffer,aNormal:q.normalBuffer,aGroup:q.groupBuffer,elements:q.indexBuffer,dVaryingGroup:q.varyingGroup,boundingSphere:e.IQ.create(K),invariantBoundingSphere:e.IQ.create(Ne),uInvariantBoundingSphere:e.IQ.create(o.Zb.ofSphere(Ne)),...Be,...Ce,...Re,...ke,...we,...Oe,...Se,...Y,...b.iy.createValues(_e,Ve),uDoubleSided:e.IQ.create(_e.doubleSided),dFlatShaded:e.IQ.create(_e.flatShaded),dFlipSided:e.IQ.create(_e.flipSided),dIgnoreLight:e.IQ.create(_e.ignoreLight),dXrayShaded:e.IQ.create("inverted"===_e.xrayShaded?"inverted":!0===_e.xrayShaded?"on":"off"),dTransparentBackfaces:e.IQ.create(_e.transparentBackfaces),uBumpFrequency:e.IQ.create(_e.bumpFrequency),uBumpAmplitude:e.IQ.create(_e.bumpAmplitude),meta:e.IQ.create(q.meta)}}function Z(q,Y){b.iy.updateRenderableState(q,Y),q.opaque=q.opaque&&!Y.xrayShaded,q.writeDepth=q.opaque}C.transform=function T(q,Y){const ee=q.vertexBuffer.ref.value;if((0,t.pi)(Y,ee,0,q.vertexCount),!o.$I.isTranslationAndUniformScaling(Y)){const g=o.U.directionTransform(E,Y);(0,t.TL)(g,q.normalBuffer.ref.value,0,q.vertexCount)}e.IQ.update(q.vertexBuffer,ee)},C.getOriginalData=function L(q){const{originalData:Y}="kind"in q?q.meta:q.meta.ref.value;return Y},C.uniformTriangleGroup=function w(q,Y=!0){const{indexBuffer:ee,vertexBuffer:g,groupBuffer:_e,normalBuffer:xe,triangleCount:le,vertexCount:Ae}=q,Be=ee.ref.value,Ce=g.ref.value,Re=_e.ref.value,ke=xe.ref.value,we=i.Gm.create(Uint32Array,3,1024,le),Oe=i.Gm.create(Float32Array,3,1024,Ce);Oe.currentIndex=3*Ae,Oe.elementCount=Ae;const Se=i.Gm.create(Float32Array,3,1024,ke);Se.currentIndex=3*Ae,Se.elementCount=Ae;const Ve=i.Gm.create(Float32Array,1,1024,Re);Ve.currentIndex=Ae,Ve.elementCount=Ae;const Ne=(0,o.eB)(),K=(0,o.eB)(),ne=(0,o.eB)(),be=(0,o.eB)(),Te=(0,o.eB)(),ie=(0,o.eB)();function ue(je){o.eB.fromArray(Ne,Ce,3*je),o.eB.fromArray(be,ke,3*je),i.Gm.add3(Oe,Ne[0],Ne[1],Ne[2]),i.Gm.add3(Se,be[0],be[1],be[2])}function re(je,Lt){o.eB.fromArray(Ne,Ce,3*je),o.eB.fromArray(K,Ce,3*Lt),o.eB.scale(Ne,o.eB.add(Ne,Ne,K),.5),o.eB.fromArray(be,ke,3*je),o.eB.fromArray(Te,ke,3*Lt),o.eB.scale(be,o.eB.add(be,be,Te),.5),i.Gm.add3(Oe,Ne[0],Ne[1],Ne[2]),i.Gm.add3(Se,be[0],be[1],be[2])}function ve(je,Lt,Je){o.eB.fromArray(Ne,Ce,3*je),o.eB.fromArray(K,Ce,3*Lt),o.eB.fromArray(ne,Ce,3*Je),o.eB.scale(Ne,o.eB.add(Ne,o.eB.add(Ne,Ne,K),ne),1/3),o.eB.fromArray(be,ke,3*je),o.eB.fromArray(Te,ke,3*Lt),o.eB.fromArray(ie,ke,3*Je),o.eB.scale(be,o.eB.add(be,o.eB.add(be,be,Te),ie),1/3),i.Gm.add3(Oe,Ne[0],Ne[1],Ne[2]),i.Gm.add3(Se,be[0],be[1],be[2])}function ce(je,Lt,Je,en,Bt){++ae,ue(je),re(je,Lt),re(je,Je),i.Gm.add3(we,se,se+1,se+2);for(let pn=0;pn<3;++pn)i.Gm.add(Ve,en);se+=3,ae+=2,ue(Lt),ue(Je),re(je,Lt),re(je,Je),i.Gm.add3(we,se,se+1,se+3),i.Gm.add3(we,se,se+3,se+2);for(let pn=0;pn<4;++pn)i.Gm.add(Ve,Bt);se+=4}let se=Ae,ae=0;if(Y)for(let je=0,Lt=le;je{const Oe=q.vertexBuffer.ref.value;Re.set(Oe),Y.forEach((Ve,Ne)=>{if(2!==Ve.length)return;o.eB.fromArray(xe,Oe,3*Ne),o.eB.fromArray(le,Oe,3*Ve[0]),o.eB.fromArray(Ae,Oe,3*Ve[1]);const K=1/o.eB.distance(xe,le),ne=1/o.eB.distance(xe,Ae);o.eB.scale(le,le,K),o.eB.scale(Ae,Ae,ne),o.eB.add(Be,le,Ae),o.eB.scale(Be,Be,1/(K+ne)),o.eB.sub(Be,Be,xe),o.eB.scale(Be,Be,we),o.eB.add(Be,xe,Be),o.eB.toArray(Be,Re,3*Ne)});const Se=q.vertexBuffer.ref.value;e.IQ.update(q.vertexBuffer,Re),Re=Se};for(let we=0;we{"use strict";n.d(Ue,{MD:()=>c,WG:()=>O,qp:()=>y,zj:()=>i});var e=n(7187),o=n(4369),r=n(3784),t=n(190),A=n(4648);function y(b,_,M,I){for(let l=_;l0),e.IQ.updateIfChanged(M.dOverpaintType,_),M):{tOverpaint:e.IQ.create(I),uOverpaintTexDim:e.IQ.create(o.ZY.create(I.width,I.height)),dOverpaint:e.IQ.create(b>0),tOverpaintGrid:e.IQ.create((0,A.z6)()),uOverpaintGridDim:e.IQ.create(o.eB.create(1,1,1)),uOverpaintGridTransform:e.IQ.create(o.Zb.create(0,0,0,1)),dOverpaintType:e.IQ.create(_),uOverpaintStrength:e.IQ.create(1)}}const v={array:new Uint8Array(4),width:1,height:1};function O(b){return b?(e.IQ.update(b.tOverpaint,v),e.IQ.update(b.uOverpaintTexDim,o.ZY.create(1,1)),b):{tOverpaint:e.IQ.create(v),uOverpaintTexDim:e.IQ.create(o.ZY.create(1,1)),dOverpaint:e.IQ.create(!1),tOverpaintGrid:e.IQ.create((0,A.z6)()),uOverpaintGridDim:e.IQ.create(o.eB.create(1,1,1)),uOverpaintGridTransform:e.IQ.create(o.Zb.create(0,0,0,1)),dOverpaintType:e.IQ.create("groupInstance"),uOverpaintStrength:e.IQ.create(1)}}},5299:(tn,Ue,n)=>{"use strict";n.d(Ue,{O:()=>d});var d,e=n(9909),o=n(4369),r=n(4559),t=n(2712),A=n(8013),y=n(7684),c=n(1888),i=n(8277),v=n(3784),O=n(5384),b=n(5019),_=n(2075),M=n(9197),I=n(8382),l=n(5077),m=n(8307),u=n(6022);!function(s){function C(G,V,U,N){return N?function D(G,V,U,N){return N.pointCount=U,e.IQ.update(N.centerBuffer,G),e.IQ.update(N.groupBuffer,V),N}(G,V,U,N):function S(G,V,U){const N=(0,O.f8)();let k,H=-1,$=-1;const J={kind:"points",pointCount:U,centerBuffer:e.IQ.create(G),groupBuffer:e.IQ.create(V),get boundingSphere(){const W=a(J);if(W!==H){const te=(0,v.sL)(J.centerBuffer.ref.value,J.pointCount,1);O.f8.copy(N,te),H=W}return N},get groupMapping(){return J.groupBuffer.ref.version!==$&&(k=(0,r.AA)(J.groupBuffer.ref.value,J.pointCount),$=J.groupBuffer.ref.version),k},setBoundingSphere(W){O.f8.copy(N,W),H=a(J)}};return J}(G,V,U)}function h(G){return C(G?G.centerBuffer.ref.value:new Float32Array(0),G?G.groupBuffer.ref.value:new Float32Array(0),0,G)}function a(G){return(0,I.TI)([G.pointCount,G.centerBuffer.ref.version,G.groupBuffer.ref.version])}function f(G,V){const U=G.pointCount,N=V.instanceCount.ref.value,k=(0,c.tu)(),H=k.position,$=G.centerBuffer.ref.value,J=V.aTransform.ref.value;return(0,c.iQ)(U,N,1,(te,de)=>(de<0?o.eB.fromArray(H,$,3*te):o.eB.transformMat4Offset(H,$,J,0,3*te,16*de),k))}function p(G,V,U,N,k){const{instanceCount:H,groupCount:$}=U,J=f(G,V),W=(0,t.D1)(U,J,N.color),te=(0,y.v3)(U,N.size),de=k.instanceGranularity?(0,A.Km)(H,"instance"):(0,A.Km)(H*$,"groupInstance"),ye=(0,_.WG)(),j=(0,M.MD)(),Z=(0,u.JS)(),q=(0,m.IB)(),Y=(0,l.EN)(),ee={drawCount:G.pointCount,vertexCount:G.pointCount,groupCount:$,instanceCount:H},g=O.f8.clone(G.boundingSphere),_e=(0,v.Ax)(g,V.aTransform.ref.value,H,0);return{dGeometryType:e.IQ.create("points"),aPosition:G.centerBuffer,aGroup:G.groupBuffer,boundingSphere:e.IQ.create(_e),invariantBoundingSphere:e.IQ.create(g),uInvariantBoundingSphere:e.IQ.create(o.Zb.ofSphere(g)),...W,...te,...de,...ye,...j,...Z,...q,...Y,...V,...b.iy.createValues(k,ee),uSizeFactor:e.IQ.create(k.sizeFactor),dPointSizeAttenuation:e.IQ.create(k.pointSizeAttenuation),dPointStyle:e.IQ.create(k.pointStyle)}}function Q(G,V){b.iy.updateRenderableState(G,V),G.opaque=G.opaque&&"fuzzy"!==V.pointStyle,G.writeDepth=G.opaque}s.create=C,s.createEmpty=h,s.transform=function R(G,V){const U=G.centerBuffer.ref.value;(0,r.pi)(V,U,0,G.pointCount),e.IQ.update(G.centerBuffer,U)},s.StyleTypes={square:"Square",circle:"Circle",fuzzy:"Fuzzy"},s.StyleTypeNames=Object.keys(s.StyleTypes),s.Params={...b.iy.Params,sizeFactor:i.t.Numeric(3,{min:0,max:10,step:.1}),pointSizeAttenuation:i.t.Boolean(!1),pointStyle:i.t.Select("square",i.t.objectToOptions(s.StyleTypes))},s.Utils={Params:s.Params,createEmpty:h,createValues:p,createValuesSimple:function E(G,V,U,N,k){const H=b.iy.createSimple(U,N,k),$={...i.t.getDefaultValues(s.Params),...V};return p(G,H.transform,H.locationIterator,H.theme,$)},updateValues:function T(G,V){b.iy.updateValues(G,V),e.IQ.updateIfChanged(G.uSizeFactor,V.sizeFactor),e.IQ.updateIfChanged(G.dPointSizeAttenuation,V.pointSizeAttenuation),e.IQ.updateIfChanged(G.dPointStyle,V.pointStyle)},updateBoundingSphere:function L(G,V){const U=O.f8.clone(V.boundingSphere),N=(0,v.Ax)(U,G.aTransform.ref.value,G.instanceCount.ref.value,0);O.f8.equals(N,G.boundingSphere.ref.value)||e.IQ.update(G.boundingSphere,N),O.f8.equals(U,G.invariantBoundingSphere.ref.value)||(e.IQ.update(G.invariantBoundingSphere,U),e.IQ.update(G.uInvariantBoundingSphere,o.Zb.fromSphere(G.uInvariantBoundingSphere.ref.value,U)))},createRenderableState:function w(G){const V=b.iy.createRenderableState(G);return Q(V,G),V},updateRenderableState:Q,createPositionIterator:f}}(d||(d={}))},7684:(tn,Ue,n)=>{"use strict";n.d(Ue,{v3:()=>c,yx:()=>v});var e=n(9909),o=n(4369),r=n(3784),t=n(364),A=n(542),y=n(4951);function c(d,s,C){switch(A.V.getGranularity(d,s.granularity)){case"uniform":return function M(d,s,C){return function _(d,s){return s?(e.IQ.update(s.uSize,d),e.IQ.updateIfChanged(s.dSizeType,"uniform"),s):{uSize:e.IQ.create(d),tSize:e.IQ.create(O),uSizeTexDim:e.IQ.create(o.ZY.create(1,1)),dSizeType:e.IQ.create("uniform")}}(s(t.LU),C)}(0,s.size,C);case"group":return function m(d,s,C){const{groupCount:h}=d,a=(0,r.xg)(Math.max(1,h),3,Uint8Array,C&&C.tSize.ref.value.array);for(d.reset();d.hasNext&&!d.isNextNewInstance;){const S=d.move();(0,y.Gu)(s(S.location)*i,a.array,3*S.groupIndex)}return I(a,"group",C)}(d,s.size,C);case"groupInstance":return function u(d,s,C){const{groupCount:h,instanceCount:a}=d,D=(0,r.xg)(Math.max(1,a*h),3,Uint8Array,C&&C.tSize.ref.value.array);for(d.reset();d.hasNext;){const R=d.move();(0,y.Gu)(s(R.location)*i,D.array,3*R.index)}return I(D,"groupInstance",C)}(d,s.size,C);case"instance":return function l(d,s,C){const{instanceCount:h}=d,a=(0,r.xg)(Math.max(1,h),3,Uint8Array,C&&C.tSize.ref.value.array);for(d.reset();d.hasNext&&!d.isNextNewInstance;){const S=d.move();(0,y.Gu)(s(S.location)*i,a.array,3*S.instanceIndex),d.skipInstance()}return I(a,"instance",C)}(d,s.size,C)}}const i=100;function v(d){switch(d.dSizeType.ref.value){case"uniform":return d.uSize.ref.value;case"instance":case"group":case"groupInstance":let C=0;const h=d.tSize.ref.value.array;for(let a=0,S=h.length;a{"use strict";n.d(Ue,{v:()=>d});var d,e=n(9909),o=n(8277),r=n(1888),t=n(2712),A=n(8013),y=n(3784),c=n(5384),i=n(7684),v=n(5019),O=n(2075),b=n(9197),_=n(8382),M=n(4559),I=n(5077),l=n(4369),m=n(8307),u=n(6022);!function(s){function C(H,$,J,W){return W?function D(H,$,J,W){return W.sphereCount=J,e.IQ.update(W.centerBuffer,H),e.IQ.update(W.groupBuffer,$),W.shaderData.update(),W}(H,$,J,W):function S(H,$,J){const W=(0,c.f8)();let te,de=-1,ye=-1;const j=e.IQ.create((0,y.xg)(1,4,Float32Array)),Z=e.IQ.create(l.ZY.create(0,0)),q=e.IQ.create([]),Y=e.IQ.create(0),ee={kind:"spheres",sphereCount:J,centerBuffer:e.IQ.create(H),groupBuffer:e.IQ.create($),get boundingSphere(){const g=a(ee);if(g!==de){const _e=(0,y.sL)(ee.centerBuffer.ref.value,ee.sphereCount,1);c.f8.copy(W,_e),de=g}return W},get groupMapping(){return ee.groupBuffer.ref.version!==ye&&(te=(0,M.AA)(ee.groupBuffer.ref.value,ee.sphereCount),ye=ee.groupBuffer.ref.version),te},setBoundingSphere(g){c.f8.copy(W,g),de=a(ee)},shaderData:{positionGroup:j,texDim:Z,lodLevels:q,sizeFactor:Y,update(g){var _e,xe;const le=null!==(_e=g?.lodLevels)&&void 0!==_e?_e:E(q.ref.value),Ae=null!==(xe=g?.sizeFactor)&&void 0!==xe?xe:Y.ref.value,Be=L(le,Ae),Ce=(0,y.xg)(ee.sphereCount,4,Float32Array,j.ref.value.array),Re=R(Ce,ee.centerBuffer.ref.value,ee.groupBuffer.ref.value,ee.sphereCount,Be),ke=Re?p(le,Ae,Re,ee.sphereCount):[];e.IQ.update(j,Ce),e.IQ.update(Z,l.ZY.set(Z.ref.value,Ce.width,Ce.height)),e.IQ.update(q,ke),e.IQ.update(Y,Ae)}}};return ee.shaderData.update(),ee}(H,$,J)}function h(H){return C(H?H.centerBuffer.ref.value:new Float32Array(0),H?H.groupBuffer.ref.value:new Float32Array(0),0,H)}function a(H){return(0,_.TI)([H.sphereCount,H.centerBuffer.ref.version,H.groupBuffer.ref.version])}function R(H,$,J,W,te){const{array:de}=H;if(0===te.length){for(let Z=0;Z{const ye=T(te,$);return[te.minDistance,te.maxDistance,te.overlap,J[J.length-1-de],Math.pow(Math.min(W,ye),1/te.scaleBias),te.stride,te.scaleBias]})}function E(H){return H.map($=>({minDistance:$[0],maxDistance:$[1],overlap:$[2],stride:$[5],scaleBias:$[6]}))}function T(H,$){return Math.max(1,Math.round(H.stride/Math.pow($,H.scaleBias)))}function L(H,$){return H.map(J=>T(J,$)).reverse()}function w(H,$){const J=H.sphereCount,W=$.instanceCount.ref.value,te=(0,r.tu)(),de=te.position,ye=H.centerBuffer.ref.value,j=$.aTransform.ref.value;return(0,r.iQ)(J,W,1,(q,Y)=>(Y<0?l.eB.fromArray(de,ye,3*q):l.eB.transformMat4Offset(de,ye,j,0,3*q,16*Y),te))}function Q(H,$,J,W,te){const{instanceCount:de,groupCount:ye}=J,j=w(H,$),Z=(0,t.D1)(J,j,W.color),q=(0,i.v3)(J,W.size),Y=te.instanceGranularity?(0,A.Km)(de,"instance"):(0,A.Km)(de*ye,"groupInstance"),ee=(0,O.WG)(),g=(0,b.MD)(),_e=(0,u.JS)(),xe=(0,m.IB)(),le=(0,I.EN)(),Ae={drawCount:2*H.sphereCount*3,vertexCount:6*H.sphereCount,groupCount:ye,instanceCount:de},Be=H.boundingSphere.radius?(0,i.yx)(q)*te.sizeFactor:0,Ce=c.f8.expand((0,c.f8)(),H.boundingSphere,Be),Re=(0,y.Ax)(Ce,$.aTransform.ref.value,de,0);return H.shaderData.update({lodLevels:te.lodLevels,sizeFactor:te.sizeFactor}),{dGeometryType:e.IQ.create("spheres"),uTexDim:H.shaderData.texDim,tPositionGroup:H.shaderData.positionGroup,boundingSphere:e.IQ.create(Re),invariantBoundingSphere:e.IQ.create(Ce),uInvariantBoundingSphere:e.IQ.create(l.Zb.ofSphere(Ce)),...Z,...q,...Y,...ee,...g,..._e,...xe,...le,...$,padding:e.IQ.create(Be),...v.iy.createValues(te,Ae),uSizeFactor:H.shaderData.sizeFactor,uDoubleSided:e.IQ.create(te.doubleSided),dIgnoreLight:e.IQ.create(te.ignoreLight),dXrayShaded:e.IQ.create("inverted"===te.xrayShaded?"inverted":!0===te.xrayShaded?"on":"off"),dTransparentBackfaces:e.IQ.create(te.transparentBackfaces),dSolidInterior:e.IQ.create(te.solidInterior),dClipPrimitive:e.IQ.create(te.clipPrimitive),dApproximate:e.IQ.create(te.approximate),uAlphaThickness:e.IQ.create(te.alphaThickness),uBumpFrequency:e.IQ.create(te.bumpFrequency),uBumpAmplitude:e.IQ.create(te.bumpAmplitude),lodLevels:H.shaderData.lodLevels,centerBuffer:H.centerBuffer,groupBuffer:H.groupBuffer}}function k(H,$){v.iy.updateRenderableState(H,$),H.opaque=H.opaque&&!$.xrayShaded,H.writeDepth=H.opaque}s.create=C,s.createEmpty=h,s.Params={...v.iy.Params,sizeFactor:o.t.Numeric(1,{min:0,max:10,step:.1}),doubleSided:o.t.Boolean(!1,v.iy.CustomQualityParamInfo),ignoreLight:o.t.Boolean(!1,v.iy.ShadingCategory),xrayShaded:o.t.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],v.iy.ShadingCategory),transparentBackfaces:o.t.Select("off",o.t.arrayToOptions(["off","on","opaque"]),v.iy.ShadingCategory),solidInterior:o.t.Boolean(!0,v.iy.ShadingCategory),clipPrimitive:o.t.Boolean(!1,{...v.iy.ShadingCategory,description:"Clip whole sphere instead of cutting it."}),approximate:o.t.Boolean(!1,{...v.iy.ShadingCategory,description:"Faster rendering, but has artifacts."}),alphaThickness:o.t.Numeric(0,{min:0,max:20,step:1},{...v.iy.ShadingCategory,description:"If not zero, adjusts alpha for radius."}),bumpFrequency:o.t.Numeric(0,{min:0,max:10,step:.1},v.iy.ShadingCategory),bumpAmplitude:o.t.Numeric(1,{min:0,max:5,step:.1},v.iy.ShadingCategory),lodLevels:o.t.ObjectList({minDistance:o.t.Numeric(0),maxDistance:o.t.Numeric(0),overlap:o.t.Numeric(0),stride:o.t.Numeric(0),scaleBias:o.t.Numeric(3,{min:.1,max:10,step:.1})},H=>`${H.stride}`,{...v.iy.CullingLodCategory,defaultValue:[]})},s.Utils={Params:s.Params,createEmpty:h,createValues:Q,createValuesSimple:function G(H,$,J,W,te){const de=v.iy.createSimple(J,W,te),ye={...o.t.getDefaultValues(s.Params),...$};return Q(H,de.transform,de.locationIterator,de.theme,ye)},updateValues:function V(H,$){v.iy.updateValues(H,$),e.IQ.updateIfChanged(H.uSizeFactor,$.sizeFactor),e.IQ.updateIfChanged(H.uDoubleSided,$.doubleSided),e.IQ.updateIfChanged(H.dIgnoreLight,$.ignoreLight),e.IQ.updateIfChanged(H.dXrayShaded,"inverted"===$.xrayShaded?"inverted":!0===$.xrayShaded?"on":"off"),e.IQ.updateIfChanged(H.dTransparentBackfaces,$.transparentBackfaces),e.IQ.updateIfChanged(H.dSolidInterior,$.solidInterior),e.IQ.updateIfChanged(H.dClipPrimitive,$.clipPrimitive),e.IQ.updateIfChanged(H.dApproximate,$.approximate),e.IQ.updateIfChanged(H.uAlphaThickness,$.alphaThickness),e.IQ.updateIfChanged(H.uBumpFrequency,$.bumpFrequency),e.IQ.updateIfChanged(H.uBumpAmplitude,$.bumpAmplitude);const J=E(H.lodLevels.ref.value);if(!function f(H,$){if(H.length!==$.length)return!1;for(let J=0,W=H.length;J{"use strict";n.d(Ue,{C2:()=>c,IB:()=>O,fZ:()=>i,mx:()=>y});var e=n(7187),o=n(4369),r=n(3784),t=n(4648),A=n(6765);function y(b,_,M,I){for(let l=_;l0),e.IQ.updateIfChanged(M.dSubstanceType,_),M):{tSubstance:e.IQ.create(I),uSubstanceTexDim:e.IQ.create(o.ZY.create(I.width,I.height)),dSubstance:e.IQ.create(b>0),tSubstanceGrid:e.IQ.create((0,t.z6)()),uSubstanceGridDim:e.IQ.create(o.eB.create(1,1,1)),uSubstanceGridTransform:e.IQ.create(o.Zb.create(0,0,0,1)),dSubstanceType:e.IQ.create(_),uSubstanceStrength:e.IQ.create(1)}}const v={array:new Uint8Array(4),width:1,height:1};function O(b){return b?(e.IQ.update(b.tSubstance,v),e.IQ.update(b.uSubstanceTexDim,o.ZY.create(1,1)),b):{tSubstance:e.IQ.create(v),uSubstanceTexDim:e.IQ.create(o.ZY.create(1,1)),dSubstance:e.IQ.create(!1),tSubstanceGrid:e.IQ.create((0,t.z6)()),uSubstanceGridDim:e.IQ.create(o.eB.create(1,1,1)),uSubstanceGridTransform:e.IQ.create(o.Zb.create(0,0,0,1)),dSubstanceType:e.IQ.create("groupInstance"),uSubstanceStrength:e.IQ.create(1)}}},331:(tn,Ue,n)=>{"use strict";n.d(Ue,{nZ:()=>i,pS:()=>c});var e=n(8277);function o(I,l,m,u,d,s,C){for(let h=0;hu&&(this.currentX=0,this.currentY+=this.scratchH),this.currentY+this.scratchH>d)return console.warn("canvas to small"),this.placeholder;this.mapped[l]={x:this.currentX,y:this.currentY,w:this.scratchW,h:this.scratchH,nw:this.scratchW/this.lineHeight,nh:this.scratchH/this.lineHeight};for(let C=0;C{"use strict";n.d(Ue,{t:()=>O});var e=n(8277),o=n(8382),r=n(4255),t=n(331),A=n(1372);const y=new Uint16Array([0,1,2,1,3,2]),c=o.Gm.add3,i=o.Gm.add2,v=o.Gm.add;var O;(O||(O={})).create=function _(M={},I=2048,l=1024,m){I*=2,l*=2;const u=o.Gm.create(Float32Array,3,l,m?m.centerBuffer.ref.value:I),d=o.Gm.create(Float32Array,2,l,m?m.mappingBuffer.ref.value:I),s=o.Gm.create(Float32Array,1,l,m?m.depthBuffer.ref.value:I),C=o.Gm.create(Uint32Array,3,l,m?m.indexBuffer.ref.value:I),h=o.Gm.create(Float32Array,1,l,m?m.groupBuffer.ref.value:I),a=o.Gm.create(Float32Array,2,l,m?m.tcoordBuffer.ref.value:I),S={...e.t.getDefaultValues(r.E.Params),...M},{attachment:D,background:R,backgroundMargin:f,tether:p,tetherLength:E,tetherBaseWidth:T}=S,L=(0,t.pS)(S),w=.4*f,Q=L.buffer/L.lineHeight,G=(V,U,N,k,H)=>{c(u,V,U,N),v(s,k),v(h,H)};return{add:(V,U,N,k,H,$,J)=>{let W=0;const te=V.length;for(let _e=0;_e{const V=L.texture,U=o.Gm.compact(u,!0),N=o.Gm.compact(d,!0),k=o.Gm.compact(s,!0),H=o.Gm.compact(C,!0),$=o.Gm.compact(h,!0),J=o.Gm.compact(a,!0);return r.E.create(V,U,N,k,H,$,J,C.elementCount/2,m)}}}},4255:(tn,Ue,n)=>{"use strict";n.d(Ue,{E:()=>a});var a,e=n(8277),o=n(9909),r=n(1888),t=n(2712),A=n(7684),y=n(8013),c=n(2745),i=n(5384),v=n(3784),O=n(190),b=n(4369),_=n(331),M=n(127),I=n(5019),l=n(2075),m=n(9197),u=n(8382),d=n(4559),s=n(5077),C=n(8307),h=n(6022);function S(D,R,f,p){let E=0,T=0;for(let L=0,w=4*f;LE&&(E=G);const V=Math.abs(D[Q+1]);V>E&&(E=V);const U=Math.abs(R[L]);U>T&&(T=U)}return Math.max(T,p+p*E)}!function(D){function R(k,H,$,J,W,te,de,ye,j){return j?function T(k,H,$,J,W,te,de,ye,j){return j.charCount=ye,o.IQ.update(j.fontTexture,k),o.IQ.update(j.centerBuffer,H),o.IQ.update(j.mappingBuffer,$),o.IQ.update(j.depthBuffer,J),o.IQ.update(j.indexBuffer,W),o.IQ.update(j.groupBuffer,te),o.IQ.update(j.tcoordBuffer,de),j}(k,H,$,J,W,te,de,ye,j):function E(k,H,$,J,W,te,de,ye){const j=(0,i.f8)();let Z,q=-1,Y=-1;const ee={kind:"text",charCount:ye,fontTexture:o.IQ.create(k),centerBuffer:o.IQ.create(H),mappingBuffer:o.IQ.create($),depthBuffer:o.IQ.create(J),indexBuffer:o.IQ.create(W),groupBuffer:o.IQ.create(te),tcoordBuffer:o.IQ.create(de),get boundingSphere(){const g=p(ee);if(g!==q){const _e=(0,v.sL)(ee.centerBuffer.ref.value,4*ee.charCount,4);i.f8.copy(j,_e),q=g}return j},get groupMapping(){return ee.groupBuffer.ref.version!==Y&&(Z=(0,d.AA)(ee.groupBuffer.ref.value,ee.charCount,4),Y=ee.groupBuffer.ref.version),Z},setBoundingSphere(g){i.f8.copy(j,g),q=p(ee)}};return ee}(k,H,$,J,W,te,de,ye)}function f(k){return R(k?k.fontTexture.ref.value:(0,v.xg)(0,1,Uint8Array),k?k.centerBuffer.ref.value:new Float32Array(0),k?k.mappingBuffer.ref.value:new Float32Array(0),k?k.depthBuffer.ref.value:new Float32Array(0),k?k.indexBuffer.ref.value:new Uint32Array(0),k?k.groupBuffer.ref.value:new Float32Array(0),k?k.tcoordBuffer.ref.value:new Float32Array(0),0,k)}function p(k){return(0,u.TI)([k.charCount,k.fontTexture.ref.version,k.centerBuffer.ref.version,k.mappingBuffer.ref.version,k.depthBuffer.ref.version,k.indexBuffer.ref.version,k.groupBuffer.ref.version,k.tcoordBuffer.ref.version])}function L(k,H){const $=4*k.charCount,J=H.instanceCount.ref.value,W=(0,r.tu)(),te=W.position,de=k.centerBuffer.ref.value,ye=H.aTransform.ref.value;return(0,r.iQ)($,J,4,(Z,q)=>(q<0?b.eB.fromArray(te,de,3*Z):b.eB.transformMat4Offset(te,de,ye,0,3*Z,16*q),W))}function w(k,H,$,J,W){const{instanceCount:te,groupCount:de}=$,ye=L(k,H),j=(0,t.D1)($,ye,J.color),Z=(0,A.v3)($,J.size),q=W.instanceGranularity?(0,y.Km)(te,"instance"):(0,y.Km)(te*de,"groupInstance"),Y=(0,l.WG)(),ee=(0,m.MD)(),g=(0,h.JS)(),_e=(0,C.IB)(),xe=(0,s.EN)(),le={drawCount:2*k.charCount*3,vertexCount:4*k.charCount,groupCount:de,instanceCount:te},Ae=S(k.mappingBuffer.ref.value,k.depthBuffer.ref.value,k.charCount,(0,A.yx)(Z)),Be=i.f8.expand((0,i.f8)(),k.boundingSphere,Ae),Ce=(0,v.Ax)(Be,H.aTransform.ref.value,te,0);return{dGeometryType:o.IQ.create("text"),aPosition:k.centerBuffer,aMapping:k.mappingBuffer,aDepth:k.depthBuffer,aGroup:k.groupBuffer,elements:k.indexBuffer,boundingSphere:o.IQ.create(Ce),invariantBoundingSphere:o.IQ.create(Be),uInvariantBoundingSphere:o.IQ.create(b.Zb.ofSphere(Be)),...j,...Z,...q,...Y,...ee,...g,..._e,...xe,...H,aTexCoord:k.tcoordBuffer,tFont:k.fontTexture,padding:o.IQ.create(Ae),...I.iy.createValues(W,le),uSizeFactor:o.IQ.create(W.sizeFactor),uBorderWidth:o.IQ.create((0,M.qE)(W.borderWidth,0,.5)),uBorderColor:o.IQ.create(O.Q1.toArrayNormalized(W.borderColor,b.eB.zero(),0)),uOffsetX:o.IQ.create(W.offsetX),uOffsetY:o.IQ.create(W.offsetY),uOffsetZ:o.IQ.create(W.offsetZ),uBackgroundColor:o.IQ.create(O.Q1.toArrayNormalized(W.backgroundColor,b.eB.zero(),0)),uBackgroundOpacity:o.IQ.create(W.backgroundOpacity)}}function N(k,H){I.iy.updateRenderableState(k,H),k.pickable=!1,k.opaque=!1,k.writeDepth=!0}D.create=R,D.createEmpty=f,D.Params={...I.iy.Params,..._.nZ,sizeFactor:e.t.Numeric(1,{min:0,max:10,step:.1}),borderWidth:e.t.Numeric(0,{min:0,max:.5,step:.01}),borderColor:e.t.Color(c.s.grey),offsetX:e.t.Numeric(0,{min:0,max:10,step:.1}),offsetY:e.t.Numeric(0,{min:0,max:10,step:.1}),offsetZ:e.t.Numeric(0,{min:0,max:10,step:.1}),background:e.t.Boolean(!1),backgroundMargin:e.t.Numeric(.2,{min:0,max:1,step:.01}),backgroundColor:e.t.Color(c.s.grey),backgroundOpacity:e.t.Numeric(1,{min:0,max:1,step:.01}),tether:e.t.Boolean(!1),tetherLength:e.t.Numeric(1,{min:0,max:5,step:.1}),tetherBaseWidth:e.t.Numeric(.3,{min:0,max:1,step:.01}),attachment:e.t.Select("middle-center",[["bottom-left","bottom-left"],["bottom-center","bottom-center"],["bottom-right","bottom-right"],["middle-left","middle-left"],["middle-center","middle-center"],["middle-right","middle-right"],["top-left","top-left"],["top-center","top-center"],["top-right","top-right"]])},D.Utils={Params:D.Params,createEmpty:f,createValues:w,createValuesSimple:function Q(k,H,$,J,W){const te=I.iy.createSimple($,J,W),de={...e.t.getDefaultValues(D.Params),...H};return w(k,te.transform,te.locationIterator,te.theme,de)},updateValues:function G(k,H){I.iy.updateValues(k,H),o.IQ.updateIfChanged(k.uSizeFactor,H.sizeFactor),o.IQ.updateIfChanged(k.uBorderWidth,H.borderWidth),O.Q1.fromNormalizedArray(k.uBorderColor.ref.value,0)!==H.borderColor&&(O.Q1.toArrayNormalized(H.borderColor,k.uBorderColor.ref.value,0),o.IQ.update(k.uBorderColor,k.uBorderColor.ref.value)),o.IQ.updateIfChanged(k.uOffsetX,H.offsetX),o.IQ.updateIfChanged(k.uOffsetY,H.offsetY),o.IQ.updateIfChanged(k.uOffsetZ,H.offsetZ),O.Q1.fromNormalizedArray(k.uBackgroundColor.ref.value,0)!==H.backgroundColor&&(O.Q1.toArrayNormalized(H.backgroundColor,k.uBackgroundColor.ref.value,0),o.IQ.update(k.uBackgroundColor,k.uBackgroundColor.ref.value)),o.IQ.updateIfChanged(k.uBackgroundOpacity,H.backgroundOpacity)},updateBoundingSphere:function V(k,H){const $=S(k.aMapping.ref.value,k.aDepth.ref.value,H.charCount,(0,A.yx)(k)),J=i.f8.expand((0,i.f8)(),H.boundingSphere,$),W=(0,v.Ax)(J,k.aTransform.ref.value,k.instanceCount.ref.value,0);i.f8.equals(W,k.boundingSphere.ref.value)||o.IQ.update(k.boundingSphere,W),i.f8.equals(J,k.invariantBoundingSphere.ref.value)||(o.IQ.update(k.invariantBoundingSphere,J),o.IQ.update(k.uInvariantBoundingSphere,b.Zb.fromSphere(k.uInvariantBoundingSphere.ref.value,J))),o.IQ.update(k.padding,$)},createRenderableState:function U(k){const H=I.iy.createRenderableState(k);return N(H,k),H},updateRenderableState:N,createPositionIterator:L}}(a||(a={}))},6280:(tn,Ue,n)=>{"use strict";n.d(Ue,{_i:()=>V,ij:()=>J,FB:()=>N,DG:()=>te,NQ:()=>H});var e=n(9909),o=n(9421),r=n(4648),t=n(2897),A=n(4143),y=n(4511),c=n(9387);const i="\nprecision highp float;\nprecision highp sampler2D;\n\nuniform sampler2D tColor;\nuniform sampler2D tCount;\nuniform vec2 uTexSize;\n\nvoid main(void) {\n vec2 coords = gl_FragCoord.xy / uTexSize;\n vec4 color = texture2D(tColor, coords);\n float count = texture2D(tCount, coords).r;\n\n gl_FragColor = color / count;\n}\n";var v=n(9007),O=n(4369),b=n(5384);const _="\nprecision highp float;\n\nvarying vec3 vPosition;\nvarying vec4 vColor;\n\nuniform float uCurrentSlice;\nuniform float uCurrentX;\nuniform float uCurrentY;\nuniform float uResolution;\n\nconst float p = 2.0;\n\nvoid main() {\n vec2 v = gl_FragCoord.xy - vec2(uCurrentX, uCurrentY) - 0.5;\n vec3 fragPos = vec3(v.x, v.y, uCurrentSlice);\n float dist = distance(fragPos, vPosition);\n if (dist > p) discard;\n\n float f = p - dist;\n gl_FragColor = vColor * f;\n gl_FragData[1] = vec4(f);\n}\n",M="\nprecision highp float;\n\n#include common\n#include read_from_texture\n\nuniform int uGroupCount;\n\nattribute float aSample;\n#define SampleID int(aSample)\n\nattribute mat4 aTransform;\nattribute float aInstance;\n\nuniform vec2 uGeoTexDim;\nuniform sampler2D tPosition;\nuniform sampler2D tGroup;\n\nuniform vec2 uColorTexDim;\nuniform sampler2D tColor;\n\nvarying vec3 vPosition;\nvarying vec4 vColor;\n\nuniform vec3 uBboxSize;\nuniform vec3 uBboxMin;\nuniform float uResolution;\n\nvoid main() {\n vec3 position = readFromTexture(tPosition, SampleID, uGeoTexDim).xyz;\n float group = unpackRGBToInt(readFromTexture(tGroup, SampleID, uGeoTexDim).rgb);\n\n position = (aTransform * vec4(position, 1.0)).xyz;\n gl_PointSize = 7.0;\n vPosition = (position - uBboxMin) / uResolution;\n gl_Position = vec4(((position - uBboxMin) / uBboxSize) * 2.0 - 1.0, 1.0);\n\n #if defined(dColorType_group)\n vColor = readFromTexture(tColor, group, uColorTexDim);\n #elif defined(dColorType_groupInstance)\n vColor = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim);\n #endif\n}\n";var I=n(8437),l=n(2629);const m={drawCount:(0,y.Xb)("number"),instanceCount:(0,y.Xb)("number"),stride:(0,y.Xb)("number"),uGroupCount:(0,y.w5)("i","material"),aTransform:(0,y.Yz)("float32",16,1),aInstance:(0,y.Yz)("float32",1,1),aSample:(0,y.Yz)("float32",1,0),uGeoTexDim:(0,y.w5)("v2","material"),tPosition:(0,y.$G)("texture","rgba","float","nearest","material"),tGroup:(0,y.$G)("texture","rgba","float","nearest","material"),uColorTexDim:(0,y.w5)("v2","material"),tColor:(0,y.$G)("texture","rgba","ubyte","nearest","material"),dColorType:(0,y.$F)("string",["group","groupInstance","vertex","vertexInstance"]),uCurrentSlice:(0,y.w5)("f"),uCurrentX:(0,y.w5)("f"),uCurrentY:(0,y.w5)("f"),uBboxMin:(0,y.w5)("v3","material"),uBboxSize:(0,y.w5)("v3","material"),uResolution:(0,y.w5)("f","material")},u="color-accumulate",d="color-count";function s(de,ye){const j=new Float32Array(de);for(let Z=0;Zee.drawCount.ref.value||q!==ee.stride.ref.value)&&e.IQ.update(ee.aSample,s(g,q)),e.IQ.updateIfChanged(ee.drawCount,g),e.IQ.updateIfChanged(ee.instanceCount,ye.instanceCount),e.IQ.updateIfChanged(ee.stride,q),e.IQ.updateIfChanged(ee.uGroupCount,ye.groupCount),e.IQ.update(ee.aTransform,ye.transformBuffer),e.IQ.update(ee.aInstance,ye.instanceBuffer),e.IQ.update(ee.uGeoTexDim,O.ZY.set(ee.uGeoTexDim.ref.value,ye.positionTexture.getWidth(),ye.positionTexture.getHeight())),e.IQ.update(ee.tPosition,ye.positionTexture),e.IQ.update(ee.tGroup,ye.groupTexture),e.IQ.update(ee.uColorTexDim,O.ZY.set(ee.uColorTexDim.ref.value,ye.colorData.getWidth(),ye.colorData.getHeight())),e.IQ.update(ee.tColor,ye.colorData),e.IQ.updateIfChanged(ee.dColorType,ye.colorType),e.IQ.updateIfChanged(ee.uCurrentSlice,0),e.IQ.updateIfChanged(ee.uCurrentX,0),e.IQ.updateIfChanged(ee.uCurrentY,0),e.IQ.update(ee.uBboxMin,j.min),e.IQ.update(ee.uBboxSize,Y),e.IQ.updateIfChanged(ee.uResolution,Z),de.namedComputeRenderables[u].update()}else de.namedComputeRenderables[u]=function h(de,ye,j,Z,q){const Y=O.eB.sub((0,O.eB)(),j.max,j.min),ee=Math.round(ye.vertexCount/q),g={drawCount:e.IQ.create(ee),instanceCount:e.IQ.create(ye.instanceCount),stride:e.IQ.create(q),uGroupCount:e.IQ.create(ye.groupCount),aTransform:e.IQ.create(ye.transformBuffer),aInstance:e.IQ.create(ye.instanceBuffer),aSample:e.IQ.create(s(ee,q)),uGeoTexDim:e.IQ.create(O.ZY.create(ye.positionTexture.getWidth(),ye.positionTexture.getHeight())),tPosition:e.IQ.create(ye.positionTexture),tGroup:e.IQ.create(ye.groupTexture),uColorTexDim:e.IQ.create(O.ZY.create(ye.colorData.getWidth(),ye.colorData.getHeight())),tColor:e.IQ.create(ye.colorData),dColorType:e.IQ.create(ye.colorType),uCurrentSlice:e.IQ.create(0),uCurrentX:e.IQ.create(0),uCurrentY:e.IQ.create(0),uBboxMin:e.IQ.create(j.min),uBboxSize:e.IQ.create(Y),uResolution:e.IQ.create(Z)},_e={...m},xe=(0,t.NG)("accumulate",M,_,{drawBuffers:"required"}),le=(0,A.$h)(de,"points",xe,_e,g);return(0,o._)(le,g)}(de,ye,j,Z,q);return de.namedComputeRenderables[u]}(Z,de,Re,ye,j);_e.currentRenderItemId=-1,ie.bind(),Y.drawBuffers([Y.COLOR_ATTACHMENT0,Y.COLOR_ATTACHMENT1]);const{uCurrentSlice:ce,uCurrentX:se,uCurrentY:ae}=ve.values;l.g$&&Z.timer.mark("ColorAccumulate.render"),function a(de){const{gl:ye,state:j}=de;j.disable(ye.CULL_FACE),j.enable(ye.BLEND),j.disable(ye.DEPTH_TEST),j.enable(ye.SCISSOR_TEST),j.depthMask(!1),j.clearColor(0,0,0,0),j.blendFunc(ye.ONE,ye.ONE),j.blendEquation(ye.FUNC_ADD)}(Z),_e.viewport(0,0,ne,be),_e.scissor(0,0,ne,be),ee.clear(ee.COLOR_BUFFER_BIT),e.IQ.update(ae,0);let ge=0,Ie=0,Le=0;for(let Je=0;Je=Te&&(ge-=Te,Ie+=Ne,Le=0,e.IQ.update(ae,Ie)),e.IQ.update(se,Le),e.IQ.update(ce,Je),_e.viewport(Le,Ie,Ve,Ne),_e.scissor(Le,Ie,Ve,Ne),ve.render(),++ge,Le+=Ve;ue.detachFramebuffer(ie,0),re.detachFramebuffer(ie,1),Y.drawBuffers([ee.COLOR_ATTACHMENT0,ee.NONE]),l.g$&&Z.timer.markEnd("ColorAccumulate.render"),l.g$&&Z.timer.mark("ColorNormalize.render"),(!q||(0,r.NP)(q))&&(q=g.texture("image-uint8","rgba","ubyte","linear")),q.define(ne,be);const nt=function R(de,ye,j){if(de.namedComputeRenderables[D]){const Z=de.namedComputeRenderables[D].values;e.IQ.update(Z.tColor,ye),e.IQ.update(Z.tCount,j),e.IQ.update(Z.uTexSize,O.ZY.set(Z.uTexSize.ref.value,ye.getWidth(),ye.getHeight())),de.namedComputeRenderables[D].update()}else de.namedComputeRenderables[D]=function f(de,ye,j){const Z={...v.OM,tColor:e.IQ.create(ye),tCount:e.IQ.create(j),uTexSize:e.IQ.create(O.ZY.create(ye.getWidth(),ye.getHeight()))},q={...S},Y=(0,t.NG)("normalize",c.e,i),ee=(0,A.$h)(de,"triangles",Y,q,Z);return(0,o._)(ee,Z)}(de,ye,j);return de.namedComputeRenderables[D]}(Z,ue,re);_e.currentRenderItemId=-1,function p(de){const{gl:ye,state:j}=de;j.disable(ye.CULL_FACE),j.enable(ye.BLEND),j.disable(ye.DEPTH_TEST),j.enable(ye.SCISSOR_TEST),j.depthMask(!1),j.clearColor(0,0,0,0),j.blendFunc(ye.ONE,ye.ONE),j.blendEquation(ye.FUNC_ADD)}(Z),q.attachFramebuffer(ie,0),_e.viewport(0,0,ne,be),_e.scissor(0,0,ne,be),ee.clear(ee.COLOR_BUFFER_BIT),nt.render(),l.g$&&Z.timer.markEnd("ColorNormalize.render");const je=O.Zb.create(Se[0],Se[1],Se[2],ke),Lt=Ae?"volumeInstance":"volume";return l.g$&&Z.timer.markEnd("calcTextureMeshColorSmoothing"),{texture:q,gridDim:Oe,gridTexDim:O.ZY.create(ne,be),gridTransform:je,type:Lt}}const L="color-smoothing-rgb",w="color-smoothing-rgba",Q="color-smoothing-alpha";function V(de,ye,j,Z,q){if(!function G(de){return"group"===de||"groupInstance"===de}(de.dColorType.ref.value))return;j*=3,Z.namedTextures[L]||(Z.namedTextures[L]=Z.resources.texture("image-uint8","rgb","ubyte","nearest"));const Y=Z.namedTextures[L];Y.load(de.tColor.ref.value);const ee=T({vertexCount:de.uVertexCount.ref.value,instanceCount:de.uInstanceCount.ref.value,groupCount:de.uGroupCount.ref.value,transformBuffer:de.aTransform.ref.value,instanceBuffer:de.aInstance.ref.value,positionTexture:de.tPosition.ref.value,groupTexture:de.tGroup.ref.value,colorData:Y,colorType:de.dColorType.ref.value,boundingSphere:de.boundingSphere.ref.value,invariantBoundingSphere:de.invariantBoundingSphere.ref.value},ye,j,Z,q);e.IQ.updateIfChanged(de.dColorType,ee.type),e.IQ.update(de.tColorGrid,ee.texture),e.IQ.update(de.uColorTexDim,ee.gridTexDim),e.IQ.update(de.uColorGridDim,ee.gridDim),e.IQ.update(de.uColorGridTransform,ee.gridTransform)}function N(de,ye,j,Z,q){if(!function U(de){return"groupInstance"===de}(de.dOverpaintType.ref.value))return;j*=3,Z.namedTextures[w]||(Z.namedTextures[w]=Z.resources.texture("image-uint8","rgba","ubyte","nearest"));const Y=Z.namedTextures[w];Y.load(de.tOverpaint.ref.value);const ee=T({vertexCount:de.uVertexCount.ref.value,instanceCount:de.uInstanceCount.ref.value,groupCount:de.uGroupCount.ref.value,transformBuffer:de.aTransform.ref.value,instanceBuffer:de.aInstance.ref.value,positionTexture:de.tPosition.ref.value,groupTexture:de.tGroup.ref.value,colorData:Y,colorType:de.dOverpaintType.ref.value,boundingSphere:de.boundingSphere.ref.value,invariantBoundingSphere:de.invariantBoundingSphere.ref.value},ye,j,Z,q);e.IQ.updateIfChanged(de.dOverpaintType,ee.type),e.IQ.update(de.tOverpaintGrid,ee.texture),e.IQ.update(de.uOverpaintTexDim,ee.gridTexDim),e.IQ.update(de.uOverpaintGridDim,ee.gridDim),e.IQ.update(de.uOverpaintGridTransform,ee.gridTransform)}function H(de,ye,j,Z,q){if(!function k(de){return"groupInstance"===de}(de.dTransparencyType.ref.value))return;j*=3,Z.namedTextures[Q]||(Z.namedTextures[Q]=Z.resources.texture("image-uint8","alpha","ubyte","nearest"));const Y=Z.namedTextures[Q];Y.load(de.tTransparency.ref.value);const ee=T({vertexCount:de.uVertexCount.ref.value,instanceCount:de.uInstanceCount.ref.value,groupCount:de.uGroupCount.ref.value,transformBuffer:de.aTransform.ref.value,instanceBuffer:de.aInstance.ref.value,positionTexture:de.tPosition.ref.value,groupTexture:de.tGroup.ref.value,colorData:Y,colorType:de.dTransparencyType.ref.value,boundingSphere:de.boundingSphere.ref.value,invariantBoundingSphere:de.invariantBoundingSphere.ref.value},ye,j,Z,q);e.IQ.updateIfChanged(de.dTransparencyType,ee.type),e.IQ.update(de.tTransparencyGrid,ee.texture),e.IQ.update(de.uTransparencyTexDim,ee.gridTexDim),e.IQ.update(de.uTransparencyGridDim,ee.gridDim),e.IQ.update(de.uTransparencyGridTransform,ee.gridTransform)}function J(de,ye,j,Z,q){if(!function $(de){return"groupInstance"===de}(de.dEmissiveType.ref.value))return;j*=3,Z.namedTextures[Q]||(Z.namedTextures[Q]=Z.resources.texture("image-uint8","alpha","ubyte","nearest"));const Y=Z.namedTextures[Q];Y.load(de.tEmissive.ref.value);const ee=T({vertexCount:de.uVertexCount.ref.value,instanceCount:de.uInstanceCount.ref.value,groupCount:de.uGroupCount.ref.value,transformBuffer:de.aTransform.ref.value,instanceBuffer:de.aInstance.ref.value,positionTexture:de.tPosition.ref.value,groupTexture:de.tGroup.ref.value,colorData:Y,colorType:de.dEmissiveType.ref.value,boundingSphere:de.boundingSphere.ref.value,invariantBoundingSphere:de.invariantBoundingSphere.ref.value},ye,j,Z,q);e.IQ.updateIfChanged(de.dEmissiveType,ee.type),e.IQ.update(de.tEmissiveGrid,ee.texture),e.IQ.update(de.uEmissiveTexDim,ee.gridTexDim),e.IQ.update(de.uEmissiveGridDim,ee.gridDim),e.IQ.update(de.uEmissiveGridTransform,ee.gridTransform)}function te(de,ye,j,Z,q){if(!function W(de){return"groupInstance"===de}(de.dSubstanceType.ref.value))return;j*=3,Z.namedTextures[w]||(Z.namedTextures[w]=Z.resources.texture("image-uint8","rgba","ubyte","nearest"));const Y=Z.namedTextures[w];Y.load(de.tSubstance.ref.value);const ee=T({vertexCount:de.uVertexCount.ref.value,instanceCount:de.uInstanceCount.ref.value,groupCount:de.uGroupCount.ref.value,transformBuffer:de.aTransform.ref.value,instanceBuffer:de.aInstance.ref.value,positionTexture:de.tPosition.ref.value,groupTexture:de.tGroup.ref.value,colorData:Y,colorType:de.dSubstanceType.ref.value,boundingSphere:de.boundingSphere.ref.value,invariantBoundingSphere:de.invariantBoundingSphere.ref.value},ye,j,Z,q);e.IQ.updateIfChanged(de.dSubstanceType,ee.type),e.IQ.update(de.tSubstanceGrid,ee.texture),e.IQ.update(de.uSubstanceTexDim,ee.gridTexDim),e.IQ.update(de.uSubstanceGridDim,ee.gridDim),e.IQ.update(de.uSubstanceGridTransform,ee.gridTransform)}},799:(tn,Ue,n)=>{"use strict";n.d(Ue,{X:()=>u});var u,e=n(9909),o=n(5384),r=n(8277),t=n(1888),A=n(2712),y=n(8013),c=n(5019),i=n(2075),v=n(9197),O=n(3784),b=n(4648),_=n(4369),M=n(5077),I=n(364),l=n(8307),m=n(6022);!function(d){class s{constructor(){this.index=0,this.textures=[]}get(){return this.textures[this.index]}set(w,Q,G){this.textures[this.index]=Object.assign(this.textures[this.index]||{},{vertex:w,group:Q,normal:G}),this.index=(this.index+1)%2}destroy(){for(const w of this.textures)w.vertex.destroy(),w.group.destroy(),w.normal.destroy()}}function C(L,w,Q,G,V,U,N){const k=Q.getWidth(),H=Q.getHeight();return N?(N.vertexCount=L,N.groupCount=w,e.IQ.update(N.geoTextureDim,_.ZY.set(N.geoTextureDim.ref.value,k,H)),e.IQ.update(N.vertexTexture,Q),e.IQ.update(N.groupTexture,G),e.IQ.update(N.normalTexture,V),N.doubleBuffer.set(Q,G,V),o.f8.copy(N.boundingSphere,U),N):{kind:"texture-mesh",vertexCount:L,groupCount:w,geoTextureDim:e.IQ.create(_.ZY.create(k,H)),vertexTexture:e.IQ.create(Q),groupTexture:e.IQ.create(G),normalTexture:e.IQ.create(V),varyingGroup:e.IQ.create(!1),doubleBuffer:new s,boundingSphere:o.f8.clone(U),meta:{}}}function h(L){return C(0,0,L?L.vertexTexture.ref.value:(0,b.z6)(),L?L.groupTexture.ref.value:(0,b.z6)(),L?L.normalTexture.ref.value:(0,b.z6)(),L?L.boundingSphere:(0,o.f8)(),L)}d.DoubleBuffer=s,d.create=C,d.createEmpty=h,d.Params={...c.iy.Params,doubleSided:r.t.Boolean(!1,c.iy.CustomQualityParamInfo),flipSided:r.t.Boolean(!1,c.iy.ShadingCategory),flatShaded:r.t.Boolean(!1,c.iy.ShadingCategory),ignoreLight:r.t.Boolean(!1,c.iy.ShadingCategory),xrayShaded:r.t.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],c.iy.ShadingCategory),transparentBackfaces:r.t.Select("off",r.t.arrayToOptions(["off","on","opaque"]),c.iy.ShadingCategory),bumpFrequency:r.t.Numeric(0,{min:0,max:10,step:.1},c.iy.ShadingCategory),bumpAmplitude:r.t.Numeric(1,{min:0,max:5,step:.1},c.iy.ShadingCategory)},d.Utils={Params:d.Params,createEmpty:h,createValues:D,createValuesSimple:function R(L,w,Q,G,V){const U=c.iy.createSimple(Q,G,V),N={...r.t.getDefaultValues(d.Params),...w};return D(L,U.transform,U.locationIterator,U.theme,N)},updateValues:function f(L,w){c.iy.updateValues(L,w),e.IQ.updateIfChanged(L.uDoubleSided,w.doubleSided),e.IQ.updateIfChanged(L.dFlatShaded,w.flatShaded),e.IQ.updateIfChanged(L.dFlipSided,w.flipSided),e.IQ.updateIfChanged(L.dIgnoreLight,w.ignoreLight),e.IQ.updateIfChanged(L.dXrayShaded,"inverted"===w.xrayShaded?"inverted":!0===w.xrayShaded?"on":"off"),e.IQ.updateIfChanged(L.dTransparentBackfaces,w.transparentBackfaces),e.IQ.updateIfChanged(L.uBumpFrequency,w.bumpFrequency),e.IQ.updateIfChanged(L.uBumpAmplitude,w.bumpAmplitude)},updateBoundingSphere:function p(L,w){const Q=o.f8.clone(w.boundingSphere),G=(0,O.Ax)(Q,L.aTransform.ref.value,L.instanceCount.ref.value,0);o.f8.equals(G,L.boundingSphere.ref.value)||e.IQ.update(L.boundingSphere,G),o.f8.equals(Q,L.invariantBoundingSphere.ref.value)||(e.IQ.update(L.invariantBoundingSphere,Q),e.IQ.update(L.uInvariantBoundingSphere,_.Zb.fromSphere(L.uInvariantBoundingSphere.ref.value,Q)))},createRenderableState:function E(L){const w=c.iy.createRenderableState(L);return T(w,L),w},updateRenderableState:T,createPositionIterator:function S(L,w){const Q=L.meta.webgl;if(!Q)return(0,t.iQ)(1,1,1,()=>I.LU);Q.namedFramebuffers[a]||(Q.namedFramebuffers[a]=Q.resources.framebuffer());const G=Q.namedFramebuffers[a],[V,U]=L.geoTextureDim.ref.value,N=new Float32Array(V*U*4);G.bind(),L.vertexTexture.ref.value.attachFramebuffer(G,0),Q.readPixels(0,0,V,U,N);const k=new Float32Array(V*U*4);G.bind(),L.normalTexture.ref.value.attachFramebuffer(G,0),Q.readPixels(0,0,V,U,k);const H=L.vertexCount,$=w.instanceCount.ref.value,J=(0,t.tu)(),W=J.position,te=J.normal,de=w.aTransform.ref.value;return(0,t.iQ)(H,$,1,(j,Z)=>(Z<0?(_.eB.fromArray(W,N,4*j),_.eB.fromArray(te,k,4*j)):(_.eB.transformMat4Offset(W,N,de,0,4*j,16*Z),_.eB.transformDirectionOffset(te,k,de,0,4*j,16*Z)),J))}};const a="texture-mesh";function D(L,w,Q,G,V){const{instanceCount:U,groupCount:N}=Q,k=d.Utils.createPositionIterator(L,w),H=(0,A.D1)(Q,k,G.color),$=V.instanceGranularity?(0,y.Km)(U,"instance"):(0,y.Km)(U*N,"groupInstance"),J=(0,i.WG)(),W=(0,v.MD)(),te=(0,m.JS)(),de=(0,l.IB)(),ye=(0,M.EN)(),j={drawCount:L.vertexCount,vertexCount:L.vertexCount,groupCount:N,instanceCount:U},Z=o.f8.clone(L.boundingSphere),q=(0,O.Ax)(Z,w.aTransform.ref.value,U,0);return{dGeometryType:e.IQ.create("textureMesh"),uGeoTexDim:L.geoTextureDim,tPosition:L.vertexTexture,tGroup:L.groupTexture,tNormal:L.normalTexture,dVaryingGroup:L.varyingGroup,boundingSphere:e.IQ.create(q),invariantBoundingSphere:e.IQ.create(Z),uInvariantBoundingSphere:e.IQ.create(_.Zb.ofSphere(Z)),...H,...$,...J,...W,...te,...de,...ye,...w,...c.iy.createValues(V,j),uDoubleSided:e.IQ.create(V.doubleSided),dFlatShaded:e.IQ.create(V.flatShaded),dFlipSided:e.IQ.create(V.flipSided),dIgnoreLight:e.IQ.create(V.ignoreLight),dXrayShaded:e.IQ.create("inverted"===V.xrayShaded?"inverted":!0===V.xrayShaded?"on":"off"),dTransparentBackfaces:e.IQ.create(V.transparentBackfaces),uBumpFrequency:e.IQ.create(V.bumpFrequency),uBumpAmplitude:e.IQ.create(V.bumpAmplitude),meta:e.IQ.create(L.meta)}}function T(L,w){c.iy.updateRenderableState(L,w),L.opaque=L.opaque&&!w.xrayShaded,L.writeDepth=L.opaque}}(u||(u={}))},3596:(tn,Ue,n)=>{"use strict";n.d(Ue,{Zk:()=>h,l1:()=>s,ES:()=>a,CY:()=>S});var e=n(9909),o=n(4369),r=n(6115),t=n(5100),A=n(5384),y=n(2086),c=n(9307),i=n(8184);const v=y.e.transformMat4Offset,O=y.e.fromArray,b=A.DJ.add;const m=(0,o.U)(),u=(0,o.$I)();function s(D,R,f,p,E,T){const L=function d(D,R){for(let f=0;f=16*R?T.transform.ref.value:new Float32Array(16*R);w.set(D),e.IQ.update(T.transform,w),e.IQ.updateIfChanged(T.uInstanceCount,R),e.IQ.updateIfChanged(T.instanceCount,R);const Q=T.aTransform.ref.value.length>=16*R?T.aTransform.ref.value:new Float32Array(16*R);e.IQ.update(T.aTransform,Q);const G=T.extraTransform.ref.value.length>=16*R?T.extraTransform.ref.value:new Float32Array(16*R);e.IQ.update(T.extraTransform,a(G,R));const V=T.aInstance.ref.value.length>=R?T.aInstance.ref.value:new Float32Array(R);e.IQ.update(T.aInstance,(0,r.WE)(V,R)),e.IQ.update(T.hasReflection,L)}else T={aTransform:e.IQ.create(new Float32Array(16*R)),matrix:e.IQ.create(o.$I.identity()),transform:e.IQ.create(new Float32Array(D)),extraTransform:e.IQ.create(a(new Float32Array(16*R),R)),uInstanceCount:e.IQ.create(R),instanceCount:e.IQ.create(R),aInstance:e.IQ.create((0,r.WE)(new Float32Array(R))),hasReflection:e.IQ.create(L),instanceGrid:e.IQ.create({cellSize:0,cellCount:0,cellOffsets:new Uint32Array,cellSpheres:new Float32Array,cellTransform:new Float32Array,cellInstance:new Float32Array,batchSize:0,batchCount:0,batchOffsets:new Uint32Array,batchSpheres:new Float32Array,batchCell:new Uint32Array})};return S(T,f,p,E),T}const C=new Float32Array(16);function h(D){return s(new Float32Array(C),1,void 0,0,0,D)}function a(D,R){for(let f=0;f0){const V=function M(D,R,f){const p=function I(D,R){const{instanceCount:f,instance:p,transform:E,invariantBoundingSphere:T}=D,L=new Float32Array(f),w=new Float32Array(f),Q=new Float32Array(f),G=t.C.ofBounds(0,f),V=A.DJ.setEmpty((0,A.DJ)()),{center:U,radius:N}=T,k=y.e.create(N,N,N),H=(0,y.e)();for(let le=0;le{"use strict";n.d(Ue,{Gg:()=>y,MD:()=>O,Ti:()=>i,UG:()=>A,m6:()=>c});var e=n(7187),o=n(4369),r=n(3784),t=n(4648);function A(b,_,M,I){for(let l=_;l0),e.IQ.updateIfChanged(M.transparencyAverage,y(I.array,b)),e.IQ.updateIfChanged(M.dTransparencyType,_),M):{tTransparency:e.IQ.create(I),uTransparencyTexDim:e.IQ.create(o.ZY.create(I.width,I.height)),dTransparency:e.IQ.create(b>0),transparencyAverage:e.IQ.create(0),tTransparencyGrid:e.IQ.create((0,t.z6)()),uTransparencyGridDim:e.IQ.create(o.eB.create(1,1,1)),uTransparencyGridTransform:e.IQ.create(o.Zb.create(0,0,0,1)),dTransparencyType:e.IQ.create(_),uTransparencyStrength:e.IQ.create(1)}}const v={array:new Uint8Array(1),width:1,height:1};function O(b){return b?(e.IQ.update(b.tTransparency,v),e.IQ.update(b.uTransparencyTexDim,o.ZY.create(1,1)),b):{tTransparency:e.IQ.create(v),uTransparencyTexDim:e.IQ.create(o.ZY.create(1,1)),dTransparency:e.IQ.create(!1),transparencyAverage:e.IQ.create(0),tTransparencyGrid:e.IQ.create((0,t.z6)()),uTransparencyGridDim:e.IQ.create(o.eB.create(1,1,1)),uTransparencyGridTransform:e.IQ.create(o.Zb.create(0,0,0,1)),dTransparencyType:e.IQ.create("groupInstance"),uTransparencyStrength:e.IQ.create(1)}}},3280:(tn,Ue,n)=>{"use strict";n.d(Ue,{UC:()=>m,az:()=>_,wV:()=>I});var e=n(4369),o=n(6928),r=n(863),t=n(8937);const A=(0,e.eB)(),y=(0,e.eB)(),c=(0,e.eB)(),i=(0,e.eB)(),v=(0,r.n)(4,!0);function O(u){const C=(0,o.nT)(12,u?36:24);for(let h=0;h<4;++h){const a=(h+1)%4;e.eB.set(A,v[3*h],v[3*h+1],-.5),e.eB.set(y,v[3*a],v[3*a+1],-.5),e.eB.set(c,v[3*a],v[3*a+1],.5),e.eB.set(i,v[3*h],v[3*h+1],.5),u?C.add(A,y,c):C.addQuad(A,y,c,i)}return e.eB.set(A,v[0],v[1],-.5),e.eB.set(y,v[3],v[4],-.5),e.eB.set(c,v[6],v[7],-.5),e.eB.set(i,v[9],v[10],-.5),u?C.add(c,y,A):C.addQuad(i,c,y,A),e.eB.set(A,v[0],v[1],.5),e.eB.set(y,v[3],v[4],.5),e.eB.set(c,v[6],v[7],.5),e.eB.set(i,v[9],v[10],.5),u?C.add(A,y,c):C.addQuad(A,y,c,i),C.getPrimitive()}let b,M,l;function _(){return b||(b=O(!1)),b}function I(){return M||(M=O(!0)),M}function m(){return l||(l=(0,t.L3)([.5,.5,-.5,-.5,.5,-.5,-.5,-.5,-.5,.5,-.5,-.5,.5,.5,.5,-.5,.5,.5,-.5,-.5,.5,.5,-.5,.5],[0,4,1,5,2,6,3,7,0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4])),l}},8937:(tn,Ue,n)=>{"use strict";n.d(Ue,{L3:()=>o,b0:()=>A,so:()=>r});var e=n(4369);function o(y,c){return{vertices:y,edges:c}}function r(y){return{vertices:new Float32Array(y.vertices),edges:new Uint32Array(y.edges)}}const t=e.eB.zero();function A(y,c){const{vertices:i}=y;for(let v=0,O=i.length;v{"use strict";function e(o,r,t=-1){const A=new Float32Array(3*o),y=-1===t?o<=4?Math.sqrt(2)/2:.6:t,c=r?1:0;for(let i=0,v=o;ie})},6928:(tn,Ue,n)=>{"use strict";n.d(Ue,{_2:()=>b,m9:()=>A,nT:()=>i});var e=n(4369);const o=(0,e.eB)(),r=(0,e.eB)(),t=(0,e.eB)();function A(_,M){const I=M.length,l=i(I/3);for(let m=0;m{e.eB.toArray(s,I,u),e.eB.toArray(C,I,u+3),e.eB.toArray(h,I,u+6),e.eB.triangleNormal(c,s,C,h);for(let a=0;a<3;++a)e.eB.toArray(c,l,u+3*a),m[d+a]=u/3+a;u+=9,d+=3},addQuad:(s,C,h,a)=>{e.eB.toArray(s,I,u),e.eB.toArray(C,I,u+3),e.eB.toArray(h,I,u+6),e.eB.toArray(a,I,u+9),e.eB.triangleNormal(c,s,C,h);for(let D=0;D<4;++D)e.eB.toArray(c,l,u+3*D);const S=u/3;m[d]=S,m[d+1]=S+1,m[d+2]=S+2,m[d+3]=S+2,m[d+4]=S+3,m[d+5]=S,u+=12,d+=6},getPrimitive:()=>({vertices:I,normals:l,indices:m})}}const v=(0,e.eB)(),O=(0,e.U)();function b(_,M){const{vertices:I,normals:l}=_,m=e.U.directionTransform(O,M);for(let u=0,d=I.length;u{"use strict";n.d(Ue,{My:()=>b,SM:()=>s,VH:()=>h,jg:()=>u,r7:()=>l,uo:()=>M});var e=n(4369),o=n(6928),r=n(863);const t=(0,e.eB)(),A=(0,e.eB)(),y=(0,e.eB)(),c=(0,e.eB)(),i=(0,e.eB)(),v=(0,e.eB)(),O={height:1,topCap:!0,bottomCap:!0};function b(T,L){const w=T.length/3;if(w<3)throw new Error("need at least 3 points to build a prism");const{height:Q,topCap:G,bottomCap:V}={...O,...L};let U=2*w,N=4*w;const k=(G?1:0)+(V?1:0);3===w?(U+=k,N+=3*k):4===w?(U+=2*k,N+=4*k):(U+=k*w,N+=k*w*3);const H=(0,o.nT)(U,N),$=.5*Q;e.eB.set(t,0,0,-$),e.eB.set(A,0,0,$);for(let J=0;J{"use strict";n.d(Ue,{i:()=>s,J:()=>d});var e=n(4369),o=n(4559);const r={radius:1,detail:0};var y=n(6928),c=n(8937);const i=(1+Math.sqrt(5))/2,v=[-1,i,0,1,i,0,-1,-i,0,1,-i,0,0,-1,i,0,1,i,0,-1,-i,0,1,-i,i,0,-1,i,0,1,-i,0,-1,-i,0,1],O=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1];let _;(0,c.L3)(v,[0,11,5,11,0,5,1,5,0,1,1,7,0,7,7,10,0,10,10,11,5,9,4,11,2,10,6,7,1,8,3,9,4,9,3,4,2,4,2,3,2,6,3,6,6,8,3,8,8,9,4,5,2,11,6,10,7,8,1,9]);const{vertices:m,indices:u}=function M(){return _||(_=(0,y.m9)(v,O)),_}();function d(C){return 10*Math.pow(Math.pow(2,C),2)+2}function s(C){return function t(C,h,a){const{radius:S,detail:D}={...r,...a},R=function A(){const C=[],h=[],a=new Map;function S(D){const R=`${D[0].toFixed(5)}|${D[1].toFixed(5)}|${D[2].toFixed(5)}`;let f=a.get(R);return void 0===f&&(f=C.length/3,a.set(R,f),C.push(...D)),f}return{vertices:C,indices:h,add:(D,R,f)=>{h.push(S(D),S(R),S(f))}}}(),{vertices:f,indices:p}=R;(function T(w){const Q=(0,e.eB)(),G=(0,e.eB)(),V=(0,e.eB)();for(let U=0;U{"use strict";n.d(Ue,{AA:()=>l,TL:()=>y,lm:()=>c,pi:()=>A,xL:()=>M});var e=n(4369),o=n(6115);const t=(0,e.eB)();function A(m,u,d,s){for(let C=0,h=3*s;C{"use strict";n.d(Ue,{ZC:()=>A,iQ:()=>r,tu:()=>t});var e=n(4369),o=n(364);function r(y,c,i,v,O=!1,b=(()=>!1),_){if(y%i!=0)throw new Error("incompatible groupCount and stride");const M={location:o.LU,location2:o.LU,index:0,groupIndex:0,instanceIndex:0,isSecondary:!1};let I=M.groupIndex(I&&(M.groupIndex=m,M.instanceIndex=u,M.index=u*y+m,M.location=v(m,d?-1:u),s&&(M.location2=_(m,d?-1:u)),M.isSecondary=b(m,d?-1:u),m+=i,m===y?(++u,l=!0,u{"use strict";n.d(Ue,{e:()=>M,O:()=>_});var e=n(467),o=n(4824),r=n(7834),t=n(9909),A=n(8382),y=n(9283),c=n(5821);function O(m){return{...m,bottomLeft:(0,t.NT)(m.bottomLeft,[0,0,0]),topRight:(0,t.NT)(m.topRight,m.scalarField.space.dimensions)}}function b(m){return{dX:m.topRight[0]-m.bottomLeft[0],dY:m.topRight[1]-m.bottomLeft[1],dZ:m.topRight[2]-m.bottomLeft[2]}}function _(m,u){return o.YZ.create("Marching Cubes Mesh",function(){var d=(0,e.A)(function*(s){const C=O(m),{dX:h,dY:a,dZ:S}=b(C),R=function i(m,u){const d=Math.min(65536,4*m),s=A.Gm.create(Float32Array,3,m,u&&u.vertexBuffer.ref.value),C=A.Gm.create(Float32Array,3,m,u&&u.normalBuffer.ref.value),h=A.Gm.create(Float32Array,1,m,u&&u.groupBuffer.ref.value),a=A.Gm.create(Uint32Array,3,d,u&&u.indexBuffer.ref.value);let S=0,D=0;return{addVertex:(R,f,p)=>(++S,A.Gm.add3(s,R,f,p)),addNormal:(R,f,p)=>{A.Gm.add3(C,R,f,p)},addGroup:R=>{A.Gm.add(h,R)},addTriangle:(R,f,p,E)=>{const T=R[f],L=R[p],w=R[E];T>=0&&L>=0&&w>=0&&(++D,A.Gm.add3(a,T,L,w))},get:()=>{const R=A.Gm.compact(s,!0),f=A.Gm.compact(C,!0),p=A.Gm.compact(a,!0),E=A.Gm.compact(h,!0);return y.e.create(R,p,f,E,S,D,u)}}}(Math.min(262144,Math.max(h*a*S/32,1024)),u);return yield new I(s,R,C).run(),R.get()});return function(s){return d.apply(this,arguments)}}())}function M(m,u){return o.YZ.create("Marching Cubes Lines",function(){var d=(0,e.A)(function*(s){const C=O(m),{dX:h,dY:a,dZ:S}=b(C),R=function v(m,u){const d=A.Gm.create(Float32Array,3,m),s=A.Gm.create(Float32Array,1,m),C=A.Gm.create(Float32Array,2,m);let h=0;return{addVertex:(a,S,D)=>A.Gm.add3(d,a,S,D),addNormal:()=>t.lQ,addGroup:a=>{A.Gm.add(s,a)},addTriangle:(a,S,D,R,f)=>{a[S]>=0&&a[D]>=0&&a[R]>=0&&(r.my[S][D]&f&&(++h,A.Gm.add2(C,a[S],a[D])),r.my[D][R]&f&&(++h,A.Gm.add2(C,a[D],a[R])),r.my[S][R]&f&&(++h,A.Gm.add2(C,a[S],a[R])))},get:()=>{const a=A.Gm.compact(d,!0),S=A.Gm.compact(C,!0),D=A.Gm.compact(s,!0),R=c.d.create(h,h/10,u);for(let f=0;f0)return C-1;const h=this.scalarField,a=this.scalarFieldGet,S=r.WH[u],D=S.a,R=S.b,f=D.i+this.i,p=D.j+this.j,E=D.k+this.k,T=R.i+this.i,L=R.j+this.j,w=R.k+this.k,Q=a(h,f,p,E),G=a(h,T,L,w),V=(this.isoLevel-Q)/(Q-G);if(this.idField){const j=this.idFieldGet(this.idField,f,p,E),Z=this.idFieldGet(this.idField,T,L,w);let q=V<.5?j:Z;if(-1===q&&(q=V<.5?Z:j),-2===q)return-1;this.builder.addGroup(q)}else this.builder.addGroup(0);const U=this.builder.addVertex(f+V*(f-T),p+V*(p-L),E+V*(E-w));this.verticesOnEdges[s]=U+1;const N=a(h,Math.max(0,f-1),p,E)-a(h,Math.min(this.nX-1,f+1),p,E),k=a(h,f,Math.max(0,p-1),E)-a(h,f,Math.min(this.nY-1,p+1),E),H=a(h,f,p,Math.max(0,E-1))-a(h,f,p,Math.min(this.nZ,E+1)),te=N+V*(N-(a(h,Math.max(0,T-1),L,w)-a(h,Math.min(this.nX-1,T+1),L,w))),de=k+V*(k-(a(h,T,Math.max(0,L-1),w)-a(h,T,Math.min(this.nY-1,L+1),w))),ye=H+V*(H-(a(h,T,L,Math.max(0,w-1))-a(h,T,L,Math.min(this.nZ-1,w+1))));return this.isoLevel>=0?this.builder.addNormal(te,de,ye):this.builder.addNormal(-te,-de,-ye),U}constructor(u,d){this.builder=u,this.vertList=[0,0,0,0,0,0,0,0,0,0,0,0],this.i=0,this.j=0,this.k=0;const s=d.scalarField.space.dimensions;this.nX=s[0],this.nY=s[1],this.nZ=s[2],this.isoLevel=d.isoLevel,this.scalarFieldGet=d.scalarField.space.get,this.scalarField=d.scalarField.data,d.idField&&(this.idField=d.idField.data,this.idFieldGet=d.idField.space.get),this.verticesOnEdges=new Int32Array(3*this.nX*this.nY*2)}get(u,d,s){return this.scalarFieldGet(this.scalarField,u,d,s)}processCell(u,d,s,C){let h=0;if(this.get(u,d,s)0&&(this.vertList[0]=this.interpolate(0)),(2&a)>0&&(this.vertList[1]=this.interpolate(1)),(4&a)>0&&(this.vertList[2]=this.interpolate(2)),(8&a)>0&&(this.vertList[3]=this.interpolate(3)),(16&a)>0&&(this.vertList[4]=this.interpolate(4)),(32&a)>0&&(this.vertList[5]=this.interpolate(5)),(64&a)>0&&(this.vertList[6]=this.interpolate(6)),(128&a)>0&&(this.vertList[7]=this.interpolate(7)),(256&a)>0&&(this.vertList[8]=this.interpolate(8)),(512&a)>0&&(this.vertList[9]=this.interpolate(9)),(1024&a)>0&&(this.vertList[10]=this.interpolate(10)),(2048&a)>0&&(this.vertList[11]=this.interpolate(11));const S=r.sE[h];for(let D=0;D=0?this.builder.addTriangle(this.vertList,R,f,p,C):this.builder.addTriangle(this.vertList,p,f,R,C)}}}},7834:(tn,Ue,n)=>{"use strict";function e(_,M,I){return{i:_,j:M,k:I}}function o(_,M){return{a:_,b:M}}n.d(Ue,{Dn:()=>i,IT:()=>v,WH:()=>c,my:()=>b,sE:()=>O});const y=[e(0,0,0),e(1,0,0),e(1,1,0),e(0,1,0),e(0,0,1),e(1,0,1),e(1,1,1),e(0,1,1)],c=[o(y[0],y[1]),o(y[1],y[2]),o(y[2],y[3]),o(y[3],y[0]),o(y[4],y[5]),o(y[5],y[6]),o(y[6],y[7]),o(y[7],y[4]),o(y[0],y[4]),o(y[1],y[5]),o(y[2],y[6]),o(y[3],y[7])],i=[{i:0,j:0,k:0,e:0},{i:1,j:0,k:0,e:1},{i:0,j:1,k:0,e:0},{i:0,j:0,k:0,e:1},{i:0,j:0,k:1,e:0},{i:1,j:0,k:1,e:1},{i:0,j:1,k:1,e:0},{i:0,j:0,k:1,e:1},{i:0,j:0,k:0,e:2},{i:1,j:0,k:0,e:2},{i:1,j:1,k:0,e:2},{i:0,j:1,k:0,e:2}],v=[0,265,515,778,1030,1295,1541,1804,2060,2309,2575,2822,3082,3331,3593,3840,400,153,915,666,1430,1183,1941,1692,2460,2197,2975,2710,3482,3219,3993,3728,560,825,51,314,1590,1855,1077,1340,2620,2869,2111,2358,3642,3891,3129,3376,928,681,419,170,1958,1711,1445,1196,2988,2725,2479,2214,4010,3747,3497,3232,1120,1385,1635,1898,102,367,613,876,3180,3429,3695,3942,2154,2403,2665,2912,1520,1273,2035,1786,502,255,1013,764,3580,3317,4095,3830,2554,2291,3065,2800,1616,1881,1107,1370,598,863,85,348,3676,3925,3167,3414,2650,2899,2137,2384,1984,1737,1475,1226,966,719,453,204,4044,3781,3535,3270,3018,2755,2505,2240,2240,2505,2755,3018,3270,3535,3781,4044,204,453,719,966,1226,1475,1737,1984,2384,2137,2899,2650,3414,3167,3925,3676,348,85,863,598,1370,1107,1881,1616,2800,3065,2291,2554,3830,4095,3317,3580,764,1013,255,502,1786,2035,1273,1520,2912,2665,2403,2154,3942,3695,3429,3180,876,613,367,102,1898,1635,1385,1120,3232,3497,3747,4010,2214,2479,2725,2988,1196,1445,1711,1958,170,419,681,928,3376,3129,3891,3642,2358,2111,2869,2620,1340,1077,1855,1590,314,51,825,560,3728,3993,3219,3482,2710,2975,2197,2460,1692,1941,1183,1430,666,915,153,400,3840,3593,3331,3082,2822,2575,2309,2060,1804,1541,1295,1030,778,515,265,0],O=[[],[0,8,3],[0,1,9],[1,8,3,9,8,1],[1,2,10],[0,8,3,1,2,10],[9,2,10,0,2,9],[2,8,3,2,10,8,10,9,8],[3,11,2],[0,11,2,8,11,0],[1,9,0,2,3,11],[1,11,2,1,9,11,9,8,11],[3,10,1,11,10,3],[0,10,1,0,8,10,8,11,10],[3,9,0,3,11,9,11,10,9],[9,8,10,10,8,11],[4,7,8],[4,3,0,7,3,4],[0,1,9,8,4,7],[4,1,9,4,7,1,7,3,1],[1,2,10,8,4,7],[3,4,7,3,0,4,1,2,10],[9,2,10,9,0,2,8,4,7],[2,10,9,2,9,7,2,7,3,7,9,4],[8,4,7,3,11,2],[11,4,7,11,2,4,2,0,4],[9,0,1,8,4,7,2,3,11],[4,7,11,9,4,11,9,11,2,9,2,1],[3,10,1,3,11,10,7,8,4],[1,11,10,1,4,11,1,0,4,7,11,4],[4,7,8,9,0,11,9,11,10,11,0,3],[4,7,11,4,11,9,9,11,10],[9,5,4],[9,5,4,0,8,3],[0,5,4,1,5,0],[8,5,4,8,3,5,3,1,5],[1,2,10,9,5,4],[3,0,8,1,2,10,4,9,5],[5,2,10,5,4,2,4,0,2],[2,10,5,3,2,5,3,5,4,3,4,8],[9,5,4,2,3,11],[0,11,2,0,8,11,4,9,5],[0,5,4,0,1,5,2,3,11],[2,1,5,2,5,8,2,8,11,4,8,5],[10,3,11,10,1,3,9,5,4],[4,9,5,0,8,1,8,10,1,8,11,10],[5,4,0,5,0,11,5,11,10,11,0,3],[5,4,8,5,8,10,10,8,11],[9,7,8,5,7,9],[9,3,0,9,5,3,5,7,3],[0,7,8,0,1,7,1,5,7],[1,5,3,3,5,7],[9,7,8,9,5,7,10,1,2],[10,1,2,9,5,0,5,3,0,5,7,3],[8,0,2,8,2,5,8,5,7,10,5,2],[2,10,5,2,5,3,3,5,7],[7,9,5,7,8,9,3,11,2],[9,5,7,9,7,2,9,2,0,2,7,11],[2,3,11,0,1,8,1,7,8,1,5,7],[11,2,1,11,1,7,7,1,5],[9,5,8,8,5,7,10,1,3,10,3,11],[5,7,0,5,0,9,7,11,0,1,0,10,11,10,0],[11,10,0,11,0,3,10,5,0,8,0,7,5,7,0],[11,10,5,7,11,5],[10,6,5],[0,8,3,5,10,6],[9,0,1,5,10,6],[1,8,3,1,9,8,5,10,6],[1,6,5,2,6,1],[1,6,5,1,2,6,3,0,8],[9,6,5,9,0,6,0,2,6],[5,9,8,5,8,2,5,2,6,3,2,8],[2,3,11,10,6,5],[11,0,8,11,2,0,10,6,5],[0,1,9,2,3,11,5,10,6],[5,10,6,1,9,2,9,11,2,9,8,11],[6,3,11,6,5,3,5,1,3],[0,8,11,0,11,5,0,5,1,5,11,6],[3,11,6,0,3,6,0,6,5,0,5,9],[6,5,9,6,9,11,11,9,8],[5,10,6,4,7,8],[4,3,0,4,7,3,6,5,10],[1,9,0,5,10,6,8,4,7],[10,6,5,1,9,7,1,7,3,7,9,4],[6,1,2,6,5,1,4,7,8],[1,2,5,5,2,6,3,0,4,3,4,7],[8,4,7,9,0,5,0,6,5,0,2,6],[7,3,9,7,9,4,3,2,9,5,9,6,2,6,9],[3,11,2,7,8,4,10,6,5],[5,10,6,4,7,2,4,2,0,2,7,11],[0,1,9,4,7,8,2,3,11,5,10,6],[9,2,1,9,11,2,9,4,11,7,11,4,5,10,6],[8,4,7,3,11,5,3,5,1,5,11,6],[5,1,11,5,11,6,1,0,11,7,11,4,0,4,11],[0,5,9,0,6,5,0,3,6,11,6,3,8,4,7],[6,5,9,6,9,11,4,7,9,7,11,9],[10,4,9,6,4,10],[4,10,6,4,9,10,0,8,3],[10,0,1,10,6,0,6,4,0],[8,3,1,8,1,6,8,6,4,6,1,10],[1,4,9,1,2,4,2,6,4],[3,0,8,1,2,9,2,4,9,2,6,4],[0,2,4,4,2,6],[8,3,2,8,2,4,4,2,6],[10,4,9,10,6,4,11,2,3],[0,8,2,2,8,11,4,9,10,4,10,6],[3,11,2,0,1,6,0,6,4,6,1,10],[6,4,1,6,1,10,4,8,1,2,1,11,8,11,1],[9,6,4,9,3,6,9,1,3,11,6,3],[8,11,1,8,1,0,11,6,1,9,1,4,6,4,1],[3,11,6,3,6,0,0,6,4],[6,4,8,11,6,8],[7,10,6,7,8,10,8,9,10],[0,7,3,0,10,7,0,9,10,6,7,10],[10,6,7,1,10,7,1,7,8,1,8,0],[10,6,7,10,7,1,1,7,3],[1,2,6,1,6,8,1,8,9,8,6,7],[2,6,9,2,9,1,6,7,9,0,9,3,7,3,9],[7,8,0,7,0,6,6,0,2],[7,3,2,6,7,2],[2,3,11,10,6,8,10,8,9,8,6,7],[2,0,7,2,7,11,0,9,7,6,7,10,9,10,7],[1,8,0,1,7,8,1,10,7,6,7,10,2,3,11],[11,2,1,11,1,7,10,6,1,6,7,1],[8,9,6,8,6,7,9,1,6,11,6,3,1,3,6],[0,9,1,11,6,7],[7,8,0,7,0,6,3,11,0,11,6,0],[7,11,6],[7,6,11],[3,0,8,11,7,6],[0,1,9,11,7,6],[8,1,9,8,3,1,11,7,6],[10,1,2,6,11,7],[1,2,10,3,0,8,6,11,7],[2,9,0,2,10,9,6,11,7],[6,11,7,2,10,3,10,8,3,10,9,8],[7,2,3,6,2,7],[7,0,8,7,6,0,6,2,0],[2,7,6,2,3,7,0,1,9],[1,6,2,1,8,6,1,9,8,8,7,6],[10,7,6,10,1,7,1,3,7],[10,7,6,1,7,10,1,8,7,1,0,8],[0,3,7,0,7,10,0,10,9,6,10,7],[7,6,10,7,10,8,8,10,9],[6,8,4,11,8,6],[3,6,11,3,0,6,0,4,6],[8,6,11,8,4,6,9,0,1],[9,4,6,9,6,3,9,3,1,11,3,6],[6,8,4,6,11,8,2,10,1],[1,2,10,3,0,11,0,6,11,0,4,6],[4,11,8,4,6,11,0,2,9,2,10,9],[10,9,3,10,3,2,9,4,3,11,3,6,4,6,3],[8,2,3,8,4,2,4,6,2],[0,4,2,4,6,2],[1,9,0,2,3,4,2,4,6,4,3,8],[1,9,4,1,4,2,2,4,6],[8,1,3,8,6,1,8,4,6,6,10,1],[10,1,0,10,0,6,6,0,4],[4,6,3,4,3,8,6,10,3,0,3,9,10,9,3],[10,9,4,6,10,4],[4,9,5,7,6,11],[0,8,3,4,9,5,11,7,6],[5,0,1,5,4,0,7,6,11],[11,7,6,8,3,4,3,5,4,3,1,5],[9,5,4,10,1,2,7,6,11],[6,11,7,1,2,10,0,8,3,4,9,5],[7,6,11,5,4,10,4,2,10,4,0,2],[3,4,8,3,5,4,3,2,5,10,5,2,11,7,6],[7,2,3,7,6,2,5,4,9],[9,5,4,0,8,6,0,6,2,6,8,7],[3,6,2,3,7,6,1,5,0,5,4,0],[6,2,8,6,8,7,2,1,8,4,8,5,1,5,8],[9,5,4,10,1,6,1,7,6,1,3,7],[1,6,10,1,7,6,1,0,7,8,7,0,9,5,4],[4,0,10,4,10,5,0,3,10,6,10,7,3,7,10],[7,6,10,7,10,8,5,4,10,4,8,10],[6,9,5,6,11,9,11,8,9],[3,6,11,0,6,3,0,5,6,0,9,5],[0,11,8,0,5,11,0,1,5,5,6,11],[6,11,3,6,3,5,5,3,1],[1,2,10,9,5,11,9,11,8,11,5,6],[0,11,3,0,6,11,0,9,6,5,6,9,1,2,10],[11,8,5,11,5,6,8,0,5,10,5,2,0,2,5],[6,11,3,6,3,5,2,10,3,10,5,3],[5,8,9,5,2,8,5,6,2,3,8,2],[9,5,6,9,6,0,0,6,2],[1,5,8,1,8,0,5,6,8,3,8,2,6,2,8],[1,5,6,2,1,6],[1,3,6,1,6,10,3,8,6,5,6,9,8,9,6],[10,1,0,10,0,6,9,5,0,5,6,0],[0,3,8,5,6,10],[10,5,6],[11,5,10,7,5,11],[11,5,10,11,7,5,8,3,0],[5,11,7,5,10,11,1,9,0],[10,7,5,10,11,7,9,8,1,8,3,1],[11,1,2,11,7,1,7,5,1],[0,8,3,1,2,7,1,7,5,7,2,11],[9,7,5,9,2,7,9,0,2,2,11,7],[7,5,2,7,2,11,5,9,2,3,2,8,9,8,2],[2,5,10,2,3,5,3,7,5],[8,2,0,8,5,2,8,7,5,10,2,5],[9,0,1,5,10,3,5,3,7,3,10,2],[9,8,2,9,2,1,8,7,2,10,2,5,7,5,2],[1,3,5,3,7,5],[0,8,7,0,7,1,1,7,5],[9,0,3,9,3,5,5,3,7],[9,8,7,5,9,7],[5,8,4,5,10,8,10,11,8],[5,0,4,5,11,0,5,10,11,11,3,0],[0,1,9,8,4,10,8,10,11,10,4,5],[10,11,4,10,4,5,11,3,4,9,4,1,3,1,4],[2,5,1,2,8,5,2,11,8,4,5,8],[0,4,11,0,11,3,4,5,11,2,11,1,5,1,11],[0,2,5,0,5,9,2,11,5,4,5,8,11,8,5],[9,4,5,2,11,3],[2,5,10,3,5,2,3,4,5,3,8,4],[5,10,2,5,2,4,4,2,0],[3,10,2,3,5,10,3,8,5,4,5,8,0,1,9],[5,10,2,5,2,4,1,9,2,9,4,2],[8,4,5,8,5,3,3,5,1],[0,4,5,1,0,5],[8,4,5,8,5,3,9,0,5,0,3,5],[9,4,5],[4,11,7,4,9,11,9,10,11],[0,8,3,4,9,7,9,11,7,9,10,11],[1,10,11,1,11,4,1,4,0,7,4,11],[3,1,4,3,4,8,1,10,4,7,4,11,10,11,4],[4,11,7,9,11,4,9,2,11,9,1,2],[9,7,4,9,11,7,9,1,11,2,11,1,0,8,3],[11,7,4,11,4,2,2,4,0],[11,7,4,11,4,2,8,3,4,3,2,4],[2,9,10,2,7,9,2,3,7,7,4,9],[9,10,7,9,7,4,10,2,7,8,7,0,2,0,7],[3,7,10,3,10,2,7,4,10,1,10,0,4,0,10],[1,10,2,8,7,4],[4,9,1,4,1,7,7,1,3],[4,9,1,4,1,7,0,8,1,8,7,1],[4,0,3,7,4,3],[4,8,7],[9,10,8,10,11,8],[3,0,9,3,9,11,11,9,10],[0,1,10,0,10,8,8,10,11],[3,1,10,11,3,10],[1,2,11,1,11,9,9,11,8],[3,0,9,3,9,11,1,2,9,2,11,9],[0,2,11,8,0,11],[3,2,11],[2,3,8,2,8,10,10,8,9],[9,10,2,0,9,2],[2,3,8,2,8,10,0,1,8,1,10,8],[1,10,2],[1,3,8,9,1,8],[0,9,1],[0,3,8],[]],b=[[0,4,4,4,2,0,0,0,2,2,0,0],[4,0,4,4,0,8,0,0,0,8,8,0],[4,4,0,4,0,0,8,0,0,0,8,8],[4,4,4,0,0,0,0,1,1,0,0,1],[2,0,0,0,0,8,8,8,2,2,0,0],[0,8,0,0,8,0,8,8,0,8,8,0],[0,0,8,0,8,8,0,8,0,0,8,8],[0,0,0,1,8,8,8,0,1,0,0,1],[2,0,0,1,2,0,0,1,0,2,0,1],[2,8,0,0,2,8,0,0,2,0,8,0],[0,8,8,0,0,8,8,0,0,8,0,8],[0,0,8,1,0,0,8,1,1,0,8,0]]},8187:(tn,Ue,n)=>{"use strict";n.d(Ue,{_:()=>xe});var e=n(9421),o=n(4143),r=n(4511),t=n(2897),A=n(9909),y=n(9007),c=n(4951),i=n(9387);const v="\nprecision highp float;\nprecision highp int;\n\n#if __VERSION__ == 100\n precision highp sampler2D;\n uniform sampler2D tTexture;\n#else\n precision highp isampler2D;\n uniform isampler2D tTexture;\n#endif\n\nvoid main(void) {\n #if __VERSION__ == 100\n gl_FragColor = texture2D(tTexture, vec2(0.5));\n #else\n gl_FragColor = ivec4(texture2D(tTexture, vec2(0.5)).r);\n #endif\n}\n";var O=n(8437),b=n(2629);const _={...y.du,tTexture:(0,r.$G)("texture","rgba","float","nearest")},M="histopyramid-sum";const u=new Uint8Array(4),d=new Int32Array(4);var C=n(4490);const h="\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nuniform sampler2D tInputLevel;\n\n// previous level used to evaluate the new level\n#if __VERSION__ == 100\n uniform sampler2D tPreviousLevel;\n#else\n precision highp isampler2D;\n uniform isampler2D tPreviousLevel;\n#endif\n\n// inverted size of the previous level texture.\nuniform float uSize;\nuniform float uTexSize;\nuniform bool uFirst;\n\n#include common\n\nvoid main(void) {\n float k = 0.5 * uSize;\n vec2 position = floor((gl_FragCoord.xy / uTexSize) / uSize) * uSize;\n\n #if __VERSION__ == 100\n float a, b, c, d;\n\n if (uFirst) {\n a = texture2D(tInputLevel, position).r * 255.0;\n b = texture2D(tInputLevel, position + vec2(k, 0.0)).r * 255.0;\n c = texture2D(tInputLevel, position + vec2(0.0, k)).r * 255.0;\n d = texture2D(tInputLevel, position + vec2(k, k)).r * 255.0;\n } else {\n a = unpackRGBToInt(texture2D(tPreviousLevel, position).rgb);\n b = unpackRGBToInt(texture2D(tPreviousLevel, position + vec2(k, 0.0)).rgb);\n c = unpackRGBToInt(texture2D(tPreviousLevel, position + vec2(0.0, k)).rgb);\n d = unpackRGBToInt(texture2D(tPreviousLevel, position + vec2(k, k)).rgb);\n }\n gl_FragColor = vec4(packIntToRGB(a + b + c + d), 1.0);\n #else\n int a, b, c, d;\n\n if (uFirst) {\n a = int(texture2D(tInputLevel, position).r * 255.0);\n b = int(texture2D(tInputLevel, position + vec2(k, 0.0)).r * 255.0);\n c = int(texture2D(tInputLevel, position + vec2(0.0, k)).r * 255.0);\n d = int(texture2D(tInputLevel, position + vec2(k, k)).r * 255.0);\n } else {\n a = texture2D(tPreviousLevel, position).r;\n b = texture2D(tPreviousLevel, position + vec2(k, 0.0)).r;\n c = texture2D(tPreviousLevel, position + vec2(0.0, k)).r;\n d = texture2D(tPreviousLevel, position + vec2(k, k)).r;\n }\n gl_FragColor = ivec4(a + b + c + d);\n #endif\n}\n",a={...y.du,tInputLevel:(0,r.$G)("texture","rgba","float","nearest"),tPreviousLevel:(0,r.$G)("texture","rgba","float","nearest"),uSize:(0,r.w5)("f"),uTexSize:(0,r.w5)("f"),uFirst:(0,r.w5)("b")},S="histogram-pyramid";function f(le,Ae){const Be=Math.pow(2,Ae),Ce=`level${Ae}`,Re=le.isWebGL2?T(Ce,le,"image-int32","alpha","int","nearest"):T(Ce,le,"image-uint8","rgba","ubyte","nearest");Re.define(Be,Be);let ke=function L(le,Ae){return Ae.namedFramebuffers[`${S}-${le}`]}(Ce,le);return ke||(ke=E(Ce,le),Re.attachFramebuffer(ke,0)),{texture:Re,framebuffer:ke}}function E(le,Ae){const Be=`${S}-${le}`;return Ae.namedFramebuffers[Be]||(Ae.namedFramebuffers[Be]=Ae.resources.framebuffer()),Ae.namedFramebuffers[Be]}function T(le,Ae,Be,Ce,Re,ke){const we=`${S}-${le}`;return Ae.namedTextures[we]||(Ae.namedTextures[we]=Ae.resources.texture(Be,Ce,Re,ke)),Ae.namedTextures[we]}function w(le,Ae,Be,Ce){b.g$&&le.timer.mark("createHistogramPyramid");const{gl:Re,state:ke}=le,we=Ae.getWidth();if(we!==Ae.getHeight()||!(0,C.r6)(we))throw new Error("inputTexture must be of square power-of-two size");const Se=Math.ceil(Math.log(we)/Math.log(2)),Ve=Math.pow(2,Se),Ne=Math.pow(2,Se),K=Math.pow(2,Se-1),ne=le.isWebGL2?T("pyramid",le,"image-int32","alpha","int","nearest"):T("pyramid",le,"image-uint8","rgba","ubyte","nearest");ne.define(Ne,K);const be=E("pyramid",le);ne.attachFramebuffer(be,0),ke.viewport(0,0,Ne,K),(0,O.C6)(Re)?Re.clearBufferiv(Re.COLOR,0,[0,0,0,0]):Re.clear(Re.COLOR_BUFFER_BIT);const Te=[];for(let ce=0;ce0&&(A.IQ.update(ie.values.tPreviousLevel,Te[Se-ce].texture),ie.update()),ke.currentRenderItemId=-1,ke.viewport(0,0,ge,ge),ke.scissor(0,0,ge,ge),(0,O.C6)(Re)?Re.clearBufferiv(Re.COLOR,0,[0,0,0,0]):Re.clear(Re.COLOR_BUFFER_BIT),ke.scissor(0,0,Ce[0],Ce[1]),ie.render(),ne.bind(0),Re.copyTexSubImage2D(Re.TEXTURE_2D,0,ue,0,0,0,ge,ge),ne.unbind(0),ue+=ge}Re.finish(),b.g$&&le.timer.markEnd("createHistogramPyramid");const re=Math.max(1,function s(le,Ae){b.g$&&le.timer.mark("getHistopyramidSum");const{gl:Be,state:Ce,resources:Re}=le,ke=function I(le,Ae){return le.namedComputeRenderables[M]?(A.IQ.update(le.namedComputeRenderables[M].values.tTexture,Ae),le.namedComputeRenderables[M].update()):le.namedComputeRenderables[M]=function l(le,Ae){const Be={...y.OM,tTexture:A.IQ.create(Ae)},Ce={..._},Re=(0,t.NG)("sum",i.e,v,{},{0:"ivec4"}),ke=(0,o.$h)(le,"triangles",Re,Ce,Be);return(0,e._)(ke,Be)}(le,Ae),le.namedComputeRenderables[M]}(le,Ae);le.state.currentRenderItemId=-1,le.namedFramebuffers[M]||(le.namedFramebuffers[M]=Re.framebuffer());const we=le.namedFramebuffers[M];return le.namedTextures[M]||(le.namedTextures[M]=(0,O.C6)(Be)?Re.texture("image-int32","rgba","int","nearest"):Re.texture("image-uint8","rgba","ubyte","nearest"),le.namedTextures[M].define(1,1)),le.namedTextures[M].attachFramebuffer(we,0),function m(le){const{gl:Ae,state:Be}=le;Be.disable(Ae.CULL_FACE),Be.disable(Ae.BLEND),Be.disable(Ae.DEPTH_TEST),Be.disable(Ae.SCISSOR_TEST),Be.depthMask(!1),Be.colorMask(!0,!0,!0,!0),Be.clearColor(0,0,0,0)}(le),Ce.viewport(0,0,1,1),ke.render(),Be.finish(),le.readPixels(0,0,1,1,(0,O.C6)(Be)?d:u),le.unbindFramebuffer(),b.g$&&le.timer.markEnd("getHistopyramidSum"),(0,O.C6)(Be)?d[0]:(0,c.OK)(u[0],u[1],u[2])}(le,Te[0].texture));return{pyramidTex:ne,count:re,height:Math.ceil(re/Math.pow(2,Se)),levels:Se,scale:Be}}var Q=n(7834),G=n(3784);let V,N;function U(){if(void 0!==V)return V;V=(0,G.xg)(256,1,Uint8Array);const{array:le}=V;for(let Ae=0,Be=Q.sE.length;Ae{"use strict";n.d(Ue,{Wp:()=>O,du:()=>b,OM:()=>_,_0:()=>l}),n(4648);var o=n(9909),r=n(4511),t=n(4369),A=n(2897),c=n(9387),i=n(4143),v=n(9421);const O=new Float32Array([1,1,-1,1,-1,-1,-1,-1,1,-1,1,1]),b={drawCount:(0,r.Xb)("number"),instanceCount:(0,r.Xb)("number"),aPosition:(0,r.Yz)("float32",2,0),uQuadScale:(0,r.w5)("v2")},_={drawCount:o.IQ.create(6),instanceCount:o.IQ.create(1),aPosition:o.IQ.create(O),uQuadScale:o.IQ.create(t.ZY.create(1,1))},M={...b,tColor:(0,r.$G)("texture","rgba","ubyte","nearest"),uTexSize:(0,r.w5)("v2")},I=(0,A.NG)("copy",c.e,"\nprecision highp float;\nprecision highp sampler2D;\n\nuniform sampler2D tColor;\nuniform vec2 uTexSize;\n\nvoid main() {\n vec2 coords = gl_FragCoord.xy / uTexSize;\n gl_FragColor = texture2D(tColor, coords);\n}\n");function l(a,S){const D={..._,tColor:o.IQ.create(S),uTexSize:o.IQ.create(t.ZY.create(S.getWidth(),S.getHeight()))},R={...M},f=(0,i.$h)(a,"triangles",I,R,D);return(0,v._)(f,D)}},8353:(tn,Ue,n)=>{"use strict";n.d(Ue,{o:()=>E,R2:()=>T,Q0:()=>p});var e=n(7778),o=n(9421),r=n(4143),t=n(4511),A=n(2897),y=n(9909);const c={...t.DQ,aPosition:(0,t.Yz)("float32",3,0),elements:(0,t.Xs)("uint32"),uBboxMin:(0,t.w5)("v3"),uBboxMax:(0,t.w5)("v3"),uBboxSize:(0,t.w5)("v3"),uMaxSteps:(0,t.w5)("i"),uStepScale:(0,t.w5)("f"),uJumpLength:(0,t.w5)("f"),uTransform:(0,t.w5)("m4"),uGridDim:(0,t.w5)("v3"),tTransferTex:(0,t.$G)("image-uint8","alpha","ubyte","linear"),uTransferScale:(0,t.w5)("f","material"),dGridTexType:(0,t.$F)("string",["2d","3d"]),uGridTexDim:(0,t.w5)("v3"),tGridTex:(0,t.$G)("texture","rgba","ubyte","linear"),uGridStats:(0,t.w5)("v4"),uCellDim:(0,t.w5)("v3"),uCartnToUnit:(0,t.w5)("m4"),uUnitToCartn:(0,t.w5)("m4"),dPackedGroup:(0,t.$F)("boolean"),dAxisOrder:(0,t.$F)("string",["012","021","102","120","201","210"]),dIgnoreLight:(0,t.$F)("boolean"),dXrayShaded:(0,t.$F)("string",["off","on","inverted"])},v={...t.DQ,aGroup:(0,t.Yz)("float32",1,0),aPosition:(0,t.Yz)("float32",3,0),aNormal:(0,t.Yz)("float32",3,0),elements:(0,t.Xs)("uint32"),dVaryingGroup:(0,t.$F)("boolean"),dFlatShaded:(0,t.$F)("boolean"),uDoubleSided:(0,t.w5)("b","material"),dFlipSided:(0,t.$F)("boolean"),dIgnoreLight:(0,t.$F)("boolean"),dXrayShaded:(0,t.$F)("string",["off","on","inverted"]),dTransparentBackfaces:(0,t.$F)("string",["off","on","opaque"]),uBumpFrequency:(0,t.w5)("f","material"),uBumpAmplitude:(0,t.w5)("f","material"),meta:(0,t.Xb)("unknown")},b={...t.DQ,...t.Hw,aGroup:(0,t.Yz)("float32",1,0),aPosition:(0,t.Yz)("float32",3,0),dPointSizeAttenuation:(0,t.$F)("boolean"),dPointStyle:(0,t.$F)("string",["square","circle","fuzzy"])},M={...t.DQ,...t.Hw,aGroup:(0,t.Yz)("float32",1,0),aMapping:(0,t.Yz)("float32",2,0),aStart:(0,t.Yz)("float32",3,0),aEnd:(0,t.Yz)("float32",3,0),elements:(0,t.Xs)("uint32"),dLineSizeAttenuation:(0,t.$F)("boolean"),uDoubleSided:(0,t.w5)("b","material"),dFlipSided:(0,t.$F)("boolean")},l={...t.DQ,...t.Hw,uTexDim:(0,t.w5)("v2"),tPositionGroup:(0,t.$G)("image-float32","rgba","float","nearest"),padding:(0,t.Xb)("number"),uDoubleSided:(0,t.w5)("b","material"),dIgnoreLight:(0,t.$F)("boolean"),dXrayShaded:(0,t.$F)("string",["off","on","inverted"]),dTransparentBackfaces:(0,t.$F)("string",["off","on","opaque"]),dSolidInterior:(0,t.$F)("boolean"),dClipPrimitive:(0,t.$F)("boolean"),dApproximate:(0,t.$F)("boolean"),uAlphaThickness:(0,t.w5)("f"),uBumpFrequency:(0,t.w5)("f","material"),uBumpAmplitude:(0,t.w5)("f","material"),lodLevels:(0,t.Xb)("unknown"),centerBuffer:(0,t.Xb)("float32"),groupBuffer:(0,t.Xb)("float32")},u={...t.DQ,...t.Hw,aGroup:(0,t.Yz)("float32",1,0),aPosition:(0,t.Yz)("float32",3,0),aMapping:(0,t.Yz)("float32",2,0),aDepth:(0,t.Yz)("float32",1,0),elements:(0,t.Xs)("uint32"),aTexCoord:(0,t.Yz)("float32",2,0),tFont:(0,t.$G)("image-uint8","alpha","ubyte","linear"),padding:(0,t.Xb)("number"),uBorderWidth:(0,t.w5)("f","material"),uBorderColor:(0,t.w5)("v3","material"),uOffsetX:(0,t.w5)("f","material"),uOffsetY:(0,t.w5)("f","material"),uOffsetZ:(0,t.w5)("f","material"),uBackgroundColor:(0,t.w5)("v3","material"),uBackgroundOpacity:(0,t.w5)("f","material")},s={...t.DQ,uGeoTexDim:(0,t.w5)("v2","buffered"),tPosition:(0,t.$G)("texture","rgb","float","nearest"),tGroup:(0,t.$G)("texture","alpha","float","nearest"),tNormal:(0,t.$G)("texture","rgb","float","nearest"),dVaryingGroup:(0,t.$F)("boolean"),dFlatShaded:(0,t.$F)("boolean"),uDoubleSided:(0,t.w5)("b","material"),dFlipSided:(0,t.$F)("boolean"),dIgnoreLight:(0,t.$F)("boolean"),dXrayShaded:(0,t.$F)("string",["off","on","inverted"]),dTransparentBackfaces:(0,t.$F)("string",["off","on","opaque"]),uBumpFrequency:(0,t.w5)("f","material"),uBumpAmplitude:(0,t.w5)("f","material"),meta:(0,t.Xb)("unknown")};var h=n(7135);const a={...t.DQ,aGroup:(0,t.Yz)("float32",1,0),aPosition:(0,t.Yz)("float32",3,0),aUv:(0,t.Yz)("float32",2,0),elements:(0,t.Xs)("uint32"),uImageTexDim:(0,t.w5)("v2"),tImageTex:(0,t.$G)("image-uint8","rgba","ubyte","nearest"),tGroupTex:(0,t.$G)("image-uint8","rgba","ubyte","nearest"),dInterpolation:(0,t.$F)("string",h.Bd)},D={...t.DQ,...t.Hw,aGroup:(0,t.Yz)("float32",1,0),aStart:(0,t.Yz)("float32",3,0),aEnd:(0,t.Yz)("float32",3,0),aMapping:(0,t.Yz)("float32",3,0),aScale:(0,t.Yz)("float32",1,0),aCap:(0,t.Yz)("float32",1,0),aColorMode:(0,t.Yz)("float32",1,0),elements:(0,t.Xs)("uint32"),padding:(0,t.Xb)("number"),uDoubleSided:(0,t.w5)("b","material"),dIgnoreLight:(0,t.$F)("boolean"),dXrayShaded:(0,t.$F)("string",["off","on","inverted"]),dTransparentBackfaces:(0,t.$F)("string",["off","on","opaque"]),dSolidInterior:(0,t.$F)("boolean"),uBumpFrequency:(0,t.w5)("f","material"),uBumpAmplitude:(0,t.w5)("f","material"),dDualColor:(0,t.$F)("boolean")},f=(0,e.q)(0,2147483647),p=(0,e.q)(0,2147483647);function E(L,w,Q,G){return{id:f(),type:L,values:w,state:Q,materialId:G}}function T(L,w,Q){switch(w.type){case"mesh":return function O(L,w,Q,G,V,U){const N={...t.X9,...t.YU,...t.rG,...v},k={uObjectId:y.IQ.create(w)},$=(0,r.vC)(L,"triangles",A.uO,N,{...Q,...k},V,U);return(0,o.R)($,Q,G)}(L,w.id,w.values,w.state,w.materialId,Q);case"points":return function _(L,w,Q,G,V,U){const N={...t.X9,...t.YU,...t.rG,...b},k={uObjectId:y.IQ.create(w)},$=(0,r.vC)(L,"points",A.g2,N,{...Q,...k},V,U);return(0,o.R)($,Q,G)}(L,w.id,w.values,w.state,w.materialId,Q);case"spheres":return function m(L,w,Q,G,V,U){const N={...t.X9,...t.YU,...t.rG,...l},k={uObjectId:y.IQ.create(w)},$=(0,r.vC)(L,"triangles",A.n5,N,{...Q,...k},V,U);return(0,o.R)($,Q,G)}(L,w.id,w.values,w.state,w.materialId,Q);case"cylinders":return function R(L,w,Q,G,V,U){const N={...t.X9,...t.YU,...t.rG,...D},k={uObjectId:y.IQ.create(w)},$=(0,r.vC)(L,"triangles",A.UT,N,{...Q,...k},V,U);return(0,o.R)($,Q,G)}(L,w.id,w.values,w.state,w.materialId,Q);case"text":return function d(L,w,Q,G,V,U){const N={...t.X9,...t.YU,...t.rG,...u},k={uObjectId:y.IQ.create(w)},$=(0,r.vC)(L,"triangles",A.G7,N,{...Q,...k},V,U);return(0,o.R)($,Q,G)}(L,w.id,w.values,w.state,w.materialId,Q);case"lines":return function I(L,w,Q,G,V,U){const N={...t.X9,...t.YU,...t.rG,...M},k={uObjectId:y.IQ.create(w)},$=(0,r.vC)(L,"triangles",A.wv,N,{...Q,...k},V,U);return(0,o.R)($,Q,G)}(L,w.id,w.values,w.state,w.materialId,Q);case"direct-volume":return function i(L,w,Q,G,V,U){const N={...t.X9,...t.YU,...t.rG,...c};L.isWebGL2||(N.uMaxSteps=(0,t.$F)("number"));const k={uObjectId:y.IQ.create(w)},$=(0,r.vC)(L,"triangles",A.m5,N,{...Q,...k},V,U);return(0,o.R)($,Q,G)}(L,w.id,w.values,w.state,w.materialId,Q);case"image":return function S(L,w,Q,G,V,U){const N={...t.X9,...t.YU,...t.rG,...a},k={uObjectId:y.IQ.create(w)},$=(0,r.vC)(L,"triangles",A.u3,N,{...Q,...k},V,U);return(0,o.R)($,Q,G)}(L,w.id,w.values,w.state,w.materialId,Q);case"texture-mesh":return function C(L,w,Q,G,V,U){const N={...t.X9,...t.YU,...t.rG,...s},k={uObjectId:y.IQ.create(w)},$=(0,r.vC)(L,"triangles",A.uO,N,{...Q,...k},V,U);return(0,o.R)($,Q,G)}(L,w.id,w.values,w.state,w.materialId,Q)}throw new Error("unsupported type")}},9421:(tn,Ue,n)=>{"use strict";n.d(Ue,{R:()=>I,_:()=>l});var e=n(9909),o=n(7778),r=n(127),t=n(9137),A=n(9457),y=n(5384),c=n(8599),i=n(2629);const v=A.i.distanceToPoint,O=t.Q.intersectsSphere3D,b=y.f8.fromArray,_=(0,o.q)();function M(m,u){return u&&u.instanceCounts.length>=m?u:{firsts:new Int32Array(m),counts:new Int32Array(m),offsets:new Int32Array(m),instanceCounts:new Int32Array(m),baseVertices:new Int32Array(m),baseInstances:new Uint32Array(m),count:0,uniforms:[]}}function I(m,u,d){const s=_();let C=M(0);const h=[];let a=!1,S=-1;const D=(0,y.f8)(),R=()=>{var f;const p=null===(f=u.lodLevels)||void 0===f?void 0:f.ref.value;if(p&&p.length>0){const{cellCount:E}=u.instanceGrid.ref.value;h.length=p.length;for(let T=0,L=p.length;T{var L,w;if(a=!1,0===u.drawCount.ref.value||0===u.instanceCount.ref.value||u.instanceGrid.ref.value.cellSize<=1)return;const{cellOffsets:Q,cellSpheres:G,cellCount:V,batchOffsets:U,batchSpheres:N,batchCount:k,batchCell:H,batchSize:$}=u.instanceGrid.ref.value,[J,W]=u.uLod.ref.value,te=0!==J||0!==W,de=2*$,ye=null===(L=u.lodLevels)||void 0===L?void 0:L.ref.value;if(ye&&ye.length>0){if((null===(w=u.lodLevels)||void 0===w?void 0:w.ref.version)!==S)R();else for(let j=0,Z=ye.length;jW))i.g$&&(T.culled.lod+=Q[H[q-1]+1]-Q[H[Z]]);else if(O(p,D))if(null!==E&&E(D))i.g$&&(T.culled.occlusion+=Q[H[q-1]+1]-Q[H[Z]]);else for(let g=Z;gW))i.g$&&(T.culled.lod+=Ae);else if(O(p,D))if(null!==E&&Be-D.radiusye[Ce][1])continue;const ke=h[Ce],we=ke.count;we>0&&ke.baseInstances[we-1]+ke.instanceCounts[we-1]===xe&&ke.counts[we-1]===ye[Ce][3]?ke.instanceCounts[we-1]+=Ae:(ke.counts[we]=ye[Ce][3],ke.instanceCounts[we]=Ae,ke.baseInstances[we]=xe,ke.count+=1)}else i.g$&&(T.culled.frustum+=Ae)}else i.g$&&(T.culled.frustum+=Q[H[q-1]+1]-Q[H[Z]])}}else{C=M(V,C);const{baseInstances:j,instanceCounts:Z,counts:q}=C;let Y=0;for(let ee=0;eeW){i.g$&&(T.culled.lod+=Q[H[_e-1]+1]-Q[H[g]]);continue}}if(!O(p,D)){i.g$&&(T.culled.frustum+=Q[H[_e-1]+1]-Q[H[g]]);continue}if(null!==E&&E(D)){i.g$&&(T.culled.occlusion+=Q[H[_e-1]+1]-Q[H[g]]);continue}for(let le=g;le<_e;++le){const Ae=H[le],Be=Q[Ae],Re=Q[Ae+1]-Be;if(0===Re)continue;b(D,G,4*Ae);const ke=v(f,D.center);te&&(ke+D.radiusW)?i.g$&&(T.culled.lod+=Re):O(p,D)?null!==E&&ke-D.radius0&&j[Y-1]+Z[Y-1]===Be?Z[Y-1]+=Re:(q[Y]=u.drawCount.ref.value,Z[Y]=Re,j[Y]=Be,Y+=1):i.g$&&(T.culled.frustum+=Re)}}}C.count=Y,h.length=1,h[0]=C,h[0].uniforms.length=0}a=!0},uncull:()=>{a=!1},render:(f,p)=>{u.uAlpha&&u.alpha&&e.IQ.updateIfChanged(u.uAlpha,(0,r.qE)(u.alpha.ref.value*d.alphaFactor,0,1)),m.render(f,p,a?h:void 0)},getProgram:f=>m.getProgram(f),setTransparency:f=>m.setTransparency(f),update:()=>{m.update(),R()},dispose:()=>m.destroy()}}function l(m,u){return{id:_(),values:u,render:()=>m.render("compute",0),update:()=>m.update(),dispose:()=>m.destroy()}}},4511:(tn,Ue,n)=>{"use strict";function e(h,a){const S={},D={},R={},f={},p={},E={},T={};return Object.keys(h).forEach(L=>{const w=h[L];"attribute"===w.type&&(S[L]=a[L]),"define"===w.type&&(D[L]=a[L]),"texture"===w.type&&void 0!==a[L]&&("material"===w.variant?f[L]=a[L]:R[L]=a[L]),"uniform"===w.type&&void 0!==a[L]&&("material"===w.variant?E[L]=a[L]:"buffered"===w.variant?T[L]=a[L]:p[L]=a[L])}),{attributeValues:S,defineValues:D,textureValues:R,materialTextureValues:f,uniformValues:p,materialUniformValues:E,bufferedUniformValues:T}}function o(h){const a={};return Object.keys(h).forEach(S=>{a[S]=h[S].ref.version}),a}function r(h,a,S){return{type:"attribute",kind:h,itemSize:a,divisor:S}}function t(h,a){return{type:"uniform",kind:h,variant:a}}function A(h,a,S,D,R){return{type:"texture",kind:h,format:a,dataType:S,filter:D,variant:R}}function y(h){return{type:"elements",kind:h}}function c(h,a){return{type:"define",kind:h,options:a}}function i(h){return{type:"value",kind:h}}n.d(Ue,{$F:()=>c,$G:()=>A,DQ:()=>C,Hw:()=>M,X9:()=>v,Xb:()=>i,Xs:()=>y,YU:()=>O,Yz:()=>r,fb:()=>o,rG:()=>b,tC:()=>e,w5:()=>t});const v={uDrawId:t("i"),uModel:t("m4"),uView:t("m4"),uInvView:t("m4"),uModelView:t("m4"),uInvModelView:t("m4"),uProjection:t("m4"),uInvProjection:t("m4"),uModelViewProjection:t("m4"),uInvModelViewProjection:t("m4"),uIsOrtho:t("f"),uPixelRatio:t("f"),uViewport:t("v4"),uViewOffset:t("v2"),uDrawingBufferSize:t("v2"),uCameraPosition:t("v3"),uCameraDir:t("v3"),uCameraPlane:t("v4"),uNear:t("f"),uFar:t("f"),uFog:t("b"),uFogNear:t("f"),uFogFar:t("f"),uFogColor:t("v3"),uTransparentBackground:t("b"),uLightDirection:t("v3[]"),uLightColor:t("v3[]"),uAmbientColor:t("v3"),uPickingAlphaThreshold:t("f"),uInteriorDarkening:t("f"),uInteriorColorFlag:t("b"),uInteriorColor:t("v3"),uHighlightColor:t("v3"),uSelectColor:t("v3"),uDimColor:t("v3"),uHighlightStrength:t("f"),uSelectStrength:t("f"),uDimStrength:t("f"),uMarkerPriority:t("i"),uMarkerAverage:t("f"),uXrayEdgeFalloff:t("f"),uExposure:t("f"),uRenderMask:t("i"),uMarkingDepthTest:t("b"),uMarkingType:t("i"),uPickType:t("i")},O={tDepth:A("texture","depth","ushort","nearest"),tDpoitDepth:A("texture","rg","float","nearest"),tDpoitFrontColor:A("texture","rgba","float","nearest"),tDpoitBackColor:A("texture","rgba","float","nearest")},b={uObjectId:t("i")},_={uColor:t("v3","material"),uColorTexDim:t("v2"),uColorGridDim:t("v3"),uColorGridTransform:t("v4"),tColor:A("image-uint8","rgb","ubyte","nearest"),tPalette:A("image-uint8","rgb","ubyte","nearest"),tColorGrid:A("texture","rgb","ubyte","linear"),dColorType:c("string",["uniform","attribute","instance","group","groupInstance","vertex","vertexInstance","volume","volumeInstance","direct"]),dUsePalette:c("boolean")},M={uSize:t("f","material"),uSizeTexDim:t("v2"),tSize:A("image-uint8","rgb","ubyte","nearest"),dSizeType:c("string",["uniform","attribute","instance","group","groupInstance"]),uSizeFactor:t("f","material")},I={uMarker:t("f"),uMarkerTexDim:t("v2"),tMarker:A("image-uint8","alpha","ubyte","nearest"),markerAverage:i("number"),markerStatus:i("number"),dMarkerType:c("string",["instance","groupInstance"])},l={uOverpaintTexDim:t("v2"),tOverpaint:A("image-uint8","rgba","ubyte","nearest"),dOverpaint:c("boolean"),uOverpaintGridDim:t("v3"),uOverpaintGridTransform:t("v4"),tOverpaintGrid:A("texture","rgba","ubyte","linear"),dOverpaintType:c("string",["instance","groupInstance","volumeInstance"]),uOverpaintStrength:t("f","material")},m={uTransparencyTexDim:t("v2"),tTransparency:A("image-uint8","alpha","ubyte","nearest"),dTransparency:c("boolean"),transparencyAverage:i("number"),uTransparencyGridDim:t("v3"),uTransparencyGridTransform:t("v4"),tTransparencyGrid:A("texture","alpha","ubyte","linear"),dTransparencyType:c("string",["instance","groupInstance","volumeInstance"]),uTransparencyStrength:t("f","material")},u={uEmissiveTexDim:t("v2"),tEmissive:A("image-uint8","alpha","ubyte","nearest"),dEmissive:c("boolean"),emissiveAverage:i("number"),uEmissiveGridDim:t("v3"),uEmissiveGridTransform:t("v4"),tEmissiveGrid:A("texture","alpha","ubyte","linear"),dEmissiveType:c("string",["instance","groupInstance","volumeInstance"]),uEmissiveStrength:t("f","material")},d={uSubstanceTexDim:t("v2"),tSubstance:A("image-uint8","rgba","ubyte","nearest"),dSubstance:c("boolean"),uSubstanceGridDim:t("v3"),uSubstanceGridTransform:t("v4"),tSubstanceGrid:A("texture","rgba","ubyte","linear"),dSubstanceType:c("string",["instance","groupInstance","volumeInstance"]),uSubstanceStrength:t("f","material")},s={uClippingTexDim:t("v2"),tClipping:A("image-uint8","alpha","ubyte","nearest"),dClipping:c("boolean"),dClippingType:c("string",["instance","groupInstance"])},C={dGeometryType:c("string",["cylinders","directVolume","image","lines","mesh","points","spheres","text","textureMesh"]),..._,...I,...l,...m,...u,...d,...s,dLightCount:c("number"),dColorMarker:c("boolean"),dClipObjectCount:c("number"),dClipVariant:c("string",["instance","pixel"]),uClipObjectType:t("i[]","material"),uClipObjectInvert:t("b[]","material"),uClipObjectPosition:t("v3[]","material"),uClipObjectRotation:t("v4[]","material"),uClipObjectScale:t("v3[]","material"),aInstance:r("float32",1,1),aTransform:r("float32",16,1),uAlpha:t("f","material"),uMetalness:t("f","material"),uRoughness:t("f","material"),uBumpiness:t("f","material"),uEmissive:t("f","material"),uVertexCount:t("i"),uInstanceCount:t("i"),uGroupCount:t("i"),uInvariantBoundingSphere:t("v4"),uLod:t("v4"),drawCount:i("number"),instanceCount:i("number"),alpha:i("number"),matrix:i("m4"),transform:i("float32"),extraTransform:i("float32"),hasReflection:i("boolean"),instanceGranularity:i("boolean"),boundingSphere:i("sphere"),invariantBoundingSphere:i("sphere"),instanceGrid:i("instanceGrid")}},3784:(tn,Ue,n)=>{"use strict";n.d(Ue,{Ax:()=>h,sL:()=>s,xg:()=>i});var e=n(5384),o=n(4369),r=n(7136);n(6115);const A=o.eB.fromArray,y=o.eB.transformMat4Offset;function i(S,D,R,f){const{length:p,width:E,height:T}=function c(S,D){S=Math.max(S,2);const R=Math.sqrt(S);let f=Math.ceil(R);f+=(D-f%D)%D;const p=f>0?Math.ceil(S/f):0;return{width:f,height:p,length:f*p*D}}(S,D);return{array:f=f&&f.length>=p?f:new R(p),width:E,height:T}}const l=(0,o.eB)(),m=new r.Z("14"),u=new r.Z("98");function d(S){return S>1e5?m:u}function s(S,D,R){const f=3*R,p=d(D);p.reset();for(let T=0,L=3*D;T{"use strict";n.d(Ue,{Z:()=>l});var r,e=n(8353),o=n(4369);!function(m){m.create=function u(){return{view:o.$I.identity(),position:o.eB.create(0,0,0),direction:o.eB.create(0,0,-1),up:o.eB.create(0,1,0)}};const d=o.eB.zero();m.update=function s(C){o.eB.add(d,C.position,C.direction),o.$I.lookAt(C.view,C.position,d,C.up)}}(r||(r={}));var t=n(8184),A=n(9677);class y{constructor(){this.removeList=(0,A.wl)(),this.removeMap=new Map,this.addList=(0,A.wl)(),this.addMap=new Map}get isEmpty(){return 0===this.removeList.count&&0===this.addList.count}get size(){return this.removeMap.size+this.addMap.size}add(u){if(this.removeMap.has(u)){const s=this.removeMap.get(u);this.removeMap.delete(u),this.removeList.remove(s)}if(this.addMap.has(u))return;const d=this.addList.addLast(u);this.addMap.set(u,d)}remove(u){if(this.addMap.has(u)){const s=this.addMap.get(u);this.addMap.delete(u),this.addList.remove(s)}if(this.removeMap.has(u))return;const d=this.removeList.addLast(u);this.removeMap.set(u,d)}tryGetRemove(){const u=this.removeList.removeFirst();return u&&this.removeMap.delete(u),u}tryGetAdd(){const u=this.addList.removeFirst();return u&&this.addMap.delete(u),u}}var c=n(9854),i=n(6115),v=n(7136),O=n(8382),b=n(127);const _=new v.Z("98");function M(m,u,d){_.reset();for(let s=0,C=m.length;s{s=le;for(let Ae=0,Be=h.length;Aej.add(le),remove:le=>j.remove(le),commit:(le=Number.MAX_VALUE)=>function ye(le){const Ae=(0,c.t)();let Be=0;for(;;){const Ce=j.tryGetRemove();if(!Ce)break;if(te(Ce),++Be%100==0&&(0,c.t)()-Ae>le)return!1}for(;;){const Ce=j.tryGetAdd();if(!Ce)break;if(W(Ce),++Be%100==0&&(0,c.t)()-Ae>le)return!1}return h.sort(I),E=!0,T=!0,L=!0,w=!0,!0}(le),get commitQueueSize(){return j.size},get needsCommit(){return!j.isEmpty},has:le=>C.has(le),clear:()=>{for(let le=0,Ae=h.length;le{C.forEach(le)},get count(){return h.length},get boundingSphere(){return f&&(M(h,a,!1),f=!1),a},get boundingSphereVisible(){return p&&(M(h,S,!0),p=!1),S},get markerAverage(){return E&&(Q=function ee(){if(0===D.length)return 0;let le=0,Ae=0;for(let Be=0,Ce=D.length;Be0?Ae/le:0}(),E=!1),Q},get emissiveAverage(){return T&&(G=function g(){if(0===D.length)return 0;let le=0,Ae=0;for(let Be=0,Ce=D.length;Be0?Ae/le:0}(),T=!1),G},get opacityAverage(){return L&&(V=function _e(){var le,Ae;if(0===D.length)return 0;let Be=0,Ce=0;for(let Re=0,ke=D.length;Re0?Ce/Be:0}(),L=!1),V},get hasOpaque(){return w&&(U=function xe(){var le;if(0===D.length)return!1;for(let Ae=0,Be=D.length;Ae{"use strict";n.d(Ue,{UT:()=>ve,m5:()=>ge,u3:()=>Ie,wv:()=>se,uO:()=>ae,g2:()=>ue,NG:()=>be,n5:()=>re,G7:()=>ce,NB:()=>$e});var e=n(7778),o=n(8437),r=n(1372);const Ae=(0,e.q)(),Be={apply_fog:"\nfloat preFogAlpha = gl_FragColor.a;\nif (uFog) {\n float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\n float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\n float fogAlpha = (1.0 - fogFactor) * gl_FragColor.a;\n if (!uTransparentBackground) {\n if (gl_FragColor.a < 1.0) {\n // transparent objects are blended with background color\n gl_FragColor.a = fogAlpha;\n } else {\n // mix opaque objects with background color\n gl_FragColor.rgb = mix(gl_FragColor.rgb, uFogColor, fogFactor);\n }\n } else {\n #if defined(dRenderVariant_colorDpoit)\n if (gl_FragColor.a < 1.0) {\n // transparent objects are blended with background color\n gl_FragColor.a = fogAlpha;\n } else {\n // opaque objects need to be pre-multiplied alpha\n gl_FragColor.rgb *= fogAlpha;\n gl_FragColor.a = fogAlpha;\n }\n #else\n // pre-multiplied alpha expected for transparent background\n gl_FragColor.rgb *= fogAlpha;\n gl_FragColor.a = fogAlpha;\n #endif\n }\n}\n",apply_interior_color:"\nif (interior) {\n if (uInteriorColorFlag) {\n gl_FragColor.rgb = uInteriorColor;\n } else {\n gl_FragColor.rgb *= 1.0 - uInteriorDarkening;\n }\n\n #ifdef dTransparentBackfaces_opaque\n gl_FragColor.a = 1.0;\n #endif\n}\n",apply_light_color:"\n#if defined(dIgnoreLight)\n #ifdef bumpEnabled\n if (uBumpFrequency > 0.0 && uBumpAmplitude > 0.0 && bumpiness > 0.0) {\n material.rgb += fbm(vModelPosition * uBumpFrequency) * uBumpAmplitude * bumpiness;\n material.rgb -= 0.5 * uBumpAmplitude * bumpiness;\n }\n #endif\n\n #if defined(dRenderVariant_color)\n material.rgb += material.rgb * emissive;\n #endif\n\n gl_FragColor = material;\n#else\n #ifdef bumpEnabled\n if (uBumpFrequency > 0.0 && uBumpAmplitude > 0.0 && bumpiness > 0.0) {\n normal = perturbNormal(-vViewPosition, normal, fbm(vModelPosition * uBumpFrequency), (uBumpAmplitude * bumpiness) / uBumpFrequency);\n }\n #endif\n\n vec4 color = material;\n\n ReflectedLight reflectedLight = ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0));\n\n PhysicalMaterial physicalMaterial;\n physicalMaterial.diffuseColor = color.rgb * (1.0 - metalness);\n #ifdef enabledFragDepth\n physicalMaterial.roughness = min(max(roughness, 0.0525), 1.0);\n #else\n vec3 dxy = max(abs(dFdx(normal)), abs(dFdy(normal)));\n float geometryRoughness = max(max(dxy.x, dxy.y), dxy.z);\n physicalMaterial.roughness = min(max(roughness, 0.0525) + geometryRoughness, 1.0);\n #endif\n physicalMaterial.specularColor = mix(vec3(0.04), color.rgb, metalness);\n physicalMaterial.specularF90 = 1.0;\n\n GeometricContext geometry;\n geometry.position = -vViewPosition;\n geometry.normal = normal;\n geometry.viewDir = normalize(vViewPosition);\n\n IncidentLight directLight;\n #pragma unroll_loop_start\n for (int i = 0; i < dLightCount; ++i) {\n directLight.direction = uLightDirection[i];\n directLight.color = uLightColor[i] * PI; // * PI for punctual light\n RE_Direct_Physical(directLight, geometry, physicalMaterial, reflectedLight);\n }\n #pragma unroll_loop_end\n\n vec3 irradiance = uAmbientColor * PI; // * PI for punctual light\n RE_IndirectDiffuse_Physical(irradiance, geometry, physicalMaterial, reflectedLight);\n\n // indirect specular only metals\n vec3 radiance = uAmbientColor * metalness;\n vec3 iblIrradiance = uAmbientColor * metalness;\n vec3 clearcoatRadiance = vec3(0.0);\n RE_IndirectSpecular_Physical(radiance, iblIrradiance, clearcoatRadiance, geometry, physicalMaterial, reflectedLight);\n\n vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n outgoingLight = clamp(outgoingLight, 0.01, 0.99); // prevents black artifacts on specular highlight with transparent background\n\n #if defined(dRenderVariant_color)\n outgoingLight += color.rgb * emissive;\n #endif\n\n gl_FragColor = vec4(outgoingLight, color.a);\n#endif\n\n#if defined(dXrayShaded_on)\n gl_FragColor.a *= 1.0 - pow(abs(dot(normal, vec3(0.0, 0.0, 1.0))), uXrayEdgeFalloff);\n#elif defined(dXrayShaded_inverted)\n gl_FragColor.a *= pow(abs(dot(normal, vec3(0.0, 0.0, 1.0))), uXrayEdgeFalloff);\n#endif\n\ngl_FragColor.rgb *= uExposure;\n",apply_marker_color:"\n\n#if defined(dColorMarker)\n if (marker > 0.0) {\n if ((uMarkerPriority == 1 && marker != 2.0) || (uMarkerPriority != 1 && marker == 1.0)) {\n gl_FragColor.rgb = mix(gl_FragColor.rgb, uHighlightColor, uHighlightStrength);\n gl_FragColor.a = max(gl_FragColor.a, uHighlightStrength * 0.002); // for direct-volume rendering\n } else {\n gl_FragColor.rgb = mix(gl_FragColor.rgb, uSelectColor, uSelectStrength);\n gl_FragColor.a = max(gl_FragColor.a, uSelectStrength * 0.002); // for direct-volume rendering\n }\n } else if (uMarkerAverage > 0.0) {\n gl_FragColor.rgb = mix(gl_FragColor.rgb, uDimColor, uDimStrength);\n gl_FragColor.a = max(gl_FragColor.a, uDimStrength * 0.002); // for direct-volume rendering\n }\n#endif\n",assign_clipping_varying:"\n#if dClipObjectCount != 0 && defined(dClipping)\n #if defined(dClippingType_instance)\n vClipping = readFromTexture(tClipping, aInstance, uClippingTexDim).a;\n #elif defined(dMarkerType_groupInstance)\n vClipping = readFromTexture(tClipping, aInstance * float(uGroupCount) + group, uClippingTexDim).a;\n #endif\n#endif\n",assign_color_varying:"\n#if defined(dRenderVariant_color)\n #if defined(dColorType_attribute)\n vColor.rgb = aColor;\n #elif defined(dColorType_instance)\n vColor.rgb = readFromTexture(tColor, aInstance, uColorTexDim).rgb;\n #elif defined(dColorType_group)\n #if defined(dDualColor)\n vec4 color2;\n if (aColorMode == 2.0) {\n vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n } else {\n vColor.rgb = readFromTexture(tColor, group * 2.0, uColorTexDim).rgb;\n color2.rgb = readFromTexture(tColor, group * 2.0 + 1.0, uColorTexDim).rgb;\n }\n #else\n vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n #endif\n #elif defined(dColorType_groupInstance)\n #if defined(dDualColor)\n vec4 color2;\n if (aColorMode == 2.0) {\n vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n } else {\n vColor.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0, uColorTexDim).rgb;\n color2.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0 + 1.0, uColorTexDim).rgb;\n }\n #else\n vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n #endif\n #elif defined(dColorType_vertex)\n vColor.rgb = readFromTexture(tColor, VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_vertexInstance)\n vColor.rgb = readFromTexture(tColor, int(aInstance) * uVertexCount + VertexID, uColorTexDim).rgb;\n #elif defined(dColorType_volume)\n vec3 cgridPos = (uColorGridTransform.w * (position - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #elif defined(dColorType_volumeInstance)\n vec3 cgridPos = (uColorGridTransform.w * (vModelPosition - uColorGridTransform.xyz)) / uColorGridDim;\n vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb;\n #endif\n\n #ifdef dUsePalette\n vPaletteV = ((vColor.r * 256.0 * 256.0 * 255.0 + vColor.g * 256.0 * 255.0 + vColor.b * 255.0) - 1.0) / 16777215.0;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_instance)\n vOverpaint = readFromTexture(tOverpaint, aInstance, uOverpaintTexDim);\n #elif defined(dOverpaintType_groupInstance)\n vOverpaint = readFromTexture(tOverpaint, aInstance * float(uGroupCount) + group, uOverpaintTexDim);\n #elif defined(dOverpaintType_vertexInstance)\n vOverpaint = readFromTexture(tOverpaint, int(aInstance) * uVertexCount + VertexID, uOverpaintTexDim);\n #elif defined(dOverpaintType_volumeInstance)\n vec3 ogridPos = (uOverpaintGridTransform.w * (vModelPosition - uOverpaintGridTransform.xyz)) / uOverpaintGridDim;\n vOverpaint = texture3dFrom2dLinear(tOverpaintGrid, ogridPos, uOverpaintGridDim, uOverpaintTexDim);\n #endif\n\n // pre-mix to avoid darkening due to empty overpaint\n #ifdef dColorType_uniform\n vOverpaint.rgb = mix(uColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #else\n vOverpaint.rgb = mix(vColor.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n vOverpaint *= uOverpaintStrength;\n #endif\n\n #ifdef dEmissive\n #if defined(dEmissiveType_instance)\n vEmissive = readFromTexture(tEmissive, aInstance, uEmissiveTexDim).a;\n #elif defined(dEmissiveType_groupInstance)\n vEmissive = readFromTexture(tEmissive, aInstance * float(uGroupCount) + group, uEmissiveTexDim).a;\n #elif defined(dEmissiveType_vertexInstance)\n vEmissive = readFromTexture(tEmissive, int(aInstance) * uVertexCount + VertexID, uEmissiveTexDim).a;\n #elif defined(dEmissiveType_volumeInstance)\n vec3 egridPos = (uEmissiveGridTransform.w * (vModelPosition - uEmissiveGridTransform.xyz)) / uEmissiveGridDim;\n vEmissive = texture3dFrom2dLinear(tEmissiveGrid, egridPos, uEmissiveGridDim, uEmissiveTexDim).a;\n #endif\n vEmissive *= uEmissiveStrength;\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_instance)\n vSubstance = readFromTexture(tSubstance, aInstance, uSubstanceTexDim);\n #elif defined(dSubstanceType_groupInstance)\n vSubstance = readFromTexture(tSubstance, aInstance * float(uGroupCount) + group, uSubstanceTexDim);\n #elif defined(dSubstanceType_vertexInstance)\n vSubstance = readFromTexture(tSubstance, int(aInstance) * uVertexCount + VertexID, uSubstanceTexDim);\n #elif defined(dSubstanceType_volumeInstance)\n vec3 sgridPos = (uSubstanceGridTransform.w * (vModelPosition - uSubstanceGridTransform.xyz)) / uSubstanceGridDim;\n vSubstance = texture3dFrom2dLinear(tSubstanceGrid, sgridPos, uSubstanceGridDim, uSubstanceTexDim);\n #endif\n\n // pre-mix to avoid artifacts due to empty substance\n vSubstance.rgb = mix(vec3(uMetalness, uRoughness, uBumpiness), vSubstance.rgb, vSubstance.a);\n vSubstance *= uSubstanceStrength;\n #endif\n#elif defined(dRenderVariant_emissive)\n #ifdef dEmissive\n #if defined(dEmissiveType_instance)\n vEmissive = readFromTexture(tEmissive, aInstance, uEmissiveTexDim).a;\n #elif defined(dEmissiveType_groupInstance)\n vEmissive = readFromTexture(tEmissive, aInstance * float(uGroupCount) + group, uEmissiveTexDim).a;\n #elif defined(dEmissiveType_vertexInstance)\n vEmissive = readFromTexture(tEmissive, int(aInstance) * uVertexCount + VertexID, uEmissiveTexDim).a;\n #elif defined(dEmissiveType_volumeInstance)\n vec3 egridPos = (uEmissiveGridTransform.w * (vModelPosition - uEmissiveGridTransform.xyz)) / uEmissiveGridDim;\n vEmissive = texture3dFrom2dLinear(tEmissiveGrid, egridPos, uEmissiveGridDim, uEmissiveTexDim).a;\n #endif\n vEmissive *= uEmissiveStrength;\n #endif\n#elif defined(dRenderVariant_pick)\n #ifdef requiredDrawBuffers\n vObject = vec4(packIntToRGB(float(uObjectId)), 1.0);\n vInstance = vec4(packIntToRGB(aInstance), 1.0);\n vGroup = vec4(packIntToRGB(group), 1.0);\n #else\n if (uPickType == 1) {\n vColor = vec4(packIntToRGB(float(uObjectId)), 1.0);\n } else if (uPickType == 2) {\n vColor = vec4(packIntToRGB(aInstance), 1.0);\n } else {\n vColor = vec4(packIntToRGB(group), 1.0);\n }\n #endif\n#endif\n\n#ifdef dTransparency\n #if defined(dTransparencyType_instance)\n vTransparency = readFromTexture(tTransparency, aInstance, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_groupInstance)\n vTransparency = readFromTexture(tTransparency, aInstance * float(uGroupCount) + group, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_vertexInstance)\n vTransparency = readFromTexture(tTransparency, int(aInstance) * uVertexCount + VertexID, uTransparencyTexDim).a;\n #elif defined(dTransparencyType_volumeInstance)\n vec3 tgridPos = (uTransparencyGridTransform.w * (vModelPosition - uTransparencyGridTransform.xyz)) / uTransparencyGridDim;\n vTransparency = texture3dFrom2dLinear(tTransparencyGrid, tgridPos, uTransparencyGridDim, uTransparencyTexDim).a;\n #endif\n vTransparency *= uTransparencyStrength;\n#endif\n",assign_group:"\n#ifdef dGeometryType_textureMesh\n float group = unpackRGBToInt(readFromTexture(tGroup, VertexID, uGeoTexDim).rgb);\n#else\n float group = aGroup;\n#endif\n",assign_marker_varying:"\n#if defined(dNeedsMarker)\n #if defined(dMarkerType_instance)\n vMarker = readFromTexture(tMarker, aInstance, uMarkerTexDim).a;\n #elif defined(dMarkerType_groupInstance)\n vMarker = readFromTexture(tMarker, aInstance * float(uGroupCount) + group, uMarkerTexDim).a;\n #endif\n#endif\n",assign_material_color:"\n#if defined(dNeedsMarker)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n#endif\n\n#if defined(dRenderVariant_color)\n #if defined(dUsePalette)\n vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha);\n #elif defined(dColorType_uniform)\n vec4 material = vec4(uColor, uAlpha);\n #elif defined(dColorType_varying)\n vec4 material = vec4(vColor.rgb, uAlpha);\n #endif\n\n // mix material with overpaint\n #if defined(dOverpaint)\n material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a);\n #endif\n\n float emissive = uEmissive;\n #ifdef dEmissive\n emissive += vEmissive;\n #endif\n\n float metalness = uMetalness;\n float roughness = uRoughness;\n float bumpiness = uBumpiness;\n #ifdef dSubstance\n float sf = clamp(vSubstance.a, 0.0, 0.99); // clamp to avoid artifacts\n metalness = mix(metalness, vSubstance.r, sf);\n roughness = mix(roughness, vSubstance.g, sf);\n bumpiness = mix(bumpiness, vSubstance.b, sf);\n #endif\n#elif defined(dRenderVariant_depth)\n if (fragmentDepth > getDepth(gl_FragCoord.xy / uDrawingBufferSize)) {\n discard;\n }\n\n #ifndef dXrayShaded\n #if defined(dTransparency)\n float dta = 1.0 - vTransparency;\n if (vTransparency < 0.2) dta = 1.0; // hard cutoff looks better\n\n if (uRenderMask == MaskTransparent && uAlpha * dta == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha * dta < 1.0) {\n discard;\n }\n #else\n if (uRenderMask == MaskTransparent && uAlpha == 1.0) {\n discard;\n } else if (uRenderMask == MaskOpaque && uAlpha < 1.0) {\n discard;\n }\n #endif\n #else\n if (uRenderMask == MaskOpaque) {\n discard;\n }\n #endif\n\n vec4 material = packDepthToRGBA(fragmentDepth);\n#elif defined(dRenderVariant_marking)\n vec4 material;\n if(uMarkingType == 1) {\n if (marker > 0.0)\n discard;\n #ifdef enabledFragDepth\n material = packDepthToRGBA(gl_FragDepthEXT);\n #else\n material = packDepthToRGBA(gl_FragCoord.z);\n #endif\n } else {\n if (marker == 0.0)\n discard;\n float depthTest = 1.0;\n if (uMarkingDepthTest) {\n depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0;\n }\n bool isHighlight = intMod(marker, 2.0) > 0.1;\n float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\n float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\n if (fogFactor == 1.0)\n discard;\n material = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor);\n }\n#elif defined(dRenderVariant_emissive)\n float emissive = uEmissive;\n #ifdef dEmissive\n emissive += vEmissive;\n #endif\n vec4 material = vec4(emissive);\n#endif\n\n// apply per-group transparency\n#if defined(dTransparency) && (defined(dRenderVariant_pick) || defined(dRenderVariant_color) || defined(dRenderVariant_emissive))\n float ta = 1.0 - vTransparency;\n if (vTransparency < 0.09) ta = 1.0; // hard cutoff looks better\n\n #if defined(dRenderVariant_pick)\n if (ta * uAlpha < uPickingAlphaThreshold)\n discard; // ignore so the element below can be picked\n #elif defined(dRenderVariant_emissive)\n if (ta < 1.0)\n discard; // emissive not supported with transparency\n #elif defined(dRenderVariant_color)\n material.a *= ta;\n #endif\n#endif\n",assign_position:"\nmat4 model = uModel * aTransform;\nmat4 modelView = uView * model;\n#ifdef dGeometryType_textureMesh\n vec3 position = readFromTexture(tPosition, VertexID, uGeoTexDim).xyz;\n#else\n vec3 position = aPosition;\n#endif\nvec4 position4 = vec4(position, 1.0);\n// for accessing tColorGrid in vert shader and for clipping in frag shader\nvModelPosition = (model * position4).xyz;\nvec4 mvPosition = modelView * position4;\nvViewPosition = mvPosition.xyz;\ngl_Position = uProjection * mvPosition;\n",assign_size:"\n#if defined(dSizeType_uniform)\n float size = uSize;\n#elif defined(dSizeType_attribute)\n float size = aSize;\n#elif defined(dSizeType_instance)\n float size = unpackRGBToInt(readFromTexture(tSize, aInstance, uSizeTexDim).rgb);\n#elif defined(dSizeType_group)\n float size = unpackRGBToInt(readFromTexture(tSize, group, uSizeTexDim).rgb);\n#elif defined(dSizeType_groupInstance)\n float size = unpackRGBToInt(readFromTexture(tSize, aInstance * float(uGroupCount) + group, uSizeTexDim).rgb);\n#endif\n\n#if defined(dSizeType_instance) || defined(dSizeType_group) || defined(dSizeType_groupInstance)\n size /= 100.0; // NOTE factor also set in TypeScript\n#endif\n\nsize *= uSizeFactor;\n",check_picking_alpha:"\nfloat viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar);\nfloat fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ));\nfloat alpha = (1.0 - fogFactor) * uAlpha;\n// if not opaque enough ignore so the element below can be picked\nif (uAlpha < uPickingAlphaThreshold || alpha < 0.1) {\n #ifdef dTransparentBackfaces_opaque\n if (!interior) discard;\n #else\n discard;\n #endif\n}\n",check_transparency:"\n#if defined(dRenderVariant_color)\n #if defined(dTransparentBackfaces_off)\n if (interior && material.a < 1.0) discard;\n #elif defined(dTransparentBackfaces_opaque)\n if (interior) material.a = 1.0;\n #endif\n\n #if !defined(dXrayShaded_on) && !defined(dXrayShaded_inverted)\n if ((uRenderMask == MaskOpaque && material.a < 1.0) ||\n (uRenderMask == MaskTransparent && material.a == 1.0)\n ) {\n discard;\n }\n #endif\n#endif\n",clip_instance:"\n#if defined(dClipVariant_instance) && dClipObjectCount != 0\n vec4 mCenter = uModel * aTransform * vec4(uInvariantBoundingSphere.xyz, 1.0);\n if (clipTest(vec4(mCenter.xyz, uInvariantBoundingSphere.w)))\n // move out of [ -w, +w ] to 'discard' in vert shader\n gl_Position.z = 2.0 * gl_Position.w;\n#endif\n",clip_pixel:"\n#if defined(dClipVariant_pixel) && dClipObjectCount != 0\n if (clipTest(vec4(vModelPosition, 0.0)))\n discard;\n#endif\n",color_frag_params:"\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n#ifdef bumpEnabled\n uniform float uBumpFrequency;\n uniform float uBumpAmplitude;\n#endif\nuniform float uEmissive;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_varying)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n uniform sampler2D tPalette;\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n varying vec4 vOverpaint;\n #endif\n\n #ifdef dEmissive\n varying float vEmissive;\n #endif\n\n #ifdef dSubstance\n varying vec4 vSubstance;\n #endif\n#elif defined(dRenderVariant_emissive)\n #ifdef dEmissive\n varying float vEmissive;\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100 || !defined(dVaryingGroup)\n #ifdef requiredDrawBuffers\n varying vec4 vObject;\n varying vec4 vInstance;\n varying vec4 vGroup;\n #else\n varying vec4 vColor;\n #endif\n #else\n #ifdef requiredDrawBuffers\n flat in vec4 vObject;\n flat in vec4 vInstance;\n flat in vec4 vGroup;\n #else\n flat in vec4 vColor;\n #endif\n #endif\n#endif\n\n#ifdef dTransparency\n varying float vTransparency;\n#endif\n",color_vert_params:"\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uBumpiness;\n\n#if defined(dRenderVariant_color)\n #if defined(dColorType_uniform)\n uniform vec3 uColor;\n #elif defined(dColorType_attribute)\n varying vec4 vColor;\n attribute vec3 aColor;\n #elif defined(dColorType_texture)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n #elif defined(dColorType_grid)\n varying vec4 vColor;\n uniform vec2 uColorTexDim;\n uniform vec3 uColorGridDim;\n uniform vec4 uColorGridTransform;\n uniform sampler2D tColorGrid;\n #elif defined(dColorType_direct)\n varying vec4 vColor;\n #endif\n\n #ifdef dUsePalette\n varying float vPaletteV;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_instance) || defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #elif defined(dOverpaintType_volumeInstance)\n varying vec4 vOverpaint;\n uniform vec2 uOverpaintTexDim;\n uniform vec3 uOverpaintGridDim;\n uniform vec4 uOverpaintGridTransform;\n uniform sampler2D tOverpaintGrid;\n #endif\n uniform float uOverpaintStrength;\n #endif\n\n #ifdef dEmissive\n #if defined(dEmissiveType_instance) || defined(dEmissiveType_groupInstance) || defined(dEmissiveType_vertexInstance)\n varying float vEmissive;\n uniform vec2 uEmissiveTexDim;\n uniform sampler2D tEmissive;\n #elif defined(dEmissiveType_volumeInstance)\n varying float vEmissive;\n uniform vec2 uEmissiveTexDim;\n uniform vec3 uEmissiveGridDim;\n uniform vec4 uEmissiveGridTransform;\n uniform sampler2D tEmissiveGrid;\n #endif\n uniform float uEmissiveStrength;\n #endif\n\n #ifdef dSubstance\n #if defined(dSubstanceType_instance) || defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform sampler2D tSubstance;\n #elif defined(dSubstanceType_volumeInstance)\n varying vec4 vSubstance;\n uniform vec2 uSubstanceTexDim;\n uniform vec3 uSubstanceGridDim;\n uniform vec4 uSubstanceGridTransform;\n uniform sampler2D tSubstanceGrid;\n #endif\n uniform float uSubstanceStrength;\n #endif\n#elif defined(dRenderVariant_emissive)\n #ifdef dEmissive\n #if defined(dEmissiveType_instance) || defined(dEmissiveType_groupInstance) || defined(dEmissiveType_vertexInstance)\n varying float vEmissive;\n uniform vec2 uEmissiveTexDim;\n uniform sampler2D tEmissive;\n #elif defined(dEmissiveType_volumeInstance)\n varying float vEmissive;\n uniform vec2 uEmissiveTexDim;\n uniform vec3 uEmissiveGridDim;\n uniform vec4 uEmissiveGridTransform;\n uniform sampler2D tEmissiveGrid;\n #endif\n uniform float uEmissiveStrength;\n #endif\n#elif defined(dRenderVariant_pick)\n #if __VERSION__ == 100 || !defined(dVaryingGroup)\n #ifdef requiredDrawBuffers\n varying vec4 vObject;\n varying vec4 vInstance;\n varying vec4 vGroup;\n #else\n varying vec4 vColor;\n #endif\n #else\n #ifdef requiredDrawBuffers\n flat out vec4 vObject;\n flat out vec4 vInstance;\n flat out vec4 vGroup;\n #else\n flat out vec4 vColor;\n #endif\n #endif\n#endif\n\n#ifdef dTransparency\n #if defined(dTransparencyType_instance) || defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform sampler2D tTransparency;\n #elif defined(dTransparencyType_volumeInstance)\n varying float vTransparency;\n uniform vec2 uTransparencyTexDim;\n uniform vec3 uTransparencyGridDim;\n uniform vec4 uTransparencyGridTransform;\n uniform sampler2D tTransparencyGrid;\n #endif\n uniform float uTransparencyStrength;\n#endif\n",common_clip:"\n#if dClipObjectCount != 0\n vec3 quaternionTransform(const in vec4 q, const in vec3 v) {\n vec3 t = 2.0 * cross(q.xyz, v);\n return v + q.w * t + cross(q.xyz, t);\n }\n\n vec4 computePlane(const in vec3 normal, const in vec3 inPoint) {\n return vec4(normalize(normal), -dot(normal, inPoint));\n }\n\n float planeSD(const in vec4 plane, const in vec3 center) {\n return -dot(plane.xyz, center - plane.xyz * -plane.w);\n }\n\n float sphereSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) {\n return (\n length(quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position) / size) - 1.0\n ) * min(min(size.x, size.y), size.z);\n }\n\n float cubeSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) {\n vec3 d = abs(quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position)) - size;\n return min(max(d.x, max(d.y, d.z)), 0.0) + length(max(d, 0.0));\n }\n\n float cylinderSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) {\n vec3 t = quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position);\n\n vec2 d = abs(vec2(length(t.xz), t.y)) - size.xy;\n return min(max(d.x, d.y), 0.0) + length(max(d, 0.0));\n }\n\n float infiniteConeSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) {\n vec3 t = quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position);\n\n float q = length(t.xy);\n return dot(size.xy, vec2(q, t.z));\n }\n\n float getSignedDistance(const in vec3 center, const in int type, const in vec3 position, const in vec4 rotation, const in vec3 scale) {\n if (type == 1) {\n vec3 normal = quaternionTransform(rotation, vec3(0.0, 1.0, 0.0));\n vec4 plane = computePlane(normal, position);\n return planeSD(plane, center);\n } else if (type == 2) {\n return sphereSD(position, rotation, scale * 0.5, center);\n } else if (type == 3) {\n return cubeSD(position, rotation, scale * 0.5, center);\n } else if (type == 4) {\n return cylinderSD(position, rotation, scale * 0.5, center);\n } else if (type == 5) {\n return infiniteConeSD(position, rotation, scale * 0.5, center);\n } else {\n return 0.1;\n }\n }\n\n #if __VERSION__ == 100\n // 8-bit\n int bitwiseAnd(in int a, in int b) {\n int d = 128;\n int result = 0;\n for (int i = 0; i < 8; ++i) {\n if (d <= 0) break;\n if (a >= d && b >= d) result += d;\n if (a >= d) a -= d;\n if (b >= d) b -= d;\n d /= 2;\n }\n return result;\n }\n\n bool hasBit(const in int mask, const in int bit) {\n return bitwiseAnd(mask, bit) == 0;\n }\n #else\n bool hasBit(const in int mask, const in int bit) {\n return (mask & bit) == 0;\n }\n #endif\n\n bool clipTest(const in vec4 sphere) {\n // flag is a bit-flag for clip-objects to ignore (note, object ids start at 1 not 0)\n #if defined(dClipping)\n int flag = int(floor(vClipping * 255.0 + 0.5));\n #else\n int flag = 0;\n #endif\n\n #pragma unroll_loop_start\n for (int i = 0; i < dClipObjectCount; ++i) {\n if (flag == 0 || hasBit(flag, UNROLLED_LOOP_INDEX + 1)) {\n // TODO take sphere radius into account?\n bool test = getSignedDistance(sphere.xyz, uClipObjectType[i], uClipObjectPosition[i], uClipObjectRotation[i], uClipObjectScale[i]) <= 0.0;\n if ((!uClipObjectInvert[i] && test) || (uClipObjectInvert[i] && !test)) {\n return true;\n }\n }\n }\n #pragma unroll_loop_end\n return false;\n }\n#endif\n",common_frag_params:'\nuniform int uObjectId;\nuniform int uInstanceCount;\nuniform int uGroupCount;\n\nuniform int uPickType;\nuniform int uMarkingType;\n\nuniform vec4 uCameraPlane;\nuniform vec4 uLod;\n\n#if dClipObjectCount != 0\n uniform int uClipObjectType[dClipObjectCount];\n uniform bool uClipObjectInvert[dClipObjectCount];\n uniform vec3 uClipObjectPosition[dClipObjectCount];\n uniform vec4 uClipObjectRotation[dClipObjectCount];\n uniform vec3 uClipObjectScale[dClipObjectCount];\n\n #if defined(dClipping)\n #if __VERSION__ == 100 || defined(dClippingType_instance) || !defined(dVaryingGroup)\n varying float vClipping;\n #else\n flat in float vClipping;\n #endif\n #endif\n#endif\n\n#if defined(dColorMarker)\n uniform vec3 uHighlightColor;\n uniform vec3 uSelectColor;\n uniform vec3 uDimColor;\n uniform float uHighlightStrength;\n uniform float uSelectStrength;\n uniform float uDimStrength;\n uniform int uMarkerPriority;\n uniform float uMarkerAverage;\n#endif\n\n#if defined(dNeedsMarker)\n uniform float uMarker;\n #if __VERSION__ == 100 || defined(dMarkerType_instance) || !defined(dVaryingGroup)\n varying float vMarker;\n #else\n flat in float vMarker;\n #endif\n#endif\n\n#if defined(dRenderVariant_colorDpoit)\n #define MAX_DPOIT_DEPTH 99999.0 // NOTE constant also set in TypeScript\n uniform sampler2D tDpoitDepth;\n uniform sampler2D tDpoitFrontColor;\n#endif\n\nvarying vec3 vModelPosition;\nvarying vec3 vViewPosition;\n\nuniform vec2 uViewOffset;\n\nuniform float uNear;\nuniform float uFar;\nuniform float uIsOrtho;\n\nuniform bool uFog;\nuniform float uFogNear;\nuniform float uFogFar;\nuniform vec3 uFogColor;\n\nuniform float uAlpha;\nuniform float uPickingAlphaThreshold;\nuniform bool uTransparentBackground;\n\nuniform bool uDoubleSided;\nuniform float uInteriorDarkening;\nuniform bool uInteriorColorFlag;\nuniform vec3 uInteriorColor;\nbool interior;\n\nuniform float uXrayEdgeFalloff;\nuniform float uExposure;\n\nuniform mat4 uProjection;\n\nuniform int uRenderMask;\nuniform bool uMarkingDepthTest;\n\nuniform sampler2D tDepth;\nuniform vec2 uDrawingBufferSize;\n\nfloat getDepthPacked(const in vec2 coords) {\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n}\n\nfloat getDepth(const in vec2 coords) {\n #ifdef depthTextureSupport\n return texture2D(tDepth, coords).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n #endif\n}\n\nfloat calcDepth(const in vec3 pos) {\n vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;\n return 0.5 + 0.5 * clipZW.x / clipZW.y;\n}\n\n// "Bump Mapping Unparametrized Surfaces on the GPU" Morten S. Mikkelsen\n// https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf\nvec3 perturbNormal(in vec3 position, in vec3 normal, in float height, in float scale) {\n vec3 sigmaS = dFdx(position);\n vec3 sigmaT = dFdy(position);\n\n vec3 r1 = cross(sigmaT, normal);\n vec3 r2 = cross(normal, sigmaS);\n float det = dot(sigmaS, r1);\n if (det == 0.0) return normal;\n\n float bs = dFdx(height);\n float bt = dFdy(height);\n\n vec3 surfGrad = sign(det) * (bs * r1 + bt * r2);\n return normalize(abs(det) * normal - scale * surfGrad);\n}\n\nfloat hash(in float h) {\n return fract(sin(h) * 43758.5453123);\n}\n\nfloat noise(in vec3 x) {\n vec3 p = floor(x);\n vec3 f = fract(x);\n f = f * f * (3.0 - 2.0 * f);\n\n float n = p.x + p.y * 157.0 + 113.0 * p.z;\n return mix(\n mix(mix(hash(n + 0.0), hash(n + 1.0), f.x),\n mix(hash(n + 157.0), hash(n + 158.0), f.x), f.y),\n mix(mix(hash(n + 113.0), hash(n + 114.0), f.x),\n mix(hash(n + 270.0), hash(n + 271.0), f.x), f.y), f.z);\n}\n\nfloat fbm(in vec3 p) {\n float f = 0.0;\n f += 0.5 * noise(p);\n p *= 2.01;\n f += 0.25 * noise(p);\n p *= 2.02;\n f += 0.125 * noise(p);\n\n return f;\n}\n',common_vert_params:"\nuniform mat4 uProjection, uModel, uView;\nuniform vec3 uCameraPosition;\nuniform vec4 uCameraPlane;\n\nuniform int uObjectId;\nuniform int uVertexCount;\nuniform int uInstanceCount;\nuniform int uGroupCount;\nuniform vec4 uInvariantBoundingSphere;\nuniform vec4 uLod;\n\nuniform bool uDoubleSided;\nuniform int uPickType;\n\n#if dClipObjectCount != 0\n uniform int uClipObjectType[dClipObjectCount];\n uniform bool uClipObjectInvert[dClipObjectCount];\n uniform vec3 uClipObjectPosition[dClipObjectCount];\n uniform vec4 uClipObjectRotation[dClipObjectCount];\n uniform vec3 uClipObjectScale[dClipObjectCount];\n\n #if defined(dClipping)\n uniform vec2 uClippingTexDim;\n uniform sampler2D tClipping;\n #if __VERSION__ == 100 || defined(dClippingType_instance) || !defined(dVaryingGroup)\n varying float vClipping;\n #else\n flat out float vClipping;\n #endif\n #endif\n#endif\n\n#if defined(dNeedsMarker)\n uniform float uMarker;\n uniform vec2 uMarkerTexDim;\n uniform sampler2D tMarker;\n #if __VERSION__ == 100 || defined(dMarkerType_instance) || !defined(dVaryingGroup)\n varying float vMarker;\n #else\n flat out float vMarker;\n #endif\n#endif\n\nvarying vec3 vModelPosition;\nvarying vec3 vViewPosition;\n\n#if defined(noNonInstancedActiveAttribs)\n // int() is needed for some Safari versions\n // see https://bugs.webkit.org/show_bug.cgi?id=244152\n #define VertexID int(gl_VertexID)\n#else\n attribute float aVertex;\n #define VertexID int(aVertex)\n#endif\n\n#if defined(enabledMultiDraw)\n #define DrawID gl_DrawID\n#else\n #define DrawID uDrawId\n#endif\n",common:"\n// TODO find a better place for these convenience defines\n\n#if defined(dRenderVariant_colorBlended) || defined(dRenderVariant_colorWboit) || defined(dRenderVariant_colorDpoit)\n #define dRenderVariant_color\n#endif\n\n#if defined(dColorType_instance) || defined(dColorType_group) || defined(dColorType_groupInstance) || defined(dColorType_vertex) || defined(dColorType_vertexInstance)\n #define dColorType_texture\n#endif\n\n#if defined(dColorType_volume) || defined(dColorType_volumeInstance)\n #define dColorType_grid\n#endif\n\n#if defined(dColorType_attribute) || defined(dColorType_texture) || defined(dColorType_grid)\n #define dColorType_varying\n#endif\n\n#if (defined(dRenderVariant_color) && defined(dColorMarker)) || defined(dRenderVariant_marking)\n #define dNeedsMarker\n#endif\n\n#if defined(dXrayShaded_on) || defined(dXrayShaded_inverted)\n #define dXrayShaded\n#endif\n\n#define MaskAll 0\n#define MaskOpaque 1\n#define MaskTransparent 2\n\n//\n\n#define PI 3.14159265\n#define RECIPROCAL_PI 0.31830988618\n#define EPSILON 1e-6\n\n#define saturate(a) clamp(a, 0.0, 1.0)\n\n#if __VERSION__ == 100\n #define round(x) floor((x) + 0.5)\n#endif\n\nfloat intDiv(const in float a, const in float b) { return float(int(a) / int(b)); }\nvec2 ivec2Div(const in vec2 a, const in vec2 b) { return vec2(ivec2(a) / ivec2(b)); }\nfloat intMod(const in float a, const in float b) { return a - b * float(int(a) / int(b)); }\nint imod(const in int a, const in int b) { return a - b * (a / b); }\n\nfloat pow2(const in float x) { return x * x; }\n\nvec3 packIntToRGB(in float value) {\n value = clamp(round(value), 0.0, 16777216.0 - 1.0) + 1.0;\n vec3 c = vec3(0.0);\n c.b = mod(value, 256.0);\n value = floor(value / 256.0);\n c.g = mod(value, 256.0);\n value = floor(value / 256.0);\n c.r = mod(value, 256.0);\n return c / 255.0;\n}\nfloat unpackRGBToInt(const in vec3 rgb) {\n return (floor(rgb.r * 255.0 + 0.5) * 256.0 * 256.0 + floor(rgb.g * 255.0 + 0.5) * 256.0 + floor(rgb.b * 255.0 + 0.5)) - 1.0;\n}\n\nvec2 packUnitIntervalToRG(const in float v) {\n vec2 enc;\n enc.xy = vec2(fract(v * 256.0), v);\n enc.y -= enc.x * (1.0 / 256.0);\n enc.xy *= 256.0 / 255.0;\n\n return enc;\n}\n\nfloat unpackRGToUnitInterval(const in vec2 enc) {\n return dot(enc, vec2(255.0 / (256.0 * 256.0), 255.0 / 256.0));\n}\n\nvec3 screenSpaceToViewSpace(const in vec3 ssPos, const in mat4 invProjection) {\n vec4 p = vec4(ssPos * 2.0 - 1.0, 1.0);\n p = invProjection * p;\n return p.xyz / p.w;\n}\n\nconst float PackUpscale = 256.0 / 255.0; // fraction -> 0..1 (including 1)\nconst float UnpackDownscale = 255.0 / 256.0; // 0..1 -> fraction (excluding 1)\nconst vec3 PackFactors = vec3(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0);\nconst vec4 UnpackFactors = UnpackDownscale / vec4(PackFactors, 1.0);\nconst float ShiftRight8 = 1.0 / 256.0;\n\nvec4 packDepthToRGBA(const in float v) {\n vec4 r = vec4(fract(v * PackFactors), v);\n r.yzw -= r.xyz * ShiftRight8; // tidy overflow\n return r * PackUpscale;\n}\nfloat unpackRGBAToDepth(const in vec4 v) {\n return dot(v, UnpackFactors);\n}\n\nvec4 sRGBToLinear(const in vec4 c) {\n return vec4(mix(pow(c.rgb * 0.9478672986 + vec3(0.0521327014), vec3(2.4)), c.rgb * 0.0773993808, vec3(lessThanEqual(c.rgb, vec3(0.04045)))), c.a);\n}\nvec4 linearTosRGB(const in vec4 c) {\n return vec4(mix(pow(c.rgb, vec3(0.41666)) * 1.055 - vec3(0.055), c.rgb * 12.92, vec3(lessThanEqual(c.rgb, vec3(0.0031308)))), c.a);\n}\n\nfloat linearizeDepth(const in float depth, const in float near, const in float far) {\n return (2.0 * near) / (far + near - depth * (far - near));\n}\n\nfloat perspectiveDepthToViewZ(const in float invClipZ, const in float near, const in float far) {\n return (near * far) / ((far - near) * invClipZ - far);\n}\n\nfloat orthographicDepthToViewZ(const in float linearClipZ, const in float near, const in float far) {\n return linearClipZ * (near - far) - near;\n}\n\nfloat depthToViewZ(const in float isOrtho, const in float linearClipZ, const in float near, const in float far) {\n return isOrtho == 1.0 ? orthographicDepthToViewZ(linearClipZ, near, far) : perspectiveDepthToViewZ(linearClipZ, near, far);\n}\n\n#if __VERSION__ == 100\n // transpose\n\n float transpose(const in float m) {\n return m;\n }\n\n mat2 transpose2(const in mat2 m) {\n return mat2(\n m[0][0], m[1][0],\n m[0][1], m[1][1]\n );\n }\n\n mat3 transpose3(const in mat3 m) {\n return mat3(\n m[0][0], m[1][0], m[2][0],\n m[0][1], m[1][1], m[2][1],\n m[0][2], m[1][2], m[2][2]\n );\n }\n\n mat4 transpose4(const in mat4 m) {\n return mat4(\n m[0][0], m[1][0], m[2][0], m[3][0],\n m[0][1], m[1][1], m[2][1], m[3][1],\n m[0][2], m[1][2], m[2][2], m[3][2],\n m[0][3], m[1][3], m[2][3], m[3][3]\n );\n }\n\n // inverse\n\n float inverse(const in float m) {\n return 1.0 / m;\n }\n\n mat2 inverse2(const in mat2 m) {\n return mat2(m[1][1],-m[0][1],\n -m[1][0], m[0][0]) / (m[0][0]*m[1][1] - m[0][1]*m[1][0]);\n }\n\n mat3 inverse3(const in mat3 m) {\n float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2];\n float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2];\n float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2];\n\n float b01 = a22 * a11 - a12 * a21;\n float b11 = -a22 * a10 + a12 * a20;\n float b21 = a21 * a10 - a11 * a20;\n\n float det = a00 * b01 + a01 * b11 + a02 * b21;\n\n return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11),\n b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10),\n b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det;\n }\n\n mat4 inverse4(const in mat4 m) {\n float\n a00 = m[0][0], a01 = m[0][1], a02 = m[0][2], a03 = m[0][3],\n a10 = m[1][0], a11 = m[1][1], a12 = m[1][2], a13 = m[1][3],\n a20 = m[2][0], a21 = m[2][1], a22 = m[2][2], a23 = m[2][3],\n a30 = m[3][0], a31 = m[3][1], a32 = m[3][2], a33 = m[3][3],\n\n b00 = a00 * a11 - a01 * a10,\n b01 = a00 * a12 - a02 * a10,\n b02 = a00 * a13 - a03 * a10,\n b03 = a01 * a12 - a02 * a11,\n b04 = a01 * a13 - a03 * a11,\n b05 = a02 * a13 - a03 * a12,\n b06 = a20 * a31 - a21 * a30,\n b07 = a20 * a32 - a22 * a30,\n b08 = a20 * a33 - a23 * a30,\n b09 = a21 * a32 - a22 * a31,\n b10 = a21 * a33 - a23 * a31,\n b11 = a22 * a33 - a23 * a32,\n\n det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n return mat4(\n a11 * b11 - a12 * b10 + a13 * b09,\n a02 * b10 - a01 * b11 - a03 * b09,\n a31 * b05 - a32 * b04 + a33 * b03,\n a22 * b04 - a21 * b05 - a23 * b03,\n a12 * b08 - a10 * b11 - a13 * b07,\n a00 * b11 - a02 * b08 + a03 * b07,\n a32 * b02 - a30 * b05 - a33 * b01,\n a20 * b05 - a22 * b02 + a23 * b01,\n a10 * b10 - a11 * b08 + a13 * b06,\n a01 * b08 - a00 * b10 - a03 * b06,\n a30 * b04 - a31 * b02 + a33 * b00,\n a21 * b02 - a20 * b04 - a23 * b00,\n a11 * b07 - a10 * b09 - a12 * b06,\n a00 * b09 - a01 * b07 + a02 * b06,\n a31 * b01 - a30 * b03 - a32 * b00,\n a20 * b03 - a21 * b01 + a22 * b00) / det;\n }\n\n #define isNaN(x) ((x) != (x))\n #define isInf(x) ((x) == (x) + 1.0)\n#else\n #define transpose2(m) transpose(m)\n #define transpose3(m) transpose(m)\n #define transpose4(m) transpose(m)\n\n #define inverse2(m) inverse(m)\n #define inverse3(m) inverse(m)\n #define inverse4(m) inverse(m)\n\n #define isNaN isnan\n #define isInf isinf\n#endif\n",fade_lod:"\nif (uLod.w == 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) {\n float d = dot(uCameraPlane.xyz, vModelPosition) + uCameraPlane.w;\n float ta = min(\n smoothstep(uLod.x, uLod.x + uLod.z, d),\n 1.0 - smoothstep(uLod.y - uLod.z, uLod.y, d)\n );\n\n #if defined(dRenderVariant_color)\n float at = 0.0;\n\n // shift by view-offset during multi-sample rendering to allow for blending\n vec2 coord = gl_FragCoord.xy + uViewOffset * 0.25;\n\n const mat4 thresholdMatrix = mat4(\n 1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0,\n 13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0,\n 4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0,\n 16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0\n );\n int ci = int(intMod(coord.x, 4.0));\n int ri = int(intMod(coord.y, 4.0));\n #if __VERSION__ == 100\n vec4 i = vec4(float(ci * 4 + ri));\n vec4 v = thresholdMatrix[0] * vec4(equal(i, vec4(0.0, 1.0, 2.0, 3.0))) +\n thresholdMatrix[1] * vec4(equal(i, vec4(4.0, 5.0, 6.0, 7.0))) +\n thresholdMatrix[2] * vec4(equal(i, vec4(8.0, 9.0, 10.0, 11.0))) +\n thresholdMatrix[3] * vec4(equal(i, vec4(12.0, 13.0, 14.0, 15.0)));\n at = v.x + v.y + v.z + v.w;\n #else\n at = thresholdMatrix[ci][ri];\n #endif\n\n if (ta < 0.99 && (ta < 0.01 || ta < at)) {\n discard;\n }\n #else\n if (ta < uPickingAlphaThreshold) {\n discard;\n }\n #endif\n}\n",float_to_rgba:"\n // floatToRgba adapted from https://github.com/equinor/glsl-float-to-rgba\n // MIT License, Copyright (c) 2020 Equinor\n\n float shiftRight (float v, float amt) {\n v = floor(v) + 0.5;\n return floor(v / exp2(amt));\n }\n float shiftLeft (float v, float amt) {\n return floor(v * exp2(amt) + 0.5);\n }\n float maskLast (float v, float bits) {\n return mod(v, shiftLeft(1.0, bits));\n }\n float extractBits (float num, float from, float to) {\n from = floor(from + 0.5); to = floor(to + 0.5);\n return maskLast(shiftRight(num, from), to - from);\n }\n\n vec4 floatToRgba(float texelFloat, bool littleEndian) {\n if (texelFloat == 0.0) return vec4(0.0, 0.0, 0.0, 0.0);\n float sign = texelFloat > 0.0 ? 0.0 : 1.0;\n texelFloat = abs(texelFloat);\n float exponent = floor(log2(texelFloat));\n float biased_exponent = exponent + 127.0;\n float fraction = ((texelFloat / exp2(exponent)) - 1.0) * 8388608.0;\n float t = biased_exponent / 2.0;\n float last_bit_of_biased_exponent = fract(t) * 2.0;\n float remaining_bits_of_biased_exponent = floor(t);\n float byte4 = extractBits(fraction, 0.0, 8.0) / 255.0;\n float byte3 = extractBits(fraction, 8.0, 16.0) / 255.0;\n float byte2 = (last_bit_of_biased_exponent * 128.0 + extractBits(fraction, 16.0, 23.0)) / 255.0;\n float byte1 = (sign * 128.0 + remaining_bits_of_biased_exponent) / 255.0;\n return (\n littleEndian\n ? vec4(byte4, byte3, byte2, byte1)\n : vec4(byte1, byte2, byte3, byte4)\n );\n }\n",light_frag_params:"\n#if dLightCount != 0\n uniform vec3 uLightDirection[dLightCount];\n uniform vec3 uLightColor[dLightCount];\n#endif\nuniform vec3 uAmbientColor;\n\nstruct PhysicalMaterial {\n vec3 diffuseColor;\n float roughness;\n vec3 specularColor;\n float specularF90;\n};\n\nstruct IncidentLight {\n vec3 color;\n vec3 direction;\n};\n\nstruct ReflectedLight {\n vec3 directDiffuse;\n vec3 directSpecular;\n vec3 indirectDiffuse;\n vec3 indirectSpecular;\n};\n\nstruct GeometricContext {\n vec3 position;\n vec3 normal;\n vec3 viewDir;\n};\n\nvec3 BRDF_Lambert(const in vec3 diffuseColor) {\n return RECIPROCAL_PI * diffuseColor;\n}\n\nvec3 F_Schlick(const in vec3 f0, const in float f90, const in float dotVH) {\n // Original approximation by Christophe Schlick '94\n // float fresnel = pow( 1.0 - dotVH, 5.0 );\n // Optimized variant (presented by Epic at SIGGRAPH '13)\n // https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf\n float fresnel = exp2((-5.55473 * dotVH - 6.98316) * dotVH);\n return f0 * (1.0 - fresnel) + (f90 * fresnel);\n}\n\n// Moving Frostbite to Physically Based Rendering 3.0 - page 12, listing 2\n// https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\nfloat V_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {\n float a2 = pow2(alpha);\n float gv = dotNL * sqrt(a2 + (1.0 - a2) * pow2(dotNV));\n float gl = dotNV * sqrt(a2 + (1.0 - a2) * pow2(dotNL));\n return 0.5 / max(gv + gl, EPSILON);\n}\n\n// Microfacet Models for Refraction through Rough Surfaces - equation (33)\n// http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html\n// alpha is \"roughness squared\" in Disney\u2019s reparameterization\nfloat D_GGX(const in float alpha, const in float dotNH) {\n float a2 = pow2(alpha);\n float denom = pow2(dotNH) * (a2 - 1.0) + 1.0; // avoid alpha = 0 with dotNH = 1\n return RECIPROCAL_PI * a2 / pow2(denom);\n}\n\n// GGX Distribution, Schlick Fresnel, GGX_SmithCorrelated Visibility\nvec3 BRDF_GGX(const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness) {\n float alpha = pow2(roughness); // UE4's roughness\n vec3 halfDir = normalize( lightDir + viewDir);\n float dotNL = saturate(dot(normal, lightDir));\n float dotNV = saturate(dot(normal, viewDir));\n float dotNH = saturate(dot(normal, halfDir));\n float dotVH = saturate(dot(viewDir, halfDir));\n vec3 F = F_Schlick(f0, f90, dotVH);\n float V = V_GGX_SmithCorrelated(alpha, dotNL, dotNV);\n float D = D_GGX(alpha, dotNH);\n return F * (V * D);\n}\n\n// Analytical approximation of the DFG LUT, one half of the\n// split-sum approximation used in indirect specular lighting.\n// via 'environmentBRDF' from \"Physically Based Shading on Mobile\"\n// https://www.unrealengine.com/blog/physically-based-shading-on-mobile\nvec2 DFGApprox(const in vec3 normal, const in vec3 viewDir, const in float roughness) {\n float dotNV = saturate(dot(normal, viewDir));\n const vec4 c0 = vec4(-1, -0.0275, -0.572, 0.022);\n const vec4 c1 = vec4(1, 0.0425, 1.04, -0.04);\n vec4 r = roughness * c0 + c1;\n float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;\n vec2 fab = vec2(-1.04, 1.04) * a004 + r.zw;\n return fab;\n}\n\n// Fdez-Ag\xfcera's \"Multiple-Scattering Microfacet Model for Real-Time Image Based Lighting\"\n// Approximates multiscattering in order to preserve energy.\n// http://www.jcgt.org/published/0008/01/03/\nvoid computeMultiscattering(const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter) {\n vec2 fab = DFGApprox(normal, viewDir, roughness);\n vec3 FssEss = specularColor * fab.x + specularF90 * fab.y;\n float Ess = fab.x + fab.y;\n float Ems = 1.0 - Ess;\n vec3 Favg = specularColor + (1.0 - specularColor) * 0.047619; // 1/21\n vec3 Fms = FssEss * Favg / (1.0 - Ems * Favg);\n singleScatter += FssEss;\n multiScatter += Fms * Ems;\n}\n\nvoid RE_Direct_Physical(const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n float dotNL = saturate(dot(geometry.normal, directLight.direction));\n vec3 irradiance = dotNL * directLight.color;\n reflectedLight.directSpecular += irradiance * BRDF_GGX(directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness);\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert(material.diffuseColor);\n}\n\nvoid RE_IndirectDiffuse_Physical(const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert(material.diffuseColor);\n}\n\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n // Both indirect specular and indirect diffuse light accumulate here\n vec3 singleScattering = vec3(0.0);\n vec3 multiScattering = vec3(0.0);\n vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n computeMultiscattering(geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering);\n vec3 diffuse = material.diffuseColor * (1.0 - ( singleScattering + multiScattering));\n reflectedLight.indirectSpecular += radiance * singleScattering;\n reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n",matrix_scale:"\nfloat matrixScale(in mat4 m){\n vec4 r = m[0];\n return sqrt(r[0] * r[0] + r[1] * r[1] + r[2] * r[2]);\n}\n",normal_frag_params:"\nvarying vec3 vNormal;\n",read_from_texture:"\nvec4 readFromTexture(const in sampler2D tex, const in float i, const in vec2 dim) {\n float x = intMod(i, dim.x);\n float y = floor(intDiv(i, dim.x));\n vec2 uv = (vec2(x, y) + 0.5) / dim;\n return texture2D(tex, uv);\n}\n\nvec4 readFromTexture(const in sampler2D tex, const in int i, const in vec2 dim) {\n int x = imod(i, int(dim.x));\n int y = i / int(dim.x);\n vec2 uv = (vec2(x, y) + 0.5) / dim;\n return texture2D(tex, uv);\n}\n",rgba_to_float:'\n // rgbaToFloat adapted from https://github.com/ihmeuw/glsl-rgba-to-float\n // BSD 3-Clause License\n //\n // Copyright (c) 2019, Institute for Health Metrics and Evaluation All rights reserved.\n // Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n // - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n // - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n // - Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n //\n // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,\n // INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\n // OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n // OF THE POSSIBILITY OF SUCH DAMAGE.\n\n ivec4 floatsToBytes(vec4 inputFloats, bool littleEndian) {\n ivec4 bytes = ivec4(inputFloats * 255.0);\n return (\n littleEndian\n ? bytes.abgr\n : bytes\n );\n }\n\n // Break the four bytes down into an array of 32 bits.\n void bytesToBits(const in ivec4 bytes, out bool bits[32]) {\n for (int channelIndex = 0; channelIndex < 4; ++channelIndex) {\n float acc = float(bytes[channelIndex]);\n for (int indexInByte = 7; indexInByte >= 0; --indexInByte) {\n float powerOfTwo = exp2(float(indexInByte));\n bool bit = acc >= powerOfTwo;\n bits[channelIndex * 8 + (7 - indexInByte)] = bit;\n acc = mod(acc, powerOfTwo);\n }\n }\n }\n\n // Compute the exponent of the 32-bit float.\n float getExponent(bool bits[32]) {\n const int startIndex = 1;\n const int bitStringLength = 8;\n const int endBeforeIndex = startIndex + bitStringLength;\n float acc = 0.0;\n int pow2 = bitStringLength - 1;\n for (int bitIndex = startIndex; bitIndex < endBeforeIndex; ++bitIndex) {\n acc += float(bits[bitIndex]) * exp2(float(pow2--));\n }\n return acc;\n }\n\n // Compute the mantissa of the 32-bit float.\n float getMantissa(bool bits[32], bool subnormal) {\n const int startIndex = 9;\n const int bitStringLength = 23;\n const int endBeforeIndex = startIndex + bitStringLength;\n // Leading/implicit/hidden bit convention:\n // If the number is not subnormal (with exponent 0), we add a leading 1 digit.\n float acc = float(!subnormal) * exp2(float(bitStringLength));\n int pow2 = bitStringLength - 1;\n for (int bitIndex = startIndex; bitIndex < endBeforeIndex; ++bitIndex) {\n acc += float(bits[bitIndex]) * exp2(float(pow2--));\n }\n return acc;\n }\n\n // Parse the float from its 32 bits.\n float bitsToFloat(bool bits[32]) {\n float signBit = float(bits[0]) * -2.0 + 1.0;\n float exponent = getExponent(bits);\n bool subnormal = abs(exponent - 0.0) < 0.01;\n float mantissa = getMantissa(bits, subnormal);\n float exponentBias = 127.0;\n return signBit * mantissa * exp2(exponent - exponentBias - 23.0);\n }\n\n float rgbaToFloat(vec4 texelRGBA, bool littleEndian) {\n ivec4 rgbaBytes = floatsToBytes(texelRGBA, littleEndian);\n bool bits[32];\n bytesToBits(rgbaBytes, bits);\n return bitsToFloat(bits);\n }\n',size_vert_params:"\n#if defined(dSizeType_uniform)\n uniform float uSize;\n#elif defined(dSizeType_attribute)\n attribute float aSize;\n#elif defined(dSizeType_instance) || defined(dSizeType_group) || defined(dSizeType_groupInstance)\n uniform vec2 uSizeTexDim;\n uniform sampler2D tSize;\n#endif\n\nuniform float uSizeFactor;\n",texture3d_from_1d_trilinear:"\nvec4 texture3dFrom1dTrilinear(const in sampler2D tex, const in vec3 pos, const in vec3 gridDim, const in vec2 texDim, const in float offset) {\n float gdYZ = gridDim.z * gridDim.y;\n float gdZ = gridDim.z;\n vec3 p0 = floor(pos * gridDim);\n vec3 p1 = ceil(pos * gridDim);\n vec3 pd = (pos * gridDim - p0) / (p1 - p0);\n vec4 s000 = readFromTexture(tex, offset + p0.z + p0.y * gdZ + p0.x * gdYZ, texDim);\n vec4 s100 = readFromTexture(tex, offset + p0.z + p0.y * gdZ + p1.x * gdYZ, texDim);\n vec4 s001 = readFromTexture(tex, offset + p1.z + p0.y * gdZ + p0.x * gdYZ, texDim);\n vec4 s101 = readFromTexture(tex, offset + p1.z + p0.y * gdZ + p1.x * gdYZ, texDim);\n vec4 s010 = readFromTexture(tex, offset + p0.z + p1.y * gdZ + p0.x * gdYZ, texDim);\n vec4 s110 = readFromTexture(tex, offset + p0.z + p1.y * gdZ + p1.x * gdYZ, texDim);\n vec4 s011 = readFromTexture(tex, offset + p1.z + p1.y * gdZ + p0.x * gdYZ, texDim);\n vec4 s111 = readFromTexture(tex, offset + p1.z + p1.y * gdZ + p1.x * gdYZ, texDim);\n vec4 s00 = mix(s000, s100, pd.x);\n vec4 s01 = mix(s001, s101, pd.x);\n vec4 s10 = mix(s010, s110, pd.x);\n vec4 s11 = mix(s011, s111, pd.x);\n vec4 s0 = mix(s00, s10, pd.y);\n vec4 s1 = mix(s01, s11, pd.y);\n return mix(s0, s1, pd.z);\n}\n",texture3d_from_2d_linear:"\nvec4 texture3dFrom2dLinear(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) {\n float zSlice0 = floor(pos.z * gridDim.z);\n float column0 = intMod(zSlice0 * gridDim.x, texDim.x) / gridDim.x;\n float row0 = floor(intDiv(zSlice0 * gridDim.x, texDim.x));\n vec2 coord0 = (vec2(column0 * gridDim.x, row0 * gridDim.y) + (pos.xy * gridDim.xy)) / texDim;\n vec4 color0 = texture2D(tex, coord0);\n\n float zSlice1 = zSlice0 + 1.0;\n float column1 = intMod(zSlice1 * gridDim.x, texDim.x) / gridDim.x;\n float row1 = floor(intDiv(zSlice1 * gridDim.x, texDim.x));\n vec2 coord1 = (vec2(column1 * gridDim.x, row1 * gridDim.y) + (pos.xy * gridDim.xy)) / texDim;\n vec4 color1 = texture2D(tex, coord1);\n\n float delta0 = abs((pos.z * gridDim.z) - zSlice0);\n return mix(color0, color1, delta0);\n}\n",texture3d_from_2d_nearest:"\nvec4 texture3dFrom2dNearest(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) {\n float zSlice = floor(pos.z * gridDim.z + 0.5); // round to nearest z-slice\n float column = intMod(zSlice * gridDim.x, texDim.x) / gridDim.x;\n float row = floor(intDiv(zSlice * gridDim.x, texDim.x));\n vec2 coord = (vec2(column * gridDim.x, row * gridDim.y) + (pos.xy * gridDim.xy)) / texDim;\n return texture2D(tex, coord);\n}\n",wboit_write:"\n#if defined(dRenderVariant_colorWboit)\n if (uRenderMask == MaskOpaque) {\n if (preFogAlpha < 1.0) {\n discard;\n }\n } else if (uRenderMask == MaskTransparent) {\n if (preFogAlpha != 1.0 && fragmentDepth < getDepth(gl_FragCoord.xy / uDrawingBufferSize)) {\n #ifdef dTransparentBackfaces_off\n if (interior) discard;\n #endif\n float alpha = gl_FragColor.a;\n float wboitWeight = alpha * clamp(pow(1.0 - fragmentDepth, 2.0), 0.01, 1.0);\n gl_FragColor = vec4(gl_FragColor.rgb * alpha * wboitWeight, alpha);\n // extra alpha is to handle pre-multiplied alpha\n #ifndef dGeometryType_directVolume\n gl_FragData[1] = vec4((uTransparentBackground ? alpha : 1.0) * alpha * wboitWeight);\n #else\n gl_FragData[1] = vec4(alpha * alpha * wboitWeight);\n #endif\n } else {\n discard;\n }\n }\n#endif\n",dpoit_write:"\n#if defined(dRenderVariant_colorDpoit)\n if (uRenderMask == MaskOpaque) {\n if (preFogAlpha < 1.0) {\n discard;\n }\n } else if (uRenderMask == MaskTransparent) {\n vec2 coords = gl_FragCoord.xy / uDrawingBufferSize;\n if (preFogAlpha != 1.0 && fragmentDepth < getDepth(coords)) {\n #ifdef dTransparentBackfaces_off\n if (interior) discard;\n #endif\n\n // adapted from https://github.com/tsherif/webgl2examples\n // The MIT License, Copyright 2017 Tarek Sherif, Shuai Shao\n\n vec2 lastDepth = texture2D(tDpoitDepth, coords).rg;\n vec4 lastFrontColor = texture2D(tDpoitFrontColor, coords);\n\n vec4 fragColor = gl_FragColor;\n\n // depth value always increases\n // so we can use MAX blend equation\n gl_FragData[2].rg = vec2(-MAX_DPOIT_DEPTH);\n\n // front color always increases\n // so we can use MAX blend equation\n gl_FragColor = lastFrontColor;\n\n // back color is separately blend afterwards each pass\n gl_FragData[1] = vec4(0.0);\n\n float nearestDepth = -lastDepth.x;\n float furthestDepth = lastDepth.y;\n float alphaMultiplier = 1.0 - lastFrontColor.a;\n\n if (fragmentDepth < nearestDepth || fragmentDepth > furthestDepth) {\n // Skip this depth since it's been peeled.\n return;\n }\n\n if (fragmentDepth > nearestDepth && fragmentDepth < furthestDepth) {\n // This needs to be peeled.\n // The ones remaining after MAX blended for\n // all need-to-peel will be peeled next pass.\n gl_FragData[2].rg = vec2(-fragmentDepth, fragmentDepth);\n return;\n }\n\n // write to back and front color buffer\n if (fragmentDepth == nearestDepth) {\n gl_FragColor.rgb += fragColor.rgb * fragColor.a * alphaMultiplier;\n gl_FragColor.a = 1.0 - alphaMultiplier * (1.0 - fragColor.a);\n } else {\n gl_FragData[1] += fragColor;\n }\n\n } else {\n discard;\n }\n }\n#endif\n"},Ce=/^(?!\/\/)\s*#include\s+(\S+)/gm,Re=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*\+\+i\s*\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g,ke=/[ \t]*\/\/.*\n/g,we=/[ \t]*\/\*[\s\S]*?\*\//g,Oe=/\n{2,}/g;function Se(mt){return mt.replace(Ce,(_t,Me)=>{const Ke=Be[Me];if(!Ke)throw new Error(`empty chunk, '${Me}'`);return Ke}).trim().replace(ke,"\n").replace(we,"\n").replace(Oe,"\n")}function Ne(mt,_t,Me,Ke){let ut="";for(let Kt=parseInt(_t);Kt radius) discard;\n #elif defined(dPointStyle_fuzzy)\n float dist = distance(gl_PointCoord, center);\n float fuzzyAlpha = 1.0 - smoothstep(0.0, radius, dist);\n if (fuzzyAlpha < 0.0001) discard;\n #endif\n\n #if defined(dPointStyle_fuzzy) && defined(dRenderVariant_color)\n material.a *= fuzzyAlpha;\n #endif\n\n #include check_transparency\n\n #if defined(dRenderVariant_pick)\n #include check_picking_alpha\n #ifdef requiredDrawBuffers\n gl_FragColor = vObject;\n gl_FragData[1] = vInstance;\n gl_FragData[2] = vGroup;\n gl_FragData[3] = packDepthToRGBA(fragmentDepth);\n #else\n gl_FragColor = vColor;\n #endif\n #elif defined(dRenderVariant_depth)\n gl_FragColor = material;\n #elif defined(dRenderVariant_marking)\n gl_FragColor = material;\n #elif defined(dRenderVariant_emissive)\n gl_FragColor = material;\n #elif defined(dRenderVariant_color)\n gl_FragColor = material;\n\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #include dpoit_write\n #endif\n}\n",{drawBuffers:"optional"},{},ie),re=be("spheres","\nprecision highp float;\nprecision highp int;\n\n#include common\n#include read_from_texture\n#include common_vert_params\n#include color_vert_params\n#include size_vert_params\n#include common_clip\n\nuniform mat4 uModelView;\nuniform mat4 uInvProjection;\nuniform float uIsOrtho;\n\nuniform vec2 uTexDim;\nuniform sampler2D tPositionGroup;\n\nattribute mat4 aTransform;\nattribute float aInstance;\n\nvarying float vRadius;\nvarying vec3 vPoint;\nvarying vec3 vPointViewPosition;\n\n#include matrix_scale\n\n/**\n * Bounding rectangle of a clipped, perspective-projected 3D Sphere.\n * Michael Mara, Morgan McGuire. 2013\n *\n * Specialization by Arseny Kapoulkine, MIT License Copyright (c) 2018\n * https://github.com/zeux/niagara\n */\nvoid sphereProjection(const in vec3 p, const in float r, const in vec2 mapping) {\n vec3 pr = p * r;\n float pzr2 = p.z * p.z - r * r;\n\n float vx = sqrt(p.x * p.x + pzr2);\n float minx = ((vx * p.x - pr.z) / (vx * p.z + pr.x)) * uProjection[0][0];\n float maxx = ((vx * p.x + pr.z) / (vx * p.z - pr.x)) * uProjection[0][0];\n\n float vy = sqrt(p.y * p.y + pzr2);\n float miny = ((vy * p.y - pr.z) / (vy * p.z + pr.y)) * uProjection[1][1];\n float maxy = ((vy * p.y + pr.z) / (vy * p.z - pr.y)) * uProjection[1][1];\n\n gl_Position.xy = vec2(maxx + minx, maxy + miny) * -0.5;\n gl_Position.xy -= mapping * vec2(maxx - minx, maxy - miny) * 0.5;\n gl_Position.xy *= gl_Position.w;\n}\n\nvoid main(void){\n vec2 mapping = vec2(1.0, 1.0); // vertices 2 and 5\n #if __VERSION__ == 100\n int m = imod(VertexID, 6);\n #else\n int m = VertexID % 6;\n #endif\n if (m == 0) {\n mapping = vec2(-1.0, 1.0);\n } else if (m == 1 || m == 3) {\n mapping = vec2(-1.0, -1.0);\n } else if (m == 4) {\n mapping = vec2(1.0, -1.0);\n }\n\n vec4 positionGroup = readFromTexture(tPositionGroup, VertexID / 6, uTexDim);\n vec3 position = positionGroup.rgb;\n float group = positionGroup.a;\n\n #include assign_color_varying\n #include assign_marker_varying\n #include assign_clipping_varying\n #include assign_size\n\n vRadius = size * matrixScale(uModelView);\n\n vec4 position4 = vec4(position, 1.0);\n vModelPosition = (uModel * aTransform * position4).xyz; // for clipping in frag shader\n\n float d;\n if (uLod.w != 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) {\n d = dot(uCameraPlane.xyz, vModelPosition) + uCameraPlane.w;\n float f = min(\n smoothstep(uLod.x, uLod.x + uLod.z, d),\n 1.0 - smoothstep(uLod.y - uLod.z, uLod.y, d)\n ) * uLod.w;\n vRadius *= f;\n }\n\n vec4 mvPosition = uModelView * aTransform * position4;\n\n #ifdef dApproximate\n vec4 mvCorner = vec4(mvPosition.xyz, 1.0);\n mvCorner.xy += mapping * vRadius;\n gl_Position = uProjection * mvCorner;\n #else\n if (uIsOrtho == 1.0) {\n vec4 mvCorner = vec4(mvPosition.xyz, 1.0);\n mvCorner.xy += mapping * vRadius;\n gl_Position = uProjection * mvCorner;\n } else {\n gl_Position = uProjection * vec4(mvPosition.xyz, 1.0);\n sphereProjection(mvPosition.xyz, vRadius, mapping);\n }\n #endif\n\n vec4 vPoint4 = uInvProjection * gl_Position;\n vPoint = vPoint4.xyz / vPoint4.w;\n vPointViewPosition = -mvPosition.xyz / mvPosition.w;\n\n if (gl_Position.z < -gl_Position.w) {\n mvPosition.z -= 2.0 * vRadius; // avoid clipping\n gl_Position.z = (uProjection * vec4(mvPosition.xyz, 1.0)).z;\n }\n\n if (uLod.w != 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) {\n if (d < uLod.x || d > uLod.y) {\n // move out of [ -w, +w ] to 'discard' in vert shader\n gl_Position.z = 2.0 * gl_Position.w;\n }\n }\n\n #if defined(dClipPrimitive) && !defined(dClipVariant_instance) && dClipObjectCount != 0\n if (clipTest(vec4(vModelPosition.xyz, 0.0))) {\n // move out of [ -w, +w ] to 'discard' in vert shader\n gl_Position.z = 2.0 * gl_Position.w;\n }\n #else\n #include clip_instance\n #endif\n}\n","\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include common_clip\n\nuniform mat4 uInvView;\nuniform float uAlphaThickness;\n\nvarying float vRadius;\nvarying vec3 vPoint;\nvarying vec3 vPointViewPosition;\n\n#ifdef dSolidInterior\n const bool solidInterior = true;\n#else\n const bool solidInterior = false;\n#endif\n\nbool SphereImpostor(out vec3 modelPos, out vec3 cameraPos, out vec3 cameraNormal, out bool interior, out float fragmentDepth){\n vec3 cameraSpherePos = -vPointViewPosition;\n\n vec3 rayOrigin = mix(vec3(0.0, 0.0, 0.0), vPoint, uIsOrtho);\n vec3 rayDirection = mix(normalize(vPoint), vec3(0.0, 0.0, 1.0), uIsOrtho);\n vec3 cameraSphereDir = mix(cameraSpherePos, rayOrigin - cameraSpherePos, uIsOrtho);\n\n float B = dot(rayDirection, cameraSphereDir);\n float det = B * B + vRadius * vRadius - dot(cameraSphereDir, cameraSphereDir);\n\n if (det < 0.0) return false;\n\n float sqrtDet = sqrt(det);\n float posT = mix(B + sqrtDet, B - sqrtDet, uIsOrtho);\n float negT = mix(B - sqrtDet, B + sqrtDet, uIsOrtho);\n\n cameraPos = rayDirection * negT + rayOrigin;\n modelPos = (uInvView * vec4(cameraPos, 1.0)).xyz;\n fragmentDepth = calcDepth(cameraPos);\n\n bool objectClipped = false;\n\n #if !defined(dClipPrimitive) && defined(dClipVariant_pixel) && dClipObjectCount != 0\n if (clipTest(vec4(modelPos, 0.0))) {\n objectClipped = true;\n fragmentDepth = -1.0;\n }\n #endif\n\n if (fragmentDepth > 0.0) {\n cameraNormal = normalize(cameraPos - cameraSpherePos);\n interior = false;\n return true;\n } else if (uDoubleSided || solidInterior) {\n cameraPos = rayDirection * posT + rayOrigin;\n modelPos = (uInvView * vec4(cameraPos, 1.0)).xyz;\n fragmentDepth = calcDepth(cameraPos);\n cameraNormal = -normalize(cameraPos - cameraSpherePos);\n interior = true;\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (!objectClipped) {\n fragmentDepth = 0.0 + (0.0000001 / vRadius);\n cameraNormal = -mix(normalize(vPoint), vec3(0.0, 0.0, 1.0), uIsOrtho);\n }\n #endif\n return true;\n }\n }\n\n return false;\n}\n\nvoid main(void){\n vec3 cameraNormal;\n float fragmentDepth;\n\n #ifdef dApproximate\n vec3 pointDir = -vPointViewPosition - vPoint;\n if (dot(pointDir, pointDir) > vRadius * vRadius) discard;\n vec3 vViewPosition = -vPointViewPosition;\n fragmentDepth = gl_FragCoord.z;\n #if !defined(dIgnoreLight) || defined(dXrayShaded)\n pointDir.z -= cos(length(pointDir) / vRadius);\n cameraNormal = -normalize(pointDir / vRadius);\n #endif\n interior = false;\n #else\n vec3 modelPos;\n vec3 cameraPos;\n bool hit = SphereImpostor(modelPos, cameraPos, cameraNormal, interior, fragmentDepth);\n if (!hit) discard;\n\n if (fragmentDepth < 0.0) discard;\n if (fragmentDepth > 1.0) discard;\n\n gl_FragDepthEXT = fragmentDepth;\n\n vec3 vModelPosition = modelPos;\n vec3 vViewPosition = cameraPos;\n #endif\n\n #include fade_lod\n #if !defined(dClipPrimitive) && defined(dClipVariant_pixel) && dClipObjectCount != 0\n #include clip_pixel\n #endif\n #include assign_material_color\n\n #if defined(dRenderVariant_color)\n if (uRenderMask == MaskTransparent && uAlphaThickness > 0.0) {\n material.a *= min(1.0, vRadius / uAlphaThickness);\n }\n #endif\n\n #include check_transparency\n\n #if defined(dRenderVariant_pick)\n #include check_picking_alpha\n #ifdef requiredDrawBuffers\n gl_FragColor = vObject;\n gl_FragData[1] = vInstance;\n gl_FragData[2] = vGroup;\n gl_FragData[3] = packDepthToRGBA(fragmentDepth);\n #else\n gl_FragColor = vColor;\n #endif\n #elif defined(dRenderVariant_depth)\n gl_FragColor = material;\n #elif defined(dRenderVariant_marking)\n gl_FragColor = material;\n #elif defined(dRenderVariant_emissive)\n gl_FragColor = material;\n #elif defined(dRenderVariant_color)\n vec3 normal = -cameraNormal;\n #include apply_light_color\n\n #include apply_interior_color\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #include dpoit_write\n #endif\n}\n",{fragDepth:"required",drawBuffers:"optional"},{},Te),ve=be("cylinders","\nprecision highp float;\nprecision highp int;\n\n#include common\n#include read_from_texture\n#include common_vert_params\n#include color_vert_params\n#include size_vert_params\n#include common_clip\n\nuniform mat4 uModelView;\n\nattribute mat4 aTransform;\nattribute float aInstance;\nattribute float aGroup;\n\nattribute vec3 aMapping;\nattribute vec3 aStart;\nattribute vec3 aEnd;\nattribute float aScale;\nattribute float aCap;\nattribute float aColorMode;\n\nvarying mat4 vTransform;\nvarying vec3 vStart;\nvarying vec3 vEnd;\nvarying float vSize;\nvarying float vCap;\n\nuniform float uIsOrtho;\nuniform vec3 uCameraDir;\n\nvoid main() {\n #include assign_group\n #include assign_color_varying\n #include assign_marker_varying\n #include assign_clipping_varying\n #include assign_size\n\n mat4 modelTransform = uModel * aTransform;\n\n vTransform = aTransform;\n vStart = (modelTransform * vec4(aStart, 1.0)).xyz;\n vEnd = (modelTransform * vec4(aEnd, 1.0)).xyz;\n vSize = size * aScale;\n vCap = aCap;\n\n vModelPosition = (vStart + vEnd) * 0.5;\n vec3 camDir = -mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho);\n vec3 dir = vEnd - vStart;\n float f = aMapping.x > 0.0 ? 1.0 : 0.0;\n // ensure cylinder 'dir' is pointing towards the camera\n if(dot(camDir, dir) < 0.0) {\n dir = -dir;\n f = 1.0 - f;\n }\n\n vec3 left = cross(camDir, dir);\n vec3 up = cross(left, dir);\n left = vSize * normalize(left);\n up = vSize * normalize(up);\n\n // move vertex in object-space from center to corner\n vModelPosition += aMapping.x * dir + aMapping.y * left + aMapping.z * up;\n\n vec4 mvPosition = uView * vec4(vModelPosition, 1.0);\n vViewPosition = mvPosition.xyz;\n gl_Position = uProjection * mvPosition;\n\n if (gl_Position.z < -gl_Position.w) {\n mvPosition.z -= 2.0 * (length(vEnd - vStart) + vSize); // avoid clipping\n gl_Position.z = (uProjection * mvPosition).z;\n }\n\n #if defined(dDualColor) && defined(dRenderVariant_color) && (defined(dColorType_group) || defined(dColorType_groupInstance))\n // dual-color mixing\n // - for aColorMode between 0 and 1 use aColorMode to interpolate\n // - for aColorMode == 2 do nothing, i.e., use vColor\n // - for aColorMode == 3 use position on cylinder axis to interpolate\n if (aColorMode <= 1.0){\n vColor.rgb = mix(vColor.rgb, color2.rgb, aColorMode);\n } else if (aColorMode == 3.0) {\n vColor.rgb = mix(vColor.rgb, color2.rgb, mix(-0.25, 1.25, f / 1.5));\n }\n #endif\n\n #include clip_instance\n}\n","\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\nuniform mat4 uView;\n\nvarying mat4 vTransform;\nvarying vec3 vStart;\nvarying vec3 vEnd;\nvarying float vSize;\nvarying float vCap;\n\nuniform vec3 uCameraDir;\nuniform vec3 uCameraPosition;\nuniform mat4 uInvView;\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include common_clip\n\n#ifdef dSolidInterior\n const bool solidInterior = true;\n#else\n const bool solidInterior = false;\n#endif\n\n// adapted from https://www.shadertoy.com/view/4lcSRn\n// The MIT License, Copyright 2016 Inigo Quilez\nbool CylinderImpostor(\n in vec3 rayOrigin, in vec3 rayDir,\n in vec3 start, in vec3 end, in float radius,\n out vec3 cameraNormal, out bool interior,\n out vec3 modelPosition, out vec3 viewPosition, out float fragmentDepth\n){\n vec3 ba = end - start;\n vec3 oc = rayOrigin - start;\n\n float baba = dot(ba, ba);\n float bard = dot(ba, rayDir);\n float baoc = dot(ba, oc);\n\n float k2 = baba - bard * bard;\n float k1 = baba * dot(oc, rayDir) - baoc * bard;\n float k0 = baba * dot(oc, oc) - baoc * baoc - radius * radius * baba;\n\n float h = k1 * k1 - k2 * k0;\n if (h < 0.0) return false;\n\n bool topCap = (vCap > 0.9 && vCap < 1.1) || vCap >= 2.9;\n bool bottomCap = (vCap > 1.9 && vCap < 2.1) || vCap >= 2.9;\n\n #ifdef dSolidInterior\n bool topInterior = !topCap;\n bool bottomInterior = !bottomCap;\n topCap = true;\n bottomCap = true;\n #else\n bool topInterior = false;\n bool bottomInterior = false;\n #endif\n\n bool clipped = false;\n bool objectClipped = false;\n\n // body outside\n h = sqrt(h);\n float t = (-k1 - h) / k2;\n float y = baoc + t * bard;\n if (y > 0.0 && y < baba) {\n interior = false;\n cameraNormal = (oc + t * rayDir - ba * y / baba) / radius;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n if (clipTest(vec4(modelPosition, 0.0))) {\n objectClipped = true;\n fragmentDepth = -1.0;\n #ifdef dSolidInterior\n topCap = !topInterior;\n bottomCap = !bottomInterior;\n #endif\n }\n #endif\n if (fragmentDepth > 0.0) return true;\n clipped = true;\n }\n\n if (!clipped) {\n if (topCap && y < 0.0) {\n // top cap\n t = -baoc / bard;\n if (abs(k1 + k2 * t) < h) {\n interior = topInterior;\n cameraNormal = -ba / baba;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n if (clipTest(vec4(modelPosition, 0.0))) {\n objectClipped = true;\n fragmentDepth = -1.0;\n #ifdef dSolidInterior\n topCap = !topInterior;\n bottomCap = !bottomInterior;\n #endif\n }\n #endif\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (interior) cameraNormal = -rayDir;\n #endif\n return true;\n }\n }\n } else if (bottomCap && y >= 0.0) {\n // bottom cap\n t = (baba - baoc) / bard;\n if (abs(k1 + k2 * t) < h) {\n interior = bottomInterior;\n cameraNormal = ba / baba;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n if (clipTest(vec4(modelPosition, 0.0))) {\n objectClipped = true;\n fragmentDepth = -1.0;\n #ifdef dSolidInterior\n topCap = !topInterior;\n bottomCap = !bottomInterior;\n #endif\n }\n #endif\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (interior) cameraNormal = -rayDir;\n #endif\n return true;\n }\n }\n }\n }\n\n if (uDoubleSided || solidInterior) {\n // body inside\n h = -h;\n t = (-k1 - h) / k2;\n y = baoc + t * bard;\n if (y > 0.0 && y < baba) {\n interior = true;\n cameraNormal = -(oc + t * rayDir - ba * y / baba) / radius;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (!objectClipped) {\n fragmentDepth = 0.0 + (0.0000002 / vSize);\n cameraNormal = -rayDir;\n }\n #endif\n return true;\n }\n }\n\n if (topCap && y < 0.0) {\n // top cap\n t = -baoc / bard;\n if (abs(k1 + k2 * t) < -h) {\n interior = true;\n cameraNormal = ba / baba;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (!objectClipped) {\n fragmentDepth = 0.0 + (0.0000002 / vSize);\n cameraNormal = -rayDir;\n }\n #endif\n return true;\n }\n }\n } else if (bottomCap && y >= 0.0) {\n // bottom cap\n t = (baba - baoc) / bard;\n if (abs(k1 + k2 * t) < -h) {\n interior = true;\n cameraNormal = -ba / baba;\n modelPosition = rayOrigin + t * rayDir;\n viewPosition = (uView * vec4(modelPosition, 1.0)).xyz;\n fragmentDepth = calcDepth(viewPosition);\n if (fragmentDepth > 0.0) {\n #ifdef dSolidInterior\n if (!objectClipped) {\n fragmentDepth = 0.0 + (0.0000002 / vSize);\n cameraNormal = -rayDir;\n }\n #endif\n return true;\n }\n }\n }\n }\n\n return false;\n}\n\nvoid main() {\n vec3 rayOrigin = vModelPosition;\n vec3 rayDir = mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho);\n\n vec3 cameraNormal;\n vec3 modelPosition;\n vec3 viewPosition;\n float fragmentDepth;\n bool hit = CylinderImpostor(rayOrigin, rayDir, vStart, vEnd, vSize, cameraNormal, interior, modelPosition, viewPosition, fragmentDepth);\n if (!hit) discard;\n\n if (fragmentDepth < 0.0) discard;\n if (fragmentDepth > 1.0) discard;\n\n gl_FragDepthEXT = fragmentDepth;\n\n vec3 vViewPosition = viewPosition;\n vec3 vModelPosition = modelPosition;\n\n #include fade_lod\n #include clip_pixel\n #include assign_material_color\n #include check_transparency\n\n #if defined(dRenderVariant_pick)\n #include check_picking_alpha\n #ifdef requiredDrawBuffers\n gl_FragColor = vObject;\n gl_FragData[1] = vInstance;\n gl_FragData[2] = vGroup;\n gl_FragData[3] = packDepthToRGBA(fragmentDepth);\n #else\n gl_FragColor = vColor;\n #endif\n #elif defined(dRenderVariant_depth)\n gl_FragColor = material;\n #elif defined(dRenderVariant_marking)\n gl_FragColor = material;\n #elif defined(dRenderVariant_emissive)\n gl_FragColor = material;\n #elif defined(dRenderVariant_color)\n mat3 normalMatrix = transpose3(inverse3(mat3(uView)));\n vec3 normal = normalize(normalMatrix * -normalize(cameraNormal));\n #include apply_light_color\n\n #include apply_interior_color\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #include dpoit_write\n #endif\n}\n",{fragDepth:"required",drawBuffers:"optional"},{},Te),ce=be("text","\nprecision highp float;\nprecision highp int;\n\n#include common\n#include read_from_texture\n#include common_vert_params\n#include color_vert_params\n#include size_vert_params\n#include common_clip\n\nuniform mat4 uModelView;\n\nattribute vec3 aPosition;\nattribute vec2 aMapping;\nattribute float aDepth;\nattribute vec2 aTexCoord;\nattribute mat4 aTransform;\nattribute float aInstance;\nattribute float aGroup;\n\nuniform float uOffsetX;\nuniform float uOffsetY;\nuniform float uOffsetZ;\n\nuniform float uIsOrtho;\nuniform float uPixelRatio;\nuniform vec4 uViewport;\n\nvarying vec2 vTexCoord;\n\n#include matrix_scale\n\nvoid main(void){\n #include assign_group\n #include assign_color_varying\n #include assign_marker_varying\n #include assign_clipping_varying\n #include assign_size\n\n vTexCoord = aTexCoord;\n\n float scale = matrixScale(uModelView);\n\n float offsetX = uOffsetX * scale;\n float offsetY = uOffsetY * scale;\n float offsetZ = (uOffsetZ + aDepth * 0.95) * scale;\n\n vec4 position4 = vec4(aPosition, 1.0);\n vec4 mvPosition = uModelView * aTransform * position4;\n\n vModelPosition = (uModel * aTransform * position4).xyz; // for clipping in frag shader\n\n // TODO\n // #ifdef FIXED_SIZE\n // if (ortho) {\n // scale /= pixelRatio * ((uViewport.w / 2.0) / -uCameraPosition.z) * 0.1;\n // } else {\n // scale /= pixelRatio * ((uViewport.w / 2.0) / -mvPosition.z) * 0.1;\n // }\n // #endif\n\n vec4 mvCorner = vec4(mvPosition.xyz, 1.0);\n\n if (vTexCoord.x == 10.0) { // indicates background plane\n // move a bit to the back, taking distance to camera into account to avoid z-fighting\n offsetZ -= 0.001 * distance(uCameraPosition, (uProjection * mvCorner).xyz);\n }\n\n mvCorner.xy += aMapping * size * scale;\n mvCorner.x += offsetX;\n mvCorner.y += offsetY;\n\n if (uIsOrtho == 1.0) {\n mvCorner.z += offsetZ;\n } else {\n mvCorner.xyz += normalize(-mvCorner.xyz) * offsetZ;\n }\n\n gl_Position = uProjection * mvCorner;\n\n vViewPosition = -mvCorner.xyz;\n\n #include clip_instance\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include common_clip\n\nuniform sampler2D tFont;\n\nuniform vec3 uBorderColor;\nuniform float uBorderWidth;\nuniform vec3 uBackgroundColor;\nuniform float uBackgroundOpacity;\n\nvarying vec2 vTexCoord;\n\nconst float smoothness = 32.0;\nconst float gamma = 2.2;\n\nvoid main2(){\n gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n}\n\nvoid main(){\n #include fade_lod\n #include clip_pixel\n\n float fragmentDepth = gl_FragCoord.z;\n #include assign_material_color\n\n if (vTexCoord.x > 1.0) {\n #if defined(dRenderVariant_color)\n material = vec4(uBackgroundColor, uBackgroundOpacity * material.a);\n #endif\n } else {\n // retrieve signed distance\n float sdf = texture2D(tFont, vTexCoord).a + uBorderWidth;\n\n // perform adaptive anti-aliasing of the edges\n float w = clamp(smoothness * (abs(dFdx(vTexCoord.x)) + abs(dFdy(vTexCoord.y))), 0.0, 0.5);\n float a = clamp(0.0, 1.0, smoothstep(0.5 - w, 0.5 + w, sdf));\n\n // gamma correction for linear attenuation\n a = pow(a, 1.0 / gamma);\n\n if (a < 0.5) discard;\n\n #if defined(dRenderVariant_color)\n // add border\n float t = 0.5 + uBorderWidth;\n if (uBorderWidth > 0.0 && sdf < t) {\n material.xyz = mix(uBorderColor, material.xyz, smoothstep(t - w, t, sdf));\n }\n #endif\n }\n\n #include check_transparency\n\n #if defined(dRenderVariant_pick)\n #include check_picking_alpha\n #ifdef requiredDrawBuffers\n gl_FragColor = vObject;\n gl_FragData[1] = vInstance;\n gl_FragData[2] = vGroup;\n gl_FragData[3] = packDepthToRGBA(fragmentDepth);\n #else\n gl_FragColor = vColor;\n #endif\n #elif defined(dRenderVariant_depth)\n gl_FragColor = material;\n #elif defined(dRenderVariant_marking)\n gl_FragColor = material;\n #elif defined(dRenderVariant_emissive)\n gl_FragColor = material;\n #elif defined(dRenderVariant_color)\n gl_FragColor = material;\n\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #include dpoit_write\n #endif\n}\n",{drawBuffers:"optional"},{},ie),se=be("lines","\nprecision highp float;\nprecision highp int;\n\n#include common\n#include read_from_texture\n#include common_vert_params\n#include color_vert_params\n#include size_vert_params\n#include common_clip\n\nuniform float uPixelRatio;\nuniform vec4 uViewport;\n\nattribute mat4 aTransform;\nattribute float aInstance;\nattribute float aGroup;\n\nattribute vec2 aMapping;\nattribute vec3 aStart;\nattribute vec3 aEnd;\n\nvoid trimSegment(const in vec4 start, inout vec4 end) {\n // trim end segment so it terminates between the camera plane and the near plane\n // conservative estimate of the near plane\n float a = uProjection[2][2]; // 3rd entry in 3rd column\n float b = uProjection[3][2]; // 3rd entry in 4th column\n float nearEstimate = -0.5 * b / a;\n float alpha = (nearEstimate - start.z) / (end.z - start.z);\n end.xyz = mix(start.xyz, end.xyz, alpha);\n}\n\nvoid main(){\n float aspect = uViewport.z / uViewport.w;\n\n #include assign_group\n #include assign_color_varying\n #include assign_marker_varying\n #include assign_clipping_varying\n #include assign_size\n\n mat4 modelView = uView * uModel * aTransform;\n\n // camera space\n vec4 start = modelView * vec4(aStart, 1.0);\n vec4 end = modelView * vec4(aEnd, 1.0);\n\n // assign position\n vec4 position4 = vec4((aMapping.y < 0.5) ? aStart : aEnd, 1.0);\n vec4 mvPosition = modelView * position4;\n vViewPosition = mvPosition.xyz;\n\n vModelPosition = (uModel * aTransform * position4).xyz; // for clipping in frag shader\n\n // special case for perspective projection, and segments that terminate either in, or behind, the camera plane\n // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space\n // but we need to perform ndc-space calculations in the shader, so we must address this issue directly\n // perhaps there is a more elegant solution -- WestLangley\n bool perspective = (uProjection[2][3] == -1.0); // 4th entry in the 3rd column\n if (perspective) {\n if (start.z < 0.0 && end.z >= 0.0) {\n trimSegment(start, end);\n } else if (end.z < 0.0 && start.z >= 0.0) {\n trimSegment(end, start);\n }\n }\n\n // clip space\n vec4 clipStart = uProjection * start;\n vec4 clipEnd = uProjection * end;\n\n // ndc space\n vec2 ndcStart = clipStart.xy / clipStart.w;\n vec2 ndcEnd = clipEnd.xy / clipEnd.w;\n\n // direction\n vec2 dir = ndcEnd - ndcStart;\n\n // account for clip-space aspect ratio\n dir.x *= aspect;\n dir = normalize(dir);\n\n // perpendicular to dir\n vec2 offset = vec2(dir.y, - dir.x);\n\n // undo aspect ratio adjustment\n dir.x /= aspect;\n offset.x /= aspect;\n\n // sign flip\n if (aMapping.x < 0.0) offset *= -1.0;\n\n // calculate linewidth\n float linewidth;\n #ifdef dLineSizeAttenuation\n linewidth = size * uPixelRatio * ((uViewport.w / 2.0) / -start.z) * 5.0;\n #else\n linewidth = size * uPixelRatio;\n #endif\n linewidth = max(1.0, linewidth);\n\n // adjust for linewidth\n offset *= linewidth;\n\n // adjust for clip-space to screen-space conversion\n offset /= uViewport.w;\n\n // select end\n vec4 clip = (aMapping.y < 0.5) ? clipStart : clipEnd;\n\n // back to clip space\n offset *= clip.w;\n clip.xy += offset;\n gl_Position = clip;\n\n #include clip_instance\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include common_clip\n\nvoid main(){\n #include fade_lod\n #include clip_pixel\n\n float fragmentDepth = gl_FragCoord.z;\n #include assign_material_color\n #include check_transparency\n\n #if defined(dRenderVariant_pick)\n #include check_picking_alpha\n #ifdef requiredDrawBuffers\n gl_FragColor = vObject;\n gl_FragData[1] = vInstance;\n gl_FragData[2] = vGroup;\n gl_FragData[3] = packDepthToRGBA(fragmentDepth);\n #else\n gl_FragColor = vColor;\n #endif\n #elif defined(dRenderVariant_depth)\n gl_FragColor = material;\n #elif defined(dRenderVariant_marking)\n gl_FragColor = material;\n #elif defined(dRenderVariant_emissive)\n gl_FragColor = material;\n #elif defined(dRenderVariant_color)\n gl_FragColor = material;\n\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #include dpoit_write\n #endif\n}\n",{drawBuffers:"optional"},{},ie),ae=be("mesh","\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n#include common\n#include read_from_texture\n#include common_vert_params\n#include color_vert_params\n#include common_clip\n#include texture3d_from_2d_linear\n\n#ifdef dGeometryType_textureMesh\n uniform vec2 uGeoTexDim;\n uniform sampler2D tPosition;\n uniform sampler2D tGroup;\n uniform sampler2D tNormal;\n#else\n attribute vec3 aPosition;\n attribute float aGroup;\n attribute vec3 aNormal;\n#endif\nattribute mat4 aTransform;\nattribute float aInstance;\n\nvarying vec3 vNormal;\n\nvoid main(){\n #include assign_group\n #include assign_marker_varying\n #include assign_clipping_varying\n #include assign_position\n #include assign_color_varying\n #include clip_instance\n\n #ifdef dGeometryType_textureMesh\n vec3 normal = readFromTexture(tNormal, VertexID, uGeoTexDim).xyz;\n #else\n vec3 normal = aNormal;\n #endif\n mat3 normalMatrix = transpose3(inverse3(mat3(modelView)));\n vec3 transformedNormal = normalize(normalMatrix * normalize(normal));\n #if defined(dFlipSided)\n if (!uDoubleSided) { // TODO checking uDoubleSided should not be required, ASR\n transformedNormal = -transformedNormal;\n }\n #endif\n vNormal = transformedNormal;\n}\n","\nprecision highp float;\nprecision highp int;\n\n#define bumpEnabled\n\n#include common\n#include common_frag_params\n#include color_frag_params\n#include light_frag_params\n#include normal_frag_params\n#include common_clip\n\nvoid main() {\n #include fade_lod\n #include clip_pixel\n\n // Workaround for buggy gl_FrontFacing (e.g. on some integrated Intel GPUs)\n vec3 fdx = dFdx(vViewPosition);\n vec3 fdy = dFdy(vViewPosition);\n vec3 faceNormal = normalize(cross(fdx,fdy));\n bool frontFacing = dot(vNormal, faceNormal) > 0.0;\n\n #if defined(dFlipSided)\n interior = frontFacing;\n #else\n interior = !frontFacing;\n #endif\n\n float fragmentDepth = gl_FragCoord.z;\n #include assign_material_color\n #include check_transparency\n\n #if defined(dRenderVariant_pick)\n #include check_picking_alpha\n #ifdef requiredDrawBuffers\n gl_FragColor = vObject;\n gl_FragData[1] = vInstance;\n gl_FragData[2] = vGroup;\n gl_FragData[3] = packDepthToRGBA(fragmentDepth);\n #else\n gl_FragColor = vColor;\n #endif\n #elif defined(dRenderVariant_depth)\n gl_FragColor = material;\n #elif defined(dRenderVariant_marking)\n gl_FragColor = material;\n #elif defined(dRenderVariant_emissive)\n gl_FragColor = material;\n #elif defined(dRenderVariant_color)\n #if defined(dFlatShaded)\n vec3 normal = -faceNormal;\n #else\n vec3 normal = -normalize(vNormal);\n if (uDoubleSided) normal *= float(frontFacing) * 2.0 - 1.0;\n #endif\n #include apply_light_color\n\n #include apply_interior_color\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #include dpoit_write\n #endif\n}\n",{drawBuffers:"optional"},{},Te),ge=be("direct-volume","\nprecision highp float;\n\nattribute vec3 aPosition;\nattribute mat4 aTransform;\nattribute float aInstance;\n\nuniform mat4 uModelView;\nuniform mat4 uProjection;\nuniform vec4 uInvariantBoundingSphere;\n\nvarying vec3 vOrigPos;\nvarying float vInstance;\nvarying vec4 vBoundingSphere;\nvarying mat4 vTransform;\n\nuniform vec3 uBboxSize;\nuniform vec3 uBboxMin;\nuniform vec3 uBboxMax;\nuniform vec3 uGridDim;\nuniform mat4 uTransform;\n\nuniform mat4 uUnitToCartn;\n\nvoid main() {\n vec4 unitCoord = vec4(aPosition + vec3(0.5), 1.0);\n vec4 mvPosition = uModelView * aTransform * uUnitToCartn * unitCoord;\n\n vOrigPos = (aTransform * uUnitToCartn * unitCoord).xyz;\n vInstance = aInstance;\n vBoundingSphere = vec4(\n (aTransform * vec4(uInvariantBoundingSphere.xyz, 1.0)).xyz,\n uInvariantBoundingSphere.w\n );\n vTransform = aTransform;\n\n gl_Position = uProjection * mvPosition;\n\n // move z position to near clip plane (but not too close to get precision issues)\n gl_Position.z = gl_Position.w - 0.01;\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include common\n#include light_frag_params\n\n#if dClipObjectCount != 0\n uniform int uClipObjectType[dClipObjectCount];\n uniform bool uClipObjectInvert[dClipObjectCount];\n uniform vec3 uClipObjectPosition[dClipObjectCount];\n uniform vec4 uClipObjectRotation[dClipObjectCount];\n uniform vec3 uClipObjectScale[dClipObjectCount];\n#endif\n#include common_clip\n\n#include read_from_texture\n#include texture3d_from_1d_trilinear\n#include texture3d_from_2d_nearest\n#include texture3d_from_2d_linear\n\nuniform mat4 uProjection, uTransform, uModelView, uModel, uView;\nuniform vec3 uCameraDir;\n\nuniform sampler2D tDepth;\nuniform vec2 uDrawingBufferSize;\n\nvarying vec3 vOrigPos;\nvarying float vInstance;\nvarying vec4 vBoundingSphere;\nvarying mat4 vTransform;\n\nuniform mat4 uInvView;\nuniform vec3 uGridDim;\nuniform vec3 uBboxSize;\nuniform sampler2D tTransferTex;\nuniform float uTransferScale;\nuniform float uStepScale;\nuniform float uJumpLength;\n\nuniform int uObjectId;\nuniform int uVertexCount;\nuniform int uInstanceCount;\nuniform int uGroupCount;\n\n#if defined(dColorMarker)\n uniform vec3 uHighlightColor;\n uniform vec3 uSelectColor;\n uniform vec3 uDimColor;\n uniform float uHighlightStrength;\n uniform float uSelectStrength;\n uniform float uDimStrength;\n uniform int uMarkerPriority;\n uniform float uMarkerAverage;\n\n uniform float uMarker;\n uniform vec2 uMarkerTexDim;\n uniform sampler2D tMarker;\n#endif\n\nuniform float uMetalness;\nuniform float uRoughness;\nuniform float uEmissive;\n\nuniform bool uFog;\nuniform float uFogNear;\nuniform float uFogFar;\nuniform vec3 uFogColor;\n\nuniform float uAlpha;\nuniform bool uTransparentBackground;\nuniform float uXrayEdgeFalloff;\nuniform float uExposure;\n\nuniform int uRenderMask;\n\nuniform float uNear;\nuniform float uFar;\nuniform float uIsOrtho;\n\nuniform vec3 uCellDim;\nuniform vec3 uCameraPosition;\nuniform mat4 uCartnToUnit;\n\n#if __VERSION__ != 100\n // for webgl1 this is given as a 'define'\n uniform int uMaxSteps;\n#endif\n\n#if defined(dGridTexType_2d)\n precision highp sampler2D;\n uniform sampler2D tGridTex;\n uniform vec3 uGridTexDim;\n#elif defined(dGridTexType_3d)\n precision highp sampler3D;\n uniform sampler3D tGridTex;\n#endif\n\n#if defined(dColorType_uniform)\n uniform vec3 uColor;\n#elif defined(dColorType_texture)\n uniform vec2 uColorTexDim;\n uniform sampler2D tColor;\n#endif\n\n#ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance)\n uniform vec2 uOverpaintTexDim;\n uniform sampler2D tOverpaint;\n #endif\n#endif\n\n#ifdef dUsePalette\n uniform sampler2D tPalette;\n#endif\n\n#if defined(dGridTexType_2d)\n vec4 textureVal(vec3 pos) {\n return texture3dFrom2dLinear(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);\n }\n vec4 textureGroup(vec3 pos) {\n return texture3dFrom2dNearest(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy);\n }\n#elif defined(dGridTexType_3d)\n vec4 textureVal(vec3 pos) {\n return texture(tGridTex, pos + (vec3(0.5) / uGridDim));\n }\n vec4 textureGroup(vec3 pos) {\n return texelFetch(tGridTex, ivec3(pos * uGridDim), 0);\n }\n#endif\n\nfloat calcDepth(const in vec3 pos) {\n vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw;\n return 0.5 + 0.5 * clipZW.x / clipZW.y;\n}\n\nfloat transferFunction(float value) {\n return texture2D(tTransferTex, vec2(value, 0.0)).a;\n}\n\nfloat getDepth(const in vec2 coords) {\n #ifdef depthTextureSupport\n return texture2D(tDepth, coords).r;\n #else\n return unpackRGBAToDepth(texture2D(tDepth, coords));\n #endif\n}\n\nconst float gradOffset = 0.5;\n\nvec3 v3m4(vec3 p, mat4 m) {\n return (m * vec4(p, 1.0)).xyz;\n}\n\nfloat preFogAlphaBlended = 0.0;\n\nvec4 raymarch(vec3 startLoc, vec3 step, vec3 rayDir) {\n mat3 normalMatrix = transpose3(inverse3(mat3(uModelView * vTransform)));\n mat4 cartnToUnit = uCartnToUnit * inverse4(vTransform);\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n mat4 modelTransform = uModel * vTransform * uTransform;\n #endif\n mat4 modelViewTransform = uModelView * vTransform * uTransform;\n\n vec3 scaleVol = vec3(1.0) / uGridDim;\n vec3 pos = startLoc;\n vec4 cell;\n float prevValue = -1.0;\n float value = 0.0;\n vec4 src = vec4(0.0);\n vec4 dst = vec4(0.0);\n float fragmentDepth;\n\n vec3 posMin = vec3(0.0);\n vec3 posMax = vec3(1.0) - vec3(1.0) / uGridDim;\n\n vec3 unitPos;\n\n vec3 nextPos;\n float nextValue;\n\n vec4 material;\n vec4 overpaint;\n float metalness = uMetalness;\n float roughness = uRoughness;\n float emissive = uEmissive;\n\n vec3 gradient = vec3(1.0);\n vec3 dx = vec3(gradOffset * scaleVol.x, 0.0, 0.0);\n vec3 dy = vec3(0.0, gradOffset * scaleVol.y, 0.0);\n vec3 dz = vec3(0.0, 0.0, gradOffset * scaleVol.z);\n\n float maxDist = min(vBoundingSphere.w * 2.0, uFar - uNear);\n float maxDistSq = maxDist * maxDist;\n\n for (int i = 0; i < uMaxSteps; ++i) {\n // break when beyond bounding-sphere or far-plane\n vec3 distVec = startLoc - pos;\n if (dot(distVec, distVec) > maxDistSq) break;\n\n unitPos = v3m4(pos, cartnToUnit);\n\n // continue when outside of grid\n if (unitPos.x > posMax.x || unitPos.y > posMax.y || unitPos.z > posMax.z ||\n unitPos.x < posMin.x || unitPos.y < posMin.y || unitPos.z < posMin.z\n ) {\n prevValue = value;\n pos += step;\n continue;\n }\n\n cell = textureVal(unitPos);\n value = cell.a; // current voxel value\n\n if (uJumpLength > 0.0 && value < 0.01) {\n nextPos = pos + rayDir * uJumpLength;\n nextValue = textureVal(v3m4(nextPos, cartnToUnit)).a;\n if (nextValue < 0.01) {\n prevValue = nextValue;\n pos = nextPos;\n continue;\n }\n }\n\n vec4 mvPosition = modelViewTransform * vec4(unitPos * uGridDim, 1.0);\n if (calcDepth(mvPosition.xyz) > getDepth(gl_FragCoord.xy / uDrawingBufferSize))\n break;\n\n #if defined(dClipVariant_pixel) && dClipObjectCount != 0\n vec3 vModelPosition = v3m4(unitPos * uGridDim, modelTransform);\n if (clipTest(vec4(vModelPosition, 0.0))) {\n prevValue = value;\n pos += step;\n continue;\n }\n #endif\n\n vec3 vViewPosition = mvPosition.xyz;\n material.a = transferFunction(value);\n\n #ifdef dPackedGroup\n float group = unpackRGBToInt(textureGroup(floor(unitPos * uGridDim + 0.5) / uGridDim).rgb);\n #else\n vec3 g = floor(unitPos * uGridDim + 0.5);\n // note that we swap x and z because the texture is flipped around y\n #if defined(dAxisOrder_012)\n float group = g.z + g.y * uGridDim.z + g.x * uGridDim.z * uGridDim.y; // 210\n #elif defined(dAxisOrder_021)\n float group = g.y + g.z * uGridDim.y + g.x * uGridDim.y * uGridDim.z; // 120\n #elif defined(dAxisOrder_102)\n float group = g.z + g.x * uGridDim.z + g.y * uGridDim.z * uGridDim.x; // 201\n #elif defined(dAxisOrder_120)\n float group = g.x + g.z * uGridDim.x + g.y * uGridDim.x * uGridDim.z; // 021\n #elif defined(dAxisOrder_201)\n float group = g.y + g.x * uGridDim.y + g.z * uGridDim.y * uGridDim.x; // 102\n #elif defined(dAxisOrder_210)\n float group = g.x + g.y * uGridDim.x + g.z * uGridDim.x * uGridDim.y; // 012\n #endif\n #endif\n\n #if defined(dColorType_direct) && defined(dUsePalette)\n material.rgb = texture2D(tPalette, vec2(value, 0.0)).rgb;\n #elif defined(dColorType_uniform)\n material.rgb = uColor;\n #elif defined(dColorType_instance)\n material.rgb = readFromTexture(tColor, vInstance, uColorTexDim).rgb;\n #elif defined(dColorType_group)\n material.rgb = readFromTexture(tColor, group, uColorTexDim).rgb;\n #elif defined(dColorType_groupInstance)\n material.rgb = readFromTexture(tColor, vInstance * float(uGroupCount) + group, uColorTexDim).rgb;\n #elif defined(dColorType_vertex)\n material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, 0.0).rgb;\n #elif defined(dColorType_vertexInstance)\n material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, vInstance * float(uVertexCount)).rgb;\n #endif\n\n #ifdef dOverpaint\n #if defined(dOverpaintType_groupInstance)\n overpaint = readFromTexture(tOverpaint, vInstance * float(uGroupCount) + group, uOverpaintTexDim);\n #elif defined(dOverpaintType_vertexInstance)\n overpaint = texture3dFrom1dTrilinear(tOverpaint, unitPos, uGridDim, uOverpaintTexDim, vInstance * float(uVertexCount));\n #endif\n\n material.rgb = mix(material.rgb, overpaint.rgb, overpaint.a);\n #endif\n\n #if defined(dIgnoreLight)\n gl_FragColor.rgb = material.rgb;\n #else\n if (material.a >= 0.01) {\n #ifdef dPackedGroup\n // compute gradient by central differences\n gradient.x = textureVal(unitPos - dx).a - textureVal(unitPos + dx).a;\n gradient.y = textureVal(unitPos - dy).a - textureVal(unitPos + dy).a;\n gradient.z = textureVal(unitPos - dz).a - textureVal(unitPos + dz).a;\n #else\n gradient = cell.xyz * 2.0 - 1.0;\n #endif\n vec3 normal = -normalize(normalMatrix * normalize(gradient));\n #include apply_light_color\n } else {\n gl_FragColor.rgb = material.rgb;\n }\n #endif\n\n gl_FragColor.a = material.a * uAlpha * uTransferScale;\n\n #if defined(dColorMarker)\n float marker = uMarker;\n if (uMarker == -1.0) {\n marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a;\n marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n #endif\n #include apply_marker_color\n\n preFogAlphaBlended = (1.0 - preFogAlphaBlended) * gl_FragColor.a + preFogAlphaBlended;\n fragmentDepth = calcDepth(mvPosition.xyz);\n #include apply_fog\n\n src = gl_FragColor;\n\n if (!uTransparentBackground) {\n // done in 'apply_fog' otherwise\n src.rgb *= src.a;\n }\n dst = (1.0 - dst.a) * src + dst; // standard blending\n\n // break if the color is opaque enough\n if (dst.a > 0.95)\n break;\n\n pos += step;\n }\n\n return dst;\n}\n\n// TODO: support float texture for higher precision values???\n// TODO: support clipping exclusion texture support\n\nvoid main() {\n #if defined(dRenderVariant_emissive)\n discard;\n #else\n if (gl_FrontFacing)\n discard;\n\n vec3 rayDir = mix(normalize(vOrigPos - uCameraPosition), uCameraDir, uIsOrtho);\n vec3 step = rayDir * uStepScale;\n\n float boundingSphereNear = distance(vBoundingSphere.xyz, uCameraPosition) - vBoundingSphere.w;\n float d = max(uNear, boundingSphereNear) - mix(0.0, distance(vOrigPos, uCameraPosition), uIsOrtho);\n vec3 start = mix(uCameraPosition, vOrigPos, uIsOrtho) + (d * rayDir);\n gl_FragColor = raymarch(start, step, rayDir);\n\n float fragmentDepth = calcDepth((uModelView * vec4(start, 1.0)).xyz);\n float preFogAlpha = clamp(preFogAlphaBlended, 0.0, 1.0);\n #include wboit_write\n #endif\n}\n",{fragDepth:"optional",drawBuffers:"optional"},{},Te),Ie=be("image","\nprecision highp float;\nprecision highp int;\n\n#include common\n#include common_vert_params\n\nattribute vec3 aPosition;\nattribute vec2 aUv;\nattribute mat4 aTransform;\nattribute float aInstance;\n\nvarying vec2 vUv;\nvarying float vInstance;\n\nvoid main() {\n #include assign_position\n\n vUv = aUv;\n vInstance = aInstance;\n}\n","\nprecision highp float;\nprecision highp int;\n\n#include common\n#include read_from_texture\n#include common_frag_params\n#include common_clip\n\nuniform vec2 uImageTexDim;\nuniform sampler2D tImageTex;\nuniform sampler2D tGroupTex;\n\nuniform vec2 uMarkerTexDim;\nuniform sampler2D tMarker;\n\nvarying vec2 vUv;\nvarying float vInstance;\n\n#if defined(dInterpolation_catmulrom) || defined(dInterpolation_mitchell) || defined(dInterpolation_bspline)\n #define dInterpolation_cubic\n#endif\n\n#if defined(dInterpolation_cubic)\n #if defined(dInterpolation_catmulrom) || defined(dInterpolation_mitchell)\n #if defined(dInterpolation_catmulrom)\n const float B = 0.0;\n const float C = 0.5;\n #elif defined(dInterpolation_mitchell)\n const float B = 0.333;\n const float C = 0.333;\n #endif\n\n float cubicFilter(float x){\n float f = x;\n if (f < 0.0) {\n f = -f;\n }\n if (f < 1.0) {\n return ((12.0 - 9.0 * B - 6.0 * C) * (f * f * f) +\n (-18.0 + 12.0 * B + 6.0 * C) * (f * f) +\n (6.0 - 2.0 * B)) / 6.0;\n }else if (f >= 1.0 && f < 2.0){\n return ((-B - 6.0 * C) * ( f * f * f)\n + (6.0 * B + 30.0 * C) * (f * f) +\n (-(12.0 * B) - 48.0 * C) * f +\n 8.0 * B + 24.0 * C) / 6.0;\n }else{\n return 0.0;\n }\n }\n #elif defined(dInterpolation_bspline)\n float cubicFilter(float x) {\n float f = x;\n if (f < 0.0) {\n f = -f;\n }\n if (f >= 0.0 && f <= 1.0){\n return (2.0 / 3.0) + (0.5) * (f * f * f) - (f * f);\n } else if (f > 1.0 && f <= 2.0) {\n return 1.0 / 6.0 * pow((2.0 - f), 3.0);\n }\n return 1.0;\n }\n #endif\n\n vec4 biCubic(sampler2D tex, vec2 texCoord) {\n vec2 texelSize = 1.0 / uImageTexDim;\n texCoord -= texelSize / 2.0;\n vec4 nSum = vec4(0.0);\n float nDenom = 0.0;\n vec2 cell = fract(texCoord * uImageTexDim);\n for (float m = -1.0; m <= 2.0; ++m) {\n for (float n = -1.0; n <= 2.0; ++n) {\n vec4 vecData = texture2D(tex, texCoord + texelSize * vec2(m, n));\n float c = abs(cubicFilter(m - cell.x) * cubicFilter(-n + cell.y));\n nSum += vecData * c;\n nDenom += c;\n }\n }\n return nSum / nDenom;\n }\n#endif\n\nvoid main() {\n #include fade_lod\n #include clip_pixel\n\n #if defined(dInterpolation_cubic)\n vec4 imageData = biCubic(tImageTex, vUv);\n #else\n vec4 imageData = texture2D(tImageTex, vUv);\n #endif\n imageData.a = clamp(imageData.a, 0.0, 1.0);\n if (imageData.a > 0.9) imageData.a = 1.0;\n\n imageData.a *= uAlpha;\n if (imageData.a < 0.05)\n discard;\n\n float fragmentDepth = gl_FragCoord.z;\n\n if ((uRenderMask == MaskOpaque && imageData.a < 1.0) ||\n (uRenderMask == MaskTransparent && imageData.a == 1.0)\n ) {\n discard;\n }\n\n #if defined(dRenderVariant_pick)\n if (imageData.a < 0.3)\n discard;\n #ifdef requiredDrawBuffers\n gl_FragColor = vec4(packIntToRGB(float(uObjectId)), 1.0);\n gl_FragData[1] = vec4(packIntToRGB(vInstance), 1.0);\n gl_FragData[2] = vec4(texture2D(tGroupTex, vUv).rgb, 1.0);\n gl_FragData[3] = packDepthToRGBA(gl_FragCoord.z);\n #else\n gl_FragColor = vColor;\n if (uPickType == 1) {\n gl_FragColor = vec4(packIntToRGB(float(uObjectId)), 1.0);\n } else if (uPickType == 2) {\n gl_FragColor = vec4(packIntToRGB(vInstance), 1.0);\n } else {\n gl_FragColor = vec4(texture2D(tGroupTex, vUv).rgb, 1.0);\n }\n #endif\n #elif defined(dRenderVariant_depth)\n if (imageData.a < 0.05)\n discard;\n gl_FragColor = packDepthToRGBA(gl_FragCoord.z);\n #elif defined(dRenderVariant_marking)\n float marker = uMarker;\n if (uMarker == -1.0) {\n float group = unpackRGBToInt(texture2D(tGroupTex, vUv).rgb);\n marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a;\n marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n if (uMarkingType == 1) {\n if (marker > 0.0 || imageData.a < 0.05)\n discard;\n gl_FragColor = packDepthToRGBA(gl_FragCoord.z);\n } else {\n if (marker == 0.0 || imageData.a < 0.05)\n discard;\n float depthTest = 1.0;\n if (uMarkingDepthTest) {\n depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0;\n }\n bool isHighlight = intMod(marker, 2.0) > 0.1;\n gl_FragColor = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0);\n }\n #elif defined(dRenderVariant_emissive)\n gl_FragColor = vec4(0.0);\n #elif defined(dRenderVariant_color)\n gl_FragColor = imageData;\n\n float marker = uMarker;\n if (uMarker == -1.0) {\n float group = unpackRGBToInt(texture2D(tGroupTex, vUv).rgb);\n marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a;\n marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win\n }\n\n #include apply_marker_color\n #include apply_fog\n #include wboit_write\n #include dpoit_write\n #endif\n}\n",{drawBuffers:"optional"},{},ie);function Le(mt,_t){var Me;if(void 0===mt)return"";const Ke=(null===(Me=mt.dRenderVariant)||void 0===Me?void 0:Me.ref.value)||"",ut=[];for(const Kt in mt){if(_t?.(Kt,Ke,mt))continue;const gt=mt[Kt].ref.value;void 0!==gt&&("string"==typeof gt?ut.push(`#define ${Kt}_${gt}`):"number"==typeof gt?ut.push(`#define ${Kt} ${gt}`):"boolean"==typeof gt?gt&&ut.push(`#define ${Kt}`):(0,r.dr)(gt))}return ut.join("\n")+"\n"}const Lt="\n#define attribute in\n#define varying out\n#define texture2D texture\n",Je="\n#define varying in\n#define texture2D texture\n#define textureCube texture\n#define texture2DLodEXT textureLod\n#define textureCubeLodEXT textureLod\n\n#define gl_FragColor out_FragData0\n#define gl_FragDepthEXT gl_FragDepth\n\n#define depthTextureSupport\n";function $e(mt,_t,Me,Ke){const ut=Le(Me,Ke.ignoreDefine),Kt=Le(Me,Ke.ignoreDefine),sn=(0,o.C6)(mt)?function en(mt,_t){const Me=["#version 300 es"];if(_t.drawBuffers&&mt.drawBuffers&&Me.push("#define requiredDrawBuffers"),_t.multiDraw)if(mt.multiDraw)Me.push("#extension GL_ANGLE_multi_draw : require"),Me.push("#define enabledMultiDraw");else if("required"===_t.multiDraw)throw new Error("required 'GL_ANGLE_multi_draw' extension not available");if(_t.clipCullDistance)if(mt.clipCullDistance)Me.push("#extension GL_ANGLE_clip_cull_distance : enable"),Me.push("#define enabledClipCullDistance");else if("required"===_t.clipCullDistance)throw new Error("required 'GL_ANGLE_clip_cull_distance' extension not available");if(_t.conservativeDepth)if(mt.conservativeDepth)Me.push("#extension GL_EXT_conservative_depth : enable"),Me.push("#define enabledConservativeDepth");else if("required"===_t.conservativeDepth)throw new Error("required 'GL_EXT_conservative_depth' extension not available");return mt.noNonInstancedActiveAttribs&&Me.push("#define noNonInstancedActiveAttribs"),Me.push(Lt),Me.join("\n")+"\n"}(_t,Ke.extensions):function nt(mt,_t){const Me=[];if(_t.drawBuffers)if(mt.drawBuffers)Me.push("#define requiredDrawBuffers");else if("required"===_t.drawBuffers)throw new Error("required 'GL_EXT_draw_buffers' extension not available");if(_t.multiDraw)if(mt.multiDraw)Me.push("#extension GL_ANGLE_multi_draw : require"),Me.push("#define enabledMultiDraw");else if("required"===_t.multiDraw)throw new Error("required 'GL_ANGLE_multi_draw' extension not available");return Me.join("\n")+"\n"}(_t,Ke.extensions),gt=(0,o.C6)(mt)?function Bt(mt,_t,Me,Ke){const ut=["#version 300 es",`layout(location = 0) out highp ${Ke[0]||"vec4"} out_FragData0;`];if(Me.fragDepth&&_t.fragDepth&&ut.push("#define enabledFragDepth"),Me.drawBuffers&&_t.drawBuffers){ut.push("#define requiredDrawBuffers");for(let sn=1,gt=mt.getParameter(mt.MAX_DRAW_BUFFERS);sn{"use strict";n.d(Ue,{e:()=>e});const e="\nprecision highp float;\n\nattribute vec2 aPosition;\nuniform vec2 uQuadScale;\n\nvoid main(void) {\n vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale;\n gl_Position = vec4(position, 0.0, 1.0);\n}\n"},4677:(tn,Ue,n)=>{"use strict";n.d(Ue,{Fu:()=>_,Zo:()=>v,ki:()=>I,oq:()=>M,xB:()=>b});var e=n(7778),o=n(1372),r=n(8437);const t=(0,e.q)();function v(l){const m=l.createBuffer();if(null===m)throw new Error("Could not create WebGL buffer");return m}function O(l,m,u,d){let s=v(l);const C=function A(l,m){switch(m){case"static":return l.STATIC_DRAW;case"dynamic":return l.DYNAMIC_DRAW;case"stream":return l.STREAM_DRAW}}(l,u),h=function i(l,m){switch(m){case"attribute":return l.ARRAY_BUFFER;case"elements":return l.ELEMENT_ARRAY_BUFFER;case"uniform":if((0,r.C6)(l))return l.UNIFORM_BUFFER;throw new Error("WebGL2 is required for uniform buffers")}}(l,d),a=function c(l,m){return m instanceof Uint8Array?l.UNSIGNED_BYTE:m instanceof Int8Array?l.BYTE:m instanceof Uint16Array?l.UNSIGNED_SHORT:m instanceof Int16Array?l.SHORT:m instanceof Uint32Array?l.UNSIGNED_INT:m instanceof Int32Array?l.INT:m instanceof Float32Array?l.FLOAT:void(0,o.dr)(m)}(l,m),S=m.BYTES_PER_ELEMENT,D=m.length;function R(p){l.bindBuffer(h,s),l.bufferData(h,p,C)}R(m);let f=!1;return{id:t(),_usageHint:C,_bufferType:h,_dataType:a,_bpe:S,length:D,getBuffer:()=>s,updateData:R,updateSubData:(p,E,T)=>{l.bindBuffer(h,s),T-E===p.length?l.bufferSubData(h,0,p):l.bufferSubData(h,E*S,p.subarray(E,E+T))},reset:()=>{s=v(l),R(m)},destroy:()=>{f||(l.deleteBuffer(s),f=!0)}}}function b(l,m,u){if("float32"===m)switch(u){case 1:return l.FLOAT;case 2:return l.FLOAT_VEC2;case 3:return l.FLOAT_VEC3;case 4:return l.FLOAT_VEC4;case 16:return l.FLOAT_MAT4}(0,o.dr)(m)}function _(l,m,u,d,s,C,h="static"){const{instancedArrays:a}=u,S=O(l,d,h,"attribute"),{_bufferType:D,_dataType:R,_bpe:f}=S;return{...S,divisor:C,bind:p=>{if(l.bindBuffer(D,S.getBuffer()),16===s)for(let E=0;E<4;++E)m.enableVertexAttrib(p+E),l.vertexAttribPointer(p+E,4,R,!1,16*f,4*E*f),a.vertexAttribDivisor(p+E,C);else m.enableVertexAttrib(p),l.vertexAttribPointer(p,s,R,!1,0,0),a.vertexAttribDivisor(p,C)},changeOffset:(p,E)=>{const T=E*f*s;if(l.bindBuffer(D,S.getBuffer()),16===s)for(let L=0;L<4;++L)l.vertexAttribPointer(p+L,4,R,!1,16*f,4*L*f+T);else l.vertexAttribPointer(p,s,R,!1,0,T)}}}function M(l,m,u){const d=[];return Object.keys(m).forEach(s=>{const C=m[s];"attribute"===C.type&&(d[d.length]=[s,l.resources.attribute(u[s].ref.value,C.itemSize,C.divisor)])}),d}function I(l,m,u="static"){const d=O(l,m,u,"elements");return{...d,bind:()=>{l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,d.getBuffer())}}}},8437:(tn,Ue,n)=>{"use strict";n.d(Ue,{Bs:()=>_,C6:()=>y,CI:()=>h,Du:()=>U,J6:()=>C,JR:()=>M,Kt:()=>R,L4:()=>f,MS:()=>I,MT:()=>l,QB:()=>D,VD:()=>G,WD:()=>c,Yl:()=>T,Z1:()=>Q,af:()=>u,bt:()=>d,ct:()=>m,dh:()=>v,e_:()=>i,jU:()=>S,kR:()=>L,l4:()=>O,m6:()=>s,n_:()=>a,qf:()=>V,qr:()=>E,qt:()=>w,w1:()=>b,wM:()=>p});var e=n(2629),o=n(6349),r=n(7579),t=n(4098);function y(J){return typeof WebGL2RenderingContext<"u"&&J instanceof WebGL2RenderingContext}function c(J){if(y(J))return{drawArraysInstanced:J.drawArraysInstanced.bind(J),drawElementsInstanced:J.drawElementsInstanced.bind(J),vertexAttribDivisor:J.vertexAttribDivisor.bind(J),VERTEX_ATTRIB_ARRAY_DIVISOR:J.VERTEX_ATTRIB_ARRAY_DIVISOR};{const W=J.getExtension("ANGLE_instanced_arrays");return null===W?null:{drawArraysInstanced:W.drawArraysInstancedANGLE.bind(W),drawElementsInstanced:W.drawElementsInstancedANGLE.bind(W),vertexAttribDivisor:W.vertexAttribDivisorANGLE.bind(W),VERTEX_ATTRIB_ARRAY_DIVISOR:W.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE}}}function i(J){if(y(J))return{FRAGMENT_SHADER_DERIVATIVE_HINT:J.FRAGMENT_SHADER_DERIVATIVE_HINT};{const W=J.getExtension("OES_standard_derivatives");return null===W?null:{FRAGMENT_SHADER_DERIVATIVE_HINT:W.FRAGMENT_SHADER_DERIVATIVE_HINT_OES}}}function v(J){return y(J)?{}:J.getExtension("OES_element_index_uint")}function O(J){if(y(J))return{VERTEX_ARRAY_BINDING:J.VERTEX_ARRAY_BINDING,bindVertexArray:J.bindVertexArray.bind(J),createVertexArray:J.createVertexArray.bind(J),deleteVertexArray:J.deleteVertexArray.bind(J),isVertexArray:J.isVertexArray.bind(J)};{const W=J.getExtension("OES_vertex_array_object");return null===W?null:{VERTEX_ARRAY_BINDING:W.VERTEX_ARRAY_BINDING_OES,bindVertexArray:W.bindVertexArrayOES.bind(W),createVertexArray:W.createVertexArrayOES.bind(W),deleteVertexArray:W.deleteVertexArrayOES.bind(W),isVertexArray:W.isVertexArrayOES.bind(W)}}}function b(J){return y(J)?{}:J.getExtension("OES_texture_float")}function _(J){return J.getExtension("OES_texture_float_linear")}function M(J){if(y(J))return{HALF_FLOAT:J.HALF_FLOAT};{const W=J.getExtension("OES_texture_half_float");return null===W?null:{HALF_FLOAT:W.HALF_FLOAT_OES}}}function I(J){return J.getExtension("OES_texture_half_float_linear")}function l(J){if(y(J))return{MIN:J.MIN,MAX:J.MAX};{const W=J.getExtension("EXT_blend_minmax");return null===W?null:{MIN:W.MIN_EXT,MAX:W.MAX_EXT}}}function m(J){return y(J)?{}:J.getExtension("EXT_frag_depth")}function u(J){if(y(J))return null===J.getExtension("EXT_color_buffer_float")?null:(J.getExtension("EXT_float_blend"),{RGBA32F:J.RGBA32F});{const W=J.getExtension("WEBGL_color_buffer_float");return null===W?(J.getExtension("OES_texture_float"),$(J,J.FLOAT)?{RGBA32F:34836}:null):(J.getExtension("EXT_float_blend"),{RGBA32F:W.RGBA32F_EXT})}}function d(J){if(y(J))return null===J.getExtension("EXT_color_buffer_half_float")?null:(J.getExtension("EXT_float_blend"),{RGBA16F:J.RGBA16F});{const W=J.getExtension("EXT_color_buffer_half_float");return null===W?(J.getExtension("OES_texture_half_float"),$(J,36193)?{RGBA16F:34842}:null):(J.getExtension("EXT_float_blend"),{RGBA16F:W.RGBA16F_EXT})}}function s(J){if(y(J))return{drawBuffers:J.drawBuffers.bind(J),COLOR_ATTACHMENT0:J.COLOR_ATTACHMENT0,COLOR_ATTACHMENT1:J.COLOR_ATTACHMENT1,COLOR_ATTACHMENT2:J.COLOR_ATTACHMENT2,COLOR_ATTACHMENT3:J.COLOR_ATTACHMENT3,COLOR_ATTACHMENT4:J.COLOR_ATTACHMENT4,COLOR_ATTACHMENT5:J.COLOR_ATTACHMENT5,COLOR_ATTACHMENT6:J.COLOR_ATTACHMENT6,COLOR_ATTACHMENT7:J.COLOR_ATTACHMENT7,DRAW_BUFFER0:J.DRAW_BUFFER0,DRAW_BUFFER1:J.DRAW_BUFFER1,DRAW_BUFFER2:J.DRAW_BUFFER2,DRAW_BUFFER3:J.DRAW_BUFFER3,DRAW_BUFFER4:J.DRAW_BUFFER4,DRAW_BUFFER5:J.DRAW_BUFFER5,DRAW_BUFFER6:J.DRAW_BUFFER6,DRAW_BUFFER7:J.DRAW_BUFFER7,MAX_COLOR_ATTACHMENTS:J.MAX_COLOR_ATTACHMENTS,MAX_DRAW_BUFFERS:J.MAX_DRAW_BUFFERS};{const W=J.getExtension("WEBGL_draw_buffers");return null===W?null:{drawBuffers:W.drawBuffersWEBGL.bind(W),COLOR_ATTACHMENT0:W.COLOR_ATTACHMENT0_WEBGL,COLOR_ATTACHMENT1:W.COLOR_ATTACHMENT1_WEBGL,COLOR_ATTACHMENT2:W.COLOR_ATTACHMENT2_WEBGL,COLOR_ATTACHMENT3:W.COLOR_ATTACHMENT3_WEBGL,COLOR_ATTACHMENT4:W.COLOR_ATTACHMENT4_WEBGL,COLOR_ATTACHMENT5:W.COLOR_ATTACHMENT5_WEBGL,COLOR_ATTACHMENT6:W.COLOR_ATTACHMENT6_WEBGL,COLOR_ATTACHMENT7:W.COLOR_ATTACHMENT7_WEBGL,DRAW_BUFFER0:W.DRAW_BUFFER0_WEBGL,DRAW_BUFFER1:W.DRAW_BUFFER1_WEBGL,DRAW_BUFFER2:W.DRAW_BUFFER2_WEBGL,DRAW_BUFFER3:W.DRAW_BUFFER3_WEBGL,DRAW_BUFFER4:W.DRAW_BUFFER4_WEBGL,DRAW_BUFFER5:W.DRAW_BUFFER5_WEBGL,DRAW_BUFFER6:W.DRAW_BUFFER6_WEBGL,DRAW_BUFFER7:W.DRAW_BUFFER7_WEBGL,MAX_COLOR_ATTACHMENTS:W.MAX_COLOR_ATTACHMENTS_WEBGL,MAX_DRAW_BUFFERS:W.MAX_DRAW_BUFFERS_WEBGL}}}function C(J){const W=J.getExtension("OES_draw_buffers_indexed");return null===W?null:{enablei:W.enableiOES.bind(W),disablei:W.disableiOES.bind(W),blendEquationi:W.blendEquationiOES.bind(W),blendEquationSeparatei:W.blendEquationSeparateiOES.bind(W),blendFunci:W.blendFunciOES.bind(W),blendFuncSeparatei:W.blendFuncSeparateiOES.bind(W),colorMaski:W.colorMaskiOES.bind(W)}}function h(J){return y(J)?{}:J.getExtension("EXT_shader_texture_lod")}function a(J){if(y(J))return{UNSIGNED_INT_24_8:J.UNSIGNED_INT_24_8};{const W=J.getExtension("WEBGL_depth_texture");return null===W?null:{UNSIGNED_INT_24_8:W.UNSIGNED_INT_24_8_WEBGL}}}function S(J){if(y(J))return{FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:J.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING,SRGB8_ALPHA8:J.SRGB8_ALPHA8,SRGB8:J.SRGB8,SRGB:J.SRGB};{const W=J.getExtension("EXT_sRGB");return null===W?null:{FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:W.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT,SRGB8_ALPHA8:W.SRGB8_ALPHA8_EXT,SRGB8:W.SRGB_ALPHA_EXT,SRGB:W.SRGB_EXT}}}function D(J){if(y(J)){const W=J.getExtension("EXT_disjoint_timer_query_webgl2")||J.getExtension("EXT_disjoint_timer_query");return null===W?null:{QUERY_COUNTER_BITS:W.QUERY_COUNTER_BITS_EXT,CURRENT_QUERY:J.CURRENT_QUERY,QUERY_RESULT:J.QUERY_RESULT,QUERY_RESULT_AVAILABLE:J.QUERY_RESULT_AVAILABLE,TIME_ELAPSED:W.TIME_ELAPSED_EXT,TIMESTAMP:W.TIMESTAMP_EXT,GPU_DISJOINT:W.GPU_DISJOINT_EXT,createQuery:J.createQuery.bind(J),deleteQuery:J.deleteQuery.bind(J),isQuery:J.isQuery.bind(J),beginQuery:J.beginQuery.bind(J),endQuery:J.endQuery.bind(J),queryCounter:W.queryCounterEXT.bind(W),getQuery:J.getQuery.bind(J),getQueryParameter:J.getQueryParameter.bind(J)}}{const W=J.getExtension("EXT_disjoint_timer_query");return null===W?null:{QUERY_COUNTER_BITS:W.QUERY_COUNTER_BITS_EXT,CURRENT_QUERY:W.CURRENT_QUERY_EXT,QUERY_RESULT:W.QUERY_RESULT_EXT,QUERY_RESULT_AVAILABLE:W.QUERY_RESULT_AVAILABLE_EXT,TIME_ELAPSED:W.TIME_ELAPSED_EXT,TIMESTAMP:W.TIMESTAMP_EXT,GPU_DISJOINT:W.GPU_DISJOINT_EXT,createQuery:W.createQueryEXT.bind(W),deleteQuery:W.deleteQueryEXT.bind(W),isQuery:W.isQueryEXT.bind(W),beginQuery:W.beginQueryEXT.bind(W),endQuery:W.endQueryEXT.bind(W),queryCounter:W.queryCounterEXT.bind(W),getQuery:W.getQueryEXT.bind(W),getQueryParameter:W.getQueryObjectEXT.bind(W)}}}function R(J){const W=J.getExtension("WEBGL_multi_draw");return W?{multiDrawArrays:W.multiDrawArraysWEBGL.bind(W),multiDrawElements:W.multiDrawElementsWEBGL.bind(W),multiDrawArraysInstanced:W.multiDrawArraysInstancedWEBGL.bind(W),multiDrawElementsInstanced:W.multiDrawElementsInstancedWEBGL.bind(W)}:null}function f(J){const W=J.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");return W?{drawArraysInstancedBaseInstance:W.drawArraysInstancedBaseInstanceWEBGL.bind(W),drawElementsInstancedBaseVertexBaseInstance:W.drawElementsInstancedBaseVertexBaseInstanceWEBGL.bind(W)}:null}function p(J){const W=J.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");return W?{multiDrawArraysInstancedBaseInstance:W.multiDrawArraysInstancedBaseInstanceWEBGL.bind(W),multiDrawElementsInstancedBaseVertexBaseInstance:W.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL.bind(W)}:null}function E(J){const W=J.getExtension("KHR_parallel_shader_compile");return null===W?null:{COMPLETION_STATUS:W.COMPLETION_STATUS_KHR}}function T(J){return y(J)?{}:J.getExtension("OES_fbo_render_mipmap")}function L(J){if(y(J)){const W=J.getExtension("WEBGL_provoking_vertex");if(W)return{FIRST_VERTEX_CONVENTION:W.FIRST_VERTEX_CONVENTION_WEBGL,LAST_VERTEX_CONVENTION:W.LAST_VERTEX_CONVENTION_WEBGL,PROVOKING_VERTEX:W.PROVOKING_VERTEX_WEBGL,provokingVertex:W.provokingVertexWEBGL.bind(W)}}return null}function w(J){if(y(J)){const W=J.getExtension("WEBGL_clip_cull_distance");if(W)return{MAX_CLIP_DISTANCES:W.MAX_CLIP_DISTANCES_WEBGL,MAX_CULL_DISTANCES:W.MAX_CULL_DISTANCES_WEBGL,MAX_COMBINED_CLIP_AND_CULL_DISTANCES:W.MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL,CLIP_DISTANCE0:W.CLIP_DISTANCE0_WEBGL,CLIP_DISTANCE1:W.CLIP_DISTANCE1_WEBGL,CLIP_DISTANCE2:W.CLIP_DISTANCE2_WEBGL,CLIP_DISTANCE3:W.CLIP_DISTANCE3_WEBGL,CLIP_DISTANCE4:W.CLIP_DISTANCE4_WEBGL,CLIP_DISTANCE5:W.CLIP_DISTANCE5_WEBGL,CLIP_DISTANCE6:W.CLIP_DISTANCE6_WEBGL,CLIP_DISTANCE7:W.CLIP_DISTANCE7_WEBGL}}return null}function Q(J){return y(J)&&J.getExtension("EXT_conservative_depth")?{}:null}function G(J){if(y(J)){const W=J.getExtension("WEBGL_stencil_texturing");if(W)return{DEPTH_STENCIL_TEXTURE_MODE:W.DEPTH_STENCIL_TEXTURE_MODE_WEBGL,STENCIL_INDEX:W.STENCIL_INDEX_WEBGL}}return null}function V(J){const W=J.getExtension("EXT_clip_control");return W?{LOWER_LEFT:W.LOWER_LEFT_EXT,UPPER_LEFT:W.UPPER_LEFT_EXT,NEGATIVE_ONE_TO_ONE:W.NEGATIVE_ONE_TO_ONE_EXT,ZERO_TO_ONE:W.ZERO_TO_ONE_EXT,CLIP_ORIGIN:W.CLIP_ORIGIN_EXT,CLIP_DEPTH_MODE:W.CLIP_DEPTH_MODE_EXT,clipControl:W.clipControlEXT.bind(W)}:null}function U(J){if(!y(J))return!1;if(typeof navigator<"u"){const W=window.navigator.userAgent.match(/Firefox\/([0-9]+)\./);return!W||parseInt(W[1])>=85}return!1}const N="\nattribute vec4 aPosition;\n\nvoid main() {\n gl_Position = aPosition;\n}",k="\nprecision mediump float;\nuniform vec4 uColor;\nuniform sampler2D uTexture;\n\nvoid main() {\n gl_FragColor = texture2D(uTexture, vec2(0.5, 0.5)) * uColor;\n}",H=new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]);function $(J,W){const te=(0,t.A)(J,{type:"vert",source:N}),de=(0,t.A)(J,{type:"frag",source:k});if(!te||!de)return!1;const ye=(0,r.J)(J);J.attachShader(ye,te),J.attachShader(ye,de),J.linkProgram(ye),J.useProgram(ye);const j=J.getAttribLocation(ye,"aPosition"),Z=J.getUniformLocation(ye,"uColor");if(!Z)return e.Bb&&console.log("error getting 'uColor' uniform location"),!1;const q=J.createBuffer();J.bindBuffer(J.ARRAY_BUFFER,q),J.bufferData(J.ARRAY_BUFFER,H,J.STATIC_DRAW),J.enableVertexAttribArray(j),J.vertexAttribPointer(j,2,J.FLOAT,!1,0,0);const Y=J.createTexture(),ee=new Uint8Array([255,255,255,255]);J.bindTexture(J.TEXTURE_2D,Y),J.texImage2D(J.TEXTURE_2D,0,J.RGBA,1,1,0,J.RGBA,J.UNSIGNED_BYTE,ee);const g=J.createTexture();J.bindTexture(J.TEXTURE_2D,g),J.texImage2D(J.TEXTURE_2D,0,J.RGBA,1,1,0,J.RGBA,W,null),J.texParameteri(J.TEXTURE_2D,J.TEXTURE_MIN_FILTER,J.NEAREST),J.texParameteri(J.TEXTURE_2D,J.TEXTURE_MAG_FILTER,J.NEAREST);const _e=J.createFramebuffer();if(J.bindFramebuffer(J.FRAMEBUFFER,_e),J.framebufferTexture2D(J.FRAMEBUFFER,J.COLOR_ATTACHMENT0,J.TEXTURE_2D,g,0),J.checkFramebufferStatus(J.FRAMEBUFFER)!==J.FRAMEBUFFER_COMPLETE)return e.Bb&&console.log(`error creating framebuffer for '${W}'`),!1;J.bindTexture(J.TEXTURE_2D,Y),J.uniform4fv(Z,[0,10,20,1]),J.drawArrays(J.TRIANGLES,0,6),J.bindTexture(J.TEXTURE_2D,g),J.bindFramebuffer(J.FRAMEBUFFER,null),J.clearColor(1,0,0,1),J.clear(J.COLOR_BUFFER_BIT),J.uniform4fv(Z,[0,.1,.05,1]),J.drawArrays(J.TRIANGLES,0,6);const le=new Uint8Array(4);if(J.readPixels(0,0,1,1,J.RGBA,J.UNSIGNED_BYTE,le),0!==le[0]||le[1]<248||le[2]<248||le[3]<254)return e.Bb&&console.log(`not able to actually render to '${W}' texture`),!1;if(W===J.FLOAT){J.bindFramebuffer(J.FRAMEBUFFER,_e);const Ae=new Float32Array(4);J.readPixels(0,0,1,1,J.RGBA,J.FLOAT,Ae);const Be=J.getError();if(Be)return e.Bb&&console.log(`error reading float pixels: '${(0,o.tL)(J,Be)}'`),!1}return!0}},6349:(tn,Ue,n)=>{"use strict";n.d(Ue,{Lq:()=>N,q6:()=>ee,tL:()=>U,$i:()=>V});var e=n(467),o=n(8437),r=n(3648),t=n(4824),A=n(2629);function y(g){const _e=(0,o.WD)(g);if(null===_e)throw new Error('Could not find support for "instanced_arrays"');const xe=(0,o.dh)(g);if(null===xe)throw new Error('Could not find support for "element_index_uint"');const le=(0,o.e_)(g);if(null===le)throw new Error('Could not find support for "standard_derivatives"');const Ae=(0,o.w1)(g);A.Bb&&null===Ae&&console.log('Could not find support for "texture_float"');const Be=(0,o.Bs)(g);A.Bb&&null===Be&&console.log('Could not find support for "texture_float_linear"');const Ce=(0,o.JR)(g);A.Bb&&null===Ce&&console.log('Could not find support for "texture_half_float"');const Re=(0,o.MS)(g);A.Bb&&null===Re&&console.log('Could not find support for "texture_half_float_linear"');const ke=(0,o.n_)(g);A.Bb&&null===ke&&console.log('Could not find support for "depth_texture"');const we=(0,o.MT)(g);A.Bb&&null===we&&console.log('Could not find support for "blend_minmax"');const Oe=(0,o.l4)(g);A.Bb&&null===Oe&&console.log('Could not find support for "vertex_array_object"');const Se=(0,o.ct)(g);A.Bb&&null===Se&&console.log('Could not find support for "frag_depth"');const Ve=(0,o.af)(g);A.Bb&&null===Ve&&console.log('Could not find support for "color_buffer_float"');const Ne=(0,o.bt)(g);A.Bb&&null===Ne&&console.log('Could not find support for "color_buffer_half_float"');const K=(0,o.m6)(g);A.Bb&&null===K&&console.log('Could not find support for "draw_buffers"');const ne=(0,o.J6)(g);A.Bb&&null===ne&&console.log('Could not find support for "draw_buffers_indexed"');const be=(0,o.CI)(g);A.Bb&&null===be&&console.log('Could not find support for "shader_texture_lod"');const Te=(0,o.jU)(g);A.Bb&&null===Te&&console.log('Could not find support for "sRGB"');const ie=(0,o.QB)(g);A.Bb&&null===ie&&console.log('Could not find support for "disjoint_timer_query"');const ue=(0,o.Kt)(g);A.Bb&&null===ue&&console.log('Could not find support for "multi_draw"');const re=(0,o.L4)(g);A.Bb&&null===re&&console.log('Could not find support for "draw_instanced_base_vertex_base_instance"');const ve=(0,o.wM)(g);A.Bb&&null===ve&&console.log('Could not find support for "multi_draw_instanced_base_vertex_base_instance"');const ce=(0,o.qr)(g);A.Bb&&null===ce&&console.log('Could not find support for "parallel_shader_compile"');const se=(0,o.Yl)(g);A.Bb&&null===se&&console.log('Could not find support for "fbo_render_mipmap"');const ae=(0,o.kR)(g);A.Bb&&null===ae&&console.log('Could not find support for "provoking_vertex"');const ge=(0,o.qt)(g);A.Bb&&null===ge&&console.log('Could not find support for "clip_cull_distance"');const Ie=(0,o.Z1)(g);A.Bb&&null===Ie&&console.log('Could not find support for "conservative_depth"');const Le=(0,o.VD)(g);A.Bb&&null===Le&&console.log('Could not find support for "stencil_texturing"');const nt=(0,o.qf)(g);return A.Bb&&null===nt&&console.log('Could not find support for "clip_control"'),{instancedArrays:_e,standardDerivatives:le,elementIndexUint:xe,textureFloat:Ae,textureFloatLinear:Be,textureHalfFloat:Ce,textureHalfFloatLinear:Re,depthTexture:ke,blendMinMax:we,vertexArrayObject:Oe,fragDepth:Se,colorBufferFloat:Ve,colorBufferHalfFloat:Ne,drawBuffers:K,drawBuffersIndexed:ne,shaderTextureLod:be,sRGB:Te,disjointTimerQuery:ie,multiDraw:ue,drawInstancedBaseVertexBaseInstance:re,multiDrawInstancedBaseVertexBaseInstance:ve,parallelShaderCompile:ce,fboRenderMipmap:se,provokingVertex:ae,clipCullDistance:ge,conservativeDepth:Ie,stencilTexturing:Le,clipControl:nt,noNonInstancedActiveAttribs:(0,o.Du)(g)}}var i=n(2775),v=n(7579),O=n(4098),b=n(4677);function I(g,_e,xe){const le=new Map;return{get:Ae=>{const Be=g(Ae);let Ce=le.get(Be);return Ce||(Ce=function _(g,_e=0){return{value:g,usageCount:_e}}(_e(Ae)),le.set(Be,Ce)),Ce.usageCount+=1,function M(g){return{free:()=>{g.usageCount-=1},value:g.value}}(Ce)},clear:()=>{le.forEach((Ae,Be)=>{Ae.usageCount<=0&&(Ae.usageCount<0&&console.warn("Reference usageCount below zero."),xe(Ae.value),le.delete(Be))})},get count(){return le.size},dispose:()=>{le.forEach(Ae=>xe(Ae.value)),le.clear()}}}var l=n(8382),m=n(7778);const u=(0,m.q)();function C(g){const _e=g.createRenderbuffer();if(null===_e)throw new Error("Could not create WebGL renderbuffer");return _e}var a=n(4648);const S=(0,m.q)();function D(g){const{vertexArrayObject:_e}=g;if(!_e)throw new Error("VertexArrayObject not supported");const xe=_e.createVertexArray();if(!xe)throw new Error("Could not create WebGL vertex array");return xe}function R(g){const{vertexArrayObject:_e}=g;if(null===_e)throw new Error("VertexArrayObject not supported");return _e}function E(g){return{...g.value,destroy:()=>{g.free()}}}function T(g,_e,xe,le){const Ae={attribute:new Set,elements:new Set,framebuffer:new Set,program:new Set,renderbuffer:new Set,shader:new Set,texture:new Set,cubeTexture:new Set,vertexArray:new Set};function Be(we,Oe){return Ae[we].add(Oe),xe.resourceCounts[we]+=1,{...Oe,destroy:()=>{Oe.destroy(),Ae[we].delete(Oe),xe.resourceCounts[we]-=1}}}const Ce=I(we=>JSON.stringify(we),we=>Be("shader",(0,O.g)(g,we)),we=>{we.destroy()});function Re(we,Oe){return E(Ce.get({type:we,source:Oe}))}const ke=I(we=>{var Oe;const Se=[we.shaderCode.id],Ve=(null===(Oe=we.defineValues.dRenderVariant)||void 0===Oe?void 0:Oe.ref.value)||"";return Object.keys(we.defineValues).forEach(Ne=>{var K,ne;null!==(ne=(K=we.shaderCode).ignoreDefine)&&void 0!==ne&&ne.call(K,Ne,Ve,we.defineValues)||Se.push((0,l.YZ)(Ne),function p(g){return"boolean"==typeof g?g?1:0:"number"==typeof g?1e4*g:(0,l.YZ)(g)}(we.defineValues[Ne].ref.value))}),(0,l.TI)(Se).toString()},we=>Be("program",(0,v.r)(g,_e,le,Re,we)),we=>{we.destroy()});return{attribute:(we,Oe,Se,Ve)=>Be("attribute",(0,b.Fu)(g,_e,le,we,Oe,Se,Ve)),elements:(we,Oe)=>Be("elements",(0,b.ki)(g,we,Oe)),framebuffer:()=>Be("framebuffer",(0,r.oN)(g)),program:(we,Oe,Se)=>E(ke.get({defineValues:we,shaderCode:Oe,schema:Se})),renderbuffer:(we,Oe,Se,Ve)=>Be("renderbuffer",function h(g,_e,xe,le,Ae){let Be=C(g);const Ce=()=>g.bindRenderbuffer(g.RENDERBUFFER,Be),Re=function d(g,_e){switch(_e){case"depth16":return g.DEPTH_COMPONENT16;case"stencil8":return g.STENCIL_INDEX8;case"rgba4":return g.RGBA4;case"depth-stencil":return g.DEPTH_STENCIL;case"depth24":if((0,o.C6)(g))return g.DEPTH_COMPONENT24;throw new Error("WebGL2 needed for `depth24` renderbuffer format");case"depth32f":if((0,o.C6)(g))return g.DEPTH_COMPONENT32F;throw new Error("WebGL2 needed for `depth32f` renderbuffer format");case"depth24-stencil8":if((0,o.C6)(g))return g.DEPTH24_STENCIL8;throw new Error("WebGL2 needed for `depth24-stencil8` renderbuffer format");case"depth32f-stencil8":if((0,o.C6)(g))return g.DEPTH32F_STENCIL8;throw new Error("WebGL2 needed for `depth32f-stencil8` renderbuffer format")}}(g,_e),ke=function s(g,_e){switch(_e){case"depth":return g.DEPTH_ATTACHMENT;case"stencil":return g.STENCIL_ATTACHMENT;case"depth-stencil":return g.DEPTH_STENCIL_ATTACHMENT;case"color0":return g.COLOR_ATTACHMENT0}}(g,xe);function we(){Ce(),g.renderbufferStorage(g.RENDERBUFFER,Re,le,Ae)}we();let Oe=!1;return{id:u(),bind:Ce,attachFramebuffer:Se=>{Se.bind(),Ce(),g.framebufferRenderbuffer(g.FRAMEBUFFER,ke,g.RENDERBUFFER,Be),A.Bb&&(0,r.kD)(g)},detachFramebuffer:Se=>{Se.bind(),Ce(),g.framebufferRenderbuffer(g.FRAMEBUFFER,ke,g.RENDERBUFFER,null),A.Bb&&(0,r.kD)(g)},setSize:(Se,Ve)=>{le=Se,Ae=Ve,we()},reset:()=>{Be=C(g),we()},destroy:()=>{Oe||(g.deleteRenderbuffer(Be),Oe=!0)}}}(g,we,Oe,Se,Ve)),shader:Re,texture:(we,Oe,Se,Ve)=>Be("texture",(0,a.sZ)(g,le,we,Oe,Se,Ve)),cubeTexture:(we,Oe,Se)=>Be("cubeTexture",(0,a.ji)(g,we,Oe,Se)),vertexArray:(we,Oe,Se)=>Be("vertexArray",function f(g,_e,xe,le,Ae){const Be=S();let Ce=D(_e),Re=R(_e);function ke(){Re.bindVertexArray(Ce),Ae&&Ae.bind(),xe.bindAttributes(le),Re.bindVertexArray(null)}ke();let we=!1;return{id:Be,bind:()=>{Re.bindVertexArray(Ce)},update:ke,reset:()=>{Ce=D(_e),Re=R(_e),ke()},destroy:()=>{we||(Ae&&(Re.bindVertexArray(Ce),g.bindBuffer(g.ELEMENT_ARRAY_BUFFER,null)),Re.deleteVertexArray(Ce),we=!0)}}}(g,le,we,Oe,Se)),getByteCounts:()=>{let we=0;Ae.texture.forEach(Ve=>{we+=Ve.getByteCount()}),Ae.cubeTexture.forEach(Ve=>{we+=Ve.getByteCount()});let Oe=0;Ae.attribute.forEach(Ve=>{Oe+=4*Ve.length});let Se=0;return Ae.elements.forEach(Ve=>{Se+=4*Ve.length}),{texture:we,attribute:Oe,elements:Se}},reset:()=>{Ae.attribute.forEach(we=>we.reset()),Ae.elements.forEach(we=>we.reset()),Ae.framebuffer.forEach(we=>we.reset()),Ae.renderbuffer.forEach(we=>we.reset()),Ae.shader.forEach(we=>we.reset()),Ae.program.forEach(we=>we.reset()),Ae.vertexArray.forEach(we=>we.reset()),Ae.texture.forEach(we=>we.reset())},destroy:()=>{Ae.attribute.forEach(we=>we.destroy()),Ae.elements.forEach(we=>we.destroy()),Ae.framebuffer.forEach(we=>we.destroy()),Ae.renderbuffer.forEach(we=>we.destroy()),Ae.shader.forEach(we=>we.destroy()),Ae.program.forEach(we=>we.destroy()),Ae.vertexArray.forEach(we=>we.destroy()),Ae.texture.forEach(we=>we.destroy()),Ce.clear(),ke.clear()}}}var L=n(2021),w=n(4412),Q=n(9854),G=n(2098);function V(g,_e){function xe(Ae){try{return g.getContext(Ae,_e)}catch{return null}}const le=(_e?.preferWebGl1?null:xe("webgl2"))||xe("webgl")||xe("experimental-webgl");return A.Bb&&console.log(`isWebgl2: ${(0,o.C6)(le)}`),le}function U(g,_e){switch(_e){case g.NO_ERROR:return"no error";case g.INVALID_ENUM:return"invalid enum";case g.INVALID_VALUE:return"invalid value";case g.INVALID_OPERATION:return"invalid operation";case g.INVALID_FRAMEBUFFER_OPERATION:return"invalid framebuffer operation";case g.OUT_OF_MEMORY:return"out of memory";case g.CONTEXT_LOST_WEBGL:return"context lost"}return"unknown error"}function N(g){const _e=g.getError();if(_e!==g.NO_ERROR)throw new Error(`WebGL error: '${U(g,_e)}'`)}function $(g){g.bindFramebuffer(g.FRAMEBUFFER,null)}const J=new Uint8Array(4);function W(g,_e,xe){g.getSyncParameter(_e,g.SYNC_STATUS)===g.SIGNALED?(g.deleteSync(_e),xe()):t._F.setImmediate(W,g,_e,xe)}function te(g,_e){const xe=g.fenceSync(g.SYNC_GPU_COMMANDS_COMPLETE,0);xe?t._F.setImmediate(W,g,xe,_e):(console.warn("Could not create a WebGLSync object"),g.readPixels(0,0,1,1,g.RGBA,g.UNSIGNED_BYTE,J),_e())}let de=!1;function j(g){g.bindFramebuffer(g.FRAMEBUFFER,null),g.readPixels(0,0,1,1,g.RGBA,g.UNSIGNED_BYTE,J)}function Z(g,_e,xe,le,Ae,Be){if(A.Bb&&(0,r.kD)(g),Be instanceof Uint8Array)g.readPixels(_e,xe,le,Ae,g.RGBA,g.UNSIGNED_BYTE,Be);else if(Be instanceof Float32Array)g.readPixels(_e,xe,le,Ae,g.RGBA,g.FLOAT,Be);else{if(!(Be instanceof Int32Array&&(0,o.C6)(g)))throw new Error("unsupported readPixels buffer type");g.readPixels(_e,xe,le,Ae,g.RGBA_INTEGER,g.INT,Be)}A.Bb&&N(g)}function ee(g,_e={}){const xe=y(g),le=function c(g,_e){let xe={},le=g.getParameter(g.FRONT_FACE),Ae=g.getParameter(g.CULL_FACE_MODE),Be=g.getParameter(g.DEPTH_WRITEMASK),Ce=g.getParameter(g.DEPTH_CLEAR_VALUE),Re=g.getParameter(g.DEPTH_FUNC),ke=g.getParameter(g.COLOR_WRITEMASK),we=g.getParameter(g.COLOR_CLEAR_VALUE),Oe=g.getParameter(g.BLEND_SRC_RGB),Se=g.getParameter(g.BLEND_DST_RGB),Ve=g.getParameter(g.BLEND_SRC_ALPHA),Ne=g.getParameter(g.BLEND_DST_ALPHA),K=g.getParameter(g.BLEND_COLOR),ne=g.getParameter(g.BLEND_EQUATION_RGB),be=g.getParameter(g.BLEND_EQUATION_ALPHA),Te=g.getParameter(g.STENCIL_FUNC),ie=g.getParameter(g.STENCIL_VALUE_MASK),ue=g.getParameter(g.STENCIL_REF),re=g.getParameter(g.STENCIL_BACK_FUNC),ve=g.getParameter(g.STENCIL_BACK_VALUE_MASK),ce=g.getParameter(g.STENCIL_BACK_REF),se=g.getParameter(g.STENCIL_WRITEMASK),ae=g.getParameter(g.STENCIL_BACK_WRITEMASK),ge=g.getParameter(g.STENCIL_FAIL),Ie=g.getParameter(g.STENCIL_PASS_DEPTH_PASS),Le=g.getParameter(g.STENCIL_PASS_DEPTH_FAIL),nt=g.getParameter(g.STENCIL_BACK_FAIL),je=g.getParameter(g.STENCIL_BACK_PASS_DEPTH_PASS),Lt=g.getParameter(g.STENCIL_BACK_PASS_DEPTH_FAIL),Je=g.getParameter(g.MAX_VERTEX_ATTRIBS);const en=[];let Bt=g.getParameter(g.VIEWPORT),pn=g.getParameter(g.SCISSOR_BOX),$e=_e.clipControl?g.getParameter(_e.clipControl.CLIP_ORIGIN):-1,mt=_e.clipControl?g.getParameter(_e.clipControl.CLIP_DEPTH_MODE):-1;const _t=()=>{for(let Me=0;Me{!0!==xe[Me]&&(g.enable(Me),xe[Me]=!0)},disable:Me=>{!1!==xe[Me]&&(g.disable(Me),xe[Me]=!1)},frontFace:Me=>{Me!==le&&(g.frontFace(Me),le=Me)},cullFace:Me=>{Me!==Ae&&(g.cullFace(Me),Ae=Me)},depthMask:Me=>{Me!==Be&&(g.depthMask(Me),Be=Me)},clearDepth:Me=>{Me!==Ce&&(g.clearDepth(Me),Ce=Me)},depthFunc:Me=>{Me!==Re&&(g.depthFunc(Me),Re=Me)},colorMask:(Me,Ke,ut,Kt)=>{(Me!==ke[0]||Ke!==ke[1]||ut!==ke[2]||Kt!==ke[3])&&(g.colorMask(Me,Ke,ut,Kt),ke[0]=Me,ke[1]=Ke,ke[2]=ut,ke[3]=Kt)},clearColor:(Me,Ke,ut,Kt)=>{(Me!==we[0]||Ke!==we[1]||ut!==we[2]||Kt!==we[3])&&(g.clearColor(Me,Ke,ut,Kt),we[0]=Me,we[1]=Ke,we[2]=ut,we[3]=Kt)},blendFunc:(Me,Ke)=>{(Me!==Oe||Ke!==Se||Me!==Ve||Ke!==Ne)&&(g.blendFunc(Me,Ke),Oe=Me,Se=Ke,Ve=Me,Ne=Ke)},blendFuncSeparate:(Me,Ke,ut,Kt)=>{(Me!==Oe||Ke!==Se||ut!==Ve||Kt!==Ne)&&(g.blendFuncSeparate(Me,Ke,ut,Kt),Oe=Me,Se=Ke,Ve=ut,Ne=Kt)},blendEquation:Me=>{(Me!==ne||Me!==be)&&(g.blendEquation(Me),ne=Me,be=Me)},blendEquationSeparate:(Me,Ke)=>{(Me!==ne||Ke!==be)&&(g.blendEquationSeparate(Me,Ke),ne=Me,be=Ke)},blendColor:(Me,Ke,ut,Kt)=>{(Me!==K[0]||Ke!==K[1]||ut!==K[2]||Kt!==K[3])&&(g.blendColor(Me,Ke,ut,Kt),K[0]=Me,K[1]=Ke,K[2]=ut,K[3]=Kt)},stencilFunc:(Me,Ke,ut)=>{(Me!==Te||Ke!==ue||ut!==ie||Me!==re||Ke!==ce||ut!==ve)&&(g.stencilFunc(Me,Ke,ut),Te=Me,ue=Ke,ie=ut,re=Me,ce=Ke,ve=ut)},stencilFuncSeparate:(Me,Ke,ut,Kt)=>{Me===g.FRONT?(Ke!==Te||ut!==ue||Kt!==ie)&&(g.stencilFuncSeparate(Me,Ke,ut,Kt),Te=Ke,ue=ut,ie=Kt):Me===g.BACK?(Ke!==re||ut!==ce||Kt!==ve)&&(g.stencilFuncSeparate(Me,Ke,ut,Kt),re=Ke,ce=ut,ve=Kt):Me===g.FRONT_AND_BACK&&(Ke!==Te||ut!==ue||Kt!==ie||Ke!==re||ut!==ce||Kt!==ve)&&(g.stencilFuncSeparate(Me,Ke,ut,Kt),Te=Ke,ue=ut,ie=Kt,re=Ke,ce=ut,ve=Kt)},stencilMask:Me=>{(Me!==se||Me!==ae)&&(g.stencilMask(Me),se=Me,ae=Me)},stencilMaskSeparate:(Me,Ke)=>{Me===g.FRONT?Ke!==se&&(g.stencilMaskSeparate(Me,Ke),se=Ke):Me===g.BACK?Ke!==ae&&(g.stencilMaskSeparate(Me,Ke),ae=Ke):Me===g.FRONT_AND_BACK&&(Ke!==se||Ke!==ae)&&(g.stencilMaskSeparate(Me,Ke),se=Ke,ae=Ke)},stencilOp:(Me,Ke,ut)=>{(Me!==ge||Ke!==Le||ut!==Ie||Me!==nt||Ke!==Lt||ut!==je)&&(g.stencilOp(Me,Ke,ut),ge=Me,Le=Ke,Ie=ut,nt=Me,Lt=Ke,je=ut)},stencilOpSeparate:(Me,Ke,ut,Kt)=>{Me===g.FRONT?(Ke!==ge||ut!==Le||Kt!==Ie)&&(g.stencilOpSeparate(Me,Ke,ut,Kt),ge=Ke,Le=ut,Ie=Kt):Me===g.BACK?(Ke!==nt||ut!==Lt||Kt!==je)&&(g.stencilOpSeparate(Me,Ke,ut,Kt),nt=Ke,Lt=ut,je=Kt):Me===g.FRONT_AND_BACK&&(Ke!==ge||ut!==Le||Kt!==Ie||Ke!==nt||ut!==Lt||Kt!==je)&&(g.stencilOpSeparate(Me,Ke,ut,Kt),ge=Ke,Le=ut,Ie=Kt,nt=Ke,Lt=ut,je=Kt)},enableVertexAttrib:Me=>{g.enableVertexAttribArray(Me),en[Me]=1},clearVertexAttribsState:_t,disableUnusedVertexAttribs:()=>{for(let Me=0;Me{(Me!==Bt[0]||Ke!==Bt[1]||ut!==Bt[2]||Kt!==Bt[3])&&(g.viewport(Me,Ke,ut,Kt),Bt[0]=Me,Bt[1]=Ke,Bt[2]=ut,Bt[3]=Kt)},scissor:(Me,Ke,ut,Kt)=>{(Me!==pn[0]||Ke!==pn[1]||ut!==pn[2]||Kt!==pn[3])&&(g.scissor(Me,Ke,ut,Kt),pn[0]=Me,pn[1]=Ke,pn[2]=ut,pn[3]=Kt)},clipControl:_e.clipControl?(Me,Ke)=>{(Me!==$e||Ke!==mt)&&(_e.clipControl.clipControl(Me,Ke),$e=Me,mt=Ke)}:void 0,reset:()=>{xe={},le=g.getParameter(g.FRONT_FACE),Ae=g.getParameter(g.CULL_FACE_MODE),Be=g.getParameter(g.DEPTH_WRITEMASK),Ce=g.getParameter(g.DEPTH_CLEAR_VALUE),Re=g.getParameter(g.DEPTH_FUNC),ke=g.getParameter(g.COLOR_WRITEMASK),we=g.getParameter(g.COLOR_CLEAR_VALUE),Oe=g.getParameter(g.BLEND_SRC_RGB),Se=g.getParameter(g.BLEND_DST_RGB),Ve=g.getParameter(g.BLEND_SRC_ALPHA),Ne=g.getParameter(g.BLEND_DST_ALPHA),K=g.getParameter(g.BLEND_COLOR),ne=g.getParameter(g.BLEND_EQUATION_RGB),be=g.getParameter(g.BLEND_EQUATION_ALPHA),Te=g.getParameter(g.STENCIL_FUNC),ie=g.getParameter(g.STENCIL_VALUE_MASK),ue=g.getParameter(g.STENCIL_REF),re=g.getParameter(g.STENCIL_BACK_FUNC),ve=g.getParameter(g.STENCIL_BACK_VALUE_MASK),ce=g.getParameter(g.STENCIL_BACK_REF),se=g.getParameter(g.STENCIL_WRITEMASK),ae=g.getParameter(g.STENCIL_BACK_WRITEMASK),ge=g.getParameter(g.STENCIL_FAIL),Ie=g.getParameter(g.STENCIL_PASS_DEPTH_PASS),Le=g.getParameter(g.STENCIL_PASS_DEPTH_FAIL),nt=g.getParameter(g.STENCIL_BACK_FAIL),je=g.getParameter(g.STENCIL_BACK_PASS_DEPTH_PASS),Lt=g.getParameter(g.STENCIL_BACK_PASS_DEPTH_FAIL),Je=g.getParameter(g.MAX_VERTEX_ATTRIBS),en.length=0;for(let Me=0;Me= 8');const ke=xe.provokingVertex;ke?.provokingVertex(ke.FIRST_VERTEX_CONVENTION);let we=!1;const Oe=new w.t(0);let Ve,Se=_e.pixelScale||1;if((0,o.C6)(g)){const K=g.createBuffer();let ne,be,Te=!1;const ie=()=>{g.bindBuffer(g.PIXEL_PACK_BUFFER,K),g.getBufferSubData(g.PIXEL_PACK_BUFFER,0,ne),g.bindBuffer(g.PIXEL_PACK_BUFFER,null),Te=!1,be(),be=void 0,ne=void 0};Ve=(ue,re,ve,ce,se)=>new Promise((ae,ge)=>{Te?ge("Can not call multiple readPixelsAsync at the same time"):(Te=!0,g.bindBuffer(g.PIXEL_PACK_BUFFER,K),g.bufferData(g.PIXEL_PACK_BUFFER,ve*ce*4,g.STREAM_READ),g.readPixels(ue,re,ve,ce,g.RGBA,g.UNSIGNED_BYTE,0),g.bindBuffer(g.PIXEL_PACK_BUFFER,null),be=ae,ne=se,te(g,ie))})}else Ve=function(){var K=(0,e.A)(function*(ne,be,Te,ie,ue){Z(g,ne,be,Te,ie,ue)});return function(be,Te,ie,ue,re){return K.apply(this,arguments)}}();const Ne=new Set;return{gl:g,isWebGL2:(0,o.C6)(g),get pixelRatio(){return(typeof window<"u"&&window.devicePixelRatio||1)*(Se||1)},extensions:xe,state:le,stats:Ae,resources:Be,timer:Ce,get maxTextureSize(){return Re.maxTextureSize},get max3dTextureSize(){return Re.max3dTextureSize},get maxRenderbufferSize(){return Re.maxRenderbufferSize},get maxDrawBuffers(){return Re.maxDrawBuffers},get maxTextureImageUnits(){return Re.maxTextureImageUnits},namedComputeRenderables:Object.create(null),namedFramebuffers:Object.create(null),namedTextures:Object.create(null),get isContextLost(){return we||g.isContextLost()},contextRestored:Oe,setContextLost:()=>{we=!0,Ce.clear()},handleContextRestored:K=>{Object.assign(xe,y(g)),le.reset(),le.currentMaterialId=-1,le.currentProgramId=-1,le.currentRenderItemId=-1,Be.reset(),Ne.forEach(ne=>ne.reset()),K?.(),we=!1,Oe.next((0,Q.t)())},setPixelScale:K=>{Se=K},createRenderTarget:(K,ne,be,Te,ie,ue)=>{const re=(0,L.m)(g,Be,K,ne,be,Te,ie,ue);return Ne.add(re),{...re,destroy:()=>{re.destroy(),Ne.delete(re)}}},unbindFramebuffer:()=>$(g),readPixels:(K,ne,be,Te,ie)=>{Z(g,K,ne,be,Te,ie)},readPixelsAsync:Ve,waitForGpuCommandsComplete:()=>function ye(g){return new Promise(_e=>{(0,o.C6)(g)?te(g,_e):(de||(console.info("Sync object not supported in WebGL"),de=!0),j(g),_e())})}(g),waitForGpuCommandsCompleteSync:()=>j(g),getDrawingBufferPixelData:()=>function q(g,_e){const xe=g.drawingBufferWidth,le=g.drawingBufferHeight,Ae=new Uint8Array(xe*le*4);return $(g),_e.viewport(0,0,xe,le),Z(g,0,0,xe,le,Ae),i.N.flipY(i.N.create(Ae,xe,le))}(g,le),clear:(K,ne,be,Te)=>{$(g),le.enable(g.SCISSOR_TEST),le.depthMask(!0),le.colorMask(!0,!0,!0,!0),le.clearColor(K,ne,be,Te),le.viewport(0,0,g.drawingBufferWidth,g.drawingBufferHeight),le.scissor(0,0,g.drawingBufferWidth,g.drawingBufferHeight),g.clear(g.COLOR_BUFFER_BIT|g.DEPTH_BUFFER_BIT)},destroy:K=>{var ne,be;Be.destroy(),function H(g){const _e=g.getParameter(g.MAX_TEXTURE_IMAGE_UNITS);for(let Ae=0;Ae<_e;++Ae)g.activeTexture(g.TEXTURE0+Ae),g.bindTexture(g.TEXTURE_2D,null),g.bindTexture(g.TEXTURE_CUBE_MAP,null),(0,o.C6)(g)&&(g.bindTexture(g.TEXTURE_2D_ARRAY,null),g.bindTexture(g.TEXTURE_3D,null));const xe=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,xe);const le=g.getParameter(g.MAX_VERTEX_ATTRIBS);for(let Ae=0;Ae{"use strict";n.d(Ue,{Vv:()=>i,kD:()=>A,oN:()=>c});var e=n(7778),o=n(8437);const r=(0,e.q)();function A(v){const O=v.checkFramebufferStatus(v.FRAMEBUFFER);if(O!==v.FRAMEBUFFER_COMPLETE){const b=function t(v,O){switch(O){case v.FRAMEBUFFER_COMPLETE:return"complete";case v.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"incomplete attachment";case v.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"incomplete missing attachment";case v.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"incomplete dimensions";case v.FRAMEBUFFER_UNSUPPORTED:return"unsupported"}if((0,o.C6)(v))switch(O){case v.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:return"incomplete multisample";case v.RENDERBUFFER_SAMPLES:return"renderbuffer samples"}return"unknown error"}(v,O);throw new Error(`Framebuffer status: ${b}`)}}function y(v){const O=v.createFramebuffer();if(null===O)throw new Error("Could not create WebGL framebuffer");return O}function c(v){let O=y(v),b=!1;return{id:r(),bind:()=>v.bindFramebuffer(v.FRAMEBUFFER,O),reset:()=>{O=y(v)},destroy:()=>{b||(v.deleteFramebuffer(O),b=!0)}}}function i(){return{id:r(),bind:()=>{},reset:()=>{},destroy:()=>{}}}},7579:(tn,Ue,n)=>{"use strict";n.d(Ue,{J:()=>_,r:()=>M});var e=n(2897),o=n(2879),r=n(4677),t=n(7778),A=n(2629),y=n(8437);const c=(0,t.q)();function _(I){const l=I.createProgram();if(null===l)throw new Error("Could not create WebGL program");return l}function M(I,l,m,u,d){const{defineValues:s,shaderCode:C,schema:h}=d;let a=_(I);const S=c(),D=(0,e.NB)(I,m,s,C),R=u("vert",D.vert),f=u("frag",D.frag);let p,E;function T(){R.attach(a),f.attach(a),I.linkProgram(a),A.Bb&&function b(I,l){if(!I.getProgramParameter(l,I.LINK_STATUS))throw new Error(`Could not compile WebGL program. \n\n${I.getProgramInfoLog(l)}`)}(I,a),p=function i(I,l,m){const u={};return Object.keys(m).forEach(d=>{const s=m[d];if("attribute"===s.type){const C=I.getAttribLocation(l,d);u[d]=C}else if("uniform"===s.type){let C=I.getUniformLocation(l,d);null===C&&(0,o.a5)(s.kind)&&(C=I.getUniformLocation(l,d+"[0]")),u[d]=C}else if("texture"===s.type){const C=I.getUniformLocation(l,d);u[d]=C}}),u}(I,a,h),E=(0,o.Pi)(h),A.Bb&&(function v(I,l,m){const u=I.getProgramParameter(l,I.ACTIVE_ATTRIBUTES);for(let d=0;d{l.currentProgramId=S,I.useProgram(a)},setUniforms:w=>{for(let Q=0,G=w.length;Q{const G=p[w];null!==G&&E[w](I,G,Q)},bindAttributes:w=>{l.clearVertexAttribsState();for(let Q=0,G=w.length;Q{for(let G=0,V=w.length;G{for(let G=0,V=w.length;G{a=_(I),T()},destroy:()=>{L||(R.destroy(),f.destroy(),I.deleteProgram(a),L=!0)}}}},4143:(tn,Ue,n)=>{"use strict";n.d(Ue,{$h:()=>S,vC:()=>a});var e=n(4677),o=n(4648),r=n(6349),t=n(4511),A=n(7778),y=n(9909),c=n(3648),i=n(2629),v=n(6115),O=n(9359),b=n(2879);const _=(0,A.q)(),l=Object.keys({color:"",pick:"",depth:"",marking:"",emissive:""}),u=Object.keys({compute:""});function d(R,f,p,E,T){return p={...p,dRenderVariant:y.IQ.create(f)},void 0===T.dRenderVariant&&Object.defineProperty(T,"dRenderVariant",{value:(0,t.$F)("string")}),R.resources.program(p,E,T)}function h(R,f){if("color"===R)switch(f){case"blended":return"colorBlended";case"wboit":return"colorWboit";case"dpoit":return"colorDpoit"}return R}function a(R,f,p,E,T,L,w){return D(R,f,p,E,T,L,l,w)}function S(R,f,p,E,T,L=-1){return D(R,f,p,E,T,L,u,void 0)}function D(R,f,p,E,T,L,w,Q){const G=_(),{stats:V,state:U,resources:N}=R,{instancedArrays:k,vertexArrayObject:H,multiDrawInstancedBaseVertexBaseInstance:$,drawInstancedBaseVertexBaseInstance:J}=R.extensions;T.uVertexCount&&!R.extensions.noNonInstancedActiveAttribs&&(T.aVertex=y.IQ.create((0,v.WE)(new Float32Array(T.uVertexCount.ref.value))),E.aVertex=(0,t.Yz)("float32",1,0));const{attributeValues:W,defineValues:te,textureValues:de,materialTextureValues:ye,uniformValues:j,materialUniformValues:Z,bufferedUniformValues:q}=(0,t.tC)(E,T),Y=Object.entries(j),ee=Object.entries(Z),g=Object.entries(q),_e=Object.entries((0,b.kB)(q)),xe=Object.entries(te),le=(0,t.fb)(T),Ae=function M(R,f){const{gl:p}=R;switch(f){case"points":return p.POINTS;case"lines":return p.LINES;case"line-strip":return p.LINE_STRIP;case"line-loop":return p.LINE_LOOP;case"triangles":return p.TRIANGLES;case"triangle-strip":return p.TRIANGLE_STRIP;case"triangle-fan":return p.TRIANGLE_FAN}}(R,f),Be={};for(const ie of w)Be[ie]=d(R,h(ie,Q),te,p,E);const Ce=(0,o.z1)(R,E,de),Re=(0,o.z1)(R,E,ye),ke=(0,e.oq)(R,E,W),we=[];for(let ie=0,ue=ke.length;ieBe[ie],setTransparency:ie=>{if(ie!==Q){Q=ie;for(const ue of w)Be[ue].destroy(),Be[ue]=d(R,h(ue,Q),te,p,E)}},render:(ie,ue,re)=>{if(0===Ne||0===K)return;const ve=Be[ie];if(ve.id===Te&&U.currentRenderItemId===G)ve.setUniforms(Y),ve.bindTextures(Ce,ue);else{const ce=Ve[ie];(ve.id!==U.currentProgramId||ve.id!==Te||-1===L||L!==U.currentMaterialId)&&(ve.id!==U.currentProgramId&&ve.use(),ve.setUniforms(ee),ve.bindTextures(Re,ue+Ce.length),U.currentMaterialId=L,Te=ve.id),ve.setUniforms(Y),ve.setUniforms(_e),ve.bindTextures(Ce,ue),ce?(ce.bind(),Oe&&Oe.bind()):(Oe&&Oe.bind(),ve.bindAttributes(ke)),U.currentRenderItemId=G}if(i.Bb)try{(0,c.kD)(R.gl)}catch(ce){throw new Error(`Framebuffer error rendering item id ${G}: '${ce}'`)}if(re){for(const ce of re)if(0!==ce.count){if(ve.setUniforms(ce.uniforms),$)Oe?$.multiDrawElementsInstancedBaseVertexBaseInstance(Ae,ce.counts,0,Oe._dataType,ce.offsets,0,ce.instanceCounts,0,ce.baseVertices,0,ce.baseInstances,0,ce.count):$.multiDrawArraysInstancedBaseInstance(Ae,ce.firsts,0,ce.counts,0,ce.instanceCounts,0,ce.baseInstances,0,ce.count);else if(J)if(Oe)for(let se=0;se0&&(ve.uniform("uDrawId",se),J.drawElementsInstancedBaseVertexBaseInstance(Ae,ce.counts[se],Oe._dataType,ce.offsets[se],ce.instanceCounts[se],ce.baseVertices[se],ce.baseInstances[se]));else for(let se=0;se0&&(ve.uniform("uDrawId",se),J.drawArraysInstancedBaseInstance(Ae,ce.firsts[se],ce.counts[se],ce.instanceCounts[se],ce.baseInstances[se]));else if(Oe)for(let se=0;se0&&(ve.uniform("uDrawId",se),ve.offsetAttributes(we,ce.baseInstances[se]),k.drawElementsInstanced(Ae,ce.counts[se],Oe._dataType,ce.offsets[se],ce.instanceCounts[se]));else for(let se=0;se0&&(ve.uniform("uDrawId",se),ve.offsetAttributes(we,ce.baseInstances[se]),k.drawArraysInstanced(Ae,0,ce.counts[se],ce.instanceCounts[se]));if(i.g$){$?V.calls.multiDrawInstancedBase+=1:J?V.calls.drawInstancedBase+=ce.count:V.calls.drawInstanced+=ce.count;for(let se=0;se{if(function C(R){R.attributes=!1,R.defines=!1,R.elements=!1,R.textures=!1}(ne),T.aVertex){const ie=T.uVertexCount.ref.value;T.aVertex.ref.value.length=ce.ref.value.length)ve.updateSubData(ce.ref.value,0,ve.length);else{ve.destroy();const{itemSize:se,divisor:ae}=E[re];ke[ie][1]=N.attribute(ce.ref.value,se,ae),ne.attributes=!0}le[re]=ce.ref.version}}if(Oe&&T.elements.ref.version!==le.elements&&(Oe.length>=T.elements.ref.value.length?Oe.updateSubData(T.elements.ref.value,0,Oe.length):(Oe.destroy(),Oe=N.elements(T.elements.ref.value),ne.elements=!0),le.elements=T.elements.ref.version),ne.attributes||ne.defines||ne.elements)for(const ie of w){const ue=Ve[ie];ue&&ue.destroy(),Ve[ie]=H?N.vertexArray(Be[ie],ke,Oe):null}for(let ie=0,ue=Ce.length;ie{if(!be){for(const ie of w){Be[ie].destroy();const ue=Ve[ie];ue&&ue.destroy()}Ce.forEach(([ie,ue])=>{"texture"!==E[ie].kind&&ue.destroy()}),Re.forEach(([ie,ue])=>{"texture"!==E[ie].kind&&ue.destroy()}),ke.forEach(([ie,ue])=>ue.destroy()),Oe&&Oe.destroy(),V.drawCount-=Ne,V.instanceCount-=K,V.instancedDrawCount-=K*Ne,be=!0}}}}},2021:(tn,Ue,n)=>{"use strict";n.d(Ue,{T:()=>c,m:()=>y});var e=n(7778),o=n(4648),r=n(3648),t=n(8437);const A=(0,e.q)();function y(i,v,O,b,_=!0,M="uint8",I="nearest",l="rgba"){if("alpha"===l&&!(0,t.C6)(i))throw new Error("cannot render to alpha format in webgl1");const m=v.framebuffer(),u="fp16"===M?v.texture("image-float16",l,"fp16",I):"float32"===M?v.texture("image-float32",l,"float",I):v.texture("image-uint8",l,"ubyte",I),d=_?(0,t.C6)(i)?v.renderbuffer("depth32f","depth",O,b):v.renderbuffer("depth16","depth",O,b):null;function s(){u.define(O,b),u.attachFramebuffer(m,"color0"),d&&d.attachFramebuffer(m)}s();let C=!1;return{id:A(),texture:u,framebuffer:m,depthRenderbuffer:d,getWidth:()=>O,getHeight:()=>b,bind:()=>{m.bind()},setSize:(h,a)=>{O===h&&b===a||(u.define(O=h,b=a),d&&d.setSize(O,b))},reset:()=>{s()},destroy:()=>{C||(u.destroy(),m.destroy(),d&&d.destroy(),C=!0)}}}function c(i){return{id:A(),texture:(0,o.z6)(i),framebuffer:(0,r.Vv)(),depthRenderbuffer:null,getWidth:()=>0,getHeight:()=>0,bind:()=>{i.bindFramebuffer(i.FRAMEBUFFER,null)},setSize:()=>{},reset:()=>{},destroy:()=>{}}}},4098:(tn,Ue,n)=>{"use strict";n.d(Ue,{A:()=>A,g:()=>y});var e=n(7778),o=n(2629);const r=(0,e.q)();function A(c,i){const{type:v,source:O}=i,b=c.createShader("vert"===v?c.VERTEX_SHADER:c.FRAGMENT_SHADER);if(null===b)throw new Error(`Error creating ${v} shader`);if(c.shaderSource(b,O),c.compileShader(b),o.Bb&&!1===c.getShaderParameter(b,c.COMPILE_STATUS))throw console.warn(`'${v}' shader info log '${c.getShaderInfoLog(b)}'\n${function t(c){const i=c.split("\n");for(let v=0;v{c.attachShader(O,v)},reset:()=>{v=A(c,i)},destroy:()=>{c.deleteShader(v)}}}},4648:(tn,Ue,n)=>{"use strict";n.d(Ue,{NP:()=>p,ji:()=>R,pg:()=>S,sZ:()=>h,z1:()=>a,z6:()=>E});var e=n(9909),o=n(7778),r=n(8437),t=n(1372),A=n(9359),y=n(4490);const c=(0,o.q)();function v(T,L,w){switch(L){case"alpha":return(0,r.C6)(T)&&"float"===w?T.RED:(0,r.C6)(T)&&"int"===w?T.RED_INTEGER:T.ALPHA;case"rgb":return(0,r.C6)(T)&&"int"===w?T.RGB_INTEGER:T.RGB;case"rg":if((0,r.C6)(T)&&"float"===w)return T.RG;if((0,r.C6)(T)&&"int"===w)return T.RG_INTEGER;throw new Error('texture format "rg" requires webgl2 and type "float" or int"');case"rgba":return(0,r.C6)(T)&&"int"===w?T.RGBA_INTEGER:T.RGBA;case"depth":return T.DEPTH_COMPONENT}}function b(T,L,w,Q,G){return function _(T){switch(T){case"alpha":return 1;case"rg":return 2;case"rgb":return 3;case"rgba":case"depth":return 4}}(T)*function M(T){switch(T){case"ubyte":return 1;case"ushort":case"fp16":return 2;case"float":case"int":return 4}}(L)*w*Q*(G||1)}function l(T,L){switch(L){case"nearest":return T.NEAREST;case"linear":return T.LINEAR}}function m(T,L,w){switch(w){case"depth":return T.DEPTH_ATTACHMENT;case"stencil":return T.STENCIL_ATTACHMENT;case"color0":case 0:return T.COLOR_ATTACHMENT0}if(L.drawBuffers)switch(w){case"color1":case 1:return L.drawBuffers.COLOR_ATTACHMENT1;case"color2":case 2:return L.drawBuffers.COLOR_ATTACHMENT2;case"color3":case 3:return L.drawBuffers.COLOR_ATTACHMENT3;case"color4":case 4:return L.drawBuffers.COLOR_ATTACHMENT4;case"color5":case 5:return L.drawBuffers.COLOR_ATTACHMENT5;case"color6":case 6:return L.drawBuffers.COLOR_ATTACHMENT6;case"color7":case 7:return L.drawBuffers.COLOR_ATTACHMENT7}throw new Error("unknown texture attachment")}function u(T){return typeof HTMLImageElement<"u"&&T instanceof HTMLImageElement}function s(T,L,w){return L===w.TEXTURE_3D}function C(T){const L=T.createTexture();if(null===L)throw new Error("Could not create WebGL texture");return L}function h(T,L,w,Q,G,V){const U=c();let N=C(T);if(w.endsWith("float32")&&"float"!==G||w.endsWith("float16")&&"fp16"!==G||w.endsWith("uint8")&&"ubyte"!==G||w.endsWith("int32")&&"int"!==G||w.endsWith("depth")&&"ushort"!==G&&"float"!==G)throw new Error(`texture kind '${w}' and type '${G}' are incompatible`);if(!L.depthTexture&&"depth"===Q)throw new Error("extension 'WEBGL_depth_texture' needed for 'depth' texture format");const k=function i(T,L){switch(L){case"image-uint8":case"image-float32":case"image-float16":case"image-depth":return T.TEXTURE_2D}if((0,r.C6)(T))switch(L){case"image-int32":return T.TEXTURE_2D;case"volume-uint8":case"volume-float32":case"volume-float16":return T.TEXTURE_3D}throw new Error(`unknown texture kind '${L}'`)}(T,w),H=l(T,V),$=v(T,Q,G),J=function O(T,L,w){if((0,r.C6)(T))switch(L){case"alpha":switch(w){case"ubyte":return T.ALPHA;case"float":return T.R32F;case"fp16":return T.R16F;case"int":return T.R32I}case"rg":switch(w){case"ubyte":return T.RG;case"float":return T.RG32F;case"fp16":return T.RG16F;case"int":return T.RG32I}case"rgb":switch(w){case"ubyte":return T.RGB;case"float":return T.RGB32F;case"fp16":return T.RGB16F;case"int":return T.RGB32I}case"rgba":switch(w){case"ubyte":return T.RGBA;case"float":return T.RGBA32F;case"fp16":return T.RGBA16F;case"int":return T.RGBA32I}case"depth":switch(w){case"ushort":return T.DEPTH_COMPONENT16;case"float":return T.DEPTH_COMPONENT32F}}return v(T,L,w)}(T,Q,G),W=function I(T,L,w){switch(w){case"ubyte":return T.UNSIGNED_BYTE;case"ushort":return T.UNSIGNED_SHORT;case"float":return T.FLOAT;case"fp16":if(L.textureHalfFloat)return L.textureHalfFloat.HALF_FLOAT;throw new Error('extension "texture_half_float" unavailable');case"int":if((0,r.C6)(T))return T.INT;throw new Error('texture type "int" requires webgl2')}}(T,L,G);function te(){T.bindTexture(k,N),T.texParameteri(k,T.TEXTURE_MAG_FILTER,H),T.texParameteri(k,T.TEXTURE_MIN_FILTER,H),T.texParameteri(k,T.TEXTURE_WRAP_S,T.CLAMP_TO_EDGE),T.texParameteri(k,T.TEXTURE_WRAP_T,T.CLAMP_TO_EDGE),T.bindTexture(k,null)}te();let Z,de=0,ye=0,j=0,q=!1,Y=!1;function ee(le,Ae,Be){if(0===le||0===Ae||(0,r.C6)(T)&&k===T.TEXTURE_3D&&0===Be)throw new Error("empty textures are not allowed");if(de!==le||ye!==Ae||j!==(Be||0))if(de=le,ye=Ae,j=Be||0,T.bindTexture(k,N),k===T.TEXTURE_2D)T.texImage2D(k,0,J,de,ye,0,$,W,null);else{if(!(0,r.C6)(T)||k!==T.TEXTURE_3D||void 0===j)throw new Error("unknown texture target");T.texImage3D(k,0,J,de,ye,j,0,$,W,null)}}function g(le,Ae=!1){if(0===le.width||0===le.height||!u(le)&&(0,r.C6)(T)&&s(0,k,T)&&0===le.depth)throw new Error("empty textures are not allowed");if(T.bindTexture(k,N),T.pixelStorei(T.UNPACK_ALIGNMENT,1),T.pixelStorei(T.UNPACK_COLORSPACE_CONVERSION_WEBGL,T.NONE),T.pixelStorei(T.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),u(le))de=le.width,ye=le.height,T.pixelStorei(T.UNPACK_FLIP_Y_WEBGL,!1),T.bindTexture(T.TEXTURE_2D,N),T.texImage2D(T.TEXTURE_2D,0,J,$,W,le);else if(function d(T,L,w){return L===w.TEXTURE_2D}(0,k,T)){const Be=le.filter?l(T,le.filter):H;T.texParameteri(k,T.TEXTURE_MAG_FILTER,Be),T.texParameteri(k,T.TEXTURE_MIN_FILTER,Be),T.pixelStorei(T.UNPACK_FLIP_Y_WEBGL,!!le.flipY),Ae?T.texSubImage2D(k,0,0,0,le.width,le.height,$,W,le.array):(de=le.width,ye=le.height,T.texImage2D(k,0,J,de,ye,0,$,W,le.array))}else{if(!(0,r.C6)(T)||!s(0,k,T))throw new Error("unknown texture target");T.pixelStorei(T.UNPACK_FLIP_Y_WEBGL,!1),Ae?T.texSubImage3D(k,0,0,0,0,le.width,le.height,le.depth,$,W,le.array):(de=le.width,ye=le.height,j=le.depth,T.texImage3D(k,0,J,de,ye,j,0,$,W,le.array))}T.bindTexture(k,null),Z=le}function _e(){if(k!==T.TEXTURE_2D)throw new Error("mipmap only supported for 2d textures");if(!((0,r.C6)(T)||(0,y.r6)(de)&&(0,y.r6)(ye)))throw new Error("mipmap unsupported for non-power-of-two textures and webgl1");T.bindTexture(k,N),T.texParameteri(k,T.TEXTURE_MIN_FILTER,T.LINEAR_MIPMAP_LINEAR),T.generateMipmap(k),T.bindTexture(k,null),q=!0}return ee(1,1,(0,r.C6)(T)&&k===T.TEXTURE_3D?1:0),{id:U,target:k,format:$,internalFormat:J,type:W,filter:H,getWidth:()=>de,getHeight:()=>ye,getDepth:()=>j,getByteCount:()=>b(Q,G,de,ye,j),define:ee,load:g,mipmap:_e,bind:le=>{T.activeTexture(T.TEXTURE0+le),T.bindTexture(k,N)},unbind:le=>{T.activeTexture(T.TEXTURE0+le),T.bindTexture(k,null)},attachFramebuffer:function xe(le,Ae,Be){if(le.bind(),k===T.TEXTURE_2D)T.framebufferTexture2D(T.FRAMEBUFFER,m(T,L,Ae),T.TEXTURE_2D,N,0);else{if(!(0,r.C6)(T)||k!==T.TEXTURE_3D)throw new Error("unknown/unsupported texture target");if(void 0===Be)throw new Error("need `layer` to attach 3D texture");T.framebufferTextureLayer(T.FRAMEBUFFER,m(T,L,Ae),N,0,Be)}},detachFramebuffer:(le,Ae)=>{if(le.bind(),k===T.TEXTURE_2D)T.framebufferTexture2D(T.FRAMEBUFFER,m(T,L,Ae),T.TEXTURE_2D,null,0);else{if(!(0,r.C6)(T)||k!==T.TEXTURE_3D)throw new Error("unknown texture target");T.framebufferTextureLayer(T.FRAMEBUFFER,m(T,L,Ae),null,0,0)}},reset:()=>{N=C(T),te();const[le,Ae,Be]=[de,ye,j];de=0,ye=0,j=0,ee(le,Ae,Be),Z&&g(Z),q&&_e()},destroy:()=>{Y||(T.deleteTexture(N),Y=!0)}}}function a(T,L,w){const{resources:Q}=T,G=[];return Object.keys(L).forEach(V=>{const U=L[V];if("texture"===U.type){const N=w[V];if(N)if("texture"===U.kind)G[G.length]=[V,N.ref.value];else{const k=Q.texture(U.kind,U.format,U.dataType,U.filter);k.load(N.ref.value),G[G.length]=[V,k]}}}),G}function S(T,L,w){const Q=new Image;Q.onload=function(){w.load(Q),e.IQ.update(L,w)},Q.src=T}function R(T,L,w,Q){const G=T.TEXTURE_CUBE_MAP,V=T.LINEAR,U=T.RGBA,N=T.RGBA,k=T.UNSIGNED_BYTE;let H=0;const $=T.createTexture();T.bindTexture(G,$);let J=0;(0,A.IF)(L,(te,de)=>{if(!te)return;const j=function D(T,L){switch(L){case"nx":return T.TEXTURE_CUBE_MAP_NEGATIVE_X;case"ny":return T.TEXTURE_CUBE_MAP_NEGATIVE_Y;case"nz":return T.TEXTURE_CUBE_MAP_NEGATIVE_Z;case"px":return T.TEXTURE_CUBE_MAP_POSITIVE_X;case"py":return T.TEXTURE_CUBE_MAP_POSITIVE_Y;case"pz":return T.TEXTURE_CUBE_MAP_POSITIVE_Z}}(T,de),Z=new Image;te instanceof File?Z.src=URL.createObjectURL(te):(0,t.$X)(te)?te.then(q=>{Z.src=URL.createObjectURL(q)}):Z.src=te,Z.addEventListener("load",()=>{0===H&&(H=Z.width),T.texImage2D(j,0,U,H,H,0,N,k,null),T.pixelStorei(T.UNPACK_ALIGNMENT,4),T.pixelStorei(T.UNPACK_COLORSPACE_CONVERSION_WEBGL,T.NONE),T.pixelStorei(T.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),T.pixelStorei(T.UNPACK_FLIP_Y_WEBGL,!1),T.bindTexture(G,$),T.texImage2D(j,0,U,N,k,Z),J+=1,6===J&&(W||(w?(T.texParameteri(G,T.TEXTURE_MIN_FILTER,T.LINEAR_MIPMAP_LINEAR),T.generateMipmap(G)):T.texParameteri(G,T.TEXTURE_MIN_FILTER,V),T.texParameteri(G,T.TEXTURE_MAG_FILTER,V)),Q?.(W))}),Z.addEventListener("error",()=>{Q?.(!0)})});let W=!1;return{id:c(),target:G,format:N,internalFormat:U,type:k,filter:V,getWidth:()=>H,getHeight:()=>H,getDepth:()=>0,getByteCount:()=>6*b("rgba","ubyte",H,H,0)*(w?2:1),define:()=>{},load:()=>{},mipmap:()=>{},bind:te=>{T.activeTexture(T.TEXTURE0+te),T.bindTexture(G,$)},unbind:te=>{T.activeTexture(T.TEXTURE0+te),T.bindTexture(G,null)},attachFramebuffer:()=>{},detachFramebuffer:()=>{},reset:()=>{},destroy:()=>{W||(T.deleteTexture($),W=!0)}}}const f=-1;function p(T){return T.format===f}function E(T){var L;const w=null!==(L=T?.TEXTURE_2D)&&void 0!==L?L:3553;return{id:c(),target:w,format:f,internalFormat:0,type:0,filter:0,getWidth:()=>0,getHeight:()=>0,getDepth:()=>0,getByteCount:()=>0,define:()=>{},load:()=>{},mipmap:()=>{},bind:Q=>{T&&(T.activeTexture(T.TEXTURE0+Q),T.bindTexture(w,null))},unbind:Q=>{T&&(T.activeTexture(T.TEXTURE0+Q),T.bindTexture(w,null))},attachFramebuffer:()=>{throw new Error("cannot attach null-texture to a framebuffer")},detachFramebuffer:()=>{throw new Error("cannot detach null-texture from a framebuffer")},reset:()=>{},destroy:()=>{}}}},2098:(tn,Ue,n)=>{"use strict";n.d(Ue,{C:()=>y,d:()=>i});var e=n(9854);class r{add(O,b){let _=this.avgs.get(O)||b;return _=function o(v,O,b){return(v-=v/b)+O/b}(_,b,this.count),this.avgs.set(O,_),_}get(O){return this.avgs.get(O)}stats(){return Object.fromEntries(this.avgs.entries())}clear(){this.avgs.clear()}constructor(O){this.count=O,this.avgs=new Map}}function y(v,O,b,_){var M;const I=O.disjointTimerQuery,l=null!==(M=_?.avgCount)&&void 0!==M?M:30,m=new Map,u=new Map,d=[],s=new r(l),C=new r(l);let h=[],a=null,S=!1;const D=()=>{I&&(m.forEach((f,p)=>{I.deleteQuery(p)}),u.clear(),d.length=0,s.clear(),C.clear(),h=[],a=null,S=!1)},R=()=>{if(!I)return;const f=function A(v){return v.disjointTimerQuery?v.disjointTimerQuery.createQuery():null}(O);f&&(I.beginQuery(I.TIME_ELAPSED,f),u.forEach((p,E)=>{p.queries.push(f)}),m.set(f,{refCount:u.size}),a=f)};return{resolve:()=>{const f=[];if(!I||!h.length)return f;m.forEach((E,T)=>{if(void 0!==E.timeElapsed)return;const L=I.getQueryParameter(T,I.QUERY_RESULT_AVAILABLE),w=v.getParameter(I.GPU_DISJOINT);if(L&&!w){const Q=I.getQueryParameter(T,I.QUERY_RESULT);E.timeElapsed=Q}(L||w)&&I.deleteQuery(T)});const p=[];for(const E of h)if(E.queries.every(T=>{var L;return void 0!==(null===(L=m.get(T))||void 0===L?void 0:L.timeElapsed)})){let T=0;for(const L of E.queries){const w=m.get(L);T+=w.timeElapsed,w.refCount-=1}if(E.timeElapsed=T,E.root){const L=[],w=(G,V)=>{for(const U of G){const N=U.timeElapsed,k=U.cpu.end-U.cpu.start,H={label:U.label,gpuElapsed:N,gpuAvg:s.add(U.label,N),cpuElapsed:k,cpuAvg:C.add(U.label,k),children:[],calls:U.calls};V.push(H),w(U.children,H.children)}};w(E.children,L);const Q=E.cpu.end-E.cpu.start;f.push({label:E.label,gpuElapsed:T,gpuAvg:s.add(E.label,T),cpuElapsed:Q,cpuAvg:C.add(E.label,Q),children:L,calls:E.calls})}}else p.push(E);return h=p,m.forEach((E,T)=>{0===E.refCount&&m.delete(T)}),f},mark:(f,p=!1)=>{if(!I)return;if(u.has(f))throw new Error(`Timer mark for '${f}' already exists`);null!==a&&I.endQuery(I.TIME_ELAPSED);const E={label:f,queries:[],children:[],root:null===a,cpu:{start:(0,e.t)(),end:-1},captureStats:p};if(u.set(f,E),d.length&&d[d.length-1].children.push(E),d.push(E),p){if(S)throw new Error("Already capturing stats");(function t(v){v.calls.drawInstanced=0,v.calls.drawInstancedBase=0,v.calls.multiDrawInstancedBase=0,v.calls.counts=0,v.culled.lod=0,v.culled.frustum=0,v.culled.occlusion=0})(b),S=!0}R()},markEnd:f=>{var p;if(!I)return;const E=u.get(f);if(!E)throw new Error(`Timer mark for '${f}' does not exist`);if((null===(p=d.pop())||void 0===p?void 0:p.label)!==f)throw new Error(`Timer mark for '${f}' has pending nested mark`);I.endQuery(I.TIME_ELAPSED),u.delete(f),E.cpu.end=(0,e.t)(),E.captureStats&&(E.calls={...b.calls},S=!1),h.push(E),u.size>0?R():a=null},stats:()=>({gpu:s.stats(),cpu:C.stats()}),formatedStats:()=>{const f={},p=s.stats(),E=C.stats();for(const T of Object.keys(p)){const L=`${(p[T]/1e3/1e3).toFixed(2)}`,w=`${E[T].toFixed(2)}`;f[T]=`${L} ms | CPU: ${w} ms`}return f},clear:D,destroy:()=>{D()}}}function i(v){v.map(O=>{const b=function c(v){const O=`${(v.gpuElapsed/1e3/1e3).toFixed(2)}`,b=`${(v.gpuAvg/1e3/1e3).toFixed(2)}`,_=`${v.cpuElapsed.toFixed(2)}`,M=`${v.cpuAvg.toFixed(2)}`;return`${v.label} ${O} ms (avg. ${b} ms) | CPU: ${_} ms (avg. ${M} ms)`}(O);O.children.length||O.calls?(console.groupCollapsed(b),O.calls&&console.log(O.calls),i(O.children),console.groupEnd()):console.log(b)})}},2879:(tn,Ue,n)=>{"use strict";n.d(Ue,{NM:()=>r,Pi:()=>d,a5:()=>t,kB:()=>h});var e=n(9909),o=n(9359);function r(a,S){switch(S){case"b":case"b[]":return a.BOOL;case"f":case"f[]":return a.FLOAT;case"i":case"i[]":return a.INT;case"v2":case"v2[]":return a.FLOAT_VEC2;case"v3":case"v3[]":return a.FLOAT_VEC3;case"v4":case"v4[]":return a.FLOAT_VEC4;case"iv2":case"iv2[]":return a.INT_VEC2;case"iv3":case"iv3[]":return a.INT_VEC3;case"iv4":case"iv4[]":return a.INT_VEC4;case"m3":case"m3[]":return a.FLOAT_MAT3;case"m4":case"m4[]":return a.FLOAT_MAT4;default:console.error(`unknown uniform kind '${S}'`)}}function t(a){return a.endsWith("[]")}function A(a,S,D){a.uniform1f(S,D)}function y(a,S,D){a.uniform1fv(S,D)}function c(a,S,D){a.uniform1i(S,D)}function i(a,S,D){a.uniform1iv(S,D)}function v(a,S,D){a.uniform2fv(S,D)}function O(a,S,D){a.uniform3fv(S,D)}function b(a,S,D){a.uniform4fv(S,D)}function _(a,S,D){a.uniform2iv(S,D)}function M(a,S,D){a.uniform3iv(S,D)}function I(a,S,D){a.uniform4iv(S,D)}function l(a,S,D){a.uniformMatrix3fv(S,!1,D)}function m(a,S,D){a.uniformMatrix4fv(S,!1,D)}function u(a){switch(a){case"f":return A;case"f[]":return y;case"i":case"t":case"b":return c;case"i[]":case"t[]":case"b[]":return i;case"v2":case"v2[]":return v;case"v3":case"v3[]":return O;case"v4":case"v4[]":return b;case"iv2":case"iv2[]":return _;case"iv3":case"iv3[]":return M;case"iv4":case"iv4[]":return I;case"m3":case"m3[]":return l;case"m4":case"m4[]":return m}}function d(a){const S={};return Object.keys(a).forEach(D=>{const R=a[D];"uniform"===R.type?S[D]=u(R.kind):"texture"===R.type&&(S[D]=u("t"))}),S}function h(a){const S={};return Object.keys(a).forEach(D=>{S[D]=e.IQ.create((0,o.Go)(a[D].ref.value))}),S}},144:(tn,Ue,n)=>{"use strict";n.d(Ue,{ar:()=>D.ar,ND:()=>D.ND,xv:()=>e.x,D4:()=>t});var e=n(7864),o=n(3897),r=n(1372);function t(f){let p=f.data;for(let E=f.encoding.length-1;E>=0;E--)p=A(p,f.encoding[E]);return p}function A(f,p){switch(p.kind){case"ByteArray":switch(p.type){case e.W.IntDataType.Uint8:return f;case e.W.IntDataType.Int8:return function i(f){return new Int8Array(f.buffer,f.byteOffset)}(f);case e.W.IntDataType.Int16:return function O(f){return v(f,2,Int16Array)}(f);case e.W.IntDataType.Uint16:return function b(f){return v(f,2,Uint16Array)}(f);case e.W.IntDataType.Int32:return function _(f){return v(f,4,Int32Array)}(f);case e.W.IntDataType.Uint32:return function M(f){return v(f,4,Uint32Array)}(f);case e.W.FloatDataType.Float32:return function I(f){return v(f,4,Float32Array)}(f);case e.W.FloatDataType.Float64:return function l(f){return v(f,8,Float64Array)}(f);default:(0,r.dr)(p.type)}case"FixedPoint":return function m(f,p){const E=f.length,T=c(p.srcType,E),L=1/p.factor;for(let w=0;w{"use strict";n.d(Ue,{ND:()=>y,ar:()=>A});var A,y,e=n(8382),o=n(7864),r=n(6640);class t{and(i){return new t(this.providers.concat([i]))}encode(i){const v=[];for(const O of this.providers){const b=O(i);if(!b.encodings.length)throw new Error("Encodings must be non-empty.");i=b.data;for(const _ of b.encodings)v.push(_)}if(!(i instanceof Uint8Array))throw new Error("The encoding must result in a Uint8Array. Fix your encoding chain.");return{encoding:v,data:i}}constructor(i){this.providers=i}}!function(c){function i(b){return new t([b])}function O(b){switch(b.kind){case"ByteArray":return y.byteArray;case"FixedPoint":return y.fixedPoint(b.factor);case"IntervalQuantization":return y.intervalQuantizaiton(b.min,b.max,b.numSteps);case"RunLength":return y.runLength;case"Delta":return y.delta;case"IntegerPacking":return y.integerPacking;case"StringArray":return y.stringArray}}c.by=i,c.fromEncoding=function v(b){let _=i(O(b[0]));for(let M=1;M=0?G/E|0:G/T|0}return L+=p.length,L}c.byteArray=M,c.fixedPoint=function l(p){return E=>function I(p,E){const T=o.W.getDataType(p),L=new Int32Array(p.length);for(let w=0,Q=p.length;wfunction m(p,E,T,L,w){const Q=o.W.getDataType(p);if(!p.length)return{encodings:[{kind:"IntervalQuantization",min:E,max:T,numSteps:L,srcType:Q}],data:new Int32Array(0)};if(T=T?L-1:0|Math.round((k-E)/G)}return{encodings:[{kind:"IntervalQuantization",min:E,max:T,numSteps:L,srcType:Q}],data:V}}(w,p,E,T,L)},c.runLength=function d(p){let E=o.W.getDataType(p);if(void 0===E&&(p=new Int32Array(p),E=o.W.IntDataType.Int32),!p.length)return{encodings:[{kind:"RunLength",srcType:E,srcSize:0}],data:new Int32Array(0)};let T=2;for(let G=1,V=p.length;G=0)for(;N>=T;)Q[G]=T,++G,N-=T;else for(;N<=L;)Q[G]=L,++G,N-=L;Q[G]=N,++G}const V=M(Q);return{encodings:[{kind:"IntegerPacking",byteCount:E.bytesPerElement,isUnsigned:!E.isSigned,srcSize:w},V.encodings[0]],data:V.data}}(p,E)},c.stringArray=function f(p){const E=Object.create(null),T=[],L=new Int32Array(p.length),w=e.Gm.create(Int32Array,1,Math.min(1024,p.length<32?p.length+1:Math.round(p.length/8)+1));e.Gm.add(w,0);let Q=0,G=0;for(const $ of p){if(null==$){L[G++]=-1;continue}let J=E[$];void 0===J&&(Q+=$.length,J=T.length,T[J]=$,E[$]=J,e.Gm.add(w,Q)),L[G++]=J}const V=e.Gm.compact(w),N=(0,r.P)(V).encode(V),H=(0,r.P)(L).encode(L);return{encodings:[{kind:"StringArray",dataEncoding:H.encoding,stringData:T.join(""),offsetEncoding:N.encoding,offsets:N.data}],data:H.data}}}(y||(y={}))},6640:(tn,Ue,n)=>{"use strict";n.d(Ue,{O:()=>A,P:()=>t});var y,c,e=n(5657),o=n(229),r=n(1372);function t(i){return y.classify(i)}function A(i){return c.classify(i)}!function(i){function v(h,a){return h>=0?Math.ceil((h+1)/a):Math.ceil((h+1)/(-a-1))}function _({limit8:h,limit16:a},S,D){S.pack8+=v(D,h),S.pack16+=v(D,a),S.count+=1}function M(h,a){h.pack8+=v(a,127),h.pack16+=v(a,32767),h.count+=1}function I(h){return 4*h.count<2*h.pack16?{length:4*h.count,elem:4}:2*h.pack16D.length-R.length),S}i.getSize=s,i.classify=function C(h){if(h.length<2)return e.ND.by(e.ND.byteArray);const S=s(h)[0];switch(S.kind){case"pack":return e.ND.by(e.ND.integerPacking);case"rle":return e.ND.by(e.ND.runLength).and(e.ND.integerPacking);case"delta":return e.ND.by(e.ND.delta).and(e.ND.integerPacking);case"delta-rle":return e.ND.by(e.ND.delta).and(e.ND.runLength).and(e.ND.integerPacking);default:(0,r.dr)(S)}}}(y||(y={})),(c||(c={})).classify=function O(_){const{mantissaDigits:I,integerDigits:l}=(0,o.In)(_,4,1e-6);if(I<0||I+l>10)return e.ND.by(e.ND.byteArray);if(0===I)return y.classify(_);const m=function b(_){let M=1;for(let I=0;I<_;I++)M*=10;return M}(I),u=new Int32Array(_.length);for(let h=0,a=_.length;h{"use strict";n.d(Ue,{W:()=>o,x:()=>e});const e="0.3.0";var o;!function(r){let t;var i;let A;(i=t=r.IntDataType||(r.IntDataType={}))[i.Int8=1]="Int8",i[i.Int16=2]="Int16",i[i.Int32=3]="Int32",i[i.Uint8=4]="Uint8",i[i.Uint16=5]="Uint16",i[i.Uint32=6]="Uint32",function(i){i[i.Float32=32]="Float32",i[i.Float64=33]="Float64"}(A=r.FloatDataType||(r.FloatDataType={})),r.getDataType=function y(i){let v;return v=i instanceof Int8Array?r.IntDataType.Int8:i instanceof Int16Array?r.IntDataType.Int16:i instanceof Int32Array?r.IntDataType.Int32:i instanceof Uint8Array?r.IntDataType.Uint8:i instanceof Uint16Array?r.IntDataType.Uint16:i instanceof Uint32Array?r.IntDataType.Uint32:i instanceof Float32Array?r.FloatDataType.Float32:i instanceof Float64Array?r.FloatDataType.Float64:r.IntDataType.Int32,v},r.isSignedIntegerDataType=function c(i){if(i instanceof Int8Array||i instanceof Int16Array||i instanceof Int32Array)return!0;for(let v=0,O=i.length;v{"use strict";n.d(Ue,{$q:()=>t,vX:()=>e,yw:()=>o});const e=13330===new Uint16Array(new Uint8Array([18,52]).buffer)[0];function o(A,y){const c=new ArrayBuffer(A.length),i=new Uint8Array(c);for(let v=0,O=A.length;vr){const y=[];for(let c=0;c{"use strict";n.d(Ue,{L:()=>r});var r,e=n(9909),o=n(1241);(r||(r={})).fromBuffer=function A(y,c){return{name:c,readBuffer:(i,v,O,b)=>{let _,M;if("number"==typeof v){O=(0,e.NT)(O,v);const I=i,l=Math.min(y.length,I+O);_=l-I,M=o.N.fromUint8Array(new Uint8Array(y.buffer,I,l-I))}else{O=(0,e.NT)(O,v.length);const I=i,l=Math.min(y.length,I+O);v.set(y.subarray(I,l),b),_=l-I,M=v}return O!==_&&console.warn(`byteCount ${O} and bytesRead ${_} differ`),Promise.resolve({bytesRead:_,buffer:M})},writeBuffer:(i,v,O)=>(O=(0,e.NT)(O,v.length),console.error(".writeBuffer not implemented for FileHandle.fromBuffer"),Promise.resolve(0)),writeBufferSync:(i,v,O)=>(O=(0,e.NT)(O,v.length),console.error(".writeSync not implemented for FileHandle.fromBuffer"),0),close:e.lQ}}},5295:(tn,Ue,n)=>{"use strict";n.d(Ue,{J:()=>o});var e=n(275);function o(i){return c({buffer:i,offset:0,dataView:new DataView(i.buffer)})}function r(i,v){const O={};for(let b=0;b{"use strict";n.d(Ue,{N:()=>o});var o,e=n(9909);!function(r){function t(O){const b=new DataView(O.buffer);return Object.assign(O.subarray(0),{readInt8:_=>b.getInt8(_),readUInt8:_=>b.getUint8(_),writeInt8:(_,M)=>b.setInt8(M,_),writeUInt8:(_,M)=>b.setUint8(M,_),readInt16LE:_=>b.getInt16(_,!0),readInt32LE:_=>b.getInt32(_,!0),readUInt16LE:_=>b.getUint16(_,!0),readUInt32LE:_=>b.getUint32(_,!0),readFloatLE:_=>b.getFloat32(_,!0),readDoubleLE:_=>b.getFloat64(_,!0),writeInt16LE:(_,M)=>b.setInt16(M,_,!0),writeInt32LE:(_,M)=>b.setInt32(M,_,!0),writeUInt16LE:(_,M)=>b.setUint16(M,_,!0),writeUInt32LE:(_,M)=>b.setUint32(M,_,!0),writeFloatLE:(_,M)=>b.setFloat32(M,_,!0),writeDoubleLE:(_,M)=>b.setFloat64(M,_,!0),readInt16BE:_=>b.getInt16(_,!1),readInt32BE:_=>b.getInt32(_,!1),readUInt16BE:_=>b.getUint16(_,!1),readUInt32BE:_=>b.getUint32(_,!1),readFloatBE:_=>b.getFloat32(_,!1),readDoubleBE:_=>b.getFloat64(_,!1),writeInt16BE:(_,M)=>b.setInt16(M,_,!1),writeInt32BE:(_,M)=>b.setInt32(M,_,!1),writeUInt16BE:(_,M)=>b.setUint16(M,_,!1),writeUInt32BE:(_,M)=>b.setUint32(M,_,!1),writeFloatBE:(_,M)=>b.setFloat32(M,_,!1),writeDoubleBE:(_,M)=>b.setFloat64(M,_,!1),copy:(_,M,I,l)=>(M=(0,e.NT)(M,0),I=(0,e.NT)(I,0),l=(0,e.NT)(l,O.length),_.set(O.subarray(I,l),M),l-I)})}function c(O,b,_,M,I){for(let l=0,m=_;l>8&255}},r.ensureLittleEndian=function v(O,b,_,M,I){r.IsNativeEndianLittle||!_||M<=1||c(O,b,_,M,I)}}(o||(o={}))},702:(tn,Ue,n)=>{"use strict";n.d(Ue,{RW:()=>r,SV:()=>t,tM:()=>c,ye:()=>i});var e=n(467),o=n(1241),r=function(O){return O.Float32="float32",O.Int8="int8",O.Int16="int16",O.Uint16="uint16",O}(r||{});function t(O){return O===r.Float32?4:O===r.Int16||O===r.Uint16?2:1}function A(O,b,_=0,M){return O===r.Float32?new Float32Array(b,_,M):O===r.Int16?new Int16Array(b,_,M):O===r.Uint16?new Uint16Array(b,_,M):new Int8Array(b,_,M)}function c(O,b){const _=t(b),M=new ArrayBuffer(_*O),I=o.N.fromArrayBuffer(M),l=o.N.IsNativeEndianLittle?M:new ArrayBuffer(_*O);return{type:b,elementByteSize:_,readBuffer:I,valuesBuffer:new Uint8Array(l),values:A(b,l)}}function i(O,b,_,M,I,l){return v.apply(this,arguments)}function v(){return(v=(0,e.A)(function*(O,b,_,M,I,l){return yield b.readBuffer(_,O.readBuffer,M,I),O.elementByteSize>1&&(void 0!==l&&l!==o.N.IsNativeEndianLittle||!o.N.IsNativeEndianLittle)&&o.N.flipByteOrder(O.readBuffer,O.valuesBuffer,M,O.elementByteSize,I),O.values})).apply(this,arguments)}},275:(tn,Ue,n)=>{"use strict";function e(i,v,O){for(let b=0,_=O.length;b<_;b++){const M=O.charCodeAt(b);if(M<128)i[v++]=M>>>0&127;else if(M<2048)i[v++]=M>>>6&31|192,i[v++]=M>>>0&63|128;else if(M<65536)i[v++]=M>>>12&15|224,i[v++]=M>>>6&63|128,i[v++]=M>>>0&63|128;else{if(!(M<1114112))throw new Error("bad codepoint "+M);i[v++]=M>>>18&7|240,i[v++]=M>>>12&63|128,i[v++]=M>>>6&63|128,i[v++]=M>>>0&63|128}}}n.d(Ue,{VH:()=>c,rj:()=>e,ss:()=>y});const o=function(){const i=[];for(let v=0;v<1024;v++)i[v]=String.fromCharCode(v);return i}();function r(i){throw new Error(i)}const A=typeof TextDecoder<"u"?new TextDecoder:void 0;function y(i,v,O){if(A){const b=v||O!==i.length?i.subarray(v,v+O):i;return A.decode(b)}return function t(i,v,O){const b=o;let _,M=0;const I=[];for(let m=v,u=v+O;m0&&(_[_.length]=I.slice(0,M).join("")),_.join("")):I.slice(0,M).join("")}(i,v,O)}function c(i){let v=0;for(let O=0,b=i.length;O{"use strict";n.d(Ue,{q7:()=>M,qg:()=>d});var e=n(467),o=n(4824),r=n(355),t=n(1009),A=n(1241),y=n(702);function i(){return(i=(0,e.A)(function*(s){const{buffer:h}=yield s.readBuffer(0,1024),a=String.fromCharCode(h.readUInt8(208),h.readUInt8(209),h.readUInt8(210),h.readUInt8(211));if("MAP "!==a)throw new Error('ccp4 format error, missing "MAP " string');const S=[h.readUInt8(212),h.readUInt8(213)];let D=!1;68===S[0]&&65===S[1]?D=!0:17===S[0]&&17===S[1]?D=!1:h.readInt32LE(12)<=16&&(D=!0);const R=D?E=>h.readInt32LE(4*E):E=>h.readInt32BE(4*E),f=D?E=>h.readFloatLE(4*E):E=>h.readFloatBE(4*E);return{header:{NC:R(0),NR:R(1),NS:R(2),MODE:R(3),NCSTART:R(4),NRSTART:R(5),NSSTART:R(6),NX:R(7),NY:R(8),NZ:R(9),xLength:f(10),yLength:f(11),zLength:f(12),alpha:f(13),beta:f(14),gamma:f(15),MAPC:R(16),MAPR:R(17),MAPS:R(18),AMIN:f(19),AMAX:f(20),AMEAN:f(21),ISPG:R(22),NSYMBT:R(23),LSKFLG:R(24),SKWMAT:[],SKWTRN:[],userFlag1:R(39),userFlag2:R(40),originX:f(49),originY:f(50),originZ:f(51),MAP:a,MACHST:S,ARMS:f(54)},littleEndian:D}})).apply(this,arguments)}function O(){return(O=(0,e.A)(function*(s,C,h,a,S,D){if(_(s)){const R=3*S;yield h.readBuffer(a,C.readBuffer,S,R);const f=new Int8Array(C.valuesBuffer.buffer,R),p=(s.AMAX-s.AMIN)/255,E=.5*(s.AMIN+s.AMAX+p);for(let T=0,L=S;T{"use strict";n.d(Ue,{f$:()=>rn,xA:()=>o.xA,RF:()=>o.RF});var e=n(467),o=n(2241),r=n(5555),t=n(355),A=n(4824);function y(tt){for(;tt.position=tt.length)return void(tt.tokenType=6);tt.tokenStart=tt.position,tt.tokenEnd=tt.position,tt.isEscaped=!1;const nn=tt.data.charCodeAt(tt.position);switch(nn){case 35:(function b(tt){for(;tt.position=5&&95===tt.data.charCodeAt(tt.tokenStart+4)?function I(tt){let Mt=tt.data.charCodeAt(tt.tokenStart);return!(68!==Mt&&100!==Mt||(Mt=tt.data.charCodeAt(tt.tokenStart+1),65!==Mt&&97!==Mt)||(Mt=tt.data.charCodeAt(tt.tokenStart+2),84!==Mt&&116!==Mt)||(Mt=tt.data.charCodeAt(tt.tokenStart+3),65!==Mt&&97!==Mt))}(tt)?0:function l(tt){let Mt=tt.data.charCodeAt(tt.tokenStart);return!(83!==Mt&&115!==Mt||(Mt=tt.data.charCodeAt(tt.tokenStart+1),65!==Mt&&97!==Mt)||(Mt=tt.data.charCodeAt(tt.tokenStart+2),86!==Mt&&118!==Mt)||(Mt=tt.data.charCodeAt(tt.tokenStart+3),69!==Mt&&101!==Mt))}(tt)?1:function m(tt){if(tt.tokenEnd-tt.tokenStart!=5)return!1;let Mt=tt.data.charCodeAt(tt.tokenStart);return!(76!==Mt&&108!==Mt||(Mt=tt.data.charCodeAt(tt.tokenStart+1),79!==Mt&&111!==Mt)||(Mt=tt.data.charCodeAt(tt.tokenStart+2),79!==Mt&&111!==Mt)||(Mt=tt.data.charCodeAt(tt.tokenStart+3),80!==Mt&&112!==Mt))}(tt)?2:3:3}}function D(tt){for(S(tt);5===tt.tokenType;)S(tt)}function f(){return{categoryNames:[],categoryData:Object.create(null)}}function p(tt,Mt){const nn=Object.create(null);for(const bn of tt){const Dn=Mt[bn];nn[bn]=o.xA(Dn.name,Dn.rowCount,Dn.fieldNames,Dn.fields)}return nn}function E(tt,Mt,nn){return o.IU(tt.categoryNames,p(tt.categoryNames,tt.categoryData),Mt,nn)}function T(tt,Mt){return o.IU(tt.categoryNames,p(tt.categoryNames,tt.categoryData),Mt)}function L(tt,Mt,nn,bn,Dn){if(Mt in tt.categoryData){const jt=tt.categoryData[Mt];jt.fieldNames.push(...bn),Object.assign(jt.fields,Dn)}else tt.categoryData[Mt]={name:Mt,rowCount:nn,fieldNames:bn,fields:Dn},tt.categoryNames.push(Mt)}function w(tt,Mt){const nn=tt.tokenStart,bn=s(tt),Dn=C(tt,bn),jt=Object.create(null),It=[];let Dt=!0;for(;Dt;){if(4!==tt.tokenType||!d(tt,nn,bn)){Dt=!1;break}const Ct=a(tt).substring(Dn.length+1);if(D(tt),3!==tt.tokenType)return{hasError:!0,errorLine:tt.lineNumber,errorMessage:"Expected value."};jt[Ct]=o.RF.ofTokens({data:tt.data,indices:[tt.tokenStart,tt.tokenEnd],count:1}),It[It.length]=Ct,D(tt)}return L(Mt,Dn.substr(1),1,It,jt),{hasError:!1,errorLine:0,errorMessage:""}}function Q(tt,Mt){const{tokenizer:nn,tokens:bn,fieldCount:Dn}=Mt;let jt=Mt.tokenCount,It=0;for(;3===nn.tokenType&&It0&&nn.push(E(jt,Dn,It)),Dn=tt.substring(bn.tokenStart+5,bn.tokenEnd),jt=f(),It=[],D(bn)}else if(1===Vt){if(bn.tokenEnd-bn.tokenStart==5)Dt.categoryNames.length>0&&(It[It.length]=T(Dt,$t)),bn.inSaveFrame=!1;else{if(bn.inSaveFrame)return N(bn.lineNumber,"Save frames cannot be nested.");bn.inSaveFrame=!0,$t=tt.substring(bn.tokenStart+5,bn.tokenEnd),Dt=f()}D(bn)}else if(2===Vt){const Wt=yield V(bn,bn.inSaveFrame?Dt:jt);if(Wt.hasError)return N(Wt.errorLine,Wt.errorMessage)}else{if(4!==Vt)return console.log(bn.tokenType,r._F.getTokenString(bn)),N(bn.lineNumber,"Unexpected token. Expected data_, loop_, or data name.");{const Wt=w(bn,bn.inSaveFrame?Dt:jt);if(Wt.hasError)return N(Wt.errorLine,Wt.errorMessage)}}}return bn.inSaveFrame?N(bn.lineNumber,`Unfinished save frame (${Ct.header}).`):((jt.categoryNames.length>0||It.length>0)&&nn.push(E(jt,Dn,It)),function k(tt){return t.H.success(tt)}(o.jG(nn)))})).apply(this,arguments)}function J(tt){return A.YZ.create("Parse CIF",function(){var Mt=(0,e.A)(function*(nn){return yield function H(tt,Mt){return $.apply(this,arguments)}(tt,nn)});return function(nn){return Mt.apply(this,arguments)}}())}var W=n(6651),te=n(144),de=n(2025),j=n(5295);function q(tt){const Mt=Object.create(null),nn=Object.create(null);for(const bn of tt.columns)Mt[bn.name]=bn;return{rowCount:tt.rowCount,name:tt.name.substr(1),fieldNames:tt.columns.map(bn=>bn.name),getField(bn){const Dn=Mt[bn];if(Dn)return nn[bn]||(nn[bn]=function ye(tt){const Mt=tt.mask?(0,te.D4)(tt.mask):void 0,nn=(0,te.D4)(tt.data),bn=W.iu.isTypedArray(nn),Dn=bn?Mt?$t=>0===Mt[$t]?""+nn[$t]:"":$t=>""+nn[$t]:Mt?$t=>0===Mt[$t]?nn[$t]:"":$t=>nn[$t],jt=bn?$t=>nn[$t]:$t=>{const Vt=nn[$t];return(0,de.H9)(Vt,0,Vt.length)},It=bn?$t=>nn[$t]:$t=>{const Vt=nn[$t];return(0,de.sS)(Vt,0,Vt.length)},Ct=nn.length;return{__array:nn,binaryEncoding:tt.data.encoding,isDefined:!0,rowCount:Ct,str:Dn,int:jt,float:It,valueKind:Mt?$t=>Mt[$t]:$t=>0,areValuesEqual:($t,Vt)=>nn[$t]===nn[Vt],toStringArray:$t=>W.iu.createAndFillArray(Ct,Dn,$t),toIntArray:bn?$t=>W.iu.typedArrayWindow(nn,$t):$t=>W.iu.createAndFillArray(Ct,jt,$t),toFloatArray:bn?$t=>W.iu.typedArrayWindow(nn,$t):$t=>W.iu.createAndFillArray(Ct,It,$t)}}(Dn)),nn[bn]}}}function Y(tt){return A.YZ.create("Parse BinaryCIF",function(){var Mt=(0,e.A)(function*(nn){const bn=[0,3];try{const Dn=(0,j.J)(tt);if(!function Z(tt,Mt){for(let nn=0;nn<2;nn++)if(tt[nn]>Mt[nn])return!1;return!0}(bn,Dn.version.match(/(\d)\.(\d)\.\d/).slice(1).map(It=>+It)))return t.H.error(`Unsupported format version. Current ${Dn.version}, required ${bn.join(".")}.`);const jt=o.jG(Dn.dataBlocks.map(It=>{const Dt=Object.create(null);for(const Ct of It.categories)Dt[Ct.name.substr(1)]=q(Ct);return o.IU(It.categories.map(Ct=>Ct.name.substr(1)),Dt,It.header)}));return t.H.success(jt)}catch(Dn){return t.H.error(""+Dn)}});return function(nn){return Mt.apply(this,arguments)}}())}var ee=n(7754),g=n(7357),_e=W.VP.Schema;const xe=_e.str,Ae=_e.List,Be=_e.lstr,Ce=_e.Aliased,Re=_e.int,ke=_e.coord,we={chem_comp:{formula:xe,formula_weight:_e.float,id:xe,mon_nstd_parent_comp_id:Ae(",",tt=>tt),name:xe,one_letter_code:xe,three_letter_code:xe,type:Ce(Be),pdbx_synonyms:Ae(";",tt=>tt),pdbx_type:xe,pdbx_ambiguous_flag:xe,pdbx_replaced_by:xe,pdbx_replaces:xe,pdbx_formal_charge:Re,pdbx_model_coordinates_details:xe,pdbx_model_coordinates_db_code:xe,pdbx_ideal_coordinates_details:xe,pdbx_ideal_coordinates_missing_flag:Ce(Be),pdbx_model_coordinates_missing_flag:Ce(Be),pdbx_initial_date:xe,pdbx_modified_date:xe,pdbx_release_status:Ce(xe),pdbx_processing_site:Ce(xe)},chem_comp_atom:{alt_atom_id:xe,atom_id:xe,charge:Re,model_Cartn_x:ke,model_Cartn_y:ke,model_Cartn_z:ke,comp_id:xe,type_symbol:xe,pdbx_align:Re,pdbx_ordinal:Re,pdbx_model_Cartn_x_ideal:ke,pdbx_model_Cartn_y_ideal:ke,pdbx_model_Cartn_z_ideal:ke,pdbx_stereo_config:Ce(Be),pdbx_aromatic_flag:Ce(Be),pdbx_leaving_atom_flag:Ce(Be)},chem_comp_bond:{atom_id_1:xe,atom_id_2:xe,comp_id:xe,value_order:Ce(Be),pdbx_ordinal:Re,pdbx_stereo_config:Ce(Be),pdbx_aromatic_flag:Ce(Be)},pdbx_chem_comp_descriptor:{comp_id:xe,descriptor:xe,type:Ce(Be),program:xe,program_version:xe},pdbx_chem_comp_identifier:{comp_id:xe,identifier:xe,type:Ce(xe),program:xe,program_version:xe}};var Oe=W.VP.Schema;const Se=Oe.str,Ne=Oe.lstr,K=Oe.Aliased,ne=Oe.int,be={pdbx_reference_molecule:{prd_id:Se,formula_weight:Oe.float,formula:Se,type:K(Ne),type_evidence_code:Se,class:K(Ne),class_evidence_code:Se,name:Se,represent_as:K(Ne),chem_comp_id:Se,compound_details:Se,description:Se,representative_PDB_id_code:Se,release_status:K(Ne),replaces:Se,replaced_by:Se},pdbx_reference_entity_list:{prd_id:Se,ref_entity_id:Se,type:K(Ne),details:Se,component_id:ne},pdbx_reference_entity_nonpoly:{prd_id:Se,ref_entity_id:Se,name:Se,chem_comp_id:Se},pdbx_reference_entity_link:{link_id:ne,prd_id:Se,details:Se,ref_entity_id_1:Se,ref_entity_id_2:Se,entity_seq_num_1:ne,entity_seq_num_2:ne,comp_id_1:Se,comp_id_2:Se,atom_id_1:Se,atom_id_2:Se,value_order:K(Ne),component_1:ne,component_2:ne,link_class:K(Se)},pdbx_reference_entity_poly_link:{link_id:ne,prd_id:Se,ref_entity_id:Se,component_id:ne,entity_seq_num_1:ne,entity_seq_num_2:ne,comp_id_1:Se,comp_id_2:Se,atom_id_1:Se,atom_id_2:Se,value_order:K(Ne)},pdbx_reference_entity_poly:{prd_id:Se,ref_entity_id:Se,type:K(Se),db_code:Se,db_name:Se},pdbx_reference_entity_poly_seq:{prd_id:Se,ref_entity_id:Se,mon_id:Se,parent_mon_id:Se,num:ne,observed:K(Ne),hetero:K(Ne)},pdbx_reference_entity_sequence:{prd_id:Se,ref_entity_id:Se,type:K(Se),NRP_flag:K(Se),one_letter_codes:Se},pdbx_reference_entity_src_nat:{prd_id:Se,ref_entity_id:Se,ordinal:ne,organism_scientific:Se,taxid:Se,db_code:Se,db_name:Se},pdbx_prd_audit:{prd_id:Se,date:Se,processing_site:K(Se),action_type:K(Se)}};var Te=W.VP.Schema;const ie=Te.str,nt={datablock:{id:ie,description:ie},dictionary:{title:ie,datablock_id:ie,version:ie},dictionary_history:{version:ie,update:ie,revision:ie},sub_category:{id:ie,description:ie},category_group_list:{id:ie,parent_id:ie,description:ie},item_type_list:{code:ie,primitive_code:ie,construct:ie,detail:ie},item_units_list:{code:ie,detail:ie},item_units_conversion:{from_code:ie,to_code:ie,operator:ie,factor:Te.float}};var je=W.VP.Schema;const Lt=je.str,Je=je.int,en=je.float,Bt=je.Aliased,pn=je.Vector,mt=(Bt(Lt),Bt(Lt),Bt(Lt),Bt(Lt),pn(3),pn(3),{volume_data_3d_info:{name:Lt,axis_order:pn(3,Je),origin:pn(3),dimensions:pn(3),sample_rate:Je,sample_count:pn(3,Je),spacegroup_number:Je,spacegroup_cell_size:pn(3),spacegroup_cell_angles:pn(3),mean_source:en,mean_sampled:en,sigma_source:en,sigma_sampled:en,min_source:en,min_sampled:en,max_source:en,max_sampled:en},volume_data_3d:{values:en}});var _t=W.VP.Schema;const Me=_t.float,Ke=_t.int,ut=_t.str,sn={cell:{angle_alpha:Me,angle_beta:Me,angle_gamma:Me,formula_units_z:Ke,length_a:Me,length_b:Me,length_c:Me,volume:Me},chemical:{melting_point:Me,name_common:ut,name_systematic:ut},chemical_formula:{moiety:ut,sum:ut,weight:Me},space_group:{crystal_system:ut,it_number:Ke,"name_h-m_full":ut},space_group_symop:{operation_xyz:ut},geom_bond:{atom_site_label_1:ut,atom_site_label_2:ut,distance:Me,publ_flag:ut,site_symmetry_1:ut,site_symmetry_2:ut,valence:Me},audit:{block_doi:ut},database_code:{cod:ut,csd:ut,depnum_ccdc_archive:ut,depnum_ccdc_fiz:ut,icsd:ut,mdf:ut,nbs:ut},atom_site:{adp_type:ut,calc_flag:ut,disorder_assembly:ut,disorder_group:ut,fract_x:Me,fract_y:Me,fract_z:Me,label:ut,occupancy:Me,refinement_flags:ut,site_symmetry_multiplicity:Ke,type_symbol:ut,u_iso_or_equiv:Me},atom_site_aniso:{label:ut,u_11:Me,u:(0,_t.Matrix)(3,3),u_12:Me,u_13:Me,u_22:Me,u_23:Me,u_33:Me},atom_type:{description:ut,symbol:ut},atom_type_scat:{dispersion_imag:Me,dispersion_real:Me,source:ut}},gt={"cell.formula_units_z":["cell_formula_units_Z"],"space_group.it_number":["space_group_IT_number","symmetry_Int_Tables_number"],"space_group.name_h-m_full":["symmetry_space_group_name_H-M"],"space_group_symop.operation_xyz":["symmetry_equiv_pos_as_xyz"],"geom_bond.atom_site_label_1":["geom_bond_atom_site_id_1"],"geom_bond.atom_site_label_2":["geom_bond_atom_site_id_2"],"geom_bond.distance":["geom_bond_dist"],"audit.block_doi":["audit_block_DOI"],"database_code.cod":["database_code_COD"],"database_code.csd":["database_code_CSD"],"database_code.depnum_ccdc_archive":["database_code_depnum_CCDC_archive"],"database_code.depnum_ccdc_fiz":["database_code_depnum_CCDC_fiz"],"database_code.icsd":["database_code_ICSD"],"database_code.mdf":["database_code_MDF"],"database_code.nbs":["database_code_NBS"],"atom_site.adp_type":["atom_site_ADP_type","atom_site_thermal_displace_type"],"atom_site.label":["atom_site_id"],"atom_site.site_symmetry_multiplicity":["atom_site_symmetry_multiplicity"],"atom_site.u_iso_or_equiv":["atom_site_U_iso_or_equiv"],"atom_site_aniso.label":["atom_site_anisotrop_id"],"atom_site_aniso.u_11":["atom_site_aniso_U_11","atom_site_anisotrop_U_11"],"atom_site_aniso.u_12":["atom_site_aniso_U_12","atom_site_anisotrop_U_12"],"atom_site_aniso.u_13":["atom_site_aniso_U_13","atom_site_anisotrop_U_13"],"atom_site_aniso.u_22":["atom_site_aniso_U_22","atom_site_anisotrop_U_22"],"atom_site_aniso.u_23":["atom_site_aniso_U_23","atom_site_anisotrop_U_23"],"atom_site_aniso.u_33":["atom_site_aniso_U_33","atom_site_anisotrop_U_33"]},At=W.VP.Schema.int,Gt={volume_data_3d_info:mt.volume_data_3d_info,segmentation_data_table:{set_id:At,segment_id:At},segmentation_data_3d:{values:At}},rn={parse:tt=>"string"==typeof tt?J(tt):Y(tt),parseText:J,parseBinary:Y,toDatabaseCollection:ee.nN,toDatabase:ee.Pd,schema:{mmCIF:tt=>(0,ee.Pd)(g.r,tt),CCD:tt=>(0,ee.Pd)(we,tt),BIRD:tt=>(0,ee.Pd)(be,tt),dic:tt=>(0,ee.Pd)(nt,tt),cifCore:tt=>(0,ee.Pd)(sn,tt,gt),densityServer:tt=>(0,ee.Pd)(mt,tt),segmentation:tt=>(0,ee.Pd)(Gt,tt)}}},2241:(tn,Ue,n)=>{"use strict";n.d(Ue,{G:()=>v,IU:()=>A,RF:()=>i,cS:()=>O,jG:()=>t,p4:()=>y,xA:()=>c});var i,e=n(6651),o=n(2025),r=n(3656);function t(_,M){return{name:M,blocks:_}}function A(_,M,I,l=[]){return{categoryNames:_,header:I,categories:M,saveFrames:l,getField(m){const[u,d]=m.split(".");return M[u].getField(d||"")}}}function y(_,M,I){return{categoryNames:_,header:I,categories:M}}function c(_,M,I,l){return{rowCount:M,name:_,fieldNames:[...I],getField:m=>l[m]}}function v(_,M,I,l){const m=I?0:1;switch(M){case 1:return"brackets"===l?u=>`${_}[${u+m}]`:u=>`${_}_${u+m}`;case 2:return"brackets"===l?(u,d)=>`${_}[${u+m}][${d+m}]`:(u,d)=>`${_}_${u+m}${d+m}`;case 3:return"brackets"===l?(u,d,s)=>`${_}[${u+m}][${d+m}][${s+m}]`:(u,d,s)=>`${_}_${u+m}${d+m}${s+m}`;default:throw new Error("Tensors with rank > 3 or rank 0 are currently not supported.")}}function O(_,M,I,l){const m=M.create();if(1===M.rank){const u=M.dimensions[0];for(let d=0;d 3 or rank 0 are currently not supported.");{const u=M.dimensions[0],d=M.dimensions[1],s=M.dimensions[2];for(let C=0;C0?u[d[0]].rowCount:0,name:m,fieldNames:d,getField:s=>u[s]}}_.empty=function M(m){return{rowCount:0,name:m,fieldNames:[],getField(u){}}},_.ofFields=I,_.ofTable=function l(m,u){const d={};for(const s of u._columns)d[s]=i.ofColumn(u[s]);return I(m,d)}}(c||(c={})),function(_){function I(s){const C=s.length,h=R=>{const f=s[R];return f&&"."!==f&&"?"!==f?f:""},a=R=>{const f=s[R];return(0,o.H9)(f,0,f.length)||0},S=R=>{const f=s[R];return(0,o.sS)(f,0,f.length)||0};return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:C,str:h,int:a,float:S,valueKind:R=>{const f=s[R],p=f.length;if(p>1)return 0;if(0===p)return 1;const E=f.charCodeAt(0);return 46===E?1:63===E?2:0},areValuesEqual:(R,f)=>s[R]===s[f],toStringArray:R=>R?e.iu.createAndFillArray(C,h,R):s,toIntArray:R=>e.iu.createAndFillArray(C,a,R),toFloatArray:R=>e.iu.createAndFillArray(C,S,R)}}function u(s){const{rowCount:C,valueKind:h,areValuesEqual:a,isDefined:S}=s;let D,R,f;switch(s.schema.valueType){case"float":case"int":D=E=>""+s.value(E),R=s.value,f=s.value;break;case"str":D=s.value,R=E=>{const T=s.value(E);return(0,o.H9)(T,0,T.length)||0},f=E=>{const T=s.value(E);return(0,o.sS)(T,0,T.length)||0};break;case"list":const{separator:p}=s.schema;D=E=>s.value(E).join(p),R=E=>NaN,f=E=>NaN;break;default:throw new Error(`unsupported valueType '${s.schema.valueType}'`)}return{__array:void 0,binaryEncoding:void 0,isDefined:S,rowCount:C,str:D,int:R,float:f,valueKind:h,areValuesEqual:a,toStringArray:p=>e.iu.createAndFillArray(C,D,p),toIntArray:p=>e.iu.createAndFillArray(C,R,p),toFloatArray:p=>e.iu.createAndFillArray(C,f,p)}}_.ofString=function M(s){return I([s])},_.ofStrings=I,_.ofNumbers=function l(s){const C=s.length,h=R=>""+s[R],a=R=>s[R],D=R=>!R||R.array&&s instanceof R.array?s:e.iu.createAndFillArray(C,a,R);return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:C,str:h,int:a,float:a,valueKind:R=>0,areValuesEqual:(R,f)=>s[R]===s[f],toStringArray:R=>e.iu.createAndFillArray(C,h,R),toIntArray:D,toFloatArray:D}},_.ofTokens=function m(s){const{data:C,indices:h,count:a}=s,S=p=>{const E=C.substring(h[2*p],h[2*p+1]);return"."===E||"?"===E?"":E},D=p=>(0,o.H9)(C,h[2*p],h[2*p+1])||0,R=p=>(0,o.sS)(C,h[2*p],h[2*p+1])||0;return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:a,str:S,int:D,float:R,valueKind:p=>{const E=h[2*p],T=h[2*p+1]-E;if(T>1)return 0;if(0===T)return 1;const L=C.charCodeAt(E);return 46===L?1:63===L?2:0},areValuesEqual:(0,r.k5)(s),toStringArray:p=>e.iu.createAndFillArray(a,S,p),toIntArray:p=>e.iu.createAndFillArray(a,D,p),toFloatArray:p=>e.iu.createAndFillArray(a,R,p)}},_.ofColumn=u,_.ofUndefined=function d(s,C){return u(e.VP.Undefined(s,C))}}(i||(i={}))},7754:(tn,Ue,n)=>{"use strict";n.d(Ue,{MR:()=>i,Pd:()=>c,nN:()=>y});var A,e=n(6651),o=n(4369),r=n(9909),t=n(2241);function y(s,C,h){const a={};for(const S of C.blocks)a[S.header]=c(s,S,h);return a}function c(s,C,h){return function l(s,C,h){const a=Object.create(null);for(const S of Object.keys(s))a[S]=d(S,s[S],C,h);return e.Wm.ofTables(C.header,s,a)}(s,C,h)}function i(s,C){return new I(C,s,!0)}function v(s){switch(s.valueType){case"str":return(C,h,a)=>function O(s,C,h,a){return{schema:s,__array:C.__array,isDefined:C.isDefined,rowCount:C.rowCount,value:"lowercase"===s.transform?S=>h(S).toLowerCase():"uppercase"===s.transform?S=>h(S).toUpperCase():h,valueKind:C.valueKind,areValuesEqual:C.areValuesEqual,toArray:"lowercase"===s.transform?S=>Array.from(a(S)).map(D=>D.toLowerCase()):"uppercase"===s.transform?S=>Array.from(a(S)).map(D=>D.toUpperCase()):a}}(s,C,C.str,C.toStringArray);case"int":return(C,h,a)=>b(s,C,C.int,C.toIntArray);case"float":return(C,h,a)=>b(s,C,C.float,C.toFloatArray);case"list":throw new Error("Use createListColumn instead.");case"tensor":throw new Error("Use createTensorColumn instead.")}}function b(s,C,h,a){return{schema:s,__array:C.__array,isDefined:C.isDefined,rowCount:C.rowCount,value:h,valueKind:C.valueKind,areValuesEqual:C.areValuesEqual,toArray:a}}function _(s,C,h){const a=s.separator,S=s.itemParse,D=C.getField(h),R=D?p=>D.str(p).split(a).map(E=>S(E.trim())).filter(E=>!!E):p=>[];return{schema:s,__array:void 0,isDefined:!!D,rowCount:C.rowCount,value:R,valueKind:D?D.valueKind:()=>1,areValuesEqual:(p,E)=>(0,r.af)(R(p),R(E)),toArray:p=>e.iu.createAndFillArray(C.rowCount,R,p)}}function M(s,C,h){const a=s.space,S=C.fieldNames.includes(`${h}[0]`)||C.fieldNames.includes(`${h}[0][0]`)||C.fieldNames.includes(`${h}[0][0][0]`),D=S?0:1,R=C.fieldNames.includes(`${h}_1`)||C.fieldNames.includes(`${h}_11`)||C.fieldNames.includes(`${h}_111`)?"underscore":"brackets",f=t.G(h,a.rank,S,R),p=C.getField(f(D,D,D))||e.VP.Undefined(C.rowCount,s),E=L=>t.cS(C,a,L,f);return{schema:s,__array:void 0,isDefined:p.isDefined,rowCount:C.rowCount,value:E,valueKind:p.valueKind,areValuesEqual:(L,w)=>o.qY.areEqualExact(E(L),E(w)),toArray:L=>e.iu.createAndFillArray(C.rowCount,E,L)}}!function(s){function C(S){return S.replace(".","_").replace(/\[/,"_").replace(/(\[|\])/g,"")}s.canonical=C,s.equal=function h(S,D){return C(S)===C(D)},s.create=function a(S,D,R=!1){const f=`${S}${D?`.${D}`:""}`;return R?C(f):f}}(A||(A={}));class I{constructor(C,h,a){this._isDefined=a;const S=Object.keys(h);this._rowCount=C.rowCount,this._columns=S,this._schema=h;const D=Object.create(null);for(const R of S)Object.defineProperty(this,R,{get:function(){if(D[R])return D[R];const f=h[R];if("list"===f.valueType)D[R]=_(f,C,R);else if("tensor"===f.valueType)D[R]=M(f,C,R);else{const p=v(f),E=C.getField(R);D[R]=E?p(E,C,R):e.VP.Undefined(C.rowCount,f)}return D[R]},enumerable:!0,configurable:!1})}}function u(s,C,h,a){const S=A.create(C,s),D=A.canonical(S);if(D in h)return h[D];if(a&&S in a)for(const R of a[S]){const f=A.canonical(R);if(f in h)return h[f]}}function d(s,C,h,a){let S=h.categories[s];if(a){const D=function m(s){const C=Object.create(null);for(const h of Object.keys(s.categories))for(const a of s.categories[h].fieldNames)C[A.create(h,a,!0)]=s.categories[h].getField(a);return C}(h),R=Object.create(null),f=[];let p=0;for(const E of Object.keys(C)){const T=u(E,s,D,a);T&&(R[E]=T,f.push(E),p=T.rowCount)}S={rowCount:p,name:s,fieldNames:[...f],getField:E=>R[E]}}return new I(S||t.xA.empty(s),C,!!S)}},7357:(tn,Ue,n)=>{"use strict";n.d(Ue,{r:()=>_});var o=n(6651).VP.Schema;const r=o.str,t=o.int,A=o.float,y=o.coord,c=o.Aliased,i=o.Matrix,v=o.Vector,O=o.lstr,b=o.List,_={atom_site:{auth_asym_id:r,auth_atom_id:r,auth_comp_id:r,auth_seq_id:t,B_iso_or_equiv:A,Cartn_x:y,Cartn_y:y,Cartn_z:y,group_PDB:c(r),id:t,label_alt_id:r,label_asym_id:r,label_atom_id:r,label_comp_id:r,label_entity_id:r,label_seq_id:t,occupancy:A,type_symbol:r,pdbx_PDB_ins_code:r,pdbx_PDB_model_num:t,pdbx_formal_charge:t,pdbx_label_index:t,pdbx_sifts_xref_db_name:r,pdbx_sifts_xref_db_acc:r,pdbx_sifts_xref_db_num:r,pdbx_sifts_xref_db_res:r,ihm_model_id:t},atom_site_anisotrop:{id:t,type_symbol:r,U:i(3,3),U_esd:i(3,3),pdbx_auth_seq_id:r,pdbx_auth_asym_id:r,pdbx_auth_atom_id:r,pdbx_auth_comp_id:r,pdbx_label_seq_id:t,pdbx_label_alt_id:r,pdbx_label_asym_id:r,pdbx_label_atom_id:r,pdbx_label_comp_id:r,pdbx_PDB_ins_code:r},atom_sites:{entry_id:r,fract_transf_matrix:i(3,3),fract_transf_vector:v(3)},audit_author:{name:r,pdbx_ordinal:t,identifier_ORCID:r},audit_conform:{dict_location:r,dict_name:r,dict_version:r},cell:{angle_alpha:A,angle_beta:A,angle_gamma:A,entry_id:r,length_a:A,length_b:A,length_c:A,Z_PDB:t,pdbx_unique_axis:r},chem_comp:{formula:r,formula_weight:A,id:r,mon_nstd_flag:c(O),name:r,type:c(O),pdbx_synonyms:b(";",M=>M)},chem_comp_bond:{atom_id_1:r,atom_id_2:r,comp_id:r,value_order:c(O),pdbx_ordinal:t,pdbx_stereo_config:c(O),pdbx_aromatic_flag:c(O)},citation:{book_publisher:r,country:r,id:r,journal_abbrev:r,journal_id_ASTM:r,journal_id_CSD:r,journal_id_ISSN:r,journal_volume:r,page_first:r,page_last:r,title:r,year:t,pdbx_database_id_DOI:r,pdbx_database_id_PubMed:t},citation_author:{citation_id:r,name:r,ordinal:t},database_2:{database_id:c(O),database_code:r},entity:{details:r,formula_weight:A,id:r,src_method:c(O),type:c(O),pdbx_description:b(",",M=>M),pdbx_number_of_molecules:t,pdbx_mutation:r,pdbx_fragment:r,pdbx_ec:b(",",M=>M)},entity_poly:{entity_id:r,nstd_linkage:c(O),nstd_monomer:c(O),type:c(r),pdbx_strand_id:b(",",M=>M),pdbx_seq_one_letter_code:r,pdbx_seq_one_letter_code_can:r,pdbx_target_identifier:r},entity_poly_seq:{entity_id:r,hetero:c(O),mon_id:r,num:t},entry:{id:r},exptl:{entry_id:r,method:c(r)},software:{classification:r,date:r,description:r,name:r,type:c(O),version:r,pdbx_ordinal:t},struct:{entry_id:r,title:r,pdbx_descriptor:r},struct_asym:{details:r,entity_id:r,id:r,pdbx_modified:r,pdbx_blank_PDB_chainid_flag:c(r)},struct_conf:{beg_label_asym_id:r,beg_label_comp_id:r,beg_label_seq_id:t,beg_auth_asym_id:r,beg_auth_comp_id:r,beg_auth_seq_id:t,conf_type_id:c(O),details:r,end_label_asym_id:r,end_label_comp_id:r,end_label_seq_id:t,end_auth_asym_id:r,end_auth_comp_id:r,end_auth_seq_id:t,id:r,pdbx_beg_PDB_ins_code:r,pdbx_end_PDB_ins_code:r,pdbx_PDB_helix_class:r,pdbx_PDB_helix_length:t,pdbx_PDB_helix_id:r},struct_conn:{conn_type_id:c(O),details:r,id:r,ptnr1_label_asym_id:r,ptnr1_label_atom_id:r,ptnr1_label_comp_id:r,ptnr1_label_seq_id:t,ptnr1_auth_asym_id:r,ptnr1_auth_comp_id:r,ptnr1_auth_seq_id:t,ptnr1_symmetry:r,ptnr2_label_asym_id:r,ptnr2_label_atom_id:r,ptnr2_label_comp_id:r,ptnr2_label_seq_id:t,ptnr2_auth_asym_id:r,ptnr2_auth_comp_id:r,ptnr2_auth_seq_id:t,ptnr2_symmetry:r,pdbx_ptnr1_PDB_ins_code:r,pdbx_ptnr1_label_alt_id:r,pdbx_ptnr1_standard_comp_id:r,pdbx_ptnr2_PDB_ins_code:r,pdbx_ptnr2_label_alt_id:r,pdbx_ptnr3_PDB_ins_code:r,pdbx_ptnr3_label_alt_id:r,pdbx_ptnr3_label_asym_id:r,pdbx_ptnr3_label_atom_id:r,pdbx_ptnr3_label_comp_id:r,pdbx_ptnr3_label_seq_id:t,pdbx_PDB_id:r,pdbx_dist_value:A,pdbx_value_order:c(O)},struct_conn_type:{criteria:r,id:c(O),reference:r},struct_keywords:{entry_id:r,text:b(",",M=>M),pdbx_keywords:r},struct_ncs_oper:{code:c(r),details:r,id:t,matrix:i(3,3),vector:v(3)},struct_sheet_range:{beg_label_asym_id:r,beg_label_comp_id:r,beg_label_seq_id:t,end_label_asym_id:r,end_label_comp_id:r,end_label_seq_id:t,beg_auth_asym_id:r,beg_auth_comp_id:r,beg_auth_seq_id:t,end_auth_asym_id:r,end_auth_comp_id:r,end_auth_seq_id:t,id:r,sheet_id:r,pdbx_beg_PDB_ins_code:r,pdbx_end_PDB_ins_code:r},struct_site:{details:r,id:r,pdbx_num_residues:t,pdbx_evidence_code:r,pdbx_auth_asym_id:r,pdbx_auth_comp_id:r,pdbx_auth_seq_id:r,pdbx_auth_ins_code:r},struct_site_gen:{details:r,id:r,label_alt_id:r,label_asym_id:r,label_atom_id:r,label_comp_id:r,label_seq_id:t,auth_asym_id:r,auth_comp_id:r,auth_seq_id:r,site_id:r,symmetry:r,pdbx_auth_ins_code:r,pdbx_num_res:t},symmetry:{entry_id:r,cell_setting:c(O),Int_Tables_number:t,space_group_name_Hall:r,"space_group_name_H-M":r},pdbx_database_status:{status_code:c(r),status_code_sf:c(r),status_code_mr:c(r),entry_id:r,recvd_initial_deposition_date:r,SG_entry:c(O),deposit_site:c(r),process_site:c(r),status_code_cs:c(r),methods_development_category:c(r),pdb_format_compatible:c(O)},pdbx_nonpoly_scheme:{asym_id:r,entity_id:r,mon_id:r,pdb_strand_id:r,ndb_seq_num:r,pdb_seq_num:r,auth_seq_num:r,pdb_mon_id:r,auth_mon_id:r,pdb_ins_code:r},pdbx_database_related:{db_name:r,details:r,db_id:r,content_type:c(r)},pdbx_entity_nonpoly:{entity_id:r,comp_id:r,name:r},pdbx_chem_comp_synonyms:{name:r,comp_id:r,provenance:c(r)},pdbx_chem_comp_identifier:{comp_id:r,identifier:r,type:c(r),program:r,program_version:r},pdbx_unobs_or_zero_occ_residues:{id:t,polymer_flag:c(O),occupancy_flag:c(t),PDB_model_num:t,auth_asym_id:r,auth_comp_id:r,auth_seq_id:r,PDB_ins_code:r,label_asym_id:r,label_comp_id:r,label_seq_id:t},pdbx_struct_mod_residue:{id:t,auth_asym_id:r,auth_comp_id:r,auth_seq_id:t,PDB_ins_code:r,label_asym_id:r,label_comp_id:r,label_seq_id:t,parent_comp_id:r,details:r},pdbx_struct_oper_list:{id:r,type:c(r),name:r,symmetry_operation:r,matrix:i(3,3),vector:v(3)},pdbx_struct_assembly:{method_details:r,oligomeric_details:r,oligomeric_count:t,details:r,id:r},pdbx_struct_assembly_gen:{asym_id_list:b(",",M=>M),assembly_id:r,oper_expression:r},pdbx_reference_entity_list:{prd_id:r,ref_entity_id:r,type:c(O),details:r,component_id:t},pdbx_reference_entity_link:{link_id:t,prd_id:r,details:r,ref_entity_id_1:r,ref_entity_id_2:r,entity_seq_num_1:t,entity_seq_num_2:t,comp_id_1:r,comp_id_2:r,atom_id_1:r,atom_id_2:r,value_order:c(O),component_1:t,component_2:t,link_class:c(r)},pdbx_reference_entity_poly_link:{link_id:t,prd_id:r,ref_entity_id:r,component_id:t,entity_seq_num_1:t,entity_seq_num_2:t,comp_id_1:r,comp_id_2:r,atom_id_1:r,atom_id_2:r,value_order:c(O)},pdbx_molecule:{prd_id:r,instance_id:t,asym_id:r},pdbx_molecule_features:{prd_id:r,class:c(O),type:c(O),name:r,details:r},entity_src_nat:{entity_id:r,pdbx_organism_scientific:r,pdbx_plasmid_name:r,pdbx_src_id:t,pdbx_beg_seq_num:t,pdbx_end_seq_num:t},entity_src_gen:{entity_id:r,pdbx_gene_src_gene:b(",",M=>M),pdbx_gene_src_scientific_name:r,plasmid_name:r,pdbx_src_id:t,pdbx_beg_seq_num:t,pdbx_end_seq_num:t},pdbx_entity_src_syn:{organism_scientific:r,entity_id:r,pdbx_src_id:t,pdbx_beg_seq_num:t,pdbx_end_seq_num:t},pdbx_entity_branch_descriptor:{entity_id:r,descriptor:r,type:c(O),program:r,program_version:r,ordinal:t},pdbx_entity_instance_feature:{details:r,feature_type:c(r),auth_asym_id:r,asym_id:r,auth_seq_num:r,seq_num:t,comp_id:r,auth_comp_id:r,ordinal:t},pdbx_entity_branch_list:{entity_id:r,hetero:c(O),comp_id:r,num:t},pdbx_entity_branch_link:{link_id:t,details:r,entity_id:r,entity_branch_list_num_1:t,entity_branch_list_num_2:t,comp_id_1:r,comp_id_2:r,atom_id_1:r,leaving_atom_id_1:r,atom_stereo_config_1:c(O),atom_id_2:r,leaving_atom_id_2:r,atom_stereo_config_2:c(O),value_order:c(O)},pdbx_entity_branch:{entity_id:r,type:c(r)},pdbx_branch_scheme:{entity_id:r,hetero:c(O),asym_id:r,mon_id:r,num:t,pdb_asym_id:r,pdb_seq_num:r,pdb_mon_id:r,auth_asym_id:r,auth_seq_num:r,auth_mon_id:r},pdbx_chem_comp_related:{comp_id:r,related_comp_id:r,relationship_type:c(r),details:r},ihm_starting_model_details:{starting_model_id:r,entity_id:r,entity_description:r,asym_id:r,entity_poly_segment_id:t,starting_model_source:c(r),starting_model_auth_asym_id:r,starting_model_sequence_offset:t,dataset_list_id:t},ihm_starting_comparative_models:{id:t,starting_model_id:r,starting_model_auth_asym_id:r,starting_model_seq_id_begin:t,starting_model_seq_id_end:t,template_auth_asym_id:r,template_seq_id_begin:t,template_seq_id_end:t,template_sequence_identity:A,template_sequence_identity_denominator:c(t),template_dataset_list_id:t,alignment_file_id:t},ihm_starting_model_seq_dif:{id:t,entity_id:r,asym_id:r,seq_id:t,comp_id:r,starting_model_id:r,db_asym_id:r,db_seq_id:t,db_comp_id:r,details:r},ihm_model_representation:{id:t,name:r,details:r},ihm_model_representation_details:{id:t,representation_id:t,entity_poly_segment_id:t,entity_id:r,entity_description:r,entity_asym_id:r,model_object_primitive:c(r),starting_model_id:r,model_mode:c(r),model_granularity:c(r),model_object_count:t},ihm_struct_assembly_details:{id:t,assembly_id:t,parent_assembly_id:t,entity_description:r,entity_id:r,asym_id:r,entity_poly_segment_id:t},ihm_struct_assembly:{id:t,name:r,description:r},ihm_modeling_protocol:{id:t,num_steps:t,protocol_name:r},ihm_modeling_protocol_details:{id:t,protocol_id:t,step_id:t,struct_assembly_id:t,dataset_group_id:t,struct_assembly_description:r,step_name:r,step_method:r,num_models_begin:t,num_models_end:t,multi_scale_flag:c(O),multi_state_flag:c(O),ordered_flag:c(O),script_file_id:t,software_id:t},ihm_multi_state_modeling:{state_id:t,state_group_id:t,population_fraction:A,population_fraction_sd:A,state_type:r,state_name:r,experiment_type:c(r),details:r},ihm_modeling_post_process:{id:t,protocol_id:t,analysis_id:t,step_id:t,type:c(r),feature:c(r),num_models_begin:t,num_models_end:t},ihm_ensemble_info:{ensemble_id:t,ensemble_name:r,post_process_id:t,model_group_id:t,ensemble_clustering_method:c(r),ensemble_clustering_feature:c(r),num_ensemble_models:t,num_ensemble_models_deposited:t,ensemble_precision_value:A,ensemble_file_id:t},ihm_model_list:{model_id:t,model_name:r,assembly_id:t,protocol_id:t,representation_id:t},ihm_model_group:{id:t,name:r,details:r},ihm_model_group_link:{model_id:t,group_id:t},ihm_model_representative:{id:t,model_group_id:t,model_id:t,selection_criteria:c(r)},ihm_dataset_list:{id:t,data_type:c(r),database_hosted:c(O)},ihm_dataset_group:{id:t,name:r,application:c(r),details:r},ihm_dataset_group_link:{dataset_list_id:t,group_id:t},ihm_related_datasets:{dataset_list_id_derived:t,dataset_list_id_primary:t},ihm_dataset_related_db_reference:{id:t,dataset_list_id:t,db_name:c(r),accession_code:r,version:r,details:r},ihm_external_reference_info:{reference_id:t,reference_provider:r,reference_type:c(r),reference:r,refers_to:c(r),associated_url:r},ihm_external_files:{id:t,reference_id:t,file_path:r,content_type:c(r),file_size_bytes:A,details:r},ihm_dataset_external_reference:{id:t,dataset_list_id:t,file_id:t},ihm_localization_density_files:{id:t,file_id:t,ensemble_id:t,entity_id:r,entity_poly_segment_id:t,asym_id:r},ihm_predicted_contact_restraint:{id:t,group_id:t,entity_id_1:r,entity_id_2:r,asym_id_1:r,asym_id_2:r,comp_id_1:r,comp_id_2:r,seq_id_1:t,seq_id_2:t,rep_atom_1:c(r),rep_atom_2:c(r),distance_lower_limit:A,distance_upper_limit:A,probability:A,restraint_type:c(r),model_granularity:c(r),dataset_list_id:t,software_id:t},ihm_cross_link_list:{id:t,group_id:t,entity_description_1:r,entity_description_2:r,entity_id_1:r,entity_id_2:r,comp_id_1:r,comp_id_2:r,seq_id_1:t,seq_id_2:t,linker_type:c(r),dataset_list_id:t},ihm_cross_link_restraint:{id:t,group_id:t,entity_id_1:r,entity_id_2:r,asym_id_1:r,asym_id_2:r,comp_id_1:r,comp_id_2:r,seq_id_1:t,seq_id_2:t,atom_id_1:r,atom_id_2:r,restraint_type:c(r),conditional_crosslink_flag:c(r),model_granularity:c(r),distance_threshold:A,psi:A,sigma_1:A,sigma_2:A},ihm_cross_link_result_parameters:{id:t,restraint_id:t,model_id:t,psi:A,sigma_1:A,sigma_2:A},ihm_2dem_class_average_restraint:{id:t,dataset_list_id:t,number_raw_micrographs:t,pixel_size_width:A,pixel_size_height:A,image_resolution:A,image_segment_flag:c(O),number_of_projections:t,struct_assembly_id:t,details:r},ihm_2dem_class_average_fitting:{id:t,restraint_id:t,model_id:t,cross_correlation_coefficient:A,rot_matrix:i(3,3),tr_vector:v(3)},ihm_3dem_restraint:{id:t,dataset_list_id:t,model_id:t,struct_assembly_id:t,fitting_method:r,number_of_gaussians:t,cross_correlation_coefficient:A},ihm_sas_restraint:{id:t,dataset_list_id:t,model_id:t,struct_assembly_id:t,profile_segment_flag:c(O),fitting_atom_type:r,fitting_method:r,fitting_state:c(r),radius_of_gyration:A,chi_value:A,details:r},ihm_starting_model_coord:{ordinal_id:t,starting_model_id:r,group_PDB:c(r),id:t,type_symbol:r,entity_id:r,atom_id:r,comp_id:r,seq_id:t,asym_id:r,Cartn_x:A,Cartn_y:A,Cartn_z:A,B_iso_or_equiv:A},ihm_sphere_obj_site:{id:t,entity_id:r,seq_id_begin:t,seq_id_end:t,asym_id:r,Cartn_x:A,Cartn_y:A,Cartn_z:A,object_radius:A,rmsf:A,model_id:t},ihm_gaussian_obj_site:{id:t,entity_id:r,seq_id_begin:t,seq_id_end:t,asym_id:r,mean_Cartn_x:A,mean_Cartn_y:A,mean_Cartn_z:A,weight:A,covariance_matrix:i(3,3),model_id:t},ihm_gaussian_obj_ensemble:{id:t,entity_id:r,seq_id_begin:t,seq_id_end:t,asym_id:r,mean_Cartn_x:A,mean_Cartn_y:A,mean_Cartn_z:A,weight:A,covariance_matrix:i(3,3),ensemble_id:t},ihm_feature_list:{feature_id:t,feature_type:c(r),entity_type:c(r)},ihm_poly_residue_feature:{ordinal_id:t,feature_id:t,entity_id:r,asym_id:r,comp_id_begin:r,comp_id_end:r,seq_id_begin:t,seq_id_end:t},ihm_derived_distance_restraint:{id:t,group_id:t,feature_id_1:t,feature_id_2:t,group_conditionality:c(r),random_exclusion_fraction:A,distance_upper_limit:A,restraint_type:c(r),dataset_list_id:t},ma_model_list:{ordinal_id:t,model_id:t,model_group_id:t,model_name:r,model_group_name:r,model_type:c(r),data_id:t},ma_target_entity:{entity_id:r,data_id:t,origin:c(r)},ma_target_entity_instance:{asym_id:r,entity_id:r,details:r},ma_target_ref_db_details:{target_entity_id:r,db_name:c(r),db_code:r,db_accession:r,seq_db_isoform:r,seq_db_align_begin:r,seq_db_align_end:r,ncbi_taxonomy_id:r,organism_scientific:r},ma_data:{id:t,content_type:c(r),content_type_other_details:r,name:r},ma_software_group:{ordinal_id:t,group_id:t,software_id:t},ma_qa_metric:{id:t,name:r,type:c(r),mode:c(r),software_group_id:t},ma_qa_metric_global:{ordinal_id:t,model_id:t,metric_id:t,metric_value:A},ma_qa_metric_local:{ordinal_id:t,model_id:t,label_asym_id:r,label_seq_id:t,label_comp_id:r,metric_id:t,metric_value:A}}},3656:(tn,Ue,n)=>{"use strict";n.d(Ue,{E7:()=>t,Yb:()=>y,do:()=>r,k5:()=>A});var e=n(6651),o=n(2025);function r(c){return function(i){return t(c,i)}}function t(c,i){const{data:v,indices:O,count:b}=c,{valueType:_}=i,M="str"===_?I=>v.substring(O[2*I],O[2*I+1]):"int"===_?I=>(0,o.H9)(v,O[2*I],O[2*I+1])||0:I=>(0,o.sS)(v,O[2*I],O[2*I+1])||0;return{schema:i,__array:void 0,isDefined:!0,rowCount:b,value:M,valueKind:I=>0,toArray:I=>e.iu.createAndFillArray(b,M,I),areValuesEqual:A(c)}}function A(c){const{data:i,indices:v}=c;return function(O,b){const _=v[2*O],M=v[2*b],I=v[2*O+1]-_;if(I!==v[2*b+1]-M)return!1;for(let l=0;l{"use strict";function e(O,b,_){for(;b<_&&32===O.charCodeAt(b);)b++;return o(O,b,_)}function o(O,b,_){let M=b,I=0,l=1;for(45===O.charCodeAt(M)?(l=-1,++M):43===O.charCodeAt(M)&&++M;M<_;M++){const m=O.charCodeAt(M)-48;if(m>9||m<0)return l*I|0;I=10*I+m|0}return l*I}function r(O,b,_,M){return 43===b.charCodeAt(_)&&_++,O*Math.pow(10,o(b,_,M))}function t(O,b,_){for(;b<_&&32===O.charCodeAt(b);)b++;return A(O,b,_)}function A(O,b,_){let M=b,I=1,l=0,m=0,u=1;for(45===O.charCodeAt(M)?(I=-1,++M):43===O.charCodeAt(M)&&++M;M<_;){let d=O.charCodeAt(M)-48;if(!(d>=0&&d<10)){if(-2===d){for(++M;M<_;){if(d=O.charCodeAt(M)-48,!(d>=0&&d<10))return 53===d||21===d?r(I*(l+m/u),O,M+1,_):I*(l+m/u);m=10*m+d,u*=10,++M}return I*(l+m/u)}if(53===d||21===d)return r(I*l,O,M+1,_);break}l=10*l+d,++M}return I*l}n.d(Ue,{Al:()=>t,H9:()=>o,jj:()=>e,sS:()=>A})},5555:(tn,Ue,n)=>{"use strict";n.d(Ue,{_F:()=>r,qk:()=>t,tM:()=>A});var A,e=n(467),o=n(4824);function r(y){return{data:y,position:0,length:y.length,lineNumber:1,tokenStart:0,tokenEnd:0}}function t(y,c,i){let v=c,O=i-1,b=y.charCodeAt(v);for(;(9===b||32===b)&&v<=O;)b=y.charCodeAt(++v);for(b=y.charCodeAt(O);(9===b||32===b)&&O>=v;)b=y.charCodeAt(--O);return y.substring(v,O+1)}!function(y){function c(f){return f.data.substring(f.tokenStart,f.tokenEnd)}function v(f){const{data:p}=f;for(;f.position{const V=Math.min(p-w,Q);return I(G,V,L),w+=V,V},(Q,G)=>Q.update({message:"Parsing...",current:G.position,max:G.length})),L})).apply(this,arguments)}function a(){return(a=(0,e.A)(function*(f,p,E=1e5){const T=y(f),L=A.create(T.data,Math.max(f.length/80,2));return yield(0,o.yB)(p,E,T,(w,Q)=>(function C(f,p,E){let T=0;for(let L=0;Lw.update({message:"Parsing...",current:Q.position,max:Q.length})),L})).apply(this,arguments)}function R(f,p,E){const{data:T}=f;let L=p,w=E-1,Q=T.charCodeAt(L);for(;(9===Q||32===Q)&&L<=w;)Q=T.charCodeAt(++L);for(Q=T.charCodeAt(w);(9===Q||32===Q)&&w>=L;)Q=T.charCodeAt(--w);return f.tokenStart=L,f.tokenEnd=w+1,f.position=E,f}y.getTokenString=c,y.reset=function i(f){f.position=0,f.lineNumber=1,f.tokenStart=0,f.tokenEnd=0},y.eatLine=v,y.markStart=function O(f){f.tokenStart=f.position},y.markLine=b,y.readLine=function _(f){return b(f),c(f)},y.readLineTrim=function M(f){b(f);const p=f.position;return R(f,f.tokenStart,f.tokenEnd),f.position=p,c(f)},y.markLines=function l(f,p){const E=A.create(f.data,2*p);return I(f,p,E),E},y.readLines=function m(f,p){const E=[];for(let T=0;Tl.indicesLenMinus2&&function c(_){const M=new Uint32Array(1.61*_.indices.length|0);M.set(_.indices),_.indices=M,_.indicesLenMinus2=M.length-2|0}(l),l.indices[l.offset++]=M,l.indices[l.offset++]=I,_.count++}y.add=i,y.addToken=function v(_,M){i(_,M.tokenStart,M.tokenEnd)},y.addUnchecked=function O(_,M,I){_.indices[_.offset++]=M,_.indices[_.offset++]=I,_.count++},y.create=function b(_,M){return{data:_,indicesLenMinus2:(M=Math.max(10,M))-2|0,count:0,offset:0,indices:new Uint32Array(M)}}}(A||(A={}))},355:(tn,Ue,n)=>{"use strict";var e;n.d(Ue,{H:()=>e}),function(o){o.error=function r(c,i=-1){return new A(c,i)},o.success=function t(c,i=[]){return new y(c,i)};class A{toString(){return this.line>=0?`[Line ${this.line}] ${this.message}`:this.message}constructor(i,v){this.message=i,this.line=v,this.isError=!0}}o.Error=A;class y{constructor(i,v){this.result=i,this.warnings=v,this.isError=!1}}o.Success=y}(e||(e={}))},7421:(tn,Ue,n)=>{"use strict";n.d(Ue,{c:()=>Z});var A,y,q,c,e=n(9115),o=n(862),r=n(144),t=n(1372);function i(q){return(Y,ee)=>ee[q].value(Y)}function v(q){return(Y,ee)=>ee[q].value(Y).join(ee[q].schema.separator)}function O(q,...Y){return(ee,g)=>g[q].schema.space.get(g[q].value(ee),...Y)}function b(q){return(Y,ee)=>ee[q].valueKind(Y)}function _(q,Y){const ee=[],_e=b(q);if(1===Y.rank){const xe=Y.dimensions[0];for(let le=0;le 3 or rank 0 are currently not supported.");{const xe=Y.dimensions[0],le=Y.dimensions[1],Ae=Y.dimensions[2];for(let Be=0;Be!!Y.shouldInclude)?q.fields.filter(Y=>!Y.shouldInclude||q.source.some(ee=>Y.shouldInclude(ee.data))):q.fields}function C(q,Y){const ee=q.instance(Y),g=ee.source.filter(le=>le.rowCount>0);return g.length?{instance:ee,rowCount:g.reduce((le,Ae)=>le+Ae.rowCount,0),source:g.map(le=>({data:le.data,keys:()=>le.keys?le.keys():o.f.Range(0,le.rowCount-1),rowCount:le.rowCount}))}:{instance:ee,rowCount:0,source:[]}}!function(q){function ee(Ae,Be,Ce){return{name:Ae,type:1,value:Be,valueKind:Ce&&Ce.valueKind,defaultFormat:Ce?{encoder:Ce.encoder,typedArray:Ce.typedArray}:void 0,shouldInclude:Ce&&Ce.shouldInclude}}q.str=function Y(Ae,Be,Ce){return{name:Ae,type:0,value:Be,valueKind:Ce&&Ce.valueKind,defaultFormat:Ce&&Ce.encoder?{encoder:Ce.encoder}:void 0,shouldInclude:Ce&&Ce.shouldInclude}},q.int=ee,q.float=function g(Ae,Be,Ce){return{name:Ae,type:2,value:Be,valueKind:Ce&&Ce.valueKind,defaultFormat:Ce?{encoder:Ce.encoder,typedArray:Ce.typedArray,digitCount:typeof Ce.digitCount<"u"?Ce.digitCount:void 0}:void 0,shouldInclude:Ce&&Ce.shouldInclude}},q.index=function _e(Ae){return ee(Ae,(Be,Ce,Re)=>Re+1,{typedArray:Int32Array,encoder:r.ND.by(r.ND.delta).and(r.ND.runLength).and(r.ND.integerPacking)})};class xe{constructor(){this.fields=[]}index(Be){return this.fields.push(q.index(Be)),this}str(Be,Ce,Re){return this.fields.push(q.str(Be,Ce,Re)),this}int(Be,Ce,Re){return this.fields.push(q.int(Be,Ce,Re)),this}vec(Be,Ce,Re){for(let ke=0;keCe.split(".")[0]);return{includeCategory:Ce=>!xe.includes(Ce)&&(_e.length<=0||-1!==_e.indexOf(Ce)),includeField(Ce,Re){const ke=Ce+"."+Re;return!Ae.includes(ke)&&(!Be.includes(Ce)||le.includes(ke))}}},q.DefaultFilter={includeCategory:g=>!0,includeField:(g,_e)=>!0},q.DefaultFormatter={getFormat(g,_e){}},q.ofTable=function ee(g,_e){return _e?{fields:M(g._schema),source:[{data:g,rowCount:_e.length,keys:()=>o.f.Array(_e)}]}:{fields:M(g._schema),source:[{data:g,rowCount:g._rowCount}]}},function(q){function Y(g,_e,xe){g.startDataBlock(_e);for(const le of xe._tableNames)g.writeCategory({name:le,instance:()=>y.ofTable(xe[le])})}q.writeDatabase=Y,q.writeDatabaseCollection=function ee(g,_e){for(const xe of Object.keys(_e))Y(g,xe,_e[xe])}}(c||(c={})),n(6651),n(3543),n(8382),n(9677);class h{constructor(){this.builder=e.f.create(),this.encoded=!1,this.dataBlockCreated=!1,this.filter=y.DefaultFilter,this.formatter=y.DefaultFormatter,this.isBinary=!1,this.binaryEncodingProvider=void 0}setFilter(Y){this.filter=Y||y.DefaultFilter}isCategoryIncluded(Y){return this.filter.includeCategory(Y)}setFormatter(Y){this.formatter=Y||y.DefaultFormatter}startDataBlock(Y){this.dataBlockCreated=!0,e.f.write(this.builder,`data_${(Y||"").replace(/[ \n\t]/g,"").toUpperCase()}\n#\n`)}writeCategory(Y,ee,g){if(this.encoded)throw new Error("The writer contents have already been encoded, no more writing.");if(!this.dataBlockCreated)throw new Error("No data block created.");if(!g?.ignoreFilter&&!this.filter.includeCategory(Y.name))return;const{instance:_e,rowCount:xe,source:le}=C(Y,ee);xe&&(1===xe?function D(q,Y,ee,g,_e,xe){const le=s(Y),Ae=ee[0],Be=Ae.data;let Ce=le.reduce((Oe,Se)=>_e.includeField(q.name,Se.name)?Math.max(Oe,Se.name.length):0,0);if(0===Ce)return;Ce+=q.name.length+6;const ke=Ae.keys().move(),we=S(q.name,Y.fields,xe);for(let Oe=0;Oe_e.includeField(q.name,ke.name)),Be=Ae.length;if(0===Be)return;const Ce=S(q.name,Ae,xe);p(g,"loop_");for(let ke=0;ke=0}(Be)?(G(q,Be),!0):function Q(q,Y){if(!Y)return e.f.writeSafe(q,". "),!1;const ee=Y.charCodeAt(0);let g=!1,_e=0,xe=!1,le=!1;for(let Ae=0,Be=Y.length-1;Ae<=Be;Ae++)switch(Y.charCodeAt(Ae)){case 9:case 32:g=!0;break;case 10:return G(q,Y),!0;case 34:if(Ae&&Ae===Be)break;if(xe)return G(q,Y),!0;le=!0,g=!0,_e=0;break;case 39:if(Ae&&Ae===Be)break;if(le)return G(q,Y),!0;xe=!0,g=!0,_e=1}return!g&&(35===ee||36===ee||59===ee||91===ee||93===ee||95===ee)&&(g=!0),g?(e.f.writeSafe(q,_e?'"':"'"),e.f.writeSafe(q,Y),e.f.writeSafe(q,_e?'" ':"' ")):(e.f.writeSafe(q,Y),e.f.writeSafe(q," ")),!1}(q,Be);1===Ce?function E(q,Y){e.f.writeInteger(q,Y),e.f.whitespace1(q)}(q,Be):function T(q,Y,ee){e.f.writeFloat(q,Y,ee),e.f.whitespace1(q)}(q,Be,_e)}return!1}function S(q,Y,ee){const g=[];for(const _e of Y){const xe=ee.getFormat(q,_e.name);g[g.length]=xe&&typeof xe.digitCount<"u"?2===_e.type?Math.pow(10,Math.max(0,Math.min(xe.digitCount,15))):0:2===_e.type?Math.pow(10,d(_e)):0}return g}function p(q,Y){e.f.write(q,Y),e.f.newline(q)}function G(q,Y){e.f.writeSafe(q,"\n;"+Y),e.f.writeSafe(q,"\n;\n")}var V=n(275);function U(q){const Y=new ArrayBuffer(N(q)),ee=new DataView(Y),g=new Uint8Array(Y);return k(q,ee,g,0),g}function N(q){const Y=typeof q;if("string"===Y){const ee=(0,V.VH)(q);if(ee<32)return 1+ee;if(ee<256)return 2+ee;if(ee<65536)return 3+ee;if(ee<4294967296)return 5+ee}if(q instanceof Uint8Array){const ee=q.byteLength;if(ee<256)return 2+ee;if(ee<65536)return 3+ee;if(ee<4294967296)return 5+ee}if("number"===Y){if(Math.floor(q)!==q)return 9;if(q>=0){if(q<128)return 1;if(q<256)return 2;if(q<65536)return 3;if(q<4294967296)return 5;throw new Error("Number too big 0x"+q.toString(16))}if(q>=-32)return 1;if(q>=-128)return 2;if(q>=-32768)return 3;if(q>=-2147483648)return 5;throw new Error("Number too small -0x"+q.toString(16).substr(1))}if("boolean"===Y||null==q)return 1;if("object"===Y){let ee,g=0;if(Array.isArray(q)){ee=q.length;for(let _e=0;_e=0){if(q<128)return Y.setUint8(g,q),1;if(q<256)return Y.setUint8(g,204),Y.setUint8(g+1,q),2;if(q<65536)return Y.setUint8(g,205),Y.setUint16(g+1,q),3;if(q<4294967296)return Y.setUint8(g,206),Y.setUint32(g+1,q),5;throw new Error("Number too big 0x"+q.toString(16))}if(q>=-32)return Y.setInt8(g,q),1;if(q>=-128)return Y.setUint8(g,208),Y.setInt8(g+1,q),2;if(q>=-32768)return Y.setUint8(g,209),Y.setInt16(g+1,q),3;if(q>=-2147483648)return Y.setUint8(g,210),Y.setInt32(g+1,q),5;throw new Error("Number too small -0x"+(-q).toString(16).substr(1))}if(null==q)return Y.setUint8(g,192),1;if("boolean"===_e)return Y.setUint8(g,q?195:194),1;if("object"===_e){let xe,le=0;const Ae=Array.isArray(q);let Be;if(Ae?xe=q.length:(Be=Object.keys(q),xe=Be.length),xe<16?(Y.setUint8(g,xe|(Ae?144:128)),le=1):xe<65536?(Y.setUint8(g,Ae?220:222),Y.setUint16(g+1,xe),le=3):xe<4294967296&&(Y.setUint8(g,Ae?221:223),Y.setUint32(g+1,xe),le=5),Ae)for(let Ce=0;Ce{"use strict";n.d(Ue,{RL:()=>O,ey:()=>d});const e=new ArrayBuffer(4);new Int32Array(e),new Float32Array(e);const A=new ArrayBuffer(4),y=new Int32Array(A),c=new Float32Array(A);function O(Se){return function i(Se){return y[0]=(1<<23)*((Se<-126?-126:Se)+126.94269504),c[0]}(1.44269504*Se)}const b=new ArrayBuffer(8);new Int32Array(b),new Float32Array(b);const l=new ArrayBuffer(4),m=new Int32Array(l),u=new Float32Array(l);function d(Se){return u[0]=Se,1.1920928955078125e-7*m[0]-126.94269504}Math,Math,Math,Math,Math,Math,Math,Math,Math;const k=new ArrayBuffer(16);new Int32Array(k),new Float32Array(k);const te=new ArrayBuffer(8);new Int32Array(te),new Float32Array(te);const xe=new ArrayBuffer(4);new Int32Array(xe),new Float32Array(xe),Math},5384:(tn,Ue,n)=>{"use strict";n.d(Ue,{n:()=>C.n,DJ:()=>d.D,Eh:()=>u.E,Q7:()=>m.Q,is:()=>l,O8:()=>I,f8:()=>s.f,JX:()=>t.J,oI:()=>r});var e=n(4369);function r(h,a,S){const D=new Float32Array(h);for(let R=0;R146&&++a,h>148&&++a,h>155&&++a,h>160&&++a,h>161&&++a,h>166&&++a,h>167&&++a,h-1+a}(h):i[h];return typeof a>"u"||typeof b[a]>"u"?-1:a}(D);if(p<0)return console.warn(`Unknown spacegroup '${D}', returning a 'P 1' with cellsize [1, 1, 1]`),h.Zero;const E=R[0]*R[1]*R[2],T=f[0],L=f[1],w=f[2],Q=R[0],G=R[1],V=R[2],U=Math.cos(L),N=(Math.cos(T)-Math.cos(L)*Math.cos(w))/Math.sin(w),k=Math.sqrt(1-U*U-N*N),H=[Q,0,0],$=[Math.cos(w)*G,Math.sin(w)*G,0],J=[U*V,N*V,k*V],W=e.$I.ofRows([[H[0],$[0],J[0],0],[0,$[1],J[1],0],[0,0,J[2],0],[0,0,0,1]]);return{index:p,size:R,volume:E,anglesInRadians:f,toFractional:e.$I.invert(e.$I.zero(),W),fromFractional:W}}h.Zero=S("P 1",e.eB.create(1,1,1),e.eB.create(Math.PI/2,Math.PI/2,Math.PI/2)),h.isZero=function a(D){return!D||0===D.index&&1===D.size[0]&&1===D.size[1]&&1===D.size[1]},h.create=S}(I||(I={})),function(h){function a(k){const H=c[k.index].map(W=>function Q(k){return e.$I.ofRows([A[k[0]],A[k[1]],A[k[2]],[0,0,0,1]])}(y[W]));return{name:b[k.index],num:_[k.index],cell:k,operators:H}}h.ZeroP1=a(I.Zero),h.create=a;const S=(0,e.eB)(),D=(0,e.$I)();function R(k,H,$,J,W,te){return e.eB.set(S,$,J,W),e.$I.fromTranslation(D,S),e.$I.mul(te,e.$I.mul(te,e.$I.mul(te,k.cell.fromFractional,D),k.operators[H]),k.cell.toFractional)}h.setOperatorMatrix=R,h.getSymmetryOperator=function f(k,H,$,J,W){const te=R(k,H,$,J,W,e.$I.zero());return t.J.create(`${H+1}_${5+$}${5+J}${5+W}`,te,{hkl:e.eB.create($,J,W),spgrOp:H})};const p=(0,e.eB)(),E=(0,e.eB)(),T=(0,e.eB)(),L=(0,e.eB)();function V(k,H,$){const J=[];if(k>0?J.push("+X"):k<0&&J.push("-X"),H>0?J.push("+Y"):H<0&&J.push("-Y"),$>0?J.push("+Z"):$<0&&J.push("-Z"),1===J.length)return"+"===J[0].charAt(0)?J[0].substr(1):J[0];if(2===J.length){const W=J[0].charAt(0),te=J[1].charAt(0);if("+"===W)return`${J[0].substr(1)}${J[1]}`;if("+"===te)return`${J[1].substr(1)}${J[0]}`}throw new Error(`unknown rotation '${J}', ${k} ${H} ${$}`)}function U(k){switch(k){case.5:return"1/2";case 1/4:return"1/4";case 3/4:return"3/4";case 1/3:return"1/3";case 2/3:return"2/3";case 1/6:return"1/6";case 5/6:return"5/6"}return""}function N(k,H){return""===H?k:k.length>2?`${k}+${H}`:"-"===k.charAt(0)?`${H}${k}`:`${H}+${k}`}h.getSymmetryOperatorRef=function w(k,H,$,J,W,te){const de=e.$I.zero();e.eB.set(S,$,J,W),e.eB.floor(p,te),e.$I.copy(de,k.operators[H]),e.eB.floor(E,e.eB.transformMat4(E,te,de)),e.$I.getTranslation(L,de),e.eB.sub(L,L,E),e.eB.add(L,L,p),e.eB.add(L,L,S),e.$I.setTranslation(de,L),e.$I.mul(de,k.cell.fromFractional,de),e.$I.mul(de,de,k.cell.toFractional),e.eB.sub(T,E,p);const ye=$-T[0],j=J-T[1],Z=W-T[2];return t.J.create(`${H+1}_${5+ye}${5+j}${5+Z}`,de,{hkl:e.eB.create(ye,j,Z),spgrOp:H})},h.getOperatorXyz=function G(k){return[N(V(k[0],k[4],k[8]),U(k[12])),N(V(k[1],k[5],k[9]),U(k[13])),N(V(k[2],k[6],k[10]),U(k[14]))].join(",")}}(l||(l={}));var m=n(654),u=n(9307),d=n(6642),s=n(8184),C=n(5560)},7136:(tn,Ue,n)=>{"use strict";n.d(Ue,{Z:()=>v});var e=n(2086),o=n(6290),r=n(5384),t=n(6642);const A=e.e.dot,y=e.e.copy,c=e.e.scaleAndSub,i=e.e.scaleAndAdd;class v{computeExtrema(d,s){const C=A(this.dir[d],s);Cthis.maxDist[d]&&(this.maxDist[d]=C,y(this.extrema[2*d+1],s))}computeSphereExtrema(d,s,C){const h=this.dir[d],a=A(h,s);a-Cthis.maxDist[d]&&(this.maxDist[d]=a+C,i(this.extrema[2*d+1],s,h,C))}includeSphere(d){if(r.f8.hasExtrema(d)&&d.extrema.length>1)for(const s of d.extrema)this.includePosition(s);else this.includePositionRadius(d.center,d.radius)}includePosition(d){for(let s=0;s1)for(const s of d.extrema)this.radiusPosition(s);else this.radiusPositionRadius(d.center,d.radius)}radiusPosition(d){this.centroidHelper.radiusStep(d)}radiusPositionRadius(d,s){this.centroidHelper.radiusSphereStep(d,s)}getSphere(d){return r.f8.setExtrema(this.centroidHelper.getSphere(d),this.extrema.slice())}getBox(d){return t.D.fromVec3Array(d||(0,t.D)(),this.extrema)}reset(){for(let d=0;d{const C=e.e.create(s[0],s[1],s[2]);return e.e.normalize(C,C)})}(d),this.dirLength=this.dir.length,this.reset()}}const b=[[1,0,0],[0,1,0],[0,0,1]],_=[[1,1,1],[-1,1,1],[-1,-1,1],[1,-1,1]],M=[[1,1,0],[1,-1,0],[1,0,1],[1,0,-1],[0,1,1],[0,1,-1]],I=[[0,1,2],[0,2,1],[1,0,2],[2,0,1],[1,2,0],[2,1,0],[0,1,-2],[0,2,-1],[1,0,-2],[2,0,-1],[1,-2,0],[2,-1,0]],l=[[1,1,2],[2,1,1],[1,2,1],[1,-1,2],[1,1,-2],[1,-1,-2],[2,-1,1],[2,1,-1],[2,-1,-1],[1,-2,1],[1,2,-1],[1,-2,-1]],m=[[2,2,1],[1,2,2],[2,1,2],[2,-2,1],[2,2,-1],[2,-2,-1],[1,-2,2],[1,2,-2],[1,-2,-2],[2,-1,2],[2,1,-2],[2,-1,-2]]},9535:(tn,Ue,n)=>{"use strict";n.d(Ue,{b:()=>v,r:()=>b});var e=n(4369),o=n(3543),r=n(7136),t=n(5384);const A=e.eB.set,y=new r.Z("14"),c=new r.Z("98");function v(_){const M=t.DJ.computeBounding(_);return{box:M,sphere:t.f8.fromBox3D((0,t.f8)(),M)}}const O=(0,e.eB)();function b(_){const{x:M,y:I,z:l,radius:m,indices:u}=_,d=o.CD.size(u);if(d>25e4)return v(_);const s=function i(_){return _>1e4?y:c}(d);s.reset();for(let h=0;h{"use strict";n.d(Ue,{p:()=>y});var e=n(2086),o=n(8184);const r=e.e.add,t=e.e.squaredDistance,A=e.e.distance;class y{reset(){e.e.set(this.center,0,0,0),this.radiusSq=0,this.count=0}includeStep(i){r(this.center,this.center,i),this.count++}finishedIncludeStep(){0!==this.count&&e.e.scale(this.center,this.center,1/this.count)}radiusStep(i){const v=t(i,this.center);v>this.radiusSq&&(this.radiusSq=v)}radiusSphereStep(i,v){const O=A(i,this.center)+v,b=O*O;b>this.radiusSq&&(this.radiusSq=b)}getSphere(i){return i||(i=(0,o.f)()),e.e.copy(i.center,this.center),i.radius=Math.sqrt(this.radiusSq),i}getCount(){return this.count}constructor(){this.count=0,this.center=(0,e.e)(),this.radiusSq=0}}!function(c){const i=new c,v=(0,e.e)(),O=(0,e.e)();c.fromArrays=function b({x:I,y:l,z:m},u){i.reset();const d=I.length;for(let s=0;s{"use strict";var e,o;n.d(Ue,{Q:()=>e}),(o=e||(e={})).add=function r(c,i,v){c.squaredDistances[c.count]=v,c.indices[c.count++]=i},o.reset=function t(c){c.count=0},o.create=function A(){return{count:0,indices:[],squaredDistances:[]}},o.copy=function y(c,i){for(let v=0;v{"use strict";n.d(Ue,{E:()=>y});var e=n(654),o=n(6642),r=n(4369),t=n(3543),A=n(8361);function y(h,a,S){return new c(h,a,S)}class c{find(a,S,D,R,f){this.ctx.x=a,this.ctx.y=S,this.ctx.z=D,this.ctx.radius=R,this.ctx.isCheck=!1;const p=f??this.result;return b(this.ctx,p),p}nearest(a,S,D,R=1,f,p){this.ctx.x=a,this.ctx.y=S,this.ctx.z=D,this.ctx.k=R,this.ctx.stopIf=f;const E=p??this.result;return function C(h,a){const{min:S,expandedBox:D,boundingSphere:{center:R},size:[f,p,E],bucketOffset:T,bucketCounts:L,bucketArray:w,grid:Q,data:{x:G,y:V,z:U,indices:N,radius:k},delta:H,maxRadius:$}=h.grid,{x:J,y:W,z:te,k:de,stopIf:ye}=h,j=t.CD.size(N);if(e.Q.reset(a),0===j||de<=0)return!1;let Z,q,Y,Re,ee=!1,g=1,_e=!0,xe=0,le=m,Ae=u,Be=0,Ce=!0,ke=!1;const we=d,Oe=$*$;le.length=0,we.length=0,I.clear(),s.clear(),r.eB.set(M,J,W,te),o.D.containsVec3(D,M)?(Z=Math.floor((J-S[0])/H[0]),q=Math.floor((W-S[1])/H[1]),Y=Math.floor((te-S[2])/H[2])):(o.D.nearestIntersectionWithRay(M,D,M,r.eB.normalize(_,r.eB.sub(_,R,M))),Z=Math.max(0,Math.min(f-1,Math.floor((M[0]-S[0])/H[0]))),q=Math.max(0,Math.min(p-1,Math.floor((M[1]-S[1])/H[1]))),Y=Math.max(0,Math.min(E-1,Math.floor((M[2]-S[2])/H[2]))));const Se=0!==$?Math.max(1,Math.min(f-1,Math.ceil($/H[0]))):1,Ve=0!==$?Math.max(1,Math.min(p-1,Math.ceil($/H[1]))):1,Ne=0!==$?Math.max(1,Math.min(E-1,Math.ceil($/H[2]))):1;for(le.push(Z,q,Y,(Z*p+q)*E+Y);a.count=Q.length;const be=Q[Re];if(0!==be){const Te=Be,ie=be-1,ue=T[ie],ve=ue+L[ie];for(let ce=ue;ceBe&&(Be=nt),s.insert(nt,se)}Te=f))for(let ie=-Ve;ie<=Ve;ie++){const ue=q+ie;if(!(ue<0||ue>=p))for(let re=-Ne;re<=Ne;re++){const ve=Y+re;if(!(ve<0||ve>=E||(Re=(Te*p+ue)*E+ve,l.has(Re)||(l.add(Re),I.has(Re))))){if(!_e){const ce=S[0]+Te*H[0]-J,se=S[1]+ue*H[1]-W,ae=S[2]+ve*H[2]-te;if(ce*ce+se*se+ae*ae-Oe>Be){we.push(Te,ue,ve,Re);continue}}Ae.push(Te,ue,ve,Re),xe++}}}}}if(_e=!1,0===xe){if(1===de){const ne=s.findMinimum();if(ne){const{key:be,value:Te}=ne;return e.Q.add(a,Te,be),!0}}else for(;!s.isEmpty()&&(ke||s.findMinimum().key<=Be)&&a.count=de||ee||a.count>=j)return a.count>0;if(_e=!0,Ce=!0,we.length>0){for(let ne=0,be=we.length;ne0){const V=Math.ceil(T/L),U=Math.pow(V/(f[0]*f[1]*f[2]),1/3);E=[Math.ceil(f[0]*U),Math.ceil(f[1]*U),Math.ceil(f[2]*U)],p=[f[0]/E[0],f[1]/E[1],f[2]/E[2]]}else p=f,E=[1,1,1];return function i(h){const{expandedBox:a,size:[S,D,R],data:{x:f,y:p,z:E,radius:T,indices:L},elementCount:w,delta:Q}=h,G=S*D*R,{min:[V,U,N]}=a;let k=0,H=0;const $=new Uint32Array(G),J=new Int32Array(w);for(let j=0;jk&&(k=T[Z])}const W=new Int32Array(H);for(let j=0,Z=0;j0&&($[j]=Z+1,W[Z]=q,Z+=1)}const te=new Uint32Array(H);for(let j=1;j0){const q=Z-1;ye[te[q]+de[q]]=j,de[q]+=1}}return{size:h.size,bucketArray:ye,bucketCounts:W,bucketOffset:te,grid:$,delta:Q,min:h.expandedBox.min,data:h.data,maxRadius:k,expandedBox:h.expandedBox,boundingBox:h.boundingBox,boundingSphere:h.boundingSphere}}({size:E,data:{x:h.x,y:h.y,z:h.z,indices:R,radius:h.radius},expandedBox:D,boundingBox:a.box,boundingSphere:a.sphere,elementCount:T,delta:p})}(a,S,D);this.ctx=function O(h){return{grid:h,x:.1,y:.1,z:.1,k:1,stopIf:void 0,radius:.1,isCheck:!1}}(R),this.boundary={box:R.boundingBox,sphere:R.boundingSphere},this.buckets={offset:R.bucketOffset,count:R.bucketCounts,array:R.bucketArray},this.result=e.Q.create()}}function b(h,a){const{min:S,size:[D,R,f],bucketOffset:p,bucketCounts:E,bucketArray:T,grid:L,data:{x:w,y:Q,z:G,indices:V,radius:U},delta:N,maxRadius:k}=h.grid,{radius:H,isCheck:$,x:J,y:W,z:te}=h,de=H+k,ye=de*de;e.Q.reset(a);const j=Math.max(0,Math.floor((J-de-S[0])/N[0])),Z=Math.max(0,Math.floor((W-de-S[1])/N[1])),q=Math.max(0,Math.floor((te-de-S[2])/N[2])),Y=Math.min(D-1,Math.floor((J+de-S[0])/N[0])),ee=Math.min(R-1,Math.floor((W+de-S[1])/N[1])),g=Math.min(f-1,Math.floor((te+de-S[2])/N[2]));if(j>Y||Z>ee||q>g)return!1;for(let _e=j;_e<=Y;_e++)for(let xe=Z;xe<=ee;xe++)for(let le=q;le<=g;le++){const Ae=L[(_e*R+xe)*f+le];if(0===Ae)continue;const Be=Ae-1,Ce=p[Be],ke=Ce+E[Be];for(let we=Ce;we0&&Math.sqrt(K)-U[Oe]>H)continue;if($)return!0;e.Q.add(a,T[we],K)}}}return a.count>0}const _=(0,r.eB)(),M=(0,r.eB)(),I=new Set,l=new Set,m=[.1],u=[.1],d=[.1],s=new A.h},5560:(tn,Ue,n)=>{"use strict";n.d(Ue,{n:()=>o});var e=n(4369);function o(){return o.empty()}!function(r){function A(){return{origin:(0,e.eB)(),dirA:(0,e.eB)(),dirB:(0,e.eB)(),dirC:(0,e.eB)()}}function y(l,m){return e.eB.copy(l.origin,m.origin),e.eB.copy(l.dirA,m.dirA),e.eB.copy(l.dirB,m.dirB),e.eB.copy(l.dirC,m.dirC),l}function i(l,m){return e.eB.set(l,2*e.eB.magnitude(m.dirA),2*e.eB.magnitude(m.dirB),2*e.eB.magnitude(m.dirC))}r.create=function t(l,m,u,d){return{origin:l,dirA:m,dirB:u,dirC:d}},r.empty=A,r.copy=y,r.clone=function c(l){return y(A(),l)},r.size=i;const v=(0,e.eB)();r.volume=function O(l){return i(v,l),v[0]*v[1]*v[2]},r.normalize=function b(l,m){return e.eB.copy(l.origin,m.origin),e.eB.normalize(l.dirA,m.dirA),e.eB.normalize(l.dirB,m.dirB),e.eB.normalize(l.dirC,m.dirC),l};const _=(0,e.U)();r.transform=function M(l,m,u){e.eB.transformMat4(l.origin,m.origin,u);const d=e.U.directionTransform(_,u);return e.eB.transformMat3(l.dirA,m.dirA,d),e.eB.transformMat3(l.dirB,m.dirB,d),e.eB.transformMat3(l.dirC,m.dirC,d),l},r.scale=function I(l,m,u){return e.eB.scale(l.dirA,m.dirA,u),e.eB.scale(l.dirB,m.dirB,u),e.eB.scale(l.dirC,m.dirC,u),l}}(o||(o={}))},6642:(tn,Ue,n)=>{"use strict";n.d(Ue,{D:()=>t});var e=n(3543),o=n(8184),r=n(2086);function t(){return t.zero()}!function(A){function c(){return{min:(0,r.e)(),max:(0,r.e)()}}function i(L,w){return r.e.copy(L.min,w.min),r.e.copy(L.max,w.max),L}A.create=function y(L,w){return{min:L,max:w}},A.zero=c,A.copy=i,A.clone=function v(L){return i(c(),L)};const O=(0,r.e)();function _(L,w){for(let Q=0,G=w.length;Q=14?M(L,w.extrema):(r.e.set(O,w.radius,w.radius,w.radius),r.e.sub(L.min,w.center,O),r.e.add(L.max,w.center,O),L)},A.addVec3Array=_,A.fromVec3Array=M,A.addSphere3D=function I(L,w){return o.f.hasExtrema(w)&&w.extrema.length>=14?_(L,w.extrema):(h(L,r.e.subScalar(O,w.center,w.radius)),h(L,r.e.addScalar(O,w.center,w.radius)),L)},A.intersectsSphere3D=function l(L,w){return r.e.clamp(O,w.center,L.min,L.max),r.e.squaredDistance(O,w.center)<=w.radius*w.radius},A.computeBounding=function m(L){const w=r.e.create(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),Q=r.e.create(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),{x:G,y:V,z:U,indices:N}=L;for(let k=0,H=e.CD.size(N);kL.max[0]||w[1]L.max[1]||w[2]L.max[2])},A.overlaps=function p(L,w){return!(L.max[0]w.max[0]||L.max[1]w.max[1]||L.max[2]w.max[2])},A.containsSphere3D=function E(L,w){const Q=w.center,G=w.radius;return!(Q[0]-GL.max[0]||Q[1]-GL.max[1]||Q[2]-GL.max[2])},A.nearestIntersectionWithRay=function T(L,w,Q,G){const[V,U,N]=w.min,[k,H,$]=w.max,[J,W,te]=Q,de=1/G[0],ye=1/G[1],j=1/G[2];let Z,q,Y,ee,g,_e;return de>=0?(Z=(V-J)*de,q=(k-J)*de):(Z=(k-J)*de,q=(V-J)*de),ye>=0?(Y=(U-W)*ye,ee=(H-W)*ye):(Y=(H-W)*ye,ee=(U-W)*ye),j>=0?(g=(N-te)*j,_e=($-te)*j):(g=($-te)*j,_e=(N-te)*j),Y>Z&&(Z=Y),eeZ&&(Z=g),_e{"use strict";n.d(Ue,{Q:()=>r});var e=n(2086),o=n(9457);function r(){return r.create((0,o.i)(),(0,o.i)(),(0,o.i)(),(0,o.i)(),(0,o.i)(),(0,o.i)())}!function(t){function y(M,I){for(let l=0;l<6;++l)o.i.copy(M[l],I[l]);return M}t.create=function A(M,I,l,m,u,d){return[M,I,l,m,u,d]},t.copy=y,t.clone=function c(M){return y(t(),M)},t.fromProjectionMatrix=function i(M,I){const l=I[0],m=I[1],u=I[2],d=I[3],s=I[4],C=I[5],h=I[6],a=I[7],S=I[8],D=I[9],R=I[10],f=I[11],p=I[12],E=I[13],T=I[14],L=I[15];return o.i.setUnnormalized(M[0],d-l,a-s,f-S,L-p),o.i.setUnnormalized(M[1],d+l,a+s,f+S,L+p),o.i.setUnnormalized(M[2],d+m,a+C,f+D,L+E),o.i.setUnnormalized(M[3],d-m,a-C,f-D,L-E),o.i.setUnnormalized(M[4],d-u,a-h,f-R,L-T),o.i.setUnnormalized(M[5],d+u,a+h,f+R,L+T),M},t.intersectsSphere3D=function v(M,I){const l=I.center,m=-I.radius;for(let u=0;u<6;++u)if(o.i.distanceToPoint(M[u],l)0?I.max[0]:I.min[0],O[1]=m.normal[1]>0?I.max[1]:I.min[1],O[2]=m.normal[2]>0?I.max[2]:I.min[2],o.i.distanceToPoint(m,O)<0)return!1}return!0},t.containsPoint=function _(M,I){for(let l=0;l<6;++l)if(o.i.distanceToPoint(M[l],I)<0)return!1;return!0}}(r||(r={}))},9457:(tn,Ue,n)=>{"use strict";n.d(Ue,{i:()=>o});var e=n(2086);function o(){return o.create(e.e.create(1,0,0),0)}!function(r){function A(d,s){return e.e.copy(d.normal,s.normal),d.constant=s.constant,d}function b(d,s,C){return e.e.copy(d.normal,s),d.constant=-e.e.dot(d.normal,C),d}r.create=function t(d,s){return{normal:d,constant:s}},r.copy=A,r.clone=function y(d){return A(r(),d)},r.normalize=function c(d,s){const C=1/e.e.magnitude(s.normal);return e.e.scale(d.normal,s.normal,C),d.constant=s.constant*C,d},r.negate=function i(d,s){return e.e.negate(d.normal,s.normal),d.constant=-s.constant,d},r.toArray=function v(d,s,C){return e.e.toArray(d.normal,s,C),s[C+3]=d.constant,s},r.fromArray=function O(d,s,C){return e.e.fromArray(d.normal,s,C),d.constant=s[C+3],d},r.fromNormalAndCoplanarPoint=b,r.fromCoplanarPoints=function _(d,s,C,h){return b(d,e.e.triangleNormal((0,e.e)(),s,C,h),s),d};const M=(0,e.e)();function l(d,s){return e.e.dot(d.normal,s)+d.constant}r.setUnnormalized=function I(d,s,C,h,a){e.e.set(M,s,C,h);const S=1/e.e.magnitude(M);return e.e.scale(d.normal,M,S),d.constant=a*S,d},r.distanceToPoint=l,r.distanceToSpher3D=function m(d,s){return l(d,s.center)-s.radius},r.projectPoint=function u(d,s,C){return e.e.scaleAndAdd(d,d,s.normal,-l(s,C))}}(o||(o={}))},8184:(tn,Ue,n)=>{"use strict";n.d(Ue,{f:()=>A});var e=n(4369),o=n(3543),r=n(5560),t=n(8199);function A(){return A.zero()}!function(y){function c(V){return void 0!==V.extrema}function i(V,U){return{center:V,radius:U}}function M(V,U){return void 0!==V.extrema?(V.extrema.length=0,V.extrema.push(...U)):V.extrema=U,V}y.hasExtrema=c,y.create=i,y.zero=function v(){return{center:(0,e.eB)(),radius:0}},y.clone=function O(V){const U=i(e.eB.clone(V.center),V.radius);return c(V)&&(U.extrema=V.extrema.map(N=>e.eB.clone(N))),U},y.set=function b(V,U,N){return e.eB.copy(V.center,U),V.radius=N,V},y.copy=function _(V,U){return e.eB.copy(V.center,U.center),V.radius=U.radius,c(U)&&M(V,U.extrema.map(N=>e.eB.clone(N))),V},y.setExtrema=M,y.computeBounding=function I(V){const{x:U,y:N,z:k,indices:H}=V;let $=0,J=0,W=0,te=0;const de=o.CD.size(H);for(let ye=0;ye0&&($/=de,J/=de,W/=de);for(let ye=0;yete&&(te=ee)}return{center:e.eB.create($,J,W),radius:Math.sqrt(te)}},y.transform=function l(V,U,N){return e.eB.transformMat4(V.center,U.center,N),V.radius=U.radius*e.$I.getMaxScaleOnAxis(N),c(U)&&M(V,U.extrema.map(k=>e.eB.transformMat4((0,e.eB)(),k,N))),V},y.translate=function m(V,U,N){return e.eB.add(V.center,U.center,N),c(U)&&M(V,U.extrema.map(k=>e.eB.add((0,e.eB)(),k,N))),V},y.toArray=function u(V,U,N){return e.eB.toArray(V.center,U,N),U[N+3]=V.radius,U},y.fromArray=function d(V,U,N){return e.eB.fromArray(V.center,U,N),V.radius=U[N+3],V},y.fromBox3D=function s(V,U){return e.eB.scale(V.center,e.eB.add(V.center,U.max,U.min),.5),V.radius=e.eB.distance(V.center,U.max),y.setExtrema(V,[e.eB.create(U.min[0],U.min[1],U.min[2]),e.eB.create(U.max[0],U.max[1],U.max[2]),e.eB.create(U.max[0],U.min[1],U.min[2]),e.eB.create(U.min[0],U.max[1],U.max[2]),e.eB.create(U.min[0],U.min[1],U.max[2]),e.eB.create(U.max[0],U.min[1],U.max[2]),e.eB.create(U.max[0],U.max[1],U.min[2]),e.eB.create(U.min[0],U.max[1],U.min[2])]),V},y.fromAxes3D=function C(V,U){return e.eB.copy(V.center,U.origin),V.radius=Math.max(e.eB.magnitude(U.dirA),e.eB.magnitude(U.dirB),e.eB.magnitude(U.dirC)),V};const h=(0,e.eB)();y.fromDimensionsAndTransform=function a(V,U,N){const[k,H,$]=U,J=e.eB.create(0,0,0);e.eB.transformMat4(J,J,N);const W=e.eB.create(k,H,$);e.eB.transformMat4(W,W,N);const te=e.eB.create(k,0,0);e.eB.transformMat4(te,te,N);const de=e.eB.create(0,H,$);e.eB.transformMat4(de,de,N);const ye=e.eB.create(0,0,$);e.eB.transformMat4(ye,ye,N);const j=e.eB.create(k,0,$);e.eB.transformMat4(j,j,N);const Z=e.eB.create(k,H,0);e.eB.transformMat4(Z,Z,N);const q=e.eB.create(0,H,0);e.eB.transformMat4(q,q,N),e.eB.add(h,J,W),e.eB.scale(h,h,.5);const Y=Math.max(e.eB.distance(J,W),e.eB.distance(te,de));return y.set(V,h,Y/2),y.setExtrema(V,[J,W,te,de,ye,j,Z,q]),V};const S=(0,e.eB)();y.addVec3=function D(V,U,N){return e.eB.distance(U.center,N)e.eB.clone(k)),...N.extrema.map(k=>e.eB.clone(k))]),V};const f=(0,e.eB)();y.expand=function p(V,U,N){var k,H;if(e.eB.copy(V.center,U.center),V.radius=U.radius+N,U.radius<1e-12||(null!==(H=null===(k=U.extrema)||void 0===k?void 0:k.length)&&void 0!==H?H:0)<=1)return V.extrema=void 0,V;if(c(U)){const $=new Float32Array(3*U.extrema.length);for(let W=0;W{e.eB.normalize(f,e.eB.sub(f,W,U.center));const te=e.eB.clone(W),de=e.eB.dot(f,J.dirA)<0?-1:1;e.eB.scaleAndAdd(te,te,J.dirA,de);const ye=e.eB.dot(f,J.dirB)<0?-1:1;e.eB.scaleAndAdd(te,te,J.dirB,ye);const j=e.eB.dot(f,J.dirC)<0?-1:1;return e.eB.scaleAndAdd(te,te,J.dirC,j),e.eB.distance(V.center,te)>V.radius&&(U.extrema.length>=14&&e.eB.normalize(f,e.eB.sub(f,te,U.center)),e.eB.scaleAndAdd(te,V.center,f,V.radius)),te}))}return V},y.exactEquals=function E(V,U){return V.radius===U.radius&&e.eB.exactEquals(V.center,U.center)},y.equals=function T(V,U){const N=V.radius,k=U.radius;return Math.abs(N-k)<=e.p8*Math.max(1,Math.abs(N),Math.abs(k))&&e.eB.equals(V.center,U.center)},y.includes=function L(V,U){if(c(U)){for(const N of U.extrema)if(e.eB.distance(V.center,N)>V.radius)return!1;return!0}return e.eB.distance(V.center,U.center)+U.radius<=V.radius},y.overlaps=function w(V,U){return e.eB.distance(V.center,U.center)<=V.radius+U.radius},y.distance=function Q(V,U){return e.eB.distance(V.center,U.center)-V.radius+U.radius},y.distanceToVec=function G(V,U){const{center:N,radius:k}=V;return e.eB.distance(U,N)-k}}(A||(A={}))},7552:(tn,Ue,n)=>{"use strict";n.d(Ue,{J:()=>y});var y,e=n(127),o=n(7630),r=n(6639),t=n(5126),A=n(2086);function c(v){return 0}!function(v){function O(p,E,T){let{assembly:L,ncsId:w,hkl:Q,spgrOp:G,key:V}=T||{};const U=Q?A.e.clone(Q):(0,A.e)();G=G??-1,V=V??-1,w=w||-1;const N=r.$.isIdentity(E),k=function _(p,E){if(!p)return"";if(p.assembly)return function b(p){return!!p&&!!p.matrix&&!!p.inverse&&"string"==typeof p.name}(p)?p.suffix:E?"":`_${p.assembly.operId}`;if(typeof p.spgrOp<"u"&&typeof p.hkl<"u"&&-1!==p.spgrOp){const[T,L,w]=p.hkl;return`-${p.spgrOp+1}_${5+T}${5+L}${5+w}`}return-1!==p.ncsId?`_${p.ncsId}`:""}(T,N);return N?{name:p,assembly:L,matrix:E,inverse:r.$.identity(),isIdentity:!0,hkl:U,spgrOp:G,ncsId:w,suffix:k,key:V}:(r.$.isRotationAndTranslation(E,v.RotationTranslationEpsilon)||console.warn(`Symmetry operator (${p}) should be a composition of rotation and translation.`),{name:p,assembly:L,matrix:E,inverse:r.$.invert((0,r.$)(),E),isIdentity:!1,hkl:U,spgrOp:G,key:V,ncsId:w,suffix:k})}v.DefaultName="1_555",v.Default=O(v.DefaultName,r.$.identity()),v.RotationTranslationEpsilon=.005,v.create=O;const M=(0,r.$)();v.checkIfRotationAndTranslation=function I(p,E){r.$.setIdentity(M);for(let T=0;T<3;T++)for(let L=0;L<3;L++)r.$.setValue(M,T,L,o.U.getValue(p,T,L));return r.$.setTranslation(M,E),r.$.isRotationAndTranslation(M,v.RotationTranslationEpsilon)},v.ofRotationAndOffset=function l(p,E,T,L){const w=r.$.identity();for(let Q=0;Q<3;Q++)for(let G=0;G<3;G++)r.$.setValue(w,Q,G,o.U.getValue(E,Q,G));return r.$.setTranslation(w,T),O(p,w,{ncsId:L})};const m=t.k.identity(),u=(0,t.k)(),d=(0,t.k)(),s=(0,A.e)();v.lerpFromIdentity=function C(p,E,T){const L=E.inverse;if(E.isIdentity)return r.$.copy(p,L);const w=1-T;r.$.getRotation(u,L),t.k.slerp(u,m,u,w);const Q=t.k.getAxisAngle(s,u);return r.$.fromRotation(p,Q,s),r.$.setValue(p,0,3,w*r.$.getValue(L,0,3)),r.$.setValue(p,1,3,w*r.$.getValue(L,1,3)),r.$.setValue(p,2,3,w*r.$.getValue(L,2,3)),p},v.slerp=function h(p,E,T,L){if(Math.abs(L)<=1e-5)return r.$.copy(p,E);if(Math.abs(L-1)<=1e-5)return r.$.copy(p,T);r.$.getRotation(u,E),r.$.getRotation(d,T),t.k.slerp(d,u,d,L);const w=t.k.getAxisAngle(s,d);return r.$.fromRotation(p,w,s),r.$.setValue(p,0,3,(0,e.Cc)(r.$.getValue(E,0,3),r.$.getValue(T,0,3),L)),r.$.setValue(p,1,3,(0,e.Cc)(r.$.getValue(E,1,3),r.$.getValue(T,1,3),L)),r.$.setValue(p,2,3,(0,e.Cc)(r.$.getValue(E,2,3),r.$.getValue(T,2,3),L)),p},v.compose=function a(p,E){const T=r.$.mul((0,r.$)(),E.matrix,p.matrix);return O(E.name,T,E)};class S{constructor(E,T,L=c){this.operator=E,this.coordinates=T,this.r=L,this._x=T.x,this._y=T.y,this._z=T.z,this._m=E.matrix}invariantPosition(E,T){return T[0]=this._x[E],T[1]=this._y[E],T[2]=this._z[E],T}position(E,T){return T[0]=this._x[E],T[1]=this._y[E],T[2]=this._z[E],A.e.transformMat4(T,T,this._m),T}x(E){const T=this._m,V=this._x[E],U=this._y[E],N=this._z[E];return(T[0]*V+T[4]*U+T[8]*N+T[12])/(T[3]*V+T[7]*U+T[11]*N+T[15]||1)}y(E){const T=this._m,V=this._x[E],U=this._y[E],N=this._z[E];return(T[1]*V+T[5]*U+T[9]*N+T[13])/(T[3]*V+T[7]*U+T[11]*N+T[15]||1)}z(E){const T=this._m,V=this._x[E],U=this._y[E],N=this._z[E];return(T[2]*V+T[6]*U+T[10]*N+T[14])/(T[3]*V+T[7]*U+T[11]*N+T[15]||1)}}class D{constructor(E,T,L=c){this.operator=E,this.coordinates=T,this.r=L,this._x=T.x,this._y=T.y,this._z=T.z,this._m=E.matrix}invariantPosition(E,T){return T[0]=this._x[E],T[1]=this._y[E],T[2]=this._z[E],T}position(E,T){return T[0]=this.x(E),T[1]=this.y(E),T[2]=this.z(E),T}x(E){const T=this._m;return T[0]*this._x[E]+T[4]*this._y[E]+T[8]*this._z[E]+T[12]}y(E){const T=this._m;return T[1]*this._x[E]+T[5]*this._y[E]+T[9]*this._z[E]+T[13]}z(E){const T=this._m;return T[2]*this._x[E]+T[6]*this._y[E]+T[10]*this._z[E]+T[14]}}class R{constructor(E,T,L=c){this.operator=E,this.coordinates=T,this.r=L,this._x=T.x,this._y=T.y,this._z=T.z}invariantPosition(E,T){return T[0]=this._x[E],T[1]=this._y[E],T[2]=this._z[E],T}position(E,T){return T[0]=this._x[E],T[1]=this._y[E],T[2]=this._z[E],T}x(E){return this._x[E]}y(E){return this._y[E]}z(E){return this._z[E]}}v.createMapping=function f(p,E,T=c){return r.$.isIdentity(p.matrix)?new R(p,E,T):function i(v){return 0===v[3]&&0===v[7]&&0===v[11]&&1===v[15]}(p.matrix)?new D(p,E,T):new S(p,E,T)}}(y||(y={}))},4506:(tn,Ue,n)=>{"use strict";n.d(Ue,{O:()=>r});var r,e=n(8382),o=n(3543);function t(A,y,c,i,v){const{b:O,offset:b}=A,_=[];for(let M=0,I=y.length;M1&&t(A,_,c,i-1,v)}!function(A){A.areEqual=function y(m,u){if(m===u)return!0;if(m.vertexCount!==u.vertexCount||m.edgeCount!==u.edgeCount)return!1;const{a:d,b:s,offset:C}=m,{a:h,b:a,offset:S}=u;for(let D=0,R=m.a.length;Dd&&(s=d,C=u);const h=(0,e.m1)(s,C);return!this.included.has(h)&&(this.included.add(h),this.xs[this.xs.length]=s,this.ys[this.ys.length]=C,!0)}getGraph(){return _(this.vertexCount,this.xs,this.ys)}getEdgeBuiler(){return new v(this.vertexCount,this.xs,this.ys)}constructor(u){this.vertexCount=u,this.xs=[],this.ys=[],this.included=new Set}},A.fromVertexPairs=_,A.induceByVertices=function M(m,u,d){const{b:s,offset:C,vertexCount:h,edgeProps:a}=m,S=new Int32Array(h);for(let Q=0,G=u.length;QQ&&0!==S[s[G]]&&D++;const R=new Int32Array(u.length+1),f=new Int32Array(2*D),p=new Int32Array(2*D),E=new Int32Array(2*D);let T=0,L=0;for(let Q=0;Q0;){const D=a.pop(),R=d[D];for(let f=C[D],p=C[D+1];f=0&&(a.push(S.head),d[S.head]=++s,S.remove(S.head))}return{componentCount:u,componentIndex:d}},A.areVertexSetsConnected=function l(m,u,d,s){if(o.SortedArray.areIntersecting(u,d))return!0;if(s<1)return!1;const C=new Set;for(let h=0,a=u.length;h{"use strict";n.d(Ue,{Z:()=>o});var e=n(9677);class o{getConnectedUnits(A){return this.map.has(A)?this.map.get(A):r}getEdgeIndex(A,y,c,i){const v=o.getEdgeKey(A,y,c,i),O=this.edgeKeyIndex.get(v);return void 0!==O?O:-1}hasEdge(A,y,c,i){return-1!==this.getEdgeIndex(A,y,c,i)}getEdge(A,y,c,i){const v=this.getEdgeIndex(A,y,c,i);return-1!==v?this.edges[v]:void 0}getEdgeIndices(A,y){return this.vertexKeyIndex.get(o.getVertexKey(A,y))||[]}constructor(A){this.map=A;let y=0;const c=[],i=new Map,v=new Map;this.map.forEach(O=>{O.forEach(b=>{y+=b.edgeCount,b.connectedIndices.forEach(_=>{b.getEdges(_).forEach(M=>{const{unitA:I,unitB:l}=b,m=o.getEdgeKey(_,I,M.indexB,l);i.set(m,c.length);const u=o.getVertexKey(_,I),d=v.get(u);void 0===d?v.set(u,[c.length]):d.push(c.length),c.push({...M,indexA:_,unitA:I,unitB:l})})})})}),this.edgeCount=y,this.edges=c,this.edgeKeyIndex=i,this.vertexKeyIndex=v}}!function(t){class A{hasEdges(b){return this.edgeMap.has(b)}getEdges(b){return this.edgeMap.has(b)?this.edgeMap.get(b):r}get areUnitsOrdered(){return this.unitA{"use strict";function o(M,I,l){return Math.max(I,Math.min(l,M))}function y(M,I,l){return M+(I-M)*l}function c(M,I,l,m,u,d){const s=(l-M)*d,C=(m-I)*d,h=u*u;return(2*I-2*l+s+C)*(u*h)+(-3*I+3*l-2*s-C)*h+s*u+I}function i(M,I,l,m){const u=1-m;return u*u*M+2*u*m*I+m*m*l}function v(M,I,l){return(l=function t(M){return o(M,0,1)}(function e(M,I,l){return(M-I)/(l-I)}(l,M,I)))*l*(3-2*l)}n.d(Ue,{Cc:()=>y,TF:()=>v,Y7:()=>c,iD:()=>i,qE:()=>o})},4369:(tn,Ue,n)=>{"use strict";n.d(Ue,{p8:()=>c.p,U:()=>o.U,$I:()=>e.$,k:()=>y.k,qY:()=>i,ZY:()=>r.Z,eB:()=>t.e,Zb:()=>A.Z});var i,e=n(6639),o=n(7630),r=n(325),t=n(2086),A=n(8599),y=n(5126),c=n(2028);!function(v){function _(L,w,Q){const G=function O(L,w,Q){const G=[];for(let U=0;UG[V],set:(G,V,U)=>G[V]=U,add:(G,V,U)=>G[V]+=U,dataOffset:G=>G,getCoords:(G,V)=>(V[0]=G,V)};case 2:if(0===Q[0]&&1===Q[1]){const G=w[0];return{get:(V,U,N)=>V[N*G+U],set:(V,U,N,k)=>V[N*G+U]=k,add:(V,U,N,k)=>V[N*G+U]+=k,dataOffset:(V,U)=>U*G+V,getCoords:(V,U)=>(U[0]=V%G,U[1]=Math.floor(V/G),U)}}if(1===Q[0]&&0===Q[1]){const G=w[1];return{get:(V,U,N)=>V[U*G+N],set:(V,U,N,k)=>V[U*G+N]=k,add:(V,U,N,k)=>V[U*G+N]+=k,dataOffset:(V,U)=>V*G+U,getCoords:(V,U)=>(U[0]=Math.floor(V/G),U[1]=V%G,U)}}throw new Error("bad axis order");case 3:if(0===Q[0]&&1===Q[1]&&2===Q[2]){const G=w[0],V=w[1],U=G*V;return{get:(N,k,H,$)=>N[k+H*G+$*U],set:(N,k,H,$,J)=>N[k+H*G+$*U]=J,add:(N,k,H,$,J)=>N[k+H*G+$*U]+=J,dataOffset:(N,k,H)=>N+k*G+H*U,getCoords:(N,k)=>{const H=Math.floor(N/G);return k[0]=N%G,k[1]=H%V,k[2]=Math.floor(H/V),k}}}if(0===Q[0]&&2===Q[1]&&1===Q[2]){const G=w[0],V=w[2],U=G*V;return{get:(N,k,H,$)=>N[k+$*G+H*U],set:(N,k,H,$,J)=>N[k+$*G+H*U]=J,add:(N,k,H,$,J)=>N[k+$*G+H*U]+=J,dataOffset:(N,k,H)=>N+H*G+k*U,getCoords:(N,k)=>{const H=Math.floor(N/G);return k[0]=N%G,k[1]=Math.floor(H/V),k[2]=H%V,k}}}if(1===Q[0]&&0===Q[1]&&2===Q[2]){const G=w[1],V=w[0],U=G*V;return{get:(N,k,H,$)=>N[H+k*G+$*U],set:(N,k,H,$,J)=>N[H+k*G+$*U]=J,add:(N,k,H,$,J)=>N[H+k*G+$*U]+=J,dataOffset:(N,k,H)=>k+N*G+H*U,getCoords:(N,k)=>{const H=Math.floor(N/G);return k[0]=H%V,k[1]=N%G,k[2]=Math.floor(H/V),k}}}if(1===Q[0]&&2===Q[1]&&0===Q[2]){const G=w[1],V=w[2],U=G*V;return{get:(N,k,H,$)=>N[H+$*G+k*U],set:(N,k,H,$,J)=>N[H+$*G+k*U]=J,add:(N,k,H,$,J)=>N[H+$*G+k*U]+=J,dataOffset:(N,k,H)=>k+H*G+N*U,getCoords:(N,k)=>{const H=Math.floor(N/G);return k[0]=Math.floor(H/V),k[1]=N%G,k[2]=H%V,k}}}if(2===Q[0]&&0===Q[1]&&1===Q[2]){const G=w[2],V=w[0],U=G*V;return{get:(N,k,H,$)=>N[$+k*G+H*U],set:(N,k,H,$,J)=>N[$+k*G+H*U]=J,add:(N,k,H,$,J)=>N[$+k*G+H*U]+=J,dataOffset:(N,k,H)=>H+N*G+k*U,getCoords:(N,k)=>{const H=Math.floor(N/G);return k[0]=H%V,k[1]=Math.floor(H/V),k[2]=N%G,k}}}if(2===Q[0]&&1===Q[1]&&0===Q[2]){const G=w[2],V=w[1],U=G*V;return{get:(N,k,H,$)=>N[$+H*G+k*U],set:(N,k,H,$,J)=>N[$+H*G+k*U]=J,add:(N,k,H,$,J)=>N[$+H*G+k*U]+=J,dataOffset:(N,k,H)=>H+k*G+N*U,getCoords:(N,k)=>{const H=Math.floor(N/G);return k[0]=Math.floor(H/V),k[1]=H%V,k[2]=N%G,k}}}throw new Error("bad axis order");default:return{get:(G,...V)=>G[D(L,V)],set:(G,...V)=>G[D(L,V)]=V[V.length-1],add:(G,...V)=>G[D(L,V)]+=V[V.length-1],dataOffset:(...G)=>D(L,G),getCoords:(G,V)=>function R(L,w,Q){const{dimensions:G,axisOrderFastToSlow:V}=L,U=G.length;let N=w;for(let k=0;knew(G||L.defaultCtor)(Q)}function D(L,w){const{accessDimensions:Q,axisOrderFastToSlow:G}=L,V=Q.length-1;let U=Q[V]*w[G[V]];for(let N=V-1;N>=0;N--)U=(U+w[G[N]])*Q[N];return U}function p(L,w){const Q=[];for(let G=0;Gp(Q,w)},v.convertToCanonicalAxisIndicesSlowToFast=function T(L){const w=new Int32Array(L.length);for(let Q=0;Qp(Q,w)}}(i||(i={}))},2028:(tn,Ue,n)=>{"use strict";n.d(Ue,{T:()=>o,p:()=>e});const e=1e-6;function o(r,t,A){return Math.abs(r-t)<=A}},7630:(tn,Ue,n)=>{"use strict";n.d(Ue,{U:()=>t});var e=n(2028),o=n(6639),r=n(2086);function t(){return t.zero()}!function(A){function y(){const Y=[.1,0,0,0,0,0,0,0,0];return Y[0]=0,Y}function c(){const Y=y();return Y[0]=1,Y[1]=0,Y[2]=0,Y[3]=0,Y[4]=1,Y[5]=0,Y[6]=0,Y[7]=0,Y[8]=1,Y}function _(Y,ee){return Y[0]=ee[0],Y[1]=ee[1],Y[2]=ee[2],Y[3]=ee[4],Y[4]=ee[5],Y[5]=ee[6],Y[6]=ee[8],Y[7]=ee[9],Y[8]=ee[10],Y}A.zero=y,A.identity=c,A.setIdentity=function i(Y){return Y[0]=1,Y[1]=0,Y[2]=0,Y[3]=0,Y[4]=1,Y[5]=0,Y[6]=0,Y[7]=0,Y[8]=1,Y},A.toArray=function v(Y,ee,g){return ee[g+0]=Y[0],ee[g+1]=Y[1],ee[g+2]=Y[2],ee[g+3]=Y[3],ee[g+4]=Y[4],ee[g+5]=Y[5],ee[g+6]=Y[6],ee[g+7]=Y[7],ee[g+8]=Y[8],ee},A.fromArray=function O(Y,ee,g){return Y[0]=ee[g+0],Y[1]=ee[g+1],Y[2]=ee[g+2],Y[3]=ee[g+3],Y[4]=ee[g+4],Y[5]=ee[g+5],Y[6]=ee[g+6],Y[7]=ee[g+7],Y[8]=ee[g+8],Y},A.fromColumns=function b(Y,ee,g,_e){return Y[0]=ee[0],Y[1]=ee[1],Y[2]=ee[2],Y[3]=g[0],Y[4]=g[1],Y[5]=g[2],Y[6]=_e[0],Y[7]=_e[1],Y[8]=_e[2],Y},A.fromMat4=_;const M=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];A.fromEuler=function I(Y,ee,g){return o.$.fromEuler(M,ee,g),_(Y,M)},A.create=function l(Y,ee,g,_e,xe,le,Ae,Be,Ce){const Re=y();return Re[0]=Y,Re[1]=ee,Re[2]=g,Re[3]=_e,Re[4]=xe,Re[5]=le,Re[6]=Ae,Re[7]=Be,Re[8]=Ce,Re};const m=c();function C(Y,ee,g){for(let _e=0;_e<9;_e++)if(Math.abs(Y[_e]-ee[_e])>g)return!1;return!0}function S(Y,ee){return Y[0]=ee[0],Y[1]=ee[1],Y[2]=ee[2],Y[3]=ee[3],Y[4]=ee[4],Y[5]=ee[5],Y[6]=ee[6],Y[7]=ee[7],Y[8]=ee[8],Y}function D(Y,ee){if(Y===ee){const g=ee[1],_e=ee[2],xe=ee[5];Y[1]=ee[3],Y[2]=ee[6],Y[3]=g,Y[5]=ee[7],Y[6]=_e,Y[7]=xe}else Y[0]=ee[0],Y[1]=ee[3],Y[2]=ee[6],Y[3]=ee[1],Y[4]=ee[4],Y[5]=ee[7],Y[6]=ee[2],Y[7]=ee[5],Y[8]=ee[8];return Y}function R(Y,ee){const g=ee[0],_e=ee[1],xe=ee[2],le=ee[3],Ae=ee[4],Be=ee[5],Ce=ee[6],Re=ee[7],ke=ee[8],we=ke*Ae-Be*Re,Oe=-ke*le+Be*Ce,Se=Re*le-Ae*Ce;let Ve=g*we+_e*Oe+xe*Se;return Ve?(Ve=1/Ve,Y[0]=we*Ve,Y[1]=(-ke*_e+xe*Re)*Ve,Y[2]=(Be*_e-xe*Ae)*Ve,Y[3]=Oe*Ve,Y[4]=(ke*g-xe*Ce)*Ve,Y[5]=(-Be*g+xe*le)*Ve,Y[6]=Se*Ve,Y[7]=(-Re*g+_e*Ce)*Ve,Y[8]=(Ae*g-_e*le)*Ve,Y):(console.warn("non-invertible matrix.",ee),Y)}function E(Y){const xe=Y[3],le=Y[4],Ae=Y[5],Be=Y[6],Ce=Y[7],Re=Y[8];return Y[0]*(Re*le-Ae*Ce)+Y[1]*(-Re*xe+Ae*Be)+Y[2]*(Ce*xe-le*Be)}function T(Y){return Y[0]+Y[4]+Y[8]}function L(Y,ee,g){return Y[0]=ee[0]-g[0],Y[1]=ee[1]-g[1],Y[2]=ee[2]-g[2],Y[3]=ee[3]-g[3],Y[4]=ee[4]-g[4],Y[5]=ee[5]-g[5],Y[6]=ee[6]-g[6],Y[7]=ee[7]-g[7],Y[8]=ee[8]-g[8],Y}function U(Y,ee,g){return Y[0]=ee[0]*g,Y[1]=ee[1]*g,Y[2]=ee[2]*g,Y[3]=ee[3]*g,Y[4]=ee[4]*g,Y[5]=ee[5]*g,Y[6]=ee[6]*g,Y[7]=ee[7]*g,Y[8]=ee[8]*g,Y}A.isIdentity=function u(Y,ee){return C(Y,m,typeof ee>"u"?e.p:ee)},A.hasNaN=function d(Y){for(let ee=0;ee<9;ee++)if(isNaN(Y[ee]))return!0;return!1},A.clone=function s(Y){return S(y(),Y)},A.areEqual=C,A.setValue=function h(Y,ee,g,_e){Y[3*g+ee]=_e},A.getValue=function a(Y,ee,g){return Y[3*g+ee]},A.copy=S,A.transpose=D,A.invert=R,A.symmtricFromUpper=function f(Y,ee){return Y===ee?(Y[3]=ee[1],Y[6]=ee[2],Y[7]=ee[5]):(Y[0]=ee[0],Y[1]=ee[1],Y[2]=ee[2],Y[3]=ee[1],Y[4]=ee[4],Y[5]=ee[5],Y[6]=ee[2],Y[7]=ee[5],Y[8]=ee[8]),Y},A.symmtricFromLower=function p(Y,ee){return Y===ee?(Y[1]=ee[3],Y[2]=ee[6],Y[5]=ee[7]):(Y[0]=ee[0],Y[1]=ee[3],Y[2]=ee[6],Y[3]=ee[3],Y[4]=ee[4],Y[5]=ee[7],Y[6]=ee[6],Y[7]=ee[7],Y[8]=ee[8]),Y},A.determinant=E,A.trace=T,A.sub=L,A.add=function w(Y,ee,g){return Y[0]=ee[0]+g[0],Y[1]=ee[1]+g[1],Y[2]=ee[2]+g[2],Y[3]=ee[3]+g[3],Y[4]=ee[4]+g[4],Y[5]=ee[5]+g[5],Y[6]=ee[6]+g[6],Y[7]=ee[7]+g[7],Y[8]=ee[8]+g[8],Y},A.mul=function Q(Y,ee,g){const _e=ee[0],xe=ee[1],le=ee[2],Ae=ee[3],Be=ee[4],Ce=ee[5],Re=ee[6],ke=ee[7],we=ee[8],Oe=g[0],Se=g[1],Ve=g[2],Ne=g[3],K=g[4],ne=g[5],be=g[6],Te=g[7],ie=g[8];return Y[0]=Oe*_e+Se*Ae+Ve*Re,Y[1]=Oe*xe+Se*Be+Ve*ke,Y[2]=Oe*le+Se*Ce+Ve*we,Y[3]=Ne*_e+K*Ae+ne*Re,Y[4]=Ne*xe+K*Be+ne*ke,Y[5]=Ne*le+K*Ce+ne*we,Y[6]=be*_e+Te*Ae+ie*Re,Y[7]=be*xe+Te*Be+ie*ke,Y[8]=be*le+Te*Ce+ie*we,Y},A.subScalar=function G(Y,ee,g){return Y[0]=ee[0]-g,Y[1]=ee[1]-g,Y[2]=ee[2]-g,Y[3]=ee[3]-g,Y[4]=ee[4]-g,Y[5]=ee[5]-g,Y[6]=ee[6]-g,Y[7]=ee[7]-g,Y[8]=ee[8]-g,Y},A.addScalar=function V(Y,ee,g){return Y[0]=ee[0]+g,Y[1]=ee[1]+g,Y[2]=ee[2]+g,Y[3]=ee[3]+g,Y[4]=ee[4]+g,Y[5]=ee[5]+g,Y[6]=ee[6]+g,Y[7]=ee[7]+g,Y[8]=ee[8]+g,Y},A.mulScalar=U;const N=Math.PI/3,k=y();A.symmetricEigenvalues=function H(Y,ee){const g=ee[1]*ee[1]+ee[2]*ee[2]+ee[5]*ee[5];if(0===g)Y[0]=ee[0],Y[1]=ee[4],Y[2]=ee[8];else{const _e=T(ee)/3,xe=ee[0]-_e,le=ee[4]-_e,Ae=ee[8]-_e,Ce=Math.sqrt((xe*xe+le*le+Ae*Ae+2*g)/6);U(k,A.Identity,_e),L(k,ee,k),U(k,k,1/Ce);const Re=E(k)/2,ke=Re<=-1?N:Re>=1?0:Math.acos(Re)/3;Y[0]=_e+2*Ce*Math.cos(ke),Y[2]=_e+2*Ce*Math.cos(ke+2*N),Y[1]=3*_e-Y[0]-Y[2]}return Y};const $=[.1,0,0],J=[.1,0,0],W=[.1,0,0],te=[.1,0,0],de=[.1,0,0],ye=[.1,0,0];A.eigenvector=function j(Y,ee,g){r.e.set($,ee[0]-g,ee[1],ee[2]),r.e.set(J,ee[1],ee[4]-g,ee[5]),r.e.set(W,ee[2],ee[5],ee[8]-g),r.e.cross(te,$,J),r.e.cross(de,$,W),r.e.cross(ye,J,W);const _e=r.e.dot(te,te),xe=r.e.dot(de,de),le=r.e.dot(ye,ye);let Ae=_e,Be=0;return xe>Ae&&(Ae=xe,Be=1),le>Ae&&(Be=2),0===Be?r.e.scale(Y,te,1/Math.sqrt(_e)):1===Be?r.e.scale(Y,de,1/Math.sqrt(xe)):r.e.scale(Y,ye,1/Math.sqrt(le)),Y},A.directionTransform=function Z(Y,ee){return _(Y,ee),R(Y,Y),D(Y,Y),Y},A.Identity=c(),A.innerProduct=function q(Y,ee){return Y[0]*ee[0]+Y[1]*ee[1]+Y[2]*ee[2]+Y[3]*ee[3]+Y[4]*ee[4]+Y[5]*ee[5]+Y[6]*ee[6]+Y[7]*ee[7]+Y[8]*ee[8]}}(t||(t={}))},6639:(tn,Ue,n)=>{"use strict";n.d(Ue,{$:()=>t});var e=n(2028),o=n(2086),r=n(4490);function t(){return t.zero()}!function(A){function y(){const K=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];return K[0]=0,K}function c(){const K=y();return K[0]=1,K[1]=0,K[2]=0,K[3]=0,K[4]=0,K[5]=1,K[6]=0,K[7]=0,K[8]=0,K[9]=0,K[10]=1,K[11]=0,K[12]=0,K[13]=0,K[14]=0,K[15]=1,K}function i(K){return K[0]=1,K[1]=0,K[2]=0,K[3]=0,K[4]=0,K[5]=1,K[6]=0,K[7]=0,K[8]=0,K[9]=0,K[10]=1,K[11]=0,K[12]=0,K[13]=0,K[14]=0,K[15]=1,K}function v(K){for(let ne=0;ne<16;ne++)K[ne]=0;return K}A.zero=y,A.identity=c,A.setIdentity=i,A.setZero=v,A.ofRows=function O(K){const ne=y();for(let be=0;be<4;be++){const Te=K[be];for(let ie=0;ie<4;ie++)ne[4*ie+be]=Te[ie]}return ne};const b=c();function I(K,ne,be){for(let Te=0;Te<16;Te++)if(Math.abs(K[Te]-ne[Te])>be)return!1;return!0}function l(K,ne,be,Te){K[4*be+ne]=Te}function C(K,ne){return K[0]=ne[0],K[1]=ne[1],K[2]=ne[2],K[3]=ne[3],K[4]=ne[4],K[5]=ne[5],K[6]=ne[6],K[7]=ne[7],K[8]=ne[8],K[9]=ne[9],K[10]=ne[10],K[11]=ne[11],K[12]=ne[12],K[13]=ne[13],K[14]=ne[14],K[15]=ne[15],K}function D(K,ne){const be=ne[0]+ne[5]+ne[10];let Te=0;return be>0?(Te=2*Math.sqrt(be+1),K[3]=.25*Te,K[0]=(ne[6]-ne[9])/Te,K[1]=(ne[8]-ne[2])/Te,K[2]=(ne[1]-ne[4])/Te):ne[0]>ne[5]&&ne[0]>ne[10]?(Te=2*Math.sqrt(1+ne[0]-ne[5]-ne[10]),K[3]=(ne[6]-ne[9])/Te,K[0]=.25*Te,K[1]=(ne[1]+ne[4])/Te,K[2]=(ne[8]+ne[2])/Te):ne[5]>ne[10]?(Te=2*Math.sqrt(1+ne[5]-ne[0]-ne[10]),K[3]=(ne[8]-ne[2])/Te,K[0]=(ne[1]+ne[4])/Te,K[1]=.25*Te,K[2]=(ne[6]+ne[9])/Te):(Te=2*Math.sqrt(1+ne[10]-ne[0]-ne[5]),K[3]=(ne[1]-ne[4])/Te,K[0]=(ne[8]+ne[2])/Te,K[1]=(ne[6]+ne[9])/Te,K[2]=.25*Te),K}function p(K,ne){const be=ne[0],Te=ne[1],ie=ne[2],ue=ne[3],re=ne[4],ve=ne[5],ce=ne[6],se=ne[7],ae=ne[8],ge=ne[9],Ie=ne[10],Le=ne[11],nt=ne[12],je=ne[13],Lt=ne[14],Je=ne[15],en=be*ve-Te*re,Bt=be*ce-ie*re,pn=be*se-ue*re,$e=Te*ce-ie*ve,mt=Te*se-ue*ve,_t=ie*se-ue*ce,Me=ae*je-ge*nt,Ke=ae*Lt-Ie*nt,ut=ae*Je-Le*nt,Kt=ge*Lt-Ie*je,sn=ge*Je-Le*je,gt=Ie*Je-Le*Lt;let yt=en*gt-Bt*sn+pn*Kt+$e*ut-mt*Ke+_t*Me;return!!yt&&(yt=1/yt,K[0]=(ve*gt-ce*sn+se*Kt)*yt,K[1]=(ie*sn-Te*gt-ue*Kt)*yt,K[2]=(je*_t-Lt*mt+Je*$e)*yt,K[3]=(Ie*mt-ge*_t-Le*$e)*yt,K[4]=(ce*ut-re*gt-se*Ke)*yt,K[5]=(be*gt-ie*ut+ue*Ke)*yt,K[6]=(Lt*pn-nt*_t-Je*Bt)*yt,K[7]=(ae*_t-Ie*pn+Le*Bt)*yt,K[8]=(re*sn-ve*ut+se*Me)*yt,K[9]=(Te*ut-be*sn-ue*Me)*yt,K[10]=(nt*mt-je*pn+Je*en)*yt,K[11]=(ge*pn-ae*mt-Le*en)*yt,K[12]=(ve*Ke-re*Kt-ce*Me)*yt,K[13]=(be*Kt-Te*Ke+ie*Me)*yt,K[14]=(je*Bt-nt*$e-Lt*en)*yt,K[15]=(ae*$e-ge*Bt+Ie*en)*yt,!0)}function T(K,ne,be){const Te=ne[0],ie=ne[1],ue=ne[2],re=ne[3],ve=ne[4],ce=ne[5],se=ne[6],ae=ne[7],ge=ne[8],Ie=ne[9],Le=ne[10],nt=ne[11],je=ne[12],Lt=ne[13],Je=ne[14],en=ne[15];let Bt=be[0],pn=be[1],$e=be[2],mt=be[3];return K[0]=Bt*Te+pn*ve+$e*ge+mt*je,K[1]=Bt*ie+pn*ce+$e*Ie+mt*Lt,K[2]=Bt*ue+pn*se+$e*Le+mt*Je,K[3]=Bt*re+pn*ae+$e*nt+mt*en,Bt=be[4],pn=be[5],$e=be[6],mt=be[7],K[4]=Bt*Te+pn*ve+$e*ge+mt*je,K[5]=Bt*ie+pn*ce+$e*Ie+mt*Lt,K[6]=Bt*ue+pn*se+$e*Le+mt*Je,K[7]=Bt*re+pn*ae+$e*nt+mt*en,Bt=be[8],pn=be[9],$e=be[10],mt=be[11],K[8]=Bt*Te+pn*ve+$e*ge+mt*je,K[9]=Bt*ie+pn*ce+$e*Ie+mt*Lt,K[10]=Bt*ue+pn*se+$e*Le+mt*Je,K[11]=Bt*re+pn*ae+$e*nt+mt*en,Bt=be[12],pn=be[13],$e=be[14],mt=be[15],K[12]=Bt*Te+pn*ve+$e*ge+mt*je,K[13]=Bt*ie+pn*ce+$e*Ie+mt*Lt,K[14]=Bt*ue+pn*se+$e*Le+mt*Je,K[15]=Bt*re+pn*ae+$e*nt+mt*en,K}function k(K,ne,be){let Te=be[0],ie=be[1],ue=be[2],re=Math.sqrt(Te*Te+ie*ie+ue*ue);if(Math.abs(re)"u"?e.p:ne)},A.hasNaN=function M(K){for(let ne=0;ne<16;ne++)if(isNaN(K[ne]))return!0;return!1},A.areEqual=I,A.setValue=l,A.getValue=function m(K,ne,be){return K[4*be+ne]},A.toArray=function u(K,ne,be){return ne[be+0]=K[0],ne[be+1]=K[1],ne[be+2]=K[2],ne[be+3]=K[3],ne[be+4]=K[4],ne[be+5]=K[5],ne[be+6]=K[6],ne[be+7]=K[7],ne[be+8]=K[8],ne[be+9]=K[9],ne[be+10]=K[10],ne[be+11]=K[11],ne[be+12]=K[12],ne[be+13]=K[13],ne[be+14]=K[14],ne[be+15]=K[15],ne},A.fromArray=function d(K,ne,be){return K[0]=ne[be+0],K[1]=ne[be+1],K[2]=ne[be+2],K[3]=ne[be+3],K[4]=ne[be+4],K[5]=ne[be+5],K[6]=ne[be+6],K[7]=ne[be+7],K[8]=ne[be+8],K[9]=ne[be+9],K[10]=ne[be+10],K[11]=ne[be+11],K[12]=ne[be+12],K[13]=ne[be+13],K[14]=ne[be+14],K[15]=ne[be+15],K},A.fromBasis=function s(K,ne,be,Te){return v(K),l(K,0,0,ne[0]),l(K,1,0,ne[1]),l(K,2,0,ne[2]),l(K,0,1,be[0]),l(K,1,1,be[1]),l(K,2,1,be[2]),l(K,0,2,Te[0]),l(K,1,2,Te[1]),l(K,2,2,Te[2]),l(K,3,3,1),K},A.copy=C,A.clone=function h(K){return C(y(),K)},A.getTranslation=function a(K,ne){return K[0]=ne[12],K[1]=ne[13],K[2]=ne[14],K},A.getScaling=function S(K,ne){const be=ne[0],Te=ne[1],ie=ne[2],ue=ne[4],re=ne[5],ve=ne[6],ce=ne[8],se=ne[9],ae=ne[10];return K[0]=Math.sqrt(be*be+Te*Te+ie*ie),K[1]=Math.sqrt(ue*ue+re*re+ve*ve),K[2]=Math.sqrt(ce*ce+se*se+ae*ae),K},A.getRotation=D,A.extractRotation=function R(K,ne){const be=1/Math.sqrt(ne[0]*ne[0]+ne[1]*ne[1]+ne[2]*ne[2]),Te=1/Math.sqrt(ne[4]*ne[4]+ne[5]*ne[5]+ne[6]*ne[6]),ie=1/Math.sqrt(ne[8]*ne[8]+ne[9]*ne[9]+ne[10]*ne[10]);return K[0]=ne[0]*be,K[1]=ne[1]*be,K[2]=ne[2]*be,K[3]=0,K[4]=ne[4]*Te,K[5]=ne[5]*Te,K[6]=ne[6]*Te,K[7]=0,K[8]=ne[8]*ie,K[9]=ne[9]*ie,K[10]=ne[10]*ie,K[11]=0,K[12]=0,K[13]=0,K[14]=0,K[15]=1,K},A.transpose=function f(K,ne){if(K===ne){const be=ne[1],Te=ne[2],ie=ne[3],ue=ne[6],re=ne[7],ve=ne[11];K[1]=ne[4],K[2]=ne[8],K[3]=ne[12],K[4]=be,K[6]=ne[9],K[7]=ne[13],K[8]=Te,K[9]=ue,K[11]=ne[14],K[12]=ie,K[13]=re,K[14]=ve}else K[0]=ne[0],K[1]=ne[4],K[2]=ne[8],K[3]=ne[12],K[4]=ne[1],K[5]=ne[5],K[6]=ne[9],K[7]=ne[13],K[8]=ne[2],K[9]=ne[6],K[10]=ne[10],K[11]=ne[14],K[12]=ne[3],K[13]=ne[7],K[14]=ne[11],K[15]=ne[15];return K},A.tryInvert=p,A.invert=function E(K,ne){return p(K,ne)||console.warn("non-invertible matrix.",ne),K},A.mul=T,A.mulOffset=function L(K,ne,be,Te,ie,ue){const re=ne[0+ie],ve=ne[1+ie],ce=ne[2+ie],se=ne[3+ie],ae=ne[4+ie],ge=ne[5+ie],Ie=ne[6+ie],Le=ne[7+ie],nt=ne[8+ie],je=ne[9+ie],Lt=ne[10+ie],Je=ne[11+ie],en=ne[12+ie],Bt=ne[13+ie],pn=ne[14+ie],$e=ne[15+ie];let mt=be[0+ue],_t=be[1+ue],Me=be[2+ue],Ke=be[3+ue];return K[0+Te]=mt*re+_t*ae+Me*nt+Ke*en,K[1+Te]=mt*ve+_t*ge+Me*je+Ke*Bt,K[2+Te]=mt*ce+_t*Ie+Me*Lt+Ke*pn,K[3+Te]=mt*se+_t*Le+Me*Je+Ke*$e,mt=be[4+ue],_t=be[5+ue],Me=be[6+ue],Ke=be[7+ue],K[4+Te]=mt*re+_t*ae+Me*nt+Ke*en,K[5+Te]=mt*ve+_t*ge+Me*je+Ke*Bt,K[6+Te]=mt*ce+_t*Ie+Me*Lt+Ke*pn,K[7+Te]=mt*se+_t*Le+Me*Je+Ke*$e,mt=be[8+ue],_t=be[9+ue],Me=be[10+ue],Ke=be[11+ue],K[8+Te]=mt*re+_t*ae+Me*nt+Ke*en,K[9+Te]=mt*ve+_t*ge+Me*je+Ke*Bt,K[10+Te]=mt*ce+_t*Ie+Me*Lt+Ke*pn,K[11+Te]=mt*se+_t*Le+Me*Je+Ke*$e,mt=be[12+ue],_t=be[13+ue],Me=be[14+ue],Ke=be[15+ue],K[12+Te]=mt*re+_t*ae+Me*nt+Ke*en,K[13+Te]=mt*ve+_t*ge+Me*je+Ke*Bt,K[14+Te]=mt*ce+_t*Ie+Me*Lt+Ke*pn,K[15+Te]=mt*se+_t*Le+Me*Je+Ke*$e,K},A.mul3=function w(K,ne,be,Te){return T(K,T(K,ne,be),Te)},A.translate=function Q(K,ne,be){const Te=be[0],ie=be[1],ue=be[2];let re,ve,ce,se,ae,ge,Ie,Le,nt,je,Lt,Je;return ne===K?(K[12]=ne[0]*Te+ne[4]*ie+ne[8]*ue+ne[12],K[13]=ne[1]*Te+ne[5]*ie+ne[9]*ue+ne[13],K[14]=ne[2]*Te+ne[6]*ie+ne[10]*ue+ne[14],K[15]=ne[3]*Te+ne[7]*ie+ne[11]*ue+ne[15]):(re=ne[0],ve=ne[1],ce=ne[2],se=ne[3],ae=ne[4],ge=ne[5],Ie=ne[6],Le=ne[7],nt=ne[8],je=ne[9],Lt=ne[10],Je=ne[11],K[0]=re,K[1]=ve,K[2]=ce,K[3]=se,K[4]=ae,K[5]=ge,K[6]=Ie,K[7]=Le,K[8]=nt,K[9]=je,K[10]=Lt,K[11]=Je,K[12]=re*Te+ae*ie+nt*ue+ne[12],K[13]=ve*Te+ge*ie+je*ue+ne[13],K[14]=ce*Te+Ie*ie+Lt*ue+ne[14],K[15]=se*Te+Le*ie+Je*ue+ne[15]),K},A.fromTranslation=function G(K,ne){return K[0]=1,K[1]=0,K[2]=0,K[3]=0,K[4]=0,K[5]=1,K[6]=0,K[7]=0,K[8]=0,K[9]=0,K[10]=1,K[11]=0,K[12]=ne[0],K[13]=ne[1],K[14]=ne[2],K[15]=1,K},A.setTranslation=function V(K,ne){return K[12]=ne[0],K[13]=ne[1],K[14]=ne[2],K},A.setAxes=function U(K,ne,be,Te){return K[0]=be[0],K[4]=be[1],K[8]=be[2],K[1]=Te[0],K[5]=Te[1],K[9]=Te[2],K[2]=ne[0],K[6]=ne[1],K[10]=ne[2],K},A.rotate=function N(K,ne,be,Te){let ie=Te[0],ue=Te[1],re=Te[2],ve=Math.sqrt(ie*ie+ue*ue+re*re);if(Math.abs(ve)0&&(Le=1/Math.sqrt(Le),ae*=Le,ge*=Le,Ie*=Le);let nt=ce*Ie-se*ge,je=se*ae-ve*Ie,Lt=ve*ge-ce*ae;return Le=nt*nt+je*je+Lt*Lt,Le>0&&(Le=1/Math.sqrt(Le),nt*=Le,je*=Le,Lt*=Le),K[0]=nt,K[1]=je,K[2]=Lt,K[3]=0,K[4]=ge*Lt-Ie*je,K[5]=Ie*nt-ae*Lt,K[6]=ae*je-ge*nt,K[7]=0,K[8]=ae,K[9]=ge,K[10]=Ie,K[11]=0,K[12]=ie,K[13]=ue,K[14]=re,K[15]=1,K},A.fromPermutation=function we(K,ne){v(K);for(let be=0;be<4;be++)l(K,be,ne[be],1);return K},A.getMaxScaleOnAxis=function Oe(K){return Math.sqrt(Math.max(K[0]*K[0]+K[1]*K[1]+K[2]*K[2],K[4]*K[4]+K[5]*K[5]+K[6]*K[6],K[8]*K[8]+K[9]*K[9]+K[10]*K[10]))};const Se=[1,0,0],Ve=[0,1,0],Ne=[0,0,1];A.rotX90=k(y(),(0,r.pu)(90),Se),A.rotX180=k(y(),(0,r.pu)(180),Se),A.rotY90=k(y(),(0,r.pu)(90),Ve),A.rotY180=k(y(),(0,r.pu)(180),Ve),A.rotY270=k(y(),(0,r.pu)(270),Ve),A.rotZ90=k(y(),(0,r.pu)(90),Ne),A.rotZ180=k(y(),(0,r.pu)(180),Ne),A.rotXY90=T(y(),A.rotX90,A.rotY90),A.rotZY90=T(y(),A.rotZ90,A.rotY90),A.rotZYZ90=T(y(),A.rotZY90,A.rotZ90),A.rotZ90X180=T(y(),A.rotZ90,A.rotX180),A.rotY90Z180=T(y(),A.rotY90,A.rotZ180),A.id=c()}(t||(t={}))},5126:(tn,Ue,n)=>{"use strict";n.d(Ue,{k:()=>t});var e=n(2086),o=n(2028),r=n(1372);function t(){return t.zero()}!function(A){function y(){const j=[.1,0,0,0];return j[0]=0,j}function c(){const j=y();return j[3]=1,j}function b(j,Z,q){q*=.5;const Y=Math.sin(q);return j[0]=Y*Z[0],j[1]=Y*Z[1],j[2]=Y*Z[2],j[3]=Math.cos(q),j}function d(j,Z,q,Y){const ee=Z[0],g=Z[1],_e=Z[2],xe=Z[3];let Re,ke,we,Oe,Se,le=q[0],Ae=q[1],Be=q[2],Ce=q[3];return ke=ee*le+g*Ae+_e*Be+xe*Ce,ke<0&&(ke=-ke,le=-le,Ae=-Ae,Be=-Be,Ce=-Ce),1-ke>1e-6?(Re=Math.acos(ke),we=Math.sin(Re),Oe=Math.sin((1-Y)*Re)/we,Se=Math.sin(Y*Re)/we):(Oe=1-Y,Se=Y),j[0]=Oe*ee+Se*le,j[1]=Oe*g+Se*Ae,j[2]=Oe*_e+Se*Be,j[3]=Oe*xe+Se*Ce,j}function a(j,Z){const q=Z[0]+Z[4]+Z[8];let Y;if(q>0)Y=Math.sqrt(q+1),j[3]=.5*Y,Y=.5/Y,j[0]=(Z[5]-Z[7])*Y,j[1]=(Z[6]-Z[2])*Y,j[2]=(Z[1]-Z[3])*Y;else{let ee=0;Z[4]>Z[0]&&(ee=1),Z[8]>Z[3*ee+ee]&&(ee=2);const g=(ee+1)%3,_e=(ee+2)%3;Y=Math.sqrt(Z[3*ee+ee]-Z[3*g+g]-Z[3*_e+_e]+1),j[ee]=.5*Y,Y=.5/Y,j[3]=(Z[3*g+_e]-Z[3*_e+g])*Y,j[g]=(Z[3*g+ee]+Z[3*ee+g])*Y,j[_e]=(Z[3*_e+ee]+Z[3*ee+_e])*Y}return j}A.zero=y,A.identity=c,A.setIdentity=function i(j){j[0]=0,j[1]=0,j[2]=0,j[3]=1},A.hasNaN=function v(j){return isNaN(j[0])||isNaN(j[1])||isNaN(j[2])||isNaN(j[3])},A.create=function O(j,Z,q,Y){const ee=c();return ee[0]=j,ee[1]=Z,ee[2]=q,ee[3]=Y,ee},A.setAxisAngle=b,A.getAxisAngle=function _(j,Z){const q=2*Math.acos(Z[3]),Y=Math.sin(q/2);return 0!==Y?(j[0]=Z[0]/Y,j[1]=Z[1]/Y,j[2]=Z[2]/Y):(j[0]=1,j[1]=0,j[2]=0),q},A.multiply=function M(j,Z,q){const Y=Z[0],ee=Z[1],g=Z[2],_e=Z[3],xe=q[0],le=q[1],Ae=q[2],Be=q[3];return j[0]=Y*Be+_e*xe+ee*Ae-g*le,j[1]=ee*Be+_e*le+g*xe-Y*Ae,j[2]=g*Be+_e*Ae+Y*le-ee*xe,j[3]=_e*Be-Y*xe-ee*le-g*Ae,j},A.rotateX=function I(j,Z,q){q*=.5;const Y=Z[0],ee=Z[1],g=Z[2],_e=Z[3],xe=Math.sin(q),le=Math.cos(q);return j[0]=Y*le+_e*xe,j[1]=ee*le+g*xe,j[2]=g*le-ee*xe,j[3]=_e*le-Y*xe,j},A.rotateY=function l(j,Z,q){q*=.5;const Y=Z[0],ee=Z[1],g=Z[2],_e=Z[3],xe=Math.sin(q),le=Math.cos(q);return j[0]=Y*le-g*xe,j[1]=ee*le+_e*xe,j[2]=g*le+Y*xe,j[3]=_e*le-ee*xe,j},A.rotateZ=function m(j,Z,q){q*=.5;const Y=Z[0],ee=Z[1],g=Z[2],_e=Z[3],xe=Math.sin(q),le=Math.cos(q);return j[0]=Y*le+ee*xe,j[1]=ee*le-Y*xe,j[2]=g*le+_e*xe,j[3]=_e*le-g*xe,j},A.calculateW=function u(j,Z){const q=Z[0],Y=Z[1],ee=Z[2];return j[0]=q,j[1]=Y,j[2]=ee,j[3]=Math.sqrt(Math.abs(1-q*q-Y*Y-ee*ee)),j},A.slerp=d,A.invert=function s(j,Z){const q=Z[0],Y=Z[1],ee=Z[2],g=Z[3],_e=q*q+Y*Y+ee*ee+g*g,xe=_e?1/_e:0;return j[0]=-q*xe,j[1]=-Y*xe,j[2]=-ee*xe,j[3]=g*xe,j},A.conjugate=function C(j,Z){return j[0]=-Z[0],j[1]=-Z[1],j[2]=-Z[2],j[3]=Z[3],j},A.dot=function h(j,Z){return j[0]*Z[0]+j[1]*Z[1]+j[2]*Z[2]+j[3]*Z[3]},A.fromMat3=a,A.fromEuler=function S(j,Z,q){const[Y,ee,g]=Z,_e=Math.cos(Y/2),xe=Math.cos(ee/2),le=Math.cos(g/2),Ae=Math.sin(Y/2),Be=Math.sin(ee/2),Ce=Math.sin(g/2);switch(q){case"XYZ":j[0]=Ae*xe*le+_e*Be*Ce,j[1]=_e*Be*le-Ae*xe*Ce,j[2]=_e*xe*Ce+Ae*Be*le,j[3]=_e*xe*le-Ae*Be*Ce;break;case"YXZ":j[0]=Ae*xe*le+_e*Be*Ce,j[1]=_e*Be*le-Ae*xe*Ce,j[2]=_e*xe*Ce-Ae*Be*le,j[3]=_e*xe*le+Ae*Be*Ce;break;case"ZXY":j[0]=Ae*xe*le-_e*Be*Ce,j[1]=_e*Be*le+Ae*xe*Ce,j[2]=_e*xe*Ce+Ae*Be*le,j[3]=_e*xe*le-Ae*Be*Ce;break;case"ZYX":j[0]=Ae*xe*le-_e*Be*Ce,j[1]=_e*Be*le+Ae*xe*Ce,j[2]=_e*xe*Ce-Ae*Be*le,j[3]=_e*xe*le+Ae*Be*Ce;break;case"YZX":j[0]=Ae*xe*le+_e*Be*Ce,j[1]=_e*Be*le+Ae*xe*Ce,j[2]=_e*xe*Ce-Ae*Be*le,j[3]=_e*xe*le-Ae*Be*Ce;break;case"XZY":j[0]=Ae*xe*le-_e*Be*Ce,j[1]=_e*Be*le-Ae*xe*Ce,j[2]=_e*xe*Ce+Ae*Be*le,j[3]=_e*xe*le+Ae*Be*Ce;break;default:(0,r.dr)(q)}return j};const D=[0,0,0];function V(j,Z){const q=Z[0],Y=Z[1],ee=Z[2],g=Z[3];let _e=q*q+Y*Y+ee*ee+g*g;return _e>0&&(_e=1/Math.sqrt(_e),j[0]=q*_e,j[1]=Y*_e,j[2]=ee*_e,j[3]=g*_e),j}A.fromUnitVec3=function R(j,Z,q){let Y=e.e.dot(Z,q)+1;return YMath.abs(Z[2])?e.e.set(D,-Z[1],Z[0],0):e.e.set(D,0,-Z[2],Z[1])):e.e.cross(D,Z,q),j[0]=D[0],j[1]=D[1],j[2]=D[2],j[3]=Y,V(j,j),j},A.clone=function f(j){const Z=y();return Z[0]=j[0],Z[1]=j[1],Z[2]=j[2],Z[3]=j[3],Z},A.toArray=function p(j,Z,q){return Z[q+0]=j[0],Z[q+1]=j[1],Z[q+2]=j[2],Z[q+3]=j[3],Z},A.fromArray=function E(j,Z,q){return j[0]=Z[q+0],j[1]=Z[q+1],j[2]=Z[q+2],j[3]=Z[q+3],j},A.copy=function T(j,Z){return j[0]=Z[0],j[1]=Z[1],j[2]=Z[2],j[3]=Z[3],j},A.set=function L(j,Z,q,Y,ee){return j[0]=Z,j[1]=q,j[2]=Y,j[3]=ee,j},A.exactEquals=function w(j,Z){return j[0]===Z[0]&&j[1]===Z[1]&&j[2]===Z[2]&&j[3]===Z[3]},A.equals=function Q(j,Z){const q=j[0],Y=j[1],ee=j[2],g=j[3],_e=Z[0],xe=Z[1],le=Z[2],Ae=Z[3];return Math.abs(q-_e)<=o.p*Math.max(1,Math.abs(q),Math.abs(_e))&&Math.abs(Y-xe)<=o.p*Math.max(1,Math.abs(Y),Math.abs(xe))&&Math.abs(ee-le)<=o.p*Math.max(1,Math.abs(ee),Math.abs(le))&&Math.abs(g-Ae)<=o.p*Math.max(1,Math.abs(g),Math.abs(Ae))},A.add=function G(j,Z,q){return j[0]=Z[0]+q[0],j[1]=Z[1]+q[1],j[2]=Z[2]+q[2],j[3]=Z[3]+q[3],j},A.normalize=V;const U=[0,0,0],N=[1,0,0],k=[0,1,0];A.rotationTo=function H(j,Z,q){const Y=e.e.dot(Z,q);return Y<-.999999?(e.e.cross(U,N,Z),e.e.magnitude(U)<1e-6&&e.e.cross(U,k,Z),e.e.normalize(U,U),b(j,U,Math.PI),j):Y>.999999?(j[0]=0,j[1]=0,j[2]=0,j[3]=1,j):(e.e.cross(U,Z,q),j[0]=U[0],j[1]=U[1],j[2]=U[2],j[3]=1+Y,V(j,j))};const $=y(),J=y();A.sqlerp=function W(j,Z,q,Y,ee,g){return d($,Z,ee,g),d(J,q,Y,g),d(j,$,J,2*g*(1-g)),j};const te=[0,0,0,0,0,0,0,0,0];A.setAxes=function de(j,Z,q,Y){return te[0]=q[0],te[3]=q[1],te[6]=q[2],te[1]=Y[0],te[4]=Y[1],te[7]=Y[2],te[2]=-Z[0],te[5]=-Z[1],te[8]=-Z[2],V(j,a(j,te))},A.toString=function ye(j,Z){return`[${j[0].toPrecision(Z)} ${j[1].toPrecision(Z)} ${j[2].toPrecision(Z)} ${j[3].toPrecision(Z)}]`},A.Identity=c()}(t||(t={}))},325:(tn,Ue,n)=>{"use strict";function e(){return e.zero()}n.d(Ue,{Z:()=>e}),function(o){function r(){const f=[.1,0];return f[0]=0,f}o.zero=r,o.clone=function t(f){const p=r();return p[0]=f[0],p[1]=f[1],p},o.create=function A(f,p){const E=r();return E[0]=f,E[1]=p,E},o.hasNaN=function y(f){return isNaN(f[0])||isNaN(f[1])},o.toArray=function c(f,p,E){return p[E+0]=f[0],p[E+1]=f[1],p},o.fromArray=function i(f,p,E){return f[0]=p[E+0],f[1]=p[E+1],f},o.copy=function v(f,p){return f[0]=p[0],f[1]=p[1],f},o.set=function O(f,p,E){return f[0]=p,f[1]=E,f},o.add=function b(f,p,E){return f[0]=p[0]+E[0],f[1]=p[1]+E[1],f},o.sub=function _(f,p,E){return f[0]=p[0]-E[0],f[1]=p[1]-E[1],f},o.mul=function M(f,p,E){return f[0]=p[0]*E[0],f[1]=p[1]*E[1],f},o.div=function I(f,p,E){return f[0]=p[0]/E[0],f[1]=p[1]/E[1],f},o.scale=function l(f,p,E){return f[0]=p[0]*E,f[1]=p[1]*E,f},o.round=function m(f,p){return f[0]=Math.round(p[0]),f[1]=Math.round(p[1]),f},o.ceil=function u(f,p){return f[0]=Math.ceil(p[0]),f[1]=Math.ceil(p[1]),f},o.floor=function d(f,p){return f[0]=Math.floor(p[0]),f[1]=Math.floor(p[1]),f},o.distance=function s(f,p){const E=p[0]-f[0],T=p[1]-f[1];return Math.sqrt(E*E+T*T)},o.squaredDistance=function C(f,p){const E=p[0]-f[0],T=p[1]-f[1];return E*E+T*T},o.magnitude=function h(f){const p=f[0],E=f[1];return Math.sqrt(p*p+E*E)},o.squaredMagnitude=function a(f){const p=f[0],E=f[1];return p*p+E*E},o.inverse=function S(f,p){return f[0]=1/p[0],f[1]=1/p[1],f},o.areEqual=function D(f,p){return f[0]===p[0]&&f[1]===p[1]},o.toString=function R(f,p){return`[${f[0].toPrecision(p)} ${f[1].toPrecision(p)}}]`}}(e||(e={}))},2086:(tn,Ue,n)=>{"use strict";n.d(Ue,{e:()=>A});var e=n(6639),o=n(127),r=n(2028);const t=isFinite;function A(){return A.zero()}!function(y){function c(){const Me=[.1,0,0];return Me[0]=0,Me}function m(Me,Ke,ut){const Kt=c();return Kt[0]=Me,Kt[1]=Ke,Kt[2]=ut,Kt}function s(Me,Ke){return Me[0]=Ke[0],Me[1]=Ke[1],Me[2]=Ke[2],Me}function C(Me,Ke,ut){return Me[0]=Ke[0]+ut[0],Me[1]=Ke[1]+ut[1],Me[2]=Ke[2]+ut[2],Me}function h(Me,Ke,ut){return Me[0]=Ke[0]-ut[0],Me[1]=Ke[1]-ut[1],Me[2]=Ke[2]-ut[2],Me}function D(Me,Ke,ut){return Me[0]=Ke[0]*ut,Me[1]=Ke[1]*ut,Me[2]=Ke[2]*ut,Me}function R(Me,Ke,ut,Kt){return Me[0]=Ke[0]+ut[0]*Kt,Me[1]=Ke[1]+ut[1]*Kt,Me[2]=Ke[2]+ut[2]*Kt,Me}function J(Me){const Ke=Me[0],ut=Me[1],Kt=Me[2];return Ke*Ke+ut*ut+Kt*Kt}function te(Me,Ke){return Me[0]=-Ke[0],Me[1]=-Ke[1],Me[2]=-Ke[2],Me}function ye(Me,Ke){const ut=Ke[0],Kt=Ke[1],sn=Ke[2];let gt=ut*ut+Kt*Kt+sn*sn;return gt>0&&(gt=1/Math.sqrt(gt),Me[0]=Ke[0]*gt,Me[1]=Ke[1]*gt,Me[2]=Ke[2]*gt),Me}function j(Me,Ke){return Me[0]*Ke[0]+Me[1]*Ke[1]+Me[2]*Ke[2]}function Z(Me,Ke,ut){const Kt=Ke[0],sn=Ke[1],gt=Ke[2],yt=ut[0],At=ut[1],Gt=ut[2];return Me[0]=sn*Gt-gt*At,Me[1]=gt*yt-Kt*Gt,Me[2]=Kt*At-sn*yt,Me}y.zero=c,y.clone=function i(Me){const Ke=c();return Ke[0]=Me[0],Ke[1]=Me[1],Ke[2]=Me[2],Ke},y.isFinite=function v(Me){return t(Me[0])&&t(Me[1])&&t(Me[2])},y.hasNaN=function O(Me){return isNaN(Me[0])||isNaN(Me[1])||isNaN(Me[2])},y.setNaN=function b(Me){return Me[0]=NaN,Me[1]=NaN,Me[2]=NaN,Me},y.fromObj=function _(Me){return m(Me.x,Me.y,Me.z)},y.toObj=function M(Me){return{x:Me[0],y:Me[1],z:Me[2]}},y.fromArray=function I(Me,Ke,ut){return Me[0]=Ke[ut+0],Me[1]=Ke[ut+1],Me[2]=Ke[ut+2],Me},y.toArray=function l(Me,Ke,ut){return Ke[ut+0]=Me[0],Ke[ut+1]=Me[1],Ke[ut+2]=Me[2],Ke},y.create=m,y.ofArray=function u(Me){const Ke=c();return Ke[0]=Me[0],Ke[1]=Me[1],Ke[2]=Me[2],Ke},y.set=function d(Me,Ke,ut,Kt){return Me[0]=Ke,Me[1]=ut,Me[2]=Kt,Me},y.copy=s,y.add=C,y.sub=h,y.mul=function a(Me,Ke,ut){return Me[0]=Ke[0]*ut[0],Me[1]=Ke[1]*ut[1],Me[2]=Ke[2]*ut[2],Me},y.div=function S(Me,Ke,ut){return Me[0]=Ke[0]/ut[0],Me[1]=Ke[1]/ut[1],Me[2]=Ke[2]/ut[2],Me},y.scale=D,y.scaleAndAdd=R,y.scaleAndSub=function f(Me,Ke,ut,Kt){return Me[0]=Ke[0]-ut[0]*Kt,Me[1]=Ke[1]-ut[1]*Kt,Me[2]=Ke[2]-ut[2]*Kt,Me},y.addScalar=function p(Me,Ke,ut){return Me[0]=Ke[0]+ut,Me[1]=Ke[1]+ut,Me[2]=Ke[2]+ut,Me},y.subScalar=function E(Me,Ke,ut){return Me[0]=Ke[0]-ut,Me[1]=Ke[1]-ut,Me[2]=Ke[2]-ut,Me},y.round=function T(Me,Ke){return Me[0]=Math.round(Ke[0]),Me[1]=Math.round(Ke[1]),Me[2]=Math.round(Ke[2]),Me},y.ceil=function L(Me,Ke){return Me[0]=Math.ceil(Ke[0]),Me[1]=Math.ceil(Ke[1]),Me[2]=Math.ceil(Ke[2]),Me},y.floor=function w(Me,Ke){return Me[0]=Math.floor(Ke[0]),Me[1]=Math.floor(Ke[1]),Me[2]=Math.floor(Ke[2]),Me},y.trunc=function Q(Me,Ke){return Me[0]=Math.trunc(Ke[0]),Me[1]=Math.trunc(Ke[1]),Me[2]=Math.trunc(Ke[2]),Me},y.abs=function G(Me,Ke){return Me[0]=Math.abs(Ke[0]),Me[1]=Math.abs(Ke[1]),Me[2]=Math.abs(Ke[2]),Me},y.min=function V(Me,Ke,ut){return Me[0]=Math.min(Ke[0],ut[0]),Me[1]=Math.min(Ke[1],ut[1]),Me[2]=Math.min(Ke[2],ut[2]),Me},y.max=function U(Me,Ke,ut){return Me[0]=Math.max(Ke[0],ut[0]),Me[1]=Math.max(Ke[1],ut[1]),Me[2]=Math.max(Ke[2],ut[2]),Me},y.clamp=function N(Me,Ke,ut,Kt){return Me[0]=Math.max(ut[0],Math.min(Kt[0],Ke[0])),Me[1]=Math.max(ut[1],Math.min(Kt[1],Ke[1])),Me[2]=Math.max(ut[2],Math.min(Kt[2],Ke[2])),Me},y.distance=function k(Me,Ke){const ut=Ke[0]-Me[0],Kt=Ke[1]-Me[1],sn=Ke[2]-Me[2];return Math.sqrt(ut*ut+Kt*Kt+sn*sn)},y.squaredDistance=function H(Me,Ke){const ut=Ke[0]-Me[0],Kt=Ke[1]-Me[1],sn=Ke[2]-Me[2];return ut*ut+Kt*Kt+sn*sn},y.magnitude=function $(Me){const Ke=Me[0],ut=Me[1],Kt=Me[2];return Math.sqrt(Ke*Ke+ut*ut+Kt*Kt)},y.squaredMagnitude=J,y.setMagnitude=function W(Me,Ke,ut){return D(Me,ye(Me,Ke),ut)},y.negate=te,y.inverse=function de(Me,Ke){return Me[0]=1/Ke[0],Me[1]=1/Ke[1],Me[2]=1/Ke[2],Me},y.normalize=ye,y.dot=j,y.cross=Z,y.lerp=function q(Me,Ke,ut,Kt){const sn=Ke[0],gt=Ke[1],yt=Ke[2];return Me[0]=sn+Kt*(ut[0]-sn),Me[1]=gt+Kt*(ut[1]-gt),Me[2]=yt+Kt*(ut[2]-yt),Me};const Y=c();function Se(Me,Ke){const ut=Math.sqrt(J(Me)*J(Ke));if(0===ut)return Math.PI/2;const Kt=j(Me,Ke)/ut;return Math.acos((0,o.qE)(Kt,-1,1))}y.slerp=function ee(Me,Ke,ut,Kt){const sn=(0,o.qE)(j(Ke,ut),-1,1),gt=Math.acos(sn)*Kt;return R(Y,ut,Ke,-sn),ye(Y,Y),C(Me,D(Me,Ke,Math.cos(gt)),D(Y,Y,Math.sin(gt)))},y.hermite=function g(Me,Ke,ut,Kt,sn,gt){const yt=gt*gt,At=yt*(2*gt-3)+1,Gt=yt*(gt-2)+gt,rn=yt*(gt-1),tt=yt*(3-2*gt);return Me[0]=Ke[0]*At+ut[0]*Gt+Kt[0]*rn+sn[0]*tt,Me[1]=Ke[1]*At+ut[1]*Gt+Kt[1]*rn+sn[1]*tt,Me[2]=Ke[2]*At+ut[2]*Gt+Kt[2]*rn+sn[2]*tt,Me},y.bezier=function _e(Me,Ke,ut,Kt,sn,gt){const yt=1-gt,At=yt*yt,Gt=gt*gt,rn=At*yt,tt=3*gt*At,Mt=3*Gt*yt,nn=Gt*gt;return Me[0]=Ke[0]*rn+ut[0]*tt+Kt[0]*Mt+sn[0]*nn,Me[1]=Ke[1]*rn+ut[1]*tt+Kt[1]*Mt+sn[1]*nn,Me[2]=Ke[2]*rn+ut[2]*tt+Kt[2]*Mt+sn[2]*nn,Me},y.quadraticBezier=function xe(Me,Ke,ut,Kt,sn){return Me[0]=(0,o.iD)(Ke[0],ut[0],Kt[0],sn),Me[1]=(0,o.iD)(Ke[1],ut[1],Kt[1],sn),Me[2]=(0,o.iD)(Ke[2],ut[2],Kt[2],sn),Me},y.spline=function le(Me,Ke,ut,Kt,sn,gt,yt){return Me[0]=(0,o.Y7)(Ke[0],ut[0],Kt[0],sn[0],gt,yt),Me[1]=(0,o.Y7)(Ke[1],ut[1],Kt[1],sn[1],gt,yt),Me[2]=(0,o.Y7)(Ke[2],ut[2],Kt[2],sn[2],gt,yt),Me},y.random=function Ae(Me,Ke){const ut=2*Math.random()*Math.PI,Kt=2*Math.random()-1,sn=Math.sqrt(1-Kt*Kt)*Ke;return Me[0]=Math.cos(ut)*sn,Me[1]=Math.sin(ut)*sn,Me[2]=Kt*Ke,Me},y.transformMat4=function Be(Me,Ke,ut){const Kt=Ke[0],sn=Ke[1],gt=Ke[2],yt=1/(ut[3]*Kt+ut[7]*sn+ut[11]*gt+ut[15]||1);return Me[0]=(ut[0]*Kt+ut[4]*sn+ut[8]*gt+ut[12])*yt,Me[1]=(ut[1]*Kt+ut[5]*sn+ut[9]*gt+ut[13])*yt,Me[2]=(ut[2]*Kt+ut[6]*sn+ut[10]*gt+ut[14])*yt,Me},y.transformDirection=function Ce(Me,Ke,ut){const Kt=Ke[0],sn=Ke[1],gt=Ke[2];return Me[0]=ut[0]*Kt+ut[4]*sn+ut[8]*gt,Me[1]=ut[1]*Kt+ut[5]*sn+ut[9]*gt,Me[2]=ut[2]*Kt+ut[6]*sn+ut[10]*gt,ye(Me,Me)},y.transformMat4Offset=function Re(Me,Ke,ut,Kt,sn,gt){const yt=Ke[0+sn],At=Ke[1+sn],Gt=Ke[2+sn],rn=1/(ut[3+gt]*yt+ut[7+gt]*At+ut[11+gt]*Gt+ut[15+gt]||1);return Me[0+Kt]=(ut[0+gt]*yt+ut[4+gt]*At+ut[8+gt]*Gt+ut[12+gt])*rn,Me[1+Kt]=(ut[1+gt]*yt+ut[5+gt]*At+ut[9+gt]*Gt+ut[13+gt])*rn,Me[2+Kt]=(ut[2+gt]*yt+ut[6+gt]*At+ut[10+gt]*Gt+ut[14+gt])*rn,Me},y.transformDirectionOffset=function ke(Me,Ke,ut,Kt,sn,gt){const yt=Ke[0+sn],At=Ke[1+sn],Gt=Ke[2+sn];Me[0+Kt]=ut[0+gt]*yt+ut[4+gt]*At+ut[8+gt]*Gt,Me[1+Kt]=ut[1+gt]*yt+ut[5+gt]*At+ut[9+gt]*Gt,Me[2+Kt]=ut[2+gt]*yt+ut[6+gt]*At+ut[10+gt]*Gt;const rn=Math.hypot(Me[0+Kt],Me[1+Kt],Me[2+Kt]);return rn>0&&(Me[0+Kt]/=rn,Me[1+Kt]/=rn,Me[2+Kt]/=rn),Me},y.transformMat3=function we(Me,Ke,ut){const Kt=Ke[0],sn=Ke[1],gt=Ke[2];return Me[0]=Kt*ut[0]+sn*ut[3]+gt*ut[6],Me[1]=Kt*ut[1]+sn*ut[4]+gt*ut[7],Me[2]=Kt*ut[2]+sn*ut[5]+gt*ut[8],Me},y.transformQuat=function Oe(Me,Ke,ut){const Kt=Ke[0],sn=Ke[1],gt=Ke[2],yt=ut[0],At=ut[1],Gt=ut[2],rn=ut[3],tt=rn*Kt+At*gt-Gt*sn,Mt=rn*sn+Gt*Kt-yt*gt,nn=rn*gt+yt*sn-At*Kt,bn=-yt*Kt-At*sn-Gt*gt;return Me[0]=tt*rn+bn*-yt+Mt*-Gt-nn*-At,Me[1]=Mt*rn+bn*-At+nn*-yt-tt*-Gt,Me[2]=nn*rn+bn*-Gt+tt*-At-Mt*-yt,Me},y.angle=Se;const Ve=c(),Ne=c(),K=c(),ne=c(),be=c(),Te=c(),ie=c();y.dihedralAngle=function ue(Me,Ke,ut,Kt){h(Ve,Me,Ke),h(Ne,ut,Ke),h(K,Ke,ut),h(ne,Kt,ut),Z(be,Ve,Ne),Z(Te,K,ne);const sn=Se(be,Te);return Z(ie,be,Te),j(Ne,ie)>0?sn:-sn},y.directionFromSpherical=function re(Me,Ke,ut,Kt){return y.set(Me,Kt*Math.cos(ut)*Math.sin(Ke),Kt*Math.sin(ut)*Math.sin(Ke),Kt*Math.cos(Ke))},y.exactEquals=function ve(Me,Ke){return Me[0]===Ke[0]&&Me[1]===Ke[1]&&Me[2]===Ke[2]},y.equals=function ce(Me,Ke){const ut=Me[0],Kt=Me[1],sn=Me[2],gt=Ke[0],yt=Ke[1],At=Ke[2];return Math.abs(ut-gt)<=r.p*Math.max(1,Math.abs(ut),Math.abs(gt))&&Math.abs(Kt-yt)<=r.p*Math.max(1,Math.abs(Kt),Math.abs(yt))&&Math.abs(sn-At)<=r.p*Math.max(1,Math.abs(sn),Math.abs(At))};const se=c();y.makeRotation=function ae(Me,Ke,ut){const Kt=Se(Ke,ut);if(Math.abs(Kt)<1e-4)return e.$.setIdentity(Me);if(Math.abs(Kt-Math.PI)0?s(Me,Ke):te(Me,s(Me,Ke)),Me};const pn=c(),$e=c();y.triangleNormal=function mt(Me,Ke,ut,Kt){return h(pn,ut,Ke),h($e,Kt,Ke),ye(Me,Z(Me,pn,$e))},y.toString=function _t(Me,Ke){return`[${Me[0].toPrecision(Ke)} ${Me[1].toPrecision(Ke)} ${Me[2].toPrecision(Ke)}]`},y.origin=m(0,0,0),y.unit=m(1,1,1),y.negUnit=m(-1,-1,-1),y.unitX=m(1,0,0),y.unitY=m(0,1,0),y.unitZ=m(0,0,1),y.negUnitX=m(-1,0,0),y.negUnitY=m(0,-1,0),y.negUnitZ=m(0,0,-1)}(A||(A={}))},8599:(tn,Ue,n)=>{"use strict";n.d(Ue,{Z:()=>o});var e=n(2028);function o(){return o.zero()}!function(r){function t(){const w=[.1,0,0,0];return w[0]=0,w}function c(w,Q){return w[0]=Q.center[0],w[1]=Q.center[1],w[2]=Q.center[2],w[3]=Q.radius,w}r.zero=t,r.clone=function A(w){const Q=t();return Q[0]=w[0],Q[1]=w[1],Q[2]=w[2],Q[3]=w[3],Q},r.create=function y(w,Q,G,V){const U=t();return U[0]=w,U[1]=Q,U[2]=G,U[3]=V,U},r.fromSphere=c,r.ofSphere=function i(w){return c(t(),w)},r.hasNaN=function v(w){return isNaN(w[0])||isNaN(w[1])||isNaN(w[2])||isNaN(w[3])},r.toArray=function O(w,Q,G){return Q[G+0]=w[0],Q[G+1]=w[1],Q[G+2]=w[2],Q[G+3]=w[3],Q},r.fromArray=function b(w,Q,G){return w[0]=Q[G+0],w[1]=Q[G+1],w[2]=Q[G+2],w[3]=Q[G+3],w},r.toVec3Array=function _(w,Q,G){Q[G+0]=w[0],Q[G+1]=w[1],Q[G+2]=w[2]},r.fromVec3Array=function M(w,Q,G){return w[0]=Q[G+0],w[1]=Q[G+1],w[2]=Q[G+2],w[3]=0,w},r.copy=function I(w,Q){return w[0]=Q[0],w[1]=Q[1],w[2]=Q[2],w[3]=Q[3],w},r.set=function l(w,Q,G,V,U){return w[0]=Q,w[1]=G,w[2]=V,w[3]=U,w},r.add=function m(w,Q,G){return w[0]=Q[0]+G[0],w[1]=Q[1]+G[1],w[2]=Q[2]+G[2],w[3]=Q[3]+G[3],w},r.distance=function u(w,Q){const G=Q[0]-w[0],V=Q[1]-w[1],U=Q[2]-w[2],N=Q[3]-w[3];return Math.sqrt(G*G+V*V+U*U+N*N)},r.scale=function d(w,Q,G){return w[0]=Q[0]*G,w[1]=Q[1]*G,w[2]=Q[2]*G,w[4]=Q[4]*G,w},r.round=function s(w,Q){return w[0]=Math.round(Q[0]),w[1]=Math.round(Q[1]),w[2]=Math.round(Q[2]),w[3]=Math.round(Q[3]),w},r.ceil=function C(w,Q){return w[0]=Math.ceil(Q[0]),w[1]=Math.ceil(Q[1]),w[2]=Math.ceil(Q[2]),w[3]=Math.ceil(Q[3]),w},r.floor=function h(w,Q){return w[0]=Math.floor(Q[0]),w[1]=Math.floor(Q[1]),w[2]=Math.floor(Q[2]),w[3]=Math.floor(Q[3]),w},r.squaredDistance=function a(w,Q){const G=Q[0]-w[0],V=Q[1]-w[1],U=Q[2]-w[2],N=Q[3]-w[3];return G*G+V*V+U*U+N*N},r.norm=function S(w){const Q=w[0],G=w[1],V=w[2],U=w[3];return Math.sqrt(Q*Q+G*G+V*V+U*U)},r.squaredNorm=function D(w){const Q=w[0],G=w[1],V=w[2],U=w[3];return Q*Q+G*G+V*V+U*U},r.transformMat4=function R(w,Q,G){const V=Q[0],U=Q[1],N=Q[2],k=Q[3];return w[0]=G[0]*V+G[4]*U+G[8]*N+G[12]*k,w[1]=G[1]*V+G[5]*U+G[9]*N+G[13]*k,w[2]=G[2]*V+G[6]*U+G[10]*N+G[14]*k,w[3]=G[3]*V+G[7]*U+G[11]*N+G[15]*k,w},r.dot=function f(w,Q){return w[0]*Q[0]+w[1]*Q[1]+w[2]*Q[2]+w[3]*Q[3]},r.inverse=function p(w,Q){return w[0]=1/Q[0],w[1]=1/Q[1],w[2]=1/Q[2],w[3]=1/Q[3],w},r.exactEquals=function E(w,Q){return w[0]===Q[0]&&w[1]===Q[1]&&w[2]===Q[2]&&w[3]===Q[3]},r.equals=function T(w,Q){const G=w[0],V=w[1],U=w[2],N=w[3],k=Q[0],H=Q[1],$=Q[2],J=Q[3];return Math.abs(G-k)<=e.p*Math.max(1,Math.abs(G),Math.abs(k))&&Math.abs(V-H)<=e.p*Math.max(1,Math.abs(V),Math.abs(H))&&Math.abs(U-$)<=e.p*Math.max(1,Math.abs(U),Math.abs($))&&Math.abs(N-J)<=e.p*Math.max(1,Math.abs(N),Math.abs(J))},r.toString=function L(w,Q){return`[${w[0].toPrecision(Q)} ${w[1].toPrecision(Q)} ${w[2].toPrecision(Q)} ${w[3].toPrecision(Q)}]`}}(o||(o={}))},1778:(tn,Ue,n)=>{"use strict";var e,o;n.d(Ue,{u:()=>e}),(o=e||(e={})).create=function r(I,l,m=Float32Array){const u=I*l;return{data:new m(u),size:u,cols:I,rows:l}},o.get=function t(I,l,m){return I.data[I.rows*m+l]},o.set=function A(I,l,m,u){return I.data[I.rows*m+l]=u,I},o.add=function y(I,l,m,u){return I.data[I.rows*m+l]+=u,I},o.makeZero=function c(I){return I.data.fill(0),I},o.clone=function i(I){return{data:I.data.slice(),size:I.size,cols:I.cols,rows:I.rows}},o.fromArray=function v(I,l,m){return{data:I,size:l*m,cols:l,rows:m}},o.transpose=function O(I,l){if(I.cols!==l.rows||I.rows!==l.cols)throw new Error("transpose: matrix dimensions incompatible");if(I.data===l.data)throw new Error("transpose: matrices share memory");const m=l.rows,u=l.cols,d=l.data,s=I.data;for(let C=0,h=0,a=0;C{"use strict";n.d(Ue,{c:()=>b});var e=n(1778),o=n(2086);function r(_,M,I,l){l=_[M],_[M]=_[I],_[I]=l}function t(_,M){return(_=Math.abs(_))>(M=Math.abs(M))?(M/=_,_*Math.sqrt(1+M*M)):M>0?(_/=M,M*Math.sqrt(1+_*_)):0}var b,v=n(5384),O=n(2028);!function(_){function I(d){if(3===d.length)return v.n.create(o.e.fromArray((0,o.e)(),d,0),o.e.create(1,0,0),o.e.create(0,1,0),o.e.create(0,0,1));const s=e.u.fromArray(d,3,d.length/3),C=s.rows,h=C/3,a=e.u.create(3,3),S=e.u.create(1,3),D=e.u.create(3,3),R=e.u.create(3,3),f=e.u.meanRows(s),p=e.u.subRows(e.u.clone(s),f),E=e.u.transpose(e.u.create(C,3),p);e.u.multiplyABt(a,E,E),function i(_,M,I,l){let m=0,u=0;const d=_.rows,s=_.cols;let C=d,h=s;C>16?Z:-Z,_[a*M+D]=j;for(R=0;R<2;R++)for(S=0;S0?W>C&&(C=W):W>h&&(h=W),o.e.projectPointOnVector(f,o.e.fromArray(f,d,H),T.dirB,E);const te=o.e.dot(T.dirB,o.e.normalize(p,o.e.sub(p,f,E))),de=o.e.distance(f,E);te>0?de>a&&(a=de):de>S&&(S=de),o.e.projectPointOnVector(f,o.e.fromArray(f,d,H),T.dirC,E);const ye=o.e.dot(T.dirC,o.e.normalize(p,o.e.sub(p,f,E))),j=o.e.distance(f,E);ye>0?j>D&&(D=j):j>R&&(R=j)}const L=o.e.setMagnitude((0,o.e)(),T.dirA,(C+h)/2),w=o.e.setMagnitude((0,o.e)(),T.dirB,(a+S)/2),Q=o.e.setMagnitude((0,o.e)(),T.dirC,(D+R)/2),G=o.e.isFinite(L),V=o.e.isFinite(w),U=o.e.isFinite(Q),N=(0,o.e)(),k=function(H,$,J){o.e.copy(m,E),G&&o.e.scaleAndAdd(m,m,T.dirA,H),V&&o.e.scaleAndAdd(m,m,T.dirB,$),U&&o.e.scaleAndAdd(m,m,T.dirC,J),o.e.add(N,N,m)};return k(C,a,D),k(C,a,-R),k(C,-S,-R),k(C,-S,D),k(-h,-S,-R),k(-h,-S,D),k(-h,a,D),k(-h,a,-R),o.e.scale(N,N,1/8),v.n.create(N,L,w,Q)}_.calculateBoxAxes=u}(b||(b={}))},4490:(tn,Ue,n)=>{"use strict";n.d(Ue,{H:()=>t,N7:()=>c,TY:()=>y,fC:()=>e,k4:()=>i,pu:()=>r,r6:()=>A});const e=Math.PI/2,o=Math.PI/180;function r(v){return v*o}function t(v){return v/o}function A(v){return 0!==v&&!(v&v-1)}function y(...v){let O=0,b=0;for(let _=0,M=v.length;_b&&(O=I,b=l)}return O}function c(v,O){return v*O}function i(v){let O=0,b=0;const _=[0,-1],M=2*v+1,I=M/2,l=[];for(let m=Math.pow(M,2);m>0;--m)-I0&&O===1-b)&&([_[0],_[1]]=[-_[1],_[0]]),O+=_[0],b+=_[1];return l}},2921:(tn,Ue,n)=>{"use strict";n.d(Ue,{X:()=>ae});var e=n(467),o=n(6651),r=n(3559),t=n(4632),A=n(1692),y=n(3543),c=n(7754),i=n(5384),v=n(4369),O=n(1490),b=n(2008),_=n(2434),M=n(2789),I=n(2629),m=n(6724),u=n(8382);function d($e,mt){return mt?1===mt.length?(0,u.m1)(mt.charCodeAt(0),$e):2===mt.length?(0,u.m1)(mt.charCodeAt(0),(0,u.m1)(mt.charCodeAt(1),$e)):`${$e} ${mt}`:$e}function s($e,mt,_t,Me){if($e.has(mt)){const Ke=$e.get(mt);Ke.has(_t)||Ke.set(_t,Me)}else{const Ke=new Map;$e.set(mt,Ke),Ke.set(_t,Me)}}function C($e){throw new Error(`Missing entity entry for entity id '${$e}'.`)}const a=m.or.EmptyResidueKey();class S{getEntityFromChain(mt){return this.map.chain_index_entity_index[mt]}findEntity(mt){const _t=this.map.label_asym_id.get(mt);return void 0!==_t?_t:-1}findChainLabel(mt){const _t=this.entityIndex(mt.label_entity_id);if(_t<0||!this.map.entity_index_label_asym_id.has(_t))return-1;const Me=this.map.entity_index_label_asym_id.get(_t);return Me&&Me.has(mt.label_asym_id)?Me.get(mt.label_asym_id):-1}findChainAuth(mt){if(!this.map.auth_asym_id_auth_seq_id.has(mt.auth_asym_id))return-1;const _t=this.map.auth_asym_id_auth_seq_id.get(mt.auth_asym_id);return _t.has(mt.auth_seq_id)?_t.get(mt.auth_seq_id):-1}findResidue(mt,_t,Me,Ke){let ut;1===arguments.length?ut=mt:(a.label_entity_id=mt,a.label_asym_id=_t,a.auth_seq_id=Me,a.pdbx_PDB_ins_code=Ke,ut=a);const Kt=this.findChainLabel(ut);if(Kt<0)return-1;const sn=this.map.chain_index_auth_seq_id.get(Kt),gt=d(ut.auth_seq_id,ut.pdbx_PDB_ins_code||"");return sn.has(gt)?sn.get(gt):-1}findResidueLabel(mt){const _t=this.findChainLabel(mt);if(_t<0)return-1;const Me=this.map.chain_index_label_seq_id.get(_t),Ke=d(mt.label_seq_id,mt.pdbx_PDB_ins_code||"");return Me.has(Ke)?Me.get(Ke):-1}findResidueAuth(mt){const _t=this.findChainAuth(mt);if(_t<0)return-1;const Me=this.map.chain_index_auth_seq_id.get(_t),Ke=d(mt.auth_seq_id,mt.pdbx_PDB_ins_code||"");return Me.has(Ke)?Me.get(Ke):-1}findResidueInsertion(mt){const _t=this.findChainLabel(mt);if(_t<0)return-1;const Me=this.map.chain_index_label_seq_id.get(_t),Ke=d(mt.label_seq_id,mt.pdbx_PDB_ins_code||"");if(Me.has(Ke))return Me.get(Ke);const ut=y.SortedArray.findPredecessorIndex(this.map.label_seq_id,mt.label_seq_id),Kt=m.vE.chainStartResidueIndex(this.map.segments,_t);if(ut=sn?sn:ut}findAtom(mt){const _t=this.findResidue(mt);return _t<0?-1:typeof mt.label_alt_id>"u"?D(this.residueOffsets[_t],this.residueOffsets[_t+1],this.map.label_atom_id,mt.label_atom_id):f(this.residueOffsets[_t],this.residueOffsets[_t+1],this.map.label_atom_id,this.map.label_alt_id,mt.label_atom_id,mt.label_alt_id)}findAtomAuth(mt){const _t=this.findResidueAuth(mt);return _t<0?-1:typeof mt.label_alt_id>"u"?D(this.residueOffsets[_t],this.residueOffsets[_t+1],this.map.auth_atom_id,mt.auth_atom_id):f(this.residueOffsets[_t],this.residueOffsets[_t+1],this.map.auth_atom_id,this.map.label_alt_id,mt.auth_atom_id,mt.label_alt_id)}findAtomOnResidue(mt,_t,Me){return typeof Me>"u"?D(this.residueOffsets[mt],this.residueOffsets[mt+1],this.map.label_atom_id,_t):f(this.residueOffsets[mt],this.residueOffsets[mt+1],this.map.label_atom_id,this.map.label_alt_id,_t,Me)}findAtomsOnResidue(mt,_t){return function R($e,mt,_t,Me){for(let Ke=$e;Ke=gt[yt+1]&&(yt+=1,At=0),Kt[Gt]=++At;Ke.label_seq_id=o.VP.ofIntArray(Kt)}return o.XI.columnToArray(Ke,"label_seq_id",Int32Array),o.XI.columnToArray(Ke,"auth_seq_id",Int32Array),{atoms:Me,residues:Ke,chains:ut,atomSourceIndex:mt}}($e,mt,Kt),gt=function V($e,mt){const _t=new Map;if(!T.K4.is(mt))return _t;const{molstar_atom_site_operator_mapping:Me}=(0,c.Pd)(O.mQ,mt.data.frame);if(0===Me._rowCount)return _t;const Ke=new Map,ut=new Map;for(let At=0;At-1,findChainKey:()=>-1,getEntityFromChain:()=>-1,count:0,entity_id:o.VP.Undefined(0,o.VP.Schema.str),asym_id:o.VP.Undefined(0,o.VP.Schema.str),seq_id_begin:o.VP.Undefined(0,o.VP.Schema.int),seq_id_end:o.VP.Undefined(0,o.VP.Schema.int),chainElementSegments:y.hT.create([]),polymerRanges:k.m.ofSortedRanges([]),gapRanges:k.m.ofSortedRanges([])};var $=function($e){return $e.Empty={isDefined:!1,spheres:H,gaussians:H},$e}($||{});function J($e,mt,_t){if($e.has(mt))return $e.get(mt);const Me=_t.index++;return $e.set(mt,Me),Me}function W($e,mt){if($e.has(mt))return $e.get(mt);const _t=new Map;return $e.set(mt,_t),_t}function de($e){throw new Error(`Missing entity entry for entity id '${$e}'.`)}function ye($e,mt){const{entity_id:_t,asym_id:Me,seq_id_begin:Ke,seq_id_end:ut,count:Kt,chainElementSegments:sn}=$e,gt=new Map,yt=new Map,At={index:0},Gt=new Int32Array(Kt),rn=new Int32Array(Kt),tt=new Int32Array(sn.count);for(let Dn=0;Dn{const gt=Me(Kt);if(gt<0)return-1;const yt=mt.get(gt);return yt.has(sn)?yt.get(sn):-1},findSequenceKey:(Kt,sn,gt)=>{const yt=Me(Kt);if(yt<0)return-1;const At=mt.get(yt);if(void 0===At)return-1;const Gt=At.get(sn);if(void 0===Gt)return-1;const rn=_t.get(Gt),{elementIndices:tt,seqRanges:Mt}=rn,nn=k.m.firstIntersectionIndex(Mt,y.CD.ofSingleton(gt));return-1!==nn?tt[nn]:-1}}}(mt,yt,gt);return{chainKey:Gt,entityKey:rn,findSequenceKey:nn,findChainKey:Mt,getEntityFromChain:Dn=>tt[Dn]}}var j=n(9909);function Z($e,mt){const _t=[],Me=[],Ke=y.hT.transientSegments($e.chainElementSegments,y.IX.ofBounds(0,$e.count)),{seq_id_begin:ut,seq_id_end:Kt}=$e;for(;Ke.hasNext;){const{start:sn,end:gt}=Ke.move();let yt=-1,At=-1;for(let Gt=sn;Gt1&&(_t.push(yt,Gt-1),Me.push(Gt-1,Gt),yt=Gt),Gt===gt-1&&_t.push(yt,Gt),At=rn}}return{polymerRanges:k.m.ofSortedRanges(_t),gapRanges:k.m.ofSortedRanges(Me)}}var q=n(2449);const Y={hierarchy:$.Empty,conformation:void 0};function xe($e,mt,_t){const Me=[0];for(let Ke=1,ut=$e.rowCount;Ke`${Ke}|${ut}|${Kt}`,Me=$e.pdbx_unobs_or_zero_occ_residues;for(let Ke=0,ut=Me._rowCount;Kemt.has(_t(Ke,ut,Kt)),get:(Ke,ut,Kt)=>mt.get(_t(Ke,ut,Kt)),size:mt.size}}function ne($e){const mt=new Map;if($e.chem_comp._rowCount>0){const{id:_t}=$e.chem_comp;for(let Me=0,Ke=_t.rowCount;Me{mt.set(Me,(0,_.bM)(Me))});return mt}function be($e){const mt=new Map;if($e.pdbx_chem_comp_identifier._rowCount>0){const{comp_id:_t,type:Me,identifier:Ke}=$e.pdbx_chem_comp_identifier;for(let ut=0,Kt=_t.rowCount;ut0){const{id:_t,type:Me}=$e.chem_comp;for(let Ke=0,ut=_t.rowCount;Ke{!mt.has(Ke)&&_t.has(Ke)&&mt.set(Ke,Me)})}return mt}const Te=(0,n(1094).E)($e=>{const mt=new Set,{label_comp_id:_t,auth_comp_id:Me}=$e.atom_site,Ke=_t.isDefined?_t:Me;for(let ut=0,Kt=Ke.rowCount;ut0?yield function Bt($e,mt,_t,Me){return pn.apply(this,arguments)}(_t,$e,Me,mt):yield function Lt($e,mt,_t,Me){return Je.apply(this,arguments)}(_t,$e,Me,mt);for(let ut=0;ut0?Ke[Ke.length-1]:void 0);Ke.push(Gt),sn=gt}}return Ke})).apply(this,arguments)}function en($e,mt){const _t=new Map,Me=$e._rowCount;let Ke=0;for(;Ke{"use strict";n.d(Ue,{e:()=>c,z:()=>i});var e=n(7357),o=n(6651);o.VP.Schema.Str();const A={...e.r.chem_comp,type:o.VP.Schema.Aliased(o.VP.Schema.str)};var y=n(1049);const c={entry:e.r.entry,struct:e.r.struct,struct_asym:e.r.struct_asym,ihm_model_list:e.r.ihm_model_list,ihm_model_group:e.r.ihm_model_group,ihm_model_group_link:e.r.ihm_model_group_link,entity:e.r.entity,entity_poly:e.r.entity_poly,entity_poly_seq:e.r.entity_poly_seq,pdbx_entity_branch:e.r.pdbx_entity_branch,chem_comp:A,pdbx_chem_comp_identifier:e.r.pdbx_chem_comp_identifier,atom_site:e.r.atom_site,ihm_sphere_obj_site:e.r.ihm_sphere_obj_site,ihm_gaussian_obj_site:e.r.ihm_gaussian_obj_site,pdbx_unobs_or_zero_occ_residues:e.r.pdbx_unobs_or_zero_occ_residues,pdbx_molecule:e.r.pdbx_molecule};function i(v,O=!1){const b=Object.create(null);for(const _ of Object.keys(c))b[_]=_ in v?v[_]:o.XI.ofUndefinedColumns(c[_],0);return O&&(b.atom_site=(0,y.W)(b.atom_site)),b}},1049:(tn,Ue,n)=>{"use strict";n.d(Ue,{O:()=>o,W:()=>A});var e=n(6651);function o(y,c){const{ihm_model_group:i,ihm_model_group_link:v}=c,O=e.XI.pickRow(v,b=>v.model_id.value(b)===y);if(O){const b=e.XI.pickRow(i,_=>i.id.value(_)===O.group_id);if(b)return b.name}return""}function r(y){for(let c=0,i=y.rowCount;c{"use strict";n.d(Ue,{N:()=>_});var e=n(6651),o=n(2434),r=n(9986),t=n(2449),A=n(442);const y=[new Set(["CA"]),new Set(["C"]),new Set(["N"])],c=[new Set(["P","O3'","O3*"]),new Set(["C4'","C4*"]),new Set(["O2'","O2*","F2'","F2*"])],i=[new Set(["P","O3'","O3*"]),new Set(["C3'","C3*"]),new Set(["O2'","O2*","F2'","F2*"])],v=new Set(["FMN","NCN","FNS","FMA","ATP","ADP","AMP","GTP","GDP","GMP","LIG"]),O=function(){const M=new Map;return[{id:"HIS",name:"HISTIDINE",type:"l-peptide linking"},{id:"ARG",name:"ARGININE",type:"l-peptide linking"},{id:"LYS",name:"LYSINE",type:"l-peptide linking"},{id:"ILE",name:"ISOLEUCINE",type:"l-peptide linking"},{id:"PHE",name:"PHENYLALANINE",type:"l-peptide linking"},{id:"LEU",name:"LEUCINE",type:"l-peptide linking"},{id:"TRP",name:"TRYPTOPHAN",type:"l-peptide linking"},{id:"ALA",name:"ALANINE",type:"l-peptide linking"},{id:"MET",name:"METHIONINE",type:"l-peptide linking"},{id:"CYS",name:"CYSTEINE",type:"l-peptide linking"},{id:"ASN",name:"ASPARAGINE",type:"l-peptide linking"},{id:"VAL",name:"VALINE",type:"l-peptide linking"},{id:"GLY",name:"GLYCINE",type:"peptide linking"},{id:"SER",name:"SERINE",type:"l-peptide linking"},{id:"GLN",name:"GLUTAMINE",type:"l-peptide linking"},{id:"TYR",name:"TYROSINE",type:"l-peptide linking"},{id:"ASP",name:"ASPARTIC ACID",type:"l-peptide linking"},{id:"GLU",name:"GLUTAMIC ACID",type:"l-peptide linking"},{id:"THR",name:"THREONINE",type:"l-peptide linking"},{id:"PRO",name:"PROLINE",type:"l-peptide linking"},{id:"SEC",name:"SELENOCYSTEINE",type:"l-peptide linking"},{id:"PYL",name:"PYRROLYSINE",type:"l-peptide linking"},{id:"MSE",name:"SELENOMETHIONINE",type:"l-peptide linking"},{id:"SEP",name:"PHOSPHOSERINE",type:"l-peptide linking"},{id:"TPO",name:"PHOSPHOTHREONINE",type:"l-peptide linking"},{id:"PTR",name:"O-PHOSPHOTYROSINE",type:"l-peptide linking"},{id:"PCA",name:"PYROGLUTAMIC ACID",type:"l-peptide linking"},{id:"A",name:"ADENOSINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"C",name:"CYTIDINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"T",name:"THYMIDINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"G",name:"GUANOSINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"I",name:"INOSINIC ACID",type:"rna linking"},{id:"U",name:"URIDINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"DA",name:"2'-DEOXYADENOSINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DC",name:"2'-DEOXYCYTIDINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DT",name:"THYMIDINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DG",name:"2'-DEOXYGUANOSINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DI",name:"2'-DEOXYINOSINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DU",name:"2'-DEOXYURIDINE-5'-MONOPHOSPHATE",type:"dna linking"}].forEach(l=>M.set(l.id,l)),M}(),b=function(){const M=new Map;return[{id:"ZN2",name:"ZINC ION",type:"ion"},{id:"SOD",name:"SODIUM ION",type:"ion"},{id:"CES",name:"CESIUM ION",type:"ion"},{id:"CLA",name:"CHLORIDE ION",type:"ion"},{id:"CAL",name:"CALCIUM ION",type:"ion"},{id:"POT",name:"POTASSIUM ION",type:"ion"}].forEach(l=>M.set(l.id,l)),M}();class _{set(I){this.comps.set(I.id,I),this.ids.push(I.id),this.names.push(I.name),this.types.push(I.type),this.mon_nstd_flags.push(o.px.has(I.id)?"y":"n")}getAtomIds(I){const l=new Set,m=this.seqId.value(I);for(;Ithis.namesMap.set(l[0],l[1]))}constructor(I,l){this.seqId=I,this.atomId=l,this.namesMap=new Map,this.comps=new Map,this.ids=[],this.names=[],this.types=[],this.mon_nstd_flags=[]}}},3573:(tn,Ue,n)=>{"use strict";n.d(Ue,{V:()=>t});var e=n(2434),o=n(6651),r=n(2449);class t{constructor(){this.count=0,this.ids=[],this.types=[],this.descriptions=[],this.compoundsMap=new Map,this.namesMap=new Map,this.heteroMap=new Map,this.chainMap=new Map}set(y,c){this.count+=1,this.ids.push(`${this.count}`),this.types.push(y),this.descriptions.push([c])}getEntityId(y,c,i,v){return 2===c?(void 0===this.waterId&&(this.set("water",v?.customName||"Water"),this.waterId=`${this.count}`),this.waterId):(0,e.z7)(c)?this.compoundsMap.has(i)?this.compoundsMap.get(i):(this.chainMap.has(i)||(this.set("polymer",v?.customName||`Polymer ${this.chainMap.size+1}`),this.chainMap.set(i,`${this.count}`)),this.chainMap.get(i)):(this.heteroMap.has(y)||(this.set("non-polymer",v?.customName||this.namesMap.get(y)||y),this.heteroMap.set(y,`${this.count}`)),this.heteroMap.get(y))}getEntityTable(){return o.XI.ofPartialColumns(r.e.entity,{id:o.VP.ofStringArray(this.ids),type:o.VP.ofStringAliasArray(this.types),pdbx_description:o.VP.ofStringListArray(this.descriptions)},this.count)}setCompounds(y){for(let c=0,i=y.length;cthis.namesMap.set(c[0],c[1]))}}},9207:(tn,Ue,n)=>{"use strict";n.d(Ue,{q:()=>o});class e{constructor(){this.map=new Map,this.applicable=new Map}add(t,A,y){this.map.set(t,A),y&&this.applicable.set(t,y)}remove(t){this.map.delete(t),this.applicable.delete(t)}get(t){return this.map.get(t)}isApplicable(t){if(!this.map.has(t.sourceData.kind))return!1;const A=this.applicable.get(t.sourceData.kind);return!A||A(t)}}var o;(o||(o={})).create=function t(A,y){const{name:c}=A,i=new e;return{descriptor:A,formatRegistry:i,isApplicable:v=>i.isApplicable(v),get(v){const O=y?.asDynamic?v._dynamicPropertyData:v._staticPropertyData;if(O[c])return O[c];if(v.customProperties.has(A))return;const b=i.get(v.sourceData.kind);return b?(O[c]=b(v),v.customProperties.add(A),O[c]):void 0},set(v,O){y?.asDynamic?v._dynamicPropertyData[c]=O:v._staticPropertyData[c]=O},delete(v){y?.asDynamic?delete v._dynamicPropertyData[c]:delete v._staticPropertyData[c]}}}},2524:(tn,Ue,n)=>{"use strict";n.d(Ue,{K4:()=>S,OQ:()=>D,YG:()=>f});var S,w,R,e=n(467),o=n(4632),r=n(4824),t=n(5165),A=n(2921),y=n(9651),c=n(6710),i=n(6651),v=n(8593),O=n(9344),b=n(8737),_=n(9136),M=n(4811),I=n(2449),l=n(3573),m=n(3671);function D(w,Q){const G=S.fromFrame(w,void 0,void 0,Q),V=(0,I.z)(G.data.db,!0);return r.YZ.create("Create mmCIF Model",U=>(0,A.X)(V,G,U))}function f(w){const Q=R.fromFrame(w);return r.YZ.create("Create CCD Models",G=>function p(w,Q,G){return E.apply(this,arguments)}(Q.data.db,R.fromFrame(w),G))}function E(){return E=(0,e.A)(function*(w,Q,G){const V=yield T(w,Q,{coordinateType:"ideal",cartn_x:"pdbx_model_Cartn_x_ideal",cartn_y:"pdbx_model_Cartn_y_ideal",cartn_z:"pdbx_model_Cartn_z_ideal"},G),U=yield T(w,Q,{coordinateType:"model",cartn_x:"model_Cartn_x",cartn_y:"model_Cartn_y",cartn_z:"model_Cartn_z"},G),N=[];V&&N.push(V),U&&N.push(U);for(let k=0,H=N.length;k0||(g[g.length]=ce);const _e=g.length,xe=i.VP.ofConst("A",_e,i.VP.Schema.str),le=i.VP.ofConst(1,_e,i.VP.Schema.int),Ae=i.VP.ofConst("1",_e,i.VP.Schema.str),Be=i.VP.ofConst(1,_e,i.VP.Schema.float),Ce=i.VP.ofConst(1,_e,i.VP.Schema.int),Re=i.VP.view(ye,g),ke=i.VP.view(Z,g),we=i.VP.view(N[$],g),Oe=i.VP.view(N[J],g),Se=i.VP.view(N[W],g),Ve=i.VP.view(q,g),Ne=i.VP.view(Y,g),K=i.VP.view(j,g),ne=i.XI.ofPartialColumns(I.e.atom_site,{auth_asym_id:xe,auth_atom_id:Re,auth_comp_id:ke,auth_seq_id:le,Cartn_x:we,Cartn_y:Oe,Cartn_z:Se,id:Ve,label_asym_id:xe,label_atom_id:Re,label_comp_id:ke,label_seq_id:le,label_entity_id:Ae,occupancy:Be,type_symbol:Ne,pdbx_PDB_model_num:Ce,pdbx_formal_charge:K},_e),be=new l.V;be.setNames([[de,`${te} (${H})`]]),be.getEntityId(de,0,"A");const Te=new m.N(le,Y);Te.setNames([[de,`${te} (${H})`]]),Te.add(de,0);const ie=(0,I.z)({entity:be.getEntityTable(),chem_comp:Te.getChemCompTable(),atom_site:ne}),ue=yield(0,A.X)(ie,Q,V);if(!ue.representative)return;const re=ue.representative,ve=O.X.getEntriesFromChemCompBond(k);return O.X.Provider.set(re,{data:k,entries:ve}),R.CoordinateType.set(re,H),ue.representative}),L.apply(this,arguments)}y.i.Provider.formatRegistry.add("mmCIF",function u(w){if(S.is(w.sourceData))return y.i.fromData(w.sourceData.data.db)}),c.v.Provider.formatRegistry.add("mmCIF",function d(w){if(!S.is(w.sourceData))return;const{struct_conf:Q,struct_sheet_range:G}=w.sourceData.data.db;return c.v.fromStruct(Q,G,w.atomicHierarchy)}),v._.Provider.formatRegistry.add("mmCIF",function s(w){if(!S.is(w.sourceData))return;const{atom_site_anisotrop:Q}=w.sourceData.data.db;return{data:i.XI.ofColumns(v._.Schema,Q),elementToAnsiotrop:v._.getElementToAnsiotrop(w.atomicConformation.atomId,Q.id)}},function C(w){return!!S.is(w.sourceData)&&w.sourceData.data.db.atom_site_anisotrop.U.isDefined}),O.X.Provider.formatRegistry.add("mmCIF",function h(w){if(!S.is(w.sourceData))return;const{chem_comp_bond:Q}=w.sourceData.data.db;return 0!==Q._rowCount?{data:Q,entries:O.X.getEntriesFromChemCompBond(Q)}:void 0}),b.A.Provider.formatRegistry.add("mmCIF",function a(w){if(!S.is(w.sourceData))return;const{struct_conn:Q}=w.sourceData.data.db;if(0===Q._rowCount)return;const G=b.A.getEntriesFromStructConn(Q,w);return{data:Q,byAtomIndex:b.A.getAtomIndexFromEntries(G),entries:G}}),M.T.Provider.formatRegistry.add("mmCIF",M.T.fromMmCif,M.T.hasData),(w=S||(S={})).is=function Q(V){return"mmCIF"===V?.kind},w.fromFrame=function G(V,U,N,k){return U||(U=t.f$.schema.mmCIF(V)),{kind:"mmCIF",name:U._name,data:{db:U,file:k,frame:V,source:N}}},function(w){const Q="__CcdCoordinateType__";w.CoordinateType={get:U=>U._staticPropertyData[Q],set:(U,N)=>U._staticPropertyData[Q]=N},w.is=function G(U){return"CCD"===U?.kind},w.fromFrame=function V(U,N){return N||(N=t.f$.schema.CCD(U)),{kind:"CCD",name:N._name,data:{db:N,frame:U}}}}(R||(R={}))},8593:(tn,Ue,n)=>{"use strict";n.d(Ue,{_:()=>y});var y,c,e=n(7357),o=n(7421),r=n(9207),t=n(2524);(c=y||(y={})).Schema={U:e.r.atom_site_anisotrop.U,U_esd:e.r.atom_site_anisotrop.U_esd},c.Descriptor={name:"atom_site_anisotrop",cifExport:{prefix:"",categories:[{name:"atom_site_anisotrop",instance:O=>c.Provider.get(O.firstModel)&&t.K4.is(O.firstModel.sourceData)?o.c.Category.ofTable(O.firstModel.sourceData.data.db.atom_site_anisotrop):o.c.Category.Empty}]}},c.Provider=r.q.create(c.Descriptor),c.getElementToAnsiotrop=function i(O,b){const _=new Int32Array(O.rowCount);_.fill(-1);for(let I=0,l=O.rowCount;I{"use strict";n.d(Ue,{X:()=>A});var A,e=n(7357),o=n(7421),r=n(6651),t=n(9207);!function(y){y.Descriptor={name:"chem_comp_bond",cifExport:{prefix:"",categories:[{name:"chem_comp_bond",instance(O){const b=y.Provider.get(O.firstModel);if(!b)return o.c.Category.Empty;const _=b.data;if(!_)return o.c.Category.Empty;const M=O.structures[0].uniqueResidueNames,{comp_id:I,_rowCount:l}=_,m=[];for(let u=0;uO.properties.chemicalComponentMap.has(b.comp_id.value(_)))},y.getEntriesFromChemCompBond=function i(O){const b=new Map;function _(h){if(b.has(h))return b.get(h);const a=new v(h);return b.set(h,a),a}const{comp_id:M,atom_id_1:I,atom_id_2:l,value_order:m,pdbx_aromatic_flag:u,_rowCount:d,pdbx_ordinal:s}=O;let C=_(M.value(0));for(let h=0;h{"use strict";n.d(Ue,{z:()=>t});var t,A,e=n(4506),o=n(9207);function r(A,y,c,i){const v=new e.O.EdgeBuilder(i,A,y),O=new Int32Array(v.slotCount),b=new Array(v.slotCount),_=new Array(v.slotCount),M=new Int8Array(v.slotCount),I=new Array(v.slotCount),l=new Array(v.slotCount);for(let m=0,u=v.edgeCount;m{"use strict";n.d(Ue,{A:()=>y});var y,e=n(6651),o=n(3543),r=n(7421),t=n(5373),A=n(9207);!function(c){function v({units:_},M){for(let I=0,l=_.length;I=0)return!0;return!1}c.Descriptor={name:"struct_conn",cifExport:{prefix:"",categories:[{name:"struct_conn",instance(_){const M=c.Provider.get(_.firstModel);if(!M||0===M.entries.length)return r.c.Category.Empty;const I=_.structures[0],l=[];for(const m of M.entries)v(I,m.partnerA.atomIndex)&&v(I,m.partnerB.atomIndex)&&(l[l.length]=m.rowIndex);return r.c.Category.ofTable(M.data,l)}}]}},c.Provider=A.q.create(c.Descriptor),c.isExhaustive=function i(_){const M=c.Provider.get(_);return!!M&&M.data.id.rowCount/_.atomicConformation.atomId.rowCount>.95},c.getAtomIndexFromEntries=function O(_){const M=new Map;for(const I of _){const{partnerA:{atomIndex:l},partnerB:{atomIndex:m}}=I;M.has(l)?M.get(l).push(I):M.set(l,[I]),M.has(m)?M.get(m).push(I):M.set(m,[I])}return M},c.getEntriesFromStructConn=function b(_,M){const{conn_type_id:I,pdbx_dist_value:l,pdbx_value_order:m}=_,u={label_asym_id:_.ptnr1_label_asym_id,label_seq_id:_.ptnr1_label_seq_id,auth_seq_id:_.ptnr1_auth_seq_id,label_atom_id:_.ptnr1_label_atom_id,label_alt_id:_.pdbx_ptnr1_label_alt_id,ins_code:_.pdbx_ptnr1_PDB_ins_code,symmetry:_.ptnr1_symmetry},d={label_asym_id:_.ptnr2_label_asym_id,label_seq_id:_.ptnr2_label_seq_id,auth_seq_id:_.ptnr2_auth_seq_id,label_atom_id:_.ptnr2_label_atom_id,label_alt_id:_.pdbx_ptnr2_label_alt_id,ins_code:_.pdbx_ptnr2_PDB_ins_code,symmetry:_.ptnr2_symmetry},s=Array.from(M.entities.data.id.toArray()),C=(a,S)=>{if(0!==S.label_asym_id.valueKind(a))return;const D=S.label_asym_id.value(a),R=S.label_atom_id.value(a);if(!R)return;const f=S.auth_seq_id.valueKind(a)===e.VP.ValueKind.Present?S.auth_seq_id.value(a):S.label_seq_id.value(a),p=S.ins_code.value(a),E=S.label_alt_id.value(a);for(const T of s){const L=M.atomicHierarchy.index.findResidue(T,D,f,p);if(L<0)continue;const w=M.atomicHierarchy.index.findAtomOnResidue(L,R,E);if(!(w<0))return{residueIndex:L,atomIndex:w,symmetry:S.symmetry.value(a)}}},h=[];for(let a=0;a<_._rowCount;a++){const S=C(a,u),D=C(a,d);if(void 0===S||void 0===D)continue;const R=I.value(a);let p=0,E=1;switch(m.value(a)||""){case"sing":E=1;break;case"doub":E=2;break;case"trip":E=3;break;case"quad":E=4;break;default:E=(0,t.m)(_.ptnr1_label_comp_id.value(a),_.ptnr1_label_atom_id.value(a),_.ptnr2_label_comp_id.value(a),_.ptnr2_label_atom_id.value(a))}switch(R){case"covale":p=1;break;case"disulf":p=9;break;case"hydrog":p=4;break;case"metalc":p=2}h.push({rowIndex:a,flags:p,order:E,distance:l.value(a),partnerA:S,partnerB:D})}return h}}(y||(y={}))},4366:(tn,Ue,n)=>{"use strict";n.d(Ue,{j:()=>o});var o,r,e=n(9207);(r=o||(o={})).Descriptor={name:"atom_partial_charge"},r.Provider=e.q.create(r.Descriptor)},6710:(tn,Ue,n)=>{"use strict";n.d(Ue,{v:()=>A});var A,b,e=n(2434),o=n(2008),r=n(4743),t=n(9207);function v(b,_,M,I,l,m){const{auth_seq_id:u,label_seq_id:d,pdbx_PDB_ins_code:s}=b.residues,{endSeqId:C,endInsCode:h,key:a,type:S}=M,D="label"===_?d:u;let R=I;for(;RC||f===C&&s.value(R)===h)break;R++}}(b=A||(A={})).Descriptor={name:"model_secondary_structure"},b.Provider=t.q.create(b.Descriptor),b.fromStruct=function _(M,I,l){const m=new Map,u=[{kind:"none"}],d=function y(b,_){if(b._rowCount>0){if(0!==b.beg_label_seq_id.valueKind(0)||0!==b.end_label_seq_id.valueKind(0))return"auth"}else if(_&&(0!==_.beg_label_seq_id.valueKind(0)||0!==_.end_label_seq_id.valueKind(0)))return"auth";return"label"}(M,I);(function c(b,_,M,I){if(!b._rowCount)return;const{beg_label_asym_id:l,beg_label_seq_id:m,beg_auth_seq_id:u,pdbx_beg_PDB_ins_code:d}=b,{end_label_seq_id:s,end_auth_seq_id:C,pdbx_end_PDB_ins_code:h}=b,{pdbx_PDB_helix_class:a,conf_type_id:S,details:D}=b,R="label"===_?m:u,f="label"===_?s:C;for(let p=0,E=b._rowCount;p0&&function O(b,_,M,I){const{count:l}=b.chainAtomSegments,{label_asym_id:m}=b.chains,{auth_seq_id:u,label_seq_id:d,pdbx_PDB_ins_code:s}=b.residues,C="label"===_?d:u;for(let h=0;ha)}},9651:(tn,Ue,n)=>{"use strict";n.d(Ue,{i:()=>m});var e=n(7357),o=n(5384),r=n(4369),t=n(7552),A=n(9032),y=n(9136);function i(h,a,S,D){const R=h.id.value(S),f=h.details.value(S),p=[],{assembly_id:E,oper_expression:T,asym_id_list:L}=a;for(let w=0,Q=a._rowCount;w{const S=[];let D=0;for(let R=0;Ry.StructureProperties.unit.operator_name(w.element),t.J.DefaultName),y.RT.pred.inSet(w=>y.StructureProperties.chain.label_asym_id(w.element),f.asymIds))});S[S.length]={selector:L,operators:T,asymIds:f.asymIds},D+=T.length}return S}}(p,D))}function b(h){const a=[],S=[];for(let D=0;D{const p=[];f.split(",").forEach(E=>{const T=E.indexOf("-");if(T>0){const L=parseInt(E.substring(0,T)),w=parseInt(E.substr(T+1));for(let Q=L;Q<=w;Q++)p[p.length]=Q.toString()}else p[p.length]=E.trim()}),D[D.length]=p}),D}var m,h,l=n(9207);function C(h){if(0===h._rowCount)return;const{id:a,matrix:S,vector:D}=h,R=e.r.struct_ncs_oper.matrix.space,f=e.r.struct_ncs_oper.vector.space,p=[];for(let E=0;E{"use strict";n.d(Ue,{C:()=>y,f:()=>c});var c,i,e=n(467),o=n(4369),r=n(4824),t=n(6115),A=n(1692);function y(i,v){return r.YZ.create("Create Volume",(0,e.A)(function*(){const{header:O,values:b}=i,_=o.qY.Space(O.dim,[0,1,2],Float64Array);let M;if(0===O.dataSetIds.length)M=b;else{const[u,d,s]=O.dim,C=(v?.dataIndex||0)+1;let h=0,a=0;M=new Float64Array(u*d*s);for(let S=0;S{"use strict";n.d(Ue,{G:()=>y,T:()=>c});var c,i,e=n(467),o=n(4824),r=n(5384),t=n(4369),A=n(1692);function y(i,v){return o.YZ.create("Create Volume",function(){var O=(0,e.A)(function*(b){const{volume_data_3d_info:_,volume_data_3d:M}=i,I=r.O8.create(_.spacegroup_number.value(0),t.eB.ofArray(_.spacegroup_cell_size.value(0)),t.eB.scale(t.eB.zero(),t.eB.ofArray(_.spacegroup_cell_angles.value(0)),Math.PI/180)),l=_.axis_order.value(0),m=t.qY.convertToCanonicalAxisIndicesFastToSlow(l),u=m(_.sample_count.value(0)),d=t.qY.Space(u,t.qY.invertAxisOrder(l),Float32Array),s=t.qY.create(d,t.qY.Data1(M.values.toArray({array:Float32Array}))),C=t.eB.ofArray(m(_.origin.value(0))),h=t.eB.ofArray(m(_.dimensions.value(0)));return{label:v?.label,entryId:v?.entryId,grid:{transform:{kind:"spacegroup",cell:I,fractionalBox:r.DJ.create(C,t.eB.add(t.eB.zero(),C,h))},cells:s,stats:{min:_.min_sampled.value(0),max:_.max_sampled.value(0),mean:_.mean_sampled.value(0),sigma:_.sigma_sampled.value(0)}},sourceData:c.create(i),customProperties:new A.v,_propertyData:Object.create(null)}});return function(b){return O.apply(this,arguments)}}())}(i=c||(c={})).is=function v(b){return"dscif"===b?.kind},i.create=function O(b){return{kind:"dscif",name:b._name,data:b}}},387:(tn,Ue,n)=>{"use strict";n.d(Ue,{_:()=>y});var y,e=n(467),o=n(8277),r=n(9909),t=n(1692),A=n(7785);!function(c){function i(O){const b=O.descriptor.name,_="static"===O.type?"_staticPropertyData":"_dynamicPropertyData",M=l=>(b in l[_]||(l[_][b]={props:{...o.t.getDefaultValues(O.getParams(l))},data:r.xv.create(void 0)}),l[_][b]),I=(l,m,u)=>{const d=M(l);l[_][b]={props:m,data:r.xv.withValue(d.data,u)}};return{label:O.label,descriptor:O.descriptor,isHidden:O.isHidden,getParams:l=>{const m=o.t.clone(O.getParams(l));return o.t.setDefaultValues(m,M(l).props),m},defaultParams:O.defaultParams,isApplicable:O.isApplicable,attach:(l=(0,e.A)(function*(m,u,d={},s){s&&u.customProperties.reference(O.descriptor,!0);const C=M(u),h=o.t.merge(O.defaultParams,C.props,d);if(C.data.value&&o.t.areEqual(O.defaultParams,C.props,h))return;const{value:a,assets:S}=yield O.obtain(m,u,h);u.customProperties.add(O.descriptor),u.customProperties.assets(O.descriptor,S),I(u,h,a)}),function(u,d){return l.apply(this,arguments)}),ref:(l,m)=>l.customProperties.reference(O.descriptor,m),get:l=>{var m;return null===(m=M(l))||void 0===m?void 0:m.data},set:(l,m={},u)=>{const d=M(l),s=o.t.merge(O.defaultParams,d.props,m);o.t.areEqual(O.defaultParams,d.props,s)||(I(l,s,u),l.customProperties.assets(O.descriptor))},props:l=>M(l).props};var l}c.createProvider=i,c.createSimple=function v(O,b,_){const M={value:o.t.Value(_,{isHidden:!0})};return i({label:(0,A.Mk)(O),descriptor:(0,t.e)({name:O}),isHidden:!0,type:b,defaultParams:M,getParams:()=>({value:o.t.Value(_,{isHidden:!0})}),isApplicable:()=>!0,obtain:(I=(0,e.A)(function*(l,m,u){return{...o.t.getDefaultValues(M),...u}}),function(m,u,d){return I.apply(this,arguments)})});var I}}(y||(y={}))},5439:(tn,Ue,n)=>{"use strict";n.d(Ue,{S:()=>y});var y,e=n(467),o=n(8277),r=n(9909),t=n(1692),A=n(7785);!function(c){function i(O){const b=O.descriptor.name,_="root"===O.type?"inheritedPropertyData":"currentPropertyData",M=l=>(b in l[_]||(l[_][b]={props:{...o.t.getDefaultValues(O.getParams(l))},data:r.xv.create(void 0)}),l[_][b]),I=(l,m,u)=>{const d=M(l);l[_][b]={props:m,data:r.xv.withValue(d.data,u)}};return{label:O.label,descriptor:O.descriptor,isHidden:O.isHidden,getParams:l=>{const m=o.t.clone(O.getParams(l));return o.t.setDefaultValues(m,M(l).props),m},defaultParams:O.defaultParams,isApplicable:O.isApplicable,attach:(l=(0,e.A)(function*(m,u,d={},s){s&&u.customPropertyDescriptors.reference(O.descriptor,!0),"root"===O.type&&(u=u.root);const C=M(u.root).props,h=M(u),a=o.t.merge(O.defaultParams,C,d);if(h.data.value&&o.t.areEqual(O.defaultParams,h.props,a))return;const{value:S,assets:D}=yield O.obtain(m,u,a);u.customPropertyDescriptors.add(O.descriptor),u.customPropertyDescriptors.assets(O.descriptor,D),I(u,a,S)}),function(u,d){return l.apply(this,arguments)}),ref:(l,m)=>l.customPropertyDescriptors.reference(O.descriptor,m),get:l=>M(l).data,set:(l,m={},u)=>{"root"===O.type&&(l=l.root);const d=M(l),s=o.t.merge(O.defaultParams,d.props,m);o.t.areEqual(O.defaultParams,d.props,s)||(I(l,s,u),l.customPropertyDescriptors.assets(O.descriptor))},props:l=>M(l).props};var l}c.createProvider=i,c.createSimple=function v(O,b,_){const M={value:o.t.Value(_,{isHidden:!0})};return i({label:(0,A.Mk)(O),descriptor:(0,t.e)({name:O}),isHidden:!0,type:b,defaultParams:M,getParams:()=>({value:o.t.Value(_,{isHidden:!0})}),isApplicable:()=>!0,obtain:(I=(0,e.A)(function*(l,m,u){return{...o.t.getDefaultValues(M),...u}}),function(m,u,d){return I.apply(this,arguments)})});var I}}(y||(y={}))},6948:(tn,Ue,n)=>{"use strict";n.d(Ue,{GE:()=>h,VL:()=>b,XM:()=>d,bf:()=>_,lo:()=>M,vM:()=>u,z$:()=>m}),n(7126),n(2434);var r=n(7767);function b(S,D,R){return"S"===(0,r.$X)(D,R)&&3===(0,r.IS)(S,D,R,"O")}function _(S,D,R){return"S"===(0,r.$X)(D,R)&&4===(0,r.IS)(S,D,R,"O")}function M(S,D,R){return"P"===(0,r.$X)(D,R)&&(0,r.IS)(S,D,R,"O")===(0,r.Hm)(S,D,R)}function m(S,D,R){let f=0;return"C"===(0,r.$X)(D,R)&&2===(0,r.IS)(S,D,R,"O")&&1===(0,r.IS)(S,D,R,"C")&&(0,r.LH)(S,D,R,(p,E)=>{"O"===(0,r.$X)(p,E)&&(0,r.Hm)(S,p,E)-(0,r.IS)(S,p,E,"H")==1&&(f+=1)}),2===f}function u(S,D,R){let f=0;return"C"===(0,r.$X)(D,R)&&3===(0,r.Hm)(S,D,R)&&3===(0,r.IS)(S,D,R,"N")&&(0,r.LH)(S,D,R,(p,E)=>{(0,r.Hm)(S,p,E)-(0,r.IS)(S,p,E,"H")==1&&(f+=1)}),2===f}function d(S,D,R){let f=0;return"C"===(0,r.$X)(D,R)&&3===(0,r.Hm)(S,D,R)&&2===(0,r.IS)(S,D,R,"N")&&1===(0,r.IS)(S,D,R,"C")&&(0,r.LH)(S,D,R,(p,E)=>{(0,r.Hm)(S,p,E)-(0,r.IS)(S,p,E,"H")==1&&(f+=1)}),2===f}const s=new Set(["N","O","S","F","CL","BR","I"]);function h(S,D,R){let f=!1;return(0,r.LH)(S,D,R,(p,E)=>{(function C(S){return s.has(S)})((0,r.$X)(p,E))&&(f=!0)}),f}},3024:(tn,Ue,n)=>{"use strict";n.d(Ue,{$Z:()=>I,Ci:()=>M,Fc:()=>A,G0:()=>t,UV:()=>c,kx:()=>y});var e=n(4490),o=n(4369),r=n(7767),t=function(l){return l[l.Spherical=0]="Spherical",l[l.Terminal=1]="Terminal",l[l.Linear=2]="Linear",l[l.Trigonal=3]="Trigonal",l[l.Tetrahedral=4]="Tetrahedral",l[l.TrigonalBiPyramidal=5]="TrigonalBiPyramidal",l[l.Octahedral=6]="Octahedral",l[l.SquarePlanar=7]="SquarePlanar",l[l.Unknown=8]="Unknown",l}(t||{});function A(l){switch(l){case t.Spherical:return"Spherical";case t.Terminal:return"Terminal";case t.Linear:return"Linear";case t.Trigonal:return"Trigonal";case t.Tetrahedral:return"Tetrahedral";case t.TrigonalBiPyramidal:return"Trigonal Bi-Pyramidal";case t.Octahedral:return"Octahedral";case t.SquarePlanar:return"Square Planar";case t.Unknown:return"Unknown"}}function y(l){switch(l){case 0:return t.Spherical;case 1:return t.Terminal;case 2:return t.Linear;case 3:return t.Trigonal;case 4:return t.Tetrahedral;default:return t.Unknown}}const c=new Map([[t.Linear,(0,e.pu)(180)],[t.Trigonal,(0,e.pu)(120)],[t.Tetrahedral,(0,e.pu)(109.4721)],[t.Octahedral,(0,e.pu)(90)]]),i=(0,o.eB)(),v=(0,o.eB)(),O=(0,o.eB)(),b=(0,o.eB)(),_=(0,o.eB)();function M(l,m,u,d,s){const C=[];return m.conformation.position(m.elements[u],O),d.conformation.position(d.elements[s],b),o.eB.sub(i,b,O),(0,r.LH)(l,m,u,(h,a)=>{"H"!==(0,r.$X)(h,a)&&(h.conformation.position(h.elements[a],_),o.eB.sub(v,_,O),C.push(o.eB.angle(i,v)))}),C}function I(l,m,u,d,s){m.conformation.position(m.elements[u],O),d.conformation.position(d.elements[s],b),o.eB.sub(i,b,O);const C=[(0,o.eB)(),(0,o.eB)()];let a,S,h=0;if((0,r.LH)(l,m,u,(D,R)=>{h>1||"H"!==(0,r.$X)(D,R)&&(a=D,S=R,D.conformation.position(D.elements[R],_),o.eB.sub(C[h++],_,O))}),1===h&&a&&S&&(0,r.LH)(l,a,S,(D,R)=>{h>1||D===m&&R===u||"H"!==(0,r.$X)(D,R)&&(D.conformation.position(D.elements[R],_),o.eB.sub(C[h++],_,O))}),2===h)return o.eB.cross(v,C[0],C[1]),Math.abs(Math.PI/2-o.eB.angle(v,i))}},7767:(tn,Ue,n)=>{"use strict";n.d(Ue,{$X:()=>r,B8:()=>m,Hm:()=>O,IS:()=>b,LH:()=>u,M0:()=>t,nZ:()=>A,q9:()=>y,tZ:()=>c,z7:()=>I});var e=n(2434);function r(s,C){return s.model.atomicHierarchy.atoms.type_symbol.value(s.elements[C])}function t(s,C){return s.model.atomicHierarchy.atoms.pdbx_formal_charge.value(s.elements[C])}function A(s,C){return s.model.atomicHierarchy.atoms.label_atom_id.value(s.elements[C])}function y(s,C){return s.model.atomicHierarchy.atoms.label_alt_id.value(s.elements[C])}function c(s,C){return s.model.atomicHierarchy.atoms.label_comp_id.value(s.elements[C])}function O(s,C,h){return function i(s,C,h){let a=0;const S=s.interUnitBonds.getEdgeIndices(h,C.id);for(let D=0,R=S.length;D{r(D,R)===a&&(S+=1)}),S}function I(s,C,h,a,S){return C===a?function _(s,C,h){const{offset:a,b:S,edgeProps:{flags:D}}=s.bonds;for(let R=a[C],f=a[C+1];R{"use strict";n.d(Ue,{r:()=>c});var e=n(467),o=n(8277),r=n(9126),t=n(5439),A=n(1692);const y={...r.yB},c=t.S.createProvider({label:"Interactions",descriptor:(0,A.e)({name:"molstar_computed_interactions"}),type:"local",defaultParams:y,getParams:i=>y,isApplicable:i=>!i.isCoarseGrained,obtain:(i=(0,e.A)(function*(v,O,b){const _={...o.t.getDefaultValues(y),...b};return{value:yield(0,r.h3)(v,O,_)}}),function(O,b,_){return i.apply(this,arguments)})});var i},9469:(tn,Ue,n)=>{"use strict";n.d(Ue,{Ls:()=>y,Tg:()=>r,X8:()=>A,XH:()=>i,dE:()=>o,mO:()=>v,tA:()=>t,y9:()=>O});var o,e=n(481);(o||(o={})).createElementsIndex=function _(M,I,l){const m=new Int32Array(l+1),u=new Int32Array(l),d=new Int32Array(l),{members:s,offsets:C}=I;for(let S=0,D=2*M.edgeCount;Sf)){for(let p=C[R],E=C[R+1];pf)){for(let p=C[R],E=C[R+1];p{"use strict";n.d(Ue,{OG:()=>Go,yB:()=>Nn,h3:()=>Kn});var O,b,e=n(467),o=n(8277),r=n(9136),t=n(8382),A=n(5384),y=n(3543),c=n(9311),i=n(4369),v=n(9535);!function(ht){function Xt(rt,St){const vt=new Int32Array(St+1),mn=new Int32Array(St),zt=new Int32Array(St),{members:an,count:Vn,offsets:Fn}=rt;for(let tr=0,Tr=Fn[Vn];tron(St,zt)}},ht.createSubset=on,ht.Info=function En(rt,St,vt){const mn=c.F.get(rt).value;if(!mn||!mn.has(St.id))throw new Error("valence model required");return{unit:St,types:vt.types,feature:-1,x:vt.x,y:vt.y,z:vt.z,members:vt.members,offsets:vt.offsets,idealGeometry:mn.get(St.id).idealGeometry}},ht.position=function Tt(rt,St){return i.eB.set(rt,St.x[St.feature],St.y[St.feature],St.z[St.feature]),i.eB.transformMat4(rt,rt,St.unit.conformation.operator.matrix),rt};const Fe=(0,i.eB)(),He=(0,i.eB)();ht.distance=function Ye(rt,St){const mn=St.members[St.offsets[St.feature]];return rt.unit.conformation.position(rt.unit.elements[rt.members[rt.offsets[rt.feature]]],Fe),St.unit.conformation.position(St.unit.elements[mn],He),i.eB.distance(Fe,He)},ht.Provider=function ot(rt,St){return{types:new Set(rt),add:St}}}(O||(O={})),(b||(b={})).create=function pt(Xt=2048,fn=1024,on){const En=t.Gm.create(Float32Array,1,fn,on?on.x:Xt),Tt=t.Gm.create(Float32Array,1,fn,on?on.y:Xt),Fe=t.Gm.create(Float32Array,1,fn,on?on.z:Xt),He=t.Gm.create(Uint8Array,1,fn,on?on.types:Xt),Ye=t.Gm.create(Uint8Array,1,fn,on?on.groups:Xt),ot=t.Gm.create(Uint32Array,1,fn,on?on.offsets:Xt),rt=t.Gm.create(Uint32Array,1,fn,on?on.members:Xt),St={x:0,y:0,z:0,offset:0,count:0};return{startState:()=>{St.x=0,St.y=0,St.z=0,St.offset=rt.elementCount,St.count=0},pushMember:(vt,mn,zt,an)=>{t.Gm.add(rt,an),St.x+=vt,St.y+=mn,St.z+=zt,St.count+=1},finishState:(vt,mn)=>{const{count:zt}=St;0!==zt&&(t.Gm.add(He,vt),t.Gm.add(Ye,mn),t.Gm.add(En,St.x/zt),t.Gm.add(Tt,St.y/zt),t.Gm.add(Fe,St.z/zt),t.Gm.add(ot,St.offset))},add:(vt,mn,zt,an,Vn,Fn)=>{t.Gm.add(He,vt),t.Gm.add(Ye,mn),t.Gm.add(En,zt),t.Gm.add(Tt,an),t.Gm.add(Fe,Vn),t.Gm.add(ot,rt.elementCount),t.Gm.add(rt,Fn)},getFeatures:vt=>{t.Gm.add(ot,rt.elementCount);const mn=t.Gm.compact(En,!0),zt=t.Gm.compact(Tt,!0),an=t.Gm.compact(Fe,!0);return O.create(vt,{x:mn,y:zt,z:an,count:En.elementCount,types:t.Gm.compact(He,!0),groups:t.Gm.compact(Ye,!0),offsets:t.Gm.compact(ot,!0),members:t.Gm.compact(rt,!0)})}}};var l,m,_=n(9469),M=n(4506),I=n(481);(l||(l={})).create=function pt(Xt,fn){const on=[],En=[],Tt=[];return{add(Fe,He,Ye){on[on.length]=Fe,En[En.length]=He,Tt[Tt.length]=Ye},getContacts(){const Fe=new M.O.EdgeBuilder(Xt.count,on,En),He=new Int8Array(Fe.slotCount),Ye=new Int8Array(Fe.slotCount);for(let vt=0,mn=Fe.edgeCount;vtrt||(rt=_.dE.createElementsIndex(ot,Xt,fn))})}}},function(ht){ht.create=function pt(){const Xt=new I.Z.Builder;return{startUnitPair(fn,on){Xt.startUnitPair(fn.id,on.id)},finishUnitPair(){Xt.finishUnitPair()},add(fn,on,En){Xt.add(fn,on,{type:En,flag:_.tA.None})},getContacts:fn=>new _.Tg(Xt.getMap(),fn)}}}(m||(m={}));var u=n(2008),d=n(6871),s=n(7767);const C={lineOfSightDistFactor:o.t.Numeric(1,{min:0,max:3,step:.1})},h=3;function a(ht,pt,Xt){const fn=pt.members[pt.offsets[pt.feature]],on=Xt.members[Xt.offsets[Xt.feature]];if(fn===on&&pt.unit===Xt.unit)return!1;const En=(0,s.q9)(pt.unit,fn),Tt=(0,s.q9)(Xt.unit,on);return!(En&&Tt&&En!==Tt||pt.unit===Xt.unit&&pt.unit.model.atomicHierarchy.residueAtomSegments.count>1&&pt.unit.residueIndex[pt.unit.elements[fn]]===Xt.unit.residueIndex[Xt.unit.elements[on]]||(0,s.z7)(ht,pt.unit,fn,Xt.unit,on))}function S(ht,pt,Xt,fn){const on=(0,s.q9)(ht,pt),En=(0,s.q9)(Xt,fn);return on&&En&&on!==En}function D(ht,pt){const{feature:Xt,offsets:fn,members:on}=pt;for(let En=fn[Xt],Tt=fn[Xt+1];En{J.includes((0,s.$X)(rt,St))&&(ot=!0)}),ot&&Xt.add(7,_.mO.None,on[fn[Fe]],En[fn[Fe]],Tt[fn[Fe]],Fe)}}}),ee={name:"halogen-bonds",params:N,createTester:ht=>{const pt=function j(ht){return{angleMax:(0,U.pu)(ht.angleMax)}}(ht);return{maxDistance:ht.distanceMax,requiredFeatures:new Set([6,7]),getType:(Xt,fn,on)=>function Z(ht,pt,Xt,fn){const on=pt.types[pt.feature];if(!function te(ht,pt){return 7===ht&&6===pt||6===ht&&7===pt}(on,Xt.types[Xt.feature]))return;const[Tt,Fe]=6===on?[pt,Xt]:[Xt,pt],He=Tt.members[Tt.offsets[Tt.feature]],Ye=Fe.members[Fe.offsets[Fe.feature]],ot=(0,V.Ci)(ht,Tt.unit,He,Fe.unit,Ye);if(1!==ot.length||de-ot[0]>fn.angleMax)return;const rt=(0,V.Ci)(ht,Fe.unit,Ye,Tt.unit,He);return 0===rt.length||rt.some(St=>ye-St>fn.angleMax)?void 0:_.X8.HalogenBond}(Xt,fn,on,pt)}}};var g=n(2434);const _e={distanceMax:o.t.Numeric(3.5,{min:1,max:5,step:.1}),backbone:o.t.Boolean(!0,{description:"Include backbone-to-backbone hydrogen bonds"}),accAngleDevMax:o.t.Numeric(45,{min:0,max:180,step:1},{description:"Max deviation from ideal acceptor angle"}),donAngleDevMax:o.t.Numeric(45,{min:0,max:180,step:1},{description:"Max deviation from ideal donor angle"}),accOutOfPlaneAngleMax:o.t.Numeric(90,{min:0,max:180,step:1}),donOutOfPlaneAngleMax:o.t.Numeric(45,{min:0,max:180,step:1})},xe={..._e,water:o.t.Boolean(!1,{description:"Include water-to-water hydrogen bonds"}),sulfurDistanceMax:o.t.Numeric(4.1,{min:1,max:5,step:.1})},le={..._e};function Ae(ht,pt){const Xt=c.F.get(ht).value;if(!Xt)throw Error("expected valence model to be available");const fn=Xt.get(pt.id);if(!fn)throw Error("expected valence model for unit to be available");return fn}function Re(ht,pt){const{elementAromaticRingIndices:Xt,all:fn}=ht.rings,on=Xt.get(pt);if(void 0===on)return!1;for(let En=0,Tt=on.length;EnMath.abs(Fe-ot)>fn.maxDonAngleDev))return;if(pt.idealGeometry[on]===V.G0.Trigonal){const ot=(0,V.$Z)(ht,pt.unit,on,Xt.unit,En);if(void 0!==ot&&ot>fn.maxDonOutOfPlaneAngle)return}const He=(0,V.Ci)(ht,Xt.unit,En,pt.unit,on),Ye=V.UV.get(Xt.idealGeometry[En])||ue;if(!He.some(ot=>Ye-ot>fn.maxAccAngleDev)){if(Xt.idealGeometry[En]===V.G0.Trigonal){const ot=(0,V.$Z)(ht,Xt.unit,En,pt.unit,on);if(void 0!==ot&&ot>fn.maxAccOutOfPlaneAngle)return}return!0}}const se=O.Provider([4],function Be(ht,pt,Xt){const{totalH:fn}=Ae(ht,pt),{elements:on}=pt,{x:En,y:Tt,z:Fe}=pt.model.atomicConformation;for(let He=0,Ye=on.length;He0&&("N"===ot||"O"===ot||"S"===ot))&&Xt.add(4,_.mO.None,En[on[He]],Tt[on[He]],Fe[on[He]],He)}}),ae=O.Provider([9],function Ce(ht,pt,Xt){const{totalH:fn}=Ae(ht,pt),{elements:on}=pt,{x:En,y:Tt,z:Fe}=pt.model.atomicConformation;for(let He=0,Ye=on.length;He0&&((0,s.IS)(ht,pt,He,"N")>0||(0,s.IS)(ht,pt,He,"O")>0||Re(pt,He))&&Xt.add(9,_.mO.None,En[on[He]],Tt[on[He]],Fe[on[He]],He)}),ge=O.Provider([5],function ke(ht,pt,Xt){const{charge:fn,implicitH:on,idealGeometry:En}=Ae(ht,pt),{elements:Tt}=pt,{x:Fe,y:He,z:Ye}=pt.model.atomicConformation,ot=rt=>{Xt.add(5,_.mO.None,Fe[Tt[rt]],He[Tt[rt]],Ye[Tt[rt]],rt)};for(let rt=0,St=Tt.length;rt{const pt=Math.max(ht.distanceMax,ht.sulfurDistanceMax),Xt=function ie(ht){return{...Te(ht),includeWater:ht.water,maxSulfurDistSq:ht.sulfurDistanceMax*ht.sulfurDistanceMax,maxDistSq:ht.distanceMax*ht.distanceMax}}(ht);return{maxDistance:pt,requiredFeatures:new Set([4,5]),getType:(fn,on,En,Tt)=>function ve(ht,pt,Xt,fn,on){const Tt=Xt.types[Xt.feature];if(!function ne(ht,pt){return 5===ht&&4===pt||4===ht&&5===pt}(pt.types[pt.feature],Tt))return;const[Fe,He]=5===Tt?[pt,Xt]:[Xt,pt],Ye=Fe.members[Fe.offsets[Fe.feature]],ot=He.members[He.offsets[He.feature]];return fn>("S"===(0,s.$X)(Fe.unit,Ye)||"S"===(0,s.$X)(He.unit,ot)?on.maxSulfurDistSq:on.maxDistSq)||!on.includeWater&&function K(ht,pt,Xt,fn){return we(ht,pt)&&we(Xt,fn)}(Fe.unit,Ye,He.unit,ot)||!re(ht,Fe,He,on)?void 0:_.X8.HydrogenBond}(fn,on,En,Tt,Xt)}}},Le={name:"weak-hydrogen-bonds",params:le,createTester:ht=>{const pt=Te(ht);return{maxDistance:ht.distanceMax,requiredFeatures:new Set([9,5]),getType:(Xt,fn,on,En)=>function ce(ht,pt,Xt,fn,on){const Tt=Xt.types[Xt.feature];if(!function be(ht,pt){return 9===ht&&5===pt||5===ht&&9===pt}(pt.types[pt.feature],Tt))return;const[Fe,He]=5===Tt?[pt,Xt]:[Xt,pt];return re(ht,Fe,He,on)?_.X8.WeakHydrogenBond:void 0}(Xt,fn,on,0,pt)}}};var nt=n(6948);const je={distanceMax:o.t.Numeric(5,{min:0,max:8,step:.1})},Lt={distanceMax:o.t.Numeric(5.5,{min:1,max:8,step:.1}),offsetMax:o.t.Numeric(2,{min:0,max:4,step:.1}),angleDevMax:o.t.Numeric(30,{min:0,max:180,step:1})},Je={distanceMax:o.t.Numeric(6,{min:1,max:8,step:.1}),offsetMax:o.t.Numeric(2,{min:0,max:4,step:.1})},en=["ARG","HIS","LYS"],Bt=["GLU","ASP"];function pn(ht,pt){const Xt=c.F.get(ht).value;if(!Xt)throw Error("expected valence model to be available");const fn=Xt.get(pt.id);if(!fn)throw Error("expected valence model for unit to be available");return fn}const Kt=(0,i.eB)(),sn=(0,i.eB)(),yt=(0,i.eB)(),At=(0,i.eB)(),Gt=(0,i.eB)(),rn=(0,i.eB)();function tt(ht,pt){const{unit:Xt,feature:fn,offsets:on,members:En}=pt,{elements:Tt}=Xt,Fe=on[fn];return pt.unit.conformation.position(Tt[En[Fe]],yt),pt.unit.conformation.position(Tt[En[Fe+1]],At),pt.unit.conformation.position(Tt[En[Fe+2]],Gt),i.eB.triangleNormal(ht,yt,At,Gt)}const Mt=function(ht,pt,Xt){return O.position(yt,ht),O.position(At,pt),i.eB.sub(Gt,yt,At),i.eB.projectOnPlane(rn,Gt,Xt),i.eB.add(rn,rn,At),i.eB.distance(rn,At)},jt=(0,U.pu)(180),It=(0,U.pu)(90),Dt=(0,i.eB)(),Ct=(0,i.eB)();const yn=O.Provider([2],function mt(ht,pt,Xt){const{charge:fn}=pn(ht,pt),{elements:on}=pt,{x:En,y:Tt,z:Fe}=pt.model.atomicConformation,He=new Set,{label_comp_id:Ye}=pt.model.atomicHierarchy.atoms,ot=y.hT.transientSegments(pt.model.atomicHierarchy.residueAtomSegments,on);for(;ot.hasNext;){const{index:rt,start:St,end:vt}=ot.move(),mn=Ye.value(pt.model.atomicHierarchy.residueAtomSegments.offsets[rt]);if(Bt.includes(mn)){Xt.startState();for(let zt=St;zt{"O"===(0,s.$X)(pt,Vn)&&Xt.pushMember(En[on[Vn]],Tt[on[Vn]],Fe[on[Vn]],Vn)}),Xt.finishState(2,_.mO.Phosphate));else if(!g.px.has(mn)){for(let zt=St;zt{"O"===(0,s.$X)(pt,Fn)&&(He.add(Fn),Xt.pushMember(En[on[Fn]],Tt[on[Fn]],Fe[on[Fn]],Fn))}),Xt.finishState(2,an))}for(let zt=St;zt{"N"===(0,s.$X)(pt,Fn)&&(He.add(Fn),Xt.pushMember(En[on[Fn]],Tt[on[Fn]],Fe[on[Fn]],Fn))}),Xt.finishState(1,an))}for(let zt=St;zt0&&!He.has(zt)&&Xt.add(1,_.mO.None,En[on[zt]],Tt[on[zt]],Fe[on[zt]],zt)}}}),kt=O.Provider([3],function _t(ht,pt,Xt){const{elements:fn}=pt,{x:on,y:En,z:Tt}=pt.model.atomicConformation;for(const Fe of pt.rings.aromaticRings){const He=pt.rings.all[Fe];Xt.startState();for(let Ye=0,ot=He.length;Ye{const pt=function nn(ht){return{distanceMaxSq:ht.distanceMax*ht.distanceMax}}(ht);return{maxDistance:ht.distanceMax,requiredFeatures:new Set([2,1]),getType:(Xt,fn,on,En)=>function $t(ht,pt,Xt,fn,on){if(function Me(ht,pt){return 2===ht&&1===pt||1===ht&&2===pt}(pt.types[pt.feature],Xt.types[Xt.feature])&&function gt(ht,pt,Xt){const{feature:fn,offsets:on,members:En}=ht,{feature:Tt,offsets:Fe,members:He}=pt;for(let Ye=on[fn],ot=on[fn+1];Ye{const pt=function bn(ht){return{offsetMax:ht.offsetMax,angleDevMax:(0,U.pu)(ht.angleDevMax)}}(ht);return{maxDistance:ht.distanceMax,requiredFeatures:new Set([3]),getType:(Xt,fn,on,En)=>function Vt(ht,pt,Xt,fn,on){if(function Ke(ht,pt){return 3===ht&&3===pt}(pt.types[pt.feature],Xt.types[Xt.feature])){tt(Dt,pt),tt(Ct,Xt);const Fe=i.eB.angle(Dt,Ct);if(Math.min(Mt(pt,Xt,Ct),Mt(Xt,pt,Dt))<=on.offsetMax){if(Fe<=on.angleDevMax||Fe>=jt-on.angleDevMax)return _.X8.PiStacking;if(Fe<=on.angleDevMax+It&&Fe>=It-on.angleDevMax)return _.X8.PiStacking}}}(0,fn,on,0,pt)}}},jn={name:"cation-pi",params:Je,createTester:ht=>{const pt=function Dn(ht){return{offsetMax:ht.offsetMax}}(ht);return{maxDistance:ht.distanceMax,requiredFeatures:new Set([3,1]),getType:(Xt,fn,on,En)=>function Wt(ht,pt,Xt,fn,on){const En=pt.types[pt.feature];if(function ut(ht,pt){return 3===ht&&1===pt||1===ht&&3===pt}(En,Xt.types[Xt.feature])){const[Fe,He]=3===En?[pt,Xt]:[Xt,pt];if(tt(Dt,Fe),Mt(He,Fe,Dt)<=on.offsetMax)return _.X8.CationPi}}(0,fn,on,0,pt)}}},On={distanceMax:o.t.Numeric(4,{min:1,max:5,step:.1})},or=O.Provider([8],function fr(ht,pt,Xt){const{elements:fn}=pt,{x:on,y:En,z:Tt}=pt.model.atomicConformation;for(let Fe=0,He=fn.length;Fe{const vt=(0,s.$X)(rt,St);"C"!==vt&&"H"!==vt&&(ot=!1)})):"F"===Ye&&(ot=!0),ot&&Xt.add(8,_.mO.None,on[fn[Fe]],En[fn[Fe]],Tt[fn[Fe]],Fe)}}),Nr={name:"hydrophobic",params:On,createTester:ht=>({maxDistance:ht.distanceMax,requiredFeatures:new Set([8]),getType:(pt,Xt,fn,on)=>function Pr(ht,pt,Xt,fn){if(!function Dr(ht,pt){return 8===ht&&8===pt}(pt.types[pt.feature],Xt.types[Xt.feature]))return;const Fe=Xt.members[Xt.offsets[Xt.feature]];return"F"!==(0,s.$X)(pt.unit,pt.members[pt.offsets[pt.feature]])||"F"!==(0,s.$X)(Xt.unit,Fe)?_.X8.Hydrophobic:void 0}(0,Xt,fn)})};var Ir=n(9986),Or=n(7126);const Jr={distanceMax:o.t.Numeric(3,{min:1,max:5,step:.1})},To=["LI","NA","K","RB","CS","MG","CA","SR","BA","AL","GA","IN","TL","SC","SN","PB","BI","SB","HG"];function ct(ht){return!g.DB.has(ht)}function dt(ht){return g.DB.has(ht)}function Yt(ht){return g.HA.has(ht)}function xn(ht,pt){return 12===ht?11===pt||12===pt:13===ht?10===pt:void 0}const er=O.Provider([13,12],function un(ht,pt,Xt){const{elements:fn}=pt,{x:on,y:En,z:Tt}=pt.model.atomicConformation;for(let Fe=0,He=fn.length;Fe({maxDistance:ht.distanceMax,requiredFeatures:new Set([13,12,10,11]),getType:(pt,Xt,fn,on)=>function Rn(ht,pt,Xt,fn){const on=pt.types[pt.feature],En=Xt.types[Xt.feature];if(xn(on,En)||xn(En,on))return _.X8.MetalCoordination}(0,Xt,fn)})};function vr(ht,pt){const{contacts:Xt}=pt,fn=function(Ye,ot,rt,St,vt){const[mn,zt]=St.get(rt)||[1/0,-1];YeXt.edges[Ye].props.flag=_.tA.Filtered;let Fe,He;return{isApplicable:Ye=>Ye===_.X8.Hydrophobic,handleInterContact:(Ye,ot,rt)=>{on(Ye,ot,rt,En,Tt)},startUnit:(Ye,ot,rt)=>{Fe=new Map,He=St=>ot.edgeProps.flag[St]=_.tA.Filtered},handleIntraContact:(Ye,ot,rt)=>{on(Ye,ot,rt,Fe,He)}}}function Hr(ht,pt){const{contacts:Xt}=pt,fn=(on,En)=>{const Tt=9===on.types[on.feature]?En:on,Fe=Tt.members[Tt.offsets[Tt.feature]],{edgeProps:{type:He},elementsIndex:{offsets:Ye,indices:ot}}=pt.unitsContacts.get(Tt.unit.id);for(let St=Ye[Fe],vt=Ye[Fe+1];Ston===_.X8.WeakHydrogenBond,handleInterContact:(on,En,Tt)=>{fn(En,Tt)&&(Xt.edges[on].props.flag=_.tA.Filtered)},startUnit:()=>{},handleIntraContact:(on,En,Tt)=>{if(fn(En,Tt)){const{flag:Fe}=pt.unitsContacts.get(En.unit.id).edgeProps;Fe[on]=_.tA.Filtered}}}}function Mr(ht,pt,Xt,fn,on){const{offsets:En,feature:Tt}=Xt,{offsets:Fe,feature:He}=fn;for(let Ye=En[Tt],ot=En[Tt+1];Yefn===_.X8.Ionic,handleInterContact:(fn,on,En)=>{Mr([_.X8.HydrogenBond,_.X8.WeakHydrogenBond],fn,on,En,Xt)},startUnit:()=>{},handleIntraContact:(fn,on,En)=>{Fr([_.X8.HydrogenBond,_.X8.WeakHydrogenBond],fn,on,En,pt.unitsContacts.get(on.unit.id))}}}function Ur(ht,pt){const{contacts:Xt}=pt;return{isApplicable:fn=>fn===_.X8.Hydrophobic||fn===_.X8.CationPi,handleInterContact:(fn,on,En)=>{Mr([_.X8.PiStacking],fn,on,En,Xt)},startUnit:()=>{},handleIntraContact:(fn,on,En)=>{Fr([_.X8.PiStacking],fn,on,En,pt.unitsContacts.get(on.unit.id))}}}function Ro(ht,pt){const{contacts:Xt}=pt;return{isApplicable:fn=>fn===_.X8.Ionic,handleInterContact:(fn,on,En)=>{Mr([_.X8.MetalCoordination],fn,on,En,Xt)},startUnit:()=>{},handleIntraContact:(fn,on,En)=>{Fr([_.X8.MetalCoordination],fn,on,En,pt.unitsContacts.get(on.unit.id))}}}var Go,ro=n(364),po=n(6290),so=n(3246),ho=n(3917),Bo=n(1372);!function(ht){function on(ot,rt){const{unitA:St,indexA:vt,unitB:mn,indexB:zt}=rt,{contacts:an,unitsContacts:Vn}=ot;if(St===mn){const Fn=Vn.get(St.id),rr=Fn.getDirectedEdgeIndex(vt,zt);return(0,_.Ls)(Fn.edgeProps.type[rr])}{const Fn=an.getEdgeIndex(vt,St.id,zt,mn.id);return(0,_.Ls)(an.edges[Fn].props.type)}}function He(ot,rt,St){const{unitsFeatures:vt}=ot;return po.p.fromPairProvider(rt.length,(mn,zt,an)=>{const Vn=rt[mn];O.setPosition(zt,Vn.unitA,Vn.indexA,vt.get(Vn.unitA.id)),O.setPosition(an,Vn.unitB,Vn.indexB,vt.get(Vn.unitB.id))},St)}function Ye(ot,rt,St){const vt=St[0];if(void 0===vt)return"";const{unitA:mn,indexA:zt,unitB:an,indexB:Vn}=vt,{unitsFeatures:Fn}=rt,{members:rr,offsets:Vr}=Fn.get(mn.id),{members:tr,offsets:Tr}=Fn.get(an.id),oo={granularity:"element"};return(Vr[zt+1]-Vr[zt]>1||Tr[Vn+1]-Tr[Vn]>1)&&(oo.granularity="residue"),[on(rt,vt),(0,ho.CR)(r.gn.Location(ot,mn,rr[Vr[zt]],ot,an,tr[Tr[Vn]]),oo)].join("
")}ht.Location=function pt(ot,rt,St,vt,mn,zt){return(0,ro.cG)("interactions",{structure:rt,interactions:ot},{unitA:St,indexA:vt,unitB:mn,indexB:zt})},ht.isLocation=function Xt(ot){return!!ot&&"data-location"===ot.kind&&"interactions"===ot.tag},ht.areLocationsEqual=function fn(ot,rt){return ot.data.structure===rt.data.structure&&ot.data.interactions===rt.data.interactions&&ot.element.indexA===rt.element.indexA&&ot.element.indexB===rt.element.indexB&&ot.element.unitA===rt.element.unitA&&ot.element.unitB===rt.element.unitB},ht.locationLabel=function En(ot){return on(ot.data.interactions,ot.element)},ht.Loci=function Tt(ot,rt,St){return(0,so.g9)("interactions",{structure:ot,interactions:rt},St,vt=>He(rt,St,vt),()=>Ye(ot,rt,St))},ht.isLoci=function Fe(ot){return!!ot&&"data-loci"===ot.kind&&"interactions"===ot.tag},ht.getBoundingSphere=He,ht.getLabel=Ye}(Go||(Go={}));const Wo=[se,ae,ge,yn,Zt,kt,q,Y,or,er,ir],We={ionic:Ot,"pi-stacking":An,"cation-pi":jn,"halogen-bonds":ee,"hydrogen-bonds":Ie,"weak-hydrogen-bonds":Le,hydrophobic:Nr,"metal-coordination":Yn},Sn=function Pt(ht=[]){const pt=Object.create(null);return Object.keys(We).forEach(Xt=>{pt[Xt]=o.t.MappedStatic(ht.includes(Xt)?"on":"off",{on:o.t.Group(We[Xt].params),off:o.t.Group({})},{cycle:!0})}),pt}(["cation-pi","pi-stacking","hydrogen-bonds","halogen-bonds","metal-coordination"]),Nn={providers:o.t.Group(Sn,{isFlat:!0}),contacts:o.t.Group(C,{label:"Advanced Options"})};function Kn(ht,pt,Xt){return dr.apply(this,arguments)}function dr(){return dr=(0,e.A)(function*(ht,pt,Xt){const fn={...o.t.getDefaultValues(Nn),...Xt};yield c.F.attach(ht,pt);const on=[];(0,Bo.mX)(We).forEach(rt=>{const{name:St,params:vt}=fn.providers[rt];"on"===St&&on.push(We[rt].createTester(vt))});const En=new Set;on.forEach(rt=>Ir.M.add(En,rt.requiredFeatures));const Tt=Wo.filter(rt=>Ir.M.areIntersecting(En,rt.types)),Fe=y.Yz.Mutable(),He=y.Yz.Mutable();for(let rt=0,St=pt.unitSymmetryGroups.length;rt{const Fe=pt.get(En.id),He=pt.get(Tt.id);!function G(ht,pt,Xt,fn,on,En,Tt,Fe){const{count:He,x:Ye,y:ot,z:rt}=Xt,{lookup3d:St}=on,vt=i.$I.mul(Q,fn.conformation.operator.inverse,pt.conformation.operator.matrix),mn=!i.$I.isIdentity(vt),zt=(0,i.eB)(),an=Math.max(...Tt.map(oo=>oo.maxDistance)),{center:Vn,radius:Fn}=St.boundary.sphere,rr=(Fn+an)*(Fn+an),Vr=Fe.lineOfSightDistFactor,tr=O.Info(ht,pt,Xt),Tr=O.Info(ht,fn,on);En.startUnitPair(pt,fn);for(let oo=0;oorr)continue;const{indices:Gr,count:Ao,squaredDistances:yo}=St.find(zt[0],zt[1],zt[2],an);if(0!==Ao){tr.feature=oo;for(let vo=0;voEn.maxDistance)),validUnit:En=>r.Nf.isAtomic(En),validUnitPair:(En,Tt)=>r.oE.validUnitPair(ht,En,Tt)}),on.getContacts(pt)}(pt,Fe,on,fn.contacts),ot={unitsFeatures:Fe,unitsContacts:He,contacts:Ye};return function br(ht,pt){const{contacts:Xt,unitsContacts:fn,unitsFeatures:on}=pt,En=[vr(0,pt),Hr(0,pt),Sr(0,pt),Ur(0,pt),Ro(0,pt)];for(let Fe=0,He=Xt.edgeCount;Fe{"use strict";n.d(Ue,{MH:()=>ye});var e=n(8277),o=n(2443),r=n(1758),t=n(467),A=n(9136),y=n(4369),c=n(3246),i=n(3543),v=n(9283),O=n(6713),b=n(377),_=n(2741),M=n(1888),I=n(9126),l=n(9469),m=n(5384),u=n(2556),d=n(1372);const s={sizeFactor:e.t.Numeric(.3,{min:0,max:10,step:.01}),dashCount:e.t.Numeric(6,{min:1,max:10,step:1}),dashScale:e.t.Numeric(.4,{min:0,max:2,step:.1}),ignoreHydrogens:e.t.Boolean(!1),ignoreHydrogensVariant:e.t.Select("all",e.t.arrayToOptions(["all","non-polar"])),includeParent:e.t.Boolean(!1),parentDisplay:e.t.Select("stub",e.t.arrayToOptions(["stub","full","between"]),{description:'Only has an effect when "includeParent" is enabled. "Stub" shows just the child side of interactions to the parent. "Full" shows both sides of interactions to the parent. "Between" shows only interactions to the parent.'})};var C=n(7767);function h(j,Z,q,Y,ee,g){return a.apply(this,arguments)}function a(){return(a=(0,t.A)(function*(j,Z,q,Y,ee,g){if(!A.Nf.isAtomic(Z))return v.e.createEmpty(g);const{child:_e}=q,xe=_e?.unitMap.get(Z.id);if(_e&&!xe)return v.e.createEmpty(g);const le=A.iZ.Location.create(q,Z),Ae=O.r.get(q).value,Be=Ae.unitsFeatures.get(Z.id),Ce=Ae.unitsContacts.get(Z.id),{x:Re,y:ke,z:we,members:Oe,offsets:Se}=Be,{edgeCount:Ve,a:Ne,b:K,edgeProps:{flag:ne,type:be}}=Ce,{sizeFactor:Te,ignoreHydrogens:ie,ignoreHydrogensVariant:ue,parentDisplay:re}=ee;if(!Ve)return v.e.createEmpty(g);const{elements:ve,conformation:ce}=Z,se=(0,y.eB)(),ae=(0,y.eB)(),ge=(0,y.eB)(),Ie={linkCount:2*Ve,position:(je,Lt,Je)=>{const en=be[Je];if(ie&&"all"===ue||en!==l.X8.HydrogenBond&&en!==l.X8.WeakHydrogenBond)y.eB.set(je,Re[Ne[Je]],ke[Ne[Je]],we[Ne[Je]]),y.eB.set(Lt,Re[K[Je]],ke[K[Je]],we[K[Je]]);else{const Bt=Oe[Se[Ne[Je]]],pn=Oe[Se[K[Je]]];ce.invariantPosition(ve[Bt],ae),ce.invariantPosition(ve[pn],ge);let $e=y.eB.distance(ae,ge),mt=$e;y.eB.copy(je,ae),y.eB.copy(Lt,ge),(0,C.B8)(Z,Bt,(_t,Me)=>{if((0,u.v3)(q,Z,ve[Me],"polar")){ce.invariantPosition(ve[Me],se);const Ke=y.eB.distance(se,ge);Ke<$e&&($e=Ke,y.eB.copy(je,se))}}),(0,C.B8)(Z,pn,(_t,Me)=>{if((0,u.v3)(q,Z,ve[Me],"polar")){ce.invariantPosition(ve[Me],se);const Ke=y.eB.distance(se,ae);Ke1,radius:je=>{le.element=ve[Oe[Se[Ne[je]]]];const Lt=Y.size.size(le);le.element=ve[Oe[Se[K[je]]]];const Je=Y.size.size(le);return Math.min(Lt,Je)*Te},ignore:je=>{if(ne[je]===l.tA.Filtered)return!0;if(xe)if("stub"===re){const Lt=Ne[je];for(let Je=Se[Lt],en=Se[Lt+1];Je0){const je=m.f8.expand((0,m.f8)(),(xe??Z).boundary.sphere,1*Te);Le.setBoundingSphere(je)}return Le})).apply(this,arguments)}const S={..._.Te,...b.Lr,...s};function D(j){return(0,_.Pv)({defaultProps:e.t.getDefaultValues(S),createGeometry:h,createLocationIterator:E,getLoci:R,eachLocation:p,setUpdateState:(Z,q,Y,ee,g,_e,xe)=>{Z.createGeometry=q.sizeFactor!==Y.sizeFactor||q.dashCount!==Y.dashCount||q.dashScale!==Y.dashScale||q.dashCap!==Y.dashCap||q.radialSegments!==Y.radialSegments||q.ignoreHydrogens!==Y.ignoreHydrogens||q.ignoreHydrogensVariant!==Y.ignoreHydrogensVariant||q.parentDisplay!==Y.parentDisplay;const le=O.r.get(_e.structure).version;Z.info.interactionsHash!==le&&(Z.createGeometry=!0,Z.updateTransform=!0,Z.updateColor=!0,Z.info.interactionsHash=le)}},j)}function R(j,Z,q){const{objectId:Y,instanceId:ee,groupId:g}=j;if(q===Y){const{structure:_e,group:xe}=Z,le=_e.unitMap.get(xe.units[ee].id),Ae=O.r.get(_e).value,{a:Be,b:Ce}=Ae.unitsContacts.get(le.id);return I.OG.Loci(_e,Ae,[{unitA:le,indexA:Be[g],unitB:le,indexB:Ce[g]},{unitA:le,indexA:Ce[g],unitB:le,indexB:Be[g]}])}return c.BL}const f=new Set;function p(j,Z,q,Y){let ee=!1;if(I.OG.isLoci(j)){const{structure:g,group:_e}=Z;if(!A.oE.areEquivalent(j.data.structure,g))return!1;const xe=O.r.get(g).value;if(j.data.interactions!==xe)return!1;const Ae=xe.unitsContacts.get(_e.units[0].id),Be=2*Ae.edgeCount;for(const Ce of j.elements){if(Ce.unitA!==Ce.unitB)continue;const Re=_e.unitIndexMap.get(Ce.unitA.id);if(void 0!==Re){const ke=Ae.getDirectedEdgeIndex(Ce.indexA,Ce.indexB);-1!==ke&&q(i.IX.ofSingleton(Re*Be+ke))&&(ee=!0)}}}else if(A.iZ.Loci.is(j)){const{structure:g,group:_e}=Z;if(!A.oE.areEquivalent(j.structure,g))return!1;const xe=O.r.get(g).value;if(!xe)return!1;const le=_e.units[0],Ae=xe.unitsContacts.get(le.id),Be=xe.unitsFeatures.get(le.id),Ce=2*Ae.edgeCount,{offset:Re}=Ae,{offsets:ke,indices:we}=Be.elementsIndex,{members:Oe,offsets:Se}=Be;for(const Ve of j.elements){const Ne=_e.unitIndexMap.get(Ve.unit.id);void 0!==Ne&&(i.CD.forEach(Ve.indices,K=>{for(let ne=ke[K],be=ke[K+1];ne{if(Y){const ne=Ae.a[K];for(let Te=Se[ne],ie=Se[ne+1];Te{const ke=q.units[Re];return Ae.unitA=ke,Ae.indexA=g.a[Ce],Ae.unitB=ke,Ae.indexB=g.b[Ce],le})}var T=n(3892),L=n(8672);function w(j,Z,q,Y,ee){if(!Z.hasAtomic)return v.e.createEmpty(ee);const g=A.iZ.Location.create(Z),_e=O.r.get(Z).value,{contacts:xe,unitsFeatures:le}=_e,{edgeCount:Ae,edges:Be}=xe,{sizeFactor:Ce,ignoreHydrogens:Re,ignoreHydrogensVariant:ke,parentDisplay:we}=Y;if(!Ae)return v.e.createEmpty(ee);const{child:Oe}=Z,Se=(0,y.eB)(),Ve=(0,y.eB)(),Ne=(0,y.eB)(),K={linkCount:Ae,position:(Te,ie,ue)=>{const{unitA:re,indexA:ve,unitB:ce,indexB:se,props:{type:ae}}=Be[ue],ge=le.get(re),Ie=le.get(ce),Le=Z.unitMap.get(re),nt=Z.unitMap.get(ce);if(Re&&"all"===ke||ae!==l.X8.HydrogenBond&&ae!==l.X8.WeakHydrogenBond)y.eB.set(Te,ge.x[ve],ge.y[ve],ge.z[ve]),y.eB.transformMat4(Te,Te,Le.conformation.operator.matrix),y.eB.set(ie,Ie.x[se],Ie.y[se],Ie.z[se]),y.eB.transformMat4(ie,ie,nt.conformation.operator.matrix);else{const je=ge.members[ge.offsets[ve]],Lt=Ie.members[Ie.offsets[se]];Le.conformation.position(Le.elements[je],Ve),nt.conformation.position(nt.elements[Lt],Ne);let Je=y.eB.distance(Ve,Ne),en=Je;y.eB.copy(Te,Ve),y.eB.copy(ie,Ne),(0,C.LH)(Z,Le,je,(Bt,pn)=>{const $e=Bt.elements[pn];if((0,u.v3)(Z,Bt,$e,"polar")){Bt.conformation.position($e,Se);const mt=y.eB.distance(Se,Ne);mt{const $e=Bt.elements[pn];if((0,u.v3)(Z,Bt,$e,"polar")){Bt.conformation.position($e,Se);const mt=y.eB.distance(Se,Ve);mt1,radius:Te=>{const ie=Be[Te],ue=le.get(ie.unitA);g.unit=Z.unitMap.get(ie.unitA),g.element=g.unit.elements[ue.members[ue.offsets[ie.indexA]]];const re=q.size.size(g),ve=le.get(ie.unitB);g.unit=Z.unitMap.get(ie.unitB),g.element=g.unit.elements[ve.members[ve.offsets[ie.indexB]]];const ce=q.size.size(g);return Math.min(re,ce)*Ce},ignore:Te=>{if(Be[Te].props.flag===l.tA.Filtered)return!0;if(Oe){const ie=Be[Te];if("stub"===we){const ue=Oe.unitMap.get(ie.unitA);if(!ue)return!0;const re=Z.unitMap.get(ie.unitA),{offsets:ve,members:ce}=le.get(ie.unitA);for(let se=ve[ie.indexA],ae=ve[ie.indexA+1];se0){const{child:Te}=Z,ie=m.f8.expand((0,m.f8)(),(Te??Z).boundary.sphere,1*Ce);ne.setBoundingSphere(ie)}return ne}const Q={...T.EN,...b.Lr,...s};function G(j){return(0,T.wA)({defaultProps:e.t.getDefaultValues(Q),createGeometry:w,createLocationIterator:H,getLoci:V,eachLocation:k,setUpdateState:(Z,q,Y,ee,g,_e,xe)=>{Z.createGeometry=q.sizeFactor!==Y.sizeFactor||q.dashCount!==Y.dashCount||q.dashScale!==Y.dashScale||q.dashCap!==Y.dashCap||q.radialSegments!==Y.radialSegments||q.ignoreHydrogens!==Y.ignoreHydrogens||q.ignoreHydrogensVariant!==Y.ignoreHydrogensVariant||q.parentDisplay!==Y.parentDisplay;const le=O.r.get(_e).version;Z.info.interactionsHash!==le&&(Z.createGeometry=!0,Z.updateTransform=!0,Z.updateColor=!0,Z.info.interactionsHash=le)}},j)}function V(j,Z,q){const{objectId:Y,groupId:ee}=j;if(q===Y){const g=O.r.get(Z).value,_e=g.contacts.edges[ee],xe=Z.unitMap.get(_e.unitA),le=Z.unitMap.get(_e.unitB);return I.OG.Loci(Z,g,[{unitA:xe,indexA:_e.indexA,unitB:le,indexB:_e.indexB},{unitA:le,indexA:_e.indexB,unitB:xe,indexB:_e.indexA}])}return c.BL}const U=new Map,N=new Set;function k(j,Z,q,Y){let ee=!1;if(I.OG.isLoci(j)){if(!A.oE.areEquivalent(j.data.structure,Z))return!1;const g=O.r.get(Z).value;if(j.data.interactions!==g)return!1;const{contacts:_e}=g;for(const xe of j.elements){const le=_e.getEdgeIndex(xe.indexA,xe.unitA.id,xe.indexB,xe.unitB.id);-1!==le&&q(i.IX.ofSingleton(le))&&(ee=!0)}}else if(A.iZ.Loci.is(j)){if(!A.oE.areEquivalent(j.structure,Z)||Y&&1===j.elements.length)return!1;const g=O.r.get(Z).value;if(!g)return!1;const{contacts:_e,unitsFeatures:xe}=g;for(const le of j.elements)U.set(le.unit.id,le.indices);for(const le of j.elements){const{unit:Ae}=le;L.Nf.isAtomic(Ae)&&i.CD.forEach(le.indices,Be=>{for(const Ce of _e.getContactIndicesForElement(Be,Ae))N.add(Ce)})}N.forEach(le=>{if(Y){const{indexA:Ae,unitA:Be,indexB:Ce,unitB:Re}=_e.edges[le],ke=U.get(Be),we=U.get(Re);if(!ke||!we)return;const{offsets:Oe,members:Se}=xe.get(Be);for(let K=Oe[Ae],ne=Oe[Ae+1];K{const Ae=q.edges[le];return _e.unitA=j.unitMap.get(Ae.unitA),_e.indexA=Ae.indexA,_e.unitB=j.unitMap.get(Ae.unitB),_e.indexB=Ae.indexB,g},!0)}var $=n(5201);const J={"intra-unit":(j,Z)=>(0,r.TP)("Intra-unit interactions cylinder",j,Z,D),"inter-unit":(j,Z)=>(0,r.Kp)("Inter-unit interactions cylinder",j,Z,G)},W={...S,...Q,unitKinds:(0,$.R8)(["atomic"]),sizeFactor:e.t.Numeric(.2,{min:.01,max:1,step:.01}),visuals:e.t.MultiSelect(["intra-unit","inter-unit"],e.t.objectToOptions(J))},ye=(0,r.GT)({name:"interactions",label:"Non-covalent Interactions",description:"Displays non-covalent interactions as dashed cylinders.",factory:function de(j,Z){return o.YL.createMulti("Interactions",j,Z,r.J1,J)},getParams:function te(j,Z){return e.t.clone(W)},defaultValues:e.t.getDefaultValues(W),defaultColorTheme:{name:"interaction-type"},defaultSizeTheme:{name:"uniform"},isApplicable:j=>j.elementCount>0&&O.r.isApplicable(j),ensureCustomProperties:{attach:(j,Z)=>O.r.attach(j,Z,void 0,!0),detach:j=>O.r.ref(j,!1)},getData:(j,Z)=>Z.includeParent?j.asParent():j,mustRecreate:(j,Z)=>j.includeParent!==Z.includeParent})},8699:(tn,Ue,n)=>{"use strict";n.d(Ue,{v:()=>_e});var e=n(467),o=n(4743),r=n(2434),t=n(8277),A=n(4369),y=n(4490),i=n(4506);const v=9,O=-27.888,b=-.5,_=-9.9;function M(Ce,Re,ke,we){const Oe=A.eB.distance(Ce,we),Se=A.eB.distance(Re,we),Ve=A.eB.distance(Re,ke),Ne=A.eB.distance(Ce,ke),be=O/Oe-O/Se+(O/Ve-O/Ne);return be<_?_:be}var u,Ce,m=n(9909);(Ce=u||(u={})).is=m.NJ.has,Ce.create=m.NJ.create;class d{constructor(Re,ke,we){this.partner1=Math.min(Re,ke),this.partner2=Math.max(Re,ke),this.type=we}}function h(Ce,Re){if(Re.type!==Ce.type||Re.partner1!==Ce.firstEnd+1)return!1;if(0===Re.type){if(Re.partner2===Ce.secondEnd+1)return!0}else if(Re.partner2===Ce.secondStart-1)return!0;return!1}function a(Ce,Re){return Ce.type===Re.type&&Re.firstStart-Ce.firstEnd<6&&Ce.firstStart0&&(Re.secondStart-Ce.secondEnd<6&&Re.firstStart-Ce.firstEnd<3||Re.secondStart-Ce.secondEnd<3)}function f(Ce){return u.is(Ce,8)||u.is(Ce,1)||u.is(Ce,16)}var T=n(5384),L=n(3543),w=n(9535);const V={oldDefinition:t.t.Boolean(!0,{description:"Whether to use the old DSSP convention for the annotation of turns and helices, causes them to be two residues shorter"}),oldOrdering:t.t.Boolean(!0,{description:"Alpha-helices are preferred over 3-10 helices"})};function U(Ce,Re){return N.apply(this,arguments)}function N(){return N=(0,e.A)(function*(Ce,Re){const ke=function G(Ce){const{index:Re}=Ce.model.atomicHierarchy,{proteinElements:ke,residueIndex:we}=Ce,Oe=ke.length,Se=new Uint32Array(Oe),Ve=new Int32Array(Oe),Ne=new Int32Array(Oe),K=new Int32Array(Oe),ne=new Int32Array(Oe);for(let be=0;beb||(ie[ie.length]=Lt,ue[ue.length]=Me,re[re.length]=Kt)}}return function l(Ce,Re,ke,we){const Oe=new i.O.DirectedEdgeBuilder(Ce,Re,ke),Se=new Float32Array(Oe.slotCount);for(let Ve=0,Ne=Oe.edgeCount;Ve-1===Le?A.eB.setNaN(nt):Se.position(Le,nt);let be=(0,A.eB)(),Te=(0,A.eB)(),ie=(0,A.eB)(),ue=(0,A.eB)(),re=(0,A.eB)(),ve=(0,A.eB)();const ce=(0,A.eB)(),se=(0,A.eB)(),ae=(0,A.eB)();if(0===K)return{phi:new Float32Array(0),psi:new Float32Array(0)};const ge=new Float32Array(K-1),Ie=new Float32Array(K-1);ne(-1,be),ne(-1,Te),ne(-1,ie),ne(ke[0],ue),ne(Ne[Oe[0]],re),ne(we[0],ve),ne(ke[1],ce),ne(Ne[Oe[1]],se),ne(we[1],ae);for(let Le=0;Le-1===se?A.eB.setNaN(ae):Oe.position(se,ae),be=(0,A.eB)(),Te=(0,A.eB)(),ie=(0,A.eB)(),ue=(0,A.eB)(),re=(0,A.eB)(),ve=(0,A.eB)(),ce=(0,A.eB)();e:for(let se=2;se6.25)continue e}const nt=Se[Ve[se]],je=Se[Ve[se+2]];ne(Se[Ve[se-2]],be),ne(nt,Te),ne(je,ie),A.eB.sub(ve,be,Te),A.eB.sub(ce,Te,ie);const Lt=(0,y.H)(A.eB.angle(ve,ce));Lt&&Lt>70&&(ke[se]|=32)}}(ue),function R(Ce){const{proteinInfo:Re,hbonds:ke,flags:we,bridges:Oe}=Ce,{offset:Se,b:Ve}=ke;let Ne,K;for(let ne=0,be=Re.residueIndices.length;neue||(Ne=ne+1,K=ue,Ne!==K&&-1!==ke.getDirectedEdgeIndex(K,Ne+1)&&(we[Ne]|=2,we[K]|=2,Oe[Oe.length]=new d(Ne,K,0)),Ne=ne,K=ue-1,Ne!==K&&-1!==ke.getDirectedEdgeIndex(K-1,Ne)&&(we[Ne]|=2,we[K]|=2,Oe[Oe.length]=new d(K,Ne,0)),Ne=ne,K=ue,Ne!==K&&-1!==ke.getDirectedEdgeIndex(K,Ne)&&(we[Ne]|=2,we[K]|=2,Oe[Oe.length]=new d(K,Ne,1)),Ne=ne+1,K=ue-1,Ne!==K&&-1!==ke.getDirectedEdgeIndex(K-1,Ne+1)&&(we[Ne]|=2,we[K]|=2,Oe[Oe.length]=new d(K,Ne,1)))}Oe.sort((ne,be)=>ne.partner1>be.partner1?1:ne.partner1L.SortedArray.indexOf(we,ge))}),N.apply(this,arguments)}function k(Ce,Re,ke){return"helix"===Ce?{kind:"helix",flags:ke(Re)}:"sheet"===Ce?{kind:"sheet",flags:ke(Re)}:"turn"===Ce||"bend"===Ce?{kind:"turn",flags:ke(Re)}:{kind:"none"}}function H(Ce){return Ce===r.gG.SecondaryStructureDssp.H||Ce===r.gG.SecondaryStructureDssp.G||Ce===r.gG.SecondaryStructureDssp.I?"helix":Ce===r.gG.SecondaryStructureDssp.B||Ce===r.gG.SecondaryStructureDssp.E?"sheet":Ce===r.gG.SecondaryStructureDssp.T?"turn":Ce===r.gG.SecondaryStructureDssp.S?"bend":"none"}function $(Ce){return u.is(Ce,1)?r.gG.SecondaryStructureDssp.H:u.is(Ce,4)?r.gG.SecondaryStructureDssp.E:u.is(Ce,2)?r.gG.SecondaryStructureDssp.B:u.is(Ce,8)?r.gG.SecondaryStructureDssp.G:u.is(Ce,16)?r.gG.SecondaryStructureDssp.I:u.is(Ce,64)?r.gG.SecondaryStructureDssp.T:u.is(Ce,32)?r.gG.SecondaryStructureDssp.S:0}function J(Ce){return u.is(Ce,1)?"H":u.is(Ce,4)?"E":u.is(Ce,2)?"B":u.is(Ce,8)?"G":u.is(Ce,16)?"I":u.is(Ce,64)?"T":u.is(Ce,32)?"S":"-"}function W(Ce){return u.is(Ce,16)?r.gG.SecondaryStructureDssp.I:u.is(Ce,1)?r.gG.SecondaryStructureDssp.H:u.is(Ce,4)?r.gG.SecondaryStructureDssp.E:u.is(Ce,2)?r.gG.SecondaryStructureDssp.B:u.is(Ce,8)?r.gG.SecondaryStructureDssp.G:u.is(Ce,64)?r.gG.SecondaryStructureDssp.T:u.is(Ce,32)?r.gG.SecondaryStructureDssp.S:0}function te(Ce){return u.is(Ce,16)?"I":u.is(Ce,1)?"H":u.is(Ce,4)?"E":u.is(Ce,2)?"B":u.is(Ce,8)?"G":u.is(Ce,64)?"T":u.is(Ce,32)?"S":"-"}var ye=n(8672),j=n(5439),Z=n(6710),q=n(1692),Y=n(5644);function ee(Ce){let Re="model";if(Ce){Re="dssp";for(let ke=0,we=Ce.models.length;ke!0,obtain:function(){var Ce=(0,e.A)(function*(Re,ke,we){const Oe={...t.t.getDefaultValues(g),...we};switch(Oe.type.name){case"dssp":return{value:yield xe(ke,Oe.type.params)};case"model":return{value:yield Ae(ke)}}});return function(ke,we,Oe){return Ce.apply(this,arguments)}}()});function xe(Ce,Re){return le.apply(this,arguments)}function le(){return le=(0,e.A)(function*(Ce,Re){const ke=new Map;for(let we=0,Oe=Ce.unitSymmetryGroups.length;we{"use strict";n.d(Ue,{YU:()=>u});var e=n(190),o=n(8277),r=n(6713),t=n(274),A=n(9469),y=n(2293),c=n(9126),i=n(8382);const v=(0,e.Q1)(13421772),b=(0,e._j)({HydrogenBond:2851770,Hydrophobic:8421504,HalogenBond:4259775,Ionic:15779860,MetalCoordination:9191577,CationPi:16744448,PiStacking:9220966,WeakHydrogenBond:12967404}),_=[["Hydrogen Bond",b.HydrogenBond],["Hydrophobic",b.Hydrophobic],["Halogen Bond",b.HalogenBond],["Ionic",b.Ionic],["Metal Coordination",b.MetalCoordination],["Cation Pi",b.CationPi],["Pi Stacking",b.PiStacking],["Weak HydrogenBond",b.WeakHydrogenBond]];function M(d){switch(d){case A.X8.HydrogenBond:return b.HydrogenBond;case A.X8.Hydrophobic:return b.Hydrophobic;case A.X8.HalogenBond:return b.HalogenBond;case A.X8.Ionic:return b.Ionic;case A.X8.MetalCoordination:return b.MetalCoordination;case A.X8.CationPi:return b.CationPi;case A.X8.PiStacking:return b.PiStacking;case A.X8.WeakHydrogenBond:return b.WeakHydrogenBond;case A.X8.Unknown:return v}}const I={},u={name:"interaction-type",label:"Interaction Type",category:t.J.Category.Misc,factory:function m(d,s){let C;const h=d.structure?r.r.get(d.structure):void 0,a=h?(0,i.vb)(h.id,h.version):-1;return C=h&&h.value?S=>{if(c.OG.isLocation(S)){const{unitsContacts:D,contacts:R}=S.data.interactions,{unitA:f,unitB:p,indexA:E,indexB:T}=S.element;if(f===p){const L=D.get(f.id),w=L.getDirectedEdgeIndex(E,T);return M(L.edgeProps.type[w])}{const L=R.getEdgeIndex(E,f.id,T,p.id);return M(R.edges[L].props.type)}}return v}:()=>v,{factory:m,granularity:"group",color:C,props:s,contextHash:a,description:"Assigns colors according the interaction type of a link.",legend:(0,y.h)(_)}},getParams:function l(d){return I},defaultValues:o.t.getDefaultValues(I),isApplicable:d=>!!d.structure,ensureCustomProperties:{attach:(d,s)=>s.structure?r.r.attach(d,s.structure,void 0,!0):Promise.resolve(),detach:d=>d.structure&&r.r.ref(d.structure,!1)}}},9311:(tn,Ue,n)=>{"use strict";n.d(Ue,{F:()=>D});var e=n(467),o=n(8277),r=n(9136),t=n(7126),A=n(3024),y=n(7767),c=n(2629),i=n(3543),v=n(2434);const O=new r.gn.ElementBondIterator,b=new r.gn.ElementBondIterator,I=new r.gn.ElementBondIterator,l=new r.gn.ElementBondIterator;function m(R,f,p,E){const T=(0,y.IS)(R,f,p,"H"),L=(0,y.$X)(f,p);let w=(0,y.M0)(f,p);const Q="always"===E.assignCharge||"auto"===E.assignCharge&&0===w,G="always"===E.assignH||"auto"===E.assignH&&0===T,V=(0,y.Hm)(R,f,p),U=function M(R,f,p){let E=0;const{offset:T,edgeProps:{flags:L,order:w}}=f.bonds;for(let Q=T[p],G=T[p+1];Q{const G=R.interUnitBonds.edges[Q];v.I$.isCovalent(G.props.flag)&&(E+=G.props.order)}),E}(R,f,p),N=function _(R,f,p){const E=(0,y.$X)(f,p),T="O"===E||"N"===E;if(T&&4===(0,y.Hm)(R,f,p))return!1;for(O.setElement(R,f,p);O.hasNext;){const L=O.move();if(L.order>1)return!0;if(T){const w=(0,y.$X)(L.otherUnit,L.otherIndex);for(b.setElement(R,L.otherUnit,L.otherIndex);b.hasNext;){const Q=b.move();if(Q.order>1){if(("P"===w||"S"===w)&&"O"===(0,y.$X)(Q.otherUnit,Q.otherIndex))continue;return!0}}}}return!1}(R,f,p),k=U-V>0;let H=0,$=A.G0.Unknown;switch(L){case"H":Q&&(0===V?(w=1,$=A.G0.Spherical):1===V&&(w=0,$=A.G0.Terminal));break;case"C":Q&&(w=0),G&&(H=Math.max(0,4-U-Math.abs(w))),$=(0,A.kx)(V+H+Math.max(0,-w));break;case"N":if(Q)if(G)if(N&&U<4)w=V-T==1&&U-T==2?1:0;else for(I.setElement(R,f,p);I.hasNext;){const J=I.move(),W=(0,y.$X)(J.otherUnit,J.otherIndex);if("S"===W||(0,t.kV)(W)){w=0;break}w=1}else w=U-3;G&&(H=Math.max(0,3-U+w)),$=(0,A.kx)(N&&!k?V+H-w:V+H+1-w);break;case"O":if(Q&&(G||(w=U-2),1===U)){I.setElement(R,f,p);e:for(;I.hasNext;){const J=I.move();for(l.setElement(R,J.otherUnit,J.otherIndex);l.hasNext;){const W=l.move();if((W.otherUnit!==f||W.otherIndex!==p)&&"O"===(0,y.$X)(W.otherUnit,W.otherIndex)&&2===W.order){w=-1;break e}}}}G&&(H=Math.max(0,2-U+w)),$=(0,A.kx)(N&&!k?V+H-w+1:V+H-w+2);break;case"S":Q&&(G||(w=U<=3&&0===(0,y.IS)(R,f,p,"O")?U-2:0)),G&&U<2&&(H=Math.max(0,2-U+w)),U<=3&&($=(0,A.kx)(V+H-w+2));break;case"F":case"CL":case"BR":case"I":case"AT":Q&&(w=U-1);break;case"LI":case"NA":case"K":case"RB":case"CS":case"FR":Q&&(w=1-U);break;case"BE":case"MG":case"CA":case"SR":case"BA":case"RA":Q&&(w=2-U);break;default:c.Bb&&console.warn("Requested charge, protonation for an unhandled element",L)}return[w,H,H+T,$]}function u(R,f,p){const E=f.elements.length,T=new Int8Array(E),L=new Int8Array(E),w=new Int8Array(E),Q=new Int8Array(E),G=!!R.parent;let V;if(G){const U=R.root.unitMap.get(f.id);if(V=i.SortedArray.indicesOf(U.elements,f.elements),V.length!==f.elements.length)throw new Error("expected to find an index for every element");f=U,R=R.root}for(let U=0;US,isApplicable:R=>!0,obtain:(R=(0,e.A)(function*(f,p,E){const T={...o.t.getDefaultValues(S),...E};return{value:yield s(f.runtime,p,T)}}),function(p,E,T){return R.apply(this,arguments)})});var R},6220:(tn,Ue,n)=>{"use strict";n.d(Ue,{W:()=>A});var A,e=n(467),o=n(2524),r=n(1692),t=n(387);!function(y){var b;function c(b){if(!o.K4.is(b.sourceData))return!1;const{pdbx_sifts_xref_db_name:_,pdbx_sifts_xref_db_acc:M,pdbx_sifts_xref_db_num:I,pdbx_sifts_xref_db_res:l}=b.sourceData.data.db.atom_site;return _.isDefined&&M.isDefined&&I.isDefined&&l.isDefined}function O(b){if(!o.K4.is(b.sourceData))return;const{pdbx_sifts_xref_db_name:_,pdbx_sifts_xref_db_acc:M,pdbx_sifts_xref_db_num:I,pdbx_sifts_xref_db_res:l}=b.sourceData.data.db.atom_site;if(!(_.isDefined&&M.isDefined&&I.isDefined&&l.isDefined))return;const{atomSourceIndex:m}=b.atomicHierarchy,{count:u,offsets:d}=b.atomicHierarchy.residueAtomSegments,s=new Array(u),C=new Array(u),h=new Array(u),a=new Array(u);for(let S=0;S({}),isApplicable:b=>c(b),obtain:(b=(0,e.A)(function*(_,M){return{value:O(M)}}),function(M,I){return b.apply(this,arguments)})}),y.isAvailable=c,y.getKey=function i(b){const _=b.unit.model,M=y.Provider.get(_).value;return M?M.accession[_.atomicHierarchy.residueAtomSegments.index[b.element]]:""},y.getLabel=function v(b){const _=b.unit.model,M=y.Provider.get(_).value;if(!M)return;const I=_.atomicHierarchy.residueAtomSegments.index[b.element],l=M.dbName[I];return l?`${l} ${M.accession[I]} ${M.num[I]} ${M.residue[I]}`:void 0}}(A||(A={}))},1692:(tn,Ue,n)=>{"use strict";n.d(Ue,{e:()=>o,v:()=>r});var e=n(9909);function o(t){return t}(o||(o={})).getUUID=function A(y){return y.__key||(y.__key=e.kk.create22()),y.__key};class r{constructor(){this._list=[],this._set=new Set,this._refs=new Map,this._assets=new Map}get all(){return this._list}add(A){this._set.has(A)||(this._list.push(A),this._set.add(A))}reference(A,y){let c=this._refs.get(A)||0;c+=y?1:-1,this._refs.set(A,Math.max(c,0))}hasReference(A){return(this._refs.get(A)||0)>0}has(A){return this._set.has(A)}assets(A,y){const c=this._assets.get(A);if(c)for(const i of c)i.dispose();y?this._assets.set(A,y):this._assets.delete(A)}dispose(){this._assets.forEach(A=>{for(const y of A)y.dispose()})}}},364:(tn,Ue,n)=>{"use strict";n.d(Ue,{LU:()=>e,cG:()=>r});const e={kind:"null-location"};function r(A,y,c){return{kind:"data-location",tag:A,data:y,element:c}}},3246:(tn,Ue,n)=>{"use strict";n.d(Ue,{$M:()=>l,BL:()=>I,FE:()=>_,QN:()=>C,e4:()=>m,g9:()=>s,xc:()=>M});var e=n(9136),o=n(1739),r=n(3558),t=n(5384),A=n(4369),y=n(8672),c=n(8277),i=n(9909),v=n(7136),O=n(7785),b=n(3162);const _={kind:"every-loci"};function M(h){return!!h&&"every-loci"===h.kind}const I={kind:"empty-loci"};function l(h){return!!h&&"empty-loci"===h.kind}function m(h){return!!h&&"data-loci"===h.kind}function s(h,a,S,D,R){return{kind:"data-loci",tag:h,data:a,elements:S,getBoundingSphere:D,getLabel:R}}var C;!function(h){const a=new v.Z("98");function E(N,k){var H;if("every-loci"!==N.kind&&"empty-loci"!==N.kind){if(k||(k=(0,t.f8)()),"structure-loci"===N.kind)return t.f8.copy(k,N.structure.boundary.sphere);if("element-loci"===N.kind)return t.f8.copy(k,e.iZ.Loci.getBoundary(N).sphere);if("bond-loci"===N.kind)return o.gn.getBoundingSphere(N,k);if("shape-loci"===N.kind)return t.f8.copy(k,N.shape.geometry.boundingSphere);if("group-loci"===N.kind)return r.$.getBoundingSphere(N,k);if("data-loci"===N.kind)return null===(H=N.getBoundingSphere)||void 0===H?void 0:H.call(N,k);if("volume-loci"===N.kind)return b.f.getBoundingSphere(N.volume,k);if("isosurface-loci"===N.kind)return b.f.Isosurface.getBoundingSphere(N.volume,N.isoValue,k);if("cell-loci"===N.kind)return b.f.Cell.getBoundingSphere(N.volume,N.indices,k);if("segment-loci"===N.kind)return b.f.Segment.getBoundingSphere(N.volume,N.segments,k)}}h.getBundleBoundingSphere=function S(N){const k=N.loci.map(H=>E(H)).filter(H=>!!H);a.reset();for(const H of k)a.includePositionRadius(H.center,H.radius);a.finishedIncludeStep();for(const H of k)a.radiusPositionRadius(H.center,H.radius);return a.getSphere()},h.areEqual=function D(N,k){return!!(M(N)&&M(k)||l(N)&&l(k))||(m(N)&&m(k)?function u(h,a){if(!(0,i.bN)(h.data,a.data)||h.tag!==a.tag||h.elements.length!==a.elements.length)return!1;for(let S=0,D=h.elements.length;SN,residue:N=>e.iZ.Loci.is(N)?e.iZ.Loci.extendToWholeResidues(N,!0):N,chain:N=>e.iZ.Loci.is(N)?e.iZ.Loci.extendToWholeChains(N):N,entity:N=>e.iZ.Loci.is(N)?e.iZ.Loci.extendToWholeEntities(N):N,model:N=>e.iZ.Loci.is(N)?e.iZ.Loci.extendToWholeModels(N):N,operator:N=>e.iZ.Loci.is(N)?e.iZ.Loci.extendToWholeOperators(N):N,structure:N=>e.iZ.Loci.is(N)?y.oE.toStructureElementLoci(N.structure):r.$.isLoci(N)?r.y.Loci(N.shape):b.f.Cell.isLoci(N)?b.f.Loci(N.volume):N,elementInstances:N=>e.iZ.Loci.is(N)?e.iZ.Loci.extendToAllInstances(N):N,residueInstances:N=>e.iZ.Loci.is(N)?e.iZ.Loci.extendToAllInstances(e.iZ.Loci.extendToWholeResidues(N,!0)):N,chainInstances:N=>e.iZ.Loci.is(N)?e.iZ.Loci.extendToAllInstances(e.iZ.Loci.extendToWholeChains(N)):N};function V(N,k){return Q[k](N)}h.GranularityOptions=c.t.objectToOptions(Q,N=>{switch(N){case"element":return"Atom/Coarse Element";case"elementInstances":return["Atom/Coarse Element Instances","With Symmetry"];case"structure":return"Structure/Shape";default:return N.indexOf("Instances")?[(0,O.Mk)(N),"With Symmetry"]:(0,O.Mk)(N)}}),h.simpleGranularity=function G(N){return N.replace("Instances","")},h.applyGranularity=V,h.normalize=function U(N,k,H=!1){return("element"!==k||H)&&o.gn.isLoci(N)&&(N=o.gn.toStructureElementLoci(N)),y.oE.isLoci(N)&&(N=y.oE.toStructureElementLoci(N.structure)),e.iZ.Loci.is(N)&&(N=e.iZ.Loci.remap(N,N.structure.root)),k&&(N=V(N,k)),N}}(C||(C={}))},4699:(tn,Ue,n)=>{"use strict";n.d(Ue,{g:()=>v});const e={HIS:"H",ARG:"R",LYS:"K",ILE:"I",PHE:"F",LEU:"L",TRP:"W",ALA:"A",MET:"M",PRO:"P",CYS:"C",ASN:"N",VAL:"V",GLY:"G",SER:"S",GLN:"Q",TYR:"Y",ASP:"D",GLU:"E",THR:"T",SEC:"U",PYL:"O",HSD:"H",HSE:"H",HSP:"H",LSN:"K",ASPP:"D",GLUP:"E",HID:"H",HIE:"H",HIP:"H",LYN:"K",ASH:"D",GLH:"E"},o={DA:"A",DC:"C",DG:"G",DT:"T",DU:"U"},r={A:"A",C:"C",G:"G",T:"T",U:"U"};function t(O){return e[O]||"X"}function A(O){return r[O]||"X"}function y(O){return o[O]||"X"}var v,c=n(6651),i=n(1372);!function(O){let b;var s;(s=b=O.Kind||(O.Kind={})).Protein="protein",s.RNA="RNA",s.DNA="DNA",s.Generic="generic",O.getSequenceString=function _(s){const C=s.code.toArray();return(C instanceof Array?C:Array.from(C)).join("")},O.ofResidueNames=function l(s,C){if(0===C.rowCount)throw new Error("cannot be empty");const h=function M(s){for(let C=0,h=Math.min(s.rowCount,10);C"X";break;default:(0,i.dr)(s)}return C&&C.size>0?a=>{const S=h(a);return"X"===S&&C.has(a)?h(C.get(a)):S}:h}(C),D=[],R=[],f=[],p=new Map;let E=0;const T=new Map;for(let w=0,Q=a.rowCount;w{const N=S(U);return"X"===N?U:N});L[w]=`(${V.join("|")})`}else L[w]="X"===D[w]?R[w]:D[w]}this.length=E,this.code=c.VP.ofStringArray(D),this.compId=c.VP.ofStringArray(R),this.seqId=c.VP.ofIntArray(f),this.label=c.VP.ofStringArray(L),this.microHet=p,this.indexMap=T}}O.ofSequenceRanges=function u(s,C){return new d(b.Generic,s,C)};class d{index(C){return C-this.minSeqId}constructor(C,h,a){this.kind=C,this.seqIdStart=h,this.seqIdEnd=a,this.microHet=new Map;let S=0,D=Number.MAX_SAFE_INTEGER;for(let f=0,p=this.seqIdStart.rowCount;ff+D+1,rowCount:R,schema:c.VP.Schema.int}),this.compId=c.VP.ofConst("",R,c.VP.Schema.str),this.length=R,this.minSeqId=D}}}(v||(v={}))},3558:(tn,Ue,n)=>{"use strict";n.d(Ue,{$:()=>e.$,y:()=>e.y});var e=n(528)},528:(tn,Ue,n)=>{"use strict";n.d(Ue,{$:()=>M,y:()=>_});var _,M,e=n(9909),o=n(3543),r=n(542),t=n(4369),A=n(5384),y=n(6290),c=n(350),i=n(2476),v=n(3596),O=n(8353),b=n(1888);!function(I){function m(D){return{color:(0,i.h2)({shape:D},{}),size:(0,c.$d)({shape:D},{})}}function u(D){const R=D.transforms.length,f=M.Location(D);return(0,b.iQ)(D.groupCount,R,1,(E,T)=>(f.group=E,f.instance=T,f))}function d(D,R,f,p,E){const T=E&&E.aTransform.ref.value.length>=16*D.length?E.aTransform.ref.value:new Float32Array(16*D.length);for(let L=0,w=D.length;L{for(let N=Q[U],k=Q[U+1];N{for(let N=Q[U],k=Q[U+1];N{const N=p.shape.getSize(U,V);T{"use strict";n.d(Ue,{P4:()=>y.P,gn:()=>t.gn,Kx:()=>r.Kx,RT:()=>A.RT,cY:()=>A.cY,oE:()=>t.oE,iZ:()=>t.iZ,StructureProperties:()=>t.StructureProperties,Oz:()=>A.Oz,cv:()=>A.cv,us:()=>t.us,vw:()=>r.vw,Nf:()=>t.Nf,X$:()=>t.X$}),n(1071),n(3346);var r=n(5644),t=n(8672),A=n(2516),y=n(7024)},1071:(tn,Ue,n)=>{"use strict";n.d(Ue,{E:()=>t,g:()=>r});var t,e=n(9909),o=n(6651);function r(A,y){return{value:A,unit:y}}!function(A){A.create=function y(M,I,l){const m=!!M[0].cell,u=!!M[0].velocities,d=!!M[0].forces;return{id:e.kk.create22(),frames:M,hasCell:m,hasVelocities:u,hasForces:d,deltaTime:I,timeOffset:l}},A.getAtomicConformation=function c(M,I,l){var m,u;let{x:d,y:s,z:C}=M;return M.xyzOrdering.frozen?l?M.xyzOrdering.isIdentity?(d=b(d,l),s=b(s,l),C=b(C,l)):(0,e.af)(M.xyzOrdering.index,l)||(d=O(d,M.xyzOrdering.index,l),s=O(s,M.xyzOrdering.index,l),C=O(C,M.xyzOrdering.index,l)):M.xyzOrdering.isIdentity||(d=_(d,M.xyzOrdering.index),s=_(s,M.xyzOrdering.index),C=_(C,M.xyzOrdering.index)):l&&(M.xyzOrdering.isIdentity?(M.xyzOrdering.isIdentity=!1,M.xyzOrdering.index=l,v(d,l),v(s,l),v(C,l)):(0,e.af)(M.xyzOrdering.index,l)||(d=O(d,M.xyzOrdering.index,l),s=O(s,M.xyzOrdering.index,l),C=O(C,M.xyzOrdering.index,l))),M.xyzOrdering.frozen=!0,{id:e.kk.create22(),atomId:I.atomId,occupancy:null!==(m=I.occupancy)&&void 0!==m?m:o.VP.ofConst(1,M.elementCount,o.VP.Schema.int),B_iso_or_equiv:null!==(u=I.B_iso_or_equiv)&&void 0!==u?u:o.VP.ofConst(0,M.elementCount,o.VP.Schema.float),xyzDefined:!0,x:d,y:s,z:C}};const i=[.123];function v(M,I){const l=i;for(let m=0,u=M.length;m{"use strict";n.d(Ue,{mQ:()=>c}),n(8672),n(3543);var r=n(7421),t=n(6651);const c={molstar_atom_site_operator_mapping:{label_asym_id:t.VP.Schema.Str(),auth_asym_id:t.VP.Schema.Str(),operator_name:t.VP.Schema.Str(),suffix:t.VP.Schema.Str(),assembly_id:t.VP.Schema.Str(),assembly_operator_id:t.VP.Schema.Int(),symmetry_operator_index:t.VP.Schema.Int(),symmetry_hkl:t.VP.Schema.Vector(3),ncs_id:t.VP.Schema.Int()}},i=(M,I)=>typeof I[M].operator.assembly>"u"?1:0,v=(M,I)=>-1===I[M].operator.spgrOp?1:0;r.c.fields().str("label_asym_id",(M,I)=>I[M].label_asym_id).str("auth_asym_id",(M,I)=>I[M].auth_asym_id).str("operator_name",(M,I)=>I[M].operator.name).str("suffix",(M,I)=>I[M].operator.suffix).str("assembly_id",(M,I)=>{var l;return(null===(l=I[M].operator.assembly)||void 0===l?void 0:l.id)||""},{valueKind:i}).int("assembly_operator_id",(M,I)=>{var l;return(null===(l=I[M].operator.assembly)||void 0===l?void 0:l.operId)||0},{valueKind:i}).int("symmetry_operator_index",(M,I)=>I[M].operator.spgrOp,{valueKind:v}).vec("symmetry_hkl",[(M,I)=>I[M].operator.hkl[0],(M,I)=>I[M].operator.hkl[1],(M,I)=>I[M].operator.hkl[2]],{valueKind:v}).int("ncs_id",(M,I)=>I[M].operator.ncsId,{valueKind:v}).getFields()},5644:(tn,Ue,n)=>{"use strict";n.d(Ue,{Kx:()=>e.K,vw:()=>r.v});var i,e=n(4632),r=(n(2434),n(9032)),A=(n(6144),n(8672)),y=n(3543),c=n(9909);function v(M){const I=new Map;for(let l=0,m=M.length;lD.atomicHierarchy.residueAtomSegments;M.fromResidueMap=function d(D){return new O("residue",D,u,0)},M.fromResidueArray=function s(D){return new O("residue",v(D),u,0)};const C=D=>D.atomicHierarchy.chainAtomSegments;M.fromChainMap=function h(D){return new O("chain",D,C,0)},M.fromChainArray=function a(D){return new O("chain",v(D),C,0)},M.fromEntityMap=function S(D){return new _(D)}}(i||(i={}));class O{has(I){return this.map.has(I)}get(I){return this.map.get(I)}getStructureElements(I){const l=I.models;if(1!==l.length)throw new Error("Only works on structures with a single model.");const m=new Set,u=I.unitSymmetryGroups,d=[],s=this.segmentGetter(l[0]);for(const C of u){const h=C.units[0];if(h.kind!==this.kind)continue;const a=y.hT.transientSegments(s,h.elements);for(;a.hasNext;){const S=a.move();!this.has(S.index)||m.has(S.index)||(m.add(S.index),d[d.length]=A.iZ.Location.create(I,h,h.elements[S.start]))}}return d.sort((C,h)=>C.element-h.element),d}getElements(I){const l=this.segmentGetter(I.model).index,m=this.getStructureElements(I);return{elements:m,property:u=>this.get(l[m[u].element])}}constructor(I,l,m,u){this.level=I,this.map=l,this.segmentGetter=m,this.id=c.kk.create22(),this.kind=u}}class b{has(I){return this.map.has(I)}get(I){return this.map.get(I)}getStructureElements(I){if(1!==I.models.length)throw new Error("Only works on structures with a single model.");const m=new Set,u=I.unitSymmetryGroups,d=[];for(const s of u){const C=s.units[0];if(C.kind!==this.kind)continue;const h=C.elements;for(let a=0,S=h.length;as.element-C.element),d}getElements(I){const l=this.getStructureElements(I);return{elements:l,property:m=>this.get(l[m].element)}}constructor(I){this.map=I,this.id=c.kk.create22(),this.level="atom",this.kind=0}}class _{has(I){return this.map.has(I)}get(I){return this.map.get(I)}getStructureElements(I){const l=I.models;if(1!==l.length)throw new Error("Only works on structures with a single model.");const m=l[0].atomicHierarchy.index,u=new Set,d=I.unitSymmetryGroups,s=[],C=l[0].atomicHierarchy.chainAtomSegments;for(const h of d){const a=h.units[0];if(a.kind!==this.kind)continue;const S=y.hT.transientSegments(C,a.elements);for(;S.hasNext;){const D=S.move(),R=m.getEntityFromChain(D.index);!this.has(R)||u.has(R)||(u.add(R),s[s.length]=A.iZ.Location.create(I,a,a.elements[D.start]))}}return s.sort((h,a)=>h.element-a.element),s}getElements(I){const l=this.getStructureElements(I),m=I.model.atomicHierarchy.chainAtomSegments.index,u=I.model.atomicHierarchy.index;return{elements:l,property:d=>this.get(u.getEntityFromChain(m[l[d].element]))}}constructor(I){this.map=I,this.id=c.kk.create22(),this.level="entity",this.kind=0}}},4632:(tn,Ue,n)=>{"use strict";n.d(Ue,{K:()=>d});var d,e=n(467),o=n(3559),r=n(1692),t=n(4369),A=n(6115),i=n(1071),v=n(4824),O=n(8334),b=n(2921),_=n(2524),M=n(9651),I=n(6651),l=n(387),m=n(7024),u=n(6710);!function(s){function C(_e,xe){const le=[],{frames:Ae}=xe,Be=_e.atomicHierarchy.atomSourceIndex,Re=I.VP.isIdentity(Be)?void 0:Be.toArray({array:Int32Array}),ke=V(_e),we=_e.atomicHierarchy.atoms._rowCount;for(let Oe=0,Se=Ae.length;Oe_e._dynamicPropertyData[E]||{index:0,size:1},set:(_e,xe)=>_e._dynamicPropertyData[E]=xe};const T="__AsymIdCount__";s.AsymIdCount={get(_e){if(_e._dynamicPropertyData[T])return _e._dynamicPropertyData[T];const xe=function c(s){const C=new Set,h=new Set;return s.properties.structAsymMap.forEach(({auth_id:a},S)=>{C.add(a),h.add(S)}),{auth:C.size,label:h.size}}(_e);return _e._dynamicPropertyData[T]=xe,xe}},s.AsymIdOffset=l._.createSimple("asym_id_offset","static"),s.Index=l._.createSimple("index","static"),s.MaxIndex=l._.createSimple("max_index","static"),s.getRoot=function L(_e){return _e.parent||_e},s.areHierarchiesEqual=function w(_e,xe){return _e.atomicHierarchy===xe.atomicHierarchy&&_e.coarseHierarchy===xe.coarseHierarchy};const Q="__CoordinatesHistory__";s.CoordinatesHistory={get:_e=>_e._staticPropertyData[Q],set:(_e,xe)=>_e._staticPropertyData[Q]=xe};const G="__CoarseGrained__";function V(_e){let xe=s.CoarseGrained.get(_e);if(void 0===xe){let le=0;const{polymerType:Ae}=_e.atomicHierarchy.derived.residue;for(let we=0;we_e._staticPropertyData[G],set:(_e,xe)=>_e._staticPropertyData[G]=xe},s.isCoarseGrained=V,s.hasCarbohydrate=function U(_e){return _e.properties.saccharideComponentMap.size>0},s.hasProtein=function N(_e){const{subtype:xe}=_e.entities;for(let le=0,Ae=xe.rowCount;le=0)return!0;return!1}function j(_e){if(!_.K4.is(_e.sourceData))return!1;const{db:xe}=_e.sourceData.data;for(let le=0;le=0)return!0;return!1}function q(_e){if(!_.K4.is(_e.sourceData)||!ye(_e))return!1;const{db:xe}=_e.sourceData.data,{status_code_sf:le}=xe.pdbx_database_status;return le.isDefined&&"REL"===le.value(0)}function Y(_e){if(!_.K4.is(_e.sourceData))return!1;const{db:xe}=_e.sourceData.data,{db_name:le,content_type:Ae}=xe.pdbx_database_related;for(let Be=0,Ce=xe.pdbx_database_related._rowCount;Be=0)return!0;return!1},s.hasXrayMap=q,s.hasEmMap=Y,s.hasDensityMap=ee,s.probablyHasDensityMap=function g(_e){if(!_.K4.is(_e.sourceData))return!1;const{db:xe}=_e.sourceData.data;return ee(_e)||$(_e)&&(!xe.exptl.method.isDefined||ye(_e)&&(!xe.pdbx_database_status.status_code_sf.isDefined||2===xe.pdbx_database_status.status_code_sf.valueKind(0))||j(_e)&&!xe.pdbx_database_related.db_name.isDefined)}}(d||(d={}))},2008:(tn,Ue,n)=>{"use strict";n.d(Ue,{A9:()=>o.A9,K9:()=>o.K9,PR:()=>o.PR,c1:()=>e.c1,sO:()=>o.sO,vE:()=>e.vE,wi:()=>e.wi,yA:()=>e.yA});var e=n(6724),o=n(5342)},5373:(tn,Ue,n)=>{"use strict";n.d(Ue,{e:()=>r,m:()=>A});var e=n(2434);const o=new Map([["HIS|CD2|CG",2],["HIS|CE1|ND1",2],["ARG|CZ|NH2",2],["PHE|CE1|CZ",2],["PHE|CD2|CE2",2],["PHE|CD1|CG",2],["TRP|CD1|CG",2],["TRP|CD2|CE2",2],["TRP|CE3|CZ3",2],["TRP|CH2|CZ2",2],["ASN|CG|OD1",2],["GLN|CD|OE1",2],["TYR|CD1|CG",2],["TYR|CD2|CE2",2],["TYR|CE1|CZ",2],["ASP|CG|OD1",2],["GLU|CD|OE1",2],["G|C8|N7",2],["G|C4|C5",2],["G|C2|N3",2],["G|C6|O6",2],["C|C4|N3",2],["C|C5|C6",2],["C|C2|O2",2],["A|C2|N3",2],["A|C6|N1",2],["A|C4|C5",2],["A|C8|N7",2],["U|C5|C6",2],["U|C2|O2",2],["U|C4|O4",2],["DG|C8|N7",2],["DG|C4|C5",2],["DG|C2|N3",2],["DG|C6|O6",2],["DC|C4|N3",2],["DC|C5|C6",2],["DC|C2|O2",2],["DA|C2|N3",2],["DA|C6|N1",2],["DA|C4|C5",2],["DA|C8|N7",2],["DT|C5|C6",2],["DT|C2|O2",2],["DT|C4|O4",2]]);function r(y,c,i){return[c,i]=ci&&([y,i]=[i,y],[c,v]=[v,c]),t.get(`${y}|${c}|${i}|${v}`)||1}},6724:(tn,Ue,n)=>{"use strict";n.d(Ue,{c1:()=>A,or:()=>y,vE:()=>c,wi:()=>r,yA:()=>t});var e=n(6651),o=n(7357);const r={type_symbol:e.VP.Schema.Aliased(o.r.atom_site.type_symbol),label_atom_id:o.r.atom_site.label_atom_id,auth_atom_id:o.r.atom_site.auth_atom_id,label_alt_id:o.r.atom_site.label_alt_id,label_comp_id:o.r.atom_site.label_comp_id,auth_comp_id:o.r.atom_site.auth_comp_id,pdbx_formal_charge:o.r.atom_site.pdbx_formal_charge},t={group_PDB:o.r.atom_site.group_PDB,label_seq_id:o.r.atom_site.label_seq_id,auth_seq_id:o.r.atom_site.auth_seq_id,pdbx_PDB_ins_code:o.r.atom_site.pdbx_PDB_ins_code},A={label_asym_id:o.r.atom_site.label_asym_id,auth_asym_id:o.r.atom_site.auth_asym_id,label_entity_id:o.r.atom_site.label_entity_id};var y,c;(y||(y={})).EmptyResidueKey=function v(){return{label_entity_id:"",label_asym_id:"",auth_seq_id:0,pdbx_PDB_ins_code:void 0}},function(i){function v(_,M){return _.residueAtomSegments.index[_.chainAtomSegments.offsets[M]]}function O(_,M){return _.residueAtomSegments.index[_.chainAtomSegments.offsets[M+1]-1]+1}i.chainStartResidueIndex=v,i.chainEndResidueIndexExcl=O,i.chainResidueCount=function b(_,M){return O(_,M)-v(_,M)}}(c||(c={}))},5342:(tn,Ue,n)=>{"use strict";n.d(Ue,{A9:()=>i,K9:()=>e,PR:()=>v,sO:()=>c});const e={H:1,D:1,T:1,HE:2,LI:3,BE:4,B:5,C:6,N:7,O:8,F:9,NE:10,NA:11,MG:12,AL:13,SI:14,P:15,S:16,CL:17,AR:18,K:19,CA:20,SC:21,TI:22,V:23,CR:24,MN:25,FE:26,CO:27,NI:28,CU:29,ZN:30,GA:31,GE:32,AS:33,SE:34,BR:35,KR:36,RB:37,SR:38,Y:39,ZR:40,NB:41,MO:42,TC:43,RU:44,RH:45,PD:46,AG:47,CD:48,IN:49,SN:50,SB:51,TE:52,I:53,XE:54,CS:55,BA:56,LA:57,CE:58,PR:59,ND:60,PM:61,SM:62,EU:63,GD:64,TB:65,DY:66,HO:67,ER:68,TM:69,YB:70,LU:71,HF:72,TA:73,W:74,RE:75,OS:76,IR:77,PT:78,AU:79,HG:80,TL:81,PB:82,BI:83,PO:84,AT:85,RN:86,FR:87,RA:88,AC:89,TH:90,PA:91,U:92,NP:93,PU:94,AM:95,CM:96,BK:97,CF:98,ES:99,FM:100,MD:101,NO:102,LR:103,RF:104,DB:105,SG:106,BH:107,HS:108,MT:109},o={1:1.1,2:1.4,3:1.81,4:1.53,5:1.92,6:1.7,7:1.55,8:1.52,9:1.47,10:1.54,11:2.27,12:1.73,13:1.84,14:2.1,15:1.8,16:1.8,17:1.75,18:1.88,19:2.75,20:2.31,21:2.3,22:2.15,23:2.05,24:2.05,25:2.05,26:2.05,27:2,28:2,29:2,30:2.1,31:1.87,32:2.11,33:1.85,34:1.9,35:1.83,36:2.02,37:3.03,38:2.49,39:2.4,40:2.3,41:2.15,42:2.1,43:2.05,44:2.05,45:2,46:2.05,47:2.1,48:2.2,49:2.2,50:1.93,51:2.17,52:2.06,53:1.98,54:2.16,55:3.43,56:2.68,57:2.5,58:2.48,59:2.47,60:2.45,61:2.43,62:2.42,63:2.4,64:2.38,65:2.37,66:2.35,67:2.33,68:2.32,69:2.3,70:2.28,71:2.27,72:2.25,73:2.2,74:2.1,75:2.05,76:2,77:2,78:2.05,79:2.1,80:2.05,81:1.96,82:2.02,83:2.07,84:1.97,85:2.02,86:2.2,87:3.48,88:2.83,89:2,90:2.4,91:2,92:2.3,93:2,94:2,95:2,96:2,97:2,98:2,99:2,100:2,101:2,102:2,103:2,104:2,105:2,106:2,107:2,108:2,109:2},r={1:1.008,2:4.0026,3:6.94,4:9.0122,5:10.81,6:10.81,7:14.007,8:15.999,9:18.998,10:20.18,11:22.99,12:24.305,13:26.982,14:28.085,15:30.974,16:32.06,17:35.45,18:39.948,19:39.098,20:40.078,21:44.956,22:47.867,23:50.942,24:51.996,25:54.938,26:55.845,27:58.933,28:58.693,29:63.546,30:65.38,31:69.723,32:72.63,33:74.922,34:78.971,35:79.904,36:83.798,37:85.468,38:87.62,39:88.906,40:91.224,41:92.906,42:95.95,43:96.906,44:101.07,45:102.91,46:106.42,47:107.87,48:112.41,49:114.82,50:118.71,51:121.76,52:127.6,53:127.6,54:131.29,55:132.91,56:137.33,57:138.91,58:140.12,59:140.91,60:144.24,61:144.912,62:150.36,63:151.96,64:157.25,65:158.93,66:162.5,67:164.93,68:167.26,69:168.93,70:173.05,71:174.97,72:178.49,73:180.95,74:183.84,75:186.21,76:190.23,77:192.22,78:195.08,79:196.97,80:200.59,81:204.38,82:207.2,83:208.98,84:1.97,85:2.02,86:2.2,87:3.48,88:2.83,89:2,90:232.04,91:231.04,92:238.03,93:237.048,94:244.064,95:243.061,96:247.07,97:247.07,98:251.079,99:252.083,100:257.095,101:258.098,102:259.101,103:262.11,104:267.122,105:270.131,106:271.134,107:270.133,108:270.134,109:278.156},t=1.7,A=10.81,y=0;function c(O){const b=e[O];return void 0===b?t:o[b]}function i(O){const b=e[O];return void 0===b?A:r[b]}function v(O){const b=e[O];return void 0===b?y:b}},7126:(tn,Ue,n)=>{"use strict";n.d(Ue,{Hx:()=>s,Z6:()=>o,kV:()=>a,lb:()=>d});var e=n(5342);const o={H:"Hydrogen",HE:"Helium",LI:"Lithium",BE:"Beryllium",B:"Boron",C:"Carbon",N:"Nitrogen",O:"Oxygen",F:"Fluorine",NE:"Neon",NA:"Sodium",MG:"Magnesium",AL:"Aluminum",SI:"Silicon",P:"Phosphorus",S:"Sulfur",CL:"Chlorine",AR:"Argon",K:"Potassium",CA:"Calcium",SC:"Scandium",TI:"Titanium",V:"Vanadium",CR:"Chromium",MN:"Manganese",FE:"Iron",CO:"Cobalt",NI:"Nickel",CU:"Copper",ZN:"Zinc",GA:"Gallium",GE:"Germanium",AS:"Arsenic",SE:"Selenium",BR:"Bromine",KR:"Krypton",RB:"Rubidium",SR:"Strontium",Y:"Yttrium",ZR:"Zirconium",NB:"Niobium",MO:"Molybdenum",TC:"Technetium",RU:"Ruthenium",RH:"Rhodium",PD:"Palladium",AG:"Silver",CD:"Cadmium",IN:"Indium",SN:"Tin",SB:"Antimony",TE:"Tellurium",I:"Iodine",XE:"Xenon",CS:"Cesium",BA:"Barium",LA:"Lanthanum",CE:"Cerium",PR:"Praseodymium",ND:"Neodymium",PM:"Promethium",SM:"Samarium",EU:"Europium",GD:"Gadolinium",TB:"Terbium",DY:"Dysprosium",HO:"Holmium",ER:"Erbium",TM:"Thulium",YB:"Ytterbium",LU:"Lutetium",HF:"Hafnium",TA:"Tantalum",W:"Wolfram",RE:"Rhenium",OS:"Osmium",IR:"Iridium",PT:"Platinum",AU:"Gold",HG:"Mercury",TL:"Thallium",PB:"Lead",BI:"Bismuth",PO:"Polonium",AT:"Astatine",RN:"Radon",FR:"Francium",RA:"Radium",AC:"Actinium",TH:"Thorium",PA:"Protactinium",U:"Uranium",NP:"Neptunium",PU:"Plutonium",AM:"Americium",CM:"Curium",BK:"Berkelium",CF:"Californium",ES:"Einsteinium",FM:"Fermium",MD:"Mendelevium",NO:"Nobelium",LR:"Lawrencium",RF:"Rutherfordium",DB:"Dubnium",SG:"Seaborgium",BH:"Bohrium",HS:"Hassium",MT:"Meitnerium",DS:"Darmstadtium",RG:"Roentgenium",CN:"Copernicium",NH:"Nihonium",FL:"Flerovium",MC:"Moscovium",LV:"Livermorium",TS:"Tennessine",OG:"Oganesson"},r=new Set(["LI","NA","K","RB","CS","FR"]),A=new Set(["BE","MG","CA","SR","BA","RA"]),M=new Set(["ZN","GA","CD","IN","SN","HG","TI","PB","BI","PO","CN"]),u=new Set(["F","CL","BR","I","AT"]);function d(D){return u.has(D)}function s(D){const R=(0,e.PR)(D);return R>=21&&R<=29||R>=39&&R<=47||R>=72&&R<=79||R>=104&&R<=108}function a(D){return function t(D){return r.has(D)}(D)||function y(D){return A.has(D)}(D)||function C(D){const R=(0,e.PR)(D);return R>=57&&R<=71}(D)||function h(D){const R=(0,e.PR)(D);return R>=89&&R<=103}(D)||s(D)||function I(D){return M.has(D)}(D)}},4811:(tn,Ue,n)=>{"use strict";n.d(Ue,{T:()=>c});var c,e=n(9207),o=n(1692),r=n(6651),t=n(7421),A=n(2524),y=n(7754);!function(i){const v="molstar_global_model_transform_info";function b(l){return i.Provider.get(l)}i.Schema={[v]:{matrix:r.VP.Schema.Matrix(4,4,r.VP.Schema.float)}},i.Descriptor=(0,o.e)({name:v,cifExport:{categories:[{name:v,instance(l){const m=b(l.firstModel);if(!m)return t.c.Category.Empty;const u=r.XI.ofRows(i.Schema.molstar_global_model_transform_info,[{matrix:m}]);return t.c.Category.ofTable(u)}}],prefix:"molstar"}}),i.Provider=e.q.create(i.Descriptor),i.attach=function O(l,m){l.customProperties.has(i.Descriptor)||l.customProperties.add(i.Descriptor),i.Provider.set(l,m)},i.get=b,i.fromMmCif=function _(l){if(!A.K4.is(l.sourceData))return;const m=l.sourceData.data.frame.categories[v];if(!m)return;const u=(0,y.MR)(i.Schema[v],m);return 0!==u._rowCount?u.matrix.value(0):void 0},i.hasData=function M(l){if(!A.K4.is(l.sourceData))return!1;const m=l.sourceData.data.frame.categories[v];return!!m&&m.rowCount>0},i.writeMmCif=function I(l,m){l.writeCategory({name:v,instance(){const u=r.XI.ofRows(i.Schema.molstar_global_model_transform_info,[{matrix:m}]);return t.c.Category.ofTable(u)}})}}(c||(c={}))},4743:(tn,Ue,n)=>{"use strict";function e(o,r,t,A){return{type:o,key:r,elements:t,getIndex:A}}n.d(Ue,{M:()=>e})},6144:(tn,Ue,n)=>{"use strict";n.d(Ue,{V:()=>r});var r,e=n(6651),o=n(4699);!function(t){const A={byEntityKey:{},sequences:[]};function y(...b){const _=[],M={};for(let I=0,l=b.length;I{"use strict";n.d(Ue,{N:()=>A,v:()=>y});var c,y,e=n(8382),o=n(5384),r=n(9651),t=n(4490);class A{get operatorGroups(){return this._operators||(this._operators=this.operatorsProvider()),this._operators}constructor(i,v,O){this.operatorsProvider=O,this.id=i,this.details=v}}(c=A||(A={})).create=function i(v,O,b){return new c(v,O,b)},function(c){c.Default={assemblies:[],spacegroup:o.is.ZeroP1,isNonStandardCrystalFrame:!1},c.findAssembly=function i(O,b){const _=b.toLocaleLowerCase(),M=r.i.Provider.get(O);return M?(0,e.L9)(M.assemblies,I=>I.id.toLowerCase()===_):void 0},c.getUnitcellLabel=function v(O){const{cell:b,name:_,num:M}=O.spacegroup,{size:I,anglesInRadians:l}=b,m=I[0].toFixed(2),u=I[1].toFixed(2),d=I[2].toFixed(2),s=(0,t.H)(l[0]).toFixed(2),C=(0,t.H)(l[1]).toFixed(2),h=(0,t.H)(l[2]).toFixed(2),a=[];return a.push(`Unit Cell ${_} #${M}`),a.push(`${m}\xd7${u}\xd7${d} \u212b`),a.push(`\u03b1=${s}\xb0 \u03b2=${C}\xb0 \u03b3=${h}\xb0`),a.join(" | ")}}(y||(y={}))},2434:(tn,Ue,n)=>{"use strict";n.d(Ue,{uA:()=>L,Ke:()=>E,ii:()=>k,I$:()=>le,K5:()=>w,DF:()=>G,F1:()=>c,HA:()=>M,px:()=>J,Pt:()=>b,DB:()=>_,Xk:()=>Ae,XQ:()=>Q,gG:()=>g,mw:()=>p,ut:()=>de,bM:()=>ye,FW:()=>v,UC:()=>Z,wZ:()=>j,RN:()=>W,nO:()=>te,OV:()=>Y,z7:()=>q,iu:()=>ee,VH:()=>H,qN:()=>$});var e=n(9455),o=n(442),r=n(9986);const t=new Set(["DAPC","DBPC","DFPC","DGPC","DIPC","DLPC","DNPC","DOPC","DPPC","DRPC","DTPC","DVPC","DXPC","DYPC","LPPC","PAPC","PEPC","PGPC","PIPC","POPC","PRPC","PUPC","DAPE","DBPE","DFPE","DGPE","DIPE","DLPE","DNPE","DOPE","DPPE","DRPE","DTPE","DUPE","DVPE","DXPE","DYPE","LPPE","PAPE","PGPE","PIPE","POPE","PQPE","PRPE","PUPE","DAPS","DBPS","DFPS","DGPS","DIPS","DLPS","DNPS","DOPS","DPPS","DRPS","DTPS","DUPS","DVPS","DXPS","DYPS","LPPS","PAPS","PGPS","PIPS","POPS","PQPS","PRPS","PUPS","DAPG","DBPG","DFPG","DGPG","DIPG","DLPG","DNPG","DOPG","DPPG","DRPG","DTPG","DVPG","DXPG","DYPG","LPPG","PAPG","PGPG","PIPG","POPG","PRPG","DAPA","DBPA","DFPA","DGPA","DIPA","DLPA","DNPA","DOPA","DPPA","DRPA","DTPA","DVPA","DXPA","DYPA","LPPA","PAPA","PGPA","PIPA","POPA","PRPA","PUPA","DPP","DPPI","PAPI","PIPI","POP","POPI","PUPI","PVP","PVPI","PADG","PIDG","PODG","PUDG","PVDG","APC","CPC","IPC","LPC","OPC","PPC","TPC","UPC","VPC","BNSM","DBSM","DPSM","DXSM","PGSM","PNSM","POSM","PVSM","XNSM","DPCE","DXCE","PNCE","XNCE","DMPC"]),A=new Set(["118","119","543","1AL","1CU","2FK","2HP","2OF","3CO","3MT","3NI","3OF","3P8","4MO","4PU","4TI","6MO","ACT","AG","AL","ALF","AM","ATH","AU","AU3","AUC","AZI","BA","BCT","BEF","BF4","BO4","BR","BS3","BSY","CA","CAC","CD","CD1","CD3","CD5","CE","CF","CHT","CL","CO","CO3","CO5","CON","CR","CS","CSB","CU","CU1","CU3","CUA","CUZ","CYN","DME","DMI","DSC","DTI","DY","E4N","EDR","EMC","ER3","EU","EU3","F","FE","FE2","FPO","GA","GD3","GEP","HAI","HG","HGC","IN","IOD","IR","IR3","IRI","IUM","K","KO4","LA","LCO","LCP","LI","LU","MAC","MG","MH2","MH3","MLI","MMC","MN","MN3","MN5","MN6","MO1","MO2","MO3","MO4","MO5","MO6","MOO","MOS","MOW","MW1","MW2","MW3","NA","NA2","NA5","NA6","NAO","NAW","ND","NET","NH4","NI","NI1","NI2","NI3","NO2","NO3","NRU","NT3","O4M","OAA","OC1","OC2","OC3","OC4","OC5","OC6","OC7","OC8","OCL","OCM","OCN","OCO","OF1","OF2","OF3","OH","OS","OS4","OXL","PB","PBM","PD","PDV","PER","PI","PO3","PO4","PR","PT","PT4","PTN","RB","RH3","RHD","RHF","RU","SB","SCN","SE4","SEK","SM","SMO","SO3","SO4","SR","T1A","TB","TBA","TCN","TEA","TH","THE","TL","TMA","TRA","UNX","V","VN3","VO4","W","WO5","Y1","YB","YB2","YH","YT3","ZCM","ZN","ZN2","ZN3","ZNO","ZO3","ZR","NCO","OHX"]),y=function(){const Ce=Object.create(null),Re=[];for(let ke=65;ke<=90;ke++)Re[Re.length]=String.fromCharCode(ke);for(let ke=97;ke<=122;ke++)Re[Re.length]=String.fromCharCode(ke);for(let ke=48;ke<=57;ke++)Re[Re.length]=String.fromCharCode(ke);for(const ke of Re){Ce[ke]=ke.toUpperCase();for(const we of Re){Ce[ke+we]=(ke+we).toUpperCase();for(const Oe of Re)Ce[ke+we+Oe]=(ke+we+Oe).toUpperCase()}}return Ce}();function c(Ce){return y[Ce]||Ce.toUpperCase()}const i=new Map([[1,"H"],[2,"He"],[3,"Li"],[4,"Be"],[5,"B"],[6,"C"],[7,"N"],[8,"O"],[9,"F"],[10,"Ne"],[11,"Na"],[12,"Mg"],[13,"Al"],[14,"Si"],[15,"P"],[16,"S"],[17,"Cl"],[18,"Ar"],[19,"K"],[20,"Ca"],[21,"Sc"],[22,"Ti"],[23,"V"],[24,"Cr"],[25,"Mn"],[26,"Fe"],[27,"Co"],[28,"Ni"],[29,"Cu"],[30,"Zn"],[31,"Ga"],[32,"Ge"],[33,"As"],[34,"Se"],[35,"Br"],[36,"Kr"],[37,"Rb"],[38,"Sr"],[39,"Y"],[40,"Zr"],[41,"Nb"],[42,"Mo"],[43,"Tc"],[44,"Ru"],[45,"Rh"],[46,"Pd"],[47,"Ag"],[48,"Cd"],[49,"In"],[50,"Sn"],[51,"Sb"],[52,"Te"],[53,"I"],[54,"Xe"],[55,"Cs"],[56,"Ba"],[57,"La"],[58,"Ce"],[59,"Pr"],[60,"Nd"],[61,"Pm"],[62,"Sm"],[63,"Eu"],[64,"Gd"],[65,"Tb"],[66,"Dy"],[67,"Ho"],[68,"Er"],[69,"Tm"],[70,"Yb"],[71,"Lu"],[72,"Hf"],[73,"Ta"],[74,"W"],[75,"Re"],[76,"Os"],[77,"Ir"],[78,"Pt"],[79,"Au"],[80,"Hg"],[81,"Tl"],[82,"Pb"],[83,"Bi"],[84,"Po"],[85,"At"],[86,"Rn"],[87,"Fr"],[88,"Ra"],[89,"Ac"],[90,"Th"],[91,"Pa"],[92,"U"],[93,"Np"],[94,"Pu"],[95,"Am"],[96,"Cm"],[97,"Bk"],[98,"Cf"],[99,"Es"],[100,"Fm"],[101,"Md"],[102,"No"],[103,"Lr"],[104,"Rf"],[105,"Db"],[106,"Sg"],[107,"Bh"],[108,"Hs"],[109,"Mt"],[110,"Ds"],[111,"Rg"],[112,"Cn"],[113,"Uut"],[114,"Fl"],[115,"Uup"],[116,"Lv"],[117,"Uus"],[118,"Uuo"]].map(Ce=>[Ce[0],c(Ce[1])]));function v(Ce){return i.has(Ce)?i.get(Ce):c("H")}const b={0:{trace:new Set,directionFrom:new Set,directionTo:new Set,backboneStart:new Set,backboneEnd:new Set,coarseBackbone:new Set},1:{trace:new Set(["CA"]),directionFrom:new Set(["C"]),directionTo:new Set(["O","OC1","O1","OX1","OXT","OT1"]),backboneStart:new Set(["N"]),backboneEnd:new Set(["C"]),coarseBackbone:new Set(["CA","BB","CA1"])},2:{trace:new Set(["CA"]),directionFrom:new Set(["C"]),directionTo:new Set(["O"]),backboneStart:new Set(["N"]),backboneEnd:new Set(["CD"]),coarseBackbone:new Set(["CA"])},3:{trace:new Set(["CA"]),directionFrom:new Set(["C"]),directionTo:new Set(["O"]),backboneStart:new Set(["N"]),backboneEnd:new Set(["CG"]),coarseBackbone:new Set(["CA"])},4:{trace:new Set(["O3'","O3*"]),directionFrom:new Set(["C4'","C4*"]),directionTo:new Set(["C3'","C3*"]),backboneStart:new Set(["P"]),backboneEnd:new Set(["O3'","O3*"]),coarseBackbone:new Set(["P"])},5:{trace:new Set(["O3'","O3*"]),directionFrom:new Set(["C3'","C3*"]),directionTo:new Set(["C1'","C1*"]),backboneStart:new Set(["P"]),backboneEnd:new Set(["O3'","O3*"]),coarseBackbone:new Set(["P"])},6:{trace:new Set(["N4'","N4*"]),directionFrom:new Set(["N4'","N4*"]),directionTo:new Set(["C7'","C7*"]),backboneStart:new Set(["N1'","N1*"]),backboneEnd:new Set(["C'","C*"]),coarseBackbone:new Set(["P"])}},_=new Set(["CA","C","N","O","O1","O2","OC1","OC2","OT1","OT2","OX1","OXT","H","H1","H2","H3","HA","HN","HXT","BB"]),M=new Set(["P","OP1","OP2","HOP2","HOP3","O2'","O3'","O4'","O5'","C1'","C2'","C3'","C4'","C5'","H1'","H2'","H2''","HO2'","H3'","H4'","H5'","H5''","HO3'","HO5'","O2*","O3*","O4*","O5*","C1*","C2*","C3*","C4*","C5*"]),I=new Set(["d-peptide linking","d-peptide nh3 amino terminus","d-peptide cooh carboxy terminus","d-gamma-peptide, c-delta linking","d-beta-peptide, c-gamma linking"]),l=new Set(["l-peptide linking","l-peptide nh3 amino terminus","l-peptide cooh carboxy terminus","l-gamma-peptide, c-delta linking","l-beta-peptide, c-gamma linking"]),m=new Set(["d-gamma-peptide, c-delta linking","l-gamma-peptide, c-delta linking"]),u=new Set(["d-beta-peptide, c-gamma linking","l-beta-peptide, c-gamma linking"]),d=new Set(["d-peptide nh3 amino terminus","d-peptide cooh carboxy terminus","l-peptide nh3 amino terminus","l-peptide cooh carboxy terminus"]),s=new Set(["peptide linking","peptide-like"]),C=r.M.unionMany(I,l,s),h=new Set(["dna linking","l-dna linking","dna oh 5 prime terminus","dna oh 3 prime terminus"]),a=new Set(["rna linking","l-rna linking","rna oh 5 prime terminus","rna oh 3 prime terminus"]),S=r.M.unionMany(new Set(["d-saccharide, beta linking","l-saccharide, beta linking","d-saccharide, alpha linking","l-saccharide, alpha linking","l-saccharide","d-saccharide","saccharide"]),new Set(["d-saccharide 1,4 and 1,4 linking","l-saccharide 1,4 and 1,4 linking","d-saccharide 1,4 and 1,6 linking","l-saccharide 1,4 and 1,6 linking"])),D=new Set(["non-polymer","other"]),R=new Set(["ion"]),f=new Set(["lipid"]),p=new Set(["SOL","WAT","HOH","H2O","W","DOD","D3O","TIP","TIP3","TIP4","SPC"]),E=new Set(["HIS","ARG","LYS","ILE","PHE","LEU","TRP","ALA","MET","PRO","CYS","ASN","VAL","GLY","SER","GLN","TYR","ASP","GLU","THR","SEC","PYL","UNK","MSE","SEP","TPO","PTR","PCA","HYP","HSD","HSE","HSP","LSN","ASPP","GLUP","HID","HIE","HIP","LYN","ASH","GLH"]),T=new Set(["DAL","DAR","DSG","DAS","DCY","DGL","DGN","DHI","DIL","DLE","DLY","MED","DPN","DPR","DSN","DTH","DTR","DTY","DVA","DNE"]),L=r.M.unionMany(E,T),w=new Set(["NME","ACE","NH2","FOR","FMT"]),Q=new Set(["A","C","T","G","I","U","N"]),G=new Set(["DA","DC","DT","DG","DI","DU","DN"]),V=new Set(["APN","CPN","TPN","GPN"]),U=new Set(["A","G","I","DA","DG","DI","APN","GPN"]),N=new Set(["C","T","U","DC","DT","DU","CPN","TPN"]),k=r.M.unionMany(Q,G,V),H=Ce=>U.has(Ce.toUpperCase()),$=Ce=>N.has(Ce.toUpperCase()),J=r.M.unionMany(L,k);function W(Ce,Re){return Re=Re.toUpperCase(),V.has(Re)?8:C.has(Ce)?5:a.has(Ce)?6:h.has(Ce)?7:S.has(Ce)?9:p.has(Re)?2:A.has(Re)?3:t.has(Re)?4:D.has(Ce)?o.yt.has(Re)?9:L.has(Re)?5:Q.has(Re)?6:G.has(Re)?7:1:0}function te(Ce,Re){return 5===Re?m.has(Ce)?2:u.has(Ce)?3:d.has(Ce)?0:1:6===Re?4:7===Re?5:8===Re?6:0}function de(Ce){return Ce=Ce.toUpperCase(),L.has(Ce)?"peptide linking":Q.has(Ce)?"rna linking":G.has(Ce)?"dna linking":o.yt.has(Ce)?"saccharide":"other"}function ye(Ce){return{formula:"",formula_weight:0,id:Ce,name:Ce,mon_nstd_flag:J.has(Ce)?"y":"n",pdbx_synonyms:[],type:de(Ce)}}function j(Ce){return Ce=Ce.toUpperCase(),p.has(Ce)?"water":J.has(Ce)?"polymer":o.yt.has(Ce)?"branched":"non-polymer"}function Z(Ce,Re){return Ce=Ce.toUpperCase(),l.has(Re)?"polypeptide(L)":I.has(Re)?"polypeptide(D)":a.has(Re)?"polyribonucleotide":h.has(Re)?"polydeoxyribonucleotide":S.has(Re)||o.yt.has(Ce)?"oligosaccharide":V.has(Ce)?"peptide nucleic acid":E.has(Ce)?"polypeptide(L)":T.has(Ce)?"polypeptide(D)":Q.has(Ce)?"polyribonucleotide":G.has(Ce)?"polydeoxyribonucleotide":R.has(Re)||A.has(Ce)?"ion":f.has(Re)||t.has(Ce)?"lipid":s.has(Re)?"peptide-like":"other"}function q(Ce){return Y(Ce)||ee(Ce)}function Y(Ce){return 7===Ce||6===Ce||8===Ce}function ee(Ce){return 5===Ce}var g,Ce,le;(Ce=g||(g={})).is=e.N.has,Ce.create=e.N.create,Ce.SecondaryStructureMmcif={helx_lh_27_p:1058,helx_lh_3t_p:2082,helx_lh_al_p:4130,helx_lh_a_n:524321,helx_lh_b_n:1048609,helx_lh_ga_p:8226,helx_lh_n:33,helx_lh_om_p:16418,helx_lh_ot_n:131105,helx_lh_ot_p:546,helx_lh_p:34,helx_lh_pi_p:32802,helx_lh_pp_p:65570,helx_lh_z_n:262177,helx_n:1,helx_ot_n:1,helx_ot_p:2,helx_p:2,helx_rh_27_p:1090,helx_rh_3t_p:2114,helx_rh_al_p:4162,helx_rh_a_n:524353,helx_rh_b_n:1048641,helx_rh_ga_p:8258,helx_rh_n:65,helx_rh_om_p:16450,helx_rh_ot_n:131137,helx_rh_ot_p:578,helx_rh_p:66,helx_rh_pi_p:32834,helx_rh_pp_p:65602,helx_rh_z_n:262209,strn:4194308,turn_ot_p:33554448,turn_p:16,turn_ty1p_p:67109136,turn_ty1_p:67109008,turn_ty2p_p:134218e3,turn_ty2_p:134217872,turn_ty3p_p:268435728,turn_ty3_p:268435600,bend:8,other:0},Ce.SecondaryStructurePdb={1:4162,2:16450,3:32834,4:8258,5:2114,6:4130,7:16418,8:8226,9:1026,10:65538},Ce.SecondaryStructureStride={H:4098,G:2050,I:32770,E:8388612,B:4194308,T:16,C:536870912},Ce.SecondaryStructureDssp={H:4098,B:4194308,E:8388612,G:2050,I:32770,T:16,S:8},function(Ce){function Se(Ne){switch(Ne){case"covalent":return 1;case"metal-coordination":return 2;case"hydrogen-bond":return 4;case"disulfide":return 8;case"aromatic":return 16;case"computed":return 32}}Ce.is=e.N.has,Ce.create=function Re(Ne){return e.N.create(Ne)},Ce.isCovalent=function ke(Ne){return!!(1&Ne)},Ce.isAll=function we(Ne){return Ne===Math.pow(2,6)-1},Ce.Names={covalent:1,"metal-coordination":2,"hydrogen-bond":4,disulfide:8,aromatic:16,computed:32},Ce.isName=function Oe(Ne){return Ne in Ce.Names},Ce.fromName=Se,Ce.fromNames=function Ve(Ne){let K=0;for(let ne=0,be=Ne.length;ne{"use strict";n.d(Ue,{RT:()=>sn,cY:()=>O,Oz:()=>_,cv:()=>y.c});var e={};n.r(e),n.d(e,{all:()=>C,atoms:()=>R,bondedAtomicPairs:()=>Q,chains:()=>a,none:()=>s,querySelection:()=>w,residues:()=>h,rings:()=>L});var o={};n.r(o),n.d(o,{exceptBy:()=>Ce,expandProperty:()=>ke,includeConnected:()=>we,includeSurroundings:()=>le,intersectBy:()=>Be,querySelection:()=>Ae,surroundingLigands:()=>Ve,union:()=>Re,wholeResidues:()=>Y});var r={};n.r(r),n.d(r,{areIntersectedBy:()=>je,first:()=>ge,getCurrentStructureProperties:()=>Ie,isConnectedTo:()=>$e,pick:()=>ae,withSameAtomProperties:()=>nt,within:()=>Lt});var t={};n.r(t),n.d(t,{intersect:()=>_t,merge:()=>mt});var A={};n.r(A),n.d(A,{atomCount:()=>Me,countQuery:()=>Ke,propertySet:()=>ut});var _,y=n(6424),c=n(8672),i=n(9854),v=n(5988);class O{pushCurrentElement(){return this.currentElementStack[this.currentElementStack.length]=this.element,this.element=c.iZ.Location.create(void 0),this.element}popCurrentElement(){this.element=this.currentElementStack.pop()}pushCurrentBond(){return this.atomicBond&&this.currentAtomicBondStack.push(this.atomicBond),this.atomicBond=new b,this.atomicBond}popCurrentBond(){this.atomicBond=this.currentAtomicBondStack.length>0?this.currentAtomicBondStack.pop():void 0}pushCurrentStructure(){this.currentStructure&&this.currentStructureStack.push(this.currentStructure)}popCurrentStructure(){this.currentStructure=this.currentStructureStack.length?this.currentStructureStack.pop():void 0}pushInputStructure(yt){this.inputStructureStack.push(this.inputStructure),this.inputStructure=yt}popInputStructure(){if(0===this.inputStructureStack.length)throw new Error("Must push before pop.");this.inputStructure=this.inputStructureStack.pop()}throwIfTimedOut(){if(0!==this.timeoutMs&&(0,i.t)()-this.timeCreated>this.timeoutMs)throw new Error(`The query took too long to execute (> ${this.timeoutMs/1e3}s).`)}tryGetCurrentSelection(){if(!this.currentSelection)throw new Error("The current selection is not assigned.");return this.currentSelection}constructor(yt,At){this.currentElementStack=[],this.currentAtomicBondStack=[],this.currentStructureStack=[],this.inputStructureStack=[],this.timeCreated=(0,i.t)(),this.element=c.iZ.Location.create(void 0),this.currentStructure=void 0,this.atomicBond=new b,this.currentSelection=void 0,this.inputStructure=yt,this.timeoutMs=At&&At.timeoutMs||0,this.currentSelection=At&&At.currentSelection}}class b{constructor(){this.a=c.iZ.Location.create(void 0),this.aIndex=0,this.b=c.iZ.Location.create(void 0),this.bIndex=0,this.type=0,this.order=0,this.key=-1,this.testFn=v.defaultBondTest}setStructure(yt){this.a.structure=yt,this.b.structure=yt}setTestFn(yt){this.testFn=yt||v.defaultBondTest}test(yt,At){return!!this.testFn(yt)||!!At&&(this.swap(),this.testFn(yt))}swap(){const yt=this.aIndex;this.aIndex=this.bIndex,this.bIndex=yt;const At=this.a.unit;this.a.unit=this.b.unit,this.b.unit=At;const Gt=this.a.element;this.a.element=this.b.element,this.b.element=Gt}get length(){return c.iZ.Location.distance(this.a,this.b)}}(_||(_={})).run=function yt(At,Gt,rn){return At(new O(Gt,rn))};var M=n(9677),I=n(3543),l=n(1969),m=n(3916);class u{add(yt){yt.elementCount&&(1!==yt.elementCount&&(this.allSingletons=!1),this.set.add(yt)&&(this.structures[this.structures.length]=yt))}getSelection(){return this.allSingletons?y.c.Singletons(this.source,(0,m.l6)(this.source,this.structures)):y.c.Sequence(this.source,this.structures)}constructor(yt){this.source=yt,this.set=(0,M.bw)(c.oE.hashCode,c.oE.areUnitIdsAndIndicesEqual),this.structures=[],this.allSingletons=!0}}class d{add(yt,At,Gt){let rn=this.builderMap.get(yt);rn||(rn=this.source.subsetBuilder(!0),this.builders[this.builders.length]=rn,this.builderMap.set(yt,rn)),rn.addToUnit(At,Gt)}allSingletons(){for(let yt=0,At=this.builders.length;yt1)return!1;return!0}singletonSelection(){const yt=this.source.subsetBuilder(!0),At=c.iZ.Location.create(this.source);for(let Gt=0,rn=this.builders.length;Gty.c.Sequence(gt.inputStructure,[]),C=gt=>y.c.Singletons(gt.inputStructure,gt.inputStructure);function h(gt){return R({...gt,groupBy:yt=>c.StructureProperties.residue.key(yt.element)})}function a(gt){return R({...gt,groupBy:yt=>c.StructureProperties.chain.key(yt.element)})}function S(gt){return!0}function D(gt){return 0}function R(gt){if(!gt||!(gt.atomTest||gt.residueTest||gt.chainTest||gt.entityTest||gt.unitTest||gt.groupBy))return C;if(gt.atomTest&&!gt.residueTest&&!gt.chainTest&&!gt.entityTest&&!gt.unitTest&&!gt.groupBy)return function f(gt){return function(At){const{inputStructure:Gt}=At,{units:rn}=Gt,tt=At.pushCurrentElement(),Mt=Gt.subsetBuilder(!0);tt.structure=Gt;for(const nn of rn){tt.unit=nn;const bn=nn.elements;Mt.beginUnit(nn.id);for(let Dn=0,jt=bn.length;Dn0?M.th.create():this.currentUnit}addElement(yt){M.th.add(this.currentUnit,yt,yt)&&this.elementCount++}commitUnit(){0===this.currentUnit.array.length||this.unitMap.has(this.parentId)||(this.ids[this.ids.length]=this.parentId,this.unitMap.set(this.parentId,this.currentUnit),this.parentId=-1)}getStructure(){if(this.isEmpty)return l.o.Empty;const yt=[];(0,G.eh)(this.ids);const At=V.u.UnitEquivalenceBuilder();for(let Gt=0,rn=this.ids.length;Gt1&&(0,G.eh)(nn);let Dn=Mt.getChild(I.SortedArray.ofSortedArray(nn));const jt=At.add(Dn.id,Dn);Dn!==jt&&(Dn=jt.applyOperator(Dn.id,Dn.conformation.operator,!0)),yt[yt.length]=Dn}return l.o.create(yt,{parent:this.parent})}get isEmpty(){return 0===this.elementCount}constructor(yt){this.parent=yt,this.ids=[],this.unitMap=I.Yz.Mutable(),this.parentId=-1,this.currentUnit=M.th.create(),this.elementCount=0}}var N=n(1541),k=n(2524),H=n(14);class ${add(yt){let At=this.index.get(yt.label_asym_id);At||(At=new Map,this.index.set(yt.label_asym_id,At));let Gt=At.get(yt.label_seq_id);return Gt||(Gt=[],At.set(yt.label_seq_id,Gt)),!this._find(yt,Gt)&&(Gt.push(yt),!0)}hasLabelAsymId(yt){return this.index.has(yt)}has(yt){var At,Gt;const rn=J(yt);if(!this.index.has(rn))return;const tt=this.index.get(rn),Mt=W(yt);if(!tt.has(Mt))return;const nn=tt.get(Mt),bn=te(yt),Dn=de(yt),jt=ye(yt),It=null!==(At=j(yt))&&void 0!==At?At:"1_555";for(const Dt of nn)if(Dt.label_comp_id===bn&&Dt.label_alt_id===Dn&&Dt.ins_code===jt&&(!this.checkOperator||(null!==(Gt=Dt.operator_name)&&void 0!==Gt?Gt:"1_555")===It))return Dt}static getLabel(yt,At=!1){var Gt;return`${yt.label_asym_id} ${yt.label_comp_id} ${yt.label_seq_id}:${yt.ins_code}:${yt.label_alt_id}${At?" "+(null!==(Gt=yt.operator_name)&&void 0!==Gt?Gt:"1_555"):""}`}static getEntryFromLocation(yt){var At;return{label_asym_id:J(yt),label_comp_id:te(yt),label_seq_id:W(yt),label_alt_id:de(yt),ins_code:ye(yt),operator_name:null!==(At=j(yt))&&void 0!==At?At:"1_555"}}_find(yt,At){var Gt,rn;for(const tt of At)if(tt.label_comp_id===yt.label_comp_id&&tt.label_alt_id===yt.label_alt_id&&tt.ins_code===yt.ins_code&&(!this.checkOperator||(null!==(Gt=tt.operator_name)&&void 0!==Gt?Gt:"1_555")===(null!==(rn=yt.operator_name)&&void 0!==rn?rn:"1_555")))return!0;return!1}constructor(yt){var At;this.index=new Map,this.checkOperator=!1,this.checkOperator=null!==(At=yt?.checkOperator)&&void 0!==At&&At}}const J=H.Z.chain.label_asym_id,W=H.Z.residue.label_seq_id,te=H.Z.atom.label_comp_id,de=H.Z.atom.label_alt_id,ye=H.Z.residue.pdbx_PDB_ins_code,j=H.Z.unit.operator_name;var Z=n(6115);function q(gt,yt,At){const Gt=yt.subsetBuilder(!0);for(const rn of At.units){if(0!==rn.kind){Gt.setUnit(rn.id,rn.elements);continue}const{residueAtomSegments:tt}=rn.model.atomicHierarchy,Mt=yt.unitMap.get(rn.id).elements,nn=rn.elements;Gt.beginUnit(rn.id);const bn=I.hT.transientSegments(tt,nn);for(;bn.hasNext;){const Dn=bn.move().index;for(let jt=tt.offsets[Dn],It=tt.offsets[Dn+1];jt(gt.element.structure=At.structure,gt.element.unit=At.unit,gt.element.element=At.element,yt(gt))}function xe(gt,yt){let At=0;gt.element.structure=gt.inputStructure;for(const Gt of gt.inputStructure.units){gt.element.unit=Gt;const rn=Gt.elements;for(let tt=0,Mt=rn.length;ttAt&&(At=bn)}}return gt.throwIfTimedOut(),At}function le(gt,yt){return function(Gt){const rn=gt(Gt);if(yt.elementRadius){const tt={...yt,elementRadius:yt.elementRadius,elementRadiusClosure:_e(Gt,yt.elementRadius),sourceMaxRadius:xe(Gt,yt.elementRadius)};if(y.c.isSingleton(rn)){const Mt=g(Gt,Gt.inputStructure,rn.structure,tt);return y.c.Singletons(Gt.inputStructure,Mt)}{const Mt=new u(Gt.inputStructure);for(const nn of rn.structures)Mt.add(g(Gt,Gt.inputStructure,nn,tt));return Mt.getSelection()}}if(y.c.isSingleton(rn)){const tt=ee(Gt,Gt.inputStructure,rn.structure,yt);return y.c.Singletons(Gt.inputStructure,tt)}{const tt=new u(Gt.inputStructure);for(const Mt of rn.structures)tt.add(ee(Gt,Gt.inputStructure,Mt,yt));return tt.getSelection()}}}function Ae(gt,yt){return function(Gt){const rn=gt(Gt);if(0===y.c.structureCount(rn))return rn;const tt=y.c.UniqueBuilder(Gt.inputStructure),Mt=nn=>tt.add(nn);return y.c.forEach(rn,(nn,bn)=>{Gt.pushInputStructure(nn),y.c.forEach(yt(Gt),Mt),Gt.popInputStructure(),bn%10==0&&Gt.throwIfTimedOut()}),tt.getSelection()}}function Be(gt,yt){return function(Gt){const rn=gt(Gt);if(0===y.c.structureCount(rn))return rn;const tt=yt(Gt);if(0===y.c.structureCount(tt))return y.c.Empty(Gt.inputStructure);const Mt=y.c.unionStructure(tt),nn=y.c.UniqueBuilder(Gt.inputStructure);return y.c.forEach(rn,(bn,Dn)=>{const jt=(0,m.jU)(Mt,bn);0!==jt.elementCount&&nn.add(jt),Dn%50==0&&Gt.throwIfTimedOut()}),nn.getSelection()}}function Ce(gt,yt){return function(Gt){const rn=gt(Gt);if(0===y.c.structureCount(rn))return rn;const tt=yt(Gt);if(0===y.c.structureCount(tt))return rn;const Mt=y.c.unionStructure(tt),nn=y.c.UniqueBuilder(Gt.inputStructure);return y.c.forEach(rn,(bn,Dn)=>{const jt=(0,m.Kt)(bn,Mt);0!==jt.elementCount&&nn.add(jt),Dn%50==0&&Gt.throwIfTimedOut()}),nn.getSelection()}}function Re(gt){return function(At){const Gt=y.c.LinearBuilder(At.inputStructure);return Gt.add(y.c.unionStructure(gt(At))),Gt.getSelection()}}function ke(gt,yt){return function(Gt){const rn=gt(Gt),tt=new Map,Mt=[];Gt.pushCurrentElement(),y.c.forEach(rn,(bn,Dn)=>{Gt.element.structure=bn;for(const jt of bn.units){Gt.element.unit=jt;const It=jt.elements;for(let Dt=0,Ct=It.length;Dt{let Dt=jt;if(rn)for(;;){const Ct=Dt.elementCount;if(Dt=Oe(nn,At,Dt),Dt.elementCount===Ct)break}else for(let Ct=0;Ct=0)Dt.addElementRange(Vt,Zt.start,Zt.end);else if(It.hasLabelAsymId(kt))for(yn.setSegment(Zt);yn.hasNext;){const An=yn.move();Dn.element=Vt[An.start],It.has(Dn)&&Dt.addElementRange(Vt,An.start,An.end)}}Dt.commitUnit(),rn.throwIfTimedOut()}const Ct=(0,m.l6)(rn.inputStructure,[Dt.getStructure(),tt]);if(At){const $t=new U(rn.inputStructure),Vt=rn.inputStructure.lookup3d;for(const Wt of Ct.units){const yn=Wt.conformation,Zt=Wt.elements;for(let kt=0,Ot=Zt.length;kt0;){const nn=Mt.pop();rn.add(nn);const bn=this.vertices.get(nn);for(const Dn of this.edges.get(nn)){if(rn.has(Dn)||(Mt.push(Dn),tt.has(Dn)))continue;tt.add(Dn);const jt=this.vertices.get(Dn);At.add(bn.operator_name===jt.operator_name?{...jt,operator_name:yt.operator_name}:jt)}}}}var ce,se,Kt,ie=n(9986),ue=n(4369);function ae(gt,yt){return At=>{const Gt=gt(At),rn=y.c.LinearBuilder(At.inputStructure);return At.pushCurrentElement(),y.c.forEach(Gt,(tt,Mt)=>{At.currentStructure=tt,yt(At)&&rn.add(tt),Mt%100&&At.throwIfTimedOut()}),At.popCurrentStructure(),rn.getSelection()}}function ge(gt){return yt=>{const At=gt(yt),Gt=y.c.LinearBuilder(yt.inputStructure);if("singletons"===At.kind){if(At.structure.elementCount>0){const rn=At.structure.units[0],tt=l.o.create([rn.getChild(I.SortedArray.ofSingleton(rn.elements[0]))],{parent:yt.inputStructure});Gt.add(tt)}}else At.structures.length>0&&Gt.add(At.structures[0]);return Gt.getSelection()}}function Ie(gt,yt,At){const{units:Gt}=gt.currentStructure,rn=gt.pushCurrentElement();rn.structure=gt.currentStructure;for(const tt of Gt){rn.unit=tt;const Mt=tt.elements,nn=yt;if(nn){for(let bn=0,Dn=Mt.length;bn{const rn=gt(Gt),tt=function Le(gt,yt,At){const Gt=new Set,rn=yt(gt);return gt.pushCurrentElement(),y.c.forEach(rn,(tt,Mt)=>{gt.currentStructure=tt,Ie(gt,At,Gt),Mt%10&>.throwIfTimedOut()}),gt.popCurrentElement(),Gt}(Gt,yt,At),Mt=y.c.LinearBuilder(Gt.inputStructure);return Gt.pushCurrentStructure(),y.c.forEach(rn,(nn,bn)=>{Gt.currentStructure=nn;const Dn=Ie(Gt,At,new Set);ie.M.isSuperset(tt,Dn)&&Mt.add(nn),bn%10&&Gt.throwIfTimedOut()}),Gt.popCurrentStructure(),Mt.getSelection()}}function je(gt,yt){return At=>{const Gt=y.c.unionStructure(yt(At)),rn=y.c.LinearBuilder(At.inputStructure);return y.c.forEach(gt(At),(tt,Mt)=>{(0,m.HK)(Gt,tt)&&rn.add(tt),Mt%10&&At.throwIfTimedOut()}),rn.getSelection()}}function Lt(gt){return yt=>{const At={queryCtx:yt,selection:gt.query(yt),target:gt.target(yt),maxRadius:gt.maxRadius,minRadius:gt.minRadius?Math.max(0,gt.minRadius):0,elementRadius:gt.elementRadius,invert:!!gt.invert};return 0===At.minRadius&&typeof gt.minRadius>"u"?function Je({queryCtx:gt,selection:yt,target:At,maxRadius:Gt,invert:rn}){const tt=y.c.unionStructure(At).lookup3d,Mt=y.c.LinearBuilder(gt.inputStructure),nn=ue.eB.zero();return y.c.forEach(yt,(bn,Dn)=>{const{units:jt}=bn;let It=!1;for(let Dt=0,Ct=jt.length;Dt{let jt=function ve(gt,yt,At,Gt,rn){return 0===yt.elementCount||0===At.elementCount||(yt.elementCount<=At.elementCount?se.check(gt,yt,At,Gt,rn):se.check(gt,At,yt,Gt,rn))}(gt,Mt,bn,Gt,tt);rn&&(jt=!jt),jt&&nn.add(bn),Dn%10==0&>.throwIfTimedOut()}),gt.popCurrentElement(),nn.getSelection()}(At):function Bt({queryCtx:gt,selection:yt,target:At,minRadius:Gt,maxRadius:rn,invert:tt,elementRadius:Mt}){const nn=y.c.unionStructure(At),bn=y.c.LinearBuilder(gt.inputStructure);return gt.pushCurrentElement(),y.c.forEach(yt,(Dn,jt)=>{let It=function re(gt,yt,At,Gt,rn,tt){return 0===yt.elementCount||0===At.elementCount||(yt.elementCount<=At.elementCount?ce.check(gt,yt,At,Gt,rn,tt):ce.check(gt,At,yt,Gt,rn,tt))}(gt,nn,Dn,Gt,rn,Mt);tt&&(It=!It),It&&bn.add(Dn),jt%10==0&>.throwIfTimedOut()}),gt.popCurrentElement(),bn.getSelection()}(At)}}function $e({query:gt,target:yt,disjunct:At,invert:Gt,bondTest:rn}){return tt=>{const Mt=yt(tt);if(y.c.isEmpty(Mt))return Mt;const nn=gt(tt);if(y.c.isEmpty(nn))return nn;const bn={queryCtx:tt,input:tt.inputStructure,disjunct:At,target:y.c.unionStructure(Mt)},Dn=y.c.LinearBuilder(tt.inputStructure);return tt.pushCurrentBond(),tt.atomicBond.setTestFn(rn),y.c.forEach(nn,(jt,It)=>{(function pn(gt,yt){const{queryCtx:At,input:Gt,target:rn,disjunct:tt}=gt,Mt=At.atomicBond,nn=Gt.interUnitBonds;Mt.setStructure(Gt);for(const bn of yt.units){if(!c.Nf.isAtomic(bn))continue;const Dn=Gt.unitMap.get(bn.id),{offset:jt,b:It,edgeProps:{flags:Dt,order:Ct,key:$t}}=Dn.bonds,Vt=nn.getConnectedUnits(bn.id),Wt=Vt.length,yn=bn.elements,Zt=Dn.elements;for(let kt=0,Ot=yn.length;kt{const At=y.c.UniqueBuilder(yt.inputStructure);for(let Gt=0;Gt{At.add(rn),Gt%100&&yt.throwIfTimedOut()});return At.getSelection()}}function _t(gt){return 0===gt.length?s:1===gt.length?gt[0]:yt=>{const At=[];for(let nn=0;nnnn.hashCode,c.oE.areUnitIdsAndIndicesEqual);y.c.forEach(At[Gt],nn=>tt.add(nn));const Mt=y.c.UniqueBuilder(yt.inputStructure);for(let nn=0;nn{tt.has(bn)&&Mt.add(bn)}),yt.throwIfTimedOut());return Mt.getSelection()}}function Me(gt){return gt.currentStructure.elementCount}function Ke(gt){return yt=>{const At=gt(yt);return y.c.structureCount(At)}}function ut(gt){return yt=>Ie(yt,gt,new Set)}!function(gt){const yt=(0,ue.eB)();function At(Mt,nn,bn,Dn,jt,It,Dt){const{elements:Ct,conformation:$t}=nn,Vt=yt;Mt.element.unit=nn;let Wt=!1;for(let yn=0,Zt=Ct.length;ynDt($t)===Ct},gt.lt=function Gt(Dt,Ct){return $t=>Dt($t)Dt($t)<=Ct},gt.gt=function tt(Dt,Ct){return $t=>Dt($t)>Ct},gt.gte=function Mt(Dt,Ct){return $t=>Dt($t)>=Ct},gt.inSet=function Dn(Dt,Ct){if(function yt(Dt){return!!Dt&&!!Dt.has}(Ct))return $t=>Ct.has(Dt($t));{if(0===Ct.length)return bn;const $t=new Set;for(let Vt=0;Vt$t.has(Dt(Vt))}},gt.and=function jt(...Dt){switch(Dt.length){case 0:return nn;case 1:return Dt[0];case 2:{const Ct=Dt[0],$t=Dt[1];return Vt=>Ct(Vt)&&$t(Vt)}case 3:{const Ct=Dt[0],$t=Dt[1],Vt=Dt[2];return Wt=>Ct(Wt)&&$t(Wt)&&Vt(Wt)}case 4:{const Ct=Dt[0],$t=Dt[1],Vt=Dt[2],Wt=Dt[3];return yn=>Ct(yn)&&$t(yn)&&Vt(yn)&&Wt(yn)}case 5:{const Ct=Dt[0],$t=Dt[1],Vt=Dt[2],Wt=Dt[3],yn=Dt[4];return Zt=>Ct(Zt)&&$t(Zt)&&Vt(Zt)&&Wt(Zt)&&yn(Zt)}case 6:{const Ct=Dt[0],$t=Dt[1],Vt=Dt[2],Wt=Dt[3],yn=Dt[4],Zt=Dt[5];return kt=>Ct(kt)&&$t(kt)&&Vt(kt)&&Wt(kt)&&yn(kt)&&Zt(kt)}default:{const Ct=Dt.length;return $t=>{for(let Vt=0;VtCt(Vt)||$t(Vt)}case 3:{const Ct=Dt[0],$t=Dt[1],Vt=Dt[2];return Wt=>Ct(Wt)||$t(Wt)||Vt(Wt)}case 4:{const Ct=Dt[0],$t=Dt[1],Vt=Dt[2],Wt=Dt[3];return yn=>Ct(yn)||$t(yn)||Vt(yn)||Wt(yn)}case 5:{const Ct=Dt[0],$t=Dt[1],Vt=Dt[2],Wt=Dt[3],yn=Dt[4];return Zt=>Ct(Zt)||$t(Zt)||Vt(Zt)||Wt(Zt)||yn(Zt)}case 6:{const Ct=Dt[0],$t=Dt[1],Vt=Dt[2],Wt=Dt[3],yn=Dt[4],Zt=Dt[5];return kt=>Ct(kt)||$t(kt)||Vt(kt)||Wt(kt)||yn(kt)||Zt(kt)}default:{const Ct=Dt.length;return $t=>{for(let Vt=0;Vt{"use strict";n.r(Ue),n.d(Ue,{atomicHet:()=>b,atomicSequence:()=>v,bundleElementImpl:()=>M,bundleGenerator:()=>I,defaultBondTest:()=>i,spheres:()=>_,water:()=>O});var e=n(3543),o=n(1541),r=n(8672),t=n(1969),A=n(6424),y=n(2434),c=n(7686);function i(l){return y.I$.isCovalent(l.atomicBond.type)}function v(){return function(m){const{inputStructure:u}=m,d=o.i.Location.create(u),s=[];for(const C of u.units){if(0!==C.kind)continue;d.unit=C;const h=C.elements;if(d.element=h[0],"polymer"!==r.StructureProperties.entity.type(d))continue;const a=e.hT.transientSegments(C.model.atomicHierarchy.residueAtomSegments,h);let S=0;for(;a.hasNext;)S++,a.move();S<8||s.push(C)}return A.c.Singletons(u,t.o.create(s,{parent:u}))}}function O(){return function(m){const{inputStructure:u}=m,d=o.i.Location.create(u),s=[];for(const C of u.units)0===C.kind&&(d.unit=C,d.element=C.elements[0],"water"===r.StructureProperties.entity.type(d)&&s.push(C));return A.c.Singletons(u,t.o.create(s,{parent:u}))}}function b(){return function(m){const{inputStructure:u}=m,d=o.i.Location.create(u),s=[];for(const C of u.units){if(0!==C.kind)continue;d.unit=C;const h=C.elements;if(d.element=h[0],"water"!==r.StructureProperties.entity.type(d)){if("polymer"===r.StructureProperties.entity.type(d)){const a=e.hT.transientSegments(C.model.atomicHierarchy.residueAtomSegments,h);let S=0;for(;a.hasNext;)S++,a.move();if(S>=8)continue}s.push(C)}}return A.c.Singletons(u,t.o.create(s,{parent:u}))}}function _(){return function(m){const{inputStructure:u}=m,d=[];for(const s of u.units)1===s.kind&&d.push(s);return A.c.Singletons(u,t.o.create(d,{parent:u}))}}function M(l,m,u){return{groupedUnits:l,ranges:m,set:u}}function I(l){return function(u){return A.c.Sequence(u.inputStructure,[c.N.toStructure({hash:u.inputStructure.hashCode,elements:l},u.inputStructure)])}}},6424:(tn,Ue,n)=>{"use strict";n.d(Ue,{c:()=>A});var A,e=n(9677),o=n(8672),r=n(3916),t=n(3543);!function(y){function c(S,D){return{kind:"singletons",source:S,structure:D}}function i(S,D){return{kind:"sequence",source:S,structures:D}}function v(S){return c(S,o.oE.Empty)}function O(S){return"singletons"===S.kind}function b(S){return O(S)?0===S.structure.units.length:0===S.structures.length}function M(S){return b(S)?o.oE.Empty:O(S)?S.structure:(0,r.l6)(S.source,S.structures)}function m(S,D,R){return 0===D.length?v(S):R?c(S,(0,r.l6)(S,D)):i(S,D)}y.Singletons=c,y.Sequence=i,y.Empty=v,y.isSingleton=O,y.isEmpty=b,y.structureCount=function _(S){return O(S)?S.structure.elementCount:S.structures.length},y.unionStructure=M,y.toLociWithCurrentUnits=function I(S){const D=[],{unitMap:R}=S.source;for(const f of M(S).units)D[D.length]=f===R.get(f.id)?{unit:f,indices:t.CD.ofBounds(0,f.elements.length)}:{unit:f,indices:t.CD.ofSortedArray(t.SortedArray.indicesOf(R.get(f.id).elements,f.elements))};return o.iZ.Loci(S.source,D)},y.toLociWithSourceUnits=function l(S){const D=[],{unitMap:R}=S.source;for(const f of M(S).units){const p=R.get(f.id);D[D.length]=p===f?{unit:p,indices:t.CD.ofBounds(0,p.elements.length)}:{unit:p,indices:t.CD.ofSortedArray(t.SortedArray.indicesOf(p.elements,f.elements))}}return o.iZ.Loci(S.source,D)};class u{add(D){const R=D.elementCount;0!==R&&(this.structures[this.structures.length]=D,1!==R&&(this.allSingletons=!1))}getSelection(){return m(this.source,this.structures,this.allSingletons)}constructor(D){this.source=D,this.structures=[],this.allSingletons=!0}}class d{add(D){const R=D.elementCount;0===R||!this.uniqueSets.add(D)||(this.structures[this.structures.length]=D,1!==R&&(this.allSingletons=!1))}getSelection(){return m(this.structure,this.structures,this.allSingletons)}constructor(D){this.structure=D,this.structures=[],this.allSingletons=!0,this.uniqueSets=(0,e.bw)(o.oE.hashCode,o.oE.areUnitIdsAndIndicesEqual)}}y.LinearBuilder=function s(S){return new u(S)},y.UniqueBuilder=function C(S){return new d(S)},y.forEach=function h(S,D){let R=0;if(y.isSingleton(S))for(const f of S.structure.units){const{elements:p}=f;for(let E=0,T=p.length;E{"use strict";n.d(Ue,{HK:()=>y,IP:()=>A,Kt:()=>i,jU:()=>c,l6:()=>r});var e=n(8672),o=n(3543);function r(v,O){if(0===O.length)return e.oE.Empty;if(1===O.length)return O[0];const b=new Map,_=new Set;for(const{units:I}of O)for(let l=0,m=I.length;l0&&(M[M.length]=m.getChild(d))}return e.oE.create(M,{parent:v.parent||O.parent})}},8672:(tn,Ue,n)=>{"use strict";n.d(Ue,{gn:()=>A.gn,oE:()=>o.o,iZ:()=>e.i,StructureProperties:()=>y.Z,us:()=>t.u,Nf:()=>r.N,X$:()=>c.X});var e=n(1541),o=n(1969),r=n(8960),t=n(5685),A=n(1739),y=n(14),c=n(4561),i=n(7421),v=n(2524);n(6220);n(3543),n(6710);var N=n(6651),H=(n(9986),n(9677)),$=n(8382);function W(ae,ge){if(v.K4.is(ae.sourceData))return ae.sourceData.data.db[ge]}function ye(ae){if(0===ae.length)return[];if(1===ae.length)return ae[0].entityIndices;const ge=H.th.create();for(const Ie of ae)for(const Le of Ie.entityIndices)H.th.add(ge,Le,Le);return(0,$.eh)(ge.array),ge.array}function j(ae,ge){return{name:ae,instance({structures:Ie}){if(ge&&!ge(Ie[0]))return i.c.Category.Empty;const Le=Ie[0].model;if(!v.K4.is(Le.sourceData))return i.c.Category.Empty;const nt=Le.sourceData.data.db[ae];return nt&&nt._rowCount?i.c.Category.ofTable(nt):i.c.Category.Empty}}}n(5165);var le=i.c.Category;Re("struct_asym"),Re("entity_poly"),Re("entity_poly_seq");function Re(ae){return{name:ae,instance:({structures:ge,cache:Ie})=>function ke(ae,ge,Ie){const Le=W(ae[0].model,ge);if(!Le)return le.Empty;const{entity_id:nt}=Le,je=Ie.uniqueEntityIds||(Ie.uniqueEntityIds=function de(ae){if(0===ae.length)return new Set;const ge=ae[0].model.entities.data.id;return new Set(ye(ae).map(Ie=>ge.value(Ie)))}(ae)),Lt=N.VP.indicesOf(nt,Je=>je.has(Je));return le.ofTable(Le,Lt)}(ge,ae,Ie)}}n(1692),n(1490);var Ve;(Ve||(Ve={})).create=function ge(Ie){const Le=Array.isArray(Ie)?Ie:[Ie];return{structures:Le,firstModel:Le[0].model,cache:Object.create(null)}};function K(ae){return ae.units.every(ge=>ge.conformation.operator.isIdentity)}function ne(ae){return K(ae)&&ae.units.every(ge=>!ge.conformation.operator.assembly&&!ge.conformation.operator.suffix)}var Te;j("entry"),j("exptl"),j("cell",K),j("symmetry",K),j("pdbx_struct_assembly",ne),j("pdbx_struct_assembly_gen",ne),j("pdbx_struct_oper_list",ne),j("pdbx_entity_branch"),j("pdbx_entity_branch_link"),j("pdbx_branch_scheme"),j("struct_conn"),j("atom_sites"),(Te||(Te={})).AtomSitePositionsFieldNames=new Set(["id","Cartn_x","Cartn_y","Cartn_z"])},442:(tn,Ue,n)=>{"use strict";n.d(Ue,{dV:()=>M,G7:()=>t,yt:()=>C,RP:()=>r,Dr:()=>_,xY:()=>O,N0:()=>v,GW:()=>s});var e=n(190);const o=new Set(["145","147","149","289","291","293","445","475","491","510","604","045","05L","07E","07Y","08U","09X","0AT","0BD","0H0","0HX","0LP","0MK","0NZ","0TS","0UB","0V4","0WK","0XY","0YT","10M","12E","14T","15L","16F","16G","16O","17T","18D","18O","18T","1AR","1BW","1CF","1FT","1GL","1GN","1JB","1LL","1NA","1S3","1S4","1SD","1X4","20S","20X","22O","22S","23V","24S","25E","26M","26O","26Q","26R","26V","26W","26Y","27C","2DG","2DR","2F8","2FG","2FL","2FP","2GL","2GS","2H5","2HA","2M4","2M5","2M8","2OS","2SI","2WP","2WS","32O","34V","38J","3BU","3CM","3DO","3DY","3FM","3GR","3HD","3J3","3J4","3LJ","3LR","3MF","3MG","3MK","3R3","3S6","3SA","3YW","40J","42D","44S","46D","46M","46Z","48Z","49A","49S","49T","49V","4AM","4CQ","4GC","4GL","4GP","4JA","4N2","4NN","4QY","4R1","4RS","4SG","4U0","4U1","4U2","4UZ","4V5","50A","51N","56N","57S","5DI","5GF","5GO","5II","5KQ","5KS","5KT","5KV","5L2","5L3","5LS","5LT","5MM","5N6","5QP","5RP","5SA","5SP","5TH","5TJ","5TK","5TM","61J","62I","64K","66O","6BG","6C2","6DM","6GB","6GP","6GR","6K3","6KH","6KL","6KS","6KU","6KW","6LA","6LS","6LW","6MJ","6MN","6PG","6PY","6PZ","6S2","6SA","6UD","6Y6","6YR","6ZC","73E","79J","7CV","7D1","7GP","7JZ","7K2","7K3","7NU","7SA","83Y","89Y","8B7","8B9","8EX","8GA","8GG","8GP","8I4","8LM","8LR","8OQ","8PK","8S0","8YV","95Z","96O","98U","9AM","9C1","9CD","9GP","9KJ","9MR","9OK","9PG","9QG","9QZ","9RN","9S7","9SG","9SJ","9SM","9SP","9T1","9T7","9VP","9WJ","9WN","9WZ","9YW","A0K","A1AIO","A1Q","A2G","A5C","A6P","AAL","AAO","ABC","ABD","ABE","ABF","ABL","AC1","ACG","ACR","ACX","ADA","ADG","ADR","AF1","AFD","AFL","AFO","AFP","AFR","AGC","AGH","AGL","AGR","AH2","AH8","AHG","AHM","AHR","AIG","ALL","ALX","AMG","AMN","AMU","AMV","ANA","AOG","AOS","AQA","ARA","ARB","ARE","ARI","ARW","ASC","ASG","ASO","AXP","AXR","AY9","AZC","B0D","B16","B1H","B1N","B2G","B4G","B6D","B7G","B8D","B9D","BBK","BBV","BCD","BCW","BDF","BDG","BDP","BDR","BDZ","BEM","BFN","BFP","BG6","BG8","BGC","BGL","BGN","BGP","BGS","BHG","BM3","BM7","BMA","BMX","BND","BNG","BNX","BO1","BOG","BQY","BRI","BS7","BTG","BTU","BW3","BWG","BXF","BXP","BXX","BXY","BZD","C3B","C3G","C3X","C4B","C4W","C4X","C5X","CAP","CBF","CBI","CBK","CDR","CE5","CE6","CE8","CEG","CEX","CEY","CEZ","CGF","CJB","CKB","CKP","CNP","CR1","CR6","CRA","CT3","CTO","CTR","CTT","D0N","D1M","D5E","D6G","DAF","DAG","DAN","DDA","DDB","DDL","DEG","DEL","DFR","DFX","DG0","DGC","DGD","DGM","DGO","DGS","DGU","DIG","DJB","DJE","DK4","DKX","DKZ","DL6","DLD","DLF","DLG","DMU","DNO","DO8","DOM","DP5","DPC","DQQ","DQR","DR2","DR3","DR4","DR5","DRI","DSR","DT6","DVC","DYM","E3M","E4P","E5G","EAG","EBG","EBQ","EEN","EEQ","EGA","EJT","EMP","EMZ","EPG","EQP","EQV","ERE","ERI","ETT","EUS","F1P","F1X","F55","F58","F6P","F8X","FBP","FCA","FCB","FCT","FDP","FDQ","FFC","FFX","FIF","FIX","FK9","FKD","FMF","FMO","FNG","FNY","FRU","FSA","FSI","FSM","FSR","FSW","FU4","FUB","FUC","FUD","FUF","FUL","FUY","FVQ","FX1","FYJ","G0S","G16","G1P","G20","G28","G2F","G3F","G3I","G4D","G4S","G6D","G6P","G6S","G7P","G8Z","GAA","GAC","GAD","GAF","GAL","GAT","GBH","GC1","GC4","GC9","GCB","GCD","GCN","GCO","GCS","GCT","GCU","GCV","GCW","GDA","GDL","GE1","GE3","GFP","GIV","GL0","GL1","GL2","GL4","GL5","GL6","GL7","GL9","GLA","GLB","GLC","GLD","GLF","GLG","GLO","GLP","GLS","GLT","GLW","GM0","GMB","GMH","GMT","GMZ","GN1","GN4","GNS","GNX","GP0","GP1","GP4","GPH","GPK","GPM","GPO","GPQ","GPU","GPV","GPW","GQ1","GRF","GRX","GS1","GS4","GS9","GSA","GSD","GTE","GTH","GTK","GTM","GTR","GU0","GU1","GU2","GU3","GU4","GU5","GU6","GU8","GU9","GUF","GUL","GUP","GUZ","GXL","GXV","GYE","GYG","GYP","GYU","GYV","GZL","H1M","H1S","H2P","H3S","H53","H6Q","H6Z","HBZ","HD4","HDL","HMS","HNV","HNW","HSG","HSH","HSJ","HSQ","HSR","HSU","HSX","HSY","HSZ","HTG","HTM","HVC","I57","IAB","IDC","IDF","IDG","IDR","IDS","IDT","IDU","IDX","IDY","IEM","IN1","IPT","ISD","ISL","ISX","IVG","IXD","J5B","JFZ","JHM","JLT","JRV","JS2","JSV","JV4","JVA","JVS","JZR","K5B","K99","KBA","KBG","KD5","KDA","KDB","KDD","KDE","KDF","KDM","KDN","KDO","KDR","KFN","KG1","KGM","KHP","KME","KO1","KO2","KOT","KQC","KTU","L1L","L6N","L6S","L6T","LAG","LAH","LAI","LAK","LAO","LAT","LB2","LBS","LBT","LCN","LDY","LEC","LER","LFC","LFR","LGC","LGU","LKA","LKS","LM2","LMO","LMT","LMU","LNV","LOG","LOX","LPK","LRH","LSM","LTG","LTM","LVO","LVZ","LXB","LXC","LXZ","LZ0","M1F","M1P","M2F","M3M","M3N","M55","M6D","M6P","M7B","M7P","M8C","MA1","MA2","MA3","MA8","MAB","MAF","MAG","MAL","MAN","MAT","MAV","MAW","MBE","MBF","MBG","MCU","MDA","MDP","MFA","MFB","MFU","MG5","MGA","MGC","MGL","MGS","MJJ","MLB","MLR","MMA","MMN","MN0","MNA","MQG","MQT","MRH","MRP","MSX","MTT","MUB","MUG","MUR","MVP","MXY","MXZ","MYG","N1L","N3U","N9S","NA1","NAA","NAG","NBG","NBX","NBY","NDG","NED","NFG","NG1","NG6","NGA","NGB","NGC","NGE","NGF","NGK","NGL","NGR","NGS","NGY","NGZ","NHF","NLC","NM6","NM9","NNG","NPF","NSQ","NT1","NTF","NTO","NTP","NXD","NYT","O1G","OAK","OEL","OI7","OPM","ORP","OSU","OTG","OTN","OTU","OX2","P53","P6P","P8E","PA1","PA5","PAV","PDX","PH5","PKM","PNA","PNG","PNJ","PNW","PPC","PRP","PSG","PSJ","PSV","PTQ","PUF","PZU","QDK","QIF","QKH","QPS","QV4","R1P","R1X","R2B","R2G","R5P","RAA","RAE","RAF","RAM","RAO","RAT","RB5","RBL","RCD","RDP","REL","RER","RF5","RG1","RGG","RHA","RHC","RI2","RIB","RIP","RM4","RNS","RNT","ROB","ROR","RP3","RP5","RP6","RPA","RR7","RRJ","RRY","RST","RTG","RTV","RUB","RUG","RUU","RV7","RVG","RVM","RWI","RY7","RZM","S6P","S7P","S81","SA0","SCG","SCR","SDD","SDY","SEJ","SF6","SF9","SFJ","SFU","SG4","SG5","SG6","SG7","SGA","SGC","SGD","SGN","SGS","SHB","SHD","SHG","SI3","SIA","SID","SIO","SIZ","SLB","SLM","SLT","SMD","SN5","SNG","SOE","SOG","SOL","SOR","SR1","SSG","SSH","STW","STZ","SUC","SUP","SUS","SWE","SZZ","T68","T6D","T6P","T6T","TA6","TAG","TCB","TCG","TDG","TEU","TF0","TFU","TGA","TGK","TGR","TGY","TH1","TM5","TM6","TM9","TMR","TMX","TNX","TOA","TOC","TQY","TRE","TRV","TS8","TT7","TTV","TTZ","TU4","TUG","TUJ","TUP","TUR","TVD","TVG","TVM","TVS","TVV","TVY","TW7","TWA","TWD","TWG","TWJ","TWY","TXB","TY6","TYV","U1Y","U2A","U2D","U63","U8V","U97","U9A","U9D","U9G","U9J","U9M","UAP","UBH","UBO","UCD","UDC","UEA","V3M","V3P","V71","VDF","VG1","VJ1","VJ4","VKN","VTB","W9T","WIA","WOO","WUN","WZ1","WZ2","WZ4","X0X","X1P","X1X","X2F","X2Y","X34","X4S","X5S","X6X","X6Y","XBP","XDP","XDX","XGP","XIL","XKJ","XLF","XLS","XMM","XS2","XUL","XXM","XXR","XXX","XY6","XY9","XYB","XYF","XYL","XYP","XYS","XYT","XYZ","YDR","YIO","YJM","YKR","YO5","YX0","YX1","YYB","YYD","YYH","YYJ","YYK","YYM","YYQ","YYR","YZ0","YZT","Z0F","Z15","Z16","Z2D","Z2T","Z3K","Z3L","Z3Q","Z3U","Z4K","Z4R","Z4S","Z4U","Z4V","Z4W","Z4Y","Z57","Z5J","Z5L","Z61","Z6G","Z6H","Z6J","Z6W","Z8H","Z8T","Z9D","Z9E","Z9H","Z9K","Z9L","Z9M","Z9N","Z9W","ZB0","ZB1","ZB2","ZB3","ZCD","ZCZ","ZD0","ZDC","ZDM","ZDO","ZEE","ZEL","ZGE","ZMR","UMQ","SQD"]);var r=function(h){return h[h.FilledSphere=0]="FilledSphere",h[h.FilledCube=1]="FilledCube",h[h.CrossedCube=2]="CrossedCube",h[h.DividedDiamond=3]="DividedDiamond",h[h.FilledCone=4]="FilledCone",h[h.DevidedCone=5]="DevidedCone",h[h.FlatBox=6]="FlatBox",h[h.FilledStar=7]="FilledStar",h[h.FilledDiamond=8]="FilledDiamond",h[h.FlatDiamond=9]="FlatDiamond",h[h.FlatHexagon=10]="FlatHexagon",h[h.Pentagon=11]="Pentagon",h[h.DiamondPrism=12]="DiamondPrism",h[h.PentagonalPrism=13]="PentagonalPrism",h[h.HexagonalPrism=14]="HexagonalPrism",h[h.HeptagonalPrism=15]="HeptagonalPrism",h}(r||{});const t=(0,e._j)({Blue:37052,Green:42577,Yellow:16765952,Orange:16021792,Pink:16162465,Purple:10830745,LightBlue:9424105,Brown:10582605,Red:15539236,Secondary:15854817});var A=function(h){return h[h.Hexose=0]="Hexose",h[h.HexNAc=1]="HexNAc",h[h.Hexosamine=2]="Hexosamine",h[h.Hexuronate=3]="Hexuronate",h[h.Deoxyhexose=4]="Deoxyhexose",h[h.DeoxyhexNAc=5]="DeoxyhexNAc",h[h.DiDeoxyhexose=6]="DiDeoxyhexose",h[h.Pentose=7]="Pentose",h[h.Deoxynonulosonate=8]="Deoxynonulosonate",h[h.DiDeoxynonulosonate=9]="DiDeoxynonulosonate",h[h.Unknown=10]="Unknown",h[h.Assigned=11]="Assigned",h}(A||{});const i={[A.Hexose]:r.FilledSphere,[A.HexNAc]:r.FilledCube,[A.Hexosamine]:r.CrossedCube,[A.Hexuronate]:r.DividedDiamond,[A.Deoxyhexose]:r.FilledCone,[A.DeoxyhexNAc]:r.DevidedCone,[A.DiDeoxyhexose]:r.FlatBox,[A.Pentose]:r.FilledStar,[A.Deoxynonulosonate]:r.FilledDiamond,[A.DiDeoxynonulosonate]:r.FlatDiamond,[A.Unknown]:r.FlatHexagon,[A.Assigned]:r.Pentagon};function v(h,a){return h===A.Unknown?4===a?r.DiamondPrism:5===a?r.PentagonalPrism:6===a?r.HexagonalPrism:7===a?r.HeptagonalPrism:r.FlatHexagon:i[h]}const O={abbr:"Unk",name:"Unknown",color:t.Secondary,type:A.Unknown},b=[{abbr:"Glc",name:"Glucose",color:t.Blue,type:A.Hexose},{abbr:"Man",name:"Mannose",color:t.Green,type:A.Hexose},{abbr:"Gal",name:"Galactose",color:t.Yellow,type:A.Hexose},{abbr:"Gul",name:"Gulose",color:t.Orange,type:A.Hexose},{abbr:"Alt",name:"Altrose",color:t.Pink,type:A.Hexose},{abbr:"All",name:"Allose",color:t.Purple,type:A.Hexose},{abbr:"Tal",name:"Talose",color:t.LightBlue,type:A.Hexose},{abbr:"Ido",name:"Idose",color:t.Brown,type:A.Hexose},{abbr:"GlcNAc",name:"N-Acetyl Glucosamine",color:t.Blue,type:A.HexNAc},{abbr:"ManNAc",name:"N-Acetyl Mannosamine",color:t.Green,type:A.HexNAc},{abbr:"GalNAc",name:"N-Acetyl Galactosamine",color:t.Yellow,type:A.HexNAc},{abbr:"GulNAc",name:"N-Acetyl Gulosamine",color:t.Orange,type:A.HexNAc},{abbr:"AltNAc",name:"N-Acetyl Altrosamine",color:t.Pink,type:A.HexNAc},{abbr:"AllNAc",name:"N-Acetyl Allosamine",color:t.Purple,type:A.HexNAc},{abbr:"TalNAc",name:"N-Acetyl Talosamine",color:t.LightBlue,type:A.HexNAc},{abbr:"IdoNAc",name:"N-Acetyl Idosamine",color:t.Brown,type:A.HexNAc},{abbr:"GlcN",name:"Glucosamine",color:t.Blue,type:A.Hexosamine},{abbr:"ManN",name:"Mannosamine",color:t.Green,type:A.Hexosamine},{abbr:"GalN",name:"Galactosamine",color:t.Yellow,type:A.Hexosamine},{abbr:"GulN",name:"Gulosamine",color:t.Orange,type:A.Hexosamine},{abbr:"AltN",name:"Altrosamine",color:t.Pink,type:A.Hexosamine},{abbr:"AllN",name:"Allosamine",color:t.Purple,type:A.Hexosamine},{abbr:"TalN",name:"Talosamine",color:t.LightBlue,type:A.Hexosamine},{abbr:"IdoN",name:"Idosamine",color:t.Brown,type:A.Hexosamine},{abbr:"GlcA",name:"Glucuronic Acid",color:t.Blue,type:A.Hexuronate},{abbr:"ManA",name:"Mannuronic Acid",color:t.Green,type:A.Hexuronate},{abbr:"GalA",name:"Galacturonic Acid",color:t.Yellow,type:A.Hexuronate},{abbr:"GulA",name:"Guluronic Acid",color:t.Orange,type:A.Hexuronate},{abbr:"AltA",name:"Altruronic Acid",color:t.Pink,type:A.Hexuronate},{abbr:"AllA",name:"Alluronic Acid",color:t.Purple,type:A.Hexuronate},{abbr:"TalA",name:"Taluronic Acid",color:t.LightBlue,type:A.Hexuronate},{abbr:"IdoA",name:"Iduronic Acid",color:t.Brown,type:A.Hexuronate},{abbr:"Qui",name:"Quinovose",color:t.Blue,type:A.Deoxyhexose},{abbr:"Rha",name:"Rhamnose",color:t.Green,type:A.Deoxyhexose},{abbr:"6dGul",name:"6-Deoxy Gulose",color:t.Orange,type:A.Deoxyhexose},{abbr:"6dAlt",name:"6-Deoxy Altrose",color:t.Pink,type:A.Deoxyhexose},{abbr:"6dTal",name:"6-Deoxy Talose",color:t.LightBlue,type:A.Deoxyhexose},{abbr:"Fuc",name:"Fucose",color:t.Red,type:A.Deoxyhexose},{abbr:"QuiNAc",name:"N-Acetyl Quinovosamine",color:t.Blue,type:A.DeoxyhexNAc},{abbr:"RhaNAc",name:"N-Acetyl Rhamnosamine",color:t.Green,type:A.DeoxyhexNAc},{abbr:"6dAltNAc",name:"N-Acetyl 6-Deoxy Altrosamine",color:t.Pink,type:A.DeoxyhexNAc},{abbr:"6dTalNAc",name:"N-Acetyl 6-Deoxy Talosamine",color:t.LightBlue,type:A.DeoxyhexNAc},{abbr:"FucNAc",name:"N-Acetyl Fucosamine",color:t.Red,type:A.DeoxyhexNAc},{abbr:"Oli",name:"Olivose",color:t.Blue,type:A.DiDeoxyhexose},{abbr:"Tyv",name:"Tyvelose",color:t.Green,type:A.DiDeoxyhexose},{abbr:"Abe",name:"Abequose",color:t.Orange,type:A.DiDeoxyhexose},{abbr:"Par",name:"Paratose",color:t.Pink,type:A.DiDeoxyhexose},{abbr:"Dig",name:"Digitoxose",color:t.Purple,type:A.DiDeoxyhexose},{abbr:"Col",name:"Colitose",color:t.LightBlue,type:A.DiDeoxyhexose},{abbr:"Ara",name:"Arabinose",color:t.Green,type:A.Pentose},{abbr:"Lyx",name:"Lyxose",color:t.Yellow,type:A.Pentose},{abbr:"Xyl",name:"Xylose",color:t.Orange,type:A.Pentose},{abbr:"Rib",name:"Ribose",color:t.Pink,type:A.Pentose},{abbr:"Kdn",name:"Keto-Deoxy Nonulonic Acid",color:t.Green,type:A.Deoxynonulosonate},{abbr:"Neu5Ac",name:"N-Acetyl Neuraminic Acid",color:t.Purple,type:A.Deoxynonulosonate},{abbr:"Neu5Gc",name:"N-Glycolyl Neuraminic Acid",color:t.LightBlue,type:A.Deoxynonulosonate},{abbr:"Neu",name:"Neuraminic Acid",color:t.Brown,type:A.Deoxynonulosonate},{abbr:"Sia",name:"Sialic acid",color:t.Red,type:A.Deoxynonulosonate},{abbr:"Pse",name:"Pseudaminic Acid",color:t.Green,type:A.DiDeoxynonulosonate},{abbr:"Leg",name:"Legionaminic Acid",color:t.Yellow,type:A.DiDeoxynonulosonate},{abbr:"Aci",name:"Acinetaminic Acid",color:t.Pink,type:A.DiDeoxynonulosonate},{abbr:"4eLeg",name:"4-Epilegionaminic Acid",color:t.LightBlue,type:A.DiDeoxynonulosonate},{abbr:"Bac",name:"Bacillosamine",color:t.Blue,type:A.Unknown},{abbr:"LDmanHep",name:"L-Glycero-D-Manno Heptose",color:t.Green,type:A.Unknown},{abbr:"Kdo",name:"Keto-Deoxy Octulonic Acid",color:t.Yellow,type:A.Unknown},{abbr:"Dha",name:"3-Deoxy Lyxo-Heptulosaric Acid",color:t.Orange,type:A.Unknown},{abbr:"DDmanHep",name:"D-Glycero-D-Manno-Heptose",color:t.Pink,type:A.Unknown},{abbr:"MurNAc",name:"N-Acetyl Muramic Acid",color:t.Purple,type:A.Unknown},{abbr:"MurNGc",name:"N-Glycolyl Muramic Acid",color:t.LightBlue,type:A.Unknown},{abbr:"Mur",name:"Muramic Acid",color:t.Brown,type:A.Unknown},{abbr:"Api",name:"Apicose",color:t.Green,type:A.Assigned},{abbr:"Fru",name:"Fructose",color:t.Green,type:A.Assigned},{abbr:"Tag",name:"Tagatose",color:t.Yellow,type:A.Assigned},{abbr:"Sor",name:"Sorbose",color:t.Orange,type:A.Assigned},{abbr:"Psi",name:"Psicose",color:t.Pink,type:A.Assigned}],_=function(){const h=new Map;for(let a=0,S=b.length;a{h.has(a)||h.set(a,O)}),h}(),d=function(){const h=new Map;for(let a=0,S=b.length;a{h.has(a)||h.set(a,O)}),h}();function s(h){C="default"===h?u:d}let C=u},1541:(tn,Ue,n)=>{"use strict";n.d(Ue,{i:()=>e});var e={};n.r(e),n.d(e,{Bundle:()=>t.N,Location:()=>o.a,Loci:()=>r.Q,Stats:()=>c,atomicProperty:()=>b,chainIndex:()=>I,coarseProperty:()=>_,entityIndex:()=>l,property:()=>v,residueIndex:()=>M});var c,o=n(1185),r=n(3931),t=n(7686),A=n(3543),y=n(8960);!function(m){function u(){return{elementCount:0,conformationCount:0,residueCount:0,chainCount:0,unitCount:0,structureCount:0,firstElementLoc:o.a.create(void 0),firstConformationLoc:o.a.create(void 0),firstResidueLoc:o.a.create(void 0),firstChainLoc:o.a.create(void 0),firstUnitLoc:o.a.create(void 0),firstStructureLoc:o.a.create(void 0)}}function d(D,R,f){const p=D.get(R)||0;D.set(R,p+f)}function s(D,R,f){const{indices:p,unit:E}=f,{elements:T}=E,L=A.CD.size(p),w=new Map,Q=new Map;if(L>0&&o.a.set(D.firstElementLoc,R,E,T[A.CD.start(p)]),L===T.length)D.unitCount+=1,1===D.unitCount&&o.a.set(D.firstUnitLoc,R,E,T[A.CD.start(p)]);else if(1===L){if(y.N.Traits.is(E.traits,y.N.Trait.MultiChain))return;D.elementCount+=1,1===D.elementCount&&o.a.set(D.firstElementLoc,R,E,T[A.CD.start(p)])}else if(y.N.isAtomic(E)){const{index:G,offsets:V}=E.model.atomicHierarchy.residueAtomSegments,{label_alt_id:U}=E.model.atomicHierarchy.atoms;let N=0;for(;N{if(Q.get(W)===J){if(""!==W&&(D.conformationCount+=1,1===D.conformationCount))for(let te=V[$],de=V[$+1];te{Q[N+1]-Q[N]===U&&(D.chainCount+=1,1===D.chainCount&&(V=N))}),!(V<0))for(let U=p;Uy.N.isAtomic(u.unit)?m(u):O("atomic")}function _(m){return u=>y.N.isCoarse(u.unit)?m(u):O("coarse")}function M(m){return y.N.isAtomic(m.unit)?m.unit.residueIndex[m.element]:-1}function I(m){return y.N.isAtomic(m.unit)?m.unit.chainIndex[m.element]:-1}function l(m){return i.Z.entity.key(m)}},7686:(tn,Ue,n)=>{"use strict";n.d(Ue,{N:()=>i});var i,e=n(3543),o=n(1969),r=n(8382),t=n(5734),A=n(3931),y=n(9767),c=n(2516);!function(v){function _(s){const C=[];for(const S of s.elements){const{unit:D,indices:R}=S;if(0===e.CD.size(R))continue;const f=[],p=[];if(e.CD.isInterval(R))1===e.CD.size(R)?p.push(e.IX.min(R)):f.push(e.IX.min(R),e.IX.max(R));else{let E=0;const T=R.length;for(;E2)f.push(R[L],R[w-1]);else for(let Q=L;Q{const D=[];S.groupedUnits.forEach(R=>D.push(e.SortedArray.ofUnsortedArray(R))),D.sort((R,f)=>R[0]-f[0]),a.push({groupedUnits:D,set:S.set,ranges:S.ranges})}),{hash:s.structure.hashCode,elements:a}}function M(s,C){const h=[];for(let a=0,S=s.length;ay.J.core.type.list(C))),ranges:y.J.core.type.list(s.ranges),set:y.J.core.type.list(s.set)})}v.Empty={hash:-1,elements:[]},v.fromSubStructure=function O(s,C){return _(c.cv.toLociWithSourceUnits(c.cv.Singletons(s,C)))},v.fromSelection=function b(s){return _(c.cv.toLociWithSourceUnits(s))},v.fromLoci=_,v.toLoci=function I(s,C){-1!==s.hash&&s.hash!==C.hashCode&&new Error("Bundle not compatible with given structure");const h=[];for(const a of s.elements)for(const S of a.groupedUnits){const D=M(S,C);if(0===D.length)continue;let R;if(0===a.ranges.length)R=a.set;else if(0===a.set.length)if(2===a.ranges.length)R=e.IX.ofRange(a.ranges[0],a.ranges[1]);else{const f=new Int32Array(t.m.size(a.ranges));t.m.forEach(a.ranges,(p,E)=>f[E]=p),R=e.SortedArray.ofSortedArray(f)}else{const f=t.m.size(a.ranges),p=new Int32Array(a.set.length+f);t.m.forEach(a.ranges,(E,T)=>p[T]=E),p.set(a.set,f),R=e.SortedArray.ofUnsortedArray(p)}for(const f of D)h.push({unit:f,indices:R})}return(0,A.Q)(C,h)},v.toStructure=function l(s,C){-1!==s.hash&&s.hash!==C.hashCode&&new Error("Bundle not compatible with given structure");const h=[];for(const a of s.elements)for(const S of a.groupedUnits){const D=M(S,C);if(0===D.length)continue;const R=D[0].elements,f=t.m.size(a.ranges),p=a.set.length,E=new Int32Array(p+f);let T;if(0===f){for(let L=0,w=p;LE[w]=R[L]),T=e.SortedArray.ofSortedArray(E);else if(e.SortedArray.min(a.set)>t.m.max(a.ranges)){t.m.forEach(a.ranges,(L,w)=>E[w]=R[L]);for(let L=0,w=p;Le.SortedArray.max(a.set)){for(let L=0,w=p;LE[w+p]=R[L]),T=e.SortedArray.ofSortedArray(E)}else{t.m.forEach(a.ranges,(L,w)=>E[w]=R[L]);for(let L=0,w=p;L{"use strict";n.d(Ue,{a:()=>o});var o,e=n(4369);!function(r){function t(m,u,d){return{kind:"element-location",structure:m,unit:u,element:d||0}}r.create=t,r.clone=function A(m){return t(m.structure,m.unit,m.element)},r.set=function y(m,u,d,s){return u&&(m.structure=u),d&&(m.unit=d),void 0!==s&&(m.element=s),m},r.copy=function c(m,u){return m.unit=u.unit,m.element=u.element,m},r.is=function i(m){return!!m&&"element-location"===m.kind},r.areEqual=function v(m,u){return m.unit===u.unit&&m.element===u.element};const O=(0,e.eB)(),b=(0,e.eB)();r.distance=function _(m,u){return m.unit.conformation.position(m.element,O),u.unit.conformation.position(u.element,b),e.eB.distance(O,b)},r.position=function M(m,u){return u.unit.conformation.position(u.element,m)},r.residueIndex=function I(m){return m.unit.model.atomicHierarchy.residueAtomSegments.index[m.element]},r.chainIndex=function l(m){return m.unit.model.atomicHierarchy.chainAtomSegments.index[m.element]}}(o||(o={}))},3931:(tn,Ue,n)=>{"use strict";n.d(Ue,{Q:()=>I});var e=n(9677),o=n(3543),r=n(4369),t=n(9767),A=n(1969),y=n(8960),c=n(8382),i=n(1185),v=n(8199),O=n(14),b=n(7136);const M=n(3370).U.diff;function I(l,m){return{kind:"element-loci",structure:l,elements:m}}!function(l){function d(we){for(const Oe of we.elements)if(o.CD.size(Oe.indices)>0)return!1;return!0}function C(we){let Oe=0;for(const{indices:Se}of we.elements)Oe+="number"==typeof Se?M(Se):Se.length;return Oe}function D(we){return d(we)?we:l(we.structure,[{unit:we.elements[0].unit,indices:o.CD.ofSingleton(o.CD.start(we.elements[0].indices))}])}function U(we){return we.length>3&&o.SortedArray.isRange(we)?o.IX.ofRange(we[0],we[we.length-1]):o.SortedArray.ofSortedArray(we)}function N(we,Oe){const Se=[],Ve=new Set;for(const Ne of we.elements)if(H(Ne))Se[Se.length]=Ne;else if(0===Ne.unit.kind){const K=Ne.unit.elements,ne=Ne.unit.model.atomicHierarchy,{label_alt_id:be}=Ne.unit.model.atomicHierarchy.atoms,{index:Te,offsets:ie}=ne.residueAtomSegments,ue=[],re=Ne.indices,ve=o.CD.size(re);let ce=0;for(;ce=0){const je=be.value(Ie);(!Oe||ge||!je||Ve.has(je))&&(ue[ue.length]=nt)}}}Se[Se.length]={unit:Ne.unit,indices:U(ue)}}else Se[Se.length]=Ne;return l(we.structure,Se)}function k(we){switch(we.kind){case 0:return we.model.atomicHierarchy.chainAtomSegments;case 1:return we.model.coarseHierarchy.spheres.chainElementSegments;case 2:return we.model.coarseHierarchy.gaussians.chainElementSegments}}function H(we){return we.unit.elements.length===o.CD.size(we.indices)}function $(we,Oe,Se){const{index:Ve}=k(we),Ne=we.elements;let K=0;for(let be=0,Te=Ne.length;be0&&(Se[Se.length]={unit:we,indices:U(ne)})}function J(we,Oe,Se,Ve,Ne){const{index:K}=k(we.elements[0].unit),ne=new Set;for(let be=Oe;be({unit:Oe,indices:o.CD.ofBounds(0,Oe.elements.length)})))},l.none=function a(we){return l(we,[])},l.getFirstLocation=function S(we,Oe){if(d(we))return;const Se=we.elements[0].unit,Ve=Se.elements[o.CD.getAt(we.elements[0].indices,0)];return Oe?(Oe.structure=we.structure,Oe.unit=we.elements[0].unit,Oe.element=Ve,Oe):i.a.create(we.structure,Se,Ve)},l.firstElement=D,l.firstResidue=function R(we){return d(we)?we:N(D(we))},l.firstChain=function f(we){return d(we)?we:W(D(we))},l.toStructure=function p(we){const Oe=[];for(const Se of we.elements){const{unit:Ve,indices:Ne}=Se,K=new Int32Array(o.CD.size(Ne));o.CD.forEach(Ne,(ne,be)=>K[be]=Ve.elements[ne]),Oe.push(Ve.getChild(o.SortedArray.ofSortedArray(K)))}return A.o.create(Oe,{parent:we.structure.parent})},l.forEachLocation=function E(we,Oe){if(l.isEmpty(we))return;const Se=i.a.create(we.structure);for(const Ve of we.elements){const{unit:Ne,indices:K}=Ve;Se.unit=Ne;const{elements:ne}=Ve.unit;for(let be=0,Te=o.CD.size(K);be{if(!Oe.unitMap.has(Ve.unit.id))return;const Ne=Oe.unitMap.get(Ve.unit.id),K=o.CD.indexedIntersect(Ve.indices,Ve.unit.elements,Ne.elements);o.CD.size(K)>0&&Se.push({unit:Ne,indices:K})}),l(Oe,Se)},l.union=function L(we,Oe){if(we.elements.length>Oe.elements.length)return L(Oe,we);if(l.isEmpty(we))return Oe;const Se=new Map;for(const Ne of we.elements)Se.set(Ne.unit.id,Ne.indices);const Ve=[];for(const Ne of Oe.elements)Se.has(Ne.unit.id)?(Ve[Ve.length]={unit:Ne.unit,indices:o.CD.union(Se.get(Ne.unit.id),Ne.indices)},Se.delete(Ne.unit.id)):Ve[Ve.length]=Ne;return Se.forEach((Ne,K)=>{Ve[Ve.length]={unit:we.structure.unitMap.get(K),indices:Ne}}),l(we.structure,Ve)},l.subtract=function w(we,Oe){const Se=new Map;for(const Ne of Oe.elements)Se.set(Ne.unit.id,Ne.indices);const Ve=[];for(const Ne of we.elements)if(Se.has(Ne.unit.id)){const K=o.CD.subtract(Ne.indices,Se.get(Ne.unit.id));if(0===o.CD.size(K))continue;Ve[Ve.length]={unit:Ne.unit,indices:K}}else Ve[Ve.length]=Ne;return l(we.structure,Ve)},l.intersect=function Q(we,Oe){const Se=new Map;for(const Ne of we.elements)Se.set(Ne.unit.id,Ne.indices);const Ve=[];for(const Ne of Oe.elements){if(!Se.has(Ne.unit.id))continue;const K=o.CD.intersect(Se.get(Ne.unit.id),Ne.indices);0!==o.CD.size(K)&&(Ve[Ve.length]={unit:Ne.unit,indices:K})}return l(we.structure,Ve)},l.areIntersecting=function G(we,Oe){if(we.elements.length>Oe.elements.length)return G(Oe,we);if(l.isEmpty(we))return l.isEmpty(Oe);const Se=new Map;for(const Ve of we.elements)Se.set(Ve.unit.id,Ve.indices);for(const Ve of Oe.elements)if(Se.has(Ve.unit.id)&&o.CD.areIntersecting(Se.get(Ve.unit.id),Ve.indices))return!0;return!1},l.isSubset=function V(we,Oe){if(l.isEmpty(we))return l.isEmpty(Oe);const Se=new Map;for(const Ne of we.elements)Se.set(Ne.unit.id,Ne.indices);let Ve=!1;for(const Ne of Oe.elements)if(Se.has(Ne.unit.id)){if(!o.CD.isSubset(Se.get(Ne.unit.id),Ne.indices))return!1;Ve=!0}return Ve},l.extendToWholeResidues=N,l.extendToWholeChains=W,l.extendToWholeEntities=function de(we){const Oe=[],Se=i.a.create(we.structure),Ve=new Set,{units:Ne}=we.structure;for(let K=0,ne=we.elements.length;K12)K[K.length]=Oe[ie],K[K.length]=Oe[ue-1];else for(let re=ie;re{Oe+=C(Ne)});const Se=new Float32Array(3*Oe);let Ve=0;return we.forEach(Ne=>{le(Ne,Se,Ve),Ve+=3*C(Ne)}),v.c.ofPositions(Se)},l.toExpression=function Re(we){if(l.isEmpty(we))return t.J.struct.generator.empty();const Oe=we.structure.models,Se=new Map;for(const be of we.elements){const{indices:Te}=be,{elements:ie}=be.unit,ue=be.unit.conformation.operator.name;let re;Se.has(ue)?re=Se.get(ue).xs:(re=e.th.create(),Se.set(ue,{modelLabel:be.unit.model.label,modelIndex:be.unit.model.modelNum,xs:re}));for(let ve=0,ce=o.CD.size(Te);ve1,Te.modelLabel,Te.modelIndex))}const K=new Map;for(let be=0,Te=Ve.length;be{const{ranges:Te,set:ie}=be.atom,{opName:ue}=be.chain,re=t.J.struct.atomProperty.core.operatorName(),ve=t.J.struct.atomProperty.core.sourceIndex(),ce=[];ie.length>0&&(ce[ce.length]=t.J.core.set.has([t.J.core.type.set(ie),ve]));for(let se=0,ae=Te.length/2;se1?t.J.core.logic.or(ce):ce[0],"chain-test":ue.length>1?t.J.core.set.has([t.J.core.type.set(ue),re]):t.J.core.rel.eq([re,ue[0]]),"entity-test":t.J.core.logic.and([t.J.core.rel.eq([t.J.struct.atomProperty.core.modelLabel(),se]),t.J.core.rel.eq([t.J.struct.atomProperty.core.modelIndex(),ae])])}))}else ne.push(t.J.struct.generator.atomGroups({"atom-test":ce.length>1?t.J.core.logic.or(ce):ce[0],"chain-test":ue.length>1?t.J.core.set.has([t.J.core.type.set(ue),re]):t.J.core.rel.eq([re,ue[0]])}))}),t.J.struct.modifier.union([1===ne.length?ne[0]:t.J.struct.combinator.merge(ne.map(be=>t.J.struct.modifier.union([be])))])}}(I||(I={}))},14:(tn,Ue,n)=>{"use strict";n.d(Ue,{Z:()=>h});var e=n(8960),o=n(2008),r=n(8699),t=n(5384);function c(){throw new Error("Property only available for atomic models.")}function i(a){throw a?new Error(`Property only available for coarse models (${a}).`):new Error("Property only available for coarse models.")}const v={key:a=>a.element,x:a=>a.unit.conformation.x(a.element),y:a=>a.unit.conformation.y(a.element),z:a=>a.unit.conformation.z(a.element),id:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicConformation.atomId.value(a.element):c(),occupancy:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicConformation.occupancy.value(a.element):c(),B_iso_or_equiv:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicConformation.B_iso_or_equiv.value(a.element):c(),sourceIndex:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicHierarchy.atomSourceIndex.value(a.element):a.element,type_symbol:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicHierarchy.atoms.type_symbol.value(a.element):c(),label_atom_id:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicHierarchy.atoms.label_atom_id.value(a.element):c(),auth_atom_id:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicHierarchy.atoms.auth_atom_id.value(a.element):c(),label_alt_id:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicHierarchy.atoms.label_alt_id.value(a.element):c(),label_comp_id:O,auth_comp_id:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicHierarchy.atoms.auth_comp_id.value(a.element):c(),pdbx_formal_charge:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicHierarchy.atoms.pdbx_formal_charge.value(a.element):c(),vdw_radius:a=>e.N.isAtomic(a.unit)?(0,o.sO)(a.unit.model.atomicHierarchy.atoms.type_symbol.value(a.element)):c()};function O(a){return e.N.isAtomic(a.unit)||c(),a.unit.model.atomicHierarchy.atoms.label_comp_id.value(a.element)}function b(a){return e.N.isAtomic(a.unit)?a.unit.model.atomicHierarchy.residues.label_seq_id.value(a.unit.residueIndex[a.element]):c()}function M(a){e.N.isAtomic(a.unit)||c();const S=a.unit.model.sequence.byEntityKey[u(a)];return S&&S.sequence.microHet.get(b(a))||[O(a)]}function u(a){switch(a.unit.kind){case 0:return a.unit.model.atomicHierarchy.index.getEntityFromChain(a.unit.chainIndex[a.element]);case 1:return a.unit.model.coarseHierarchy.spheres.entityKey[a.element];case 2:return a.unit.model.coarseHierarchy.gaussians.entityKey[a.element]}}const s=[],h={constant:{true:a=>!0,false:a=>!1,zero:a=>0},atom:v,residue:{key:a=>e.N.isAtomic(a.unit)?a.unit.residueIndex[a.element]:c(),group_PDB:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicHierarchy.residues.group_PDB.value(a.unit.residueIndex[a.element]):c(),label_seq_id:b,auth_seq_id:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicHierarchy.residues.auth_seq_id.value(a.unit.residueIndex[a.element]):c(),pdbx_PDB_ins_code:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicHierarchy.residues.pdbx_PDB_ins_code.value(a.unit.residueIndex[a.element]):c(),isNonStandard:a=>e.N.isAtomic(a.unit)?M(a).some(S=>"n"===a.unit.model.properties.chemicalComponentMap.get(S).mon_nstd_flag[0]):c(),hasMicroheterogeneity:function _(a){e.N.isAtomic(a.unit)||c();const S=a.unit.model.sequence.byEntityKey[u(a)];return S&&S.sequence.microHet.has(b(a))},microheterogeneityCompIds:M,secondary_structure_type:a=>{var S;e.N.isAtomic(a.unit)||c();const D=null===(S=r.v.get(a.structure).value)||void 0===S?void 0:S.get(a.unit.invariantId);return D?D.type[D.getIndex(a.unit.residueIndex[a.element])]:536870912},secondary_structure_key:a=>{var S;e.N.isAtomic(a.unit)||c();const D=null===(S=r.v.get(a.structure).value)||void 0===S?void 0:S.get(a.unit.invariantId);return D?D.key[D.getIndex(a.unit.residueIndex[a.element])]:-1},chem_comp_type:a=>e.N.isAtomic(a.unit)?a.unit.model.properties.chemicalComponentMap.get(O(a)).type:c()},chain:{key:a=>e.N.isAtomic(a.unit)?a.unit.chainIndex[a.element]:c(),label_asym_id:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicHierarchy.chains.label_asym_id.value(a.unit.chainIndex[a.element]):c(),auth_asym_id:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicHierarchy.chains.auth_asym_id.value(a.unit.chainIndex[a.element]):c(),label_entity_id:a=>e.N.isAtomic(a.unit)?a.unit.model.atomicHierarchy.chains.label_entity_id.value(a.unit.chainIndex[a.element]):c()},entity:{key:u,id:a=>a.unit.model.entities.data.id.value(u(a)),type:a=>a.unit.model.entities.data.type.value(u(a)),src_method:a=>a.unit.model.entities.data.src_method.value(u(a)),pdbx_description:a=>a.unit.model.entities.data.pdbx_description.value(u(a)),formula_weight:a=>a.unit.model.entities.data.formula_weight.value(u(a)),pdbx_number_of_molecules:a=>a.unit.model.entities.data.pdbx_number_of_molecules.value(u(a)),details:a=>a.unit.model.entities.data.details.value(u(a)),pdbx_mutation:a=>a.unit.model.entities.data.pdbx_mutation.value(u(a)),pdbx_fragment:a=>a.unit.model.entities.data.pdbx_fragment.value(u(a)),pdbx_ec:a=>a.unit.model.entities.data.pdbx_ec.value(u(a)),subtype:a=>a.unit.model.entities.subtype.value(u(a)),prd_id:a=>{var S,D;return null!==(D=null===(S=a.unit.model.entities.prd_id)||void 0===S?void 0:S.value(u(a)))&&void 0!==D?D:""}},unit:{id:a=>a.unit.id,chainGroupId:a=>a.unit.chainGroupId,multiChain:a=>e.N.Traits.is(a.unit.traits,e.N.Trait.MultiChain),object_primitive:a=>a.unit.objectPrimitive,operator_name:a=>a.unit.conformation.operator.name,operator_key:a=>a.unit.conformation.operator.key,model_index:a=>a.unit.model.modelNum,model_label:a=>a.unit.model.label,model_entry_id:a=>a.unit.model.entryId,hkl:a=>a.unit.conformation.operator.hkl,spgrOp:a=>a.unit.conformation.operator.spgrOp,model_num:a=>a.unit.model.modelNum,pdbx_struct_assembly_id:a=>{var S;return(null===(S=a.unit.conformation.operator.assembly)||void 0===S?void 0:S.id)||t.JX.DefaultName},pdbx_struct_oper_list_ids:a=>{var S;return(null===(S=a.unit.conformation.operator.assembly)||void 0===S?void 0:S.operList)||s},struct_ncs_oper_id:a=>a.unit.conformation.operator.ncsId},coarse:{key:v.key,entityKey:a=>e.N.isCoarse(a.unit)?a.unit.coarseElements.entityKey[a.element]:i(),x:v.x,y:v.y,z:v.z,asym_id:a=>e.N.isCoarse(a.unit)?a.unit.coarseElements.asym_id.value(a.element):i(),entity_id:a=>e.N.isCoarse(a.unit)?a.unit.coarseElements.entity_id.value(a.element):i(),seq_id_begin:a=>e.N.isCoarse(a.unit)?a.unit.coarseElements.seq_id_begin.value(a.element):i(),seq_id_end:a=>e.N.isCoarse(a.unit)?a.unit.coarseElements.seq_id_end.value(a.element):i(),sphere_radius:a=>e.N.isSpheres(a.unit)?a.unit.coarseConformation.radius[a.element]:i("spheres"),sphere_rmsf:a=>e.N.isSpheres(a.unit)?a.unit.coarseConformation.rmsf[a.element]:i("spheres"),gaussian_weight:a=>e.N.isGaussians(a.unit)?a.unit.coarseConformation.weight[a.element]:i("gaussians"),gaussian_covariance_matrix:a=>e.N.isGaussians(a.unit)?a.unit.coarseConformation.covariance_matrix[a.element]:i("gaussians")}}},1969:(tn,Ue,n)=>{"use strict";n.d(Ue,{o:()=>le});var e=n(467),o=n(3543),r=n(9677),t=n(7552),A=n(5644),y=n(8382),c=n(1541),i=n(8960),v=n(6871),O=n(5685);class b{addToUnit(Te,ie){const ue=this.unitMap.get(Te);ue?ue[ue.length]=ie:(this.unitMap.set(Te,[ie]),this.ids[this.ids.length]=Te),this.elementCount++}beginUnit(Te){this.parentId=Te,this.currentUnit=this.currentUnit.length>0?[]:this.currentUnit}addElement(Te){this.currentUnit[this.currentUnit.length]=Te,this.elementCount++}addElementRange(Te,ie,ue){for(let re=ie;re1&&(0,y.eh)(ae);let Le=se.getChild(o.SortedArray.ofSortedArray(ae));const nt=ue.add(Le.id,Le);Le!==nt&&(Le=nt.applyOperator(Le.id,Le.conformation.operator,!0)),ie[ie.length]=Le}return le.create(ie,{parent:this.parent})}getStructure(){return this._getStructure(!1)}getStructureDeduplicate(){return this._getStructure(!0)}setSingletonLocation(Te){const ie=this.ids[0];Te.unit=this.parent.unitMap.get(ie),Te.element=this.unitMap.get(ie)[0]}get isEmpty(){return 0===this.elementCount}constructor(Te,ie){this.parent=Te,this.isSorted=ie,this.ids=[],this.unitMap=o.Yz.Mutable(),this.parentId=-1,this.currentUnit=[],this.elementCount=0}}var _=n(1739),M=n(14);function I(be,Te){let ie=1;for(;Te--;)ie*=be--;return ie}class u{move(){if(this.hasNext){let Te=0,ie=0,ue=this.index;for(;ue;ue>>>=1,Te++)1&ue&&(this.value[ie++]=this.array[Te]);this.index=function m(be){const Te=be&-be,ie=be+Te;return ie|((ie&-ie)/Te>>1)-1}(this.index),this.hasNext=this.indexbe?0:I(be,Te)/I(Te,Te)}(Te.length,ie),this.maxIndex=1<0&&ie<=Te.length}}function d(be,Te){const ie=[],ue=new u(be,Te);for(;ue.hasNext;)ie.push(ue.move().slice());return ie}var s=n(4506),C=n(4369),h=n(8199),a=n(6115),S=n(2434),D=n(2789);const R=[],f={links:R,terminalLinks:R,elements:R,partialElements:R,getElementIndices:()=>R,getLinkIndices:()=>R,getTerminalLinkIndices:()=>R};var p=n(4561);const E=(0,S.F1)("C"),T=(0,S.F1)("O"),L=[p.X.elementFingerprint([E,E,E,T]),p.X.elementFingerprint([E,E,E,E,T]),p.X.elementFingerprint([E,E,E,E,E,T]),p.X.elementFingerprint([E,E,E,E,E,E,T])];function w(be,Te){let ie=-1,ue=-1,re=-1,ve=-1;const{elements:ce}=be,{type_symbol:se,label_atom_id:ae}=be.model.atomicHierarchy.atoms,{b:ge,offset:Ie}=be.bonds;for(let Le=0,nt=Te.length;Le0}get customPropertyDescriptors(){return this.state.customProps||(this.state.customProps=new W.v),this.state.customProps}get currentPropertyData(){return this.state.propertyData||(this.state.propertyData=Object.create(null)),this.state.propertyData}get inheritedPropertyData(){return this.parent?this.parent.currentPropertyData:this.currentPropertyData}get polymerResidueCount(){return-1===this.state.polymerResidueCount&&(this.state.polymerResidueCount=function Se(be){const{units:Te}=be;let ie=0;for(let ue=0,re=Te.length;ue0&&(ie+=1);return ie}(this)),this.state.polymerUnitCount}get uniqueElementCount(){return-1===this.state.uniqueElementCount&&(this.state.uniqueElementCount=function Oe(be){const{unitSymmetryGroups:Te}=be;let ie=0;for(let ue=0,re=Te.length;ueA.Kx.isCoarseGrained(Te))}get isEmpty(){return 0===this.units.length}get hashCode(){return-1!==this.state.hashCode?this.state.hashCode:this.computeHash()}get transformHash(){return-1!==this.state.transformHash||(this.state.transformHash=(0,y.TI)(this.units.map(Te=>Te.id))),this.state.transformHash}computeHash(){let Te=23;for(let ie=0,ue=this.units.length;ie500?ee:g}(Te.length);ie.reset();for(let ue=0,re=Te.length;uent+je.properties.saccharideComponentMap.size,0))return f;const Te=[],ie=[],ue=[],re=[],ve=new Map;function ce(nt,je,Lt){return`${nt}|${je}|${Lt}`}function se(nt,je){ve.has(nt)?ve.get(nt).push(je):ve.set(nt,[je])}function ae(nt,je){C.eB.sub(ue[nt].geometry.direction,ue[je].geometry.center,ue[nt].geometry.center),C.eB.normalize(ue[nt].geometry.direction,ue[nt].geometry.direction)}const ge=(0,C.eB)();function Ie(nt,je,Lt){const en=ue[nt].geometry;C.eB.sub(en.direction,Lt.conformation.position(Lt.elements[je],ge),en.center),C.eB.normalize(en.direction,en.direction)}for(let nt=0,je=be.units.length;nt{Je.connectedIndices.forEach(en=>{Je.getEdges(en).forEach(({props:Bt,indexB:pn})=>{if(!S.I$.isCovalent(Bt.flag))return;const $e=be.unitMap.get(Je.unitA),mt=be.unitMap.get(Je.unitB),_t=Le($e,en),Me=Le(mt,pn);if(_t.length>0&&Me.length>0){const Ke=_t.length,ut=Me.length;for(let Kt=0,sn=Math.max(Ke,ut);Ktre[ue.get(se.id)]+o.CD.indexOf(se.elements,ae)}}(this))}get model(){if(this.state.model)return this.state.model;if(this.state.representativeModel)return this.state.representativeModel;if(this.state.masterModel)return this.state.masterModel;const Te=this.models;if(Te.length>1)throw new Error("The structure is based on multiple models and has neither a master- nor a representative-model.");return this.state.model=Te[0],this.state.model}get masterModel(){return this.state.masterModel}get representativeModel(){return this.state.representativeModel}hasElement(Te){return!!this.unitMap.has(Te.unit.id)&&o.SortedArray.has(this.unitMap.get(Te.unit.id).elements,Te.element)}getModelIndex(Te){return this.models.indexOf(Te)}remapModel(Te){const{dynamicBonds:ie,interUnitBonds:ue,parent:re}=this.state,ve=[];for(const ce of this.unitSymmetryGroups){const se=ce.units[0].remapModel(Te,ie);ve.push(se);for(let ae=1,ge=ce.units.length;ae0?kt[0].id:0;for(let or=0,Nr=kt.length;or2e5||je(kt,or)?en(kt,To,Dr,Jr,Nr):Dr.addUnit(0,kt,Nr,To,Jr?i.N.Trait.MultiChain:i.N.Trait.None):Dr.addUnit(0,kt,Nr,To,Jr?i.N.Trait.MultiChain:i.N.Trait.None)}const Pr=kt.coarseHierarchy;return Pr.isDefined&&(Pr.spheres.count>0&&Bt(Dr,kt,kt.coarseHierarchy.spheres,1),Pr.gaussians.count>0&&Bt(Dr,kt,kt.coarseHierarchy.gaussians,2)),Dr.getStructure()}function je(kt,Ot){const An=kt.atomicHierarchy.index.getEntityFromChain(Ot);return"water"===kt.entities.data.type.value(An)}function Lt(kt,Ot){const An=kt.atomicHierarchy.index.getEntityFromChain(Ot);return"polymer"===kt.entities.data.type.value(An)}function Je(kt,Ot,An,jn,On){const{x:fr,y:Dr,z:Pr}=kt.atomicConformation,or={x:fr,y:Dr,z:Pr,indices:Ot},Nr=(0,J.Eh)(or,(0,ye.r)(or),8192),{offset:Ir,count:Or,array:Jr}=Nr.buckets,To=(jn?i.N.Trait.MultiChain:i.N.Trait.None)|(Ir.length>1?i.N.Trait.Partitioned:i.N.Trait.None);An.beginChainGroup();for(let un=0,ct=Ir.length;un1?i.N.Trait.Partitioned:i.N.Trait.None);An.beginChainGroup();for(let Rn=0,er=dt.length;Rni.N.conformationId(Ot)).join("|"))},be.areUnitIdsEqual=Ke,be.areUnitIdsAndIndicesEqual=function ut(kt,Ot){if(kt===Ot)return!0;if(!Ke(kt,Ot))return!1;for(let An=0,jn=kt.units.length;An=this.structure.units.length?this.hasNext=!1:(this.current.unit=this.structure.units[this.unitIndex],this.elements=this.current.unit.elements,this.maxIdx=this.elements.length-1,0===this.maxIdx&&(this.hasNext=this.unitIndex+10,this.hasNext&&(this.elements=Ot.units[0].elements,this.maxIdx=this.elements.length-1,this.current.unit=Ot.units[0])}};const Gt=(0,C.eB)();function rn(kt,Ot,An){const{elements:jn,conformation:On}=kt,fr=Gt;let Dr=Number.MAX_VALUE;for(let Pr=0,or=jn.length;PrOt.units[0].polymerElements.length>0)}let Vt;var kt;be.distance=function nn(kt,Ot){if(0===kt.elementCount||0===Ot.elementCount)return 0;const{units:An}=kt;let jn=Number.MAX_VALUE;for(let On=0,fr=An.length;OnOn(or)))return;const Dr=kt.lookup3d,Pr=(0,C.eB)();for(const or of kt.units){if(!On(or))continue;const Nr=or.boundary.sphere;C.eB.transformMat4(Pr,Nr.center,or.conformation.operator.matrix);const Ir=Dr.findUnitIndices(Pr[0],Pr[1],Pr[2],Nr.radius+jn);for(let Or=0;Or=Jr.id||!On(Jr)||!fr(or,Jr)||(Jr.elements.length>=or.elements.length?Ot(or,Jr):Ot(Jr,or))}}},be.eachAtomicHierarchyElement=function It(kt,{chain:Ot,residue:An,atom:jn}){const On=c.i.Location.create(kt);for(const fr of kt.units){if(0!==fr.kind)continue;On.unit=fr;const{elements:Dr}=fr,Pr=o.hT.transientSegments(fr.model.atomicHierarchy.chainAtomSegments,Dr),or=o.hT.transientSegments(fr.model.atomicHierarchy.residueAtomSegments,Dr);for(;Pr.hasNext;){const Nr=Pr.move();if(Ot&&(On.element=Dr[Nr.start],Ot(On)),An||jn)for(or.setSegment(Nr);or.hasNext;){const Ir=or.move();if(An&&(On.element=Dr[Ir.start],An(On)),jn)for(let Or=Ir.start,Jr=Ir.end;Or=jn.largeResidueCount*An?function $t(kt,Ot){const An=Dt(kt);return An.length>=1&&An[0].units.length>Ot.highSymmetryUnitCount}(kt,jn)?Vt.Huge:Vt.Gigantic:function Ct(kt,Ot){const An=Dt(kt);return 1===An.length&&An[0].units.length>2&&An[0].units[0].polymerElements.length{"use strict";n.d(Ue,{u:()=>M});var M,e=n(467),o=n(3543),r=n(8382),t=n(5384),A=n(4369),y=n(4824),c=n(5644),i=n(2516),v=n(1969),O=n(8960),b=n(9651),_=n(14);function I(R){return i.RT.generators.atoms({chainTest:i.RT.pred.and(i.RT.pred.eq(f=>_.Z.unit.operator_name(f.element),t.JX.DefaultName),i.RT.pred.inSet(f=>_.Z.chain.label_asym_id(f.element),R))})}function l(R,f,p,E,T,L){const{spacegroup:w,ncsOperators:Q}=R,G=[],{toFractional:V}=w.cell,U=A.eB.transformMat4((0,A.eB)(),L,V),N=t.is.getSymmetryOperatorRef(w,f,p,E,T,U);if(Q&&Q.length)for(let k=0,H=Q.length;k=0&&f[1]<=0&&p[1]>=0&&f[2]<=0&&p[2]>=0&&(Q[0]=t.is.getSymmetryOperator(T,0,0,0,0));for(let G=0;Gfunction S(R,f,p){return D.apply(this,arguments)}(k,U,N))},R.buildSymmetryRange=function T(U,N,k){return y.YZ.create("Build Symmetry",H=>function h(R,f,p,E){return a.apply(this,arguments)}(H,U,N,k))},R.buildNcs=function L(U){return y.YZ.create("Build NCS",N=>function s(R,f){return C.apply(this,arguments)}(N,U))},R.areUnitsEquivalent=w,R.UnitEquivalenceBuilder=Q,R.computeTransformGroups=function G(U){const N=Q();for(const H of U.units)N.add(H.id,H);const k=[];for(const H of N.groups)k.push(O.N.SymmetryGroup(H.map($=>U.unitMap.get($))));return k},R.areTransformGroupsEquivalent=function V(U,N){if(U.length!==N.length)return!1;for(let k=0,H=U.length;k{"use strict";n.d(Ue,{N:()=>L});var e=n(7552),o=n(5644),r=n(5384),t=n(1739),A=n(9909),y=n(4561),c=n(3543),i=n(8382),v=n(9136),O=n(5734),b=n(2434),d=n(8199),s=n(4369);const C=(0,s.eB)();function a(w){const Q=function h(w){const{elements:Q,conformation:G}=w,V=new Float32Array(3*Q.length);for(let U=0,N=Q.length;U{const Z=$.length;$.push(p.X.ofUnsortedArray([de,ye,j])),J.set((0,i.bd)(de,ye),j),W.has(de)?W.get(de).push(Z):W.set(de,[Z])};for(let de=0;de=2){te(de,j[0],j[1]);for(let Z=1,q=j.length;ZJ.get((0,i.bd)(de,ye)),getTripletIndices:de=>W.get(de),triplets:$}}!function(w){let Q;var ne;function $(ne){const be=[];for(let Te=0,ie=ne.length;Tebe[Te]}(ne=Q=w.Kinds||(w.Kinds={}))[ne.Atomic=0]="Atomic",ne[ne.Spheres=1]="Spheres",ne[ne.Gaussians=2]="Gaussians",w.isAtomic=function G(ne){return 0===ne.kind},w.isCoarse=function V(ne){return 1===ne.kind||2===ne.kind},w.isSpheres=function U(ne){return 1===ne.kind},w.isGaussians=function N(ne){return 2===ne.kind},w.create=function k(ne,be,Te,ie,ue,re,ve,ce,se){switch(ue){case 0:return new Y(ne,be,Te,ie,re,ce,e.J.createMapping(ve,re.atomicConformation),se??{});case 1:return Be(ne,be,Te,ie,re,1,ce,e.J.createMapping(ve,re.coarseConformation.spheres,Z(re)),se??{});case 2:return Be(ne,be,Te,ie,re,2,ce,e.J.createMapping(ve,re.coarseConformation.gaussians,be=>0),se??{})}},w.SymmetryGroup=J,function(ne){ne.areInvariantElementsEqual=function be(ie,ue){return ie.hashCode===ue.hashCode&&c.SortedArray.areEqual(ie.elements,ue.elements)},ne.getUnitSymmetryGroupsIndexMap=function Te(ie){const ue=c.Yz.Mutable();for(let re=0,ve=ie.length;re0):this.conformation;return new g(this.id,this.invariantId,this.chainGroupId,this.traits,be,this.kind,this.elements,ve,ie)}get boundary(){if(this.props.boundary)return this.props.boundary;const{x:be,y:Te,z:ie}=this.getCoarseConformation();return this.props.boundary=ye.is(this.traits,de.FastBoundary)?(0,S.b)({x:be,y:Te,z:ie,indices:this.elements}):(0,S.r)({x:be,y:Te,z:ie,indices:this.elements}),this.props.boundary}get lookup3d(){if(this.props.lookup3d)return this.props.lookup3d;const{x:be,y:Te,z:ie}=this.getCoarseConformation();return this.props.lookup3d=(0,r.Eh)({x:be,y:Te,z:ie,indices:this.elements},this.boundary),this.props.lookup3d}get principalAxes(){return this.props.principalAxes||(this.props.principalAxes=a(this)),this.props.principalAxes}get polymerElements(){return this.props.polymerElements||(this.props.polymerElements=function M(w){const Q=[],{elements:G,model:V}=w,{spheres:U,gaussians:N}=V.coarseHierarchy,k=v.Nf.isSpheres(w)?U.polymerRanges:N.polymerRanges,H=O.m.transientSegments(k,G);for(;H.hasNext;){const{start:$,end:J}=H.move();for(let W=$;W{"use strict";n.d(Ue,{gn:()=>de,dZ:()=>v,kD:()=>W,MQ:()=>f});var i,e=n(8672),o=n(2434),r=n(3543),t=n(6290),A=n(4506),y=n(8960),c=n(481);(i||(i={})).Empty=A.O.create([],[],[],0,{flags:[],order:[],key:[]});class v extends c.Z{getBondFromLocation(j){return y.N.isAtomic(j.aUnit)&&y.N.isAtomic(j.bUnit)?this.getEdge(j.aIndex,j.aUnit.id,j.bIndex,j.bUnit.id):void 0}getBondIndexFromLocation(j){return y.N.isAtomic(j.aUnit)&&y.N.isAtomic(j.bUnit)?this.getEdgeIndex(j.aIndex,j.aUnit.id,j.bIndex,j.bUnit.id):-1}}(v||(v={})).UnitPairBonds=class j extends c.Z.UnitPairEdges{};var O=n(6066),b=n(5373),_=n(8334),M=n(9344),I=n(8737),l=n(4369),m=n(2028),u=n(4632);const d=l.eB.distance;function s(ye,j,Z,q,Y,ee,g){const _e=new A.O.EdgeBuilder(ee,ye,j),xe=new Uint16Array(_e.slotCount),le=new Int8Array(_e.slotCount),Ae=new Uint32Array(_e.slotCount);for(let Be=0,Ce=_e.edgeCount;Be=se)continue;const ae=r.SortedArray.indexOf(ye.elements,se);if(ae<0)continue;const ge=Ce[ve],Ie=Re[ve];if(ge>=0&&ge!==ne||Ie>=0&&Ie!==ne)continue;const Le=(0,O.Yd)(q.value(se)),nt=le[ve],je=a(ye,Te,se);let Lt=!1;nt>=0?Lt=(0,m.T)(je,nt,.3):ee>=0?Lt=je1&&(ae=!1)}}}return s(ne,be,ie,Te,ue,g,{canRemap:ce||se&&ae})}(ye,Z)}var p=n(1969),E=n(5644);const T=l.eB.distance,L=l.eB.set,w=l.eB.squaredDistance,Q=l.eB.transformMat4,G=(0,l.eB)(),V=(0,l.eB)();function U(ye,j,Z,q){return ye.conformation.position(j,G),Z.conformation.position(q,V),T(G,V)}const N=(0,l.$I)(),k=(0,l.eB)(),$={...O.kD,ignoreWater:!0,ignoreIon:!0};function W(ye,j){const Z={...$,...j};return function J(ye,j){const Z=new c.Z.Builder,q=ye.models.some(ee=>_.z.Provider.get(ee)),Y=ye.models.some(ee=>I.A.isExhaustive(ee));return j.noCompute||ye.isCoarseGrained&&!q&&!Y||p.o.eachUnitPair(ye,(ee,g)=>{!function H(ye,j,Z,q){const{maxRadius:Y}=Z,{elements:ee,residueIndex:g}=ye,{x:_e,y:xe,z:le}=ye.model.atomicConformation,{elements:Ae,residueIndex:Be}=j,Ce=ye.elements.length,{type_symbol:Re,label_alt_id:ke,label_atom_id:we,label_comp_id:Oe}=ye.model.atomicHierarchy.atoms,{type_symbol:Se,label_alt_id:Ve,label_atom_id:Ne,label_comp_id:K}=j.model.atomicHierarchy.atoms,{auth_seq_id:ne}=ye.model.atomicHierarchy.residues,{auth_seq_id:be}=j.model.atomicHierarchy.residues,{occupancy:Te}=ye.model.atomicConformation,{occupancy:ie}=j.model.atomicConformation,ue=Te.isDefined&&ie.isDefined,re=ye.model===j.model&&I.A.Provider.get(ye.model),ve=!Z.forceCompute&&ye.model===j.model&&_.z.Provider.get(ye.model),{atomSourceIndex:ce}=ye.model.atomicHierarchy,{invertedIndex:se}=ve?E.Kx.getInvertedAtomSourceIndex(j.model):{invertedIndex:void 0},ae=ye.model===j.model&&I.A.isExhaustive(ye.model),ge=l.$I.mul(N,j.conformation.operator.inverse,ye.conformation.operator.matrix),Ie=!l.$I.isIdentity(ge),{center:Le,radius:nt}=j.boundary.sphere,je=(nt+Y)*(nt+Y);q.startUnitPair(ye.id,j.id);const Lt=ye.conformation.operator.key,Je=j.conformation.operator.key;for(let en=0;enje)continue;if(!Z.forceCompute&&ve){const{maxDistance:rn}=ve,{offset:tt,b:Mt,edgeProps:{order:nn,distance:bn,flag:Dn,key:jt,operatorA:It,operatorB:Dt}}=ve.bonds,Ct=ce.value(Bt),$t=(0,O.Yd)(Re.value(Bt));for(let Vt=tt[Ct],Wt=tt[Ct+1];Vt=0&&Ot>=0&&(kt===Ot||kt!==Lt||Ot!==Je))continue;const An=(0,O.Yd)(Re.value(yn)),jn=bn[Vt],On=U(ye,Bt,j,yn);let fr=!1;jn>=0?fr=(0,m.T)(On,jn,.3):rn>=0?fr=OnY||(q.add(en,Dn,{order:tt.order,flag:tt.flags,key:tt.rowIndex}),rn=!0)}if(rn)continue}if(ae)continue;const $e=Te.value(Bt),{lookup3d:mt}=j,{indices:_t,count:Me,squaredDistances:Ke}=mt.find(k[0],k[1],k[2],Y);if(0===Me)continue;const ut=(0,O.Yd)(Re.value(Bt)),Kt=(0,O.v3)(ut),sn=(0,O.O6)(ut),gt=ke.value(Bt),yt=O.ZL.has(ut),At=we.value(Bt),Gt=Oe.value(g[Bt]);for(let rn=0;rnj.validUnit(ee),validUnitPair:(ee,g)=>j.validUnitPair(ye,ee,g)}),new v(Z.getMap())}(ye,{...Z,validUnit:j&&j.validUnit||(q=>y.N.isAtomic(q)),validUnitPair:j&&j.validUnitPair||((q,Y,ee)=>{if(!p.o.validUnitPair(q,Y,ee))return!1;const _e=Y.model.atomicHierarchy.derived.residue.moleculeType,xe=ee.model.atomicHierarchy.derived.residue.moleculeType,le=!(y.N.isAtomic(Y)&&2===_e[Y.residueIndex[Y.elements[0]]]||y.N.isAtomic(ee)&&2===xe[ee.residueIndex[ee.elements[0]]]),Ae=!y.N.isAtomic(Y)||3!==_e[Y.residueIndex[Y.elements[0]]],Be=!y.N.isAtomic(ee)||3!==xe[ee.residueIndex[ee.elements[0]]];return!(!le&&Z.ignoreWater||(!Ae||!Be)&&Z.ignoreIon)||function te(ye,j){if(ye.model!==j.model||!y.N.isAtomic(ye)||!y.N.isAtomic(j))return!1;const Z=I.A.Provider.get(ye.model);if(!Z)return!1;const q=ye.elements.length=j.elements.length?ye:j,{elements:ee}=q,{elements:g}=Y,{indexOf:_e}=r.SortedArray;for(let xe=0,le=ee.length;xe=0)return!0}return!1}(Y,ee)})})}var de;!function(ye){function j(Oe,Se,Ve,Ne,K,ne){return{kind:"bond-location",aStructure:Oe,aUnit:Se,aIndex:Ve,bStructure:Ne,bUnit:K,bIndex:ne}}function q(Oe,Se){return Oe.aStructure.label===Se.aStructure.label&&Oe.bStructure.label===Se.bStructure.label&&Oe.aIndex===Se.aIndex&&Oe.bIndex===Se.bIndex&&Oe.aUnit.id===Se.aUnit.id&&Oe.bUnit.id===Se.bUnit.id}function Y(Oe,Se){return{kind:"bond-loci",structure:Oe,bonds:Se}}ye.Location=j,ye.isLocation=function Z(Oe){return!!Oe&&"bond-location"===Oe.kind},ye.areLocationsEqual=q,ye.Loci=Y,ye.isLoci=function ee(Oe){return!!Oe&&"bond-loci"===Oe.kind},ye.areLociEqual=function g(Oe,Se){if(Oe.structure!==Se.structure||Oe.bonds.length!==Se.bonds.length)return!1;for(let Ve=0,Ne=Oe.bonds.length;Ve{const K=Se.unitMap.get(Ne.aUnit.id);if(!K)return;const ne=Se.unitMap.get(Ne.bUnit.id);if(!ne)return;const Te=r.SortedArray.indexOf(K.elements,Ne.aUnit.elements[Ne.aIndex]);if(-1===Te)return;const ue=r.SortedArray.indexOf(ne.elements,Ne.bUnit.elements[Ne.bIndex]);-1!==ue&&Ve.push(j(Oe.structure,K,Te,Oe.structure,ne,ue))}),Y(Se,Ve)},ye.toStructureElementLoci=function le(Oe){const Se=[],Ve=new Map;for(const Ne of Oe.bonds){const{aIndex:K,aUnit:ne,bIndex:be,bUnit:Te}=Ne;ne===Te?Ve.has(ne.id)?Ve.get(ne.id).push(K,be):Ve.set(ne.id,[K,be]):(Ve.has(ne.id)?Ve.get(ne.id).push(K):Ve.set(ne.id,[K]),Ve.has(Te.id)?Ve.get(Te.id).push(be):Ve.set(Te.id,[be]))}return Ve.forEach((Ne,K)=>{Se.push({unit:Oe.structure.unitMap.get(K),indices:r.SortedArray.deduplicate(r.SortedArray.ofUnsortedArray(Ne))})}),e.iZ.Loci(Oe.structure,Se)},ye.toFirstStructureElementLoci=function Ae(Oe){const{aUnit:Se,aIndex:Ve}=Oe.bonds[0];return e.iZ.Loci(Oe.structure,[{unit:Se,indices:r.CD.ofSingleton(Ve)}])},ye.getType=function Be(Oe,Se){if(Se.aUnit===Se.bUnit){const Ve=Se.aUnit.bonds,Ne=Ve.getEdgeIndex(Se.aIndex,Se.bIndex);return o.I$.create(Ne<0?0:Ve.edgeProps.flags[Ne])}{const Ve=Oe.interUnitBonds.getBondFromLocation(Se);return o.I$.create(Ve?Ve.props.flag:0)}},ye.getOrder=function Ce(Oe,Se){if(Se.aUnit===Se.bUnit){const Ve=Se.aUnit.bonds,Ne=Ve.getEdgeIndex(Se.aIndex,Se.bIndex);return Ne<0?0:Ve.edgeProps.order[Ne]}{const Ve=Oe.interUnitBonds.getBondFromLocation(Se);return Ve?Ve.props.order:0}},ye.getIntraUnitBondCount=function Re(Oe){let Se=0;for(let Ve=0,Ne=Oe.units.length;Ve{const{aUnit:ne,aIndex:be,bUnit:Te,bIndex:ie}=Oe.bonds[Ve];ne.conformation.position(ne.elements[be],Ne),Te.conformation.position(Te.elements[ie],K)},Se)}}(de||(de={}))},6066:(tn,Ue,n)=>{"use strict";n.d(Ue,{O6:()=>b,Yd:()=>v,ZL:()=>c,kD:()=>o,on:()=>_,v3:()=>I});const o={forceCompute:!1,noCompute:!1,maxRadius:4},r={H:0,h:0,D:0,d:0,T:0,t:0,He:2,HE:2,he:2,Li:3,LI:3,li:3,Be:4,BE:4,be:4,B:5,b:5,C:6,c:6,N:7,n:7,O:8,o:8,F:9,f:9,Ne:10,NE:10,ne:10,Na:11,NA:11,na:11,Mg:12,MG:12,mg:12,Al:13,AL:13,al:13,Si:14,SI:14,si:14,P:15,p:15,S:16,s:16,Cl:17,CL:17,cl:17,Ar:18,AR:18,ar:18,K:19,k:19,Ca:20,CA:20,ca:20,Sc:21,SC:21,sc:21,Ti:22,TI:22,ti:22,V:23,v:23,Cr:24,CR:24,cr:24,Mn:25,MN:25,mn:25,Fe:26,FE:26,fe:26,Co:27,CO:27,co:27,Ni:28,NI:28,ni:28,Cu:29,CU:29,cu:29,Zn:30,ZN:30,zn:30,Ga:31,GA:31,ga:31,Ge:32,GE:32,ge:32,As:33,AS:33,as:33,Se:34,SE:34,se:34,Br:35,BR:35,br:35,Kr:36,KR:36,kr:36,Rb:37,RB:37,rb:37,Sr:38,SR:38,sr:38,Y:39,y:39,Zr:40,ZR:40,zr:40,Nb:41,NB:41,nb:41,Mo:42,MO:42,mo:42,Tc:43,TC:43,tc:43,Ru:44,RU:44,ru:44,Rh:45,RH:45,rh:45,Pd:46,PD:46,pd:46,Ag:47,AG:47,ag:47,Cd:48,CD:48,cd:48,In:49,IN:49,in:49,Sn:50,SN:50,sn:50,Sb:51,SB:51,sb:51,Te:52,TE:52,te:52,I:53,i:53,Xe:54,XE:54,xe:54,Cs:55,CS:55,cs:55,Ba:56,BA:56,ba:56,La:57,LA:57,la:57,Ce:58,CE:58,ce:58,Pr:59,PR:59,pr:59,Nd:60,ND:60,nd:60,Pm:61,PM:61,pm:61,Sm:62,SM:62,sm:62,Eu:63,EU:63,eu:63,Gd:64,GD:64,gd:64,Tb:65,TB:65,tb:65,Dy:66,DY:66,dy:66,Ho:67,HO:67,ho:67,Er:68,ER:68,er:68,Tm:69,TM:69,tm:69,Yb:70,YB:70,yb:70,Lu:71,LU:71,lu:71,Hf:72,HF:72,hf:72,Ta:73,TA:73,ta:73,W:74,w:74,Re:75,RE:75,re:75,Os:76,OS:76,os:76,Ir:77,IR:77,ir:77,Pt:78,PT:78,pt:78,Au:79,AU:79,au:79,Hg:80,HG:80,hg:80,Tl:81,TL:81,tl:81,Pb:82,PB:82,pb:82,Bi:83,BI:83,bi:83,Po:84,PO:84,po:84,At:85,AT:85,at:85,Rn:86,RN:86,rn:86,Fr:87,FR:87,fr:87,Ra:88,RA:88,ra:88,Ac:89,AC:89,ac:89,Th:90,TH:90,th:90,Pa:91,PA:91,pa:91,U:92,u:92,Np:93,NP:93,np:93,Pu:94,PU:94,pu:94,Am:95,AM:95,am:95,Cm:96,CM:96,cm:96,Bk:97,BK:97,bk:97,Cf:98,CF:98,cf:98,Es:99,ES:99,es:99,Fm:100,FM:100,fm:100,Md:101,MD:101,md:101,No:102,NO:102,no:102,Lr:103,LR:103,lr:103,Rf:104,RF:104,rf:104,Db:105,DB:105,db:105,Sg:106,SG:106,sg:106,Bh:107,BH:107,bh:107,Hs:108,HS:108,hs:108,Mt:109,MT:109,mt:109},t={0:1.42,1:1.42,3:2.7,4:2.7,6:1.75,7:1.6,8:1.52,11:2.7,12:2.7,13:2.7,14:1.9,15:2,16:1.9,17:1.8,19:2.7,20:2.7,21:2.7,22:2.7,23:2.7,24:2.7,25:2.7,26:2.7,27:2.7,28:2.7,29:2.7,30:2.7,31:2.7,33:2.68,37:2.7,38:2.7,39:2.7,40:2.7,41:2.7,42:2.7,43:2.7,44:2.7,45:2.7,46:2.7,47:2.7,48:2.7,49:2.7,50:2.7,55:2.7,56:2.7,57:2.7,58:2.7,59:2.7,60:2.7,61:2.7,62:2.7,63:2.7,64:2.7,65:2.7,66:2.7,67:2.7,68:2.7,69:2.7,70:2.7,71:2.7,72:2.7,73:2.7,74:2.7,75:2.7,76:2.7,77:2.7,78:2.7,79:2.7,80:2.7,81:2.7,82:2.7,83:2.7,87:2.7,88:2.7,89:2.7,90:2.7,91:2.7,92:2.7,93:2.7,94:2.7,95:2.7,96:2.7,97:2.7,98:2.7,99:2.7,100:2.7,101:2.7,102:2.7,103:2.7,104:2.7,105:2.7,106:2.7,107:2.7,108:2.7,109:2.88},A={0:.8,20:1.31,27:1.2,35:1.15,44:1.1,54:1,60:1.84,72:1.88,84:1.75,85:1.56,86:1.76,98:1.6,99:1.68,100:1.63,112:1.6,113:1.59,114:1.36,129:1.45,135:1.47,144:1.6,152:1.45,170:1.4,180:1.55,202:2.4,222:2.24,224:1.91,225:1.98,243:2.02,269:2,293:1.9,316:1.8,420:2.37,480:2.3,512:2.3,544:2.3,612:2.1,629:1.54,665:1,813:2.6,854:2.27,894:1.93,896:2.1,937:2.05,938:2.06,981:1.62,1258:2.68,1309:2.33,1484:1,1763:2.14,1823:2.48,1882:2.1,1944:1.72,2380:2.34,3367:2.44,3733:2.11,3819:2.6,3821:2.36,4736:2.75,5724:2.73,5959:2.63,6519:2.84,6750:2.87,8991:2.81},y=2.001,c=function(){const l=["LI","NA","K","RB","CS","FR","BE","MG","CA","SR","BA","RA","AL","GA","IN","SN","TL","PB","BI","SC","TI","V","CR","MN","FE","CO","NI","CU","ZN","Y","ZR","NB","MO","TC","RU","RH","PD","AG","CD","LA","HF","TA","W","RE","OS","IR","PT","AU","HG","AC","RF","DB","SG","BH","HS","MT","CE","PR","ND","PM","SM","EU","GD","TB","DY","HO","ER","TM","YB","LU","TH","PA","U","NP","PU","AM","CM","BK","CF","ES","FM","MD","NO","LR"],m=new Set;for(const u of l)m.add(r[u]);return m}();function v(l){const m=r[l];return void 0===m?-1:m}function b(l){if(l<0)return y;const m=t[l];return void 0===m?y:m}function _(l,m,u,d){const s=function O(l,m){if(l<0||m<0)return-1;const u=A[function i(l,m){return l0?s:m<0?u:(u+d)/1.95}const M=r.H;function I(l){return l===M}},4561:(tn,Ue,n)=>{"use strict";n.d(Ue,{X:()=>S,g:()=>a});var e=n(3543),o=n(4506),r=n(2434),t=n(8382),A=n(6115);function i(E){E.count=E.endVertex-E.startVertex;const{isRingAtom:T,pred:L,color:w,depth:Q,marked:G}=E;for(let V=0;V=0;j--)de[ye++]=E.startVertex+U[j],w[U[j]]=1;(0,t.eh)(de);for(let j=0,Z=E.currentRings.length;jq.length&&e.SortedArray.isSubset(de,q))return!1}return E.currentRings.push(e.SortedArray.ofSortedArray(de)),!0}function I(E,T,L){const{bonds:w,startVertex:Q,endVertex:G,isRingAtom:V,marked:U,queue:N,pred:k,depth:H}=E,{elements:$}=E.unit,{b:J,edgeProps:{flags:W},offset:te}=w;U[T]=L,H[T]=0,N[0]=T;let de=0,ye=1;for(;de=G||!r.I$.isCovalent(W[g]))continue;if(E.hasAltLoc){const Ae=E.altLoc.value($[_e]);if(Ae&&E.currentAltLoc!==Ae)continue}const xe=_e-Q;if(U[xe]===L){if(k[xe]!==j&&k[j]!==xe&&M(E,j,xe,V))return L+1;continue}const le=Math.min(H[xe],Z+1);le>5||(H[xe]=le,U[xe]=L,N[ye++]=xe,k[xe]=j)}}return L+1}function m(E){const T=E.length,L=new Int32Array(2*T);for(let V=0;V=j||Q.addEdge(N,j)}}}const G=o.O.connectedComponents(Q.getGraph()),V=G.componentIndex,U=[];for(let N=0;N=0&&(L.has(U)?L.get(U).push(V):L.set(U,[V]))}}(function(E){function L(U){return function l(E){const T=E.length,L=new Array(T);for(let V=0;V0)return!1;const j=C.c.calculateMomentsAxes((0,s.Dt)(U,N));return h.eB.magnitude(j.dirC)<.05},E.getAltId=function V(U,N){const{label_alt_id:k}=U.model.atomicHierarchy.atoms,{elements:H}=U;for(let $=0,J=N.length;${"use strict";n.d(Ue,{Jq:()=>c,jM:()=>i});var y,v,e=n(5384),o=n(4369),r=n(3543),t=n(1541),A=n(8361);function c(){return{result:y.create(),closeUnitsResult:e.Q7.create(),unitGroupResult:e.Q7.create()}}(v=y||(y={})).add=function O(M,I,l,m){M.indices[M.count]=l,M.units[M.count]=I,M.squaredDistances[M.count]=m,M.count++},v.create=function b(){return{count:0,indices:[],units:[],squaredDistances:[]}},v.copy=function _(M,I){for(let l=0;l(d+=u[a].elements.length)>=M,I.closeUnitsResult);if(0===s.count)return l;let C=0,h=-Number.MAX_VALUE;for(let a=0,S=s.count;a=M&&hl||u.addElement(p[f.indices[E]])}u.commitUnit()}}check(O,b,_,M){const{units:I}=this.structure,l=this.unitLookup.find(O,b,_,M);if(0===l.count)return!1;for(let m=0,u=l.count;m{"use strict";n.d(Ue,{c:()=>o});var o,e=n(9909);(o||(o={})).create=function t(A,y,c,i){return{id:e.kk.create22(),label:A,basic:y,sourceData:i,bonds:c}}},7024:(tn,Ue,n)=>{"use strict";n.d(Ue,{P:()=>e});class e{getFrameAtIndex(r){return this.frames[r]}constructor(r){this.frames=r,this.frameCount=r.length,this.representative=r[0],this.duration=r.length}}},2789:(tn,Ue,n)=>{"use strict";n.d(Ue,{Dt:()=>v,HQ:()=>c,Ju:()=>t});var e=n(2434),o=n(4369);function t(O,b){switch(O.kind){case 0:return O.model.atomicHierarchy.derived.residue.moleculeType[O.residueIndex[b]];case 1:case 2:const _=function r(O,b){const M=O.model.sequence.byEntityKey[O.coarseElements.entityKey[b]].sequence,I=O.coarseElements.seq_id_begin.value(b);return M.compId.value(I-1)}(O,b),M=O.model.properties.chemicalComponentMap.get(_);if(M)return(0,e.RN)(M.type,_)}return 0}const y=new Set;function c(O,b){const _=e.Pt[O];if(void 0!==_){const M=_[b];if(void 0!==M)return M}return y}const i=o.eB.zero();function v(O,b){const _=O.conformation,M=new Float32Array(3*b.length),{elements:I}=O;for(let l=0,m=b.length;l{"use strict";n.d(Ue,{f:()=>e.f,x:()=>o.x});var e=n(3162),o=n(5879)},5879:(tn,Ue,n)=>{"use strict";n.d(Ue,{x:()=>y});var y,e=n(5384),o=n(4369),r=n(6115);function A(c,i,v,O){let b=(O-v)/i;0===b&&(b=1);const _=new Int32Array(i);for(let M=0,I=c.length;M=i?l=i-1:l<0&&(l=0),_[l]++}return{min:v,max:O,binWidth:b,counts:_}}!function(c){c.One={transform:{kind:"matrix",matrix:o.$I.identity()},cells:o.qY.create(o.qY.Space([1,1,1],[0,1,2]),o.qY.Data1([0])),stats:{min:0,max:0,mean:0,sigma:0}};const i=o.$I.zero(),v=o.$I.zero();c.getGridToCartesianTransform=function O(l){if("matrix"===l.transform.kind)return o.$I.copy((0,o.$I)(),l.transform.matrix);if("spacegroup"===l.transform.kind){const{cells:{space:m}}=l,u=o.$I.fromScaling(i,o.eB.div(o.eB.zero(),e.DJ.size(o.eB.zero(),l.transform.fractionalBox),o.eB.ofArray(m.dimensions))),d=o.$I.fromTranslation(v,l.transform.fractionalBox.min);return o.$I.mul3(o.$I.zero(),l.transform.cell.fromFractional,d,u)}return o.$I.identity()},c.areEquivalent=function b(l,m){return l===m},c.isEmpty=function _(l){return 0===l.cells.data.length},c.getBoundingSphere=function M(l,m){m||(m=(0,e.f8)());const u=l.cells.space.dimensions,d=c.getGridToCartesianTransform(l);return e.f8.fromDimensionsAndTransform(m,u,d)},c.getHistogram=function I(l,m){let u=l._historams;return u||(u=l._historams={}),u[m]||(u[m]=function t(c,i,v){if(v)return A(c,i,v.min,v.max);{const[O,b]=(0,r.em)(c);return A(c,i,O,b)}}(l.cells.data,m,{min:l.stats.min,max:l.stats.max})),u[m]}}(y||(y={}))},3162:(tn,Ue,n)=>{"use strict";n.d(Ue,{f:()=>_});var _,e=n(5879),o=n(3543),r=n(5384),t=n(4369),A=n(7136),y=n(3420),c=n(2028),i=n(1692),v=n(8277),O=n(229),b=n(4625);!function(M){let l;M.is=function I(L){var w,Q,G,V;return(null===(V=null===(G=null===(Q=null===(w=L?.grid)||void 0===w?void 0:w.cells)||void 0===Q?void 0:Q.space)||void 0===G?void 0:G.dimensions)||void 0===V?void 0:V.length)&&L?.sourceData&&L?.customProperties&&L?._propertyData},function(L){function N($,J){return"absolute"===$.kind?$:{kind:"absolute",absoluteValue:L.calcAbsolute(J,$.relativeValue)}}L.areSame=function w($,J,W){return(0,c.T)(N($,W).absoluteValue,N(J,W).absoluteValue,W.sigma/100)},L.absolute=function Q($){return{kind:"absolute",absoluteValue:$}},L.relative=function G($){return{kind:"relative",relativeValue:$}},L.calcAbsolute=function V($,J){return J*$.sigma+$.mean},L.calcRelative=function U($,J){return 0===$.sigma?0:(J-$.mean)/$.sigma},L.toAbsolute=N,L.toRelative=function k($,J){return"relative"===$.kind?$:{kind:"relative",relativeValue:L.calcRelative(J,$.absoluteValue)}},L.toString=function H($){return"relative"===$.kind?`${$.relativeValue.toFixed(2)} \u03c3`:`${$.absoluteValue.toPrecision(4)}`}}(l=M.IsoValue||(M.IsoValue={})),M.adjustedIsoValue=function m(L,w,Q){if("relative"===Q)return l.relative(w);const G=l.absolute(w);if(b.T.is(L.sourceData)){const V={min:L.sourceData.data.volume_data_3d_info.min_source.value(0),max:L.sourceData.data.volume_data_3d_info.max_source.value(0),mean:L.sourceData.data.volume_data_3d_info.mean_source.value(0),sigma:L.sourceData.data.volume_data_3d_info.sigma_source.value(0)};return M.IsoValue.toRelative(G,V)}return G};const u={min:-1,max:1,mean:0,sigma:.1};function d(L,w){const Q=w||u,{min:G,max:V,mean:U,sigma:N}=Q,k=(G-U)/N,H=(V-U)/N;let $=L;return"absolute"===L.kind?L.absoluteValueV&&($=M.IsoValue.absolute(V)):L.relativeValueH&&($=M.IsoValue.relative(H)),v.t.Conditioned($,{absolute:v.t.Converted(J=>M.IsoValue.toAbsolute(J,e.x.One.stats).absoluteValue,J=>M.IsoValue.absolute(J),v.t.Numeric(U,{min:G,max:V,step:(0,O.QX)(N/100,2)},{immediateUpdate:!0})),relative:v.t.Converted(J=>M.IsoValue.toRelative(J,e.x.One.stats).relativeValue,J=>M.IsoValue.relative(J),v.t.Numeric(Math.min(1,H),{min:k,max:H,step:(0,O.QX)(Math.round((V-G)/N)/100,2)},{immediateUpdate:!0}))},J=>"absolute"===J.kind?"absolute":"relative",(J,W)=>"absolute"===W?M.IsoValue.toAbsolute(J,Q):M.IsoValue.toRelative(J,Q),{isEssential:!0})}let p,E,T;M.createIsoValueParam=d,M.IsoValueParam=d(M.IsoValue.relative(2)),M.One={label:"",grid:e.x.One,sourceData:{kind:"",name:"",data:{}},customProperties:new i.v,_propertyData:Object.create(null)},M.areEquivalent=function s(L,w){return e.x.areEquivalent(L.grid,w.grid)},M.isEmpty=function C(L){return e.x.isEmpty(L.grid)},M.isOrbitals=function h(L){return!!y.f.is(L.sourceData)&&L.sourceData.data.header.orbitals},M.Loci=function a(L){return{kind:"volume-loci",volume:L}},M.isLoci=function S(L){return!!L&&"volume-loci"===L.kind},M.areLociEqual=function D(L,w){return L.volume===w.volume},M.isLociEmpty=function R(L){return e.x.isEmpty(L.volume.grid)},M.getBoundingSphere=function f(L,w){return e.x.getBoundingSphere(L.grid,w)},function(L){L.Loci=function w(k,H){return{kind:"isosurface-loci",volume:k,isoValue:H}},L.isLoci=function Q(k){return!!k&&"isosurface-loci"===k.kind},L.areLociEqual=function G(k,H){return k.volume===H.volume&&M.IsoValue.areSame(k.isoValue,H.isoValue,k.volume.grid.stats)},L.isLociEmpty=function V(k){return 0===k.volume.grid.cells.data.length};const U=(0,r.DJ)();L.getBoundingSphere=function N(k,H,$){const J=M.IsoValue.toAbsolute(H,k.grid.stats).absoluteValue,W=J<0,te=[0,0,0],de=k.grid.cells.space.getCoords,ye=k.grid.cells.data,[j,Z,q]=k.grid.cells.space.dimensions;let Y=j-1,ee=Z-1,g=q-1,_e=0,xe=0,le=0;for(let Be=0,Ce=ye.length;Be=J)&&(de(Be,te),te[0]_e&&(_e=te[0]),te[1]>xe&&(xe=te[1]),te[2]>le&&(le=te[2]));t.eB.set(U.min,Y-1,ee-1,g-1),t.eB.set(U.max,_e+1,xe+1,le+1);const Ae=e.x.getGridToCartesianTransform(k.grid);return r.DJ.transform(U,U,Ae),r.f8.fromBox3D($||(0,r.f8)(),U)}}(p=M.Isosurface||(M.Isosurface={})),function(L){L.Loci=function w(H,$){return{kind:"cell-loci",volume:H,indices:$}},L.isLoci=function Q(H){return!!H&&"cell-loci"===H.kind},L.areLociEqual=function G(H,$){return H.volume===$.volume&&o.CD.areEqual(H.indices,$.indices)},L.isLociEmpty=function V(H){return 0===o.CD.size(H.indices)};const U=new A.Z("98"),N=(0,t.eB)();L.getBoundingSphere=function k(H,$,J){U.reset();const W=e.x.getGridToCartesianTransform(H.grid),{getCoords:te}=H.grid.cells.space;for(let ye=0,j=o.CD.size($);yeL._propertyData.__segmentation__}}(_||(_={}))},6511:(tn,Ue,n)=>{"use strict";n.r(Ue),n.d(Ue,{DownloadFile:()=>_,OpenFiles:()=>b});var e=n(467),o=n(1832),r=n(4824),t=n(1861),A=n(675),y=n(8277),c=n(6985),i=n(381);function v(M,I,l,m){return O.apply(this,arguments)}function O(){return(O=(0,e.A)(function*(M,I,l,m){var u,d,s,C;const h=(0,A.o)(null!==(d=null===(u=M.file)||void 0===u?void 0:u.name)&&void 0!==d?d:""),a=I.dataFormats.binaryExtensions.has(h.ext),{data:S}=yield I.builders.data.readFile({file:M,isBinary:a}),D="auto"===l?I.dataFormats.auto(h,null===(s=S.cell)||void 0===s?void 0:s.obj):I.dataFormats.get(l);if(!D)return I.log.warn(`OpenFiles: could not find data provider for '${h.ext}'`),void(yield I.state.data.build().delete(S).commit());const R=yield D.parse(I,S);m&&(yield null===(C=D.visuals)||void 0===C?void 0:C.call(D,I,R))})).apply(this,arguments)}const b=o.KW.build({display:{name:"Open Files",description:"Load one or more files and optionally create default visuals"},from:i.O.Root,params:(M,I)=>{const{extensions:l,options:m}=I.dataFormats;return{files:y.t.FileList({accept:Array.from(l.values()).map(u=>`.${u}`).join(",")+",.gz,.zip",multiple:!0}),format:y.t.MappedStatic("auto",{auto:y.t.EmptyGroup(),specific:y.t.Select(m[0][0],m)}),visuals:y.t.Boolean(!0,{description:"Add default visuals"})}}})(({params:M,state:I},l)=>r.YZ.create("Open Files",function(){var m=(0,e.A)(function*(u){l.behaviors.layout.leftPanelTabName.next("data"),yield I.transaction((0,e.A)(function*(){if(null!==M.files)for(const d of M.files)try{if(d.file&&d.name.toLowerCase().endsWith(".zip")){const s=yield(0,c.$1)(u,yield d.file.arrayBuffer());for(const[C,h]of Object.entries(s)){if(!(h instanceof Uint8Array)||0===h.length)continue;const a=t.V.File(new File([h],C));yield v(a,l,"auto",M.visuals)}}else{const s="auto"===M.format.name?"auto":M.format.params;yield v(d,l,s,M.visuals)}}catch(s){console.error(s),l.log.error(`Error opening file '${d.name}'`)}else l.log.error("No file(s) selected")})).runInContext(u)});return function(u){return m.apply(this,arguments)}}())),_=o.KW.build({display:{name:"Download File",description:"Load one or more file from an URL"},from:i.O.Root,params:(M,I)=>{const l=[...I.dataFormats.options,["zip","Zip"],["gzip","Gzip"]];return{url:y.t.Url(""),format:y.t.Select(l[0][0],l),isBinary:y.t.Boolean(!1),visuals:y.t.Boolean(!0,{description:"Add default visuals"})}}})(({params:M,state:I},l)=>r.YZ.create("Open Files",function(){var m=(0,e.A)(function*(u){l.behaviors.layout.leftPanelTabName.next("data"),yield I.transaction((0,e.A)(function*(){var d,s,C;try{if("zip"===M.format||"gzip"===M.format){const h=yield l.builders.data.download({url:M.url,isBinary:!0});if("zip"===M.format){const a=yield(0,c.$1)(u,(null===(d=h.obj)||void 0===d?void 0:d.data).buffer);for(const[S,D]of Object.entries(a)){if(!(D instanceof Uint8Array)||0===D.length)continue;const R=t.V.File(new File([D],S));yield v(R,l,"auto",M.visuals)}}else{const a=t.V.getUrl(M.url),S=(0,A.o)(a).name;yield v(t.V.File(new File([null===(s=h.obj)||void 0===s?void 0:s.data],S)),l,"auto",M.visuals)}}else{const h=l.dataFormats.get(M.format);if(!h)return void l.log.warn(`DownloadFile: could not find data provider for '${M.format}'`);const a=yield l.builders.data.download({url:M.url,isBinary:M.isBinary}),S=yield h.parse(l,a);M.visuals&&(yield null===(C=h.visuals)||void 0===C?void 0:C.call(h,l,S))}}catch(h){console.error(h),l.log.error(`Error downloading '${"string"==typeof M.url?M.url:M.url.url}'`)}})).runInContext(u)});return function(u){return m.apply(this,arguments)}}()))},1732:(tn,Ue,n)=>{"use strict";n.r(Ue),n.d(Ue,{AddTrajectory:()=>w,DownloadStructure:()=>s,EnableModelCustomProps:()=>T,EnableStructureCustomProps:()=>L,LoadTrajectory:()=>Q,PdbDownloadProvider:()=>d,UpdateTrajectory:()=>E});var e=n(467),o=n(1832),r=n(4824),t=n(8277),A=n(9880),y=n(5953),c=n(1295),i=n(381),v=n(1073),O=n(1855),b=n(1861),_=n(237),M=n(675),I=n(1372),l=n(2945),m=n(1169);const d={rcsb:t.t.Group({encoding:t.t.Select("bcif",t.t.arrayToOptions(["cif","bcif"]))},{label:"RCSB PDB",isFlat:!0}),pdbe:t.t.Group({variant:t.t.Select("updated-bcif",[["updated-bcif","Updated (bcif)"],["updated","Updated"],["archival","Archival"]])},{label:"PDBe",isFlat:!0}),pdbj:t.t.EmptyGroup({label:"PDBj"})},s=o.KW.build({from:i.O.Root,display:{name:"Download Structure",description:"Load a structure from the provided source and create its representation."},params:(G,V)=>{const U=(G=>{const V=G.config.get(_.AB.Structure.DefaultRepresentationPreset)||A.Bj.auto.id;return t.t.Group({type:c.z.getParams(void 0,"auto").type,representation:t.t.Select(V,G.builders.structure.representation.getPresets().map(U=>[U.id,U.display.name,U.display.group]),{description:"Which representation preset to use."}),representationParams:t.t.Group(A.n9.CommonParams,{isHidden:!0}),asTrajectory:t.t.Optional(t.t.Boolean(!1,{description:"Load all entries into a single trajectory."}))},{isExpanded:!1})})(V),N=V.config.get(_.AB.Download.DefaultPdbProvider)||"pdbe";return{source:t.t.MappedStatic("pdb",{pdb:t.t.Group({provider:t.t.Group({id:t.t.Text("1tqn",{label:"PDB Id(s)",description:"One or more comma/space separated PDB ids."}),server:t.t.MappedStatic(N,d)},{pivot:"id"}),options:U},{isFlat:!0,label:"PDB"}),"pdb-dev":t.t.Group({provider:t.t.Group({id:t.t.Text("PDBDEV_00000001",{label:"PDB-Dev Id(s)",description:"One or more comma/space separated ids."}),encoding:t.t.Select("bcif",t.t.arrayToOptions(["cif","bcif"]))},{pivot:"id"}),options:U},{isFlat:!0,label:"PDB-Dev"}),swissmodel:t.t.Group({id:t.t.Text("Q9Y2I8",{label:"UniProtKB AC(s)",description:"One or more comma/space separated ACs."}),options:U},{isFlat:!0,label:"SWISS-MODEL",description:"Loads the best homology model or experimental structure"}),alphafolddb:t.t.Group({id:t.t.Text("Q8W3K0",{label:"UniProtKB AC(s)",description:"One or more comma/space separated ACs."}),options:U},{isFlat:!0,label:"AlphaFold DB",description:"Loads the predicted model if available"}),modelarchive:t.t.Group({id:t.t.Text("ma-bak-cepc-0003",{label:"Accession Code(s)",description:"One or more comma/space separated ACs."}),options:U},{isFlat:!0,label:"Model Archive"}),pubchem:t.t.Group({id:t.t.Text("2244,2245",{label:"PubChem ID",description:"One or more comma/space separated IDs."}),options:U},{isFlat:!0,label:"PubChem",description:"Loads 3D conformer from PubChem."}),url:t.t.Group({url:t.t.Url(""),format:t.t.Select("mmcif",t.t.arrayToOptions(y.HQ.map(k=>k[0]),k=>k)),isBinary:t.t.Boolean(!1),label:t.t.Optional(t.t.Text("")),options:U},{isFlat:!0,label:"URL"})})}}})(({params:G,state:V},U)=>r.YZ.create("Download Structure",function(){var N=(0,e.A)(function*(k){U.behaviors.layout.leftPanelTabName.next("data");const H=G.source;let $,J=!1,W="mmcif";switch(H.name){case"url":$=[{url:H.params.url,isBinary:H.params.isBinary,label:H.params.label||void 0}],W=H.params.format;break;case"pdb":$=yield"pdbe"===H.params.provider.server.name?function a(G){return S.apply(this,arguments)}(H):"pdbj"===H.params.provider.server.name?function D(G){return R.apply(this,arguments)}(H):"rcsb"===H.params.provider.server.name?function f(G){return p.apply(this,arguments)}(H):(0,I.dr)(H),J=!!H.params.options.asTrajectory;break;case"pdb-dev":$=yield C(H.params.provider.id,j=>{const Z=j.toUpperCase().startsWith("PDBDEV_")?j:`PDBDEV_${j.padStart(8,"0")}`;return"bcif"===H.params.provider.encoding?`https://pdb-dev.wwpdb.org/bcif/${Z.toUpperCase()}.bcif`:`https://pdb-dev.wwpdb.org/cif/${Z.toUpperCase()}.cif`},j=>j.toUpperCase().startsWith("PDBDEV_")?j:`PDBDEV_${j.padStart(8,"0")}`,"bcif"===H.params.provider.encoding),J=!!H.params.options.asTrajectory;break;case"swissmodel":$=yield C(H.params.id,j=>`https://swissmodel.expasy.org/repository/uniprot/${j.toUpperCase()}.pdb`,j=>`SWISS-MODEL: ${j}`,!1),J=!!H.params.options.asTrajectory,W="pdb";break;case"alphafolddb":$=yield C(H.params.id,function(){var j=(0,e.A)(function*(Z){const q=`https://www.alphafold.ebi.ac.uk/api/prediction/${Z.toUpperCase()}`,Y=yield U.runTask(U.fetch({url:q,type:"json"}));if(Array.isArray(Y)&&Y.length>0)return Y[0].cifUrl;throw new Error(`No AlphaFold DB entry for '${Z}'`)});return function(Z){return j.apply(this,arguments)}}(),j=>`AlphaFold DB: ${j}`,!1),J=!!H.params.options.asTrajectory,W="mmcif";break;case"modelarchive":$=yield C(H.params.id,j=>`https://www.modelarchive.org/doi/10.5452/${j.toLowerCase()}.cif`,j=>`Model Archive: ${j}`,!1),J=!!H.params.options.asTrajectory,W="mmcif";break;case"pubchem":$=yield C(H.params.id,j=>`https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/CID/${j.trim()}/record/SDF/?record_type=3d`,j=>`PubChem: ${j}`,!1),J=!!H.params.options.asTrajectory,W="mol";break;default:(0,I.dr)(H)}const te=G.source.params.options.representation||U.config.get(_.AB.Structure.DefaultRepresentationPreset)||A.Bj.auto.id,de=te!==A.Bj.empty.id,ye="auto"===H.params.options.type.name?void 0:H.params.options.type;yield V.transaction((0,e.A)(function*(){if($.length>0&&J){const j=yield U.builders.data.downloadBlob({sources:$.map((q,Y)=>({id:""+Y,url:q.url,isBinary:q.isBinary})),maxConcurrency:6},{state:{isGhost:!0}}),Z=yield U.builders.structure.parseTrajectory(j,{formats:$.map((q,Y)=>({id:""+Y,format:"cif"}))});yield U.builders.structure.hierarchy.applyPreset(Z,"default",{structure:ye,showUnitcell:de,representationPreset:te,representationPresetParams:G.source.params.options.representationParams})}else for(const j of $){const Z=yield U.builders.data.download(j,{state:{isGhost:!0}}),q=U.dataFormats.get(W);if(!q)throw new Error("unknown file format");const Y=yield U.builders.structure.parseTrajectory(Z,q);yield U.builders.structure.hierarchy.applyPreset(Y,"default",{structure:ye,showUnitcell:de,representationPreset:te,representationPresetParams:G.source.params.options.representationParams})}})).runInContext(k)});return function(k){return N.apply(this,arguments)}}()));function C(G,V,U,N){return h.apply(this,arguments)}function h(){return(h=(0,e.A)(function*(G,V,U,N){const k=G.split(/[,\s]/).map($=>$.trim()).filter($=>!!$&&($.length>=4||/^[1-9][0-9]*$/.test($))),H=[];for(const $ of k)H.push({url:b.V.Url(yield V($)),isBinary:N,label:U($)});return H})).apply(this,arguments)}function S(){return(S=(0,e.A)(function*(G){if("pdb"!==G.name||"pdbe"!==G.params.provider.server.name)throw new Error("expected pdbe");return"updated"===G.params.provider.server.params.variant?C(G.params.provider.id,V=>`https://www.ebi.ac.uk/pdbe/static/entry/${V.toLowerCase()}_updated.cif`,V=>`PDBe: ${V} (updated cif)`,!1):"updated-bcif"===G.params.provider.server.params.variant?C(G.params.provider.id,V=>`https://www.ebi.ac.uk/pdbe/entry-files/download/${V.toLowerCase()}.bcif`,V=>`PDBe: ${V} (updated cif)`,!0):C(G.params.provider.id,V=>`https://www.ebi.ac.uk/pdbe/static/entry/${V.toLowerCase()}.cif`,V=>`PDBe: ${V} (cif)`,!1)})).apply(this,arguments)}function R(){return(R=(0,e.A)(function*(G){if("pdb"!==G.name||"pdbj"!==G.params.provider.server.name)throw new Error("expected pdbj");return C(G.params.provider.id,V=>`https://data.pdbjbk1.pdbj.org/pub/pdb/data/structures/divided/mmCIF/${V.toLowerCase().substring(1,3)}/${V.toLowerCase()}.cif`,V=>`PDBj: ${V} (cif)`,!1)})).apply(this,arguments)}function p(){return(p=(0,e.A)(function*(G){if("pdb"!==G.name||"rcsb"!==G.params.provider.server.name)throw new Error("expected rcsb");return"cif"===G.params.provider.server.params.encoding?C(G.params.provider.id,V=>`https://files.rcsb.org/download/${V.toUpperCase()}.cif`,V=>`RCSB PDB: ${V} (cif)`,!1):C(G.params.provider.id,V=>`https://models.rcsb.org/${V.toUpperCase()}.bcif`,V=>`RCSB PDB: ${V} (bcif)`,!0)})).apply(this,arguments)}const E=o.KW.build({display:{name:"Update Trajectory"},params:{action:t.t.Select("advance",t.t.arrayToOptions(["advance","reset"])),by:t.t.Optional(t.t.Numeric(1,{min:-1,max:1,step:1}))}})(({params:G,state:V})=>{const U=V.selectQ(k=>k.ofTransformer(v.f.Model.ModelFromTrajectory)),N=V.build();if("reset"===G.action)for(const k of U)N.to(k).update({modelIndex:0});else for(const k of U){const H=o.QX.findAncestorOfType(V.tree,V.cells,k.transform.ref,i.O.Molecule.Trajectory);if(!H||!H.obj)continue;const $=H.obj;N.to(k).update(J=>{let W=(J.modelIndex+G.by)%$.data.frameCount;return W<0&&(W+=$.data.frameCount),{modelIndex:W}})}return V.updateTree(N)}),T=o.KW.build({display:{name:"Custom Model Properties",description:"Enable parameters for custom properties of the model."},from:i.O.Molecule.Model,params:(G,V)=>V.customModelProperties.getParams(G?.data),isApplicable:(G,V,U)=>V.transformer!==O.CustomModelProperties})(({ref:G,params:V},U)=>U.builders.structure.insertModelProperties(G,V)),L=o.KW.build({display:{name:"Custom Structure Properties",description:"Enable parameters for custom properties of the structure."},from:i.O.Molecule.Structure,params:(G,V)=>V.customStructureProperties.getParams(G?.data),isApplicable:(G,V,U)=>V.transformer!==O.CustomStructureProperties})(({ref:G,params:V},U)=>U.builders.structure.insertStructureProperties(G,V)),w=o.KW.build({display:{name:"Add Trajectory",description:"Add trajectory from existing model/topology and coordinates."},from:i.O.Root,params(G,V){const U=V.state.data,k=[...U.selectQ(J=>J.rootsOfType(i.O.Molecule.Model)),...U.selectQ(J=>J.rootsOfType(i.O.Molecule.Topology))].map(J=>[J.transform.ref,J.obj.label]),$=U.selectQ(J=>J.rootsOfType(i.O.Molecule.Coordinates)).map(J=>[J.transform.ref,J.obj.label]);return{model:t.t.Select(k.length?k[0][0]:"",k),coordinates:t.t.Select($.length?$[0][0]:"",$)}}})(({params:G,state:V},U)=>r.YZ.create("Add Trajectory",N=>V.transaction((0,e.A)(function*(){const k=[G.model,G.coordinates],H=V.build().toRoot().apply(O.TrajectoryFromModelAndCoordinates,{modelRef:G.model,coordinatesRef:G.coordinates},{dependsOn:k}).apply(v.f.Model.ModelFromTrajectory,{modelIndex:0});yield V.updateTree(H).runInContext(N);const $=yield U.builders.structure.createStructure(H.selector);yield U.builders.structure.representation.applyPreset($,"auto")})).runInContext(N))),Q=o.KW.build({display:{name:"Load Trajectory",description:"Load trajectory of model/topology and coordinates from URL or file."},from:i.O.Root,params(G,V){const{options:U}=V.dataFormats,N=U.filter(J=>J[2]===y.RB||J[2]===l.nE),k=U.filter(J=>J[2]===m.jM),H=[],$=[];for(const{provider:J}of V.dataFormats.list)J.category===y.RB||J.category===l.nE?(J.binaryExtensions&&H.push(...J.binaryExtensions),J.stringExtensions&&H.push(...J.stringExtensions)):J.category===m.jM&&(J.binaryExtensions&&$.push(...J.binaryExtensions),J.stringExtensions&&$.push(...J.stringExtensions));return{source:t.t.MappedStatic("file",{url:t.t.Group({model:t.t.Group({url:t.t.Url(""),format:t.t.Select(N[0][0],N),isBinary:t.t.Boolean(!1)},{isExpanded:!0}),coordinates:t.t.Group({url:t.t.Url(""),format:t.t.Select(k[0][0],k)},{isExpanded:!0})},{isFlat:!0}),file:t.t.Group({model:t.t.File({accept:H.map(J=>`.${J}`).join(","),label:"Model"}),coordinates:t.t.File({accept:$.map(J=>`.${J}`).join(","),label:"Coordinates"})},{isFlat:!0})},{options:[["url","URL"],["file","File"]]})}}})(({params:G,state:V},U)=>r.YZ.create("Load Trajectory",N=>V.transaction((0,e.A)(function*(){const k=G.source;if("file"===k.name&&(null===k.params.model||null===k.params.coordinates))return void U.log.error("No file(s) selected");if(!("url"!==k.name||k.params.model&&k.params.coordinates))return void U.log.error("No URL(s) given");const H=function(){var J=(0,e.A)(function*(W,te,de){const ye=yield U.builders.data.download({url:W,isBinary:de}),j=U.dataFormats.get(te);if(j)return j.parse(U,ye);U.log.warn(`LoadTrajectory: could not find data provider for '${te}'`)});return function(te,de,ye){return J.apply(this,arguments)}}(),$=function(){var J=(0,e.A)(function*(W){var te,de,ye;if(!W)throw new Error("No file selected");const j=(0,M.o)(null!==(de=null===(te=W.file)||void 0===te?void 0:te.name)&&void 0!==de?de:""),Z=U.dataFormats.binaryExtensions.has(j.ext),{data:q}=yield U.builders.data.readFile({file:W,isBinary:Z}),Y=U.dataFormats.auto(j,null===(ye=q.cell)||void 0===ye?void 0:ye.obj);return Y?Y.parse(U,q):(U.log.warn(`LoadTrajectory: could not find data provider for '${j.ext}'`),void(yield U.state.data.build().delete(q).commit()))});return function(te){return J.apply(this,arguments)}}();try{const J="url"===k.name?yield H(k.params.model.url,k.params.model.format,k.params.model.isBinary):yield $(k.params.model);let W;W="trajectory"in J?yield V.build().to(J.trajectory).apply(O.ModelFromTrajectory,{modelIndex:0}).commit():J.topology;const te="url"===k.name?yield H(k.params.coordinates.url,k.params.coordinates.format,!0):yield $(k.params.coordinates),de=[W.ref,te.ref],ye=V.build().toRoot().apply(O.TrajectoryFromModelAndCoordinates,{modelRef:W.ref,coordinatesRef:te.ref},{dependsOn:de}).apply(v.f.Model.ModelFromTrajectory,{modelIndex:0});yield V.updateTree(ye).runInContext(N);const j=yield U.builders.structure.createStructure(ye.selector);yield U.builders.structure.representation.applyPreset(j,"auto")}catch(J){console.error(J),U.log.error("Error loading trajectory")}})).runInContext(N)))},9880:(tn,Ue,n)=>{"use strict";n.d(Ue,{Bj:()=>Q,n9:()=>m});var e=n(467),o=n(8277),r=n(5019),t=n(9136),A=n(1832),y=n(9096),c=n(237),i=n(445),v=n(1893),O=n(8742),b=n(8103),_=n(8334),M=n(8737),I=n(1372),l=n(2086);function m(G){return G}!function(G){function V(H){return"chain-id"===H?{name:H,params:O.oy.defaultValues}:"operator-name"===H?{name:H,params:b.PO.defaultValues}:{name:H,params:{}}}G.CommonParams={ignoreHydrogens:o.t.Optional(o.t.Boolean(!1)),ignoreHydrogensVariant:o.t.Optional(o.t.Select("all",o.t.arrayToOptions(["all","non-polar"]))),ignoreLight:o.t.Optional(o.t.Boolean(!1)),quality:o.t.Optional(o.t.Select("auto",r.sF)),theme:o.t.Optional(o.t.Group({globalName:o.t.Optional(o.t.Text("")),globalColorParams:o.t.Optional(o.t.Value({},{isHidden:!0})),carbonColor:o.t.Optional(o.t.Select("chain-id",o.t.arrayToOptions(["chain-id","operator-name","element-symbol"]))),symmetryColor:o.t.Optional(o.t.Text("")),symmetryColorParams:o.t.Optional(o.t.Value({},{isHidden:!0})),focus:o.t.Optional(o.t.Group({name:o.t.Optional(o.t.Text("")),params:o.t.Optional(o.t.Value({}))}))}))},G.reprBuilder=function N(H,$,J){var W,te,de,ye,j,Z,q,Y,ee,g,_e,xe,le,Ae;const Be=H.state.data.build(),Ce=H.builders.structure.representation,Re=H.managers.structure.component.state.options.hydrogens,ke={quality:H.managers.structure.component.state.options.visualQuality,ignoreHydrogens:"all"!==Re,ignoreHydrogensVariant:"only-polar"===Re?"non-polar":"all",ignoreLight:H.managers.structure.component.state.options.ignoreLight};$.quality&&"auto"!==$.quality&&(ke.quality=$.quality),void 0!==$.ignoreHydrogens&&(ke.ignoreHydrogens=!!$.ignoreHydrogens),void 0!==$.ignoreHydrogensVariant&&(ke.ignoreHydrogensVariant=$.ignoreHydrogensVariant),void 0!==$.ignoreLight&&(ke.ignoreLight=!!$.ignoreLight);const we=null!==(W=$.theme)&&void 0!==W&&W.globalName?null===(te=$.theme)||void 0===te?void 0:te.globalName:void 0,Oe=void 0!==(null===(de=$.theme)||void 0===de?void 0:de.carbonColor)?{carbonColor:V(null===(ye=$.theme)||void 0===ye?void 0:ye.carbonColor),...null===(j=$.theme)||void 0===j?void 0:j.globalColorParams}:{...null===(Z=$.theme)||void 0===Z?void 0:Z.globalColorParams},Se=J&&null!==(q=$.theme)&&void 0!==q&&q.symmetryColor&&function U(H){return H.units.some($=>!$.conformation.operator.assembly&&$.conformation.operator.spgrOp>=0)}(J)?null===(Y=$.theme)||void 0===Y?void 0:Y.symmetryColor:we;return{update:Be,builder:Ce,color:we,symmetryColor:Se,symmetryColorParams:null!==(ee=$.theme)&&void 0!==ee&&ee.symmetryColorParams?{...null===(g=$.theme)||void 0===g?void 0:g.globalColorParams,...null===(_e=$.theme)||void 0===_e?void 0:_e.symmetryColorParams}:{...null===(xe=$.theme)||void 0===xe?void 0:xe.globalColorParams},globalColorParams:null!==(le=$.theme)&&void 0!==le&&le.globalColorParams?{...null===(Ae=$.theme)||void 0===Ae?void 0:Ae.globalColorParams}:void 0,typeParams:ke,ballAndStickColor:Oe}},G.updateFocusRepr=function k(H,$,J,W){if(H.state.hasBehavior(i.b))return H.state.updateBehavior(i.b,te=>{const de=(0,v.IZ)(H,$,"ball-and-stick",J||"element-symbol",W);te.surroundingsParams.colorTheme=de,te.targetParams.colorTheme=de})}}(m||(m={}));const u=m.CommonParams,d=m.reprBuilder,s=m.updateFocusRepr,C=m({id:"preset-structure-representation-auto",display:{name:"Automatic",description:"Show representations based on the size of the structure. Smaller structures are shown with more detail than larger ones, ranging from atomistic display to coarse surfaces."},params:()=>u,apply(G,V,U){var N,k;const H=null===(k=null===(N=A.so.resolveAndCheck(U.state.data,G))||void 0===N?void 0:N.obj)||void 0===k?void 0:k.data;if(!H)return{};const $=U.config.get(c.AB.Structure.SizeThresholds)||t.oE.DefaultSizeThresholds,J=t.oE.getSize(H,$),W=H.polymerResidueCount/H.polymerGapCount;switch(J){case t.oE.Size.Gigantic:case t.oE.Size.Huge:return R.apply(G,V,U);case t.oE.Size.Large:return f.apply(G,V,U);case t.oE.Size.Medium:if(W>3)return S.apply(G,V,U);case t.oE.Size.Small:return p.apply(G,{...V,showCarbohydrateSymbol:!0},U);default:(0,I.dr)(J)}}}),h=m({id:"preset-structure-representation-empty",display:{name:"Empty",description:"Removes all existing representations."},apply:(G,V,U)=>(0,e.A)(function*(){return{}})()}),a="Basic",S=m({id:"preset-structure-representation-polymer-and-ligand",display:{name:"Polymer & Ligand",group:a,description:"Shows polymers as Cartoon, ligands as Ball & Stick, carbohydrates as 3D-SNFG and water molecules semi-transparent."},params:()=>u,apply:(G,V,U)=>(0,e.A)(function*(){var N,k,H,$,J,W,te,de,ye,j;const Z=A.so.resolveAndCheck(U.state.data,G);if(!Z)return{};const q={polymer:yield L(U,Z,"polymer"),ligand:yield L(U,Z,"ligand"),nonStandard:yield L(U,Z,"non-standard"),branched:yield L(U,Z,"branched",{label:"Carbohydrate"}),water:yield L(U,Z,"water"),ion:yield L(U,Z,"ion"),lipid:yield L(U,Z,"lipid"),coarse:yield L(U,Z,"coarse")},Y=Z.obj.data,ee={sizeFactor:Y.isCoarseGrained?.8:.2},g=((null===(H=null===(k=null===(N=q.water)||void 0===N?void 0:N.obj)||void 0===k?void 0:k.data)||void 0===H?void 0:H.elementCount)||0)>5e4?"line":"ball-and-stick",_e=((null===(W=null===(J=null===($=q.lipid)||void 0===$?void 0:$.obj)||void 0===J?void 0:J.data)||void 0===W?void 0:W.elementCount)||0)>2e4?"line":"ball-and-stick",{update:xe,builder:le,typeParams:Ae,color:Be,symmetryColor:Ce,symmetryColorParams:Re,globalColorParams:ke,ballAndStickColor:we}=d(U,V,Y),Oe={polymer:le.buildRepresentation(xe,q.polymer,{type:"cartoon",typeParams:{...Ae,...ee},color:Ce,colorParams:Re},{tag:"polymer"}),ligand:le.buildRepresentation(xe,q.ligand,{type:"ball-and-stick",typeParams:Ae,color:Be,colorParams:we},{tag:"ligand"}),nonStandard:le.buildRepresentation(xe,q.nonStandard,{type:"ball-and-stick",typeParams:Ae,color:Be,colorParams:we},{tag:"non-standard"}),branchedBallAndStick:le.buildRepresentation(xe,q.branched,{type:"ball-and-stick",typeParams:{...Ae,alpha:.3},color:Be,colorParams:we},{tag:"branched-ball-and-stick"}),branchedSnfg3d:le.buildRepresentation(xe,q.branched,{type:"carbohydrate",typeParams:Ae,color:Be,colorParams:ke},{tag:"branched-snfg-3d"}),water:le.buildRepresentation(xe,q.water,{type:g,typeParams:{...Ae,alpha:.6,visuals:"line"===g?["intra-bond","element-point"]:void 0},color:Be,colorParams:{carbonColor:{name:"element-symbol",params:{}},...ke}},{tag:"water"}),ion:le.buildRepresentation(xe,q.ion,{type:"ball-and-stick",typeParams:Ae,color:Be,colorParams:{carbonColor:{name:"element-symbol",params:{}},...ke}},{tag:"ion"}),lipid:le.buildRepresentation(xe,q.lipid,{type:_e,typeParams:{...Ae,alpha:.6,visuals:"line"===_e?["intra-bond"]:void 0},color:Be,colorParams:{carbonColor:{name:"element-symbol",params:{}},...ke}},{tag:"lipid"}),coarse:le.buildRepresentation(xe,q.coarse,{type:"spacefill",typeParams:Ae,color:Be||"chain-id",colorParams:ke},{tag:"coarse"})};return yield xe.commit({revertOnError:!1}),yield s(U,Y,null===(de=null===(te=V.theme)||void 0===te?void 0:te.focus)||void 0===de?void 0:de.name,null===(j=null===(ye=V.theme)||void 0===ye?void 0:ye.focus)||void 0===j?void 0:j.params),{components:q,representations:Oe}})()}),D=m({id:"preset-structure-representation-protein-and-nucleic",display:{name:"Protein & Nucleic",group:a,description:"Shows proteins as Cartoon and RNA/DNA as Gaussian Surface."},params:()=>u,apply:(G,V,U)=>(0,e.A)(function*(){var N,k,H,$;const J=A.so.resolveAndCheck(U.state.data,G);if(!J)return{};const W={protein:yield w(U,J,"protein"),nucleic:yield w(U,J,"nucleic")},te=J.obj.data,de={sizeFactor:te.isCoarseGrained?.8:.2},ye={radiusOffset:te.isCoarseGrained?2:0,smoothness:te.isCoarseGrained?1:1.5},{update:j,builder:Z,typeParams:q,symmetryColor:Y,symmetryColorParams:ee}=d(U,V,te),g={protein:Z.buildRepresentation(j,W.protein,{type:"cartoon",typeParams:{...q,...de},color:Y,colorParams:ee},{tag:"protein"}),nucleic:Z.buildRepresentation(j,W.nucleic,{type:"gaussian-surface",typeParams:{...q,...ye},color:Y,colorParams:ee},{tag:"nucleic"})};return yield j.commit({revertOnError:!0}),yield s(U,te,null===(k=null===(N=V.theme)||void 0===N?void 0:N.focus)||void 0===k?void 0:k.name,null===($=null===(H=V.theme)||void 0===H?void 0:H.focus)||void 0===$?void 0:$.params),{components:W,representations:g}})()}),R=m({id:"preset-structure-representation-coarse-surface",display:{name:"Coarse Surface",group:a,description:"Shows polymers and lipids as coarse Gaussian Surface."},params:()=>u,apply:(G,V,U)=>(0,e.A)(function*(){var N,k,H,$;const J=A.so.resolveAndCheck(U.state.data,G);if(!J)return{};const W={polymer:yield L(U,J,"polymer"),lipid:yield L(U,J,"lipid")},te=J.obj.data,de=U.config.get(c.AB.Structure.SizeThresholds)||t.oE.DefaultSizeThresholds,ye=t.oE.getSize(te,de),j=Object.create(null);ye===t.oE.Size.Gigantic?Object.assign(j,{traceOnly:!te.isCoarseGrained,radiusOffset:2,smoothness:1,visuals:["structure-gaussian-surface-mesh"]}):ye===t.oE.Size.Huge?Object.assign(j,{radiusOffset:te.isCoarseGrained?2:0,smoothness:1}):te.isCoarseGrained&&Object.assign(j,{radiusOffset:2,smoothness:1});const{update:Z,builder:q,typeParams:Y,symmetryColor:ee,symmetryColorParams:g}=d(U,V,te),_e={polymer:q.buildRepresentation(Z,W.polymer,{type:"gaussian-surface",typeParams:{...Y,...j},color:ee,colorParams:g},{tag:"polymer"}),lipid:q.buildRepresentation(Z,W.lipid,{type:"gaussian-surface",typeParams:{...Y,...j},color:ee,colorParams:g},{tag:"lipid"})};return yield Z.commit({revertOnError:!0}),yield s(U,te,null===(k=null===(N=V.theme)||void 0===N?void 0:N.focus)||void 0===k?void 0:k.name,null===($=null===(H=V.theme)||void 0===H?void 0:H.focus)||void 0===$?void 0:$.params),{components:W,representations:_e}})()}),f=m({id:"preset-structure-representation-polymer-cartoon",display:{name:"Polymer Cartoon",group:a,description:"Shows polymers as Cartoon."},params:()=>u,apply:(G,V,U)=>(0,e.A)(function*(){var N,k,H,$;const J=A.so.resolveAndCheck(U.state.data,G);if(!J)return{};const W={polymer:yield L(U,J,"polymer")},te=J.obj.data,de={sizeFactor:te.isCoarseGrained?.8:.2},{update:ye,builder:j,typeParams:Z,symmetryColor:q,symmetryColorParams:Y}=d(U,V,te),ee={polymer:j.buildRepresentation(ye,W.polymer,{type:"cartoon",typeParams:{...Z,...de},color:q,colorParams:Y},{tag:"polymer"})};return yield ye.commit({revertOnError:!0}),yield s(U,te,null===(k=null===(N=V.theme)||void 0===N?void 0:N.focus)||void 0===k?void 0:k.name,null===($=null===(H=V.theme)||void 0===H?void 0:H.focus)||void 0===$?void 0:$.params),{components:W,representations:ee}})()}),p=m({id:"preset-structure-representation-atomic-detail",display:{name:"Atomic Detail",group:a,description:"Shows everything in atomic detail with Ball & Stick."},params:()=>({...u,showCarbohydrateSymbol:o.t.Boolean(!1)}),apply:(G,V,U)=>(0,e.A)(function*(){var N,k,H,$,J,W;const te=A.so.resolveAndCheck(U.state.data,G);if(!te)return{};const de={all:yield L(U,te,"all"),branched:void 0},ye=te.obj.data,j=ye.elementCount>1e5,Z=ye.atomicResidueCount&&ye.elementCount>1e3&&ye.atomicResidueCount/ye.elementCount<3,q=ye.models[0],Y=!!_.z.Provider.get(q)||M.A.isExhaustive(q);let ee="ball-and-stick";ye.isCoarseGrained?ee=ye.elementCount>1e6?"point":"spacefill":Z&&!Y?ee="spacefill":j&&(ee="line");const g=V.showCarbohydrateSymbol&&!j&&!Z;g&&Object.assign(de,{branched:yield L(U,te,"branched",{label:"Carbohydrate"})});const{update:_e,builder:xe,typeParams:le,color:Ae,ballAndStickColor:Be,globalColorParams:Ce}=d(U,V,ye),Re=Z&&!Y?{carbonColor:{name:"element-symbol",params:{}},...Ce}:Be,ke={all:xe.buildRepresentation(_e,de.all,{type:ee,typeParams:le,color:Ae,colorParams:Re},{tag:"all"})};return g&&Object.assign(ke,{snfg3d:xe.buildRepresentation(_e,de.branched,{type:"carbohydrate",typeParams:{...le,alpha:.4,visuals:["carbohydrate-symbol"]},color:Ae,colorParams:Ce},{tag:"snfg-3d"})}),yield _e.commit({revertOnError:!0}),yield s(U,ye,null!==(H=null===(k=null===(N=V.theme)||void 0===N?void 0:N.focus)||void 0===k?void 0:k.name)&&void 0!==H?H:Ae,null!==(W=null===(J=null===($=V.theme)||void 0===$?void 0:$.focus)||void 0===J?void 0:J.params)&&void 0!==W?W:Re),{components:de,representations:ke}})()}),E=m({id:"preset-structure-representation-illustrative",display:{name:"Illustrative",group:"Miscellaneous",description:"..."},params:()=>({...u,showCarbohydrateSymbol:o.t.Boolean(!1)}),apply:(G,V,U)=>(0,e.A)(function*(){var N,k,H,$,J;const W=A.so.resolveAndCheck(U.state.data,G);if(!W)return{};const te={all:yield L(U,W,"all"),branched:void 0},de=W.obj.data,{update:ye,builder:j,typeParams:Z,color:q}=d(U,V,de),Y={all:j.buildRepresentation(ye,te.all,{type:"spacefill",typeParams:{...Z,ignoreLight:!0},color:"illustrative"},{tag:"all"})};return yield ye.commit({revertOnError:!0}),yield s(U,de,null!==(H=null===(k=null===(N=V.theme)||void 0===N?void 0:N.focus)||void 0===k?void 0:k.name)&&void 0!==H?H:q,null===(J=null===($=V.theme)||void 0===$?void 0:$.focus)||void 0===J?void 0:J.params),{components:te,representations:Y}})()}),T=m({id:"preset-structure-representation-auto-lod",display:{name:"Automatic Detail",group:"Miscellaneous",description:"Shows more (or less) detailed representations automatically based on camera distance."},params:()=>u,apply:(G,V,U)=>(0,e.A)(function*(){var N,k,H,$;const J=A.so.resolveAndCheck(U.state.data,G);if(!J)return{};const W={all:yield L(U,J,"all")},te=J.obj.data,de={sizeFactor:te.isCoarseGrained?.8:.2},{update:ye,builder:j,typeParams:Z,color:q,symmetryColor:Y,symmetryColorParams:ee,ballAndStickColor:g}=d(U,V,te),_e={gaussianSurface:j.buildRepresentation(ye,W.all,{type:"gaussian-surface",typeParams:{...Z,lod:l.e.create(30,1e7,100)},color:Y,colorParams:ee},{tag:"gaussian-surface"}),cartoon:j.buildRepresentation(ye,W.all,{type:"cartoon",typeParams:{...Z,...de,lod:l.e.create(-20,300,100)},color:Y,colorParams:ee},{tag:"cartoon"}),ballAndStick:j.buildRepresentation(ye,W.all,{type:"ball-and-stick",typeParams:{...Z,lod:l.e.create(-20,40,20)},color:q,colorParams:g},{tag:"ball-and-stick"})};return yield ye.commit({revertOnError:!1}),yield s(U,te,null===(k=null===(N=V.theme)||void 0===N?void 0:N.focus)||void 0===k?void 0:k.name,null===($=null===(H=V.theme)||void 0===H?void 0:H.focus)||void 0===$?void 0:$.params),{components:W,representations:_e}})()});function L(G,V,U,N){return G.builders.structure.tryCreateComponentStatic(V,U,N)}function w(G,V,U,N){return G.builders.structure.tryCreateComponentFromSelection(V,y.Ou[U],`selection-${U}`,N)}const Q={empty:h,auto:C,"atomic-detail":p,"polymer-cartoon":f,"polymer-and-ligand":S,"protein-and-nucleic":D,"coarse-surface":R,illustrative:E,"auto-lod":T}},3182:(tn,Ue,n)=>{"use strict";n.d(Ue,{N:()=>t,e:()=>A});var e=n(9359),o=n(8956),r=n(6115);class t{constructor(){this.subs=void 0}subscribe(c,i){typeof this.subs>"u"&&(this.subs=[]);let v=c.subscribe(i);return this.subs.push(v),{unsubscribe:()=>{v&&this.subs&&(0,r.K3)(this.subs,v)&&(v.unsubscribe(),v=void 0)}}}get ev(){return this._ev||(this._ev=o.V.create())}dispose(){if(this._ev&&this._ev.dispose(),this.subs){for(const c of this.subs)c.unsubscribe();this.subs=void 0}}}class A extends t{updateState(...c){const i=this.state,v=(0,e.Wv)(i,c);return v!==i&&(this._state=v,!0)}get state(){return this._state}constructor(c){super(),this._state=c}}},1169:(tn,Ue,n)=>{"use strict";n.d(Ue,{VE:()=>i,jM:()=>r});var e=n(1073),o=n(1425);const r="Coordinates",i=[["dcd",(0,o.N)({label:"DCD",description:"DCD",category:r,binaryExtensions:["dcd"],parse:(v,O)=>v.state.data.build().to(O).apply(e.f.Model.CoordinatesFromDcd).commit()})],["xtc",(0,o.N)({label:"XTC",description:"XTC",category:r,binaryExtensions:["xtc"],parse:(v,O)=>v.state.data.build().to(O).apply(e.f.Model.CoordinatesFromXtc).commit()})],["trr",(0,o.N)({label:"TRR",description:"TRR",category:r,binaryExtensions:["trr"],parse:(v,O)=>v.state.data.build().to(O).apply(e.f.Model.CoordinatesFromTrr).commit()})],["nctraj",(0,o.N)({label:"NCTRAJ",description:"NCTRAJ",category:r,binaryExtensions:["nc","nctraj"],parse:(v,O)=>v.state.data.build().to(O).apply(e.f.Model.CoordinatesFromNctraj).commit()})]]},1425:(tn,Ue,n)=>{"use strict";n.d(Ue,{N:()=>o,v:()=>r});var e=n(5295);function o(t){return t}function r(t,A){if("bcif"===t.ext)try{const{encoder:y}=(0,e.J)(A);if(y.startsWith("VolumeServer"))return"dscif";if(y.startsWith("volseg-volume-server"))return"segcif"}catch(y){console.error(y)}else if("cif"===t.ext){const y=A;if(y.startsWith("data_SERVER\n#\n_density_server_result"))return"dscif";if(y.startsWith("data_SERVER\n#\ndata_SEGMENTATION_DATA"))return"segcif";if(y.includes("atom_site_fract_x")||y.includes("atom_site.fract_x"))return"coreCif"}return-1}},2945:(tn,Ue,n)=>{"use strict";n.d(Ue,{PO:()=>i,nE:()=>t});var e=n(467),o=n(1073),r=n(1425);const t="Topology",A=(0,r.N)({label:"PSF",description:"PSF",category:t,stringExtensions:["psf"],parse:(v=(0,e.A)(function*(O,b){const _=O.state.data.build().to(b).apply(o.f.Data.ParsePsf,{},{state:{isGhost:!0}}),M=_.apply(o.f.Model.TopologyFromPsf);return yield _.commit(),{format:_.selector,topology:M.selector}}),function(b,_){return v.apply(this,arguments)})}),y=(0,r.N)({label:"PRMTOP",description:"PRMTOP",category:t,stringExtensions:["prmtop","parm7"],parse:function(){var v=(0,e.A)(function*(O,b){const _=O.state.data.build().to(b).apply(o.f.Data.ParsePrmtop,{},{state:{isGhost:!0}}),M=_.apply(o.f.Model.TopologyFromPrmtop);return yield _.commit(),{format:_.selector,topology:M.selector}});return function(b,_){return v.apply(this,arguments)}}()}),c=(0,r.N)({label:"TOP",description:"TOP",category:t,stringExtensions:["top"],parse:function(){var v=(0,e.A)(function*(O,b){const _=O.state.data.build().to(b).apply(o.f.Data.ParseTop,{},{state:{isGhost:!0}}),M=_.apply(o.f.Model.TopologyFromTop);return yield _.commit(),{format:_.selector,topology:M.selector}});return function(b,_){return v.apply(this,arguments)}}()}),i=[["psf",A],["prmtop",y],["top",c]];var v},5953:(tn,Ue,n)=>{"use strict";n.d(Ue,{HQ:()=>m,RB:()=>t});var e=n(467),o=n(1073),r=n(1425);const t="Trajectory";function A(u,d){return u.builders.structure.hierarchy.applyPreset(d.trajectory,"default")}const y={label:"mmCIF",description:"mmCIF",category:t,stringExtensions:["cif","mmcif","mcif"],binaryExtensions:["bcif"],isApplicable:(u,d)=>"mmcif"===u.ext||"mcif"===u.ext||("cif"===u.ext||"bcif"===u.ext)&&-1===(0,r.v)(u,d),parse:(u=(0,e.A)(function*(d,s,C){var h,a;const D=d.state.data.build().to(s).apply(o.f.Data.ParseCif,void 0,{state:{isGhost:!0}}),R=yield D.apply(o.f.Model.TrajectoryFromMmCif,void 0,{tags:C?.trajectoryTags}).commit({revertOnError:!0});return((null===(a=null===(h=D.selector.cell)||void 0===h?void 0:h.obj)||void 0===a?void 0:a.data.blocks.length)||0)>1&&d.state.data.updateCellState(D.ref,{isGhost:!1}),{trajectory:R}}),function(s,C,h){return u.apply(this,arguments)}),visuals:A},c={label:"cifCore",description:"CIF Core",category:t,stringExtensions:["cif"],isApplicable:(u,d)=>"cif"===u.ext&&"coreCif"===(0,r.v)(u,d),parse:function(){var u=(0,e.A)(function*(d,s,C){var h,a;const D=d.state.data.build().to(s).apply(o.f.Data.ParseCif,void 0,{state:{isGhost:!0}}),R=yield D.apply(o.f.Model.TrajectoryFromCifCore,void 0,{tags:C?.trajectoryTags}).commit({revertOnError:!0});return((null===(a=null===(h=D.selector.cell)||void 0===h?void 0:h.obj)||void 0===a?void 0:a.data.blocks.length)||0)>1&&d.state.data.updateCellState(D.ref,{isGhost:!1}),{trajectory:R}});return function(s,C,h){return u.apply(this,arguments)}}(),visuals:A};var u;function i(u,d){return function(){var s=(0,e.A)(function*(C,h,a){return{trajectory:yield C.state.data.build().to(h).apply(u,d,{tags:a?.trajectoryTags}).commit({revertOnError:!0})}});return function(C,h,a){return s.apply(this,arguments)}}()}const v={label:"PDB",description:"PDB",category:t,stringExtensions:["pdb","ent"],parse:i(o.f.Model.TrajectoryFromPDB),visuals:A},O={label:"PDBQT",description:"PDBQT",category:t,stringExtensions:["pdbqt"],parse:i(o.f.Model.TrajectoryFromPDB,{isPdbqt:!0}),visuals:A},b={label:"XYZ",description:"XYZ",category:t,stringExtensions:["xyz"],parse:i(o.f.Model.TrajectoryFromXYZ),visuals:A},m=[["mmcif",y],["cifCore",c],["pdb",v],["pdbqt",O],["gro",{label:"GRO",description:"GRO",category:t,stringExtensions:["gro"],binaryExtensions:[],parse:i(o.f.Model.TrajectoryFromGRO),visuals:A}],["xyz",b],["mol",{label:"MOL",description:"MOL",category:t,stringExtensions:["mol"],parse:i(o.f.Model.TrajectoryFromMOL),visuals:A}],["sdf",{label:"SDF",description:"SDF",category:t,stringExtensions:["sdf","sd"],parse:i(o.f.Model.TrajectoryFromSDF),visuals:A}],["mol2",{label:"MOL2",description:"MOL2",category:t,stringExtensions:["mol2"],parse:i(o.f.Model.TrajectoryFromMOL2),visuals:A}]]},1295:(tn,Ue,n)=>{"use strict";n.d(Ue,{z:()=>_});var e=n(467),o=n(9136),r=n(7785),t=n(5384),A=n(8277),y=n(4369),c=n(9032),i=n(381),v=n(9651),O=n(1372);const b={dynamicBonds:A.t.Optional(A.t.Boolean(!1,{description:"Ensure bonds are recalculated upon model changes. Also enables calculation of inter-unit bonds in water molecules and ions."}))};var _;!function(M){function m(f,p,E,T,L){return u.apply(this,arguments)}function u(){return(u=(0,e.A)(function*(f,p,E,T,L){let w;const Q=v.i.Provider.get(E);!T&&Q&&0!==Q.assemblies.length&&(T=Q.assemblies[0].id),Q&&0!==Q.assemblies.length?(w=c.v.findAssembly(E,T||""),w||f.log.warn(`Model '${E.entryId}' has no assembly called '${T}', returning model structure.`)):f.log.warn(`Model '${E.entryId}' has no assembly, returning model structure.`);const G=o.oE.ofModel(E,L);if(!w){const N={label:"Model",description:o.oE.elementDescription(G)};return new i.O.Molecule.Structure(G,N)}T=w.id;const V=yield o.us.buildAssembly(G,T).runInContext(p),U={label:`Assembly ${T}`,description:o.oE.elementDescription(V)};return new i.O.Molecule.Structure(V,U)})).apply(this,arguments)}function s(){return(s=(0,e.A)(function*(f,p,E,T,L){const w=o.oE.ofModel(p,L),Q=yield o.us.buildSymmetryRange(w,E,T).runInContext(f),G={label:`Symmetry [${E}] to [${T}]`,description:o.oE.elementDescription(Q)};return new i.O.Molecule.Structure(Q,G)})).apply(this,arguments)}function h(){return(h=(0,e.A)(function*(f,p,E,T){const L=o.oE.ofModel(p,T),w=yield o.us.builderSymmetryMates(L,E).runInContext(f),Q={label:"Symmetry Mates",description:o.oE.elementDescription(w)};return new i.O.Molecule.Structure(w,Q)})).apply(this,arguments)}function S(){return(S=(0,e.A)(function*(f,p,E,T,L){const w=o.oE.ofModel(p,L),Q=yield o.us.buildSymmetryAssembly(w,E,T).runInContext(f),G={label:"Symmetry Assembly",description:o.oE.elementDescription(Q)};return new i.O.Molecule.Structure(Q,G)})).apply(this,arguments)}function R(){return R=(0,e.A)(function*(f,p,E,T){const L=T?.params,w=v.i.Provider.get(E);if(!w||!T||"model"===T.name){const Q=o.oE.ofModel(E,L);return new i.O.Molecule.Structure(Q,{label:"Model",description:o.oE.elementDescription(Q)})}if("auto"===T.name){if(0===w.assemblies.length){const Q=o.oE.ofModel(E,L);return new i.O.Molecule.Structure(Q,{label:"Model",description:o.oE.elementDescription(Q)})}return m(f,p,E,void 0,L)}return"assembly"===T.name?m(f,p,E,T.params.id,L):"symmetry"===T.name?function d(f,p,E,T,L){return s.apply(this,arguments)}(p,E,T.params.ijkMin,T.params.ijkMax,L):"symmetry-mates"===T.name?function C(f,p,E,T){return h.apply(this,arguments)}(p,E,T.params.radius,L):"symmetry-assembly"===T.name?function a(f,p,E,T,L){return S.apply(this,arguments)}(p,E,T.params.generators,w,L):void(0,O.dr)(T)}),R.apply(this,arguments)}M.getParams=function I(f,p){const E=f&&v.i.Provider.get(f),T=E?E.assemblies.map(U=>[U.id,`${U.id}: ${(0,r.Mk)(U.details)}`]):[],L=!E||!t.O8.isZero(E.spacegroup.cell),w=[];if(E){const{operators:U}=E.spacegroup;for(let N=0,k=U.length;N{Q.push([U.id,U.id===U.auth_id?U.id:`${U.id} [auth ${U.auth_id}]`])});const G={auto:A.t.Group(b),model:A.t.Group(b),assembly:A.t.Group({id:A.t.Optional(f?A.t.Select(T.length?T[0][0]:"",T,{label:"Asm Id",description:"Assembly Id"}):A.t.Text("",{label:"Asm Id",description:"Assembly Id (use empty for the 1st assembly)"})),...b},{isFlat:!0}),"symmetry-mates":A.t.Group({radius:A.t.Numeric(5,{min:0,max:50,step:1}),...b},{isFlat:!0}),symmetry:A.t.Group({ijkMin:A.t.Vec3(y.eB.create(-1,-1,-1),{step:1},{label:"Min IJK",fieldLabels:{x:"I",y:"J",z:"K"}}),ijkMax:A.t.Vec3(y.eB.create(1,1,1),{step:1},{label:"Max IJK",fieldLabels:{x:"I",y:"J",z:"K"}}),...b},{isFlat:!0}),"symmetry-assembly":A.t.Group({generators:A.t.ObjectList({operators:A.t.ObjectList({index:A.t.Select(0,w),shift:A.t.Vec3((0,y.eB)(),{step:1},{label:"IJK",fieldLabels:{x:"I",y:"J",z:"K"}})},U=>`${U.index+1}_${U.shift.map(N=>N+5).join("")}`,{defaultValue:[]}),asymIds:A.t.MultiSelect([],Q)},U=>`${U.asymIds.length} asym ids, ${U.operators.length} operators`,{defaultValue:[]}),...b},{isFlat:!0})},V=[];return"auto"===p&&V.push(["auto","Auto"]),V.push(["model","Model"]),T.length>0&&V.push(["assembly","Assembly"]),L&&(V.push(["symmetry-mates","Symmetry Mates"]),V.push(["symmetry","Symmetry (indices)"]),V.push(["symmetry-assembly","Symmetry (assembly)"])),{type:A.t.MappedStatic(p||"model",G,{options:V})}},M.canAutoUpdate=function l(f,p){return!("symmetry-assembly"===p.name||"symmetry"===p.name&&"symmetry"===f.name)},M.create=function D(f,p,E,T){return R.apply(this,arguments)}}(_||(_={}))},1893:(tn,Ue,n)=>{"use strict";n.d(Ue,{A8:()=>t,IZ:()=>A,eD:()=>y,pQ:()=>r});var e=n(9136),o=n(8277);function r(v,O,b={}){return"string"==typeof b.type||"string"==typeof b.color||"string"==typeof b.size?function c(v,O,b){const _=b.type&&v.representation.structure.registry.get(b.type)||v.representation.structure.registry.default.provider,M=b.color&&v.representation.structure.themes.colorThemeRegistry.get(b.color)||v.representation.structure.themes.colorThemeRegistry.get(_.defaultColorTheme.name),I=b.size&&v.representation.structure.themes.sizeThemeRegistry.get(b.size)||v.representation.structure.themes.sizeThemeRegistry.get(_.defaultSizeTheme.name);return i(v,O,{type:_,typeParams:b.typeParams,color:M,colorParams:b.colorParams,size:I,sizeParams:b.sizeParams})}(v,O||e.oE.Empty,b):i(v,O||e.oE.Empty,b)}function t(v,O){const{themes:b}=v.representation.structure;return O?b.colorThemeRegistry.getApplicableTypes({structure:O}):b.colorThemeRegistry.types}function A(v,O,b,_,M){const{registry:I,themes:l}=v.representation.structure,m=I.get(b||I.default.name),u=l.colorThemeRegistry.get(_||m.defaultColorTheme.name),d=o.t.getDefaultValues(u.getParams({structure:O||e.oE.Empty}));return u.name===m.defaultColorTheme.name&&Object.assign(d,m.defaultColorTheme.props),{name:u.name,params:Object.assign(d,M)}}function y(v,O,b,_,M){const{registry:I,themes:l}=v.representation.structure,m=I.get(b||I.default.name),u=l.sizeThemeRegistry.get(_||m.defaultSizeTheme.name),d=o.t.getDefaultValues(u.getParams({structure:O||e.oE.Empty}));return u.name===m.defaultSizeTheme.name&&Object.assign(d,m.defaultSizeTheme.props),{name:u.name,params:Object.assign(d,M)}}function i(v,O,b={}){const{themes:_}=v.representation.structure,M={structure:O},I=b.type||v.representation.structure.registry.default.provider,l=o.t.getDefaultValues(I.getParams(_,O)),m=Object.assign(l,b.typeParams),u=b.color||_.colorThemeRegistry.get(I.defaultColorTheme.name),d=o.t.getDefaultValues(u.getParams(M));u.name===I.defaultColorTheme.name&&Object.assign(d,I.defaultColorTheme.props);const s=Object.assign(d,b.colorParams),C=b.size||_.sizeThemeRegistry.get(I.defaultSizeTheme.name),h=o.t.getDefaultValues(C.getParams(M));C.name===I.defaultSizeTheme.name&&Object.assign(h,I.defaultSizeTheme.props);const a=Object.assign(h,b.sizeParams);return{type:{name:I.name,params:m},colorTheme:{name:u.name,params:s},sizeTheme:{name:C.name,params:a}}}},9096:(tn,Ue,n)=>{"use strict";n.d(Ue,{Ag:()=>ke,ET:()=>b,HU:()=>Ce,Mt:()=>Re,Ou:()=>Oe,g7:()=>O,lL:()=>Se});var e=n(467),o=n(9136),r=n(2434),t=n(9767),A=n(7291),y=n(9986),i=(n(1073),n(7126)),v=n(8699),O=function(Ve){return Ve.Type="Type",Ve.Structure="Structure Property",Ve.Atom="Atom Property",Ve.Bond="Bond Property",Ve.Residue="Residue Property",Ve.AminoAcid="Amino Acid",Ve.NucleicBase="Nucleic Base",Ve.Manipulate="Manipulate Selection",Ve.Validation="Validation",Ve.Misc="Miscellaneous",Ve.Internal="Internal",Ve}(O||{});function b(Ve,Ne,K={}){var ne;let be;return{label:Ve,expression:Ne,description:K.description||"",category:null!==(ne=K.category)&&void 0!==ne?ne:O.Misc,isHidden:!!K.isHidden,priority:K.priority||0,referencesCurrent:!!K.referencesCurrent,get query(){return be||(be=(0,A.wE)(Ne)),be},ensureCustomProperties:K.ensureCustomProperties,getSelection:(Te,ie,ue)=>(0,e.A)(function*(){const re=Te.managers.structure.selection.getStructure(ue),ve=re?o.cv.Sequence(ue,[re]):o.cv.Empty(ue);return K.ensureCustomProperties&&(yield K.ensureCustomProperties({runtime:ie,assetManager:Te.managers.asset},ue)),be||(be=(0,A.wE)(Ne)),be(new o.cY(ue,{currentSelection:ve}))})()}}const _=b("All",t.J.struct.generator.all(),{category:"",priority:1e3}),M=b("Current Selection",t.J.internal.generator.current(),{category:"",referencesCurrent:!0}),I=b("Polymer",t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":t.J.core.logic.and([t.J.core.rel.eq([t.J.ammp("entityType"),"polymer"]),t.J.core.str.match([t.J.re("(polypeptide|cyclic-pseudo-peptide|peptide-like|nucleotide|peptide nucleic acid)","i"),t.J.ammp("entitySubtype")])])})]),{category:O.Type}),l=b("Trace",t.J.struct.modifier.union([t.J.struct.combinator.merge([t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":t.J.core.rel.eq([t.J.ammp("entityType"),"polymer"]),"chain-test":t.J.core.set.has([t.J.set("sphere","gaussian"),t.J.ammp("objectPrimitive")])})]),t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":t.J.core.rel.eq([t.J.ammp("entityType"),"polymer"]),"chain-test":t.J.core.rel.eq([t.J.ammp("objectPrimitive"),"atomistic"]),"atom-test":t.J.core.set.has([t.J.set("CA","P"),t.J.ammp("label_atom_id")])})])])]),{category:O.Structure}),m=t.J.core.logic.and([t.J.core.rel.eq([t.J.ammp("entityType"),"polymer"]),t.J.core.str.match([t.J.re("(polypeptide|cyclic-pseudo-peptide|peptide-like)","i"),t.J.ammp("entitySubtype")])]),u=t.J.core.logic.and([t.J.core.rel.eq([t.J.ammp("entityType"),"polymer"]),t.J.core.str.match([t.J.re("(nucleotide|peptide nucleic acid)","i"),t.J.ammp("entitySubtype")])]),d=t.J.core.str.match([t.J.re("non-polymer|(amino|carboxy) terminus|peptide-like","i"),t.J.ammp("chemCompType")]),s=b("Backbone",t.J.struct.modifier.union([t.J.struct.combinator.merge([t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":m,"chain-test":t.J.core.rel.eq([t.J.ammp("objectPrimitive"),"atomistic"]),"residue-test":t.J.core.logic.not([d]),"atom-test":t.J.core.set.has([t.J.set(...y.M.toArray(r.DB)),t.J.ammp("label_atom_id")])})]),t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":u,"chain-test":t.J.core.rel.eq([t.J.ammp("objectPrimitive"),"atomistic"]),"residue-test":t.J.core.logic.not([d]),"atom-test":t.J.core.set.has([t.J.set(...y.M.toArray(r.HA)),t.J.ammp("label_atom_id")])})])])]),{category:O.Structure}),C=b("Sidechain",t.J.struct.modifier.union([t.J.struct.combinator.merge([t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":m,"chain-test":t.J.core.rel.eq([t.J.ammp("objectPrimitive"),"atomistic"]),"residue-test":t.J.core.logic.not([d]),"atom-test":t.J.core.logic.or([t.J.core.logic.not([t.J.core.set.has([t.J.set(...y.M.toArray(r.DB)),t.J.ammp("label_atom_id")])])])})]),t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":u,"chain-test":t.J.core.rel.eq([t.J.ammp("objectPrimitive"),"atomistic"]),"residue-test":t.J.core.logic.not([d]),"atom-test":t.J.core.logic.or([t.J.core.logic.not([t.J.core.set.has([t.J.set(...y.M.toArray(r.HA)),t.J.ammp("label_atom_id")])])])})])])]),{category:O.Structure}),h=b("Sidechain with Trace",t.J.struct.modifier.union([t.J.struct.combinator.merge([t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":m,"chain-test":t.J.core.rel.eq([t.J.ammp("objectPrimitive"),"atomistic"]),"residue-test":t.J.core.logic.not([d]),"atom-test":t.J.core.logic.or([t.J.core.logic.not([t.J.core.set.has([t.J.set(...y.M.toArray(r.DB)),t.J.ammp("label_atom_id")])]),t.J.core.rel.eq([t.J.ammp("label_atom_id"),"CA"]),t.J.core.logic.and([t.J.core.rel.eq([t.J.ammp("auth_comp_id"),"PRO"]),t.J.core.rel.eq([t.J.ammp("label_atom_id"),"N"])])])})]),t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":u,"chain-test":t.J.core.rel.eq([t.J.ammp("objectPrimitive"),"atomistic"]),"residue-test":t.J.core.logic.not([d]),"atom-test":t.J.core.logic.or([t.J.core.logic.not([t.J.core.set.has([t.J.set(...y.M.toArray(r.HA)),t.J.ammp("label_atom_id")])]),t.J.core.rel.eq([t.J.ammp("label_atom_id"),"P"])])})])])]),{category:O.Structure}),a=b("Protein",t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":m})]),{category:O.Type}),S=b("Nucleic",t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":u})]),{category:O.Type}),D=b("Helix",t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":m,"residue-test":t.J.core.flags.hasAny([t.J.ammp("secondaryStructureFlags"),t.J.core.type.bitflags([2])])})]),{category:O.Structure,ensureCustomProperties:(Ve,Ne)=>v.v.attach(Ve,Ne)}),R=b("Beta Strand/Sheet",t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":m,"residue-test":t.J.core.flags.hasAny([t.J.ammp("secondaryStructureFlags"),t.J.core.type.bitflags([4])])})]),{category:O.Structure,ensureCustomProperties:(Ve,Ne)=>v.v.attach(Ve,Ne)}),f=b("Water",t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":t.J.core.rel.eq([t.J.ammp("entityType"),"water"])})]),{category:O.Type}),p=b("Ion",t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":t.J.core.rel.eq([t.J.ammp("entitySubtype"),"ion"])})]),{category:O.Type}),E=b("Lipid",t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":t.J.core.rel.eq([t.J.ammp("entitySubtype"),"lipid"])})]),{category:O.Type}),T=b("Carbohydrate",t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":t.J.core.logic.or([t.J.core.rel.eq([t.J.ammp("entityType"),"branched"]),t.J.core.logic.and([t.J.core.rel.eq([t.J.ammp("entityType"),"non-polymer"]),t.J.core.str.match([t.J.re("oligosaccharide","i"),t.J.ammp("entitySubtype")])])])})]),{category:O.Type}),L=b("Carbohydrate with Connected",t.J.struct.modifier.union([t.J.struct.modifier.includeConnected({0:T.expression,"layer-count":1,"as-whole-residues":!0})]),{category:O.Internal,isHidden:!0}),w=b("Connected to Carbohydrate",t.J.struct.modifier.union([t.J.struct.modifier.exceptBy({0:L.expression,by:T.expression})]),{category:O.Internal,isHidden:!0}),Q=b("Ligand",t.J.struct.modifier.union([t.J.struct.modifier.exceptBy({0:t.J.struct.modifier.union([t.J.struct.combinator.merge([t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":t.J.core.logic.and([t.J.core.logic.or([t.J.core.rel.eq([t.J.ammp("entityType"),"non-polymer"]),t.J.core.rel.neq([t.J.ammp("entityPrdId"),""])]),t.J.core.logic.not([t.J.core.str.match([t.J.re("(oligosaccharide|lipid|ion)","i"),t.J.ammp("entitySubtype")])])]),"chain-test":t.J.core.rel.eq([t.J.ammp("objectPrimitive"),"atomistic"]),"residue-test":t.J.core.logic.not([t.J.core.str.match([t.J.re("saccharide","i"),t.J.ammp("chemCompType")])])})]),t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":t.J.core.rel.eq([t.J.ammp("entityType"),"polymer"]),"chain-test":t.J.core.rel.eq([t.J.ammp("objectPrimitive"),"atomistic"]),"residue-test":d})])])]),by:t.J.struct.combinator.merge([t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":t.J.core.rel.eq([t.J.ammp("entityType"),"polymer"]),"chain-test":t.J.core.rel.eq([t.J.ammp("objectPrimitive"),"atomistic"]),"residue-test":t.J.core.set.has([t.J.set(...y.M.toArray(r.px)),t.J.ammp("label_comp_id")])})]),t.J.struct.generator.atomGroups({"chain-test":t.J.core.rel.eq([t.J.ammp("objectPrimitive"),"atomistic"]),"residue-test":t.J.core.set.has([t.J.set(...y.M.toArray(r.K5)),t.J.ammp("label_comp_id")])})])})]),{category:O.Type}),G=b("Ligand with Connected",t.J.struct.modifier.union([t.J.struct.modifier.exceptBy({0:t.J.struct.modifier.union([t.J.struct.modifier.includeConnected({0:Q.expression,"layer-count":1,"as-whole-residues":!0,"bond-test":t.J.core.flags.hasAny([t.J.struct.bondProperty.flags(),t.J.core.type.bitflags([3])])})]),by:T.expression})]),{category:O.Internal,isHidden:!0}),V=b("Connected to Ligand",t.J.struct.modifier.union([t.J.struct.modifier.exceptBy({0:G.expression,by:Q.expression})]),{category:O.Internal,isHidden:!0}),U=b("Connected to Ligand or Carbohydrate",t.J.struct.modifier.union([t.J.struct.combinator.merge([w.expression,V.expression])]),{category:O.Internal,isHidden:!0}),N=b("Disulfide Bridges",t.J.struct.modifier.union([t.J.struct.combinator.merge([t.J.struct.modifier.union([t.J.struct.modifier.wholeResidues([t.J.struct.filter.isConnectedTo({0:t.J.struct.generator.atomGroups({"residue-test":t.J.core.set.has([t.J.set("CYS"),t.J.ammp("auth_comp_id")]),"atom-test":t.J.core.set.has([t.J.set("SG"),t.J.ammp("label_atom_id")])}),target:t.J.struct.generator.atomGroups({"residue-test":t.J.core.set.has([t.J.set("CYS"),t.J.ammp("auth_comp_id")]),"atom-test":t.J.core.set.has([t.J.set("SG"),t.J.ammp("label_atom_id")])}),"bond-test":!0})])]),t.J.struct.modifier.union([t.J.struct.modifier.wholeResidues([t.J.struct.modifier.union([t.J.struct.generator.bondedAtomicPairs({0:t.J.core.flags.hasAny([t.J.struct.bondProperty.flags(),t.J.core.type.bitflags([8])])})])])])])]),{category:O.Bond}),k=b("NOS Bridges",t.J.struct.modifier.union([t.J.struct.modifier.wholeResidues([t.J.struct.filter.isConnectedTo({0:t.J.struct.generator.atomGroups({"residue-test":t.J.core.set.has([t.J.set("CSO","LYS"),t.J.ammp("auth_comp_id")]),"atom-test":t.J.core.set.has([t.J.set("OD","NZ"),t.J.ammp("label_atom_id")])}),target:t.J.struct.generator.atomGroups({"residue-test":t.J.core.set.has([t.J.set("CSO","LYS"),t.J.ammp("auth_comp_id")]),"atom-test":t.J.core.set.has([t.J.set("OD","NZ"),t.J.ammp("label_atom_id")])}),"bond-test":!0})])]),{category:O.Bond}),H=b("Non-standard Residues in Polymers",t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":t.J.core.rel.eq([t.J.ammp("entityType"),"polymer"]),"chain-test":t.J.core.rel.eq([t.J.ammp("objectPrimitive"),"atomistic"]),"residue-test":t.J.ammp("isNonStandard")})]),{category:O.Residue}),$=b("Coarse Elements",t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"chain-test":t.J.core.set.has([t.J.set("sphere","gaussian"),t.J.ammp("objectPrimitive")])})]),{category:O.Type}),J=b("Rings in Residues",t.J.struct.modifier.union([t.J.struct.generator.rings()]),{category:O.Residue}),W=b("Aromatic Rings in Residues",t.J.struct.modifier.union([t.J.struct.generator.rings({"only-aromatic":!0})]),{category:O.Residue}),te=b("Surrounding Residues (5 \u212b) of Selection",t.J.struct.modifier.union([t.J.struct.modifier.exceptBy({0:t.J.struct.modifier.includeSurroundings({0:t.J.internal.generator.current(),radius:5,"as-whole-residues":!0}),by:t.J.internal.generator.current()})]),{description:"Select residues within 5 \u212b of the current selection.",category:O.Manipulate,referencesCurrent:!0}),de=b("Surrounding Ligands (5 \u212b) of Selection",t.J.struct.modifier.union([t.J.struct.modifier.surroundingLigands({0:t.J.internal.generator.current(),radius:5,"include-water":!0})]),{description:"Select ligand components within 5 \u212b of the current selection.",category:O.Manipulate,referencesCurrent:!0}),ye=b("Surrounding Atoms (5 \u212b) of Selection",t.J.struct.modifier.union([t.J.struct.modifier.exceptBy({0:t.J.struct.modifier.includeSurroundings({0:t.J.internal.generator.current(),radius:5,"as-whole-residues":!1}),by:t.J.internal.generator.current()})]),{description:"Select atoms within 5 \u212b of the current selection.",category:O.Manipulate,referencesCurrent:!0}),j=b("Inverse / Complement of Selection",t.J.struct.modifier.union([t.J.struct.modifier.exceptBy({0:t.J.struct.generator.all(),by:t.J.internal.generator.current()})]),{description:"Select everything not in the current selection.",category:O.Manipulate,referencesCurrent:!0}),Z=b("Residues Covalently Bonded to Selection",t.J.struct.modifier.union([t.J.struct.modifier.includeConnected({0:t.J.internal.generator.current(),"layer-count":1,"as-whole-residues":!0})]),{description:"Select residues covalently bonded to current selection.",category:O.Manipulate,referencesCurrent:!0}),q=b("Covalently Bonded Component",t.J.struct.modifier.union([t.J.struct.modifier.includeConnected({0:t.J.internal.generator.current(),"fixed-point":!0})]),{description:"Select covalently bonded component based on current selection.",category:O.Manipulate,referencesCurrent:!0}),Y=b("Residues with Cov. or Metallic Bond to Selection",t.J.struct.modifier.union([t.J.struct.modifier.includeConnected({0:t.J.internal.generator.current(),"layer-count":1,"as-whole-residues":!0,"bond-test":t.J.core.flags.hasAny([t.J.struct.bondProperty.flags(),t.J.core.type.bitflags([3])])})]),{description:"Select residues with covalent or metallic bond to current selection.",category:O.Manipulate,referencesCurrent:!0}),ee=b("Whole Residues of Selection",t.J.struct.modifier.union([t.J.struct.modifier.wholeResidues({0:t.J.internal.generator.current()})]),{description:"Expand current selection to whole residues.",category:O.Manipulate,referencesCurrent:!0}),g=[[["HIS"],"Histidine"],[["ARG"],"Arginine"],[["LYS"],"Lysine"],[["ILE"],"Isoleucine"],[["PHE"],"Phenylalanine"],[["LEU"],"Leucine"],[["TRP"],"Tryptophan"],[["ALA"],"Alanine"],[["MET"],"Methionine"],[["PRO"],"Proline"],[["CYS"],"Cysteine"],[["ASN"],"Asparagine"],[["VAL"],"Valine"],[["GLY"],"Glycine"],[["SER"],"Serine"],[["GLN"],"Glutamine"],[["TYR"],"Tyrosine"],[["ASP"],"Aspartic Acid"],[["GLU"],"Glutamic Acid"],[["THR"],"Threonine"],[["SEC"],"Selenocysteine"],[["PYL"],"Pyrrolysine"],[["UNK"],"Unknown"]].sort((Ve,Ne)=>Ve[1]Ne[1]?1:0),_e=[[["A","DA"],"Adenosine"],[["C","DC"],"Cytidine"],[["T","DT"],"Thymidine"],[["G","DG"],"Guanosine"],[["I","DI"],"Inosine"],[["U","DU"],"Uridine"],[["N","DN"],"Unknown"]].sort((Ve,Ne)=>Ve[1]Ne[1]?1:0);function xe([Ve,Ne],K,ne=0){const be=1!==Ve.length||Be.has(Ve[0])?`${Ne} (${Ve.join(", ")})`:`[${Ve[0]}] ${Ne}`;return b(be,t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"residue-test":t.J.core.set.has([t.J.set(...Ve),t.J.ammp("auth_comp_id")])})]),{category:K,priority:ne,description:be})}const Be=y.M.unionMany(r.Ke,r.XQ,r.DF,r.mw);function Ce(Ve){const Ne=new Set;for(const ne of Ve)ne.uniqueElementSymbols.forEach(be=>Ne.add(be));const K=[];return Ne.forEach(ne=>{K.push(function le([Ve,Ne],K,ne){const be=`${Ne} (${Ve.join(", ")})`;return b(be,t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"atom-test":t.J.core.set.has([t.J.set(...Ve),t.J.acp("elementSymbol")])})]),{category:K,priority:ne,description:be})}([[ne],i.Z6[ne]||ne],"Element Symbol",0))}),K}function Re(Ve){const Ne=new Map,K=new Set;for(const be of Ve){be.uniqueResidueNames.forEach(Te=>K.add(Te));for(const Te of be.models)be.uniqueResidueNames.forEach(ie=>{const ue=Te.properties.chemicalComponentMap.get(ie);ue&&Ne.set(ie,ue.name)})}const ne=[];return y.M.difference(K,Be).forEach(be=>{const Te=Ne.get(be)||be;ne.push(xe([[be],Te],"Ligand/Non-standard Residue",200))}),ne}function ke(Ve){const Ne=new Map,K=o.iZ.Location.create();for(const be of Ve){K.structure=be;for(const Te of be.unitSymmetryGroups){K.unit=Te.units[0],K.element=Te.elements[0];const ie=o.StructureProperties.entity.type(K);if("polymer"===ie||"branched"===ie){const ue=o.StructureProperties.entity.pdbx_description(K);Ne.set(ue.join(", "),ue)}}}const ne=[];return Ne.forEach((be,Te)=>{ne.push(function Ae([Ve,Ne],K,ne){const be=`${Ne}`;return b(`${Ne}`,t.J.struct.modifier.union([t.J.struct.generator.atomGroups({"entity-test":t.J.core.list.equal([t.J.list(...Ve),t.J.ammp("entityDescription")])})]),{category:K,priority:ne,description:be})}([be,Te],"Polymer/Carbohydrate Entities",300))}),ne}const Oe={all:_,current:M,polymer:I,trace:l,backbone:s,sidechain:C,sidechainWithTrace:h,protein:a,nucleic:S,helix:D,beta:R,water:f,ion:p,lipid:E,branched:T,branchedPlusConnected:L,branchedConnectedOnly:w,ligand:Q,ligandPlusConnected:G,ligandConnectedOnly:V,connectedOnly:U,disulfideBridges:N,nosBridges:k,nonStandardPolymer:H,coarse:$,ring:J,aromaticRing:W,surroundings:te,surroundingLigands:de,surroundingAtoms:ye,complement:j,covalentlyBonded:Z,covalentlyOrMetallicBonded:Y,covalentlyBondedComponent:q,wholeResidues:ee};class Se{add(Ne){this.list.push(Ne),this.options.push([Ne,Ne.label,Ne.category]),this.version+=1}remove(Ne){const K=this.list.indexOf(Ne);-1!==K&&(this.list.splice(K,1),this.options.splice(K,1),this.version+=1)}constructor(){this.list=[],this.options=[],this.version=1,this.list.push(...Object.values(Oe),...g.map(Ne=>xe(Ne,O.AminoAcid)),..._e.map(Ne=>xe(Ne,O.NucleicBase))),this.options.push(...this.list.map(Ne=>[Ne,Ne.label,Ne.category]))}}},3442:(tn,Ue,n)=>{"use strict";n.d(Ue,{aK:()=>r});var e=n(6853),o=n(8277);function r(v,O,b={}){return"string"==typeof b.type||"string"==typeof b.color||"string"==typeof b.size?function c(v,O,b){const _=b.type&&v.representation.volume.registry.get(b.type)||v.representation.volume.registry.default.provider,M=b.color&&v.representation.volume.themes.colorThemeRegistry.get(b.color)||v.representation.volume.themes.colorThemeRegistry.get(_.defaultColorTheme.name),I=b.size&&v.representation.volume.themes.sizeThemeRegistry.get(b.size)||v.representation.volume.themes.sizeThemeRegistry.get(_.defaultSizeTheme.name);return i(v,O,{type:_,typeParams:b.typeParams,color:M,colorParams:b.colorParams,size:I,sizeParams:b.sizeParams})}(v,O||e.f.One,b):i(v,O||e.f.One,b)}function i(v,O,b={}){const{themes:_}=v.representation.volume,M={volume:O},I=b.type||v.representation.volume.registry.default.provider,l=o.t.getDefaultValues(I.getParams(_,O)),m=Object.assign(l,b.typeParams),u=b.color||_.colorThemeRegistry.get(I.defaultColorTheme.name),d=o.t.getDefaultValues(u.getParams(M));u.name===I.defaultColorTheme.name&&Object.assign(d,I.defaultColorTheme.props);const s=Object.assign(d,b.colorParams),C=b.size||_.sizeThemeRegistry.get(I.defaultSizeTheme.name),h=o.t.getDefaultValues(C.getParams(M));C.name===I.defaultSizeTheme.name&&Object.assign(h,I.defaultSizeTheme.props);const a=Object.assign(h,b.sizeParams);return{type:{name:I.name,params:m},colorTheme:{name:u.name,params:s},sizeTheme:{name:C.name,params:a}}}},4986:(tn,Ue,n)=>{"use strict";n.d(Ue,{d:()=>v});var e=n(3246),o=n(9136),r=n(2443),t=n(6825),A=n(9359),y=n(8277),c=n(3182);class v extends c.e{get props(){return{...this.state.props}}setProps(b){const M={...this.state.props,...b};(0,A.bN)(this.props,M)||(this.updateState({props:M}),this.lociSelects.setProps(M),this.lociHighlights.setProps(M),this.events.propsUpdated.next(void 0))}dispose(){super.dispose(),this.lociSelects.dispose(),this.lociHighlights.dispose()}constructor(b,_={}){super({props:{...y.t.getDefaultValues(v.Params),..._}}),this.plugin=b,this._props=y.t.getDefaultValues(v.Params),this.events={propsUpdated:this.ev()},this.lociSelects=new v.LociSelectManager(b,this._props),this.lociHighlights=new v.LociHighlightManager(b,this._props)}}!function(O){O.Params={granularity:y.t.Select("residue",e.QN.GranularityOptions,{label:"Picking Level",description:"Controls if selections are expanded upon picking to whole residues, chains, structures, instances, or left as atoms and coarse elements"})};class b{setProps(l){Object.assign(this.props,l)}addProvider(l){this.providers.push(l)}removeProvider(l){this.providers=this.providers.filter(m=>m!==l)}normalizedLoci(l,m,u=!1){const{loci:d,repr:s}=l;return{loci:e.QN.normalize(d,m?this.props.granularity:void 0,u),repr:s}}mark(l,m,u=!1){if(!e.QN.isEmpty(l.loci))for(const d of this.providers)d(l,m,u)}dispose(){this.providers.length=0,this.sel.dispose()}constructor(l,m={}){this.ctx=l,this.providers=[],this.props=y.t.getDefaultValues(O.Params),this.sel=l.managers.structure.selection,this.setProps(m)}}O.LociMarkManager=b,O.LociHighlightManager=class _ extends b{constructor(){super(...arguments),this.prev=[],this.clearHighlights=(l=!1)=>{for(const m of this.prev)this.mark(m,t.xi.RemoveHighlight,l);this.prev.length=0}}isHighlighted(l){for(const m of this.prev)if(r.YL.Loci.areEqual(m,l))return!0;return!1}addHighlight(l){this.mark(l,t.xi.Highlight),this.prev.push(l)}highlight(l,m=!0){const u=this.normalizedLoci(l,m);this.isHighlighted(u)||this.addHighlight(u)}highlightOnly(l,m=!0){const u=this.normalizedLoci(l,m);this.isHighlighted(u)||(e.QN.isEmpty(u.loci)?this.clearHighlights():(this.clearHighlights(!0),this.addHighlight(u)))}highlightOnlyExtend(l,m=!0){const u=this.normalizedLoci(l,m);if(o.iZ.Loci.is(u.loci)){const d={loci:this.sel.tryGetRange(u.loci)||u.loci,repr:u.repr};this.isHighlighted(d)||(e.QN.isEmpty(d.loci)?this.clearHighlights():(this.clearHighlights(!0),this.addHighlight(d)))}}dispose(){super.dispose(),this.prev.length=0}},O.LociSelectManager=class M extends b{toggle(l,m=!0){if(e.QN.isEmpty(l.loci))return;const u=this.normalizedLoci(l,m,!0);o.iZ.Loci.is(u.loci)?this.toggleSel(u):super.mark(u,t.xi.Toggle)}toggleExtend(l,m=!0){if(e.QN.isEmpty(l.loci))return;const u=this.normalizedLoci(l,m,!0);if(o.iZ.Loci.is(u.loci)){const d=this.sel.tryGetRange(u.loci)||u.loci;this.toggleSel({loci:d,repr:u.repr})}}select(l,m=!0){const u=this.normalizedLoci(l,m,!0);o.iZ.Loci.is(u.loci)&&this.sel.modify("add",u.loci),this.mark(u,t.xi.Select)}selectJoin(l,m=!0){const u=this.normalizedLoci(l,m,!0);o.iZ.Loci.is(u.loci)&&this.sel.modify("intersect",u.loci),this.mark(u,t.xi.Select)}selectOnly(l,m=!0){const u=this.normalizedLoci(l,m,!0);o.iZ.Loci.is(u.loci)&&(this.mark({loci:o.oE.Loci(u.loci.structure),repr:u.repr},t.xi.Deselect),this.sel.modify("set",u.loci)),this.mark(u,t.xi.Select)}deselect(l,m=!0){const u=this.normalizedLoci(l,m,!0);o.iZ.Loci.is(u.loci)&&this.sel.modify("remove",u.loci),this.mark(u,t.xi.Deselect)}deselectAll(){this.sel.clear(),this.mark({loci:e.FE},t.xi.Deselect)}deselectAllOnEmpty(l){(0,e.$M)(l.loci)&&this.deselectAll()}mark(l,m){const{loci:u}=l;if(!e.QN.isEmpty(u))if(o.iZ.Loci.is(u)){const d=this.sel.getLoci(u.structure);super.mark({loci:o.oE.Loci(u.structure)},t.xi.Deselect,!e.QN.isEmpty(d)),super.mark({loci:d},t.xi.Select)}else super.mark(l,m)}toggleSel(l){this.sel.has(l.loci)?(this.sel.modify("remove",l.loci),this.mark(l,t.xi.Deselect)):(this.sel.modify("add",l.loci),this.mark(l,t.xi.Select))}}}(v||(v={}))},856:(tn,Ue,n)=>{"use strict";n.d(Ue,{g:()=>b});var e=n(467),o=n(39),r=n(9909),t=n(3182),A=n(275),y=n(6985),c=n(3188),i=n(9359),v=n(6101),O=n(6345);let b=(()=>{class _ extends t.e{getIndex(I){return this.state.entries.indexOf(I)}getEntry(I){if(I)return this.entryMap.get(I)}remove(I){const l=this.entryMap.get(I);l&&(l?.image&&this.plugin.managers.asset.delete(l.image),this.entryMap.delete(I),this.updateState({current:this.state.current===I?void 0:this.state.current,entries:this.state.entries.delete(this.getIndex(l))}),this.events.changed.next(void 0))}add(I){this.entryMap.set(I.snapshot.id,I),this.updateState({current:I.snapshot.id,entries:this.state.entries.push(I)}),this.events.changed.next(void 0)}replace(I,l,m){var u,d,s;const C=this.getEntry(I);if(!C)return;this.defaultSnapshotId=void 0,C?.image&&this.plugin.managers.asset.delete(C.image);const h=this.getIndex(C),a=_.Entry(l,{key:null!==(u=m?.key)&&void 0!==u?u:C.key,name:null!==(d=m?.name)&&void 0!==d?d:C.name,description:null!==(s=m?.description)&&void 0!==s?s:C.description,image:m?.image});this.entryMap.set(l.id,a),this.updateState({current:a.snapshot.id,entries:this.state.entries.set(h,a)}),this.events.changed.next(void 0)}move(I,l){const m=this.state.entries.size;if(m<2)return;const u=this.getEntry(I);if(!u)return;const d=this.getIndex(u);let s=(d+l)%m;s<0&&(s+=m);const C=this.state.entries.get(s),h=this.state.entries.asMutable();h.set(s,u),h.set(d,C),this.updateState({current:u.snapshot.id,entries:h.asImmutable()}),this.events.changed.next(void 0)}update(I,l){var m,u,d;const s=this.getIndex(I);if(s<0)return;const C=this.state.entries.set(s,{...I,key:(null===(m=l.key)||void 0===m?void 0:m.trim())||void 0,name:(null===(u=l.name)||void 0===u?void 0:u.trim())||void 0,description:(null===(d=l.description)||void 0===d?void 0:d.trim())||void 0});this.updateState({entries:C}),this.entryMap.set(I.snapshot.id,this.state.entries.get(s)),this.events.changed.next(void 0)}clear(){0!==this.state.entries.size&&(this.entryMap.forEach(I=>{I?.image&&this.plugin.managers.asset.delete(I.image)}),this.entryMap.clear(),this.updateState({current:void 0,entries:(0,o.B8)()}),this.events.changed.next(void 0))}applyKey(I){const l=this.state.entries.find(m=>m.key===I);l&&(this.updateState({current:l.snapshot.id}),this.events.changed.next(void 0),this.plugin.state.setSnapshot(l.snapshot))}setCurrent(I){const l=this.getEntry(I);return l&&(this.updateState({current:I}),this.events.changed.next(void 0)),l&&l.snapshot}getNextId(I,l){const m=this.state.entries.size;if(!I){if(0===m)return;return this.state.entries.get(-1===l?m-1:0).snapshot.id}const u=this.getEntry(I);if(!u)return;let d=this.getIndex(u);return d<0?void 0:(d=(d+l)%m,d<0&&(d+=m),this.state.entries.get(d).snapshot.id)}setStateSnapshot(I){var l=this;return(0,e.A)(function*(){l.clear();const m=(0,o.B8)().asMutable();for(const C of I.entries)l.entryMap.set(C.snapshot.id,C),m.push(C);const u=I.current?I.current:I.entries.length>0?I.entries[0].snapshot.id:void 0;if(l.updateState({current:u,entries:m.asImmutable(),isPlaying:!1,nextSnapshotDelayInMs:I.playback?I.playback.nextSnapshotDelayInMs:_.DefaultNextSnapshotDelayInMs}),l.events.changed.next(void 0),!u)return;const d=l.getEntry(u),s=d&&d.snapshot;return s?(yield l.plugin.state.setSnapshot(s),I.playback&&I.playback.isPlaying&&l.play(!0),s):void 0})()}syncCurrent(I){var l=this;return(0,e.A)(function*(){var m,u;const d=0===l.state.entries.size,s=1===l.state.entries.size&&l.state.current&&l.state.current===l.defaultSnapshotId;if(!d&&!s)return;const C=l.plugin.state.getSnapshot(I?.params),h=(null!==(u=null===(m=I?.params)||void 0===m?void 0:m.image)&&void 0!==u?u:l.plugin.state.snapshotParams.value.image)?yield _.getCanvasImageAsset(l.plugin,`${C.id}-image.png`):void 0;if(d)l.add(_.Entry(C,{name:I?.name,description:I?.description,image:h}));else if(s){const a=l.getEntry(l.state.current);a?.image&&l.plugin.managers.asset.delete(a.image),l.replace(l.state.current,C,{image:h})}l.defaultSnapshotId=C.id})()}getStateSnapshot(I){var l=this;return(0,e.A)(function*(){return yield l.syncCurrent(I),{timestamp:+new Date,version:v.j,name:I&&I.name,description:I&&I.description,current:l.state.current,playback:{isPlaying:!(!I||!I.playOnLoad),nextSnapshotDelayInMs:l.state.nextSnapshotDelayInMs},entries:l.state.entries.valueSeq().toArray()}})()}serialize(I){var l=this;return(0,e.A)(function*(){const m=JSON.stringify(yield l.getStateSnapshot({params:I?.params}),null,2);if(!I?.type||"json"===I.type||"molj"===I.type)return new Blob([m],{type:"application/json;charset=utf-8"});{const u=new Uint8Array((0,A.VH)(m));(0,A.rj)(u,0,m);const d={"state.json":u},s=[];for(const{asset:h,file:a}of l.plugin.managers.asset.assets)s.push([h.id,h]),d[`assets/${h.id}`]=new Uint8Array(yield a.arrayBuffer());if(s.length>0){const h=JSON.stringify(s,null,2),a=new Uint8Array((0,A.VH)(h));(0,A.rj)(a,0,h),d["assets.json"]=a}const C=yield l.plugin.runTask((0,y.qQ)(d));return new Blob([C],{type:"application/zip"})}})()}open(I){var l=this;return(0,e.A)(function*(){try{const m=I.name.toLowerCase();if(m.endsWith("json")||m.endsWith("molj")){const u=yield l.plugin.runTask((0,c.dH)(I,"string")),d=JSON.parse(u);_.isStateSnapshot(d)?yield l.setStateSnapshot(d):_.isStateSnapshot(d.data)?yield l.setStateSnapshot(d.data):yield l.plugin.state.setSnapshot(d)}else{const u=yield l.plugin.runTask((0,c.dH)(I,"zip")),d=Object.create(null);(0,i.IF)(u,(a,S)=>{if("state.json"===S||"assets.json"===S)return;const D=S.substring(S.indexOf("/")+1);d[D]=a});const s=new File([u["state.json"]],"state.json"),C=yield l.plugin.runTask((0,c.dH)(s,"string"));if(u["assets.json"]){const a=new File([u["assets.json"]],"assets.json"),S=JSON.parse(yield l.plugin.runTask((0,c.dH)(a,"string")));for(const[D,R]of S)l.plugin.managers.asset.set(R,new File([d[D]],R.name))}const h=JSON.parse(C);yield l.setStateSnapshot(h)}l.events.opened.next(void 0)}catch(m){console.error(m),l.plugin.log.error("Error reading state")}})()}play(I=!1){if(this.updateState({isPlaying:!0}),I){const l=this.getEntry(this.state.current);if(!l)return void this.next();this.events.changed.next(void 0);const m=l.snapshot;this.timeoutHandle=setTimeout(this.next,typeof m.durationInMs<"u"?m.durationInMs:this.state.nextSnapshotDelayInMs)}else this.next()}stop(){this.updateState({isPlaying:!1}),typeof this.timeoutHandle<"u"&&clearTimeout(this.timeoutHandle),this.timeoutHandle=void 0,this.events.changed.next(void 0)}togglePlay(){this.state.isPlaying?(this.stop(),this.plugin.managers.animation.stop()):this.play()}dispose(){super.dispose(),this.entryMap.clear()}constructor(I){var l;super({current:void 0,entries:(0,o.B8)(),isPlaying:!1,nextSnapshotDelayInMs:_.DefaultNextSnapshotDelayInMs}),l=this,this.plugin=I,this.entryMap=new Map,this.defaultSnapshotId=void 0,this.events={changed:this.ev(),opened:this.ev()},this.timeoutHandle=void 0,this.next=(0,e.A)(function*(){l.timeoutHandle=void 0;const m=l.getNextId(l.state.current,1);if(!m||m===l.state.current)return void l.stop();const u=l.setCurrent(m);yield l.plugin.state.setSnapshot(u),l.state.isPlaying&&(l.timeoutHandle=setTimeout(l.next,typeof u.durationInMs<"u"?u.durationInMs:l.state.nextSnapshotDelayInMs))})}}return _.DefaultNextSnapshotDelayInMs=1500,_})();!function(_){function m(){return(m=(0,e.A)(function*(u,d){if(!u.helpers.viewportScreenshot)return;const s=u.helpers.viewportScreenshot.getPreview(512);if(!s)return;const C=yield(0,O.PG)(s.canvas,"png"),h=new File([C],d),a={kind:"file",id:r.kk.create22(),name:d};return u.managers.asset.set(a,h),a})).apply(this,arguments)}_.Entry=function M(u,d){return{timestamp:+new Date,snapshot:u,...d}},_.isStateSnapshot=function I(u){return!!u&&!!u.timestamp&&!!u.entries},_.getCanvasImageAsset=function l(u,d){return m.apply(this,arguments)}}(b||(b={}))},9039:(tn,Ue,n)=>{"use strict";n.d(Ue,{C:()=>be});var e=n(467),o=n(5019),r=n(6713),t=n(9136),A=n(3916),y=n(1827),c=n(4824),i=n(9909),v=n(2745),O=n(9359),b=n(8277),_=n(3182),M=n(1073),I=n(1832),l=n(261),m=n(190),u=n(3246);const d="overpaint-controls";function s(Te,ie,ue,re,ve){return C.apply(this,arguments)}function C(){return C=(0,e.A)(function*(Te,ie,ue,re,ve){yield function S(Te,ie,ue){return D.apply(this,arguments)}(Te,ie,function(){var ce=(0,e.A)(function*(se,ae,ge){if(ve&&ve.length>0&&!ve.includes(ae.params.values.type.name))return;const Ie=ae.obj.data.sourceData,Le=yield re(Ie.root);if(u.QN.isEmpty(Le)||(0,u.$M)(Le))return;const nt={bundle:t.iZ.Bundle.fromLoci(Le),color:-1===ue?(0,m.Q1)(0):ue,clear:-1===ue};if(ge){const Lt=R([...ge.params.values.layers,nt],Ie);se.to(ge).update(l.l.toBundle(Lt))}else{const je=R([nt],Ie);se.to(ae.transform.ref).apply(M.f.Representation.OverpaintStructureRepresentation3DFromBundle,l.l.toBundle(je),{tags:d})}});return function(se,ae,ge){return ce.apply(this,arguments)}}())}),C.apply(this,arguments)}function D(){return(D=(0,e.A)(function*(Te,ie,ue){const re=Te.state.data,ve=re.build();for(const ce of ie)for(const se of ce.representations){const ae=re.select(I.QX.Generators.ofTransformer(M.f.Representation.OverpaintStructureRepresentation3DFromBundle,se.cell.transform.ref).withTag(d));yield ue(ve,se.cell,ae[0])}return ve.commit({doNotUpdateCurrent:!0})})).apply(this,arguments)}function R(Te,ie){const ue=l.l.ofBundle(Te,ie.root),re=l.l.merge(ue);return l.l.filter(re,ie)}var f=n(1893),p=n(9096),E=n(8010),T=n(7981);const L="clipping-controls";function w(Te,ie,ue,re,ve){return Q.apply(this,arguments)}function Q(){return Q=(0,e.A)(function*(Te,ie,ue,re,ve){yield function G(Te,ie,ue){return V.apply(this,arguments)}(Te,ie,function(){var ce=(0,e.A)(function*(se,ae,ge){if(ve&&ve.length>0&&!ve.includes(ae.params.values.type.name))return;const Ie=ae.obj.data.sourceData,Le=yield re(Ie.root);if(u.QN.isEmpty(Le)||(0,u.$M)(Le))return;const nt={bundle:t.iZ.Bundle.fromLoci(Le),groups:ue};if(ge){const Lt=U([...ge.params.values.layers,nt],Ie);se.to(ge).update(T.l.toBundle(Lt))}else{const je=U([nt],Ie);se.to(ae.transform.ref).apply(M.f.Representation.ClippingStructureRepresentation3DFromBundle,T.l.toBundle(je),{tags:L})}});return function(se,ae,ge){return ce.apply(this,arguments)}}())}),Q.apply(this,arguments)}function V(){return(V=(0,e.A)(function*(Te,ie,ue){const re=Te.state.data,ve=re.build();for(const ce of ie)for(const se of ce.representations){const ae=re.select(I.QX.Generators.ofTransformer(M.f.Representation.ClippingStructureRepresentation3DFromBundle,se.cell.transform.ref).withTag(L));yield ue(ve,se.cell,ae[0])}return ve.commit({doNotUpdateCurrent:!0})})).apply(this,arguments)}function U(Te,ie){const ue=T.l.ofBundle(Te,ie.root),re=T.l.merge(ue);return T.l.filter(re,ie)}var N=n(1965);const k="transparency-controls";function H(Te,ie,ue,re,ve){return $.apply(this,arguments)}function $(){return $=(0,e.A)(function*(Te,ie,ue,re,ve){yield function te(Te,ie,ue){return de.apply(this,arguments)}(Te,ie,function(){var ce=(0,e.A)(function*(se,ae,ge){if(ve&&ve.length>0&&!ve.includes(ae.params.values.type.name))return;const Ie=ae.obj.data.sourceData,Le=yield re(Ie.root);if(u.QN.isEmpty(Le)||(0,u.$M)(Le))return;const nt={bundle:t.iZ.Bundle.fromLoci(Le),value:ue};if(ge){const Lt=ye([...ge.params.values.layers,nt],Ie);se.to(ge).update(N.x.toBundle(Lt))}else{const je=ye([nt],Ie);se.to(ae.transform.ref).apply(M.f.Representation.TransparencyStructureRepresentation3DFromBundle,N.x.toBundle(je),{tags:k})}});return function(se,ae,ge){return ce.apply(this,arguments)}}())}),$.apply(this,arguments)}function de(){return(de=(0,e.A)(function*(Te,ie,ue){const re=Te.state.data,ve=re.build();for(const ce of ie)for(const se of ce.representations){const ae=re.select(I.QX.Generators.ofTransformer(M.f.Representation.TransparencyStructureRepresentation3DFromBundle,se.cell.transform.ref).withTag(k));yield ue(ve,se.cell,ae[0])}return ve.commit({doNotUpdateCurrent:!0})})).apply(this,arguments)}function ye(Te,ie){const ue=N.x.ofBundle(Te,ie.root),re=N.x.merge(ue);return N.x.filter(re,ie)}var j=n(445),Z=n(9213),q=n(6765);const Y="substance-controls";function ee(Te,ie,ue,re,ve){return g.apply(this,arguments)}function g(){return g=(0,e.A)(function*(Te,ie,ue,re,ve){yield function le(Te,ie,ue){return Ae.apply(this,arguments)}(Te,ie,function(){var ce=(0,e.A)(function*(se,ae,ge){if(ve&&ve.length>0&&!ve.includes(ae.params.values.type.name))return;const Ie=ae.obj.data.sourceData,Le=yield re(Ie.root);if(u.QN.isEmpty(Le)||(0,u.$M)(Le))return;const nt={bundle:t.iZ.Bundle.fromLoci(Le),material:ue??(0,q.i)(),clear:!ue};if(ge){const Lt=Be([...ge.params.values.layers,nt],Ie);se.to(ge).update(Z.l.toBundle(Lt))}else{const je=Be([nt],Ie);se.to(ae.transform.ref).apply(M.f.Representation.SubstanceStructureRepresentation3DFromBundle,Z.l.toBundle(je),{tags:Y})}});return function(se,ae,ge){return ce.apply(this,arguments)}}())}),g.apply(this,arguments)}function Ae(){return(Ae=(0,e.A)(function*(Te,ie,ue){const re=Te.state.data,ve=re.build();for(const ce of ie)for(const se of ce.representations){const ae=re.select(I.QX.Generators.ofTransformer(M.f.Representation.SubstanceStructureRepresentation3DFromBundle,se.cell.transform.ref).withTag(Y));yield ue(ve,se.cell,ae[0])}return ve.commit({doNotUpdateCurrent:!0})})).apply(this,arguments)}function Be(Te,ie){const ue=Z.l.ofBundle(Te,ie.root),re=Z.l.merge(ue);return Z.l.filter(re,ie)}var Ce=n(9390),Re=n(3488);const ke="emissive-controls";function we(Te,ie,ue,re,ve){return Oe.apply(this,arguments)}function Oe(){return Oe=(0,e.A)(function*(Te,ie,ue,re,ve){yield function Ne(Te,ie,ue){return K.apply(this,arguments)}(Te,ie,function(){var ce=(0,e.A)(function*(se,ae,ge){if(ve&&ve.length>0&&!ve.includes(ae.params.values.type.name))return;const Ie=ae.obj.data.sourceData,Le=yield re(Ie.root);if(u.QN.isEmpty(Le)||(0,u.$M)(Le))return;const nt={bundle:t.iZ.Bundle.fromLoci(Le),value:ue};if(ge){const Lt=ne([...ge.params.values.layers,nt],Ie);se.to(ge).update(Re.a.toBundle(Lt))}else{const je=ne([nt],Ie);se.to(ae.transform.ref).apply(M.f.Representation.EmissiveStructureRepresentation3DFromBundle,Re.a.toBundle(je),{tags:ke})}});return function(se,ae,ge){return ce.apply(this,arguments)}}())}),Oe.apply(this,arguments)}function K(){return(K=(0,e.A)(function*(Te,ie,ue){const re=Te.state.data,ve=re.build();for(const ce of ie)for(const se of ce.representations){const ae=re.select(I.QX.Generators.ofTransformer(M.f.Representation.EmissiveStructureRepresentation3DFromBundle,se.cell.transform.ref).withTag(ke));yield ue(ve,se.cell,ae[0])}return ve.commit({doNotUpdateCurrent:!0})})).apply(this,arguments)}function ne(Te,ie){const ue=Re.a.ofBundle(Te,ie.root),re=Re.a.merge(ue);return Re.a.filter(re,ie)}class be extends _.e{get currentStructures(){return this.plugin.managers.structure.hierarchy.selection.structures}get pivotStructure(){return this.currentStructures[0]}_setSnapshotState(ie){this.updateState({options:ie}),this.events.optionsUpdated.next(void 0)}setOptions(ie){var ue=this;return(0,e.A)(function*(){const re=ie.interactions!==ue.state.options.interactions;ue.updateState({options:ie}),ue.events.optionsUpdated.next(void 0);const ve=ue.dataState.build();for(const ce of ue.currentStructures)for(const se of ce.components)ue.updateReprParams(ve,se);return ue.plugin.dataTransaction((0,e.A)(function*(){yield ve.commit(),yield ue.plugin.state.updateBehavior(j.b,ce=>{ce.ignoreHydrogens="all"!==ie.hydrogens,ce.ignoreHydrogensVariant="only-polar"===ie.hydrogens?"non-polar":"all",ce.ignoreLight=ie.ignoreLight,ce.material=ie.materialStyle,ce.clip=ie.clipObjects}),re&&(yield ue.updateInterationProps())}))})()}updateReprParams(ie,ue){const{hydrogens:re,visualQuality:ve,ignoreLight:ce,materialStyle:se,clipObjects:ae}=this.state.options,ge="all"!==re,Ie="only-polar"===re?"non-polar":"all";for(const Le of ue.representations){if(Le.cell.transform.transformer!==E.StructureRepresentation3D)continue;const nt=Le.cell.transform.params;(!!nt.type.params.ignoreHydrogens!==ge||nt.type.params.ignoreHydrogensVariant!==Ie||nt.type.params.quality!==ve||nt.type.params.ignoreLight!==ce||!(0,i.bN)(nt.type.params.material,se)||!b.t.areEqual(Ce.B.Params,nt.type.params.clip,ae))&&ie.to(Le.cell).update(je=>{je.type.params.ignoreHydrogens=ge,je.type.params.ignoreHydrogensVariant=Ie,je.type.params.quality=ve,je.type.params.ignoreLight=ce,je.type.params.material=se,je.type.params.clip=ae})}}updateInterationProps(){var ie=this;return(0,e.A)(function*(){var ue,re,ve;for(const ce of ie.currentStructures){const se=r.r.getParams(null===(ue=ce.cell.obj)||void 0===ue?void 0:ue.data);if(ce.properties){const ae=null===(re=ce.properties.cell.transform.params)||void 0===re?void 0:re.properties[r.r.descriptor.name];if(b.t.areEqual(se,ae,ie.state.options.interactions))continue;yield ie.dataState.build().to(ce.properties.cell).update(ge=>{ge.properties[r.r.descriptor.name]=ie.state.options.interactions}).commit()}else{const ae=ie.plugin.customStructureProperties.getParams(null===(ve=ce.cell.obj)||void 0===ve?void 0:ve.data),ge=b.t.getDefaultValues(ae);if(b.t.areEqual(se,ge.properties[r.r.descriptor.name],ie.state.options.interactions))continue;ge.properties[r.r.descriptor.name]=ie.state.options.interactions,yield ie.plugin.builders.structure.insertStructureProperties(ce.cell,ge)}}})()}applyPreset(ie,ue,re){var ve=this;return this.plugin.dataTransaction((0,e.A)(function*(){for(const ce of ie){const se=yield ve.plugin.builders.structure.representation.applyPreset(ce.cell,ue,re);yield ve.syncPreset(ce,se)}}),{canUndo:"Preset"})}syncPreset(ie,ue){if(!ue||!ue.components)return this.clearComponents([ie]);const re=new Set;if((0,O.IF)(ue.components,ae=>{ae&&re.add(ae.ref)}),ue.representations&&(0,O.IF)(ue.representations,ae=>{ae&&re.add(ae.ref)}),0===re.size)return this.clearComponents([ie]);let ve=!1;const ce=this.dataState.build(),se=ae=>{re.has(ae.cell.transform.ref)||(ve=!0,ce.delete(ae.cell))};for(const ae of ie.components){se(ae);for(const ge of ae.representations)se(ge);if(ae.genericRepresentations)for(const ge of ae.genericRepresentations)se(ge)}if(ie.genericRepresentations)for(const ae of ie.genericRepresentations)se(ae);return ve?ce.commit():void 0}clear(ie){return this.clearComponents(ie)}selectThis(ie){var ue;const re=this.plugin.managers.structure.selection;re.clear();for(const ve of ie){const ce=t.oE.toSubStructureElementLoci(ve.structure.cell.obj.data,null===(ue=ve.cell.obj)||void 0===ue?void 0:ue.data);re.fromLoci("set",ce)}}canBeModified(ie){return this.plugin.builders.structure.isComponentTransform(ie.cell)}modifyByCurrentSelection(ie,ue){var re=this;return this.plugin.runTask(c.YZ.create("Modify Component",function(){var ve=(0,e.A)(function*(ce){const se=re.dataState.build();for(const ae of ie){if(!re.canBeModified(ae))continue;const ge=re.plugin.managers.structure.selection.getStructure(ae.structure.cell.obj.data);!ge||0===ge.elementCount||re.modifyComponent(se,ae,ge,ue)}yield re.dataState.updateTree(se,{canUndo:"Modify Selection"}).runInContext(ce)});return function(ce){return ve.apply(this,arguments)}}()))}toggleVisibility(ie,ue){if(0!==ie.length)if(ue){const re=ie[0].representations.indexOf(ue),ve=!ue.cell.state.isHidden;for(const ce of ie){const se=ce.representations[re];se&&(0,y.setSubtreeVisibility)(this.dataState,se.cell.transform.ref,ve)}}else{const re=!ie[0].cell.state.isHidden;for(const ve of ie)(0,y.setSubtreeVisibility)(this.dataState,ve.cell.transform.ref,re)}}removeRepresentations(ie,ue){if(0===ie.length)return;const re=[];if(ue){const ve=ie[0].representations.indexOf(ue);if(ve<0)return;for(const ce of ie)ce.representations[ve]&&re.push(ce.representations[ve])}else for(const ve of ie)for(const ce of ve.representations)re.push(ce);return this.plugin.managers.structure.hierarchy.remove(re,!0)}updateRepresentations(ie,ue,re){if(0===ie.length)return Promise.resolve();const ve=ie[0].representations.indexOf(ue);if(ve<0)return Promise.resolve();const ce=this.dataState.build();for(const se of ie){const ae=se.representations[ve];ae&&ae.cell.transform.transformer===ue.cell.transform.transformer&&ce.to(ae.cell).update(re)}return ce.commit({canUndo:"Update Representation"})}updateRepresentationsTheme(ie,ue){var re,ve,ce,se;if(0===ie.length)return;const ae=this.dataState.build();for(const ge of ie)for(const Ie of ge.representations){const Le=Ie.cell.transform.params,nt="function"==typeof ue?ue(ge,Ie):ue,je="default"===nt.color?(0,f.IZ)(this.plugin,null===(re=ge.structure.cell.obj)||void 0===re?void 0:re.data,Le?.type.name):nt.color?(0,f.IZ)(this.plugin,null===(ve=ge.structure.cell.obj)||void 0===ve?void 0:ve.data,Le?.type.name,nt.color,nt.colorParams):void 0,Lt="default"===nt.size?(0,f.eD)(this.plugin,null===(ce=ge.structure.cell.obj)||void 0===ce?void 0:ce.data,Le?.type.name):nt.color?(0,f.eD)(this.plugin,null===(se=ge.structure.cell.obj)||void 0===se?void 0:se.data,Le?.type.name,nt.size,nt.sizeParams):void 0;(je||Lt)&&ae.to(Ie.cell).update(Je=>{je&&(Je.colorTheme=je),Lt&&(Je.sizeTheme=Lt)})}return ae.commit({canUndo:"Update Theme"})}addRepresentation(ie,ue){var re=this;if(0===ie.length)return;const{hydrogens:ve,visualQuality:ce,ignoreLight:se,materialStyle:ae,clipObjects:ge}=this.state.options,nt={ignoreHydrogens:"all"!==ve,ignoreHydrogensVariant:"only-polar"===ve?"non-polar":"all",quality:ce,ignoreLight:se,material:ae,clip:ge};return this.plugin.dataTransaction((0,e.A)(function*(){for(const je of ie)yield re.plugin.builders.structure.representation.addRepresentation(je.cell,{type:re.plugin.representation.structure.registry.get(ue),typeParams:nt})}),{canUndo:"Add Representation"})}tryFindComponent(ie,ue){var re=this;if(0!==ie.components.length)return this.plugin.runTask(c.YZ.create("Find Component",function(){var ve=(0,e.A)(function*(ce){var se,ae;const ge=null===(se=ie.cell.obj)||void 0===se?void 0:se.data;if(!ge)return;const Ie=t.cv.unionStructure(yield ue.getSelection(re.plugin,ce,ge));for(const Le of ie.components){const nt=null===(ae=Le.cell.obj)||void 0===ae?void 0:ae.data;if(nt&&Le.cell.parent&&(0,A.IP)(Ie,nt))return Le.cell}});return function(ce){return ve.apply(this,arguments)}}()))}add(ie,ue){var re=this;return(0,e.A)(function*(){return re.plugin.dataTransaction((0,e.A)(function*(){const ve=ue||re.currentStructures;if(0===ve.length)return;const{hydrogens:ce,visualQuality:se,ignoreLight:ae,materialStyle:ge,clipObjects:Ie}=re.state.options,je={ignoreHydrogens:"all"!==ce,ignoreHydrogensVariant:"only-polar"===ce?"non-polar":"all",quality:se,ignoreLight:ae,material:ge,clip:Ie},Lt=i.kk.create22();for(const Je of ve){let en;ie.options.checkExisting&&(en=yield re.tryFindComponent(Je,ie.selection)),en||(en=yield re.plugin.builders.structure.tryCreateComponentFromSelection(Je.cell,ie.selection,Lt,{label:ie.options.label||(ie.selection===p.Ou.current?"Custom Selection":"")})),"none"!==ie.representation&&en&&(yield re.plugin.builders.structure.representation.addRepresentation(en,{type:re.plugin.representation.structure.registry.get(ie.representation),typeParams:je}))}}),{canUndo:"Add Selection"})})()}applyTheme(ie,ue){var re=this;return(0,e.A)(function*(){return re.plugin.dataTransaction(function(){var ve=(0,e.A)(function*(ce){const se=ue||re.currentStructures;if(0===se.length)return;const ae=function(){var ge=(0,e.A)(function*(Ie){return t.cv.toLociWithSourceUnits(yield ie.selection.getSelection(re.plugin,ce,Ie))});return function(Le){return ge.apply(this,arguments)}}();for(const ge of se)if("color"===ie.action.name){const Ie=ie.action.params;yield s(re.plugin,ge.components,Ie.color,ae,ie.representations)}else if("resetColor"===ie.action.name)yield s(re.plugin,ge.components,-1,ae,ie.representations);else if("transparency"===ie.action.name){const Ie=ie.action.params;yield H(re.plugin,ge.components,Ie.value,ae,ie.representations)}else if("emissive"===ie.action.name){const Ie=ie.action.params;yield we(re.plugin,ge.components,Ie.value,ae,ie.representations)}else if("material"===ie.action.name){const Ie=ie.action.params;yield ee(re.plugin,ge.components,Ie.material,ae,ie.representations)}else if("resetMaterial"===ie.action.name)yield ee(re.plugin,ge.components,void 0,ae,ie.representations);else if("clipping"===ie.action.name){const Ie=ie.action.params;yield w(re.plugin,ge.components,T.l.Groups.fromNames(Ie.excludeGroups),ae,ie.representations)}});return function(ce){return ve.apply(this,arguments)}}(),{canUndo:"Apply Theme"})})()}modifyComponent(ie,ue,re,ve){var ce,se,ae;const ge=null===(ce=ue.cell.obj)||void 0===ce?void 0:ce.data;if(!ge||("subtract"===ve||"intersect"===ve)&&!(0,A.HK)(ge,re))return;const Ie=null===(se=ue.structure.cell.obj)||void 0===se?void 0:se.data,Le="union"===ve?(0,A.l6)(Ie,[ge,re]):"intersect"===ve?(0,A.jU)(ge,re):(0,A.Kt)(ge,re);if(0===Le.elementCount)ie.delete(ue.cell.transform.ref);else{const je={type:{name:"bundle",params:t.iZ.Bundle.fromSubStructure(Ie,Le)},nullIfEmpty:!0,label:null===(ae=ue.cell.obj)||void 0===ae?void 0:ae.label};ie.to(ue.cell).update(je)}}updateLabel(ie,ue){var re,ve;const ce={type:null===(re=ie.cell.params)||void 0===re?void 0:re.values.type,nullIfEmpty:null===(ve=ie.cell.params)||void 0===ve?void 0:ve.values.nullIfEmpty,label:ue};this.dataState.build().to(ie.cell).update(ce).commit()}get dataState(){return this.plugin.state.data}clearComponents(ie){const ue=this.dataState.build();for(const re of ie)for(const ve of re.components)ue.delete(ve.cell.transform.ref);return ue.commit({canUndo:"Clear Selections"})}constructor(ie){super({options:b.t.getDefaultValues(be.OptionsParams)}),this.plugin=ie,this.events={optionsUpdated:this.ev()}}}!function(Te){function re(ce,se){var ae,ge;return null!==(ae=se?.cell.obj)&&void 0!==ae&&ae.data?ce.representation.structure.registry.getApplicableTypes(null===(ge=se.cell.obj)||void 0===ge?void 0:ge.data):ce.representation.structure.registry.types}function ve(ce,se,ae,ge){const Ie=[...ae,...re(ce,se)];return b.t.Select(Ie[0][0],Ie,{label:ge})}Te.OptionsParams={hydrogens:b.t.Select("all",[["all","Show All"],["hide-all","Hide All"],["only-polar","Only Polar"]],{description:"Determine display of hydrogen atoms in representations"}),visualQuality:b.t.Select("auto",o.sF,{description:"Control the visual/rendering quality of representations"}),ignoreLight:b.t.Boolean(!1,{description:"Ignore light for stylized rendering of representations"}),materialStyle:q.i.getParam(),clipObjects:b.t.Group(Ce.B.Params),interactions:b.t.Group(r.r.defaultParams,{label:"Non-covalent Interactions"})},Te.getAddParams=function ie(ce,se){const{options:ae}=ce.query.structure.registry;return se={pivot:ce.managers.structure.component.pivotStructure,allowNone:!0,hideSelection:!1,checkExisting:!1,...se},{selection:b.t.Select(ae[1][0],ae,{isHidden:se?.hideSelection}),representation:ve(ce,se?.pivot,se?.allowNone?[["none","< Create Later >"]]:[]),options:b.t.Group({label:b.t.Text(""),checkExisting:b.t.Boolean(!!se?.checkExisting,{help:()=>({description:"Checks if a selection with the specifield elements already exists to avoid creating duplicate components."})})})}},Te.getThemeParams=function ue(ce,se){const{options:ae}=ce.query.structure.registry;return{selection:b.t.Select(ae[1][0],ae,{isHidden:!1}),action:b.t.MappedStatic("color",{color:b.t.Group({color:b.t.Color(v.s.blue,{isExpanded:!0})},{isFlat:!0}),resetColor:b.t.EmptyGroup({label:"Reset Color"}),transparency:b.t.Group({value:b.t.Numeric(.5,{min:0,max:1,step:.01})},{isFlat:!0}),emissive:b.t.Group({value:b.t.Numeric(.5,{min:0,max:1,step:.01})},{isFlat:!0}),material:b.t.Group({material:q.i.getParam({isFlat:!0})},{isFlat:!0}),resetMaterial:b.t.EmptyGroup({label:"Reset Material"}),clipping:b.t.Group({excludeGroups:b.t.MultiSelect([],b.t.objectToOptions(T.l.Groups.Names))},{isFlat:!0})}),representations:b.t.MultiSelect([],re(ce,se),{emptyValue:"All"})}},Te.getRepresentationTypes=re}(be||(be={}))},2277:(tn,Ue,n)=>{"use strict";n.d(Ue,{G:()=>k});var e=n(467),o=n(1827),r=n(6763),t=n(1832),A=n(9986),y=n(3182),c=n(381),i=n(1073),v=n(6230);function b(){return{trajectories:[],models:[],structures:[],refs:new Map}}function _(H){return{kind:"trajectory",cell:H,version:H.transform.version,models:[]}}function M(H,$){return{kind:"model",cell:H,version:H.transform.version,trajectory:$,structures:[]}}function I(H,$){return{kind:"model-properties",cell:H,version:H.transform.version,model:$}}function l(H,$){return{kind:"model-unitcell",cell:H,version:H.transform.version,model:$}}function m(H,$){return{kind:"structure",cell:H,version:H.transform.version,model:$,components:[]}}function u(H,$){return{kind:"structure-properties",cell:H,version:H.transform.version,structure:$}}function d(H,$){return{kind:"structure-transform",cell:H,version:H.transform.version,structure:$}}function s(H,$){return{kind:"structure-volume-streaming",cell:H,version:H.transform.version,structure:$}}function C(H){return H.transform.tags?[...H.transform.tags].sort().join():H.transform.ref}function h(H,$){return{kind:"structure-component",cell:H,version:H.transform.version,structure:$,key:C(H),representations:[]}}function a(H,$){return{kind:"structure-representation",cell:H,version:H.transform.version,component:$}}function S(H,$){return{kind:"generic-representation",cell:H,version:H.transform.version,parent:$}}function R(H,$,J,W,...te){const de=W(...te);J.push(de),H.hierarchy.refs.set($.transform.ref,de);const ye=H.oldHierarchy.refs.get($.transform.ref);return ye?ye.version!==$.transform.version&&(H.changed=!0):(H.added.add(de.cell.transform.ref),H.changed=!0),de}function f(H,$,J,...W){const te=J(...W);H.hierarchy.refs.set($.transform.ref,te);const de=H.oldHierarchy.refs.get($.transform.ref);return de?de.version!==$.transform.version&&(H.changed=!0):(H.added.add(te.cell.transform.ref),H.changed=!0),te}function p(H){return $=>H.is($.obj)}function E(H,$){return(J,W)=>!$(W)&&H.is(J.obj)}function T(H){return $=>$.transform.transformer===H}function L(){}const w=[[p(c.O.Molecule.Trajectory),(H,$)=>{H.currentTrajectory=R(H,$,H.hierarchy.trajectories,_,$)},H=>H.currentTrajectory=void 0],[E(c.O.Molecule.Model,H=>H.currentModel),(H,$)=>{H.currentModel=H.currentTrajectory?R(H,$,H.currentTrajectory.models,M,$,H.currentTrajectory):f(H,$,M,$),H.hierarchy.models.push(H.currentModel)},H=>H.currentModel=void 0],[T(i.f.Model.CustomModelProperties),(H,$)=>{if(!H.currentModel)return!1;H.currentModel.properties=f(H,$,I,$,H.currentModel)},L],[T(i.f.Representation.ModelUnitcell3D),(H,$)=>{if(!H.currentModel)return!1;H.currentModel.unitcell=f(H,$,l,$,H.currentModel)},L],[E(c.O.Molecule.Structure,H=>H.currentStructure),(H,$)=>{H.currentStructure=H.currentModel?R(H,$,H.currentModel.structures,m,$,H.currentModel):f(H,$,m,$),H.hierarchy.structures.push(H.currentStructure)},H=>H.currentStructure=void 0],[T(i.f.Model.CustomStructureProperties),(H,$)=>{if(!H.currentStructure)return!1;H.currentStructure.properties=f(H,$,u,$,H.currentStructure)},L],[T(i.f.Model.TransformStructureConformation),(H,$)=>{if(!H.currentStructure)return!1;H.currentStructure.transform=f(H,$,d,$,H.currentStructure)},L],[p(v.h),(H,$)=>(H.currentStructure&&(H.currentStructure.volumeStreaming=f(H,$,s,$,H.currentStructure)),!1),L],[(H,$)=>!($.currentComponent||!$.currentStructure||H.transform.transformer.definition.isDecorator)&&c.O.Molecule.Structure.is(H.obj),(H,$)=>{H.currentStructure&&(H.currentComponent=R(H,$,H.currentStructure.components,h,$,H.currentStructure))},H=>H.currentComponent=void 0],[(H,$)=>!H.state.isGhost&&!!$.currentComponent&&c.O.Molecule.Structure.Representation3D.is(H.obj),(H,$)=>(H.currentComponent&&R(H,$,H.currentComponent.representations,a,$,H.currentComponent),!1),L],[H=>!H.state.isGhost&&c.O.isRepresentation3D(H.obj),(H,$)=>{const J=H.currentComponent||H.currentStructure||H.currentModel;J&&(J.genericRepresentations||(J.genericRepresentations=[]),R(H,$,J.genericRepresentations,S,$,J))},L]];function Q(H){if(!H||!H?.parent||!H.parent.cells.has(H.transform.ref))return!1;const{obj:$}=H;return!(!$||$===t.BM.Null||"ok"!==H.status&&"error"!==H.status)}function G(H){const{cell:$}=H;Q($)||(this.changed=!0)}function V(H){U(this,this.tree.transforms.get(H))}function U(H,$){const{state:J}=H,W=J.state.cells.get($.ref);if(!Q(W))return;let te,de=!1;for(const[j,Z,q]of w)if(j(W,J)){if(!1===Z(J,W)){de=!0;break}te=q;break}if(de)return;const ye=H.tree.children.get($.ref);ye&&ye.size&&ye.forEach(V,H),te&&te(J)}class k extends y.N{get dataState(){return this.plugin.state.data}get currentComponentGroups(){return this._currentComponentGroups||(this._currentComponentGroups=k.getComponentGroups(this.selection.structures)),this._currentComponentGroups}get seletionSet(){if(this._currentSelectionSet)return this._currentSelectionSet;this._currentSelectionSet=new Set;for(const $ of this.selection.trajectories)this._currentSelectionSet.add($.cell.transform.ref);for(const $ of this.selection.models)this._currentSelectionSet.add($.cell.transform.ref);for(const $ of this.selection.structures)this._currentSelectionSet.add($.cell.transform.ref);return this._currentSelectionSet}get current(){return this.sync(!1),this.state.hierarchy}get selection(){return this.sync(!1),this.state.selection}getStructuresWithSelection(){const $=this.plugin.managers.structure.hierarchy.current.structures,J=[];for(const W of $)this.plugin.managers.structure.selection.structureHasSelection(W)&&J.push(W);return J}findStructure($){if(!$)return;const J=this.plugin.helpers.substructureParent.get($);if(!J)return;const W=this.plugin.state.data.selectQ(te=>te.byValue(J).rootOfType(c.O.Molecule.Structure))[0];return W?this.behaviors.selection.value.structures.find(te=>te.cell===W):void 0}syncCurrent($,J){const W=this.seletionSet,te=[];for(const de of $){const ye=de.cell.transform.ref;(W.has(ye)||J.has(ye))&&te.push(de)}return 0===te.length?$.length>0?[$[0]]:[]:te}sync($){if(!$&&this.dataState.inUpdate)return;if(this.state.syncedTree===this.dataState.tree)return void($&&!this.state.notified&&(this.state.notified=!0,this.behaviors.selection.next({hierarchy:this.state.hierarchy,...this.state.selection})));this.state.syncedTree=this.dataState.tree;const J=function O(H,$){const J=function D(H,$){return{state:H,oldHierarchy:$,hierarchy:b(),changed:!1,added:new Set}}(H,$||b());return function N(H,$){U({tree:H,state:$},H.root)}(H.tree,J),$&&$.refs.forEach(G,J),{hierarchy:J.hierarchy,added:J.added,changed:J.changed}}(this.plugin.state.data,this.current);if(!J.changed)return;const{hierarchy:W}=J,te=this.syncCurrent(W.trajectories,J.added),de=this.syncCurrent(W.models,J.added),ye=this.syncCurrent(W.structures,J.added);this._currentComponentGroups=void 0,this._currentSelectionSet=void 0,this.state.hierarchy=W,this.state.selection.trajectories=te,this.state.selection.models=de,this.state.selection.structures=ye,$?(this.state.notified=!0,this.behaviors.selection.next({hierarchy:W,trajectories:te,models:de,structures:ye})):this.state.notified=!1}updateCurrent($,J){const W=this.current,te="add"===J?A.M.union(this.seletionSet,new Set($.map(Z=>Z.cell.transform.ref))):A.M.difference(this.seletionSet,new Set($.map(Z=>Z.cell.transform.ref))),de=[],ye=[],j=[];for(const Z of W.trajectories)te.has(Z.cell.transform.ref)&&de.push(Z);for(const Z of W.models)te.has(Z.cell.transform.ref)&&ye.push(Z);for(const Z of W.structures)te.has(Z.cell.transform.ref)&&j.push(Z);this._currentComponentGroups=void 0,this._currentSelectionSet=void 0,this.state.selection.trajectories=de,this.state.selection.models=ye,this.state.selection.structures=j,this.behaviors.selection.next({hierarchy:W,trajectories:de,models:ye,structures:j})}remove($,J){if(0===$.length)return;const W=this.plugin.state.data.build();for(const te of $)W.delete("string"==typeof te?te:te.cell.transform.ref);return W.commit({canUndo:!!J&&"Remove"})}toggleVisibility($,J){if(0===$.length)return;const W=void 0!==J?"show"!==J:!$[0].cell.state.isHidden;for(const te of $)(0,o.setSubtreeVisibility)(this.dataState,te.cell.transform.ref,W)}applyPreset($,J,W){var te=this;return this.plugin.dataTransaction((0,e.A)(function*(){for(const de of $)de.models.length>0&&(yield te.clearTrajectory(de)),yield te.plugin.builders.structure.hierarchy.applyPreset(de.cell,J,W)}))}updateStructure($,J){var W=this;return(0,e.A)(function*(){yield W.plugin.dataTransaction((0,e.A)(function*(){const te=t.uF.getDecoratorRoot(W.dataState.tree,$.cell.transform.ref),de=W.dataState.tree.children.get(te).toArray();yield W.remove(de,!1),yield W.plugin.state.updateTransform(W.plugin.state.data,$.cell.transform.ref,J,"Structure Type"),yield W.plugin.builders.structure.representation.applyPreset($.cell.transform.ref,"auto")}),{canUndo:"Structure Type"}),r.a.Camera.Reset(W.plugin)})()}clearTrajectory($){const J=this.dataState.build();for(const W of $.models)J.delete(W.cell);return J.commit()}constructor($){super(),this.plugin=$,this.state={syncedTree:this.dataState.tree,notified:!1,hierarchy:b(),selection:{trajectories:[],models:[],structures:[]}},this.behaviors={selection:this.ev.behavior({hierarchy:this.current,trajectories:this.selection.trajectories,models:this.selection.models,structures:this.selection.structures})},this._currentComponentGroups=void 0,this._currentSelectionSet=void 0,this.subscribe($.state.data.events.changed,J=>{J.inTransaction||$.behaviors.state.isAnimating.value||this.sync(!0)}),this.subscribe($.behaviors.state.isAnimating,J=>{!J&&!$.behaviors.state.isUpdating.value&&this.sync(!0)})}}var H;(H=k||(k={})).getComponentGroups=function $(W){if(!W.length)return[];if(1===W.length)return W[0].components.map(ye=>[ye]);const te=[],de=new Map;for(const ye of W)for(const j of ye.components){const Z=j.key;if(!Z)continue;let q=de.get(Z);q||(q=[],de.set(Z,q),te.push(q)),q.push(j)}return te},H.getSelectedStructuresDescription=function J(W){var te,de,ye,j,Z,q,Y,ee,g;const{structures:_e}=W.managers.structure.hierarchy.selection;if(0===_e.length)return"";if(1===_e.length){const Be=_e[0],Ce=null===(te=Be.cell.obj)||void 0===te?void 0:te.data;if(!Ce)return(null===(de=Be.cell.obj)||void 0===de?void 0:de.label)||"Structure";const Re=Ce.models[0]||Ce.representativeModel||Ce.masterModel;if(!Re)return(null===(ye=Be.cell.obj)||void 0===ye?void 0:ye.label)||"Structure";const ke=Re.entryId;return null!==(Z=null===(j=Be.model)||void 0===j?void 0:j.trajectory)&&void 0!==Z&&Z.models&&1===Be.model.trajectory.models.length?ke:Be.model?`${null===(q=Be.model.cell.obj)||void 0===q?void 0:q.label} | ${ke}`:ke}const xe=_e[0],le=null===(Y=xe?.model)||void 0===Y?void 0:Y.trajectory;let Ae=!0;for(const Be of _e)if((null===(ee=Be?.model)||void 0===ee?void 0:ee.trajectory)!==le){Ae=!1;break}return Ae&&le?`${null===(g=le.cell.obj)||void 0===g?void 0:g.label} | ${_e.length} structures`:`${_e.length} structures`}},5995:(tn,Ue,n)=>{"use strict";n.d(Ue,{$T:()=>m,Gu:()=>I});var e=n(467),o=n(9136),r=n(1832),t=n(1073),A=n(6763),y=n(6115),c=n(381),i=n(3182),v=n(8277),O=n(6600),b=n(190);const _="measurement-group",M="measurement-order-label",I={distanceUnitLabel:v.t.Text("\u212b",{isEssential:!0}),textColor:O.w.textColor},l=v.t.getDefaultValues(I);class m extends i.e{stateUpdated(){this.behaviors.state.next(this.state)}getGroup(){const s=r.QX.findTagInSubtree(this.plugin.state.data.tree,r.Cn.RootRef,_),C=this.plugin.state.data.build();return s?C.to(s):C.toRoot().group(t.f.Misc.CreateGroup,{label:"Measurements"},{tags:_})}setOptions(d){var s=this;return(0,e.A)(function*(){s.updateState({options:d})&&s.stateUpdated();const C=s.plugin.state.data.build();for(const h of s.state.distances)C.to(h).update(a=>{a.unitLabel=d.distanceUnitLabel,a.textColor=d.textColor});for(const h of s.state.labels)C.to(h).update(a=>{a.textColor=d.textColor});for(const h of s.state.angles)C.to(h).update(a=>{a.textColor=d.textColor});for(const h of s.state.dihedrals)C.to(h).update(a=>{a.textColor=d.textColor});0!==C.editInfo.count&&(yield A.a.State.Update(s.plugin,{state:s.plugin.state.data,tree:C,options:{doNotLogTiming:!0}}))})()}addDistance(d,s,C){var h=this;return(0,e.A)(function*(){const a=h.plugin.helpers.substructureParent.get(d.structure),S=h.plugin.helpers.substructureParent.get(s.structure);if(!a||!S)return;const D=[a.transform.ref];(0,y.Z2)(D,S.transform.ref);const f=h.getGroup().apply(t.f.Model.MultiStructureSelectionFromExpression,{selections:[{key:"a",groupId:"a",ref:a.transform.ref,expression:o.iZ.Loci.toExpression(d)},{key:"b",groupId:"b",ref:S.transform.ref,expression:o.iZ.Loci.toExpression(s)}],isTransitive:!0,label:"Distance"},{dependsOn:D,tags:C?.selectionTags}),p=f.apply(t.f.Representation.StructureSelectionsDistance3D,{customText:C?.customText||"",unitLabel:h.state.options.distanceUnitLabel,textColor:h.state.options.textColor,...C?.lineParams,...C?.labelParams,...C?.visualParams},{tags:C?.reprTags}),E=h.plugin.state.data;return yield A.a.State.Update(h.plugin,{state:E,tree:p,options:{doNotLogTiming:!0}}),{selection:f.selector,representation:p.selector}})()}addAngle(d,s,C,h){var a=this;return(0,e.A)(function*(){const S=a.plugin.helpers.substructureParent.get(d.structure),D=a.plugin.helpers.substructureParent.get(s.structure),R=a.plugin.helpers.substructureParent.get(C.structure);if(!S||!D||!R)return;const f=[S.transform.ref];(0,y.Z2)(f,D.transform.ref),(0,y.Z2)(f,R.transform.ref);const E=a.getGroup().apply(t.f.Model.MultiStructureSelectionFromExpression,{selections:[{key:"a",ref:S.transform.ref,expression:o.iZ.Loci.toExpression(d)},{key:"b",ref:D.transform.ref,expression:o.iZ.Loci.toExpression(s)},{key:"c",ref:R.transform.ref,expression:o.iZ.Loci.toExpression(C)}],isTransitive:!0,label:"Angle"},{dependsOn:f,tags:h?.selectionTags}),T=E.apply(t.f.Representation.StructureSelectionsAngle3D,{customText:h?.customText||"",textColor:a.state.options.textColor,...h?.lineParams,...h?.labelParams,...h?.visualParams},{tags:h?.reprTags}),L=a.plugin.state.data;return yield A.a.State.Update(a.plugin,{state:L,tree:T,options:{doNotLogTiming:!0}}),{selection:E.selector,representation:T.selector}})()}addDihedral(d,s,C,h,a){var S=this;return(0,e.A)(function*(){const D=S.plugin.helpers.substructureParent.get(d.structure),R=S.plugin.helpers.substructureParent.get(s.structure),f=S.plugin.helpers.substructureParent.get(C.structure),p=S.plugin.helpers.substructureParent.get(h.structure);if(!(D&&R&&f&&p))return;const E=[D.transform.ref];(0,y.Z2)(E,R.transform.ref),(0,y.Z2)(E,f.transform.ref),(0,y.Z2)(E,p.transform.ref);const L=S.getGroup().apply(t.f.Model.MultiStructureSelectionFromExpression,{selections:[{key:"a",ref:D.transform.ref,expression:o.iZ.Loci.toExpression(d)},{key:"b",ref:R.transform.ref,expression:o.iZ.Loci.toExpression(s)},{key:"c",ref:f.transform.ref,expression:o.iZ.Loci.toExpression(C)},{key:"d",ref:p.transform.ref,expression:o.iZ.Loci.toExpression(h)}],isTransitive:!0,label:"Dihedral"},{dependsOn:E,tags:a?.selectionTags}),w=L.apply(t.f.Representation.StructureSelectionsDihedral3D,{customText:a?.customText||"",textColor:S.state.options.textColor,...a?.lineParams,...a?.labelParams,...a?.visualParams},{tags:a?.reprTags}),Q=S.plugin.state.data;return yield A.a.State.Update(S.plugin,{state:Q,tree:w,options:{doNotLogTiming:!0}}),{selection:L.selector,representation:w.selector}})()}addLabel(d,s){var C=this;return(0,e.A)(function*(){const h=C.plugin.helpers.substructureParent.get(d.structure);if(!h)return;const a=[h.transform.ref],D=C.getGroup().apply(t.f.Model.MultiStructureSelectionFromExpression,{selections:[{key:"a",ref:h.transform.ref,expression:o.iZ.Loci.toExpression(d)}],isTransitive:!0,label:"Label"},{dependsOn:a,tags:s?.selectionTags}),R=D.apply(t.f.Representation.StructureSelectionsLabel3D,{textColor:C.state.options.textColor,...s?.labelParams,...s?.visualParams},{tags:s?.reprTags}),f=C.plugin.state.data;return yield A.a.State.Update(C.plugin,{state:f,tree:R,options:{doNotLogTiming:!0}}),{selection:D.selector,representation:R.selector}})()}addOrientation(d){var s=this;return(0,e.A)(function*(){const C=[],h=[];for(let f=0,p=d.length;f{s.inTransaction||d.behaviors.state.isAnimating.value||this.sync()}),d.behaviors.state.isAnimating.subscribe(s=>{!s&&!d.behaviors.state.isUpdating.value&&this.sync()})}}},9012:(tn,Ue,n)=>{"use strict";n.d(Ue,{L:()=>a});var e=n(1827),o=n(3182),r=n(381),t=n(1832);function y(){return{volumes:[],lazyVolumes:[],refs:new Map}}function c(S){return{kind:"volume",cell:S,version:S.transform.version,representations:[]}}function i(S){return{kind:"lazy-volume",cell:S,version:S.transform.version}}function v(S,D){return{kind:"volume-representation",cell:S,version:S.transform.version,volume:D}}function b(S,D,R,f,...p){const E=f(...p);R.push(E),S.hierarchy.refs.set(D.transform.ref,E);const T=S.oldHierarchy.refs.get(D.transform.ref);return T?T.version!==D.transform.version&&(S.changed=!0):(S.added.add(E.cell.transform.ref),S.changed=!0),E}function M(){}const I=[[function _(S,D){return(R,f)=>!D(f)&&S.is(R.obj)}(r.O.Volume.Data,S=>S.currentVolume),(S,D)=>{S.currentVolume=b(S,D,S.hierarchy.volumes,c,D)},S=>S.currentVolume=void 0],[S=>r.O.Volume.Lazy.is(S.obj),(S,D)=>{b(S,D,S.hierarchy.lazyVolumes,i,D)},M],[(S,D)=>!S.state.isGhost&&!!D.currentVolume&&r.O.Volume.Representation3D.is(S.obj),(S,D)=>(S.currentVolume&&b(S,D,S.currentVolume.representations,v,D,S.currentVolume),!1),M]];function l(S){if(!S||!S?.parent||!S.parent.cells.has(S.transform.ref))return!1;const{obj:D}=S;return!(!D||D===t.BM.Null||"ok"!==S.status&&"error"!==S.status)}function m(S){const{cell:D}=S;l(D)||(this.changed=!0)}function u(S){d(this,this.tree.transforms.get(S))}function d(S,D){const{state:R}=S,f=R.state.cells.get(D.ref);if(!l(f))return;let p,E=!1;for(const[L,w,Q]of I)if(L(f,R)){if(!1===w(R,f)){E=!0;break}p=Q;break}if(E)return;const T=S.tree.children.get(D.ref);T&&T.size&&T.forEach(u,S),p&&p(R)}var C=n(3442),h=n(1073);class a extends o.N{get dataState(){return this.plugin.state.data}get current(){return this.sync(!1),this.state.hierarchy}get selection(){return this.sync(!1),this.state.selection}sync(D){if(!D&&this.dataState.inUpdate)return;if(this.state.syncedTree===this.dataState.tree)return void(D&&!this.state.notified&&(this.state.notified=!0,this.behaviors.selection.next({hierarchy:this.state.hierarchy,volume:this.state.selection})));this.state.syncedTree=this.dataState.tree;const R=function A(S,D){const R=function O(S,D){return{state:S,oldHierarchy:D,hierarchy:y(),changed:!1,added:new Set}}(S,D||y());return function s(S,D){d({tree:S,state:D},S.root)}(S.tree,R),D&&D.refs.forEach(m,R),{hierarchy:R.hierarchy,added:R.added,changed:R.changed}}(this.plugin.state.data,this.current);if(!R.changed)return;const{hierarchy:f}=R;this.state.hierarchy=f,this.state.selection=this.state.selection&&f.refs.has(this.state.selection.cell.transform.ref)?f.refs.get(this.state.selection.cell.transform.ref):f.volumes[0],D?(this.state.notified=!0,this.behaviors.selection.next({hierarchy:f,volume:this.state.selection})):this.state.notified=!1}setCurrent(D){this.state.selection=D||this.state.hierarchy.volumes[0],this.behaviors.selection.next({hierarchy:this.state.hierarchy,volume:D||this.state.hierarchy.volumes[0]})}remove(D,R){if(0===D.length)return;const f=this.plugin.state.data.build();for(const p of D)f.delete("string"==typeof p?p:p.cell.transform.ref);return f.commit({canUndo:!!R&&"Remove"})}toggleVisibility(D,R){if(0===D.length)return;const f=void 0!==R?"show"!==R:!D[0].cell.state.isHidden;for(const p of D)(0,e.setSubtreeVisibility)(this.dataState,p.cell.transform.ref,f)}addRepresentation(D,R){var f;return this.dataState.build().to(D.cell).apply(h.f.Representation.VolumeRepresentation3D,(0,C.aK)(this.plugin,null===(f=D.cell.obj)||void 0===f?void 0:f.data,{type:R})).commit({canUndo:"Add Representation"})}constructor(D){super(),this.plugin=D,this.state={syncedTree:this.dataState.tree,notified:!1,hierarchy:y(),selection:void 0},this.behaviors={selection:this.ev.behavior({hierarchy:this.current,volume:this.selection})},this.subscribe(D.state.data.events.changed,R=>{R.inTransaction||D.behaviors.state.isAnimating.value||this.sync(!0)}),this.subscribe(D.behaviors.state.isAnimating,R=>{!R&&!D.behaviors.state.isUpdating.value&&this.sync(!0)})}}(a||(a={})).getRepresentationTypes=function D(R,f){var p,E;return null!==(p=f?.cell.obj)&&void 0!==p&&p.data?R.representation.volume.registry.getApplicableTypes(null===(E=f.cell.obj)||void 0===E?void 0:E.data):R.representation.volume.registry.types}},381:(tn,Ue,n)=>{"use strict";n.d(Ue,{H:()=>r,O:()=>o});var o,r,t,e=n(1832);!function(t){function c(m){return t.Create({...m,typeClass:"Representation3D"})}t.Create=e.BM.factory(),t.isRepresentation3D=function A(m){return!!m&&"Representation3D"===m.type.typeClass},t.isBehavior=function y(m){return!!m&&"Behavior"===m.type.typeClass},t.CreateRepresentation3D=c,t.CreateBehavior=function i(m){return t.Create({...m,typeClass:"Behavior"})};class v extends(t.Create({name:"Root",typeClass:"Root"})){}t.Root=v;class O extends(t.Create({name:"Group",typeClass:"Group"})){}let b,_,M,I,l;t.Group=O,function(m){class u extends(t.Create({name:"String Data",typeClass:"Data"})){}m.String=u;class d extends(t.Create({name:"Binary Data",typeClass:"Data"})){}m.Binary=d;class s extends(t.Create({name:"Data Blob",typeClass:"Data"})){}m.Blob=s}(b=t.Data||(t.Data={})),function(m){class u extends(t.Create({name:"JSON Data",typeClass:"Data"})){}m.Json=u;class d extends(t.Create({name:"CIF File",typeClass:"Data"})){}m.Cif=d;class s extends(t.Create({name:"Cube File",typeClass:"Data"})){}m.Cube=s;class C extends(t.Create({name:"PSF File",typeClass:"Data"})){}m.Psf=C;class h extends(t.Create({name:"PRMTOP File",typeClass:"Data"})){}m.Prmtop=h;class a extends(t.Create({name:"TOP File",typeClass:"Data"})){}m.Top=a;class S extends(t.Create({name:"PLY File",typeClass:"Data"})){}m.Ply=S;class D extends(t.Create({name:"CCP4/MRC/MAP File",typeClass:"Data"})){}m.Ccp4=D;class R extends(t.Create({name:"DSN6/BRIX File",typeClass:"Data"})){}m.Dsn6=R;class f extends(t.Create({name:"DX File",typeClass:"Data"})){}m.Dx=f;class p extends(t.Create({name:"Format Blob",typeClass:"Data"})){}m.Blob=p}(_=t.Format||(t.Format={})),function(m){class u extends(t.Create({name:"Coordinates",typeClass:"Object"})){}m.Coordinates=u;class d extends(t.Create({name:"Topology",typeClass:"Object"})){}m.Topology=d;class s extends(t.Create({name:"Model",typeClass:"Object"})){}m.Model=s;class C extends(t.Create({name:"Trajectory",typeClass:"Object"})){}m.Trajectory=C;class h extends(t.Create({name:"Structure",typeClass:"Object"})){}m.Structure=h,function(a){class S extends(c({name:"Structure 3D"})){}a.Representation3D=S;class D extends(t.Create({name:"Structure 3D State",typeClass:"Object"})){}a.Representation3DState=D;class R extends(t.Create({name:"Selections",typeClass:"Object"})){}a.Selections=R}(h=m.Structure||(m.Structure={}))}(M=t.Molecule||(t.Molecule={})),function(m){class u extends(t.Create({name:"Volume",typeClass:"Object"})){}m.Data=u;class d extends(t.Create({name:"Lazy Volume",typeClass:"Object"})){}m.Lazy=d;class s extends(c({name:"Volume 3D"})){}m.Representation3D=s}(I=t.Volume||(t.Volume={})),function(m){class u extends(t.Create({name:"Shape Provider",typeClass:"Object"})){}m.Provider=u;class d extends(c({name:"Shape 3D"})){}m.Representation3D=d}(l=t.Shape||(t.Shape={}))}(o||(o={})),(t=r||(r={})).CreateBuiltIn=e.xE.factory("ms-plugin"),t.BuiltIn=e.xE.builderFactory("ms-plugin")},1073:(tn,Ue,n)=>{"use strict";n.d(Ue,{f:()=>ye});var e={};n.r(e),n.d(e,{CreateGroup:()=>i});var o={};n.r(o),n.d(o,{AssignColorVolume:()=>J,VolumeFromCcp4:()=>V,VolumeFromCube:()=>N,VolumeFromDensityServerCif:()=>H,VolumeFromDsn6:()=>U,VolumeFromDx:()=>k,VolumeFromSegmentationCif:()=>$,VolumeTransform:()=>W});var r=n(6990),t=n(1832),A=n(9909),y=n(8277),c=n(381);const i=c.H.BuiltIn({name:"create-group",display:{name:"Group"},from:[],to:c.O.Group,params:{label:y.t.Text("Group"),description:y.t.Optional(y.t.Text(""))}})({apply:({params:j})=>new c.O.Group({},j),update:({oldParams:j,newParams:Z,b:q})=>(0,A.f8)(j,Z)?t.xE.UpdateResult.Unchanged:(q.label=Z.label,q.description=Z.description,t.xE.UpdateResult.Updated)});var S,j,v=n(1855),O=n(467),b=n(5165),_=n(4369),M=n(4824),I=n(5384),l=n(4490),m=n(5732),u=n(702),d=n(6115),s=n(1692);(j=S||(S={})).is=function Z(Y){return"ccp4"===Y?.kind},j.create=function q(Y){return{kind:"ccp4",name:Y.name,data:Y}};var f,D=n(4625);!function(j){j.is=function Z(Y){return"dsn6"===Y?.kind},j.create=function q(Y){return{kind:"dsn6",name:Y.name,data:Y}}}(f||(f={}));var T,p=n(3420);!function(j){j.is=function Z(Y){return"dx"===Y?.kind},j.create=function q(Y){return{kind:"dx",name:Y.name,data:Y}}}(T||(T={}));var G,L=n(6853),w=n(9359);!function(j){j.is=function Z(Y){return"segcif"===Y?.kind},j.create=function q(Y){return{kind:"segcif",name:Y._name,data:Y}}}(G||(G={}));const V=c.H.BuiltIn({name:"volume-from-ccp4",display:{name:"Volume from CCP4/MRC/MAP",description:"Create Volume from CCP4/MRC/MAP data"},from:c.O.Format.Ccp4,to:c.O.Volume.Data,params:j=>({voxelSize:y.t.Vec3(_.eB.create(1,1,1)),offset:y.t.Vec3(_.eB.create(0,0,0)),entryId:y.t.Text("")})})({apply:({a:j,params:Z})=>M.YZ.create("Create volume from CCP4/MRC/MAP",function(){var q=(0,O.A)(function*(Y){const ee=yield function a(j,Z){return M.YZ.create("Create Volume",function(){var q=(0,O.A)(function*(Y){const{header:ee,values:g}=j,_e=_.eB.create(ee.xLength,ee.yLength,ee.zLength);Z&&Z.voxelSize&&_.eB.mul(_e,_e,Z.voxelSize);const xe=_.eB.create((0,l.pu)(ee.alpha),(0,l.pu)(ee.beta),(0,l.pu)(ee.gamma)),Ae=I.O8.create((ee.ISPG>65536?0:ee.ISPG)||"P 1",_e,xe),Be=_.eB.create(ee.MAPC-1,ee.MAPR-1,ee.MAPS-1),Ce=_.qY.convertToCanonicalAxisIndicesFastToSlow(Be),Re=[ee.NX,ee.NY,ee.NZ],ke=Ce([ee.NC,ee.NR,ee.NS]),we=function C(j){return 0===j.originX&&0===j.originY&&0===j.originZ?_.eB.create(j.NCSTART,j.NRSTART,j.NSSTART):_.eB.create(j.originX/(j.xLength/j.NX),j.originY/(j.yLength/j.NY),j.originZ/(j.zLength/j.NZ))}(ee);Z?.offset&&_.eB.add(we,we,Z.offset);const Oe=Ce(we),Se=_.eB.create(Oe[0]/Re[0],Oe[1]/Re[1],Oe[2]/Re[2]),Ve=_.eB.create(ke[0]/Re[0],ke[1]/Re[1],ke[2]/Re[2]),Ne=_.qY.Space(ke,_.qY.invertAxisOrder(Be),function h(j){const Z=(0,m.q7)(j);switch(Z){case u.RW.Float32:return Float32Array;case u.RW.Int8:return Int8Array;case u.RW.Int16:return Int16Array;case u.RW.Uint16:return Uint16Array}throw Error(`${Z} is not a supported value format.`)}(ee)),K=_.qY.create(Ne,_.qY.Data1(g)),ne=0===ee.AMIN&&0===ee.AMAX&&0===ee.AMEAN&&0===ee.ARMS;return{label:Z?.label,entryId:Z?.entryId,grid:{transform:{kind:"spacegroup",cell:Ae,fractionalBox:I.DJ.create(Se,_.eB.add(_.eB.zero(),Se,Ve))},cells:K,stats:{min:isNaN(ee.AMIN)||ne?(0,d.GP)(g):ee.AMIN,max:isNaN(ee.AMAX)||ne?(0,d._M)(g):ee.AMAX,mean:isNaN(ee.AMEAN)||ne?(0,d.VR)(g):ee.AMEAN,sigma:isNaN(ee.ARMS)||0===ee.ARMS?(0,d.C2)(g):ee.ARMS}},sourceData:S.create(j),customProperties:new s.v,_propertyData:Object.create(null)}});return function(Y){return q.apply(this,arguments)}}())}(j.data,{...Z,label:j.data.name||j.label}).runInContext(Y);return new c.O.Volume.Data(ee,{label:ee.label||"Volume",description:`Volume ${j.data.header.NX}\xd7${j.data.header.NX}\xd7${j.data.header.NX}`})});return function(Y){return q.apply(this,arguments)}}()),dispose({b:j}){j?.data.customProperties.dispose()}}),U=c.H.BuiltIn({name:"volume-from-dsn6",display:{name:"Volume from DSN6/BRIX",description:"Create Volume from DSN6/BRIX data"},from:c.O.Format.Dsn6,to:c.O.Volume.Data,params:j=>({voxelSize:y.t.Vec3(_.eB.create(1,1,1)),entryId:y.t.Text("")})})({apply:({a:j,params:Z})=>M.YZ.create("Create volume from DSN6/BRIX",function(){var q=(0,O.A)(function*(Y){const ee=yield function R(j,Z){return M.YZ.create("Create Volume",function(){var q=(0,O.A)(function*(Y){const{header:ee,values:g}=j,_e=_.eB.create(ee.xlen,ee.ylen,ee.zlen);Z&&Z.voxelSize&&_.eB.mul(_e,_e,Z.voxelSize);const xe=_.eB.create((0,l.pu)(ee.alpha),(0,l.pu)(ee.beta),(0,l.pu)(ee.gamma)),le=I.O8.create("P 1",_e,xe),Ae=[ee.xRate,ee.yRate,ee.zRate],Be=[ee.xExtent,ee.yExtent,ee.zExtent],Ce=[ee.xStart,ee.yStart,ee.zStart],Re=_.eB.create(Ce[0]/Ae[0],Ce[1]/Ae[1],Ce[2]/Ae[2]),ke=_.eB.create(Be[0]/Ae[0],Be[1]/Ae[1],Be[2]/Ae[2]),we=_.qY.Space(Be,[0,1,2],Float32Array),Oe=_.qY.create(we,_.qY.Data1(g));return{label:Z?.label,entryId:Z?.entryId,grid:{transform:{kind:"spacegroup",cell:le,fractionalBox:I.DJ.create(Re,_.eB.add(_.eB.zero(),Re,ke))},cells:Oe,stats:{min:(0,d.GP)(g),max:(0,d._M)(g),mean:(0,d.VR)(g),sigma:void 0!==ee.sigma?ee.sigma:(0,d.C2)(g)}},sourceData:f.create(j),customProperties:new s.v,_propertyData:Object.create(null)}});return function(Y){return q.apply(this,arguments)}}())}(j.data,{...Z,label:j.data.name||j.label}).runInContext(Y);return new c.O.Volume.Data(ee,{label:ee.label||"Volume",description:`Volume ${j.data.header.xExtent}\xd7${j.data.header.yExtent}\xd7${j.data.header.zExtent}`})});return function(Y){return q.apply(this,arguments)}}()),dispose({b:j}){j?.data.customProperties.dispose()}}),N=c.H.BuiltIn({name:"volume-from-cube",display:{name:"Volume from Cube",description:"Create Volume from Cube data"},from:c.O.Format.Cube,to:c.O.Volume.Data,params:j=>({dataIndex:j?y.t.Select(0,j.data.header.dataSetIds.map((q,Y)=>[Y,`${q}`])):y.t.Numeric(0),entryId:y.t.Text("")})})({apply:({a:j,params:Z})=>M.YZ.create("Create volume from Cube",function(){var q=(0,O.A)(function*(Y){const ee=yield(0,p.C)(j.data,{...Z,label:j.data.name||j.label}).runInContext(Y);return new c.O.Volume.Data(ee,{label:ee.label||"Volume",description:`Volume ${j.data.header.dim[0]}\xd7${j.data.header.dim[1]}\xd7${j.data.header.dim[2]}`})});return function(Y){return q.apply(this,arguments)}}()),dispose({b:j}){j?.data.customProperties.dispose()}}),k=c.H.BuiltIn({name:"volume-from-dx",display:{name:"Parse DX",description:"Create volume from DX data."},from:c.O.Format.Dx,to:c.O.Volume.Data})({apply:({a:j})=>M.YZ.create("Parse DX",function(){var Z=(0,O.A)(function*(q){const Y=yield function E(j,Z){return M.YZ.create("Create Volume",(0,O.A)(function*(){const{header:q,values:Y}=j,ee=_.qY.Space(q.dim,[0,1,2],Float64Array),g=_.qY.create(ee,_.qY.Data1(Y)),_e=_.$I.fromTranslation((0,_.$I)(),q.min),xe=_.$I.fromScaling((0,_.$I)(),q.h);return _.$I.mul(_e,_e,xe),{label:Z?.label,entryId:Z?.entryId,grid:{transform:{kind:"matrix",matrix:_e},cells:g,stats:{min:(0,d.GP)(Y),max:(0,d._M)(Y),mean:(0,d.VR)(Y),sigma:(0,d.C2)(Y)}},sourceData:T.create(j),customProperties:new s.v,_propertyData:Object.create(null)}}))}(j.data,{label:j.data.name||j.label}).runInContext(q);return new c.O.Volume.Data(Y,{label:Y.label||"Volume",description:`Volume ${j.data.header.dim[0]}\xd7${j.data.header.dim[1]}\xd7${j.data.header.dim[2]}`})});return function(q){return Z.apply(this,arguments)}}()),dispose({b:j}){j?.data.customProperties.dispose()}}),H=c.H.BuiltIn({name:"volume-from-density-server-cif",display:{name:"Volume from density-server CIF",description:"Identify and create all separate models in the specified CIF data block"},from:c.O.Format.Cif,to:c.O.Volume.Data,params(j){if(!j)return{blockHeader:y.t.Optional(y.t.Text(void 0,{description:"Header of the block to parse. If none is specifed, the 1st data block in the file is used."})),entryId:y.t.Text("")};const Z=j.data.blocks.slice(1);return{blockHeader:y.t.Optional(y.t.Select(Z[0]&&Z[0].header,Z.map(q=>[q.header,q.header]),{description:"Header of the block to parse"})),entryId:y.t.Text("")}}})({isApplicable:j=>j.data.blocks.length>0,apply:({a:j,params:Z})=>M.YZ.create("Parse density-server CIF",function(){var q=(0,O.A)(function*(Y){var ee;const g=Z.blockHeader||j.data.blocks[1].header,_e=j.data.blocks.find(ke=>ke.header===g);if(!_e)throw new Error(`Data block '${[g]}' not found.`);const xe=b.f$.schema.densityServer(_e),le=yield(0,D.G)(xe,{entryId:Z.entryId}).runInContext(Y),[Ae,Be,Ce]=le.grid.cells.space.dimensions,Re={label:null!==(ee=Z.entryId)&&void 0!==ee?ee:xe.volume_data_3d_info.name.value(0),description:`Volume ${Ae}\xd7${Be}\xd7${Ce}`};return new c.O.Volume.Data(le,Re)});return function(Y){return q.apply(this,arguments)}}()),dispose({b:j}){j?.data.customProperties.dispose()}}),$=c.H.BuiltIn({name:"volume-from-segmentation-cif",display:{name:"Volume from Segmentation CIF"},from:c.O.Format.Cif,to:c.O.Volume.Data,params(j){const Z=j?.data.blocks.slice(1);return{blockHeader:y.t.Optional(Z?y.t.Select(Z[0]&&Z[0].header,Z.map(Y=>[Y.header,Y.header]),{description:"Header of the block to parse"}):y.t.Text(void 0,{description:"Header of the block to parse. If none is specifed, the 1st data block in the file is used."})),segmentLabels:y.t.ObjectList({id:y.t.Numeric(-1),label:y.t.Text("")},Y=>`${Y.id} = ${Y.label}`,{description:"Mapping of segment IDs to segment labels"}),ownerId:y.t.Text("",{isHidden:!0,description:"Reference to the object which manages this volume"})}}})({isApplicable:j=>j.data.blocks.length>0,apply:({a:j,params:Z})=>M.YZ.create("Parse segmentation CIF",function(){var q=(0,O.A)(function*(Y){const ee=Z.blockHeader||j.data.blocks[1].header,g=j.data.blocks.find(ke=>ke.header===ee);if(!g)throw new Error(`Data block '${[ee]}' not found.`);const _e=b.f$.schema.segmentation(g),xe={};for(const ke of Z.segmentLabels)xe[ke.id]=ke.label;const le=yield function Q(j,Z){return M.YZ.create("Create Segmentation Volume",function(){var q=(0,O.A)(function*(Y){var ee;const{volume_data_3d_info:g,segmentation_data_3d:_e}=j,xe=I.O8.create(g.spacegroup_number.value(0),_.eB.ofArray(g.spacegroup_cell_size.value(0)),_.eB.scale((0,_.eB)(),_.eB.ofArray(g.spacegroup_cell_angles.value(0)),Math.PI/180)),le=g.axis_order.value(0),Ae=_.qY.convertToCanonicalAxisIndicesFastToSlow(le),Be=Ae(g.sample_count.value(0)),Ce=_.qY.Space(Be,_.qY.invertAxisOrder(le),Float32Array),Re=_.qY.create(Ce,_.qY.Data1(_e.values.toArray({array:Float32Array}))),ke=_.eB.ofArray(Ae(g.origin.value(0))),we=_.eB.ofArray(Ae(g.dimensions.value(0))),Oe={label:Z?.label,entryId:void 0,grid:{transform:{kind:"spacegroup",cell:xe,fractionalBox:I.DJ.create(ke,_.eB.add((0,_.eB)(),ke,we))},cells:Re,stats:{min:0,max:1,mean:0,sigma:1}},sourceData:G.create(j),customProperties:new s.v,_propertyData:{ownerId:Z?.ownerId}};L.f.PickingGranularity.set(Oe,"object");const Se=new Map,Ve=new Map,{segment_id:Ne,set_id:K}=j.segmentation_data_table;for(let Ie=0,Le=Ne.rowCount;Ie{Ie.forEach(nt=>{Se.has(nt)||Se.set(nt,new Set),Se.get(nt).add(Le)})});const ne=[0,0,0],be=Re.space.getCoords,Te=Re.data,[ie,ue,re]=Oe.grid.cells.space.dimensions,ve=ie-1,ce=ue-1,se=re-1,ae={};Ve.forEach((Ie,Le)=>{ae[Le]=[ve,ce,se,-1,-1,-1]});for(let Ie=0,Le=Te.length;Ieje[3]&&(je[3]=ne[0]),ne[1]>je[4]&&(je[4]=ne[1]),ne[2]>je[5]&&(je[5]=ne[2])}const ge={};return Se.forEach((Ie,Le)=>{ge[Le]=I.DJ.create(_.eB.create(ve,ce,se),_.eB.create(-1,-1,-1))}),(0,w.IF)(ae,(Ie,Le)=>{Ve.get(parseInt(Le)).forEach(nt=>{const je=ge[nt];Ie[0]je.max[0]&&(je.max[0]=Ie[3]),Ie[4]>je.max[1]&&(je.max[1]=Ie[4]),Ie[5]>je.max[2]&&(je.max[2]=Ie[5])})}),L.f.Segmentation.set(Oe,{segments:Se,sets:Ve,bounds:ge,labels:null!==(ee=Z?.segmentLabels)&&void 0!==ee?ee:{}}),Oe});return function(Y){return q.apply(this,arguments)}}())}(_e,{segmentLabels:xe,ownerId:Z.ownerId}).runInContext(Y),[Ae,Be,Ce]=le.grid.cells.space.dimensions,Re={label:_e.volume_data_3d_info.name.value(0),description:`Segmentation ${Ae}\xd7${Be}\xd7${Ce}`};return new c.O.Volume.Data(le,Re)});return function(Y){return q.apply(this,arguments)}}()),dispose({b:j}){j?.data.customProperties.dispose()}}),J=c.H.BuiltIn({name:"assign-color-volume",display:{name:"Assign Color Volume",description:"Assigns another volume to be available for coloring."},from:c.O.Volume.Data,to:c.O.Volume.Data,isDecorator:!0,params(j,Z){if(!j)return{ref:y.t.Text()};const q=Z.state.data.select(t.QX.Generators.root.subtree().ofType(c.O.Volume.Data).filter(Y=>{var ee;return!(!Y.obj||null!==(ee=Y.obj)&&void 0!==ee&&ee.data.colorVolume||Y.obj===j)}));return 0===q.length?{ref:y.t.Text("",{isHidden:!0})}:{ref:y.t.Select(q[0].transform.ref,q.map(Y=>[Y.transform.ref,Y.obj.label]))}}})({apply:({a:j,params:Z,dependencies:q})=>M.YZ.create("Assign Color Volume",function(){var Y=(0,O.A)(function*(ee){if(!q||!q[Z.ref])throw new Error("Dependency not available.");const _e={...j.data,colorVolume:q[Z.ref].data};return new c.O.Volume.Data(_e,{label:j.label,description:"Volume + Colors"})});return function(ee){return Y.apply(this,arguments)}}())}),W=c.H.BuiltIn({name:"volume-transform",display:{name:"Transform Volume"},isDecorator:!0,from:c.O.Volume.Data,to:c.O.Volume.Data,params:{transform:y.t.MappedStatic("matrix",{matrix:y.t.Group({data:y.t.Mat4(_.$I.identity()),transpose:y.t.Boolean(!1)},{isFlat:!0})},{label:"Kind"})}})({canAutoUpdate:({newParams:j})=>"matrix"!==j.transform.name,apply({a:j,params:Z}){const q=(0,_.$I)();let Y={...j.data.grid.transform};_.$I.copy(q,Z.transform.params.data),Z.transform.params.transpose&&_.$I.transpose(q,q);const ee="matrix"===j.data.grid.transform.kind?j.data.grid.transform.matrix:L.x.getGridToCartesianTransform(j.data.grid);Y={kind:"matrix",matrix:_.$I.mul((0,_.$I)(),q,ee)};const g={...j.data,grid:{...j.data.grid,transform:Y}};return new c.O.Volume.Data(g,{label:j.label,description:`${j.description} [Transformed]`})}}),ye={Data:r,Misc:e,Model:v,Volume:o,Representation:n(8010),Shape:n(9646)}},6990:(tn,Ue,n)=>{"use strict";n.r(Ue),n.d(Ue,{Download:()=>Vt,DownloadBlob:()=>Wt,ImportJson:()=>Or,ImportString:()=>Ir,LazyVolume:()=>To,ParseBlob:()=>kt,ParseCcp4:()=>Pr,ParseCif:()=>Ot,ParseCube:()=>An,ParseDsn6:()=>or,ParseDx:()=>Nr,ParseJson:()=>Jr,ParsePly:()=>Dr,ParsePrmtop:()=>On,ParsePsf:()=>jn,ParseTop:()=>fr,RawData:()=>yn,ReadFile:()=>Zt});var e=n(467),o=n(5732),r=n(5165),t=n(4824),A=n(355),y=n(1009),c=n(1241);const i=512;function v(un){return{xStart:parseInt(un.substr(10,5)),yStart:parseInt(un.substr(15,5)),zStart:parseInt(un.substr(20,5)),xExtent:parseInt(un.substr(32,5)),yExtent:parseInt(un.substr(38,5)),zExtent:parseInt(un.substr(42,5)),xRate:parseInt(un.substr(52,5)),yRate:parseInt(un.substr(58,5)),zRate:parseInt(un.substr(62,5)),xlen:parseFloat(un.substr(73,10)),ylen:parseFloat(un.substr(83,10)),zlen:parseFloat(un.substr(93,10)),alpha:parseFloat(un.substr(103,10)),beta:parseFloat(un.substr(113,10)),gamma:parseFloat(un.substr(123,10)),divisor:parseFloat(un.substr(138,12)),summand:parseInt(un.substr(155,8)),sigma:parseFloat(un.substr(170,12))}}function O(un,ct){const dt=ct?cn=>un.readInt16LE(2*cn):cn=>un.readInt16BE(2*cn),Yt=1/dt(17);return{xStart:dt(0),yStart:dt(1),zStart:dt(2),xExtent:dt(3),yExtent:dt(4),zExtent:dt(5),xRate:dt(6),yRate:dt(7),zRate:dt(8),xlen:dt(9)*Yt,ylen:dt(10)*Yt,zlen:dt(11)*Yt,alpha:dt(12)*Yt,beta:dt(13)*Yt,gamma:dt(14)*Yt,divisor:dt(15)/100,summand:dt(16),sigma:void 0}}function b(un){const{xExtent:ct,yExtent:dt,zExtent:Yt}=un;return{xBlocks:Math.ceil(ct/8),yBlocks:Math.ceil(dt/8),zBlocks:Math.ceil(Yt/8)}}function M(){return(M=(0,e.A)(function*(un){const{buffer:ct}=yield un.readBuffer(0,i),dt=String.fromCharCode.apply(null,ct),Yt=dt.startsWith(":-)"),cn=Yt||100===ct.readInt16LE(36);return{header:Yt?v(dt):O(ct,cn),littleEndian:cn}})).apply(this,arguments)}function l(){return(l=(0,e.A)(function*(un,ct,dt,Yt){Yt||c.N.flipByteOrderInPlace2(ct.buffer);const{divisor:cn,summand:xn,xExtent:Rn,yExtent:er,zExtent:ir}=un,{xBlocks:Yn,yBlocks:br,zBlocks:vr}=b(un);let Hr=0;for(let Mr=0;Mrbr.get(vr)})}function V(un,ct){const{elements:dt,tokenizer:Yt}=un,{count:cn,property:xn}=ct,Rn=R.tM.create(Yt.data,2*cn*3),er=new Uint32Array(cn+1);let ir=0;for(let vr=0,Hr=cn;vr{const Hr=er[vr]+1,Mr=br.value(Hr-1);for(let Fr=Hr,Sr=Hr+Mr;FrYt.get(cn)}}(Yt,cn.map(ir=>ir.name),xn);return A.H.success(er)})).apply(this,arguments)}const{readLine:H,skipWhitespace:$,eatValue:J,eatLine:W,markStart:te}=R._F,de=/\s+/,ye=/(^\*|REMARK)*/;function Z(un,ct){return q.apply(this,arguments)}function q(){return(q=(0,e.A)(function*(un,ct){const{tokenizer:dt}=un,Yt=R.tM.create(dt.data,2*ct),cn=R.tM.create(dt.data,2*ct),xn=R.tM.create(dt.data,2*ct),Rn=R.tM.create(dt.data,2*ct),er=R.tM.create(dt.data,2*ct),ir=R.tM.create(dt.data,2*ct),Yn=R.tM.create(dt.data,2*ct),br=R.tM.create(dt.data,2*ct),{position:vr}=dt,Hr=H(dt).trim();dt.position=vr;const Mr=7===Hr.split(de).length,Fr=Mr?6:8,{length:Sr}=dt;let Ur=0;return yield(0,t.yB)(un.runtimeCtx,1e5,void 0,Ro=>{const ro=Math.min(ct-Ur,Ro);for(let po=0;poRo.update({message:"Parsing...",current:dt.position,max:Sr})),{count:ct,atomId:(0,p.do)(Yt)(f.VP.Schema.int),segmentName:Mr?(0,p.do)(xn)(f.VP.Schema.str):(0,p.do)(cn)(f.VP.Schema.str),residueId:(0,p.do)(xn)(f.VP.Schema.int),residueName:Mr?(0,p.do)(xn)(f.VP.Schema.str):(0,p.do)(Rn)(f.VP.Schema.str),atomName:(0,p.do)(er)(f.VP.Schema.str),atomType:(0,p.do)(ir)(f.VP.Schema.str),charge:(0,p.do)(Yn)(f.VP.Schema.float),mass:(0,p.do)(br)(f.VP.Schema.float)}})).apply(this,arguments)}function Y(un,ct){return ee.apply(this,arguments)}function ee(){return(ee=(0,e.A)(function*(un,ct){const{tokenizer:dt}=un,Yt=R.tM.create(dt.data,2*ct),cn=R.tM.create(dt.data,2*ct),{length:xn}=dt;let Rn=0;return yield(0,t.yB)(un.runtimeCtx,10,void 0,er=>{const ir=Math.min(ct-Rn,er);for(let Yn=0;Yner.update({message:"Parsing...",current:dt.position,max:xn})),{count:ct,atomIdA:(0,p.do)(Yt)(f.VP.Schema.int),atomIdB:(0,p.do)(cn)(f.VP.Schema.int)}})).apply(this,arguments)}function g(un,ct){const dt=[];for(let Yt=0;Yt{const so=+ct[ro].trim().split(/\s+/g)[po];return Number.isNaN(so)?0:so},Yt=ro=>{const po=dt(ro+2,0),so=Se;return[Math.abs(po),we.eB.create(dt(ro+2,1)*so,dt(ro+2,2)*so,dt(ro+2,3)*so),po]},cn=ct[0].trim(),xn=ct[1].trim(),[Rn,er,ir]=Yt(0),[Yn,br]=Yt(1),[vr,Hr]=Yt(2),[Mr,Fr]=Yt(3),Sr=function Ne(un,ct,dt){const Yt=new Int32Array(ct),cn=new Float64Array(ct),xn=new Float32Array(ct),Rn=new Float32Array(ct),er=new Float32Array(ct);for(let ir=0;ir=0){let ro=dt(2,4);0===ro&&(ro=1);for(let po=0;po{const Yn=Math.min(Yt,Rn+er);for(let br=Rn;brer.update({current:Math.min(Yn,Yt),max:Yt}))}(Yt,cn,xn);return A.H.success({header:xn,atoms:Rn,values:er,name:ct})});return function(Yt){return dt.apply(this,arguments)}}())}var be=n(275);function Te(un){const ct={h:(0,we.eB)()};let dt=0,Yt=0;const cn=/\s+/g;for(;;){const xn=R._F.readLine(un);let Rn;if(xn.startsWith("object 1"))Rn=xn.split(cn),ct.dim=we.eB.create(parseInt(Rn[5]),parseInt(Rn[6]),parseInt(Rn[7]));else if(xn.startsWith("origin"))Rn=xn.split(cn),ct.min=we.eB.create(parseFloat(Rn[1]),parseFloat(Rn[2]),parseFloat(Rn[3]));else if(xn.startsWith("delta"))Rn=xn.split(cn),0===Yt?ct.h[0]=parseFloat(Rn[1]):1===Yt?ct.h[1]=parseFloat(Rn[2]):2===Yt&&(ct.h[2]=parseFloat(Rn[3])),Yt+=1;else if(xn.startsWith("object 3")){dt+=xn.length+1;break}dt+=xn.length+1}return{header:ct,headerByteCount:dt}}function re(){return(re=(0,e.A)(function*(un,ct,dt){yield un.update("Reading header...");const Yt=(0,R._F)(ct),{header:cn}=Te(Yt);yield un.update("Reading values...");const xn=yield function ie(un,ct,dt){const Yt=dt.dim[0]*dt.dim[1]*dt.dim[2],xn=new Float64Array(Yt);let Rn=0;return(0,t.yB)(un,1e6,xn,(er,ir)=>{const Yn=Math.min(Yt,Rn+er);for(let br=Rn;brer.update({current:Math.min(Yn,Yt),max:Yt}))}(un,Yt,cn);return A.H.success({header:cn,values:xn,name:dt})})).apply(this,arguments)}function ce(){return(ce=(0,e.A)(function*(un,ct,dt){yield un.update("Reading header...");const Yt=(0,be.ss)(ct,0,1e3),cn=(0,R._F)(Yt),{header:xn,headerByteCount:Rn}=Te(cn);yield un.update("Reading values...");const er=xn.dim[0]*xn.dim[1]*xn.dim[2],ir=new DataView(ct.buffer,ct.byteOffset+Rn),Yn=new Float64Array(er);for(let br=0;br{dt[cn]=0});let Yt=0;for(;ct.tokenEnd1e5&&ct.shouldUpdate&&(xn=dt.position,yield ct.update({current:dt.position,max:dt.length}));const Rn=nt(Yt.tokenizer).trim();if(Rn.startsWith("%VERSION"))cn.version=Rn.substring(8).trim();else if(Rn.startsWith("%FLAG")){const er=Rn.substring(5).trim();if(!nt(Yt.tokenizer).trim().startsWith("%FORMAT"))throw new Error("expected %FORMAT");if("TITLE"===er)cn.title=en(Yt);else if("POINTERS"===er)cn.pointers=Bt(Yt);else if("ATOM_NAME"===er){const Yn=pn(Yt,cn.pointers.NATOM,20,4);cn.atomName=(0,p.do)(Yn)(f.VP.Schema.str)}else if("CHARGE"===er){const Yn=pn(Yt,cn.pointers.NATOM,5,16);cn.charge=(0,p.do)(Yn)(f.VP.Schema.float)}else if("MASS"===er){const Yn=pn(Yt,cn.pointers.NATOM,5,16);cn.mass=(0,p.do)(Yn)(f.VP.Schema.float)}else if("RESIDUE_LABEL"===er){const Yn=pn(Yt,cn.pointers.NRES,20,4);cn.residueLabel=(0,p.do)(Yn)(f.VP.Schema.str)}else if("RESIDUE_POINTER"===er){const Yn=pn(Yt,cn.pointers.NRES,10,8);cn.residuePointer=(0,p.do)(Yn)(f.VP.Schema.int)}else if("BONDS_INC_HYDROGEN"===er){const Yn=pn(Yt,3*cn.pointers.NBONH,10,8);cn.bondsIncHydrogen=(0,p.do)(Yn)(f.VP.Schema.int)}else if("BONDS_WITHOUT_HYDROGEN"===er){const Yn=pn(Yt,3*cn.pointers.NBONA,10,8);cn.bondsWithoutHydrogen=(0,p.do)(Yn)(f.VP.Schema.int)}else if("RADII"===er){const Yn=pn(Yt,cn.pointers.NATOM,5,16);cn.radii=(0,p.do)(Yn)(f.VP.Schema.float)}else for(;dt.tokenEnd=ct.length));){const cn=ct.data[ct.position];if("["===cn)break;if(";"!==cn&&"*"!==cn){for(let xn=0;xn<2;++xn)switch(gt(ct),yt(ct),At(ct),xn){case 0:R.tM.add(dt,ct.tokenStart,ct.tokenEnd);break;case 1:R.tM.add(Yt,ct.tokenStart,ct.tokenEnd)}Gt(ct),yt(ct)}else sn(ct)}return f.XI.ofColumns(ut,{compound:(0,p.do)(dt)(f.VP.Schema.str),molCount:(0,p.do)(Yt)(f.VP.Schema.int)})}function Ct(){return(Ct=(0,e.A)(function*(un,ct){const dt=(0,R._F)(un),Yt=function rn(un,ct){return{tokenizer:un,runtimeCtx:ct}}(dt,ct),cn=Object.create(null);let xn=0;cn.compounds={};let Rn={},er="";function ir(){er&&Rn.atoms&&(cn.compounds[er]=Rn,Rn={},er="")}for(;dt.tokenEnd1e5&&ct.shouldUpdate&&(xn=dt.position,yield ct.update({current:dt.position,max:dt.length}));const Yn=Kt(Yt.tokenizer).trim();if(Yn&&"*"!==Yn[0]&&";"!==Yn[0]){if(Yn.startsWith("#include"))throw new Error("#include statements not allowed");if(Yn.startsWith("[")){const br=Yn.match(tt);if(null===br)throw new Error("expected field name");const vr=br[1];if("moleculetype"===vr)ir(),er=nn(Yt);else if("atoms"===vr)Rn.atoms=bn(Yt);else if("bonds"===vr)Rn.bonds=Dn(Yt);else if("system"===vr)cn.system=jt(Yt);else if("molecules"===vr)ir(),cn.molecules=It(Yt);else for(;dt.tokenEndt.YZ.create("Download",function(){var Yt=(0,e.A)(function*(cn){const xn=ke.V.getUrlAsset(dt.managers.asset,un.url),Rn=yield dt.managers.asset.resolve(xn,un.isBinary?"binary":"string").runInContext(cn);return ct.asset=Rn,un.isBinary?new Re.O.Data.Binary(Rn.data,{label:un.label?un.label:xn.url}):new Re.O.Data.String(Rn.data,{label:un.label?un.label:xn.url})});return function(cn){return Yt.apply(this,arguments)}}()),dispose({cache:un}){var ct;null===(ct=un?.asset)||void 0===ct||ct.dispose()},update:({oldParams:un,newParams:ct,b:dt})=>un.url!==ct.url||un.isBinary!==ct.isBinary?Ae.xE.UpdateResult.Recreate:un.label!==ct.label?(dt.label=ct.label||("string"==typeof ct.url?ct.url:ct.url.url),Ae.xE.UpdateResult.Updated):Ae.xE.UpdateResult.Unchanged}),Wt=Re.H.BuiltIn({name:"download-blob",display:{name:"Download Blob",description:"Download multiple string or binary data from the specified URLs."},from:Re.O.Root,to:Re.O.Data.Blob,params:{sources:Ce.t.ObjectList({id:Ce.t.Text("",{label:"Unique ID"}),url:Ce.t.Url("https://www.ebi.ac.uk/pdbe/static/entry/1cbs_updated.cif",{description:"Resource URL. Must be the same domain or support CORS."}),isBinary:Ce.t.Optional(Ce.t.Boolean(!1,{description:"If true, download data as binary (string otherwise)"})),canFail:Ce.t.Optional(Ce.t.Boolean(!1,{description:"Indicate whether the download can fail and not be included in the blob as a result."}))},un=>`${un.id}: ${un.url}`),maxConcurrency:Ce.t.Optional(Ce.t.Numeric(4,{min:1,max:12,step:1},{description:"The maximum number of concurrent downloads."}))}})({apply:({params:un,cache:ct},dt)=>t.YZ.create("Download Blob",function(){var Yt=(0,e.A)(function*(cn){const xn=[],Rn=yield(0,Be.Ui)(cn,dt.managers.asset,un.sources,un.maxConcurrency||4),er=[];for(let ir=0;irt.YZ.create("Raw Data",(0,e.A)(function*(){return"string"==typeof un.data?new Re.O.Data.String(un.data,{label:un.label?un.label:"String"}):Array.isArray(un.data)||un.data instanceof ArrayBuffer?new Re.O.Data.Binary(new Uint8Array(un.data),{label:un.label?un.label:"Binary"}):un.data instanceof Uint8Array?new Re.O.Data.Binary(un.data,{label:un.label?un.label:"Binary"}):void(0,ge.dr)(un.data)})),update:({oldParams:un,newParams:ct,b:dt})=>un.data!==ct.data?Ae.xE.UpdateResult.Recreate:un.label!==ct.label?(dt.label=ct.label||dt.label,Ae.xE.UpdateResult.Updated):Ae.xE.UpdateResult.Unchanged,customSerialization:{toJSON(un){if("string"==typeof un.data||Array.isArray(un.data))return un;if(un.data instanceof ArrayBuffer){const ct=new Uint8Array(un.data),dt=new Array(ct.length);for(let Yt=0,cn=ct.length;Ytun}}),Zt=Re.H.BuiltIn({name:"read-file",display:{name:"Read File",description:"Read string or binary data from the specified file"},from:Re.O.Root,to:[Re.O.Data.String,Re.O.Data.Binary],params:{file:Ce.t.File(),label:Ce.t.Optional(Ce.t.Text("")),isBinary:Ce.t.Optional(Ce.t.Boolean(!1,{description:"If true, open file as as binary (string otherwise)"}))}})({apply:({params:un,cache:ct},dt)=>t.YZ.create("Open File",function(){var Yt=(0,e.A)(function*(cn){if(null===un.file)return dt.log.error("No file(s) selected"),Ae.BM.Null;const xn=yield dt.managers.asset.resolve(un.file,un.isBinary?"binary":"string").runInContext(cn);return ct.asset=xn,un.isBinary?new Re.O.Data.Binary(xn.data,{label:un.label?un.label:un.file.name}):new Re.O.Data.String(xn.data,{label:un.label?un.label:un.file.name})});return function(cn){return Yt.apply(this,arguments)}}()),dispose({cache:un}){var ct;null===(ct=un?.asset)||void 0===ct||ct.dispose()},update({oldParams:un,newParams:ct,b:dt}){var Yt;return un.label!==ct.label?(dt.label=ct.label||(null===(Yt=un.file)||void 0===Yt?void 0:Yt.name)||"",Ae.xE.UpdateResult.Updated):Ae.xE.UpdateResult.Unchanged},isSerializable:()=>({isSerializable:!1,reason:"Cannot serialize user loaded files."})}),kt=Re.H.BuiltIn({name:"parse-blob",display:{name:"Parse Blob",description:"Parse multiple data enties"},from:Re.O.Data.Blob,to:Re.O.Format.Blob,params:{formats:Ce.t.ObjectList({id:Ce.t.Text("",{label:"Unique ID"}),format:Ce.t.Select("cif",[["cif","cif"]])},un=>`${un.id}: ${un.format}`)}})({apply:({a:un,params:ct},dt)=>t.YZ.create("Parse Blob",function(){var Yt=(0,e.A)(function*(cn){const xn=new Map;for(const er of ct.formats)xn.set(er.id,er.format);const Rn=[];for(const er of un.data){if(!xn.has(er.id))continue;const ir=yield("string"===er.kind?r.f$.parse(er.data):r.f$.parseBinary(er.data)).runInContext(cn);if(ir.isError)throw new Error(`${er.id}: ${ir.message}`);Rn.push({id:er.id,kind:"cif",data:ir.result})}return new Re.O.Format.Blob(Rn,{label:"Format Blob",description:`${Rn.length} ${1===Rn.length?"entry":"entries"}`})});return function(cn){return Yt.apply(this,arguments)}}())}),Ot=Re.H.BuiltIn({name:"parse-cif",display:{name:"Parse CIF",description:"Parse CIF from String or Binary data"},from:[Re.O.Data.String,Re.O.Data.Binary],to:Re.O.Format.Cif})({apply:({a:un})=>t.YZ.create("Parse CIF",function(){var ct=(0,e.A)(function*(dt){const Yt=yield("string"==typeof un.data?r.f$.parse(un.data):r.f$.parseBinary(un.data)).runInContext(dt);if(Yt.isError)throw new Error(Yt.message);return 0===Yt.result.blocks.length?Ae.BM.Null:new Re.O.Format.Cif(Yt.result)});return function(dt){return ct.apply(this,arguments)}}())}),An=Re.H.BuiltIn({name:"parse-cube",display:{name:"Parse Cube",description:"Parse Cube from String data"},from:Re.O.Data.String,to:Re.O.Format.Cube})({apply:({a:un})=>t.YZ.create("Parse Cube",function(){var ct=(0,e.A)(function*(dt){const Yt=yield ne(un.data,un.label).runInContext(dt);if(Yt.isError)throw new Error(Yt.message);return new Re.O.Format.Cube(Yt.result)});return function(dt){return ct.apply(this,arguments)}}())}),jn=Re.H.BuiltIn({name:"parse-psf",display:{name:"Parse PSF",description:"Parse PSF from String data"},from:[Re.O.Data.String],to:Re.O.Format.Psf})({apply:({a:un})=>t.YZ.create("Parse PSF",function(){var ct=(0,e.A)(function*(dt){const Yt=yield function le(un){return t.YZ.create("Parse PSF",function(){var ct=(0,e.A)(function*(dt){return yield function _e(un,ct){return xe.apply(this,arguments)}(un,dt)});return function(dt){return ct.apply(this,arguments)}}())}(un.data).runInContext(dt);if(Yt.isError)throw new Error(Yt.message);return new Re.O.Format.Psf(Yt.result)});return function(dt){return ct.apply(this,arguments)}}())}),On=Re.H.BuiltIn({name:"parse-prmtop",display:{name:"Parse PRMTOP",description:"Parse PRMTOP from String data"},from:[Re.O.Data.String],to:Re.O.Format.Prmtop})({apply:({a:un})=>t.YZ.create("Parse PRMTOP",function(){var ct=(0,e.A)(function*(dt){const Yt=yield function _t(un){return t.YZ.create("Parse PRMTOP",function(){var ct=(0,e.A)(function*(dt){return yield function $e(un,ct){return mt.apply(this,arguments)}(un,dt)});return function(dt){return ct.apply(this,arguments)}}())}(un.data).runInContext(dt);if(Yt.isError)throw new Error(Yt.message);return new Re.O.Format.Prmtop(Yt.result)});return function(dt){return ct.apply(this,arguments)}}())}),fr=Re.H.BuiltIn({name:"parse-top",display:{name:"Parse TOP",description:"Parse TOP from String data"},from:[Re.O.Data.String],to:Re.O.Format.Top})({apply:({a:un})=>t.YZ.create("Parse TOP",function(){var ct=(0,e.A)(function*(dt){const Yt=yield function $t(un){return t.YZ.create("Parse TOP",function(){var ct=(0,e.A)(function*(dt){return yield function Dt(un,ct){return Ct.apply(this,arguments)}(un,dt)});return function(dt){return ct.apply(this,arguments)}}())}(un.data).runInContext(dt);if(Yt.isError)throw new Error(Yt.message);return new Re.O.Format.Top(Yt.result)});return function(dt){return ct.apply(this,arguments)}}())}),Dr=Re.H.BuiltIn({name:"parse-ply",display:{name:"Parse PLY",description:"Parse PLY from String data"},from:[Re.O.Data.String],to:Re.O.Format.Ply})({apply:({a:un})=>t.YZ.create("Parse PLY",function(){var ct=(0,e.A)(function*(dt){const Yt=yield function k(un){return t.YZ.create("Parse PLY",function(){var ct=(0,e.A)(function*(dt){return yield function U(un,ct){return N.apply(this,arguments)}(un,dt)});return function(dt){return ct.apply(this,arguments)}}())}(un.data).runInContext(dt);if(Yt.isError)throw new Error(Yt.message);return new Re.O.Format.Ply(Yt.result,{label:Yt.result.comments[0]||"PLY Data"})});return function(dt){return ct.apply(this,arguments)}}())}),Pr=Re.H.BuiltIn({name:"parse-ccp4",display:{name:"Parse CCP4/MRC/MAP",description:"Parse CCP4/MRC/MAP from Binary data"},from:[Re.O.Data.Binary],to:Re.O.Format.Ccp4})({apply:({a:un})=>t.YZ.create("Parse CCP4/MRC/MAP",function(){var ct=(0,e.A)(function*(dt){const Yt=yield o.qg(un.data,un.label).runInContext(dt);if(Yt.isError)throw new Error(Yt.message);return new Re.O.Format.Ccp4(Yt.result)});return function(dt){return ct.apply(this,arguments)}}())}),or=Re.H.BuiltIn({name:"parse-dsn6",display:{name:"Parse DSN6/BRIX",description:"Parse CCP4/BRIX from Binary data"},from:[Re.O.Data.Binary],to:Re.O.Format.Dsn6})({apply:({a:un})=>t.YZ.create("Parse DSN6/BRIX",function(){var ct=(0,e.A)(function*(dt){const Yt=yield function C(un,ct){return function s(un,ct){return t.YZ.create("Parse DSN6/BRIX",function(){var dt=(0,e.A)(function*(Yt){try{return A.H.success(yield function u(un,ct,dt){return d.apply(this,arguments)}(un,ct,Yt))}catch(cn){return A.H.error(cn)}});return function(Yt){return dt.apply(this,arguments)}}())}(y.L.fromBuffer(c.N.fromUint8Array(un),ct),un.length)}(un.data,un.label).runInContext(dt);if(Yt.isError)throw new Error(Yt.message);return new Re.O.Format.Dsn6(Yt.result)});return function(dt){return ct.apply(this,arguments)}}())}),Nr=Re.H.BuiltIn({name:"parse-dx",display:{name:"Parse DX",description:"Parse DX from Binary/String data"},from:[Re.O.Data.Binary,Re.O.Data.String],to:Re.O.Format.Dx})({apply:({a:un})=>t.YZ.create("Parse DX",function(){var ct=(0,e.A)(function*(dt){const Yt=yield function se(un,ct){return t.YZ.create("Parse DX",dt=>"string"==typeof un?function ue(un,ct,dt){return re.apply(this,arguments)}(dt,un,ct):function ve(un,ct,dt){return ce.apply(this,arguments)}(dt,un,ct))}(un.data,un.label).runInContext(dt);if(Yt.isError)throw new Error(Yt.message);return new Re.O.Format.Dx(Yt.result)});return function(dt){return ct.apply(this,arguments)}}())}),Ir=Re.H.BuiltIn({name:"import-string",display:{name:"Import String",description:"Import given data as a string"},from:Re.O.Root,to:Re.O.Data.String,params:{data:Ce.t.Value(""),label:Ce.t.Optional(Ce.t.Text(""))}})({apply:({params:{data:un,label:ct}})=>new Re.O.Data.String(un,{label:ct||""}),update:({oldParams:un,newParams:ct,b:dt})=>un.data!==ct.data?Ae.xE.UpdateResult.Recreate:un.label!==ct.label?(dt.label=ct.label||"",Ae.xE.UpdateResult.Updated):Ae.xE.UpdateResult.Unchanged,isSerializable:()=>({isSerializable:!1,reason:"Cannot serialize user imported strings."})}),Or=Re.H.BuiltIn({name:"import-json",display:{name:"Import JSON",description:"Import given data as a JSON"},from:Re.O.Root,to:Re.O.Format.Json,params:{data:Ce.t.Value({}),label:Ce.t.Optional(Ce.t.Text(""))}})({apply:({params:{data:un,label:ct}})=>new Re.O.Format.Json(un,{label:ct||""}),update:({oldParams:un,newParams:ct,b:dt})=>un.data!==ct.data?Ae.xE.UpdateResult.Recreate:un.label!==ct.label?(dt.label=ct.label||"",Ae.xE.UpdateResult.Updated):Ae.xE.UpdateResult.Unchanged,isSerializable:()=>({isSerializable:!1,reason:"Cannot serialize user imported JSON."})}),Jr=Re.H.BuiltIn({name:"parse-json",display:{name:"Parse JSON",description:"Parse JSON from String data"},from:[Re.O.Data.String],to:Re.O.Format.Json})({apply:({a:un})=>t.YZ.create("Parse JSON",function(){var ct=(0,e.A)(function*(dt){const Yt=yield new Response(un.data).json();return new Re.O.Format.Json(Yt)});return function(dt){return ct.apply(this,arguments)}}())}),To=Re.H.BuiltIn({name:"lazy-volume",display:{name:"Lazy Volume",description:"A placeholder for lazy loaded volume representation"},from:Re.O.Root,to:Re.O.Volume.Lazy,params:{url:Ce.t.Url(""),isBinary:Ce.t.Boolean(!1),format:Ce.t.Text("ccp4"),entryId:Ce.t.Value("",{isHidden:!0}),isovalues:Ce.t.ObjectList({type:Ce.t.Text("relative"),value:Ce.t.Numeric(0),color:Ce.t.Color(ae.s.black),alpha:Ce.t.Numeric(1,{min:0,max:1,step:.01}),volumeIndex:Ce.t.Numeric(0)},un=>`${un.type} ${un.value}`)}})({apply:({params:ct})=>t.YZ.create("Lazy Volume",function(){var dt=(0,e.A)(function*(Yt){const cn=Array.isArray(ct.entryId)?ct.entryId.join(", "):ct.entryId;return new Re.O.Volume.Lazy(ct,{label:`${cn||ct.url}`,description:"Lazy Volume"})});return function(Yt){return dt.apply(this,arguments)}}())})},1855:(tn,Ue,n)=>{"use strict";n.r(Ue),n.d(Ue,{CoordinatesFromDcd:()=>Ht,CoordinatesFromNctraj:()=>kn,CoordinatesFromTrr:()=>ar,CoordinatesFromXtc:()=>Gn,CustomModelProperties:()=>ds,CustomStructureProperties:()=>ze,ModelFromTrajectory:()=>ri,MultiStructureSelectionFromExpression:()=>Wr,ShapeFromPly:()=>Rt,StructureComplexElement:()=>Ki,StructureComplexElementTypes:()=>Di,StructureComponent:()=>Mi,StructureFromModel:()=>Lo,StructureFromTrajectory:()=>fo,StructureSelectionFromBundle:()=>zo,StructureSelectionFromExpression:()=>hr,StructureSelectionFromScript:()=>no,TopologyFromPrmtop:()=>sr,TopologyFromPsf:()=>ur,TopologyFromTop:()=>Jn,TrajectoryFromBlob:()=>at,TrajectoryFromCifCore:()=>mo,TrajectoryFromCube:()=>Rr,TrajectoryFromGRO:()=>Cn,TrajectoryFromMOL:()=>vn,TrajectoryFromMOL2:()=>pr,TrajectoryFromMmCif:()=>Nt,TrajectoryFromModelAndCoordinates:()=>et,TrajectoryFromPDB:()=>qt,TrajectoryFromSDF:()=>nr,TrajectoryFromXYZ:()=>Un,TransformStructureConformation:()=>_o});var e=n(467),o=n(355),r=n(4824),t=n(3897);var c=n(6651),i=n(5555),v=n(2025);function M(X,pe){return{tokenizer:X,header:{title:"",timeInPs:0,hasVelocities:!1,precision:{position:0,velocity:0},box:[0,0,0]},numberOfAtoms:0,runtimeCtx:pe}}function I(X){const{tokenizer:pe,header:De}=X;let Ee=i._F.readLine(pe);0===Ee.trim().length&&(Ee=i._F.readLine(pe));const qe=Ee.lastIndexOf("t=");qe>=0?(De.timeInPs=parseFloat(Ee.substring(qe+2)),De.title=Ee.substring(0,qe).trim(),De.title&&","===De.title[De.title.length-1]&&(De.title=De.title.substring(0,De.title.length-1))):De.title=Ee}function l(X){const{tokenizer:pe}=X;i._F.markLine(pe);const De=i._F.getTokenString(pe);X.numberOfAtoms=parseInt(De)}function m(X){return u.apply(this,arguments)}function u(){return(u=(0,e.A)(function*(X){const{tokenizer:pe,numberOfAtoms:De}=X,Ee=yield i._F.readLinesAsync(pe,De,X.runtimeCtx,1e5),bt=pe.data.substring(Ee.indices[0],Ee.indices[1]).substring(20).match(/\.\d+/g),xt=6===bt.length;X.header.hasVelocities=xt,X.header.precision.position=bt[0].length-1,X.header.precision.velocity=xt?bt[3].length-1:0;const dn=X.header.precision.position+5,In=20+3*dn,Tn=X.header.precision.velocity+4,_n=function O(X){return function(pe,De,Ee){return function b(X,pe,De,Ee){const{data:qe,indices:bt,count:xt}=X,{valueType:hn}=Ee,dn="str"===hn?In=>{const Tn=bt[2*In]+pe,_n=bt[2*In+1];if(Tn>=_n)return"";let Wn=Tn+De;return Wn>_n&&(Wn=_n),(0,i.qk)(qe,Tn,Wn)}:"int"===hn?In=>{const Tn=bt[2*In]+pe;return Tn>bt[2*In+1]?0:(0,v.jj)(qe,Tn,Tn+De)}:In=>{const Tn=bt[2*In]+pe;return Tn>bt[2*In+1]?0:(0,v.Al)(qe,Tn,Tn+De)};return{schema:Ee,__array:void 0,isDefined:!0,rowCount:xt,value:dn,valueKind:In=>0,toArray:In=>c.iu.createAndFillArray(xt,dn,In),areValuesEqual:(In,Tn)=>dn(In)===dn(Tn)}}(X,pe,De,Ee)}}(Ee),Wn=c.VP.Undefined(X.numberOfAtoms,c.VP.Schema.float);return{count:X.numberOfAtoms,residueNumber:_n(0,5,c.VP.Schema.int),residueName:_n(5,5,c.VP.Schema.str),atomName:_n(10,5,c.VP.Schema.str),atomNumber:_n(15,5,c.VP.Schema.int),x:_n(20,dn,c.VP.Schema.float),y:_n(20+dn,dn,c.VP.Schema.float),z:_n(20+2*dn,dn,c.VP.Schema.float),vx:xt?_n(In,Tn,c.VP.Schema.float):Wn,vy:xt?_n(In+Tn,Tn,c.VP.Schema.float):Wn,vz:xt?_n(In+2*Tn,Tn,c.VP.Schema.float):Wn}})).apply(this,arguments)}function d(X){const{tokenizer:pe}=X,De=i._F.readLine(pe).trim().split(/\s+/g);X.header.box=[+De[0],+De[1],+De[2]]}function C(){return(C=(0,e.A)(function*(X,pe){const De=(0,i._F)(X);yield pe.update({message:"Parsing...",current:0,max:X.length});const Ee=[];for(;De.position{const Er="material"===qe?Xn:In[Xn];return D.Q1.fromRgb(bt.value(Er),xt.value(Er),hn.value(Er))},()=>1,Xn=>`${Tn} ${dn[Xn]}`,Wn)}function j(){let X,pe,De,Ee,qe,bt;return function(){var hn=(0,e.A)(function*(dn,In,Tn,_n){const Wn=In.source.getElement("vertex");if(!Wn)throw new Error("missing vertex element");const Xn=In.source.getElement("face");if(!Xn)throw new Error("missing face element");const Er=In.source.getElement("material");let $n=!1,mr=!1;return(!X||X!=X)&&($n=!0),(!pe||!L.t.isParamEqual(N.grouping,pe.grouping,Tn.grouping))&&($n=!0),(!pe||!L.t.isParamEqual(N.coloring,pe.coloring,Tn.coloring))&&(mr=!0),$n?(qe=de(Wn,Er,Tn),bt=function te(X,pe){const{grouping:De}=pe,{rowCount:Ee}=X,qe="vertex"===De.name?X.getProperty(De.params.group):void 0,bt="vertex"===De.name?(0,G.Mk)(De.params.group):"Vertex",xt=qe?qe.toArray({array:Uint32Array}):(0,T.WE)(new Uint32Array(Ee)),hn=qe?(0,T._M)(xt):Ee-1,dn=new Uint32Array(hn+1);for(let In=0,Tn=xt.length;In=Math.PI||_n>=Math.PI||Wn>=Math.PI?De():pe(S.eB.create(hn,dn,In),S.eB.create(Tn,_n,Wn))}}(ee||(ee={}));var g=n(2028);function le(X,pe,De,Ee){let qe=De,bt=Ee-1,xt=pe.charCodeAt(qe);for(;(32===xt||xt>=48&&xt<=57)&&qe<=bt;)xt=pe.charCodeAt(++qe);for(xt=pe.charCodeAt(bt);(32===xt||xt>=48&&xt<=57)&&bt>=qe;)xt=pe.charCodeAt(--bt);if(++bt,qe===bt||qe+1===bt)return i.tM.add(X,qe,bt);if(xt=pe.charCodeAt(qe),qe+2===bt){const hn=pe.charCodeAt(qe+1);if(!((78!==xt&&110!==xt||65!==hn&&97!==hn)&&(67!==xt&&99!==xt||76!==hn&&108!==hn)&&(70!==xt&&102!==xt||69!==hn&&101!==hn)&&(83!==xt&&115!==xt||73!==hn&&105!==hn)&&(66!==xt&&98!==xt||82!==hn&&114!==hn)&&(65!==xt&&97!==xt||83!==hn&&115!==hn)))return i.tM.add(X,qe,qe+2)}if(67===xt||99===xt||72===xt||104===xt||78===xt||110===xt||79===xt||111===xt||80===xt||112===xt||83===xt||115===xt)return i.tM.add(X,qe,qe+1);i.tM.add(X,qe,qe)}const Ae=new Set(["NA","CL","FE","SI","BR","AS","LI"]),Be=new Set(["C","H","N","O","P","S","F","B"]),Ce=/^[\s\d]+|[\s\d]+$/g;function Re(X,pe){const De=(X=X.replace(Ce,"").toUpperCase()).length;if(0===De||1===De||Ae.has(X))return X;if(3===De&&pe===X){if("SOD"===X)return"NA";if("POT"===X)return"K";if("CES"===X)return"CS";if("CAL"===X)return"CA";if("CLA"===X)return"CL"}return Be.has(X[0])?X[0]:""}var ke=n(2434),we=n(3671),Oe=n(1094);const Se="ABCDEFGHIJKLMNOPQRSTUVWXYZ",Ne=(0,Oe.E)(function Ve(X){let De=X,Ee=0,qe=Se[De%26];for(;De>=26;)De=Math.floor(De/26),qe+=Se[De%26],Ee+=1;return Ee>=5&&console.warn("getChainId overflow"),qe});var ue,X,K=n(3573),ne=n(2449),be=n(2921),Te=n(7024);function ie(X,pe){const De=X.atomName,Ee=X.residueName,qe=new Array(X.count),bt=new Array(X.count),xt=new Uint32Array(X.count),hn=new Uint32Array(X.count),dn=new Array(X.count),In=new K.V,Tn=new we.N(X.residueNumber,X.atomName);let _n="",Wn=0,Xn="",Er=0,$n=0,mr=-1;for(let Xr=0,io=X.count;Xr10*Xr,Float32Array)),Cartn_y:c.VP.ofFloatArray(c.VP.mapToArray(X.y,Xr=>10*Xr,Float32Array)),Cartn_z:c.VP.ofFloatArray(c.VP.mapToArray(X.z,Xr=>10*Xr,Float32Array)),id:c.VP.ofIntArray(hn),label_asym_id:gr,label_atom_id:De,label_comp_id:Ee,label_seq_id:c.VP.ofIntArray(xt),label_entity_id:c.VP.ofStringArray(qe),occupancy:c.VP.ofConst(1,X.count,c.VP.Schema.float),type_symbol:c.VP.ofStringArray(dn),pdbx_PDB_model_num:c.VP.ofConst(pe,X.count,c.VP.Schema.int)},X.count);return(0,ne.z)({entity:In.getEntityTable(),chem_comp:Tn.getChemCompTable(),atom_site:Ar})}(X=ue||(ue={})).is=function pe(Ee){return"gro"===Ee?.kind},X.fromGro=function De(Ee){return{kind:"gro",name:Ee.structures[0].header.title,data:Ee}};var ve=n(2524),ce=n(5165);function se(X,pe){const De=(bt,xt)=>(pe.substr(bt,xt)||"").trim(),Ee={entry_id:ce.RF.ofString(X),length_a:ce.RF.ofString(De(6,9)),length_b:ce.RF.ofString(De(15,9)),length_c:ce.RF.ofString(De(24,9)),angle_alpha:ce.RF.ofString(De(33,7)),angle_beta:ce.RF.ofString(De(40,7)),angle_gamma:ce.RF.ofString(De(47,7)),Z_PDB:ce.RF.ofString(De(66,4)),pdbx_unique_axis:ce.RF.ofString("?")},qe={entry_id:ce.RF.ofString(X),"space_group_name_H-M":ce.RF.ofString(De(55,11)),Int_Tables_number:ce.RF.ofString("?"),cell_setting:ce.RF.ofString("?"),space_group_name_Hall:ce.RF.ofString("?")};return[ce.xA.ofFields("cell",Ee),ce.xA.ofFields("symmetry",qe)]}function ae(X,pe){return{id:X,details:pe,groups:[]}}function ge(X,pe,De){const Ee=[];let qe,bt,xt,hn=1,dn=1;const In=$n=>X.data.substring(X.indices[2*$n],X.indices[2*$n+1]);for(let $n=pe;$n$n.id)),details:ce.RF.ofStrings(Ee.map($n=>$n.details))},_n=[];for(const $n of Ee)for(const mr of $n.groups)_n.push({assembly_id:$n.id,oper_expression:mr.operators.map(gr=>gr.id).join(","),asym_id_list:mr.chains.join(",")});const Wn={assembly_id:ce.RF.ofStrings(_n.map($n=>$n.assembly_id)),oper_expression:ce.RF.ofStrings(_n.map($n=>$n.oper_expression)),asym_id_list:ce.RF.ofStrings(_n.map($n=>$n.asym_id_list))},Xn=[];for(const $n of Ee)for(const mr of $n.groups)for(const gr of mr.operators){const Ar={id:""+gr.id,type:"?",name:"?",symmetry_operation:"?"};for(let Xr=0;Xr<3;Xr++){for(let io=0;io<3;io++)Ar[`matrix[${Xr+1}][${io+1}]`]=""+S.$I.getValue(gr.matrix,Xr,io);Ar[`vector[${Xr+1}]`]=""+S.$I.getValue(gr.matrix,Xr,3)}Xn.push(Ar)}const Er={id:ce.RF.ofStrings(Xn.map($n=>$n.id)),type:ce.RF.ofStrings(Xn.map($n=>$n.type)),name:ce.RF.ofStrings(Xn.map($n=>$n.name)),symmetry_operation:ce.RF.ofStrings(Xn.map($n=>$n.symmetry_operation))};for(let $n=0;$n<3;$n++){for(let gr=0;gr<3;gr++){const Ar=`matrix[${$n+1}][${gr+1}]`;Er[Ar]=ce.RF.ofStrings(Xn.map(Xr=>Xr[Ar]))}const mr=`vector[${$n+1}]`;Er[mr]=ce.RF.ofStrings(Xn.map(gr=>gr[mr]))}return[ce.xA.ofFields("pdbx_struct_assembly",Tn),ce.xA.ofFields("pdbx_struct_assembly_gen",Wn),ce.xA.ofFields("pdbx_struct_oper_list",Er)]}function Ie(X,pe,De){const Ee=[];let qe;const bt=In=>X.data.substring(X.indices[2*In],X.indices[2*In+1]);for(let In=pe;InIn.id)),code:ce.RF.ofStrings(xt.map(In=>In.code)),details:ce.RF.ofStrings(xt.map(In=>In.details))};for(let In=0;In<3;In++){for(let _n=0;_n<3;_n++){const Wn=`matrix[${In+1}][${_n+1}]`;dn[Wn]=ce.RF.ofStrings(xt.map(Xn=>Xn[Wn]))}const Tn=`vector[${In+1}]`;dn[Tn]=ce.RF.ofStrings(xt.map(_n=>_n[Tn]))}return[ce.xA.ofFields("struct_ncs_oper",dn)]}const Le={1:"helx_rh_al_p",2:"helx_rh_om_p",3:"helx_rh_pi_p",4:"helx_rh_ga_p",5:"helx_rh_3t_p",6:"helx_lh_al_p",7:"helx_lh_om_p",8:"helx_lh_ga_p",9:"helx_rh_27_p",10:"helx_rh_pp_p"};function je(X,pe,De){const Ee=[],qe=Tn=>X.data.substring(X.indices[2*Tn],X.indices[2*Tn+1]);for(let Tn=pe;TnTn.initChainID)),xt=ce.RF.ofStrings(Ee.map(Tn=>Tn.initResName)),hn=ce.RF.ofStrings(Ee.map(Tn=>Tn.endChainID)),dn=ce.RF.ofStrings(Ee.map(Tn=>Tn.endResName)),In={beg_label_asym_id:bt,beg_label_comp_id:xt,beg_label_seq_id:ce.RF.ofUndefined(Ee.length,c.VP.Schema.int),beg_auth_asym_id:bt,beg_auth_comp_id:xt,beg_auth_seq_id:ce.RF.ofStrings(Ee.map(Tn=>Tn.initSeqNum)),conf_type_id:ce.RF.ofStrings(Ee.map(Tn=>function nt(X){return Le[X]||"helx_p"}(Tn.helixClass))),details:ce.RF.ofStrings(Ee.map(Tn=>Tn.comment)),end_label_asym_id:hn,end_label_comp_id:dn,end_label_seq_id:ce.RF.ofUndefined(Ee.length,c.VP.Schema.int),end_auth_asym_id:hn,end_auth_comp_id:dn,end_auth_seq_id:ce.RF.ofStrings(Ee.map(Tn=>Tn.endSeqNum)),id:ce.RF.ofStrings(Ee.map(Tn=>Tn.serNum)),pdbx_beg_PDB_ins_code:ce.RF.ofStrings(Ee.map(Tn=>Tn.initICode)),pdbx_end_PDB_ins_code:ce.RF.ofStrings(Ee.map(Tn=>Tn.endICode)),pdbx_PDB_helix_class:ce.RF.ofStrings(Ee.map(Tn=>Tn.helixClass)),pdbx_PDB_helix_length:ce.RF.ofStrings(Ee.map(Tn=>Tn.length)),pdbx_PDB_helix_id:ce.RF.ofStrings(Ee.map(Tn=>Tn.helixID))};return ce.xA.ofFields("struct_conf",In)}function Lt(X,pe,De){const Ee=[],qe=Wn=>X.data.substring(X.indices[2*Wn],X.indices[2*Wn+1]);for(let Wn=pe;WnWn.initChainID)),xt=ce.RF.ofStrings(Ee.map(Wn=>Wn.initResName)),hn=ce.RF.ofStrings(Ee.map(Wn=>Wn.initSeqNum)),dn=ce.RF.ofStrings(Ee.map(Wn=>Wn.endChainID)),In=ce.RF.ofStrings(Ee.map(Wn=>Wn.endResName)),Tn=ce.RF.ofStrings(Ee.map(Wn=>Wn.endSeqNum)),_n={beg_label_asym_id:bt,beg_label_comp_id:xt,beg_label_seq_id:hn,beg_auth_asym_id:bt,beg_auth_comp_id:xt,beg_auth_seq_id:hn,end_label_asym_id:dn,end_label_comp_id:dn,end_label_seq_id:Tn,end_auth_asym_id:dn,end_auth_comp_id:In,end_auth_seq_id:Tn,id:ce.RF.ofStrings(Ee.map(Wn=>Wn.strand)),sheet_id:ce.RF.ofStrings(Ee.map(Wn=>Wn.sheetID)),pdbx_beg_PDB_ins_code:ce.RF.ofStrings(Ee.map(Wn=>Wn.initICode)),pdbx_end_PDB_ins_code:ce.RF.ofStrings(Ee.map(Wn=>Wn.endICode))};return ce.xA.ofFields("struct_sheet_range",_n)}const Je={MOL_ID:"",MOLECULE:"",CHAIN:"",FRAGMENT:"",SYNONYM:"",EC:"",ENGINEERED:"",MUTATION:"",OTHER_DETAILS:""};function en(X,pe,De){const Ee=dn=>X.data.substring(X.indices[2*dn],X.indices[2*dn+1]);let qe,bt={chains:[],description:""};const xt=[];for(let dn=pe;dnX.data.substring(X.indices[2*bt],X.indices[2*bt+1]),qe=new Map;for(let bt=pe;bt=66?i.tM.addToken(X.B_iso_or_equiv,i._F.trim(De,Ee+60,Ee+66)):i.tM.add(X.B_iso_or_equiv,0,0),bt&&i.tM.addToken(X.partial_charge,i._F.trim(De,Ee+70,Ee+76)),hn>=78&&!bt?(i._F.trim(De,Ee+76,Ee+78),De.tokenStart=78?(i._F.trim(De,Ee+76,Ee+78),De.tokenStarti.tM.create(X,2*pe);return{index:0,group_PDB:Ee(),id:[],auth_atom_id:Ee(),label_alt_id:Ee(),auth_comp_id:Ee(),auth_asym_id:Ee(),auth_seq_id:Ee(),pdbx_PDB_ins_code:Ee(),Cartn_x:Ee(),Cartn_y:Ee(),Cartn_z:Ee(),occupancy:Ee(),B_iso_or_equiv:Ee(),type_symbol:Ee(),pdbx_PDB_model_num:[],label_entity_id:[],partial_charge:Ee()}}(De,xt),Tn=function Me(X,pe){const Ee=()=>new Float32Array(pe),qe=()=>i.tM.create(X,2*pe);return{index:0,count:pe,id:[],type_symbol:qe(),pdbx_label_atom_id:qe(),pdbx_label_alt_id:qe(),pdbx_label_comp_id:qe(),pdbx_label_asym_id:qe(),pdbx_label_seq_id:qe(),pdbx_PDB_ins_code:qe(),"U[1][1]":Ee(),"U[2][2]":Ee(),"U[3][3]":Ee(),"U[1][2]":Ee(),"U[1][3]":Ee(),"U[2][3]":Ee(),pdbx_auth_seq_id:qe(),pdbx_auth_comp_id:qe(),pdbx_auth_asym_id:qe(),pdbx_auth_atom_id:qe()}}(De,hn),_n=new K.V,Wn=[],Xn=[];let mr,Er=0,$n="",gr=!1;const Ar=new Set;for(let yr=0,bo=pe.count;yrX.data.substring(X.indices[2*ko],X.indices[2*ko+1]),xt=[],hn=[],dn=[],In=[],Tn=[],_n=[],Wn=[],Xn=[],Er=[],$n=[],mr=[],gr=[],Ar=[],Xr=[],io=[11,16,21,26];let Mo=1;for(let ko=pe;ko_r||void 0===yr[_r]&&(xt.push(`covale${Mo}`),hn.push("covale"),dn.push(Ee.label_asym_id.str(uo)),In.push(Ee.label_seq_id.int(uo)),Tn.push(Ee.auth_seq_id.int(uo)),_n.push(Ee.label_atom_id.str(uo)),Wn.push(Ee.label_alt_id.str(uo)),Xn.push(Ee.pdbx_PDB_ins_code.str(uo)),Er.push(Ee.label_asym_id.str(_r)),$n.push(Ee.label_seq_id.int(_r)),mr.push(Ee.auth_seq_id.int(_r)),gr.push(Ee.label_atom_id.str(_r)),Ar.push(Ee.label_alt_id.str(_r)),Xr.push(Ee.pdbx_PDB_ins_code.str(_r)),Mo+=1))}}const Oo={id:ce.RF.ofStrings(xt),conn_type_id:ce.RF.ofStrings(hn),ptnr1_label_asym_id:ce.RF.ofStrings(dn),ptnr1_label_seq_id:ce.RF.ofNumbers(In),ptnr1_auth_seq_id:ce.RF.ofNumbers(Tn),ptnr1_label_atom_id:ce.RF.ofStrings(_n),pdbx_ptnr1_label_alt_id:ce.RF.ofStrings(Wn),pdbx_ptnr1_PDB_ins_code:ce.RF.ofStrings(Xn),ptnr2_label_asym_id:ce.RF.ofStrings(Er),ptnr2_label_seq_id:ce.RF.ofNumbers($n),ptnr2_auth_seq_id:ce.RF.ofNumbers(mr),ptnr2_label_atom_id:ce.RF.ofStrings(gr),pdbx_ptnr2_label_alt_id:ce.RF.ofStrings(Ar),pdbx_ptnr2_PDB_ins_code:ce.RF.ofStrings(Xr)};return ce.xA.ofFields("struct_conn",Oo)}(pe,mr[0],mr[1],Xo));const uo={entity:ce.xA.ofTable("entity",_n.getEntityTable()),chem_comp:ce.xA.ofTable("chem_comp",ko.getChemCompTable()),atom_site:ce.xA.ofFields("atom_site",Xo),atom_site_anisotrop:ce.xA.ofFields("atom_site_anisotrop",Ke(Tn))};for(const yr of Wn)uo[yr.name]=yr;return{header:X.id||"PDB",categoryNames:Object.keys(uo),categories:uo}}),At.apply(this,arguments)}var rn,Gt=n(4366);!function(X){X.is=function pe(Ee){return"pdb"===Ee?.kind},X.create=function De(Ee){return{kind:"pdb",name:Ee.id||"",data:Ee}}}(rn||(rn={}));var bn,Mt=n(3346);!function(X){X.is=function pe(Ee){return"psf"===Ee?.kind},X.fromPsf=function De(Ee){return{kind:"psf",name:Ee.id,data:Ee}}}(bn||(bn={}));var yn,jt=n(9136),It=n(9767),Dt=n(9498),Ct=n(1832),$t=n(9909),Vt=n(1295),Wt=n(7291);!function(X){function De(hn,dn){const In=Dt.e.is(dn)?dn:void 0,Tn=Dt.e.is(dn)?Dt.e.toExpression(dn):dn;return{script:In,expression:Tn,compiled:(0,Wt.wE)(Tn),originalStructure:hn,currentStructure:hn}}function Ee(hn,dn){return hn.compiled(new jt.cY(dn))}X.isUnchanged=function pe(hn,dn,In){return hn.currentStructure===In&&(Dt.e.is(dn)?!!hn.script&&Dt.e.areEqual(hn.script,dn):hn.expression===dn)},X.create=De,X.run=Ee,X.createAndRun=function qe(hn,dn){const In=De(hn,dn);return{entry:In,selection:Ee(In,hn)}},X.updateStructure=function bt(hn,dn){return hn.currentStructure=dn,hn.compiled(new jt.cY(dn))},X.updateStructureObject=function xt(hn,dn,In){const Tn=jt.cv.unionStructure(dn);hn.label=`${In||"Selection"}`,hn.description=jt.oE.elementDescription(Tn),hn.data=Tn}}(yn||(yn={}));var Zt=n(381),kt=n(9096),Ot=n(1372);function Dr(X){switch(X){case 7:return-3;case 6:return-2;case 5:return-1;case 0:case 4:return 0;case 3:return 1;case 2:return 2;case 1:return 3;default:return console.error(`Value ${X} is outside the 0-7 range, defaulting to 0.`),0}}function Pr(X,pe){const De=i.tM.create(X.data,2*pe),Ee=i.tM.create(X.data,2*pe),qe=i.tM.create(X.data,2*pe),bt=i.tM.create(X.data,2*pe),xt=i.tM.create(X.data,2*pe);for(let hn=0;hn0)for(let mr=0;mr0){const mr=c.VP.ofIntArray(c.VP.mapToArray(qe.atomIdxA,io=>io-1,Int32Array)),gr=c.VP.ofIntArray(c.VP.mapToArray(qe.atomIdxB,io=>io-1,Int32Array)),Ar=c.VP.asArrayColumn(qe.order,Int32Array),Xr=To.z.fromData({pairs:{indexA:mr,indexB:gr,order:Ar},count:Ee.count},{maxDistance:1/0});To.z.Provider.set($n.representative,Xr)}return $n}),ct.apply(this,arguments)}!function(X){X.is=function pe(Ee){return"mol"===Ee?.kind},X.create=function De(Ee){return{kind:"mol",name:Ee.title,data:Ee}}}(dt||(dt={}));var Mr,Ro,cn=n(5384),xn=n(9651),Rn=n(8593);function br(){return br=(0,e.A)(function*(X,pe,De){var Ee;const qe=X.atom_site._rowCount,bt=c.VP.ofConst("MOL",qe,c.VP.Schema.str),xt=c.VP.ofConst("A",qe,c.VP.Schema.str),hn=c.VP.ofConst(1,qe,c.VP.Schema.int),dn=function ir(X){const{cell:pe,space_group:De}=X,Ee=function er(X){const pe=X.it_number.value(0),De=X["name_h-m_full"].value(0).replace("-"," ");return X.it_number.isDefined?pe:De}(De),qe=cn.O8.create(Ee,S.eB.create(pe.length_a.value(0),pe.length_b.value(0),pe.length_c.value(0)),S.eB.scale((0,S.eB)(),S.eB.create(pe.angle_alpha.value(0),pe.angle_beta.value(0),pe.angle_gamma.value(0)),Math.PI/180));return{spacegroup:cn.is.create(qe),assemblies:[],isNonStandardCrystalFrame:!1,ncsOperators:[]}}(X),In=dn.spacegroup.cell.fromFractional,{fract_x:Tn,fract_y:_n,fract_z:Wn}=X.atom_site,Xn=new Float32Array(qe),Er=new Float32Array(qe),$n=new Float32Array(qe),mr=(0,S.eB)();for(let bo=0;bo0){const bo=yr.representative;xn.i.Provider.set(bo,dn);const $r=X.geom_bond._rowCount;if($r>0){const _r={},{label:eo}=X.atom_site;for(let Es=0,ma=eo.rowCount;Es(0,ke.FW)(_n)),schema:c.VP.Schema.Aliased(c.VP.Schema.str)}),xt=c.VP.ofConst(1,De.count,c.VP.Schema.int),hn=c.XI.ofPartialColumns(ne.e.atom_site,{auth_asym_id:qe,auth_atom_id:bt,auth_comp_id:Ee,auth_seq_id:xt,Cartn_x:c.VP.asArrayColumn(De.x,Float32Array),Cartn_y:c.VP.asArrayColumn(De.y,Float32Array),Cartn_z:c.VP.asArrayColumn(De.z,Float32Array),id:c.VP.range(0,De.count-1),label_asym_id:qe,label_atom_id:bt,label_comp_id:Ee,label_seq_id:xt,label_entity_id:c.VP.ofConst("1",De.count,c.VP.Schema.str),occupancy:c.VP.ofConst(1,De.count,c.VP.Schema.float),type_symbol:bt,pdbx_PDB_model_num:c.VP.ofConst(1,De.count,c.VP.Schema.int)},De.count),dn=new K.V;dn.setNames([["MOL","Unknown Entity"]]),dn.getEntityId("MOL",0,"A");const In=new we.N(xt,bt);In.setNames([["MOL","Unknown Molecule"]]),In.add("MOL",0);const Tn=(0,ne.z)({entity:dn.getEntityTable(),chem_comp:In.getChemCompTable(),atom_site:hn});return yield(0,be.X)(Tn,Ro.create(X),pe)}),Ur.apply(this,arguments)}Rn._.Provider.formatRegistry.add("cifCore",function vr(X){if(!Mr.is(X.sourceData))return;const{atom_site:pe,atom_site_aniso:De}=X.sourceData.data.db;return{data:c.XI.ofPartialColumns(Rn._.Schema,{U:De.u},De._rowCount),elementToAnsiotrop:Rn._.getElementToAnsiotropFromLabel(pe.label,De.label)}},function Hr(X){return!!Mr.is(X.sourceData)&&X.sourceData.data.db.atom_site_aniso.u.isDefined}),function(X){X.is=function pe(Ee){return"cifCore"===Ee?.kind},X.fromFrame=function De(Ee,qe){return qe||(qe=ce.f$.schema.cifCore(Ee)),{kind:"cifCore",name:qe.database_code.depnum_ccdc_archive.value(0)||qe.database_code.depnum_ccdc_fiz.value(0)||qe.database_code.icsd.value(0)||qe.database_code.mdf.value(0)||qe.database_code.nbs.value(0)||qe.database_code.csd.value(0)||qe.database_code.cod.value(0)||qe._name,data:{db:qe,frame:Ee}}}}(Mr||(Mr={})),function(X){X.is=function pe(Ee){return"cube"===Ee?.kind},X.create=function De(Ee){return{kind:"cube",name:Ee.header.comment1,data:Ee}}}(Ro||(Ro={}));const{skipWhitespace:po,eatValue:so,markLine:ho,getTokenString:Bo,readLine:Go}=i._F;function We(X,pe){return{tokenizer:X,molecule:{mol_name:"",num_atoms:0,num_bonds:0,num_subst:0,num_feat:0,num_sets:0,mol_type:"",charge_type:"",status_bits:"",mol_comment:""},runtimeCtx:pe}}const Pt=/\s+/g;function Sn(X){const{tokenizer:pe,molecule:De}=X;for(;"@MOLECULE"!==Bo(pe)&&pe.position"))return;De.mol_type=qe,ho(pe);const bt=Bo(pe);if(bt.startsWith("@"))return;De.charge_type=bt,ho(pe);const xt=Bo(pe);if(xt.startsWith("@"))return;De.status_bits=xt,ho(pe);const hn=Bo(pe);hn.startsWith("@")||(De.mol_comment=hn)}function Nn(X){return Kn.apply(this,arguments)}function Kn(){return Kn=(0,e.A)(function*(X){const{tokenizer:pe,molecule:De}=X;for(;"@ATOM"!==Bo(pe)&&pe.position{const uo=Math.min(De.num_atoms-Oo,Xo);for(let yr=0;yrXo.update({message:"Parsing...",current:pe.position,max:Mo})),{count:De.num_atoms,atom_id:(0,pn.do)(dn)(c.VP.Schema.int),atom_name:(0,pn.do)(In)(c.VP.Schema.str),x:(0,pn.do)(Tn)(c.VP.Schema.float),y:(0,pn.do)(_n)(c.VP.Schema.float),z:(0,pn.do)(Wn)(c.VP.Schema.float),atom_type:hn>5?(0,pn.do)(Xn)(c.VP.Schema.str):io,subst_id:hn>6?(0,pn.do)(Er)(c.VP.Schema.int):Xr,subst_name:hn>7?(0,pn.do)($n)(c.VP.Schema.str):io,charge:hn>8?(0,pn.do)(mr)(c.VP.Schema.float):Ar,status_bit:hn>9?(0,pn.do)(gr)(c.VP.Schema.str):io}}),Kn.apply(this,arguments)}function dr(X){return xr.apply(this,arguments)}function xr(){return xr=(0,e.A)(function*(X){const{tokenizer:pe,molecule:De}=X;for(;"@BOND"!==Bo(pe)&&pe.position{const gr=Math.min(De.num_bonds-Er,mr);for(let Ar=0;Armr.update({message:"Parsing...",current:pe.position,max:Xn})),{count:De.num_bonds,bond_id:(0,pn.do)(dn)(c.VP.Schema.int),origin_atom_id:(0,pn.do)(In)(c.VP.Schema.int),target_atom_id:(0,pn.do)(Tn)(c.VP.Schema.int),bond_type:(0,pn.do)(_n)(c.VP.Schema.str),status_bits:hn>4?(0,pn.do)(Wn)(c.VP.Schema.str):c.VP.Undefined(De.num_bonds,c.VP.Schema.str)}}),xr.apply(this,arguments)}function Ft(X){const{tokenizer:pe}=X;for(;pe.positionMOLECULE"===Ee)return;if("@CRYSIN"===Ee)break;ho(pe)}if(pe.position>=pe.data.length)return;ho(pe);const De=Bo(pe).trim().split(Pt);return{a:parseFloat(De[0]),b:parseFloat(De[1]),c:parseFloat(De[2]),alpha:parseFloat(De[3]),beta:parseFloat(De[4]),gamma:parseFloat(De[5]),spaceGroup:parseInt(De[6],10),setting:parseInt(De[7],10)}}function ht(){return ht=(0,e.A)(function*(X,pe,De){const Ee=(0,i._F)(pe);X.update({message:"Parsing...",current:0,max:pe.length});const qe=[];for(;Ee.positionMOLECULE"!==Bo(Ee)&&Ee.position0){const gr=c.VP.ofIntArray(c.VP.mapToArray(hn.origin_atom_id,Xo=>Xo-1,Int32Array)),Ar=c.VP.ofIntArray(c.VP.mapToArray(hn.target_atom_id,Xo=>Xo-1,Int32Array)),Xr=hn.bond_id,io=c.VP.ofIntArray(c.VP.mapToArray(hn.bond_type,Xo=>{switch(Xo){case"ar":case"am":case"un":return 1;case"du":case"nc":return 0;default:return parseInt(Xo)}},Int8Array)),Mo=c.VP.ofIntArray(c.VP.mapToArray(hn.bond_type,Xo=>{switch(Xo){case"ar":case"am":return 17;case"du":case"nc":return 0;default:return 1}},Int8Array)),Oo=To.z.fromData({pairs:{key:Xr,indexA:gr,indexB:Ar,order:io,flag:Mo},count:xt.count},{maxDistance:dn?-1:1/0}),ko=mr.representative;if(To.z.Provider.set(ko,Oo),Gt.j.Provider.set(ko,{data:xt.charge,type:bt.charge_type}),dn){const Xo=on(dn);Xo&&xn.i.Provider.set(ko,Xo)}De.push(ko)}}return new jt.P4(De)}),fn.apply(this,arguments)}function on(X){if(1!==X.setting)return;const pe=cn.O8.create(X.spaceGroup,S.eB.create(X.a,X.b,X.c),S.eB.scale((0,S.eB)(),S.eB.create(X.alpha,X.beta,X.gamma),Math.PI/180));return{spacegroup:cn.is.create(pe),assemblies:[],isNonStandardCrystalFrame:!1,ncsOperators:[]}}var En;!function(X){X.is=function pe(Ee){return"mol2"===Ee?.kind},X.create=function De(Ee){return{kind:"mol2",name:Ee.name,data:Ee}}}(En||(En={}));const Fe=new Uint32Array([0,0,0,0,0,0,0,0,0,8,10,12,16,20,25,32,40,50,64,80,101,128,161,203,256,322,406,512,645,812,1024,1290,1625,2048,2580,3250,4096,5060,6501,8192,10321,13003,16384,20642,26007,32768,41285,52015,65536,82570,104031,131072,165140,208063,262144,330280,416127,524287,660561,832255,1048576,1321122,1664510,2097152,2642245,3329021,4194304,5284491,6658042,8388607,10568983,13316085,16777216]),He=9;var Ye,rr;function ot(){throw new Error("(xdrfile error) Undefined error.")}function St(){return St=(0,e.A)(function*(X,pe){const De=new DataView(pe.buffer,pe.byteOffset),Ee={frames:[],boxes:[],times:[],timeOffset:0,deltaTime:0},qe=Ee.frames,bt=Ee.boxes,xt=Ee.times,hn=[0,0,0,0,0,0],dn=[0,0,0],In=[0,0,0],Tn=[0,0,0],_n=[.1,.1,.1],Wn=[.1,.1,.1];let Xn=0;const Er=Ye.buf;for(;;){let $n;const mr=De.getInt32(Xn+4);Xn+=12,xt.push(De.getFloat32(Xn)),Xn+=4;const gr=new Float32Array(9);for(let Ar=0;Ar<9;++Ar)gr[Ar]=10*De.getFloat32(Xn),Xn+=4;if(bt.push(gr),mr<=9){$n={count:mr/3,x:new Float32Array(mr/3),y:new Float32Array(mr/3),z:new Float32Array(mr/3)};for(let Ar=0;Ar16777215?(In[0]=Ye.sizeOfInt(dn[0]),In[1]=Ye.sizeOfInt(dn[1]),In[2]=Ye.sizeOfInt(dn[2]),Mo=0):Mo=Ye.sizeOfInts(3,dn);let Oo=De.getInt32(Xn);Xn+=4;let ko=Oo-1;ko=He>ko?He:ko;let Xo=Fe[ko]/2|0,uo=Fe[Oo]/2|0;Tn[0]=Tn[1]=Tn[2]=Fe[Oo];const yr=4*Math.ceil(De.getInt32(Xn)/4);Xn+=4;const bo=1/io;let $r=0,_r=0;for(_n[0]=_n[1]=_n[2]=0;_r0){_n[0]=_n[1]=_n[2]=0;for(let wi=0;wi<$r;wi+=3){if(Ye.decodeInts(pe,Xn,Oo,Tn,_n),_r++,_n[0]+=Wn[0]-uo,_n[1]+=Wn[1]-uo,_n[2]+=Wn[2]-uo,0===wi){let ui=_n[0];_n[0]=Wn[0],Wn[0]=ui,ui=_n[1],_n[1]=Wn[1],Wn[1]=ui,ui=_n[2],_n[2]=Wn[2],Wn[2]=ui,$n.x[Ar]=Wn[0]*bo,$n.y[Ar]=Wn[1]*bo,$n.z[Ar]=Wn[2]*bo,Ar++}else Wn[0]=_n[0],Wn[1]=_n[1],Wn[2]=_n[2];$n.x[Ar]=_n[0]*bo,$n.y[Ar]=_n[1]*bo,$n.z[Ar]=_n[2]*bo,Ar++}}else $n.x[Ar]=_n[0]*bo,$n.y[Ar]=_n[1]*bo,$n.z[Ar]=_n[2]*bo,Ar++;Oo+=Ho,Ho<0?(uo=Xo,Xo=Oo>He?Fe[Oo-1]/2|0:0):Ho>0&&(Xo=uo,uo=Fe[Oo]/2|0),Tn[0]=Tn[1]=Tn[2]=Fe[Oo],(0===Tn[0]||0===Tn[1]||0===Tn[2])&&ot()}Xn+=yr}for(let Ar=0;Ar=pe.length)break}return xt.length>=1&&(Ee.timeOffset=xt[0]),xt.length>=2&&(Ee.deltaTime=xt[1]-xt[0]),Ee}),St.apply(this,arguments)}function zt(X){let pe=X.position>=X.data.length-1?0:+i._F.readLine(X);isNaN(pe)&&(pe=0);const De=i._F.readLine(X),Ee=new Float64Array(pe),qe=new Float64Array(pe),bt=new Float64Array(pe),xt=new Array(pe);for(let hn=0;hn=_n&&Wn<32;)Wn++,_n<<=1;return Wn};const De=new Uint8Array(32);X.sizeOfInts=function Ee(Tn,_n){let Wn=1,Xn=0;De[0]=1;for(let $n=0;$n>=8;for(;0!==gr;)De[mr++]=255&gr,gr>>=8;Wn=mr}let Er=1;for(Wn--;De[Wn]>=Er;)Xn++,Er*=2;return Xn+8*Wn};const qe=new ArrayBuffer(24);X.buf=new Int32Array(qe);const bt=new Uint32Array(qe);function xt(Tn,_n,Wn){let Xn=Wn;const Er=(1<=8;)mr=mr<<8|Tn[_n+gr++],Ar|=mr>>$n<0&&($n>$n&(1<>bt[1]&255}X.decodeBits=xt;const dn=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];X.decodeInts=function In(Tn,_n,Wn,Xn,Er){let $n=Wn,mr=0;for(dn[0]=0,dn[1]=0,dn[2]=0,dn[3]=0;$n>8;)dn[mr++]=hn(Tn,_n),$n-=8;$n>0&&(dn[mr++]=xt(Tn,_n,$n));for(let gr=2;gr>0;gr--){let Ar=0;const Xr=Xn[gr];for(let io=mr-1;io>=0;io--){Ar=Ar<<8|dn[io];const Mo=Ar/Xr|0;dn[io]=Mo,Ar-=Mo*Xr}Er[gr]=Ar}Er[0]=dn[0]|dn[1]<<8|dn[2]<<16|dn[3]<<24}}(Ye||(Ye={})),function(X){X.is=function pe(Ee){return"xyz"===Ee?.kind},X.create=function De(Ee){return{kind:"xyz",name:"xyz",data:Ee}}}(rr||(rr={}));const vo="$$$$";function lo(X){const pe=i._F.readLine(X).trim(),De=i._F.readLine(X).trim(),Ee=i._F.readLine(X).trim(),qe=i._F.readLine(X),bt=function tr(X){return X.trim().endsWith("V3000")}(qe),{atomCount:xt,bondCount:hn}=bt?function Tr(X){const pe=i.tM.create(X.data,1),De=i.tM.create(X.data,1);return i._F.eatLine(X),Ao(X),Ao(X),Ao(X),yo(X,pe),yo(X,De),i._F.eatLine(X),{atomCount:(0,pn.do)(pe)(c.VP.Schema.int).value(0),bondCount:(0,pn.do)(De)(c.VP.Schema.int).value(0)}}(X):function Do(X){return{atomCount:+X.substr(0,3),bondCount:+X.substr(3,3)}}(qe);if(Number.isNaN(xt)||Number.isNaN(hn)){for(;X.position ")){i.tM.add(pe,X.tokenStart+2,X.tokenEnd),i._F.markLine(X);const qe=X.tokenStart;let bt=X.tokenEnd,xt=!1;for(;X.position ")){i.tM.add(De,qe,bt),xt=!0;break}bt=X.tokenEnd}xt||i.tM.add(De,qe,bt)}}return{dataHeader:(0,pn.do)(pe)(c.VP.Schema.str),data:(0,pn.do)(De)(c.VP.Schema.str)}}(X);return{molFile:{title:pe,program:De,comment:Ee,atoms:In,bonds:Tn,formalCharges:_n},dataItems:Wn}}var Po;function Yr(X){return r.YZ.create("Parse SDF",pe=>un(X.molFile,Po.create(X),pe))}function Co(){return Co=(0,e.A)(function*(X){const pe=new DataView(X.buffer),De={frames:[],boxes:[],times:[],timeOffset:0,deltaTime:0},Ee=De.frames,qe=De.boxes,bt=De.times;let xt=0;for(;;){xt+=8;const hn=pe.getInt32(xt);xt+=4,xt+=hn;const dn=pe.getInt32(xt+8),In=pe.getInt32(xt+12),Tn=pe.getInt32(xt+16),_n=pe.getInt32(xt+28),Wn=pe.getInt32(xt+32),Xn=pe.getInt32(xt+36),Er=pe.getInt32(xt+40);xt+=52;const $n=dn/9,mr=3*Er;if(bt.push(8===$n?pe.getFloat64(xt):pe.getFloat32(xt)),xt+=2*$n,dn){const gr=new Float32Array(9);if(8===$n)for(let Ar=0;Ar<9;++Ar)gr[Ar]=10*pe.getFloat64(xt),xt+=8;else for(let Ar=0;Ar<9;++Ar)gr[Ar]=10*pe.getFloat32(xt),xt+=4;qe.push(gr)}if(xt+=In,xt+=Tn,_n){const gr=new Float32Array(Er),Ar=new Float32Array(Er),Xr=new Float32Array(Er);if(8===$n)for(let io=0;io>8&65280|ko>>24&255}const Mo=new Float32Array(X.buffer,xt,mr);for(let Oo=0;Oo=X.byteLength)break}return bt.length>=1&&(De.timeOffset=bt[0]),bt.length>=2&&(De.deltaTime=bt[1]-bt[0]),De}),Co.apply(this,arguments)}!function(X){X.is=function pe(Ee){return"sdf"===Ee?.kind},X.create=function De(Ee){return{kind:"sdf",name:Ee.molFile.title,data:Ee}}}(Po||(Po={}));const Yo=[];class ci{constructor(pe,De={}){this._mark=0,this._marks=[],this.offset=0,this.littleEndian=!0;let Ee=!1;void 0===pe&&(pe=8192),"number"==typeof pe?pe=new ArrayBuffer(pe):Ee=!0;const qe=De.offset?De.offset>>>0:0,bt=pe.byteLength-qe;let xt=qe;pe instanceof ArrayBuffer||(pe.byteLength!==pe.buffer.byteLength&&(xt=pe.byteOffset+qe),pe=pe.buffer),this._lastWrittenByte=Ee?bt:0,this.buffer=pe,this.length=bt,this.byteLength=bt,this.byteOffset=xt,this._data=new DataView(this.buffer,xt,bt)}available(pe=1){return this.offset+pe<=this.length}isLittleEndian(){return this.littleEndian}setLittleEndian(){return this.littleEndian=!0,this}isBigEndian(){return!this.littleEndian}setBigEndian(){return this.littleEndian=!1,this}skip(pe){return void 0===pe&&(pe=1),this.offset+=pe,this}seek(pe){return this.offset=pe,this}mark(){return this._mark=this.offset,this}reset(){return this.offset=this._mark,this}pushMark(){return this._marks.push(this.offset),this}popMark(){const pe=this._marks.pop();if(void 0===pe)throw new Error("Mark stack empty");return this.seek(pe),this}rewind(){return this.offset=0,this}ensureAvailable(pe){if(void 0===pe&&(pe=1),!this.available(pe)){const Ee=2*(this.offset+pe),qe=new Uint8Array(Ee);qe.set(new Uint8Array(this.buffer)),this.buffer=qe.buffer,this.length=this.byteLength=Ee,this._data=new DataView(this.buffer)}return this}readBoolean(){return 0!==this.readUint8()}readInt8(){return this._data.getInt8(this.offset++)}readUint8(){return this._data.getUint8(this.offset++)}readByte(){return this.readUint8()}readBytes(pe){void 0===pe&&(pe=1);const De=new Uint8Array(pe);for(let Ee=0;Eethis._lastWrittenByte&&(this._lastWrittenByte=this.offset)}}function Jo(X,pe){if(X)throw new TypeError("Not a valid NetCDF v3.x file: "+pe)}function Fi(X){X.offset%4!=0&&X.skip(4-X.offset%4)}function hi(X){const pe=X.readUint32(),De=X.readChars(pe);return Fi(X),De}const No={BYTE:1,CHAR:2,SHORT:3,INT:4,FLOAT:5,DOUBLE:6};function Ci(X){switch(Number(X)){case No.BYTE:return"byte";case No.CHAR:return"char";case No.SHORT:return"short";case No.INT:return"int";case No.FLOAT:return"float";case No.DOUBLE:return"double";default:return"undefined"}}function mi(X){switch(Number(X)){case No.BYTE:case No.CHAR:return 1;case No.SHORT:return 2;case No.INT:case No.FLOAT:return 4;case No.DOUBLE:return 8;default:return-1}}function qi(X){switch(String(X)){case"byte":return No.BYTE;case"char":return No.CHAR;case"short":return No.SHORT;case"int":return No.INT;case"float":return No.FLOAT;case"double":return No.DOUBLE;default:return-1}}function Oi(X,pe){if(1!==X){const De=new Array(X);for(let Ee=0;Ee6,"non valid type "+xt);const hn=X.readUint32(),dn=ti(X,xt,hn);Fi(X),pe[qe]={name:bt,type:Ci(xt),value:dn}}}return pe}class zr{constructor(pe){const De=new ci(pe);De.setBigEndian(),Jo("CDF"!==De.readChars(3),"should start with CDF");const Ee=De.readByte();Jo(Ee>2,"unknown version"),this.header=function Qi(X,pe){const De={recordDimension:{length:X.readUint32()}};De.version=pe;const Ee=function Hn(X){let pe,De,Ee;const qe=X.readUint32();if(qe===ni)return Jo(X.readUint32()!==ni,"wrong empty tag for list of dimensions"),[];{Jo(10!==qe,"wrong tag for list of dimensions");const bt=X.readUint32();pe=new Array(bt);for(let xt=0;xt6,"non valid type "+Wn);const Xn=X.readUint32();let Er=X.readUint32();2===De&&(Jo(Er>0,"offsets larger than 4GB not supported"),Er=X.readUint32()),Tn[0]===pe&&(qe+=Xn),bt[hn]={name:dn,dimensions:Tn,attributes:_n,type:Ci(Wn),size:Xn,offset:Er,record:Tn[0]===pe}}}return{variables:bt,recordStep:qe}}(X,Ee.recordId,pe);return De.variables=qe.variables,De.recordDimension.recordStep=qe.recordStep,De}(De,Ee),this.buffer=De}get version(){return 1===this.header.version?"classic format":"64-bit offset format"}get recordDimension(){return this.header.recordDimension}get dimensions(){return this.header.dimensions}get globalAttributes(){return this.header.globalAttributes}get variables(){return this.header.variables}hasDataVariable(pe){return this.header.variables&&-1!==this.header.variables.findIndex(De=>De.name===pe)}getDataVariable(pe){var De;let Ee;if(Ee="string"==typeof pe?null===(De=this.header.variables)||void 0===De?void 0:De.find(qe=>qe.name===pe):pe,void 0===Ee)throw new Error("variable not found");return this.buffer.seek(Ee.offset),Ee.record?function Pi(X,pe,De){const Ee=qi(pe.type),qe=pe.size?pe.size/mi(Ee):1,bt=De.length,xt=new Array(bt),hn=De.recordStep;for(let dn=0;dn=1&&(De.timeOffset=De.time[0]),De.time.length>=2&&(De.deltaTime=De.time[1]-De.time[0])),De}),kr.apply(this,arguments)}var Bi,Ei;!function(X){X.is=function pe(Ee){return"prmtop"===Ee?.kind},X.fromPrmtop=function De(Ee){return{kind:"prmtop",name:Ee.title.join(" ")||"PRMTOP",data:Ee}}}(Bi||(Bi={})),function(X){X.is=function pe(Ee){return"top"===Ee?.kind},X.fromTop=function De(Ee){return{kind:"top",name:Ee.system||"TOP",data:Ee}}}(Ei||(Ei={}));const Ht=Zt.H.BuiltIn({name:"coordinates-from-dcd",display:{name:"Parse DCD",description:"Parse DCD binary data."},from:[Zt.O.Data.Binary],to:Zt.O.Molecule.Coordinates})({apply:({a:X})=>r.YZ.create("Parse DCD",function(){var pe=(0,e.A)(function*(De){const Ee=yield function y(X){return r.YZ.create("Parse DCD",function(){var pe=(0,e.A)(function*(De){try{const Ee=function A(X){const pe=new DataView(X.buffer),De=Object.create(null),Ee=[];let qe=0;const bt=new Int32Array(X.buffer,0,23),xt=bt[0]!==pe.getInt32(0);if(84!==bt[0]){const $n=X.byteLength;for(let mr=0;mr<$n;mr+=4)pe.setFloat32(mr,pe.getFloat32(mr),!0)}if(84!==bt[0])throw new Error("dcd bad format, header block start");if("CORD"!==String.fromCharCode(pe.getUint8(4),pe.getUint8(5),pe.getUint8(6),pe.getUint8(7)))throw new Error("dcd bad format, format string");let dn=!1,In=!1,Tn=!1;if(0!==bt[22]&&(dn=!0,0!==bt[12]&&(In=!0),1===bt[13]&&(Tn=!0)),De.NSET=bt[2],De.ISTART=bt[3],De.NSAVC=bt[4],De.NAMNF=bt[10],De.DELTA=dn?pe.getFloat32(44,xt):pe.getFloat64(44,xt),84!==bt[22])throw new Error("dcd bad format, header block end");qe=qe+84+8;const _n=pe.getInt32(qe,xt),Wn=qe+1;if((_n-4)%80!=0)throw new Error("dcd bad format, title block start");if(De.TITLE=(0,t.$q)(X.subarray(Wn,_n)),pe.getInt32(Wn+_n+4-1,xt)!==_n)throw new Error("dcd bad format, title block end");if(qe=qe+_n+8,4!==pe.getInt32(qe,xt))throw new Error("dcd bad format, natom block start");if(De.NATOM=pe.getInt32(qe+4,xt),4!==pe.getInt32(qe+8,xt))throw new Error("dcd bad format, natom block end");if(qe=qe+4+8,De.NAMNF>0)throw new Error("dcd format with fixed atoms unsupported, aborting");const Xn=De.NATOM,Er=4*Xn;for(let $n=0,mr=De.NSET;$n=1?(Ee.ISTART-1)*qe.value:0,qe.unit),xt=[];for(let hn=0,dn=X.frames.length;hn=-1&&_n[1]<=1&&_n[3]>=-1&&_n[3]<=1&&_n[4]>=-1&&_n[4]<=1?ee.create(S.eB.create(_n[0],_n[2],_n[5]),S.eB.create((0,Y.pu)(90-90*Math.asin(_n[1])/Y.fC),(0,Y.pu)(90-90*Math.asin(_n[3])/Y.fC),(0,Y.pu)(90-90*Math.asin(_n[4])/Y.fC))):_n[0]<0||_n[1]<0||_n[2]<0||_n[3]<0||_n[4]<0||_n[5]<0||_n[3]>180||_n[4]>180||_n[5]>180?ee.fromBasis(S.eB.create(_n[0],_n[1],_n[3]),S.eB.create(_n[1],_n[2],_n[4]),S.eB.create(_n[3],_n[4],_n[5])):ee.create(S.eB.create(_n[0],_n[2],_n[5]),S.eB.create((0,Y.pu)((0,g.T)(_n[1],0,g.p)?90:_n[1]),(0,Y.pu)((0,g.T)(_n[3],0,g.p)?90:_n[3]),(0,Y.pu)((0,g.T)(_n[4],0,g.p)?90:_n[4])))}xt.push(Tn)}return q.E.create(xt,qe,bt)});return function(De){return pe.apply(this,arguments)}}())}(Ee.result).runInContext(De);return new Zt.O.Molecule.Coordinates(qe,{label:X.label,description:"Coordinates"})});return function(De){return pe.apply(this,arguments)}}())}),Gn=Zt.H.BuiltIn({name:"coordinates-from-xtc",display:{name:"Parse XTC",description:"Parse XTC binary data."},from:[Zt.O.Data.Binary],to:Zt.O.Molecule.Coordinates})({apply:({a:X})=>r.YZ.create("Parse XTC",function(){var pe=(0,e.A)(function*(De){const Ee=yield function vt(X){return r.YZ.create("Parse XTC",function(){var pe=(0,e.A)(function*(De){try{De.update({canAbort:!0,message:"Parsing trajectory..."});const Ee=yield function rt(X,pe){return St.apply(this,arguments)}(De,X);return o.H.success(Ee)}catch(Ee){return o.H.error(""+Ee)}});return function(De){return pe.apply(this,arguments)}}())}(X.data).runInContext(De);if(Ee.isError)throw new Error(Ee.message);const qe=yield function mn(X){return r.YZ.create("Parse XTC",function(){var pe=(0,e.A)(function*(De){yield De.update("Converting to coordinates");const Ee=(0,q.g)(X.deltaTime,"step"),qe=(0,q.g)(X.timeOffset,Ee.unit),bt=[];for(let xt=0,hn=X.frames.length;xtr.YZ.create("Parse TRR",function(){var pe=(0,e.A)(function*(De){const Ee=yield function Eo(X){return r.YZ.create("Parse TRR",function(){var pe=(0,e.A)(function*(De){try{De.update({canAbort:!0,message:"Parsing trajectory..."});const Ee=yield function jr(X){return Co.apply(this,arguments)}(X);return o.H.success(Ee)}catch(Ee){return o.H.error(""+Ee)}});return function(De){return pe.apply(this,arguments)}}())}(X.data).runInContext(De);if(Ee.isError)throw new Error(Ee.message);const qe=yield function Fo(X){return r.YZ.create("Parse TRR",function(){var pe=(0,e.A)(function*(De){yield De.update("Converting to coordinates");const Ee=(0,q.g)(X.deltaTime,"step"),qe=(0,q.g)(X.timeOffset,Ee.unit),bt=[];for(let xt=0,hn=X.frames.length;xtr.YZ.create("Parse NCTRAJ",function(){var pe=(0,e.A)(function*(De){const Ee=yield function Qr(X){return r.YZ.create("Parse NCTRAJ",function(){var pe=(0,e.A)(function*(De){try{De.update({canAbort:!0,message:"Parsing trajectory..."});const Ee=yield function lr(X){return kr.apply(this,arguments)}(X);return o.H.success(Ee)}catch(Ee){return o.H.error(""+Ee)}});return function(De){return pe.apply(this,arguments)}}())}(X.data).runInContext(De);if(Ee.isError)throw new Error(Ee.message);const qe=yield function vi(X){return r.YZ.create("Parse NCTRAJ",function(){var pe=(0,e.A)(function*(De){yield De.update("Converting to coordinates");const Ee=(0,q.g)(X.deltaTime,"step"),qe=(0,q.g)(X.timeOffset,Ee.unit),bt=[];for(let xt=0,hn=X.coordinates.length;xtr.YZ.create("Create Topology",function(){var pe=(0,e.A)(function*(De){const Ee=yield function Dn(X){return r.YZ.create("Parse PSF",function(){var pe=(0,e.A)(function*(De){const Ee=bn.fromPsf(X),qe=function nn(X){const pe=new Array(X.count),De=new Array(X.count),Ee=new Uint32Array(X.count),qe=new Uint32Array(X.count),bt=new Array(X.count),xt=new K.V,hn=new we.N(X.residueId,X.atomName);let dn="",In=0,Tn="",_n=0,Wn=X.segmentName.value(0),Xn=!1,Er=0,$n=-1;for(let gr=0,Ar=X.count;grbt.value(dn)-1,rowCount:bt.rowCount,schema:bt.schema}),indexB:c.VP.ofLambda({value:dn=>xt.value(dn)-1,rowCount:xt.rowCount,schema:xt.schema}),order:c.VP.ofConst(1,X.bonds.count,c.VP.Schema.int)};return Mt.c.create(X.id,qe,hn,Ee)});return function(De){return pe.apply(this,arguments)}}())}(X.data).runInContext(De);return new Zt.O.Molecule.Topology(Ee,{label:Ee.label||X.label,description:"Topology"})});return function(De){return pe.apply(this,arguments)}}())}),sr=Zt.H.BuiltIn({name:"topology-from-prmtop",display:{name:"PRMTOP Topology",description:"Create topology from PRMTOP."},from:[Zt.O.Format.Prmtop],to:Zt.O.Molecule.Topology})({apply:({a:X})=>r.YZ.create("Create Topology",function(){var pe=(0,e.A)(function*(De){const Ee=yield function Li(X){return r.YZ.create("Parse PRMTOP",function(){var pe=(0,e.A)(function*(De){const Ee=Bi.fromPrmtop(X),qe=function Ti(X){const{pointers:pe,residuePointer:De,residueLabel:Ee,atomName:qe}=X,bt=pe.NATOM,xt=pe.NRES,hn=new Uint32Array(bt),dn=[],In=(_r,eo,Ho)=>{const wi=Ee.value(_r);for(let ui=eo,Ss=Ho;ui_n_nr.YZ.create("Create Topology",function(){var pe=(0,e.A)(function*(De){const Ee=yield function ln(X){return r.YZ.create("Parse TOP",function(){var pe=(0,e.A)(function*(De){const Ee=Ei.fromTop(X),qe=function bi(X){const{molecules:pe,compounds:De}=X,Ee={};let qe=0;for(let _r=0,eo=pe._rowCount;_rr.YZ.create("Create trajectory from model/topology and coordinates",function(){var De=(0,e.A)(function*(Ee){const qe=pe[X.coordinatesRef].data,bt=yield function Br(X,pe,De){return st.apply(this,arguments)}(Ee,pe[X.modelRef],qe);return new Zt.O.Molecule.Trajectory(bt,{label:"Trajectory",description:`${bt.frameCount} model${1===bt.frameCount?"":"s"}`})});return function(Ee){return De.apply(this,arguments)}}())}),at=Zt.H.BuiltIn({name:"trajectory-from-blob",display:{name:"Parse Blob",description:"Parse format blob into a single trajectory."},from:Zt.O.Format.Blob,to:Zt.O.Molecule.Trajectory})({apply:({a:X})=>r.YZ.create("Parse Format Blob",function(){var pe=(0,e.A)(function*(De){const Ee=[];for(const bt of X.data){if("cif"!==bt.kind)continue;const xt=bt.data.blocks[0],hn=yield(0,ve.OQ)(xt).runInContext(De);if(0===hn.frameCount)throw new Error("No models found.");for(let dn=0;dn!0===Ee.loadAllBlocks})),blockIndex:L.t.Optional(L.t.Numeric(0,{min:0,step:1},{description:"Zero-based index of the block to parse. Only applies when Block Header parameter is not specified.",hideIf:Ee=>!0===Ee.loadAllBlocks||Ee.blockHeader}))};const{blocks:pe}=X.data,De=pe.map(Ee=>[Ee.header,Ee.header]);return De.push(["","[Use Block Index]"]),{loadAllBlocks:L.t.Optional(L.t.Boolean(!1,{description:"If True, ignore Block Header and Block Index parameters and parse all data blocks into a single trajectory."})),blockHeader:L.t.Optional(L.t.Select(pe[0]&&pe[0].header,De,{description:"Header of the block to parse. If not specifed, Block Index parameter applies.",hideIf:Ee=>!0===Ee.loadAllBlocks})),blockIndex:L.t.Optional(L.t.Numeric(0,{min:0,step:1,max:pe.length-1},{description:"Zero-based index of the block to parse. Only applies when Block Header parameter is not specified.",hideIf:Ee=>!0===Ee.loadAllBlocks||Ee.blockHeader}))}}})({isApplicable:X=>X.data.blocks.length>0,apply:({a:X,params:pe})=>r.YZ.create("Parse mmCIF",function(){var De=(0,e.A)(function*(Ee){var qe;let bt;if(pe.loadAllBlocks){const hn=[];for(const dn of X.data.blocks){Ee.shouldUpdate&&(yield Ee.update(`Parsing ${dn.header}...`));const In=yield(0,ve.OQ)(dn).runInContext(Ee);for(let Tn=0;TnTn.header===hn);if(!dn)throw new Error(`Data block '${[hn]}' not found.`);bt=!dn.categoryNames.includes("chem_comp_atom")||dn.categoryNames.includes("atom_site")||dn.categoryNames.includes("ihm_sphere_obj_site")||dn.categoryNames.includes("ihm_gaussian_obj_site")?yield(0,ve.OQ)(dn,X.data).runInContext(Ee):yield(0,ve.YG)(dn).runInContext(Ee)}if(0===bt.frameCount)throw new Error("No models found.");const xt=Et(bt);return new Zt.O.Molecule.Trajectory(bt,xt)});return function(Ee){return De.apply(this,arguments)}}())}),qt=Zt.H.BuiltIn({name:"trajectory-from-pdb",display:{name:"Parse PDB",description:"Parse PDB string and create trajectory."},from:[Zt.O.Data.String],to:Zt.O.Molecule.Trajectory,params:{isPdbqt:L.t.Boolean(!1)}})({apply:({a:X,params:pe})=>r.YZ.create("Parse PDB",function(){var De=(0,e.A)(function*(Ee){const qe=yield function a(X,pe,De=!1){return r.YZ.create("Parse PDB",function(){var Ee=(0,e.A)(function*(qe){return o.H.success({lines:yield i._F.readAllLinesAsync(X,qe),id:pe,isPdbqt:De})});return function(qe){return Ee.apply(this,arguments)}}())}(X.data,X.label,pe.isPdbqt).runInContext(Ee);if(qe.isError)throw new Error(qe.message);const bt=yield function tt(X){return r.YZ.create("Parse PDB",function(){var pe=(0,e.A)(function*(De){var Ee;yield De.update("Converting to mmCIF");const qe=yield function yt(X){return At.apply(this,arguments)}(X),bt=ve.K4.fromFrame(qe,void 0,rn.create(X)),xt=(0,ne.z)(bt.data.db,!0),hn=yield(0,be.X)(xt,bt,De),dn=null===(Ee=qe.categories.atom_site)||void 0===Ee?void 0:Ee.getField("partial_charge");if(dn&&1===hn.frameCount){const In=hn.representative,Tn=In.atomicHierarchy.atomSourceIndex,Wn=c.VP.isIdentity(Tn)?void 0:Tn.toArray({array:Int32Array}),Xn=dn.toFloatArray(),Er=c.VP.ofFloatArray(Wn?c.VP.mapToArray(Tn,$n=>Xn[$n],Float32Array):Xn);Gt.j.Provider.set(In,{data:Er,type:"GASTEIGER"})}return hn});return function(De){return pe.apply(this,arguments)}}())}(qe.result).runInContext(Ee),xt=Et(bt);return new Zt.O.Molecule.Trajectory(bt,xt)});return function(Ee){return De.apply(this,arguments)}}())}),Cn=Zt.H.BuiltIn({name:"trajectory-from-gro",display:{name:"Parse GRO",description:"Parse GRO string and create trajectory."},from:[Zt.O.Data.String],to:Zt.O.Molecule.Trajectory})({apply:({a:X})=>r.YZ.create("Parse GRO",function(){var pe=(0,e.A)(function*(De){const Ee=yield function h(X){return r.YZ.create("Parse GRO",function(){var pe=(0,e.A)(function*(De){return yield function s(X,pe){return C.apply(this,arguments)}(X,De)});return function(De){return pe.apply(this,arguments)}}())}(X.data).runInContext(De);if(Ee.isError)throw new Error(Ee.message);const qe=yield function re(X){return r.YZ.create("Parse GRO",function(){var pe=(0,e.A)(function*(De){const Ee=ue.fromGro(X),qe=[];for(let bt=0,xt=X.structures.length;btr.YZ.create("Parse XYZ",function(){var pe=(0,e.A)(function*(De){const Ee=yield function Vn(X){return r.YZ.create("Parse Mol",(0,e.A)(function*(){return function an(X){const pe=(0,i._F)(X),De=[];for(;;){const qe=zt(pe);if(0===qe.count)break;De.push(qe)}return o.H.success({molecules:De})}(X)}))}(X.data).runInContext(De);if(Ee.isError)throw new Error(Ee.message);const qe=yield function Vr(X){return r.YZ.create("Parse XYZ",pe=>function Fn(X,pe){const{molecules:De}=X;let Ee=0;for(const Xr of De)Ee+=Xr.count;const qe=new Array(Ee),bt=new Int32Array(Ee),xt=new Float32Array(Ee),hn=new Float32Array(Ee),dn=new Float32Array(Ee),In=new Int32Array(Ee);let Tn=0;for(let Xr=0;Xrr.YZ.create("Parse MOL",function(){var pe=(0,e.A)(function*(De){const Ee=yield function Jr(X){return r.YZ.create("Parse Mol",(0,e.A)(function*(){return function Or(X){const pe=(0,i._F)(X),De=i._F.readLine(pe).trim(),Ee=i._F.readLine(pe).trim(),qe=i._F.readLine(pe).trim(),bt=i._F.readLine(pe),xt=+bt.substr(0,3),hn=+bt.substr(3,3),dn=Pr(pe,xt),In=or(pe,hn),Tn=Ir(pe);return o.H.success({title:De,program:Ee,comment:qe,atoms:dn,bonds:In,formalCharges:Tn})}(X)}))}(X.data).runInContext(De);if(Ee.isError)throw new Error(Ee.message);const qe=yield function Yt(X){return r.YZ.create("Parse MOL",pe=>un(X,void 0,pe))}(Ee.result).runInContext(De),bt=Et(qe);return new Zt.O.Molecule.Trajectory(qe,bt)});return function(De){return pe.apply(this,arguments)}}())}),nr=Zt.H.BuiltIn({name:"trajectory-from-sdf",display:{name:"Parse SDF",description:"Parse SDF string and create trajectory."},from:[Zt.O.Data.String],to:Zt.O.Molecule.Trajectory})({apply:({a:X})=>r.YZ.create("Parse SDF",function(){var pe=(0,e.A)(function*(De){const Ee=yield function ao(X){return r.YZ.create("Parse Sdf",(0,e.A)(function*(){return function So(X){const pe=(0,i._F)(X),De=[];for(;pe.positionr.YZ.create("Parse MOL2",function(){var pe=(0,e.A)(function*(De){const Ee=yield function pt(X,pe){return r.YZ.create("Parse MOL2",function(){var De=(0,e.A)(function*(Ee){return yield function Qt(X,pe,De){return ht.apply(this,arguments)}(Ee,X,pe)});return function(Ee){return De.apply(this,arguments)}}())}(X.data,X.label).runInContext(De);if(Ee.isError)throw new Error(Ee.message);const qe=yield function Tt(X){return r.YZ.create("Parse MOL2",pe=>function Xt(X,pe){return fn.apply(this,arguments)}(X,pe))}(Ee.result).runInContext(De),bt=Et(qe);return new Zt.O.Molecule.Trajectory(qe,bt)});return function(De){return pe.apply(this,arguments)}}())}),Rr=Zt.H.BuiltIn({name:"trajectory-from-cube",display:{name:"Parse Cube",description:"Parse Cube file to create a trajectory."},from:Zt.O.Format.Cube,to:Zt.O.Molecule.Trajectory})({apply:({a:X})=>r.YZ.create("Parse MOL",function(){var pe=(0,e.A)(function*(De){const Ee=yield function ro(X){return r.YZ.create("Parse Cube",pe=>function Sr(X,pe){return Ur.apply(this,arguments)}(X,pe))}(X.data).runInContext(De),qe=Et(Ee);return new Zt.O.Molecule.Trajectory(Ee,qe)});return function(De){return pe.apply(this,arguments)}}())}),mo=Zt.H.BuiltIn({name:"trajectory-from-cif-core",display:{name:"Parse CIF Core",description:"Identify and create all separate models in the specified CIF data block"},from:Zt.O.Format.Cif,to:Zt.O.Molecule.Trajectory,params(X){if(!X)return{blockHeader:L.t.Optional(L.t.Text(void 0,{description:"Header of the block to parse. If none is specifed, the 1st data block in the file is used."}))};const{blocks:pe}=X.data;return{blockHeader:L.t.Optional(L.t.Select(pe[0]&&pe[0].header,pe.map(De=>[De.header,De.header]),{description:"Header of the block to parse"}))}}})({apply:({a:X,params:pe})=>r.YZ.create("Parse CIF Core",function(){var De=(0,e.A)(function*(Ee){const qe=pe.blockHeader||X.data.blocks[0].header,bt=X.data.blocks.find(dn=>dn.header===qe);if(!bt)throw new Error(`Data block '${[qe]}' not found.`);const xt=yield function Fr(X){const pe=Mr.fromFrame(X);return r.YZ.create("Parse CIF Core",De=>function Yn(X,pe,De){return br.apply(this,arguments)}(pe.data.db,pe,De))}(bt).runInContext(Ee);if(0===xt.frameCount)throw new Error("No models found.");const hn=Et(xt);return new Zt.O.Molecule.Trajectory(xt,hn)});return function(Ee){return De.apply(this,arguments)}}())}),Uo=X=>X+1,qo=X=>X-1,ri=Zt.H.BuiltIn({name:"model-from-trajectory",display:{name:"Molecular Model",description:"Create a molecular model from specified index in a trajectory."},from:Zt.O.Molecule.Trajectory,to:Zt.O.Molecule.Model,params:X=>X?{modelIndex:L.t.Converted(Uo,qo,L.t.Numeric(1,{min:1,max:X.data.frameCount,step:1},{description:"Model Index",immediateUpdate:!0}))}:{modelIndex:L.t.Numeric(0,{},{description:"Zero-based index of the model",immediateUpdate:!0})}})({isApplicable:X=>X.data.frameCount>0,apply:({a:X,params:pe})=>r.YZ.create("Model from Trajectory",function(){var De=(0,e.A)(function*(Ee){let qe=pe.modelIndex%X.data.frameCount;qe<0&&(qe+=X.data.frameCount);const bt=yield r.YZ.resolveInContext(X.data.getFrameAtIndex(qe),Ee);return new Zt.O.Molecule.Model(bt,{label:`Model ${qe+1}`,description:1===X.data.frameCount?void 0:`of ${X.data.frameCount}`})});return function(Ee){return De.apply(this,arguments)}}()),interpolate:(X,pe,De)=>({modelIndex:De>=1?pe.modelIndex:X.modelIndex+Math.floor((pe.modelIndex-X.modelIndex+1)*De)}),dispose({b:X}){X?.data.customProperties.dispose()}}),fo=Zt.H.BuiltIn({name:"structure-from-trajectory",display:{name:"Structure from Trajectory",description:"Create a molecular structure from a trajectory."},from:Zt.O.Molecule.Trajectory,to:Zt.O.Molecule.Structure})({apply:({a:X})=>r.YZ.create("Build Structure",function(){var pe=(0,e.A)(function*(De){const Ee=yield jt.oE.ofTrajectory(X.data,De),qe={label:"Ensemble",description:jt.oE.elementDescription(Ee)};return new Zt.O.Molecule.Structure(Ee,qe)});return function(De){return pe.apply(this,arguments)}}()),dispose({b:X}){X?.data.customPropertyDescriptors.dispose()}}),Lo=Zt.H.BuiltIn({name:"structure-from-model",display:{name:"Structure",description:"Create a molecular structure (model, assembly, or symmetry) from the specified model."},from:Zt.O.Molecule.Model,to:Zt.O.Molecule.Structure,params:X=>Vt.z.getParams(X&&X.data)})({canAutoUpdate:({oldParams:X,newParams:pe})=>Vt.z.canAutoUpdate(X.type,pe.type),apply:({a:X,params:pe},De)=>r.YZ.create("Build Structure",function(){var Ee=(0,e.A)(function*(qe){return Vt.z.create(De,qe,X.data,pe&&pe.type)});return function(qe){return Ee.apply(this,arguments)}}()),update:({a:X,b:pe,oldParams:De,newParams:Ee})=>(0,$t.bD)(De,Ee)?pe.data.model===X.data?Ct.xE.UpdateResult.Unchanged:jt.Kx.areHierarchiesEqual(X.data,pe.data.model)?(pe.data=pe.data.remapModel(X.data),Ct.xE.UpdateResult.Updated):Ct.xE.UpdateResult.Recreate:Ct.xE.UpdateResult.Recreate,dispose({b:X}){X?.data.customPropertyDescriptors.dispose()}}),Ni=(0,S.eB)(),rs=(0,S.$I)(),Gi=(0,S.$I)(),_o=Zt.H.BuiltIn({name:"transform-structure-conformation",display:{name:"Transform Conformation"},isDecorator:!0,from:Zt.O.Molecule.Structure,to:Zt.O.Molecule.Structure,params:{transform:L.t.MappedStatic("components",{components:L.t.Group({axis:L.t.Vec3(S.eB.create(1,0,0)),angle:L.t.Numeric(0,{min:-180,max:180,step:.1}),translation:L.t.Vec3(S.eB.create(0,0,0))},{isFlat:!0}),matrix:L.t.Group({data:L.t.Mat4(S.$I.identity()),transpose:L.t.Boolean(!1)},{isFlat:!0})},{label:"Kind"})}})({canAutoUpdate:({newParams:X})=>"matrix"!==X.transform.name,apply({a:X,params:pe}){const De=(0,S.$I)();if("components"===pe.transform.name){const{axis:qe,angle:bt,translation:xt}=pe.transform.params,hn=X.data.boundary.sphere.center;S.$I.fromTranslation(rs,S.eB.negate(Ni,hn)),S.$I.fromTranslation(Gi,S.eB.add(Ni,hn,xt));const dn=S.$I.fromRotation((0,S.$I)(),Math.PI/180*bt,S.eB.normalize((0,S.eB)(),qe));S.$I.mul3(De,Gi,dn,rs)}else"matrix"===pe.transform.name&&(S.$I.copy(De,pe.transform.params.data),pe.transform.params.transpose&&S.$I.transpose(De,De));const Ee=jt.oE.transform(X.data,De);return new Zt.O.Molecule.Structure(Ee,{label:X.label,description:`${X.description} [Transformed]`})},dispose({b:X}){X?.data.customPropertyDescriptors.dispose()}}),hr=Zt.H.BuiltIn({name:"structure-selection-from-expression",display:{name:"Selection",description:"Create a molecular structure from the specified expression."},from:Zt.O.Molecule.Structure,to:Zt.O.Molecule.Structure,params:()=>({expression:L.t.Value(It.J.struct.generator.all,{isHidden:!0}),label:L.t.Optional(L.t.Text("",{isHidden:!0}))})})({apply({a:X,params:pe,cache:De}){const{selection:Ee,entry:qe}=yn.createAndRun(X.data,pe.expression);if(De.entry=qe,jt.cv.isEmpty(Ee))return Ct.BM.Null;const bt=jt.cv.unionStructure(Ee),xt={label:`${pe.label||"Selection"}`,description:jt.oE.elementDescription(bt)};return new Zt.O.Molecule.Structure(bt,xt)},update:({a:X,b:pe,oldParams:De,newParams:Ee,cache:qe})=>{if(De.expression!==Ee.expression)return Ct.xE.UpdateResult.Recreate;const bt=qe.entry;if(bt.currentStructure===X.data)return Ct.xE.UpdateResult.Unchanged;const xt=yn.updateStructure(bt,X.data);return jt.cv.isEmpty(xt)?Ct.xE.UpdateResult.Null:(yn.updateStructureObject(pe,xt,Ee.label),Ct.xE.UpdateResult.Updated)},dispose({b:X}){X?.data.customPropertyDescriptors.dispose()}}),Wr=Zt.H.BuiltIn({name:"structure-multi-selection-from-expression",display:{name:"Multi-structure Measurement Selection",description:"Create selection object from multiple structures."},from:Zt.O.Root,to:Zt.O.Molecule.Structure.Selections,params:()=>({selections:L.t.ObjectList({key:L.t.Text(void 0,{description:"A unique key."}),ref:L.t.Text(),groupId:L.t.Optional(L.t.Text()),expression:L.t.Value(It.J.struct.generator.empty)},X=>X.ref,{isHidden:!0}),isTransitive:L.t.Optional(L.t.Boolean(!1,{isHidden:!0,description:"Remap the selections from the original structure if structurally equivalent."})),label:L.t.Optional(L.t.Text("",{isHidden:!0}))})})({apply({params:X,cache:pe,dependencies:De}){const Ee=new Map,qe=[];let bt=0;for(const hn of X.selections){const{selection:dn,entry:In}=yn.createAndRun(De[hn.ref].data,hn.expression);Ee.set(hn.key,In);const Tn=jt.cv.toLociWithSourceUnits(dn);qe.push({key:hn.key,loci:Tn,groupId:hn.groupId}),bt+=jt.iZ.Loci.size(Tn)}return pe.entries=Ee,new Zt.O.Molecule.Structure.Selections(qe,{label:`${X.label||"Multi-selection"}`,description:`${X.selections.length} source(s), ${bt} element(s) total`})},update:({b:X,oldParams:pe,newParams:De,cache:Ee,dependencies:qe})=>{if(!!pe.isTransitive!=!!De.isTransitive)return Ct.xE.UpdateResult.Recreate;const bt=Ee.entries,xt=new Map,hn=new Map;for(const _n of X.data)hn.set(_n.key,_n);let dn=!1,In=0;const Tn=[];for(const _n of De.selections){const Wn=qe[_n.ref].data;let Xn=!1;if(bt.has(_n.key)){const Er=bt.get(_n.key);if(yn.isUnchanged(Er,_n.expression,Wn)&&hn.has(_n.key)){const $n=hn.get(_n.key);$n.groupId!==_n.groupId&&($n.groupId=_n.groupId,dn=!0),xt.set(_n.key,Er),Tn.push($n),In+=jt.iZ.Loci.size($n.loci);continue}if(Er.expression!==_n.expression)Xn=!0;else{let $n=!1;if(De.isTransitive)if(jt.oE.areUnitIdsAndIndicesEqual(Er.originalStructure,Wn)){const mr=yn.run(Er,Er.originalStructure);Er.currentStructure=Wn,xt.set(_n.key,Er);const gr=jt.iZ.Loci.remap(jt.cv.toLociWithSourceUnits(mr),Wn);Tn.push({key:_n.key,loci:gr,groupId:_n.groupId}),In+=jt.iZ.Loci.size(gr),dn=!0}else $n=!0;else $n=!0;if($n){dn=!0;const mr=yn.updateStructure(Er,Wn);xt.set(_n.key,Er);const gr=jt.cv.toLociWithSourceUnits(mr);Tn.push({key:_n.key,loci:gr,groupId:_n.groupId}),In+=jt.iZ.Loci.size(gr)}}}else Xn=!0;if(Xn){dn=!0;const{selection:Er,entry:$n}=yn.createAndRun(Wn,_n.expression);xt.set(_n.key,$n);const mr=jt.cv.toLociWithSourceUnits(Er);Tn.push({key:_n.key,loci:mr}),In+=jt.iZ.Loci.size(mr)}}return dn?(Ee.entries=xt,X.data=Tn,X.label=`${De.label||"Multi-selection"}`,X.description=`${Tn.length} source(s), ${In} element(s) total`,Ct.xE.UpdateResult.Updated):Ct.xE.UpdateResult.Unchanged}}),no=Zt.H.BuiltIn({name:"structure-selection-from-script",display:{name:"Selection",description:"Create a molecular structure from the specified script."},from:Zt.O.Molecule.Structure,to:Zt.O.Molecule.Structure,params:()=>({script:L.t.Script({language:"mol-script",expression:"(sel.atom.atom-groups :residue-test (= atom.resname ALA))"}),label:L.t.Optional(L.t.Text(""))})})({apply({a:X,params:pe,cache:De}){const{selection:Ee,entry:qe}=yn.createAndRun(X.data,pe.script);De.entry=qe;const bt=jt.cv.unionStructure(Ee),xt={label:`${pe.label||"Selection"}`,description:jt.oE.elementDescription(bt)};return new Zt.O.Molecule.Structure(bt,xt)},update:({a:X,b:pe,oldParams:De,newParams:Ee,cache:qe})=>{if(!Dt.e.areEqual(De.script,Ee.script))return Ct.xE.UpdateResult.Recreate;const bt=qe.entry;if(bt.currentStructure===X.data)return Ct.xE.UpdateResult.Unchanged;const xt=yn.updateStructure(bt,X.data);return yn.updateStructureObject(pe,xt,Ee.label),Ct.xE.UpdateResult.Updated},dispose({b:X}){X?.data.customPropertyDescriptors.dispose()}}),zo=Zt.H.BuiltIn({name:"structure-selection-from-bundle",display:{name:"Selection",description:"Create a molecular structure from the specified structure-element bundle."},from:Zt.O.Molecule.Structure,to:Zt.O.Molecule.Structure,params:()=>({bundle:L.t.Value(jt.iZ.Bundle.Empty,{isHidden:!0}),label:L.t.Optional(L.t.Text("",{isHidden:!0}))})})({apply({a:X,params:pe,cache:De}){if(pe.bundle.hash!==X.data.hashCode)return Ct.BM.Null;De.source=X.data;const Ee=jt.iZ.Bundle.toStructure(pe.bundle,X.data);if(0===Ee.elementCount)return Ct.BM.Null;const qe={label:`${pe.label||"Selection"}`,description:jt.oE.elementDescription(Ee)};return new Zt.O.Molecule.Structure(Ee,qe)},update:({a:X,b:pe,oldParams:De,newParams:Ee,cache:qe})=>{if(!jt.iZ.Bundle.areEqual(De.bundle,Ee.bundle))return Ct.xE.UpdateResult.Recreate;if(Ee.bundle.hash!==X.data.hashCode)return Ct.xE.UpdateResult.Null;if(qe.source===X.data)return Ct.xE.UpdateResult.Unchanged;qe.source=X.data;const bt=jt.iZ.Bundle.toStructure(Ee.bundle,X.data);return 0===bt.elementCount?Ct.xE.UpdateResult.Null:(pe.label=`${Ee.label||"Selection"}`,pe.description=jt.oE.elementDescription(bt),pe.data=bt,Ct.xE.UpdateResult.Updated)},dispose({b:X}){X?.data.customPropertyDescriptors.dispose()}}),Di={polymer:"polymer",protein:"protein",nucleic:"nucleic",water:"water",branched:"branched",ligand:"ligand","non-standard":"non-standard",coarse:"coarse","atomic-sequence":"atomic-sequence","atomic-het":"atomic-het",spheres:"spheres"},zi=L.t.objectToOptions(Di),Ki=Zt.H.BuiltIn({name:"structure-complex-element",display:{name:"Complex Element",description:"Create a molecular structure from the specified model."},from:Zt.O.Molecule.Structure,to:Zt.O.Molecule.Structure,params:{type:L.t.Select("atomic-sequence",zi,{isHidden:!0})}})({apply({a:X,params:pe}){let De,Ee;switch(pe.type){case"polymer":De=kt.Ou.polymer.query,Ee="Polymer";break;case"protein":De=kt.Ou.protein.query,Ee="Protein";break;case"nucleic":De=kt.Ou.nucleic.query,Ee="Nucleic";break;case"water":De=jt.RT.internal.water(),Ee="Water";break;case"branched":De=kt.Ou.branchedPlusConnected.query,Ee="Branched";break;case"ligand":De=kt.Ou.ligandPlusConnected.query,Ee="Ligand";break;case"non-standard":De=kt.Ou.nonStandardPolymer.query,Ee="Non-standard";break;case"coarse":De=kt.Ou.coarse.query,Ee="Coarse";break;case"atomic-sequence":De=jt.RT.internal.atomicSequence(),Ee="Sequence";break;case"atomic-het":De=jt.RT.internal.atomicHet(),Ee="HET Groups/Ligands";break;case"spheres":De=jt.RT.internal.spheres(),Ee="Coarse Spheres";break;default:(0,Ot.dr)(pe.type)}const qe=De(new jt.cY(X.data)),bt=jt.cv.unionStructure(qe);return 0===bt.elementCount?Ct.BM.Null:new Zt.O.Molecule.Structure(bt,{label:Ee,description:jt.oE.elementDescription(bt)})},dispose({b:X}){X?.data.customPropertyDescriptors.dispose()}}),Mi=Zt.H.BuiltIn({name:"structure-component",display:{name:"Component",description:"A molecular structure component."},from:Zt.O.Molecule.Structure,to:Zt.O.Molecule.Structure,params:()=>({type:L.t.MappedStatic("static",{static:L.t.Text("polymer"),expression:L.t.Value(It.J.struct.generator.all),bundle:L.t.Value(jt.iZ.Bundle.Empty),script:L.t.Script({language:"mol-script",expression:"(sel.atom.all)"})},{isHidden:!0}),nullIfEmpty:L.t.Optional(L.t.Boolean(!0,{isHidden:!0})),label:L.t.Text("",{isHidden:!0})})})({apply:({a:X,params:pe,cache:De})=>function On(X,pe,De){De.source=X;let qe,Ee=jt.oE.Empty;switch(pe.type.name){case"static":{let xt;switch(pe.type.params){case"all":xt=kt.Ou.all.query,qe="All";break;case"polymer":xt=kt.Ou.polymer.query,qe="Polymer";break;case"protein":xt=kt.Ou.protein.query,qe="Protein";break;case"nucleic":xt=kt.Ou.nucleic.query,qe="Nucleic";break;case"water":xt=jt.RT.internal.water(),qe="Water";break;case"ion":xt=kt.Ou.ion.query,qe="Ion";break;case"lipid":xt=kt.Ou.lipid.query,qe="Lipid";break;case"branched":xt=kt.Ou.branchedPlusConnected.query,qe="Branched";break;case"ligand":xt=kt.Ou.ligandPlusConnected.query,qe="Ligand";break;case"non-standard":xt=kt.Ou.nonStandardPolymer.query,qe="Non-standard";break;case"coarse":xt=kt.Ou.coarse.query,qe="Coarse";break;default:(0,Ot.dr)(pe.type)}const hn=xt(new jt.cY(X));Ee=jt.cv.unionStructure(hn);break}case"script":case"expression":{const{selection:xt,entry:hn}=yn.createAndRun(X,pe.type.params);De.entry=hn,Ee=jt.cv.unionStructure(xt);break}case"bundle":if(pe.type.params.hash!==X.hashCode)break;Ee=jt.iZ.Bundle.toStructure(pe.type.params,X)}if(pe.nullIfEmpty&&0===Ee.elementCount)return Ct.BM.Null;const bt={label:`${pe.label||qe||"Component"}`,description:jt.oE.elementDescription(Ee)};return new Zt.O.Molecule.Structure(Ee,bt)}(X.data,pe,De),update:({a:X,b:pe,oldParams:De,newParams:Ee,cache:qe})=>function fr(X,pe,De,Ee,qe){if(De.type.name!==Ee.type.name)return Ct.xE.UpdateResult.Recreate;let bt=!1;switch(Ee.type.name){case"static":return De.type.params===Ee.type.params&&jt.oE.areEquivalent(X,qe.source)?pe.data.model===X.model?Ct.xE.UpdateResult.Unchanged:jt.Kx.areHierarchiesEqual(X.model,pe.data.model)?(pe.data=pe.data.remapModel(X.model),Ct.xE.UpdateResult.Updated):Ct.xE.UpdateResult.Recreate:Ct.xE.UpdateResult.Recreate;case"script":if(!Dt.e.areEqual(De.type.params,Ee.type.params))return Ct.xE.UpdateResult.Recreate;case"expression":{if(De.type.params!==Ee.type.params)return Ct.xE.UpdateResult.Recreate;if(X===qe.source)break;const hn=yn.updateStructure(qe.entry,X);qe.source=X,pe.data=jt.cv.unionStructure(hn),yn.updateStructureObject(pe,hn,Ee.label),bt=!0;break}case"bundle":if(X===qe.source&&jt.iZ.Bundle.areEqual(De.type.params,Ee.type.params))break;qe.source=X,Ee.type.params.hash!==X.hashCode?(bt=0!==pe.data.elementCount,pe.data=0===pe.data.elementCount?pe.data:jt.oE.Empty):(bt=!0,pe.data=jt.iZ.Bundle.toStructure(Ee.type.params,X))}if(bt){if(Ee.nullIfEmpty&&0===pe.data.elementCount)return Ct.xE.UpdateResult.Null;pe.description=jt.oE.elementDescription(pe.data)}return De.label!==Ee.label&&(bt=!0,pe.label=`${Ee.label||pe.label}`),bt?Ct.xE.UpdateResult.Updated:Ct.xE.UpdateResult.Unchanged}(X.data,pe,De,Ee,qe),dispose({b:X}){X?.data.customPropertyDescriptors.dispose()}}),ds=Zt.H.BuiltIn({name:"custom-model-properties",display:{name:"Custom Model Properties"},isDecorator:!0,from:Zt.O.Molecule.Model,to:Zt.O.Molecule.Model,params:(X,pe)=>pe.customModelProperties.getParams(X?.data)})({apply:({a:X,params:pe},De)=>r.YZ.create("Custom Props",function(){var Ee=(0,e.A)(function*(qe){return yield he(X.data,De,qe,pe),new Zt.O.Molecule.Model(X.data,{label:X.label,description:X.description})});return function(qe){return Ee.apply(this,arguments)}}()),update:({a:X,b:pe,oldParams:De,newParams:Ee},qe)=>r.YZ.create("Custom Props",function(){var bt=(0,e.A)(function*(xt){pe.data=X.data,pe.label=X.label,pe.description=X.description;for(const hn of De.autoAttach){const dn=qe.customModelProperties.get(hn);dn&&X.data.customProperties.reference(dn.descriptor,!1)}return yield he(X.data,qe,xt,Ee),Ct.xE.UpdateResult.Updated});return function(xt){return bt.apply(this,arguments)}}()),dispose({b:X}){X?.data.customProperties.dispose()}});function he(X,pe,De,Ee){return fe.apply(this,arguments)}function fe(){return fe=(0,e.A)(function*(X,pe,De,Ee){const qe={runtime:De,assetManager:pe.managers.asset},{autoAttach:bt,properties:xt}=Ee;for(const hn of Object.keys(xt)){const dn=pe.customModelProperties.get(hn),In=xt[hn];if(bt.includes(hn)||dn.isHidden)try{yield dn.attach(qe,X,In,!0)}catch(Tn){pe.log.warn(`Error attaching model prop '${hn}': ${Tn}`)}else dn.set(X,In)}}),fe.apply(this,arguments)}const ze=Zt.H.BuiltIn({name:"custom-structure-properties",display:{name:"Custom Structure Properties"},isDecorator:!0,from:Zt.O.Molecule.Structure,to:Zt.O.Molecule.Structure,params:(X,pe)=>pe.customStructureProperties.getParams(X?.data.root)})({apply:({a:X,params:pe},De)=>r.YZ.create("Custom Props",function(){var Ee=(0,e.A)(function*(qe){return yield Ze(X.data.root,De,qe,pe),new Zt.O.Molecule.Structure(X.data,{label:X.label,description:X.description})});return function(qe){return Ee.apply(this,arguments)}}()),update:({a:X,b:pe,oldParams:De,newParams:Ee},qe)=>X.data!==pe.data?Ct.xE.UpdateResult.Recreate:r.YZ.create("Custom Props",function(){var bt=(0,e.A)(function*(xt){pe.data=X.data,pe.label=X.label,pe.description=X.description;for(const hn of De.autoAttach){const dn=qe.customStructureProperties.get(hn);dn&&X.data.customPropertyDescriptors.reference(dn.descriptor,!1)}return yield Ze(X.data.root,qe,xt,Ee),Ct.xE.UpdateResult.Updated});return function(xt){return bt.apply(this,arguments)}}()),dispose({b:X}){X?.data.customPropertyDescriptors.dispose()}});function Ze(X,pe,De,Ee){return it.apply(this,arguments)}function it(){return it=(0,e.A)(function*(X,pe,De,Ee){const qe={runtime:De,assetManager:pe.managers.asset},{autoAttach:bt,properties:xt}=Ee;for(const hn of Object.keys(xt)){const dn=pe.customStructureProperties.get(hn),In=xt[hn];if(bt.includes(hn)||dn.isHidden)try{yield dn.attach(qe,X,In,!0)}catch(Tn){pe.log.warn(`Error attaching structure prop '${hn}': ${Tn}`)}else dn.set(X,In)}}),it.apply(this,arguments)}const Rt=Zt.H.BuiltIn({name:"shape-from-ply",display:{name:"Shape from PLY",description:"Create Shape from PLY data"},from:Zt.O.Format.Ply,to:Zt.O.Shape.Provider,params:X=>({transforms:L.t.Optional(L.t.Value([],{isHidden:!0})),label:L.t.Optional(L.t.Text("",{isHidden:!0}))})})({apply:({a:X,params:pe})=>r.YZ.create("Create shape from PLY",function(){var De=(0,e.A)(function*(Ee){const qe=yield function Z(X,pe){return r.YZ.create("Shape Provider",function(){var De=(0,e.A)(function*(Ee){return{label:"Mesh",data:{source:X,transforms:pe?.transforms},params:U(X),getShape:j(),geometryUtils:f.e.Utils}});return function(Ee){return De.apply(this,arguments)}}())}(X.data,pe).runInContext(Ee);return new Zt.O.Shape.Provider(qe,{label:pe.label||"Shape"})});return function(Ee){return De.apply(this,arguments)}}())})},8010:(tn,Ue,n)=>{"use strict";n.r(Ue),n.d(Ue,{ClippingStructureRepresentation3DFromBundle:()=>Li,ClippingStructureRepresentation3DFromScript:()=>Bi,EmissiveStructureRepresentation3DFromBundle:()=>Qr,EmissiveStructureRepresentation3DFromScript:()=>kr,ExplodeStructureRepresentation3D:()=>Qi,ModelUnitcell3D:()=>Ht,OverpaintStructureRepresentation3DFromBundle:()=>co,OverpaintStructureRepresentation3DFromScript:()=>qr,ShapeRepresentation3D:()=>ln,SpinStructureRepresentation3D:()=>Hn,StructureBoundingBox3D:()=>Gn,StructureRepresentation3D:()=>Wi,StructureSelectionsAngle3D:()=>kn,StructureSelectionsDihedral3D:()=>ur,StructureSelectionsDistance3D:()=>ar,StructureSelectionsLabel3D:()=>sr,StructureSelectionsOrientation3D:()=>Jn,StructureSelectionsPlane3D:()=>Br,SubstanceStructureRepresentation3DFromBundle:()=>Ti,SubstanceStructureRepresentation3DFromScript:()=>vi,ThemeStrengthRepresentation3D:()=>bi,TransparencyStructureRepresentation3DFromBundle:()=>lr,TransparencyStructureRepresentation3DFromScript:()=>zr,UnwindStructureAssemblyRepresentation3D:()=>Ri,VolumeRepresentation3D:()=>Ei,VolumeRepresentation3DHelpers:()=>Vi});var e=n(467),o=n(9136),r=n(6853),t=n(1832),A=n(4824),y=n(1930),c=n(8277),i=n(381),v=n(2745),O=n(542),b=n(2443),_=n(3558),M=n(1413),I=n(8353),l=n(5589),m=n(8013),u=n(6825),d=n(9909),s=n(2712),C=n(7684),h=n(3246),a=n(3543),S=n(5117),D=n(2629);function R(st,et,at={}){let Et=0;const Nt=new M.B,qt=b.YL.createState(),Cn=(0,I.Q0)(),Un=[];let vn,nr,pr=-1;const Rr=y.S.createEmpty();let qo,ri,mo=c.t.getDefaultValues(et.Params);at.modifyState&&b.YL.updateState(qt,at.modifyState(qt));const fo=l.rj.create();function Gi(_o,hr){return(0,h.xc)(_o)||_.y.isLoci(_o)&&_o.shape===nr?hr(a.IX.ofBounds(0,mo.instanceGranularity?nr.transforms.length:nr.groupCount*nr.transforms.length)):mo.instanceGranularity?function rs(_o,hr,Wr){let no=!1;if(!_.$.isLoci(_o)||_.$.isLociEmpty(_o)||_o.shape!==hr)return!1;for(const zo of _o.groups)Wr(a.IX.ofSingleton(zo.instance))&&(no=!0);return no}(_o,nr,hr):function f(st,et,at){if(!_.$.isLoci(st)||st.shape!==et)return!1;let Et=!1;const{groupCount:Nt}=et,{groups:qt}=st;for(const{ids:Cn,instance:Un}of qt)if(a.IX.is(Cn)){const vn=Un*Nt+a.IX.start(Cn),nr=Un*Nt+a.IX.end(Cn);at(a.IX.ofBounds(vn,nr))&&(Et=!0)}else for(let vn=0,nr=Cn.length;vn[_.y.Loci(nr)],eachLocation:_o=>{for(qo.reset();qo.hasNext;){const{location:hr,isSecondary:Wr}=qo.move();_o(hr,Wr)}},mark(_o,hr){if(!u.sY.is(qt.markerActions,hr))return!1;if(_.$.isLoci(_o)||_.y.isLoci(_o)){if(_o.shape!==nr)return!1}else if(!(0,h.xc)(_o))return!1;return S.b.mark(vn,_o,hr,Gi)},setState(_o){at.modifyState&&(_o=at.modifyState(_o)),vn&&(void 0!==_o.visible&&S.b.setVisibility(vn,_o.visible),void 0!==_o.alphaFactor&&S.b.setAlphaFactor(vn,_o.alphaFactor),void 0!==_o.pickable&&S.b.setPickable(vn,_o.pickable),void 0!==_o.colorOnly&&S.b.setColorOnly(vn,_o.colorOnly),void 0!==_o.overpaint&&S.b.setOverpaint(vn,_o.overpaint,Gi,!0),void 0!==_o.transparency&&S.b.setTransparency(vn,_o.transparency,Gi,!0),void 0!==_o.substance&&S.b.setSubstance(vn,_o.substance,Gi,!0),void 0!==_o.transform&&S.b.setTransform(vn,_o.transform)),b.YL.updateState(qt,_o)},setTheme(_o){D.Bb&&console.warn("The `ShapeRepresentation` theme is fixed to `ShapeGroupColorTheme` and `ShapeGroupSizeTheme`. Colors are taken from `Shape.getColor` and sizes from `Shape.getSize`")},destroy(){Un.length=0,vn&&(vn.state.disposed=!0,vn=void 0)}}}var p=n(4369),E=n(3596);const T=(0,p.$I)();class L{constructor(et){this.structure=et,this.groupUnitTransforms=[],this.unitOffsetMap=a.Yz.Mutable(),this.groupIndexMap=a.Yz.Mutable(),this._isIdentity=void 0,this.version=0,this.unitTransforms=new Float32Array(16*et.units.length),this.size=et.units.length,this.reset();let at=0;for(let Et=0,Nt=et.unitSymmetryGroups.length;EtR(Ne,ee.e.Utils)},Se={...we};function Ne(st,et,at,Et){const Nt=function Ve(st,et,at){const Et=g.P.createState(256,128,at),{fromFractional:Nt}=st.symmetry.spacegroup.cell;p.eB.copy(Be,st.ref),"center"===et.attachment?(p.eB.trunc(Be,Be),p.eB.subScalar(Be,Be,.5)):p.eB.floor(Be,Be),p.$I.fromTranslation(Ce,Be);const qt=(0,xe.b0)((0,xe.so)(Ae),Ce),Cn=Math.cbrt(st.symmetry.spacegroup.cell.volume)/300*et.cellScale;Et.currentGroup=1,g.P.addCage(Et,Nt,qt,Cn,2,20);const Un=w.f8.fromDimensionsAndTransform((0,w.f8)(),p.eB.unit,Nt);p.eB.transformMat4(Be,Be,Nt),w.f8.translate(Un,Un,Be),w.f8.expand(Un,Un,Cn);const vn=g.P.getMesh(Et);return vn.setBoundingSphere(Un),vn}(et,at,Et&&Et.geometry),qt=o.vw.getUnitcellLabel(et.symmetry);return _.y.create(qt,et,Nt,()=>at.cellColor,()=>1,()=>qt)}function K(st,et,at){const Et=(0,p.eB)();return"model"===at.ref&&p.eB.transformMat4(Et,o.Kx.getCenter(st),et.spacegroup.cell.toFractional),{symmetry:et,ref:Et}}var be=n(5315),Te=n(4255),ie=n(5821),ue=n(7377),re=n(3917),ve=n(6600);const ce={unitLabel:c.t.Text("\u212b",{isEssential:!0})},se={...be.q.Params,...ce,lineSizeAttenuation:c.t.Boolean(!0),linesColor:c.t.Color(v.s.lightgreen,{isEssential:!0}),linesSize:c.t.Numeric(.075,{min:.01,max:5,step:.01}),dashLength:c.t.Numeric(.2,{min:.01,max:.2,step:.01})},ae={...ve.$,...ce},ge={lines:(st,et)=>R(en,be.q.Utils,{modifyState:at=>({...at,markerActions:u.sY.Highlighting})}),text:(st,et)=>R(pn,Te.E.Utils,{modifyState:at=>({...at,markerActions:u.xi.None})})},Ie={...se,...ae,visuals:c.t.MultiSelect(["lines","text"],c.t.objectToOptions(ge))};function nt(st,et){const{sphereA:at,sphereB:Et,center:Nt}=et,[qt,Cn]=st.loci;return h.QN.getBoundingSphere(qt,at),h.QN.getBoundingSphere(Cn,Et),p.eB.add(Nt,at.center,Et.center),p.eB.scale(Nt,Nt,.5),et.distance=p.eB.distance(at.center,Et.center),et}const je=function Le(){return{sphereA:(0,w.f8)(),sphereB:(0,w.f8)(),center:(0,p.eB)(),distance:0}}();function Lt(st,et){return 1===st.pairs.length?`Distance ${(0,re.W8)(st.pairs[0],{unitLabel:et,measureOnly:!0})}`:`${st.pairs.length} Distances`}function en(st,et,at,Et){const Nt=function Je(st,et,at){const Et=ie.d.create(128,64,at);for(let Nt=0,qt=st.pairs.length;Ntat.linesColor,()=>at.linesSize,Un=>(0,re.W8)(et.pairs[Un],at))}function pn(st,et,at,Et){const Nt=function Bt(st,et,at){const Et=ue.t.create(et,128,64,at);for(let Nt=0,qt=st.pairs.length;Ntat.textColor,()=>at.textSize,Un=>(0,re.W8)(et.pairs[Un],at))}function mt(st){return{pairs:[{loci:[st[0].loci,st[1].loci]}]}}function _t(st){return{triples:[{loci:[st[0].loci,st[1].loci,st[2].loci]}]}}function Me(st){return{quads:[{loci:[st[0].loci,st[1].loci,st[2].loci,st[3].loci]}]}}function Ke(st){return{infos:[{loci:st[0].loci}]}}function ut(st){return{locis:st.map(et=>et.loci)}}function Kt(st){return{locis:st.map(et=>et.loci)}}const sn={...ve.$},gt={text:(st,et)=>R(Mt,Te.E.Utils)},yt={...sn,scaleByRadius:c.t.Boolean(!0),visuals:c.t.MultiSelect(["text"],c.t.objectToOptions(gt)),snapshotKey:c.t.Text("",{isEssential:!0,disableInteractiveUpdates:!0,description:"Activate the snapshot with the provided key when clicking on the label"}),tooltip:c.t.Text("",{isEssential:!0,multiline:!0,disableInteractiveUpdates:!0,placeholder:"Tooltip",description:"Tooltip text to be displayed when hovering over the label"})},At=(0,w.f8)();function Gt(st,et=!1){return st.label||(0,re.YQ)(st.loci,{hidePrefix:!0,htmlStyling:!1,condensed:et})}function Mt(st,et,at,Et){var Nt,qt;const Cn=function tt(st,et,at){const Et=ue.t.create(et,128,64,at),Nt=et.customText.trim();for(let qt=0,Cn=st.infos.length;qtvn:nr?Rr=>nr:Rr=>Gt(et.infos[Rr]),_.y.create(Un,et,Cn,()=>at.textColor,()=>at.textSize,pr)}const bn=(0,p.eB)(),Dn=p.$I.identity(),jt=new Float32Array(18),It=new Uint8Array([0,1,2,3,4,5]);n(2802),n(4439),p.eB.zero(),p.eB.zero();const kt=(0,p.eB)(),Ot=(0,p.eB)(),An=(0,p.eB)(),jn=(0,p.eB)(),On=p.$I.identity(),fr=new Float32Array(24),Dr=new Uint8Array([0,1,0,3,0,6,1,2,1,7,2,3,2,4,3,5,4,5,4,7,5,6,6,7]);var or=n(4777);const Nr={color:c.t.Color(v.s.orange),scaleFactor:c.t.Numeric(1,{min:.1,max:10,step:.1}),radiusScale:c.t.Numeric(2,{min:.1,max:10,step:.1})},Ir={...ee.e.Params,...Nr},Or={...ee.e.Params,...Nr},Jr={...ee.e.Params,...Nr},To={axes:(st,et)=>R(Yt,ee.e.Utils),box:(st,et)=>R(Rn,ee.e.Utils),ellipsoid:(st,et)=>R(Yn,ee.e.Utils)},un={...Ir,...Or,...Jr,visuals:c.t.MultiSelect(["box"],c.t.objectToOptions(To))};function Yt(st,et,at,Et){const Nt=function dt(st,et,at){const Et=g.P.createState(256,128,at),Nt=o.iZ.Loci.getPrincipalAxesMany(st.locis);return w.n.scale(Nt.momentsAxes,Nt.momentsAxes,et.scaleFactor),Et.currentGroup=0,function Dt(st,et,at,Et,Nt){const{origin:qt,dirA:Cn,dirB:Un,dirC:vn}=et;p.eB.add(bn,qt,Cn),p.eB.toArray(p.eB.add(bn,qt,Cn),jt,0),p.eB.toArray(p.eB.sub(bn,qt,Cn),jt,3),p.eB.toArray(p.eB.add(bn,qt,Un),jt,6),p.eB.toArray(p.eB.sub(bn,qt,Un),jt,9),p.eB.toArray(p.eB.add(bn,qt,vn),jt,12),p.eB.toArray(p.eB.sub(bn,qt,vn),jt,15);const nr=(0,xe.L3)(jt,It),pr=w.n.volume(et),Rr=Math.cbrt(pr)/300*at;g.P.addCage(st,Dn,nr,Rr,Et,Nt)}(Et,Nt.momentsAxes,et.radiusScale,2,20),g.P.getMesh(Et)}(et,at,Et&&Et.geometry),qt=function ct(st){return`Principal Axes of ${(0,re.k7)(st,{countsOnly:!0})}`}(et.locis);return _.y.create(qt,et,Nt,()=>at.color,()=>1,()=>qt)}function Rn(st,et,at,Et){const Nt=function xn(st,et,at){const Et=g.P.createState(256,128,at),Nt=o.iZ.Loci.getPrincipalAxesMany(st.locis);return w.n.scale(Nt.boxAxes,Nt.boxAxes,et.scaleFactor),Et.currentGroup=0,function Pr(st,et,at,Et,Nt){const{origin:qt,dirA:Cn,dirB:Un,dirC:vn}=et,nr=p.eB.negate(Ot,Cn),pr=p.eB.negate(An,Un),Rr=p.eB.negate(jn,vn);let mo=0;const Uo=function(Lo,Ni,rs){p.eB.copy(kt,qt),p.eB.add(kt,kt,Lo),p.eB.add(kt,kt,Ni),p.eB.add(kt,kt,rs),p.eB.toArray(kt,fr,mo),mo+=3};Uo(Cn,Un,vn),Uo(Cn,Un,Rr),Uo(Cn,pr,Rr),Uo(Cn,pr,vn),Uo(nr,pr,Rr),Uo(nr,pr,vn),Uo(nr,Un,vn),Uo(nr,Un,Rr);const qo=(0,xe.L3)(fr,Dr),ri=w.n.volume(et),fo=Math.cbrt(ri)/300*at;g.P.addCage(st,On,qo,fo,Et,Nt)}(Et,Nt.boxAxes,et.radiusScale,2,20),g.P.getMesh(Et)}(et,at,Et&&Et.geometry),qt=function cn(st){return`Oriented Box of ${(0,re.k7)(st,{countsOnly:!0})}`}(et.locis);return _.y.create(qt,et,Nt,()=>at.color,()=>1,()=>qt)}function Yn(st,et,at,Et){const Nt=function ir(st,et,at){const Et=g.P.createState(256,128,at),qt=o.iZ.Loci.getPrincipalAxesMany(st.locis).boxAxes,{origin:Cn,dirA:Un,dirB:vn}=qt,nr=w.n.size((0,p.eB)(),qt);p.eB.scale(nr,nr,.5*et.scaleFactor);const pr=p.eB.create(nr[2],nr[1],nr[0]);return Et.currentGroup=0,(0,or.P)(Et,Cn,Un,vn,pr,2),g.P.getMesh(Et)}(et,at,Et&&Et.geometry),qt=function er(st){return`Oriented Ellipsoid of ${(0,re.k7)(st,{countsOnly:!0})}`}(et.locis);return _.y.create(qt,et,Nt,()=>at.color,()=>1,()=>qt)}var vr=n(4490);const Hr={radius:1,segments:36,thetaStart:0,thetaLength:2*Math.PI};function Mr(st){const{radius:et,segments:at,thetaStart:Et,thetaLength:Nt}={...Hr,...st},qt=Nt===2*Math.PI,Cn=qt?at+1:at+2,Un=new Float32Array(3*Cn),vn=new Float32Array(3*Cn),nr=new Uint32Array(3*at);Un[0]=0,Un[1]=0,Un[2]=0,vn[0]=0,vn[1]=1,vn[2]=0;for(let pr=0,Rr=3;prR(dr,be.q.Utils,{modifyState:at=>({...at,pickable:!1})}),arc:(st,et)=>R(Ft,be.q.Utils,{modifyState:at=>({...at,pickable:!1})}),sector:(st,et)=>R(ht,ee.e.Utils,{modifyProps:at=>({...at,alpha:at.sectorOpacity}),modifyState:at=>({...at,markerActions:u.sY.Highlighting})}),text:(st,et)=>R(Xt,Te.E.Utils,{modifyState:at=>({...at,markerActions:u.xi.None})})},ho={...Ro,...ro,...po,...ve.$,visuals:c.t.MultiSelect(["vectors","sector","text"],c.t.objectToOptions(so))},Go=(0,p.eB)(),Wo=(0,p.$I)();function We(st,et,at){const{sphereA:Et,sphereB:Nt,sphereC:qt}=et,{arcDirA:Cn,arcDirC:Un,arcNormal:vn}=et,[nr,pr,Rr]=st.loci;h.QN.getBoundingSphere(nr,Et),h.QN.getBoundingSphere(pr,Nt),h.QN.getBoundingSphere(Rr,qt),p.eB.sub(Cn,Et.center,Nt.center),p.eB.sub(Un,qt.center,Nt.center),p.eB.cross(vn,Cn,Un);const Uo=Math.min(p.eB.magnitude(Cn),p.eB.magnitude(Un))*at;return et.radius=Uo,et.angle=p.eB.angle(Cn,Un),et}function Pt(st,et){const{radius:at,angle:Et}=st,Nt=et?(0,vr.N7)(Et,at)/et:32;p.$I.targetTo(Wo,st.sphereB.center,st.sphereA.center,st.arcNormal),p.$I.setTranslation(Wo,st.sphereB.center),p.$I.mul(Wo,Wo,p.$I.rotY180);const qt=Mr({radius:at,thetaLength:Et,segments:Nt});return(0,Fr._2)(qt,Wo)}const Sn=function Bo(){return{sphereA:(0,w.f8)(),sphereB:(0,w.f8)(),sphereC:(0,w.f8)(),arcDirA:(0,p.eB)(),arcDirC:(0,p.eB)(),arcNormal:(0,p.eB)(),radius:0,angle:0}}();function Nn(st){return 1===st.triples.length?`Angle ${(0,re.k0)(st.triples[0],{measureOnly:!0})}`:`${st.triples.length} Angles`}function dr(st,et,at,Et){const Nt=function Kn(st,et,at){const Et=ie.d.create(128,64,at);for(let Nt=0,qt=st.triples.length;Ntat.color,()=>at.linesSize,()=>"")}function Ft(st,et,at,Et){const Nt=function xr(st,et,at){const Et=ie.d.create(128,64,at);for(let Nt=0,qt=st.triples.length;Ntat.color,()=>at.linesSize,()=>"")}function ht(st,et,at,Et){const Nt=function Qt(st,et,at){const Et=g.P.createState(128,64,at);for(let Nt=0,qt=st.triples.length;Ntat.color,()=>1,Un=>(0,re.k0)(et.triples[Un]))}function Xt(st,et,at,Et){const Nt=function pt(st,et,at){const Et=ue.t.create(et,128,64,at);for(let Nt=0,qt=st.triples.length;Ntat.textColor,()=>at.textSize,Un=>(0,re.k0)(et.triples[Un]))}const on={color:c.t.Color(v.s.lightgreen),arcScale:c.t.Numeric(.7,{min:.01,max:1,step:.01})},En={...be.q.Params,...on,lineSizeAttenuation:c.t.Boolean(!0),linesSize:c.t.Numeric(.04,{min:.01,max:5,step:.01}),dashLength:c.t.Numeric(.04,{min:.01,max:.2,step:.01})},Tt={...En},Fe={...En},He={...En},Ye={...En},ot={...ee.e.Params,...on,ignoreLight:c.t.Boolean(!0),sectorOpacity:c.t.Numeric(.75,{min:0,max:1,step:.01})},rt={vectors:(st,et)=>R(tr,be.q.Utils,{modifyState:at=>({...at,pickable:!1})}),extenders:(st,et)=>R(vo,be.q.Utils,{modifyState:at=>({...at,pickable:!1})}),connector:(st,et)=>R(oo,be.q.Utils,{modifyState:at=>({...at,pickable:!1})}),arms:(st,et)=>R(Ao,be.q.Utils,{modifyState:at=>({...at,pickable:!1})}),arc:(st,et)=>R(Do,be.q.Utils,{modifyState:at=>({...at,pickable:!1})}),sector:(st,et)=>R(So,ee.e.Utils,{modifyProps:at=>({...at,alpha:at.sectorOpacity}),modifyState:at=>({...at,markerActions:u.sY.Highlighting})}),text:(st,et)=>R(Po,Te.E.Utils,{modifyState:at=>({...at,markerActions:u.xi.None})})},St={...Tt,...Fe,...He,...Ye,...ot,...ve.$,visuals:c.t.MultiSelect(["extenders","arms","sector","text"],c.t.objectToOptions(rt))},mn=(0,p.eB)(),zt=(0,p.$I)();function an(st,et,at){const{sphereA:Et,sphereB:Nt,sphereC:qt,sphereD:Cn,dirBA:Un,dirCD:vn,projA:nr,projD:pr}=et,{arcPointA:Rr,arcPointD:mo,arcDirA:Uo,arcDirD:qo,arcCenter:ri,arcNormal:fo}=et,[Lo,Ni,rs,Gi]=st.loci;h.QN.getBoundingSphere(Lo,Et),h.QN.getBoundingSphere(Ni,Nt),h.QN.getBoundingSphere(rs,qt),h.QN.getBoundingSphere(Gi,Cn),p.eB.add(ri,Nt.center,qt.center),p.eB.scale(ri,ri,.5),p.eB.sub(Un,Et.center,Nt.center),p.eB.sub(vn,Cn.center,qt.center),p.eB.add(Rr,ri,Un),p.eB.add(mo,ri,vn),p.eB.sub(fo,qt.center,Nt.center),p.eB.orthogonalize(Uo,fo,Un),p.eB.orthogonalize(qo,fo,vn),p.eB.projectPointOnVector(nr,Rr,Uo,ri),p.eB.projectPointOnVector(pr,mo,qo,ri);const hr=Math.min(p.eB.distance(nr,ri),p.eB.distance(pr,ri))*at;p.eB.setMagnitude(Uo,Uo,hr),p.eB.setMagnitude(qo,qo,hr),p.eB.add(Rr,ri,Uo),p.eB.add(mo,ri,qo),et.radius=hr,et.angle=p.eB.dihedralAngle(Et.center,Nt.center,qt.center,Cn.center),p.eB.matchDirection(mn,fo,p.eB.sub(mn,Rr,Et.center));const Wr=p.eB.angle(Un,mn),no=hr/Math.cos(Wr-vr.fC);p.eB.add(nr,Nt.center,p.eB.setMagnitude(mn,Un,no)),p.eB.matchDirection(mn,fo,p.eB.sub(mn,mo,Cn.center));const zo=p.eB.angle(vn,mn),Di=hr/Math.cos(zo-vr.fC);return p.eB.add(pr,qt.center,p.eB.setMagnitude(mn,vn,Di)),et}function Vn(st,et){const{radius:at,angle:Et}=st,Nt=et?(0,vr.N7)(Et,at)/et:32;p.$I.targetTo(zt,st.arcCenter,Et<0?st.arcPointD:st.arcPointA,st.arcNormal),p.$I.setTranslation(zt,st.arcCenter),p.$I.mul(zt,zt,p.$I.rotY180);const qt=Mr({radius:at,thetaLength:Math.abs(Et),segments:Nt});return(0,Fr._2)(qt,zt)}const Fn=function vt(){return{sphereA:(0,w.f8)(),sphereB:(0,w.f8)(),sphereC:(0,w.f8)(),sphereD:(0,w.f8)(),dirBA:(0,p.eB)(),dirCD:(0,p.eB)(),projA:(0,p.eB)(),projD:(0,p.eB)(),arcPointA:(0,p.eB)(),arcPointD:(0,p.eB)(),arcDirA:(0,p.eB)(),arcDirD:(0,p.eB)(),arcCenter:(0,p.eB)(),arcNormal:(0,p.eB)(),radius:0,angle:0}}();function rr(st){return 1===st.quads.length?`Dihedral ${(0,re.kd)(st.quads[0],{measureOnly:!0})}`:`${st.quads.length} Dihedrals`}function tr(st,et,at,Et){const Nt=function Vr(st,et,at){const Et=ie.d.create(128,64,at);for(let Nt=0,qt=st.quads.length;Ntat.color,()=>at.linesSize,()=>"")}function oo(st,et,at,Et){const Nt=function Tr(st,et,at){const Et=ie.d.create(128,64,at);for(let Nt=0,qt=st.quads.length;Ntat.color,()=>at.linesSize,()=>"")}function Ao(st,et,at,Et){const Nt=function Gr(st,et,at){const Et=ie.d.create(128,64,at);for(let Nt=0,qt=st.quads.length;Ntat.color,()=>at.linesSize,()=>"")}function vo(st,et,at,Et){const Nt=function yo(st,et,at){const Et=ie.d.create(128,64,at);for(let Nt=0,qt=st.quads.length;Ntat.color,()=>at.linesSize,()=>"")}function Do(st,et,at,Et){const Nt=function Kr(st,et,at){const Et=ie.d.create(128,64,at);for(let Nt=0,qt=st.quads.length;Ntat.color,()=>at.linesSize,()=>"")}function So(st,et,at,Et){const Nt=function lo(st,et,at){const Et=g.P.createState(128,64,at);for(let Nt=0,qt=st.quads.length;Ntat.color,()=>1,Un=>(0,re.kd)(et.quads[Un]))}function Po(st,et,at,Et){const Nt=function ao(st,et,at){const Et=ue.t.create(et,128,64,at);for(let Nt=0,qt=st.quads.length;Ntat.textColor,()=>at.textSize,Un=>(0,re.kd)(et.quads[Un]))}var jr=n(9651),Co=n(7981),Eo=n(1372),Fo=n(9646);const ei={vertices:new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]),normals:new Float32Array([0,0,1,0,0,1,0,0,1,0,0,1]),indices:new Uint32Array([0,2,1,1,2,3])};new Uint32Array([0,1,2,3,3,1,2,0]);const Fi={...ee.e.Params,color:c.t.Color(v.s.orange),scaleFactor:c.t.Numeric(1,{min:.1,max:10,step:.1})},hi={plane:(st,et)=>R(ti,ee.e.Utils)},No={...Fi,visuals:c.t.MultiSelect(["plane"],c.t.objectToOptions(hi))},mi=(0,p.$I)(),qi=(0,p.eB)();function ti(st,et,at,Et){const Nt=function Oi(st,et,at){const Et=g.P.createState(256,128,at),qt=o.iZ.Loci.getPrincipalAxesMany(st.locis).boxAxes,Cn=function ci(){return ei}();return p.eB.add(qi,qt.origin,qt.dirC),p.$I.targetTo(mi,qi,qt.origin,qt.dirB),p.$I.scale(mi,mi,w.n.size(qi,qt)),p.$I.scaleUniformly(mi,mi,et.scaleFactor),p.$I.setTranslation(mi,qt.origin),Et.currentGroup=0,g.P.addPrimitive(Et,mi,Cn),g.P.addPrimitiveFlipped(Et,mi,Cn),g.P.getMesh(Et)}(et,at,Et&&Et.geometry),qt=function Ci(st){return`Best Fit Plane of ${(0,re.k7)(st,{countsOnly:!0})}`}(et.locis);return _.y.create(qt,et,Nt,()=>at.color,()=>1,()=>qt)}var Si=n(9213),Pi=n(6765),ni=n(127),gi=n(3488);const Wi=i.H.BuiltIn({name:"structure-representation-3d",display:"3D Representation",from:i.O.Molecule.Structure,to:i.O.Molecule.Structure.Representation3D,params:(st,et)=>{const{registry:at,themes:Et}=et.representation.structure,Nt=at.get(at.default.name);if(!st){const Un={help:vn=>{const{name:nr,params:pr}=vn,mo=Et.colorThemeRegistry.get(nr).factory({},pr);return{description:mo.description,legend:mo.legend}}};return{type:c.t.Mapped(at.default.name,at.types,vn=>c.t.Group(at.get(vn).getParams(Et,o.oE.Empty))),colorTheme:c.t.Mapped(Nt.defaultColorTheme.name,Et.colorThemeRegistry.types,vn=>c.t.Group(Et.colorThemeRegistry.get(vn).getParams({structure:o.oE.Empty})),Un),sizeTheme:c.t.Mapped(Nt.defaultSizeTheme.name,Et.sizeThemeRegistry.types,vn=>c.t.Group(Et.sizeThemeRegistry.get(vn).getParams({structure:o.oE.Empty})))}}const qt={structure:st.data},Cn={help:Un=>{const{name:vn,params:nr}=Un,Rr=Et.colorThemeRegistry.get(vn).factory(qt,nr);return{description:Rr.description,legend:Rr.legend}}};return{type:c.t.Mapped(at.default.name,at.getApplicableTypes(st.data),Un=>c.t.Group(at.get(Un).getParams(Et,st.data))),colorTheme:c.t.Mapped(Nt.defaultColorTheme.name,Et.colorThemeRegistry.getApplicableTypes(qt),Un=>c.t.Group(Et.colorThemeRegistry.get(Un).getParams(qt)),Cn),sizeTheme:c.t.Mapped(Nt.defaultSizeTheme.name,Et.sizeThemeRegistry.getApplicableTypes(qt),Un=>c.t.Group(Et.sizeThemeRegistry.get(Un).getParams(qt)))}}})({canAutoUpdate:({a:st,oldParams:et,newParams:at})=>st.data.elementCount<1e4||et.type.name===at.type.name&&"custom"!==at.type.params.quality,apply:({a:st,params:et},Et)=>A.YZ.create("Structure Representation",function(){var Nt=(0,e.A)(function*(qt){var Cn,Un;const vn={runtime:qt,assetManager:Et.managers.asset},nr=Et.representation.structure.registry.get(et.type.name),pr=(null===(Cn=nr.getData)||void 0===Cn?void 0:Cn.call(nr,st.data,et.type.params))||st.data;nr.ensureCustomProperties&&(yield nr.ensureCustomProperties.attach(vn,pr));const Rr=nr.factory({webgl:null===(Un=Et.canvas3d)||void 0===Un?void 0:Un.webgl,...Et.representation.structure.themes},nr.getParams);yield y.S.ensureDependencies(vn,Et.representation.structure.themes,{structure:pr},et),Rr.setTheme(y.S.create(Et.representation.structure.themes,{structure:pr},et));const mo=et.type.params||{};return yield Rr.createOrUpdate(mo,pr).runInContext(qt),new i.O.Molecule.Structure.Representation3D({repr:Rr,sourceData:st.data},{label:nr.label})});return function(qt){return Nt.apply(this,arguments)}}()),update:({a:st,b:et,oldParams:at,newParams:Et},qt)=>A.YZ.create("Structure Representation",function(){var Cn=(0,e.A)(function*(Un){var vn,nr;if(Et.type.name!==at.type.name)return t.xE.UpdateResult.Recreate;const pr=qt.representation.structure.registry.get(Et.type.name);if(null!==(vn=pr.mustRecreate)&&void 0!==vn&&vn.call(pr,at.type.params,Et.type.params))return t.xE.UpdateResult.Recreate;const Rr=(null===(nr=pr.getData)||void 0===nr?void 0:nr.call(pr,st.data,Et.type.params))||st.data,mo={runtime:Un,assetManager:qt.managers.asset};pr.ensureCustomProperties&&(yield pr.ensureCustomProperties.attach(mo,Rr)),y.S.releaseDependencies(qt.representation.structure.themes,{structure:et.data.sourceData},at),yield y.S.ensureDependencies(mo,qt.representation.structure.themes,{structure:Rr},Et),et.data.repr.setTheme(y.S.create(qt.representation.structure.themes,{structure:Rr},Et));const Uo={...et.data.repr.props,...Et.type.params};return yield et.data.repr.createOrUpdate(Uo,Rr).runInContext(Un),et.data.sourceData=st.data,t.xE.UpdateResult.Updated});return function(Un){return Cn.apply(this,arguments)}}()),dispose({b:st,params:et},at){if(!st||!et)return;const Et=st.data.sourceData,Nt=at.representation.structure.registry.get(et.type.name);Nt.ensureCustomProperties&&Nt.ensureCustomProperties.detach(Et),y.S.releaseDependencies(at.representation.structure.themes,{structure:Et},et)},interpolate(st,et,at){if("uniform"!==st.colorTheme.name||"uniform"!==et.colorTheme.name)return at<=.5?st:et;const qt=ye.Q1.interpolate(st.colorTheme.params.value,et.colorTheme.params.value,at);return{type:at<=.5?st.type:et.type,colorTheme:{name:"uniform",params:{value:qt}},sizeTheme:at<=.5?st.sizeTheme:et.sizeTheme}}}),Ri=i.H.BuiltIn({name:"unwind-structure-assembly-representation-3d",display:"Unwind Assembly 3D Representation",from:i.O.Molecule.Structure.Representation3D,to:i.O.Molecule.Structure.Representation3DState,params:{t:c.t.Numeric(0,{min:0,max:1,step:.01})}})({canAutoUpdate:()=>!0,apply({a:st,params:et}){const at=st.data.sourceData,Et=new L(at);return G(at,Et,et.t),new i.O.Molecule.Structure.Representation3DState({state:{unitTransforms:Et},initialState:{unitTransforms:new L(at)},info:at,repr:st.data.repr},{label:`Unwind T = ${et.t.toFixed(2)}`})},update({a:st,b:et,newParams:at,oldParams:Et}){const Nt=et.data.info;return st.data.sourceData!==Nt||st.data.repr!==et.data.repr?t.xE.UpdateResult.Recreate:Et.t===at.t?t.xE.UpdateResult.Unchanged:(G(Nt,et.data.state.unitTransforms,at.t),et.label=`Unwind T = ${at.t.toFixed(2)}`,et.data.repr=st.data.repr,t.xE.UpdateResult.Updated)}}),Qi=i.H.BuiltIn({name:"explode-structure-representation-3d",display:"Explode 3D Representation",from:i.O.Molecule.Structure.Representation3D,to:i.O.Molecule.Structure.Representation3DState,params:{t:c.t.Numeric(0,{min:0,max:1,step:.01})}})({canAutoUpdate:()=>!0,apply({a:st,params:et}){const at=st.data.sourceData,Et=new L(at);return k(at,Et,et.t,at.root.boundary.sphere),new i.O.Molecule.Structure.Representation3DState({state:{unitTransforms:Et},initialState:{unitTransforms:new L(at)},info:at,repr:st.data.repr},{label:`Explode T = ${et.t.toFixed(2)}`})},update({a:st,b:et,newParams:at,oldParams:Et}){const Nt=st.data.sourceData;return et.data.info!==Nt||st.data.repr!==et.data.repr?t.xE.UpdateResult.Recreate:Et.t===at.t?t.xE.UpdateResult.Unchanged:(k(Nt,et.data.state.unitTransforms,at.t,Nt.root.boundary.sphere),et.label=`Explode T = ${at.t.toFixed(2)}`,et.data.repr=st.data.repr,t.xE.UpdateResult.Updated)}}),Hn=i.H.BuiltIn({name:"spin-structure-representation-3d",display:"Spin 3D Representation",from:i.O.Molecule.Structure.Representation3D,to:i.O.Molecule.Structure.Representation3DState,params:{t:c.t.Numeric(0,{min:0,max:1,step:.01}),...H}})({canAutoUpdate:()=>!0,apply({a:st,params:et}){const at=st.data.sourceData,Et=new L(at),{axis:Nt,origin:qt}=$(at.root,et);return de(at,Et,et.t,Nt,qt),new i.O.Molecule.Structure.Representation3DState({state:{unitTransforms:Et},initialState:{unitTransforms:new L(at)},info:at,repr:st.data.repr},{label:`Spin T = ${et.t.toFixed(2)}`})},update({a:st,b:et,newParams:at,oldParams:Et}){const Nt=st.data.sourceData;if(et.data.info!==Nt||st.data.repr!==et.data.repr)return t.xE.UpdateResult.Recreate;if(Et.t===at.t&&Et.axis===at.axis&&Et.origin===at.origin)return t.xE.UpdateResult.Unchanged;const qt=et.data.state.unitTransforms,{axis:Cn,origin:Un}=$(Nt.root,at);return de(Nt,qt,at.t,Cn,Un),et.label=`Spin T = ${at.t.toFixed(2)}`,et.data.repr=st.data.repr,t.xE.UpdateResult.Updated}}),qr=i.H.BuiltIn({name:"overpaint-structure-representation-3d-from-script",display:"Overpaint 3D Representation",from:i.O.Molecule.Structure.Representation3D,to:i.O.Molecule.Structure.Representation3DState,params:()=>({layers:c.t.ObjectList({script:c.t.Script((0,Y.e)("(sel.atom.all)","mol-script")),color:c.t.Color(v.s.blueviolet),clear:c.t.Boolean(!1)},st=>`${st.clear?"Clear":ye.Q1.toRgbString(st.color)}`,{defaultValue:[{script:(0,Y.e)("(sel.atom.all)","mol-script"),color:v.s.blueviolet,clear:!1}]})})})({canAutoUpdate:()=>!0,apply({a:st,params:et}){const at=st.data.sourceData,Et=st.data.repr.geometryVersion,Nt=j.l.ofScript(et.layers,at);return new i.O.Molecule.Structure.Representation3DState({state:{overpaint:Nt},initialState:{overpaint:j.l.Empty},info:{structure:at,geometryVersion:Et},repr:st.data.repr},{label:`Overpaint (${Nt.layers.length} Layers)`})},update({a:st,b:et,newParams:at}){const Nt=et.data.info,qt=st.data.sourceData;if(qt!==Nt.structure||st.data.repr!==et.data.repr)return t.xE.UpdateResult.Recreate;const Cn=st.data.repr.geometryVersion;if(Cn!==Nt.geometryVersion&&(0,q.jH)(st.data.repr.props))return t.xE.UpdateResult.Recreate;const Un=et.data.state.overpaint,vn=j.l.ofScript(at.layers,qt);return j.l.areEqual(Un,vn)?t.xE.UpdateResult.Unchanged:(Nt.geometryVersion=Cn,et.data.state.overpaint=vn,et.data.repr=st.data.repr,et.label=`Overpaint (${vn.layers.length} Layers)`,t.xE.UpdateResult.Updated)}}),co=i.H.BuiltIn({name:"overpaint-structure-representation-3d-from-bundle",display:"Overpaint 3D Representation",from:i.O.Molecule.Structure.Representation3D,to:i.O.Molecule.Structure.Representation3DState,params:()=>({layers:c.t.ObjectList({bundle:c.t.Value(o.iZ.Bundle.Empty),color:c.t.Color(v.s.blueviolet),clear:c.t.Boolean(!1)},st=>`${st.clear?"Clear":ye.Q1.toRgbString(st.color)}`,{defaultValue:[{bundle:o.iZ.Bundle.Empty,color:v.s.blueviolet,clear:!1}],isHidden:!0})})})({canAutoUpdate:()=>!0,apply({a:st,params:et}){const at=st.data.sourceData,Et=st.data.repr.geometryVersion,Nt=j.l.ofBundle(et.layers,at);return new i.O.Molecule.Structure.Representation3DState({state:{overpaint:Nt},initialState:{overpaint:j.l.Empty},info:{structure:at,geometryVersion:Et},repr:st.data.repr},{label:`Overpaint (${Nt.layers.length} Layers)`})},update({a:st,b:et,newParams:at}){const Nt=et.data.info,qt=st.data.sourceData;if(qt!==Nt.structure||st.data.repr!==et.data.repr)return t.xE.UpdateResult.Recreate;const Cn=st.data.repr.geometryVersion;if(Cn!==Nt.geometryVersion&&(0,q.jH)(st.data.repr.props))return t.xE.UpdateResult.Recreate;const Un=et.data.state.overpaint,vn=j.l.ofBundle(at.layers,qt);return j.l.areEqual(Un,vn)?t.xE.UpdateResult.Unchanged:(Nt.geometryVersion=Cn,et.data.state.overpaint=vn,et.data.repr=st.data.repr,et.label=`Overpaint (${vn.layers.length} Layers)`,t.xE.UpdateResult.Updated)}}),zr=i.H.BuiltIn({name:"transparency-structure-representation-3d-from-script",display:"Transparency 3D Representation",from:i.O.Molecule.Structure.Representation3D,to:i.O.Molecule.Structure.Representation3DState,params:()=>({layers:c.t.ObjectList({script:c.t.Script((0,Y.e)("(sel.atom.all)","mol-script")),value:c.t.Numeric(.5,{min:0,max:1,step:.01},{label:"Transparency"})},st=>`Transparency (${st.value})`,{defaultValue:[{script:(0,Y.e)("(sel.atom.all)","mol-script"),value:.5}]})})})({canAutoUpdate:()=>!0,apply({a:st,params:et}){const at=st.data.sourceData,Et=st.data.repr.geometryVersion,Nt=Z.x.ofScript(et.layers,at);return new i.O.Molecule.Structure.Representation3DState({state:{transparency:Nt},initialState:{transparency:Z.x.Empty},info:{structure:at,geometryVersion:Et},repr:st.data.repr},{label:`Transparency (${Nt.layers.length} Layers)`})},update({a:st,b:et,newParams:at}){const Nt=et.data.info,qt=st.data.sourceData;if(qt!==Nt.structure||st.data.repr!==et.data.repr)return t.xE.UpdateResult.Recreate;const Cn=st.data.repr.geometryVersion;if(Cn!==Nt.geometryVersion&&(0,q.jH)(st.data.repr.props))return t.xE.UpdateResult.Recreate;const Un=et.data.state.transparency,vn=Z.x.ofScript(at.layers,qt);return Z.x.areEqual(Un,vn)?t.xE.UpdateResult.Unchanged:(Nt.geometryVersion=Cn,et.data.state.transparency=vn,et.data.repr=st.data.repr,et.label=`Transparency (${vn.layers.length} Layers)`,t.xE.UpdateResult.Updated)}}),lr=i.H.BuiltIn({name:"transparency-structure-representation-3d-from-bundle",display:"Transparency 3D Representation",from:i.O.Molecule.Structure.Representation3D,to:i.O.Molecule.Structure.Representation3DState,params:()=>({layers:c.t.ObjectList({bundle:c.t.Value(o.iZ.Bundle.Empty),value:c.t.Numeric(.5,{min:0,max:1,step:.01},{label:"Transparency"})},st=>`Transparency (${st.value})`,{defaultValue:[{bundle:o.iZ.Bundle.Empty,value:.5}],isHidden:!0})})})({canAutoUpdate:()=>!0,apply({a:st,params:et}){const at=st.data.sourceData,Et=st.data.repr.geometryVersion,Nt=Z.x.ofBundle(et.layers,at);return new i.O.Molecule.Structure.Representation3DState({state:{transparency:Nt},initialState:{transparency:Z.x.Empty},info:{structure:at,geometryVersion:Et},repr:st.data.repr},{label:`Transparency (${Nt.layers.length} Layers)`})},update({a:st,b:et,newParams:at}){const Nt=et.data.info,qt=st.data.sourceData;if(qt!==Nt.structure||st.data.repr!==et.data.repr)return t.xE.UpdateResult.Recreate;const Cn=st.data.repr.geometryVersion;if(Cn!==Nt.geometryVersion&&(0,q.jH)(st.data.repr.props))return t.xE.UpdateResult.Recreate;const Un=et.data.state.transparency,vn=Z.x.ofBundle(at.layers,qt);return Z.x.areEqual(Un,vn)?t.xE.UpdateResult.Unchanged:(Nt.geometryVersion=Cn,et.data.state.transparency=vn,et.data.repr=st.data.repr,et.label=`Transparency (${vn.layers.length} Layers)`,t.xE.UpdateResult.Updated)}}),kr=i.H.BuiltIn({name:"emissive-structure-representation-3d-from-script",display:"Emissive 3D Representation",from:i.O.Molecule.Structure.Representation3D,to:i.O.Molecule.Structure.Representation3DState,params:()=>({layers:c.t.ObjectList({script:c.t.Script((0,Y.e)("(sel.atom.all)","mol-script")),value:c.t.Numeric(.5,{min:0,max:1,step:.01},{label:"Emissive"})},st=>`Emissive (${st.value})`,{defaultValue:[{script:(0,Y.e)("(sel.atom.all)","mol-script"),value:.5}]})})})({canAutoUpdate:()=>!0,apply({a:st,params:et}){const at=st.data.sourceData,Et=st.data.repr.geometryVersion,Nt=gi.a.ofScript(et.layers,at);return new i.O.Molecule.Structure.Representation3DState({state:{emissive:Nt},initialState:{emissive:gi.a.Empty},info:{structure:at,geometryVersion:Et},repr:st.data.repr},{label:`Emissive (${Nt.layers.length} Layers)`})},update({a:st,b:et,newParams:at}){const Nt=et.data.info,qt=st.data.sourceData;if(qt!==Nt.structure||st.data.repr!==et.data.repr)return t.xE.UpdateResult.Recreate;const Cn=st.data.repr.geometryVersion;if(Cn!==Nt.geometryVersion&&(0,q.jH)(st.data.repr.props))return t.xE.UpdateResult.Recreate;const Un=et.data.state.emissive,vn=gi.a.ofScript(at.layers,qt);return gi.a.areEqual(Un,vn)?t.xE.UpdateResult.Unchanged:(Nt.geometryVersion=Cn,et.data.state.emissive=vn,et.data.repr=st.data.repr,et.label=`Emissive (${vn.layers.length} Layers)`,t.xE.UpdateResult.Updated)}}),Qr=i.H.BuiltIn({name:"emissive-structure-representation-3d-from-bundle",display:"Emissive 3D Representation",from:i.O.Molecule.Structure.Representation3D,to:i.O.Molecule.Structure.Representation3DState,params:()=>({layers:c.t.ObjectList({bundle:c.t.Value(o.iZ.Bundle.Empty),value:c.t.Numeric(.5,{min:0,max:1,step:.01},{label:"Emissive"})},st=>`Emissive (${st.value})`,{defaultValue:[{bundle:o.iZ.Bundle.Empty,value:.5}],isHidden:!0})})})({canAutoUpdate:()=>!0,apply({a:st,params:et}){const at=st.data.sourceData,Et=st.data.repr.geometryVersion,Nt=gi.a.ofBundle(et.layers,at);return new i.O.Molecule.Structure.Representation3DState({state:{emissive:Nt},initialState:{emissive:gi.a.Empty},info:{structure:at,geometryVersion:Et},repr:st.data.repr},{label:`Emissive (${Nt.layers.length} Layers)`})},update({a:st,b:et,newParams:at}){const Nt=et.data.info,qt=st.data.sourceData;if(qt!==Nt.structure||st.data.repr!==et.data.repr)return t.xE.UpdateResult.Recreate;const Cn=st.data.repr.geometryVersion;if(Cn!==Nt.geometryVersion&&(0,q.jH)(st.data.repr.props))return t.xE.UpdateResult.Recreate;const Un=et.data.state.emissive,vn=gi.a.ofBundle(at.layers,qt);return gi.a.areEqual(Un,vn)?t.xE.UpdateResult.Unchanged:(Nt.geometryVersion=Cn,et.data.state.emissive=vn,et.data.repr=st.data.repr,et.label=`Emissive (${vn.layers.length} Layers)`,t.xE.UpdateResult.Updated)}}),vi=i.H.BuiltIn({name:"substance-structure-representation-3d-from-script",display:"Substance 3D Representation",from:i.O.Molecule.Structure.Representation3D,to:i.O.Molecule.Structure.Representation3DState,params:()=>({layers:c.t.ObjectList({script:c.t.Script((0,Y.e)("(sel.atom.all)","mol-script")),material:Pi.i.getParam(),clear:c.t.Boolean(!1)},st=>`${st.clear?"Clear":Pi.i.toString(st.material)}`,{defaultValue:[{script:(0,Y.e)("(sel.atom.all)","mol-script"),material:(0,Pi.i)({roughness:1}),clear:!1}]})})})({canAutoUpdate:()=>!0,apply({a:st,params:et}){const at=st.data.sourceData,Et=st.data.repr.geometryVersion,Nt=Si.l.ofScript(et.layers,at);return new i.O.Molecule.Structure.Representation3DState({state:{substance:Nt},initialState:{substance:Si.l.Empty},info:{structure:at,geometryVersion:Et},repr:st.data.repr},{label:`Substance (${Nt.layers.length} Layers)`})},update({a:st,b:et,newParams:at}){const Nt=et.data.info,qt=st.data.sourceData;if(qt!==Nt.structure||st.data.repr!==et.data.repr)return t.xE.UpdateResult.Recreate;const Cn=st.data.repr.geometryVersion;if(Cn!==Nt.geometryVersion&&(0,q.jH)(st.data.repr.props))return t.xE.UpdateResult.Recreate;const Un=et.data.state.substance,vn=Si.l.ofScript(at.layers,qt);return Si.l.areEqual(Un,vn)?t.xE.UpdateResult.Unchanged:(Nt.geometryVersion=Cn,et.data.state.substance=vn,et.data.repr=st.data.repr,et.label=`Substance (${vn.layers.length} Layers)`,t.xE.UpdateResult.Updated)}}),Ti=i.H.BuiltIn({name:"substance-structure-representation-3d-from-bundle",display:"Substance 3D Representation",from:i.O.Molecule.Structure.Representation3D,to:i.O.Molecule.Structure.Representation3DState,params:()=>({layers:c.t.ObjectList({bundle:c.t.Value(o.iZ.Bundle.Empty),material:Pi.i.getParam(),clear:c.t.Boolean(!1)},st=>`${st.clear?"Clear":Pi.i.toString(st.material)}`,{defaultValue:[{bundle:o.iZ.Bundle.Empty,material:(0,Pi.i)({roughness:1}),clear:!1}],isHidden:!0})})})({canAutoUpdate:()=>!0,apply({a:st,params:et}){const at=st.data.sourceData,Et=st.data.repr.geometryVersion,Nt=Si.l.ofBundle(et.layers,at);return new i.O.Molecule.Structure.Representation3DState({state:{substance:Nt},initialState:{substance:Si.l.Empty},info:{structure:at,geometryVersion:Et},repr:st.data.repr},{label:`Substance (${Nt.layers.length} Layers)`})},update({a:st,b:et,newParams:at}){const Nt=et.data.info,qt=st.data.sourceData;if(qt!==Nt.structure||st.data.repr!==et.data.repr)return t.xE.UpdateResult.Recreate;const Cn=st.data.repr.geometryVersion;if(Cn!==Nt.geometryVersion&&(0,q.jH)(st.data.repr.props))return t.xE.UpdateResult.Recreate;const Un=et.data.state.substance,vn=Si.l.ofBundle(at.layers,qt);return Si.l.areEqual(Un,vn)?t.xE.UpdateResult.Unchanged:(Nt.geometryVersion=Cn,et.data.state.substance=vn,et.data.repr=st.data.repr,et.label=`Substance (${vn.layers.length} Layers)`,t.xE.UpdateResult.Updated)}}),Bi=i.H.BuiltIn({name:"clipping-structure-representation-3d-from-script",display:"Clipping 3D Representation",from:i.O.Molecule.Structure.Representation3D,to:i.O.Molecule.Structure.Representation3DState,params:()=>({layers:c.t.ObjectList({script:c.t.Script((0,Y.e)("(sel.atom.all)","mol-script")),groups:c.t.Converted(st=>Co.l.Groups.toNames(st),st=>Co.l.Groups.fromNames(st),c.t.MultiSelect((0,Eo.mX)(Co.l.Groups.Names),c.t.objectToOptions(Co.l.Groups.Names)))},st=>`${Co.l.Groups.toNames(st.groups).length} group(s)`,{defaultValue:[{script:(0,Y.e)("(sel.atom.all)","mol-script"),groups:Co.l.Groups.Flag.None}]})})})({canAutoUpdate:()=>!0,apply({a:st,params:et}){const at=st.data.sourceData,Et=Co.l.ofScript(et.layers,at);return new i.O.Molecule.Structure.Representation3DState({state:{clipping:Et},initialState:{clipping:Co.l.Empty},info:at,repr:st.data.repr},{label:`Clipping (${Et.layers.length} Layers)`})},update({a:st,b:et,newParams:at}){const Nt=et.data.info;if(st.data.sourceData!==Nt||st.data.repr!==et.data.repr)return t.xE.UpdateResult.Recreate;const qt=et.data.state.clipping,Cn=Co.l.ofScript(at.layers,Nt);return Co.l.areEqual(qt,Cn)?t.xE.UpdateResult.Unchanged:(et.data.state.clipping=Cn,et.data.repr=st.data.repr,et.label=`Clipping (${Cn.layers.length} Layers)`,t.xE.UpdateResult.Updated)}}),Li=i.H.BuiltIn({name:"clipping-structure-representation-3d-from-bundle",display:"Clipping 3D Representation",from:i.O.Molecule.Structure.Representation3D,to:i.O.Molecule.Structure.Representation3DState,params:()=>({layers:c.t.ObjectList({bundle:c.t.Value(o.iZ.Bundle.Empty),groups:c.t.Converted(st=>Co.l.Groups.toNames(st),st=>Co.l.Groups.fromNames(st),c.t.MultiSelect((0,Eo.mX)(Co.l.Groups.Names),c.t.objectToOptions(Co.l.Groups.Names)))},st=>`${Co.l.Groups.toNames(st.groups).length} group(s)`,{defaultValue:[{bundle:o.iZ.Bundle.Empty,groups:Co.l.Groups.Flag.None}],isHidden:!0})})})({canAutoUpdate:()=>!0,apply({a:st,params:et}){const at=st.data.sourceData,Et=Co.l.ofBundle(et.layers,at);return new i.O.Molecule.Structure.Representation3DState({state:{clipping:Et},initialState:{clipping:Co.l.Empty},info:at,repr:st.data.repr},{label:`Clipping (${Et.layers.length} Layers)`})},update({a:st,b:et,newParams:at}){const Nt=et.data.info;if(st.data.sourceData!==Nt||st.data.repr!==et.data.repr)return t.xE.UpdateResult.Recreate;const qt=et.data.state.clipping,Cn=Co.l.ofBundle(at.layers,Nt);return Co.l.areEqual(qt,Cn)?t.xE.UpdateResult.Unchanged:(et.data.state.clipping=Cn,et.data.repr=st.data.repr,et.label=`Clipping (${Cn.layers.length} Layers)`,t.xE.UpdateResult.Updated)}}),bi=i.H.BuiltIn({name:"theme-strength-representation-3d",display:"Theme Strength 3D Representation",from:i.O.Molecule.Structure.Representation3D,to:i.O.Molecule.Structure.Representation3DState,params:()=>({overpaintStrength:c.t.Numeric(1,{min:0,max:1,step:.01}),transparencyStrength:c.t.Numeric(1,{min:0,max:1,step:.01}),emissiveStrength:c.t.Numeric(1,{min:0,max:1,step:.01}),substanceStrength:c.t.Numeric(1,{min:0,max:1,step:.01})})})({canAutoUpdate:()=>!0,apply:({a:st,params:et})=>new i.O.Molecule.Structure.Representation3DState({state:{themeStrength:{overpaint:et.overpaintStrength,transparency:et.transparencyStrength,emissive:et.emissiveStrength,substance:et.substanceStrength}},initialState:{themeStrength:{overpaint:1,transparency:1,emissive:1,substance:1}},info:{},repr:st.data.repr},{label:"Theme Strength",description:`${et.overpaintStrength.toFixed(2)}, ${et.transparencyStrength.toFixed(2)}, ${et.emissiveStrength.toFixed(2)}, ${et.substanceStrength.toFixed(2)}`}),update({a:st,b:et,newParams:at}){var Nt,qt,Cn,Un;return at.overpaintStrength===(null===(Nt=et.data.state.themeStrength)||void 0===Nt?void 0:Nt.overpaint)&&at.transparencyStrength===(null===(qt=et.data.state.themeStrength)||void 0===qt?void 0:qt.transparency)&&at.emissiveStrength===(null===(Cn=et.data.state.themeStrength)||void 0===Cn?void 0:Cn.emissive)&&at.substanceStrength===(null===(Un=et.data.state.themeStrength)||void 0===Un?void 0:Un.substance)?t.xE.UpdateResult.Unchanged:(et.data.state.themeStrength={overpaint:at.overpaintStrength,transparency:at.transparencyStrength,emissive:at.emissiveStrength,substance:at.substanceStrength},et.data.repr=st.data.repr,et.label="Theme Strength",et.description=`${at.overpaintStrength.toFixed(2)}, ${at.transparencyStrength.toFixed(2)}, ${at.emissiveStrength.toFixed(2)}, ${at.substanceStrength.toFixed(2)}`,t.xE.UpdateResult.Updated)},interpolate:(st,et,at)=>({overpaintStrength:(0,ni.Cc)(st.overpaintStrength,et.overpaintStrength,at),transparencyStrength:(0,ni.Cc)(st.transparencyStrength,et.transparencyStrength,at),emissiveStrength:(0,ni.Cc)(st.emissiveStrength,et.emissiveStrength,at),substanceStrength:(0,ni.Cc)(st.substanceStrength,et.substanceStrength,at)})});var Vi,st;(st=Vi||(Vi={})).getDefaultParams=function et(Nt,qt,Cn,Un,vn,nr,pr,Rr){const mo=Nt.representation.volume.registry.get(qt),Uo=Nt.representation.volume.themes.colorThemeRegistry.get(vn||mo.defaultColorTheme.name),qo=Nt.representation.volume.themes.sizeThemeRegistry.get(pr||mo.defaultSizeTheme.name),ri=c.t.getDefaultValues(mo.getParams(Nt.representation.volume.themes,Cn));return{type:{name:qt,params:Un?{...ri,...Un}:ri},colorTheme:{name:Uo.name,params:nr?{...Uo.defaultValues,...nr}:Uo.defaultValues},sizeTheme:{name:qo.name,params:Rr?{...qo.defaultValues,...Rr}:qo.defaultValues}}},st.getDefaultParamsStatic=function at(Nt,qt,Cn,Un,vn,nr,pr){const Rr=Nt.representation.volume.registry.get(qt),mo=Nt.representation.volume.themes.colorThemeRegistry.get(Un||Rr.defaultColorTheme.name),Uo=Nt.representation.volume.themes.sizeThemeRegistry.get(nr||Rr.defaultSizeTheme.name);return{type:{name:qt,params:Cn?{...Rr.defaultValues,...Cn}:Rr.defaultValues},colorTheme:{name:Rr.defaultColorTheme.name,params:vn?{...mo.defaultValues,...vn}:mo.defaultValues},sizeTheme:{name:Rr.defaultSizeTheme.name,params:pr?{...Uo.defaultValues,...pr}:Uo.defaultValues}}},st.getDescription=function Et(Nt){var qt,Cn,Un,vn;return Nt.isoValue?r.f.IsoValue.toString(Nt.isoValue):null!==(Cn=null===(qt=Nt.renderMode)||void 0===qt?void 0:qt.params)&&void 0!==Cn&&Cn.isoValue?r.f.IsoValue.toString(null===(vn=null===(Un=Nt.renderMode)||void 0===Un?void 0:Un.params)||void 0===vn?void 0:vn.isoValue):void 0};const Ei=i.H.BuiltIn({name:"volume-representation-3d",display:"3D Representation",from:i.O.Volume.Data,to:i.O.Volume.Representation3D,params:(st,et)=>{const{registry:at,themes:Et}=et.representation.volume,Nt=at.get(at.default.name);if(!st)return{type:c.t.Mapped(at.default.name,at.types,Cn=>c.t.Group(at.get(Cn).getParams(Et,r.f.One))),colorTheme:c.t.Mapped(Nt.defaultColorTheme.name,Et.colorThemeRegistry.types,Cn=>c.t.Group(Et.colorThemeRegistry.get(Cn).getParams({volume:r.f.One}))),sizeTheme:c.t.Mapped(Nt.defaultSizeTheme.name,Et.sizeThemeRegistry.types,Cn=>c.t.Group(Et.sizeThemeRegistry.get(Cn).getParams({volume:r.f.One})))};const qt={volume:st.data};return{type:c.t.Mapped(at.default.name,at.types,Cn=>c.t.Group(at.get(Cn).getParams(Et,st.data))),colorTheme:c.t.Mapped(Nt.defaultColorTheme.name,Et.colorThemeRegistry.getApplicableTypes(qt),Cn=>c.t.Group(Et.colorThemeRegistry.get(Cn).getParams(qt))),sizeTheme:c.t.Mapped(Nt.defaultSizeTheme.name,Et.sizeThemeRegistry.getApplicableTypes(qt),Cn=>c.t.Group(Et.sizeThemeRegistry.get(Cn).getParams(qt)))}}})({canAutoUpdate:({oldParams:st,newParams:et})=>st.type.name===et.type.name,apply:({a:st,params:et},at)=>A.YZ.create("Volume Representation",function(){var Et=(0,e.A)(function*(Nt){var qt;const Cn={runtime:Nt,assetManager:at.managers.asset},Un=at.representation.volume.registry.get(et.type.name);Un.ensureCustomProperties&&(yield Un.ensureCustomProperties.attach(Cn,st.data));const vn=Un.factory({webgl:null===(qt=at.canvas3d)||void 0===qt?void 0:qt.webgl,...at.representation.volume.themes},Un.getParams);vn.setTheme(y.S.create(at.representation.volume.themes,{volume:st.data},et));const nr=et.type.params||{};return yield vn.createOrUpdate(nr,st.data).runInContext(Nt),new i.O.Volume.Representation3D({repr:vn,sourceData:st.data},{label:Un.label,description:Vi.getDescription(nr)})});return function(Nt){return Et.apply(this,arguments)}}()),update:({a:st,b:et,oldParams:at,newParams:Et},Nt)=>A.YZ.create("Volume Representation",function(){var qt=(0,e.A)(function*(Cn){var Un;if(Et.type.name!==at.type.name)return null===(Un=Nt.representation.volume.registry.get(at.type.name).ensureCustomProperties)||void 0===Un||Un.detach(st.data),t.xE.UpdateResult.Recreate;const vn={...et.data.repr.props,...Et.type.params};return et.data.repr.setTheme(y.S.create(Nt.representation.volume.themes,{volume:st.data},Et)),yield et.data.repr.createOrUpdate(vn,st.data).runInContext(Cn),et.data.sourceData=st.data,et.description=Vi.getDescription(vn),t.xE.UpdateResult.Updated});return function(Cn){return qt.apply(this,arguments)}}())}),ln=i.H.BuiltIn({name:"shape-representation-3d",display:"3D Representation",from:i.O.Shape.Provider,to:i.O.Shape.Representation3D,params:(st,et)=>st?st.data.params:q.iy.Params})({canAutoUpdate:()=>!0,apply:({a:st,params:et},at)=>A.YZ.create("Shape Representation",function(){var Et=(0,e.A)(function*(Nt){const qt={...c.t.getDefaultValues(st.data.params),...et},Cn=R(st.data.getShape,st.data.geometryUtils);return yield Cn.createOrUpdate(qt,st.data.data).runInContext(Nt),new i.O.Shape.Representation3D({repr:Cn,sourceData:st.data},{label:st.data.label})});return function(Nt){return Et.apply(this,arguments)}}()),update:({a:st,b:et,newParams:Et},Nt)=>A.YZ.create("Shape Representation",function(){var qt=(0,e.A)(function*(Cn){const Un={...et.data.repr.props,...Et};return yield et.data.repr.createOrUpdate(Un,st.data.data).runInContext(Cn),et.data.sourceData=st.data,t.xE.UpdateResult.Updated});return function(Cn){return qt.apply(this,arguments)}}())}),Ht=i.H.BuiltIn({name:"model-unitcell-3d",display:"Model Unit Cell",from:i.O.Molecule.Model,to:i.O.Shape.Representation3D,params:()=>({...Se})})({isApplicable:st=>!!jr.i.Provider.get(st.data),canAutoUpdate:({})=>!0,apply:({a:st,params:et},at)=>A.YZ.create("Model Unit Cell",function(){var Et=(0,e.A)(function*(Nt){var qt;const Cn=jr.i.Provider.get(st.data);if(!Cn)return t.BM.Null;const Un=K(st.data,Cn,et),vn=function ne(st,et){return b.YL.createMulti("Unit Cell",st,et,b.YL.StateBuilder,Oe)}({webgl:null===(qt=at.canvas3d)||void 0===qt?void 0:qt.webgl,...at.representation.structure.themes},()=>Se);return yield vn.createOrUpdate(et,Un).runInContext(Nt),new i.O.Shape.Representation3D({repr:vn,sourceData:Un},{label:"Unit Cell",description:Cn.spacegroup.name})});return function(Nt){return Et.apply(this,arguments)}}()),update:({a:st,b:et,newParams:at})=>A.YZ.create("Model Unit Cell",function(){var Et=(0,e.A)(function*(Nt){const qt=jr.i.Provider.get(st.data);if(!qt)return t.xE.UpdateResult.Null;const Cn={...et.data.repr.props,...at},Un=K(st.data,qt,Cn);return yield et.data.repr.createOrUpdate(Cn,Un).runInContext(Nt),et.data.sourceData=Un,t.xE.UpdateResult.Updated});return function(Nt){return Et.apply(this,arguments)}}())}),Gn=i.H.BuiltIn({name:"structure-bounding-box-3d",display:"Bounding Box",from:i.O.Molecule.Structure,to:i.O.Shape.Representation3D,params:{radius:c.t.Numeric(.05,{min:.01,max:4,step:.01},{isEssential:!0}),color:c.t.Color(v.s.red,{isEssential:!0}),...ee.e.Params}})({canAutoUpdate:()=>!0,apply:({a:st,params:et},at)=>A.YZ.create("Bounding Box",function(){var Et=(0,e.A)(function*(Nt){const qt=R((Cn,Un,vn,nr)=>{const pr=(0,Fo.getBoxMesh)(Un.box,Un.radius,nr?.geometry);return _.y.create("Bouding Box",Un,pr,()=>Un.color,()=>1,()=>"Bounding Box")},ee.e.Utils);return yield qt.createOrUpdate(et,{box:st.data.boundary.box,radius:et.radius,color:et.color}).runInContext(Nt),new i.O.Shape.Representation3D({repr:qt,sourceData:st.data},{label:"Bounding Box"})});return function(Nt){return Et.apply(this,arguments)}}()),update:({a:st,b:et,newParams:Et},Nt)=>A.YZ.create("Bounding Box",function(){var qt=(0,e.A)(function*(Cn){return yield et.data.repr.createOrUpdate(Et,{box:st.data.boundary.box,radius:Et.radius,color:Et.color}).runInContext(Cn),et.data.sourceData=st.data,t.xE.UpdateResult.Updated});return function(Cn){return qt.apply(this,arguments)}}())}),ar=i.H.BuiltIn({name:"structure-selections-distance-3d",display:"3D Distance",from:i.O.Molecule.Structure.Selections,to:i.O.Shape.Representation3D,params:()=>({...Ie})})({canAutoUpdate:({})=>!0,apply:({a:st,params:et},at)=>A.YZ.create("Structure Distance",function(){var Et=(0,e.A)(function*(Nt){var qt;const Cn=mt(st.data),Un=function $e(st,et){return b.YL.createMulti("Distance",st,et,b.YL.StateBuilder,ge)}({webgl:null===(qt=at.canvas3d)||void 0===qt?void 0:qt.webgl,...at.representation.structure.themes},()=>Ie);return yield Un.createOrUpdate(et,Cn).runInContext(Nt),new i.O.Shape.Representation3D({repr:Un,sourceData:Cn},{label:"Distance"})});return function(Nt){return Et.apply(this,arguments)}}()),update:({a:st,b:et,newParams:Et},Nt)=>A.YZ.create("Structure Distance",function(){var qt=(0,e.A)(function*(Cn){const Un={...et.data.repr.props,...Et},vn=mt(st.data);return yield et.data.repr.createOrUpdate(Un,vn).runInContext(Cn),et.data.sourceData=vn,t.xE.UpdateResult.Updated});return function(Cn){return qt.apply(this,arguments)}}())}),kn=i.H.BuiltIn({name:"structure-selections-angle-3d",display:"3D Angle",from:i.O.Molecule.Structure.Selections,to:i.O.Shape.Representation3D,params:()=>({...ho})})({canAutoUpdate:({})=>!0,apply:({a:st,params:et},at)=>A.YZ.create("Structure Angle",function(){var Et=(0,e.A)(function*(Nt){var qt;const Cn=_t(st.data),Un=function fn(st,et){return b.YL.createMulti("Angle",st,et,b.YL.StateBuilder,so)}({webgl:null===(qt=at.canvas3d)||void 0===qt?void 0:qt.webgl,...at.representation.structure.themes},()=>ho);return yield Un.createOrUpdate(et,Cn).runInContext(Nt),new i.O.Shape.Representation3D({repr:Un,sourceData:Cn},{label:"Angle"})});return function(Nt){return Et.apply(this,arguments)}}()),update:({a:st,b:et,newParams:Et},Nt)=>A.YZ.create("Structure Angle",function(){var qt=(0,e.A)(function*(Cn){const Un={...et.data.repr.props,...Et},vn=_t(st.data);return yield et.data.repr.createOrUpdate(Un,vn).runInContext(Cn),et.data.sourceData=vn,t.xE.UpdateResult.Updated});return function(Cn){return qt.apply(this,arguments)}}())}),ur=i.H.BuiltIn({name:"structure-selections-dihedral-3d",display:"3D Dihedral",from:i.O.Molecule.Structure.Selections,to:i.O.Shape.Representation3D,params:()=>({...St})})({canAutoUpdate:({})=>!0,apply:({a:st,params:et},at)=>A.YZ.create("Structure Dihedral",function(){var Et=(0,e.A)(function*(Nt){var qt;const Cn=Me(st.data),Un=function Yr(st,et){return b.YL.createMulti("Dihedral",st,et,b.YL.StateBuilder,rt)}({webgl:null===(qt=at.canvas3d)||void 0===qt?void 0:qt.webgl,...at.representation.structure.themes},()=>St);return yield Un.createOrUpdate(et,Cn).runInContext(Nt),new i.O.Shape.Representation3D({repr:Un,sourceData:Cn},{label:"Dihedral"})});return function(Nt){return Et.apply(this,arguments)}}()),update:({a:st,b:et,newParams:Et},Nt)=>A.YZ.create("Structure Dihedral",function(){var qt=(0,e.A)(function*(Cn){const Un={...et.data.repr.props,...Et},vn=Me(st.data);return yield et.data.repr.createOrUpdate(Un,vn).runInContext(Cn),et.data.sourceData=vn,t.xE.UpdateResult.Updated});return function(Cn){return qt.apply(this,arguments)}}())}),sr=i.H.BuiltIn({name:"structure-selections-label-3d",display:"3D Label",from:i.O.Molecule.Structure.Selections,to:i.O.Shape.Representation3D,params:()=>({...yt})})({canAutoUpdate:({})=>!0,apply:({a:st,params:et},at)=>A.YZ.create("Structure Label",function(){var Et=(0,e.A)(function*(Nt){var qt,Cn,Un;const vn=Ke(st.data),nr=function nn(st,et){return b.YL.createMulti("Label",st,et,b.YL.StateBuilder,gt)}({webgl:null===(qt=at.canvas3d)||void 0===qt?void 0:qt.webgl,...at.representation.structure.themes},()=>yt);yield nr.createOrUpdate(et,vn).runInContext(Nt);const pr=!!(null!==(Cn=et.snapshotKey)&&void 0!==Cn&&Cn.trim()||null!==(Un=et.tooltip)&&void 0!==Un&&Un.trim());return nr.setState({pickable:pr,markerActions:pr?u.sY.Highlighting:u.xi.None}),new i.O.Shape.Representation3D({repr:nr,sourceData:vn},{label:"Label"})});return function(Nt){return Et.apply(this,arguments)}}()),update:({a:st,b:et,newParams:Et},Nt)=>A.YZ.create("Structure Label",function(){var qt=(0,e.A)(function*(Cn){var Un,vn;const nr={...et.data.repr.props,...Et},pr=Ke(st.data);yield et.data.repr.createOrUpdate(nr,pr).runInContext(Cn),et.data.sourceData=pr;const Rr=!!(null!==(Un=Et.snapshotKey)&&void 0!==Un&&Un.trim()||null!==(vn=Et.tooltip)&&void 0!==vn&&vn.trim());return et.data.repr.setState({pickable:Rr,markerActions:Rr?u.sY.Highlighting:u.xi.None}),t.xE.UpdateResult.Updated});return function(Cn){return qt.apply(this,arguments)}}())}),Jn=i.H.BuiltIn({name:"structure-selections-orientation-3d",display:"3D Orientation",from:i.O.Molecule.Structure.Selections,to:i.O.Shape.Representation3D,params:()=>({...un})})({canAutoUpdate:({})=>!0,apply:({a:st,params:et},at)=>A.YZ.create("Structure Orientation",function(){var Et=(0,e.A)(function*(Nt){var qt;const Cn=ut(st.data),Un=function br(st,et){const at=b.YL.createMulti("Orientation",st,et,b.YL.StateBuilder,To);return at.setState({markerActions:u.sY.Highlighting}),at}({webgl:null===(qt=at.canvas3d)||void 0===qt?void 0:qt.webgl,...at.representation.structure.themes},()=>un);return yield Un.createOrUpdate(et,Cn).runInContext(Nt),new i.O.Shape.Representation3D({repr:Un,sourceData:Cn},{label:"Orientation"})});return function(Nt){return Et.apply(this,arguments)}}()),update:({a:st,b:et,newParams:Et},Nt)=>A.YZ.create("Structure Orientation",function(){var qt=(0,e.A)(function*(Cn){const Un={...et.data.repr.props,...Et},vn=ut(st.data);return yield et.data.repr.createOrUpdate(Un,vn).runInContext(Cn),et.data.sourceData=vn,t.xE.UpdateResult.Updated});return function(Cn){return qt.apply(this,arguments)}}())}),Br=i.H.BuiltIn({name:"structure-selections-plane-3d",display:"3D Plane",from:i.O.Molecule.Structure.Selections,to:i.O.Shape.Representation3D,params:()=>({...No})})({canAutoUpdate:({})=>!0,apply:({a:st,params:et},at)=>A.YZ.create("Structure Plane",function(){var Et=(0,e.A)(function*(Nt){var qt;const Cn=Kt(st.data),Un=function es(st,et){const at=b.YL.createMulti("Plane",st,et,b.YL.StateBuilder,hi);return at.setState({markerActions:u.sY.Highlighting}),at}({webgl:null===(qt=at.canvas3d)||void 0===qt?void 0:qt.webgl,...at.representation.structure.themes},()=>No);return yield Un.createOrUpdate(et,Cn).runInContext(Nt),new i.O.Shape.Representation3D({repr:Un,sourceData:Cn},{label:"Plane"})});return function(Nt){return Et.apply(this,arguments)}}()),update:({a:st,b:et,newParams:Et},Nt)=>A.YZ.create("Structure Plane",function(){var qt=(0,e.A)(function*(Cn){const Un={...et.data.repr.props,...Et},vn=Kt(st.data);return yield et.data.repr.createOrUpdate(Un,vn).runInContext(Cn),et.data.sourceData=vn,t.xE.UpdateResult.Updated});return function(Cn){return qt.apply(this,arguments)}}())})},9646:(tn,Ue,n)=>{"use strict";n.r(Ue),n.d(Ue,{BoxShape3D:()=>_,getBoxMesh:()=>M});var e=n(467),o=n(9283),r=n(573),t=n(3280),A=n(5384),y=n(4369),c=n(3558),i=n(4824),v=n(2745),O=n(8277),b=n(381);const _=b.H.BuiltIn({name:"box-shape-3d",display:"Box Shape",from:b.O.Root,to:b.O.Shape.Provider,params:{bottomLeft:O.t.Vec3((0,y.eB)()),topRight:O.t.Vec3(y.eB.create(1,1,1)),radius:O.t.Numeric(.15,{min:.01,max:4,step:.01}),color:O.t.Color(v.s.red)}})({canAutoUpdate:()=>!0,apply:({params:I})=>i.YZ.create("Shape Representation",function(){var l=(0,e.A)(function*(m){return new b.O.Shape.Provider({label:"Box",data:I,params:o.e.Params,getShape:(u,d)=>{const s=M(A.DJ.create(I.bottomLeft,I.topRight),I.radius);return c.y.create("Box",d,s,()=>d.color,()=>1,()=>"Box")},geometryUtils:o.e.Utils},{label:"Box"})});return function(m){return l.apply(this,arguments)}}())});function M(I,l,m){const u=y.eB.sub((0,y.eB)(),I.max,I.min),d=y.$I.fromTranslation((0,y.$I)(),y.eB.create(.5,.5,.5)),s=y.$I.fromScaling((0,y.$I)(),u),C=y.$I.fromTranslation((0,y.$I)(),I.min),h=y.$I.mul3((0,y.$I)(),C,s,d),a=r.P.createState(256,128,m);a.currentGroup=1,r.P.addCage(a,h,(0,t.UC)(),l,2,20);const S=r.P.getMesh(a),D=y.eB.scaleAndAdd((0,y.eB)(),I.min,u,.5),R=y.eB.distance(I.min,D);return S.setBoundingSphere(A.f8.create(D,R)),S}},1133:(tn,Ue,n)=>{"use strict";n.d(Ue,{VK:()=>i,aU:()=>A,dL:()=>y,jB:()=>c});var e=n(9619),o=n(1395),r=n(3584),t=n(9611);const A=o.createContext(void 0);let y=(()=>{class v extends o.Component{subscribe(b,_){typeof this.subs>"u"&&(this.subs=[]),this.subs.push(b.subscribe(_))}componentWillUnmount(){if(this.subs){for(const b of this.subs)b.unsubscribe();this.subs=void 0}}constructor(b,_){super(b),this.subs=void 0,this.plugin=_,this.init&&this.init()}}return v.contextType=A,v})(),c=(()=>{class v extends o.PureComponent{subscribe(b,_){typeof this.subs>"u"&&(this.subs=[]),this.subs.push(b.subscribe(_))}componentWillUnmount(){if(this.subs){for(const b of this.subs)b.unsubscribe();this.subs=void 0}}constructor(b,_){super(b,_),this.subs=void 0,this.plugin=_,this.init&&this.init()}}return v.contextType=A,v})();class i extends y{componentDidUpdate(O){void 0!==this.props.initiallyCollapsed&&O.initiallyCollapsed!==this.props.initiallyCollapsed&&this.setState({isCollapsed:this.props.initiallyCollapsed})}render(){var O;return this.state.isHidden?null:(0,e.jsxs)("div",{className:this.state.isCollapsed?"msp-transform-wrapper msp-transform-wrapper-collapsed":"msp-transform-wrapper",children:[(0,e.jsx)("div",{className:"msp-transform-header",children:(0,e.jsxs)(r.$n,{icon:this.state.brand?void 0:this.state.isCollapsed?t.Cp:t.DM,noOverflow:!0,onClick:this.toggleCollapsed,className:this.state.brand?`msp-transform-header-brand msp-transform-header-brand-${this.state.brand.accent}`:void 0,title:"Click to "+(this.state.isCollapsed?"expand":"collapse"),children:[(0,e.jsx)(t.In,{svg:null===(O=this.state.brand)||void 0===O?void 0:O.svg,inline:!0}),this.state.header,(0,e.jsx)("small",{style:{margin:"0 6px"},children:this.state.isCollapsed?"":this.state.description})]})}),!this.state.isCollapsed&&this.renderControls()]})}constructor(O,b){super(O,b),this.toggleCollapsed=()=>{this.setState({isCollapsed:!this.state.isCollapsed})};const _=this.defaultState();void 0!==O.initiallyCollapsed&&(_.isCollapsed=O.initiallyCollapsed),void 0!==O.header&&(_.header=O.header),this.state=_}}},8791:(tn,Ue,n)=>{"use strict";n.d(Ue,{W:()=>A});var e=n(9619),o=n(1395),r=n(3584),t=n(9611);class A extends o.PureComponent{constructor(){super(...arguments),this.hide=()=>this.props.onSelect(void 0)}render(){const M=this.props,I=(0,e.jsx)(y,{items:M.items,onSelect:M.onSelect,current:M.current,multiselect:this.props.multiselect,noOffset:this.props.noOffset,noAccent:this.props.noAccent});return(0,e.jsxs)("div",{className:"msp-action-menu-options"+(M.header?"":" msp-action-menu-options-no-header"),children:[M.header&&(0,e.jsx)(r.tW,{header:M.header,title:M.title,initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:this.hide,topRightIcon:t.X6,children:I}),!M.header&&I]})}}!function(_){function l(h,a){const{label:S,value:D,category:R,selected:f,icon:p,addOn:E,description:T}=a||{};let L;const w=[];for(let Q=0;Qh[0],label:h=>h[1],category:h=>h[2]};_.createItemsFromSelectOptions=function u(h,a){return l(h,a?{...m,...a}:m)},_.hasSelectedItem=function d(h){if(O(h))return!1;if(v(h))return!!h.selected;for(const a of h)if(d(a))return!0;return!1},_.findItem=function s(h,a){if(!O(h)){if(v(h))return h.value===a?h:void 0;for(const S of h){const D=s(S,a);if(D)return D}}},_.getFirstItem=function C(h){if(!O(h)){if(v(h))return h;for(const a of h){const S=C(a);if(S)return S}}}}(A||(A={}));class y extends o.PureComponent{constructor(){super(...arguments),this.state=y.createState(this.props),this.toggleExpanded=M=>{this.setState({isExpanded:!this.state.isExpanded}),M.currentTarget.blur()},this.selectAll=()=>{const M=b(this.props.items,[]).filter(I=>!I.selected);this.props.onSelect(M)},this.selectNone=()=>{const M=b(this.props.items,[]).filter(I=>!!I.selected);this.props.onSelect(M)}}static createState(M,I){const l=i(M.items)&&O(M.items[0])?M.items[0]:void 0,m=!l?.isIndependent&&(M.multiselect?A.hasSelectedItem(M.items):!!M.current&&!!A.findItem(M.items,M.current.value)||A.hasSelectedItem(M.items));return{header:l,hasCurrent:m,isExpanded:m||(I??!!l?.initiallyExpanded)}}componentDidUpdate(M){if(this.props.items!==M.items||this.props.current!==M.current){const I=i(this.props.items)&&i(M.items)&&O(this.props.items[0])&&O(M.items[0])&&this.props.items[0].label===M.items[0].label?this.state.isExpanded:void 0;this.setState(y.createState(this.props,I))}}get multiselectHeader(){const{header:M,hasCurrent:I}=this.state;return(0,e.jsxs)("div",{className:"msp-flex-row msp-control-group-header",children:[(0,e.jsx)(r.$n,{icon:this.state.isExpanded?t.DM:t.Cp,flex:!0,noOverflow:!0,onClick:this.toggleExpanded,title:`Click to ${this.state.isExpanded?"collapse":"expand"}.${M?.description?` ${M?.description}`:""}`,children:I?(0,e.jsx)("b",{children:M?.label}):M?.label}),(0,e.jsx)(r.$n,{icon:t.Xq,flex:!0,onClick:this.selectAll,style:{flex:"0 0 50px",textAlign:"right"},children:"All"}),(0,e.jsx)(r.$n,{icon:t.X6,flex:!0,onClick:this.selectNone,style:{flex:"0 0 50px",textAlign:"right"},children:"None"})]})}get basicHeader(){const{header:M,hasCurrent:I}=this.state;return(0,e.jsx)("div",{className:"msp-control-group-header",style:{marginTop:"1px"},children:(0,e.jsx)(r.$n,{noOverflow:!0,icon:this.state.isExpanded?t.DM:t.Cp,onClick:this.toggleExpanded,title:`Click to ${this.state.isExpanded?"collapse":"expand"}. ${M?.description?M?.description:""}`,children:I?(0,e.jsx)("b",{children:M?.label}):M?.label})})}render(){const{items:M,onSelect:I,current:l}=this.props;if(O(M))return null;if(v(M))return(0,e.jsx)(c,{item:M,onSelect:I,current:l,multiselect:this.props.multiselect});const{header:m}=this.state;return(0,e.jsxs)(e.Fragment,{children:[m&&(this.props.multiselect&&this.state.isExpanded?this.multiselectHeader:this.basicHeader),(0,e.jsx)("div",{className:this.props.noOffset?void 0:this.props.noAccent?"msp-control-offset":"msp-accent-offset",children:(!m||this.state.isExpanded)&&M.map((u,d)=>O(u)?null:v(u)?(0,e.jsx)(c,{item:u,onSelect:I,current:l,multiselect:this.props.multiselect},d):(0,e.jsx)(y,{items:u,onSelect:I,current:l,multiselect:this.props.multiselect,noAccent:!0},d))})]})}}const c=({item:_,onSelect:M,current:I,multiselect:l})=>(0,e.jsxs)(r.$n,{icon:_.icon,noOverflow:!0,className:"msp-action-menu-button",onClick:d=>M(l?[_]:_,d),disabled:_.disabled,style:_.addOn?{position:"relative"}:void 0,title:_.description,children:[I===_||_.selected?(0,e.jsx)("b",{children:_.label}):_.label,_.addOn]});function i(_){return!!_&&Array.isArray(_)}function v(_){return _&&"item"===_.kind}function O(_){return _&&"header"===_.kind}function b(_,M){if(O(_))return M;if(v(_))return M.push(_),M;for(const I of _)b(I,M);return M}},22:(tn,Ue,n)=>{"use strict";n.d(Ue,{y$:()=>O,WC:()=>_,cq:()=>i});var e=n(9619),o=n(190),r=n(7785),t=n(1395),A=n(3584);const c=(0,n(3057).qM)([["black",0],["gray",8421504],["white",16777215],["red",13840661],["orange",14840576],["yellow",16565248],["green",6863872],["cyan",1484197],["blue",40160],["purple",8086783],["magenta",16394495],["violet",8200583]]);class i extends t.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!!this.props.param.isExpanded||!!this.props.hideNameRow,lightness:0},this.toggleExpanded=I=>{this.setState({isExpanded:!this.state.isExpanded}),I.currentTarget.blur()},this.onClickSwatch=I=>{const l=o.Q1.fromHexString(I.currentTarget.getAttribute("data-color")||"0");l!==this.props.value&&(this.props.param.isExpanded||this.setState({isExpanded:!1}),this.update(l))},this.onR=I=>{const[,l,m]=o.Q1.toRgb(this.props.value),u=o.Q1.fromRgb(I,l,m);u!==this.props.value&&this.update(u)},this.onG=I=>{const[l,,m]=o.Q1.toRgb(this.props.value),u=o.Q1.fromRgb(l,I,m);u!==this.props.value&&this.update(u)},this.onB=I=>{const[l,m]=o.Q1.toRgb(this.props.value),u=o.Q1.fromRgb(l,m,I);u!==this.props.value&&this.update(u)},this.onRGB=I=>{const l=o.Q1.fromHexStyle(I.currentTarget.value||"0");l!==this.props.value&&this.update(l)},this.onLighten=()=>{this.update(o.Q1.lighten(this.props.value,.1))},this.onDarken=()=>{this.update(o.Q1.darken(this.props.value,.1))}}update(I){this.props.onChange({param:this.props.param,name:this.props.name,value:I})}swatch(){return(0,e.jsx)("div",{className:"msp-combined-color-swatch",children:c.map(I=>(0,e.jsx)(A.$n,{inline:!0,"data-color":I[1],onClick:this.onClickSwatch,style:{background:o.Q1.toStyle(I[1])}},I[1]))})}render(){const I=this.props.param.label||(0,r.Hh)(this.props.name),[l,m,u]=o.Q1.toRgb(this.props.value),d=(0,e.jsxs)(e.Fragment,{children:[this.swatch(),(0,e.jsx)(A.eJ,{label:"RGB",className:"msp-control-label-short",control:(0,e.jsxs)("div",{style:{display:"flex",textAlignLast:"center",left:"80px"},children:[(0,e.jsx)(A.ks,{onChange:this.onR,numeric:!0,value:l,delayMs:250,style:{order:1,flex:"1 1 auto",minWidth:0},className:"msp-form-control",onEnter:this.props.onEnter,blurOnEnter:!0,blurOnEscape:!0}),(0,e.jsx)(A.ks,{onChange:this.onG,numeric:!0,value:m,delayMs:250,style:{order:2,flex:"1 1 auto",minWidth:0},className:"msp-form-control",onEnter:this.props.onEnter,blurOnEnter:!0,blurOnEscape:!0}),(0,e.jsx)(A.ks,{onChange:this.onB,numeric:!0,value:u,delayMs:250,style:{order:3,flex:"1 1 auto",minWidth:0},className:"msp-form-control",onEnter:this.props.onEnter,blurOnEnter:!0,blurOnEscape:!0}),(0,e.jsx)("input",{onInput:this.onRGB,type:"color",value:o.Q1.toHexStyle(this.props.value),style:{order:4,flex:"1 1 auto",minWidth:"32px",width:"32px",height:"32px",padding:"0 2px 0 2px",background:"none",border:"none",cursor:"pointer"}})]})}),(0,e.jsxs)("div",{style:{display:"flex",textAlignLast:"center"},children:[(0,e.jsx)(A.$n,{onClick:this.onLighten,style:{order:1,flex:"1 1 auto",minWidth:0},className:"msp-form-control",children:"Lighten"}),(0,e.jsx)(A.$n,{onClick:this.onDarken,style:{order:1,flex:"1 1 auto",minWidth:0},className:"msp-form-control",children:"Darken"})]})]});return this.props.hideNameRow?d:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(A.eJ,{title:this.props.param.description,label:I,control:(0,e.jsx)(A.$n,{onClick:this.toggleExpanded,inline:!0,className:"msp-combined-color-button",style:{background:o.Q1.toStyle(this.props.value)}})}),this.state.isExpanded&&(0,e.jsx)("div",{className:"msp-control-offset",children:d})]})}}let v;function O(){return v||(v=(0,e.jsx)(e.Fragment,{children:c.map(M=>(0,e.jsx)("option",{value:M[1],style:{background:`${o.Q1.toStyle(M[1])}`},children:(0,r.Mk)(M[0])},M[1]))}),v)}const b=function(){const M=new Map;for(const I of c)M.set(I[1],I[0]);return M}();function _(M){return b.has(M)?null:(0,e.jsx)("option",{value:M,style:{background:`${o.Q1.toStyle(M)}`},children:o.Q1.toRgbString(M)},o.Q1.toHexString(M))}},3584:(tn,Ue,n)=>{"use strict";n.d(Ue,{$n:()=>O,K0:()=>b,U2:()=>i,X3:()=>v,Yj:()=>M,eJ:()=>I,ff:()=>_,ks:()=>c,tW:()=>A});var e=n(9619),o=n(1395),r=n(190),t=n(9611);class A extends o.Component{constructor(){super(...arguments),this.state={isExpanded:!!this.props.initialExpanded},this.headerClicked=()=>{this.props.onHeaderClick?this.props.onHeaderClick():this.setState({isExpanded:!this.state.isExpanded})}}render(){let m=this.props.hideOffset?"msp-control-group-children":"msp-control-group-children msp-control-offset";return this.props.childrenClassName&&(m+=" "+this.props.childrenClassName),(0,e.jsxs)("div",{className:"msp-control-group-wrapper",style:{position:"relative",marginTop:this.props.noTopMargin?0:void 0},children:[(0,e.jsx)("div",{className:"msp-control-group-header",style:{marginLeft:this.props.headerLeftMargin},title:this.props.title,children:(0,e.jsxs)(O,{onClick:this.headerClicked,children:[!this.props.hideExpander&&(0,e.jsx)(t.In,{svg:this.state.isExpanded?t.Cp:t.DM}),this.props.topRightIcon&&(0,e.jsx)(t.In,{svg:this.props.topRightIcon,style:{position:"absolute",right:"2px",top:0}}),(0,e.jsx)("b",{children:this.props.header})]})}),this.state.isExpanded&&(0,e.jsx)("div",{className:m,style:{display:this.state.isExpanded?"block":"none",maxHeight:this.props.maxHeight,overflow:"hidden",overflowY:"auto"},children:this.props.children})]})}}function y(l){return l}class c extends o.PureComponent{constructor(){super(...arguments),this.input=o.createRef(),this.delayHandle=void 0,this.pendingValue=void 0,this.state={originalValue:"",value:""},this.onBlur=()=>{this.setState({value:""+this.state.originalValue}),this.props.onBlur&&this.props.onBlur()},this.raiseOnChange=()=>{void 0!==this.pendingValue&&(this.props.onChange(this.pendingValue),this.pendingValue=void 0)},this.onChange=m=>{const u=m.target.value;if(this.props.isValid&&!this.props.isValid(u)||this.props.numeric&&Number.isNaN(+u))return this.clearTimeout(),void this.setState({value:u});if(this.props.numeric)this.setState({value:u},()=>this.triggerChanged(u,+u));else{const s=(this.props.toValue||y)(u),C=(this.props.fromValue||y)(s);this.setState({value:C},()=>this.triggerChanged(C,s))}},this.onKeyUp=m=>{(27===m.charCode||27===m.keyCode||"Escape"===m.key)&&this.props.blurOnEscape&&this.input.current&&this.input.current.blur()},this.onKeyPress=m=>{(13===m.keyCode||13===m.charCode||"Enter"===m.key)&&(this.isPending&&(this.clearTimeout(),this.raiseOnChange()),this.props.blurOnEnter&&this.input.current&&this.input.current.blur(),this.props.onEnter&&this.props.onEnter()),m.stopPropagation()}}get isPending(){return typeof this.delayHandle<"u"}clearTimeout(){this.isPending&&(clearTimeout(this.delayHandle),this.delayHandle=void 0)}triggerChanged(m,u){this.clearTimeout(),m!==this.state.originalValue&&(this.props.delayMs?(this.pendingValue=u,this.delayHandle=setTimeout(this.raiseOnChange,this.props.delayMs)):this.props.onChange(u))}static getDerivedStateFromProps(m,u){const d=m.fromValue?m.fromValue(m.value):m.value;return d===u.originalValue?null:{originalValue:d,value:d}}render(){return(0,e.jsx)("input",{type:"text",className:this.props.className,style:this.props.style,ref:this.input,onBlur:this.onBlur,value:this.state.value,placeholder:this.props.placeholder,onChange:this.onChange,onKeyPress:this.props.onEnter||this.props.blurOnEnter||this.props.blurOnEscape?this.onKeyPress:void 0,onKeyDown:this.props.blurOnEscape?this.onKeyUp:void 0,disabled:!!this.props.isDisabled})}}class i extends o.Component{constructor(){super(...arguments),this.state={isExpanded:!1},this.toggleExpanded=()=>this.setState({isExpanded:!this.state.isExpanded})}render(){const{label:m,pivot:u,controls:d}=this.props;return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(I,{label:(0,e.jsxs)(e.Fragment,{children:[m,(0,e.jsx)("button",{className:"msp-btn-link msp-btn-icon msp-control-group-expander",onClick:this.toggleExpanded,title:(this.state.isExpanded?"Less":"More")+" options",style:{background:"transparent",textAlign:"left",padding:"0"},children:(0,e.jsx)(t.In,{svg:this.state.isExpanded?t.$j:t.CR,style:{display:"inline-block"}})})]}),control:u,children:this.props.colorStripe&&(0,e.jsx)("div",{className:"msp-expandable-group-color-stripe",style:{backgroundColor:r.Q1.toStyle(this.props.colorStripe)}})}),this.state.isExpanded&&(0,e.jsx)("div",{className:"msp-control-offset",children:d})]})}}function v(l){return(0,e.jsxs)("div",{className:"msp-section-header"+(l.accent?" msp-transform-header-brand-"+l.accent:""),children:[l.icon&&(0,e.jsx)(t.In,{svg:l.icon}),l.title," ",(0,e.jsx)("small",{children:l.desc})]})}function O(l){let u,m="msp-btn";return l.inline||(m+=" msp-btn-block"),l.noOverflow&&(m+=" msp-no-overflow"),l.flex&&(m+=" msp-flex-item"),("on"===l.commit||l.commit)&&(m+=" msp-btn-commit msp-btn-commit-on"),"off"===l.commit&&(m+=" msp-btn-commit msp-btn-commit-off"),l.children||(m+=" msp-btn-childless"),l.className&&(m+=" "+l.className),l.flex&&("number"==typeof l.flex?u={flex:`0 0 ${l.flex}px`,padding:0,maxWidth:`${l.flex}px`}:"string"==typeof l.flex&&(u={flex:`0 0 ${l.flex}`,padding:0,maxWidth:l.flex})),l.style&&(u?Object.assign(u,l.style):u=l.style),(0,e.jsxs)("button",{onClick:l.onClick,title:l.title,disabled:l.disabled,style:u,className:m,"data-id":l["data-id"],"data-color":l["data-color"],onContextMenu:l.onContextMenu,onMouseEnter:l.onMouseEnter,onMouseLeave:l.onMouseLeave,children:[l.icon&&(0,e.jsx)(t.In,{svg:l.icon}),l.children]})}function b(l){let u,m=`msp-btn msp-btn-icon${l.small?"-small":""}${l.className?" "+l.className:""}`;return typeof l.toggleState<"u"&&(m+=" msp-btn-link-toggle-"+(l.toggleState?"on":"off")),l.transparent&&(m+=" msp-transparent-bg"),l.flex&&(u="boolean"==typeof l.flex?{flex:"0 0 32px",padding:0}:"number"==typeof l.flex?{flex:`0 0 ${l.flex}px`,padding:0,maxWidth:`${l.flex}px`}:{flex:`0 0 ${l.flex}`,padding:0,maxWidth:l.flex}),l.style&&(u?Object.assign(u,l.style):u=l.style),(0,e.jsxs)("button",{className:m,onClick:l.onClick,title:l.title,disabled:l.disabled,"data-id":l["data-id"],style:u,children:[l.svg&&(0,e.jsx)(t.In,{svg:l.svg}),l.extraContent]})}class _ extends o.PureComponent{constructor(){super(...arguments),this.onClick=m=>{m.currentTarget.blur(),this.props.toggle()}}render(){const m=this.props,u=m.label;return(0,e.jsx)(O,{icon:this.props.icon,onClick:this.onClick,title:this.props.title,inline:this.props.inline,disabled:m.disabled,style:m.style,className:m.isSelected?`${m.className||""} msp-control-current`:m.className,children:u&&this.props.isSelected?(0,e.jsx)("b",{children:u}):u})}}class M extends o.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!!this.props.initiallyExpanded},this.toggleExpanded=()=>this.setState({isExpanded:!this.state.isExpanded})}render(){return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{className:"msp-control-group-header",style:{marginTop:void 0!==this.props.marginTop?this.props.marginTop:"1px",marginLeft:this.props.headerLeftMargin},children:(0,e.jsxs)("button",{className:"msp-btn msp-form-control msp-btn-block",onClick:this.toggleExpanded,style:this.props.headerStyle,children:[(0,e.jsx)(t.In,{svg:this.state.isExpanded?t.DM:t.Cp}),this.props.header]})}),this.state.isExpanded&&(this.props.noOffset?this.props.children:(0,e.jsx)("div",{className:this.props.accent?"msp-accent-offset":"msp-control-offset",children:this.props.children}))]})}}function I(l){let m="msp-control-row";return l.className&&(m+=" "+l.className),(0,e.jsxs)("div",{className:m,children:[(0,e.jsx)("span",{className:"msp-control-row-label",title:l.title,children:l.label}),(0,e.jsx)("div",{className:"msp-control-row-ctrl",children:l.control}),l.children]})}},9611:(tn,Ue,n)=>{"use strict";n.d(Ue,{$8:()=>ho,$j:()=>Dr,B7:()=>_,Bw:()=>Me,C$:()=>Ce,CQ:()=>ie,CR:()=>V,Cp:()=>J,DM:()=>H,E2:()=>yt,FJ:()=>nt,FP:()=>ye,Fi:()=>Z,Hk:()=>br,ID:()=>Q,In:()=>o,L3:()=>or,M6:()=>An,Mm:()=>ae,NT:()=>Rn,OY:()=>ke,QM:()=>y,RZ:()=>Ae,Rf:()=>Ur,Rm:()=>I,U3:()=>Gt,VH:()=>Ve,X6:()=>re,XD:()=>Oe,XI:()=>ce,Xq:()=>be,_c:()=>E,c3:()=>m,cv:()=>Ct,d6:()=>Vt,e:()=>Ir,fL:()=>Lt,fe:()=>g,fl:()=>xe,ij:()=>On,je:()=>dt,l8:()=>en,lj:()=>Bo,mf:()=>pn,ml:()=>tt,p8:()=>te,qF:()=>Hr,qp:()=>N,sM:()=>Y,sd:()=>kt,sx:()=>O,sy:()=>ir,tk:()=>i,vC:()=>K,xY:()=>cn,xf:()=>yn,y5:()=>Ie,yF:()=>L,yG:()=>po,yf:()=>nn,z7:()=>so,zs:()=>Fr});var e=n(9619);function o(Go){return Go.svg?(0,e.jsx)("span",{className:"msp-icon msp-material-icon"+(Go.inline?" msp-icon-inline":""),title:Go.title,style:Go.style,children:(0,e.jsx)(Go.svg,{})}):null}const r=(0,e.jsx)("circle",{r:"6px",id:"circle-left",cy:"12px",cx:"8px",strokeWidth:"1px"}),t=(0,e.jsx)("circle",{r:"6px",id:"circle-right",cy:"12px",cx:"16px",strokeWidth:"1px"}),A=(0,e.jsxs)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:[(0,e.jsxs)("defs",{children:[r,t]}),(0,e.jsxs)("g",{children:[(0,e.jsx)("use",{href:"#circle-left",className:"msp-shape-filled"}),(0,e.jsx)("use",{href:"#circle-right",className:"msp-shape-filled"}),(0,e.jsx)("use",{href:"#circle-left",className:"msp-shape-empty"})]})]});function y(){return A}const c=(0,e.jsxs)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:[(0,e.jsxs)("defs",{children:[r,t,(0,e.jsxs)("mask",{id:"mask-left",children:[(0,e.jsx)("use",{href:"#circle-left",fill:"white",stroke:"white"}),(0,e.jsx)("use",{href:"#circle-right",fill:"black",strokeWidth:"0px",stroke:"white"})]})]}),(0,e.jsxs)("g",{children:[(0,e.jsx)("use",{href:"#circle-left",className:"msp-shape-filled",mask:"url(#mask-left)"}),(0,e.jsx)("use",{href:"#circle-right",className:"msp-shape-empty"})]})]});function i(){return c}const v=(0,e.jsxs)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:[(0,e.jsxs)("defs",{children:[r,t,(0,e.jsx)("clipPath",{id:"clip-left",children:(0,e.jsx)("use",{href:"#circle-right"})})]}),(0,e.jsxs)("g",{children:[(0,e.jsx)("use",{href:"#circle-left",className:"msp-shape-filled",clipPath:"url(#clip-left)"}),(0,e.jsx)("use",{href:"#circle-left",className:"msp-shape-empty"}),(0,e.jsx)("use",{href:"#circle-right",className:"msp-shape-empty"})]})]});function O(){return v}const b=(0,e.jsxs)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:[(0,e.jsxs)("defs",{children:[r,t]}),(0,e.jsxs)("g",{children:[(0,e.jsx)("use",{href:"#circle-left",className:"msp-shape-empty"}),(0,e.jsx)("use",{href:"#circle-right",className:"msp-shape-filled"})]})]});function _(){return b}const M=(0,e.jsx)("svg",{width:"17px",height:"17px",viewBox:"0 0 299.463 299.463",strokeWidth:"6px",children:(0,e.jsx)("g",{children:(0,e.jsx)("path",{d:"M256.851,173.832v-48.201c22.916-4.918,34.151-30.668,22.556-50.771c-11.547-20.004-39.486-23.251-55.242-5.844 l-41.746-24.106C189.618,22.603,172.861,0,149.734,0c-23.132,0-39.881,22.609-32.685,44.911L75.305,69.016 C59.522,51.586,31.597,54.88,20.061,74.863c-11.63,20.163-0.298,45.862,22.557,50.769v48.2 c-22.821,4.898-34.195,30.591-22.556,50.771c11.529,19.972,39.454,23.285,55.242,5.845l41.746,24.106 c-7.199,22.308,9.559,44.911,32.685,44.911c23.132,0,39.88-22.609,32.685-44.911l41.745-24.106 c15.817,17.469,43.73,14.099,55.242-5.844c0,0,0-0.001,0.001-0.002c4.587-7.953,5.805-17.213,3.431-26.076 C279.392,185.657,269.129,176.461,256.851,173.832z M249.62,72.088c20.568,0,27.428,27.191,10.008,37.239 c-0.003,0.002-0.006,0.003-0.009,0.005c-10.04,5.81-22.85,1.762-27.877-8.475C225.206,87.548,234.938,72.088,249.62,72.088z M149.734,14.4c11.005,0,19.958,8.954,19.958,19.959c0,11.127-9.077,19.958-19.958,19.958c-10.95,0-19.958-8.9-19.958-19.958 C129.776,23.354,138.729,14.4,149.734,14.4z M39.84,109.328c-17.451-10.067-10.534-37.24,10.01-37.24 c15.311,0,24.922,16.653,17.251,29.942C61.681,111.397,49.517,114.925,39.84,109.328z M59.802,224.702 c-9.535,5.503-21.768,2.229-27.268-7.298c-7.639-13.242,1.887-29.945,17.236-29.945c0.013,0,0.027,0,0.04,0 C70.07,187.48,77.49,214.469,59.802,224.702z M149.734,285.062c-11.005,0-19.958-8.954-19.958-19.958 c0-11.127,9.077-19.958,19.958-19.958c10.954,0,19.958,8.903,19.958,19.958C169.693,276.109,160.74,285.062,149.734,285.062z M216.953,217.982l-41.727,24.095c-13.778-15.22-37.459-14.94-50.983,0l-41.728-24.096c6.196-19.289-5.541-39.835-25.498-44.149 V125.63c19.752-4.268,31.762-24.65,25.498-44.149l41.727-24.095c13.629,15.055,37.32,15.093,50.983,0l41.728,24.096 c-6.196,19.29,5.534,39.835,25.498,44.149v48.202C222.61,178.123,210.721,198.581,216.953,217.982z M266.935,217.404 c-5.501,9.528-17.732,12.802-27.261,7.302c-17.682-10.23-10.301-37.247,10.032-37.247 C264.984,187.459,274.602,204.112,266.935,217.404z"})})});function I(){return M}const l=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,e.jsx)("path",{d:"M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z"})});function m(){return l}(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,e.jsx)("path",{d:"M17,22V20H20V17H22V20.5C22,20.89 21.84,21.24 21.54,21.54C21.24,21.84 20.89,22 20.5,22H17M7,22H3.5C3.11,22 2.76,21.84 2.46,21.54C2.16,21.24 2,20.89 2,20.5V17H4V20H7V22M17,2H20.5C20.89,2 21.24,2.16 21.54,2.46C21.84,2.76 22,3.11 22,3.5V7H20V4H17V2M7,2V4H4V7H2V3.5C2,3.11 2.16,2.76 2.46,2.46C2.76,2.16 3.11,2 3.5,2H7M13,17.25L17,14.95V10.36L13,12.66V17.25M12,10.92L16,8.63L12,6.28L8,8.63L12,10.92M7,14.95L11,17.25V12.66L7,10.36V14.95M18.23,7.59C18.73,7.91 19,8.34 19,8.91V15.23C19,15.8 18.73,16.23 18.23,16.55L12.75,19.73C12.25,20.05 11.75,20.05 11.25,19.73L5.77,16.55C5.27,16.23 5,15.8 5,15.23V8.91C5,8.34 5.27,7.91 5.77,7.59L11.25,4.41C11.5,4.28 11.75,4.22 12,4.22C12.25,4.22 12.5,4.28 12.75,4.41L18.23,7.59Z"})}),(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,e.jsx)("path",{d:"M16,4L9,8.04V15.96L16,20L23,15.96V8.04M16,6.31L19.8,8.5L16,10.69L12.21,8.5M0,7V9H7V7M11,10.11L15,12.42V17.11L11,14.81M21,10.11V14.81L17,17.11V12.42M2,11V13H7V11M4,15V17H7V15"})});const h=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M10.07,14.27C10.57,14.03 11.16,14.25 11.4,14.75L13.7,19.74L15.5,18.89L13.19,13.91C12.95,13.41 13.17,12.81 13.67,12.58L13.95,12.5L16.25,12.05L8,5.12V15.9L9.82,14.43L10.07,14.27M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z"})});(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,e.jsx)("path",{fill:"currentColor",d:"M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z"})}),(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,e.jsx)("path",{fill:"currentColor",d:"M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M11,18H13V15.87C14.73,15.43 16,13.86 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13.86 9.27,15.43 11,15.87V18Z"})});const p=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{fill:"currentColor",d:"M7.5,5.6L5,7L6.4,4.5L5,2L7.5,3.4L10,2L8.6,4.5L10,7L7.5,5.6M19.5,15.4L22,14L20.6,16.5L22,19L19.5,17.6L17,19L18.4,16.5L17,14L19.5,15.4M22,2L20.6,4.5L22,7L19.5,5.6L17,7L18.4,4.5L17,2L19.5,3.4L22,2M13.34,12.78L15.78,10.34L13.66,8.22L11.22,10.66L13.34,12.78M14.37,7.29L16.71,9.63C17.1,10 17.1,10.65 16.71,11.04L5.04,22.71C4.65,23.1 4,23.1 3.63,22.71L1.29,20.37C0.9,20 0.9,19.35 1.29,18.96L12.96,7.29C13.35,6.9 14,6.9 14.37,7.29Z"})});function E(){return p}const T=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,e.jsx)("path",{d:"M3 17.25V21H6.75L17.81 9.93L14.06 6.18L3 17.25M22.61 18.36L18.36 22.61L13.16 17.41L14.93 15.64L15.93 16.64L18.4 14.16L19.82 15.58L18.36 17L19.42 18L20.84 16.6L22.61 18.36M6.61 10.83L1.39 5.64L5.64 1.39L7.4 3.16L4.93 5.64L6 6.7L8.46 4.22L9.88 5.64L8.46 7.05L9.46 8.05L6.61 10.83M20.71 7C21.1 6.61 21.1 6 20.71 5.59L18.37 3.29C18 2.9 17.35 2.9 16.96 3.29L15.12 5.12L18.87 8.87L20.71 7Z"})});function L(){return T}const w=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M22 11V3h-7v3H9V3H2v8h7V8h2v10h4v3h7v-8h-7v3h-2V8h2v3h7zM7 9H4V5h3v4zm10 6h3v4h-3v-4zm0-10h3v4h-3V5z"})});function Q(){return w}const G=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})});function V(){return G}const U=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z"})});function N(){return U}const k=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M7 10l5 5 5-5z"})});function H(){return k}const $=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M10 17l5-5-5-5v10z"})});function J(){return $}const W=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z"})});function te(){return W}const de=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M12 6v3l4-4-4-4v3c-4.42 0-8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.69-6 6-6zm6.76 1.74L17.3 9.2c.44.84.7 1.79.7 2.8 0 3.31-2.69 6-6 6v-3l-4 4 4 4v-3c4.42 0 8-3.58 8-8 0-1.57-.46-3.03-1.24-4.26z"})});function ye(){return de}const j=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M6 13c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-8c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm-3 .5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zM6 5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm15 5.5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zM14 7c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0-3.5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zm-11 10c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm7 7c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm0-17c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zM10 7c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0 5.5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm8 .5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-8c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm3 8.5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zM14 17c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 3.5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm-4-12c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0 8.5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm4-4.5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0-4c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z"})});function Z(){return j}const q=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M15 7v12.97l-4.21-1.81-.79-.34-.79.34L5 19.97V7h10m4-6H8.99C7.89 1 7 1.9 7 3h10c1.1 0 2 .9 2 2v13l2 1V3c0-1.1-.9-2-2-2zm-4 4H5c-1.1 0-2 .9-2 2v16l7-3 7 3V7c0-1.1-.9-2-2-2z"})});function Y(){return q}const ee=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M7 14c-1.66 0-3 1.34-3 3 0 1.31-1.16 2-2 2 .92 1.22 2.49 2 4 2 2.21 0 4-1.79 4-4 0-1.66-1.34-3-3-3zm13.71-9.37l-1.34-1.34a.9959.9959 0 00-1.41 0L9 12.25 11.75 15l8.96-8.96c.39-.39.39-1.02 0-1.41z"})});function g(){return ee}const _e=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M22.61 18.99l-9.08-9.08c.93-2.34.45-5.1-1.44-7C9.79.61 6.21.4 3.66 2.26L7.5 6.11 6.08 7.52 2.25 3.69C.39 6.23.6 9.82 2.9 12.11c1.86 1.86 4.57 2.35 6.89 1.48l9.11 9.11c.39.39 1.02.39 1.41 0l2.3-2.3c.4-.38.4-1.01 0-1.41zm-3 1.6l-9.46-9.46c-.61.45-1.29.72-2 .82-1.36.2-2.79-.21-3.83-1.25C3.37 9.76 2.93 8.5 3 7.26l3.09 3.09 4.24-4.24-3.09-3.09c1.24-.07 2.49.37 3.44 1.31 1.08 1.08 1.49 2.57 1.24 3.96-.12.71-.42 1.37-.88 1.96l9.45 9.45-.88.89z"})});function xe(){return _e}const le=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M22.7 19l-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C.4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c.5-.4.5-1.1.1-1.4z"})});function Ae(){return le}const Be=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M14.25 2.26l-.08-.04-.01.02C13.46 2.09 12.74 2 12 2 6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10c0-4.75-3.31-8.72-7.75-9.74zM19.41 9h-7.99l2.71-4.7c2.4.66 4.35 2.42 5.28 4.7zM13.1 4.08L10.27 9l-1.15 2L6.4 6.3C7.84 4.88 9.82 4 12 4c.37 0 .74.03 1.1.08zM5.7 7.09L8.54 12l1.15 2H4.26C4.1 13.36 4 12.69 4 12c0-1.85.64-3.55 1.7-4.91zM4.59 15h7.98l-2.71 4.7c-2.4-.67-4.34-2.42-5.27-4.7zm6.31 4.91L14.89 13l2.72 4.7C16.16 19.12 14.18 20 12 20c-.38 0-.74-.04-1.1-.09zm7.4-3l-4-6.91h5.43c.17.64.27 1.31.27 2 0 1.85-.64 3.55-1.7 4.91z"})});function Ce(){return Be}const Re=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M9.4 10.5l4.77-8.26C13.47 2.09 12.75 2 12 2c-2.4 0-4.6.85-6.32 2.25l3.66 6.35.06-.1zM21.54 9c-.92-2.92-3.15-5.26-6-6.34L11.88 9h9.66zm.26 1h-7.49l.29.5 4.76 8.25C21 16.97 22 14.61 22 12c0-.69-.07-1.35-.2-2zM8.54 12l-3.9-6.75C3.01 7.03 2 9.39 2 12c0 .69.07 1.35.2 2h7.49l-1.15-2zm-6.08 3c.92 2.92 3.15 5.26 6 6.34L12.12 15H2.46zm11.27 0l-3.9 6.76c.7.15 1.42.24 2.17.24 2.4 0 4.6-.85 6.32-2.25l-3.66-6.35-.93 1.6z"})});function ke(){return Re}const we=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3.59-13L12 10.59 8.41 7 7 8.41 10.59 12 7 15.59 8.41 17 12 13.41 15.59 17 17 15.59 13.41 12 17 8.41z"})});function Oe(){return we}const Se=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"})});function Ve(){return Se}const Ne=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm-7 7H3v4c0 1.1.9 2 2 2h4v-2H5v-4zM5 5h4V3H5c-1.1 0-2 .9-2 2v4h2V5zm14-2h-4v2h4v4h2V5c0-1.1-.9-2-2-2zm0 16h-4v2h4c1.1 0 2-.9 2-2v-4h-2v4z"})});function K(){return Ne}const ne=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})});function be(){return ne}const Te=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})});function ie(){return Te}const ue=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})});function re(){return ue}const ve=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"})});function ce(){return ve}const se=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"})});function ae(){return se}const ge=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4H8c-1.1 0-1.99.9-1.99 2L6 21c0 1.1.89 2 1.99 2H19c1.1 0 2-.9 2-2V11l-6-6zM8 21V7h6v5h5v9H8z"})});function Ie(){return ge}const Le=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M17 15h2V7c0-1.1-.9-2-2-2H9v2h8v8zM7 17V1H5v4H1v2h4v10c0 1.1.9 2 2 2h10v4h2v-4h4v-2H7z"})});function nt(){return Le}const je=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M3 5v4h2V5h4V3H5c-1.1 0-2 .9-2 2zm2 10H3v4c0 1.1.9 2 2 2h4v-2H5v-4zm14 4h-4v2h4c1.1 0 2-.9 2-2v-4h-2v4zm0-16h-4v2h4v4h2V5c0-1.1-.9-2-2-2z"})});function Lt(){return je}const Je=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zm-5.04-6.71l-2.75 3.54-1.96-2.36L6.5 17h11l-3.54-4.71z"})});function en(){return Je}const Bt=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M16 9v10H8V9h8m-1.5-6h-5l-1 1H5v2h14V4h-3.5l-1-1zM18 7H6v12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7z"})});function pn(){return Bt}(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"})});const _t=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"})});function Me(){return _t}(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"})});const Kt=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,e.jsx)("path",{d:"M3 13h2v-2H3v2zm0 4h2v-2H3v2zm2 4v-2H3c0 1.1.89 2 2 2zM3 9h2V7H3v2zm12 12h2v-2h-2v2zm4-18H9c-1.11 0-2 .9-2 2v10c0 1.1.89 2 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12H9V5h10v10zm-8 6h2v-2h-2v2zm-4 0h2v-2H7v2z"})}),gt=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"})});function yt(){return gt}const At=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"})});function Gt(){return At}const rn=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z"})});function tt(){return rn}const Mt=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M12 5.69l5 4.5V18h-2v-6H9v6H7v-7.81l5-4.5M12 3L2 12h3v8h6v-6h2v6h6v-8h3L12 3z"})});function nn(){return Mt}(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"})});const jt=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M19.5 9.5c-1.03 0-1.9.62-2.29 1.5h-2.92c-.39-.88-1.26-1.5-2.29-1.5s-1.9.62-2.29 1.5H6.79c-.39-.88-1.26-1.5-2.29-1.5C3.12 9.5 2 10.62 2 12s1.12 2.5 2.5 2.5c1.03 0 1.9-.62 2.29-1.5h2.92c.39.88 1.26 1.5 2.29 1.5s1.9-.62 2.29-1.5h2.92c.39.88 1.26 1.5 2.29 1.5 1.38 0 2.5-1.12 2.5-2.5s-1.12-2.5-2.5-2.5z"})}),Dt=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})});function Ct(){return Dt}const $t=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"})});function Vt(){return $t}const Wt=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})});function yn(){return Wt}const Zt=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h4v-2H5V8h14v10h-4v2h4c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2zm-7 6l-4 4h3v6h2v-6h3l-4-4z"})});function kt(){return Zt}const Ot=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M8 5v14l11-7z"})});function An(){return Ot}const jn=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"})});function On(){return jn}const fr=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M19 13H5v-2h14v2z"})});function Dr(){return fr}const Pr=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"})});function or(){return Pr}const Nr=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,e.jsx)("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z"})});function Ir(){return Nr}const Or=(0,e.jsxs)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:[(0,e.jsx)("circle",{cx:"7",cy:"14",r:"3"}),(0,e.jsx)("circle",{cx:"11",cy:"6",r:"3"}),(0,e.jsx)("circle",{cx:"16.6",cy:"17.6",r:"3"})]});(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"})});const ct=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M6 6h2v12H6zm3.5 6l8.5 6V6z"})});function dt(){return ct}const Yt=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M6 6h12v12H6z"})});function cn(){return Yt}const xn=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M4 6h16v2H4zm2-4h12v2H6zm14 8H4c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2zm0 10H4v-8h16v8zm-10-7.27v6.53L16 16z"})});function Rn(){return xn}const er=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M6.99 11L3 15l3.99 4v-3H14v-2H6.99v-3zM21 9l-3.99-4v3H10v2h7.01v3L21 9z"})});function ir(){return er}const Yn=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6-4h2V7h4V5h-4V3h-2v6z"})});function br(){return Yn}const vr=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M12 6c3.79 0 7.17 2.13 8.82 5.5-.59 1.22-1.42 2.27-2.41 3.12l1.41 1.41c1.39-1.23 2.49-2.77 3.18-4.53C21.27 7.11 17 4 12 4c-1.27 0-2.49.2-3.64.57l1.65 1.65C10.66 6.09 11.32 6 12 6zm-1.07 1.14L13 9.21c.57.25 1.03.71 1.28 1.28l2.07 2.07c.08-.34.14-.7.14-1.07C16.5 9.01 14.48 7 12 7c-.37 0-.72.05-1.07.14zM2.01 3.87l2.68 2.68C3.06 7.83 1.77 9.53 1 11.5 2.73 15.89 7 19 12 19c1.52 0 2.98-.29 4.32-.82l3.42 3.42 1.41-1.41L3.42 2.45 2.01 3.87zm7.5 7.5l2.61 2.61c-.04.01-.08.02-.12.02-1.38 0-2.5-1.12-2.5-2.5 0-.05.01-.08.01-.13zm-3.4-3.4l1.75 1.75c-.23.55-.36 1.15-.36 1.78 0 2.48 2.02 4.5 4.5 4.5.63 0 1.23-.13 1.77-.36l.98.98c-.88.24-1.8.38-2.75.38-3.79 0-7.17-2.13-8.82-5.5.7-1.43 1.72-2.61 2.93-3.53z"})});function Hr(){return vr}const Mr=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M12 6c3.79 0 7.17 2.13 8.82 5.5C19.17 14.87 15.79 17 12 17s-7.17-2.13-8.82-5.5C4.83 8.13 8.21 6 12 6m0-2C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4zm0 5c1.38 0 2.5 1.12 2.5 2.5S13.38 14 12 14s-2.5-1.12-2.5-2.5S10.62 9 12 9m0-2c-2.48 0-4.5 2.02-4.5 4.5S9.52 16 12 16s4.5-2.02 4.5-4.5S14.48 7 12 7z"})});function Fr(){return Mr}const Sr=(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"})});function Ur(){return Sr}(0,e.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{d:"M 9.64 7.64 c 0.23 -0.5 0.36 -1.05 0.36 -1.64 c 0 -2.21 -1.79 -4 -4 -4 S 2 3.79 2 6 s 1.79 4 4 4 c 0.59 0 1.14 -0.13 1.64 -0.36 L 10 12 l -2.36 2.36 C 7.14 14.13 6.59 14 6 14 c -2.21 0 -4 1.79 -4 4 s 1.79 4 4 4 s 4 -1.79 4 -4 c 0 -0.59 -0.13 -1.14 -0.36 -1.64 L 12 14 l 7 7 h 3 v -1 L 9.64 7.64 Z M 6 8 c -1.1 0 -2 -0.89 -2 -2 s 0.9 -2 2 -2 s 2 0.89 2 2 s -0.9 2 -2 2 Z m 0 12 c -1.1 0 -2 -0.89 -2 -2 s 0.9 -2 2 -2 s 2 0.89 2 2 s -0.9 2 -2 2 Z m 6 -7.5 c -0.28 0 -0.5 -0.22 -0.5 -0.5 s 0.22 -0.5 0.5 -0.5 s 0.5 0.22 0.5 0.5 s -0.22 0.5 -0.5 0.5 Z M 19 3 l -6 6 l 2 2 l 7 -7 V 3 Z"})});const po=function a(){return h},so=function Jr(){return Or},ho=function It(){return jt},Bo=function sn(){return Kt}},7561:(tn,Ue,n)=>{"use strict";n.d(Ue,{jH:()=>T,y1:()=>R,dr:()=>f,UT:()=>$,Z4:()=>w});var e=n(9619),o=n(1395),r=n(4369),t=n(9498),A=n(1861),y=n(190),c=n(1907),i=n(1094),v=n(229),O=n(8277),b=n(7785),_=n(1133),M=n(8791),I=n(22),l=n(3584),m=n(9611);class d extends o.PureComponent{render(){const{legend:re}=this.props,ve=re.colors.map(ce=>Array.isArray(ce)?`${y.Q1.toStyle(ce[0])} ${100*ce[1]}%`:y.Q1.toStyle(ce)).join(", ");return(0,e.jsx)("div",{className:"msp-scale-legend",children:(0,e.jsxs)("div",{style:{background:`linear-gradient(to right, ${ve})`},children:[(0,e.jsx)("span",{style:{float:"left"},children:re.minLabel}),(0,e.jsx)("span",{style:{float:"right"},children:re.maxLabel})]})})}}class s extends o.PureComponent{render(){const{legend:re}=this.props;return(0,e.jsx)("div",{className:"msp-table-legend",children:re.table.map((ve,ce)=>{const[se,ae]=ve;return(0,e.jsxs)("div",{children:[(0,e.jsx)("div",{className:"msp-table-legend-color",style:{backgroundColor:y.Q1.toStyle(ae)}}),(0,e.jsx)("div",{className:"msp-table-legend-text",children:se})]},ce)})})}}class C extends o.Component{constructor(re){super(re),this.state={show:!1},this.handleHover=this.handleHover.bind(this),this.handleHoverOff=this.handleHoverOff.bind(this),this.deletePoint=this.deletePoint.bind(this)}handleHover(){this.setState({show:!0});const re=r.ZY.create(this.props.nX,this.props.nY);this.props.onmouseover(re)}handleHoverOff(){this.setState({show:!1}),this.props.onmouseover(void 0)}deletePoint(){this.props.delete(this.props.id)}render(){return[(0,e.jsx)("circle",{r:"10",id:`${this.props.id}`,cx:this.props.x,cy:this.props.y,onClick:this.props.onclick,onDoubleClick:this.props.delete(this.props.id),onMouseEnter:this.handleHover,onMouseLeave:this.handleHoverOff,onMouseDown:this.props.onmousedown,fill:"black"},`${this.props.id}circle`)]}}var h=n(6853),a=n(6115);class S extends o.Component{constructor(re){super(re),this.handleKeyDown=ve=>{},this.handleKeyUp=ve=>{},this.handleClick=ve=>ce=>{},this.handleMouseDown=ve=>ce=>{if(0===ve||ve===this.state.points.length-1||this.state.canSelectMultiple)return;const se=this.normalizePoint(r.ZY.create(this.state.points[ve][0],this.state.points[ve][1]));this.ghostPoints.push(document.createElementNS(this.namespace,"circle")),this.ghostPoints[0].setAttribute("r","10"),this.ghostPoints[0].setAttribute("fill","orange"),this.ghostPoints[0].setAttribute("cx",`${se[0]}`),this.ghostPoints[0].setAttribute("cy",`${se[1]}`),this.ghostPoints[0].setAttribute("style","display: none"),this.gElement.appendChild(this.ghostPoints[0]),this.updatedX=se[0],this.updatedY=se[1],this.selected=[ve]},this.deletePoint=ve=>ce=>{if(0===ve||ve===this.state.points.length-1)return;const se=this.state.points.filter((ae,ge)=>ge!==ve);se.sort((ae,ge)=>ae[0]===ge[0]?0===ae[0]?ae[1]-ge[1]:1===ae[1]?ge[1]-ae[1]:ae[1]-ge[1]:ae[0]-ge[0]),this.setState({points:se}),this.change(se),ce.stopPropagation()},this.myRef=o.createRef(),this.state={points:[r.ZY.create(0,0),r.ZY.create(1,0)],copyPoint:void 0,canSelectMultiple:!1},this.height=400,this.width=600,this.padding=70,this.selected=void 0,this.ghostPoints=[],this.namespace="http://www.w3.org/2000/svg";for(const ve of this.props.data)this.state.points.push(ve);this.state.points.sort((ve,ce)=>ve[0]===ce[0]?0===ve[0]?ve[1]-ce[1]:1===ve[1]?ce[1]-ve[1]:ve[1]-ce[1]:ve[0]-ce[0]),this.handleDrag=this.handleDrag.bind(this),this.handleMultipleDrag=this.handleMultipleDrag.bind(this),this.handleDoubleClick=this.handleDoubleClick.bind(this),this.refCallBack=this.refCallBack.bind(this),this.handlePointUpdate=this.handlePointUpdate.bind(this),this.change=this.change.bind(this),this.handleKeyUp=this.handleKeyUp.bind(this),this.handleLeave=this.handleLeave.bind(this),this.handleEnter=this.handleEnter.bind(this)}render(){const re=this.renderPoints(),ve=this.renderLines(),ce=this.renderHistogram();return[(0,e.jsx)("div",{children:(0,e.jsxs)("svg",{className:"msp-canvas",ref:this.refCallBack,viewBox:`0 0 ${this.width+this.padding} ${this.height+this.padding}`,onMouseMove:this.handleDrag,onMouseUp:this.handlePointUpdate,onMouseLeave:this.handleLeave,onMouseEnter:this.handleEnter,tabIndex:0,onKeyDown:this.handleKeyDown,onKeyUp:this.handleKeyUp,onDoubleClick:this.handleDoubleClick,children:[(0,e.jsxs)("g",{stroke:"black",fill:"black",children:[ce,ve,re]}),(0,e.jsx)("g",{className:"ghost-points",stroke:"black",fill:"black"})]})},"LineGraph"),(0,e.jsx)("div",{id:"modal-root"},"modal")]}componentDidMount(){this.gElement=document.getElementsByClassName("ghost-points")[0]}change(re){const ve=re.slice();ve.shift(),ve.pop(),this.props.onChange(ve)}handleDrag(re){if(void 0===this.selected)return;const ve=this.myRef.createSVGPoint();let ce;const se=this.padding/2;ve.x=re.clientX,ve.y=re.clientY;const ae=ve.matrixTransform(this.myRef.getScreenCTM().inverse());ce=r.ZY.create(ae.x,ae.y),ce=(ae.xthis.width+se)&&(ae.y>this.height+se||ae.ythis.width+se?r.ZY.create(this.width+se,ae.y):r.ZY.create(ae.x,ae.y>this.height+se?this.height+se:ae.yge!==ve[0]);se.push(ce),se.sort((ae,ge)=>ae[0]===ge[0]?0===ae[0]?ae[1]-ge[1]:1===ae[1]?ge[1]-ae[1]:ae[1]-ge[1]:ae[0]-ge[0]),this.setState({points:se}),this.change(se),this.gElement.innerHTML="",this.ghostPoints=[],document.removeEventListener("mousemove",this.handleDrag,!0),document.removeEventListener("mouseup",this.handlePointUpdate,!0)}handleDoubleClick(re){const ve=this.myRef.createSVGPoint();ve.x=re.clientX,ve.y=re.clientY;const ce=ve.matrixTransform(this.myRef.getScreenCTM().inverse()),se=this.state.points,ae=this.padding/2;if(ce.xthis.width+ae||ce.y>this.height+ae||ce.yIe[0]===Le[0]?0===Ie[0]?Ie[1]-Le[1]:1===Ie[1]?Le[1]-Ie[1]:Ie[1]-Le[1]:Ie[0]-Le[0]),this.setState({points:se}),this.change(se)}handleLeave(){void 0!==this.selected&&(document.addEventListener("mousemove",this.handleDrag,!0),document.addEventListener("mouseup",this.handlePointUpdate,!0))}handleEnter(){document.removeEventListener("mousemove",this.handleDrag,!0),document.removeEventListener("mouseup",this.handlePointUpdate,!0)}normalizePoint(re){const ve=this.padding/2;return r.ZY.create(re[0]*(this.width+ve-ve)+ve,this.height+this.padding-(re[1]*(this.height+ve-ve)+ve))}unNormalizePoint(re){const ve=this.padding/2;return r.ZY.create((re[0]-ve)/(this.width+ve-ve),(this.height+this.padding-re[1]-ve)/(this.height+ve-ve))}refCallBack(re){re&&(this.myRef=re)}renderHistogram(){if(!this.props.volume)return null;const re=h.x.getHistogram(this.props.volume.grid,40),ve=[],ce=re.counts.length,se=this.width/ce,ae=this.padding/2,ge=(0,a._M)(re.counts)||1;for(let Ie=0;Ie{var ve,ce;if(null===(ce=(ve=this.props).onChange)||void 0===ce||ce.call(ve,re,this.props.values),this.props.onChangeValues){const se={...this.props.values,[re.name]:re.value};this.props.onChangeValues(se,this.props.values)}},this.paramGroups=(0,i._)(re=>function p(ue){function re(ge,Ie,Le){const nt=E(Ie);if(nt)if(Ie.category){Le.map||(Le.map=new Map);let je=Le.map.get(Ie.category);je||(je=[],Le.map.set(Ie.category,je),Le.params.push(je)),je.push([ge,Ie,nt])}else Le.params[0].push([ge,Ie,nt])}function ve(ge,Ie){const Le=ge[0],nt=Ie[0];return Le&&Le[1].category?nt&&nt[1].category&&Le[1].category{const ce={...ve,[re.name]:re.value},se=this.props.mapping.update(ce,this.plugin);this.props.mapping.apply(se,this.plugin)}}componentDidMount(){this.subscribe(this.plugin.state.data.behaviors.isUpdating,re=>{this.setState({isDisabled:re})})}render(){const re=this.props.mapping.getTarget(this.plugin),ve=this.props.mapping.getValues(re,this.plugin),ce=this.props.mapping.params(this.plugin);return(0,e.jsx)(R,{params:ce,values:ve,onChange:this.setSettings,isDisabled:this.state.isDisabled})}}function E(ue){switch(ue.type){case"value":case"data-ref":return;case"boolean":return G;case"number":return typeof ue.min<"u"&&typeof ue.max<"u"?N:U;case"converted":return Te;case"conditioned":return be;case"multi-select":return Oe;case"color":return I.cq;case"color-list":return ue.offsets?Ae:le;case"vec3":return Be;case"mat4":return Ce;case"url":return Re;case"file":return ke;case"file-list":return we;case"select":return J;case"value-ref":return W;case"text":return k;case"interval":return typeof ue.min<"u"&&typeof ue.max<"u"?de:te;case"group":return Se;case"mapped":return Ve;case"line-graph":return V;case"script":return ie;case"object-list":return ne;default:return void console.warn(`${ue} has no associated UI component`)}}class T extends o.PureComponent{render(){const{legend:re,description:ve}=this.props,ce=re&&function u(ue){switch(ue.kind){case"scale-legend":return d;case"table-legend":return s;default:return void console.warn(`${ue} has no associated UI component`)}}(re);return(0,e.jsx)("div",{className:"msp-help-text",children:(0,e.jsxs)("div",{children:[(0,e.jsxs)("div",{className:"msp-help-description",children:[(0,e.jsx)(m.In,{svg:m.ml,inline:!0}),ve]}),ce&&(0,e.jsx)("div",{className:"msp-help-legend",children:(0,e.jsx)(ce,{legend:re})})]})})}}function L(ue){const{props:re,state:ve,control:ce,toggleHelp:se,addOn:ae}=ue,ge=[];re.param.shortLabel&&ge.push("msp-control-label-short"),re.param.twoColumns&&ge.push("msp-control-col-2"),re.param.multiline&&ge.push("msp-control-twoline");const Ie=ge.join(" "),Le=re.param.label||(0,b.Hh)(re.name),nt=re.param.help?re.param.help(re.value):{description:re.param.description,legend:re.param.legend},je=nt.description||nt.legend,Lt=Le+(je?". Click for help.":"");return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(l.eJ,{className:Ie,title:Lt,label:(0,e.jsxs)(e.Fragment,{children:[Le,je&&(0,e.jsx)(w,{show:ve.showHelp,toggle:se,title:Lt})]}),control:ce}),je&&ve.showHelp&&(0,e.jsx)("div",{className:"msp-control-offset",children:(0,e.jsx)(T,{legend:nt.legend,description:nt.description})}),ae]})}function w({show:ue,toggle:re,title:ve}){return(0,e.jsx)("button",{className:"msp-help msp-btn-link msp-btn-icon msp-control-group-expander",onClick:re,title:ve||(ue?"Hide":"Show")+" help",style:{background:"transparent",textAlign:"left",padding:"0"},children:(0,e.jsx)(m.In,{svg:m.ml})})}class Q extends o.PureComponent{constructor(){super(...arguments),this.state={showHelp:!1},this.toggleHelp=()=>this.setState({showHelp:!this.state.showHelp})}update(re){this.props.onChange({param:this.props.param,name:this.props.name,value:re})}renderAddOn(){return null}render(){return L({props:this.props,state:this.state,control:this.renderControl(),toggleHelp:this.toggleHelp,addOn:this.renderAddOn()})}}class G extends Q{constructor(){super(...arguments),this.onClick=re=>{this.update(!this.props.value),re.currentTarget.blur()}}renderControl(){return(0,e.jsxs)("button",{onClick:this.onClick,disabled:this.props.isDisabled,children:[(0,e.jsx)(m.In,{svg:this.props.value?m.Xq:m.CQ}),this.props.value?"On":"Off"]})}}class V extends o.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!1,isOverPoint:!1,message:`${this.props.param.defaultValue.length} points`},this.onHover=re=>{this.setState({isOverPoint:!this.state.isOverPoint}),this.setState(re?{message:this.pointToLabel(re)}:{message:`${this.props.value.length} points`})},this.onDrag=re=>{this.setState({message:this.pointToLabel(re)})},this.onChange=re=>{this.props.onChange({name:this.props.name,param:this.props.param,value:re})},this.toggleExpanded=re=>{this.setState({isExpanded:!this.state.isExpanded}),re.currentTarget.blur()}}pointToLabel(re){var ve,ce;if(!re)return"";const se=null===(ce=(ve=this.props.param).getVolume)||void 0===ce?void 0:ce.call(ve);if(se){const{min:ae,max:ge,mean:Ie,sigma:Le}=se.grid.stats,nt=ae+(ge-ae)*re[0],je=(nt-Ie)/Le;return`(${nt.toFixed(2)} | ${je.toFixed(2)}\u03c3, ${re[1].toFixed(2)})`}return`(${re[0].toFixed(2)}, ${re[1].toFixed(2)})`}render(){var re,ve;const ce=this.props.param.label||(0,b.Hh)(this.props.name);return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(l.eJ,{label:ce,control:(0,e.jsx)("button",{onClick:this.toggleExpanded,disabled:this.props.isDisabled,children:`${this.state.message}`})}),(0,e.jsx)("div",{className:"msp-control-offset",style:{display:this.state.isExpanded?"block":"none",marginTop:1},children:(0,e.jsx)(S,{data:this.props.value,volume:null===(ve=(re=this.props.param).getVolume)||void 0===ve?void 0:ve.call(re),onChange:this.onChange,onHover:this.onHover,onDrag:this.onDrag})})]})}}class U extends o.PureComponent{constructor(){super(...arguments),this.state={value:"0"},this.update=re=>{const ve=(0,v.XV)(this.props.param.step||.01);re=parseFloat(re.toFixed(ve)),this.props.onChange({param:this.props.param,name:this.props.name,value:re})}}render(){const re=this.props.param.label||(0,b.Hh)(this.props.name),ve=this.props.param.label||(0,b.Hh)(this.props.name),ce=(0,v.XV)(this.props.param.step||.01);return(0,e.jsx)(l.eJ,{title:this.props.param.description,label:ve,control:(0,e.jsx)(l.ks,{numeric:!0,value:parseFloat(this.props.value.toFixed(ce)),onEnter:this.props.onEnter,placeholder:re,isDisabled:this.props.isDisabled,onChange:this.update})})}}class N extends Q{constructor(){super(...arguments),this.onChange=re=>{this.update(re)}}renderControl(){return(0,e.jsx)(D.Ap,{value:typeof this.props.value>"u"?this.props.param.defaultValue:this.props.value,min:this.props.param.min,max:this.props.param.max,step:this.props.param.step,onChange:this.onChange,onChangeImmediate:this.props.param.immediateUpdate?this.onChange:void 0,disabled:this.props.isDisabled,onEnter:this.props.onEnter})}}class k extends Q{constructor(){super(...arguments),this.updateValue=re=>{re!==this.props.value&&this.update(re)}}renderControl(){const re=this.props.param.placeholder||this.props.param.label||(0,b.Hh)(this.props.name);return(0,e.jsx)(H,{props:this.props,placeholder:re,update:this.updateValue})}}function H({props:ue,placeholder:re,update:ve}){const[ce,se]=o.useState(ue.value);return o.useEffect(()=>se(ue.value),[ue.value]),ue.param.multiline?(0,e.jsx)("div",{className:"msp-control-text-area-wrapper",children:(0,e.jsx)("textarea",{value:ue.param.disableInteractiveUpdates?ce||"":ue.value,placeholder:re,onChange:ae=>{ue.param.disableInteractiveUpdates?se(ae.target.value):ve(ae.target.value)},onBlur:ae=>{ue.param.disableInteractiveUpdates&&ve(ae.target.value)},onKeyDown:ae=>{"Enter"===ae.key&&(ae.shiftKey||ae.ctrlKey||ae.metaKey)&&ae.currentTarget.blur()},disabled:ue.isDisabled})}):(0,e.jsx)("input",{type:"text",value:ue.param.disableInteractiveUpdates?ce||"":ue.value,placeholder:re,onChange:ae=>{ue.param.disableInteractiveUpdates?se(ae.target.value):ve(ae.target.value)},onBlur:ae=>{ue.param.disableInteractiveUpdates&&ve(ae.target.value)},disabled:ue.isDisabled,onKeyDown:ae=>{"Enter"===ae.key&&(ue.onEnter?(ae.stopPropagation(),ue.onEnter()):"Enter"===ae.key&&(ae.shiftKey||ae.ctrlKey||ae.metaKey)?ae.currentTarget.blur():ue.param.disableInteractiveUpdates&&ve(ce))}})}class $ extends o.PureComponent{constructor(){super(...arguments),this.onChange=re=>{this.update("number"==typeof this.props.param.defaultValue?parseInt(re.target.value,10):re.target.value)}}update(re){this.props.onChange({param:this.props.param,name:this.props.name,value:re})}render(){const re=void 0!==this.props.value&&!this.props.param.options.some(ve=>ve[0]===this.props.value);return(0,e.jsxs)("select",{className:"msp-form-control",title:this.props.title,value:void 0!==this.props.value?this.props.value:this.props.param.defaultValue,onChange:this.onChange,disabled:this.props.isDisabled,children:[re&&(0,e.jsx)("option",{value:this.props.value,children:`[Invalid] ${this.props.value}`},this.props.value),this.props.param.options.map(([ve,ce])=>(0,e.jsx)("option",{value:ve,children:ce},ve))]})}}class J extends o.PureComponent{constructor(){super(...arguments),this.state={showHelp:!1,showOptions:!1},this.onSelect=re=>{re&&re.value!==this.props.value?this.setState({showOptions:!1},()=>{this.props.onChange({param:this.props.param,name:this.props.name,value:re.value})}):this.setState({showOptions:!1})},this.toggle=()=>this.setState({showOptions:!this.state.showOptions}),this.cycle=()=>{const{options:re}=this.props.param,ve=re.findIndex(se=>se[0]===this.props.value);this.props.onChange({param:this.props.param,name:this.props.name,value:re[ve===re.length-1?0:ve+1][0]})},this.items=(0,i._)(re=>M.W.createItemsFromSelectOptions(re.options)),this.toggleHelp=()=>this.setState({showHelp:!this.state.showHelp})}renderControl(){var re;const ve=this.items(this.props.param),ce=void 0!==this.props.value?M.W.findItem(ve,this.props.value):void 0,se=ce?ce.label:typeof this.props.value>"u"?`${(null===(re=M.W.getFirstItem(ve))||void 0===re?void 0:re.label)||""} [Default]`:`[Invalid] ${this.props.value}`;return(0,e.jsx)(l.ff,{disabled:this.props.isDisabled,style:{textAlign:this.props.param.cycle?"center":"left",overflow:"hidden",textOverflow:"ellipsis"},label:se,title:se,icon:this.props.param.cycle?"on"===this.props.value?m.Xq:"off"===this.props.value?m.CQ:void 0:void 0,toggle:this.props.param.cycle?this.cycle:this.toggle,isSelected:this.state.showOptions})}renderAddOn(){if(!this.state.showOptions)return null;const re=this.items(this.props.param),ve=M.W.findItem(re,this.props.value);return(0,e.jsx)(M.W,{items:re,current:ve,onSelect:this.onSelect})}render(){return L({props:this.props,state:this.state,control:this.renderControl(),toggleHelp:this.toggleHelp,addOn:this.renderAddOn()})}}let W=(()=>{class ue extends o.PureComponent{constructor(){super(...arguments),this.state={showHelp:!1,showOptions:!1},this.onSelect=ve=>{ve&&ve.value!==this.props.value?this.setState({showOptions:!1},()=>{this.props.onChange({param:this.props.param,name:this.props.name,value:{ref:ve.value}})}):this.setState({showOptions:!1})},this.toggle=()=>this.setState({showOptions:!this.state.showOptions}),this.toggleHelp=()=>this.setState({showHelp:!this.state.showHelp})}get items(){return M.W.createItemsFromSelectOptions(this.props.param.getOptions(this.context))}renderControl(){var ve;const se=this.props.value.ref?M.W.findItem(this.items,this.props.value.ref):void 0,ae=se?se.label:`[Ref] ${null!==(ve=this.props.value.ref)&&void 0!==ve?ve:""}`;return(0,e.jsx)(l.ff,{disabled:this.props.isDisabled,style:{textAlign:"left",overflow:"hidden",textOverflow:"ellipsis"},label:ae,title:ae,toggle:this.toggle,isSelected:this.state.showOptions})}renderAddOn(){if(!this.state.showOptions)return null;const ve=this.items,ce=M.W.findItem(ve,this.props.value.ref);return(0,e.jsx)(M.W,{items:ve,current:ce,onSelect:this.onSelect})}render(){return L({props:this.props,state:this.state,control:this.renderControl(),toggleHelp:this.toggleHelp,addOn:this.renderAddOn()})}}return ue.contextType=_.aU,ue})();class te extends o.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!1},this.components={0:O.t.Numeric(0,{step:this.props.param.step},{label:"Min"}),1:O.t.Numeric(0,{step:this.props.param.step},{label:"Max"})},this.componentChange=({name:re,value:ve})=>{const ce=[...this.props.value];ce[+re]=ve,this.change(ce)},this.toggleExpanded=re=>{this.setState({isExpanded:!this.state.isExpanded}),re.currentTarget.blur()}}change(re){this.props.onChange({name:this.props.name,param:this.props.param,value:re})}render(){const re=this.props.value,ve=this.props.param.label||(0,b.Hh)(this.props.name),ce=(0,v.XV)(this.props.param.step||.01),se=`[${re[0].toFixed(ce)}, ${re[1].toFixed(ce)}]`;return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(l.eJ,{label:ve,control:(0,e.jsx)("button",{onClick:this.toggleExpanded,disabled:this.props.isDisabled,children:se})}),this.state.isExpanded&&(0,e.jsx)("div",{className:"msp-control-offset",children:(0,e.jsx)(R,{params:this.components,values:re,onChange:this.componentChange,onEnter:this.props.onEnter})})]})}}class de extends Q{constructor(){super(...arguments),this.onChange=re=>{this.update(re)}}renderControl(){return(0,e.jsx)(D.Mm,{value:this.props.value,min:this.props.param.min,max:this.props.param.max,step:this.props.param.step,onChange:this.onChange,disabled:this.props.isDisabled,onEnter:this.props.onEnter})}}function j(ue,re=!1){return Array.isArray(ue)?re?`${y.Q1.toStyle(ue[0])} ${(100*ue[1]).toFixed(2)}%`:y.Q1.toStyle(ue[0]):y.Q1.toStyle(ue)}const Z=(0,i.E)(ue=>`linear-gradient(to right, ${ue.map(ve=>j(ve,!0)).join(", ")})`),q=(0,i.E)(ue=>{const re=ue.length,ve=[`${j(ue[0])} ${1/re*100}%`];for(let ce=1,se=re-1;ce{const ve=(0,c.JA)(re[0]);return(0,e.jsx)("div",{style:Y({kind:"qualitative"!==ve.type?"interpolate":"set",colors:ve.list})})};return{ColorPresets:{all:M.W.createItemsFromSelectOptions(c.CL,{addOn:ue}),scale:M.W.createItemsFromSelectOptions(c.Qx,{addOn:ue}),set:M.W.createItemsFromSelectOptions(c.cG,{addOn:ue})},ColorsParam:O.t.ObjectList({color:O.t.Color(0)},({color:re})=>y.Q1.toHexString(re).toUpperCase()),OffsetColorsParam:O.t.ObjectList({color:O.t.Color(0),offset:O.t.Numeric(0,{min:0,max:1,step:.01})},({color:re,offset:ve})=>`${y.Q1.toHexString(re).toUpperCase()} [${ve.toFixed(2)}]`),IsInterpolatedParam:O.t.Boolean(!1,{label:"Interpolated"})}}(),_e)}class le extends o.PureComponent{constructor(){super(...arguments),this.state={showHelp:!1,show:void 0},this.toggleEdit=()=>this.setState({show:"edit"===this.state.show?void 0:"edit"}),this.togglePresets=()=>this.setState({show:"presets"===this.state.show?void 0:"presets"}),this.selectPreset=re=>{if(!re)return;this.setState({show:void 0});const ve=(0,c.JA)(re.value);this.update({kind:"qualitative"!==ve.type?"interpolate":"set",colors:ve.list})},this.colorsChanged=({value:re})=>{this.update({kind:this.props.value.kind,colors:re.map(ve=>ve.color)})},this.isInterpolatedChanged=({value:re})=>{this.update({kind:re?"interpolate":"set",colors:this.props.value.colors})},this.toggleHelp=()=>this.setState({showHelp:!this.state.showHelp})}update(re){this.props.onChange({param:this.props.param,name:this.props.name,value:re})}renderControl(){const{value:re}=this.props;return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("button",{onClick:this.toggleEdit,style:{position:"relative",paddingRight:"33px"},children:[1===re.colors.length?"1 color":`${re.colors.length} colors`,(0,e.jsx)("div",{style:Y(re,"33px")})]}),(0,e.jsx)(l.K0,{svg:m.sM,onClick:this.togglePresets,toggleState:"presets"===this.state.show,title:"Color Presets",style:{padding:0,position:"absolute",right:0,top:0,width:"32px"}})]})}renderColors(){if(!this.state.show)return null;const{ColorPresets:re,ColorsParam:ve,IsInterpolatedParam:ce}=xe();if("presets"===this.state.show)return(0,e.jsx)(M.W,{items:re[this.props.param.presetKind],onSelect:this.selectPreset});const ae=this.props.value.colors.map(ge=>({color:ge}));return(0,e.jsxs)("div",{className:"msp-control-offset",children:[(0,e.jsx)(ne,{name:"colors",param:ve,value:ae,onChange:this.colorsChanged,isDisabled:this.props.isDisabled,onEnter:this.props.onEnter}),(0,e.jsx)(G,{name:"isInterpolated",param:ce,value:"interpolate"===this.props.value.kind,onChange:this.isInterpolatedChanged,isDisabled:this.props.isDisabled,onEnter:this.props.onEnter})]})}render(){return L({props:this.props,state:this.state,control:this.renderControl(),toggleHelp:this.toggleHelp,addOn:this.renderColors()})}}class Ae extends o.PureComponent{constructor(){super(...arguments),this.state={showHelp:!1,show:void 0},this.toggleEdit=()=>this.setState({show:"edit"===this.state.show?void 0:"edit"}),this.togglePresets=()=>this.setState({show:"presets"===this.state.show?void 0:"presets"}),this.selectPreset=re=>{if(!re)return;this.setState({show:void 0});const ve=(0,c.JA)(re.value);this.update({kind:"qualitative"!==ve.type?"interpolate":"set",colors:ve.list})},this.colorsChanged=({value:re})=>{const ve=re.map(ce=>[ce.color,ce.offset]);ve.sort((ce,se)=>ce[1]-se[1]),this.update({kind:this.props.value.kind,colors:ve})},this.isInterpolatedChanged=({value:re})=>{this.update({kind:re?"interpolate":"set",colors:this.props.value.colors})},this.toggleHelp=()=>this.setState({showHelp:!this.state.showHelp})}update(re){this.props.onChange({param:this.props.param,name:this.props.name,value:re})}renderControl(){const{value:re}=this.props;return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("button",{onClick:this.toggleEdit,style:{position:"relative",paddingRight:"33px"},children:[1===re.colors.length?"1 color":`${re.colors.length} colors`,(0,e.jsx)("div",{style:Y(re,"33px")})]}),(0,e.jsx)(l.K0,{svg:m.sM,onClick:this.togglePresets,toggleState:"presets"===this.state.show,title:"Color Presets",style:{padding:0,position:"absolute",right:0,top:0,width:"32px"}})]})}renderColors(){if(!this.state.show)return null;const{ColorPresets:re,OffsetColorsParam:ve,IsInterpolatedParam:ce}=xe();if("presets"===this.state.show)return(0,e.jsx)(M.W,{items:re[this.props.param.presetKind],onSelect:this.selectPreset});const ae=this.props.value.colors,ge=ae.map((Ie,Le)=>Array.isArray(Ie)?{color:Ie[0],offset:Ie[1]}:{color:Ie,offset:Le/ae.length});return ge.sort((Ie,Le)=>Ie.offset-Le.offset),(0,e.jsxs)("div",{className:"msp-control-offset",children:[(0,e.jsx)(ne,{name:"colors",param:ve,value:ge,onChange:this.colorsChanged,isDisabled:this.props.isDisabled,onEnter:this.props.onEnter}),(0,e.jsx)(G,{name:"isInterpolated",param:ce,value:"interpolate"===this.props.value.kind,onChange:this.isInterpolatedChanged,isDisabled:this.props.isDisabled,onEnter:this.props.onEnter})]})}render(){return L({props:this.props,state:this.state,control:this.renderControl(),toggleHelp:this.toggleHelp,addOn:this.renderColors()})}}class Be extends o.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!1},this.components={0:O.t.Numeric(0,{step:this.props.param.step},{label:this.props.param.fieldLabels&&this.props.param.fieldLabels.x||"X"}),1:O.t.Numeric(0,{step:this.props.param.step},{label:this.props.param.fieldLabels&&this.props.param.fieldLabels.y||"Y"}),2:O.t.Numeric(0,{step:this.props.param.step},{label:this.props.param.fieldLabels&&this.props.param.fieldLabels.z||"Z"})},this.componentChange=({name:re,value:ve})=>{const ce=r.eB.copy(r.eB.zero(),this.props.value);ce[+re]=ve,this.change(ce)},this.toggleExpanded=re=>{this.setState({isExpanded:!this.state.isExpanded}),re.currentTarget.blur()}}change(re){this.props.onChange({name:this.props.name,param:this.props.param,value:re})}render(){const re=this.props.value,ve=this.props.param.label||(0,b.Hh)(this.props.name),ce=(0,v.XV)(this.props.param.step||.01),se=`[${re[0].toFixed(ce)}, ${re[1].toFixed(ce)}, ${re[2].toFixed(ce)}]`;return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(l.eJ,{label:ve,control:(0,e.jsx)("button",{onClick:this.toggleExpanded,disabled:this.props.isDisabled,children:se})}),this.state.isExpanded&&(0,e.jsx)("div",{className:"msp-control-offset",children:(0,e.jsx)(R,{params:this.components,values:re,onChange:this.componentChange,onEnter:this.props.onEnter})})]})}}class Ce extends o.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!1},this.components={json:O.t.Text(JSON.stringify((0,r.$I)()),{description:"JSON array with 4x4 matrix in a column major (j * 4 + i indexing) format"})},this.componentChange=({name:re,value:ve})=>{const ce=r.$I.copy((0,r.$I)(),this.props.value);"json"===re?r.$I.copy(ce,JSON.parse(ve)):ce[+re]=ve,this.change(ce)},this.toggleExpanded=re=>{this.setState({isExpanded:!this.state.isExpanded}),re.currentTarget.blur()}}change(re){this.props.onChange({name:this.props.name,param:this.props.param,value:re})}changeValue(re){return ve=>{const ce=r.$I.copy((0,r.$I)(),this.props.value);ce[re]=ve,this.change(ce)}}get grid(){const re=this.props.value,ve=[];for(let ce=0;ce<4;ce++){const se=[];for(let ae=0;ae<4;ae++)se.push((0,e.jsx)(l.ks,{numeric:!0,delayMs:50,value:r.$I.getValue(re,ce,ae),onChange:this.changeValue(4*ae+ce),className:"msp-form-control",blurOnEnter:!0,isDisabled:this.props.isDisabled},ae));ve.push((0,e.jsx)("div",{className:"msp-flex-row",children:se},ce))}return(0,e.jsx)("div",{className:"msp-parameter-matrix",children:ve})}render(){const re={json:JSON.stringify(this.props.value)},ve=this.props.param.label||(0,b.Hh)(this.props.name);return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(l.eJ,{label:ve,control:(0,e.jsx)("button",{onClick:this.toggleExpanded,disabled:this.props.isDisabled,children:"4\xd74 Matrix"})}),this.state.isExpanded&&(0,e.jsxs)("div",{className:"msp-control-offset",children:[this.grid,(0,e.jsx)(R,{params:this.components,values:re,onChange:this.componentChange,onEnter:this.props.onEnter})]})]})}}class Re extends Q{constructor(){super(...arguments),this.onChange=re=>{const ve=re.target.value;ve!==A.V.getUrl(this.props.value||"")&&this.update(A.V.Url(ve))},this.onKeyPress=re=>{(13===re.keyCode||13===re.charCode||"Enter"===re.key)&&this.props.onEnter&&this.props.onEnter(),re.stopPropagation()}}renderControl(){const re=this.props.param.label||(0,b.Hh)(this.props.name);return(0,e.jsx)("input",{type:"text",value:A.V.getUrl(this.props.value||""),placeholder:re,onChange:this.onChange,onKeyPress:this.props.onEnter?this.onKeyPress:void 0,disabled:this.props.isDisabled})}}class ke extends o.PureComponent{constructor(){super(...arguments),this.state={showHelp:!1},this.onChangeFile=re=>{this.change(re.target.files[0])},this.toggleHelp=()=>this.setState({showHelp:!this.state.showHelp})}change(re){this.props.onChange({name:this.props.name,param:this.props.param,value:A.V.File(re)})}renderControl(){const re=this.props.value;return(0,e.jsxs)("div",{className:"msp-btn msp-btn-block msp-btn-action msp-loader-msp-btn-file",style:{marginTop:"1px"},children:[re?re.name:"Select a file..."," ",(0,e.jsx)("input",{disabled:this.props.isDisabled,onChange:this.onChangeFile,type:"file",multiple:!1,accept:this.props.param.accept})]})}render(){return this.props.param.label?L({props:this.props,state:this.state,control:this.renderControl(),toggleHelp:this.toggleHelp,addOn:null}):this.renderControl()}}class we extends o.PureComponent{constructor(){super(...arguments),this.state={showHelp:!1},this.onChangeFileList=re=>{this.change(re.target.files)},this.toggleHelp=()=>this.setState({showHelp:!this.state.showHelp})}change(re){const ve=[];if(re)for(let ce=0,se=re.length;ce{this.setState({isExpanded:!this.state.isExpanded}),re.currentTarget.blur()}}change(re){this.props.onChange({name:this.props.name,param:this.props.param,value:re})}toggle(re){return ve=>{this.props.value.indexOf(re)<0?this.change(this.props.value.concat(re)):this.change(this.props.value.filter(ce=>ce!==re)),ve.currentTarget.blur()}}render(){const re=this.props.value,ve=this.props.param.emptyValue,ce=this.props.param.label||(0,b.Hh)(this.props.name);return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(l.eJ,{label:ce,control:(0,e.jsx)("button",{onClick:this.toggleExpanded,disabled:this.props.isDisabled,children:0===re.length&&ve?ve:`${re.length} of ${this.props.param.options.length}`})}),this.state.isExpanded&&(0,e.jsx)("div",{className:"msp-control-offset",children:this.props.param.options.map(([se,ae])=>{const ge=re.indexOf(se)>=0;return(0,e.jsx)(l.$n,{onClick:this.toggle(se),disabled:this.props.isDisabled,style:{marginTop:"1px"},children:(0,e.jsx)("span",{style:{float:ge?"left":"right"},children:ge?`\u2713 ${ae}`:`${ae} \u2717`})},se)})})]})}}class Se extends o.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!!this.props.param.isExpanded,showPresets:!1,showHelp:!1},this.onChangeParam=re=>{this.change({...this.props.value,[re.name]:re.value})},this.toggleExpanded=()=>this.setState({isExpanded:!this.state.isExpanded}),this.toggleShowPresets=()=>this.setState({showPresets:!this.state.showPresets}),this.presetItems=(0,i._)(re=>{var ve;return M.W.createItemsFromSelectOptions(null!==(ve=re.presets)&&void 0!==ve?ve:[])}),this.onSelectPreset=re=>{this.setState({showPresets:!1}),this.change(re?.value)}}change(re){this.props.onChange({name:this.props.name,param:this.props.param,value:re})}pivotedPresets(){if(!this.props.param.presets)return null;const re=this.props.param.label||(0,b.Hh)(this.props.name);return(0,e.jsxs)("div",{className:"msp-control-group-wrapper",children:[(0,e.jsx)("div",{className:"msp-control-group-header",children:(0,e.jsxs)("button",{className:"msp-btn msp-form-control msp-btn-block",onClick:this.toggleShowPresets,children:[(0,e.jsx)(m.In,{svg:m.sM}),re," Presets"]})}),this.state.showPresets&&(0,e.jsx)(M.W,{items:this.presetItems(this.props.param),onSelect:this.onSelectPreset})]})}presets(){return this.props.param.presets?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{className:"msp-control-group-presets-wrapper",children:(0,e.jsx)("div",{className:"msp-control-group-header",children:(0,e.jsxs)("button",{className:"msp-btn msp-form-control msp-btn-block",onClick:this.toggleShowPresets,children:[(0,e.jsx)(m.In,{svg:m.sM}),"Presets"]})})}),this.state.showPresets&&(0,e.jsx)(M.W,{items:this.presetItems(this.props.param),onSelect:this.onSelectPreset})]}):null}pivoted(){const re=this.props.param.pivot,ve=this.props.param.params,ce=ve[re],se=E(ce),ae=(0,e.jsx)(se,{name:re,param:ce,value:this.props.value[re],onChange:this.onChangeParam,onEnter:this.props.onEnter,isDisabled:this.props.isDisabled});if(!this.state.isExpanded)return(0,e.jsxs)("div",{className:"msp-mapped-parameter-group",children:[ae,(0,e.jsx)(l.K0,{svg:m.cv,onClick:this.toggleExpanded,toggleState:this.state.isExpanded,title:"More Options"})]});const ge=Object.create(null);for(const Ie of Object.keys(ve))Ie!==re&&(ge[Ie]=ve[Ie]);return(0,e.jsxs)("div",{className:"msp-mapped-parameter-group",children:[ae,(0,e.jsx)(l.K0,{svg:m.cv,onClick:this.toggleExpanded,toggleState:this.state.isExpanded,title:"More Options"}),(0,e.jsxs)("div",{className:"msp-control-offset",children:[this.pivotedPresets(),(0,e.jsx)(R,{params:ge,onEnter:this.props.onEnter,values:this.props.value,onChange:this.onChangeParam,isDisabled:this.props.isDisabled})]})]})}render(){const re=this.props.param.params;if(0===Object.keys(re).length)return null;if(this.props.param.pivot)return this.pivoted();const ve=this.props.param.label||(0,b.Hh)(this.props.name),ce=(0,e.jsx)(R,{params:re,onChange:this.onChangeParam,values:this.props.value,onEnter:this.props.onEnter,isDisabled:this.props.isDisabled});return this.props.inMapped?(0,e.jsx)("div",{className:"msp-control-offset",children:ce}):this.props.param.isFlat?ce:(0,e.jsxs)("div",{className:"msp-control-group-wrapper",style:{position:"relative"},children:[(0,e.jsx)("div",{className:"msp-control-group-header",children:(0,e.jsxs)("button",{className:"msp-btn msp-form-control msp-btn-block",onClick:this.toggleExpanded,children:[(0,e.jsx)(m.In,{svg:this.state.isExpanded?m.DM:m.Cp}),ve]})}),this.presets(),this.state.isExpanded&&(0,e.jsx)("div",{className:"msp-control-offset",children:ce})]})}}class Ve extends o.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!1},this.valuesCache={},this.onChangeName=re=>{this.change({name:re.value,params:this.getValues(re.value)})},this.onChangeParam=re=>{this.setValues(this.props.value.name,re.value),this.change({name:this.props.value.name,params:re.value})},this.toggleExpanded=()=>this.setState({isExpanded:!this.state.isExpanded})}setValues(re,ve){this.valuesCache[re]=ve}getValues(re){return re in this.valuesCache?this.valuesCache[re]:this.props.param.map(re).defaultValue}change(re){this.props.onChange({name:this.props.name,param:this.props.param,value:re})}areParamsEmpty(re){for(const ve of Object.keys(re))if(!re[ve].isHidden)return!1;return!0}render(){const re=this.props.value||this.props.param.defaultValue,ve=this.props.param.map(re.name),ce=this.props.param.label||(0,b.Hh)(this.props.name),se=E(ve),ae=this.props.param.help,ge=ae?{...this.props.param.select,help:Le=>ae({name:Le,params:this.getValues(Le)})}:this.props.param.select,Ie=(0,e.jsx)(J,{param:ge,isDisabled:this.props.isDisabled,onChange:this.onChangeName,onEnter:this.props.onEnter,name:ce,value:re.name});return se?"group"!==ve.type||ve.isFlat?(0,e.jsxs)(e.Fragment,{children:[Ie,(0,e.jsx)(se,{param:ve,value:re.params,name:re.name,onChange:this.onChangeParam,onEnter:this.props.onEnter,isDisabled:this.props.isDisabled})]}):this.areParamsEmpty(ve.params)?Ie:(0,e.jsxs)("div",{className:"msp-mapped-parameter-group",children:[Ie,(0,e.jsx)(l.K0,{svg:m.cv,onClick:this.toggleExpanded,toggleState:this.state.isExpanded,title:`${ce} Properties`}),this.state.isExpanded&&(0,e.jsx)(Se,{inMapped:!0,param:ve,value:re.params,name:re.name,onChange:this.onChangeParam,onEnter:this.props.onEnter,isDisabled:this.props.isDisabled})]}):Ie}}class Ne extends o.PureComponent{constructor(){super(...arguments),this.state={current:this.props.value},this.onChangeParam=re=>{this.setState({current:{...this.state.current,[re.name]:re.value}})},this.apply=()=>{this.props.apply(this.state.current)}}componentDidUpdate(re){(this.props.params!==re.params||this.props.value!==re.value)&&this.setState({current:this.props.value})}render(){return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(R,{params:this.props.params,onChange:this.onChangeParam,values:this.state.current,onEnter:this.apply,isDisabled:this.props.isDisabled}),(0,e.jsx)("button",{className:"msp-btn msp-btn-block msp-form-control msp-control-top-offset",onClick:this.apply,disabled:this.props.isDisabled,children:this.props.isUpdate?"Update":"Add"})]})}}class K extends o.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!1},this.update=re=>{this.props.actions.update(re,this.props.index)},this.moveUp=()=>{this.props.actions.move(this.props.index,-1)},this.moveDown=()=>{this.props.actions.move(this.props.index,1)},this.remove=()=>{this.setState({isExpanded:!1}),this.props.actions.remove(this.props.index)},this.toggleExpanded=re=>{this.setState({isExpanded:!this.state.isExpanded}),re.currentTarget.blur()}}render(){return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"msp-param-object-list-item",children:[(0,e.jsxs)("button",{className:"msp-btn msp-btn-block msp-form-control",onClick:this.toggleExpanded,children:[(0,e.jsx)("span",{children:`${this.props.index+1}: `}),this.props.param.getLabel(this.props.value)]}),(0,e.jsxs)("div",{children:[(0,e.jsx)(l.K0,{svg:m.qp,title:"Move Up",onClick:this.moveUp,small:!0}),(0,e.jsx)(l.K0,{svg:m.p8,title:"Move Down",onClick:this.moveDown,small:!0}),(0,e.jsx)(l.K0,{svg:m.mf,title:"Remove",onClick:this.remove,small:!0})]})]}),this.state.isExpanded&&(0,e.jsx)("div",{className:"msp-control-offset",children:(0,e.jsx)(Ne,{params:this.props.param.element,apply:this.update,value:this.props.value,isUpdate:!0,isDisabled:this.props.isDisabled})})]})}}class ne extends o.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!1},this.add=re=>{this.change([...this.props.value,re])},this.actions={update:(re,ve)=>{const ce=this.props.value.slice(0);ce[ve]=re,this.change(ce)},move:(re,ve)=>{let ce=this.props.value;if(1===ce.length)return;let se=(re+ve)%ce.length;se<0&&(se+=ce.length),ce=ce.slice(0);const ae=ce[re];ce[re]=ce[se],ce[se]=ae,this.change(ce)},remove:re=>{const ve=this.props.value,ce=[];for(let se=0;se{this.setState({isExpanded:!this.state.isExpanded}),re.currentTarget.blur()}}change(re){this.props.onChange({name:this.props.name,param:this.props.param,value:re})}render(){const re=this.props.value,ve=this.props.param.label||(0,b.Hh)(this.props.name);return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(l.eJ,{label:ve,control:(0,e.jsx)("button",{onClick:this.toggleExpanded,disabled:this.props.isDisabled,children:`${re.length} item${1!==re.length?"s":""}`})}),this.state.isExpanded&&(0,e.jsxs)("div",{className:"msp-control-offset",children:[this.props.value.map((se,ae)=>(0,e.jsx)(K,{param:this.props.param,value:se,index:ae,actions:this.actions,isDisabled:this.props.isDisabled},ae)),(0,e.jsx)(l.tW,{header:"New Item",children:(0,e.jsx)(Ne,{params:this.props.param.element,apply:this.add,value:this.props.param.ctor(),isDisabled:this.props.isDisabled})})]})]})}}class be extends o.PureComponent{constructor(){super(...arguments),this.onChangeCondition=re=>{this.change(this.props.param.conditionedValue(this.props.value,re.value))},this.onChangeParam=re=>{this.change(re.value)}}change(re){this.props.onChange({name:this.props.name,param:this.props.param,value:re})}render(){const re=this.props.value,ve=this.props.param.conditionForValue(re),ce=this.props.param.conditionParams[ve],se=this.props.param.label||(0,b.Hh)(this.props.name),ae=E(ce),ge=(0,e.jsx)(J,{param:this.props.param.select,isDisabled:this.props.isDisabled,onChange:this.onChangeCondition,onEnter:this.props.onEnter,name:`${se} Kind`,value:ve});return ae?(0,e.jsxs)(e.Fragment,{children:[ge,(0,e.jsx)(ae,{param:ce,value:re,name:se,onChange:this.onChangeParam,onEnter:this.props.onEnter,isDisabled:this.props.isDisabled})]}):ge}}class Te extends o.PureComponent{constructor(){super(...arguments),this.onChange=re=>{this.props.onChange({name:this.props.name,param:this.props.param,value:this.props.param.toValue(re.value)})}}render(){const re=this.props.param.fromValue(this.props.value),ve=E(this.props.param.converted);return ve?(0,e.jsx)(ve,{param:this.props.param.converted,value:re,name:this.props.name,onChange:this.onChange,onEnter:this.props.onEnter,isDisabled:this.props.isDisabled}):null}}class ie extends o.PureComponent{constructor(){super(...arguments),this.onChange=({name:re,value:ve})=>{ve!==this.props.value[re]&&this.props.onChange({param:this.props.param,name:this.props.name,value:{...this.props.value,[re]:ve}})}}render(){const re={defaultValue:this.props.value.language,options:O.t.objectToOptions(t.e.Info),type:"select"},ve=(0,e.jsx)(J,{param:re,isDisabled:this.props.isDisabled,onChange:this.onChange,onEnter:this.props.onEnter,name:"language",value:this.props.value.language}),se=(0,e.jsx)(k,{param:{defaultValue:this.props.value.language,type:"text"},isDisabled:this.props.isDisabled,onChange:this.onChange,name:"expression",value:this.props.value.expression});return(0,e.jsxs)(e.Fragment,{children:[ve,"mol-script"!==this.props.value.language&&(0,e.jsxs)("div",{className:"msp-help-text",style:{padding:"10px"},children:[(0,e.jsx)(m.In,{svg:m.Rf})," Support for PyMOL, VMD, and Jmol selections is an experimental feature and may not always work as intended."]}),se]})}}},7788:(tn,Ue,n)=>{"use strict";n.d(Ue,{Ap:()=>A,Mm:()=>y});var e=n(9619),o=n(1395),r=n(3584),t=n(9909);class A extends o.Component{constructor(){super(...arguments),this.state={isChanging:!1,current:0},this.begin=()=>{this.setState({isChanging:!0})},this.end=m=>{this.setState({isChanging:!1}),this.props.onChange(m)},this.updateCurrent=m=>{var u,d;this.setState({current:m}),null===(d=(u=this.props).onChangeImmediate)||void 0===d||d.call(u,m)},this.updateManually=m=>{this.setState({isChanging:!0});let u=m;1===this.props.step&&(u=Math.round(u)),uthis.props.max&&(u=this.props.max),this.setState({current:u,isChanging:!0})},this.onManualBlur=()=>{this.setState({isChanging:!1}),this.props.onChange(this.state.current)}}static getDerivedStateFromProps(m,u){return u.isChanging||m.value===u.current?null:{current:m.value}}render(){let m=this.props.step;return void 0===m&&(m=1),(0,e.jsxs)("div",{className:"msp-slider",children:[(0,e.jsx)("div",{children:(0,e.jsx)(I,{min:this.props.min,max:this.props.max,step:m,value:this.state.current,disabled:this.props.disabled,onBeforeChange:this.begin,onChange:this.updateCurrent,onAfterChange:this.end})}),(0,e.jsx)("div",{children:(0,e.jsx)(r.ks,{numeric:!0,delayMs:50,value:this.state.current,blurOnEnter:!0,onBlur:this.onManualBlur,isDisabled:this.props.disabled,onChange:this.updateManually})})]})}}class y extends o.Component{constructor(){super(...arguments),this.state={isChanging:!1,current:[0,1]},this.begin=()=>{this.setState({isChanging:!0})},this.end=m=>{this.setState({isChanging:!1}),this.props.onChange(m)},this.updateCurrent=m=>{this.setState({current:m})},this.updateMax=m=>{let u=m;1===this.props.step&&(u=Math.round(u)),uthis.props.max&&(u=this.props.max),this.props.onChange([this.state.current[0],u])},this.updateMin=m=>{let u=m;1===this.props.step&&(u=Math.round(u)),uthis.state.current[1]?u=this.state.current[1]:u>this.props.max&&(u=this.props.max),this.props.onChange([u,this.state.current[1]])}}static getDerivedStateFromProps(m,u){return u.isChanging||m.value[0]===u.current[0]&&m.value[1]===u.current[1]?null:{current:m.value}}render(){let m=this.props.step;return void 0===m&&(m=1),(0,e.jsxs)("div",{className:"msp-slider2",children:[(0,e.jsx)("div",{children:(0,e.jsx)(r.ks,{numeric:!0,delayMs:50,value:this.state.current[0],onEnter:this.props.onEnter,blurOnEnter:!0,isDisabled:this.props.disabled,onChange:this.updateMin})}),(0,e.jsx)("div",{children:(0,e.jsx)(I,{min:this.props.min,max:this.props.max,step:m,value:this.state.current,disabled:this.props.disabled,onBeforeChange:this.begin,onChange:this.updateCurrent,onAfterChange:this.end,range:!0,allowCross:!0})}),(0,e.jsx)("div",{children:(0,e.jsx)(r.ks,{numeric:!0,delayMs:50,value:this.state.current[1],onEnter:this.props.onEnter,blurOnEnter:!0,isDisabled:this.props.disabled,onChange:this.updateMax})})]})}}function c(l){const m=[],u={}.hasOwnProperty;for(let d=0;d1||"touchend"===l.type.toLowerCase()&&l.touches.length>0}function v(l,m){return l?m.touches[0].clientY:m.touches[0].pageX}function O(l,m){return l?m.clientY:m.pageX}function b(l,m){const u=m.getBoundingClientRect();return l?u.top+.5*u.height:u.left+.5*u.width}function _(l){l.stopPropagation(),l.preventDefault()}class I extends o.Component{constructor(m){super(m),this.sliderElement=o.createRef(),this.handleElements=[],this.dragOffset=0,this.startPosition=0,this.startValue=0,this._getPointsCache=void 0,this.onMouseDown=R=>{if(0!==R.button)return;let f=O(this.props.vertical,R);if(this.isEventFromHandle(R)){const p=b(this.props.vertical,R.target);this.dragOffset=f-p,f=p}else this.dragOffset=0;this.onStart(f),this.addDocumentEvents("mouse"),_(R)},this.onTouchMove=R=>{if(i(R))return void this.end("touch");const f=v(this.props.vertical,R);this.onMove(R,f-this.dragOffset)},this.onTouchStart=R=>{if(i(R))return;let f=v(this.props.vertical,R);if(this.isEventFromHandle(R)){const p=b(this.props.vertical,R.target);this.dragOffset=f-p,f=p}else this.dragOffset=0;this.onStart(f),this.addDocumentEvents("touch"),_(R)},this.eventHandlers={touchmove:R=>this.onTouchMove(R),touchend:R=>this.end("touch"),mousemove:R=>this.onMouseMove(R),mouseup:R=>this.end("mouse")},this.calcOffset=R=>{const{min:f,max:p}=this.props;return(R-f)/(p-f)*100};const{range:u,min:d,max:s}=m,C=u?Array.apply(null,Array(+u+1)).map(()=>d):d,a=void 0!==m.value?m.value:"defaultValue"in m?m.defaultValue:C,S=(u?a:[d,a]).map(R=>this.trimAlignValue(R));let D;D=u&&S[0]===S[S.length-1]&&S[0]===s?0:S.length-1,this.state={handle:null,recent:D,bounds:S}}componentDidUpdate(m){if(!("value"in this.props||"min"in this.props||"max"in this.props))return;const{bounds:u}=this.state;if(m.range){const s=(this.props.value||u).map(C=>this.trimAlignValue(C,this.props));if(s.every((C,h)=>C===u[h]))return;this.setState({bounds:s}),u.some(C=>this.isValueOutOfBounds(C,this.props))&&this.props.onChange(s)}else{const s=this.trimAlignValue(void 0!==this.props.value?this.props.value:u[1],this.props);if(s===u[1]&&u[0]===m.min)return;this.setState({bounds:[m.min,s]}),this.isValueOutOfBounds(u[1],this.props)&&this.props.onChange(s)}}onChange(m){const u=this.props;"value"in u?void 0!==m.handle&&this.setState({handle:m.handle}):this.setState(m);const s={...this.state,...m};u.onChange(u.range?s.bounds:s.bounds[1])}onMouseMove(m){const u=O(this.props.vertical,m);this.onMove(m,u-this.dragOffset)}onMove(m,u){_(m);const d=this.props,s=this.state;let C=u-this.startPosition;C=this.props.vertical?-C:C;const h=C/this.getSliderLength()*(d.max-d.min),a=this.trimAlignValue(this.startValue+h);if(a===s.bounds[s.handle])return;const D=[...s.bounds];D[s.handle]=a;let R=s.handle;d.pushable?this.pushSurroundingHandles(D,R,s.bounds[R]):d.allowCross&&(D.sort((f,p)=>f-p),R=D.indexOf(a)),this.onChange({handle:R,bounds:D})}onStart(m){this.props.onBeforeChange(this.getValue());const d=this.calcValueByPos(m);this.startValue=d,this.startPosition=m;const s=this.state,{bounds:C}=s;let h=1;if(this.props.range){let D=0;for(let f=1;fC[f]&&(D=f);Math.abs(C[D+1]-d)S-D),this._getPointsCache={marks:m,step:u,points:a}}return this._getPointsCache.points}getPrecision(m){const u=m.toString();let d=0;return u.indexOf(".")>=0&&(d=u.length-u.indexOf(".")-1),d}getSliderLength(){const m=this.sliderElement.current;return m?this.props.vertical?m.clientHeight:m.clientWidth:0}getSliderStart(){const u=this.sliderElement.current.getBoundingClientRect();return this.props.vertical?u.top:u.left}getValue(){const{bounds:m}=this.state;return this.props.range?m:m[1]}addDocumentEvents(m){"touch"===m?(document.addEventListener("touchmove",this.eventHandlers.touchmove),document.addEventListener("touchend",this.eventHandlers.touchend)):"mouse"===m&&(document.addEventListener("mousemove",this.eventHandlers.mousemove),document.addEventListener("mouseup",this.eventHandlers.mouseup))}calcValue(m){const{vertical:u,min:d,max:s}=this.props,C=Math.abs(m/this.getSliderLength());return u?(1-C)*(s-d)+d:C*(s-d)+d}calcValueByPos(m){const u=m-this.getSliderStart();return this.trimAlignValue(this.calcValue(u))}end(m){this.removeEvents(m),this.props.onAfterChange(this.getValue()),this.setState({handle:null})}isEventFromHandle(m){for(const u of this.handleElements)if(u.current===m.target)return!0;return!1}isValueOutOfBounds(m,u){return mu.max}pushHandle(m,u,d,s){const C=m[u];let h=m[u];for(;d*(h-C)=s.length||h<0)return!1;const a=u+d,S=s[h],{pushable:D}=this.props;return!!this.pushHandle(m,a,d,+D-d*(m[a]-S))&&(m[u]=S,!0)}pushSurroundingHandles(m,u,d){const{pushable:s}=this.props,C=m[u];let h=0;if(m[u+1]-C<+s?h=1:C-m[u-1]<+s&&(h=-1),0===h)return;const a=u+h;this.pushHandle(m,a,h,+s-h*(m[a]-C))||(m[u]=d)}removeEvents(m){"touch"===m?(document.removeEventListener("touchmove",this.eventHandlers.touchmove),document.removeEventListener("touchend",this.eventHandlers.touchend)):"mouse"===m&&(document.removeEventListener("mousemove",this.eventHandlers.mousemove),document.removeEventListener("mouseup",this.eventHandlers.mouseup))}trimAlignValue(m,u){const{handle:d,bounds:s}=this.state||{},{marks:C,step:h,min:a,max:S,allowCross:D}={...this.props,...u||{}};let R=m;R<=a&&(R=a),R>=S&&(R=S),!D&&null!=d&&d>0&&R<=s[d-1]&&(R=s[d-1]),!D&&null!=d&&d=s[d+1]&&(R=s[d+1]);const f=Object.keys(C).map(parseFloat);if(null!==h){const T=Math.round((R-a)/h)*h+a;f.push(T)}const p=f.map(T=>Math.abs(R-T)),E=f[p.indexOf(Math.min.apply(Math,p))];return null!==h?parseFloat(E.toFixed(this.getPrecision(h))):E}render(){const{handle:m,bounds:u}=this.state,{className:d,prefixCls:s,disabled:C,vertical:h,range:a,step:S,marks:D,tipFormatter:R}=this.props,f=this.props.handle,p=u.map(this.calcOffset),E=`${s}-handle`,T=u.map((V,U)=>c({[E]:!0,[`${E}-${U+1}`]:!0,[`${E}-lower`]:0===U,[`${E}-upper`]:U===u.length-1})),w={prefixCls:s,noTip:null===S||null===R,tipFormatter:R,vertical:h};if(this.handleElements.length!==u.length){this.handleElements=[];for(let V=0;Vo.cloneElement(f,{...w,className:T[U],value:V,offset:p[U],dragging:m===U,index:U,key:U,ref:this.handleElements[U]}));a||Q.shift();const G=c({[s]:!0,[`${s}-with-marks`]:Object.keys(D).length,[`${s}-disabled`]:C,[`${s}-vertical`]:this.props.vertical,[d]:!!d});return(0,e.jsxs)("div",{ref:this.sliderElement,className:G,onTouchStart:C?t.lQ:this.onTouchStart,onMouseDown:C?t.lQ:this.onMouseDown,children:[(0,e.jsx)("div",{className:`${s}-rail`}),Q]})}}I.defaultProps={prefixCls:"msp-slider-base",className:"",min:0,max:100,step:1,marks:{},handle:(0,e.jsx)(class M extends o.Component{render(){const{className:m,tipFormatter:u,vertical:d,offset:s,value:C,index:h}=this.props;return(0,e.jsx)("div",{className:m,style:d?{bottom:`${s}%`}:{left:`${s}%`},title:u(C,h)})}},{className:"",vertical:!1,offset:0,tipFormatter:l=>l,value:0,index:0}),onBeforeChange:t.lQ,onChange:t.lQ,onAfterChange:t.lQ,tipFormatter:(l,m)=>l,disabled:!1,range:!1,vertical:!1,allowCross:!0,pushable:!1}},4987:(tn,Ue,n)=>{"use strict";n.d(Ue,{U0:()=>dr,AF:()=>y.A,Zw:()=>xr});var e={};n.r(e),n.d(e,{SyncRepresentationToCanvas:()=>O,SyncStructureRepresentation3DState:()=>b,UpdateRepresentationVisibility:()=>_,registerDefault:()=>v});var o={};n.r(o),n.d(o,{Focus:()=>d,OrientAxes:()=>s,Reset:()=>m,ResetAxes:()=>C,SetSnapshot:()=>u,registerDefault:()=>l});var r={};n.r(r),n.d(r,{Canvas3DSetSettings:()=>S,registerDefault:()=>a});var t={};n.r(t),n.d(t,{CameraAxisHelper:()=>J,CameraControls:()=>de,DefaultClickResetCameraOnEmpty:()=>U,DefaultClickResetCameraOnEmptySelectMode:()=>N,DefaultFocusLociBindings:()=>k,FocusLoci:()=>$});var A={};n.r(A),n.d(A,{AccessibleSurfaceArea:()=>Me,BestDatabaseSequenceMapping:()=>kt,CrossLinkRestraint:()=>Nn,Interactions:()=>rn,SecondaryStructure:()=>Mt,StructureInfo:()=>Z,ValenceModel:()=>Dn});var y=n(1164),c=n(1827),i=n(381);function v(Ft){O(Ft),b(Ft),_(Ft)}function O(Ft){const Qt=Ft.state.data.events;Qt.object.created.subscribe(ht=>{var pt;i.O.isRepresentation3D(ht.obj)&&(M(ht.state.cells.get(ht.ref),ht.obj.data.repr),ht.obj.data.repr.setState({syncManually:!0}),null===(pt=Ft.canvas3d)||void 0===pt||pt.add(ht.obj.data.repr))}),Qt.object.updated.subscribe(ht=>{var pt,Xt;ht.oldObj&&i.O.isRepresentation3D(ht.oldObj)&&(null===(pt=Ft.canvas3d)||void 0===pt||pt.remove(ht.oldObj.data.repr),ht.oldObj.data.repr.destroy()),i.O.isRepresentation3D(ht.obj)&&(M(ht.state.cells.get(ht.ref),ht.obj.data.repr),"recreate"===ht.action&&ht.obj.data.repr.setState({syncManually:!0}),null===(Xt=Ft.canvas3d)||void 0===Xt||Xt.add(ht.obj.data.repr))}),Qt.object.removed.subscribe(ht=>{var pt;i.O.isRepresentation3D(ht.obj)&&(null===(pt=Ft.canvas3d)||void 0===pt||pt.remove(ht.obj.data.repr),ht.obj.data.repr.destroy())})}function b(Ft){const Qt=Ft.state.data.events;Qt.object.created.subscribe(ht=>{var pt;if(!i.O.Molecule.Structure.Representation3DState.is(ht.obj))return;const Xt=ht.obj.data;Xt.repr.setState(Xt.state),null===(pt=Ft.canvas3d)||void 0===pt||pt.update(Xt.repr)}),Qt.object.updated.subscribe(ht=>{var pt;if(!i.O.Molecule.Structure.Representation3DState.is(ht.obj))return;const Xt=ht.obj.data;Xt.repr.setState(Xt.state),null===(pt=Ft.canvas3d)||void 0===pt||pt.update(Xt.repr)}),Qt.object.removed.subscribe(ht=>{var pt;if(!i.O.Molecule.Structure.Representation3DState.is(ht.obj))return;const Xt=ht.obj.data;Xt.repr.setState(Xt.initialState),null===(pt=Ft.canvas3d)||void 0===pt||pt.update(Xt.repr)})}function _(Ft){Ft.state.data.events.cell.stateUpdated.subscribe(Qt=>{var ht;const pt=Qt.state.cells.get(Qt.ref);i.O.isRepresentation3D(pt.obj)&&M(pt,pt.obj.data.repr)&&(null===(ht=Ft.canvas3d)||void 0===ht||ht.syncVisibility())})}function M(Ft,Qt){return Qt.state.visible===!!Ft.state.isHidden&&(Qt.setState({visible:!Ft.state.isHidden}),!0)}var I=n(6763);function l(Ft){m(Ft),d(Ft),u(Ft),s(Ft),C(Ft)}function m(Ft){I.a.Camera.Reset.subscribe(Ft,Qt=>{Ft.managers.camera.reset(Qt?.snapshot,Qt?.durationMs)})}function u(Ft){I.a.Camera.SetSnapshot.subscribe(Ft,({snapshot:Qt,durationMs:ht})=>{Ft.managers.camera.setSnapshot(Qt,ht)})}function d(Ft){I.a.Camera.Focus.subscribe(Ft,({center:Qt,radius:ht,durationMs:pt})=>{Ft.managers.camera.focusSphere({center:Qt,radius:ht},{durationMs:pt}),Ft.events.canvas3d.settingsUpdated.next(void 0)})}function s(Ft){I.a.Camera.OrientAxes.subscribe(Ft,({structures:Qt,durationMs:ht})=>{Ft.managers.camera.orientAxes(Qt,ht)})}function C(Ft){I.a.Camera.ResetAxes.subscribe(Ft,({durationMs:Qt})=>{Ft.managers.camera.resetAxes(Qt)})}var h=n(3177);function a(Ft){S(Ft)}function S(Ft){I.a.Canvas3D.ResetSettings.subscribe(Ft,()=>{var Qt;null===(Qt=Ft.canvas3d)||void 0===Qt||Qt.setProps(h.FN),Ft.events.canvas3d.settingsUpdated.next(void 0)}),I.a.Canvas3D.SetSettings.subscribe(Ft,Qt=>{var ht;Ft.canvas3d&&(null===(ht=Ft.canvas3d)||void 0===ht||ht.setProps(Qt.settings),Ft.events.canvas3d.settingsUpdated.next(void 0))})}var D=n(1937),R=n(3246),f=n(8277),p=n(4080),E=n(4123),T=n(7028),L=n(4369);const w=p.qt,Q=p.Fs,G=E.O.Trigger,V=E.O.TriggerKey,U=(0,E.O)([G(w.Flag.Primary,Q.create()),G(w.Flag.Secondary,Q.create()),G(w.Flag.Primary,Q.create({control:!0}))],"Reset camera focus","Click on nothing using ${triggers}"),N=(0,E.O)([G(w.Flag.Secondary,Q.create()),G(w.Flag.Primary,Q.create({control:!0}))],"Reset camera focus","Click on nothing using ${triggers}"),k={clickCenterFocus:(0,E.O)([G(w.Flag.Primary,Q.create()),G(w.Flag.Secondary,Q.create()),G(w.Flag.Primary,Q.create({control:!0}))],"Camera center and focus","Click element using ${triggers}"),clickCenterFocusSelectMode:(0,E.O)([G(w.Flag.Secondary,Q.create()),G(w.Flag.Primary,Q.create({control:!0}))],"Camera center and focus","Click element using ${triggers}"),clickResetCameraOnEmpty:U,clickResetCameraOnEmptySelectMode:N},H={minRadius:f.t.Numeric(8,{min:1,max:50,step:1}),extraRadius:f.t.Numeric(4,{min:1,max:50,step:1},{description:"Value added to the bounding-sphere radius of the Loci"}),durationMs:f.t.Numeric(250,{min:0,max:1e3,step:1},{description:"Camera transition duration"}),bindings:f.t.Value(k,{isHidden:!0})},$=y.A.create({name:"camera-focus-loci",category:"interaction",ctor:class extends y.A.Handler{register(){this.subscribeObservable(this.ctx.behaviors.interaction.click,({current:Ft,button:Qt,modifiers:ht})=>{var pt,Xt;if(!this.ctx.canvas3d)return;const fn=this.ctx.selectionMode?this.params.bindings.clickCenterFocusSelectMode:this.params.bindings.clickCenterFocus,on=this.ctx.selectionMode?null!==(pt=this.params.bindings.clickResetCameraOnEmptySelectMode)&&void 0!==pt?pt:N:null!==(Xt=this.params.bindings.clickResetCameraOnEmpty)&&void 0!==Xt?Xt:U;if(R.QN.isEmpty(Ft.loci)&&E.O.match(on,Qt,ht))I.a.Camera.Reset(this.ctx,{});else if(E.O.match(fn,Qt,ht)){const En=R.QN.normalize(Ft.loci,this.ctx.managers.interactivity.props.granularity);this.ctx.managers.camera.focusLoci(En,this.params)}})}},params:()=>H,display:{name:"Camera Focus Loci on Canvas"}}),J=y.A.create({name:"camera-axis-helper",category:"interaction",ctor:class extends y.A.Handler{register(){let Ft=T.Nz.None,Qt=0;this.subscribeObservable(this.ctx.behaviors.interaction.click,({current:ht})=>{if(!this.ctx.canvas3d||!(0,T.E2)(ht.loci))return;const pt=ht.loci.elements[0].groupId;if(pt===T.Nz.None)return Ft=T.Nz.None,void(Qt=0);const{camera:Xt}=this.ctx.canvas3d;let fn,on;if(pt>=T.Nz.X&&pt<=T.Nz.Z){Ft=T.Nz.None,Qt=0;const En=L.eB.sub((0,L.eB)(),Xt.target,Xt.position),Tt=L.eB.cross((0,L.eB)(),En,Xt.up);on=(0,L.eB)(),on[pt-1]=1,fn=L.eB.cross((0,L.eB)(),on,Tt),0===L.eB.magnitude(fn)&&(fn=En)}else Ft===pt?Qt=(Qt+1)%2:(Ft=pt,Qt=0),pt===T.Nz.XY?(on=Qt?L.eB.unitX:L.eB.unitY,fn=L.eB.negUnitZ):pt===T.Nz.XZ?(on=Qt?L.eB.unitX:L.eB.unitZ,fn=L.eB.negUnitY):(on=Qt?L.eB.unitY:L.eB.unitZ,fn=L.eB.negUnitX);this.ctx.canvas3d.requestCameraReset({snapshot:(En,Tt)=>Tt.getInvariantFocus(En.boundingSphereVisible.center,En.boundingSphereVisible.radius,on,fn)})})}},params:()=>({}),display:{name:"Camera Axis Helper"}}),W={keySpinAnimation:(0,E.O)([V("I")],"Spin Animation","Press ${triggers}"),keyRockAnimation:(0,E.O)([V("O")],"Rock Animation","Press ${triggers}"),keyToggleFlyMode:(0,E.O)([V("Space",Q.create({shift:!0}))],"Toggle Fly Mode","Press ${triggers}"),keyResetView:(0,E.O)([V("T")],"Reset View","Press ${triggers}")},te={bindings:f.t.Value(W,{isHidden:!0})},de=y.A.create({name:"camera-controls",category:"interaction",ctor:class extends y.A.Handler{register(){this.subscribeObservable(this.ctx.behaviors.interaction.key,({code:Ft,key:Qt,modifiers:ht})=>{var pt;if(!this.ctx.canvas3d)return;const Xt={...W,...this.params.bindings},fn=this.ctx.canvas3d.props.trackball;if(E.O.matchKey(Xt.keySpinAnimation,Ft,ht,Qt)){const on="spin"!==fn.animate.name?"spin":"off";this.ctx.canvas3d.setProps("off"===on?{trackball:{animate:{name:on,params:{}}}}:{trackball:{animate:{name:on,params:{speed:1}}}})}if(E.O.matchKey(Xt.keyRockAnimation,Ft,ht,Qt)){const on="rock"!==fn.animate.name?"rock":"off";this.ctx.canvas3d.setProps("off"===on?{trackball:{animate:{name:on,params:{}}}}:{trackball:{animate:{name:on,params:{speed:.3,angle:10}}}})}if(E.O.matchKey(Xt.keyToggleFlyMode,Ft,ht,Qt)){const on=!fn.flyMode;this.ctx.canvas3d.setProps({trackball:{flyMode:on}}),null!==(pt=this.ctx.canvas3dContext)&&void 0!==pt&&pt.canvas&&(this.ctx.canvas3dContext.canvas.style.cursor=on?"crosshair":"unset")}E.O.matchKey(Xt.keyResetView,Ft,ht,Qt)&&I.a.Camera.Reset(this.ctx,{})})}},params:()=>te,display:{name:"Camera Controls on Canvas"}});var ye=n(9136),j=n(1832);const Z=y.A.create({name:"structure-info-prop",category:"custom-props",display:{name:"Structure Info"},ctor:class extends y.A.Handler{get maxModelIndex(){var Ft,Qt;let ht=-1;const pt=this.ctx.state.data.select(j.QX.Generators.rootsOfType(i.O.Molecule.Model));for(const Xt of pt){const fn=(null===(Ft=Xt.obj)||void 0===Ft?void 0:Ft.data)&&ye.Kx.Index.get(null===(Qt=Xt.obj)||void 0===Qt?void 0:Qt.data).value;void 0!==fn&&fn>ht&&(ht=fn)}return ht}get maxStructureIndex(){var Ft,Qt;let ht=-1;const pt=this.ctx.state.data.select(j.QX.Generators.rootsOfType(i.O.Molecule.Structure));for(const Xt of pt){const fn=(null===(Ft=Xt.obj)||void 0===Ft?void 0:Ft.data)&&ye.oE.Index.get(null===(Qt=Xt.obj)||void 0===Qt?void 0:Qt.data).value;void 0!==fn&&fn>ht&&(ht=fn)}return ht}get asymIdOffset(){var Ft;let Qt=0,ht=0;const pt=this.ctx.state.data.select(j.QX.Generators.rootsOfType(i.O.Molecule.Model));for(const Xt of pt){const fn=null===(Ft=Xt.obj)||void 0===Ft?void 0:Ft.data;if(fn){const on=ye.Kx.AsymIdCount.get(fn),En=ye.Kx.AsymIdOffset.get(fn).value;void 0!==on&&void 0!==En&&(Qt=Math.max(Qt,En.auth+on.auth),ht=Math.max(ht,En.label+on.label))}}return{auth:Qt,label:ht}}setModelMaxIndex(){var Ft;const Qt=this.maxModelIndex,ht=this.ctx.state.data.select(j.QX.Generators.rootsOfType(i.O.Molecule.Model));for(const pt of ht){const Xt=null===(Ft=pt.obj)||void 0===Ft?void 0:Ft.data;Xt&&ye.Kx.MaxIndex.get(Xt).value!==Qt&&ye.Kx.MaxIndex.set(Xt,{value:Qt},Qt)}}setStructureMaxIndex(){var Ft;const Qt=this.maxModelIndex,ht=this.ctx.state.data.select(j.QX.Generators.rootsOfType(i.O.Molecule.Structure));for(const pt of ht){const Xt=null===(Ft=pt.obj)||void 0===Ft?void 0:Ft.data;Xt&&ye.oE.MaxIndex.get(Xt).value!==Qt&&ye.oE.MaxIndex.set(Xt,{value:Qt},Qt)}}handleModel(Ft,Qt){if(void 0===ye.Kx.Index.get(Ft).value){const pt=(Qt&&ye.Kx.Index.get(Qt).value)??this.maxModelIndex+1;ye.Kx.Index.set(Ft,{value:pt},pt)}if(void 0===ye.Kx.AsymIdOffset.get(Ft).value){const pt=(Qt&&ye.Kx.AsymIdOffset.get(Qt).value)??{...this.asymIdOffset};ye.Kx.AsymIdOffset.set(Ft,{value:pt},pt)}}handleStructure(Ft,Qt){if(void 0!==Ft.parent||void 0!==ye.oE.Index.get(Ft).value)return;const pt=(Qt&&ye.oE.Index.get(Qt).value)??this.maxStructureIndex+1;ye.oE.Index.set(Ft,{value:pt},pt)}handle(Ft,Qt,ht){i.O.Molecule.Structure.is(Qt)?!this.ctx.state.data.tree.transforms.get(Ft).transformer.definition.isDecorator&&void 0===Qt.data.parent&&this.handleStructure(Qt.data,ht?.data):i.O.Molecule.Model.is(Qt)&&(this.ctx.state.data.tree.transforms.get(Ft).transformer.definition.isDecorator||this.handleModel(Qt.data,ht?.data))}register(){this.ctx.customModelProperties.register(ye.Kx.AsymIdOffset,!0),this.ctx.customModelProperties.register(ye.Kx.Index,!0),this.ctx.customModelProperties.register(ye.Kx.MaxIndex,!0),this.ctx.customStructureProperties.register(ye.oE.Index,!0),this.ctx.customStructureProperties.register(ye.oE.MaxIndex,!0),this.subscribeObservable(this.ctx.state.data.events.object.created,Ft=>{this.handle(Ft.ref,Ft.obj),this.setModelMaxIndex(),this.setStructureMaxIndex()}),this.subscribeObservable(this.ctx.state.data.events.object.updated,Ft=>{this.handle(Ft.ref,Ft.obj,Ft.oldObj)})}unregister(){this.ctx.customModelProperties.unregister(ye.Kx.AsymIdOffset.descriptor.name),this.ctx.customModelProperties.unregister(ye.Kx.Index.descriptor.name),this.ctx.customModelProperties.unregister(ye.Kx.MaxIndex.descriptor.name),this.ctx.customStructureProperties.unregister(ye.oE.Index.descriptor.name),this.ctx.customStructureProperties.unregister(ye.oE.MaxIndex.descriptor.name)}}});var q=n(467),Y=n(4824);const ee=[-1,1.76,1.87,1.65,1.5,1.4,1.85,1.8,1.6,1.4],g={ALA:121,ARG:265,ASN:187,ASP:187,CYS:148,GLU:214,GLN:214,GLY:97,HIS:216,ILE:195,LEU:191,LYS:230,MET:203,PHE:228,PRO:154,SER:143,THR:163,TRP:264,TYR:255,VAL:165};var xe=n(6066),le=n(2434),Ae=n(2008),Be=n(8672),Ce=n(2789);function ke(Ft,Qt,ht){switch(Qt){case"O":return 5;case"S":return 6;case"N":return"NZ"===Ft?4:3;case"C":switch(Ft){case"C":case"CE1":case"CE2":case"CE3":case"CH2":case"CZ":case"CZ2":case"CZ3":return 1;case"CA":case"CB":case"CE":case"CG1":case"CG2":return 2;default:switch(ht){case"PHE":case"TRP":case"TYR":case"HIS":case"ASP":case"ASN":return 1;case"PRO":case"LYS":case"ARG":case"MET":case"ILE":case"LEU":return 2;case"GLU":case"GLN":return"CD"===Ft?1:2}}}return Oe(Qt)}function we(Ft,Qt,ht){switch(Qt){case"C":return 7;case"N":return 8;case"P":return 9;case"O":return 5}return Oe(Qt)}function Oe(Ft){const Qt=(0,Ae.sO)(Ft);let ht=ee.indexOf(Qt);return-1===ht&&(ht=ee.length,ee[ht]=Qt),ht}function Ne(){return(Ne=(0,q.A)(function*(Ft,Qt){const{atomRadiusType:ht}=Qt;for(let pt=0;ptSo[0]-ao[0]);let lo=0;e:for(let So=0;SoCo)continue e}++lo}on[fn[an]]+=Tt*lo*vo*vo}}var ne=n(3543);const be={numberOfSpherePoints:f.t.Numeric(92,{min:12,max:360,step:1},{description:"Number of sphere points to sample per atom: 92 (original paper), 960 (BioJava), 3000 (EPPIC) - see Shrake A, Rupley JA: Environment and exposure to solvent of protein atoms. Lysozyme and insulin. J Mol Biol 1973."}),probeSize:f.t.Numeric(1.4,{min:.1,max:4,step:.01},{description:"Corresponds to the size of a water molecule: 1.4 (original paper), 1.5 (occassionally used)"}),nonPolymer:f.t.Boolean(!1,{description:"Include non-polymer atoms as occluders."}),traceOnly:f.t.Boolean(!1,{description:"Compute only using alpha-carbons, if true increase probeSize accordingly (e.g., 4 A). Considers only canonical amino acids."})};var Te;!function(Ft){function pt(){return pt=(0,q.A)(function*(He,Ye,ot){const rt=function Xt(He,Ye){const{elementCount:ot,atomicResidueCount:rt}=He,{probeSize:St,nonPolymer:vt,traceOnly:mn,numberOfSpherePoints:zt}=Ye;return{structure:He,probeSize:St,nonPolymer:vt,traceOnly:mn,spherePoints:fn(zt),scalingConstant:4*Math.PI/zt,maxLookupRadius:2*Ye.probeSize+2*ee[2],atomRadiusType:new Int8Array(ot),serialResidueIndex:new Int32Array(ot),area:new Float32Array(rt)}}(Ye,ot);(function Re(Ft){const{key:Qt}=Be.StructureProperties.residue,{type_symbol:ht,label_atom_id:pt,label_comp_id:Xt}=Be.StructureProperties.atom,{structure:fn,atomRadiusType:on,serialResidueIndex:En}=Ft,Tt=Be.iZ.Location.create(fn);let Fe=0,He=0,Ye=-1;Tt.structure=fn;for(let ot=0,rt=0,St=fn.units.length;ot{if(!ye.Nf.isAtomic(Ft.element.unit))return!1;const Qt=ge.get(Ft.element.structure).value;return!!Qt&&1===Te.getFlag(Ft.element,Qt)}),isAccessible:ue.Bg.Dynamic((0,re.vy)("computed","accessible-surface-area.is-accessible",ve.Z.Bool),Ft=>{if(!ye.Nf.isAtomic(Ft.element.unit))return!1;const Qt=ge.get(Ft.element.structure).value;return!!Qt&&2===Te.getFlag(Ft.element,Qt)})},ge=ie.S.createProvider({label:"Accessible Surface Area",descriptor:(0,ce.e)({name:"molstar_accessible_surface_area",symbols:ae}),type:"root",defaultParams:se,getParams:Ft=>se,isApplicable:Ft=>!0,obtain:(Ft=(0,q.A)(function*(Qt,ht,pt){const Xt={...f.t.getDefaultValues(se),...pt};return{value:yield Te.compute(ht,Xt).runInContext(Qt.runtime)}}),function(ht,pt,Xt){return Ft.apply(this,arguments)})});var Ft,Ie=n(190),Le=n(274),nt=n(8382);const je=(0,Ie.Q1)(16448250),Je={list:f.t.ColorList("rainbow",{presetKind:"scale"})},pn={name:"accessible-surface-area",label:"Accessible Surface Area",category:Le.J.Category.Residue,factory:function Bt(Ft,Qt){let ht;const pt=Ie.wC.create({listOrName:Qt.list.colors,minLabel:"buried",maxLabel:"exposed",domain:[0,1]}),Xt=Ft.structure&&ge.get(Ft.structure),fn=Xt?(0,nt.vb)(Xt.id,Xt.version):-1;if(Xt?.value&&Ft.structure){const on=ye.iZ.Location.create(Ft.structure),En=Xt.value,Tt=Fe=>{const He=Te.getNormalizedValue(Fe,En);return-1===He?je:pt.color(He)};ht=Fe=>ye.iZ.Location.is(Fe)&&ye.Nf.isAtomic(Fe.unit)?Tt(Fe):ye.gn.isLocation(Fe)?(on.unit=Fe.aUnit,on.element=Fe.aUnit.elements[Fe.aIndex],Tt(on)):je}else ht=()=>je;return{factory:Bt,granularity:"group",preferSmoothing:!0,color:ht,props:Qt,contextHash:fn,description:"Assigns a color based on the relative accessible surface area of a residue.",legend:pt?pt.legend:void 0}},getParams:function en(Ft){return Je},defaultValues:f.t.getDefaultValues(Je),isApplicable:Ft=>!!Ft.structure,ensureCustomProperties:{attach:(Ft,Qt)=>Qt.structure?ge.attach(Ft,Qt.structure,void 0,!0):Promise.resolve(),detach:Ft=>Ft.structure&&ge.ref(Ft.structure,!1)}};var $e=n(6115),mt=n(9096),_t=n(9767);const Me=y.A.create({name:"computed-accessible-surface-area-prop",category:"custom-props",display:{name:"Accessible Surface Area"},ctor:class extends y.A.Handler{constructor(){super(...arguments),this.provider=ge,this.labelProvider={label:Ft=>{if(this.params.showTooltip)return function Ke(Ft){if("element-loci"===Ft.kind){if(0===Ft.elements.length)return;const Qt=ge.get(Ft.structure).value;if(!Qt||Ft.structure.customPropertyDescriptors.hasReference(ge.descriptor))return;const{getSerialIndex:ht}=Ft.structure.root.serialMapping,{area:pt,serialResidueIndex:Xt}=Qt,fn=new Set;let on=0;for(const{indices:Tt,unit:Fe}of Ft.elements){const{elements:He}=Fe;ne.CD.forEach(Tt,Ye=>{const ot=Xt[ht(Fe,He[Ye])];-1!==ot&&!fn.has(ot)&&(on+=pt[ot],fn.add(ot))})}return 0===fn.size?void 0:`Accessible Surface Area (${fn.size} ${fn.size>1?"Residues sum":"Residue"}): ${on.toFixed(2)} \u212b2`}if("structure-loci"===Ft.kind){const Qt=ge.get(Ft.structure).value;return!Qt||Ft.structure.customPropertyDescriptors.hasReference(ge.descriptor)?void 0:`Accessible Surface Area (Whole Structure): ${(0,$e.jJ)(Qt.area).toFixed(2)} \u212b2`}}(Ft)}}}update(Ft){const Qt=this.params.autoAttach!==Ft.autoAttach||this.params.showTooltip!==Ft.showTooltip;return this.params.autoAttach=Ft.autoAttach,this.params.showTooltip=Ft.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),Qt}register(){ue.oY.addCustomProp(this.provider.descriptor),this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach),this.ctx.representation.structure.themes.colorThemeRegistry.add(pn),this.ctx.managers.lociLabels.addProvider(this.labelProvider),this.ctx.query.structure.registry.add(ut),this.ctx.query.structure.registry.add(Kt)}unregister(){ue.oY.removeCustomProp(this.provider.descriptor),this.ctx.customStructureProperties.unregister(this.provider.descriptor.name),this.ctx.representation.structure.themes.colorThemeRegistry.remove(pn),this.ctx.managers.lociLabels.removeProvider(this.labelProvider),this.ctx.query.structure.registry.remove(ut),this.ctx.query.structure.registry.remove(Kt)}},params:()=>({autoAttach:f.t.Boolean(!1),showTooltip:f.t.Boolean(!0)})}),ut=(0,mt.ET)("Buried Protein Residues",_t.J.struct.modifier.union([_t.J.struct.modifier.wholeResidues([_t.J.struct.modifier.union([_t.J.struct.generator.atomGroups({"chain-test":_t.J.core.rel.eq([_t.J.ammp("objectPrimitive"),"atomistic"]),"residue-test":ae.isBuried.symbol()})])])]),{description:"Select buried protein residues.",category:mt.g7.Residue,ensureCustomProperties:(Ft,Qt)=>ge.attach(Ft,Qt)}),Kt=(0,mt.ET)("Accessible Protein Residues",_t.J.struct.modifier.union([_t.J.struct.modifier.wholeResidues([_t.J.struct.modifier.union([_t.J.struct.generator.atomGroups({"chain-test":_t.J.core.rel.eq([_t.J.ammp("objectPrimitive"),"atomistic"]),"residue-test":ae.isAccessible.symbol()})])])]),{description:"Select accessible protein residues.",category:mt.g7.Residue,ensureCustomProperties:(Ft,Qt)=>ge.attach(Ft,Qt)});var sn=n(6713),gt=n(1541),yt=n(9469),At=n(9778),Gt=n(2361);const rn=y.A.create({name:"computed-interactions-prop",category:"custom-props",display:{name:"Interactions"},ctor:class extends y.A.Handler{constructor(){super(...arguments),this.provider=sn.r,this.labelProvider={label:Ft=>{if(this.params.showTooltip&&"element-loci"===Ft.kind){if(0===Ft.elements.length)return;const Qt=[],ht=this.getStructures(Ft.structure);for(const pt of ht){const Xt=this.provider.get(pt).value;if(!Xt)continue;const fn=gt.i.Loci.remap(Ft,pt);if(1!==fn.elements.length)continue;const on=fn.elements[0];if(1!==ne.CD.size(on.indices))continue;const En=Xt.unitsFeatures.get(on.unit.id);if(!En)continue;const Tt=[],Fe=[],He=[],Ye=ne.CD.start(on.indices),{types:ot,groups:rt,elementsIndex:{indices:St,offsets:vt}}=En;for(let mn=vt[Ye],zt=vt[Ye+1];mnTypes ${Tt.join(", ")}`),Fe.length&&He.push(`Groups ${Fe.join(", ")}`),He.length&&Qt.push(`Interaction Feature: ${He.join(" | ")}`)}return Qt.length?Qt.join("
"):void 0}}}}getStructures(Ft){const Qt=[],ht=this.ctx.helpers.substructureParent.get(Ft);if(ht){const Xt=this.ctx.state.data.select(j.QX.Generators.ofType(i.O.Molecule.Structure,ht.transform.ref));for(const fn of Xt)fn.obj&&(0,$e.Z2)(Qt,fn.obj.data)}return Qt}update(Ft){const Qt=this.params.autoAttach!==Ft.autoAttach||this.params.showTooltip!==Ft.showTooltip;return this.params.autoAttach=Ft.autoAttach,this.params.showTooltip=Ft.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),Qt}register(){this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach),this.ctx.representation.structure.themes.colorThemeRegistry.add(At.YU),this.ctx.managers.lociLabels.addProvider(this.labelProvider),this.ctx.representation.structure.registry.add(Gt.MH)}unregister(){this.ctx.customStructureProperties.unregister(this.provider.descriptor.name),this.ctx.representation.structure.themes.colorThemeRegistry.remove(At.YU),this.ctx.managers.lociLabels.removeProvider(this.labelProvider),this.ctx.representation.structure.registry.remove(Gt.MH)}},params:()=>({autoAttach:f.t.Boolean(!1),showTooltip:f.t.Boolean(!0)})});var tt=n(8699);const Mt=y.A.create({name:"computed-secondary-structure-prop",category:"custom-props",display:{name:"Secondary Structure"},ctor:class extends y.A.Handler{constructor(){super(...arguments),this.provider=tt.v}update(Ft){const Qt=this.params.autoAttach!==Ft.autoAttach;return this.params.autoAttach=Ft.autoAttach,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),Qt}register(){this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach)}unregister(){this.ctx.customStructureProperties.unregister(this.provider.descriptor.name)}},params:()=>({autoAttach:f.t.Boolean(!1)})});var nn=n(9311),bn=n(3024);const Dn=y.A.create({name:"computed-valence-model-prop",category:"custom-props",display:{name:"Valence Model"},ctor:class extends y.A.Handler{constructor(){super(...arguments),this.provider=nn.F,this.labelProvider={label:Ft=>{if(this.params.showTooltip&&"element-loci"===Ft.kind){if(0===Ft.elements.length)return;const Qt=[],ht=this.getStructures(Ft.structure);for(const pt of ht){const Xt=this.provider.get(pt).value;if(!Xt)continue;const fn=ye.iZ.Loci.remap(Ft,pt);if(1!==fn.elements.length)continue;const on=fn.elements[0];if(1!==ne.CD.size(on.indices))continue;const En=Xt.get(on.unit.id);if(!En)continue;const Tt=ne.CD.start(on.indices),Ye=En.implicitH[Tt],ot=En.totalH[Tt];Qt.push(`Valence Model: Charge ${En.charge[Tt]} | Ideal Geometry ${(0,bn.Fc)(En.idealGeometry[Tt])} | Implicit H ${Ye} | Total H ${ot}`)}return Qt.length?Qt.join("
"):void 0}}}}getStructures(Ft){const Qt=[],ht=this.ctx.helpers.substructureParent.get(Ft);if(ht){const Xt=this.ctx.state.data.select(j.QX.Generators.ofType(i.O.Molecule.Structure,ht.transform.ref));for(const fn of Xt)fn.obj&&(0,$e.Z2)(Qt,fn.obj.data)}return Qt}update(Ft){const Qt=this.params.autoAttach!==Ft.autoAttach||this.params.showTooltip!==Ft.showTooltip;return this.params.autoAttach=Ft.autoAttach,this.params.showTooltip=Ft.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),Qt}register(){this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach),this.ctx.managers.lociLabels.addProvider(this.labelProvider)}unregister(){this.ctx.customStructureProperties.unregister(this.provider.descriptor.name),this.ctx.managers.lociLabels.removeProvider(this.labelProvider)}},params:()=>({autoAttach:f.t.Boolean(!1),showTooltip:f.t.Boolean(!0)})});var jt=n(6220),It=n(7809);const Dt=(0,Ie.Q1)(16448250),$t=new Map,Vt={...(0,It.U)({type:"colors",colorList:"set-1"})},Zt={name:"sifts-mapping",label:"SIFTS Mapping",category:Le.J.Category.Residue,factory:function yn(Ft,Qt){let ht;if(Ft.structure){for(const En of Ft.structure.models){const Tt=jt.W.Provider.get(En).value;if(Tt)for(const Fe of Tt.accession)!Fe||$t.has(Fe)||$t.set(Fe,$t.size)}const pt=ye.iZ.Location.create(Ft.structure),Xt=(0,It.S)($t.size+1,Qt,{valueLabel:En=>`${En}`}),fn=new Map,on=En=>{const Tt=jt.W.getKey(En);if(!Tt)return Dt;if(fn.has(Tt))return fn.get(Tt);const Fe=Xt.color($t.get(Tt));return fn.set(Tt,Fe),Fe};ht=En=>ye.iZ.Location.is(En)&&ye.Nf.isAtomic(En.unit)?on(En):ye.gn.isLocation(En)?(pt.unit=En.aUnit,pt.element=En.aUnit.elements[En.aIndex],on(pt)):Dt}else ht=()=>Dt;return{factory:yn,granularity:"group",preferSmoothing:!0,color:ht,props:Qt,description:"Assigns a color based on SIFTS mapping."}},getParams:function Wt(Ft){return Vt},defaultValues:f.t.getDefaultValues(Vt),isApplicable:Ft=>{var Qt;return!(null===(Qt=Ft.structure)||void 0===Qt||!Qt.models.some(ht=>jt.W.Provider.isApplicable(ht)))},ensureCustomProperties:{attach:function(){var Ft=(0,q.A)(function*(Qt,ht){if(ht.structure)for(const pt of ht.structure.models)yield jt.W.Provider.attach(Qt,pt,void 0,!0)});return function(ht,pt){return Ft.apply(this,arguments)}}(),detach:Ft=>{if(Ft.structure)for(const Qt of Ft.structure.models)jt.W.Provider.ref(Qt,!1)}}},kt=y.A.create({name:"sifts-mapping-prop",category:"custom-props",display:{name:"SIFTS Mapping"},ctor:class extends y.A.Handler{constructor(){super(...arguments),this.provider=jt.W.Provider,this.labelProvider={label:Ft=>{if(this.params.showTooltip)return function Ot(Ft){if("element-loci"===Ft.kind){if(0===Ft.elements.length)return;const Qt=Ft.elements[0],ht=Qt.unit,pt=ye.iZ.Location.create(Ft.structure,ht,ht.elements[ne.CD.getAt(Qt.indices,0)]);return jt.W.getLabel(pt)}}(Ft)}}}update(Ft){const Qt=this.params.autoAttach!==Ft.autoAttach||this.params.showTooltip!==Ft.showTooltip;return this.params.autoAttach=Ft.autoAttach,this.params.showTooltip=Ft.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),Qt}register(){this.ctx.customModelProperties.register(this.provider,this.params.autoAttach),this.ctx.representation.structure.themes.colorThemeRegistry.add(Zt),this.ctx.managers.lociLabels.addProvider(this.labelProvider)}unregister(){this.ctx.customModelProperties.unregister(this.provider.descriptor.name),this.ctx.representation.structure.themes.colorThemeRegistry.remove(Zt),this.ctx.managers.lociLabels.removeProvider(this.labelProvider)}},params:()=>({autoAttach:f.t.Boolean(!0),showTooltip:f.t.Boolean(!0)})});var jn,An=n(9207);!function(Ft){Ft.Descriptor={name:"ihm_cross_link_restraint"},Ft.Provider=An.q.create(Ft.Descriptor),Ft.fromTable=function Qt(ht,pt){const Xt={entity_id:ht.entity_id_1,asym_id:ht.asym_id_1,seq_id:ht.seq_id_1,atom_id:ht.atom_id_1},fn={entity_id:ht.entity_id_2,asym_id:ht.asym_id_2,seq_id:ht.seq_id_2,atom_id:ht.atom_id_2};function on(rt,St,vt){const mn=rt.get(St);mn?mn.push(vt):rt.set(St,[vt])}function En(rt,St){const vt=St.entity_id.value(rt),mn=St.asym_id.value(rt),zt=St.seq_id.value(rt);if("by-atom"===ht.model_granularity.value(rt)){const an=pt.atomicHierarchy.index.findAtom({auth_seq_id:zt,label_asym_id:mn,label_atom_id:St.atom_id.value(rt),label_entity_id:vt});an>=0&&on(Fe,an,rt)}else if(pt.coarseHierarchy.isDefined){const an=pt.coarseHierarchy.spheres.findSequenceKey(vt,mn,zt);if(an>=0)on(He,an,rt);else{const Vn=pt.coarseHierarchy.gaussians.findSequenceKey(vt,mn,zt);Vn>=0&&on(Ye,Vn,rt)}}}const Fe=new Map,He=new Map,Ye=new Map,ot=[];for(let rt=0;rt{const mn=function Tt(rt){switch(rt){case 0:return Fe;case 1:return He;case 2:return Ye}}(St).get(rt);return void 0!==mn?mn:ot},data:ht}}}(jn||(jn={}));var On=n(2524),fr=n(2443),Dr=n(9283),Pr=n(1888),or=n(377),Nr=n(3892),Ir=n(1758);const Or=[];function Jr(Ft,Qt,ht,pt){return`${Ft}|${Qt.id}|${ht}|${pt.id}`}class To{getPairIndices(Qt,ht,pt,Xt){const fn=Jr(Qt,ht,pt,Xt);return this.pairKeyIndices.get(fn)||Or}getPairs(Qt,ht,pt,Xt){return this.getPairIndices(Qt,ht,pt,Xt).map(on=>this.pairs[on])}constructor(Qt){this.pairs=Qt;const ht=new Map;this.pairs.forEach((pt,Xt)=>{const fn=Jr(pt.indexA,pt.unitA,pt.indexB,pt.unitB),on=ht.get(fn);on?on.push(Xt):ht.set(fn,[Xt])}),this.count=Qt.length,this.pairKeyIndices=ht}}var un=n(364),ct=n(6290),dt=n(3917);const Yt=ie.S.createProvider({label:"Cross Link Restraint",descriptor:(0,ce.e)({name:"integrative-cross-link-restraint"}),type:"local",defaultParams:{},getParams:Ft=>({}),isApplicable:Ft=>Ft.models.some(Qt=>!!jn.Provider.get(Qt)),obtain:function(){var Ft=(0,q.A)(function*(Qt,ht,pt){return{value:Yn(ht)}});return function(ht,pt,Xt){return Ft.apply(this,arguments)}}()});var cn;function xn(Ft,Qt,ht){const{elements:pt}=Qt,Xt=pt.length,fn=Qt.kind;for(let on=0;onFt.set(Tt,on))}function Rn(Ft,Qt,ht){if(Qt.model!==ht.model||"mmCIF"!==Qt.model.sourceData.kind)return;const pt=jn.Provider.get(Qt.model);if(!pt)return;const Xt=new Map,fn=new Map;xn(Xt,Qt,pt),xn(fn,ht,pt),Xt.forEach((on,En)=>{const Tt=fn.get(En);void 0!==Tt&&Ft.push(ir(Qt,on,ht,Tt,pt,En),ir(ht,Tt,Qt,on,pt,En))})}function er(Ft,Qt){if("mmCIF"!==Qt.model.sourceData.kind)return;const ht=jn.Provider.get(Qt.model);if(!ht)return;const{elements:pt}=Qt,Xt=pt.length,fn=Qt.kind,on=new Map;for(let En=0;En{const He=on.get(Fe);He?He.push(En):on.set(Fe,[En])});on.forEach((En,Tt)=>{if(En.length<2)return;const[Fe,He]=En;Ft.push(ir(Qt,Fe,Qt,He,ht,Tt),ir(Qt,He,Qt,Fe,ht,Tt))})}function ir(Ft,Qt,ht,pt,Xt,fn){return{unitA:Ft,indexA:Qt,unitB:ht,indexB:pt,restraintType:Xt.data.restraint_type.value(fn),distanceThreshold:Xt.data.distance_threshold.value(fn),psi:Xt.data.psi.value(fn),sigma1:Xt.data.sigma_1.value(fn),sigma2:Xt.data.sigma_2.value(fn)}}function Yn(Ft){const Qt=[];if(!Ft.models.some(pt=>jn.Provider.get(pt)))return new To(Qt);const ht=Ft.units.length;for(let pt=0;pt!!jn.Provider.get(mn))};const pt=(0,L.eB)(),Xt=(0,L.eB)();function fn(vt){return vt.unitA.conformation.position(vt.unitA.elements[vt.indexA],pt),vt.unitB.conformation.position(vt.unitB.elements[vt.indexB],Xt),L.eB.distance(pt,Xt)}function Fe(vt,mn){const zt=vt.pairs[mn];return`Cross Link Restraint | Type: ${zt.restraintType} | Threshold: ${zt.distanceThreshold} \u212b | Psi: ${zt.psi} | Sigma 1: ${zt.sigma1} | Sigma 2: ${zt.sigma2} | Distance: ${fn(zt).toFixed(2)} \u212b`}function rt(vt,mn,zt){return ct.p.fromPairProvider(mn.length,(an,Vn,Fn)=>{const rr=vt.pairs[mn[an]];rr.unitA.conformation.position(rr.unitA.elements[rr.indexA],Vn),rr.unitB.conformation.position(rr.unitB.elements[rr.indexB],Fn)},zt)}function St(vt,mn,zt){const an=zt[0];if(void 0===an)return"";const Vn=mn.pairs[an];return[Fe(mn,an),(0,dt.CR)(ye.gn.Location(vt,Vn.unitA,Vn.indexA,vt,Vn.unitB,Vn.indexB))].join("
")}Ft.distance=fn,Ft.Location=function on(vt,mn,zt){return(0,un.cG)("cross-link-restraints",{structure:mn,crossLinkRestraints:vt},zt)},Ft.isLocation=function En(vt){return!!vt&&"data-location"===vt.kind&&"cross-link-restraints"===vt.tag},Ft.areLocationsEqual=function Tt(vt,mn){return vt.data.structure===mn.data.structure&&vt.data.crossLinkRestraints===mn.data.crossLinkRestraints&&vt.element===mn.element},Ft.locationLabel=function He(vt){return Fe(vt.data.crossLinkRestraints,vt.element)},Ft.Loci=function Ye(vt,mn,zt){return(0,R.g9)("cross-link-restraints",{structure:vt,crossLinkRestraints:mn},zt,an=>rt(mn,zt,an),()=>St(vt,mn,zt))},Ft.isLoci=function ot(vt){return!!vt&&"data-loci"===vt.kind&&"interactions"===vt.tag},Ft.getBoundingSphere=rt,Ft.getLabel=St}(cn||(cn={}));var br=n(5384);function vr(Ft,Qt,ht,pt,Xt){const fn=Yt.get(Qt).value;if(!fn.count)return Dr.e.createEmpty(Xt);const{sizeFactor:on}=pt,En=ye.iZ.Location.create(Qt),Tt={linkCount:fn.count,position:(Ye,ot,rt)=>{const St=fn.pairs[rt],vt=St.unitA,mn=St.unitB;vt.conformation.position(vt.elements[St.indexA],Ye),mn.conformation.position(mn.elements[St.indexB],ot)},radius:Ye=>{const ot=fn.pairs[Ye];return En.unit=ot.unitA,En.element=ot.unitA.elements[ot.indexA],ht.size.size(En)*on}},{mesh:Fe,boundingSphere:He}=(0,or.C1)(Ft,Tt,pt,Xt);if(He)Fe.setBoundingSphere(He);else if(Fe.triangleCount>0){const Ye=br.f8.expand((0,br.f8)(),Qt.boundary.sphere,1*on);Fe.setBoundingSphere(Ye)}return Fe}const Hr={...Nr.EN,...or.Lr,sizeFactor:f.t.Numeric(.5,{min:0,max:10,step:.1})};function Mr(Ft){return(0,Nr.wA)({defaultProps:f.t.getDefaultValues(Hr),createGeometry:vr,createLocationIterator:Fr,getLoci:Sr,eachLocation:Ur,setUpdateState:(Qt,ht,pt)=>{Qt.createGeometry=ht.sizeFactor!==pt.sizeFactor||ht.radialSegments!==pt.radialSegments||ht.linkCap!==pt.linkCap}},Ft)}function Fr(Ft){const Qt=Yt.get(Ft).value,{pairs:ht}=Qt,pt=ht.length,fn=cn.Location(Qt,Ft);return(0,Pr.iQ)(pt,1,1,En=>(fn.element=En,fn),!0)}function Sr(Ft,Qt,ht){const{objectId:pt,groupId:Xt}=Ft;if(ht===pt){const fn=Yt.get(Qt).value;if(fn.pairs[Xt])return cn.Loci(Qt,fn,[Xt])}return R.BL}function Ur(Ft,Qt,ht){let pt=!1;if(cn.isLoci(Ft)){if(!ye.oE.areEquivalent(Ft.data.structure,Qt))return!1;const Xt=Yt.get(Qt).value;if(Ft.data.crossLinkRestraints!==Xt)return!1;for(const fn of Ft.elements)ht(ne.IX.ofSingleton(fn))&&(pt=!0)}return pt}const Ro={"cross-link-restraint":(Ft,Qt)=>(0,Ir.Kp)("Cross-link restraint",Ft,Qt,Mr)},ro={...Hr},ho=(0,Ir.GT)({name:cn.Tag.CrossLinkRestraint,label:"Cross Link Restraint",description:"Displays cross-link restraints.",factory:function so(Ft,Qt){return fr.YL.createMulti("CrossLinkRestraint",Ft,Qt,Ir.J1,Ro)},getParams:function po(Ft,Qt){return f.t.clone(ro)},defaultValues:f.t.getDefaultValues(ro),defaultColorTheme:{name:cn.Tag.CrossLinkRestraint},defaultSizeTheme:{name:"uniform"},isApplicable:Ft=>cn.isApplicable(Ft),ensureCustomProperties:{attach:(Ft,Qt)=>Yt.attach(Ft,Qt,void 0,!0),detach:Ft=>Yt.ref(Ft,!1)}}),Bo=(0,Ie.Q1)(13421772),Wo={domain:f.t.Interval([.5,1.5],{step:.01}),list:f.t.ColorList("red-grey",{presetKind:"scale"})},Sn={name:"cross-link",label:"Cross Link",category:Le.J.Category.Misc,factory:function Pt(Ft,Qt){let ht,pt;const Xt=Ft.structure&&Yt.get(Ft.structure).value;if(Xt){pt=Ie.wC.create({domain:Qt.domain,listOrName:Qt.list.colors});const fn=pt.color;ht=on=>{if(cn.isLocation(on)){const En=Xt.pairs[on.element];if(En)return fn(cn.distance(En)/En.distanceThreshold)}return Bo}}else ht=()=>Bo;return{factory:Pt,granularity:"group",color:ht,props:Qt,description:"Colors cross-links by the deviation of the observed distance versus the modeled distance (e.g. modeled / `ihm_cross_link_restraint.distance_threshold`).",legend:pt?pt.legend:void 0}},getParams:function We(Ft){return Wo},defaultValues:f.t.getDefaultValues(Wo),isApplicable:Ft=>!!Ft.structure&&cn.isApplicable(Ft.structure),ensureCustomProperties:{attach:(Ft,Qt)=>Qt.structure?Yt.attach(Ft,Qt.structure,void 0,!0):Promise.resolve(),detach:Ft=>Ft.structure&&Yt.ref(Ft.structure,!1)}},Nn=y.A.create({name:"integrative-cross-link-restraint",category:"custom-props",display:{name:"Cross Link Restraint"},ctor:class extends y.A.Handler{constructor(){super(...arguments),this.provider=jn.Provider}register(){this.provider.formatRegistry.add("mmCIF",Kn),this.ctx.representation.structure.themes.colorThemeRegistry.add(Sn),this.ctx.representation.structure.registry.add(ho)}unregister(){this.provider.formatRegistry.remove("mmCIF"),this.ctx.representation.structure.themes.colorThemeRegistry.remove(Sn),this.ctx.representation.structure.registry.remove(ho)}}});function Kn(Ft){if(!On.K4.is(Ft.sourceData))return;const{ihm_cross_link_restraint:Qt}=Ft.sourceData.data.db;return 0!==Qt._rowCount?jn.fromTable(Qt,Ft):void 0}const dr={State:c,Representation:e,Camera:o,Misc:r},xr={Representation:D,Camera:t,CustomProps:A}},1164:(tn,Ue,n)=>{"use strict";n.d(Ue,{A:()=>c});var c,e=n(467),o=n(381),r=n(1832),t=n(4824),A=n(8277),y=n(9909);!function(i){class v extends(o.O.Create({name:"Root",typeClass:"Root"})){}i.Root=v;class O extends(o.O.Create({name:"Category",typeClass:"Object"})){}i.Category=O;class b extends(o.O.CreateBehavior({name:"Behavior"})){}i.Behavior=b,i.Categories={common:"Common",representation:"Representation",interaction:"Interaction","custom-props":"Custom Properties",misc:"Miscellaneous"},i.CreateCategory=o.H.BuiltIn({name:"create-behavior-category",display:{name:"Behavior Category"},from:v,to:O,params:{label:A.t.Text("",{isHidden:!0})}})({apply:({params:d})=>new O({},{label:d.label})});const _=new Map;i.getCategoryId=function M(d){return _.get(d.id)},i.create=function I(d){const s=o.H.CreateBuiltIn({name:d.name,display:d.display,from:[v],to:[b],params:d.params,apply({params:C},h){const a=d.label?d.label(C):{label:d.display.name,description:d.display.description};return new b(new d.ctor(h,C),a)},update:({b:C,newParams:h})=>t.YZ.create("Update Behavior",(0,e.A)(function*(){return C.data.update&&(yield C.data.update(h))?r.xE.UpdateResult.Updated:r.xE.UpdateResult.Unchanged})),canAutoUpdate:d.canAutoUpdate});return _.set(s.id,d.category),s},i.simpleCommandHandler=function l(d,s){return class{register(){this.sub=d.subscribe(this.ctx,C=>s(C,this.ctx))}dispose(){this.sub&&this.sub.unsubscribe(),this.sub=void 0}constructor(C){this.ctx=C,this.sub=void 0}}},i.Handler=class m{subscribeCommand(s,C){this.subs.push(s.subscribe(this.ctx,C))}subscribeObservable(s,C){this.subs.push(s.subscribe(C))}track(s){this.subs.push(s)}dispose(){for(const s of this.subs)s.unsubscribe();this.subs=[]}update(s){return!(0,y.f8)(s,this.params)&&(this.params=s,!0)}constructor(s,C){this.ctx=s,this.params=C,this.subs=[]}},i.WithSubscribers=class u{subscribeCommand(s,C){this.subs.push(s.subscribe(this.plugin,C))}subscribeObservable(s,C){const h=s.subscribe(C);return this.subs.push(h),{unsubscribe:()=>{const a=this.subs.indexOf(h);a>=0&&(this.subs.splice(a,1),h.unsubscribe())}}}dispose(){for(const s of this.subs)s.unsubscribe();this.subs=[]}constructor(s,C){this.plugin=s,this.params=C,this.subs=[]}}}(c||(c={}))},1937:(tn,Ue,n)=>{"use strict";n.r(Ue),n.d(Ue,{DefaultFocusLociBindings:()=>S,DefaultLociLabelProvider:()=>a,DefaultSelectLociBindings:()=>s,FocusLoci:()=>R,HighlightLoci:()=>d,SelectLoci:()=>h});var e=n(6825),o=n(381),r=n(3917),t=n(1164),A=n(6323),y=n(1832),c=n(4080),i=n(4123),v=n(8277),O=n(3246),b=n(9136),_=n(6115);const M=c.qt,I=c.Fs,l=i.O.Trigger,m={hoverHighlightOnly:(0,i.O)([l(M.Flag.None)],"Highlight","Hover element using ${triggers}"),hoverHighlightOnlyExtend:(0,i.O)([l(M.Flag.None,I.create({shift:!0}))],"Extend highlight","From selected to hovered element along polymer using ${triggers}")},u={bindings:v.t.Value(m,{isHidden:!0}),ignore:v.t.Value([],{isHidden:!0}),preferAtoms:v.t.Boolean(!1,{description:"Always prefer atoms over bonds"}),mark:v.t.Boolean(!0)},d=t.A.create({name:"representation-highlight-loci",category:"interaction",ctor:class extends t.A.Handler{constructor(){super(...arguments),this.lociMarkProvider=(f,p)=>{!this.ctx.canvas3d||!this.params.mark||this.ctx.canvas3d.mark(f,p)}}getLoci(f){return this.params.preferAtoms&&b.gn.isLoci(f)&&2===f.bonds.length?b.gn.toFirstStructureElementLoci(f):f}register(){this.subscribeObservable(this.ctx.behaviors.interaction.hover,({current:f,buttons:p,modifiers:E})=>{if(!this.ctx.canvas3d||this.ctx.isBusy)return;const T=this.getLoci(f.loci);if(this.params.ignore.includes(T.kind))return void this.ctx.managers.interactivity.lociHighlights.highlightOnly({repr:f.repr,loci:O.BL});let L=!1;i.O.match(this.params.bindings.hoverHighlightOnly,p,E)&&(this.ctx.managers.interactivity.lociHighlights.highlightOnly({loci:T}),L=!0),i.O.match(this.params.bindings.hoverHighlightOnlyExtend,p,E)&&(this.ctx.managers.interactivity.lociHighlights.highlightOnlyExtend({loci:T}),L=!0),L||this.ctx.managers.interactivity.lociHighlights.highlightOnly({repr:f.repr,loci:O.BL})}),this.ctx.managers.interactivity.lociHighlights.addProvider(this.lociMarkProvider)}unregister(){this.ctx.managers.interactivity.lociHighlights.removeProvider(this.lociMarkProvider)}},params:()=>u,display:{name:"Highlight Loci on Canvas"}}),s={clickSelect:i.O.Empty,clickToggleExtend:(0,i.O)([l(M.Flag.Primary,I.create({shift:!0}))],"Toggle extended selection","Click on element using ${triggers} to extend selection along polymer"),clickSelectOnly:i.O.Empty,clickToggle:(0,i.O)([l(M.Flag.Primary,I.create())],"Toggle selection","Click on element using ${triggers}"),clickDeselect:i.O.Empty,clickDeselectAllOnEmpty:(0,i.O)([l(M.Flag.Primary,I.create())],"Deselect all","Click on nothing using ${triggers}")},C={bindings:v.t.Value(s,{isHidden:!0}),ignore:v.t.Value([],{isHidden:!0}),preferAtoms:v.t.Boolean(!1,{description:"Always prefer atoms over bonds"}),mark:v.t.Boolean(!0)},h=t.A.create({name:"representation-select-loci",category:"interaction",ctor:class extends t.A.Handler{getLoci(f){return this.params.preferAtoms&&b.gn.isLoci(f)&&2===f.bonds.length?b.gn.toFirstStructureElementLoci(f):f}applySelectMark(f,p){const E=this.ctx.state.data.cells.get(f);if(E&&o.O.isRepresentation3D(E.obj)){this.spine.current=E;const T=this.spine.getRootOfType(o.O.Molecule.Structure);if(T){p&&this.lociMarkProvider({loci:b.oE.Loci(T.data)},e.xi.Deselect);const L=this.ctx.managers.structure.selection.getLoci(T.data);this.lociMarkProvider({loci:L},e.xi.Select)}}}register(){const p=T=>!O.QN.isEmpty(T),E=[["clickSelect",T=>this.ctx.managers.interactivity.lociSelects.select(T),p],["clickToggle",T=>this.ctx.managers.interactivity.lociSelects.toggle(T),p],["clickToggleExtend",T=>this.ctx.managers.interactivity.lociSelects.toggleExtend(T),p],["clickSelectOnly",T=>this.ctx.managers.interactivity.lociSelects.selectOnly(T),p],["clickDeselect",T=>this.ctx.managers.interactivity.lociSelects.deselect(T),p],["clickDeselectAllOnEmpty",()=>this.ctx.managers.interactivity.lociSelects.deselectAll(),T=>O.QN.isEmpty(T)]];E.sort((T,L)=>{const w=this.params.bindings[T[0]],Q=this.params.bindings[L[0]],G=0===w.triggers.length?0:(0,_._M)(w.triggers.map(U=>I.size(U.modifiers)));return(0===Q.triggers.length?0:(0,_._M)(Q.triggers.map(U=>I.size(U.modifiers))))-G}),this.subscribeObservable(this.ctx.behaviors.interaction.click,({current:T,button:L,modifiers:w})=>{if(!this.ctx.canvas3d||this.ctx.isBusy||!this.ctx.selectionMode)return;const Q=this.getLoci(T.loci);if(!this.params.ignore.includes(Q.kind))for(const[G,V,U]of E)if(i.O.match(this.params.bindings[G],L,w)&&(!U||U(Q))){V({repr:T.repr,loci:Q});break}}),this.ctx.managers.interactivity.lociSelects.addProvider(this.lociMarkProvider),this.subscribeObservable(this.ctx.state.events.object.created,({ref:T})=>this.applySelectMark(T)),this.subscribeObservable(this.ctx.state.events.object.updated,({ref:T,obj:L,oldObj:w,oldData:Q,action:G})=>{const V=this.ctx.state.data.cells.get(T);if(V&&o.O.Molecule.Structure.is(V.obj)){const U=L.data,N="recreate"===G?w?.data:"in-place"===G?Q:void 0;if(N&&b.oE.areEquivalent(U,N)&&b.oE.areHierarchiesEqual(U,N))return;const k=this.ctx.state.data.select(y.QX.children(T).ofType(o.O.Molecule.Structure.Representation3D));for(const H of k)this.applySelectMark(H.transform.ref,!0)}})}unregister(){this.ctx.managers.interactivity.lociSelects.removeProvider(this.lociMarkProvider)}constructor(f,p){super(f,p),this.lociMarkProvider=(E,T)=>{!this.ctx.canvas3d||!this.params.mark||this.ctx.canvas3d.mark({loci:E.loci},T)},this.spine=new A.P.Impl(f.state.data.cells)}},params:()=>C,display:{name:"Select Loci on Canvas"}}),a=t.A.create({name:"default-loci-label-provider",category:"interaction",ctor:class{register(){this.ctx.managers.lociLabels.addProvider(this.f)}unregister(){this.ctx.managers.lociLabels.removeProvider(this.f)}constructor(f){this.ctx=f,this.f={label:p=>{const E=[];if(b.iZ.Loci.is(p)){const T=new Set;for(const{unit:L}of p.elements){const w=b.iZ.Location.create(p.structure,L,L.elements[0]),Q=b.StructureProperties.entity.pdbx_description(w).join(", ");T.add(Q)}1===T.size&&T.forEach(L=>E.push(L))}return E.push((0,r.YQ)(p)),E.filter(T=>!!T).join("
")},group:p=>p.toString().replace(/Model [0-9]+/g,"Models"),priority:100}}},display:{name:"Provide Default Loci Label"}}),S={clickFocus:(0,i.O)([l(M.Flag.Primary,I.create())],"Representation Focus","Click element using ${triggers}"),clickFocusAdd:(0,i.O)([l(M.Flag.Primary,I.create({shift:!0}))],"Representation Focus Add","Click element using ${triggers}"),clickFocusSelectMode:(0,i.O)([],"Representation Focus","Click element using ${triggers}"),clickFocusAddSelectMode:(0,i.O)([],"Representation Focus Add","Click element using ${triggers}")},D={bindings:v.t.Value(S,{isHidden:!0})},R=t.A.create({name:"representation-focus-loci",category:"interaction",ctor:class extends t.A.Handler{register(){this.subscribeObservable(this.ctx.behaviors.interaction.click,({current:f,button:p,modifiers:E})=>{var T,L,w,Q,G;const{clickFocus:V,clickFocusAdd:U,clickFocusSelectMode:N,clickFocusAddSelectMode:k}=this.params.bindings,$=i.O.match(this.ctx.selectionMode?N:V,p,E),J=null!==(Q=null===(w=null===(L=null===(T=f.repr)||void 0===T?void 0:T.props)||void 0===L?void 0:L.snapshotKey)||void 0===w?void 0:w.trim())&&void 0!==Q?Q:"";if(!this.ctx.selectionMode&&$&&J)return void this.ctx.managers.snapshot.applyKey(J);const{granularity:W}=this.ctx.managers.interactivity.props;if("residue"!==W&&"element"!==W)return;const de=i.O.match(this.ctx.selectionMode?k:U,p,E);if(!$&&!de)return;const ye=O.QN.normalize(f.loci,"residue"),j=this.ctx.managers.structure.focus.current;if(j&&O.QN.areEqual(j.loci,ye))this.ctx.managers.structure.focus.clear();else if($)this.ctx.managers.structure.focus.setFromLoci(ye);else{this.ctx.managers.structure.focus.addFromLoci(ye);const Z=null===(G=this.ctx.managers.structure.focus.current)||void 0===G?void 0:G.loci;Z&&this.ctx.managers.camera.focusLoci(Z)}})}},params:()=>D,display:{name:"Representation Focus Loci on Canvas"}})},445:(tn,Ue,n)=>{"use strict";n.d(Ue,{b:()=>C});var e=n(467),o=n(2361),r=n(9778),t=n(9136),A=n(1893),y=n(1073),c=n(4987),i=n(9767),v=n(1832),O=n(2832),b=n(8277),_=n(6763),M=n(6765),I=n(9390);const m=["target","surroundings","interactions"];var u=function(h){return h.TargetSel="structure-focus-target-sel",h.TargetRepr="structure-focus-target-repr",h.SurrSel="structure-focus-surr-sel",h.SurrRepr="structure-focus-surr-repr",h.SurrNciRepr="structure-focus-surr-nci-repr",h}(u||{});const d=new Set([u.TargetSel,u.TargetRepr,u.SurrSel,u.SurrRepr,u.SurrNciRepr]),C=c.AF.create({name:"create-structure-focus-representation",display:{name:"Structure Focus Representation"},category:"interaction",ctor:class s extends c.AF.WithSubscribers{constructor(){super(...arguments),this.currentSource=void 0}get surrLabel(){return`[Focus] Surroundings (${this.params.expandRadius} \xc5)`}getReprParams(a){return{...a,type:{name:a.type.name,params:{...a.type.params,ignoreHydrogens:this.params.ignoreHydrogens,ignoreHydrogensVariant:this.params.ignoreHydrogensVariant,ignoreLight:this.params.ignoreLight,material:this.params.material,clip:this.params.clip}}}}ensureShape(a){var S;const D=this.plugin.state.data,R=D.tree,f=D.build(),p=v.QX.findUniqueTagsInSubtree(R,a.transform.ref,d);p[u.TargetSel]||(p[u.TargetSel]=f.to(a).apply(y.f.Model.StructureSelectionFromBundle,{bundle:t.iZ.Bundle.Empty,label:"[Focus] Target"},{tags:u.TargetSel}).ref),p[u.SurrSel]||(p[u.SurrSel]=f.to(a).apply(y.f.Model.StructureSelectionFromExpression,{expression:i.J.struct.generator.empty(),label:this.surrLabel},{tags:u.SurrSel}).ref);const E=this.params.components;return E.indexOf("target")>=0&&!p[u.TargetRepr]&&(p[u.TargetRepr]=f.to(p[u.TargetSel]).apply(y.f.Representation.StructureRepresentation3D,this.getReprParams(this.params.targetParams),{tags:u.TargetRepr}).ref),E.indexOf("surroundings")>=0&&!p[u.SurrRepr]&&(p[u.SurrRepr]=f.to(p[u.SurrSel]).apply(y.f.Representation.StructureRepresentation3D,this.getReprParams(this.params.surroundingsParams),{tags:u.SurrRepr}).ref),E.indexOf("interactions")>=0&&!p[u.SurrNciRepr]&&a.obj&&o.MH.isApplicable(null===(S=a.obj)||void 0===S?void 0:S.data)&&(p[u.SurrNciRepr]=f.to(p[u.SurrSel]).apply(y.f.Representation.StructureRepresentation3D,this.getReprParams(this.params.nciParams),{tags:u.SurrNciRepr}).ref),{state:D,builder:f,refs:p}}clear(a){const S=this.plugin.state.data;this.currentSource=void 0;const D=S.select(v.QX.Generators.byRef(a).subtree().withTag(u.TargetSel)),R=S.select(v.QX.Generators.byRef(a).subtree().withTag(u.SurrSel));if(0===D.length&&0===R.length)return;const f=S.build(),p=t.iZ.Bundle.Empty;for(const T of D)f.to(T).update(y.f.Model.StructureSelectionFromBundle,L=>({...L,bundle:p}));const E=i.J.struct.generator.empty();for(const T of R)f.to(T).update(y.f.Model.StructureSelectionFromExpression,L=>({...L,expression:E}));return _.a.State.Update(this.plugin,{state:S,tree:f,options:{doNotLogTiming:!0,doNotUpdateCurrent:!0}})}focus(a){var S=this;return(0,e.A)(function*(){const D=S.plugin.helpers.substructureParent.get(a.structure);if(!D||!D.obj)return;S.currentSource=a;const R=t.iZ.Loci.remap(a,D.obj.data),f=t.iZ.Loci.extendToWholeResidues(R),p=t.iZ.Bundle.fromLoci(f),E=t.iZ.Bundle.toExpression(p);let T=i.J.struct.modifier.includeSurroundings({0:E,radius:S.params.expandRadius,"as-whole-residues":!0});S.params.excludeTargetFromSurroundings&&(T=i.J.struct.modifier.exceptBy({0:T,by:E}));const{state:L,builder:w,refs:Q}=S.ensureShape(D);w.to(Q[u.TargetSel]).update(y.f.Model.StructureSelectionFromBundle,G=>({...G,bundle:p})),w.to(Q[u.SurrSel]).update(y.f.Model.StructureSelectionFromExpression,G=>({...G,expression:T,label:S.surrLabel})),yield _.a.State.Update(S.plugin,{state:L,tree:w,options:{doNotLogTiming:!0,doNotUpdateCurrent:!0}})})()}register(a){this.subscribeObservable(this.plugin.managers.structure.focus.behaviors.current,S=>{S?this.focus(S.loci):this.clear(v.Cn.RootRef)})}update(a){var S=this;return(0,e.A)(function*(){const D=S.params;if(S.params=a,D.excludeTargetFromSurroundings!==a.excludeTargetFromSurroundings)return S.currentSource&&S.focus(S.currentSource),!0;const R=S.plugin.state.data,f=R.build(),p=v.QX.Generators.root.subtree(),E=S.params.components;let T=E.indexOf("target")>=0;for(const L of R.select(p.withTag(u.TargetRepr)))T?f.to(L).update(S.getReprParams(S.params.targetParams)):f.delete(L.transform.ref);T=E.indexOf("surroundings")>=0;for(const L of R.select(p.withTag(u.SurrRepr)))T?f.to(L).update(S.getReprParams(S.params.surroundingsParams)):f.delete(L.transform.ref);T=E.indexOf("interactions")>=0;for(const L of R.select(p.withTag(u.SurrNciRepr)))T?f.to(L).update(S.getReprParams(S.params.nciParams)):f.delete(L.transform.ref);return yield _.a.State.Update(S.plugin,{state:R,tree:f,options:{doNotLogTiming:!0,doNotUpdateCurrent:!0}}),a.expandRadius!==D.expandRadius&&S.currentSource&&S.focus(S.currentSource),!0})()}},params:(h,a)=>(h=>{const a=y.f.Representation.StructureRepresentation3D.definition.params(void 0,h);return{expandRadius:b.t.Numeric(5,{min:1,max:10,step:1}),targetParams:b.t.Group(a,{label:"Target",customDefault:(0,A.pQ)(h,void 0,{type:"ball-and-stick",size:"physical",typeParams:{sizeFactor:.22,sizeAspectRatio:.73,adjustCylinderLength:!0,xrayShaded:!0,aromaticBonds:!1,multipleBonds:"off",excludeTypes:["hydrogen-bond","metal-coordination"]}})}),surroundingsParams:b.t.Group(a,{label:"Surroundings",customDefault:(0,A.pQ)(h,void 0,{type:"ball-and-stick",size:"physical",typeParams:{sizeFactor:.16,excludeTypes:["hydrogen-bond","metal-coordination"]}})}),nciParams:b.t.Group(a,{label:"Non-covalent Int.",customDefault:(0,A.pQ)(h,void 0,{type:o.MH,color:r.YU,size:O.F.BuiltIn.uniform})}),components:b.t.MultiSelect(m,b.t.arrayToOptions(m)),excludeTargetFromSurroundings:b.t.Boolean(!1,{label:"Exclude Target",description:'Exclude the focus "target" from the surroudings component.'}),ignoreHydrogens:b.t.Boolean(!1),ignoreHydrogensVariant:b.t.Select("all",b.t.arrayToOptions(["all","non-polar"])),ignoreLight:b.t.Boolean(!1),material:M.i.getParam(),clip:b.t.Group(I.B.Params)}})(a)})},6230:(tn,Ue,n)=>{"use strict";n.d(Ue,{h:()=>R});var O,f,e=n(467),o=n(8277),r=n(381),t=n(6853),A=n(5384),y=n(4369),c=n(190),i=n(1164),v=n(9677);(f=O||(O={})).create=function E(Q){return{entries:(0,v.wl)(),capacity:Math.max(1,Q)}},f.get=function T(Q,G){for(let V=Q.entries.first;V;V=V.next)if(V.value.key===G)return Q.entries.remove(V),Q.entries.addLast(V.value),V.value.data},f.set=function L(Q,G,V){let U;if(Q.entries.count>=Q.capacity){const N=Q.entries.first;U=N.value.data,Q.entries.remove(N)}return Q.entries.addLast(function p(Q,G){return{key:Q,data:G}}(G,V)),U},f.remove=function w(Q,G){for(let V=Q.entries.first;V;V=V.next)if(V.value.key===G){Q.entries.remove(V);break}};var b=n(5091),_=n(5165),M=n(4625),I=n(6763),l=n(1832),m=n(9136),u=n(3246),d=n(1861),s=n(4811),C=n(3386),h=n(6354),a=n(3294),S=n(5964);class D{constructor(p=!1){this.isRunning=!1,this.queue=[],this.counter=0,this.log=p}enqueue(p){this.log&&console.log("SingleAsyncQueue enqueue",this.counter),this.queue[0]={id:this.counter,func:p},this.counter++,this.run()}run(){var p=this;return(0,e.A)(function*(){if(p.isRunning)return;const E=p.queue.pop();if(E){p.isRunning=!0;try{p.log&&console.log("SingleAsyncQueue run",E.id),yield E.func(),p.log&&console.log("SingleAsyncQueue complete",E.id)}finally{p.isRunning=!1,p.run()}}})()}}class R extends(r.O.CreateBehavior({name:"Volume Streaming"})){}!function(f){function p(V,U,N,k,H={}){var $,J,W,te;return o.t.Group({isoValue:t.f.createIsoValueParam(null!==($=H.isoValue)&&void 0!==$?$:N,k),color:o.t.Color(null!==(J=H.color)&&void 0!==J?J:U),wireframe:o.t.Boolean(null!==(W=H.wireframe)&&void 0!==W&&W),opacity:o.t.Numeric(null!==(te=H.opacity)&&void 0!==te?te:.3,{min:0,max:1,step:.01})},{label:V,isExpanded:!0})}f.RootTag="volume-streaming-info";const E={byteOffset:0,rate:1,sampleCount:[1,1,1],valuesInfo:[{mean:0,min:-1,max:1,sigma:.1},{mean:0,min:-1,max:1,sigma:.1}]};function L(V){const{entryData:U,defaultView:N,structure:k,channelParams:H={}}=V,$=U||{kind:"em",header:{sampling:[E],availablePrecisions:[{precision:0,maxVoxels:0}]},emDefaultContourLevel:t.f.IsoValue.relative(0)},J=k&&k.boundary.box||(0,A.DJ)();return{view:o.t.MappedStatic(N||("em"===$.kind?"auto":"selection-box"),{off:o.t.Group({}),box:o.t.Group({bottomLeft:o.t.Vec3(J.min),topRight:o.t.Vec3(J.max)},{description:"Static box defined by cartesian coords.",isFlat:!0}),"selection-box":o.t.Group({radius:o.t.Numeric(5,{min:0,max:50,step:.5},{description:"Radius in \u212b within which the volume is shown."}),bottomLeft:o.t.Vec3(y.eB.create(0,0,0),{},{isHidden:!0}),topRight:o.t.Vec3(y.eB.create(0,0,0),{},{isHidden:!0})},{description:"Box around focused element.",isFlat:!0}),"camera-target":o.t.Group({radius:o.t.Numeric(.5,{min:0,max:1,step:.05},{description:"Radius within which the volume is shown (relative to the field of view)."}),dynamicDetailLevel:w($.header.availablePrecisions,0,{label:"Dynamic Detail"}),bottomLeft:o.t.Vec3(y.eB.create(0,0,0),{},{isHidden:!0}),topRight:o.t.Vec3(y.eB.create(0,0,0),{},{isHidden:!0})},{description:"Box around camera target.",isFlat:!0}),cell:o.t.Group({}),auto:o.t.Group({radius:o.t.Numeric(5,{min:0,max:50,step:.5},{description:"Radius in \u212b within which the volume is shown."}),selectionDetailLevel:w($.header.availablePrecisions,6,{label:"Selection Detail"}),isSelection:o.t.Boolean(!1,{isHidden:!0}),bottomLeft:o.t.Vec3(J.min,{},{isHidden:!0}),topRight:o.t.Vec3(J.max,{},{isHidden:!0})},{description:"Box around focused element.",isFlat:!0})},{options:f.ViewTypeOptions,description:'Controls what of the volume is displayed. "Off" hides the volume alltogether. "Bounded box" shows the volume inside the given box. "Around Interaction" shows the volume around the focused element/atom. "Whole Structure" shows the volume for the whole structure.'}),detailLevel:w($.header.availablePrecisions,3),channels:o.t.Group("em"===$.kind?{em:p("EM",(0,c.Q1)(6524815),$.emDefaultContourLevel||t.f.IsoValue.relative(1),$.header.sampling[0].valuesInfo[0],H.em)}:{"2fo-fc":p("2Fo-Fc",(0,c.Q1)(3367602),t.f.IsoValue.relative(1.5),$.header.sampling[0].valuesInfo[0],H["2fo-fc"]),"fo-fc(+ve)":p("Fo-Fc(+ve)",(0,c.Q1)(3390259),t.f.IsoValue.relative(3),$.header.sampling[0].valuesInfo[1],H["fo-fc(+ve)"]),"fo-fc(-ve)":p("Fo-Fc(-ve)",(0,c.Q1)(12268339),t.f.IsoValue.relative(-3),$.header.sampling[0].valuesInfo[1],H["fo-fc(-ve)"])},{isFlat:!0})}}function w(V,U,N){return o.t.Select(Math.min(U,V.length-1),V.map((k,H)=>[H,`${H+1} [ ${0|Math.pow(k.maxVoxels,1/3)}^3 cells ]`]),{description:"Determines the maximum number of voxels. Depending on the size of the volume options are in the range from 1 (0.52M voxels) to 7 (25.17M voxels).",...N})}function Q(V){return{entry:{name:V.entry.name,params:{detailLevel:V.entry.params.detailLevel,channels:V.entry.params.channels,view:{name:V.entry.params.view.name,params:{...V.entry.params.view.params}}}}}}f.createParams=function T(V={}){const{data:U,defaultView:N,channelParams:k}=V,H=new Map;U&&U.entries.forEach(W=>H.set(W.dataId,W));const $=U?U.entries.map(W=>[W.dataId,W.dataId]):[];return{entry:o.t.Mapped(U?U.entries[0].dataId:"",$,W=>o.t.Group(L({entryData:H.get(W),defaultView:N,structure:U&&U.structure,channelParams:k})))}},f.createEntryParams=L,f.copyParams=Q,f.ViewTypeOptions=[["off","Off"],["box","Bounded Box"],["selection-box","Around Focus"],["camera-target","Around Camera"],["cell","Whole Structure"],["auto","Auto"]],f.ChannelTypeOptions=[["em","em"],["2fo-fc","2fo-fc"],["fo-fc(+ve)","fo-fc(+ve)"],["fo-fc(-ve)","fo-fc(-ve)"]],f.Behavior=class G extends i.A.WithSubscribers{get info(){return this.infoMap.get(this.params.entry.name)}queryData(U){var N=this;return(0,e.A)(function*(){let k=(0,b.r)(N.data.serverUrl,`${N.info.kind}/${N.info.dataId.toLowerCase()}`);if(U){const{min:ye,max:j}=U;k+=`/box/${ye.map(Z=>Math.round(1e3*Z)/1e3).join(",")}/${j.map(Z=>Math.round(1e3*Z)/1e3).join(",")}`}else k+="/cell";let H=N.params.entry.params.detailLevel;"auto"===N.params.entry.params.view.name&&N.params.entry.params.view.params.isSelection&&(H=N.params.entry.params.view.params.selectionDetailLevel),"camera-target"===N.params.entry.params.view.name&&U&&(H=N.decideDetail(U,N.params.entry.params.view.params.dynamicDetailLevel)),k+=`?detail=${H}`;const $=O.get(N.cache,k);if($)return $.data;const J=d.V.getUrlAsset(N.plugin.managers.asset,k),W=yield N.plugin.runTask(N.plugin.managers.asset.resolve(J,"binary")),te=yield N.parseCif(W.data);if(!te)return;const de=O.set(N.cache,k,{data:te,asset:W});return de&&de.asset.dispose(),te})()}parseCif(U){var N=this;return(0,e.A)(function*(){const k=yield N.plugin.runTask(_.f$.parseBinary(U));if(k.isError)return void N.plugin.log.error("VolumeStreaming, parsing CIF: "+k.toString());if(k.result.blocks.length<2)return void N.plugin.log.error("VolumeStreaming: Invalid data.");const H={};for(let $=1;${!r.O.Molecule.Structure.is(N.obj)||!m.iZ.Loci.is(this.lastLoci)||this.lastLoci.structure===N.obj.data&&(this.lastLoci=u.BL)}),this.subscribeObservable(this.plugin.state.events.object.updated,N=>{!r.O.Molecule.Structure.is(N.oldObj)||!m.iZ.Loci.is(this.lastLoci)||this.lastLoci.structure===N.oldObj.data&&(this.lastLoci=u.BL)}),this.subscribeObservable(this.plugin.managers.structure.focus.behaviors.current,N=>{if(!this.plugin.state.data.tree.children.has(this.ref))return;const k=N?N.loci:u.BL;switch(this.params.entry.params.view.name){case"auto":this.updateAuto(k);break;case"selection-box":this.updateSelectionBox(k);break;default:this.lastLoci=k}})}unregister(){let U=this.cache.entries.first;for(;U;)U.value.data.asset.dispose(),U=U.next}isCameraTargetSame(U,N){if(!U||!N)return!1;const k=y.eB.equals(U.target,N.target),H=y.eB.squaredDistance(U.target,U.position),$=y.eB.squaredDistance(N.target,N.position),J=Math.abs(H-$)/H<.001;return k&&J}cameraTargetDistance(U){return y.eB.distance(U.target,U.position)}getBoxFromLoci(U){var N,k,H;if(u.QN.isEmpty(U)||(0,u.$M)(U))return(0,A.DJ)();const $=this.plugin.helpers.substructureParent.get(U.structure,!0);if(!$)return(0,A.DJ)();const J=this.getStructureRoot();if(!J||(null===(N=J.obj)||void 0===N?void 0:N.data)!==(null===(k=$.obj)||void 0===k?void 0:k.data))return(0,A.DJ)();const W=s.T.get(null===(H=J.obj)||void 0===H?void 0:H.data.models[0]);W&&y.$I.invert(this._invTransform,W);const te=m.iZ.Loci.extendToWholeResidues(U),de=m.iZ.Loci.getBoundary(te,W&&!Number.isNaN(this._invTransform[0])?this._invTransform:void 0).box;return 1===m.iZ.Loci.size(te)&&A.DJ.expand(de,de,y.eB.create(1,1,1)),de}updateAuto(U){var N=this;this.updateQueue.enqueue((0,e.A)(function*(){N.lastLoci=U,(0,u.$M)(U)?yield N.updateParams("x-ray"===N.info.kind?N.data.structure.boundary.box:void 0,!1):yield N.updateParams(N.getBoxFromLoci(U),!0)}))}updateSelectionBox(U){var N=this;this.updateQueue.enqueue((0,e.A)(function*(){N.lastLoci=u.QN.areEqual(N.lastLoci,U)?u.BL:U;const k=N.getBoxFromLoci(N.lastLoci);yield N.updateParams(k)}))}updateCameraTarget(U){var N=this;this.updateQueue.enqueue((0,e.A)(function*(){var k,H,$;const J=null===(k=N.plugin.canvas3d)||void 0===k?void 0:k.props.camera.manualReset;try{J||null===(H=N.plugin.canvas3d)||void 0===H||H.setProps({camera:{manualReset:!0}});const W=N.boxFromCameraTarget(U,!0);yield N.updateParams(W)}finally{J||null===($=N.plugin.canvas3d)||void 0===$||$.setProps({camera:{manualReset:J}})}}))}boxFromCameraTarget(U,N){var k;const H=U.target,$=this.cameraTargetDistance(U);let W=Math.tan(.5*U.fov)*$;const te=null===(k=this.plugin.canvas3d)||void 0===k?void 0:k.camera.viewport;let ye,j,Z;if(te&&te.width>te.height&&(W*=te.width/te.height),W*="camera-target"===this.params.entry.params.view.name?this.params.entry.params.view.params.radius:.5,N){const q=y.eB.zero();A.DJ.size(q,this.data.structure.boundary.box),ye=Math.min(W,.5*q[0]),j=Math.min(W,.5*q[1]),Z=Math.min(W,.5*q[2])}else ye=j=Z=W;return A.DJ.create(y.eB.create(H[0]-ye,H[1]-j,H[2]-Z),y.eB.create(H[0]+ye,H[1]+j,H[2]+Z))}decideDetail(U,N){const k="x-ray"===this.info.kind?A.DJ.volume(this.data.structure.boundary.box):this.info.header.spacegroup.size.reduce((te,de)=>te*de,1);let $=A.DJ.volume(U)/k;const J=this.info.header.availablePrecisions.length-1;let W=N;for(;$<=.5&&WN.updateCameraTarget(te))),H=N.boxFromCameraTarget(N.plugin.canvas3d.camera.getSnapshot(),!0);break;case"cell":H="x-ray"===N.info.kind?N.data.structure.boundary.box:void 0;break;case"auto":if(H=U.entry.params.view.params.isSelection||"x-ray"===N.info.kind?A.DJ.create(y.eB.clone(U.entry.params.view.params.bottomLeft),y.eB.clone(U.entry.params.view.params.topRight)):void 0,H&&($=A.DJ.volume(H)<1e-4,U.entry.params.view.params.isSelection)){const te=U.entry.params.view.params.radius;A.DJ.expand(H,H,y.eB.create(te,te,te))}}const J=$?{}:yield N.queryData(H);if(!J)return!1;const W=U.entry.params.channels;return"x-ray"===N.info.kind?(N.channels["2fo-fc"]=N.createChannel(J["2FO-FC"]||t.f.One,W["2fo-fc"],N.info.header.sampling[0].valuesInfo[0]),N.channels["fo-fc(+ve)"]=N.createChannel(J["FO-FC"]||t.f.One,W["fo-fc(+ve)"],N.info.header.sampling[0].valuesInfo[1]),N.channels["fo-fc(-ve)"]=N.createChannel(J["FO-FC"]||t.f.One,W["fo-fc(-ve)"],N.info.header.sampling[0].valuesInfo[1])):N.channels.em=N.createChannel(J.EM||t.f.One,W.em,N.info.header.sampling[0].valuesInfo[0]),!0})()}createChannel(U,N,k){return{data:U,color:N.color,wireframe:N.wireframe,opacity:N.opacity,isoValue:"relative"===N.isoValue.kind?N.isoValue:t.f.IsoValue.toRelative(N.isoValue,k)}}getDescription(){return"selection-box"===this.params.entry.params.view.name?"Selection":"camera-target"===this.params.entry.params.view.name?"Camera":"box"===this.params.entry.params.view.name?"Static Box":"cell"===this.params.entry.params.view.name?"Cell":""}constructor(U,N){super(U,{}),this.plugin=U,this.data=N,this.cache=O.create(25),this.params={},this.lastLoci=u.BL,this.ref="",this.cameraTargetObservable=this.plugin.canvas3d.didDraw.pipe((0,C.c)(500,void 0,{leading:!0,trailing:!0}),(0,h.T)(()=>{var k;return null===(k=this.plugin.canvas3d)||void 0===k?void 0:k.camera.getSnapshot()}),(0,a.F)((k,H)=>this.isCameraTargetSame(k,H)),(0,S.p)(k=>void 0!==k)),this.cameraTargetSubscription=void 0,this.channels={},this._invTransform=(0,y.$I)(),this.infoMap=new Map,this.data.entries.forEach(k=>this.infoMap.set(k.dataId,k)),this.updateQueue=new D}}}(R||(R={}))},958:(tn,Ue,n)=>{"use strict";n.d(Ue,{Cd:()=>a,N$:()=>R,p3:()=>h});var t,e=n(467),o=n(381);class r extends(o.O.Create({name:"Volume Streaming",typeClass:"Object"})){}!function(E){let T;var L;(L=T=E.ValueType||(E.ValueType={})).Float32="float32",L.Int8="int8"}(t||(t={}));var A=n(8277),y=n(4824),c=n(5091),i=n(6853),v=n(1832),O=n(6570),b=n(6230),_=n(8010),M=n(3866),I=n(1930),l=n(5384),m=n(4369),u=n(237),d=n(9136),s=n(4811);function C(E,T,L,w){E.push({source:"em"===T?{name:"em",params:{isoValue:i.f.IsoValue.absolute(w||0)}}:{name:"x-ray",params:{}},dataId:L})}const h=v.KW.build({display:{name:"Volume Streaming"},from:o.O.Molecule.Structure,params(E,T){const L=(0,O.AR)(E&&E.data),w=(0,O.rO)(L,E&&E.data);return{method:A.t.Select(L,[["em","EM"],["x-ray","X-Ray"]]),entries:A.t.ObjectList({id:A.t.Text(w[0]||"")},({id:Q})=>Q,{defaultValue:w.map(Q=>({id:Q}))}),defaultView:A.t.Select("em"===L?"auto":"selection-box",b.h.ViewTypeOptions),options:A.t.Group({serverUrl:A.t.Text(T.config.get(u.AB.VolumeStreaming.DefaultServer)||"https://ds.litemol.org"),behaviorRef:A.t.Text("",{isHidden:!0}),emContourProvider:A.t.Select("emdb",[["emdb","EMDB"],["pdbe","PDBe"]],{isHidden:!0}),channelParams:A.t.Value({},{isHidden:!0})})}},isApplicable:(E,T,L)=>{const w=L.config.get(u.AB.VolumeStreaming.CanStream);return w?w(E.data,L):1===E.data.models.length&&d.Kx.probablyHasDensityMap(E.data.models[0])}})(({ref:E,state:T,params:L},w)=>y.YZ.create("Volume Streaming",function(){var Q=(0,e.A)(function*(G){const V=[];for(let J=0,W=L.entries.length;J0&&(yield w.managers.structure.hierarchy.remove(k?.toArray()));const H=N.cell.obj,$=T.build().to(U.ref).apply(R,A.t.getDefaultValues(b.h.createParams({data:H.data,defaultView:L.defaultView,channelParams:L.options.channelParams})),{ref:L.options.behaviorRef?L.options.behaviorRef:void 0});"em"===L.method?$.apply(f,{channel:"em"},{state:{isGhost:!0},tags:"em"}):($.apply(f,{channel:"2fo-fc"},{state:{isGhost:!0},tags:"2fo-fc"}),$.apply(f,{channel:"fo-fc(+ve)"},{state:{isGhost:!0},tags:"fo-fc(+ve)"}),$.apply(f,{channel:"fo-fc(-ve)"},{state:{isGhost:!0},tags:"fo-fc(-ve)"})),yield T.updateTree($).runInContext(G)});return function(G){return Q.apply(this,arguments)}}())),a=v.KW.build({display:{name:"Boxify Volume Streaming",description:"Make the current box permanent."},from:b.h,isApplicable:E=>"selection-box"===E.data.params.entry.params.view.name})(({a:E,ref:T,state:L},w)=>{const Q=E.data.params;if("selection-box"!==Q.entry.params.view.name)return;const G=l.DJ.create(m.eB.clone(Q.entry.params.view.params.bottomLeft),m.eB.clone(Q.entry.params.view.params.topRight)),V=Q.entry.params.view.params.radius;l.DJ.expand(G,G,m.eB.create(V,V,V));const U={...Q,entry:{name:Q.entry.name,params:{...Q.entry.params,view:{name:"box",params:{bottomLeft:G.min,topRight:G.max}}}}};return L.updateTree(L.build().to(T).update(U))}),S={dataId:A.t.Text(""),source:A.t.MappedStatic("x-ray",{em:A.t.Group({isoValue:i.f.createIsoValueParam(i.f.IsoValue.relative(1))}),"x-ray":A.t.Group({})})},D=o.H.BuiltIn({name:"create-volume-streaming-info",display:{name:"Volume Streaming Info"},from:o.O.Molecule.Structure,to:r,params:E=>({serverUrl:A.t.Text("https://ds.litemol.org"),entries:A.t.ObjectList(S,({dataId:T})=>T,{defaultValue:[{dataId:"",source:{name:"x-ray",params:{}}}]})})})({apply:({a:E,params:T},L)=>y.YZ.create("",function(){var w=(0,e.A)(function*(Q){const G=[];for(let U=0,N=T.entries.length;UU.dataId).join(", ")}`})});return function(Q){return w.apply(this,arguments)}}())}),R=o.H.BuiltIn({name:"create-volume-streaming-behavior",display:{name:"Volume Streaming Behavior"},from:r,to:b.h,params:E=>b.h.createParams({data:E&&E.data})})({canAutoUpdate:({oldParams:E,newParams:T})=>E.entry.params.view===T.entry.params.view||"selection-box"===T.entry.params.view.name||"camera-target"===T.entry.params.view.name||"off"===T.entry.params.view.name,apply:({a:E,params:T},L)=>y.YZ.create("Volume streaming",function(){var w=(0,e.A)(function*(Q){const G=new b.h.Behavior(L,E.data);return yield G.update(T),new b.h(G,{label:"Volume Streaming",description:G.getDescription()})});return function(Q){return w.apply(this,arguments)}}()),update:({b:T,oldParams:L,newParams:w})=>y.YZ.create("Update Volume Streaming",function(){var Q=(0,e.A)(function*(G){if(L.entry.name!==w.entry.name&&"em"in w.entry.params.channels){const{emDefaultContourLevel:U}=T.data.infoMap.get(w.entry.name);U&&(w.entry.params.channels.em.isoValue=U)}const V=(yield T.data.update(w))?v.xE.UpdateResult.Updated:v.xE.UpdateResult.Unchanged;return T.description=T.data.getDescription(),V});return function(G){return Q.apply(this,arguments)}}())}),f=o.H.BuiltIn({name:"create-volume-streaming-visual",display:{name:"Volume Streaming Visual"},from:b.h,to:o.O.Volume.Representation3D,params:{channel:A.t.Select("em",b.h.ChannelTypeOptions,{isHidden:!0})}})({apply:({a:E,params:T,spine:L},w)=>y.YZ.create("Volume Representation",function(){var Q=(0,e.A)(function*(G){var V,U;const N=E.data.channels[T.channel];if(!N)return v.BM.Null;const k=p(E.data,T.channel),H=M.H.BuiltIn.isosurface,$=k.type.params||{},J=H.factory({webgl:null===(V=w.canvas3d)||void 0===V?void 0:V.webgl,...w.representation.volume.themes},H.getParams);J.setTheme(I.S.create(w.representation.volume.themes,{volume:N.data},k));const W=null===(U=L.getAncestorOfType(o.O.Molecule.Structure))||void 0===U?void 0:U.data,te=0===W?.models.length?void 0:s.T.get(W?.models[0]);return yield J.createOrUpdate($,N.data).runInContext(G),te&&J.setState({transform:te}),new o.O.Volume.Representation3D({repr:J,sourceData:N.data},{label:`${Math.round(100*N.isoValue.relativeValue)/100} \u03c3 [${T.channel}]`})});return function(G){return Q.apply(this,arguments)}}()),update:({a:E,b:T,newParams:L},Q)=>y.YZ.create("Volume Representation",function(){var G=(0,e.A)(function*(V){const U=E.data.channels[L.channel];if(!U)return v.xE.UpdateResult.Unchanged;const N=T.data.repr.state.visible,k=p(E.data,L.channel),H={...T.data.repr.props,...k.type.params};return T.data.repr.setTheme(I.S.create(Q.representation.volume.themes,{volume:U.data},k)),yield T.data.repr.createOrUpdate(H,U.data).runInContext(V),T.data.repr.setState({visible:N}),T.data.sourceData=U.data,v.xE.UpdateResult.Updated});return function(V){return G.apply(this,arguments)}}())});function p(E,T){const L=E.channels[T];return _.VolumeRepresentation3DHelpers.getDefaultParamsStatic(E.plugin,"isosurface",{isoValue:L.isoValue,alpha:L.opacity,visuals:L.wireframe?["wireframe"]:["solid"]},"uniform",{value:L.color})}},6570:(tn,Ue,n)=>{"use strict";n.d(Ue,{$A:()=>b,AR:()=>A,lL:()=>v,rO:()=>i,t9:()=>u});var e=n(467),o=n(9136),r=n(2524),t=n(237);function A(s,C="x-ray"){if(!s)return C;const h=s.models[0];return r.K4.is(h.sourceData)?o.Kx.hasEmMap(h)?"em":o.Kx.hasXrayMap(h)?"x-ray":o.Kx.isFromEm(h)?"em":o.Kx.isFromXray(h)?"x-ray":C:C}function i(s,C){if(!C||!C.models.length)return[];const h=C.models[0];switch(s){case"em":return function y(s){const C=[];if(!r.K4.is(s.sourceData))return[s.entryId];const{db_id:h,db_name:a,content_type:S}=s.sourceData.data.db.pdbx_database_related;if(!a.isDefined)return[s.entryId];for(let D=0,R=a.rowCount;DE.primary))||void 0===D?void 0:D.level)&&void 0!==R?R:p[0].level:function l(s,C,h){return m.apply(this,arguments)}(s,C,h)}),I.apply(this,arguments)}function m(){return(m=(0,e.A)(function*(s,C,h){var a,S,D;h=h.toUpperCase();const R=yield s.fetch({url:`https://www.ebi.ac.uk/pdbe/api/emdb/entry/map/${h}`,type:"json"}).runInContext(C),f=R?.[h];let p;return void 0!==(null===(D=null===(S=null===(a=f?.[0])||void 0===a?void 0:a.map)||void 0===S?void 0:S.contour_level)||void 0===D?void 0:D.value)&&(p=+f[0].map.contour_level.value),p})).apply(this,arguments)}function u(s,C,h){return d.apply(this,arguments)}function d(){return(d=(0,e.A)(function*(s,C,h){var a;const S=yield s.fetch({url:`https://www.ebi.ac.uk/pdbe/api/pdb/entry/summary/${h}`,type:"json"}).runInContext(C),D=S?.[h],R=[];if(null===(a=D?.[0])||void 0===a||!a.related_structures)throw new Error(`No related EMDB entry found for '${h}'.`);{const f=D[0].related_structures.filter(p=>"EMDB"===p.resource&&"associated EM volume"===p.relationship);if(!f.length)throw new Error(`No related EMDB entry found for '${h}'.`);R.push(...f.map(p=>p.accession))}return R})).apply(this,arguments)}},1827:(tn,Ue,n)=>{"use strict";n.r(Ue),n.d(Ue,{ApplyAction:()=>m,ClearHighlights:()=>S,Highlight:()=>a,RemoveObject:()=>u,SetCurrentObject:()=>I,Snapshots:()=>D,SyncBehaviors:()=>M,ToggleExpanded:()=>d,ToggleVisibility:()=>s,Update:()=>l,registerDefault:()=>_,setSubtreeVisibility:()=>C});var e=n(467),o=n(9136),r=n(856),t=n(381),A=n(1832),i=n(2732),v=n(5091),O=n(6763),b=n(237);function _(R){M(R),I(R),l(R),m(R),u(R),d(R),s(R),a(R),S(R),D(R)}function M(R){R.state.events.object.created.subscribe(f=>{t.O.isBehavior(f.obj)&&f.obj.data.register(f.ref)}),R.state.events.object.removed.subscribe(f=>{var p,E,T,L;t.O.isBehavior(f.obj)&&(null===(E=(p=f.obj.data).unregister)||void 0===E||E.call(p),null===(L=(T=f.obj.data).dispose)||void 0===L||L.call(T))}),R.state.events.object.updated.subscribe(f=>{var p,E,T,L;"recreate"===f.action&&(f.oldObj&&t.O.isBehavior(f.oldObj)&&(null===(E=(p=f.oldObj.data).unregister)||void 0===E||E.call(p),null===(L=(T=f.oldObj.data).dispose)||void 0===L||L.call(T)),f.obj&&t.O.isBehavior(f.obj)&&f.obj.data.register(f.ref))})}function I(R){O.a.State.SetCurrentObject.subscribe(R,({state:f,ref:p})=>f.setCurrent(p))}function l(R){O.a.State.Update.subscribe(R,({state:f,tree:p,options:E})=>R.runTask(f.updateTree(p,E)))}function m(R){O.a.State.ApplyAction.subscribe(R,({state:f,action:p,ref:E})=>R.runTask(f.applyAction(p.action,p.params,E)))}function u(R){function f(p,E){const T=p.build().delete(E);return R.runTask(p.updateTree(T))}O.a.State.RemoveObject.subscribe(R,({state:p,ref:E,removeParentGhosts:T})=>{if(!T)return f(p,E);{const L=p.tree;let w=L.transforms.get(E);if(w.parent===E)return f(p,E);for(;;){const Q=L.children.get(w.parent);if(w.parent===w.ref||Q.size>1)return f(p,w.ref);const G=L.transforms.get(w.parent);if(!G.state.isGhost)return f(p,w.ref);w=G}}})}function d(R){O.a.State.ToggleExpanded.subscribe(R,({state:f,ref:p})=>f.updateCellState(p,({isCollapsed:E})=>({isCollapsed:!E})))}function s(R){O.a.State.ToggleVisibility.subscribe(R,({state:f,ref:p})=>C(f,p,!f.cells.get(p).state.isHidden))}function C(R,f,p){A.uF.doPreOrder(R.tree,R.transforms.get(f),{state:R,value:p},h)}function h(R,f,p){p.state.updateCellState(R.ref,{isHidden:p.value})}function a(R){O.a.Interactivity.Object.Highlight.subscribe(R,({state:f,ref:p})=>{if(!R.canvas3d||R.isBusy)return;R.managers.interactivity.lociHighlights.clearHighlights();const E="string"==typeof p?[p]:p;for(const T of E){const L=f.cells.get(T);if(L)if(t.O.Molecule.Structure.is(L.obj))R.managers.interactivity.lociHighlights.highlight({loci:o.oE.Loci(L.obj.data)},!1);else if(L&&t.O.isRepresentation3D(L.obj)){const{repr:w}=L.obj.data;for(const Q of w.getAllLoci())R.managers.interactivity.lociHighlights.highlight({loci:Q,repr:w},!1)}else if(t.O.Molecule.Structure.Selections.is(L.obj))for(const w of L.obj.data)R.managers.interactivity.lociHighlights.highlight({loci:w.loci},!1)}})}function S(R){O.a.Interactivity.ClearHighlights.subscribe(R,()=>{R.managers.interactivity.lociHighlights.clearHighlights()})}function D(R){R.config.set(b.AB.State.CurrentServer,R.config.get(b.AB.State.DefaultServer)),O.a.State.Snapshots.Clear.subscribe(R,()=>{R.managers.snapshot.clear()}),O.a.State.Snapshots.Remove.subscribe(R,({id:f})=>{R.managers.snapshot.remove(f)}),O.a.State.Snapshots.Add.subscribe(R,function(){var f=(0,e.A)(function*({key:p,name:E,description:T,params:L}){var w;const Q=R.state.getSnapshot(L),G=(null!==(w=L?.image)&&void 0!==w?w:R.state.snapshotParams.value.image)?yield r.g.getCanvasImageAsset(R,`${Q.id}-image.png`):void 0,V=r.g.Entry(Q,{key:p,name:E,description:T,image:G});R.managers.snapshot.add(V)});return function(p){return f.apply(this,arguments)}}()),O.a.State.Snapshots.Replace.subscribe(R,function(){var f=(0,e.A)(function*({id:p,params:E}){var T;const L=R.state.getSnapshot(E),w=(null!==(T=E?.image)&&void 0!==T?T:R.state.snapshotParams.value.image)?yield r.g.getCanvasImageAsset(R,`${L.id}-image.png`):void 0;R.managers.snapshot.replace(p,R.state.getSnapshot(E),{image:w})});return function(p){return f.apply(this,arguments)}}()),O.a.State.Snapshots.Move.subscribe(R,({id:f,dir:p})=>{R.managers.snapshot.move(f,p)}),O.a.State.Snapshots.Apply.subscribe(R,({id:f})=>{const p=R.managers.snapshot.setCurrent(f);if(p)return R.state.setSnapshot(p)}),O.a.State.Snapshots.Upload.subscribe(R,function(){var f=(0,e.A)(function*({name:p,description:E,playOnLoad:T,serverUrl:L}){return fetch((0,v.r)(L,`set?name=${encodeURIComponent(p||"")}&description=${encodeURIComponent(E||"")}`),{method:"POST",mode:"cors",referrer:"no-referrer",headers:{"Content-Type":"application/json; charset=utf-8"},body:JSON.stringify(yield R.managers.snapshot.getStateSnapshot({name:p,description:E,playOnLoad:T}))})});return function(p){return f.apply(this,arguments)}}()),O.a.State.Snapshots.Fetch.subscribe(R,function(){var f=(0,e.A)(function*({url:p}){const E=yield R.runTask(R.fetch({url:p,type:"json"}));yield R.managers.snapshot.setStateSnapshot(E.data)});return function(p){return f.apply(this,arguments)}}()),O.a.State.Snapshots.DownloadToFile.subscribe(R,function(){var f=(0,e.A)(function*({name:p,type:E,params:T}){const L=`mol-star_state_${p||function c(){const R=new Date;return R.getFullYear()+"-"+(R.getMonth()+1)+"-"+R.getDate()+"-"+R.getHours()+"-"+R.getMinutes()+"-"+R.getSeconds()}()}.${"json"===E?"molj":"molx"}`,w=yield R.managers.snapshot.serialize({type:E,params:T});(0,i.R)(w,`${L}`)});return function(p){return f.apply(this,arguments)}}()),O.a.State.Snapshots.OpenFile.subscribe(R,({file:f})=>R.managers.snapshot.open(f)),O.a.State.Snapshots.OpenUrl.subscribe(R,function(){var f=(0,e.A)(function*({url:p,type:E}){const T=yield R.runTask(R.fetch({url:p,type:"binary"}));return R.managers.snapshot.open(new File([T],`state.${E}`))});return function(p){return f.apply(this,arguments)}}())}},6852:(tn,Ue,n)=>{"use strict";n.d(Ue,{K:()=>t,j:()=>r});var e=n(467),o=n(9909);function r(){const A=(y,c)=>y.commands.dispatch(A,c||{});return A.subscribe=(y,c)=>y.commands.subscribe(A,c),A.id=o.kk.create22(),A}class t{constructor(){this.subs=new Map,this.disposing=!1}subscribe(y,c){let i=this.subs.get(y.id);return i||(i=[],this.subs.set(y.id,i)),i.push(c),{unsubscribe:()=>{const v=this.subs.get(y.id);if(!v)return;const O=v.indexOf(c);if(!(O<0)){for(let b=O+1;b{this.disposing?v("disposed"):this.subs.get(y.id)?this.resolve({cmd:y,params:c,resolve:i,reject:v}):i()})}dispose(){this.subs.clear()}resolve(y){var c=this;return(0,e.A)(function*(){const i=c.subs.get(y.cmd.id);if(i)try{for(const v of i)yield v(y.params);y.resolve()}catch(v){y.reject(v)}else y.resolve()})()}}},6763:(tn,Ue,n)=>{"use strict";n.d(Ue,{a:()=>o});var e=n(6852);const o={State:{SetCurrentObject:(0,e.j)(),ApplyAction:(0,e.j)(),Update:(0,e.j)(),RemoveObject:(0,e.j)(),ToggleExpanded:(0,e.j)(),ToggleVisibility:(0,e.j)(),Snapshots:{Add:(0,e.j)(),Replace:(0,e.j)(),Move:(0,e.j)(),Remove:(0,e.j)(),Apply:(0,e.j)(),Clear:(0,e.j)(),Upload:(0,e.j)(),Fetch:(0,e.j)(),DownloadToFile:(0,e.j)(),OpenFile:(0,e.j)(),OpenUrl:(0,e.j)()}},Interactivity:{Object:{Highlight:(0,e.j)()},Structure:{Highlight:(0,e.j)(),Select:(0,e.j)()},ClearHighlights:(0,e.j)()},Layout:{Update:(0,e.j)()},Toast:{Show:(0,e.j)(),Hide:(0,e.j)()},Camera:{Reset:(0,e.j)(),SetSnapshot:(0,e.j)(),Focus:(0,e.j)(),OrientAxes:(0,e.j)(),ResetAxes:(0,e.j)()},Canvas3D:{SetSettings:(0,e.j)(),ResetSettings:(0,e.j)()}}},237:(tn,Ue,n)=>{"use strict";n.d(Ue,{AB:()=>A,tf:()=>y});var e=n(9136);const o={get preferWebGl1(){if(typeof navigator>"u"||typeof window>"u")return!1;if(["Version/15.1 Safari","Version/15.2 Safari","Version/15.3 Safari"].some(b=>navigator.userAgent.indexOf(b)>0))return!0;const i=/iPad|iPhone|iPod/.test(navigator.userAgent),v=navigator.userAgent.includes("Macintosh"),O=navigator.maxTouchPoints>=4;return!window.MSStream&&(i||v&&O)}};class r{toString(){return this.key}valueOf(){return this.key}constructor(i,v){this.key=i,this.defaultValue=v}}function t(c,i){return new r(c,i)}const A={item:t,General:{IsBusyTimeoutMs:t("plugin-config.is-busy-timeout",750),DisableAntialiasing:t("plugin-config.disable-antialiasing",!1),DisablePreserveDrawingBuffer:t("plugin-config.disable-preserve-drawing-buffer",!1),PixelScale:t("plugin-config.pixel-scale",1),PickScale:t("plugin-config.pick-scale",.25),Transparency:t("plugin-config.transparency","wboit"),PreferWebGl1:t("plugin-config.prefer-webgl1",o.preferWebGl1),AllowMajorPerformanceCaveat:t("plugin-config.allow-major-performance-caveat",!1),PowerPreference:t("plugin-config.power-preference","high-performance")},State:{DefaultServer:t("plugin-state.server","https://webchem.ncbr.muni.cz/molstar-state"),CurrentServer:t("plugin-state.server","https://webchem.ncbr.muni.cz/molstar-state"),HistoryCapacity:t("history-capacity.server",5)},VolumeStreaming:{Enabled:t("volume-streaming.enabled",!0),DefaultServer:t("volume-streaming.server","https://ds.litemol.org"),CanStream:t("volume-streaming.can-stream",(c,i)=>1===c.models.length&&e.Kx.probablyHasDensityMap(c.models[0])),EmdbHeaderServer:t("volume-streaming.emdb-header-server","https://files.wwpdb.org/pub/emdb/structures")},Viewport:{ShowExpand:t("viewer.show-expand-button",!0),ShowControls:t("viewer.show-controls-button",!0),ShowSettings:t("viewer.show-settings-button",!0),ShowSelectionMode:t("viewer.show-selection-model-button",!0),ShowAnimation:t("viewer.show-animation-button",!0),ShowTrajectoryControls:t("viewer.show-trajectory-controls",!0)},Download:{DefaultPdbProvider:t("download.default-pdb-provider","pdbe"),DefaultEmdbProvider:t("download.default-emdb-provider","pdbe")},Structure:{SizeThresholds:t("structure.size-thresholds",e.oE.DefaultSizeThresholds),DefaultRepresentationPreset:t("structure.default-representation-preset","auto"),DefaultRepresentationPresetParams:t("structure.default-representation-preset-params",{}),SaccharideCompIdMapType:t("structure.saccharide-comp-id-map-type","default")},Background:{Styles:t("background.styles",[])}};class y{get(i){return this._config.has(i)?this._config.get(i):i.defaultValue}set(i,v){this._config.set(i,v)}delete(i){this._config.delete(i)}constructor(i){this._config=new Map,i&&i.forEach(([v,O])=>this._config.set(v,O))}}},2768:(tn,Ue,n)=>{"use strict";n.d(Ue,{p:()=>M});var I,e=n(467),o=n(1832),r=n(381),t=n(4987),A=n(3177),y=n(6763),c=n(8277),i=n(9909),v=n(1025),O=n(7786),b=n(3182),_=n(237);class M extends b.N{get animation(){return this.plugin.managers.animation}getSnapshot(l){var m,u,d;const s={...this.snapshotParams.value,...l};return{id:i.kk.create22(),data:s.data?this.data.getSnapshot():void 0,behaviour:s.behavior?this.behaviors.getSnapshot():void 0,animation:s.animation?this.animation.getSnapshot():void 0,startAnimation:s.startAnimation?!!s.startAnimation:void 0,camera:s.camera?{current:this.plugin.canvas3d.camera.getSnapshot(),transitionStyle:s.cameraTransition.name,transitionDurationInMs:"animate"===(null===(m=s?.cameraTransition)||void 0===m?void 0:m.name)?s.cameraTransition.params.durationInMs:void 0}:void 0,canvas3dContext:s.canvas3dContext?{props:null===(u=this.plugin.canvas3dContext)||void 0===u?void 0:u.props}:void 0,canvas3d:s.canvas3d?{props:null===(d=this.plugin.canvas3d)||void 0===d?void 0:d.props}:void 0,interactivity:s.interactivity?{props:this.plugin.managers.interactivity.props}:void 0,structureFocus:this.plugin.managers.structure.focus.getSnapshot(),structureSelection:s.structureSelection?this.plugin.managers.structure.selection.getSnapshot():void 0,structureComponentManager:s.componentManager?{options:this.plugin.managers.structure.component.state.options}:void 0,durationInMs:s?.durationInMs}}setSnapshot(l){var m=this;return(0,e.A)(function*(){var u,d,s,C,h;if(yield m.animation.stop(),!(null===(u=l.structureComponentManager)||void 0===u)&&u.options&&m.plugin.managers.structure.component._setSnapshotState(null===(d=l.structureComponentManager)||void 0===d?void 0:d.options),l.behaviour&&(yield m.plugin.runTask(m.behaviors.setSnapshot(l.behaviour))),l.data&&(yield m.plugin.runTask(m.data.setSnapshot(l.data))),null!==(s=l.canvas3d)&&void 0!==s&&s.props){const a=c.t.normalizeParams(A._i,l.canvas3d.props,"children");yield y.a.Canvas3D.SetSettings(m.plugin,{settings:a})}if(null!==(C=l.canvas3dContext)&&void 0!==C&&C.props){const a=c.t.normalizeParams(A.H7.Params,l.canvas3dContext.props,"children");null===(h=m.plugin.canvas3dContext)||void 0===h||h.setProps(a)}l.interactivity&&l.interactivity.props&&m.plugin.managers.interactivity.setProps(l.interactivity.props),l.structureFocus&&m.plugin.managers.structure.focus.setSnapshot(l.structureFocus),l.structureSelection&&m.plugin.managers.structure.selection.setSnapshot(l.structureSelection),l.animation&&m.animation.setSnapshot(l.animation),l.camera&&y.a.Camera.Reset(m.plugin,{snapshot:l.camera.current,durationMs:"animate"===l.camera.transitionStyle?l.camera.transitionDurationInMs:void 0}),l.startAnimation&&m.animation.start()})()}updateTransform(l,m,u,d){const s=l.build().to(m).update(u);return y.a.State.Update(this.plugin,{state:l,tree:s,options:{canUndo:d}})}hasBehavior(l){return this.behaviors.tree.transforms.has(l.id)}updateBehavior(l,m){const u=this.behaviors.build();if(this.behaviors.tree.transforms.has(l.id))u.to(l.id).update(m);else{const d=l.createDefaultParams(void 0,this.plugin);u.to(t.AF.getCategoryId(l)).apply(l,(0,v.jM)(d,m),{ref:l.id})}return this.plugin.runTask(this.behaviors.updateTree(u))}dispose(){this.behaviors.cells.forEach(l=>{var m,u,d,s;t.AF.Behavior.is(l.obj)&&(null===(u=(m=l.obj.data).unregister)||void 0===u||u.call(m),null===(s=(d=l.obj.data).dispose)||void 0===s||s.call(d))}),super.dispose(),this.data.dispose(),this.behaviors.dispose(),this.animation.dispose()}constructor(l){super(),this.plugin=l,this.data=o.Uw.create(new r.O.Root({}),{runTask:this.plugin.runTask,globalContext:this.plugin,historyCapacity:this.plugin.config.get(_.AB.State.HistoryCapacity)}),this.behaviors=o.Uw.create(new t.AF.Root({}),{runTask:this.plugin.runTask,globalContext:this.plugin,rootState:{isLocked:!0}}),this.events={cell:{stateUpdated:(0,O.h)(this.data.events.cell.stateUpdated,this.behaviors.events.cell.stateUpdated),created:(0,O.h)(this.data.events.cell.created,this.behaviors.events.cell.created),removed:(0,O.h)(this.data.events.cell.removed,this.behaviors.events.cell.removed)},object:{created:(0,O.h)(this.data.events.object.created,this.behaviors.events.object.created),removed:(0,O.h)(this.data.events.object.removed,this.behaviors.events.object.removed),updated:(0,O.h)(this.data.events.object.updated,this.behaviors.events.object.updated)}},this.snapshotParams=this.ev.behavior(M.DefaultSnapshotParams),this.setSnapshotParams=m=>{this.snapshotParams.next({...M.DefaultSnapshotParams,...m})}}}(I=M||(M={})).SnapshotParams={durationInMs:c.t.Numeric(1500,{min:100,max:15e3,step:100},{label:"Duration in ms"}),data:c.t.Boolean(!0),behavior:c.t.Boolean(!1),structureSelection:c.t.Boolean(!1),componentManager:c.t.Boolean(!0),animation:c.t.Boolean(!0),startAnimation:c.t.Boolean(!1),canvas3d:c.t.Boolean(!0),canvas3dContext:c.t.Boolean(!0),interactivity:c.t.Boolean(!0),camera:c.t.Boolean(!0),cameraTransition:c.t.MappedStatic("animate",{animate:c.t.Group({durationInMs:c.t.Numeric(250,{min:100,max:5e3,step:500},{label:"Duration in ms"})}),instant:c.t.Group({})},{options:[["animate","Animate"],["instant","Instant"]]}),image:c.t.Boolean(!1)},I.DefaultSnapshotParams=c.t.getDefaultValues(I.SnapshotParams)},6101:(tn,Ue,n)=>{"use strict";n.d(Ue,{j:()=>e,s:()=>o});var e="4.3.0",o=new Date(typeof __MOLSTAR_DEBUG_TIMESTAMP__<"u"?__MOLSTAR_DEBUG_TIMESTAMP__:1716707835175)},2443:(tn,Ue,n)=>{"use strict";n.d(Ue,{YL:()=>R,lN:()=>D});var h,e=n(467),o=n(8277),r=n(274),t=n(2832),A=n(1930),y=n(1413),c=n(4824),i=n(6825),v=n(3246),O=n(261),b=n(1965),_=n(4369),M=n(5589),I=n(5019),l=n(5117),m=n(7981),u=n(9986),d=n(8382),s=n(9213),C=n(3488);(h||(h={})).getDetaultParams=function p(E,T,L){return o.t.getDefaultValues(E.getParams(T,L))};const a={name:"",label:"",description:"",factory:()=>R.Empty,getParams:()=>({}),defaultValues:{},defaultColorTheme:r.J.EmptyProvider,defaultSizeTheme:t.F.EmptyProvider,isApplicable:()=>!0};function S(f){return f.map(p=>[p.name,p.provider.label])}class D{get default(){return this._list[0]}get types(){return S(this._list)}constructor(){this._list=[],this._map=new Map,this._name=new Map}add(p){if(this._map.has(p.name))throw new Error(`${p.name} already registered.`);this._list.push({name:p.name,provider:p}),this._map.set(p.name,p),this._name.set(p,p.name)}getName(p){if(!this._name.has(p))throw new Error(`'${p.label}' is not a registered represenatation provider.`);return this._name.get(p)}remove(p){const E=p.name;this._list.splice(this._list.findIndex(L=>L.name===E),1);const T=this._map.get(E);T&&(this._map.delete(E),this._name.delete(T))}get(p){return this._map.get(p)||a}get list(){return this._list}getApplicableList(p){return this._list.filter(E=>E.provider.isApplicable(p))}getApplicableTypes(p){return S(this.getApplicableList(p))}clear(){this._list.length=0,this._map.clear(),this._name.clear()}}var R;!function(f){let p;var G;function E(){return{visible:!0,alphaFactor:1,pickable:!0,colorOnly:!1,syncManually:!1,transform:_.$I.identity(),overpaint:O.l.Empty,transparency:b.x.Empty,emissive:C.a.Empty,substance:s.l.Empty,clipping:m.l.Empty,themeStrength:{overpaint:1,transparency:1,emissive:1,substance:1},markerActions:i.sY.All}}function T(G,V){void 0!==V.visible&&(G.visible=V.visible),void 0!==V.alphaFactor&&(G.alphaFactor=V.alphaFactor),void 0!==V.pickable&&(G.pickable=V.pickable),void 0!==V.colorOnly&&(G.colorOnly=V.colorOnly),void 0!==V.overpaint&&(G.overpaint=V.overpaint),void 0!==V.transparency&&(G.transparency=V.transparency),void 0!==V.emissive&&(G.emissive=V.emissive),void 0!==V.substance&&(G.substance=V.substance),void 0!==V.clipping&&(G.clipping=V.clipping),void 0!==V.themeStrength&&(G.themeStrength=V.themeStrength),void 0!==V.syncManually&&(G.syncManually=V.syncManually),void 0!==V.transform&&_.$I.copy(G.transform,V.transform),void 0!==V.markerActions&&(G.markerActions=V.markerActions)}(G=p=f.Loci||(f.Loci={})).areEqual=function V(N,k){return N.repr===k.repr&&v.QN.areEqual(N.loci,k.loci)},G.isEmpty=function U(N){return v.QN.isEmpty(N.loci)},G.Empty={loci:v.BL},f.createState=E,f.updateState=T,f.StateBuilder={create:E,update:T},f.Empty={label:"",groupCount:0,renderObjects:[],geometryVersion:-1,props:{},params:{},updated:new y.B,state:E(),theme:A.S.createEmpty(),createOrUpdate:()=>c.YZ.constant("",void 0),setState:()=>{},setTheme:()=>{},getLoci:()=>v.BL,getAllLoci:()=>[],eachLocation:()=>{},mark:()=>!1,destroy:()=>{}};class L{constructor(){this.curr=new Set,this.next=new Set,this._version=-1}get version(){return this._version}add(V,U){this.next.add((0,d.m1)(V,U))}snapshot(){u.M.areEqual(this.curr,this.next)||(this._version+=1),[this.curr,this.next]=[this.next,this.curr],this.next.clear()}}f.GeometryState=L,f.createMulti=function w(G,V,U,N,k){let H=0;const $=new y.B,J=new L,W=N.create();let de,ye,j,te=A.S.createEmpty();const Z={},q=Object.keys(k).map((Y,ee)=>{Z[ee]=Y;const g=k[Y](V,U);return g.setState(W),g});return{label:G,updated:$,get groupCount(){let Y=0;if(ye){const{visuals:ee}=ye;for(let g=0,_e=q.length;g<_e;++g)(!ee||ee.includes(Z[g]))&&(Y+=q[g].groupCount)}return Y},get renderObjects(){const Y=[];if(ye){const{visuals:ee}=ye;for(let g=0,_e=q.length;g<_e;++g)(!ee||ee.includes(Z[g]))&&Y.push(...q[g].renderObjects)}return Y},get geometryVersion(){return J.version},get props(){return ye},get params(){return de},createOrUpdate:(Y={},ee)=>{ee&&ee!==j&&(de=U(V,ee),j=ee,ye||(ye=o.t.getDefaultValues(de)));const g=(0,M.m$)(Object.assign({},ye,Y),j);Object.assign(ye,Y,g);const{visuals:_e}=ye;return c.YZ.create(`Creating or updating '${G}' representation`,function(){var xe=(0,e.A)(function*(le){for(let Ae=0,Be=q.length;Ae{const{visuals:ee}=ye;for(let g=0,_e=q.length;g<_e;++g)if(!ee||ee.includes(Z[g])){const xe=q[g].getLoci(Y);if(!(0,v.$M)(xe))return xe}return v.BL},getAllLoci:()=>{const Y=[],{visuals:ee}=ye;for(let g=0,_e=q.length;g<_e;++g)(!ee||ee.includes(Z[g]))&&Y.push(...q[g].getAllLoci());return Y},eachLocation:Y=>{const{visuals:ee}=ye;for(let g=0,_e=q.length;g<_e;++g)(!ee||ee.includes(Z[g]))&&q[g].eachLocation(Y)},mark:(Y,ee)=>{let g=!1;for(let _e=0,xe=q.length;_e{N.update(W,Y);for(let ee=0,g=q.length;ee{te=Y;for(let ee=0,g=q.length;ee{const de=(0,M.m$)(Object.assign({},W,te));return Object.assign(W,te,de),c.YZ.create(`Updating '${G}' representation`,function(){var ye=(0,e.A)(function*(j){k.add(0,V.id),k.snapshot(),N.next(U++)});return function(j){return ye.apply(this,arguments)}}())},get state(){return H},get theme(){return $},getLoci:()=>v.BL,getAllLoci:()=>[],eachLocation:()=>{},mark:(te,de)=>!1,setState:te=>{void 0!==te.visible&&l.b.setVisibility(V,te.visible),void 0!==te.alphaFactor&&l.b.setAlphaFactor(V,te.alphaFactor),void 0!==te.pickable&&l.b.setPickable(V,te.pickable),void 0!==te.colorOnly&&l.b.setColorOnly(V,te.colorOnly),void 0!==te.themeStrength&&l.b.setThemeStrength(V,te.themeStrength),void 0!==te.transform&&l.b.setTransform(V,te.transform),f.updateState(H,te)},setTheme:()=>{},destroy(){}}}}(R||(R={}))},6600:(tn,Ue,n)=>{"use strict";n.d(Ue,{$:()=>A,w:()=>t});var e=n(8277),o=n(2745),r=n(4255);const t={customText:e.t.Text("",{label:"Text",description:"Override the label with custom value.",isEssential:!0}),textColor:e.t.Color(o.s.black,{isEssential:!0}),textSize:e.t.Numeric(.5,{min:.1,max:10,step:.1},{isEssential:!0})},A={...r.E.Params,...t,borderWidth:e.t.Numeric(.2,{min:0,max:.5,step:.01})}},1137:(tn,Ue,n)=>{"use strict";n.d(Ue,{K:()=>u});var e=n(467),o=n(8277),r=n(1758),t=n(2443),A=n(9136),y=n(1413),c=n(8353),i=n(1930),v=n(4824),O=n(3246),b=n(6825),_=n(261),M=n(7981),I=n(1965),l=n(9213),m=n(3488);function u(d,s,C,h){let a=0;const{webgl:S}=s,D=new y.B,R=new t.YL.GeometryState,f=(0,c.Q0)(),p=[],E=r.J1.create();let T,L,w,Q,G=i.S.createEmpty();function $(te){if(r.J1.update(E,te),void 0!==te.visible&&T&&T.setVisibility(te.visible&&(null===E.unitTransforms||E.unitTransforms.isIdentity)),void 0!==te.alphaFactor&&T&&T.setAlphaFactor(te.alphaFactor),void 0!==te.pickable&&T&&T.setPickable(te.pickable),void 0!==te.overpaint&&T){const de=_.l.remap(te.overpaint,L);T.setOverpaint(de,S)}if(void 0!==te.transparency&&T){const de=I.x.remap(te.transparency,L);T.setTransparency(de,S)}if(void 0!==te.emissive&&T){const de=m.a.remap(te.emissive,L);T.setEmissive(de,S)}if(void 0!==te.substance&&T){const de=l.l.remap(te.substance,L);T.setSubstance(de,S)}if(void 0!==te.clipping&&T){const de=M.l.remap(te.clipping,L);T.setClipping(de)}void 0!==te.themeStrength&&T&&T.setThemeStrength(te.themeStrength),void 0!==te.transform&&T&&T.setTransform(te.transform),void 0!==te.unitTransforms&&T&&T.setVisibility(E.visible&&(null===te.unitTransforms||te.unitTransforms.isIdentity))}return{label:d,get groupCount(){return T?T.groupCount:0},get props(){return Q},get params(){return w},get state(){return E},get theme(){return G},get geometryVersion(){return R.version},renderObjects:p,updated:D,createOrUpdate:function V(te={},de){return de&&de!==L&&(w=C(s,de),L=de,Q||(Q=o.t.getDefaultValues(w))),Q=Object.assign({},Q,te),v.YZ.create("Creating or updating ComplexRepresentation",function(){var ye=(0,e.A)(function*(j){var Z;let q=!1;T?null!==(Z=T.mustRecreate)&&void 0!==Z&&Z.call(T,L,Q,S)&&(T.destroy(),T=h(f,L,Q,S),q=!0):(T=h(f,L,Q,S),q=!0);const Y=T.createOrUpdate({webgl:S,runtime:j},G,Q,de);Y&&(yield Y),q&&$(E),p.length=0,T&&T.renderObject&&(p.push(T.renderObject),R.add(T.renderObject.id,T.geometryVersion)),R.snapshot(),a+=1,D.next(a)});return function(j){return ye.apply(this,arguments)}}())},setState:$,setTheme:function J(te){G=te},getLoci:function U(te){return T?T.getLoci(te):O.BL},getAllLoci:function N(){var te;return[A.oE.Loci(null!==(te=L.child)&&void 0!==te?te:L)]},eachLocation:function k(te){T?.eachLocation(te)},mark:function H(te,de){if(!L||!b.sY.is(E.markerActions,de))return!1;if(A.oE.isLoci(te)||A.iZ.Loci.is(te)||A.gn.isLoci(te)){if(!A.oE.areRootsEquivalent(te.structure,L))return!1;te=O.QN.remap(te,L),(A.oE.isLoci(te)||A.iZ.Loci.is(te)&&A.iZ.Loci.isWholeStructure(te))&&(te=O.FE)}else if(!(0,O.xc)(te)&&!(0,O.e4)(te))return!1;return!O.QN.isEmpty(te)&&!!T&&T.mark(te,de)},destroy:function W(){T&&T.destroy()}}}},3892:(tn,Ue,n)=>{"use strict";n.d(Ue,{EN:()=>E,Go:()=>k,Hj:()=>J,I:()=>H,KE:()=>Q,T9:()=>L,UM:()=>G,YD:()=>V,Yl:()=>$,hJ:()=>W,ip:()=>N,wA:()=>T,yd:()=>U,zo:()=>w});var e=n(5117),o=n(9136),r=n(542),t=n(1930),A=n(3596),y=n(8353),c=n(3246),i=n(3543),v=n(5589),O=n(274),b=n(9909),_=n(7684),M=n(2712),I=n(6825),l=n(9283),m=n(283),u=n(5315),d=n(4255),s=n(2832),C=n(9928),h=n(8013),a=n(5201),S=n(799),D=n(1372),R=n(8231);function p(te,de){const{defaultProps:ye,createGeometry:j,createLocationIterator:Z,getLoci:q,eachLocation:Y,setUpdateState:ee,mustRecreate:g,processValues:_e,dispose:xe}=te,{updateValues:le,updateBoundingSphere:Ae,updateRenderableState:Be,createPositionIterator:Ce}=te.geometryUtils,Re=v.rj.create(),ke={loci:c.BL,action:I.xi.None,status:-1};let we,Oe,Se,Ve,ne,be,ie,ue,Ne=Object.assign({},ye),K=t.S.createEmpty(),Te=-1;function ve(Ie){if(Re.createNew){if(ie=Z(Ve,Oe),!Ie)throw new Error("expected geometry to be given");we=function f(te,de,ye,j,Z,q){const{createValues:Y,createRenderableState:ee}=r.V.getUtils(de),_e=Y(de,(0,A.Zk)(),ye,j,Z),xe=ee(Z);return(0,y.o)(de.kind,_e,xe,q)}(0,Ie,ie,Se,Oe,de),ue=Ce(Ie,we.values)}else{if(!we)throw new Error("expected renderObject to be available");if(Re.updateTransform){ie=Z(Ve,Oe);const{instanceCount:Le,groupCount:nt}=ie;Oe.instanceGranularity?(0,h.Km)(Le,"instance",we.values):(0,h.Km)(Le*nt,"groupInstance",we.values)}if(Re.createGeometry){if(!Ie)throw new Error("expected geometry to be given");b.IQ.updateIfChanged(we.values.drawCount,r.V.getDrawCount(Ie)),b.IQ.updateIfChanged(we.values.uVertexCount,r.V.getVertexCount(Ie)),b.IQ.updateIfChanged(we.values.uGroupCount,r.V.getGroupCount(Ie))}(Re.updateTransform||Re.createGeometry)&&(Ae(we.values,Ie||be),ue=Ce(be,we.values)),Re.updateSize&&"uSize"in we.values&&(0,_.v3)(ie,Se.size,we.values),Re.updateColor&&(0,M.D1)(ie,ue,Se.color,we.values),le(we.values,Oe),Be(we.state,Oe)}Ne=Oe,K=Se,ne=Ve,Ie&&(be=Ie,Te+=1)}function ae(Ie,Le,nt){return function ce(Ie){return!!((0,c.xc)(Ie)||o.oE.isLoci(Ie)&&o.oE.areRootsEquivalent(Ie.structure,ne)||o.iZ.Loci.is(Ie)&&o.oE.areRootsEquivalent(Ie.structure,ne)&&o.iZ.Loci.isWholeStructure(Ie))}(Ie)?Le(i.IX.ofBounds(0,Ne.instanceGranularity?ie.instanceCount:ie.groupCount*ie.instanceCount)):Ne.instanceGranularity?function se(Ie,Le,nt){let je=!1;return!(!o.iZ.Loci.is(Ie)&&!o.gn.isLoci(Ie)||!o.oE.areEquivalent(Ie.structure,Le))&&(nt(i.IX.ofSingleton(0))&&(je=!0),je)}(Ie,ne,Le):Y(Ie,ne,Le,nt)}function ge(Ie){we&&_e?.(we.values,be,Ne,K,Ie.webgl)}return{get groupCount(){return ie?ie.count:0},get renderObject(){return ie&&ie.count?we:void 0},get geometryVersion(){return Te},createOrUpdate(Ie,Le,nt={},je){if(function re(Ie,Le,nt){if(!nt&&!ne)throw new Error("missing structure");if(Oe=Object.assign({},Ne,Le),Se=Ie,Ve=nt,v.rj.reset(Re),!we||!ne)return Re.createNew=!0,void(Re.createGeometry=!0);ee(Re,Oe,Ne,Se,K,Ve,ne),o.oE.areEquivalent(Ve,ne)||(Re.createGeometry=!0),o.oE.areHierarchiesEqual(Ve,ne)||(Re.updateTransform=!0,Re.createGeometry=!0),O.J.areEqual(Ie.color,K.color)||(Re.updateColor=!0),(0,b.bD)(Oe.unitKinds,Ne.unitKinds)||(Re.createGeometry=!0),ne.child!==Ve.child&&(Re.createGeometry=!0),Oe.instanceGranularity!==Ne.instanceGranularity&&(Re.updateTransform=!0),Re.updateSize&&!("uSize"in we.values)&&(Re.createGeometry=!0),Re.createGeometry&&(Re.updateColor=!0,Re.updateSize=!0)}(Le,nt,je||ne),Re.createGeometry){const Lt=j(Ie,Ve,Se,Oe,be);if((0,D.$X)(Lt))return Lt.then(Je=>{ve(Je),ge(Ie)});ve(Lt)}else ve();ge(Ie)},getLoci:Ie=>we?q(Ie,ne,we.id):c.BL,eachLocation(Ie){for(ie.reset();ie.hasNext;){const{location:Le,isSecondary:nt}=ie.move();Ie(Le,nt)}},mark:(Ie,Le)=>e.b.mark(we,Ie,Le,ae,ke),setVisibility(Ie){e.b.setVisibility(we,Ie)},setAlphaFactor(Ie){e.b.setAlphaFactor(we,Ie)},setPickable(Ie){e.b.setPickable(we,Ie)},setColorOnly(Ie){e.b.setColorOnly(we,Ie)},setTransform(Ie,Le){e.b.setTransform(we,Ie,Le)},setOverpaint(Ie,Le){e.b.setOverpaint(we,Ie,ae,!0,{geometry:be,props:Ne,webgl:Le})},setTransparency(Ie,Le){e.b.setTransparency(we,Ie,ae,!0,{geometry:be,props:Ne,webgl:Le})},setEmissive(Ie,Le){e.b.setEmissive(we,Ie,ae,!0,{geometry:be,props:Ne,webgl:Le})},setSubstance(Ie,Le){e.b.setSubstance(we,Ie,ae,!0,{geometry:be,props:Ne,webgl:Le})},setClipping(Ie){e.b.setClipping(we,Ie,ae,!0)},setThemeStrength(Ie){e.b.setThemeStrength(we,Ie)},destroy(){xe?.(be),we&&(we.state.disposed=!0,we=void 0)},mustRecreate:g}}const E={...a.nF,...a.a2};function T(te,de){return p({...te,setUpdateState:(ye,j,Z,q,Y,ee,g)=>{te.setUpdateState(ye,j,Z,q,Y,ee,g),s.F.areEqual(q.size,Y.size)||(ye.createGeometry=!0)},geometryUtils:l.e.Utils},de)}const L={...a.Op,...a.a2};function w(te,de){return p({...te,setUpdateState:(ye,j,Z,q,Y,ee,g)=>{te.setUpdateState(ye,j,Z,q,Y,ee,g),s.F.areEqual(q.size,Y.size)||(ye.updateSize=!0)},geometryUtils:R.v.Utils},de)}const Q={...a.DG,...a.a2};function G(te,de){return p({...te,setUpdateState:(ye,j,Z,q,Y,ee,g)=>{te.setUpdateState(ye,j,Z,q,Y,ee,g),s.F.areEqual(q.size,Y.size)||(ye.updateSize=!0)},geometryUtils:m.S.Utils},de)}const V={...a.Rb,...a.a2};function U(te,de){return p({...te,setUpdateState:(ye,j,Z,q,Y,ee,g)=>{te.setUpdateState(ye,j,Z,q,Y,ee,g),s.F.areEqual(q.size,Y.size)||(ye.updateSize=!0)},geometryUtils:u.q.Utils},de)}const N={...a.xl,...a.a2};function k(te,de){return p({...te,setUpdateState:(ye,j,Z,q,Y,ee,g)=>{te.setUpdateState(ye,j,Z,q,Y,ee,g),s.F.areEqual(q.size,Y.size)||(ye.updateSize=!0),j.background!==Z.background&&(ye.createGeometry=!0),j.backgroundMargin!==Z.backgroundMargin&&(ye.createGeometry=!0),j.tether!==Z.tether&&(ye.createGeometry=!0),j.tetherLength!==Z.tetherLength&&(ye.createGeometry=!0),j.tetherBaseWidth!==Z.tetherBaseWidth&&(ye.createGeometry=!0),j.attachment!==Z.attachment&&(ye.createGeometry=!0),j.fontFamily!==Z.fontFamily&&(ye.createGeometry=!0),j.fontQuality!==Z.fontQuality&&(ye.createGeometry=!0),j.fontStyle!==Z.fontStyle&&(ye.createGeometry=!0),j.fontVariant!==Z.fontVariant&&(ye.createGeometry=!0),j.fontWeight!==Z.fontWeight&&(ye.createGeometry=!0)},geometryUtils:d.E.Utils},de)}const H={...a.Vv,...a.a2};function $(te,de){return p({...te,setUpdateState:(ye,j,Z,q,Y,ee,g)=>{te.setUpdateState(ye,j,Z,q,Y,ee,g),s.F.areEqual(q.size,Y.size)||(ye.createGeometry=!0)},geometryUtils:C.E.Utils},de)}const J={...a.MQ,...a.a2};function W(te,de){return p({...te,setUpdateState:(ye,j,Z,q,Y,ee,g)=>{te.setUpdateState(ye,j,Z,q,Y,ee,g),s.F.areEqual(q.size,Y.size)||(ye.createGeometry=!0)},geometryUtils:S.X.Utils},de)}},5201:(tn,Ue,n)=>{"use strict";n.d(Ue,{DG:()=>l,MQ:()=>C,Op:()=>I,R8:()=>b,Rb:()=>u,Vv:()=>s,a2:()=>_,fy:()=>m,nF:()=>M,xl:()=>d});var e=n(9928),o=n(5315),r=n(9283),t=n(5299),A=n(8231),y=n(283),c=n(4255),i=n(799),v=n(8277),O=n(2556);function b(h){return v.t.MultiSelect(h,O.hi,{description:"For which kinds of units/chains to show the representation visuals."})}const _={unitKinds:b(["atomic","spheres"]),includeParent:v.t.Boolean(!1,{isHidden:!0})},M={...r.e.Params},I={...A.v.Params},l={...y.S.Params},m={...t.O.Params},u={...o.q.Params},d={...c.E.Params},s={...e.E.Params},C={...i.X.Params}},1758:(tn,Ue,n)=>{"use strict";n.d(Ue,{GT:()=>c,J1:()=>y,Kp:()=>o.K,TP:()=>t.T});var e=n(2443),o=n(1137),t=(n(3892),n(8688));n(2741);const y={create:()=>({...e.YL.createState(),unitTransforms:null,unitTransformsVersion:-1}),update:(i,v)=>{e.YL.updateState(i,v),void 0!==v.unitTransforms&&(i.unitTransforms=v.unitTransforms)}};function c(i){return i}},8688:(tn,Ue,n)=>{"use strict";n.d(Ue,{T:()=>s});var e=n(467),o=n(8277),r=n(1758),t=n(2443),A=n(9136),y=n(1413),c=n(8353),i=n(1930),v=n(4824),O=n(3246),b=n(6825),_=n(261),M=n(1965),I=n(4369),l=n(3543),m=n(7981),u=n(9213),d=n(3488);function s(C,h,a,S){let D=0;const{webgl:R}=h,f=new y.B,p=(0,c.Q0)(),E=[],T=new t.YL.GeometryState,L=r.J1.create();let Q,G,V,U,w=new Map,N=i.S.createEmpty();function te(Z,q,Y){const{visible:ee,alphaFactor:g,pickable:_e,overpaint:xe,transparency:le,emissive:Ae,substance:Be,clipping:Ce,themeStrength:Re,transform:ke,unitTransforms:we}=Y;void 0!==ee&&Z.setVisibility(ee),void 0!==g&&Z.setAlphaFactor(g),void 0!==_e&&Z.setPickable(_e),void 0!==xe&&Z.setOverpaint(xe,R),void 0!==le&&Z.setTransparency(le,R),void 0!==Ae&&Z.setEmissive(Ae,R),void 0!==Be&&Z.setSubstance(Be,R),void 0!==Ce&&Z.setClipping(Ce),void 0!==Re&&Z.setThemeStrength(Re),void 0!==ke&&(ke!==L.transform||!I.$I.areEqual(ke,L.transform,I.p8))&&Z.setTransform(ke),void 0!==we&&(we?Z.setTransform(void 0,we.getSymmetryGroupTransforms(q)):we!==L.unitTransforms&&Z.setTransform(void 0,null))}return{label:C,get groupCount(){let Z=0;return w.forEach(({visual:q})=>{q.renderObject&&(Z+=q.groupCount)}),Z},get geometryVersion(){return T.version},get props(){return U},get params(){return V},get state(){return L},get theme(){return N},renderObjects:E,updated:f,createOrUpdate:function k(Z={},q){return q&&q!==Q&&(V=a(h,q),U||(U=o.t.getDefaultValues(V))),U=Object.assign({},U,Z),v.YZ.create("Creating or updating UnitsRepresentation",function(){var Y=(0,e.A)(function*(ee){var g,_e,xe;if(!Q&&!q)throw new Error("missing structure");if(q&&!Q){G=q.unitSymmetryGroups;for(let le=0;lele.push(Ae));for(let Ae=0,Be=le.length;Ae{Ae.destroy()})}E.length=0,w.forEach(({visual:le})=>{le.renderObject&&(E.push(le.renderObject),T.add(le.renderObject.id,le.geometryVersion))}),T.snapshot(),q&&(Q=q),f.next(D++)});return function(ee){return Y.apply(this,arguments)}}())},setState:function de(Z){const{visible:q,alphaFactor:Y,pickable:ee,overpaint:g,transparency:_e,emissive:xe,substance:le,clipping:Ae,themeStrength:Be,transform:Ce,unitTransforms:Re,syncManually:ke,markerActions:we}=Z,Oe={};void 0!==q&&(Oe.visible=q),void 0!==Y&&(Oe.alphaFactor=Y),void 0!==ee&&(Oe.pickable=ee),void 0!==g&&Q&&(Oe.overpaint=_.l.remap(g,Q)),void 0!==_e&&Q&&(Oe.transparency=M.x.remap(_e,Q)),void 0!==xe&&Q&&(Oe.emissive=d.a.remap(xe,Q)),void 0!==le&&Q&&(Oe.substance=u.l.remap(le,Q)),void 0!==Ae&&Q&&(Oe.clipping=m.l.remap(Ae,Q)),void 0!==Be&&(Oe.themeStrength=Be),void 0!==Ce&&!I.$I.areEqual(Ce,L.transform,I.p8)&&(Oe.transform=Ce),(Re!==L.unitTransforms||Re?.version!==L.unitTransformsVersion)&&(Oe.unitTransforms=Re,L.unitTransformsVersion=Re?Re?.version:-1),void 0!==ke&&(Oe.syncManually=ke),void 0!==we&&(Oe.markerActions=we),w.forEach(({visual:Se,group:Ve})=>te(Se,Ve,Oe)),r.J1.update(L,Oe)},setTheme:function ye(Z){N=Z},getLoci:function H(Z){let q=O.BL;return w.forEach(({visual:Y})=>{const ee=Y.getLoci(Z);(0,O.$M)(ee)||(q=ee)}),q},getAllLoci:function J(){var Z;return[A.oE.Loci(null!==(Z=Q.child)&&void 0!==Z?Z:Q)]},eachLocation:function $(Z){w.forEach(({visual:q})=>{q.eachLocation(Z)})},mark:function W(Z,q){if(!Q||!b.sY.is(L.markerActions,q))return!1;if(A.oE.isLoci(Z)||A.iZ.Loci.is(Z)||A.gn.isLoci(Z)){if(!A.oE.areRootsEquivalent(Z.structure,Q))return!1;Z=O.QN.remap(Z,Q),(A.oE.isLoci(Z)||A.iZ.Loci.is(Z)&&A.iZ.Loci.isWholeStructure(Z))&&(Z=O.FE)}else if(!(0,O.xc)(Z)&&!(0,O.e4)(Z))return!1;if(O.QN.isEmpty(Z))return!1;let Y=!1;return w.forEach(({visual:ee})=>{Y=ee.mark(Z,q)||Y}),Y},destroy:function j(){w.forEach(({visual:Z})=>Z.destroy()),w.clear()}}}},2741:(tn,Ue,n)=>{"use strict";n.d(Ue,{Ny:()=>W,O$:()=>ye,PJ:()=>U,Pi:()=>te,Pv:()=>L,Te:()=>T,Vb:()=>V,fm:()=>N,ii:()=>de,lm:()=>G,qg:()=>w,uF:()=>Q,zK:()=>H,zj:()=>k});var e=n(9136),o=n(5117),r=n(542),t=n(1930),A=n(2556),y=n(8353),c=n(3246),i=n(3543),v=n(5589),O=n(274),b=n(8013),_=n(6825),M=n(9909),I=n(7684),l=n(2712),m=n(9283),u=n(2832),d=n(8231),s=n(283),C=n(5299),h=n(5315),S=(n(4255),n(9928)),D=n(799),R=n(5201),f=n(1372);function E(j,Z){const{defaultProps:q,createGeometry:Y,createLocationIterator:ee,getLoci:g,eachLocation:_e,setUpdateState:xe,mustRecreate:le,processValues:Ae,dispose:Be}=j,{createEmpty:Ce,updateValues:Re,updateBoundingSphere:ke,updateRenderableState:we,createPositionIterator:Oe}=j.geometryUtils,Se=v.rj.create(),Ve={loci:c.BL,action:_.xi.None,status:-1};let Ne,be,Te,ie,ue,re,ce,se,K=Object.assign({},q),ne=t.S.createEmpty(),ve=-1;function ge(Je){if(Se.createNew){if(ce=ee(be,K),!Je)throw new Error("expected geometry to be given");Ne=function p(j,Z,q,Y,ee,g){const{createValues:_e,createRenderableState:xe}=r.V.getUtils(Z),Ae=_e(Z,(0,A.yS)(j,ee.includeParent,Z.boundingSphere,ee.cellSize,ee.batchSize),q,Y,ee),Be=xe(ee);return(0,y.o)(Z.kind,Ae,Be,g)}(be,Je,ce,ne,K,Z),se=Oe(Je,Ne.values)}else{if(!Ne)throw new Error("expected renderObject to be available");if(Se.updateTransform){ce=ee(be,K);const{instanceCount:en,groupCount:Bt}=ce;K.instanceGranularity?(0,b.Km)(en,"instance",Ne.values):(0,b.Km)(en*Bt,"groupInstance",Ne.values)}if(Se.updateMatrix&&((0,A.yS)(be,K.includeParent,Ne.values.invariantBoundingSphere.ref.value,K.cellSize,K.batchSize,Ne.values),"lodLevels"in Ne.values&&M.IQ.update(Ne.values.lodLevels,Ne.values.lodLevels.ref.value)),Se.createGeometry){if(!Je)throw new Error("expected geometry to be given");M.IQ.updateIfChanged(Ne.values.drawCount,r.V.getDrawCount(Je)),M.IQ.updateIfChanged(Ne.values.uVertexCount,r.V.getVertexCount(Je)),M.IQ.updateIfChanged(Ne.values.uGroupCount,r.V.getGroupCount(Je))}(Se.updateTransform||Se.createGeometry)&&(ke(Ne.values,Je||re),se=Oe(Je||re,Ne.values)),Se.updateSize&&"uSize"in Ne.values&&(0,I.v3)(ce,ne.size,Ne.values),Se.updateColor&&(0,l.D1)(ce,se,ne.color,Ne.values),Re(Ne.values,K),we(Ne.state,K)}Te=K,ie=ne,ue=be,Je&&(re=Je,ve+=1)}function je(Je,en,Bt){return function Le(Je){return!!((0,c.xc)(Je)||e.oE.isLoci(Je)&&e.oE.areRootsEquivalent(Je.structure,ue.structure)||e.iZ.Loci.is(Je)&&e.oE.areRootsEquivalent(Je.structure,ue.structure)&&e.iZ.Loci.isWholeStructure(Je))}(Je)?en(i.IX.ofBounds(0,Te.instanceGranularity?ce.instanceCount:ce.groupCount*ce.instanceCount)):Te.instanceGranularity?function nt(Je,en,Bt){let pn=!1;if(e.gn.isLoci(Je)){const{structure:$e,group:mt}=en;if(!e.oE.areEquivalent(Je.structure,$e))return!1;for(const _t of Je.bonds){if(_t.aUnit!==_t.bUnit)continue;const Me=mt.unitIndexMap.get(_t.aUnit.id);void 0!==Me&&Bt(i.IX.ofSingleton(Me))&&(pn=!0)}}else if(e.iZ.Loci.is(Je)){const{structure:$e,group:mt}=en;if(!e.oE.areEquivalent(Je.structure,$e))return!1;for(const _t of Je.elements){const Me=mt.unitIndexMap.get(_t.unit.id);void 0!==Me&&Bt(i.IX.ofSingleton(Me))&&(pn=!0)}}return pn}(Je,ue,en):_e(Je,ue,en,Bt)}function Lt(Je){Ne&&Ae?.(Ne.values,re,Te,ie,Je.webgl)}return{get groupCount(){return ce?ce.count:0},get renderObject(){return ce&&ce.count?Ne:void 0},get geometryVersion(){return ve},createOrUpdate(Je,en,Bt,pn){if(function ae(Je,en,Bt){if(!Bt&&!ue)throw new Error("missing structureGroup");if(K=en,ne=Je,be=Bt,v.rj.reset(Se),!Ne||!ue)return Se.createNew=!0,void(Se.createGeometry=!0);xe(Se,K,Te,ne,ie,be,ue),e.oE.areHierarchiesEqual(ue.structure,be.structure)||(Se.updateTransform=!0,Se.updateColor=!0,Se.updateSize=!0),O.J.areEqual(ne.color,ie.color)||(Se.updateColor=!0),ue.structure.child!==be.structure.child&&(Se.createGeometry=!0),(K.instanceGranularity!==Te.instanceGranularity||K.cellSize!==Te.cellSize||K.batchSize!==Te.batchSize)&&(Se.updateTransform=!0),(0,M.bD)(K.unitKinds,Te.unitKinds)||(Se.createGeometry=!0),be.group.transformHash!==ue.group.transformHash&&(be.group.units.length!==ue.group.units.length||Se.updateColor?Se.updateTransform=!0:Se.updateMatrix=!0);const pn=be.group.units[0],$e=ue.group.units[0];e.Nf.areOperatorsEqual(pn,$e)||(Se.updateTransform=!0),e.Nf.areConformationsEqual(pn,$e)||(Se.createGeometry=!0),Se.updateTransform&&(Se.updateMatrix=!0),Se.updateSize&&!("uSize"in Ne.values)&&(Se.createGeometry=!0),(Se.createGeometry||Se.updateTransform)&&(ue.structure.hashCode!==be.structure.hashCode&&(Se.updateColor=!0,Se.updateSize=!0),(ne.color.granularity.startsWith("vertex")||Ne.values.dColorType.ref.value.startsWith("vertex")||ne.color.granularity.startsWith("volume")||Ne.values.dColorType.ref.value.startsWith("volume"))&&(Se.updateColor=!0))}(en,Bt,pn||ue),Se.createGeometry){const $e=function Ie(Je,en,Bt,pn,$e,mt){return(0,A.AR)($e.unitKinds,en)?Y(Je,en,Bt,pn,$e,mt):Ce(mt)}(Je,be.group.units[0],be.structure,ne,K,re);if((0,f.$X)($e))return $e.then(mt=>{ge(mt),Lt(Je)});ge($e)}else ge();Lt(Je)},getLoci:Je=>Ne?g(Je,ue,Ne.id):c.BL,eachLocation(Je){for(ce.reset();ce.hasNext;){const{location:en,isSecondary:Bt}=ce.move();Je(en,Bt)}},mark(Je,en){let Bt=!0;if(e.iZ.Loci.is(Je)){Bt=!1;const{invariantId:pn}=ue.group.units[0];for(const $e of Je.elements)if($e.unit.invariantId===pn){Bt=!0;break}}return!!Bt&&o.b.mark(Ne,Je,en,je,Ve)},setVisibility(Je){o.b.setVisibility(Ne,Je)},setAlphaFactor(Je){o.b.setAlphaFactor(Ne,Je)},setPickable(Je){o.b.setPickable(Ne,Je)},setColorOnly(Je){o.b.setColorOnly(Ne,Je)},setTransform(Je,en){o.b.setTransform(Ne,Je,en)},setOverpaint(Je,en){o.b.setOverpaint(Ne,Je,je,!0,{geometry:re,props:Te,webgl:en})},setTransparency(Je,en){o.b.setTransparency(Ne,Je,je,!0,{geometry:re,props:Te,webgl:en})},setEmissive(Je,en){o.b.setEmissive(Ne,Je,je,!0,{geometry:re,props:Te,webgl:en})},setSubstance(Je,en){o.b.setSubstance(Ne,Je,je,!0,{geometry:re,props:Te,webgl:en})},setClipping(Je){o.b.setClipping(Ne,Je,je,!0)},setThemeStrength(Je){o.b.setThemeStrength(Ne,Je)},destroy(){Be?.(re),Ne&&(Ne.state.disposed=!0,Ne=void 0)},mustRecreate:le}}const T={...R.nF,...R.a2};function L(j,Z){return E({...j,setUpdateState:(q,Y,ee,g,_e,xe,le)=>{j.setUpdateState(q,Y,ee,g,_e,xe,le),u.F.areEqual(g.size,_e.size)||(q.createGeometry=!0)},geometryUtils:m.e.Utils},Z)}const w={...R.Op,...R.a2};function Q(j,Z){return E({...j,setUpdateState:(q,Y,ee,g,_e,xe,le)=>{j.setUpdateState(q,Y,ee,g,_e,xe,le),u.F.areEqual(g.size,_e.size)||(q.updateSize=!0)},geometryUtils:d.v.Utils},Z)}const G={...R.DG,...R.a2};function V(j,Z){return E({...j,setUpdateState:(q,Y,ee,g,_e,xe,le)=>{j.setUpdateState(q,Y,ee,g,_e,xe,le),u.F.areEqual(g.size,_e.size)||(q.updateSize=!0)},geometryUtils:s.S.Utils},Z)}const U={...R.fy,...R.a2};function N(j,Z){return E({...j,setUpdateState:(q,Y,ee,g,_e,xe,le)=>{j.setUpdateState(q,Y,ee,g,_e,xe,le),u.F.areEqual(g.size,_e.size)||(q.updateSize=!0)},geometryUtils:C.O.Utils},Z)}const k={...R.Rb,...R.a2};function H(j,Z){return E({...j,setUpdateState:(q,Y,ee,g,_e,xe,le)=>{j.setUpdateState(q,Y,ee,g,_e,xe,le),u.F.areEqual(g.size,_e.size)||(q.updateSize=!0)},geometryUtils:h.q.Utils},Z)}const W={...R.Vv,...R.a2};function te(j,Z){return E({...j,setUpdateState:(q,Y,ee,g,_e,xe,le)=>{j.setUpdateState(q,Y,ee,g,_e,xe,le),u.F.areEqual(g.size,_e.size)||(q.createGeometry=!0)},geometryUtils:S.E.Utils},Z)}const de={...R.MQ,...R.a2};function ye(j,Z){return E({...j,setUpdateState:(q,Y,ee,g,_e,xe,le)=>{j.setUpdateState(q,Y,ee,g,_e,xe,le),u.F.areEqual(g.size,_e.size)||(q.createGeometry=!0)},geometryUtils:D.X.Utils},Z)}},2556:(tn,Ue,n)=>{"use strict";n.d(Ue,{$J:()=>D,AR:()=>s,Dt:()=>h,FC:()=>a,LT:()=>T,R$:()=>G,UQ:()=>V,hi:()=>d,nR:()=>M,oc:()=>L,rS:()=>l,uh:()=>I,v3:()=>Q,yS:()=>m});var e=n(9136),o=n(4369),r=n(3596),t=n(3543),A=n(3246),y=n(2008),c=n(6115),i=n(8277),v=n(9535),O=n(5384),b=n(6948);const _=o.$I.toArray;function M(U,N,k){const{elements:H,model:$}=N;if(-1!==t.CD.indexOf(H,k)){const{index:J,offsets:W}=$.atomicHierarchy.residueAtomSegments,te=J[k],de=[];for(let j=W[te],Z=W[te+1];jW.unitMap.has(Z.id)):U.group.units,de=te.length,ye=16*de,j=J&&J.aTransform.ref.value.length>=ye?J.aTransform.ref.value:new Float32Array(ye);for(let Z=0;Zde-te);const $=Math.floor(Math.cbrt(k)*Math.cbrt(k)),J=H[0]*H[1];return{area:J,areaCells:Math.ceil(J/(N*N)),maxAreaCells:$}}function a(U,N,k=C){const{area:H,areaCells:$,maxAreaCells:J}=h(U,N.resolution,k),W=$>J?Math.sqrt(H/J):N.resolution;return{...N,resolution:W}}const D={ignoreHydrogens:i.t.Boolean(!1,{description:"Whether or not to include hydrogen atoms in the surface calculation."}),ignoreHydrogensVariant:i.t.Select("all",i.t.arrayToOptions(["all","non-polar"])),traceOnly:i.t.Boolean(!1,{description:"Whether or not to only use trace atoms in the surface calculation."}),includeParent:i.t.Boolean(!1,{description:"Include elements of the parent structure in surface calculation to get a surface patch of the current structure."})},f=(i.t.getDefaultValues(D),(0,o.eB)());function p(U,N,k,H){return o.eB.squaredDistance(o.eB.set(f,U,N,k),H)}function T(U,N,k,H){const{ignoreHydrogens:$,ignoreHydrogensVariant:J,traceOnly:W,includeParent:te}=H,de=te?U.root.unitMap.get(N.id):N,ye=te&&de!==N,{x:j,y:Z,z:q}=function S(U){switch(U.kind){case 0:return U.model.atomicConformation;case 1:return U.model.coarseConformation.spheres;case 2:return U.model.coarseConformation.gaussians}}(de),{elements:Y}=de,{center:ee,radius:g}=N.boundary.sphere,xe=(g+11)*(g+11);let le,Ae;if($||W||ye){const we=[],Oe=[];for(let Se=0,Ve=Y.length;Sexe||(we.push(Ne),Oe.push(Se))}le=t.SortedArray.ofSortedArray(we),Ae=Oe}else le=Y,Ae=(0,c.WE)(new Int32Array(le.length));te&&de!==N&&function E(U,N,k){let H=0;const $=N.length;for(let J=0,W=k.length;J(Re.element=we,k.size(Re))}}function L(U,N,k){const{ignoreHydrogens:H,ignoreHydrogensVariant:$,traceOnly:J,includeParent:W}=k,te=W&&!!U.parent,de=e.iZ.Location.create(U.root),{center:ye,radius:j}=U.boundary.sphere,q=(j+11)*(j+11);let Y,ee,g,_e,xe,le;if(H||J||te){const{getSerialIndex:Re}=U.serialMapping,ke=te?U.root.units:U.units,we=[],Oe=[],Se=[],Ve=[],Ne=[];for(let K=0,ne=ke.length;Kq||(we.push(se),Oe.push(ae),Se.push(ge),de.element=ce,Ve.push(N.size(de)),te?-1===(ue?t.SortedArray.indexOf(ue.elements,ce):-1)?Ne.push(-2):Ne.push(Re(ue,ce)):Ne.push(Re(be,ce)))}}Y=we,ee=Oe,g=Se,_e=Ve,xe=Ne,le=t.CD.ofRange(0,xe.length)}else{const{elementCount:Re}=U,ke=new Float32Array(Re),we=new Float32Array(Re),Oe=new Float32Array(Re),Se=new Float32Array(Re);for(let Ve=0,Ne=0,K=U.units.length;Ve_e[Re]}}const w=y.K9.H;function Q(U,N,k,H){if(e.Nf.isCoarse(N)||N.model.atomicHierarchy.derived.atom.atomicNumber[k]!==w)return!1;if("all"===H)return!0;const $=(0,b.GE)(U,N,t.SortedArray.indexOf(N.elements,k));return!!($&&"polar"===H||!$&&"non-polar"===H)}function G(U,N){return U[N]===w}function V(U,N){if(e.Nf.isCoarse(U))return!0;const k=U.model.atomicHierarchy.atoms.label_atom_id.value(N);return"CA"===k||"BB"===k||"P"===k}},377:(tn,Ue,n)=>{"use strict";n.d(Ue,{C1:()=>f,Lr:()=>_,T9:()=>I,Yz:()=>E,rm:()=>p});var e=n(4369),o=n(8277),r=n(9283),t=n(573),A=n(2802),y=n(5019),c=n(5315),i=n(5821),v=n(283),O=n(1989),b=n(8184);const _={linkScale:o.t.Numeric(.45,{min:0,max:1,step:.01}),linkSpacing:o.t.Numeric(1,{min:0,max:2,step:.01}),linkCap:o.t.Boolean(!1),aromaticScale:o.t.Numeric(.3,{min:0,max:1,step:.01}),aromaticSpacing:o.t.Numeric(1.5,{min:0,max:3,step:.01}),aromaticDashCount:o.t.Numeric(2,{min:1,max:6,step:1}),dashCount:o.t.Numeric(4,{min:0,max:10,step:1}),dashScale:o.t.Numeric(.8,{min:0,max:2,step:.1}),dashCap:o.t.Boolean(!0),stubCap:o.t.Boolean(!0),radialSegments:o.t.Numeric(16,{min:2,max:56,step:2},y.iy.CustomQualityParamInfo),colorMode:o.t.Select("default",o.t.arrayToOptions(["default","interpolate"]),y.iy.ShadingCategory)},I=(o.t.getDefaultValues(_),{linkScale:o.t.Numeric(.5,{min:0,max:1,step:.1}),linkSpacing:o.t.Numeric(.1,{min:0,max:2,step:.01}),aromaticDashCount:o.t.Numeric(2,{min:1,max:6,step:1}),dashCount:o.t.Numeric(4,{min:0,max:10,step:1})}),m=(o.t.getDefaultValues(I),(0,e.eB)()),u=(0,e.eB)(),d=(0,e.eB)(),s=e.eB.create(0,1,0);function C(T,L,w,Q){e.eB.normalize(u,e.eB.sub(u,L,w)),null!==Q?e.eB.sub(d,L,Q):e.eB.copy(d,L),e.eB.normalize(d,d);let G=e.eB.dot(u,d);return 1-Math.abs(G)<1e-5&&(e.eB.set(d,1,0,0),G=e.eB.dot(u,d),1-Math.abs(G)<1e-5&&(e.eB.set(d,0,1,0),G=e.eB.dot(u,d))),e.eB.setMagnitude(u,u,G),e.eB.sub(d,d,u),e.eB.normalize(T,d)}const h=e.eB.scale,a=e.eB.add,S=e.eB.sub,D=e.eB.setMagnitude,R=e.eB.dot;function f(T,L,w,Q){const{linkCount:G,referencePosition:V,position:U,style:N,radius:k,ignore:H,stub:$}=L;if(!G)return{mesh:r.e.createEmpty(Q)};const{linkScale:J,linkSpacing:W,radialSegments:te,linkCap:de,aromaticScale:ye,aromaticSpacing:j,aromaticDashCount:Z,dashCount:q,dashScale:Y,dashCap:ee,stubCap:g}=w,_e=2*te*G*2,xe=t.P.createState(_e,_e/4,Q),le=(0,e.eB)(),Ae=(0,e.eB)(),Be=(0,e.eB)(),Ce=(0,e.eB)();let Re=0;const ke={radiusTop:1,radiusBottom:1,radialSegments:te,topCap:de,bottomCap:de};for(let Se=0,Ve=G;Se0,K=k(Se),ne=N?N(Se):0,be=g&&!!$&&$(Se),[Te,ie]=Ne?[be,de]:[de,be];if(xe.currentGroup=Se,0===ne)ke.radiusTop=ke.radiusBottom=K,ke.topCap=Te,ke.bottomCap=ie,(0,A.y9)(xe,le,Ae,.5,ke);else if(1===ne)ke.radiusTop=ke.radiusBottom=K*Y,ke.topCap=ke.bottomCap=ee,(0,A.GH)(xe,le,Ae,.5,q,be,ke);else if(2===ne||3===ne||4===ne||5===ne||7===ne||8===ne){const ue=2===ne||3===ne?2:4===ne||5===ne?3:1.5,re=K*(J/(.5*ue)),ve=(K-re)*W;if(C(Be,le,Ae,V?V(Se):null),ke.topCap=Te,ke.bottomCap=ie,7===ne||8===ne){ke.radiusTop=ke.radiusBottom=K,(0,A.y9)(xe,le,Ae,.5,ke);const ce=K+ye*K+ye*K*j;D(m,S(m,Ae,le),.5*K),a(le,le,m),S(Ae,Ae,m),ke.radiusTop=ke.radiusBottom=K*ye,ke.topCap=ke.bottomCap=ee,D(Be,Be,ce),S(le,le,Be),S(Ae,Ae,Be),(0,A.GH)(xe,le,Ae,.5,Z,be,ke),8===ne&&(D(Be,Be,2*ce),a(le,le,Be),a(Ae,Ae,Be),(0,A.GH)(xe,le,Ae,.5,Z,be,ke))}else if(3===ne||5===ne){const ce=K+re+J*K*W;D(Be,Be,ce),ke.radiusTop=ke.radiusBottom=K,(0,A.y9)(xe,le,Ae,.5,ke),h(m,m,W*J*.2),a(le,le,m),S(Ae,Ae,m),ke.radiusTop=ke.radiusBottom=re,ke.topCap=Ne?be:ee,ke.bottomCap=Ne?ee:be,D(Be,Be,ce),S(le,le,Be),S(Ae,Ae,Be),(0,A.y9)(xe,le,Ae,.5,ke),3===ue&&(D(Be,Be,2*ce),a(le,le,Be),a(Ae,Ae,Be),(0,A.y9)(xe,le,Ae,.5,ke))}else D(Be,Be,ve),ke.radiusTop=ke.radiusBottom=re,3===ue&&(0,A.y9)(xe,le,Ae,.5,ke),(0,A.Jz)(xe,le,Ae,.5,Be,ke)}else 6===ne&&(h(m,m,.475),a(le,le,m),S(Ae,Ae,m),ke.radiusTop=ke.radiusBottom=K,ke.topCap=Te,ke.bottomCap=ie,(0,A.y9)(xe,le,Ae,.5,ke))}const we=Q?b.f.clone(Q.boundingSphere):void 0,Oe=t.P.getMesh(xe);return 0===Re?{mesh:Oe}:(e.eB.scale(Ce,Ce,1/Re),we&&e.eB.distance(Ce,we.center)/we.radius<.1?{mesh:Oe,boundingSphere:we}:{mesh:Oe})}function p(T,L,w,Q){const{linkCount:G,referencePosition:V,position:U,style:N,radius:k,ignore:H,stub:$}=L;if(!G)return{cylinders:v.S.createEmpty(Q)};const{linkScale:J,linkSpacing:W,linkCap:te,aromaticScale:de,aromaticSpacing:ye,aromaticDashCount:j,dashCount:Z,dashScale:q,dashCap:Y,stubCap:ee,colorMode:g}=w,_e="interpolate"===g,xe=!0===_e?3:2,le=2*G,Ae=O.h.create(le,le/4,Q),Be=(0,e.eB)(),Ce=(0,e.eB)(),Re=(0,e.eB)(),ke=(0,e.eB)(),we=(0,e.eB)();let Oe=0;for(let Ne=0,K=G;Ne{"use strict";n.d(Ue,{V8:()=>i,m$:()=>O,rj:()=>y});var y,b,e=n(9909),o=n(9136),r=n(5384),t=n(9651),A=n(6853);(b=y||(y={})).create=function _(){return{updateTransform:!1,updateMatrix:!1,updateColor:!1,updateSize:!1,createGeometry:!1,createNew:!1,info:{}}},b.reset=function M(I){I.updateTransform=!1,I.updateMatrix=!1,I.updateColor=!1,I.updateSize=!1,I.createGeometry=!1,I.createNew=!1};const c={lowestElementCount:1e6,lowerElementCount:5e5,lowElementCount:1e5,mediumElementCount:2e4,highElementCount:2e3,coarseGrainedFactor:10,elementCountFactor:1};function i(b,_={}){const M={...c,..._};let I=b.elementCount*M.elementCountFactor;return(b.isCoarseGrained||b.isCoarse)&&(I*=M.coarseGrainedFactor),I>M.lowestElementCount?"lowest":I>M.lowerElementCount?"lower":I>M.lowElementCount?"low":I>M.mediumElementCount?"medium":I>M.highElementCount?"high":"higher"}function O(b,_){let M=(0,e.NT)(b.quality,"auto"),I=(0,e.NT)(b.detail,1),l=(0,e.NT)(b.radialSegments,12),m=(0,e.NT)(b.linearSegments,8),u=(0,e.NT)(b.resolution,2),d=(0,e.NT)(b.probePositions,12),s=(0,e.NT)(b.doubleSided,!0),C=0;if("auto"===M)if(_ instanceof o.oE)M=i(_.root),C=function v(b){if(1===b.root.models.length){const _=t.i.Provider.get(b.root.model);if(_&&"P 1"===_.spacegroup.name&&!r.O8.isZero(_.spacegroup.cell))return _.spacegroup.cell.volume}return r.DJ.volume(b.root.boundary.box)}(_);else if(A.f.is(_)){const[h,a,S]=_.grid.cells.space.dimensions;C=h*a*S,M=C<1e7?"medium":"low"}switch(M){case"highest":I=3,l=36,m=18,u=.1,d=72,s=!0;break;case"higher":I=3,l=28,m=14,u=.3,d=48,s=!0;break;case"high":I=2,l=20,m=10,u=.5,d=36,s=!0;break;case"medium":I=1,l=12,m=8,u=.8,d=24,s=!0;break;case"low":I=0,l=8,m=3,u=1.3,d=24,s=!1;break;case"lower":I=0,l=4,m=2,u=3,d=12,s=!1;break;case"lowest":I=0,l=2,m=1,u=8,d=12,s=!1}return u=Math.max(u,C/5e8),u=Math.min(u,20),"off"===b.transparentBackfaces&&(void 0!==b.alpha&&b.alpha<1||b.xrayShaded)&&(s=!1),{detail:I,radialSegments:l,linearSegments:m,resolution:u,probePositions:d,doubleSided:s}}},5117:(tn,Ue,n)=>{"use strict";n.d(Ue,{b:()=>u});var u,d,e=n(3246),o=n(6825),r=n(4369),t=n(3596),A=n(3784),y=n(9909),c=n(2075),i=n(3543),v=n(9197),O=n(5077),b=n(8013),_=n(5019),M=n(4992),I=n(6280),l=n(8307),m=n(6022);(d=u||(u={})).setVisibility=function s(w,Q){w&&(w.state.visible=Q)},d.setAlphaFactor=function C(w,Q){w&&(w.state.alphaFactor=Q)},d.setPickable=function h(w,Q){w&&(w.state.pickable=Q)},d.setColorOnly=function a(w,Q){w&&(w.state.colorOnly=Q)},d.mark=function S(w,Q,G,V,U){if(!w||(0,e.$M)(Q))return!1;const{tMarker:N,uMarker:k,markerAverage:H,markerStatus:$,uGroupCount:J,instanceCount:W,instanceGranularity:te}=w.values,de=te.ref.value?W.ref.value:J.ref.value*W.ref.value,{array:ye}=N.ref.value,j=$.ref.value;if(!(0,e.xc)(Q)){let ee=0;if(V(Q,g=>(ee+=i.IX.size(g),!0),!0),0===ee)return!1;ee===de&&(Q=e.FE)}let Z=!1,q=-1,Y=-1;if((0,e.xc)(Q)){const ee=(0,o.Ro)(G,j);-1!==ee.status?(Z=j!==ee.status,Z&&(0,o.uP)(ye,ee.status,de)):Z=(0,o.BH)(ye,i.IX.ofLength(de),G),q=ee.average,Y=ee.status}else Z=V(Q,ee=>(0,o.BH)(ye,ee,G),!0),Z&&(q=(0,o.HX)(G,j),U&&-1!==U.status&&-1===q&&o.sY.isReverse(U.action,G)&&e.QN.areEqual(Q,U.loci)&&(Y=U.status,q=0===Y?0:.5));return Z&&(-1===q&&(q=(0,b.Xl)(ye,de),0===q&&(Y=0)),U&&(U.action=G,U.loci=Q,U.status=j),y.IQ.updateIfChanged(k,Y),-1===Y&&y.IQ.update(N,N.ref.value),y.IQ.updateIfChanged(H,q),y.IQ.updateIfChanged($,Y)),Z},d.setOverpaint=function D(w,Q,G,V,U){if(!w)return;const{tOverpaint:N,dOverpaintType:k,dOverpaint:H,uGroupCount:$,instanceCount:J,instanceGranularity:W}=w.values,te=W.ref.value?J.ref.value:$.ref.value*J.ref.value,de=W.ref.value?"instance":"groupInstance";(0,c.zj)(Q.layers.length?te:0,de,w.values);const{array:ye}=N.ref.value;V&&(0,c.MD)(ye,0,te);for(let j=0,Z=Q.layers.length;j{const xe=i.IX.start(_e),le=i.IX.end(_e);return ee?(0,c.MD)(ye,xe,le):(0,c.qp)(ye,xe,le,Y)},!1)}if(y.IQ.update(N,N.ref.value),y.IQ.updateIfChanged(k,de),y.IQ.updateIfChanged(H,Q.layers.length>0),0!==Q.layers.length&&"instance"!==de&&U&&(0,_.jH)(U.props)){const{geometry:j,props:Z,webgl:q}=U;if("mesh"===j.kind){const{resolution:Y,overpaintTexture:ee}=j.meta,g=(0,_.Y0)(Z.smoothColors,!0,Y);g&&((0,M.WT)(w.values,g.resolution,g.stride,q,ee),j.meta.overpaintTexture=w.values.tOverpaintGrid.ref.value)}else if(q&&"texture-mesh"===j.kind){const{resolution:Y,overpaintTexture:ee}=j.meta,g=(0,_.Y0)(Z.smoothColors,!0,Y);g&&((0,I.FB)(w.values,g.resolution,g.stride,q,ee),j.meta.overpaintTexture=w.values.tOverpaintGrid.ref.value)}}},d.setTransparency=function R(w,Q,G,V,U){if(!w)return;const{tTransparency:N,dTransparencyType:k,transparencyAverage:H,dTransparency:$,uGroupCount:J,instanceCount:W,instanceGranularity:te}=w.values,de=te.ref.value?W.ref.value:J.ref.value*W.ref.value,ye=te.ref.value?"instance":"groupInstance";(0,v.Ti)(Q.layers.length?de:0,ye,w.values);const{array:j}=N.ref.value;V&&(0,v.m6)(j,0,de);for(let Z=0,q=Q.layers.length;Z{const xe=i.IX.start(_e),le=i.IX.end(_e);return(0,v.UG)(j,xe,le,ee)},!1)}if(y.IQ.update(N,N.ref.value),y.IQ.updateIfChanged(H,(0,v.Gg)(j,de)),y.IQ.updateIfChanged(k,ye),y.IQ.updateIfChanged($,Q.layers.length>0),0!==Q.layers.length&&"instance"!==ye&&U&&(0,_.jH)(U.props)){const{geometry:Z,props:q,webgl:Y}=U;if("mesh"===Z.kind){const{resolution:ee,transparencyTexture:g}=Z.meta,_e=(0,_.Y0)(q.smoothColors,!0,ee);_e&&((0,M._j)(w.values,_e.resolution,_e.stride,Y,g),Z.meta.transparencyTexture=w.values.tTransparencyGrid.ref.value)}else if(Y&&"texture-mesh"===Z.kind){const{resolution:ee,transparencyTexture:g}=Z.meta,_e=(0,_.Y0)(q.smoothColors,!0,ee);_e&&((0,I.NQ)(w.values,_e.resolution,_e.stride,Y,g),Z.meta.transparencyTexture=w.values.tTransparencyGrid.ref.value)}}},d.setEmissive=function f(w,Q,G,V,U){if(!w)return;const{tEmissive:N,dEmissiveType:k,emissiveAverage:H,dEmissive:$,uGroupCount:J,instanceCount:W,instanceGranularity:te}=w.values,de=te.ref.value?W.ref.value:J.ref.value*W.ref.value,ye=te.ref.value?"instance":"groupInstance";(0,m.Sj)(Q.layers.length?de:0,ye,w.values);const{array:j}=N.ref.value;V&&(0,m.dQ)(j,0,de);for(let Z=0,q=Q.layers.length;Z{const xe=i.IX.start(_e),le=i.IX.end(_e);return(0,m.Ns)(j,xe,le,ee)},!1)}if(y.IQ.update(N,N.ref.value),y.IQ.updateIfChanged(H,(0,m.bO)(j,de)),y.IQ.updateIfChanged(k,ye),y.IQ.updateIfChanged($,Q.layers.length>0),0!==Q.layers.length&&"instance"!==ye&&U&&(0,_.jH)(U.props)){const{geometry:Z,props:q,webgl:Y}=U;if("mesh"===Z.kind){const{resolution:ee,emissiveTexture:g}=Z.meta,_e=(0,_.Y0)(q.smoothColors,!0,ee);_e&&((0,M.bj)(w.values,_e.resolution,_e.stride,Y,g),Z.meta.emissiveTexture=w.values.tEmissiveGrid.ref.value)}else if(Y&&"texture-mesh"===Z.kind){const{resolution:ee,emissiveTexture:g}=Z.meta,_e=(0,_.Y0)(q.smoothColors,!0,ee);_e&&((0,I.ij)(w.values,_e.resolution,_e.stride,Y,g),Z.meta.emissiveTexture=w.values.tEmissiveGrid.ref.value)}}},d.setSubstance=function p(w,Q,G,V,U){if(!w)return;const{tSubstance:N,dSubstanceType:k,dSubstance:H,uGroupCount:$,instanceCount:J,instanceGranularity:W}=w.values,te=W.ref.value?J.ref.value:$.ref.value*J.ref.value,de=W.ref.value?"instance":"groupInstance";(0,l.fZ)(Q.layers.length?te:0,de,w.values);const{array:ye}=N.ref.value;V&&(0,l.C2)(ye,0,te);for(let j=0,Z=Q.layers.length;j{const xe=i.IX.start(_e),le=i.IX.end(_e);return ee?(0,l.C2)(ye,xe,le):(0,l.mx)(ye,xe,le,Y)},!1)}if(y.IQ.update(N,N.ref.value),y.IQ.updateIfChanged(k,de),y.IQ.updateIfChanged(H,Q.layers.length>0),0!==Q.layers.length&&"instance"!==de&&U&&(0,_.jH)(U.props)){const{geometry:j,props:Z,webgl:q}=U;if("mesh"===j.kind){const{resolution:Y,substanceTexture:ee}=j.meta,g=(0,_.Y0)(Z.smoothColors,!0,Y);g&&((0,M.Cn)(w.values,g.resolution,g.stride,q,ee),j.meta.substanceTexture=w.values.tSubstanceGrid.ref.value)}else if(q&&"texture-mesh"===j.kind){const{resolution:Y,substanceTexture:ee}=j.meta,g=(0,_.Y0)(Z.smoothColors,!0,Y);g&&((0,I.DG)(w.values,g.resolution,g.stride,q,ee),j.meta.substanceTexture=w.values.tSubstanceGrid.ref.value)}}},d.setClipping=function E(w,Q,G,V){if(!w)return;const{tClipping:U,dClippingType:N,dClipping:k,uGroupCount:H,instanceCount:$,instanceGranularity:J}=w.values,W=J.ref.value?$.ref.value:H.ref.value*$.ref.value,{layers:te}=Q,de=J.ref.value?"instance":"groupInstance";(0,O.$G)(te.length?W:0,de,w.values);const{array:ye}=U.ref.value;V&&(0,O.eO)(ye,0,W);for(let j=0,Z=Q.layers.length;j{const _e=i.IX.start(g),xe=i.IX.end(g);return(0,O.HB)(ye,_e,xe,Y)},!1)}y.IQ.update(U,U.ref.value),y.IQ.updateIfChanged(N,de),y.IQ.updateIfChanged(k,Q.layers.length>0)},d.setThemeStrength=function T(w,Q){w&&(y.IQ.updateIfChanged(w.values.uOverpaintStrength,Q.overpaint),y.IQ.updateIfChanged(w.values.uTransparencyStrength,Q.transparency),y.IQ.updateIfChanged(w.values.uEmissiveStrength,Q.emissive),y.IQ.updateIfChanged(w.values.uSubstanceStrength,Q.substance))},d.setTransform=function L(w,Q,G){if(!w||!Q&&!G)return;const{values:V}=w;Q&&(r.$I.copy(V.matrix.ref.value,Q),y.IQ.update(V.matrix,V.matrix.ref.value)),G?(V.extraTransform.ref.value.set(G),y.IQ.update(V.extraTransform,V.extraTransform.ref.value)):null===G&&((0,t.ES)(V.extraTransform.ref.value,V.instanceCount.ref.value),y.IQ.update(V.extraTransform,V.extraTransform.ref.value)),(0,t.CY)(V,V.invariantBoundingSphere.ref.value,V.instanceGrid.ref.value.cellSize,V.instanceGrid.ref.value.batchSize);const U=(0,A.Ax)(V.invariantBoundingSphere.ref.value,V.transform.ref.value,V.instanceCount.ref.value,0);y.IQ.update(V.boundingSphere,U)}},3866:(tn,Ue,n)=>{"use strict";n.d(Ue,{H:()=>un});var e=n(2443),o=n(467),r=n(8277),t=n(6853),A=n(9283),y=n(6165),c=n(5117),i=n(542),v=n(1930),O=n(3596),b=n(8353),_=n(3246),M=n(3543),I=n(5589),l=n(274),m=n(9909),u=n(7684),d=n(2712),s=n(4369),C=n(5019),h=n(1413),a=n(4824),S=n(1372),D=n(8013);function f(ct,dt){const{defaultProps:Yt,createGeometry:cn,createLocationIterator:xn,getLoci:Rn,eachLocation:er,setUpdateState:ir,mustRecreate:Yn,dispose:br}=ct,{updateValues:vr,updateBoundingSphere:Hr,updateRenderableState:Mr,createPositionIterator:Fr}=ct.geometryUtils,Sr=I.rj.create();let Ur,Ro,ro,po,so,Go,Wo,We,Sn,Nn,ho=Object.assign({},Yt),Bo=v.S.createEmpty(),Pt=-1;function dr(Qt){if(Sr.createNew){if(Sn=xn(po,so),!Qt)throw new Error("expected geometry to be given");Ur=function R(ct,dt,Yt,cn,xn,Rn){const{createValues:er,createRenderableState:ir}=i.V.getUtils(dt),br=er(dt,(0,O.Zk)(),Yt,cn,xn),vr=ir(xn);return(0,b.o)(dt.kind,br,vr,Rn)}(0,Qt,Sn,ro,Ro,dt),Nn=Fr(Qt,Ur.values)}else{if(!Ur)throw new Error("expected renderObject to be available");if(Sr.updateTransform){Sn=xn(po,so);const{instanceCount:ht,groupCount:pt}=Sn;Ro.instanceGranularity?(0,D.Km)(ht,"instance",Ur.values):(0,D.Km)(ht*pt,"groupInstance",Ur.values)}else Sn.reset();if(Sr.createGeometry){if(!Qt)throw new Error("expected geometry to be given");m.IQ.updateIfChanged(Ur.values.drawCount,i.V.getDrawCount(Qt)),m.IQ.updateIfChanged(Ur.values.uVertexCount,i.V.getVertexCount(Qt)),m.IQ.updateIfChanged(Ur.values.uGroupCount,i.V.getGroupCount(Qt))}(Sr.updateTransform||Sr.createGeometry)&&(Hr(Ur.values,Qt||We),Nn=Fr(Qt||We,Ur.values)),Sr.updateSize&&"uSize"in Ur.values&&(0,u.v3)(Sn,ro.size,Ur.values),Sr.updateColor&&(0,d.D1)(Sn,Nn,ro.color,Ur.values),vr(Ur.values,Ro),Mr(Ur.state,Ro)}ho=Ro,Bo=ro,Go=po,Wo=so,Qt&&(We=Qt,Pt+=1)}function Ft(Qt,ht){return(0,_.xc)(Qt)?ht(M.IX.ofBounds(0,ho.instanceGranularity?Sn.instanceCount:Sn.groupCount*Sn.instanceCount)):ho.instanceGranularity?function xr(Qt,ht,pt,Xt){let fn=!1;if(t.f.Cell.isLoci(Qt)){if(t.f.Cell.isLociEmpty(Qt)||!t.f.areEquivalent(Qt.volume,ht))return!1;Xt(M.IX.ofSingleton(0))&&(fn=!0)}else if(t.f.Segment.isLoci(Qt)){if(t.f.Segment.isLociEmpty(Qt)||!t.f.areEquivalent(Qt.volume,ht)||!M.SortedArray.has(Qt.segments,pt))return!1;Xt(M.IX.ofSingleton(0))&&(fn=!0)}return fn}(Qt,Go,Wo,ht):er(Qt,Go,Wo,ho,ht)}return{get groupCount(){return Sn?Sn.count:0},get renderObject(){return Ur},get geometryVersion(){return Pt},createOrUpdate:(Qt,ht,pt={},Xt)=>(0,o.A)(function*(){if(function Kn(Qt,ht,pt,Xt){if(!pt&&!Go)throw new Error("missing volume");Ro=Object.assign({},ho,ht),ro=Qt,po=pt,so=Xt,I.rj.reset(Sr),Ur?(!t.f.areEquivalent(po,Go)||so!==Wo)&&(Sr.createNew=!0):Sr.createNew=!0,Sr.createNew?Sr.createGeometry=!0:(ir(Sr,pt,Ro,ho,ro,Bo),l.J.areEqual(Qt.color,Bo.color)||(Sr.updateColor=!0),Sr.createGeometry&&(Sr.updateColor=!0),Ro.instanceGranularity!==ho.instanceGranularity&&(Sr.updateTransform=!0))}(ht,pt,Xt?.volume||Go,Xt?.key||Wo),Sr.createGeometry){const fn=cn(Qt,po,so,ro,Ro,We);return(0,S.$X)(fn)?fn.then(dr):dr(fn)}dr()})(),getLoci:Qt=>Ur?Rn(Qt,Go,Wo,ho,Ur.id):_.BL,eachLocation(Qt){for(Sn.reset();Sn.hasNext;){const{location:ht,isSecondary:pt}=Sn.move();Qt(ht,pt)}},mark:(Qt,ht)=>c.b.mark(Ur,Qt,ht,Ft),setVisibility(Qt){c.b.setVisibility(Ur,Qt)},setAlphaFactor(Qt){c.b.setAlphaFactor(Ur,Qt)},setPickable(Qt){c.b.setPickable(Ur,Qt)},setColorOnly(Qt){c.b.setColorOnly(Ur,Qt)},setTransform(Qt,ht){c.b.setTransform(Ur,Qt,ht)},setOverpaint:Qt=>c.b.setOverpaint(Ur,Qt,Ft,!0),setTransparency:Qt=>c.b.setTransparency(Ur,Qt,Ft,!0),setEmissive:Qt=>c.b.setEmissive(Ur,Qt,Ft,!0),setSubstance:Qt=>c.b.setSubstance(Ur,Qt,Ft,!0),setClipping:Qt=>c.b.setClipping(Ur,Qt,Ft,!0),setThemeStrength(Qt){c.b.setThemeStrength(Ur,Qt)},destroy(){br?.(We),Ur&&(Ur.state.disposed=!0,Ur=void 0)},mustRecreate:Yn}}function T(ct,dt,Yt,cn,xn,Rn=(()=>[-1])){let er=0;const{webgl:ir}=dt,Yn=new h.B,br=new e.YL.GeometryState,vr=(0,b.Q0)(),Hr=[],Mr=e.YL.createState(),Fr=new Map;let Sr,Ur,Ro,ro,po=v.S.createEmpty();function so(Nn,Kn){return ho.apply(this,arguments)}function ho(){return(ho=(0,o.A)(function*(Nn,Kn){var dr;let xr=Fr.get(Kn);return xr?!(null===(dr=xr.mustRecreate)||void 0===dr)&&dr.call(xr,{volume:Sr,key:Kn},ro,ir)&&(xr.destroy(),xr=cn(vr,Sr,Kn,ro,ir),Fr.set(Kn,xr)):(xr=cn(vr,Sr,Kn,ro,ir),Fr.set(Kn,xr)),xr.createOrUpdate({webgl:ir,runtime:Nn},po,ro,{volume:Sr,key:Kn})})).apply(this,arguments)}return{label:ct,get groupCount(){let Nn=0;return Fr.forEach(Kn=>{Kn.renderObject&&(Nn+=Kn.groupCount)}),Nn},get props(){return ro},get params(){return Ro},get state(){return Mr},get theme(){return po},get geometryVersion(){return br.version},renderObjects:Hr,updated:Yn,createOrUpdate:function Bo(Nn={},Kn){Kn&&Kn!==Sr&&(Ro=Yt(dt,Kn),Sr=Kn,ro||(ro=r.t.getDefaultValues(Ro)));const dr=(0,I.m$)(Object.assign({},ro,Nn),Sr);return Object.assign(ro,Nn,dr),Ur=Rn(ro),a.YZ.create("Creating or updating VolumeRepresentation",function(){var xr=(0,o.A)(function*(Ft){const Qt=new Set(Fr.keys());for(let ht=0,pt=Ur.length;ht{var pt;null===(pt=Fr.get(ht))||void 0===pt||pt.destroy(),Fr.delete(ht)}),Hr.length=0,Fr.forEach(ht=>{ht.renderObject&&(Hr.push(ht.renderObject),br.add(ht.renderObject.id,ht.geometryVersion))}),br.snapshot(),Yn.next(er++)});return function(Ft){return xr.apply(this,arguments)}}())},setState:function We(Nn){const{visible:Kn,alphaFactor:dr,pickable:xr,overpaint:Ft,transparency:Qt,emissive:ht,substance:pt,clipping:Xt,transform:fn,themeStrength:on,syncManually:En,markerActions:Tt}=Nn,Fe={};void 0!==Kn&&(Fe.visible=Kn),void 0!==dr&&(Fe.alphaFactor=dr),void 0!==xr&&(Fe.pickable=xr),void 0!==Ft&&(Fe.overpaint=Ft),void 0!==Qt&&(Fe.transparency=Qt),void 0!==ht&&(Fe.emissive=ht),void 0!==pt&&(Fe.substance=pt),void 0!==Xt&&(Fe.clipping=Xt),void 0!==on&&(Fe.themeStrength=on),void 0!==fn&&!s.$I.areEqual(fn,Mr.transform,s.p8)&&(Fe.transform=fn),void 0!==En&&(Fe.syncManually=En),void 0!==Tt&&(Fe.markerActions=Tt),Fr.forEach(He=>function Wo(Nn,Kn){void 0!==Kn.visible&&Nn&&Nn.setVisibility(Kn.visible),void 0!==Kn.alphaFactor&&Nn&&Nn.setAlphaFactor(Kn.alphaFactor),void 0!==Kn.pickable&&Nn&&Nn.setPickable(Kn.pickable),void 0!==Kn.overpaint&&Nn&&Nn.setOverpaint(Kn.overpaint),void 0!==Kn.transparency&&Nn&&Nn.setTransparency(Kn.transparency),void 0!==Kn.emissive&&Nn&&Nn.setEmissive(Kn.emissive),void 0!==Kn.substance&&Nn&&Nn.setSubstance(Kn.substance),void 0!==Kn.clipping&&Nn&&Nn.setClipping(Kn.clipping),void 0!==Kn.transform&&Nn&&Nn.setTransform(Kn.transform),void 0!==Kn.themeStrength&&Nn&&Nn.setThemeStrength(Kn.themeStrength)}(He,Fe)),e.YL.updateState(Mr,Nn)},setTheme:function Pt(Nn){po=Nn},getLoci:Nn=>{let Kn=_.BL;return Fr.forEach(dr=>{const xr=dr.getLoci(Nn);(0,_.$M)(xr)||(Kn=xr)}),Kn},getAllLoci:()=>[xn(Sr,ro)],eachLocation:Nn=>{Fr.forEach(Kn=>{Kn.eachLocation(Nn)})},mark:function Go(Nn,Kn){let dr=!1;return Fr.forEach(xr=>{dr=xr.mark(Nn,Kn)||dr}),dr},destroy:function Sn(){Fr.forEach(Nn=>Nn.destroy()),Fr.clear()}}}var L=n(1888),w=n(364),Q=n(5315),G=n(6115),V=n(4178),U=n(799),N=n(8187),k=n(1692),H=n(7187);const $={isoValue:t.f.IsoValueParam},W=1;function te(ct,dt){if(ct.grid.cells.data.length(0,L.iQ)(dt.grid.cells.data.length,1,1,()=>w.LU),getLoci:j,eachLocation:Z,setUpdateState:(dt,Yt,cn,xn)=>{t.f.IsoValue.areSame(cn.isoValue,xn.isoValue,Yt.grid.stats)||(dt.createGeometry=!0)},geometryUtils:U.X.Utils,mustRecreate:(dt,Yt,cn)=>!Yt.tryUseGpu||!cn||!te(dt.volume,cn),dispose:dt=>{dt.vertexTexture.ref.value.destroy(),dt.groupTexture.ref.value.destroy(),dt.normalTexture.ref.value.destroy(),dt.doubleBuffer.destroy()}},ct)}(ct):function g(ct){return f({defaultProps:r.t.getDefaultValues(ee),createGeometry:q,createLocationIterator:dt=>(0,L.iQ)(dt.grid.cells.data.length,1,1,()=>w.LU),getLoci:j,eachLocation:Z,setUpdateState:(dt,Yt,cn,xn)=>{t.f.IsoValue.areSame(cn.isoValue,xn.isoValue,Yt.grid.stats)||(dt.createGeometry=!0)},geometryUtils:A.e.Utils,mustRecreate:(dt,Yt,cn)=>Yt.tryUseGpu&&!!cn&&te(dt.volume,cn)},ct)}(ct)}function ye(ct,dt){return t.f.Isosurface.Loci(ct,dt.isoValue)}function j(ct,dt,Yt,cn,xn){const{objectId:Rn,groupId:er}=ct;if(xn===Rn){const ir=t.f.PickingGranularity.get(dt);return"volume"===ir?t.f.Loci(dt):"object"===ir?t.f.Isosurface.Loci(dt,cn.isoValue):t.f.Cell.Loci(dt,M.IX.ofSingleton(er))}return _.BL}function Z(ct,dt,Yt,cn,xn){return(0,V.bk)(ct,dt,{isoValue:cn.isoValue},xn)}function q(ct,dt,Yt,cn,xn,Rn){return Y.apply(this,arguments)}function Y(){return(Y=(0,o.A)(function*(ct,dt,Yt,cn,xn,Rn){ct.runtime.update({message:"Marching cubes..."});const er=(0,G.WE)(new Int32Array(dt.grid.cells.data.length)),ir=yield(0,y.O)({isoLevel:t.f.IsoValue.toAbsolute(xn.isoValue,dt.grid.stats).absoluteValue,scalarField:dt.grid.cells,idField:s.qY.create(dt.grid.cells.space,s.qY.Data1(er))},Rn).runAsChild(ct.runtime),Yn=t.x.getGridToCartesianTransform(dt.grid);return A.e.transform(ir,Yn),ct.webgl&&!ct.webgl.isWebGL2?(A.e.uniformTriangleGroup(ir,!1),H.IQ.updateIfChanged(ir.varyingGroup,!1)):H.IQ.updateIfChanged(ir.varyingGroup,!0),ir.setBoundingSphere(t.f.Isosurface.getBoundingSphere(dt,xn.isoValue)),ir})).apply(this,arguments)}const ee={...A.e.Params,...U.X.Params,...$,quality:{...A.e.Params.quality,isEssential:!1},tryUseGpu:r.t.Boolean(!0)};var _e;function xe(ct,dt,Yt,cn,xn,Rn){return le.apply(this,arguments)}function le(){return(le=(0,o.A)(function*(ct,dt,Yt,cn,xn,Rn){if(!ct.webgl)throw new Error("webgl context required to create volume isosurface texture-mesh");if(dt.grid.cells.data.length<=1)return U.X.createEmpty(Rn);const{max:er,min:ir}=dt.grid.stats,Yn=er-ir,br=t.f.IsoValue.toAbsolute(xn.isoValue,dt.grid.stats).absoluteValue,vr=(br-ir)/Yn,{texture:Hr,gridDimension:Mr,gridTexDim:Fr,gridTexScale:Sr,transform:Ur}=_e.get(dt,ct.webgl),Ro=dt.grid.cells.space.axisOrderSlowToFast,ro=Rn?.doubleBuffer.get(),po=(0,N._)(ct.webgl,Hr,Mr,Fr,Sr,Ur,vr,br<0,!1,Ro,!0,ro?.vertex,ro?.group,ro?.normal),so=dt.grid.cells.data.length,ho=t.f.getBoundingSphere(dt),Bo=U.X.create(po.vertexCount,so,po.vertexTexture,po.groupTexture,po.normalTexture,ho,Rn);return Bo.meta.webgl=ct.webgl,Bo})).apply(this,arguments)}function Be(ct,dt,Yt,cn,xn,Rn){return Ce.apply(this,arguments)}function Ce(){return(Ce=(0,o.A)(function*(ct,dt,Yt,cn,xn,Rn){ct.runtime.update({message:"Marching cubes..."});const er=(0,G.WE)(new Int32Array(dt.grid.cells.data.length)),ir=yield(0,y.e)({isoLevel:t.f.IsoValue.toAbsolute(xn.isoValue,dt.grid.stats).absoluteValue,scalarField:dt.grid.cells,idField:s.qY.create(dt.grid.cells.space,s.qY.Data1(er))},Rn).runAsChild(ct.runtime),Yn=t.x.getGridToCartesianTransform(dt.grid);return Q.q.transform(ir,Yn),ir.setBoundingSphere(t.f.Isosurface.getBoundingSphere(dt,xn.isoValue)),ir})).apply(this,arguments)}!function(ct){const dt="volume-isosurface-texture";ct.descriptor=(0,k.e)({name:dt}),ct.get=function Yt(cn,xn){const{resources:Rn}=xn,er=t.x.getGridToCartesianTransform(cn.grid),ir=s.eB.clone(cn.grid.cells.space.dimensions),{width:Yn,height:br,powerOfTwoSize:vr}=(0,V.Ud)(ir,W),Hr=s.eB.create(Yn,br,0),Mr=s.ZY.create(Yn/vr,br/vr);if(vr>xn.maxTextureSize/2)throw new Error("volume too large for gpu isosurface extraction");if(!cn._propertyData[dt]){cn._propertyData[dt]=Rn.texture("image-uint8","alpha","ubyte","linear");const Fr=cn._propertyData[dt];Fr.define(vr,vr),Fr.load((0,V.sz)(cn,"data",W),!0),cn.customProperties.add(ct.descriptor),cn.customProperties.assets(ct.descriptor,[{dispose:()=>Fr.destroy()}])}return ir[0]+=W,ir[1]+=W,{texture:cn._propertyData[dt],transform:er,gridDimension:ir,gridTexDim:Hr,gridTexScale:Mr}}}(_e||(_e={}));const Re={...Q.q.Params,...$,quality:{...Q.q.Params.quality,isEssential:!1},sizeFactor:r.t.Numeric(3,{min:0,max:10,step:.1})};function ke(ct){return f({defaultProps:r.t.getDefaultValues(Re),createGeometry:Be,createLocationIterator:dt=>(0,L.iQ)(dt.grid.cells.data.length,1,1,()=>w.LU),getLoci:j,eachLocation:Z,setUpdateState:(dt,Yt,cn,xn)=>{t.f.IsoValue.areSame(cn.isoValue,xn.isoValue,Yt.grid.stats)||(dt.createGeometry=!0)},geometryUtils:Q.q.Utils},ct)}const we={solid:(ct,dt)=>T("Isosurface mesh",ct,dt,de,ye),wireframe:(ct,dt)=>T("Isosurface wireframe",ct,dt,ke,ye)},Oe={...ee,...Re,visuals:r.t.MultiSelect(["solid"],r.t.objectToOptions(we)),bumpFrequency:r.t.Numeric(1,{min:0,max:10,step:.1},C.iy.ShadingCategory)},Ne={name:"isosurface",label:"Isosurface",description:"Displays a triangulated isosurface of volumetric data.",factory:function Ve(ct,dt){return e.YL.createMulti("Isosurface",ct,dt,e.YL.StateBuilder,we)},getParams:function Se(ct,dt){const Yt=r.t.clone(Oe);return Yt.isoValue=t.f.createIsoValueParam(t.f.IsoValue.relative(2),dt.grid.stats),Yt},defaultValues:r.t.getDefaultValues(Oe),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"uniform"},isApplicable:ct=>!t.f.isEmpty(ct)&&!t.f.Segmentation.get(ct)};var K=n(9359),ne=n(7135),be=n(4559),Te=n(190),ie=n(4951);function ue(ct,dt,Yt,cn,xn,Rn){return re.apply(this,arguments)}function re(){return(re=(0,o.A)(function*(ct,dt,Yt,cn,xn,Rn){const{dimension:{name:er},isoValue:ir}=xn,{space:Yn,data:br}=dt.grid.cells,{min:vr,max:Hr}=dt.grid.stats,Mr=t.f.IsoValue.toAbsolute(ir,dt.grid.stats).absoluteValue,Fr="color"in cn.color?cn.color.color(w.LU,!1):(0,Te.Q1)(16777215),[Sr,Ur,Ro]=Te.Q1.toRgbNormalized(Fr),{width:ro,height:po,x:so,y:ho,z:Bo,x0:Go,y0:Wo,z0:We,nx:Pt,ny:Sn,nz:Nn}=ve(dt.grid,xn),Kn=new Float32Array("x"===er?[so,0,0,so,ho,0,so,0,Bo,so,ho,Bo]:"y"===er?[0,ho,0,so,ho,0,0,ho,Bo,so,ho,Bo]:[0,0,Bo,0,ho,Bo,so,0,Bo,so,ho,Bo]),dr=new Uint8Array(ro*po*4),xr=function ce(ct,dt){const{space:Yt}=ct.cells,{width:cn,height:xn,x0:Rn,y0:er,z0:ir,nx:Yn,ny:br,nz:vr}=ve(ct,dt),Hr=new Uint8Array(cn*xn*4);let Mr=0;for(let Fr=er;Fr=Mr?255:0,Ft+=4}const Qt={width:ro,height:po,array:dr,flipY:!0},ht={width:ro,height:po,array:xr,flipY:!0},pt=t.x.getGridToCartesianTransform(dt.grid);return(0,be.pi)(pt,Kn,0,4),ne._V.create(Qt,Kn,ht,Rn)})).apply(this,arguments)}function ve(ct,dt){const{dimension:{name:Yt,params:cn}}=dt,{space:xn}=ct.cells;let Rn,er,ir,Yn,br,vr=0,Hr=0,Mr=0,[Fr,Sr,Ur]=xn.dimensions;return"x"===Yt?(ir=cn,Yn=Sr-1,br=Ur-1,Rn=Ur,er=Sr,vr=ir,Fr=vr+1):"y"===Yt?(ir=Fr-1,Yn=cn,br=Ur-1,Rn=Ur,er=Fr,Hr=Yn,Sr=Hr+1):(ir=Fr-1,Yn=Sr-1,br=cn,Rn=Fr,er=Sr,Mr=br,Ur=Mr+1),{width:Rn,height:er,x:ir,y:Yn,z:br,x0:vr,y0:Hr,z0:Mr,nx:Fr,ny:Sr,nz:Ur}}function ae(ct,dt){const Yt=function se(ct,dt){const{space:Yt}=ct.cells,{width:cn,height:xn,x0:Rn,y0:er,z0:ir,nx:Yn,ny:br,nz:vr}=ve(ct,dt),Hr=new Uint32Array(cn*xn);let Mr=0;for(let Fr=er;Fr(0,L.iQ)(dt.grid.cells.data.length,1,1,()=>w.LU),getLoci:ge,eachLocation:Ie,setUpdateState:(dt,Yt,cn,xn,Rn,er)=>{dt.createGeometry=cn.dimension.name!==xn.dimension.name||cn.dimension.params!==xn.dimension.params||!t.f.IsoValue.areSame(cn.isoValue,xn.isoValue,Yt.grid.stats)||!l.J.areEqual(Rn.color,er.color)},geometryUtils:{...ne._V.Utils,createRenderableState:dt=>{const Yt=ne._V.Utils.createRenderableState(dt);return Lt(Yt,dt),Yt},updateRenderableState:Lt}},ct)}function Lt(ct,dt){ne._V.Utils.updateRenderableState(ct,dt),ct.opaque=!1,ct.writeDepth=!0}const en={name:"slice",label:"Slice",description:"Slice of volume rendered as image with interpolation.",factory:function Je(ct,dt){return T("Slice",ct,dt,je,ae)},getParams:function nt(ct,dt){const Yt=r.t.clone(Le),cn=dt.grid.cells.space.dimensions;return Yt.dimension=r.t.MappedStatic("x",{x:r.t.Numeric(0,{min:0,max:cn[0]-1,step:1}),y:r.t.Numeric(0,{min:0,max:cn[1]-1,step:1}),z:r.t.Numeric(0,{min:0,max:cn[2]-1,step:1})},{isEssential:!0}),Yt.isoValue=t.f.createIsoValueParam(t.f.IsoValue.absolute(dt.grid.stats.min),dt.grid.stats),Yt},defaultValues:r.t.getDefaultValues(Le),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"uniform"},isApplicable:ct=>!t.f.isEmpty(ct)&&!t.f.Segmentation.get(ct)};var Bt=n(5384),pn=n(9928);function $e(ct,dt){const Yt=(0,Bt.DJ)();return Bt.DJ.add(Yt,ct),Bt.DJ.transform(Yt,Yt,dt),Yt}function _t(ct){if("matrix"===ct.transform.kind)return{unitToCartn:s.$I.mul((0,s.$I)(),ct.transform.matrix,s.$I.fromScaling((0,s.$I)(),ct.cells.space.dimensions)),cellDim:s.$I.getScaling((0,s.eB)(),ct.transform.matrix)};const dt=ct.transform.fractionalBox,Yt=Bt.DJ.size((0,s.eB)(),dt);return{unitToCartn:s.$I.mul3((0,s.$I)(),ct.transform.cell.fromFractional,s.$I.fromTranslation((0,s.$I)(),dt.min),s.$I.fromScaling((0,s.$I)(),Yt)),cellDim:s.eB.div((0,s.eB)(),ct.transform.cell.size,ct.cells.space.dimensions)}}function Ke(ct,dt,Yt,cn,xn,Rn){return ut.apply(this,arguments)}function ut(){return(ut=(0,o.A)(function*(ct,dt,Yt,cn,xn,Rn){const{webgl:ir}=ct;if(void 0===ir)throw new Error("DirectVolumeVisual requires `webgl` in props");return ir.isWebGL2?function Me(ct,dt,Yt,cn){const xn=Yt.grid.cells.space.dimensions;if(Math.max(...xn)>dt.max3dTextureSize/2)throw new Error("volume too large for direct-volume rendering");const Rn=(0,V.tO)(Yt),er=t.x.getGridToCartesianTransform(Yt.grid),ir=$e(xn,er),Yn=cn?cn.gridTexture.ref.value:dt.resources.texture("volume-uint8","rgba","ubyte","linear");Yn.load(Rn);const{unitToCartn:br,cellDim:vr}=_t(Yt.grid);return pn.E.create(ir,xn,er,br,vr,Yn,Yt.grid.stats,!1,Yt.grid.cells.space.axisOrderSlowToFast,cn)}(0,ir,dt,Rn):function mt(ct,dt,Yt,cn){const xn=Yt.grid.cells.space.dimensions,{width:Rn,height:er}=(0,V.Ud)(xn);if(Math.max(Rn,er)>dt.maxTextureSize/2)throw new Error("volume too large for direct-volume rendering");const ir=(0,V.sz)(Yt,"normals"),Yn=t.x.getGridToCartesianTransform(Yt.grid),br=$e(xn,Yn),vr=cn?cn.gridTexture.ref.value:dt.resources.texture("image-uint8","rgba","ubyte","linear");vr.load(ir);const{unitToCartn:Hr,cellDim:Mr}=_t(Yt.grid);return pn.E.create(br,xn,Yn,Hr,Mr,vr,Yt.grid.stats,!1,Yt.grid.cells.space.axisOrderSlowToFast,cn)}(0,ir,dt,Rn)})).apply(this,arguments)}function Kt(ct,dt){return t.f.Loci(ct)}function sn(ct,dt,Yt,cn,xn){const{objectId:Rn,groupId:er}=ct;return xn===Rn?t.f.Cell.Loci(dt,M.IX.ofSingleton(er)):_.BL}function gt(ct,dt,Yt,cn,xn){return(0,V.bk)(ct,dt,void 0,xn)}const yt={...pn.E.Params,quality:{...pn.E.Params.quality,isEssential:!1}};function Gt(ct){return f({defaultProps:r.t.getDefaultValues(yt),createGeometry:Ke,createLocationIterator:dt=>(0,L.iQ)(dt.grid.cells.data.length,1,1,()=>w.LU),getLoci:sn,eachLocation:gt,setUpdateState:(dt,Yt,cn,xn)=>{},geometryUtils:pn.E.Utils,dispose:dt=>{dt.gridTexture.ref.value.destroy()}},ct)}const tt={name:"direct-volume",label:"Direct Volume",description:"Direct rendering of volumetric data.",factory:function rn(ct,dt){return T("Direct Volume",ct,dt,Gt,Kt)},getParams:function At(ct,dt){const Yt=r.t.clone(yt);return Yt.controlPoints.getVolume=()=>dt,Yt},defaultValues:r.t.getDefaultValues(yt),defaultColorTheme:{name:"volume-value"},defaultSizeTheme:{name:"uniform"},isApplicable:ct=>!t.f.isEmpty(ct)&&!t.f.Segmentation.get(ct)};var Mt=n(6642);const nn={segments:r.t.Converted(ct=>ct.map(dt=>`${dt}`),ct=>ct.map(dt=>parseInt(dt)),r.t.MultiSelect(["0"],r.t.arrayToOptions(["0"]),{isEssential:!0}))},Dn=1;function jt(ct,dt){if(ct.grid.cells.data.length{const cn=t.f.Segment.Location(dt,Yt);return(0,L.iQ)(dt.grid.cells.data.length,1,1,()=>cn)},getLoci:Vt,eachLocation:Wt,setUpdateState:(dt,Yt,cn,xn)=>{},geometryUtils:U.X.Utils,mustRecreate:(dt,Yt,cn)=>!Yt.tryUseGpu||!cn||!jt(dt.volume,cn),dispose:dt=>{dt.vertexTexture.ref.value.destroy(),dt.groupTexture.ref.value.destroy(),dt.normalTexture.ref.value.destroy(),dt.doubleBuffer.destroy()}},ct)}(ct):function An(ct){return f({defaultProps:r.t.getDefaultValues(Ot),createGeometry:Zt,createLocationIterator:(dt,Yt)=>{const cn=t.f.Segment.Location(dt,Yt);return(0,L.iQ)(dt.grid.cells.data.length,1,1,()=>cn)},getLoci:Vt,eachLocation:Wt,setUpdateState:(dt,Yt,cn,xn)=>{},geometryUtils:A.e.Utils,mustRecreate:(dt,Yt,cn)=>Yt.tryUseGpu&&!!cn&&jt(dt.volume,cn)},ct)}(ct)}function $t(ct,dt){return t.f.Segment.Loci(ct,dt.segments)}function Vt(ct,dt,Yt,cn,xn){const{objectId:Rn,groupId:er}=ct;if(xn===Rn){const ir=t.f.PickingGranularity.get(dt);return"volume"===ir?t.f.Loci(dt):"object"===ir?t.f.Segment.Loci(dt,[Yt]):t.f.Cell.Loci(dt,M.IX.ofSingleton(er))}return _.BL}function Wt(ct,dt,Yt,cn,xn){const Rn=M.SortedArray.ofSingleton(Yt);return(0,V.bk)(ct,dt,{segments:Rn},xn)}function Zt(ct,dt,Yt,cn,xn,Rn){return kt.apply(this,arguments)}function kt(){return(kt=(0,o.A)(function*(ct,dt,Yt,cn,xn,Rn){const er=t.f.Segmentation.get(dt);if(!er)throw new Error("missing volume segmentation");ct.runtime.update({message:"Marching cubes..."});const ir=Mt.D.clone(er.bounds[Yt]);Mt.D.expand(ir,ir,s.eB.create(2,2,2));const br=function yn(ct,dt,Yt){const cn=Yt.data,xn=Yt.space.dataOffset,Rn=Mt.D.size((0,s.eB)(),dt),[er,ir,Yn]=Rn,br=er-1,vr=ir-1,Hr=Yn-1,[Mr,Fr,Sr]=dt.min,[Ur,Ro,ro]=dt.max,po=[...Yt.space.axisOrderSlowToFast],so=s.qY.Space(Rn,po,Uint8Array),ho=s.qY.create(so,so.create()),Bo=ho.data,Go=so.set;for(let Wo=0;WoYt.maxTextureSize/2)throw new Error("volume too large for gpu segment extraction");Yt.namedTextures[jn]||(Yt.namedTextures[jn]=xn.texture("image-uint8","alpha","ubyte","linear"));const Fr=Yt.namedTextures[jn];Fr.define(vr,vr);const Sr=Array.from(cn.segments.get(dt).values());return Fr.load((0,V.td)(ct,Sr,Rn,Dn),!0),ir[0]+=Dn,ir[1]+=Dn,{texture:Fr,transform:er,gridDimension:ir,gridTexDim:Hr,gridTexScale:Mr}}(dt,Yt,ct.webgl),Hr=dt.grid.cells.space.axisOrderSlowToFast,Mr=Rn?.doubleBuffer.get(),Fr=(0,N._)(ct.webgl,er,ir,Yn,br,vr,.5,!1,!1,Hr,!0,Mr?.vertex,Mr?.group,Mr?.normal);return U.X.create(Fr.vertexCount,dt.grid.cells.data.length,Fr.vertexTexture,Fr.groupTexture,Fr.normalTexture,t.f.Segment.getBoundingSphere(dt,[Yt]),Rn)})).apply(this,arguments)}function or(ct){return M.SortedArray.ofUnsortedArray(ct.segments)}const Nr={segment:(ct,dt)=>T("Segment mesh",ct,dt,Ct,$t,or)},Ir={...Ot,visuals:r.t.MultiSelect(["segment"],r.t.objectToOptions(Nr)),bumpFrequency:r.t.Numeric(1,{min:0,max:10,step:.1},C.iy.ShadingCategory)},To={name:"segment",label:"Segment",description:"Displays a triangulated segment of volumetric data.",factory:function Jr(ct,dt){return e.YL.createMulti("Segment",ct,dt,e.YL.StateBuilder,Nr)},getParams:function Or(ct,dt){const Yt=r.t.clone(Ir),cn=t.f.Segmentation.get(dt);if(cn){const xn=Array.from(cn.segments.keys());Yt.segments=r.t.Converted(Rn=>Rn.map(er=>`${er}`),Rn=>Rn.map(er=>parseInt(er)),r.t.MultiSelect(xn.map(Rn=>`${Rn}`),r.t.arrayToOptions(xn.map(Rn=>`${Rn}`)),{isEssential:!0}))}return Yt},defaultValues:r.t.getDefaultValues(Ir),defaultColorTheme:{name:"volume-segment"},defaultSizeTheme:{name:"uniform"},isApplicable:ct=>!t.f.isEmpty(ct)&&!!t.f.Segmentation.get(ct)};class un extends e.lN{constructor(){super(),(0,K.IF)(un.BuiltIn,(dt,Yt)=>{if(dt.name!==Yt)throw new Error(`Fix BuiltInVolumeRepresentations to have matching names. ${dt.name} ${Yt}`);this.add(dt)})}}(un||(un={})).BuiltIn={isosurface:Ne,slice:en,"direct-volume":tt,segment:To}},4178:(tn,Ue,n)=>{"use strict";n.d(Ue,{Ud:()=>l,bk:()=>I,sz:()=>m,tO:()=>u,td:()=>d});var e=n(6853),o=n(3543),r=n(2028),t=n(2086),A=n(4951),y=n(9986),c=n(5384);const i=t.e.set,v=t.e.normalize,O=t.e.sub,b=t.e.addScalar,_=t.e.scale,M=t.e.toArray;function I(s,C,h,a){let S=!1;if(e.f.isLoci(s)){if(!e.f.areEquivalent(s.volume,C))return!1;a(o.IX.ofLength(C.grid.cells.data.length))&&(S=!0)}else if(e.f.Isosurface.isLoci(s)){if(!e.f.areEquivalent(s.volume,C))return!1;if(h?.isoValue){if(!e.f.IsoValue.areSame(s.isoValue,h.isoValue,C.grid.stats))return!1;a(o.IX.ofLength(C.grid.cells.data.length))&&(S=!0)}else{const{stats:D,cells:{data:R}}=C.grid,f=D.sigma,p=e.f.IsoValue.toAbsolute(s.isoValue,D).absoluteValue;for(let E=0,T=R.length;E{a(o.IX.ofSingleton(D))&&(S=!0)})}else if(e.f.Segment.isLoci(s)){if(!e.f.areEquivalent(s.volume,C))return!1;if(h?.segments){if(!o.SortedArray.areIntersecting(s.segments,h.segments))return!1;a(o.IX.ofLength(C.grid.cells.data.length))&&(S=!0)}else{const D=e.f.Segmentation.get(C);if(D){const R=new Set;for(let E=0,T=s.segments.length;E{"use strict";n.d(Ue,{J:()=>o});var o,e=n(643);!function(r){r.core=e.AN.core,r.struct=e.AN.structureQuery,r.internal=e.AN.internal,r.atomName=function t(h){return r.struct.type.atomName([h])},r.es=function A(h){return r.struct.type.elementSymbol([h])},r.list=function y(...h){return r.core.type.list(h)},r.set=function c(...h){return r.core.type.set(h)},r.re=function i(h,a){return r.core.type.regex([h,a])},r.fn=function v(h){return r.core.ctrl.fn([h])},r.evaluate=function O(h){return r.core.ctrl.eval([h])};const b=r.struct.atomProperty.core,_=r.struct.atomProperty.macromolecular,M=r.struct.atomProperty.topology;function I(h){return b[h]()}function l(h){return M[h]()}function m(h){return _[h]()}r.acp=I,r.atp=l,r.ammp=m;const u=r.struct.atomSet.propertySet;r.acpSet=function d(h){return u([I(h)])},r.atpSet=function s(h){return u([l(h)])},r.ammpSet=function C(h){return u([m(h)])}}(o||(o={}))},9920:(tn,Ue,n)=>{"use strict";var e;n.d(Ue,{r:()=>e}),function(o){function i(O){return!!O&&!!O.head&&"object"==typeof O}function v(O){return!!O&&"string"==typeof O.name}o.Symbol=function r(O){return{name:O}},o.Apply=function t(O,b){return b?{head:O,args:b}:{head:O}},o.isArgumentsArray=function A(O){return!!O&&Array.isArray(O)},o.isArgumentsMap=function y(O){return!!O&&!Array.isArray(O)},o.isLiteral=function c(O){return!i(O)&&!v(O)},o.isApply=i,o.isSymbol=v}(e||(e={}))},685:(tn,Ue,n)=>{"use strict";n.d(Ue,{HR:()=>o,br:()=>t,ec:()=>r});var e=n(3170);function o(i,v,O){return(0,e.EX)("",i,v,O)}function r(i){y("","",i)}function t(i){const v=[];return c(i,v),v}function A(i){const v=/([a-z])([A-Z])([a-z]|$)/g;return i.replace(v,(O,b,_,M)=>`${b}-${_.toLocaleLowerCase()}${M}`).replace(v,(O,b,_,M)=>`${b}-${_.toLocaleLowerCase()}${M}`)}function y(i,v,O){if((0,e.Bm)(O))return O.info.namespace=i,O.info.name=O.info.name||A(v),void(O.id=`${O.info.namespace}.${O.info.name}`);const b=`${O["@namespace"]||A(v)}`,_=i?`${i}.${b}`:b;for(const M of Object.keys(O))"object"!=typeof O[M]&&!(0,e.Bm)(O[M])||y(_,M,O[M])}function c(i,v){if((0,e.Bm)(i))v.push(i);else for(const O of Object.keys(i))"object"!=typeof i[O]&&!(0,e.Bm)(i[O])||c(i[O],v)}},643:(tn,Ue,n)=>{"use strict";n.d(Ue,{AN:()=>i});var e=n(2513),o=n(6452),r=n(6430),t=n(3170),A=n(685);const c={"@header":"Internal Queries",generator:{"@header":"Generators",bundleElement:(0,A.HR)(t.d3.Dictionary({groupedUnits:(0,t.ef)(r.Z.Any),set:(0,t.ef)(r.Z.Any),ranges:(0,t.ef)(r.Z.Any)}),r.Z.Any),bundle:(0,A.HR)(t.d3.Dictionary({elements:(0,t.ef)(r.Z.Any)}),o.O.ElementSelectionQuery,"A selection with single structure containing represented by the bundle."),current:(0,A.HR)(t.d3.None,o.O.ElementSelectionQuery,"Current selection provided by the query context. Avoid using this in State Transforms.")}},i={core:e.I8,structureQuery:o.q,internal:c};(0,A.ec)(i);const v=(0,A.br)(i);!function(){const b=Object.create(null);for(const _ of v)b[_.id]=_}()},2513:(tn,Ue,n)=>{"use strict";n.d(Ue,{I8:()=>d,Or:()=>t});var t,h,e=n(6430),o=n(3170),r=n(685);function A(h,a){return(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(h)}),h,a)}function y(h,a){return(0,r.HR)(o.d3.List(h,{nonEmpty:!0}),h,a)}function c(h,a,S){return(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(h),1:(0,o.ef)(h)}),a,S)}(h=t||(t={})).AnyVar=e.Z.Variable("a",e.Z.Any),h.AnyValueVar=e.Z.Variable("a",e.Z.Any),h.ConstrainedVar=e.Z.Variable("a",e.Z.Any,!0),h.Regex=e.Z.Value("Core","Regex"),h.Set=a=>e.Z.Container("Core","Set",a||h.AnyValueVar),h.List=a=>e.Z.Container("Core","List",a||h.AnyVar),h.Fn=(a,S)=>e.Z.Container("Core","Fn",a||h.AnyVar,S),h.Flags=(a,S)=>e.Z.Container("Core","Flags",a,S),h.BitFlags=h.Flags(e.Z.Num,"BitFlags"),o.d3.Dictionary({0:(0,o.ef)(e.Z.Num),1:(0,o.ef)(e.Z.Num)});const d={"@header":"Language Primitives",type:{"@header":"Types",bool:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(e.Z.AnyValue)}),e.Z.Bool,"Convert a value to boolean."),num:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(e.Z.AnyValue)}),e.Z.Num,"Convert a value to number."),str:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(e.Z.AnyValue)}),e.Z.Str,"Convert a value to string."),regex:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(e.Z.Str,{description:"Expression"}),1:(0,o.ef)(e.Z.Str,{isOptional:!0,description:"Flags, e.g. 'i' for ignore case"})}),t.Regex,"Creates a regular expression from a string using the ECMAscript syntax."),list:(0,r.HR)(o.d3.List(t.AnyVar),t.List()),set:(0,r.HR)(o.d3.List(t.AnyValueVar),t.Set()),bitflags:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(e.Z.Num)}),t.BitFlags,"Interpret a number as bitflags."),compositeKey:(0,r.HR)(o.d3.List(e.Z.AnyValue),e.Z.AnyValue)},logic:{"@header":"Logic",not:A(e.Z.Bool),and:y(e.Z.Bool),or:y(e.Z.Bool)},ctrl:{"@header":"Control",eval:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(t.Fn(t.AnyVar))}),t.AnyVar,"Evaluate a function."),fn:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(t.AnyVar)}),t.Fn(t.AnyVar),'Wrap an expression to a "lazy" function.'),if:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(e.Z.Bool,{description:"Condition"}),1:(0,o.ef)(e.Z.Variable("a",e.Z.Any),{description:"If true"}),2:(0,o.ef)(e.Z.Variable("b",e.Z.Any),{description:"If false"})}),e.Z.Union([e.Z.Variable("a",e.Z.Any),e.Z.Variable("b",e.Z.Any)])),assoc:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(e.Z.Str,{description:"Name"}),1:(0,o.ef)(e.Z.Variable("a",e.Z.Any),{description:"Value to assign"})}),e.Z.Variable("a",e.Z.Any))},rel:{"@header":"Relational",eq:c(e.Z.Variable("a",e.Z.AnyValue,!0),e.Z.Bool),neq:c(e.Z.Variable("a",e.Z.AnyValue,!0),e.Z.Bool),lt:c(e.Z.Num,e.Z.Bool),lte:c(e.Z.Num,e.Z.Bool),gr:c(e.Z.Num,e.Z.Bool),gre:c(e.Z.Num,e.Z.Bool),inRange:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(e.Z.Num,{description:"Value to test"}),1:(0,o.ef)(e.Z.Num,{description:"Minimum value"}),2:(0,o.ef)(e.Z.Num,{description:"Maximum value"})}),e.Z.Bool,"Check if the value of the 1st argument is >= 2nd and <= 3rd.")},math:{"@header":"Math",add:y(e.Z.Num),sub:y(e.Z.Num),mult:y(e.Z.Num),div:c(e.Z.Num,e.Z.Num),pow:c(e.Z.Num,e.Z.Num),mod:c(e.Z.Num,e.Z.Num),min:y(e.Z.Num),max:y(e.Z.Num),cantorPairing:c(e.Z.Num,e.Z.Num),sortedCantorPairing:c(e.Z.Num,e.Z.Num),invertCantorPairing:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(e.Z.Num)}),t.List(e.Z.Num)),floor:A(e.Z.Num),ceil:A(e.Z.Num),roundInt:A(e.Z.Num),trunc:A(e.Z.Num),abs:A(e.Z.Num),sign:A(e.Z.Num),sqrt:A(e.Z.Num),cbrt:A(e.Z.Num),sin:A(e.Z.Num),cos:A(e.Z.Num),tan:A(e.Z.Num),asin:A(e.Z.Num),acos:A(e.Z.Num),atan:A(e.Z.Num),sinh:A(e.Z.Num),cosh:A(e.Z.Num),tanh:A(e.Z.Num),exp:A(e.Z.Num),log:A(e.Z.Num),log10:A(e.Z.Num),atan2:c(e.Z.Num,e.Z.Num)},str:{"@header":"Strings",concat:y(e.Z.Str),match:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(t.Regex),1:(0,o.ef)(e.Z.Str)}),e.Z.Bool)},list:{"@header":"Lists",getAt:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(t.List()),1:(0,o.ef)(e.Z.Num)}),t.AnyVar),equal:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(t.List()),1:(0,o.ef)(t.List())}),e.Z.Bool)},set:{"@header":"Sets",has:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(t.Set(t.ConstrainedVar)),1:(0,o.ef)(t.ConstrainedVar)}),e.Z.Bool,"Check if the the 1st argument includes the value of the 2nd."),isSubset:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(t.Set(t.ConstrainedVar)),1:(0,o.ef)(t.Set(t.ConstrainedVar))}),e.Z.Bool,"Check if the the 1st argument is a subset of the 2nd.")},flags:{"@header":"Flags",hasAny:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(t.Flags(t.ConstrainedVar)),1:(0,o.ef)(t.Flags(t.ConstrainedVar))}),e.Z.Bool,"Check if the the 1st argument has at least one of the 2nd one's flags."),hasAll:(0,r.HR)(o.d3.Dictionary({0:(0,o.ef)(t.Flags(t.ConstrainedVar)),1:(0,o.ef)(t.Flags(t.ConstrainedVar))}),e.Z.Bool,"Check if the the 1st argument has all 2nd one's flags.")}};(0,r.ec)(d);const s=(0,r.br)(d);!function(){const h=Object.create(null);for(const a of s)h[a.id]=a}()},6452:(tn,Ue,n)=>{"use strict";n.d(Ue,{O:()=>A,q:()=>u});var A,d,e=n(6430),o=n(2513),r=n(3170),t=n(685);function l(d,s){return(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementReference,{isOptional:!0,defaultValue:"slot.current-atom"})}),d,s)}function m(d,s){return(0,t.HR)(r.d3.None,d,s)}(d=A||(A={})).ElementSymbol=e.Z.Value("Structure","ElementSymbol"),d.AtomName=e.Z.Value("Structure","AtomName"),d.BondFlag=e.Z.OneOf("Structure","BondFlag",e.Z.Str,["covalent","metallic","ion","hydrogen","sulfide","computed","aromatic"]),d.BondFlags=o.Or.Flags(d.BondFlag,"BondFlags"),d.SecondaryStructureFlag=e.Z.OneOf("Structure","SecondaryStructureFlag",e.Z.Str,["alpha","beta","3-10","pi","sheet","strand","helix","turn","none"]),d.SecondaryStructureFlags=o.Or.Flags(d.SecondaryStructureFlag,"SecondaryStructureFlag"),d.RingFingerprint=e.Z.Value("Structure","RingFingerprint"),d.EntityType=e.Z.OneOf("Structure","EntityType",e.Z.Str,["polymer","non-polymer","water","branched"]),d.EntitySubtype=e.Z.OneOf("Structure","EntitySubtype",e.Z.Str,["other","polypeptide(D)","polypeptide(L)","polydeoxyribonucleotide","polyribonucleotide","polydeoxyribonucleotide/polyribonucleotide hybrid","cyclic-pseudo-peptide","peptide nucleic acid","oligosaccharide"]),d.ObjectPrimitive=e.Z.OneOf("Structure","ObjectPrimitive",e.Z.Str,["atomistic","sphere","gaussian","other"]),d.ResidueId=e.Z.Value("Structure","ResidueId"),d.ElementSet=e.Z.Value("Structure","ElementSet"),d.ElementSelection=e.Z.Value("Structure","ElementSelection"),d.ElementReference=e.Z.Value("Structure","ElementReference"),d.ElementSelectionQuery=o.Or.Fn(d.ElementSelection,"ElementSelectionQuery");const u={"@header":"Structure Queries",type:{"@header":"Types",elementSymbol:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(e.Z.Str)}),A.ElementSymbol,"Create element symbol representation from a string value."),atomName:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(e.Z.AnyValue)}),A.AtomName,"Convert a value to an atom name."),entityType:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.EntityType)}),A.EntityType,`Create normalized representation of entity type: ${e.Z.oneOfValues(A.EntityType).join(", ")}.`),bondFlags:(0,t.HR)(r.d3.List(A.BondFlag),A.BondFlags,`Create bond flags representation from a list of strings. Allowed flags: ${e.Z.oneOfValues(A.BondFlag).join(", ")}.`),ringFingerprint:(0,t.HR)(r.d3.List(A.ElementSymbol,{nonEmpty:!0}),A.RingFingerprint,"Create ring fingerprint from the supplied atom element list."),secondaryStructureFlags:(0,t.HR)(r.d3.List(A.SecondaryStructureFlag),A.SecondaryStructureFlags,`Create secondary structure flags representation from a list of strings. Allowed flags: ${e.Z.oneOfValues(A.SecondaryStructureFlag).join(", ")}.`),authResidueId:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(e.Z.Str,{description:"auth_asym_id"}),1:(0,r.ef)(e.Z.Num,{description:"auth_seq_id"}),2:(0,r.ef)(e.Z.Str,{description:"pdbx_PDB_ins_code",isOptional:!0})}),A.ResidueId,'Residue identifier based on "auth_" annotation.'),labelResidueId:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(e.Z.Str,{description:"label_entity_id"}),1:(0,r.ef)(e.Z.Str,{description:"label_asym_id"}),2:(0,r.ef)(e.Z.Num,{description:"label_seq_id"}),3:(0,r.ef)(e.Z.Str,{description:"pdbx_PDB_ins_code",isOptional:!0})}),A.ResidueId,'Residue identifier based on mmCIF\'s "label_" annotation.')},slot:{"@header":"Iteration Slots",element:(0,t.HR)(r.d3.None,A.ElementReference,"A reference to the current element."),elementSetReduce:(0,t.HR)(r.d3.None,e.Z.Variable("a",e.Z.AnyValue,!0),"Current value of the element set reducer.")},generator:{"@header":"Generators",all:(0,t.HR)(r.d3.None,A.ElementSelectionQuery,"The entire structure."),atomGroups:(0,t.HR)(r.d3.Dictionary({"entity-test":(0,r.ef)(e.Z.Bool,{isOptional:!0,defaultValue:!0,description:"Test for the 1st atom of every entity"}),"chain-test":(0,r.ef)(e.Z.Bool,{isOptional:!0,defaultValue:!0,description:"Test for the 1st atom of every chain"}),"residue-test":(0,r.ef)(e.Z.Bool,{isOptional:!0,defaultValue:!0,description:"Test for the 1st atom every residue"}),"atom-test":(0,r.ef)(e.Z.Bool,{isOptional:!0,defaultValue:!0}),"group-by":(0,r.ef)(e.Z.Any,{isOptional:!0,defaultValue:"atom-key",description:"Group atoms to sets based on this property. Default: each atom has its own set"})}),A.ElementSelectionQuery,"Return all atoms for which the tests are satisfied, grouped into sets."),bondedAtomicPairs:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(e.Z.Bool,{isOptional:!0,defaultValue:"true for covalent bonds",description:"Test each bond with this predicate. Each bond is visited twice with swapped atom order."})}),A.ElementSelectionQuery,"Return all pairs of atoms for which the test is satisfied."),rings:(0,t.HR)(r.d3.Dictionary({fingerprint:(0,r.ef)(A.RingFingerprint,{isOptional:!0}),"only-aromatic":(0,r.ef)(e.Z.Bool,{isOptional:!0,defaultValue:!1})}),A.ElementSelectionQuery,"Return all rings or those with the specified fingerprint and/or only aromatic rings."),queryInSelection:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),query:(0,r.ef)(A.ElementSelectionQuery),"in-complement":(0,r.ef)(e.Z.Bool,{isOptional:!0,defaultValue:!1})}),A.ElementSelectionQuery,"Executes query only on atoms that are in the source selection."),empty:(0,t.HR)(r.d3.None,A.ElementSelectionQuery,"Nada.")},modifier:{"@header":"Selection Modifications",queryEach:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),query:(0,r.ef)(A.ElementSelectionQuery)}),A.ElementSelectionQuery,"Query every atom set in the input selection separately."),intersectBy:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),by:(0,r.ef)(A.ElementSelectionQuery)}),A.ElementSelectionQuery,"Intersect each atom set from the first sequence from atoms in the second one."),exceptBy:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),by:(0,r.ef)(A.ElementSelectionQuery)}),A.ElementSelectionQuery,"Remove all atoms from 'selection' that occur in 'by'."),unionBy:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),by:(0,r.ef)(A.ElementSelectionQuery)}),A.ElementSelectionQuery,"For each atom set A in the orginal sequence, combine all atoms sets in the target selection that intersect with A."),union:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery)}),A.ElementSelectionQuery,"Collects all atom sets in the sequence into a single atom set."),cluster:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),"min-distance":(0,r.ef)(e.Z.Num,{isOptional:!0,defaultValue:0}),"max-distance":(0,r.ef)(e.Z.Num),"min-size":(0,r.ef)(e.Z.Num,{description:"Minimal number of sets to merge, must be at least 2",isOptional:!0,defaultValue:2}),"max-size":(0,r.ef)(e.Z.Num,{description:"Maximal number of sets to merge, if not set, no limit",isOptional:!0})}),A.ElementSelectionQuery,"Combines atom sets that have mutual distance in the interval [min-radius, max-radius]. Minimum/maximum size determines how many atom sets can be combined."),includeSurroundings:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),radius:(0,r.ef)(e.Z.Num),"atom-radius":(0,r.ef)(e.Z.Num,{isOptional:!0,defaultValue:0,description:"Value added to each atom before the distance check, for example VDW radius. Using this argument is computationally demanding."}),"as-whole-residues":(0,r.ef)(e.Z.Bool,{isOptional:!0})}),A.ElementSelectionQuery,"For each atom set in the selection, include all surrouding atoms/residues that are within the specified radius."),surroundingLigands:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),radius:(0,r.ef)(e.Z.Num),"include-water":(0,r.ef)(e.Z.Bool,{isOptional:!0,defaultValue:!0})}),A.ElementSelectionQuery,"Find all ligands components around the source query."),includeConnected:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),"bond-test":(0,r.ef)(e.Z.Bool,{isOptional:!0,defaultValue:"true for covalent bonds"}),"layer-count":(0,r.ef)(e.Z.Num,{isOptional:!0,defaultValue:1,description:"Number of bonded layers to include."}),"fixed-point":(0,r.ef)(e.Z.Bool,{isOptional:!0,defaultValue:!1,description:"Continue adding layers as long as new connections exist."}),"as-whole-residues":(0,r.ef)(e.Z.Bool,{isOptional:!0})}),A.ElementSelectionQuery,"Pick all atom sets that are connected to the target."),wholeResidues:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery)}),A.ElementSelectionQuery,"Expand the selection to whole residues."),expandProperty:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),property:(0,r.ef)(e.Z.AnyValue)}),A.ElementSelectionQuery,"To each atom set in the selection, add all atoms that have the same property value that was already present in the set.")},filter:{"@header":"Selection Filters",pick:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),test:(0,r.ef)(e.Z.Bool)}),A.ElementSelectionQuery,"Pick all atom sets that satisfy the test."),first:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery)}),A.ElementSelectionQuery,"Take the 1st atom set in the sequence."),withSameAtomProperties:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),source:(0,r.ef)(A.ElementSelectionQuery),property:(0,r.ef)(e.Z.Any)}),A.ElementSelectionQuery,"Pick all atom sets for which the set of given atom properties is a subset of the source properties."),intersectedBy:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),by:(0,r.ef)(A.ElementSelectionQuery)}),A.ElementSelectionQuery,"Pick all atom sets that have non-zero intersection with the target."),within:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),target:(0,r.ef)(A.ElementSelectionQuery),"min-radius":(0,r.ef)(e.Z.Num,{isOptional:!0,defaultValue:0}),"max-radius":(0,r.ef)(e.Z.Num),"atom-radius":(0,r.ef)(e.Z.Num,{isOptional:!0,defaultValue:0,description:"Value added to each atom before the distance check, for example VDW radius. Using this argument is computationally demanding."}),invert:(0,r.ef)(e.Z.Bool,{isOptional:!0,defaultValue:!1,description:"If true, pick only atom sets that are further than the specified radius."})}),A.ElementSelectionQuery,"Pick all atom sets from selection that have any atom within the radius of any atom from target."),isConnectedTo:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery),target:(0,r.ef)(A.ElementSelectionQuery),"bond-test":(0,r.ef)(e.Z.Bool,{isOptional:!0,defaultValue:"true for covalent bonds"}),disjunct:(0,r.ef)(e.Z.Bool,{isOptional:!0,defaultValue:!0,description:"If true, there must exist a bond to an atom that lies outside the given atom set to pass test."}),invert:(0,r.ef)(e.Z.Bool,{isOptional:!0,defaultValue:!1,description:"If true, return atom sets that are not connected."})}),A.ElementSelectionQuery,"Pick all atom sets that are connected to the target.")},combinator:{"@header":"Selection Combinators",intersect:(0,t.HR)(r.d3.List(A.ElementSelectionQuery),A.ElementSelectionQuery,"Return all unique atom sets that appear in all of the source selections."),merge:(0,t.HR)(r.d3.List(A.ElementSelectionQuery),A.ElementSelectionQuery,"Merges multiple selections into a single one. Only unique atom sets are kept."),distanceCluster:(0,t.HR)(r.d3.Dictionary({matrix:(0,r.ef)(o.Or.List(o.Or.List(e.Z.Num)),{description:"Distance matrix, represented as list of rows (num[][])). Lower triangle is min distance, upper triangle is max distance."}),selections:(0,r.ef)(o.Or.List(A.ElementSelectionQuery),{description:"A list of held selections."})}),A.ElementSelectionQuery,"Pick combinations of atom sets from the source sequences that are mutually within distances specified by a matrix.")},atomSet:{"@header":"Atom Sets",atomCount:(0,t.HR)(r.d3.None,e.Z.Num),countQuery:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementSelectionQuery)}),e.Z.Num,"Counts the number of occurences of a specific query inside the current atom set."),reduce:(0,t.HR)(r.d3.Dictionary({initial:(0,r.ef)(e.Z.Variable("a",e.Z.AnyValue,!0),{description:"Initial value assigned to slot.atom-set-reduce. Current atom is set to the 1st atom of the current set for this."}),value:(0,r.ef)(e.Z.Variable("a",e.Z.AnyValue,!0),{description:"Expression executed for each atom in the set"})}),e.Z.Variable("a",e.Z.AnyValue,!0),"Execute the value expression for each atom in the current atom set and return the result. Works the same way as Array.reduce in JavaScript (``result = value(value(...value(initial)))``)"),propertySet:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(o.Or.ConstrainedVar)}),o.Or.Set(o.Or.ConstrainedVar),"Returns a set with all values of the given property in the current atom set.")},atomProperty:{"@header":"Atom Properties",core:{"@header":"Core Properties",elementSymbol:l(A.ElementSymbol),vdw:l(e.Z.Num,"Van der Waals radius"),mass:l(e.Z.Num,"Atomic weight"),atomicNumber:l(e.Z.Num,"Atomic number"),x:l(e.Z.Num,"Cartesian X coordinate"),y:l(e.Z.Num,"Cartesian Y coordinate"),z:l(e.Z.Num,"Cartesian Z coordinate"),atomKey:l(e.Z.AnyValue,"Unique value for each atom. Main use case is grouping of atoms."),bondCount:(0,t.HR)(r.d3.Dictionary({0:(0,r.ef)(A.ElementReference,{isOptional:!0,defaultValue:"slot.current-atom"}),flags:(0,r.ef)(A.BondFlags,{isOptional:!0,defaultValue:"covalent"})}),e.Z.Num,"Number of bonds (by default only covalent bonds are counted)."),sourceIndex:l(e.Z.Num,"Index of the atom/element in the input file."),operatorName:l(e.Z.Str,"Name of the symmetry operator applied to this element."),operatorKey:l(e.Z.Num,"Key of the symmetry operator applied to this element."),modelIndex:l(e.Z.Num,"Index of the model in the input file."),modelLabel:l(e.Z.Str,"Label/header of the model in the input file.")},topology:{connectedComponentKey:l(e.Z.AnyValue,"Unique value for each connected component.")},macromolecular:{"@header":"Macromolecular Properties (derived from the mmCIF format)",authResidueId:l(A.ResidueId,"type.auth-residue-id symbol executed on current atom's residue"),labelResidueId:l(A.ResidueId,"type.label-residue-id symbol executed on current atom's residue"),residueKey:l(e.Z.AnyValue,"Unique value for each tuple ``(label_entity_id,auth_asym_id, auth_seq_id, pdbx_PDB_ins_code)``, main use case is grouping of atoms"),chainKey:l(e.Z.AnyValue,"Unique value for each tuple ``(label_entity_id, auth_asym_id)``, main use case is grouping of atoms"),entityKey:l(e.Z.AnyValue,"Unique value for each tuple ``label_entity_id``, main use case is grouping of atoms"),isHet:l(e.Z.Bool,"Equivalent to atom_site.group_PDB !== ATOM"),id:l(e.Z.Num,"_atom_site.id"),label_atom_id:l(A.AtomName),label_alt_id:l(e.Z.Str),label_comp_id:l(e.Z.Str),label_asym_id:l(e.Z.Str),label_entity_id:l(e.Z.Str),label_seq_id:l(e.Z.Num),auth_atom_id:l(A.AtomName),auth_comp_id:l(e.Z.Str),auth_asym_id:l(e.Z.Str),auth_seq_id:l(e.Z.Num),pdbx_PDB_ins_code:l(e.Z.Str),pdbx_formal_charge:l(e.Z.Num),occupancy:l(e.Z.Num),B_iso_or_equiv:l(e.Z.Num),entityType:l(A.EntityType,"Type of the entity as defined in mmCIF (polymer, non-polymer, branched, water)"),entitySubtype:l(A.EntitySubtype,"Subtype of the entity as defined in mmCIF _entity_poly.type and _pdbx_entity_branch.type (other, polypeptide(D), polypeptide(L), polydeoxyribonucleotide, polyribonucleotide, polydeoxyribonucleotide/polyribonucleotide hybrid, cyclic-pseudo-peptide, peptide nucleic acid, oligosaccharide)"),entityPrdId:l(e.Z.Str,"The PRD ID of the entity."),entityDescription:l(o.Or.List(e.Z.Str)),objectPrimitive:l(A.ObjectPrimitive,"Type of the primitive object used to model this segment as defined in mmCIF/IHM (atomistic, sphere, gaussian, other)"),secondaryStructureKey:l(e.Z.AnyValue,"Unique value for each secondary structure element."),secondaryStructureFlags:l(A.SecondaryStructureFlags),isModified:l(e.Z.Bool,"True if the atom belongs to modification of a standard residue."),modifiedParentName:l(e.Z.Str,"'3-letter' code of the modifed parent residue."),isNonStandard:l(e.Z.Bool,"True if this is a non-standard residue."),chemCompType:l(e.Z.Str,"Type of the chemical component as defined in mmCIF.")}},bondProperty:{"@header":"Bond Properties",flags:m(A.BondFlags),order:m(e.Z.Num),key:m(e.Z.Num),length:m(e.Z.Num),atomA:m(A.ElementReference),atomB:m(A.ElementReference)}}},3170:(tn,Ue,n)=>{"use strict";n.d(Ue,{Bm:()=>y,EX:()=>t,d3:()=>r,ef:()=>o,vy:()=>A});var r,e=n(9920);function o(c,i){const{description:v,isOptional:O=!1,isRest:b=!1,defaultValue:_}=i||{};return{type:c,isOptional:O,isRest:b,defaultValue:_,description:v}}function t(c,i,v,O){const b=function(_){return e.r.Apply(e.r.Symbol(b.id),_)};return b.info={namespace:"",name:c,description:O},b.id="",b.args=i,b.type=v,b}function A(c,i,v,O){const b=function(_){return e.r.Apply(e.r.Symbol(b.id),_)};return b.info={namespace:c,name:i,description:O},b.id=`${c}.${i}`,b.args=r.None,b.type=v,b}function y(c){return"function"==typeof c&&!!c.info&&!!c.args&&"string"==typeof c.info.namespace&&!!c.type}!function(c){function i(O){return{kind:"dictionary",map:O,"@type":0}}c.None=i({}),c.Dictionary=i,c.List=function v(O,b){const{nonEmpty:_=!1}=b||{};return{kind:"list",type:O,nonEmpty:_,"@type":0}}}(r||(r={}))},6430:(tn,Ue,n)=>{"use strict";var e;n.d(Ue,{Z:()=>e}),function(o){function t(v,O,b){return{kind:"value",namespace:v,name:O,parent:b}}function c(v,O,b,_){const M=Object.create(null);for(const I of _)M[I]=!0;return{kind:"oneof",namespace:v,name:O,type:b,values:M}}o.Variable=function r(v,O,b){return{kind:"variable",name:v,type:O,isConstraint:b}},o.Value=t,o.Container=function A(v,O,b,_){return{kind:"container",namespace:v,name:O,child:b,alias:_}},o.Union=function y(v){return{kind:"union",types:v}},o.OneOf=c,o.Any={kind:"any"},o.AnyValue={kind:"any-value"},o.Num=t("","Number"),o.Str=t("","String"),o.Bool=c("","Bool",o.Str,["true","false"]),o.oneOfValues=function i({values:v}){return Object.keys(v).sort()}}(e||(e={}))},7232:(tn,Ue,n)=>{"use strict";n.d(Ue,{Bg:()=>v,TO:()=>i,oY:()=>t,wE:()=>M});var e=n(9920),o=n(9136);const t=new class r{constructor(){this.map=new Map}removeSymbol(l){this.map.delete(l.symbol.id)}addSymbol(l){this.map.has(l.symbol.id)&&console.warn(`Symbol '${l.symbol.id}' already added. Call removeSymbol/removeCustomProps re-adding the symbol.`),this.map.set(l.symbol.id,l)}addCustomProp(l){if(l.symbols)for(const m of Object.keys(l.symbols))this.addSymbol(l.symbols[m])}removeCustomProp(l){if(l.symbols)for(const m of Object.keys(l.symbols))this.removeSymbol(l.symbols[m])}getRuntime(l){return this.map.get(l)}};class A{constructor(l){this.table=l,this.constQueryContext=new o.cY(o.oE.Empty)}}var y,I,c,i,v;(I=y||(y={})).Const=function l(u){return{kind:"const",value:u}},I.Dynamic=function m(u){return{kind:"dynamic",runtime:u}},function(I){I.Const=function l(u){return{isConst:!0,fn:function(s){return u}}},I.Dynamic=function m(u){return{isConst:!1,fn:u}}}(c||(c={})),function(I){I.forEachEval=function l(m,u,d,s){if("number"==typeof m.length)for(let C=0,h=m.length;C{"use strict";n.d(Ue,{oY:()=>e.oY,Bg:()=>e.Bg,wE:()=>e.wE});var e=n(7232),o=n(643),r=n(9136),t=n(2434),A=n(9986),y=n(7785),c=n(2008),i=n(8382),v=n(5988),O=n(6115);const b=e.Bg.Const,_=e.Bg.Dynamic,M=[b(o.AN.core.type.bool,function(s,C){return!!C[0](s)}),b(o.AN.core.type.num,function(s,C){return+C[0](s)}),b(o.AN.core.type.str,function(s,C){return""+C[0](s)}),b(o.AN.core.type.list,function(s,C){return e.TO.forEachEval(C,s,(h,a,S)=>S[a]=h,[])}),b(o.AN.core.type.set,function(s,C){return e.TO.forEachEval(C,s,function(a,S,D){return D.add(a)},new Set)}),b(o.AN.core.type.regex,function(s,C){return new RegExp(C[0](s),C[1]&&C[1](s)||"")}),b(o.AN.core.type.bitflags,function(s,C){return+C[0](s)}),b(o.AN.core.type.compositeKey,function(s,C){return e.TO.forEachEval(C,s,(h,a,S)=>S[a]=""+h,[]).join("-")}),b(o.AN.core.logic.not,(d,s)=>!s[0](d)),b(o.AN.core.logic.and,(d,s)=>{if("number"==typeof s.length){for(let C=0,h=s.length;C{if("number"==typeof s.length){for(let C=0,h=s.length;Cs[0](d)===s[1](d)),b(o.AN.core.rel.neq,(d,s)=>s[0](d)!==s[1](d)),b(o.AN.core.rel.lt,(d,s)=>s[0](d)s[0](d)<=s[1](d)),b(o.AN.core.rel.gr,(d,s)=>s[0](d)>s[1](d)),b(o.AN.core.rel.gre,(d,s)=>s[0](d)>=s[1](d)),b(o.AN.core.rel.inRange,(d,s)=>{const C=s[0](d);return C>=s[1](d)&&C<=s[2](d)}),b(o.AN.core.math.add,(d,s)=>{let C=0;if("number"==typeof s.length)for(let h=0,a=s.length;h{let C=0;if("number"==typeof s.length){if(1===s.length)return-s[0](d);C=s[0](d)||0;for(let h=1,a=s.length;h{let C=1;if("number"==typeof s.length)for(let h=0,a=s.length;hs[0](d)/s[1](d)),b(o.AN.core.math.pow,(d,s)=>Math.pow(s[0](d),s[1](d))),b(o.AN.core.math.mod,(d,s)=>s[0](d)%s[1](d)),b(o.AN.core.math.min,(d,s)=>{let C=Number.POSITIVE_INFINITY;if("number"==typeof s.length)for(let h=0,a=s.length;h{let C=Number.NEGATIVE_INFINITY;if("number"==typeof s.length)for(let h=0,a=s.length;h(0,i.m1)(s[0](d),s[1](d))),b(o.AN.core.math.sortedCantorPairing,(d,s)=>(0,i.bd)(s[0](d),s[1](d))),b(o.AN.core.math.invertCantorPairing,(d,s)=>(0,i.Ao)([0,0],s[0](d))),b(o.AN.core.math.floor,(d,s)=>Math.floor(s[0](d))),b(o.AN.core.math.ceil,(d,s)=>Math.ceil(s[0](d))),b(o.AN.core.math.roundInt,(d,s)=>Math.round(s[0](d))),b(o.AN.core.math.trunc,(d,s)=>Math.trunc(s[0](d))),b(o.AN.core.math.abs,(d,s)=>Math.abs(s[0](d))),b(o.AN.core.math.sign,(d,s)=>Math.sign(s[0](d))),b(o.AN.core.math.sqrt,(d,s)=>Math.sqrt(s[0](d))),b(o.AN.core.math.cbrt,(d,s)=>Math.cbrt(s[0](d))),b(o.AN.core.math.sin,(d,s)=>Math.sin(s[0](d))),b(o.AN.core.math.cos,(d,s)=>Math.cos(s[0](d))),b(o.AN.core.math.tan,(d,s)=>Math.tan(s[0](d))),b(o.AN.core.math.asin,(d,s)=>Math.asin(s[0](d))),b(o.AN.core.math.acos,(d,s)=>Math.acos(s[0](d))),b(o.AN.core.math.atan,(d,s)=>Math.atan(s[0](d))),b(o.AN.core.math.sinh,(d,s)=>Math.sinh(s[0](d))),b(o.AN.core.math.cosh,(d,s)=>Math.cosh(s[0](d))),b(o.AN.core.math.tanh,(d,s)=>Math.tanh(s[0](d))),b(o.AN.core.math.exp,(d,s)=>Math.exp(s[0](d))),b(o.AN.core.math.log,(d,s)=>Math.log(s[0](d))),b(o.AN.core.math.log10,(d,s)=>Math.log10(s[0](d))),b(o.AN.core.math.atan2,(d,s)=>Math.atan2(s[0](d),s[1](d))),b(o.AN.core.str.match,(d,s)=>s[0](d).test(s[1](d))),b(o.AN.core.str.concat,(d,s)=>{const C=[];if("number"==typeof s.length)for(let h=0,a=s.length;hs[0](d)[s[1](d)]),b(o.AN.core.list.equal,(d,s)=>(0,O.af)(s[0](d),s[1](d))),b(o.AN.core.set.has,function(s,C){return C[0](s).has(C[1](s))}),b(o.AN.core.set.isSubset,function(s,C){return A.M.isSuperset(C[1](s),C[0](s))}),b(o.AN.core.flags.hasAny,(d,s)=>{const C=s[1](d),h=s[0](d);return C?!!(h&C):!!h}),b(o.AN.core.flags.hasAll,(d,s)=>{const C=s[1](d),h=s[0](d);return C?(h&C)===C:!h}),b(o.AN.structureQuery.type.elementSymbol,(d,s)=>(0,t.F1)(s[0](d))),b(o.AN.structureQuery.type.atomName,(d,s)=>(0,y.r4)(s[0](d))),b(o.AN.structureQuery.type.bondFlags,(d,s)=>{let C=0;if("number"==typeof s.length)for(let h=0,a=s.length;hr.X$.elementFingerprint(function u(d,s){const C=[];if(!s)return C;if("number"==typeof s.length)for(let h=0,a=s.length;h{let C=0;if("number"==typeof s.length)for(let h=0,a=s.length;hr.RT.filters.pick(s[0],s.test)(d)),_(o.AN.structureQuery.filter.first,(d,s)=>r.RT.filters.first(s[0])(d)),_(o.AN.structureQuery.filter.withSameAtomProperties,(d,s)=>r.RT.filters.withSameAtomProperties(s[0],s.source,s.property)(d)),_(o.AN.structureQuery.filter.intersectedBy,(d,s)=>r.RT.filters.areIntersectedBy(s[0],s.by)(d)),_(o.AN.structureQuery.filter.within,(d,s)=>{var C,h,a;return r.RT.filters.within({query:s[0],target:s.target,minRadius:null===(C=s["min-radius"])||void 0===C?void 0:C.call(s,d),maxRadius:null===(h=s["max-radius"])||void 0===h?void 0:h.call(s,d),elementRadius:s["atom-radius"],invert:null===(a=s.invert)||void 0===a?void 0:a.call(s,d)})(d)}),_(o.AN.structureQuery.filter.isConnectedTo,(d,s)=>{var C,h;return r.RT.filters.isConnectedTo({query:s[0],target:s.target,disjunct:null===(C=s.disjunct)||void 0===C?void 0:C.call(s,d),invert:null===(h=s.invert)||void 0===h?void 0:h.call(s,d),bondTest:s["bond-test"]})(d)}),_(o.AN.structureQuery.generator.atomGroups,function(s,C){return r.RT.generators.atoms({entityTest:C["entity-test"],chainTest:C["chain-test"],residueTest:C["residue-test"],atomTest:C["atom-test"],groupBy:C["group-by"]})(s)}),_(o.AN.structureQuery.generator.all,function(s){return r.RT.generators.all(s)}),_(o.AN.structureQuery.generator.empty,function(s){return r.RT.generators.none(s)}),_(o.AN.structureQuery.generator.bondedAtomicPairs,function(s,C){return r.RT.generators.bondedAtomicPairs(C&&C[0])(s)}),_(o.AN.structureQuery.generator.rings,function(s,C){var h,a;return r.RT.generators.rings(null===(h=C?.fingerprint)||void 0===h?void 0:h.call(C,s),null===(a=C?.["only-aromatic"])||void 0===a?void 0:a.call(C,s))(s)}),_(o.AN.structureQuery.generator.queryInSelection,function(s,C){var h;return r.RT.generators.querySelection(C[0],C.query,null===(h=C["in-complement"])||void 0===h?void 0:h.call(C,s))(s)}),_(o.AN.structureQuery.modifier.includeSurroundings,function(s,C){return r.RT.modifiers.includeSurroundings(C[0],{radius:C.radius(s),wholeResidues:!(!C["as-whole-residues"]||!C["as-whole-residues"](s)),elementRadius:C["atom-radius"]})(s)}),_(o.AN.structureQuery.modifier.surroundingLigands,function(s,C){return r.RT.modifiers.surroundingLigands({query:C[0],radius:C.radius(s),includeWater:!(!C["include-water"]||!C["include-water"](s))})(s)}),_(o.AN.structureQuery.modifier.wholeResidues,function(s,C){return r.RT.modifiers.wholeResidues(C[0])(s)}),_(o.AN.structureQuery.modifier.union,function(s,C){return r.RT.modifiers.union(C[0])(s)}),_(o.AN.structureQuery.modifier.expandProperty,function(s,C){return r.RT.modifiers.expandProperty(C[0],C.property)(s)}),_(o.AN.structureQuery.modifier.exceptBy,function(s,C){return r.RT.modifiers.exceptBy(C[0],C.by)(s)}),_(o.AN.structureQuery.modifier.includeConnected,function(s,C){var h,a;return r.RT.modifiers.includeConnected({query:C[0],bondTest:C["bond-test"],wholeResidues:!(!C["as-whole-residues"]||!C["as-whole-residues"](s)),layerCount:C["layer-count"]&&C["layer-count"](s)||1,fixedPoint:null!==(a=null===(h=C["fixed-point"])||void 0===h?void 0:h.call(C,s))&&void 0!==a&&a})(s)}),_(o.AN.structureQuery.modifier.intersectBy,function(s,C){return r.RT.modifiers.intersectBy(C[0],C.by)(s)}),_(o.AN.structureQuery.combinator.merge,(d,s)=>r.RT.combinators.merge(s)(d)),_(o.AN.structureQuery.atomProperty.core.elementSymbol,I(r.StructureProperties.atom.type_symbol)),_(o.AN.structureQuery.atomProperty.core.vdw,(d,s)=>(0,c.sO)(r.StructureProperties.atom.type_symbol(s&&s[0]&&s[0](d)||d.element))),_(o.AN.structureQuery.atomProperty.core.mass,(d,s)=>(0,c.A9)(r.StructureProperties.atom.type_symbol(s&&s[0]&&s[0](d)||d.element))),_(o.AN.structureQuery.atomProperty.core.atomicNumber,(d,s)=>(0,c.PR)(r.StructureProperties.atom.type_symbol(s&&s[0]&&s[0](d)||d.element))),_(o.AN.structureQuery.atomProperty.core.x,I(r.StructureProperties.atom.x)),_(o.AN.structureQuery.atomProperty.core.y,I(r.StructureProperties.atom.y)),_(o.AN.structureQuery.atomProperty.core.z,I(r.StructureProperties.atom.z)),_(o.AN.structureQuery.atomProperty.core.sourceIndex,I(r.StructureProperties.atom.sourceIndex)),_(o.AN.structureQuery.atomProperty.core.operatorName,I(r.StructureProperties.unit.operator_name)),_(o.AN.structureQuery.atomProperty.core.operatorKey,I(r.StructureProperties.unit.operator_key)),_(o.AN.structureQuery.atomProperty.core.modelIndex,I(r.StructureProperties.unit.model_index)),_(o.AN.structureQuery.atomProperty.core.modelLabel,I(r.StructureProperties.unit.model_label)),_(o.AN.structureQuery.atomProperty.core.atomKey,(d,s)=>{const C=s&&s[0]&&s[0](d)||d.element;return(0,i.m1)(C.unit.id,C.element)}),_(o.AN.structureQuery.atomProperty.macromolecular.residueKey,(d,s)=>r.iZ.residueIndex(s&&s[0]&&s[0](d)||d.element)),_(o.AN.structureQuery.atomProperty.macromolecular.chainKey,(d,s)=>r.iZ.chainIndex(s&&s[0]&&s[0](d)||d.element)),_(o.AN.structureQuery.atomProperty.macromolecular.entityKey,(d,s)=>r.iZ.entityIndex(s&&s[0]&&s[0](d)||d.element)),_(o.AN.structureQuery.atomProperty.macromolecular.id,I(r.StructureProperties.atom.id)),_(o.AN.structureQuery.atomProperty.macromolecular.isHet,(d,s)=>"ATOM"!==r.StructureProperties.residue.group_PDB(s&&s[0]&&s[0](d)||d.element)),_(o.AN.structureQuery.atomProperty.macromolecular.label_atom_id,I(r.StructureProperties.atom.label_atom_id)),_(o.AN.structureQuery.atomProperty.macromolecular.label_alt_id,I(r.StructureProperties.atom.label_alt_id)),_(o.AN.structureQuery.atomProperty.macromolecular.label_comp_id,I(r.StructureProperties.atom.label_comp_id)),_(o.AN.structureQuery.atomProperty.macromolecular.label_seq_id,I(r.StructureProperties.residue.label_seq_id)),_(o.AN.structureQuery.atomProperty.macromolecular.label_asym_id,I(r.StructureProperties.chain.label_asym_id)),_(o.AN.structureQuery.atomProperty.macromolecular.label_entity_id,I(r.StructureProperties.entity.id)),_(o.AN.structureQuery.atomProperty.macromolecular.auth_atom_id,I(r.StructureProperties.atom.auth_atom_id)),_(o.AN.structureQuery.atomProperty.macromolecular.auth_comp_id,I(r.StructureProperties.atom.auth_comp_id)),_(o.AN.structureQuery.atomProperty.macromolecular.auth_seq_id,I(r.StructureProperties.residue.auth_seq_id)),_(o.AN.structureQuery.atomProperty.macromolecular.auth_asym_id,I(r.StructureProperties.chain.auth_asym_id)),_(o.AN.structureQuery.atomProperty.macromolecular.pdbx_PDB_ins_code,I(r.StructureProperties.residue.pdbx_PDB_ins_code)),_(o.AN.structureQuery.atomProperty.macromolecular.pdbx_formal_charge,I(r.StructureProperties.atom.pdbx_formal_charge)),_(o.AN.structureQuery.atomProperty.macromolecular.occupancy,I(r.StructureProperties.atom.occupancy)),_(o.AN.structureQuery.atomProperty.macromolecular.B_iso_or_equiv,I(r.StructureProperties.atom.B_iso_or_equiv)),_(o.AN.structureQuery.atomProperty.macromolecular.entityType,I(r.StructureProperties.entity.type)),_(o.AN.structureQuery.atomProperty.macromolecular.entitySubtype,I(r.StructureProperties.entity.subtype)),_(o.AN.structureQuery.atomProperty.macromolecular.entityPrdId,I(r.StructureProperties.entity.prd_id)),_(o.AN.structureQuery.atomProperty.macromolecular.entityDescription,I(r.StructureProperties.entity.pdbx_description)),_(o.AN.structureQuery.atomProperty.macromolecular.objectPrimitive,I(r.StructureProperties.unit.object_primitive)),_(o.AN.structureQuery.atomProperty.macromolecular.isNonStandard,I(r.StructureProperties.residue.isNonStandard)),_(o.AN.structureQuery.atomProperty.macromolecular.secondaryStructureKey,I(r.StructureProperties.residue.secondary_structure_key)),_(o.AN.structureQuery.atomProperty.macromolecular.secondaryStructureFlags,I(r.StructureProperties.residue.secondary_structure_type)),_(o.AN.structureQuery.atomProperty.macromolecular.chemCompType,I(r.StructureProperties.residue.chem_comp_type)),_(o.AN.structureQuery.atomSet.atomCount,function(s,C){return r.RT.atomset.atomCount(s)}),_(o.AN.structureQuery.atomSet.countQuery,function(s,C){return r.RT.atomset.countQuery(C[0])(s)}),_(o.AN.structureQuery.atomSet.propertySet,function(s,C){return r.RT.atomset.propertySet(C[0])(s)}),_(o.AN.structureQuery.bondProperty.order,(d,s)=>d.atomicBond.order),_(o.AN.structureQuery.bondProperty.flags,(d,s)=>d.atomicBond.type),_(o.AN.structureQuery.bondProperty.key,(d,s)=>d.atomicBond.key),_(o.AN.structureQuery.bondProperty.atomA,(d,s)=>d.atomicBond.a),_(o.AN.structureQuery.bondProperty.atomB,(d,s)=>d.atomicBond.b),_(o.AN.structureQuery.bondProperty.length,(d,s)=>d.atomicBond.length),_(o.AN.internal.generator.bundleElement,function(s,C){return(0,v.bundleElementImpl)(C.groupedUnits(s),C.ranges(s),C.set(s))}),_(o.AN.internal.generator.bundle,function(s,C){return(0,v.bundleGenerator)(C.elements(s))(s)}),_(o.AN.internal.generator.current,function(s,C){return s.tryGetCurrentSelection()})];function I(d){return(s,C)=>d(C&&C[0]&&C[0](s)||s.element)}function l(d,s){return d|(t.I$.isName(s)?t.I$.fromName(s):0)}function m(d,s){switch(s.toLowerCase()){case"helix":return 2|d;case"alpha":return 4098|d;case"pi":return 32770|d;case"310":return 2050|d;case"beta":return 4|d;case"strand":return 4194308|d;case"sheet":return 8388612|d;case"turn":return 16|d;case"bend":return 8|d;case"coil":return 536870912|d;default:return d}}!function(){for(const d of M)e.oY.addSymbol(d)}()},9498:(tn,Ue,n)=>{"use strict";n.d(Ue,{e:()=>Wo});var e=n(9677),o=n(9920),r=n(3170),t=n(643),A=n(6430),y=n(6452),c=n(9767);function i(We){return Object.keys(We).filter(Pt=>!isNaN(Pt)).map(Pt=>+Pt).sort((Pt,Sn)=>Pt-Sn).map(Pt=>We[Pt])}function v(We,Pt,Sn){return We&&void 0!==We[Pt]?We[Pt]:Sn}function _(We,...Pt){return{kind:"alias",aliases:Pt,symbol:We}}function M(We,Pt,...Sn){return We.info.namespace="molscript-macro",We.id=`molscript-macro.${We.info.name}`,{kind:"macro",symbol:We,translate:Pt,aliases:[We.info.name,...Sn]}}function I(We){return"alias"===We.kind||"macro"===We.kind}const l=[["Core symbols",_(t.AN.core.type.bool,"bool"),_(t.AN.core.type.num,"num"),_(t.AN.core.type.str,"str"),_(t.AN.core.type.regex,"regex"),_(t.AN.core.type.list,"list"),_(t.AN.core.type.set,"set"),_(t.AN.core.type.compositeKey,"composite-key"),_(t.AN.core.logic.not,"not"),_(t.AN.core.logic.and,"and"),_(t.AN.core.logic.or,"or"),_(t.AN.core.ctrl.if,"if"),_(t.AN.core.ctrl.fn,"fn"),_(t.AN.core.ctrl.eval,"eval"),_(t.AN.core.math.add,"add","+"),_(t.AN.core.math.sub,"sub","-"),_(t.AN.core.math.mult,"mult","*"),_(t.AN.core.math.div,"div","/"),_(t.AN.core.math.pow,"pow","**"),_(t.AN.core.math.mod,"mod"),_(t.AN.core.math.min,"min"),_(t.AN.core.math.max,"max"),_(t.AN.core.math.cantorPairing,"cantor-pairing"),_(t.AN.core.math.sortedCantorPairing,"sorted-cantor-pairing"),_(t.AN.core.math.invertCantorPairing,"invert-cantor-pairing"),_(t.AN.core.math.floor,"floor"),_(t.AN.core.math.ceil,"ceil"),_(t.AN.core.math.roundInt,"round"),_(t.AN.core.math.trunc,"trunc"),_(t.AN.core.math.abs,"abs"),_(t.AN.core.math.sign,"sign"),_(t.AN.core.math.sqrt,"sqrt"),_(t.AN.core.math.cbrt,"cbrt"),_(t.AN.core.math.sin,"sin"),_(t.AN.core.math.cos,"cos"),_(t.AN.core.math.tan,"tan"),_(t.AN.core.math.asin,"asin"),_(t.AN.core.math.acos,"acos"),_(t.AN.core.math.atan,"atan"),_(t.AN.core.math.sinh,"sinh"),_(t.AN.core.math.cosh,"cosh"),_(t.AN.core.math.tanh,"tanh"),_(t.AN.core.math.exp,"exp"),_(t.AN.core.math.log,"log"),_(t.AN.core.math.log10,"log10"),_(t.AN.core.math.atan2,"atan2"),_(t.AN.core.rel.eq,"eq","="),_(t.AN.core.rel.neq,"neq","!="),_(t.AN.core.rel.lt,"lt","<"),_(t.AN.core.rel.lte,"lte","<="),_(t.AN.core.rel.gr,"gr",">"),_(t.AN.core.rel.gre,"gre",">="),_(t.AN.core.rel.inRange,"in-range"),_(t.AN.core.str.concat,"concat"),_(t.AN.core.str.match,"regex.match"),_(t.AN.core.list.getAt,"list.get"),_(t.AN.core.set.has,"set.has"),_(t.AN.core.set.isSubset,"set.subset")],["Structure",["Types",_(t.AN.structureQuery.type.entityType,"ent-type"),_(t.AN.structureQuery.type.authResidueId,"auth-resid"),_(t.AN.structureQuery.type.labelResidueId,"label-resid"),_(t.AN.structureQuery.type.ringFingerprint,"ringfp"),_(t.AN.structureQuery.type.bondFlags,"bond-flags")],["Slots",_(t.AN.structureQuery.slot.elementSetReduce,"atom.set.reduce.value")],["Generators",_(t.AN.structureQuery.generator.atomGroups,"sel.atom.atom-groups"),_(t.AN.structureQuery.generator.queryInSelection,"sel.atom.query-in-selection"),_(t.AN.structureQuery.generator.rings,"sel.atom.rings"),_(t.AN.structureQuery.generator.empty,"sel.atom.empty"),_(t.AN.structureQuery.generator.all,"sel.atom.all"),_(t.AN.structureQuery.generator.bondedAtomicPairs,"sel.atom.bonded-pairs"),M((0,r.EX)("sel.atom.atoms",r.d3.Dictionary({0:(0,r.ef)(A.Z.Bool,{isOptional:!0,defaultValue:!0,description:"Test applied to each atom."})}),y.O.ElementSelection,"A selection of singleton atom sets."),We=>c.J.struct.generator.atomGroups({"atom-test":v(We,0,!0)})),M((0,r.EX)("sel.atom.res",r.d3.Dictionary({0:(0,r.ef)(A.Z.Bool,{isOptional:!0,defaultValue:!0,description:"Test applied to the 1st atom of each residue."})}),y.O.ElementSelection,"A selection of atom sets grouped by residue."),We=>c.J.struct.generator.atomGroups({"residue-test":v(We,0,!0),"group-by":c.J.ammp("residueKey")})),M((0,r.EX)("sel.atom.chains",r.d3.Dictionary({0:(0,r.ef)(A.Z.Bool,{isOptional:!0,defaultValue:!0,description:"Test applied to the 1st atom of each chain."})}),y.O.ElementSelection,"A selection of atom sets grouped by chain."),We=>c.J.struct.generator.atomGroups({"chain-test":v(We,0,!0),"group-by":c.J.ammp("chainKey")}))],["Modifiers",_(t.AN.structureQuery.modifier.queryEach,"sel.atom.query-each"),_(t.AN.structureQuery.modifier.intersectBy,"sel.atom.intersect-by"),_(t.AN.structureQuery.modifier.exceptBy,"sel.atom.except-by"),_(t.AN.structureQuery.modifier.unionBy,"sel.atom.union-by"),_(t.AN.structureQuery.modifier.union,"sel.atom.union"),_(t.AN.structureQuery.modifier.cluster,"sel.atom.cluster"),_(t.AN.structureQuery.modifier.includeSurroundings,"sel.atom.include-surroundings"),_(t.AN.structureQuery.modifier.surroundingLigands,"sel.atom.surrounding-ligands"),_(t.AN.structureQuery.modifier.includeConnected,"sel.atom.include-connected"),_(t.AN.structureQuery.modifier.expandProperty,"sel.atom.expand-property")],["Filters",_(t.AN.structureQuery.filter.pick,"sel.atom.pick"),_(t.AN.structureQuery.filter.first,"sel.atom.first"),_(t.AN.structureQuery.filter.withSameAtomProperties,"sel.atom.with-same-atom-properties"),_(t.AN.structureQuery.filter.intersectedBy,"sel.atom.intersected-by"),_(t.AN.structureQuery.filter.within,"sel.atom.within"),_(t.AN.structureQuery.filter.isConnectedTo,"sel.atom.is-connected-to")],["Combinators",_(t.AN.structureQuery.combinator.intersect,"sel.atom.intersect"),_(t.AN.structureQuery.combinator.merge,"sel.atom.merge"),_(t.AN.structureQuery.combinator.distanceCluster,"sel.atom.dist-cluster")],["Atom Set Properties",_(t.AN.structureQuery.atomSet.atomCount,"atom.set.atom-count"),_(t.AN.structureQuery.atomSet.countQuery,"atom.set.count-query"),_(t.AN.structureQuery.atomSet.reduce,"atom.set.reduce"),_(t.AN.structureQuery.atomSet.propertySet,"atom.set.property")],["Atom Properties",_(t.AN.structureQuery.atomProperty.core.elementSymbol,"atom.el"),_(t.AN.structureQuery.atomProperty.core.vdw,"atom.vdw"),_(t.AN.structureQuery.atomProperty.core.mass,"atom.mass"),_(t.AN.structureQuery.atomProperty.core.atomicNumber,"atom.atomic-number"),_(t.AN.structureQuery.atomProperty.core.x,"atom.x"),_(t.AN.structureQuery.atomProperty.core.y,"atom.y"),_(t.AN.structureQuery.atomProperty.core.z,"atom.z"),_(t.AN.structureQuery.atomProperty.core.sourceIndex,"atom.src-index"),_(t.AN.structureQuery.atomProperty.core.operatorName,"atom.op-name"),_(t.AN.structureQuery.atomProperty.core.operatorKey,"atom.op-key"),_(t.AN.structureQuery.atomProperty.core.modelIndex,"atom.model-index"),_(t.AN.structureQuery.atomProperty.core.modelLabel,"atom.model-label"),_(t.AN.structureQuery.atomProperty.core.atomKey,"atom.key"),_(t.AN.structureQuery.atomProperty.core.bondCount,"atom.bond-count"),_(t.AN.structureQuery.atomProperty.topology.connectedComponentKey,"atom.key.molecule"),_(t.AN.structureQuery.atomProperty.macromolecular.authResidueId,"atom.auth-resid"),_(t.AN.structureQuery.atomProperty.macromolecular.labelResidueId,"atom.label-resid"),_(t.AN.structureQuery.atomProperty.macromolecular.residueKey,"atom.key.res"),_(t.AN.structureQuery.atomProperty.macromolecular.chainKey,"atom.key.chain"),_(t.AN.structureQuery.atomProperty.macromolecular.entityKey,"atom.key.entity"),_(t.AN.structureQuery.atomProperty.macromolecular.isHet,"atom.is-het"),_(t.AN.structureQuery.atomProperty.macromolecular.id,"atom.id"),_(t.AN.structureQuery.atomProperty.macromolecular.label_atom_id,"atom.label_atom_id"),_(t.AN.structureQuery.atomProperty.macromolecular.label_alt_id,"atom.label_alt_id","atom.altloc"),_(t.AN.structureQuery.atomProperty.macromolecular.label_comp_id,"atom.label_comp_id"),_(t.AN.structureQuery.atomProperty.macromolecular.label_asym_id,"atom.label_asym_id"),_(t.AN.structureQuery.atomProperty.macromolecular.label_entity_id,"atom.label_entity_id"),_(t.AN.structureQuery.atomProperty.macromolecular.label_seq_id,"atom.label_seq_id"),_(t.AN.structureQuery.atomProperty.macromolecular.auth_atom_id,"atom.auth_atom_id","atom.name"),_(t.AN.structureQuery.atomProperty.macromolecular.auth_comp_id,"atom.auth_comp_id","atom.resname"),_(t.AN.structureQuery.atomProperty.macromolecular.auth_asym_id,"atom.auth_asym_id","atom.chain"),_(t.AN.structureQuery.atomProperty.macromolecular.auth_seq_id,"atom.auth_seq_id","atom.resno"),_(t.AN.structureQuery.atomProperty.macromolecular.pdbx_PDB_ins_code,"atom.pdbx_PDB_ins_code","atom.inscode"),_(t.AN.structureQuery.atomProperty.macromolecular.pdbx_formal_charge,"atom.pdbx_formal_charge"),_(t.AN.structureQuery.atomProperty.macromolecular.occupancy,"atom.occupancy"),_(t.AN.structureQuery.atomProperty.macromolecular.B_iso_or_equiv,"atom.B_iso_or_equiv","atom.bfactor"),_(t.AN.structureQuery.atomProperty.macromolecular.entityType,"atom.entity-type"),_(t.AN.structureQuery.atomProperty.macromolecular.entitySubtype,"atom.entity-subtype"),_(t.AN.structureQuery.atomProperty.macromolecular.entityPrdId,"atom.entity-prd-id"),_(t.AN.structureQuery.atomProperty.macromolecular.entityDescription,"atom.entity-description"),_(t.AN.structureQuery.atomProperty.macromolecular.objectPrimitive,"atom.object-primitive"),_(t.AN.structureQuery.atomProperty.macromolecular.chemCompType,"atom.chem-comp-type"),_(t.AN.structureQuery.atomProperty.macromolecular.secondaryStructureKey,"atom.key.sec-struct"),_(t.AN.structureQuery.atomProperty.macromolecular.isModified,"atom.is-modified"),_(t.AN.structureQuery.atomProperty.macromolecular.modifiedParentName,"atom.modified-parent")],["Bond Properties",_(t.AN.structureQuery.bondProperty.order,"bond.order"),_(t.AN.structureQuery.bondProperty.length,"bond.length"),_(t.AN.structureQuery.bondProperty.key,"bond.key"),_(t.AN.structureQuery.bondProperty.atomA,"bond.atom-a"),_(t.AN.structureQuery.bondProperty.atomB,"bond.atom-b"),M((0,r.EX)("bond.is",r.d3.List(y.O.BondFlag),A.Z.Bool,`Test if the current bond has at least one (or all if partial = false) of the specified flags: ${A.Z.oneOfValues(y.O.BondFlag).join(", ")}`),We=>c.J.core.flags.hasAny([c.J.struct.bondProperty.flags(),c.J.struct.type.bondFlags(i(We))]))]]],m=[];!function u(We){for(const Pt of We)I(Pt)?m.push(Pt):Pt instanceof Array&&u(Pt)}(l);const a=function(){const We=[],Pt=Object.create(null),Sn=e.th.create(),Nn=e.th.create();for(const Kn of m){for(const xr of Kn.aliases){if(We.push([xr,Kn]),Pt[xr])throw new Error(`Alias '${xr}' already in use.`);Pt[xr]=Kn}const dr=Kn.symbol.args;if("dictionary"===dr.kind)for(const xr of Object.keys(dr.map)){isNaN(xr)&&e.th.add(Sn,xr,xr);const Ft=dr.map[xr];"oneof"===Ft.type.kind&&A.Z.oneOfValues(Ft.type).forEach(Qt=>e.th.add(Nn,Qt,Qt))}else"oneof"===dr.type.kind&&A.Z.oneOfValues(dr.type).forEach(xr=>e.th.add(Nn,xr,xr))}return{symbolList:We,symbolMap:Pt,namedArgs:Sn.array,constants:Nn.array}}().symbolMap;function D(We){if(o.r.isLiteral(We))return We;if(o.r.isSymbol(We)){if(!a[We.name])return We;const xr=a[We.name];if("alias"===xr.kind)return o.r.Symbol(a[We.name].symbol.id);throw xr.translate([])}const Pt=o.r.isSymbol(We.head)&&!!a[We.head.name]&&"macro"===a[We.head.name].kind,Sn=Pt?We.head:D(We.head),Nn=Sn!==We.head;if(!We.args)return Pt?D(We.head):Nn?o.r.Apply(Sn):We;let dr,Kn=!1;if(o.r.isArgumentsArray(We.args)){dr=[];for(let xr=0,Ft=We.args.length;xr12?"...'":"'";return` at line ${Sn.line} column ${Sn.column}, got ${Nn>0?"'...":"'"}${We.slice(Nn,Nn+12)}${dr}`}(We,Pt)}`}(Pt,Sn);throw new Error(Nn)}}or(Pt){return f.alt(this,Pt)}trim(Pt){return this.wrap(Pt,Pt)}wrap(Pt,Sn){return p(1,"string"==typeof Pt?f.string(Pt):Pt,this,"string"==typeof Sn?f.string(Sn):Sn)}thru(Pt){return Pt(this)}then(Pt){return p(1,this,Pt)}many(){return new f((Pt,Sn)=>{const Nn=[];let Kn;for(;;){if(Kn=L(this._(Pt,Sn),Kn),!Kn.status)return L(E(Sn,Nn),Kn);if(Sn===Kn.index)throw new Error("infinite loop detected in .many() parser --- calling .many() on a parser which can accept zero characters is usually the cause");Sn=Kn.index,Nn.push(Kn.value)}})}times(Pt,Sn){const Nn=typeof Sn>"u"?Pt:Sn;return new f((Kn,dr)=>{const xr=[];let Ft,Qt,ht;for(ht=0;htPt)}atMost(Pt){return this.times(0,Pt)}atLeast(Pt){return f.seq(this.times(Pt),this.many()).map(Sn=>[...Sn[0],...Sn[1]])}map(Pt){return new f((Sn,Nn)=>{const Kn=this._(Sn,Nn);return Kn.status?L(E(Kn.index,Pt(Kn.value)),Kn):Kn})}skip(Pt){return p(0,this,Pt)}mark(){return f.seq(f.index,this,f.index).map(Pt=>({start:Pt[0],value:Pt[1],end:Pt[2]}))}node(Pt){return f.seq(f.index,this,f.index).map(Sn=>({name:Pt,start:Sn[0],value:Sn[1],end:Sn[2]}))}sepBy(Pt){return f.sepBy(this,Pt)}sepBy1(Pt){return f.sepBy1(this,Pt)}lookahead(Pt){return this.skip(f.lookahead(Pt))}notFollowedBy(Pt){return this.skip(f.notFollowedBy(Pt))}desc(Pt){return new f((Sn,Nn)=>{const Kn=this._(Sn,Nn);return Kn.status||(Kn.expected=[Pt]),Kn})}fallback(Pt){return this.or(f.succeed(Pt))}ap(Pt){return f.seq(Pt,this).map(([Sn,Nn])=>Sn(Nn))}chain(Pt){return new f((Sn,Nn)=>{const Kn=this._(Sn,Nn);return Kn.status?L(Pt(Kn.value)._(Sn,Kn.index),Kn):Kn})}}function p(We,...Pt){const Sn=Pt.length;return new f((Nn,Kn)=>{let dr,xr,Ft=Kn;for(let Qt=0;QtPt.furthest)return We;const Sn=We.furthest===Pt.furthest?function U(We,Pt){const Sn=We.length,Nn=Pt.length;if(0===Sn)return Pt;if(0===Nn)return We;const Kn=new Set,dr=[];for(let xr=0;xr{let rr;const Vr=new Array(an);let tr=Fn;for(let Tr=0;Tr{let rr;for(let Vr=0;Vr[Fn[0],...Fn[1]])}function Ft(zt){const an=`'${zt}'`;if(1===zt.length){const Vn=zt.charCodeAt(0);return new We((Fn,rr)=>Fn.charCodeAt(rr)===Vn?E(rr+1,zt):T(rr,an))}return new We((Vn,Fn)=>{const rr=Fn+zt.length;return Vn.slice(Fn,rr)===zt?E(rr,zt):T(Fn,an)})}function pt(zt,an=0){const Vn=function ht(zt){return RegExp("^(?:"+zt.source+")",function Qt(zt){const an=""+zt;return an.slice(an.lastIndexOf("/")+1)}(zt))}(zt),Fn=""+zt;return new We((rr,Vr)=>{const tr=Vn.exec(rr.slice(Vr));return tr?0<=an&&an<=tr.length?E(Vr+tr[0].length,tr[an]):T(Vr,`invalid match group (0 to ${tr.length}) in ${Fn}`):T(Vr,Fn)})}function Xt(zt){return new We((an,Vn)=>E(Vn,zt))}function fn(zt){return new We((an,Vn)=>T(Vn,zt))}function Tt(zt){return new We((an,Vn)=>{const Fn=an.charAt(Vn);return Vn{const rr=zt()._;return an._=rr,rr(Vn,Fn)});return an}We.seqMap=function Pt(zt,an,Vn){const Fn=[].slice.call(arguments);if(0===Fn.length)throw new Error("seqMap needs at least one argument");const rr=Fn.pop();return function k(We){if("function"!=typeof We)throw new Error("not a function: "+We)}(rr),Nn.apply(null,Fn).map(function(Vr){return rr.apply(null,Vr)})},We.createLanguage=function Sn(zt){const an={};for(const Vn of Object.keys(zt))!function(Fn){an[Fn]=rt(()=>zt[Fn](an))}(Vn);return an},We.seq=Nn,We.alt=Kn,We.sepBy=function dr(zt,an){return xr(zt,an).or(Xt([]))},We.sepBy1=xr,We.string=Ft,We.regexp=pt,We.succeed=Xt,We.fail=fn,We.lookahead=function on(zt){if(function N(We){return We instanceof f}(zt))return new We((an,Vn)=>{const Fn=zt._(an,Vn);return Fn.status&&(Fn.index=Vn,Fn.value=null),Fn});if("string"==typeof zt)return on(Ft(zt));if(zt instanceof RegExp)return on(pt(zt));throw new Error("not a string, regexp, or parser: "+zt)},We.notFollowedBy=function En(zt){return new We((an,Vn)=>{const Fn=zt._(an,Vn);return Fn.status?T(Vn,'not "'+an.slice(Vn,Fn.index)+'"'):E(Vn,null)})},We.test=Tt,We.oneOf=function Fe(zt){return Tt(an=>zt.indexOf(an)>=0)},We.noneOf=function He(zt){return Tt(an=>zt.indexOf(an)<0)},We.range=function Ye(zt,an){return Tt(Vn=>zt<=Vn&&Vn<=an).desc(zt+"-"+an)},We.takeWhile=function ot(zt){return new We((an,Vn)=>{let Fn=Vn;for(;Fnan>=zt.length?T(an,"any character"):E(an+1,zt.charAt(an))),We.all=new We(function(zt,an){return E(zt.length,zt.slice(an))}),We.eof=new We(function(zt,an){return anf.alt(Kn,Xt,dr,xr).trim(Sn)),Kn=f.takeWhile(rt=>"`"!==rt).trim("`").map(Pt.str),dr=f.regexp(/[^()\[\]{};`,\n\r\s]+/).map(Pt.symb),xr=f.regexp(/\s*;+([^\n\r]*)\n/,1).map(Pt.comment),Ft=Nn.many(),Qt=Ft.wrap("(",")").map(rt=>Pt.list("(",rt)),ht=Ft.wrap("[","]").map(rt=>Pt.list("[",rt)),pt=Ft.wrap("{","}").map(rt=>Pt.list("{",rt)),Xt=f.alt(Qt,ht,pt),fn=Nn.many();function En(rt){switch(rt.kind){case"string":return rt.value;case"symbol":{const St=rt.value;if(St.length>1)switch(St.charAt(0)){case".":return c.J.atomName(St.substr(1));case"_":return c.J.struct.type.elementSymbol([St.substr(1)])}return"true"===St||"false"!==St&&(function Ye(rt){return/-?(0|[1-9][0-9]*)([.][0-9]+)?([eE][+-]?[0-9]+)?/.test(rt)&&!isNaN(+rt)}(St)?+St:o.r.Symbol(St))}case"list":switch(rt.bracket){case"[":return c.J.core.type.list(He(rt.nodes).map(En));case"{":return c.J.core.type.set(He(rt.nodes).map(En));case"(":{if("comment"===rt.nodes[0].kind)throw new Error("Invalid expression");const St=En(rt.nodes[0]);return o.r.Apply(St,function Tt(rt){if(rt.length<=1)return;if(!function Fe(rt){for(let St=1,vt=rt.length;St1&&":"===mn.value.charAt(0))return!0}return!1}(rt)){const zt=[];for(let an=1,Vn=rt.length;an1&&":"===Vn.value.charAt(0)){const Fn=Vn.value.substr(1);for(++zt;zt=an)throw new Error(`There must be a value foolowed a named arg ':${Fn}'.`);if("comment"===rt[zt].kind)throw new Error("Invalid expression");St[Fn]=En(rt[zt]),isNaN(+Fn)&&(vt=!1)}else St[mn++]=En(Vn)}if(vt){const zt=Object.keys(St).map(Vn=>+Vn).sort((Vn,Fn)=>Vn-Fn);let an=!0;for(let Vn=0,Fn=zt.length;Vn"comment"!==vt.kind):rt}We.parse=function ot(rt){const St=function on(rt){return fn.tryParse(rt)}(rt),vt=[];for(const mn of St)"comment"!==mn.kind&&(vt[vt.length]=En(mn));return vt}}(J||(J={}));var W=n(7785);const te=c.J;function de(We,Pt,Sn){const Nn=f.lazy(()=>f.seq(We,Nn).map(Kn=>Sn(...Kn)).or(Pt));return Nn}function ye(We,Pt,Sn){return f.seqMap(Pt,We.many(),(Nn,Kn)=>Kn.reduce((dr,xr)=>Sn(xr,dr),Nn))}function Z(We,Pt,Sn){return f.seqMap(Pt,f.seq(We,Pt).many(),(Nn,Kn)=>Kn.reduce((dr,xr)=>{const[Ft,Qt]=xr;return Sn(Ft,dr,Qt)},Nn))}function q(We,Pt){return We.reduce((Nn,Kn)=>{const dr=Kn.isUnsupported?xe(`operator '${Kn.name}' not supported`):Kn.map;return Kn.type(Kn.rule,Nn,dr)},Pt)}function Y(We,Pt=0){return f.optWhitespace.then(f.regexp(We,Pt).skip(f.optWhitespace))}function ee(We,Pt=0){return f.regexp(We,Pt).skip(f.optWhitespace)}function g(We,Pt=0){return f.optWhitespace.then(f.regexp(We,Pt))}function _e(We,Pt){const Sn=Pt?`${We}|${(0,W.Nt)(Pt)}`:We;return Y(RegExp(`(${Sn})\\s+([-+]?[0-9]*\\.?[0-9]+)\\s+OF`,"i"),2).map(parseFloat)}function xe(We){return function(){throw new Error(We)}}function le(We){return 1===We.length?We[0]:We.length>1?te.core.logic.and(We):void 0}function Be(We,Pt){if(!Pt||void 0===Pt.op||void 0===Pt.val)return Pt&&void 0!==Pt.flags?te.core.flags.hasAny([We,Pt.flags]):Pt&&void 0!==Pt.min&&void 0!==Pt.max?te.core.rel.inRange([We,Pt.min,Pt.max]):Array.isArray(Pt)?Pt.length>1?te.core.set.has([te.core.type.set(Pt),We]):te.core.rel.eq([We,Pt[0]]):te.core.rel.eq([We,Pt]);{const Sn=[We,Pt.val];switch(Pt.op){case"=":return te.core.rel.eq(Sn);case"!=":return te.core.rel.neq(Sn);case">":return te.core.rel.gr(Sn);case"<":return te.core.rel.lt(Sn);case">=":return te.core.rel.gre(Sn);case"<=":return te.core.rel.lte(Sn);default:throw new Error(`operator '${Pt.op}' not supported`)}}}function Ce(We){return te.struct.generator.queryInSelection({0:We,query:te.struct.generator.all(),"in-complement":!0})}function Re(We,Pt){return We.length{const Nn=We[Sn],Kn=xe(`property '${Sn}' not supported`),dr=f.regexp(Nn.regex).map(Qt=>(Nn.isUnsupported&&Kn(),Be(Nn.property,Nn.map(Qt)))),xr=f.regexp(ke(Sn,Nn.abbr)).trim(f.optWhitespace),Ft=Qt=>te.struct.generator.atomGroups({[Nn.level]:Qt});Pt.push(Nn.isNumeric?xr.then(f.seq(f.regexp(/>=|<=|=|!=|>|(Nn.isUnsupported&&Kn(),Be(Nn.property,{op:Qt[0],val:Qt[1]}))).map(Ft):xr.then(dr).map(Ft))}),Pt}function Se(We){const Pt=[];return Object.keys(We).sort(Re).forEach(Sn=>{const Nn=We[Sn],Kn=Nn.map?Nn.map:xe(`keyword '${Sn}' not supported`),dr=f.regexp(ke(Sn,Nn.abbr)).map(Kn);Pt.push(dr)}),Pt}function Ne(We,Pt){const Sn=[];return Object.keys(We).sort(Re).forEach(Nn=>{const Kn=We[Nn],dr=xe(`property '${Nn}' not supported`),xr=f.regexp(ke(Nn,Kn.abbr)).lookahead(Pt).map(()=>(Kn.isUnsupported&&dr(),Kn.property));Sn.push(xr)}),Sn}function K(We,Pt,Sn,Nn){const Kn=[];for(const dr in We)Kn.push(dr),We[dr].abbr&&Kn.push(...We[dr].abbr);for(const dr in Pt)Kn.push(dr),Pt[dr].abbr&&Kn.push(...Pt[dr].abbr);return Sn.forEach(dr=>{Kn.push(dr.name),dr.abbr&&Kn.push(...dr.abbr)}),Kn}function ne(We){return te.core.type.set(We.map(te.atomName))}function be(We){return te.struct.generator.queryInSelection({0:We,query:te.struct.generator.all()})}function Te(We,Pt,Sn){switch(We.head.name){case"structure-query.atom-property.macromolecular.label_atom_id":return te.atomName(Pt);case"structure-query.atom-property.core.element-symbol":return te.es(Pt);case"structure-query.atom-property.macromolecular.secondary-structure-flags":return Sn&&(Pt=[Sn[Pt.toUpperCase()]||"none"]),te.struct.type.secondaryStructureFlags([Pt]);default:return Pt}}const ue=["entityKey","label_entity_id","entityType"],re=["chainKey","label_asym_id","label_entity_id","auth_asym_id","entityType"],ve=["residueKey","label_comp_id","label_seq_id","auth_comp_id","auth_seq_id","pdbx_formal_charge","secondaryStructureKey","secondaryStructureFlags","isModified","modifiedParentName"];function ce(We){if(We.head.name.startsWith("structure-query.atom-property.macromolecular.")){const Pt=We.head.name.substr(45);if(ue.includes(Pt))return"entity-test";if(re.includes(Pt))return"chain-test";if(ve.includes(Pt))return"residue-test"}return"atom-test"}const se=["structure-query.atom-property.macromolecular.secondary-structure-flags"];function ge(We){return te.struct.generator.atomGroups({"residue-test":te.core.set.has([te.core.type.set(We),te.ammp("label_comp_id")])})}const Ie=c.J,Le=/[-+]?[0-9]*\.?[0-9]+/,nt=/[0-9]+/;function je(We){return We}const Lt={none:"none",turn:"turn",sheet:"beta",helix:"helix",dna:"dna",rna:"rna",carbohydrate:"carbohydrate",helix310:"3-10",helixalpha:"alpha",helixpi:"pi",0:"none",1:"turn",2:"beta",3:"helix",4:"dna",5:"rna",6:"carbohydrate",7:"3-10",8:"alpha",9:"pi"};function Je(We){if(We.head){if(We.head.name&&"core.type.regex"===We.head.name&&(We=We.args[0].replace(/^\^|\$$/g,"")),We=Lt[We.toString().toLowerCase()]||"none",-1!==["dna","rna","carbohydrate"].indexOf(We))throw new Error("values 'dna', 'rna', 'carbohydrate' not yet supported for 'structure' property");return Ie.struct.type.secondaryStructureFlags([We])}}const en={adpmax:{"@desc":"the maximum anisotropic displacement parameter for the selected atom","@examples":[""],isUnsupported:!0,regex:Le,map:We=>parseFloat(We),level:"atom-test"},adpmin:{"@desc":"the minimum anisotropic displacement parameter for the selected atom","@examples":[""],isUnsupported:!0,regex:Le,map:We=>parseFloat(We),level:"atom-test"},altloc:{"@desc":"PDB alternate location identifier","@examples":["altloc = A"],regex:/[a-zA-Z0-9]/,map:je,level:"atom-test",property:Ie.ammp("label_alt_id")},altname:{"@desc":"an alternative name given to atoms by some file readers (for example, P2N)","@examples":[""],isUnsupported:!0,regex:/[a-zA-Z0-9]/,map:je,level:"atom-test"},atomID:{"@desc":"special atom IDs for PDB atoms assigned by Jmol","@examples":[""],isUnsupported:!0,regex:nt,map:We=>parseInt(We),level:"atom-test"},atomIndex:{"@desc":"atom 0-based index; a unique number for each atom regardless of the number of models loaded","@examples":[""],isUnsupported:!0,regex:nt,map:We=>parseInt(We),level:"atom-test"},atomName:{"@desc":"atom name","@examples":["atomName = CA"],regex:/[a-zA-Z0-9]+/,map:We=>Ie.atomName(We),level:"atom-test",property:Ie.ammp("label_atom_id")},atomno:{"@desc":'sequential number; you can use "@" instead of "atomno=" -- for example, select @33 or Var x = @33 or @35',"@examples":[""],isUnsupported:!0,regex:nt,map:We=>parseInt(We),level:"atom-test"},atomType:{"@desc":"atom type (mol2, AMBER files) or atom name (other file types)","@examples":["atomType = OH"],regex:/[a-zA-Z0-9]+/,map:We=>Ie.atomName(We),level:"atom-test",property:Ie.ammp("label_atom_id")},atomX:{"@desc":"Cartesian X coordinate (or just X)","@examples":["x = 4.2"],abbr:["X"],isNumeric:!0,regex:Le,map:We=>parseFloat(We),level:"atom-test",property:Ie.acp("x")},atomY:{"@desc":"Cartesian Y coordinate (or just Y)","@examples":["y < 42"],abbr:["Y"],isNumeric:!0,regex:Le,map:We=>parseFloat(We),level:"atom-test",property:Ie.acp("y")},atomZ:{"@desc":"Cartesian Z coordinate (or just Z)","@examples":["Z > 10"],abbr:["Z"],isNumeric:!0,regex:Le,map:We=>parseFloat(We),level:"atom-test",property:Ie.acp("z")},bondcount:{"@desc":"covalent bond count","@examples":["bondcount = 0"],isNumeric:!0,regex:nt,map:We=>parseInt(We),level:"atom-test",property:Ie.acp("bondCount")},bondingRadius:{"@desc":"radius used for auto bonding; synonymous with ionic and ionicRadius","@examples":[""],abbr:["ionic","ionicRadius"],isUnsupported:!0,regex:Le,map:We=>parseFloat(We),level:"atom-test"},cell:{"@desc":'crystallographic unit cell, expressed either in lattice integer notation (111-999) or as a coordinate in ijk space, where {1 1 1} is the same as 555. ANDing two cells, for example select cell=555 and cell=556, selects the atoms on the common face. (Note: in the specifc case of CELL, only "=" is allowed as a comparator.)',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},configuration:{"@desc":'Only in the context {configuration=n}, this option selects the set of atoms with either no ALTLOC specified or those atoms having this index into the array of altlocs within its model. So, for example, if the model has altloc "A" and "B", select configuration=1 is equivalent to select altloc="" or altloc="A", and print {configuration=2} is equivalent to print {altloc="" or altloc="B"}. Configuration 0 is "all atoms in a model having configurations", and an invalid configuration number gives no atoms. (Note: in the specifc case of CONFIGURATION, only "=" is allowed as a comparator.)',"@examples":[""],isUnsupported:!0,regex:nt,map:We=>parseInt(We),level:"atom-test"},chain:{"@desc":'protein chain. For newer CIF files allowing multicharacter chain specifications, use quotations marks: select chain="AA". For these multicharacter desigations, case is not checked unless the CIF file has lower-case chain designations.',"@examples":["chain = A",'chain = "AA"'],regex:/[a-zA-Z0-9]+/,map:je,level:"chain-test",property:Ie.ammp("auth_asym_id")},chainNo:{"@desc":'chain number; sequentially counted from 1 for each model; chainNo == 0 means"no chain" or PDB chain identifier indicated as a blank (Jmol 14.0).',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},color:{"@desc":"the atom color","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},covalentRadius:{"@desc":"covalent bonding radius, synonymous with covalent. Not used by Jmol, but could be used, for example, in {*}.spacefill={*}.covalentRadius.all.","@examples":[""],abbr:["covalent"],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},cs:{"@desc":"chemical shift calculated using computational results that include magnetic shielding tensors.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},element:{"@desc":'element symbol. The value of this parameter depends upon the context. Used with select structure=x, x can be either the quoted element symbol, "H", "He", "Li", etc. or atomic number. In all other contexts, the value is the element symbol. When the atom is a specific isotope, the string will contain the isotope number -- "13C", for example.',"@examples":["element=Fe"],regex:/[a-zA-Z]+/,map:We=>Ie.es(We),level:"atom-test",property:Ie.acp("elementSymbol")},elemno:{"@desc":"atomic element number","@examples":["elemno=8"],regex:/[0-9\s{}-]+/,map:We=>parseInt(We),level:"atom-test",property:Ie.acp("atomicNumber")},eta:{"@desc":"Based on Carlos M. Duarte, Leven M. Wadley, and Anna Marie Pyle, RNA structure comparison, motif search and discovery using a reduced representation of RNA conformational space, Nucleic Acids Research, 2003, Vol. 31, No. 16 4755-4761. The parameter eta is the C4'[i-1]-P[i]-C4'[i]-P[i+1] dihedral angle; theta is the P[i]-C4'[i]-P[i+1]-C4'[i+1] dihedral angle. Both are measured on a 0-360 degree scale because they are commonly near 180 degrees. Using the commands plot PROPERTIES eta theta resno; select visible;wireframe only one can create these authors' \"RNA worm\" graph.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},theta:{"@desc":"Based on Carlos M. Duarte, Leven M. Wadley, and Anna Marie Pyle, RNA structure comparison, motif search and discovery using a reduced representation of RNA conformational space, Nucleic Acids Research, 2003, Vol. 31, No. 16 4755-4761. The parameter eta is the C4'[i-1]-P[i]-C4'[i]-P[i+1] dihedral angle; theta is the P[i]-C4'[i]-P[i+1]-C4'[i+1] dihedral angle. Both are measured on a 0-360 degree scale because they are commonly near 180 degrees. Using the commands plot PROPERTIES eta theta resno; select visible;wireframe only one can create these authors' \"RNA worm\" graph.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},file:{"@desc":"file number containing this atom","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},formalCharge:{"@desc":"formal charge","@examples":["formalCharge=1"],regex:Le,map:We=>parseFloat(We),level:"atom-test",property:Ie.ammp("pdbx_formal_charge")},format:{"@desc":"format (label) of the atom.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},fXyz:{"@desc":"fractional XYZ coordinates","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},fX:{"@desc":"fractional X coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},fY:{"@desc":"fractional Y coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},fZ:{"@desc":"fractional Z coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},fuxyz:{"@desc":"fractional XYZ coordinates in the unitcell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},fux:{"@desc":"fractional X coordinate in the unitcell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},fuy:{"@desc":"fractional Y coordinate in the unitcell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},fuz:{"@desc":"fractional Z coordinate in the unit cell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},group:{"@desc":"3-letter residue code","@examples":["group = ALA"],regex:/[a-zA-Z0-9]{1,3}/,map:je,level:"residue-test",property:Ie.ammp("label_comp_id")},group1:{"@desc":"single-letter residue code (amino acids only)","@examples":["group1 = G"],regex:/[a-zA-Z]/,map:je,level:"residue-test",property:Ie.ammp("label_comp_id")},groupID:{"@desc":"group ID number: A unique ID for each amino acid or nucleic acid residue in a PDB file. 0 noGroup 1-5 ALA, ARG, ASN, ASP, CYS 6-10 GLN, GLU, GLY, HIS, ILE 11-15 LEU, LYS, MET, PHE, PRO 16-20 SER, THR, TRP, TYR, VAL 21-23 ASX, GLX, UNK 24-29 A, +A, G, +G, I, +I 30-35 C, +C, T, +T, U, +U Additional unique numbers are assigned arbitrarily by Jmol and cannot be used reproducibly.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},groupindex:{"@desc":"overall group index","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},hydrophobicity:{"@desc":"Aminoacid residue scale of hydrophobicity based on Rose, G. D., Geselowitz, A. R., Lesser, G. J., Lee, R. H., and Zehfus, M. H. (1985). Hydrophobicity of amino acid residues in globular proteins, Science, 229(4716):834-838.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},identify:{"@desc":"for a PDB/mmCIF file, a label such as [ILE]7^1:A.CD1%A/3 #47, which includes the group ([ILE]), residue number with optional insertion code (7^1), chain (:A), atom name (CD1), alternate location if present (%A), PDB model number (/3, for NMR models when one file is loaded; /file.model such as /2.3 if more than one file is loaded), and atom number (#47). For non-PDB data, the information is shorter -- for example, H15/2.1 #6, indicating atom name (H15), full file.model number (/2.1), and atom number (#6). If only a single model is loaded, %[identify] does not include the model number.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},insertion:{"@desc":"protein residue insertion code","@examples":["insertion=A"],regex:/[a-zA-Z0-9]/,map:je,level:"atom-test",property:Ie.ammp("pdbx_PDB_ins_code")},label:{"@desc":"current atom label (same as format)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},mass:{"@desc":"atomic mass -- especially useful with appended .max or .sum","@examples":["mass > 13"],regex:Le,map:We=>parseFloat(We),level:"atom-test",property:Ie.acp("mass")},model:{"@desc":"model number","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},modelindex:{"@desc":"a unique number for each model, starting with 0 and spanning all models in all files","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},modO:{"@desc":"currently calculated occupancy from modulation (0 to 100; NaN if atom has no occupancy modulation)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},modXYZ:{"@desc":"currently calculated displacement modulation (for incommensurately modulated structures). Also modX, modY, modZ for individual components. For atoms without modultion, {xx}.modXYZ is -1 and {xx}.modX is NaN, and in a label %[modXYZ] and %[modX] are blank.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},molecule:{"@desc":"molecule number","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},monomer:{"@desc":"monomer number (group number) in a polymer (usually a chain), starting with 1, or 0 if not part of a biopolymer -- that is, not a connected carbohydrate, amino acid, or nucleic acid (Jmol 14.3.15)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},ms:{"@desc":"magnetic shielding calculated from file-loaded tensors.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},occupancy:{"@desc":'CIF file site occupancy. In SELECT command comparisons ("select occupancy < 90"), an integer n implies measurement on a 0-100 scale; also, in the context %[occupancy] or %q for a label, the reported number is a percentage. In all other cases, such as when %Q is used in a label or when a decimal number is used in a comparison, the scale is 0.0 - 1.0.',"@examples":["occupancy < 1"],regex:Le,map:We=>parseFloat(We),level:"atom-test",property:Ie.ammp("occupancy")},partialCharge:{"@desc":"partial charge","@examples":[""],isUnsupported:!0,regex:Le,map:We=>parseFloat(We),level:"atom-test"},phi:{"@desc":"protein group PHI angle for atom's residue","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},polymer:{"@desc":"sequential polymer number in a model, starting with 1.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},polymerLength:{"@desc":"polymer length","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},property_xx:{"@desc":"a property created using the DATA command","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},psi:{"@desc":"protein group PSI angle for the atom's residue","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},radius:{"@desc":'currently displayed radius -- In SELECT command comparisons ("select radius=n"), integer n implies Rasmol units 1/250 Angstroms; in all other cases or when a decimal number is used, the units are Angstroms.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},resno:{"@desc":"PDB residue number, not including insertion code (see also seqcode, below)","@examples":["resno = 100"],regex:/-?[0-9]+/,map:We=>parseInt(We),level:"residue-test",property:Ie.ammp("auth_seq_id")},selected:{"@desc":"1.0 if atom is selected; 0.0 if not","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},sequence:{"@desc":'PDB one-character sequence code, as a string of characters, with "?" indicated where single-character codes are not available',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},seqcode:{"@desc":'PDB residue number, including insertion code (for example, 234^2; "seqcode" option added in Jmol 14.3.16)',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},seqid:{"@desc":"(mmCIF only) the value from _atom_site.label_seq_id; a pointer to _entity_poly_seq.num in the ENTITY_POLY_SEQ category specifying the sequence of monomers in a polymer. Allowance is made for the possibility of microheterogeneity in a sample by allowing a given sequence number to be correlated with more than one monomer id. (Jmol 14.2.3)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},shape:{"@desc":'hybridization geometry such as "tetrahedral"',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},site:{"@desc":"crystallographic site number","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},spacefill:{"@desc":"currently displayed radius","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},straightness:{"@desc":'quaternion-derived straightness (second derivative of the quaternion describing the orientation of the residue. This quantity will have different values depending upon the setting of quaternionFrame as "A" (alpha-carbon/phosphorus atom only), "C" (alpha-carbon/pyrimidine or purine base based), "P" (carbonyl-carbon peptide plane/phosphorus tetrahedron based), or "N" (amide-nitrogen based). The default is alpha-carbon based, which corresponds closely to the following combination of Ramachandran angles involving three consecutive residues i-1, i, and i+1: -psii-1 - phii + psii + phii+1.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},strucno:{"@desc":"a unique number for each helix, sheet, or turn in a model, starting with 1.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},structure:{"@desc":'The value of this parameter depends upon the context. Used with select structure=x, x can be either the quoted keyword "none", "turn", "sheet", "helix", "dna", "rna", or "carbohydrate" or a respective number 0-6. In the context {*}.structure, the return value is a number; in the context label %[structure], the return is one of the six keywords.',"@examples":['structure="helix"',"structure=3"],regex:/none|turn|sheet|helix|dna|rna|carbohydrate|[0-6]/i,map:je,level:"residue-test",property:"structure"},substructure:{"@desc":'like structure, the value of this parameter depends upon the context. Used with select substructure=x, x can be either the quoted keyword "none", "turn", "sheet", "helix", "dna", "rna", "carbohydrate", "helix310", "helixalpha", or "helixpi", or the respective number 0-9. In the context {*}.substructure, the return value is a number; in the context label %[substructure], the return is one of the nine keywords.',"@examples":['substructure = "alphahelix"',"substructure =9"],regex:/none|turn|sheet|helix|dna|rna|carbohydrate|helix310|helixalpha|helixpi|[0-9]/i,map:je,level:"residue-test",property:"structure"},surfacedistance:{"@desc":"A value related to the distance of an atom to a nominal molecular surface. 0 indicates at the surface. Positive numbers are minimum distances in Angstroms from the given atom to the surface.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},symop:{"@desc":'the first symmetry operation code that generated this atom by Jmol; an integer starting with 1. See also symmetry, below. This operator is only present if the file contains space group information and the file was loaded using the {i, j, k} option so as to generate symmetry-based atoms. To select only the original atoms prior to application of symmetry, you can either use "SYMOP=n", where n is the symmetry operator corresponding to "x,y,z", or you can specify instead simply "NOT symmetry" the way you might specify "NOT hydrogen". Note that atoms in special positions will have multiple operator matches. These atoms can be selected using the keyword SPECIALPOSITION. The special form select SYMOP=nijk selects a specific translation of atoms from the given crystallographic symmetry operation. Comparators <, <=, >, >=, and != can be used and only apply to the ijk part of the designation. The ijk are relative, not absolute. Thus, symop=2555 selects for atoms that have been transformed by symop=2 but not subjected to any further translation. select symop=1555 is identical to select not symmetry. All other ijk are relative to these selections for 555. If the model was loaded using load "filename.cif" {444 666 1}, where the 1 indicates that all symmetry-generated atoms are to be packed within cell 555 and then translated to fill the other 26 specified cells, then select symop=3555 is nearly the same as select symop=3 and cell=555. (The difference being that cell=555 selects for all atoms that are on any edge of the cell, while symop=3555 does not.) However, the situation is different if instead the model was loaded using load "filename.cif" {444 666 0}, where the 0 indicates that symmetry-generated atoms are to be placed exactly where their symmetry operator would put them (x,-y,z being different then from x, 1-y, z). In that case, select symop=3555 is for all atoms that have been generated using symmetry operation 3 but have not had any additional translations applied to the x,y,z expression found in the CIF file. If, for example, symmetry operation 3 is -x,-y,-z, then load "filename.cif" {444 666 0} will place an atom originally at {1/2, 1/2, 1/2} at positions {-1/2, -1/2, -1/2} (symop=3555) and {-3/2, -3/2, -3/2} (symop=3444) and 24 other sites.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},symmetry:{"@desc":'as "symmetry" or in a label as lower-case "o" gives list of crystallographic symmetry operators generating this atom with lattice designations,such as 3555; upper-case "%O" in a label gives a list without the lattice designations. See also symop, above.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},temperature:{"@desc":"yes yes temperature factor (B-factor)","@examples":["temperature >= 20"],regex:Le,map:We=>parseFloat(We),level:"atom-test",property:Ie.ammp("B_iso_or_equiv")},unitXyz:{"@desc":"unit cell XYZ coordinates","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},uX:{"@desc":"unit cell X coordinate normalized to [0,1)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},uY:{"@desc":"unit cell Y coordinate normalized to [0,1)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},uZ:{"@desc":"unit cell Z coordinate normalized to [0,1)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},valence:{"@desc":"the valence of an atom (sum of bonds, where double bond counts as 2 and triple bond counts as 3","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},vanderwaals:{"@desc":"van der Waals radius","@examples":["vanderwaals >2"],regex:Le,map:We=>parseFloat(We),level:"atom-test",property:Ie.acp("vdw")},vectorScale:{"@desc":"vibration vector scale","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},volume:{"@desc":"approximate van der Waals volume for this atom. Note, {*}.volume gives an average; use {*}.volume.sum to get total volume.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},vXyz:{"@desc":"vibration vector, or individual components as %vx %vy %vz. For atoms without vibration vectors, {xx}.vXyz is -1; in a label, %[vxyz] is blank.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},vX:{"@desc":"vibration vector X coordinate; for atoms without vibration vector, {xx}.vX is NaN (same for vY and vZ)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},vY:{"@desc":"vibration vector Y coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},vZ:{"@desc":"vibration vector Z coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"},xyz:{"@desc":"Cartesian XYZ coordinates; select xyz > 1.0 selects atoms more than one Angstrom from the origin.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:je,level:"atom-test"}},Bt=c.J,pn=[{"@desc":"Selects atoms that are not included in s1.","@examples":["not ARG"],name:"not",type:de,rule:f.alt(f.regex(/NOT/i).skip(f.whitespace),f.string("!").skip(f.optWhitespace)),map:(We,Pt)=>Ce(Pt)},{"@desc":"Selects atoms included in both s1 and s2.","@examples":["ASP and .CA"],name:"and",type:Z,rule:Y(/AND|&/i),map:(We,Pt,Sn)=>Bt.struct.modifier.intersectBy({0:Pt,by:Sn})},{"@desc":"Selects atoms included in either s1 or s2.","@examples":["ASP or GLU"],name:"or",type:Z,rule:Y(/OR|\||,/i),map:(We,Pt,Sn)=>Bt.struct.combinator.merge([Pt,Sn])}],$e=c.J,mt={acidic:["ASP","GLU"],aliphatic:["ALA","GLY","ILE","LEU","VAL"],amino:["ALA","ARG","ASN","ASP","CYS","GLN","GLU","GLY","HIS","ILE","LEU","LYS","MET","PHE","PRO","SER","THR","TRP","TYR","VAL","ASX","GLX","UNK"],aromatic:["HIS","PHE","TRP","TYR"],basic:["ARG","HIS","LYS"],buried:["ALA","CYS","ILE","LEU","MET","PHE","TRP","VAL"],cg:["CYT","C","GUA","G"],cyclic:["HIS","PHE","PRO","TRP","TYR"],hydrophobic:["ALA","GLY","ILE","LEU","MET","PHE","PRO","TRP","TYR","VAL"],large:["ARG","GLU","GLN","HIS","ILE","LEU","LYS","MET","PHE","TRP","TYR"],medium:["ASN","ASP","CYS","PRO","THR","VAL"],small:["ALA","GLY","SER"],nucleic:["G","C","A","T","U","I","DG","DC","DA","DT","DU","DI","+G","+C","+A","+T","+U","+I"]},_t_nucleic=["P","O3'","O5'","C5'","C4'","C3'","OP1","OP2","O3*","O5*","C5*","C4*","C3*","C2'","C1'","O4'","O2'"],_t_protein=["C","N","CA"];function Me(){return $e.struct.combinator.merge([$e.struct.generator.atomGroups({"residue-test":$e.core.set.has([$e.set(...mt.nucleic),$e.ammp("label_comp_id")])}),$e.struct.filter.pick({0:$e.struct.generator.atomGroups({"group-by":$e.ammp("residueKey")}),test:$e.core.logic.and([$e.core.rel.eq([$e.struct.atomSet.atomCount(),1]),$e.core.rel.eq([$e.ammp("label_atom_id"),$e.atomName("P")])])}),$e.struct.filter.pick({0:$e.struct.generator.atomGroups({"group-by":$e.ammp("residueKey")}),test:$e.core.logic.or([$e.core.set.isSubset([ne(["C1'","C2'","O3'","C3'","C4'","C5'","O5'"]),$e.ammpSet("label_atom_id")]),$e.core.set.isSubset([ne(["C1*","C2*","O3*","C3*","C4*","C5*","O5*"]),$e.ammpSet("label_atom_id")])])})])}const Kt={all:{"@desc":"all atoms; same as *",abbr:["*"],map:()=>$e.struct.generator.all()},bonded:{"@desc":"covalently bonded",map:()=>$e.struct.generator.atomGroups({"atom-test":$e.core.rel.gr([$e.struct.atomProperty.core.bondCount({flags:$e.struct.type.bondFlags(["covalent","metallic","sulfide"])}),0])})},clickable:{"@desc":"actually visible -- having some visible aspect such as wireframe, spacefill, or a label showing, or the alpha-carbon or phosphorus atom in a biomolecule that is rendered with only cartoon, rocket, or other biomolecule-specific shape."},connected:{"@desc":"bonded in any way, including hydrogen bonds",map:()=>$e.struct.generator.atomGroups({"atom-test":$e.core.rel.gr([$e.struct.atomProperty.core.bondCount({flags:$e.struct.type.bondFlags()}),0])})},displayed:{"@desc":"displayed using the display or hide command; not necessarily visible"},hidden:{"@desc":"hidden using the display or hide command"},none:{"@desc":"no atoms",map:()=>$e.struct.generator.empty()},selected:{"@desc":"atoms that have been selected; defaults to all when a file is first loaded"},thisModel:{"@desc":'atoms in the current frame set, as defined by frame, model, or animation commands. If more than one model is in this set, "thisModel" refers to all of them, regardless of atom displayed/hidden status.'},visible:{"@desc":"visible in any way, including PDB residue atoms for which a cartoon or other such rendering makes their group visible, even if they themselves are not visible."},subset:{"@desc":"the currently defined subset. Note that if a subset is currently defined, then select/display all is the same as select/display subset, restrict none is the same as restrict not subset. In addition, select not subset selects nothing."},specialPosition:{"@desc":"atoms in crystal structures that are at special positions - that is, for which there is more than one operator that leads to them."},unitcell:{"@desc":"atoms within the current unitcell, which may be offset. This includes atoms on the faces and at the vertices of the unitcell."},polyhedra:{"@desc":"all central atoms for which polyhedra have been created. See also polyhera(n), below. (Jmol 14.4)"},nonmetal:{"@desc":"_H,_He,_B,_C,_N,_O,_F,_Ne,_Si,_P,_S,_Cl,_Ar,_As,_Se,_Br,_Kr,_Te,_I,_Xe,_At,_Rn",map:()=>$e.struct.generator.atomGroups({"atom-test":$e.core.set.has([$e.set(...["H","He","B","C","N","O","F","Ne","Si","P","S","Cl","Ar","As","Se","Br","Kr","Te","I","Xe","At","Rn"].map($e.es)),$e.acp("elementSymbol")])})},metal:{"@desc":"!nonmetal",map:()=>$e.struct.generator.atomGroups({"atom-test":$e.core.logic.not([$e.core.set.has([$e.set(...["H","He","B","C","N","O","F","Ne","Si","P","S","Cl","Ar","As","Se","Br","Kr","Te","I","Xe","At","Rn"].map($e.es)),$e.acp("elementSymbol")])])})},alkaliMetal:{"@desc":"_Li,_Na,_K,_Rb,_Cs,_Fr",map:()=>$e.struct.generator.atomGroups({"atom-test":$e.core.set.has([$e.set(...["Li","Na","K","Rb","Cs","Fr"].map($e.es)),$e.acp("elementSymbol")])})},alkalineEarth:{"@desc":"_Be,_Mg,_Ca,_Sr,_Ba,_Ra",map:()=>$e.struct.generator.atomGroups({"atom-test":$e.core.set.has([$e.set(...["Be","Mg","Ca","Sr","Ba","Ra"].map($e.es)),$e.acp("elementSymbol")])})},nobleGas:{"@desc":"_He,_Ne,_Ar,_Kr,_Xe,_Rn",map:()=>$e.struct.generator.atomGroups({"atom-test":$e.core.set.has([$e.set(...["He","Ne","Ar","Kr","Xe","Rn"].map($e.es)),$e.acp("elementSymbol")])})},metalloid:{"@desc":"_B,_Si,_Ge,_As,_Sb,_Te",map:()=>$e.struct.generator.atomGroups({"atom-test":$e.core.set.has([$e.set(...["B","Si","Ge","As","Sb","Te"].map($e.es)),$e.acp("elementSymbol")])})},transitionMetal:{"@desc":"(includes La and Ac) elemno>=21 and elemno<=30, elemno=57, elemno=89, elemno>=39 and elemno<=48, elemno>=72 and elemno<=80, elemno>=104 and elemno<=112",map:()=>$e.struct.generator.atomGroups({"atom-test":$e.core.logic.or([$e.core.rel.inRange([$e.acp("atomicNumber"),21,30]),$e.core.rel.inRange([$e.acp("atomicNumber"),39,48]),$e.core.rel.inRange([$e.acp("atomicNumber"),72,80]),$e.core.rel.inRange([$e.acp("atomicNumber"),104,112]),$e.core.set.has([$e.set(57,89),$e.acp("atomicNumber")])])})},lanthanide:{"@desc":"(does not include La) elemno>57 and elemno<=71",map:()=>$e.struct.generator.atomGroups({"atom-test":$e.core.rel.inRange([$e.acp("atomicNumber"),57,71])})},actinide:{"@desc":"(does not include Ac) elemno>89 and elemno<=103",map:()=>$e.struct.generator.atomGroups({"atom-test":$e.core.rel.inRange([$e.acp("atomicNumber"),89,103])})},isaromatic:{"@desc":"atoms connected with the AROMATIC, AROMATICSINGLE, or AROMATICDOUBLE bond types",map:()=>$e.struct.generator.atomGroups({"atom-test":$e.core.rel.gr([$e.struct.atomProperty.core.bondCount({flags:$e.struct.type.bondFlags(["aromatic"])}),0])})},carbohydrate:{"@desc":""},ions:{"@desc":'(specifically the PDB designations "PO4" and "SO4")'},ligand:{"@desc":'(originally "hetero and not solvent"; changed to "!(protein,nucleic,water,UREA)" for Jmol 12.2)'},nucleic:{"@desc":'any group that (a) has one of the following group names: G, C, A, T, U, I, DG, DC, DA, DT, DU, DI, +G, +C, +A, +T, +U, +I; or (b) can be identified as a group that is only one atom, with name "P"; or (c) has all of the following atoms (prime, \', can replace * here): C1*, C2*, C3*, O3*, C4*, C5*, and O5*.',map:()=>Me()},purine:{"@desc":"any nucleic group that (a) has one of the following group names: A, G, I, DA, DG, DI, +A, +G, or +I; or (b) also has atoms N7, C8, and N9.",map:()=>$e.struct.modifier.intersectBy({0:Me(),by:$e.struct.combinator.merge([$e.struct.generator.atomGroups({"residue-test":$e.core.set.has([$e.set("A","G","I","DA","DG","DI","+A","+G","+I"),$e.ammp("label_comp_id")])}),$e.struct.filter.pick({0:$e.struct.generator.atomGroups({"group-by":$e.ammp("residueKey")}),test:$e.core.set.isSubset([ne(["N7","C8","N9"]),$e.ammpSet("label_atom_id")])})])})},pyrimidine:{"@desc":"any nucleic group that (a) has one of the following group names: C, T, U, DC, DT, DU, +C, +T, +U; or (b) also has atom O2.",map:()=>$e.struct.modifier.intersectBy({0:Me(),by:$e.struct.combinator.merge([$e.struct.generator.atomGroups({"residue-test":$e.core.set.has([$e.set("C","T","U","DC","DT","DU","+C","+T","+U"),$e.ammp("label_comp_id")])}),$e.struct.filter.pick({0:$e.struct.generator.atomGroups({"group-by":$e.ammp("residueKey")}),test:$e.core.logic.or([$e.core.set.has([$e.ammpSet("label_atom_id"),$e.atomName("O2*")]),$e.core.set.has([$e.ammpSet("label_atom_id"),$e.atomName("O2'")])])})])})},dna:{"@desc":"any nucleic group that (a) has one of the following group names: DG, DC, DA, DT, DU, DI, T, +G, +C, +A, +T; or (b) has neither atom O2* or O2'.",map:()=>$e.struct.modifier.intersectBy({0:Me(),by:$e.struct.combinator.merge([$e.struct.generator.atomGroups({"residue-test":$e.core.set.has([$e.set("DG","DC","DA","DT","DU","DI","T","+G","+C","+A","+T"),$e.ammp("label_comp_id")])}),$e.struct.filter.pick({0:$e.struct.generator.atomGroups({"group-by":$e.ammp("residueKey")}),test:$e.core.logic.not([$e.core.logic.or([$e.core.set.has([$e.ammpSet("label_atom_id"),$e.atomName("O2*")]),$e.core.set.has([$e.ammpSet("label_atom_id"),$e.atomName("O2'")])])])})])})},rna:{"@desc":"any nucleic group that (a) has one of the following group names: G, C, A, U, I, +U, +I; or (b) has atom O2* or O2'.",map:()=>$e.struct.modifier.intersectBy({0:Me(),by:$e.struct.combinator.merge([$e.struct.generator.atomGroups({"residue-test":$e.core.set.has([$e.set("G","C","A","U","I","+U","+I"),$e.ammp("label_comp_id")])}),$e.struct.filter.pick({0:$e.struct.generator.atomGroups({"group-by":$e.ammp("residueKey")}),test:$e.core.logic.or([$e.core.set.has([$e.ammpSet("label_atom_id"),$e.atomName("O2*")]),$e.core.set.has([$e.ammpSet("label_atom_id"),$e.atomName("O2'")])])})])})},protein:{"@desc":'defined as a group that (a) has one of the following group names: ALA, ARG, ASN, ASP, CYS, GLN, GLU, GLY, HIS, ILE, LEU, LYS, MET, PHE, PRO, SER, THR, TRP, TYR, VAL, ASX, GLX, or UNK; or (b) contains PDB atom designations [C, O, CA, and N] bonded correctly; or (c) does not contain "O" but contains [C, CA, and N] bonded correctly; or (d) has only one atom, which has name CA and does not have the group name CA (indicating a calcium atom).',map:()=>function Ke(){return $e.struct.generator.atomGroups({"residue-test":$e.core.set.has([$e.set(...mt.amino),$e.ammp("label_comp_id")])})}()},acidic:{"@desc":"ASP GLU",map:()=>ge(mt.acidic)},acyclic:{"@desc":"amino and not cyclic",map:()=>$e.struct.modifier.intersectBy({0:ge(mt.amino),by:Ce(ge(mt.cyclic))})},aliphatic:{"@desc":"ALA GLY ILE LEU VAL",map:()=>ge(mt.aliphatic)},amino:{"@desc":"all twenty standard amino acids, plus ASX, GLX, UNK",map:()=>ge(mt.amino)},aromatic:{"@desc":'HIS PHE TRP TYR (see also "isaromatic" for aromatic bonds)',map:()=>ge(mt.aromatic)},basic:{"@desc":"ARG HIS LYS",map:()=>ge(mt.basic)},buried:{"@desc":"ALA CYS ILE LEU MET PHE TRP VAL",map:()=>ge(mt.buried)},charged:{"@desc":"same as acidic or basic -- ASP GLU, ARG HIS LYS",map:()=>ge(mt.acidic.concat(mt.basic))},cyclic:{"@desc":"HIS PHE PRO TRP TYR",map:()=>ge(mt.cyclic)},helix:{"@desc":"secondary structure-related.",map:()=>$e.struct.generator.atomGroups({"residue-test":$e.core.flags.hasAny([$e.struct.type.secondaryStructureFlags(["helix"]),$e.ammp("secondaryStructureFlags")])})},helixalpha:{"@desc":"secondary structure-related.",map:()=>$e.struct.generator.atomGroups({"residue-test":$e.core.flags.hasAny([$e.struct.type.secondaryStructureFlags(["alpha"]),$e.ammp("secondaryStructureFlags")])})},helix310:{"@desc":"secondary structure-related.",map:()=>$e.struct.generator.atomGroups({"residue-test":$e.core.flags.hasAny([$e.struct.type.secondaryStructureFlags(["3-10"]),$e.ammp("secondaryStructureFlags")])})},helixpi:{"@desc":"secondary structure-related.",map:()=>$e.struct.generator.atomGroups({"residue-test":$e.core.flags.hasAny([$e.struct.type.secondaryStructureFlags(["pi"]),$e.ammp("secondaryStructureFlags")])})},hetero:{"@desc":"PDB atoms designated as HETATM",map:()=>$e.struct.generator.atomGroups({"atom-test":$e.ammp("isHet")})},hydrophobic:{"@desc":"ALA GLY ILE LEU MET PHE PRO TRP TYR VAL",map:()=>ge(mt.hydrophobic)},large:{"@desc":"ARG GLU GLN HIS ILE LEU LYS MET PHE TRP TYR",map:()=>ge(mt.large)},medium:{"@desc":"ASN ASP CYS PRO THR VAL",map:()=>ge(mt.medium)},negative:{"@desc":"same as acidic -- ASP GLU",map:()=>ge(mt.acidic)},neutral:{"@desc":"amino and not (acidic or basic)",map:()=>$e.struct.modifier.intersectBy({0:ge(mt.amino),by:Ce(ge(mt.acidic.concat(mt.basic)))})},polar:{"@desc":"amino and not hydrophobic",map:()=>$e.struct.modifier.intersectBy({0:ge(mt.amino),by:Ce(ge(mt.hydrophobic))})},positive:{"@desc":"same as basic -- ARG HIS LYS",map:()=>ge(mt.basic)},sheet:{"@desc":"secondary structure-related",map:()=>$e.struct.generator.atomGroups({"residue-test":$e.core.flags.hasAny([$e.struct.type.secondaryStructureFlags(["sheet"]),$e.ammp("secondaryStructureFlags")])})},small:{"@desc":"ALA GLY SER",map:()=>ge(mt.small)},surface:{"@desc":"amino and not buried",map:()=>$e.struct.modifier.intersectBy({0:ge(mt.amino),by:Ce(ge(mt.buried))})},turn:{"@desc":"secondary structure-related",map:()=>$e.struct.generator.atomGroups({"residue-test":$e.core.flags.hasAny([$e.struct.type.secondaryStructureFlags(["turn"]),$e.ammp("secondaryStructureFlags")])})},alpha:{"@desc":"(*.CA)",map:()=>$e.struct.generator.atomGroups({"atom-test":$e.core.rel.eq([$e.atomName("CA"),$e.ammp("label_atom_id")])})},base:{"@desc":"(nucleic bases)"},backbone:{"@desc":"(*.C, *.CA, *.N, and all nucleic other than the bases themselves)",abbr:["mainchain"],map:()=>function ut(){return $e.struct.combinator.merge([$e.struct.modifier.intersectBy({0:$e.struct.generator.atomGroups({"residue-test":$e.core.set.has([$e.core.type.set(mt.amino),$e.ammp("label_comp_id")])}),by:$e.struct.generator.atomGroups({"atom-test":$e.core.set.has([$e.core.type.set(_t_protein),$e.ammp("label_atom_id")])})}),$e.struct.modifier.intersectBy({0:$e.struct.generator.atomGroups({"residue-test":$e.core.set.has([$e.core.type.set(mt.nucleic),$e.ammp("label_comp_id")])}),by:$e.struct.generator.atomGroups({"atom-test":$e.core.set.has([$e.core.type.set(_t_nucleic),$e.ammp("label_atom_id")])})})])}()},sidechain:{"@desc":"((protein or nucleic) and not backbone)"},spine:{"@desc":"(*.CA, *.N, *.C for proteins; *.P, *.O3', *.O5', *.C3', *.C4', *.C5 for nucleic acids)"},leadatom:{"@desc":"(*.CA, *.P, and terminal *.O5')"},solvent:{"@desc":'PDB "HOH", water, also the connected set of H-O-H in any model'}},sn=c.J,gt=[{"@desc":"value comparisons","@examples":[],name:"=",abbr:["=="],type:Z,rule:f.regexp(/\s*(LIKE|>=|<=|=|!=|>|<)\s*/i,1),map:(We,Pt,Sn)=>{let Nn;if("structure"===Pt?Nn=sn.core.flags.hasAny([sn.ammp("secondaryStructureFlags"),Je(Sn)]):"structure"===Sn?Nn=sn.core.flags.hasAny([sn.ammp("secondaryStructureFlags"),Je(Pt)]):void 0!==Pt.head?"core.type.regex"===Pt.head.name&&(Nn=sn.core.str.match([Pt,sn.core.type.str([Sn])])):void 0!==Sn.head?"core.type.regex"===Sn.head.name&&(Nn=sn.core.str.match([Sn,sn.core.type.str([Pt])])):"LIKE"===We.toUpperCase()&&(Nn=sn.core.str.match(Pt.head?[sn.core.type.regex([`^${Sn}$`,"i"]),sn.core.type.str([Pt])]:[sn.core.type.regex([`^${Pt}$`,"i"]),sn.core.type.str([Sn])])),!Nn)switch(Pt.head&&(Sn=Te(Pt,Sn)),Sn.head&&(Pt=Te(Sn,Pt)),We){case"=":Nn=sn.core.rel.eq([Pt,Sn]);break;case"!=":Nn=sn.core.rel.neq([Pt,Sn]);break;case">":Nn=sn.core.rel.gr([Pt,Sn]);break;case"<":Nn=sn.core.rel.lt([Pt,Sn]);break;case">=":Nn=sn.core.rel.gre([Pt,Sn]);break;case"<=":Nn=sn.core.rel.lte([Pt,Sn]);break;default:throw new Error(`value operator '${We}' not supported`)}return sn.struct.generator.atomGroups({"atom-test":Nn})}}];function yt(We){const[Pt,Sn,Nn,Kn,dr,xr,Ft]=We[1],Qt={};dr&&(Qt["chain-test"]=sn.core.rel.eq([sn.ammp("auth_asym_id"),dr]));const ht=[];Pt&&ht.push(sn.core.rel.eq([sn.ammp("label_comp_id"),Pt])),Sn&&ht.push(sn.core.logic.and([sn.core.rel.gre([sn.ammp("auth_seq_id"),Sn[0]]),sn.core.rel.lte([sn.ammp("auth_seq_id"),Sn[1]])])),Nn&&ht.push(sn.core.rel.eq([sn.ammp("auth_seq_id"),Nn])),Kn&&ht.push(sn.core.rel.eq([sn.ammp("pdbx_PDB_ins_code"),Kn])),ht.length&&(Qt["residue-test"]=le(ht));const pt=[];return xr&&pt.push(sn.core.rel.eq([sn.ammp("auth_atom_id"),xr])),Ft&&pt.push(sn.core.rel.eq([sn.ammp("label_alt_id"),Ft])),pt.length&&(Qt["atom-test"]=le(pt)),sn.struct.generator.atomGroups(Qt)}const At=f.createLanguage({Integer:()=>f.regexp(/-?[0-9]+/).map(Number).desc("integer"),Parens:function(We){return f.alt(We.Parens,We.Operator,We.Expression).wrap(f.regexp(/\(\s*/),f.regexp(/\s*\)/))},Expression:function(We){return f.alt(We.Keywords,We.AtomExpression.map(yt),We.Within.map(Pt=>sn.struct.modifier.includeSurroundings({0:Pt[1],radius:Pt[0]})),We.ValueQuery,We.Element.map(Pt=>sn.struct.generator.atomGroups({"atom-test":sn.core.rel.eq([sn.acp("elementSymbol"),sn.struct.type.elementSymbol(Pt)])})),We.Resname.map(Pt=>sn.struct.generator.atomGroups({"residue-test":sn.core.rel.eq([sn.ammp("label_comp_id"),Pt])})))},Operator:function(We){return q(pn,f.alt(We.Parens,We.Expression))},AtomExpression:function(We){return f.seq(f.lookahead(We.AtomPrefix),f.seq(We.BracketedResname.or(f.of(null)),We.ResnoRange.or(f.of(null)),We.Resno.or(f.of(null)),We.Inscode.or(f.of(null)),We.Chainname.or(f.of(null)),We.Atomname.or(f.of(null)),We.Altloc.or(f.of(null)),We.Model.or(f.of(null)))).desc("expression")},AtomPrefix:()=>f.regexp(/[\[0-9:^%/.-]/).desc("atom-prefix"),Chainname:()=>f.regexp(/:([A-Za-z]{1,3})/,1).desc("chainname"),Model:()=>f.regexp(/\/([0-9]+)/,1).map(Number).desc("model"),Element:()=>f.regexp(/_([A-Za-z]{1,3})/,1).desc("element"),Atomname:()=>f.regexp(/\.([a-zA-Z0-9]{1,4})/,1).map(sn.atomName).desc("atomname"),Resname:()=>f.regexp(/[a-zA-Z0-9]{1,4}/).desc("resname"),Resno:We=>We.Integer.desc("resno"),Altloc:()=>f.regexp(/%([a-zA-Z0-9])/,1).desc("altloc"),Inscode:()=>f.regexp(/\^([a-zA-Z0-9])/,1).desc("inscode"),BracketedResname:()=>f.regexp(/\[([a-zA-Z0-9]{1,4})\]/,1).desc("bracketed-resname"),ResnoRange:We=>f.seq(We.Integer.skip(f.seq(f.optWhitespace,f.string("-"),f.optWhitespace)),We.Integer).desc("resno-range"),Within:We=>f.regexp(/within/i).skip(f.regexp(/\s*\(\s*/)).then(f.seq(We.Integer.skip(f.regexp(/\s*,\s*/)),We.Query)).skip(f.regexp(/\)/)),Keywords:()=>f.alt(...Se(Kt)).desc("keyword"),Query:function(We){return f.alt(We.Operator,We.Parens,We.Expression).trim(f.optWhitespace)},Number:function(){return f.regexp(/-?(0|[1-9][0-9]*)([.][0-9]+)?([eE][+-]?[0-9]+)?/).map(Number).desc("number")},String:function(){const We=K(en,Kt,pn).sort(Re).map(W.Nt).join("|");return f.alt(f.regexp(new RegExp(`(?!(${We}))[A-Z0-9_]+`,"i")),f.regexp(/'((?:[^"\\]|\\.)*)'/,1),f.regexp(/"((?:[^"\\]|\\.)*)"/,1).map(Pt=>sn.core.type.regex([`^${Pt}$`,"i"]))).desc("string")},Value:function(We){return f.alt(We.Number,We.String)},ValueParens:function(We){return f.alt(We.ValueParens,We.ValueOperator,We.ValueExpressions).wrap(f.string("("),f.string(")"))},ValuePropertyNames:function(){return f.alt(...Ne(en,/LIKE|>=|<=|=|!=|>|<|\)|\s/i))},ValueOperator:function(We){return q(gt,f.alt(We.ValueParens,We.ValueExpressions))},ValueExpressions:function(We){return f.alt(We.Value,We.ValuePropertyNames)},ValueQuery:function(We){return f.alt(We.ValueOperator.map(Pt=>{if(Pt.head){if(Pt.head.name.startsWith("structure-query.generator"))return Pt}else if("string"==typeof Pt&&Pt.length<=4)return sn.struct.generator.atomGroups({"residue-test":sn.core.rel.eq([sn.ammp("label_comp_id"),Pt])});throw new Error(`values must be part of an comparison, value '${Pt}'`)}))}}),rn=c.J,tt=/[-+]?[0-9]*\.?[0-9]+/;function nn(We){return We.split("+").map(Pt=>Pt.replace(/^["']|["']$/g,""))}function bn(We){if(We.includes("-")&&We.includes("+")){const Pt=We.split("+").map(Nn=>Nn.replace(/^["']|["']$/g,"")),Sn=[];return Pt.forEach(Nn=>{if(Nn.includes("-")&&!Nn.startsWith("-")){const[Kn,dr]=Nn.split("-").map(xr=>parseInt(xr));for(let xr=Kn;xr<=dr;xr++)Sn.push(xr)}else if(Nn.includes("-")&&Nn.startsWith("-")&&Nn.match(/[0-9]+-[-0-9]+/)){const Kn=-parseInt(Nn.split("-")[1]);let dr;dr=Nn.includes("--")?-parseInt(Nn.split("-")[3]):parseInt(Nn.split("-")[2]);for(let xr=Kn;xr<=dr;xr++)Sn.push(xr)}else Nn.includes("-")&&Nn.startsWith("-")&&Nn.match(/[0-9]+-[-0-9]+/),Sn.push(parseInt(Nn))}),Sn}if(We.includes("-")&&!We.includes("+")){const Pt=[];if(We.startsWith("-"))if(We.startsWith("-")&&We.match(/[0-9]+-[-0-9]+/)){const Sn=-parseInt(We.split("-")[1]);let Nn;Nn=We.includes("--")?-parseInt(We.split("-")[3]):parseInt(We.split("-")[2]);for(let Kn=Sn;Kn<=Nn;Kn++)Pt.push(Kn)}else We.startsWith("-")&&We.match(/[0-9]+-[-0-9]+/),Pt.push(parseInt(We));else{const[Sn,Nn]=We.split("-").map(Kn=>parseInt(Kn));for(let Kn=Sn;Kn<=Nn;Kn++)Pt.push(Kn)}return Pt}return!We.includes("-")&&We.includes("+")?nn(We).map(Pt=>parseInt(Pt)):[parseInt(We)]}const jt={H:"helix",S:"beta",L:"none"},Dt={symbol:{"@desc":"chemical-symbol-list: list of 1- or 2-letter chemical symbols from the periodic table","@examples":["symbol O+N"],abbr:["e."],regex:/[a-zA-Z'"+]+/,map:function Dn(We){return We.split("+").map(rn.struct.type.elementSymbol)},level:"atom-test",property:rn.acp("elementSymbol")},name:{"@desc":"atom-name-list: list of up to 4-letter codes for atoms in proteins or nucleic acids","@examples":["name CA+CB+CG+CD"],abbr:["n."],regex:/[a-zA-Z0-9'"+]+/,map:function Mt(We){return We.split("+").map(rn.atomName)},level:"atom-test",property:rn.ammp("label_atom_id")},resn:{"@desc":"residue-name-list: list of 3-letter codes for amino acids or list of up to 2-letter codes for nucleic acids","@examples":["resn ASP+GLU+ASN+GLN","resn A+G"],abbr:["resname","r."],regex:/[a-zA-Z0-9'"+]+/,map:nn,level:"residue-test",property:rn.ammp("label_comp_id")},resi:{"@desc":"residue-identifier-list list of up to 4-digit residue numbers or residue-identifier-range","@examples":["resi 1+10+100+1000","resi 1-10"],abbr:["resident","residue","resid","i."],regex:/[0-9+-]+/,map:bn,level:"residue-test",property:rn.ammp("auth_seq_id")},alt:{"@desc":"alternate-conformation-identifier-list list of single letters","@examples":["alt A+B",'alt ""','alt ""+A'],abbr:[],regex:/[a-zA-Z0-9'"+]+/,map:nn,level:"atom-test",property:rn.ammp("label_alt_id")},chain:{"@desc":"chain-identifier-list list of single letters or sometimes numbers","@examples":["chain A"],abbr:["c."],regex:/[a-zA-Z0-9'"+]+/,map:nn,level:"chain-test",property:rn.ammp("auth_asym_id")},segi:{"@desc":"segment-identifier-list list of up to 4 letter identifiers","@examples":["segi lig"],abbr:["segid","s."],regex:/[a-zA-Z0-9'"+]+/,map:nn,level:"chain-test",property:rn.ammp("label_asym_id")},flag:{"@desc":"flag-number a single integer from 0 to 31","@examples":["flag 0"],isUnsupported:!0,abbr:["f."],regex:/[0-9]+/,map:We=>parseInt(We),level:"atom-test"},numeric_type:{"@desc":"type-number a single integer","@examples":["nt. 5"],isUnsupported:!0,abbr:["nt."],regex:/[0-9]+/,map:We=>parseInt(We),level:"atom-test"},text_type:{"@desc":"type-string a list of up to 4 letter codes","@examples":["text_type HA+HC"],isUnsupported:!0,abbr:["tt."],regex:/[a-zA-Z0-9'"+]+/,map:nn,level:"atom-test"},id:{"@desc":"external-index-number a single integer","@examples":["id 23"],regex:/[0-9+-]+/,map:bn,level:"atom-test",property:rn.ammp("id")},index:{"@desc":"internal-index-number a single integer","@examples":["index 11"],regex:/[0-9+-]+/,map:bn,level:"atom-test",property:rn.ammp("id")},ss:{"@desc":"secondary-structure-type list of single letters. Helical regions should be assigned H and sheet regions S. Loop regions can either be assigned L or be blank.","@examples":["ss H+S+L",'ss S+""'],abbr:[],regex:/[a-zA-Z'"+]+/,map:function It(We){return{flags:rn.struct.type.secondaryStructureFlags(We.toUpperCase().split("+").map(Pt=>jt[Pt]||"none"))}},level:"residue-test",property:rn.ammp("secondaryStructureFlags")},b:{"@desc":"comparison-operator b-factor-value a real number","@examples":["b > 10"],isNumeric:!0,abbr:[],regex:tt,map:We=>parseFloat(We),level:"atom-test",property:rn.ammp("B_iso_or_equiv")},q:{"@desc":"comparison-operator occupancy-value a real number","@examples":["q <0.50"],isNumeric:!0,abbr:[],regex:tt,map:We=>parseFloat(We),level:"atom-test",property:rn.ammp("occupancy")},formal_charge:{"@desc":"comparison-operator formal charge-value an integer","@examples":["fc. = -1"],isNumeric:!0,abbr:["fc."],regex:tt,map:We=>parseFloat(We),level:"atom-test",property:rn.ammp("pdbx_formal_charge")},partial_charge:{"@desc":"comparison-operator partial charge-value a real number","@examples":["pc. > 1"],isUnsupported:!0,isNumeric:!0,abbr:["pc."],regex:tt,map:We=>parseFloat(We),level:"atom-test"},elem:{"@desc":'str atomic element symbol string ("X" if undefined)',"@examples":["elem N"],regex:/[a-zA-Z0-9]{1,3}/,map:We=>rn.es(We),level:"atom-test",property:rn.acp("elementSymbol")}},Ct=c.J,$t=[{"@desc":"Selects atoms that are not included in s1.","@examples":["NOT resn ALA","not (resi 42 or chain A)","!resi 42 or chain A"],name:"not",type:de,rule:f.alt(f.regexp(/NOT/i).skip(f.whitespace),f.string("!").skip(f.optWhitespace)),map:(We,Pt)=>Ce(Pt)},{"@desc":"Selects atoms included in both s1 and s2.","@examples":["chain A AND name CA"],name:"and",type:Z,rule:Y(/AND|&/i),map:(We,Pt,Sn)=>Ct.struct.modifier.intersectBy({0:Pt,by:Sn})},{"@desc":"Selects atoms included in either s1 or s2.","@examples":["chain A OR chain B"],name:"or",type:Z,rule:Y(/OR|\|/i),map:(We,Pt,Sn)=>Ct.struct.combinator.merge([Pt,Sn])},{"@desc":"Selects atoms in s1 whose identifiers name, resi, resn, chain and segi all match atoms in s2.","@examples":["chain A IN chain B"],name:"in",type:Z,rule:Y(/IN/i),map:(We,Pt,Sn)=>Ct.struct.filter.withSameAtomProperties({0:Pt,source:Sn,property:Ct.core.type.compositeKey([Ct.ammp("label_atom_id"),Ct.ammp("label_seq_id"),Ct.ammp("label_comp_id"),Ct.ammp("auth_asym_id"),Ct.ammp("label_asym_id")])})},{"@desc":"Selects atoms in s1 whose identifiers name and resi match atoms in s2.","@examples":["chain A LIKE chain B"],name:"like",type:Z,rule:Y(/LIKE|l\./i),map:(We,Pt,Sn)=>Ct.struct.filter.withSameAtomProperties({0:Pt,source:Sn,property:Ct.core.type.compositeKey([Ct.ammp("label_atom_id"),Ct.ammp("label_seq_id")])})},{"@desc":"Selects all atoms whose van der Waals radii are separated from the van der Waals radii of s1 by a minimum of X Angstroms.","@examples":["solvent GAP 2"],name:"gap",type:ye,rule:g(/GAP\s+([-+]?[0-9]*\.?[0-9]+)/i,1).map(We=>parseFloat(We)),map:(We,Pt)=>Ct.struct.filter.within({0:Ct.struct.generator.all(),target:Pt,"atom-radius":Ct.acp("vdw"),"max-radius":We,invert:!0})},{"@desc":"Selects atoms with centers within X Angstroms of the center of any atom in s1.","@examples":["resname LIG AROUND 1"],name:"around",abbr:["a."],type:ye,rule:g(/(AROUND|a\.)\s+([-+]?[0-9]*\.?[0-9]+)/i,2).map(We=>parseFloat(We)),map:(We,Pt)=>Ct.struct.modifier.exceptBy({0:Ct.struct.filter.within({0:Ct.struct.generator.all(),target:Pt,"max-radius":We}),by:Pt})},{"@desc":"Expands s1 by all atoms within X Angstroms of the center of any atom in s1.","@examples":["chain A EXPAND 3"],name:"expand",abbr:["x."],type:ye,rule:g(/(EXPAND|x\.)\s+([-+]?[0-9]*\.?[0-9]+)/i,2).map(We=>parseFloat(We)),map:(We,Pt)=>Ct.struct.modifier.includeSurroundings({0:Pt,radius:We})},{"@desc":"Selects atoms in s1 that are within X Angstroms of any atom in s2.","@examples":["chain A WITHIN 3 OF chain B"],name:"within",abbr:["w."],type:Z,rule:_e("WITHIN","w."),map:(We,Pt,Sn)=>Ct.struct.filter.within({0:Pt,target:Sn,"max-radius":We})},{"@desc":"Same as within, but excludes s2 from the selection (and thus is identical to s1 and s2 around X).","@examples":["chain A NEAR_TO 3 OF chain B"],name:"near_to",abbr:["nto."],type:Z,rule:_e("NEAR_TO","nto."),map:(We,Pt,Sn)=>Ct.struct.modifier.exceptBy({0:Ct.struct.filter.within({0:Pt,target:Sn,"max-radius":We}),by:Sn})},{"@desc":"Selects atoms in s1 that are at least X Anstroms away from s2.","@examples":["solvent BEYOND 2 OF chain A"],name:"beyond",abbr:["be."],type:Z,rule:_e("BEYOND","be."),map:(We,Pt,Sn)=>Ct.struct.modifier.exceptBy({0:Ct.struct.filter.within({0:Pt,target:Sn,"max-radius":We,invert:!0}),by:Sn})},{"@desc":"Expands selection to complete residues.","@examples":["BYRESIDUE name N"],name:"byresidue",abbr:["byresi","byres","br."],type:de,rule:ee(/BYRESIDUE|byresi|byres|br\./i),map:(We,Pt)=>be(Ct.struct.modifier.expandProperty({0:Ct.struct.modifier.union({0:Pt}),property:Ct.ammp("residueKey")}))},{"@desc":"Completely selects all alpha carbons in all residues covered by a selection.","@examples":["BYCALPHA chain A"],name:"bycalpha",abbr:["bca."],type:de,rule:ee(/BYCALPHA|bca\./i),map:(We,Pt)=>Ct.struct.generator.queryInSelection({0:Ct.struct.modifier.expandProperty({0:Ct.struct.modifier.union({0:Pt}),property:Ct.ammp("residueKey")}),query:Ct.struct.generator.atomGroups({"atom-test":Ct.core.rel.eq([Ct.atomName("CA"),Ct.ammp("label_atom_id")])})})},{"@desc":"Expands selection to complete molecules.","@examples":["BYMOLECULE resi 20-30"],name:"bymolecule",isUnsupported:!0,abbr:["bymol","bm."],type:de,rule:ee(/BYMOLECULE|bymol|bm\./i),map:(We,Pt)=>be(Ct.struct.modifier.expandProperty({0:Ct.struct.modifier.union({0:Pt}),property:Ct.atp("connectedComponentKey")}))},{"@desc":"Expands selection to complete fragments.","@examples":["BYFRAGMENT resi 10"],name:"byfragment",abbr:["byfrag","bf."],isUnsupported:!0,type:de,rule:ee(/BYFRAGMENT|byfrag|bf\./i),map:(We,Pt)=>[We,Pt]},{"@desc":"Expands selection to complete segments.","@examples":["BYSEGMENT resn CYS"],name:"bysegment",abbr:["bysegi","byseg","bs."],type:de,rule:ee(/BYSEGMENT|bysegi|byseg|bs\./i),map:(We,Pt)=>be(Ct.struct.modifier.expandProperty({0:Ct.struct.modifier.union({0:Pt}),property:Ct.ammp("chainKey")}))},{"@desc":"Expands selection to complete objects.","@examples":["BYOBJECT chain A"],name:"byobject",abbr:["byobj","bo."],isUnsupported:!0,type:de,rule:ee(/BYOBJECT|byobj|bo\./i),map:(We,Pt)=>[We,Pt]},{"@desc":"Expands selection to unit cell.","@examples":["BYCELL chain A"],name:"bycell",isUnsupported:!0,type:de,rule:ee(/BYCELL/i),map:(We,Pt)=>[We,Pt]},{"@desc":"All rings of size \u2264 7 which have at least one atom in s1.","@examples":["BYRING resn HEM"],name:"byring",type:de,rule:ee(/BYRING/i),map:(We,Pt)=>be(Ct.struct.modifier.intersectBy({0:Ct.struct.filter.pick({0:Ct.struct.generator.rings(),test:Ct.core.logic.and([Ct.core.rel.lte([Ct.struct.atomSet.atomCount(),7]),Ct.core.rel.gr([Ct.struct.atomSet.countQuery([Pt]),1])])}),by:Pt}))},{"@desc":"Selects atoms directly bonded to s1, excludes s1.","@examples":["NEIGHBOR resn CYS"],name:"neighbor",type:de,abbr:["nbr."],rule:ee(/NEIGHBOR|nbr\./i),map:(We,Pt)=>Ct.struct.modifier.exceptBy({0:be(Ct.struct.modifier.includeConnected({0:Ct.struct.modifier.union({0:Pt}),"bond-test":!0})),by:Pt})},{"@desc":"Selects atoms directly bonded to s1, may include s1.","@examples":["BOUND_TO name CA"],name:"bound_to",abbr:["bto."],type:de,rule:ee(/BOUND_TO|bto\./i),map:(We,Pt)=>be(Ct.struct.modifier.includeConnected({0:Ct.struct.modifier.union({0:Pt})}))},{"@desc":"Extends s1 by X bonds connected to atoms in s1.","@examples":["resname LIG EXTEND 3"],name:"extend",abbr:["xt."],type:ye,rule:g(/(EXTEND|xt\.)\s+([0-9]+)/i,2).map(We=>parseInt(We)),map:(We,Pt)=>be(Ct.struct.modifier.includeConnected({0:Ct.struct.modifier.union({0:Pt}),"bond-test":!0,"layer-count":We}))}],Vt=c.J,Wt={nucleic:["A","C","T","G","U","DA","DC","DT","DG","DU"],protein:["ALA","ARG","ASN","ASP","CYS","CYX","GLN","GLU","GLY","HIS","HID","HIE","HIP","ILE","LEU","LYS","MET","MSE","PHE","PRO","SER","THR","TRP","TYR","VAL"],solvent:["HOH","WAT","H20","TIP","SOL"]},yn_nucleic=["P","O3'","O5'","C5'","C4'","C3'","OP1","OP2","O3*","O5*","C5*","C4*","C3*","C2'","C1'","O4'","O2'"],yn_protein=["C","N","CA","O"];function Zt(){return Vt.struct.combinator.merge([Vt.struct.modifier.intersectBy({0:Vt.struct.generator.atomGroups({"residue-test":Vt.core.set.has([Vt.core.type.set(Wt.protein),Vt.ammp("label_comp_id")])}),by:Vt.struct.generator.atomGroups({"atom-test":Vt.core.set.has([Vt.core.type.set(yn_protein),Vt.ammp("label_atom_id")])})}),Vt.struct.modifier.intersectBy({0:Vt.struct.generator.atomGroups({"residue-test":Vt.core.set.has([Vt.core.type.set(Wt.nucleic),Vt.ammp("label_comp_id")])}),by:Vt.struct.generator.atomGroups({"atom-test":Vt.core.set.has([Vt.core.type.set(yn_nucleic),Vt.ammp("label_atom_id")])})})])}const kt={all:{"@desc":"All atoms currently loaded into PyMOL",abbr:["*"],map:()=>Vt.struct.generator.all()},none:{"@desc":"No atoms (empty selection)",map:()=>Vt.struct.generator.empty()},hydrogens:{"@desc":"All hydrogen atoms currently loaded into PyMOL",abbr:["hydro","h."],map:()=>Vt.struct.generator.atomGroups({"atom-test":Vt.core.rel.eq([Vt.acp("elementSymbol"),Vt.es("H")])})},hetatm:{"@desc":"All atoms loaded from Protein Data Bank HETATM records",abbr:["het"],map:()=>Vt.struct.generator.atomGroups({"atom-test":Vt.core.rel.eq([Vt.ammp("isHet"),!0])})},visible:{"@desc":"All atoms in enabled objects with at least one visible representation",abbr:["v."]},polymer:{"@desc":"All atoms on the polymer (not het). Finds atoms with residue identifiers matching a known polymer, such a peptide and DNA.",abbr:["pol."],map:()=>Vt.struct.generator.atomGroups({"residue-test":Vt.core.set.has([Vt.core.type.set(Wt.nucleic.concat(Wt.protein)),Vt.ammp("label_comp_id")])})},sidechain:{"@desc":"Polymer non-backbone atoms (new in PyMOL 1.6.1)",abbr:["sc."],map:()=>Vt.struct.modifier.exceptBy({0:Vt.struct.generator.atomGroups({"residue-test":Vt.core.set.has([Vt.core.type.set(Wt.nucleic.concat(Wt.protein)),Vt.ammp("label_comp_id")])}),by:Zt()})},present:{"@desc":"All atoms with defined coordinates in the current state (used in creating movies)",abbr:["pr."]},center:{"@desc":"Pseudo-atom at the center of the scene"},origin:{"@desc":"Pseudo-atom at the origin of rotation"},enabled:{"@desc":"All enabled objects or selections from the object list."},masked:{"@desc":"All masked atoms.",abbr:["msk."]},protected:{"@desc":"All protected atoms.",abbr:["pr."]},bonded:{"@desc":"All bonded atoms",map:()=>Vt.struct.generator.atomGroups({"atom-test":Vt.core.rel.gr([Vt.struct.atomProperty.core.bondCount({flags:Vt.struct.type.bondFlags(["covalent","metallic","sulfide"])}),0])})},donors:{"@desc":"All hydrogen bond donor atoms.",abbr:["don."]},acceptors:{"@desc":"All hydrogen bond acceptor atoms.",abbr:["acc."]},fixed:{"@desc":"All fixed atoms.",abbr:["fxd."]},restrained:{"@desc":"All restrained atoms.",abbr:["rst."]},organic:{"@desc":"All atoms in non-polymer organic compounds (e.g. ligands, buffers). Finds carbon-containing molecules that do not match known polymers.",abbr:["org."],map:()=>be(Vt.struct.modifier.expandProperty({0:Vt.struct.modifier.union([Vt.struct.generator.queryInSelection({0:Vt.struct.generator.atomGroups({"residue-test":Vt.core.logic.not([Vt.core.set.has([Vt.core.type.set(Wt.nucleic.concat(Wt.protein)),Vt.ammp("label_comp_id")])])}),query:Vt.struct.generator.atomGroups({"atom-test":Vt.core.rel.eq([Vt.es("C"),Vt.acp("elementSymbol")])})})]),property:Vt.ammp("residueKey")}))},inorganic:{"@desc":"All non-polymer inorganic atoms/ions. Finds atoms in molecules that do not contain carbon and do not match any known solvent residues.",abbr:["ino."],map:()=>be(Vt.struct.modifier.expandProperty({0:Vt.struct.modifier.union([Vt.struct.filter.pick({0:Vt.struct.generator.atomGroups({"residue-test":Vt.core.logic.not([Vt.core.set.has([Vt.core.type.set(Wt.nucleic.concat(Wt.protein).concat(Wt.solvent)),Vt.ammp("label_comp_id")])]),"group-by":Vt.ammp("residueKey")}),test:Vt.core.logic.not([Vt.core.set.has([Vt.struct.atomSet.propertySet([Vt.acp("elementSymbol")]),Vt.es("C")])])})]),property:Vt.ammp("residueKey")}))},solvent:{"@desc":"All water molecules. The hardcoded solvent residue identifiers are currently: HOH, WAT, H20, TIP, SOL.",abbr:["sol."],map:()=>Vt.struct.generator.atomGroups({"residue-test":Vt.core.set.has([Vt.core.type.set(Wt.solvent),Vt.ammp("label_comp_id")])})},guide:{"@desc":"All protein CA and nucleic acid C4*/C4",map:()=>Vt.struct.combinator.merge([Vt.struct.generator.atomGroups({"atom-test":Vt.core.rel.eq([Vt.atomName("CA"),Vt.ammp("label_atom_id")]),"residue-test":Vt.core.set.has([Vt.core.type.set(Wt.protein),Vt.ammp("label_comp_id")])}),Vt.struct.generator.atomGroups({"atom-test":Vt.core.set.has([ne(["C4*","C4'"]),Vt.ammp("label_atom_id")]),"residue-test":Vt.core.set.has([Vt.core.type.set(Wt.nucleic),Vt.ammp("label_comp_id")])})])},metals:{"@desc":"All metal atoms (new in PyMOL 1.6.1)"},backbone:{"@desc":"Polymer backbone atoms (new in PyMOL 1.6.1)",abbr:["bb."],map:()=>Zt()},"polymer.protein":{"@desc":"Protein (New in PyMOL 2.1)",abbr:["polymer.protein"],map:()=>Vt.struct.generator.atomGroups({"residue-test":Vt.core.set.has([Vt.core.type.set(Wt.protein),Vt.ammp("label_comp_id")])})},"polymer.nucleic":{"@desc":"Nucleic Acid (New in PyMOL 2.1)",abbr:["polymer.nucleic"],map:()=>Vt.struct.generator.atomGroups({"residue-test":Vt.core.set.has([Vt.core.type.set(Wt.nucleic),Vt.ammp("label_comp_id")])})}},Ot=c.J,An=function we(We){const Pt={};return Object.keys(We).sort(Re).forEach(Sn=>{const Nn=We[Sn],Kn=xe(`property '${Sn}' not supported`),dr=f.regexp(Nn.regex).map(xr=>(Nn.isUnsupported&&Kn(),Be(Nn.property,Nn.map(xr))));Nn.isNumeric||(Pt[Sn]=dr)}),Pt}(Dt),jn=f.string("/");function On(We){return We.or(f.of(null))}function fr(We){const Pt={},Sn={};for(const Nn in We){const Kn=Dt[Nn];if(!Kn)throw new Error(`property '${Nn}' not supported, value '${We[Nn]}'`);null!==We[Nn]&&(Sn[Kn.level]||(Sn[Kn.level]=[]),Sn[Kn.level].push(We[Nn]))}for(const Nn in Sn)Pt[Nn]=le(Sn[Nn]);return Ot.struct.generator.atomGroups(Pt)}const Dr=f.createLanguage({Parens:function(We){return f.alt(We.Parens,We.Operator,We.Expression).wrap(f.string("("),f.string(")"))},Expression:function(We){return f.alt(We.Keywords,We.AtomSelectionMacro.map(fr),We.NamedAtomProperties,We.Pepseq,We.Rep,We.Object)},AtomSelectionMacro:function(We){return f.alt(jn.then(f.alt(f.seq(On(We.ObjectProperty).skip(jn),On(An.segi).skip(jn),On(An.chain).skip(jn),On(An.resi).skip(jn),On(An.name)).map(Pt=>({object:Pt[0],segi:Pt[1],chain:Pt[2],resi:Pt[3],name:Pt[4]})),f.seq(On(We.ObjectProperty).skip(jn),On(An.segi).skip(jn),On(An.chain).skip(jn),On(An.resi)).map(Pt=>({object:Pt[0],segi:Pt[1],chain:Pt[2],resi:Pt[3]})),f.seq(On(We.ObjectProperty).skip(jn),On(An.segi).skip(jn),On(An.chain)).map(Pt=>({object:Pt[0],segi:Pt[1],chain:Pt[2]})),f.seq(On(We.ObjectProperty).skip(jn),On(An.segi)).map(Pt=>({object:Pt[0],segi:Pt[1]})),f.seq(On(We.ObjectProperty)).map(Pt=>({object:Pt[0]})))),f.alt(f.seq(On(We.ObjectProperty).skip(jn),On(An.segi).skip(jn),On(An.chain).skip(jn),On(An.resi).skip(jn),On(An.name)).map(Pt=>({object:Pt[0],segi:Pt[1],chain:Pt[2],resi:Pt[3],name:Pt[4]})),f.seq(On(An.segi).skip(jn),On(An.chain).skip(jn),On(An.resi).skip(jn),On(An.name)).map(Pt=>({segi:Pt[0],chain:Pt[1],resi:Pt[2],name:Pt[3]})),f.seq(On(An.chain).skip(jn),On(An.resi).skip(jn),On(An.name)).map(Pt=>({chain:Pt[0],resi:Pt[1],name:Pt[2]})),f.seq(On(An.resi).skip(jn),On(An.name)).map(Pt=>({resi:Pt[0],name:Pt[1]}))))},NamedAtomProperties:function(){return f.alt(...Oe(Dt))},Keywords:()=>f.alt(...Se(kt)),ObjectProperty:()=>{const We=K(Dt,kt,$t).sort(Re).map(W.Nt).join("|");return f.regexp(new RegExp(`(?!(${We}))[A-Z0-9_]+`,"i"))},Object:We=>We.ObjectProperty.notFollowedBy(jn).map(Pt=>{throw new Error(`property 'object' not supported, value '${Pt}'`)}),Pepseq:()=>f.regexp(/(PEPSEQ|ps\.)\s+([a-z]+)/i,2).map(xe("operator 'pepseq' not supported")),Rep:()=>f.regexp(/REP\s+(lines|spheres|mesh|ribbon|cartoon|sticks|dots|surface|labels|extent|nonbonded|nb_spheres|slice|extent|slice|dashes|angles|dihedrals|cgo|cell|callback|everything)/i,1).map(xe("operator 'rep' not supported")),Operator:function(We){return q($t,f.alt(We.Parens,We.Expression,We.Operator))},Query:function(We){return f.alt(We.Operator,We.Parens,We.Expression).trim(f.optWhitespace)}}),or=c.J,Nr=/[-+]?[0-9]*\.?[0-9]+/,Ir=/[+]?[0-9]+/,Or=/[-+]?[0-9]+/;function Jr(We){return We}const To={T:"turn",E:"sheet",B:"strand",H:"alpha",G:"3-10",I:"pi",C:"none"};function un(We){return or.struct.type.secondaryStructureFlags([To[We.toUpperCase()]||"none"])}const ct={name:{"@desc":"str atom name","@examples":["name CA"],regex:/[a-zA-Z0-9]+/,map:or.atomName,level:"atom-test",property:or.ammp("label_atom_id")},type:{"@desc":"str atom type","@examples":["type C3"],isUnsupported:!0,regex:/[a-zA-Z0-9]+/,map:Jr,level:"atom-test"},index:{"@desc":"num the atom number, starting at 0","@examples":["index 10"],isNumeric:!0,regex:Ir,map:We=>parseInt(We)-1,level:"atom-test",property:or.ammp("id")},serial:{"@desc":"num the atom number, starting at 1","@examples":["serial 11"],isNumeric:!0,regex:Ir,map:We=>parseInt(We),level:"atom-test",property:or.ammp("id")},atomicnumber:{"@desc":"num atomic number (0 if undefined)","@examples":["atomicnumber 13"],isNumeric:!0,regex:Ir,map:We=>parseInt(We),level:"atom-test",property:or.acp("atomicNumber")},element:{"@desc":'str atomic element symbol string ("X" if undefined)',"@examples":["element N"],regex:/[a-zA-Z0-9]{1,3}/,map:We=>or.es(We),level:"atom-test",property:or.acp("elementSymbol")},altloc:{"@desc":"str alternate location/conformation identifier","@examples":["altloc C"],regex:/[a-zA-Z0-9]+/,map:Jr,level:"atom-test",property:or.ammp("label_alt_id")},chain:{"@desc":"str the one-character chain identifier","@examples":["chain A"],regex:/[a-zA-Z0-9]+/,map:Jr,level:"residue-test",property:or.ammp("auth_asym_id")},residue:{"@desc":"num a set of connected atoms with the same residue number","@examples":["residue < 11","residue 11"],isNumeric:!0,regex:Or,map:We=>parseInt(We),level:"residue-test",property:or.ammp("auth_seq_id")},fragment:{"@desc":"num a set of connected residues","@examples":["fragment 42"],isUnsupported:!0,isNumeric:!0,regex:Or,map:We=>parseInt(We),level:"residue-test"},pfrag:{"@desc":"num a set of connected protein residues","@examples":["pfrag 42"],isUnsupported:!0,isNumeric:!0,regex:Or,map:We=>parseInt(We),level:"residue-test"},nfrag:{"@desc":"num a set of connected nucleic residues","@examples":["nfrag 42"],isUnsupported:!0,isNumeric:!0,regex:Or,map:We=>parseInt(We),level:"residue-test"},sequence:{"@desc":"str a sequence given by one letter names","@examples":["sequence PGATTACA"],isUnsupported:!0,regex:/[a-zA-Z0-9]+/,map:Jr,level:"residue-test"},numbonds:{"@desc":"num number of bonds","@examples":["numbonds = 2","numbonds >= 3"],isNumeric:!0,regex:Ir,map:We=>parseInt(We),level:"atom-test",property:or.acp("bondCount")},resname:{"@desc":"str residue name","@examples":["resname ALA"],regex:/[a-zA-Z0-9]+/,map:Jr,level:"residue-test",property:or.ammp("auth_comp_id")},resid:{"@desc":"num residue id","@examples":["resid 42"],isNumeric:!0,regex:Or,map:We=>parseInt(We),level:"residue-test",property:or.ammp("auth_seq_id")},segname:{"@desc":"str segment name","@examples":["segname B"],regex:/[a-zA-Z0-9]+/,map:Jr,level:"residue-test",property:or.ammp("label_asym_id")},x:{"@desc":"float x coordinate","@examples":["x 42"],isNumeric:!0,regex:Nr,map:We=>parseFloat(We),level:"atom-test",property:or.acp("x")},y:{"@desc":"float y coordinate","@examples":["y > 1.7"],isNumeric:!0,regex:Nr,map:We=>parseFloat(We),level:"atom-test",property:or.acp("y")},z:{"@desc":"float z coordinate","@examples":["z < 11","z > -21"],isNumeric:!0,regex:Nr,map:We=>parseFloat(We),level:"atom-test",property:or.acp("z")},radius:{"@desc":"float atomic radius","@examples":["radius > 1.3"],isNumeric:!0,regex:Nr,map:We=>parseFloat(We),level:"atom-test",property:or.acp("vdw")},mass:{"@desc":"float atomic mass","@examples":["mass > 2"],isNumeric:!0,regex:Nr,map:We=>parseFloat(We),level:"atom-test",property:or.acp("mass")},charge:{"@desc":"float atomic charge","@examples":["charge > 0","charge 1"],isNumeric:!0,regex:Nr,map:We=>parseFloat(We),level:"atom-test",property:or.ammp("pdbx_formal_charge")},beta:{"@desc":"float temperature factor","@examples":["beta < 20","beta > 35"],isNumeric:!0,regex:Nr,map:We=>parseFloat(We),level:"atom-test",property:or.ammp("B_iso_or_equiv")},occupancy:{"@desc":"float occupancy","@examples":["occupancy 1","occupancy < 1"],isNumeric:!0,regex:Nr,map:We=>parseFloat(We),level:"atom-test",property:or.ammp("occupancy")},user:{"@desc":"float time-varying user-specified value","@examples":["user < 0.1"],isUnsupported:!0,isNumeric:!0,regex:Nr,map:We=>parseFloat(We),level:"atom-test"},rasmol:{"@desc":"str translates Rasmol selection string to VMD","@examples":["rasmol 'all'"],isUnsupported:!0,regex:/[^']*/,map:Jr,level:"atom-test"},structure:{"@desc":"str single letter name for the secondary structure","@examples":["structure H","structure H E"],regex:/T|E|B|H|G|I|C/i,map:un,level:"atom-test",property:or.ammp("secondaryStructureFlags")},phi:{"@desc":"float phi backbone conformational angles","@examples":["phi < 160"],isUnsupported:!0,isNumeric:!0,regex:Nr,map:We=>parseFloat(We),level:"residue-test"},psi:{"@desc":"float psi backbone conformational angles","@examples":["psi < 160"],isUnsupported:!0,isNumeric:!0,regex:Nr,map:We=>parseFloat(We),level:"residue-test"},ufx:{"@desc":"num force to apply in the x coordinate","@examples":["ufx 1"],isUnsupported:!0,isNumeric:!0,regex:Nr,map:We=>parseInt(We),level:"atom-test"},ufy:{"@desc":"num force to apply in the y coordinate","@examples":["ufy 1"],isUnsupported:!0,isNumeric:!0,regex:Nr,map:We=>parseInt(We),level:"atom-test"},ufz:{"@desc":"num force to apply in the z coordinate","@examples":["ufz 1"],isUnsupported:!0,isNumeric:!0,regex:Nr,map:We=>parseInt(We),level:"atom-test"}},dt=c.J,Yt=Object.keys(ct).sort(Re).filter(We=>!ct[We].isUnsupported).join("|"),cn=[{"@desc":"Selects atoms that are not included in s1.","@examples":["not protein"],name:"not",type:de,rule:f.regexp(/NOT/i).skip(f.whitespace),map:(We,Pt)=>Ce(Pt)},{"@desc":"Selects atoms within a specified distance of a selection","@examples":["within 5 of name FE"],name:"within",type:de,rule:ee(/WITHIN\s+([-+]?[0-9]*\.?[0-9]+)\s+OF/i,1).map(We=>parseFloat(We)),map:(We,Pt)=>dt.struct.modifier.includeSurroundings({0:Pt,radius:We})},{"@desc":"Exclusive within, equivalent to (within 3 of X) and not X","@examples":["exwithin 10 of resname HEM"],name:"exwithin",type:de,rule:ee(/EXWITHIN\s+([-+]?[0-9]*\.?[0-9]+)\s+OF/i,1).map(We=>parseFloat(We)),map:(We,Pt)=>dt.struct.modifier.exceptBy({0:dt.struct.modifier.includeSurroundings({0:Pt,radius:We}),by:Pt})},{"@desc":"Selects atoms which have the same keyword as the atoms in a given selection","@examples":["same resid as name FE"],name:"same",type:de,rule:ee(new RegExp(`SAME\\s+(${Yt})\\s+AS`,"i"),1).map(We=>ct[We].property),map:(We,Pt)=>dt.struct.filter.withSameAtomProperties({0:dt.struct.generator.all(),source:Pt,property:We})},{"@desc":"Selects atoms included in both s1 and s2.","@examples":["backbone and protein"],name:"and",type:Z,rule:f.alt(Y(/AND/i),f.whitespace),map:(We,Pt,Sn)=>dt.struct.modifier.intersectBy({0:Pt,by:Sn})},{"@desc":"Selects atoms included in either s1 or s2.","@examples":["water or protein"],name:"or",type:Z,rule:Y(/OR/i),map:(We,Pt,Sn)=>dt.struct.combinator.merge([Pt,Sn])}],xn=c.J;function Rn(){return xn.struct.filter.pick({0:xn.struct.generator.atomGroups({"group-by":xn.ammp("residueKey")}),test:xn.core.set.isSubset([ne(["C","N","CA","O"]),xn.ammpSet("label_atom_id")])})}function er(){return xn.struct.filter.pick({0:xn.struct.generator.atomGroups({"group-by":xn.ammp("residueKey")}),test:xn.core.logic.and([xn.core.set.isSubset([ne(["P"]),xn.ammpSet("label_atom_id")]),xn.core.logic.or([xn.core.set.isSubset([ne(["O3'","C3'","C4'","C5'","O5'"]),xn.ammpSet("label_atom_id")]),xn.core.set.isSubset([ne(["O3*","C3*","C4*","C5*","O5*"]),xn.ammpSet("label_atom_id")])])])})}function ir(){return xn.struct.combinator.merge([xn.struct.generator.queryInSelection({0:Rn(),query:xn.struct.generator.atomGroups({"atom-test":xn.core.set.has([ne(br.protein),xn.ammp("label_atom_id")])})}),xn.struct.generator.queryInSelection({0:er(),query:xn.struct.generator.atomGroups({"atom-test":xn.core.set.has([ne(br.nucleic),xn.ammp("label_atom_id")])})})])}function Yn(We){return xn.struct.generator.atomGroups({"residue-test":xn.core.flags.hasAll([xn.ammp("secondaryStructureFlags"),xn.struct.type.secondaryStructureFlags(We)])})}const br={nucleic:["P","O3'","O5'","C5'","C4'","C3'","OP1","OP2","O3*","O5*","C5*","C4*","C3*"],protein:["C","N","CA","O"]},vr={acidic:["ASP","GLU"],aliphatic:["ALA","GLY","ILE","LEU","VAL"],aromatic:["HIS","PHE","TRP","TYR"],at:["ADA","A","THY","T"],basic:["ARG","HIS","LYS"],buried:["ALA","LEU","VAL","ILE","PHE","CYS","MET","TRP"],cg:["CYT","C","GUA","G"],cyclic:["HIS","PHE","PRO","TRP","TYR"],hydrophobic:["ALA","LEU","VAL","ILE","PRO","PHE","MET","TRP"],medium:["VAL","THR","ASP","ASN","PRO","CYS","ASX","PCA","HYP"],neutral:["VAL","PHE","GLN","TYR","HIS","CYS","MET","TRP","ASX","GLX","PCA","HYP"],purine:["ADE","A","GUA","G"],pyrimidine:["CYT","C","THY","T","URI","U"],small:["ALA","GLY","SER"],water:["H2O","HH0","OHH","HOH","OH2","SOL","WAT","TIP","TIP2","TIP3","TIP4"]},Hr={all:{"@desc":"everything",map:()=>xn.struct.generator.all()},none:{"@desc":"nothing",map:()=>xn.struct.generator.empty()},protein:{"@desc":"a residue with atoms named C, N, CA, and O",map:()=>Rn()},nucleic:{"@desc":"a residue with atoms named P, O1P, O2P and either O3', C3', C4', C5', O5' or O3*, C3*, C4*, C5*, O5*. This definition assumes that the base is phosphorylated, an assumption which will be corrected in the future.",map:()=>er()},backbone:{"@desc":"the C, N, CA, and O atoms of a protein and the equivalent atoms in a nucleic acid.",map:()=>ir()},sidechain:{"@desc":"non-backbone atoms and bonds",map:()=>Ce(ir())},water:{"@desc":"all atoms with the resname H2O, HH0, OHH, HOH, OH2, SOL, WAT, TIP, TIP2, TIP3 or TIP4",abbr:["waters"],map:()=>ge(vr.water)},at:{"@desc":"residues named ADA A THY T",map:()=>ge(vr.at)},acidic:{"@desc":"residues named ASP GLU",map:()=>ge(vr.acidic)},acyclic:{"@desc":'"protein and not cyclic"',map:()=>xn.struct.modifier.intersectBy({0:Rn(),by:Ce(ge(vr.cyclic))})},aliphatic:{"@desc":"residues named ALA GLY ILE LEU VAL",map:()=>ge(vr.aliphatic)},alpha:{"@desc":"atom's residue is an alpha helix",map:()=>Yn(["alpha"])},amino:{"@desc":"a residue with atoms named C, N, CA, and O",map:()=>Rn()},aromatic:{"@desc":"residues named HIS PHE TRP TYR",map:()=>ge(vr.aromatic)},basic:{"@desc":"residues named ARG HIS LYS",map:()=>ge(vr.basic)},bonded:{"@desc":"atoms for which numbonds > 0",map:()=>be(xn.struct.filter.pick({0:xn.struct.modifier.includeConnected({0:xn.struct.generator.all(),"bond-test":xn.core.flags.hasAny([xn.struct.bondProperty.flags(),xn.struct.type.bondFlags(["covalent","metallic","sulfide"])])}),test:xn.core.rel.gr([xn.struct.atomSet.atomCount(),1])}))},buried:{"@desc":"residues named ALA LEU VAL ILE PHE CYS MET TRP",map:()=>ge(vr.buried)},cg:{"@desc":"residues named CYT C GUA G",map:()=>ge(vr.cg)},charged:{"@desc":'"basic or acidic"',map:()=>ge(vr.basic.concat(vr.acidic))},cyclic:{"@desc":"residues named HIS PHE PRO TRP TYR",map:()=>ge(vr.cyclic)},hetero:{"@desc":'"not (protein or nucleic)"',map:()=>Ce(xn.struct.combinator.merge([Rn(),er()]))},hydrogen:{"@desc":'name "[0-9]?H.*"',map:()=>xn.struct.generator.atomGroups({"atom-test":xn.core.str.match([xn.core.type.regex(["^[0-9]?[H].*$","i"]),xn.core.type.str([xn.ammp("label_atom_id")])])})},large:{"@desc":'"protein and not (small or medium)"',map:()=>xn.struct.modifier.intersectBy({0:Rn(),by:Ce(ge(vr.small.concat(vr.medium)))})},medium:{"@desc":"residues named VAL THR ASP ASN PRO CYS ASX PCA HYP",map:()=>ge(vr.medium)},neutral:{"@desc":"residues named VAL PHE GLN TYR HIS CYS MET TRP ASX GLX PCA HYP",map:()=>ge(vr.neutral)},hydrophobic:{"@desc":"hydrophobic resname ALA LEU VAL ILE PRO PHE MET TRP",map:()=>ge(vr.hydrophobic)},polar:{"@desc":'"protein and not hydrophobic"',map:()=>xn.struct.modifier.intersectBy({0:Rn(),by:Ce(ge(vr.hydrophobic))})},purine:{"@desc":"residues named ADE A GUA G",map:()=>ge(vr.purine)},pyrimidine:{"@desc":"residues named CYT C THY T URI U",map:()=>ge(vr.pyrimidine)},small:{"@desc":"residues named ALA GLY SER",map:()=>ge(vr.small)},surface:{"@desc":'"protein and not buried"',map:()=>xn.struct.modifier.intersectBy({0:Rn(),by:Ce(ge(vr.buried))})},alpha_helix:{"@desc":"atom's residue is in an alpha helix",map:()=>Yn(["alpha"])},pi_helix:{"@desc":"atom's residue is in a pi helix",map:()=>Yn(["pi"])},helix_3_10:{"@desc":"atom's residue is in a 3-10 helix",map:()=>Yn(["3-10"])},helix:{"@desc":"atom's residue is in an alpha or pi or 3-10 helix",map:()=>Yn(["helix"])},extended_beta:{"@desc":"atom's residue is a beta sheet",map:()=>Yn(["sheet"])},bridge_beta:{"@desc":"atom's residue is a beta sheet",map:()=>Yn(["strand"])},sheet:{"@desc":"atom's residue is a beta sheet",map:()=>Yn(["beta"])},turn:{"@desc":"atom's residue is in a turn conformation",map:()=>Yn(["turn"])},coil:{"@desc":"atom's residue is in a coil conformation",map:()=>xn.struct.modifier.intersectBy({0:Rn(),by:Yn(["none"])})}},Mr=c.J,Fr={sqr:{"@desc":"square of x","@examples":["sqr(2)"],map:We=>Mr.core.math.pow([We,2])},sqrt:{"@desc":"square root of x","@examples":["sqrt(2)"],map:We=>Mr.core.math.sqrt([We])},abs:{"@desc":"absolute value of x","@examples":["abs(2)"],map:We=>Mr.core.math.abs([We])},floor:{"@desc":"largest integer not greater than x","@examples":["floor(2)"],map:We=>Mr.core.math.floor([We])},ceil:{"@desc":"smallest integer not less than x","@examples":["ceil(2)"],map:We=>Mr.core.math.ceil([We])},sin:{"@desc":"sine of x","@examples":["sin(2)"],map:We=>Mr.core.math.sin([We])},cos:{"@desc":"cosine of x","@examples":["cos(2)"],map:We=>Mr.core.math.cos([We])},tan:{"@desc":"tangent of x","@examples":["tan(2)"],map:We=>Mr.core.math.tan([We])},atan:{"@desc":"arctangent of x","@examples":["atan(2)"],map:We=>Mr.core.math.atan([We])},asin:{"@desc":"arcsin of x","@examples":["asin(2)"],map:We=>Mr.core.math.asin([We])},acos:{"@desc":"arccos of x","@examples":["acos(2)"],map:We=>Mr.core.math.acos([We])},sinh:{"@desc":"hyperbolic sine of x","@examples":["sinh(2)"],map:We=>Mr.core.math.sinh([We])},cosh:{"@desc":"hyperbolic cosine of x","@examples":["cosh(2)"],map:We=>Mr.core.math.cosh([We])},tanh:{"@desc":"hyperbolic tangent of x","@examples":["tanh(2)"],map:We=>Mr.core.math.tanh([We])},exp:{"@desc":"e to the power x","@examples":["exp(2)"],map:We=>Mr.core.math.exp([We])},log:{"@desc":"natural log of x","@examples":["log(2)"],map:We=>Mr.core.math.log([We])},log10:{"@desc":"log base 10 of x","@examples":["log10(2)"],map:We=>Mr.core.math.log10([We])}},Sr=c.J,Ur=[{"@desc":"multiplication, division","@examples":[],name:"mul-div",type:Z,rule:f.regexp(/\s*(\*|\/)\s*/,1),map:(We,Pt,Sn)=>{switch(We){case"*":return Sr.core.math.mult([Pt,Sn]);case"/":return Sr.core.math.div([Pt,Sn]);default:throw new Error(`value operator '${We}' not supported`)}}},{"@desc":"addition, substraction","@examples":[],name:"add-sub",type:Z,rule:f.regexp(/\s*(-|\+)\s*/,1),map:(We,Pt,Sn)=>{switch(We){case"-":return Sr.core.math.sub([Pt,Sn]);case"+":return Sr.core.math.add([Pt,Sn]);default:throw new Error(`value operator '${We}' not supported`)}}},{"@desc":"value comparisons","@examples":[],name:"comparison",type:Z,rule:f.alt(f.regexp(/\s*(=~|==|>=|<=|=|!=|>|<)\s*/,1),f.whitespace.result("=")),map:(We,Pt,Sn)=>{let Nn;if(void 0!==Pt.head?("structure-query.atom-property.macromolecular.secondary-structure-flags"===Pt.head.name&&(Nn=Sr.core.flags.hasAny([Pt,un(Sn)])),"core.type.regex"===Pt.head.name&&(Nn=Sr.core.str.match([Pt,Sr.core.type.str([Sn])]))):void 0!==Sn.head?("structure-query.atom-property.macromolecular.secondary-structure-flags"===Sn.head.name&&(Nn=Sr.core.flags.hasAny([Sn,un(Pt)])),"core.type.regex"===Sn.head.name&&(Nn=Sr.core.str.match([Sn,Sr.core.type.str([Pt])]))):"=~"===We&&(Nn=Sr.core.str.match(Pt.head?[Sr.core.type.regex([`^${Sn}$`,"i"]),Sr.core.type.str([Pt])]:[Sr.core.type.regex([`^${Pt}$`,"i"]),Sr.core.type.str([Sn])])),!Nn)switch(Pt.head&&(Sn=Te(Pt,Sn)),Sn.head&&(Pt=Te(Sn,Pt)),We){case"=":case"==":Nn=Sr.core.rel.eq([Pt,Sn]);break;case"!=":Nn=Sr.core.rel.neq([Pt,Sn]);break;case">":Nn=Sr.core.rel.gr([Pt,Sn]);break;case"<":Nn=Sr.core.rel.lt([Pt,Sn]);break;case">=":Nn=Sr.core.rel.gre([Pt,Sn]);break;case"<=":Nn=Sr.core.rel.lte([Pt,Sn]);break;default:throw new Error(`value operator '${We}' not supported`)}return Sr.struct.generator.atomGroups({"atom-test":Nn})}}],Ro=f.createLanguage({Parens:function(We){return f.alt(We.Parens,We.Operator,We.Expression).wrap(f.string("("),f.string(")"))},Expression:function(We){return f.alt(We.RangeListProperty,We.ValueQuery,We.Keywords)},NamedAtomProperties:function(){return f.alt(...Oe(ct))},Keywords:()=>f.alt(...Se(Hr)),ValueRange:function(We){return f.seq(We.Value.skip(f.regexp(/\s+TO\s+/i)),We.Value).map(Pt=>({range:Pt}))},RangeListProperty:function(We){return f.seq(f.alt(...Ne(ct,/\s/)).skip(f.whitespace),f.alt(We.ValueRange,We.Value).sepBy1(f.whitespace)).map(Pt=>{const[Sn,Nn]=Pt,Kn=[],dr=[];Nn.forEach(ht=>{ht.range?dr.push(Sr.core.rel.inRange([Sn,ht.range[0],ht.range[1]])):Kn.push(Te(Sn,ht,To))});const xr=function Ae(We){return 1===We.length?We[0]:We.length>1?te.core.logic.or(We):void 0}(dr),Ft=function ae(We,Pt){if(se.includes(We.head.name)){const Sn=Pt[0].head,Nn=[];return Pt.forEach(Kn=>Nn.push(...Kn.args[0])),te.core.flags.hasAny([We,{head:Sn,args:Nn}])}return 1===Pt.length?te.core.rel.eq([We,Pt[0]]):Pt.length>1?te.core.set.has([te.core.type.set(Pt),We]):void 0}(Sn,Kn);let Qt;return Qt=xr&&Ft?Sr.core.logic.or([xr,Ft]):xr||Ft,Sr.struct.generator.atomGroups({[ce(Sn)]:Qt})})},Operator:function(We){return q(cn,f.alt(We.Parens,We.Expression,We.ValueQuery))},Query:function(We){return f.alt(We.Operator,We.Parens,We.Expression).trim(f.optWhitespace)},Number:function(){return f.regexp(/-?(0|[1-9][0-9]*)([.][0-9]+)?([eE][+-]?[0-9]+)?/).map(Number).desc("number")},String:function(){const We=K(ct,Hr,cn).sort(Re).map(W.Nt).join("|");return f.alt(f.regexp(new RegExp(`(?!(${We}))[A-Z0-9_]+`,"i")),f.regexp(/'((?:[^"\\]|\\.)*)'/,1),f.regexp(/"((?:[^"\\]|\\.)*)"/,1).map(Pt=>Sr.core.type.regex([`^${Pt}$`,"i"]))).desc("string")},Value:function(We){return f.alt(We.Number,We.String)},ValueParens:function(We){return f.alt(We.ValueParens,We.ValueOperator,We.ValueExpressions).wrap(f.string("("),f.string(")"))},ValuePropertyNames:function(){return f.alt(...Ne(ct,/=~|==|>=|<=|=|!=|>|<|\)|\s|\+|-|\*|\//i))},ValueOperator:function(We){return q(Ur,f.alt(We.ValueParens,We.ValueExpressions))},ValueExpressions:function(We){return f.alt(We.ValueFunctions,We.Value,We.ValuePropertyNames)},ValueFunctions:function(We){return f.alt(...function Ve(We,Pt){const Sn=[],Nn=f.regexp(/\(\s*/),Kn=f.regexp(/\s*\)/);return Object.keys(We).sort(Re).forEach(dr=>{const xr=We[dr],Ft=xr.map?xr.map:xe(`function '${dr}' not supported`),Qt=f.regexp(new RegExp(dr,"i")).skip(Nn).then(Pt).skip(Kn).map(Ft);Sn.push(Qt)}),Sn}(Fr,We.ValueOperator))},ValueQuery:function(We){return f.alt(We.ValueOperator.map(Pt=>{if(!Pt.head.name||!Pt.head.name.startsWith("structure-query.generator"))throw new Error(`values must be part of an comparison, value '${Pt}'`);return Pt}))}}),so={pymol:We=>Dr.Query.tryParse(We),vmd:We=>Ro.Query.tryParse(We),jmol:We=>At.Query.tryParse(We)};var Bo=n(9136),Go=n(7291);function Wo(We,Pt){return{expression:We,language:Pt}}!function(We){function Nn(Ft){switch(Ft.language){case"mol-script":const Qt=function $(We){return J.parse(We)}(Ft.expression);if(0===Qt.length)throw new Error("No query");return R(Qt[0]);case"pymol":case"jmol":case"vmd":return function ho(We,Pt){try{return so[We](Pt)}catch(Sn){throw console.error(Sn.message),Sn}}(Ft.language,Ft.expression);default:(0,H.dr)(Ft.language)}}function Kn(Ft){const Qt=Nn(Ft);return(0,Go.wE)(Qt)}We.Info={"mol-script":"Mol-Script",pymol:"PyMOL",vmd:"VMD",jmol:"Jmol"},We.is=function Pt(Ft){return!!Ft&&"string"==typeof Ft.expression&&!!Ft.language},We.areEqual=function Sn(Ft,Qt){return Ft.language===Qt.language&&Ft.expression===Qt.expression},We.toExpression=Nn,We.toQuery=Kn,We.toLoci=function dr(Ft,Qt){const pt=Kn(Ft)(new Bo.cY(Qt));return Bo.cv.toLociWithSourceUnits(pt)},We.getStructureSelection=function xr(Ft,Qt,ht){const pt="function"==typeof Ft?Ft(c.J):Ft;return(0,Go.wE)(pt)(new Bo.cY(Qt,ht))}}(Wo||(Wo={}))},4829:(tn,Ue,n)=>{"use strict";n.d(Ue,{K:()=>r});var r,e=n(9909),o=n(8277);!function(t){function A(i){const v={create:O=>({action:v,params:O}),id:e.kk.create22(),definition:i,createDefaultParams:(O,b)=>i.params?o.t.getDefaultValues(i.params(O,b)):{}};return v}let c;t.create=A,t.fromTransformer=function y(i){const v=i.definition;return A({from:v.from,display:v.display,params:v.params,isApplicable:i.definition.isApplicable?(O,b,_)=>i.definition.isApplicable(O,_):void 0,run({cell:O,state:b,params:_}){const M=b.build().to(O.transform.ref).apply(i,_);return b.updateTree(M)}})},(c=t.Builder||(t.Builder={})).build=O=>function v(O){return b=>A({from:O.from instanceof Array?O.from:O.from?[O.from]:[],display:"string"==typeof O.display?{name:O.display}:O.display?O.display:{name:"Unnamed State Action"},params:"object"==typeof O.params?()=>O.params:O.params?O.params:void 0,isApplicable:O.isApplicable,..."function"==typeof b?{run:b}:b})}(O),t.build=c.build}(r||(r={}))},1832:(tn,Ue,n)=>{"use strict";n.d(Ue,{Uw:()=>V,KW:()=>Te.K,BM:()=>o,so:()=>y,QX:()=>h,Cn:()=>i.C,xE:()=>s.x,uF:()=>u});var o,r,ie,y,e=n(9909);!function(ie){function re(ce){var se;return(se=class{static is(ge){return!!ge&&ce===ge.type}constructor(ge,Ie){this.data=ge,this.id=e.kk.create22(),this.type=ce,this.label=Ie&&Ie.label||ce.name,this.description=Ie&&Ie.description}}).type=ce,se}ie.factory=function ue(){return ce=>re(ce)},ie.create=re,ie.hasTag=function ve(ce,se){if(!ce.tags)return!1;for(const ae of ce.tags)if(ae===se)return!0;return!1},ie.Null={id:e.kk.create22(),type:{name:"Null",typeClass:"Null"},data:void 0,label:"Null"}}(o||(o={})),(ie=r||(r={})).is=function ue(ve){return!!(ve&&ve.transform&&ve.parent&&ve.status)},ie.resolve=function re(ve,ce){const se="string"==typeof ce?ce:ie.is(ce)?ce.transform.ref:ce.ref;return ve.cells.get(se)};class A{get cell(){var ue;return null===(ue=this.state)||void 0===ue?void 0:ue.cells.get(this.ref)}get obj(){var ue,re;return null===(re=null===(ue=this.state)||void 0===ue?void 0:ue.cells.get(this.ref))||void 0===re?void 0:re.obj}get data(){var ue;return null===(ue=this.obj)||void 0===ue?void 0:ue.data}update(ue,re){if(!this.state)throw new Error("To use update() from StateObjectSelector, 'state' must be defined.");return re||(re=this.state.build()),(re||this.state.build()).to(this).update(ue),re}checkValid(){if(!this.state)throw new Error("Unassigned State.");const ue=this.cell;if(!ue)throw new Error("Not created at all. Did you await/then the corresponding state update?");if("ok"===ue.status)return!0;throw"error"===ue.status?new Error(ue.errorText):ue.obj===o.Null?new Error("The object is Null."):new Error("Unresolved. Did you await/then the corresponding state update?")}get isOk(){const ue=this.cell;return ue&&"ok"===ue.status&&ue.obj!==o.Null}constructor(ue,re){this.ref=ue,this.state=re}}!function(ie){function re(ce,se){if(se)return r.is(se)?se:"string"==typeof se?ce.cells.get(se):se.cell}ie.resolveRef=function ue(ce){var se;if(ce)return"string"==typeof ce?ce:r.is(ce)?ce.transform.ref:null===(se=ce.cell)||void 0===se?void 0:se.transform.ref},ie.resolve=re,ie.resolveAndCheck=function ve(ce,se){const ae=re(ce,se);if(ae&&ae.obj&&"ok"===ae.status)return ae}}(y||(y={}));var u,c=n(39),i=n(2907),v=n(9359),O=n(6115);class b{get childMutations(){return this._childMutations||(this._childMutations=new Map),this._childMutations}get dependencyMutations(){return this._dependencyMutations||(this._dependencyMutations=new Map),this._dependencyMutations}changeNodes(){this.changedNodes||(this.changedNodes=!0,this.transforms=this.transforms.asMutable())}changeChildren(){this.changedChildren||(this.changedChildren=!0,this.children=this.children.asMutable())}changeDependencies(){this.changedDependencies||(this.changedDependencies=!0,this.dependencies=this.dependencies.asMutable())}get root(){return this.transforms.get(i.C.RootRef)}asTransient(){return this.asImmutable().asTransient()}addChild(ue,re){if(this.changeChildren(),this.childMutations.has(ue))this.childMutations.get(ue).add(re);else{const ve=this.children.get(ue).asMutable();ve.add(re),this.children.set(ue,ve),this.childMutations.set(ue,ve)}}removeChild(ue,re){if(this.changeChildren(),this.childMutations.has(ue))this.childMutations.get(ue).remove(re);else{const ve=this.children.get(ue).asMutable();ve.remove(re),this.children.set(ue,ve),this.childMutations.set(ue,ve)}}clearRoot(){const ue=i.C.RootRef;if(0===this.children.get(ue).size)return;this.changeChildren();const re=(0,c.CD)();this.children.set(ue,re),this.childMutations.set(ue,re)}mutateDependency(ue,re,ve){let ce=this.dependencyMutations.get(ue);if(!ce){const se=this.dependencies.get(ue);if(!se&&"remove"===ve)return;this.changeDependencies(),ce=se?se.asMutable():(0,c.CD)().asMutable(),this.dependencyMutations.set(ue,ce),this.dependencies.set(ue,ce)}"add"===ve?ce.add(re):ce.remove(re)}changeParent(ue,re){m(this.transforms,ue);const ve=this.transforms.get(ue);this.removeChild(ve.parent,ue),this.addChild(re,ue),this.changeNodes(),this.transforms.set(ue,i.C.withParent(ve,re))}add(ue){const re=ue.ref;this.transforms.has(ue.ref)&&this.transforms.get(ue.ref).parent!==ue.parent&&function I(ie){throw new Error(`Transform '${ie}' is already present in the tree.`)}(ue.ref);const ve=this.children.get(ue.parent);if(ve||function l(ie){throw new Error(`Parent '${ie}' must be present in the tree.`)}(ue.parent),ve.has(ue.ref)||this.addChild(ue.parent,ue.ref),this.children.has(ue.ref)||(this.changedChildren||(this.changedChildren=!0,this.children=this.children.asMutable()),this.children.set(ue.ref,(0,c.CD)())),this.changeNodes(),this.transforms.set(re,ue),ue.dependsOn)for(const ce of ue.dependsOn)this.mutateDependency(ce,re,"add");return this}setParams(ue,re){m(this.transforms,ue);const ve=this.transforms.get(ue);return!(0,v.bN)(ve.params,re)&&(this.changedNodes||(this.changedNodes=!0,this.transforms=this.transforms.asMutable()),this.transforms.set(ve.ref,i.C.withParams(ve,re)),!0)}setTags(ue,re){m(this.transforms,ue);const ve=this.transforms.get(ue),ce=i.C.withParams(ve,re);return!(0,O.af)(ve.tags,ce.tags)&&(this.changedNodes||(this.changedNodes=!0,this.transforms=this.transforms.asMutable()),this.transforms.set(ve.ref,ce),!0)}assignState(ue,re){m(this.transforms,ue);const ve=this.transforms.get(ue);if(this._stateUpdates&&this._stateUpdates.has(ue))return i.C.assignState(ve.state,re),ve;{this._stateUpdates||(this._stateUpdates=new Set),this._stateUpdates.add(ve.ref),this.changeNodes();const ce=i.C.withState(ve,re);return this.transforms.set(ue,ce),ce}}remove(ue){const re=this.transforms.get(ue);if(!re)return[];const ve=u.subtreePostOrder(this,re);if(ue===i.C.RootRef){if(ve.pop(),0===ve.length)return ve;this.clearRoot()}else{if(0===ve.length)return ve;this.removeChild(re.parent,re.ref)}this.changeNodes(),this.changeChildren();for(const se of ve)this.transforms.delete(se.ref),this.children.delete(se.ref),this._childMutations&&this._childMutations.delete(se.ref);const ce=[];for(const se of ve){if(se.dependsOn)for(const ae of se.dependsOn)this.transforms.has(ae)&&this.mutateDependency(ae,se.ref,"remove");if(this.dependencies.has(se.ref)){const ae=this.dependencies.get(se.ref).toArray();this.changeDependencies(),this.dependencies.delete(se.ref),this._dependencyMutations&&this._dependencyMutations.delete(se.ref);for(const ge of ae)if(this.transforms.has(ge))for(const Ie of this.remove(ge))ce[ce.length]=Ie}}for(const se of ce)ve[ve.length]=se;return ve}asImmutable(){return this.changedNodes||this.changedChildren||this._childMutations?(this._childMutations&&this._childMutations.forEach(_,this.children),this._dependencyMutations&&this._dependencyMutations.forEach(M,this.dependencies),u.create(this.changedNodes?this.transforms.asImmutable():this.transforms,this.changedChildren?this.children.asImmutable():this.children,this.changedDependencies?this.dependencies.asImmutable():this.dependencies)):this.tree}constructor(ue){this.tree=ue,this.transforms=this.tree.transforms,this.children=this.tree.children,this.dependencies=this.tree.dependencies,this.changedNodes=!1,this.changedChildren=!1,this.changedDependencies=!1,this._childMutations=void 0,this._dependencyMutations=void 0,this._stateUpdates=void 0}}function _(ie,ue){this.set(ue,ie.asImmutable())}function M(ie,ue){0===ie.size?this.delete(ue):this.set(ue,ie.asImmutable())}function m(ie,ue){if(!ie.has(ue))throw new Error(`Node '${ue}' is not present in the tree.`)}!function(ie){class ue{get root(){return this.transforms.get(i.C.RootRef)}asTransient(){return new b(this)}constructor(Me,Ke,ut){this.transforms=Me,this.children=Ke,this.dependencies=ut}}function ve(_t,Me,Ke){return new ue(_t,Me,Ke)}function ce(_t){se(this,this.tree.transforms.get(_t))}function se(_t,Me){const Ke=_t.tree.children.get(Me.ref);Ke&&Ke.size&&Ke.forEach(ce,_t),_t.f(Me,_t.tree,_t.state)}function ae(_t,Me,Ke,ut){const Kt={tree:_t,state:Ke,f:ut};return se(Kt,Me),Kt.state}function ge(_t){Ie(this,this.tree.transforms.get(_t))}function Ie(_t,Me){const Ke=_t.f(Me,_t.tree,_t.state);if("boolean"==typeof Ke&&!Ke)return;const ut=_t.tree.children.get(Me.ref);ut&&ut.size&&ut.forEach(ge,_t)}function Le(_t,Me,Ke,ut){const Kt={tree:_t,state:Ke,f:ut};return Ie(Kt,Me),Kt.state}function nt(_t,Me,Ke){Ke.push(_t)}function Lt(_t,Me,Ke){Ke.push(i.C.toJSON(_t))}function pn(_t,Me,Ke){if(Me===Ke)return!0;const Kt=_t.children.get(Me).values();for(;;){const sn=Kt.next();if(sn.done)return!1;if(pn(_t,sn.value,Ke))return!0}}ie.createEmpty=function re(_t){const Me=_t||i.C.createRoot();return ve((0,c.T5)([[Me.ref,Me]]),(0,c.T5)([[Me.ref,(0,c.CD)()]]),(0,c.T5)())},ie.create=ve,ie.doPostOrder=ae,ie.doPreOrder=Le,ie.subtreePostOrder=function je(_t,Me){return ae(_t,Me,[],nt)},ie.toJSON=function Je(_t){const Me=[];return Le(_t,_t.root,Me,Lt),{transforms:Me}},ie.fromJSON=function en(_t){const Me=(0,c.T5)().asMutable(),Ke=(0,c.T5)().asMutable(),ut=(0,c.T5)().asMutable();for(const sn of _t.transforms){const gt=i.C.fromJSON(sn);Me.set(gt.ref,gt),Ke.has(gt.ref)||Ke.set(gt.ref,(0,c.CD)().asMutable()),gt.ref!==gt.parent&&Ke.get(gt.parent).add(gt.ref)}const Kt=new Set;for(const sn of _t.transforms){const gt=sn.ref;if(Ke.set(gt,Ke.get(gt).asImmutable()),sn.dependsOn)for(const yt of sn.dependsOn)Kt.add(yt),ut.has(yt)?ut.get(yt).add(gt):ut.set(yt,(0,c.CD)([gt]).asMutable())}return Kt.forEach(sn=>{ut.set(sn,ut.get(sn).asImmutable())}),ve(Me.asImmutable(),Ke.asImmutable(),ut.asImmutable())},ie.dump=function Bt(_t){console.log({tr:_t.transforms.keySeq().toArray(),tr1:_t.transforms.valueSeq().toArray().map(Me=>Me.ref),ch:_t.children.keySeq().toArray()})},ie.subtreeHasRef=function $e(_t,Me,Ke){return!(!_t.transforms.has(Me)||!_t.transforms.has(Ke))&&pn(_t,Me,Ke)},ie.getDecoratorRoot=function mt(_t,Me){const Ke=_t.children.get(Me);if(1!==Ke.size)return Me;const ut=_t.transforms.get(Ke.first());return ut.transformer.definition.isDecorator?mt(_t,ut.ref):Me}}(u||(u={}));var h,d=n(467),s=n(8384),C=n(4824);!function(ie){function ue(Wt,yn){return re(Wt)(yn)}function re(Wt){const yn=Wt||Le.root;let Zt;return Zt=function ce(Wt){return void 0!==Wt.compile}(yn)?yn.compile():function ve(Wt){return void 0!==Wt.transform&&void 0!==Wt.status}(yn)?Le.byValue(yn).compile():function se(Wt){return"function"==typeof Wt}(yn)?yn:Le.byRef(yn).compile(),Zt}ie.select=ue,ie.compile=re;const ae={select(Wt){return ue(this,Wt||this.state)}};function ge(Wt,yn){ae[Wt]=function(...Zt){return yn.call(void 0,this,...Zt)}}function Ie(Wt){return Object.create(ae,{compile:{writable:!1,configurable:!1,value:Wt}})}let Le;function nt(Wt,yn){const Zt=re(Wt);return Ie(()=>kt=>{const Ot=[];for(const An of Zt(kt))for(const jn of yn(An,kt))Ot.push(jn);return Ot})}function je(Wt,yn){const Zt=re(Wt);return Ie(()=>kt=>{const Ot=[];for(const An of Zt(kt)){const jn=yn(An,kt);jn&&Ot.push(jn)}return Ot})}function Lt(Wt){const yn=re(Wt);return Ie(()=>Zt=>{const kt=new Set,Ot=[];for(const An of yn(Zt))An&&(kt.has(An.transform.ref)||(kt.add(An.transform.ref),Ot.push(An)));return Ot})}function Je(Wt){const yn=re(Wt);return Ie(()=>Zt=>{const kt=yn(Zt);return kt.length?[kt[0]]:[]})}function en(Wt,yn){return nt(Wt,Zt=>yn(Zt)?[Zt]:[])}function Bt(Wt,yn){return en(Wt,Zt=>Zt.status===yn)}function pn(Wt,yn){return en(Wt,Zt=>!!Zt.transform.tags&&Zt.transform.tags.indexOf(yn)>=0)}function $e(Wt){return nt(Wt,(yn,Zt)=>{const kt=[];return u.doPreOrder(Zt.tree,Zt.tree.transforms.get(yn.transform.ref),kt,(Ot,An,jn)=>{jn.push(Ot.ref)}),kt.map(Ot=>Zt.cells.get(Ot))})}function mt(Wt){return nt(Wt,(yn,Zt)=>{const kt=[];return Zt.tree.children.get(yn.transform.ref).forEach(Ot=>kt.push(Zt.cells.get(Ot))),kt})}function _t(Wt,yn){return en(Wt,Zt=>!!Zt.obj&&Zt.obj.type===yn.type)}function Me(Wt,yn){return Lt(je(Wt,(Zt,kt)=>Gt(kt.tree,kt.cells,Zt.transform.ref,yn)))}function Ke(Wt,yn){return Lt(je(Wt,(Zt,kt)=>Mt(kt.tree,kt.cells,Zt.transform.ref,yn)))}function ut(Wt,yn){return Lt(je(Wt,(Zt,kt)=>tt(kt.tree,kt.cells,Zt.transform.ref,yn)))}function Kt(Wt,yn){return en(Wt,Zt=>Zt.transform.transformer===yn)}function sn(Wt,yn){return Lt(je(Wt,(Zt,kt)=>rn(kt.tree,kt.cells,Zt.transform.ref,yn)))}function gt(Wt,yn){return Lt(je(Wt,(Zt,kt)=>nn(kt.tree,kt.cells,Zt.transform.ref,yn)))}function yt(Wt){return Lt(je(Wt,(yn,Zt)=>Zt.cells.get(Zt.tree.transforms.get(yn.transform.ref).parent)))}function At(Wt,yn,Zt,kt,Ot){let jn,An=Wt.transforms.get(Zt);for(;;){An=Wt.transforms.get(An.parent);const On=yn.get(An.ref);if(On.obj&&kt(On)&&(jn=On,Ot)||An.ref===i.C.RootRef)return jn}}function Gt(Wt,yn,Zt,kt){return At(Wt,yn,Zt,kt,!0)}function rn(Wt,yn,Zt,kt){return At(Wt,yn,Zt,kt,!1)}function tt(Wt,yn,Zt,kt){return Gt(Wt,yn,Zt,Array.isArray(kt)?Ot=>kt.indexOf(Ot.transform.transformer)>=0:Ot=>Ot.transform.transformer===kt)}function Mt(Wt,yn,Zt,kt){return Gt(Wt,yn,Zt,bn(kt))}function nn(Wt,yn,Zt,kt){return rn(Wt,yn,Zt,bn(kt))}function bn(Wt){return Array.isArray(Wt)?yn=>{for(const Zt of Wt)if(Zt.type===yn.obj.type)return!0}:yn=>yn.obj.type===Wt.type}function jt(Wt,yn,Zt){if(Wt.tags)for(const kt of Wt.tags)if(Zt.tags.has(kt)){Zt.refs[kt]=Wt.ref;break}return!0}function Dt(Wt,yn,Zt){return!(Wt.tags&&Wt.tags.indexOf(Zt.tag)>=0&&(Zt.ref=Wt.ref,1))}function $t(Wt,yn,Zt){if(Wt.tags){const kt=Zt.tags.size;let Ot=0;for(const An of Wt.tags)if(Zt.tags.has(An)&&(Ot++,Ot===kt)){Zt.refs.push(Wt);break}}else 0===Zt.tags.size&&Zt.refs.push(Wt)}(function(Wt){function On(or,Nr,Ir){const Or=Ir.cells.get(or.ref);return!Or||!Or.obj||Or.obj.type!==Ir.type||(Ir.roots.push(Or),!1)}function fr(or,Nr,Ir){const Or=Ir.cells.get(or.ref);return Or&&Or.obj&&Or.obj.type===Ir.type&&Ir.ret.push(Or),!0}function Dr(or,Nr,Ir){const Or=Ir.cells.get(or.ref);return Or&&Or.obj&&Or.transform.transformer===Ir.t&&Ir.ret.push(Or),!0}function Pr(or,Nr,Ir){const Or=Ir.cells.get(or.ref);return Or&&"error"===Or.status&&Or.transform.transformer===Ir.t&&Ir.ret.push(Or),!0}Wt.root=Ie(()=>or=>[or.cells.get(or.tree.root.ref)]),Wt.byRef=function yn(...or){return Ie(()=>Nr=>{const Ir=[];for(const Or of or){const Jr=Nr.cells.get(Or);Jr&&Ir.push(Jr)}return Ir})},Wt.byValue=function Zt(...or){return Ie(()=>Nr=>or)},Wt.rootsOfType=function kt(or,Nr=i.C.RootRef){return Ie(()=>Ir=>{const Or={roots:[],cells:Ir.cells,type:or.type};return u.doPreOrder(Ir.tree,Ir.tree.transforms.get(Nr),Or,On),Or.roots})},Wt.ofType=function Ot(or,Nr=i.C.RootRef){return Ie(()=>Ir=>{const Or={ret:[],cells:Ir.cells,type:or.type};return u.doPreOrder(Ir.tree,Ir.tree.transforms.get(Nr),Or,fr),Or.ret})},Wt.ofTransformer=function An(or,Nr=i.C.RootRef){return Ie(()=>Ir=>{const Or={ret:[],cells:Ir.cells,t:or};return u.doPreOrder(Ir.tree,Ir.tree.transforms.get(Nr),Or,Dr),Or.ret})},Wt.ofTransformerWithError=function jn(or,Nr=i.C.RootRef){return Ie(()=>Ir=>{const Or={ret:[],cells:Ir.cells,t:or};return u.doPreOrder(Ir.tree,Ir.tree.transforms.get(Nr),Or,Pr),Or.ret})}})(Le=ie.Generators||(ie.Generators={})),ge("flatMap",nt),ie.flatMap=nt,ge("mapObject",je),ie.mapObject=je,ge("unique",Lt),ie.unique=Lt,ge("first",Je),ie.first=Je,ge("filter",en),ie.filter=en,ge("withStatus",Bt),ie.withStatus=Bt,ge("withTag",pn),ie.withTag=pn,ge("subtree",$e),ie.subtree=$e,ge("children",mt),ie.children=mt,ge("ofType",_t),ie.ofType=_t,ge("ancestor",Me),ie.ancestor=Me,ge("ancestorOfType",Ke),ie.ancestorOfType=Ke,ge("ancestorWithTransformer",ut),ie.ancestorWithTransformer=ut,ge("withTransformer",Kt),ie.withTransformer=Kt,ge("root",sn),ie.root=sn,ge("rootOfType",gt),ie.rootOfType=gt,ge("parent",yt),ie.parent=yt,ie.findAncestor=Gt,ie.findRoot=rn,ie.findAncestorWithTransformer=tt,ie.findAncestorOfType=Mt,ie.findRootOfType=nn,ie.findUniqueTagsInSubtree=function Dn(Wt,yn,Zt){return u.doPreOrder(Wt,Wt.transforms.get(yn),{refs:{},tags:Zt},jt).refs},ie.findTagInSubtree=function It(Wt,yn,Zt){return u.doPreOrder(Wt,Wt.transforms.get(yn),{ref:void 0,tag:Zt},Dt).ref},ie.findWithAllTags=function Ct(Wt,yn,Zt){return u.doPreOrder(Wt,Wt.transforms.get(yn),{refs:[],tags:Zt},$t).refs},ie.tryFindDecorator=function Vt(Wt,yn,Zt){if(Wt.transforms.get(yn).transformer===Zt)return Wt.cells.get(yn);const Ot=Wt.tree.children.get(yn);if(1!==Ot.size)return;const An=Ot.first();return Wt.transforms.get(An).transformer.definition.isDecorator?Vt(Wt,An,Zt):void 0}}(h||(h={}));var D,a=n(8956),S=n(1025);function R(...ie){let ue;const re=[];for(const ve of ie)if(ve)if(ue||(ue=new Set),"string"==typeof ve){if(ue.has(ve))continue;ue.add(ve),re.push(ve)}else for(const ce of ve)ue.has(ce)||(ue.add(ce),re.push(ce));return re}!function(ie){function ue(ae){if(!ae.state||ae.state.tree===ae.editInfo.sourceTree)return ae.tree.asImmutable();const ge=ae.state.tree.asTransient();for(const Ie of ae.actions)switch(Ie.kind){case"add":ge.add(Ie.transform);break;case"update":ge.setParams(Ie.ref,Ie.params);break;case"delete":ge.remove(Ie.ref);break;case"insert":{const Le=ge.children.get(Ie.ref).toArray();ge.add(Ie.transform);for(const nt of Le)ge.changeParent(nt,Ie.transform.ref);break}}return ae.editInfo.sourceTree=ae.tree,ge.asImmutable()}ie.is=function re(ae){return!!ae&&"function"==typeof ae.getTree},ie.isTo=function ve(ae){return!!ae&&"function"==typeof ae.getTree&&"string"==typeof ae.ref},ie.Root=class ce{get editInfo(){return this.state.editInfo}get currentTree(){return this.state.tree}to(ge){const Ie="string"==typeof ge?ge:r.is(ge)?ge.transform.ref:ge.ref;return new se(this.state,Ie,this)}toRoot(){return new se(this.state,this.state.tree.root.ref,this)}delete(ge){const Ie=y.resolveRef(ge);return Ie&&this.state.tree.transforms.has(Ie)?(this.editInfo.count++,this.state.tree.remove(Ie),this.state.actions.push({kind:"delete",ref:Ie}),this):this}getTree(){return ue(this.state)}commit(ge){if(!this.state.state)throw new Error("Cannot commit template tree");return this.state.state.runTask(this.state.state.updateTree(this,ge))}constructor(ge,Ie){this.state={state:Ie,tree:ge.asTransient(),actions:[],editInfo:{applied:!1,sourceTree:ge,count:0,lastUpdate:void 0}}}};class se{get editInfo(){return this.state.editInfo}get selector(){return new A(this.ref,this.state.state)}getApplyRoot(){return u.getDecoratorRoot(this.state.tree,this.ref)}apply(ge,Ie,Le){if(ge.definition.isDecorator)return this.insert(ge,Ie,Le);const nt=this.getApplyRoot(),je=ge.apply(nt,Ie,Le);return this.state.tree.add(je),this.editInfo.count++,this.editInfo.lastUpdate=je.ref,this.state.actions.push({kind:"add",transform:je}),new se(this.state,je.ref,this.root)}applyOrUpdate(ge,Ie,Le,nt){if(this.state.tree.transforms.has(ge)){const je=this.to(ge);return Le&&je.update(Le),je}return this.apply(Ie,Le,{...nt,ref:ge})}applyOrUpdateTagged(ge,Ie,Le,nt){if(Ie.definition.isDecorator)throw new Error("Can't use applyOrUpdateTagged on decorator transformers.");const je=this.getApplyRoot(),Lt=this.state.tree.children.get(je).values();for(;;){const en=Lt.next();if(en.done)break;const Bt=this.state.tree.transforms.get(en.value);if(Bt&&i.C.hasTags(Bt,ge)){const pn=this.to(en.value);return pn.updateTagged(Le,R(Bt.tags,ge,nt&&nt.tags)),pn}}const Je=Ie.apply(je,Le,{...nt,tags:R(ge,nt&&nt.tags)});return this.state.tree.add(Je),this.editInfo.count++,this.editInfo.lastUpdate=Je.ref,this.state.actions.push({kind:"add",transform:Je}),new se(this.state,Je.ref,this.root)}group(ge,Ie,Le){return this.apply(ge,Ie,Le)}insert(ge,Ie,Le){const nt=this.state.tree.children.get(this.ref).toArray(),je=ge.apply(this.ref,Ie,Le);this.state.tree.add(je);for(const Lt of nt)this.state.tree.changeParent(Lt,je.ref);return this.editInfo.count++,this.editInfo.lastUpdate=je.ref,this.state.actions.push({kind:"insert",ref:this.ref,transform:je}),new se(this.state,je.ref,this.root)}updateTagged(ge,Ie){(this.state.tree.setParams(this.ref,ge)||this.state.tree.setTags(this.ref,Ie))&&(this.editInfo.count++,this.editInfo.lastUpdate=this.ref,this.state.actions.push({kind:"update",ref:this.ref,params:ge}))}update(ge,Ie){let Le;if(Ie){const nt=this.state.tree.transforms.get(this.ref);Le=(0,S.jM)(nt.params,Ie)}else Le="function"==typeof ge?(0,S.jM)(this.state.tree.transforms.get(this.ref).params,ge):ge;return this.state.tree.setParams(this.ref,Le)&&(this.editInfo.count++,this.editInfo.lastUpdate=this.ref,this.state.actions.push({kind:"update",ref:this.ref,params:Le})),this.root}to(ge){return this.root.to(ge)}toRoot(){return this.root.toRoot()}delete(ge){return this.root.delete(ge)}getTree(){return ue(this.state)}commit(ge){if(!this.state.state)throw new Error("Cannot commit template tree");return this.state.state.runTask(this.state.state.updateTree(this,ge))}constructor(ge,Ie,Le){if(this.state=ge,this.root=Le,this.ref=Ie,!this.state.tree.transforms.has(Ie))throw new Error(`Could not find node '${Ie}'.`)}}ie.To=se}(D||(D={}));class f{constructor(){this.ev=a.V.create(),this.actions=new Map,this.fromTypeIndex=new Map,this.events={added:this.ev(),removed:this.ev()}}add(ue){const re=s.x.is(ue)?ue.toAction():ue;if(this.actions.has(re.id))return this;this.actions.set(re.id,re);for(const ve of re.definition.from)this.fromTypeIndex.has(ve.type)?this.fromTypeIndex.get(ve.type).push(re):this.fromTypeIndex.set(ve.type,[re]);return this.events.added.next(void 0),this}remove(ue){const re=s.x.is(ue)?ue.toAction().id:e.kk.is(ue)?ue:ue.id,ve=this.actions.get(re);if(!ve)return this;this.actions.delete(re);for(const ce of ve.definition.from){const se=this.fromTypeIndex.get(ce.type);se&&((0,O.K3)(se,ve),0===se.length&&this.fromTypeIndex.delete(ce.type))}return this.events.removed.next(void 0),this}fromCell(ue,re){const ve=ue.obj;if(!ve)return[];const ce=this.fromTypeIndex.get(ve.type);if(!ce)return[];let se=!1;for(const ge of ce)if(ge.definition.isApplicable){se=!0;break}if(!se)return ce;const ae=[];for(const ge of ce)ge.definition.isApplicable?ge.definition.isApplicable(ve,ue.transform,re)&&ae.push(ge):ae.push(ge);return ae}dispose(){this.ev.dispose()}}var p=n(2229),E=n(9854),T=n(8277),L=n(6323),w=n(1413);class Q{constructor(){this.queue=[],this.signal=new w.B}get length(){return this.queue.length}enqueue(ue){return this.queue.push(ue),1===this.queue.length||this.waitFor(ue)}handled(ue){(0,O.mO)(this.queue,ue),this.queue.length>0&&this.signal.next({v:this.queue[0],stillPresent:!0})}remove(ue){const re=(0,O.mO)(this.queue,ue);return re&&this.signal.next({v:ue,stillPresent:!1}),re}waitFor(ue){return new Promise(re=>{const ve=this.signal.subscribe(({v:ce,stillPresent:se})=>{ce===ue&&(ve.unsubscribe(),re(se))})})}}var G=n(9677);class V{get tree(){return this._tree}get transforms(){return this._tree.transforms}get current(){return this.behaviors.currentObject.value.ref}get root(){return this.cells.get(this._tree.root.ref)}build(){return new D.Root(this.tree,this)}addHistory(ue,re){0!==this.historyCapacity&&(this.history.unshift([ue,re||"Update"]),this.history.length>this.historyCapacity&&this.history.pop(),this.events.historyUpdated.next({state:this}))}clearHistory(){0!==this.history.length&&(this.history=[],this.events.historyUpdated.next({state:this}))}get latestUndoLabel(){return this.history.length>0?this.history[0][1]:void 0}get canUndo(){return this.history.length>0}undo(){var ue=this;return C.YZ.create("Undo",function(){var re=(0,d.A)(function*(ve){const ce=ue.history.shift();if(ce){ue.events.historyUpdated.next({state:ue}),ue.undoingHistory=!0;try{yield ue.updateTree(ce[0],{canUndo:!1}).runInContext(ve)}finally{ue.undoingHistory=!1}}});return function(ve){return re.apply(this,arguments)}}())}getSnapshot(){return{tree:u.toJSON(this._tree)}}setSnapshot(ue){const re=u.fromJSON(ue.tree);return this.updateTree(re)}setCurrent(ue){this.behaviors.currentObject.next({state:this,ref:ue})}updateCellState(ue,re){const ve=this.cells.get(ue);if(!ve)return;const ce="function"==typeof re?re(ve.state):re;i.C.assignState(ve.state,ce)&&(ve.transform=this._tree.assignState(ve.transform.ref,ce),this.events.cell.stateUpdated.next({state:this,ref:ue,cell:ve}))}dispose(){this.ev.dispose(),this.actions.dispose()}select(ue){return h.select(ue,this)}selectQ(ue){return h.select("string"==typeof ue?ue:ue(h.Generators),this)}applyAction(ue,re,ve=i.C.RootRef){return C.YZ.create("Apply Action",ce=>{const se=this.cells.get(ve);if(!se)throw new Error(`'${ve}' does not exist.`);if("ok"!==se.status)throw new Error(`Action cannot be applied to a cell with status '${se.status}'`);return Ve(ue.definition.run({ref:ve,cell:se,a:se.obj,params:re,state:this},this.globalContext),ce)})}transaction(ue,re){var ve=this;return C.YZ.create("State Transaction",function(){var ce=(0,d.A)(function*(se){const ae=ve.inTransaction,ge=ve._tree.asImmutable();let Ie=!1;try{ae||ve.behaviors.isUpdating.next(!0),ve.inTransaction=!0,ve.inTransactionError=!1,yield ue(se),ve.inTransactionError&&(Ie=!0,yield ve.updateTree(ge).runInContext(se))}catch(Le){if(Ie||(Ie=!0,yield ve.updateTree(ge).runInContext(se),ve.events.log.next(p.x.error("Error during state transaction, reverting"))),ae)throw ve.inTransactionError=!0,Le;if(re?.rethrowErrors)throw Le;console.error(Le)}finally{ae||(ve.inTransaction=!1,ve.events.changed.next({state:ve,inTransaction:!1}),ve.behaviors.isUpdating.next(!1),Ie||(re?.canUndo?ve.addHistory(ge,"string"==typeof re.canUndo?re.canUndo:void 0):ve.clearHistory()))}});return function(se){return ce.apply(this,arguments)}}())}get inUpdate(){return this._inUpdate}updateTree(ue,re){var ve=this;const ce={tree:ue,options:re};return C.YZ.create("Update Tree",function(){var se=(0,d.A)(function*(ae){if(!(yield ve.updateQueue.enqueue(ce)))return;ve._inUpdate=!0;const Ie=re?.canUndo?ve._tree.asImmutable():void 0;let Le=!1;ve.inTransaction||ve.behaviors.isUpdating.next(!0);try{if(D.is(ue)){if(ue.editInfo.applied)throw new Error("This builder has already been applied. Create a new builder for further state updates");ue.editInfo.applied=!0}ve.reverted=!1;const nt=re&&(re.revertIfAborted||re.revertOnError)?yield ve._revertibleTreeUpdate(ae,ce,re):yield ve._updateTree(ae,ce);return Le=ve.reverted,nt.ctx.hadError&&(ve.inTransactionError=!0),nt.cell?new A(nt.cell.transform.ref,ve):void 0}finally{ve._inUpdate=!1,ve.updateQueue.handled(ce),ve.inTransaction||(ve.behaviors.isUpdating.next(!1),re?.canUndo?Le||ve.addHistory(Ie,"string"==typeof re.canUndo?re.canUndo:void 0):ve.undoingHistory||ve.clearHistory())}});return function(ae){return se.apply(this,arguments)}}(),()=>{this.updateQueue.remove(ce)})}_revertibleTreeUpdate(ue,re,ve){var ce=this;return(0,d.A)(function*(){const se=ce.tree,ae=yield ce._updateTree(ue,re);return(ae.ctx.hadError||ae.ctx.wasAborted)&&ve.revertOnError||ae.ctx.wasAborted&&ve.revertIfAborted?(ce.reverted=!0,yield ce._updateTree(ue,{tree:se,options:re.options})):ae})()}_updateTree(ue,re){var ve=this;return(0,d.A)(function*(){let ce=!1;const se=ve.updateTreeAndCreateCtx(re.tree,ue,re.options);try{return ce=yield function N(ie){return k.apply(this,arguments)}(se),D.isTo(re.tree)?{ctx:se,cell:ve.select(re.tree.ref)[0]}:{ctx:se}}finally{ve.spine.current=void 0,ce&&ve.events.changed.next({state:ve,inTransaction:ve.inTransaction})}})()}updateTreeAndCreateCtx(ue,re,ve){const ce=(D.is(ue)?ue.getTree():ue).asTransient(),se=this._tree;this._tree=ce;const ae=this.cells,ge={parent:this,editInfo:D.is(ue)?ue.editInfo:void 0,errorFree:this.errorFree,taskCtx:re,oldTree:se,tree:ce,cells:this.cells,spine:this.spine,results:[],options:{...U,...ve},changed:!1,hadError:!1,wasAborted:!1,newCurrent:void 0,getCellData:Ie=>{var Le;return null===(Le=ae.get(Ie).obj)||void 0===Le?void 0:Le.data}};return this.errorFree=!0,ge}constructor(ue,re){this.errorFree=!0,this.ev=a.V.create(),this.globalContext=void 0,this.events={cell:{stateUpdated:this.ev(),created:this.ev(),removed:this.ev()},object:{updated:this.ev(),created:this.ev(),removed:this.ev()},log:this.ev(),changed:this.ev(),historyUpdated:this.ev()},this.behaviors={currentObject:this.ev.behavior({state:this,ref:i.C.RootRef}),isUpdating:this.ev.behavior(!1)},this.actions=new f,this.cells=new Map,this.spine=new L.P.Impl(this.cells),this.tryGetCellData=se=>{var ae,ge;const Ie=null===(ge=null===(ae=this.cells.get(se))||void 0===ae?void 0:ae.obj)||void 0===ge?void 0:ge.data;if(void 0===Ie)throw new Error(`Cell '${se}' data undefined.`);return Ie},this.historyCapacity=5,this.history=[],this.undoingHistory=!1,this.inTransaction=!1,this.inTransactionError=!1,this._inUpdate=!1,this.reverted=!1,this.updateQueue=new Q,this._tree=u.createEmpty(i.C.createRoot(re&&re.rootState)).asTransient();const ce=this._tree.root;this.runTask=re.runTask,void 0!==re?.historyCapacity&&(this.historyCapacity=re.historyCapacity),this.cells.set(ce.ref,{parent:this,transform:ce,sourceRef:void 0,obj:ue,status:"ok",state:{...ce.state},errorText:void 0,params:{definition:{},values:{}},paramsNormalizedVersion:ce.version,dependencies:{dependentBy:[],dependsOn:[]},cache:{}}),this.globalContext=re&&re.globalContext}}!function(ie){let re;ie.create=function ue(ve,ce){return new ie(ve,ce)},(re=ie.ObjectEvent||(ie.ObjectEvent={})).isCell=function ce(se,ae){return!!ae&&se.ref===ae.transform.ref&&se.state===ae.parent}}(V||(V={}));const U={doNotLogTiming:!1,doNotUpdateCurrent:!0,revertIfAborted:!1,revertOnError:!1,canUndo:!1};function k(){return k=(0,d.A)(function*(ie){let re,ce,ve=[];if(ie.editInfo&&1===ie.editInfo.count&&ie.editInfo.lastUpdate&&ie.editInfo.sourceTree===ie.oldTree)re=[],ce=[ie.editInfo.lastUpdate];else{re=function W(ie){const ue={newTree:ie.tree,cells:ie.cells,deletes:[]};return u.doPostOrder(ie.oldTree,ie.oldTree.root,ue,J),ue.deletes}(ie);const ge=ie.parent.current;let Ie=!1;for(const Le of re)if(Le===ge){Ie=!0;break}if(Ie){const Le=_e(ie.oldTree,ge,re,ie.cells);ie.parent.setCurrent(Le)}for(let Le=re.length-1;Le>=0;Le--){const nt=ie.cells.get(re[Le]);nt&&Oe(nt.transform,nt.obj,nt?.transform.params,nt.cache,ie.parent.globalContext)}for(const Le of re){const nt=ie.cells.get(Le);nt&&(nt.parent=void 0,q(nt));const je=nt&&nt.obj;ie.cells.delete(Le),ve.push(je)}ce=function H(ie,ue){const re={roots:[],cells:ie};return u.doPreOrder(ue,ue.root,re,$),re.roots}(ie.cells,ie.tree)}const se=function g(ie,ue){const re={ctx:ie,visited:new Set,added:[]};for(const ce of ue)u.doPreOrder(ie.tree,ie.tree.transforms.get(ce),re,Y);for(const ce of re.added)ee(ce,ie);let ve;return re.visited.forEach(ce=>{const se=ie.cells.get(ce);for(const ae of se.dependencies.dependentBy)re.visited.has(ae.transform.ref)||(ve||(ve=G.th.create()),G.th.add(ve,ae.transform.ref,ae))}),{added:re.added,dependent:ve?ve.array:void 0}}(ie,ce);for(const ge of se.added)ie.parent.events.cell.created.next({state:ie.parent,ref:ge.transform.ref,cell:ge});for(let ge=0;ge0||ce.length>0||ie.changed}),k.apply(this,arguments)}function $(ie,ue,re){const ve=re.cells.get(ie.ref);return ve&&ve.transform.version===ie.version?!("error"===ve.status||ve&&ve.obj===o.Null):(re.roots.push(ie.ref),!1)}function J(ie,ue,re){!re.newTree.transforms.has(ie.ref)&&re.cells.has(ie.ref)&&re.deletes.push(ie.ref)}function te(ie,ue,re){const ve=re.cells.get(ie.ref);!ve||!i.C.syncState(ve.state,ie.state)||re.parent.events.cell.stateUpdated.next({state:re.parent,ref:ie.ref,cell:ve})}function ye(ie,ue,re,ve){const ce=ie.cells.get(ue),se=ce.status!==re;ce.status=re,ce.errorText=ve,se&&ie.parent.events.cell.stateUpdated.next({state:ie.parent,ref:ue,cell:ce})}function j(ie,ue,re){re.cells.get(ie.ref).transform=ie,ye(re,ie.ref,"pending")}function q(ie){for(const ue of ie.dependencies.dependsOn)(0,O.K3)(ue.dependencies.dependentBy,ie)}function Y(ie,ue,{ctx:re,added:ve,visited:ce}){if(ce.add(ie.ref),re.cells.has(ie.ref))return;const se={parent:re.parent,transform:ie,sourceRef:void 0,status:"pending",state:{...ie.state},errorText:void 0,params:void 0,paramsNormalizedVersion:"",dependencies:{dependentBy:[],dependsOn:[]},cache:void 0};re.cells.set(ie.ref,se),ve.push(se)}function ee(ie,ue){if(ie.transform.dependsOn)for(const re of ie.transform.dependsOn){if(!ue.tree.transforms.get(re))throw new Error("Cannot depend on a non-existent transform.");const ce=ue.cells.get(re);(0,O.Z2)(ie.dependencies.dependsOn,ce),(0,O.Z2)(ce.dependencies.dependentBy,ie)}}function _e(ie,ue,re,ve){return xe(ie,ue,new Set(re),ve)}function xe(ie,ue,re,ve){if(ue===i.C.RootRef)return ue;const ce=ie.transforms.get(ue),se=ie.children.get(ce.parent).values();let ae,ge=!1;for(;;){const Ie=se.next();if(Ie.done)break;if(re.has(Ie.value))continue;const Le=ve.get(Ie.value);if(!Le||"error"===Le.status||Le.obj===o.Null)continue;const nt=ie.transforms.get(Ie.value);if(!nt.state.isGhost){if(Ie.value===ue){ge=!0,re.has(ue)||(ae=ue);continue}if(ge)return nt.ref;ae=nt.ref}}return ae||xe(ie,ce.parent,re,ve)}function le(ie,ue,re,ve){ve||(ie.hadError=!0,ie.parent.errorFree=!1);const ce=ie.cells.get(ue);if(re){ie.wasAborted=ie.wasAborted||C.YZ.isAbort(re);const ae=""+re;ye(ie,ue,"error",ae),ve||ie.parent.events.log.next({type:"error",timestamp:new Date,message:ae})}else ce.params=void 0;if(ce.obj){const ae=ce.obj;ce.obj=void 0,ce.cache=void 0,ie.parent.events.object.removed.next({state:ie.parent,ref:ue,obj:ae})}const se=ie.tree.children.get(ue).values();for(;;){const ae=se.next();if(ae.done)return;le(ie,ae.value,void 0,ve)}}const Ae="Parent is null";function Be(ie,ue){return Ce.apply(this,arguments)}function Ce(){return Ce=(0,d.A)(function*(ie,ue){ye(ie,ue,"processing");let re=!1;try{const ce=(0,E.t)(),se=yield function ke(ie,ue){return we.apply(this,arguments)}(ie,ue),ae=(0,E.t)()-ce;"none"!==se.action&&(ie.changed=!0),ye(ie,ue,"ok"),ie.results.push(se),"created"===se.action?(re=se.obj===o.Null,!re&&!ie.options.doNotLogTiming&&ie.parent.events.log.next(p.x.info(`Created ${se.obj.label} in ${(0,E.H)(ae)}.`))):("updated"===se.action||"replaced"===se.action)&&(re=se.obj===o.Null,!re&&!ie.options.doNotLogTiming&&ie.parent.events.log.next(p.x.info(`Updated ${se.obj.label} in ${(0,E.H)(ae)}.`)))}catch(ce){return ie.changed=!0,ie.hadError||(ie.newCurrent=ue),le(ie,ue,ce,!1),void console.error(ce)}const ve=ie.tree.children.get(ue).values();for(;;){const ce=ve.next();if(ce.done)return;re?le(ie,ce.value,void 0,!0):yield Be(ie,ce.value)}}),Ce.apply(this,arguments)}function we(){return we=(0,d.A)(function*(ie,ue){var re;const{oldTree:ve,tree:ce}=ie,se=ie.cells.get(ue),ae=se.transform;if(se.transform.ref===i.C.RootRef)return{action:"none"};const ge=ie.cells.get(se.transform.parent);if(ge?.obj===o.Null)return se.sourceRef=ge.transform.ref,ve.transforms.has(ue)&&se.params?(Oe(ae,se.obj,se.params.values,se.cache,ie.parent.globalContext),se.params=void 0,se.obj=o.Null,{ref:ue,action:"updated",obj:se.obj}):(se.params=void 0,{ref:ue,action:"created",obj:o.Null});const Le=0===ae.transformer.definition.from.length?ge:h.findAncestorOfType(ce,ie.cells,ue,ae.transformer.definition.from);if(!Le)throw new Error(`No suitable parent found for '${ue}'`);ie.spine.current=se;const nt=Le.obj;se.sourceRef=Le.transform.ref;const je=function Re(ie,ue,re,ve){const ce=ue.transformer.definition.params,se=ce?ce(re,ie.parent.globalContext):{};if(ve.paramsNormalizedVersion!==ue.version)ue.params=T.t.normalizeParams(se,ue.params,"all"),ve.paramsNormalizedVersion=ue.version;else{const ae=T.t.getDefaultValues(se);ue.params=ue.params?(0,v.JW)(ue.params,ae):ae}return T.t.resolveRefs(se,ue.params,ie.getCellData),{definition:se,values:ue.params}}(ie,ae,nt,se);if(!ve.transforms.has(ue)||!se.params){se.params=je;const Lt=yield K(ie,se,ae.transformer,nt,je.values);return Se(Lt,ae),se.obj=Lt,{ref:ue,action:"created",obj:Lt}}{const Lt=se.params.values,Je=se.cache,en=null===(re=se.obj)||void 0===re?void 0:re.data,Bt=je.values;switch(se.params=je,se.obj&&se.obj!==o.Null?yield function ne(ie,ue,re,ve,ce,se,ae){return be.apply(this,arguments)}(ie,se,ae.transformer,nt,se.obj,Lt,Bt):s.x.UpdateResult.Recreate){case s.x.UpdateResult.Recreate:{const $e=se.obj;Oe(ae,$e,Lt,Je,ie.parent.globalContext);const mt=yield K(ie,se,ae.transformer,nt,Bt);return Se(mt,ae),se.obj=mt,{ref:ue,action:"replaced",oldObj:$e,obj:mt}}case s.x.UpdateResult.Updated:return Se(se.obj,ae),{ref:ue,action:"updated",oldData:en,obj:se.obj};case s.x.UpdateResult.Null:return Oe(ae,se.obj,Lt,Je,ie.parent.globalContext),se.obj=o.Null,{ref:ue,action:"updated",obj:se.obj};default:return{action:"none"}}}}),we.apply(this,arguments)}function Oe(ie,ue,re,ve,ce){var se,ae;null===(ae=(se=ie.transformer.definition).dispose)||void 0===ae||ae.call(se,{b:ue!==o.Null?ue:void 0,params:re,cache:ve},ce)}function Se(ie,ue){!ie||ie===o.Null||(ie.tags=ue.tags)}function Ve(ie,ue){return"function"==typeof ie.runInContext?ie.runInContext(ue):ie}function Ne(ie){if(0===ie.dependencies.dependsOn.length)return;const ue=Object.create(null);for(const re of ie.dependencies.dependsOn){if(!re.obj)throw new Error("Unresolved dependency.");ue[re.transform.ref]=re.obj}return ue}function K(ie,ue,re,ve,ce){return ue.cache||(ue.cache=Object.create(null)),Ve(re.definition.apply({a:ve,params:ce,cache:ue.cache,spine:ie.spine,dependencies:Ne(ue)},ie.parent.globalContext),ie.taskCtx)}function be(){return be=(0,d.A)(function*(ie,ue,re,ve,ce,se,ae){return re.definition.update?(ue.cache||(ue.cache=Object.create(null)),Ve(re.definition.update({a:ve,oldParams:se,b:ce,newParams:ae,cache:ue.cache,spine:ie.spine,dependencies:Ne(ue)},ie.parent.globalContext),ie.taskCtx)):s.x.UpdateResult.Recreate}),be.apply(this,arguments)}var Te=n(4829)},2907:(tn,Ue,n)=>{"use strict";n.d(Ue,{C:()=>r});var r,e=n(8384),o=n(9909);!function(t){function v(C,h,a,S){const D=S&&S.ref?S.ref:o.kk.create22();let R;return S&&S.tags&&(R="string"==typeof S.tags?[S.tags]:S.tags,0===R.length?R=void 0:R.sort()),{parent:C,transformer:h,state:S?.state||{},tags:R,ref:D,dependsOn:S&&S.dependsOn,params:a,version:o.kk.create22()}}function l(C,h){return!!C.tags&&C.tags.indexOf(h)>=0}function u(C){return C}t.RootRef="-=root=-",t.areStatesEqual=function A(C,h){return!!C.isHidden!=!!h.isHidden||!!C.isCollapsed!=!!h.isCollapsed||!!C.isGhost!=!!h.isGhost||!!C.isLocked!=!!h.isLocked},t.isStateChange=function y(C,h){return!!h&&(typeof h.isCollapsed<"u"&&C.isCollapsed!==h.isCollapsed||typeof h.isHidden<"u"&&C.isHidden!==h.isHidden||typeof h.isGhost<"u"&&C.isGhost!==h.isGhost||typeof h.isLocked<"u"&&C.isLocked!==h.isLocked)},t.assignState=function c(C,h){if(!h)return!1;let a=!1;for(const S of Object.keys(h)){const D=h[S];!!D!=!!C[S]&&(a=!0,C[S]=D)}return a},t.syncState=function i(C,h){if(!h)return!1;let a=!1;for(const S of Object.keys(h)){const D=h[S];!!D!=!!C[S]&&(a=!0,void 0!==D?C[S]=D:delete C[S])}for(const S of Object.keys(C)){const D=h[S];!!D!=!!C[S]&&(a=!0,void 0!==D?C[S]=D:delete C[S])}return a},t.create=v,t.withParams=function O(C,h){return{...C,params:h,version:o.kk.create22()}},t.withState=function b(C,h){return h?{...C,state:{...C.state,...h}}:C},t.withTags=function _(C,h){let a;return h&&(a="string"==typeof h?[h]:h,0===a.length?a=void 0:a.sort()),{...C,tags:a,version:o.kk.create22()}},t.withParent=function M(C,h){return{...C,parent:h,version:o.kk.create22()}},t.createRoot=function I(C){return v(t.RootRef,e.x.ROOT,{},{ref:t.RootRef,state:C})},t.hasTag=l,t.hasTags=function m(C,h){if(!C.tags)return"string"!=typeof h&&0===h.length;if("string"==typeof h)return l(C,h);for(const a of h)if(C.tags.indexOf(a)<0)return!1;return!0},t.toJSON=function d(C){const h=C.transformer.definition.customSerialization?C.transformer.definition.customSerialization.toJSON:u;let a;for(const S of Object.keys(C.state))C.state[S]&&(a||(a={}),a[S]=!0);return{parent:C.parent,transformer:C.transformer.id,params:C.params?h(C.params):void 0,state:a,tags:C.tags,ref:C.ref,dependsOn:C.dependsOn,version:C.version}},t.fromJSON=function s(C){const h=e.x.get(C.transformer);return{parent:C.parent,transformer:h,params:C.params?(h.definition.customSerialization?h.definition.customSerialization.fromJSON:u)(C.params):void 0,state:C.state||{},tags:C.tags,ref:C.ref,dependsOn:C.dependsOn,version:C.version}}}(r||(r={}))},8384:(tn,Ue,n)=>{"use strict";n.d(Ue,{x:()=>A});var A,e=n(2907),o=n(8277),r=n(4829),t=n(7785);!function(y){let v;var h;y.getParamDefinition=function c(h,a,S){return h.definition.params?h.definition.params(a,S):{}},y.is=function i(h){return!!h&&"function"==typeof h.toAction&&"function"==typeof h.apply},(h=v=y.UpdateResult||(y.UpdateResult={}))[h.Unchanged=0]="Unchanged",h[h.Updated=1]="Updated",h[h.Recreate=2]="Recreate",h[h.Null=3]="Null";const O=new Map,b=new Map;function m(h,a){const{name:S}=a,D=`${h}.${S}`;if(O.has(D))throw new Error(`A transform with id '${S}' is already registered. Please pick a unique identifier for your transforms and/or register them only once. This is to ensure that transforms can be serialized and replayed.`);const R={apply:(f,p,E)=>e.C.create(f,R,p,E),toAction:()=>r.K.fromTransformer(R),namespace:h,id:D,definition:a,createDefaultParams:(f,p)=>a.params?o.t.getDefaultValues(a.params(f,p)):{}};return O.set(D,R),function _(h){for(const a of h.definition.from)b.has(a.type)?b.get(a.type).push(h):b.set(a.type,[h])}(R),R}let s;y.getAll=function M(){return Array.from(O.values())},y.get=function I(h){const a=O.get(h);if(!a)throw new Error(`A transformer with signature '${h}' is not registered.`);return a},y.fromType=function l(h){return b.get(h)||[]},y.create=m,y.factory=function u(h){return a=>m(h,a)},y.builderFactory=function d(h){return s.build(h)},function(h){h.build=function S(D){return R=>function a(D,R){return f=>m(D,{name:R.name,from:R.from instanceof Array?R.from:[R.from],to:R.to instanceof Array?R.to:[R.to],display:"string"==typeof R.display?{name:R.display}:R.display?R.display:{name:(0,t.ZH)(R.name.replace(/[-]/g," "))},params:"object"==typeof R.params?()=>R.params:R.params?R.params:void 0,isDecorator:R.isDecorator,...f})}(D,R)}}(s=y.Builder||(y.Builder={})),y.build=function C(h){return s.build(h)},y.ROOT=m("build-in",{name:"root",from:[],to:[],display:{name:"Root",description:"For internal use."},apply(){throw new Error("should never be applied")},update:()=>v.Unchanged})}(A||(A={}))},6323:(tn,Ue,n)=>{"use strict";n.d(Ue,{P:()=>o});var o,r,e=n(2907);(r=o||(o={})).Impl=class t{get current(){return this._current}set current(i){this._current=i}getAncestorOfType(i){if(!this._current)return;let v=this._current;for(;;){if(v=this.cells.get(v.transform.parent),!v.obj)return;if(v.obj.type===i.type)return v.obj;if(v.transform.ref===e.C.RootRef)return}}getRootOfType(i){if(!this._current)return;let O,v=this._current;for(;;){if(!v.obj)return;if(v.obj.type===i.type&&(O=v),v.transform.ref===e.C.RootRef)return O?O.obj:void 0;v=this.cells.get(v.transform.parent)}}constructor(i){this.cells=i,this._current=void 0}},r.getDecoratorChain=function A(c,i){const v=c.cells;let O=v.get(i);const b=[O];for(;O?.transform.transformer.definition.isDecorator;)O=v.get(O.transform.parent),b.push(O);return b},r.getRootOfType=function y(c,i,v){let O,b=c.cells.get(v);if(b)for(;;){if(!b.obj)return;if(b.obj.type===i.type&&(O=b),b.transform.ref===e.C.RootRef)return O?O.obj:void 0;b=c.cells.get(b.transform.parent)}}},6241:(tn,Ue,n)=>{"use strict";n.d(Ue,{pm:()=>O,yR:()=>b,hM:()=>v,Vs:()=>_});var e=n(467),o=n(5398),r=n(9854),t=n(5385),A=n(2629);const c=typeof performance<"u"&&!!performance.mark&&performance.measure&&A.g$;var i;function v(R,f,p=250){const E=I(R,f,p);return s(R,new D(E,E.root))}function O(R,f,p=250){const E=I(R,f,p);return new D(E,E.root)}function b(R,f){return s(f,R)}function _(R,f,p){return R.runChild(f,p)}function M(R){return{taskId:R.id,taskName:R.name,message:"",startedTime:0,canAbort:!0,isIndeterminate:!0,current:0,max:0}}function I(R,f,p){const E={abortRequested:!1,treeAborted:!1,reason:""};return{updateRateMs:p,lastNotified:(0,r.t)(),observer:f,abortToken:E,taskId:R.id,root:{progress:M(R),children:[]},tryAbort:l(E)}}function l(R){return f=>{R.abortRequested=!0,R.reason=f||R.reason}}function m(R){return{progress:{...R.progress},children:R.children.map(m)}}function u(R){return R.progress.canAbort&&R.children.every(u)}function s(R,f){return C.apply(this,arguments)}function C(){return(C=(0,e.A)(function*(R,f){i.markStart(R),f.node.progress.startedTime=(0,r.t)();try{const p=yield R.f(f);return i.markEnd(R),i.measure(R),f.info.abortToken.abortRequested&&h(f.info),p}catch(p){throw o.Y.isAbort(p)&&(f.isAborted=!0,f.node.children.length>0&&(yield new Promise(E=>{f.onChildrenFinished=E})),R.onAbort&&R.onAbort()),p}})).apply(this,arguments)}function h(R){throw R.abortToken.treeAborted||(R.abortToken.treeAborted=!0,a(R.root),S(R,(0,r.t)())),o.Y.Aborted(R.abortToken.reason)}function a(R){const f=R.progress;f.isIndeterminate=!0,f.canAbort=!1,f.message="Aborting...";for(const p of R.children)a(p)}function S(R,f){R.lastNotified=f;const p=function d(R){return{root:m(R.root),canAbort:u(R.root),requestAbort:R.tryAbort}}(R);R.observer(p)}!function(R){function f(w){return`startTask${w.id}`}function p(w){return`endTask${w.id}`}R.markStart=function E(w){c&&performance.mark(f(w))},R.markEnd=function T(w){c&&performance.mark(p(w))},R.measure=function L(w){c&&performance.measure(`\u2733\ufe0f ${w.name}`,f(w),p(w))}}(i||(i={}));class D{checkAborted(){this.info.abortToken.abortRequested&&(this.isAborted=!0,h(this.info))}get shouldUpdate(){return this.checkAborted(),(0,r.t)()-this.lastUpdatedTime>this.info.updateRateMs}updateProgress(f){if(this.checkAborted(),!f)return;const p=this.node.progress;"string"==typeof f?(p.message=f,p.isIndeterminate=!0):(typeof f.canAbort<"u"&&(p.canAbort=f.canAbort),typeof f.message<"u"&&(p.message=f.message),typeof f.current<"u"&&(p.current=f.current),typeof f.max<"u"&&(p.max=f.max),p.isIndeterminate=typeof p.current>"u"||typeof p.max>"u",typeof f.isIndeterminate<"u"&&(p.isIndeterminate=f.isIndeterminate))}update(f,p){if(this.lastUpdatedTime=(0,r.t)(),this.updateProgress(f),!p)return S(this.info,this.lastUpdatedTime),this.checkAborted(),t._.immediatePromise()}runChild(f,p){var E=this;return(0,e.A)(function*(){E.updateProgress(p);const T={progress:M(f),children:[]},L=E.node.children;L.push(T);const w=new D(E.info,T);try{return yield s(f,w)}catch(Q){if(o.Y.isAbort(Q)&&E.isAborted)return;throw Q}finally{const Q=L.indexOf(T);if(Q>=0){for(let G=Q,V=L.length-1;G{"use strict";n.d(Ue,{f:()=>o});const o=new class e{constructor(){this.shouldUpdate=!1,this.isSynchronous=!0}update(t,A){}}},4824:(tn,Ue,n)=>{"use strict";n.d(Ue,{_F:()=>A._,YZ:()=>e.Y,yB:()=>v});var t,e=n(5398);n(6095),function(b){function _(I,l=""){const m=I.progress;if(!I.children.length)return m.isIndeterminate?`${l}${m.taskName}: ${m.message}`:`${l}${m.taskName}: [${m.current}/${m.max}] ${m.message}`;const u=l+" |_ ",d=I.children.map(s=>_(s,u));return m.isIndeterminate?`${l}${m.taskName}: ${m.message}\n${d.join("\n")}`:`${l}${m.taskName}: [${m.current}/${m.max}] ${m.message}\n${d.join("\n")}`}b.format=function M(I){return _(I.root)}}(t||(t={}));var A=n(5385),c=n(467),i=n(9854);function v(b,_,M,I,l){return O.apply(this,arguments)}function O(){return(O=(0,c.A)(function*(b,_,M,I,l){let m=Math.max(_,0),u=0,d=0;if(b.isSynchronous)return I(Number.MAX_SAFE_INTEGER,M),M;let s=(0,i.t)(),C=0,h=0;for(;(C=I(m,M))>0;){u+=C;const a=(0,i.t)()-s;h+=a,d+=a,b.shouldUpdate&&(yield l(b,M,u),m=Math.round(h*u/d)+1,s=(0,i.t)(),h=0)}return b.shouldUpdate&&(yield l(b,M,u)),M})).apply(this,arguments)}},5398:(tn,Ue,n)=>{"use strict";n.d(Ue,{Y:()=>A});var A,e=n(467),o=n(6241),r=n(6095),t=n(7778);!function(y){class c{run(d,s=250){return d?(0,o.hM)(this,d,s):this.f(r.f)}runAsChild(d,s){return d.isSynchronous?this.f(r.f):(0,o.Vs)(d,this,s)}runInContext(d){return d.isSynchronous?this.f(r.f):(0,o.yR)(d,this)}constructor(d,s,C){this.name=d,this.f=s,this.onAbort=C,this.id=m()}}function i(u){return!!u&&"number"==typeof u.id&&"string"==typeof u.name&&!!u.run}function b(u,d,s){return new c(u,d,s)}y.is=i,y.isAbort=function v(u){return!!u&&!!u.isAborted},y.Aborted=function O(u){return{isAborted:!0,reason:u,toString:()=>"Aborted"+(u?": "+u:"")}},y.create=b,y.constant=function _(u,d){return b(u,function(){var s=(0,e.A)(function*(C){return d});return function(C){return s.apply(this,arguments)}}())},y.empty=function M(){return b("",function(){var u=(0,e.A)(function*(d){});return function(d){return u.apply(this,arguments)}}())},y.fail=function I(u,d){return b(u,function(){var s=(0,e.A)(function*(C){throw new Error(d)});return function(C){return s.apply(this,arguments)}}())},y.resolveInContext=function l(u,d){return i(u)?d?u.runInContext(d):u.run():u};const m=(0,t.q)(0,1073741823)}(A||(A={}))},5385:(tn,Ue,n)=>{"use strict";n.d(Ue,{_:()=>t});const o=typeof setImmediate<"u"?typeof window<"u"?{setImmediate:(A,...y)=>window.setImmediate(A,...y),clearImmediate:A=>window.clearImmediate(A)}:{setImmediate,clearImmediate}:function e(){const A=function(){const C=typeof window<"u"&&window,h=typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self;return C||typeof global<"u"&&global||h}(),y={},c=typeof document<"u"?document:void 0;let v,i=1;function b(C){delete y[C]}function M(C){const h=y[C];b(C),function _(C){const h=C.callback,a=C.args;switch(a.length){case 0:h();break;case 1:h(a[0]);break;case 2:h(a[0],a[1]);break;case 3:h(a[0],a[1],a[2]);break;default:h.apply(void 0,a)}}(h)}return typeof process<"u"&&"[object process]"==={}.toString.call(process)?function I(){v=function(C){process.nextTick(function(){M(C)})}}():function l(){if(A&&A.postMessage&&!A.importScripts){let C=!0;const h=A.onmessage;return A.onmessage=function(){C=!1},A.postMessage("","*"),A.onmessage=h,C}}()?function m(){const C="setImmediate$"+Math.random()+"$",h=function(a){a.source===A&&"string"==typeof a.data&&0===a.data.indexOf(C)&&M(+a.data.slice(C.length))};window.addEventListener?window.addEventListener("message",h,!1):window.attachEvent("onmessage",h),v=function(a){window.postMessage(C+a,"*")}}():typeof MessageChannel<"u"?function u(){const C=new MessageChannel;C.port1.onmessage=function(h){M(h.data)},v=function(h){C.port2.postMessage(h)}}():c&&"onreadystatechange"in c.createElement("script")?function d(){const C=c.documentElement;v=function(h){let a=c.createElement("script");a.onreadystatechange=function(){M(h),a.onreadystatechange=null,C.removeChild(a),a=null},C.appendChild(a)}}():function s(){v=function(C){setTimeout(M,0,C)}}(),{setImmediate:function O(C,...h){return"function"!=typeof C&&(C=new Function(""+C)),y[i]={callback:C,args:h},v(i),i++},clearImmediate:b}}();function r(A){o.setImmediate(A)}const t={setImmediate:o.setImmediate,clearImmediate:o.clearImmediate,immediatePromise:()=>new Promise(r),delay:(A,y=void 0)=>new Promise(c=>setTimeout(c,A,y))}},7981:(tn,Ue,n)=>{"use strict";n.d(Ue,{l:()=>A});var e=n(3246),o=n(9136),r=n(9498),t=n(9455);function A(y,c){return{kind:y,layers:c}}!function(y){let c;function v(m){return 0===m.layers.length}y.Empty={kind:"empty-loci",layers:[]},function(m){let u;var S;function C(S){switch(S){case"one":return u.One;case"two":return u.Two;case"three":return u.Three;case"four":return u.Four;case"five":return u.Five;case"six":return u.Six}}m.is=t.N.has,(S=u=m.Flag||(m.Flag={}))[S.None=0]="None",S[S.One=1]="One",S[S.Two=2]="Two",S[S.Three=4]="Three",S[S.Four=8]="Four",S[S.Five=16]="Five",S[S.Six=32]="Six",m.create=function d(S){return t.N.create(S)},m.Names={one:u.One,two:u.Two,three:u.Three,four:u.Four,five:u.Five,six:u.Six},m.isName=function s(S){return S in m.Names},m.fromName=C,m.fromNames=function h(S){let D=u.None;for(let R=0,f=S.length;R{C.push({loci:h,groups:a})}),{kind:"element-loci",layers:C}}return m},y.filter=function _(m,u){if(v(m))return m;if("element-loci"===m.kind){const{structure:d}=m.layers[0].loci,s=[];for(const C of m.layers){let{loci:h,groups:a}=C;const S=o.iZ.Loci.remap(h,u);h=o.iZ.Loci.remap(S,d),o.iZ.Loci.isEmpty(h)||s.push({loci:h,groups:a})}return{kind:"element-loci",layers:s}}return m},y.ofScript=function M(m,u){const d=[];for(let s=0,C=m.length;s{"use strict";n.d(Ue,{J:()=>Vi});var e=n(190),o=n(9136),r=n(442),t=n(8277),A=n(2293),y=n(9983);const c=(0,e.Q1)(13421772),v={},_={name:"carbohydrate-symbol",label:"Carbohydrate Symbol",category:y.N.Residue,factory:function b(ln,Ht){let Gn;if(ln.structure){const{elements:ar,getElementIndices:kn}=ln.structure.carbohydrates,ur=(sr,Jn)=>{if(!o.Nf.isAtomic(sr))return c;const Br=kn(sr,Jn);return Br.length>0?ar[Br[0]].component.color:c};Gn=(sr,Jn)=>Jn?r.G7.Secondary:o.iZ.Location.is(sr)?ur(sr.unit,sr.element):o.gn.isLocation(sr)?ur(sr.aUnit,sr.aUnit.elements[sr.aIndex]):c}else Gn=()=>c;return{factory:b,granularity:"group",color:Gn,props:Ht,description:"Assigns colors according to the Symbol Nomenclature for Glycans (SNFG).",legend:(0,A.h)(r.dV)}},getParams:function O(ln){return v},defaultValues:t.t.getDefaultValues(v),isApplicable:ln=>!!ln.structure&&ln.structure.models.some(Ht=>o.Kx.hasCarbohydrate(Ht))};var M=n(9347),I=n(9909),l=n(1930),m=n(8742),u=n(3543),d=n(7809);const s=(0,e.Q1)(13421772),h={...(0,d.U)({type:"colors",colorList:"red-yellow-blue"})},D={name:"element-index",label:"Element Index",category:y.N.Atom,factory:function S(ln,Ht){let Gn,ar;if(ln.structure){const{units:kn}=ln.structure.root,ur=kn.length,sr=new Map,Jn=new Map;let Br=0;for(let et=0;et{if(o.iZ.Location.is(et)){const at=Jn.get(et.unit.id),Et=u.CD.findPredecessorIndex(kn[at].elements,et.element);return st.color(sr.get(at)+Et)}if(o.gn.isLocation(et)){const at=Jn.get(et.aUnit.id),Et=u.CD.findPredecessorIndex(kn[at].elements,et.aUnit.elements[et.aIndex]);return st.color(sr.get(at)+Et)}return s}}else Gn=()=>s;return{factory:S,granularity:"groupInstance",preferSmoothing:!0,color:Gn,props:Ht,description:"Gives every element (atom or coarse sphere/gaussian) a unique color based on the position (index) of the element in the list of elements in the structure.",legend:ar}},getParams:function a(ln){return h},defaultValues:t.t.getDefaultValues(h),isApplicable:ln=>!!ln.structure};var R=n(3057),f=n(9359);function p(ln){const Ht={};return(0,f.IF)(ln,(Gn,ar)=>{Ht[ar]=t.t.Color(ln[ar])}),Ht}var E=n(8103);const L=(0,e.Q1)(16448250),w="Gives every chain a color based on its `label_entity_id` value.",Q={...(0,d.U)({type:"colors",colorList:"many-distinct"})};function V(ln,Ht){return`${ln}|${Ht}`}function N(ln){switch(ln.unit.kind){case 0:return o.StructureProperties.chain.label_entity_id(ln);case 1:case 2:return o.StructureProperties.coarse.entity_id(ln)}}function k(ln,Ht){let Gn,ar;if(ln.structure){const kn=o.iZ.Location.create(ln.structure.root),ur=function U(ln){const Ht=new Map;for(let Gn=0,ar=ln.models.length;Gnsr[st]});ar=Br.legend,Gn=st=>{let et;if(o.iZ.Location.is(st)){const Nt=V(N(st),st.structure.models.indexOf(st.unit.model));et=ur.get(Nt)}else if(o.gn.isLocation(st)){kn.unit=st.aUnit,kn.element=st.aUnit.elements[st.aIndex];const Nt=V(N(kn),kn.structure.models.indexOf(kn.unit.model));et=ur.get(Nt)}return void 0===et?L:Br.color(et)}}else Gn=()=>L;return{factory:k,granularity:"group",color:Gn,props:Ht,description:w,legend:ar}}const H={name:"entity-id",label:"Entity Id",category:y.N.Chain,factory:k,getParams:function G(ln){return t.t.clone(Q)},defaultValues:t.t.getDefaultValues(Q),isApplicable:ln=>!!ln.structure};var $=n(1372),J=n(229),W=n(1907),te=n(2524);const de="dark-2",ye=(0,e.Q1)(16448250),j="Gives ranges of a polymer chain a color based on the entity source it originates from (e.g. gene, plasmid, organism).",Z={...(0,d.U)({type:"colors",colorList:de})};function Y(ln,Ht){return`${ln}|${Ht}`}function ee(ln,Ht,Gn,ar,kn,ur){return`${ln}|${Ht}|${Gn}|${ur||kn||ar}`}function g(ln,Ht,Gn,ar,kn,ur,sr,Jn){const{entity_id:Br,pdbx_src_id:st,pdbx_beg_seq_num:et,pdbx_end_seq_num:at}=kn;for(let Et=0,Nt=kn._rowCount;Et{const ar=Gn.split("|"),kn=ar[2];return`${(0,J.Fq)(ar[3])?"Unnamed "+ ++Ht:ar[3]}${kn?` (${kn})`:""}`})}(Jn),et=(0,d.S)(Jn.size,Ht,{valueLabel:Et=>Br[Et]});ar=et.legend;const at=Et=>{const Cn=Y(ur.indexOf(Et.unit.model),o.StructureProperties.entity.id(Et)),Un=sr.get(Cn);if(Un){const vn=Un[o.StructureProperties.residue.label_seq_id(Et)-1]-1;return-1===vn?ye:et.color(vn)}return ye};Gn=Et=>o.iZ.Location.is(Et)?at(Et):o.gn.isLocation(Et)?(kn.unit=Et.aUnit,kn.element=Et.aUnit.elements[Et.aIndex],at(kn)):ye}else Gn=()=>ye;return{factory:le,granularity:"group",color:Gn,props:Ht,description:j,legend:ar}}const Ae={name:"entity-source",label:"Entity Source",category:y.N.Chain,factory:le,getParams:function q(ln){const Ht=t.t.clone(Z);return ln.structure&&_e(ln.structure.root.models).srcKeySerialMap.size>W.VI[de].list.length&&(Ht.palette.defaultValue.name="colors",Ht.palette.defaultValue.params={...Ht.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,W.JA)(de).list}}),Ht},defaultValues:t.t.getDefaultValues(Z),isApplicable:ln=>!!ln.structure},Be=(0,e.Q1)(13421772),Ce="Gives every model a unique color based on its index.",Re={...(0,d.U)({type:"colors",colorList:"many-distinct"})};function we(ln,Ht){var Gn;let ar,kn;if(ln.structure){const ur=(null!==(Gn=o.Kx.MaxIndex.get(ln.structure.models[0]).value)&&void 0!==Gn?Gn:-1)+1,sr=(0,d.S)(ur,Ht);kn=sr.legend,ar=Jn=>o.iZ.Location.is(Jn)?sr.color(o.Kx.Index.get(Jn.unit.model).value||0):o.gn.isLocation(Jn)?sr.color(o.Kx.Index.get(Jn.aUnit.model).value||0):Be}else ar=()=>Be;return{factory:we,granularity:"instance",color:ar,props:Ht,description:Ce,legend:kn}}const Oe={name:"model-index",label:"Model Index",category:y.N.Chain,factory:we,getParams:function ke(ln){return t.t.clone(Re)},defaultValues:t.t.getDefaultValues(Re),isApplicable:ln=>!!ln.structure&&ln.structure.elementCount>0},Se=(0,e.Q1)(13421772),Ve="Gives every structure a unique color based on its index.",Ne={...(0,d.U)({type:"colors",colorList:"many-distinct"})};function ne(ln,Ht){var Gn;let ar,kn;if(ln.structure){const ur=(null!==(Gn=o.oE.MaxIndex.get(ln.structure).value)&&void 0!==Gn?Gn:-1)+1,sr=(0,d.S)(ur,Ht);kn=sr.legend,ar=Jn=>o.iZ.Location.is(Jn)?sr.color(o.oE.Index.get(Jn.structure).value||0):o.gn.isLocation(Jn)?sr.color(o.oE.Index.get(Jn.aStructure).value||0):Se}else ar=()=>Se;return{factory:ne,granularity:"instance",color:ar,props:Ht,description:Ve,legend:kn}}const be={name:"structure-index",label:"Structure Index",category:y.N.Chain,factory:ne,getParams:function K(ln){return t.t.clone(Ne)},defaultValues:t.t.getDefaultValues(Ne),isApplicable:ln=>!!ln.structure&&ln.structure.elementCount>0},Te="dark-2",ie=(0,e.Q1)(13421772),ue="Gives every chain instance (single chain or collection of single elements) a unique color based on the position (index) of the chain in the list of chains in the structure.",re={...(0,d.U)({type:"colors",colorList:Te})};function ce(ln,Ht){let Gn,ar;if(ln.structure){const{units:kn}=ln.structure.root,ur=(0,d.S)(kn.length,Ht);ar=ur.legend;const sr=new Map;for(let Jn=0,Br=kn.length;Jno.iZ.Location.is(Jn)?sr.get(Jn.unit.id):o.gn.isLocation(Jn)?sr.get(Jn.aUnit.id):ie}else Gn=()=>ie;return{factory:ce,granularity:"instance",color:Gn,props:Ht,description:ue,legend:ar}}const se={name:"unit-index",label:"Chain Instance",category:y.N.Chain,factory:ce,getParams:function ve(ln){const Ht=t.t.clone(re);return ln.structure&&ln.structure.root.units.length>W.VI[Te].list.length&&(Ht.palette.defaultValue.name="colors",Ht.palette.defaultValue.params={...Ht.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,W.JA)(Te).list}}),Ht},defaultValues:t.t.getDefaultValues(re),isApplicable:ln=>!!ln.structure},ae=(0,e._j)({H:16777215,D:16777152,T:16777120,HE:14286847,LI:13402367,BE:12779264,B:16758197,C:9474192,N:3166456,O:16715021,F:9494608,NE:11789301,NA:11230450,MG:9109248,AL:12560038,SI:1578e4,P:16744448,S:16777008,CL:2093087,AR:8442339,K:9388244,CA:4062976,SC:15132390,TI:12567239,V:10921643,CR:9083335,MN:10255047,FE:14706227,CO:15765664,NI:5296208,CU:13140019,ZN:8224944,GA:12750735,GE:6721423,AS:12419299,SE:16752896,BR:10889513,KR:6076625,RB:7351984,SR:65280,Y:9764863,ZR:9756896,NB:7586505,MO:5551541,TC:3907230,RU:2396047,RH:687500,PD:27013,AG:12632256,CD:16767375,IN:10909043,SN:6717568,SB:10380213,TE:13924864,I:9699476,XE:9699476,CS:5707663,BA:51456,LA:7394559,CE:16777159,PR:14286791,ND:13107143,PM:10747847,SM:9437127,EU:6422471,GD:4587463,TB:3211207,DY:2097095,HO:65436,ER:58997,TM:54354,YB:48952,LU:43812,HF:5096191,TA:5089023,W:2200790,RE:2522539,OS:2516630,IR:1528967,PT:13684960,AU:16765219,HG:12105936,TL:10900557,PB:5724513,BI:10375093,PO:11230208,AT:7688005,RN:4358806,FR:4325478,RA:32e3,AC:7384058,TH:47871,PA:41471,U:36863,NP:33023,PU:27647,AM:5528818,CM:7888099,BK:9064419,CF:10565332,ES:11739092,FM:11739066,MD:11734438,NO:12389767,LR:13041766,RF:13369433,DB:13697103,SG:14221381,BH:14680120,HS:15073326,MT:15400998,DS:16777215,RG:16777215,CN:16777215,UUT:16777215,FL:16777215,UUP:16777215,LV:16777215,UUH:16777215}),ge=(0,e.Q1)(16777215),Le={carbonColor:t.t.MappedStatic("chain-id",{"chain-id":t.t.Group(m.t4),"unit-index":t.t.Group(re,{label:"Chain Instance"}),"entity-id":t.t.Group(Q),"entity-source":t.t.Group(Z),"operator-name":t.t.Group(E.qg),"model-index":t.t.Group(Re),"structure-index":t.t.Group(Ne),uniform:t.t.Group(M.vz),"element-symbol":t.t.EmptyGroup()},{description:"Use chain-id coloring for carbon atoms."}),saturation:t.t.Numeric(0,{min:-6,max:6,step:.1}),lightness:t.t.Numeric(.2,{min:-6,max:6,step:.1}),colors:t.t.MappedStatic("default",{default:t.t.EmptyGroup(),custom:t.t.Group(p(ae))})};function Je(ln,Ht){var Gn;const ar=(0,R.Ak)("default"===Ht.colors.name?ae:Ht.colors.params,Ht.saturation,Ht.lightness),kn=null===(Gn=function Lt(ln,Ht){switch(Ht.name){case"chain-id":return(0,m.Zv)(ln,Ht.params);case"unit-index":return ce(ln,Ht.params);case"entity-id":return k(ln,Ht.params);case"entity-source":return le(ln,Ht.params);case"operator-name":return(0,E.ci)(ln,Ht.params);case"model-index":return we(ln,Ht.params);case"structure-index":return ne(ln,Ht.params);case"uniform":return(0,M.TA)(ln,Ht.params);case"element-symbol":return;default:(0,$.dr)(Ht)}}(ln,Ht.carbonColor))||void 0===Gn?void 0:Gn.color;function ur(Br,st){return kn&&"C"===Br?kn(st,!1):function je(ln,Ht){const Gn=ln[Ht];return void 0===Gn?ge:Gn}(ar,Br)}return{factory:Je,granularity:"operator-name"===Ht.carbonColor.name||"unit-index"===Ht.carbonColor.name?"groupInstance":"group",preferSmoothing:!0,color:function sr(Br){if(o.iZ.Location.is(Br)){if(o.Nf.isAtomic(Br.unit)){const{type_symbol:st}=Br.unit.model.atomicHierarchy.atoms;return ur(st.value(Br.element),Br)}}else if(o.gn.isLocation(Br)&&o.Nf.isAtomic(Br.aUnit)){const{type_symbol:st}=Br.aUnit.model.atomicHierarchy.atoms;return ur(st.value(Br.aUnit.elements[Br.aIndex]),Br)}return ge},props:Ht,description:"Assigns a color to every atom according to its chemical element.",legend:(0,A.h)(Object.keys(ar).map(Br=>[Br,ar[Br]]))}}const en={name:"element-symbol",label:"Element Symbol",category:y.N.Atom,factory:Je,getParams:function nt(ln){return t.t.clone(Le)},defaultValues:t.t.getDefaultValues(Le),isApplicable:ln=>!!ln.structure};var Bt=n(2789);const pn=(0,e._j)({water:3697840,ion:15729279,protein:12496596,RNA:16629894,DNA:12540695,PNA:4367514,saccharide:8374655}),$e=(0,e.Q1)(16777113),_t={saturation:t.t.Numeric(0,{min:-6,max:6,step:.1}),lightness:t.t.Numeric(0,{min:-6,max:6,step:.1}),colors:t.t.MappedStatic("default",{default:t.t.EmptyGroup(),custom:t.t.Group(p(pn))})};function Ke(ln,Ht,Gn){switch((0,Bt.Ju)(Ht,Gn)){case 2:return ln.water;case 3:return ln.ion;case 5:return ln.protein;case 6:return ln.RNA;case 7:return ln.DNA;case 8:return ln.PNA;case 9:return ln.saccharide}return $e}function ut(ln,Ht){const Gn=(0,R.Ak)("default"===Ht.colors.name?pn:Ht.colors.params,Ht.saturation,Ht.lightness);return{factory:ut,granularity:"group",color:function ar(kn){return o.iZ.Location.is(kn)?Ke(Gn,kn.unit,kn.element):o.gn.isLocation(kn)?Ke(Gn,kn.aUnit,kn.aUnit.elements[kn.aIndex]):$e},props:Ht,description:"Assigns a color based on the molecule type of a residue.",legend:(0,A.h)(Object.keys(Gn).map(kn=>[kn,Gn[kn]]).concat([["Other/unknown",$e]]))}}const Kt={name:"molecule-type",label:"Molecule Type",category:y.N.Residue,factory:ut,getParams:function Me(ln){return _t},defaultValues:t.t.getDefaultValues(_t),isApplicable:ln=>!!ln.structure},sn="dark-2",gt=(0,e.Q1)(16448250),At={...(0,d.U)({type:"colors",colorList:sn})};function rn(ln){switch(ln.kind){case 0:return o.StructureProperties.chain.label_asym_id;case 1:case 2:return o.StructureProperties.coarse.asym_id}}function tt(ln){const Ht=new Map;for(let Gn=0,ar=ln.unitSymmetryGroups.length;Gnsr[st]});ar=Br.legend,Gn=st=>{let et;if(o.iZ.Location.is(st)){const at=rn(st.unit);et=ur.get(at(st))}else if(o.gn.isLocation(st)){const at=rn(st.aUnit);kn.unit=st.aUnit,kn.element=st.aUnit.elements[st.aIndex],et=ur.get(at(kn))}return void 0===et?gt:Br.color(et)}}else Gn=()=>gt;return{factory:Mt,granularity:"group",color:Gn,props:Ht,description:"Gives every polymer chain a color based on its `asym_id` value.",legend:ar}},getParams:function Gt(ln){const Ht=t.t.clone(At);return ln.structure&&tt(ln.structure.root).size>W.VI[sn].list.length&&(Ht.palette.defaultValue.name="colors",Ht.palette.defaultValue.params={...Ht.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,W.JA)(sn).list}}),Ht},defaultValues:t.t.getDefaultValues(At),isApplicable:ln=>!!ln.structure},bn="dark-2",Dn=(0,e.Q1)(13421772),It={...(0,d.U)({type:"colors",colorList:bn})};function Ct(ln){let Ht=0;const{units:Gn}=ln;for(let ar=0,kn=Gn.length;ar0&&++Ht;return Ht}const Vt={name:"polymer-index",label:"Polymer Chain Instance",category:y.N.Chain,factory:function $t(ln,Ht){let Gn,ar;if(ln.structure){const kn=(0,d.S)(Ct(ln.structure.root),Ht);ar=kn.legend;const{units:ur}=ln.structure.root,sr=new Map;for(let Jn=0,Br=0,st=ur.length;Jn0&&(sr.set(ur[Jn].id,kn.color(Br)),++Br);Gn=Jn=>{let Br;return o.iZ.Location.is(Jn)?Br=sr.get(Jn.unit.id):o.gn.isLocation(Jn)&&(Br=sr.get(Jn.aUnit.id)),void 0!==Br?Br:Dn}}else Gn=()=>Dn;return{factory:$t,granularity:"instance",color:Gn,props:Ht,description:"Gives every polymer chain instance a unique color based on the position (index) of the polymer in the list of polymers in the structure.",legend:ar}},getParams:function Dt(ln){const Ht=t.t.clone(It);return ln.structure&&Ct(ln.structure.root)>W.VI[bn].list.length&&(Ht.palette.defaultValue.name="colors",Ht.palette.defaultValue.params={...Ht.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,W.JA)(bn).list}}),Ht},defaultValues:t.t.getDefaultValues(It),isApplicable:ln=>!!ln.structure},Wt=(0,e._j)({ALA:9240460,ARG:124,ASN:16743536,ASP:10485826,CYS:16777072,GLN:16731212,GLU:6684672,GLY:15658734,HIS:7368959,ILE:19456,LEU:4546117,LYS:4671416,MET:12099650,PHE:5459026,PRO:5395026,SER:16740418,THR:12078080,TRP:5195264,TYR:9203788,VAL:16747775,A:14423100,G:3329330,I:10145074,C:16766720,T:4286945,U:4251856,DA:14423100,DG:3329330,DI:10145074,DC:16766720,DT:4286945,DU:4251856,APN:14423100,GPN:3329330,CPN:16766720,TPN:4286945}),yn=(0,e.Q1)(16711935),kt={saturation:t.t.Numeric(0,{min:-6,max:6,step:.1}),lightness:t.t.Numeric(1,{min:-6,max:6,step:.1}),colors:t.t.MappedStatic("default",{default:t.t.EmptyGroup(),custom:t.t.Group(p(Wt))})};function An(ln,Ht){return ln.model.atomicHierarchy.atoms.label_comp_id.value(Ht)}function jn(ln,Ht){const Gn=ln.coarseElements.seq_id_begin.value(Ht);if(Gn===ln.coarseElements.seq_id_end.value(Ht))return ln.model.sequence.byEntityKey[ln.coarseElements.entityKey[Ht]].sequence.compId.value(Gn-1)}function On(ln,Ht){const Gn=ln[Ht];return void 0===Gn?yn:Gn}function fr(ln,Ht){const Gn=(0,R.Ak)("default"===Ht.colors.name?Wt:Ht.colors.params,Ht.saturation,Ht.lightness);return{factory:fr,granularity:"group",preferSmoothing:!0,color:function ar(kn){if(o.iZ.Location.is(kn)){if(o.Nf.isAtomic(kn.unit)){const ur=An(kn.unit,kn.element);return On(Gn,ur)}{const ur=jn(kn.unit,kn.element);if(ur)return On(Gn,ur)}}else if(o.gn.isLocation(kn)){if(o.Nf.isAtomic(kn.aUnit)){const ur=An(kn.aUnit,kn.aUnit.elements[kn.aIndex]);return On(Gn,ur)}{const ur=jn(kn.aUnit,kn.aUnit.elements[kn.aIndex]);if(ur)return On(Gn,ur)}}return yn},props:Ht,description:"Assigns a color to every residue according to its name.",legend:(0,A.h)(Object.keys(Gn).map(kn=>[kn,Gn[kn]]).concat([["Unknown",yn]]))}}const Dr={name:"residue-name",label:"Residue Name",category:y.N.Residue,factory:fr,getParams:function Ot(ln){return kt},defaultValues:t.t.getDefaultValues(kt),isApplicable:ln=>!!ln.structure};var Pr=n(2434),or=n(8699),Nr=n(8382);const Ir=(0,e._j)({alphaHelix:16711808,threeTenHelix:10485888,piHelix:6291584,betaTurn:6324479,betaStrand:16762880,coil:16777215,bend:6740169,turn:45670,dna:11403518,rna:16580962,carbohydrate:10921722}),Or=(0,e.Q1)(8421504),To={saturation:t.t.Numeric(-1,{min:-6,max:6,step:.1}),lightness:t.t.Numeric(0,{min:-6,max:6,step:.1}),colors:t.t.MappedStatic("default",{default:t.t.EmptyGroup(),custom:t.t.Group(p(Ir))})};function ct(ln,Ht,Gn,ar){let kn=Pr.gG.create(0);if(ar&&o.Nf.isAtomic(Ht)){const ur=ar.get(Ht.invariantId);ur&&(kn=ur.type[ur.getIndex(Ht.residueIndex[Gn])])}if(Pr.gG.is(kn,2))return Pr.gG.is(kn,2048)?ln.threeTenHelix:Pr.gG.is(kn,32768)?ln.piHelix:ln.alphaHelix;if(Pr.gG.is(kn,4))return ln.betaStrand;if(Pr.gG.is(kn,8))return ln.bend;if(Pr.gG.is(kn,16))return ln.turn;{const ur=(0,Bt.Ju)(Ht,Gn);if(7===ur)return ln.dna;if(6===ur)return ln.rna;if(9===ur)return ln.carbohydrate;if(5===ur)return ln.coil}return Or}function dt(ln,Ht){const Gn=ln.structure&&or.v.get(ln.structure),ar=Gn?(0,Nr.vb)(Gn.id,Gn.version):-1,kn=(0,R.Ak)("default"===Ht.colors.name?Ir:Ht.colors.params,Ht.saturation,Ht.lightness);return{factory:dt,granularity:"group",preferSmoothing:!0,color:function ur(sr){return o.iZ.Location.is(sr)?ct(kn,sr.unit,sr.element,Gn?.value):o.gn.isLocation(sr)?ct(kn,sr.aUnit,sr.aUnit.elements[sr.aIndex],Gn?.value):Or},props:Ht,contextHash:ar,description:"Assigns a color based on the type of secondary structure and basic molecule type.",legend:(0,A.h)(Object.keys(kn).map(sr=>[sr,kn[sr]]).concat([["Other",Or]]))}}const Yt={name:"secondary-structure",label:"Secondary Structure",category:y.N.Residue,factory:dt,getParams:function un(ln){return To},defaultValues:t.t.getDefaultValues(To),isApplicable:ln=>!!ln.structure,ensureCustomProperties:{attach:(ln,Ht)=>Ht.structure?or.v.attach(ln,Ht.structure,void 0,!0):Promise.resolve(),detach:ln=>ln.structure&&or.v.ref(ln.structure,!1)}},cn=(0,e.Q1)(13421772),Rn={list:t.t.ColorList("turbo",{presetKind:"scale"})};function ir(ln,Ht){const{model:Gn}=ln;switch(ln.kind){case 0:return Gn.atomicHierarchy.residues.label_seq_id.value(Gn.atomicHierarchy.residueAtomSegments.index[Ht]);case 1:return Math.round((Gn.coarseHierarchy.spheres.seq_id_begin.value(Ht)+Gn.coarseHierarchy.spheres.seq_id_end.value(Ht))/2);case 2:return Math.round((Gn.coarseHierarchy.gaussians.seq_id_begin.value(Ht)+Gn.coarseHierarchy.gaussians.seq_id_end.value(Ht))/2)}}function Yn(ln,Ht){const{model:Gn}=ln;let ar="";switch(ln.kind){case 0:ar=Gn.atomicHierarchy.chains.label_entity_id.value(Gn.atomicHierarchy.chainAtomSegments.index[Ht]);break;case 1:ar=Gn.coarseHierarchy.spheres.entity_id.value(Ht);break;case 2:ar=Gn.coarseHierarchy.gaussians.entity_id.value(Ht)}if(""===ar)return 0;const kn=Gn.entities.getEntityIndex(ar);if(-1===kn)return 0;const ur=Gn.sequence.byEntityKey[kn];return void 0===ur?0:ur.sequence.length}const vr={name:"sequence-id",label:"Sequence Id",category:y.N.Residue,factory:function br(ln,Ht){const Gn=e.wC.create({listOrName:Ht.list.colors,minLabel:"Start",maxLabel:"End"});return{factory:br,granularity:"group",preferSmoothing:!0,color:kn=>{if(o.iZ.Location.is(kn)){const{unit:ur,element:sr}=kn,Jn=ir(ur,sr);if(Jn>0){const Br=Yn(ur,sr);if(Br)return Gn.setDomain(0,Br-1),Gn.color(Jn)}}else if(o.gn.isLocation(kn)){const{aUnit:ur,aIndex:sr}=kn,Jn=ir(ur,ur.elements[sr]);if(Jn>0){const Br=Yn(ur,ur.elements[sr]);if(Br)return Gn.setDomain(0,Br-1),Gn.color(Jn)}}return cn},props:Ht,description:"Gives every polymer residue a color based on its `seq_id` value.",legend:Gn?Gn.legend:void 0}},getParams:function er(ln){return Rn},defaultValues:t.t.getDefaultValues(Rn),isApplicable:ln=>!!ln.structure};var Hr=n(2476);const Mr=(0,e.Q1)(16777113),Sr={domain:t.t.Interval([0,100]),list:t.t.ColorList("red-white-blue",{presetKind:"scale"})};function Ro(ln,Ht){return o.Nf.isAtomic(ln)?ln.model.atomicConformation.B_iso_or_equiv.value(Ht):o.Nf.isSpheres(ln)?ln.model.coarseConformation.spheres.rmsf[Ht]:0}const po={name:"uncertainty",label:"Uncertainty/Disorder",category:y.N.Atom,factory:function ro(ln,Ht){const Gn=e.wC.create({reverse:!0,domain:Ht.domain,listOrName:Ht.list.colors});return{factory:ro,granularity:"group",preferSmoothing:!0,color:function ar(kn){return o.iZ.Location.is(kn)?Gn.color(Ro(kn.unit,kn.element)):o.gn.isLocation(kn)?Gn.color(Ro(kn.aUnit,kn.aUnit.elements[kn.aIndex])):Mr},props:Ht,description:"Assigns a color based on the uncertainty or disorder of an element's position, e.g. B-factor or RMSF, depending on the data availability and experimental technique.",legend:Gn?Gn.legend:void 0}},getParams:function Ur(ln){return Sr},defaultValues:t.t.getDefaultValues(Sr),isApplicable:ln=>!!ln.structure&&ln.structure.models.some(Ht=>Ht.atomicConformation.B_iso_or_equiv.isDefined||Ht.coarseHierarchy.isDefined)},so=(0,e.Q1)(15658734),Bo={style:t.t.MappedStatic("entity-id",{uniform:t.t.Group(M.vz),"chain-id":t.t.Group(m.t4),"entity-id":t.t.Group(Q),"entity-source":t.t.Group(Z),"molecule-type":t.t.Group(_t),"model-index":t.t.Group(Re),"structure-index":t.t.Group(Ne)}),carbonLightness:t.t.Numeric(.8,{min:-6,max:6,step:.1})},Pt={name:"illustrative",label:"Illustrative",category:y.N.Misc,factory:function We(ln,Ht){const{color:Gn,legend:ar}=function Wo(ln,Ht){switch(Ht.name){case"uniform":return(0,M.TA)(ln,Ht.params);case"chain-id":return(0,m.Zv)(ln,Ht.params);case"entity-id":return k(ln,Ht.params);case"entity-source":return le(ln,Ht.params);case"molecule-type":return ut(0,Ht.params);case"model-index":return we(ln,Ht.params);case"structure-index":return ne(ln,Ht.params);default:(0,$.dr)(Ht)}}(ln,Ht.style);function kn(sr,Jn){const Br=Gn(sr,!1);return"C"===Jn?e.Q1.lighten(Br,Ht.carbonLightness):Br}return{factory:We,granularity:"group",preferSmoothing:!0,color:function ur(sr){if(o.iZ.Location.is(sr)&&o.Nf.isAtomic(sr.unit)){const Jn=sr.unit.model.atomicHierarchy.atoms.type_symbol.value(sr.element);return kn(sr,Jn)}if(o.gn.isLocation(sr)&&o.Nf.isAtomic(sr.aUnit)){const Br=sr.aUnit.model.atomicHierarchy.atoms.type_symbol.value(sr.aUnit.elements[sr.aIndex]);return kn(sr,Br)}return so},props:Ht,description:"Assigns an illustrative color that gives every chain a color based on the chosen style but with lighter carbons (inspired by David Goodsell's Molecule of the Month style).",legend:ar}},getParams:function Go(ln){return t.t.clone(Bo)},defaultValues:t.t.getDefaultValues(Bo),isApplicable:ln=>!!ln.structure},Nn={list:t.t.ColorList("red-yellow-green",{presetKind:"scale"}),scale:t.t.Select("DGwif",[["DGwif","DG water-membrane"],["DGwoct","DG water-octanol"],["Oct-IF","DG difference"]])},dr={DGwif:0,DGwoct:1,"Oct-IF":2};function Ft(ln,Ht){return ln.model.atomicHierarchy.atoms.label_comp_id.value(Ht)}function Qt(ln,Ht){const Gn=ln.coarseElements.seq_id_begin.value(Ht);if(Gn===ln.coarseElements.seq_id_end.value(Ht))return ln.model.sequence.byEntityKey[ln.coarseElements.entityKey[Ht]].sequence.compId.value(Gn-1)}const pt={name:"hydrophobicity",label:"Hydrophobicity",category:y.N.Residue,factory:function ht(ln,Ht){const Gn=dr[Ht.scale];let ar=1/0,kn=-1/0;for(const Jn in Pr.Xk){const Br=Pr.Xk[Jn][Gn];ar=Math.min(ar,Br),kn=Math.max(kn,Br)}const ur=e.wC.create({listOrName:Ht.list.colors,domain:[kn,ar],minLabel:"Hydrophilic",maxLabel:"Hydrophobic"});return{factory:ht,granularity:"group",preferSmoothing:!0,color:function sr(Jn){let Br;return o.iZ.Location.is(Jn)?Br=o.Nf.isAtomic(Jn.unit)?Ft(Jn.unit,Jn.element):Qt(Jn.unit,Jn.element):o.gn.isLocation(Jn)&&(Br=o.Nf.isAtomic(Jn.aUnit)?Ft(Jn.aUnit,Jn.aUnit.elements[Jn.aIndex]):Qt(Jn.aUnit,Jn.aUnit.elements[Jn.aIndex])),ur.color(Br?function xr(ln,Ht){const Gn=Pr.Xk[ln];return void 0===Gn?0:Gn[Ht]}(Br,Gn):0)},props:Ht,description:'Assigns a color to every amino acid according to the "Experimentally determined hydrophobicity scale for proteins at membrane interfaces" by Wimely and White (doi:10.1038/nsb1096-842).',legend:ur?ur.legend:void 0}},getParams:function Kn(ln){return Nn},defaultValues:t.t.getDefaultValues(Nn),isApplicable:ln=>!!ln.structure},Xt=(0,e.Q1)(13421772),on={...(0,d.U)({type:"colors",colorList:"purples"})},Fe={name:"trajectory-index",label:"Trajectory Index",category:y.N.Chain,factory:function Tt(ln,Ht){var Gn,ar;let kn,ur;if(ln.structure){const{models:sr}=ln.structure.root;let Jn=0;for(const et of sr)Jn=Math.max(Jn,(null===(Gn=o.Kx.TrajectoryInfo.get(et))||void 0===Gn?void 0:Gn.size)||0);const Br=(0,d.S)(Jn,Ht);ur=Br.legend;const st=new Map;for(let et=0,at=sr.length;eto.iZ.Location.is(et)?st.get(o.Kx.TrajectoryInfo.get(et.unit.model).index):o.gn.isLocation(et)?st.get(o.Kx.TrajectoryInfo.get(et.aUnit.model).index):Xt}else kn=()=>Xt;return{factory:Tt,granularity:"instance",color:kn,props:Ht,description:"Gives every model (frame) a unique color based on the index in its trajectory.",legend:ur}},getParams:function En(ln){return t.t.clone(on)},defaultValues:t.t.getDefaultValues(on),isApplicable:ln=>!!ln.structure&&ln.structure.elementCount>0&&o.Kx.TrajectoryInfo.get(ln.structure.models[0]).size>1},He=(0,e.Q1)(13421772),ot={domain:t.t.Interval([0,1]),list:t.t.ColorList("purples",{presetKind:"scale"})};function St(ln,Ht){return o.Nf.isAtomic(ln)?ln.model.atomicConformation.occupancy.value(Ht):0}const mn={name:"occupancy",label:"Occupancy",category:y.N.Atom,factory:function vt(ln,Ht){const Gn=e.wC.create({reverse:!1,domain:Ht.domain,listOrName:Ht.list.colors});return{factory:vt,granularity:"group",preferSmoothing:!0,color:function ar(kn){return o.iZ.Location.is(kn)?Gn.color(St(kn.unit,kn.element)):o.gn.isLocation(kn)?Gn.color(St(kn.aUnit,kn.aUnit.elements[kn.aIndex])):He},props:Ht,description:"Assigns a color based on the occupancy of an atom.",legend:Gn?Gn.legend:void 0}},getParams:function rt(ln){return ot},defaultValues:t.t.getDefaultValues(ot),isApplicable:ln=>!!ln.structure&&ln.structure.models.some(Ht=>Ht.atomicConformation.occupancy.isDefined)};var zt=n(4369);const an="dark-2",Vn=(0,e.Q1)(13421772),rr={...(0,d.U)({type:"colors",colorList:an})},tr=1e4;function Tr(ln){return ln.map(Ht=>`${Ht+tr}`.padStart(5,"0")).join("")}function oo(ln){const Ht=(0,J.bL)(tr,0),Gn=parseInt(ln.substr(0,Ht)),ar=parseInt(ln.substr(Ht,Ht)),kn=parseInt(ln.substr(Ht+Ht,Ht));return zt.eB.create(Gn-tr,ar-tr,kn-tr)}function Gr(ln){return ln.map(Ht=>Ht+5).join("")}function Ao(ln){const Ht=new Map,Gn=new Set;for(let sr=0,Jn=ln.units.length;srHt.set(sr,Ht.size)),{min:oo(ar[0]),max:oo(ar[ar.length-1]),map:Ht}}const vo={name:"operator-hkl",label:"Operator HKL",category:y.N.Symmetry,factory:function yo(ln,Ht){let Gn,ar;if(ln.structure){const{min:kn,max:ur,map:sr}=Ao(ln.structure.root),Jn=[];sr.forEach((et,at)=>{const Et=et%sr.size,Nt=Gr(oo(at));void 0===Jn[Et]?Jn[Et]=Nt:Jn[Et]+=`, ${Nt}`});const Br={minLabel:Gr(kn),maxLabel:Gr(ur),valueLabel:et=>Jn[et]},st=(0,d.S)(sr.size,Ht,Br);ar=st.legend,Gn=et=>{let at;if(o.iZ.Location.is(et)){const Et=Tr(et.unit.conformation.operator.hkl);at=sr.get(Et)}else if(o.gn.isLocation(et)){const Et=Tr(et.aUnit.conformation.operator.hkl);at=sr.get(Et)}return void 0===at?Vn:st.color(at)}}else Gn=()=>Vn;return{factory:yo,granularity:"instance",color:Gn,props:Ht,description:"Assigns a color based on the operator HKL value of a transformed chain.",legend:ar}},getParams:function Vr(ln){const Ht=t.t.clone(rr);return ln.structure&&Ao(ln.structure.root).map.size>W.VI[an].list.length&&(Ht.palette.defaultValue.name="colors",Ht.palette.defaultValue.params={...Ht.palette.defaultValue.params,list:{kind:"interpolate",colors:(0,W.JA)(an).list}}),Ht},defaultValues:t.t.getDefaultValues(rr),isApplicable:ln=>!!ln.structure};var Kr=n(4366);const Do=(0,e.Q1)(16777113),So={domain:t.t.Interval([-1,1]),list:t.t.ColorList("red-white-blue",{presetKind:"scale"})};function Po(ln,Ht){var Gn;return null===(Gn=Kr.j.Provider.get(ln.model))||void 0===Gn?void 0:Gn.data.value(Ht)}const jr={name:"partial-charge",label:"Partial Charge",category:y.N.Atom,factory:function Yr(ln,Ht){const Gn=e.wC.create({domain:Ht.domain,listOrName:Ht.list.colors});return{factory:Yr,granularity:"group",preferSmoothing:!0,color:function ar(kn){if(o.iZ.Location.is(kn)){const ur=Po(kn.unit,kn.element);return void 0!==ur?Gn.color(ur):Do}if(o.gn.isLocation(kn)){const ur=Po(kn.aUnit,kn.aUnit.elements[kn.aIndex]);return void 0!==ur?Gn.color(ur):Do}return Do},props:Ht,description:"Assigns a color based on the partial charge of an atom.",legend:Gn?Gn.legend:void 0}},getParams:function ao(ln){return So},defaultValues:t.t.getDefaultValues(So),isApplicable:ln=>!!ln.structure&&ln.structure.models.some(Ht=>void 0!==Kr.j.Provider.get(Ht))},Eo=(0,e.Q1)(16448250),ei={...(0,d.U)({type:"colors",colorList:"many-distinct"})},Fi={name:"atom-id",label:"Atom Id",category:y.N.Atom,factory:function Jo(ln,Ht){let Gn,ar;if(ln.structure){const kn=o.iZ.Location.create(ln.structure.root),ur=function ci(ln){const Ht=new Map;for(const Gn of ln.models){const{label_atom_id:ar}=Gn.atomicHierarchy.atoms;for(let kn=0,ur=ar.rowCount;knsr[st]});ar=Br.legend,Gn=st=>{let et;if(o.iZ.Location.is(st)){const at=o.StructureProperties.atom.label_atom_id(st);et=ur.get(at)}else if(o.gn.isLocation(st)){kn.unit=st.aUnit,kn.element=st.aUnit.elements[st.aIndex];const at=o.StructureProperties.atom.label_atom_id(kn);et=ur.get(at)}return void 0===et?Eo:Br.color(et)}}else Gn=()=>Eo;return{factory:Jo,granularity:"group",preferSmoothing:!0,color:Gn,props:Ht,description:"Gives every atom a color based on its `label_atom_id` value.",legend:ar}},getParams:function Yo(ln){return t.t.clone(ei)},defaultValues:t.t.getDefaultValues(ei),isApplicable:ln=>!!ln.structure};var hi=n(2745),No=n(3162);const mi={colorList:t.t.ColorList({kind:"interpolate",colors:[[hi.s.white,0],[hi.s.red,.25],[hi.s.white,.5],[hi.s.blue,.75],[hi.s.white,1]]},{offsets:!0,isEssential:!0})},ti={name:"volume-value",label:"Volume Value",category:y.N.Misc,factory:function Oi(ln,Ht){const Gn=e.wC.create({domain:[0,1],listOrName:Ht.colorList.colors}),ar=[];for(let ur=0;ur<256;++ur)ar[ur]=Gn.color(ur/255);return{factory:Oi,granularity:"direct",props:Ht,description:"Assign color based on the given value of a volume cell.",legend:Gn.legend,palette:{colors:ar,filter:"linear"}}},getParams:function qi(ln){return mi},defaultValues:t.t.getDefaultValues(mi),isApplicable:ln=>!!ln.volume&&!No.f.Segmentation.get(ln.volume)},es=(0,e.Q1)(13421772),Pi={...(0,d.U)({type:"colors",colorList:"many-distinct"})},Wi={name:"volume-segment",label:"Volume Segment",category:y.N.Misc,factory:function gi(ln,Ht){let Gn,ar;const kn=ln.volume&&No.f.Segmentation.get(ln.volume);if(kn){const ur=kn.segments.size,sr=Array.from(kn.segments.keys()),Jn=(0,d.S)(ur,Ht);ar=Jn.legend,Gn=Br=>No.f.Segment.isLocation(Br)?Jn.color(sr.indexOf(Br.segment)):es}else Gn=()=>es;return{factory:gi,granularity:"instance",color:Gn,props:Ht,description:"Gives every volume segment a unique color.",legend:ar}},getParams:function ni(ln){return t.t.clone(Pi)},defaultValues:t.t.getDefaultValues(Pi),isApplicable:ln=>!!ln.volume&&!!No.f.Segmentation.get(ln.volume)};var Ri=n(6853),Qi=n(1888),Hn=n(127);const co={volume:t.t.ValueRef(ln=>ln.state.data.selectQ(Gn=>Gn.root.subtree().filter(ar=>{var kn;return Ri.f.is(null===(kn=ar.obj)||void 0===kn?void 0:kn.data)})).map(Gn=>{var ar,kn;return[Gn.transform.ref,null!==(kn=null===(ar=Gn.obj)||void 0===ar?void 0:ar.label)&&void 0!==kn?kn:""]}),(ln,Ht)=>Ht(ln)),coloring:t.t.MappedStatic("absolute-value",{"absolute-value":t.t.Group({domain:t.t.MappedStatic("auto",{custom:t.t.Interval([-1,1]),auto:t.t.Group({symmetric:t.t.Boolean(!1,{description:"If true the automatic range is determined as [-|max|, |max|]."})})}),list:t.t.ColorList("red-white-blue",{presetKind:"scale"})}),"relative-value":t.t.Group({domain:t.t.MappedStatic("auto",{custom:t.t.Interval([-1,1]),auto:t.t.Group({symmetric:t.t.Boolean(!1,{description:"If true the automatic range is determined as [-|max|, |max|]."})})}),list:t.t.ColorList("red-white-blue",{presetKind:"scale"})})}),defaultColor:t.t.Color((0,e.Q1)(13421772)),normalOffset:t.t.Numeric(0,{min:0,max:20,step:.1},{description:"Offset vertex position along its normal by given amount."})},lr={name:"external-volume",label:"External Volume",category:y.N.Misc,factory:function zr(ln,Ht){let Gn,ar;try{Gn=Ht.volume.getValue()}catch{}if(Gn){const kn=Ht.coloring.params,{stats:ur}=Gn.grid,sr="custom"===kn.domain.name?kn.domain.params:[ur.min,ur.max],Jn="relative-value"===Ht.coloring.name;if("auto"===kn.domain.name&&Jn&&(sr[0]=(sr[0]-ur.mean)/ur.sigma,sr[1]=(sr[1]-ur.mean)/ur.sigma),"auto"===Ht.coloring.params.domain.name&&Ht.coloring.params.domain.params.symmetric){const vn=Math.max(Math.abs(sr[0]),Math.abs(sr[1]));sr[0]=-vn,sr[1]=vn}const Br=e.wC.create({domain:sr,listOrName:kn.list.colors}),st=Ri.x.getGridToCartesianTransform(Gn.grid);zt.$I.invert(st,st);const et=(0,zt.eB)(),{dimensions:at,get:Et}=Gn.grid.cells.space,Nt=Gn.grid.cells.data,[qt,Cn,Un]=at;ar=vn=>{if(!(0,Qi.ZC)(vn))return Ht.defaultColor;zt.eB.copy(et,vn.position),Ht.normalOffset>0&&zt.eB.scaleAndAdd(et,et,vn.normal,Ht.normalOffset),zt.eB.transformMat4(et,et,st);const nr=Math.floor(et[0]),pr=Math.floor(et[1]),Rr=Math.floor(et[2]);if(nr<0||nr>=qt||pr<0||pr>=Cn||Rr<0||Rr>=Un)return Ht.defaultColor;const mo=et[0]-nr,Uo=et[1]-pr,qo=et[2]-Rr,ri=Math.min(nr+1,qt-1),fo=Math.min(pr+1,Cn-1),Lo=Math.min(Rr+1,Un-1);let Ni=Et(Nt,nr,pr,Rr),rs=Et(Nt,ri,pr,Rr),Gi=Et(Nt,nr,fo,Rr),_o=Et(Nt,ri,fo,Rr);const hr=(0,Hn.Cc)((0,Hn.Cc)(Ni,rs,mo),(0,Hn.Cc)(Gi,_o,mo),Uo);Ni=Et(Nt,nr,pr,Lo),rs=Et(Nt,ri,pr,Lo),Gi=Et(Nt,nr,fo,Lo),_o=Et(Nt,ri,fo,Lo);const Wr=(0,Hn.Cc)((0,Hn.Cc)(Ni,rs,mo),(0,Hn.Cc)(Gi,_o,mo),Uo);let no=(0,Hn.Cc)(hr,Wr,qo);return Jn&&(no=(no-ur.mean)/ur.sigma),Br.color(no)}}else ar=()=>Ht.defaultColor;return{factory:zr,granularity:"vertex",preferSmoothing:!0,color:ar,props:Ht,description:"Assigns a color based on volume value at a given vertex."}},getParams:()=>co,defaultValues:t.t.getDefaultValues(co),isApplicable:ln=>!0},Qr={mainchain:t.t.MappedStatic("molecule-type",{uniform:t.t.Group(M.vz),"chain-id":t.t.Group(m.t4),"entity-id":t.t.Group(Q),"entity-source":t.t.Group(Z),"molecule-type":t.t.Group(_t),"model-index":t.t.Group(Re),"structure-index":t.t.Group(Ne),"secondary-structure":t.t.Group(To)}),sidechain:t.t.MappedStatic("residue-name",{uniform:t.t.Group(M.vz),"residue-name":t.t.Group(kt),"element-symbol":t.t.Group(Le)})},bi={name:"cartoon",label:"Cartoon",category:y.N.Misc,factory:function Li(ln,Ht){var Gn,ar;const kn=function Ti(ln,Ht){switch(Ht.name){case"uniform":return(0,M.TA)(ln,Ht.params);case"chain-id":return(0,m.Zv)(ln,Ht.params);case"entity-id":return k(ln,Ht.params);case"entity-source":return le(ln,Ht.params);case"molecule-type":return ut(0,Ht.params);case"model-index":return we(ln,Ht.params);case"structure-index":return ne(ln,Ht.params);case"secondary-structure":return dt(ln,Ht.params);default:(0,$.dr)(Ht)}}(ln,Ht.mainchain),ur=function Bi(ln,Ht){switch(Ht.name){case"uniform":return(0,M.TA)(ln,Ht.params);case"residue-name":return fr(0,Ht.params);case"element-symbol":return Je(ln,Ht.params);default:(0,$.dr)(Ht)}}(ln,Ht.sidechain);let Jn=kn.legend;return"table-legend"===(null===(Gn=kn.legend)||void 0===Gn?void 0:Gn.kind)&&"table-legend"===(null===(ar=ur.legend)||void 0===ar?void 0:ar.kind)&&(Jn={kind:"table-legend",table:[...kn.legend.table,...ur.legend.table]}),{factory:Li,granularity:"group",preferSmoothing:!1,color:function sr(Br,st){return st?kn.color(Br,!1):ur.color(Br,!1)},props:Ht,description:"Uses separate themes for coloring mainchain and sidechain visuals.",legend:Jn}},getParams:function vi(ln){return t.t.clone(Qr)},defaultValues:t.t.getDefaultValues(Qr),isApplicable:ln=>!!ln.structure};var Vi;!function(ln){ln.Category=y.N,ln.PaletteScale=16777215,ln.EmptyFactory=()=>ln.Empty;const Ht=(0,e.Q1)(13421772);ln.Empty={factory:ln.EmptyFactory,granularity:"uniform",color:()=>Ht,props:{}},ln.areEqual=function Gn(kn,ur){return kn.contextHash===ur.contextHash&&kn.factory===ur.factory&&(0,I.bD)(kn.props,ur.props)},ln.EmptyProvider={name:"",label:"",category:"",factory:ln.EmptyFactory,getParams:()=>({}),defaultValues:{},isApplicable:()=>!0},ln.createRegistry=function ar(){return new l.D(ln.BuiltIn,ln.EmptyProvider)},ln.BuiltIn={"atom-id":Fi,"carbohydrate-symbol":_,cartoon:bi,"chain-id":m.oy,"element-index":D,"element-symbol":en,"entity-id":H,"entity-source":Ae,hydrophobicity:pt,illustrative:Pt,"model-index":Oe,"molecule-type":Kt,occupancy:mn,"operator-hkl":vo,"operator-name":E.PO,"partial-charge":jr,"polymer-id":nn,"polymer-index":Vt,"residue-name":Dr,"secondary-structure":Yt,"sequence-id":vr,"shape-group":Hr.AX,"structure-index":be,"trajectory-index":Fe,uncertainty:po,"unit-index":se,uniform:M.Wr,"volume-segment":Wi,"volume-value":ti,"external-volume":lr}}(Vi||(Vi={}))},9983:(tn,Ue,n)=>{"use strict";n.d(Ue,{N:()=>e});const e={Atom:"Atom Property",Chain:"Chain Property",Residue:"Residue Property",Symmetry:"Symmetry",Validation:"Validation",Misc:"Miscellaneous"}},8742:(tn,Ue,n)=>{"use strict";n.d(Ue,{Zv:()=>l,oy:()=>m,t4:()=>v});var e=n(9136),o=n(190),r=n(8277),t=n(7809),A=n(9983);const c=(0,o.Q1)(16448250),i="Gives every chain a color based on its `asym_id` value.",v={asymId:r.t.Select("auth",r.t.arrayToOptions(["auth","label"])),...(0,t.U)({type:"colors",colorList:"many-distinct"})};function _(u,d){const s=function b(u,d){switch(u.kind){case 0:return"auth"===d?e.StructureProperties.chain.auth_asym_id:e.StructureProperties.chain.label_asym_id;case 1:case 2:return e.StructureProperties.coarse.asym_id}}(u.unit,d)(u);return u.structure.root.models.length>1?M(u.unit.model,s):s}function M(u,d){return`${d}|${(e.Kx.Index.get(u).value||0)+1}`}function l(u,d){let s,C;if(u.structure){const h=e.iZ.Location.create(u.structure.root),a=function I(u,d){const s=new Map;for(const C of u.models){const h=e.Kx.AsymIdOffset.get(C).value,a=("auth"===d?h?.auth:h?.label)||0;let S=0;C.properties.structAsymMap.forEach(({auth_id:D},R)=>{const f="auth"===d?D:R,p=u.models.length>1?M(C,f):f;s.has(p)||(s.set(p,S+a),++S)})}return s}(u.structure.root,d.asymId),S=Array.from(a.keys()),R=(0,t.S)(a.size,d,{valueLabel:f=>S[f]});C=R.legend,s=f=>{let p;if(e.iZ.Location.is(f)){const E=_(f,d.asymId);p=a.get(E)}else if(e.gn.isLocation(f)){h.unit=f.aUnit,h.element=f.aUnit.elements[f.aIndex];const E=_(h,d.asymId);p=a.get(E)}return void 0===p?c:R.color(p)}}else s=()=>c;return{factory:l,granularity:"group",color:s,props:d,description:i,legend:C}}const m={name:"chain-id",label:"Chain Id",category:A.N.Chain,factory:l,getParams:function O(u){var d;const s=r.t.clone(v);return!(null===(d=u.structure)||void 0===d)&&d.models.some(C=>C.coarseHierarchy.isDefined)&&(s.asymId.defaultValue="label"),s},defaultValues:r.t.getDefaultValues(v),isApplicable:u=>!!u.structure}},8103:(tn,Ue,n)=>{"use strict";n.d(Ue,{PO:()=>M,ci:()=>_,qg:()=>v});var e=n(190),o=n(9136),r=n(8277),t=n(7809),A=n(9983);const c=(0,e.Q1)(13421772),i="Assigns a color based on the operator name of a transformed chain.",v={...(0,t.U)({type:"colors",colorList:"many-distinct"})};function _(I,l){let m,u;if(I.structure){const d=function b(I){const l=new Map;for(let m=0,u=I.units.length;ms[a]});u=h.legend,m=a=>{let S;return o.iZ.Location.is(a)?S=d.get(a.unit.conformation.operator.name):o.gn.isLocation(a)&&(S=d.get(a.aUnit.conformation.operator.name)),void 0===S?c:h.color(S)}}else m=()=>c;return{factory:_,granularity:"instance",color:m,props:l,description:i,legend:u}}const M={name:"operator-name",label:"Operator Name",category:A.N.Symmetry,factory:_,getParams:function O(I){return r.t.clone(v)},defaultValues:r.t.getDefaultValues(v),isApplicable:I=>!!I.structure}},2476:(tn,Ue,n)=>{"use strict";n.d(Ue,{AX:()=>O,h2:()=>v});var e=n(190),o=n(3558),r=n(8277),t=n(9983);const A=(0,e.Q1)(13421772),y="Assigns colors as defined by the shape object.",c={};function v(b,_){return{factory:v,granularity:"groupInstance",color:M=>o.$.isLocation(M)?M.shape.getColor(M.group,M.instance):A,props:_,description:y}}const O={name:"shape-group",label:"Shape Group",category:t.N.Misc,factory:v,getParams:function i(b){return c},defaultValues:r.t.getDefaultValues(c),isApplicable:b=>!!b.shape}},9347:(tn,Ue,n)=>{"use strict";n.d(Ue,{TA:()=>O,Wr:()=>b,vz:()=>i});var e=n(190),o=n(8277),r=n(2293),t=n(9909),A=n(9983);const y=(0,e.Q1)(13421772),c="Gives everything the same, uniform color.",i={value:o.t.Color(y),saturation:o.t.Numeric(0,{min:-6,max:6,step:.1}),lightness:o.t.Numeric(0,{min:-6,max:6,step:.1})};function O(_,M){let I=(0,t.NT)(M.value,y);return I=e.Q1.saturate(I,M.saturation),I=e.Q1.lighten(I,M.lightness),{factory:O,granularity:"uniform",color:()=>I,props:M,description:c,legend:(0,r.h)([["uniform",I]])}}const b={name:"uniform",label:"Uniform",category:A.N.Misc,factory:O,getParams:function v(_){return i},defaultValues:o.t.getDefaultValues(i),isApplicable:_=>!0}},3488:(tn,Ue,n)=>{"use strict";n.d(Ue,{a:()=>t});var e=n(3246),o=n(9136),r=n(9498);function t(A,y){return{kind:A,layers:y}}!function(A){function c(I){return 0===I.layers.length}A.Empty={kind:"empty-loci",layers:[]},A.areEqual=function y(I,l){if(0===I.layers.length&&0===l.layers.length)return!0;if(I.layers.length!==l.layers.length)return!1;for(let m=0,u=I.layers.length;m{d.push({loci:s,value:C})}),{kind:"element-loci",layers:d}}return I},A.filter=function O(I,l){if(c(I))return I;if("element-loci"===I.kind){const{structure:m}=I.layers[0].loci,u=[];for(const d of I.layers){let{loci:s,value:C}=d;const h=o.iZ.Loci.remap(s,l);s=o.iZ.Loci.remap(h,m),o.iZ.Loci.isEmpty(s)||u.push({loci:s,value:C})}return{kind:"element-loci",layers:u}}return I},A.ofScript=function b(I,l){const m=[];for(let u=0,d=I.length;u{"use strict";n.d(Ue,{BB:()=>s,CR:()=>m,W8:()=>S,YQ:()=>v,d_:()=>M,k0:()=>D,k7:()=>I,kd:()=>R});var e=n(9136),o=n(3246),r=n(3543),t=n(7785),A=n(4369),y=n(4490),c=n(6853);const i={granularity:"element",condensed:!1,reverse:!1,countsOnly:!1,hidePrefix:!1,htmlStyling:!0};function v(f,p={}){var E;switch(f.kind){case"structure-loci":return f.structure.models.map(k=>k.entry).filter(k=>!!k).join(", ");case"element-loci":return M(e.iZ.Stats.ofLoci(f),p);case"bond-loci":const T=f.bonds[0];return T?m(T,p):"";case"shape-loci":return f.shape.name;case"group-loci":const L=f.groups[0];return L?f.shape.getLabel(r.CD.start(L.ids),L.instance):"";case"every-loci":return"Everything";case"empty-loci":return"Nothing";case"data-loci":return f.getLabel();case"volume-loci":return f.volume.label||"Volume";case"isosurface-loci":return[`${f.volume.label||"Volume"}`,`Isosurface at ${c.f.IsoValue.toString(f.isoValue)}`].join(" | ");case"cell-loci":const w=r.CD.size(f.indices),Q=r.CD.start(f.indices),G=c.f.IsoValue.absolute(f.volume.grid.cells.data[Q]),V=c.f.IsoValue.toRelative(G,f.volume.grid.stats),U=[`${f.volume.label||"Volume"}`,1===w?`Cell #${Q}`:`${w} Cells`];return 1===w&&U.push(`${c.f.IsoValue.toString(G)} (${c.f.IsoValue.toString(V)})`),U.join(" | ");case"segment-loci":const N=null===(E=c.f.Segmentation.get(f.volume))||void 0===E?void 0:E.labels;if(N&&1===f.segments.length){const k=N[f.segments[0]];if(k)return k}return[`${f.volume.label||"Volume"}`,1===f.segments.length?`Segment ${f.segments[0]}`:`${f.segments.length} Segments`].join(" | ")}}function O(f,p){return 1===f?`1 ${p}`:`${f} ${p}s`}function b(f,p,E,T,L,w){return`${s(p,{granularity:E,hidePrefix:T,reverse:L,condensed:w})} [+ ${O(f-1,`other ${(0,t.ZH)(E)}`)}]`}function M(f,p={}){const E={...i,...p},T=function l(f,p=!1,E=!1,T=!1,L=!1){const{structureCount:w,chainCount:Q,residueCount:G,conformationCount:V,elementCount:U}=f;if(!p&&1===U&&0===G&&0===Q)return s(f.firstElementLoc,{hidePrefix:E,condensed:T,granularity:"element",reverse:L});if(!p&&0===U&&1===G&&0===Q)return s(f.firstResidueLoc,{hidePrefix:E,condensed:T,granularity:"residue",reverse:L});if(p||0!==U||0!==G||1!==Q){if(p){const N=[];return w>0&&N.push(O(w,"Structure")),Q>0&&N.push(O(Q,"Chain")),G>0&&N.push(O(G,"Residue")),V>0&&N.push(O(V,"Conformation")),U>0&&N.push(O(U,"Element")),N.join(" + ")}{const N=[];return w>0&&N.push(1===w?s(f.firstStructureLoc,{hidePrefix:E,condensed:T,granularity:"structure",reverse:L}):b(w,f.firstStructureLoc,"structure",E,L,T)),Q>0&&(N.push(1===Q?s(f.firstChainLoc,{condensed:T,granularity:"chain",hidePrefix:E,reverse:L}):b(Q,f.firstChainLoc,"chain",E,L,T)),E=!0),G>0&&(N.push(1===G?s(f.firstResidueLoc,{condensed:T,granularity:"residue",hidePrefix:E,reverse:L}):b(G,f.firstResidueLoc,"residue",E,L,T)),E=!0),V>0&&(N.push(1===V?s(f.firstConformationLoc,{condensed:T,granularity:"conformation",hidePrefix:E,reverse:L}):b(V,f.firstConformationLoc,"conformation",E,L,T)),E=!0),U>0&&N.push(1===U?s(f.firstElementLoc,{condensed:T,granularity:"element",hidePrefix:E,reverse:L}):b(U,f.firstElementLoc,"element",E,L,T)),N.join(" + ")}}{const{unit:N}=f.firstChainLoc,k=e.Nf.isAtomic(N)&&1===function _(f){const{elements:p,model:E}=f,{chainAtomSegments:T,residueAtomSegments:L}=E.atomicHierarchy;return L.index[T.offsets[T.index[p[p.length-1]]+1]-1]-L.index[T.offsets[T.index[p[0]]]]+1}(N)||e.Nf.Traits.is(N.traits,e.Nf.Trait.MultiChain)?"residue":"chain";return s(f.firstChainLoc,{hidePrefix:E,condensed:T,granularity:k,reverse:L})}}(f,E.countsOnly,E.hidePrefix,E.condensed,E.reverse);return E.htmlStyling?T:(0,t.Kq)(T)}function I(f,p={}){const E=e.iZ.Stats.create();for(const T of f)e.iZ.Stats.add(E,E,e.iZ.Stats.ofLoci(T));return M(E,p)}function m(f,p={}){return u({loci:[e.iZ.Loci(f.aStructure,[{unit:f.aUnit,indices:r.CD.ofSingleton(f.aIndex)}]),e.iZ.Loci(f.bStructure,[{unit:f.bUnit,indices:r.CD.ofSingleton(f.bIndex)}])]},p)}function u(f,p={}){const E={...i,...p},T=function d(f,p){const{granularity:E,hidePrefix:T,reverse:L,condensed:w}=p;let Q=!0;for(const G of f.loci)if(!e.iZ.Loci.is(G)||1!==e.iZ.Loci.size(G)){Q=!1;break}if(Q){const V=f.loci.map(N=>{const{unit:k,indices:H}=N.elements[0];return e.iZ.Location.create(N.structure,k,k.elements[r.CD.start(H)])}).map(N=>C(N,E,T,L||w));if(w)return V.map(N=>N[0].replace(/\[.*\]/g,"").trim()).filter(N=>!!N).join(" \u2014 ");let U=0;for(let N=0,k=Math.min(...V.map(H=>H.length))-1;N0){const N=[V[0].join(" | ")];for(let k=1,H=V.length;k!!$).join(" | "));return N.join(" \u2014 ")}return V.map(N=>N.filter(k=>!!k).join(" | ")).filter(N=>!!N).join("
")}return f.loci.map(V=>v(V,p)).filter(V=>!!V).join(w?" \u2014 ":"
")}(f,E);return E.htmlStyling?T:(0,t.Kq)(T)}function s(f,p={}){var E,T;const L={...i,...p},w=C(f,L.granularity,L.hidePrefix,L.reverse||L.condensed),Q=L.condensed?null!==(T=null===(E=w[0])||void 0===E?void 0:E.replace(/\[.*\]/g,"").trim())&&void 0!==T?T:"":w.filter(G=>!!G).join(" | ");return L.htmlStyling?Q:(0,t.Kq)(Q)}function C(f,p="element",E=!1,T=!1){const L=[];if(!E){let w=f.unit.model.entry;w.length>30&&(w=w.substr(0,27)+"\u2026"),L.push(`${w}`),"structure"!==p&&(L.push(`Model ${f.unit.model.modelNum}`),L.push(`Instance ${f.unit.conformation.operator.name}`))}return e.Nf.isAtomic(f.unit)?L.push(...function h(f,p,E=!1){const T=e.iZ.Location.residueIndex(f),L=e.StructureProperties.chain.label_asym_id(f),w=e.StructureProperties.chain.auth_asym_id(f),Q=0===f.unit.model.atomicHierarchy.residues.label_seq_id.valueKind(T),G=e.StructureProperties.residue.label_seq_id(f),V=e.StructureProperties.residue.auth_seq_id(f),U=e.StructureProperties.residue.pdbx_PDB_ins_code(f),N=e.StructureProperties.atom.label_comp_id(f),k=e.StructureProperties.atom.label_atom_id(f),H=e.StructureProperties.atom.label_alt_id(f),$=e.StructureProperties.atom.occupancy(f),J=e.StructureProperties.residue.microheterogeneityCompIds(f),W="residue"===p&&J.length>1?`(${J.join("|")})`:N,te=[];switch(p){case"element":te.push(`${k}${H?`%${H}`:""}`);case"conformation":"conformation"===p&&H&&te.push(`Conformation ${H}`);case"residue":const de=G!==V&&Q?G:V;te.push(`${W} ${de}${de!==V?` [auth ${V}]`:""}${U||""}`);case"chain":L===w?te.push(`${L}`):"chain"===p&&e.Nf.Traits.is(f.unit.traits,e.Nf.Trait.MultiChain)?te.push(`[auth ${w}]`):te.push(`${L} [auth ${w}]`)}return te.length>0&&1!==$&&!E&&(te[0]=`${te[0]} [occupancy ${Math.round(100*$)/100}]`),te.reverse()}(f,p,T)):e.Nf.isCoarse(f.unit)?L.push(...function a(f,p){const E=e.StructureProperties.coarse.asym_id(f),T=e.StructureProperties.coarse.seq_id_begin(f),L=e.StructureProperties.coarse.seq_id_end(f),w=[];switch(p){case"element":case"conformation":case"residue":if(T===L){const Q=e.StructureProperties.coarse.entityKey(f),V=f.unit.model.sequence.byEntityKey[Q].sequence.compId.value(T-1);w.push(`${V} ${T}`)}else w.push(`${T}-${L}`);case"chain":w.push(`${E}`)}return w.reverse()}(f,p)):L.push("Unknown"),T?L.reverse():L}function S(f,p={}){const E={...i,measureOnly:!1,unitLabel:"\u212b",...p},[T,L]=f.loci.map(G=>o.QN.getCenter(G)),w=`${A.eB.distance(T,L).toFixed(2)} ${E.unitLabel}`;if(E.measureOnly)return w;const Q=u(f,E);return E.condensed?`${w} | ${Q}`:`Distance ${w}
${Q}`}function D(f,p={}){const E={...i,measureOnly:!1,...p},[T,L,w]=f.loci.map(N=>o.QN.getCenter(N)),Q=A.eB.sub((0,A.eB)(),T,L),G=A.eB.sub((0,A.eB)(),w,L),V=`${(0,y.H)(A.eB.angle(Q,G)).toFixed(2)}\xb0`;if(E.measureOnly)return V;const U=u(f,E);return E.condensed?`${V} | ${U}`:`Angle ${V}
${U}`}function R(f,p={}){const E={...i,measureOnly:!1,...p},[T,L,w,Q]=f.loci.map(U=>o.QN.getCenter(U)),G=`${(0,y.H)(A.eB.dihedralAngle(T,L,w,Q)).toFixed(2)}\xb0`;if(E.measureOnly)return G;const V=u(f,E);return E.condensed?`${G} | ${V}`:`Dihedral ${G}
${V}`}},261:(tn,Ue,n)=>{"use strict";n.d(Ue,{l:()=>A});var e=n(3246),o=n(190),r=n(9136),t=n(9498);function A(y,c){return{kind:y,layers:c}}!function(y){function i(l){return 0===l.layers.length}y.Empty={kind:"empty-loci",layers:[]},y.areEqual=function c(l,m){if(0===l.layers.length&&0===m.layers.length)return!0;if(l.layers.length!==m.layers.length)return!1;for(let u=0,d=l.layers.length;u{const a=-1===h,S=a?(0,o.Q1)(0):h;s.push({loci:C,color:S,clear:a})}),{kind:"element-loci",layers:s}}return l},y.filter=function b(l,m){if(i(l))return l;if("element-loci"===l.kind){const{structure:u}=l.layers[0].loci,d=[];for(const s of l.layers){let{loci:C,color:h,clear:a}=s;const S=r.iZ.Loci.remap(C,m);C=r.iZ.Loci.remap(S,u),r.iZ.Loci.isEmpty(C)||d.push({loci:C,color:h,clear:a})}return{kind:"element-loci",layers:d}}return l},y.ofScript=function _(l,m){const u=[];for(let d=0,s=l.length;d{"use strict";n.d(Ue,{F:()=>h});var e=n(5013),o=n(1930),r=n(9136),t=n(2008),A=n(8277);const i={scale:A.t.Numeric(1,{min:.1,max:5,step:.1})};function O(a,S){return r.Nf.isAtomic(a)?(0,t.sO)(a.model.atomicHierarchy.atoms.type_symbol.value(S)):r.Nf.isSpheres(a)?a.model.coarseConformation.spheres.radius[S]:0}const _={name:"physical",label:"Physical",category:"",factory:function b(a,S){const D=void 0===S.scale?1:S.scale;return{factory:b,granularity:"group",size:function R(f){let p;return p=r.iZ.Location.is(f)?D*O(f.unit,f.element):r.gn.isLocation(f)?D*Math.min(O(f.aUnit,f.aUnit.elements[f.aIndex]),O(f.bUnit,f.bUnit.elements[f.bIndex])):1*D,p},props:S,description:"Assigns a physical size, i.e. vdW radius for atoms or given radius for coarse spheres."}},getParams:function v(a){return i},defaultValues:A.t.getDefaultValues(i),isApplicable:a=>!!a.structure};var M=n(9909),I=n(350);const m={bfactorFactor:A.t.Numeric(.1,{min:0,max:1,step:.01}),rmsfFactor:A.t.Numeric(.05,{min:0,max:1,step:.01}),baseSize:A.t.Numeric(.2,{min:0,max:2,step:.1})};function d(a,S,D){return r.Nf.isAtomic(a)?a.model.atomicConformation.B_iso_or_equiv.value(S)*D.bfactorFactor:r.Nf.isSpheres(a)?a.model.coarseConformation.spheres.rmsf[S]*D.rmsfFactor:0}const C={name:"uncertainty",label:"Uncertainty/Disorder",category:"",factory:function s(a,S){return{factory:s,granularity:"group",size:function D(R){let f=S.baseSize;return r.iZ.Location.is(R)?f+=d(R.unit,R.element,S):r.gn.isLocation(R)&&(f+=d(R.aUnit,R.aUnit.elements[R.aIndex],S)),f},props:S,description:"Assigns a size reflecting the uncertainty or disorder of an element's position, e.g. B-factor or RMSF, depending on the data availability and experimental technique."}},getParams:function u(a){return m},defaultValues:A.t.getDefaultValues(m),isApplicable:a=>!!a.structure&&a.structure.models.some(S=>S.atomicConformation.B_iso_or_equiv.isDefined||S.coarseHierarchy.isDefined)};var h,a;(a=h||(h={})).EmptyFactory=()=>a.Empty,a.Empty={factory:a.EmptyFactory,granularity:"uniform",size:()=>1,props:{}},a.areEqual=function S(R,f){return R.contextHash===f.contextHash&&R.factory===f.factory&&(0,M.bD)(R.props,f.props)},a.EmptyProvider={name:"",label:"",category:"",factory:a.EmptyFactory,getParams:()=>({}),defaultValues:{},isApplicable:()=>!0},a.createRegistry=function D(){return new o.D(a.BuiltIn,a.EmptyProvider)},a.BuiltIn={physical:_,"shape-group":I.Ev,uncertainty:C,uniform:e.kk}},350:(tn,Ue,n)=>{"use strict";n.d(Ue,{$d:()=>c,Ev:()=>i});var e=n(3558),o=n(8277);const r=1,t="Assigns sizes as defined by the shape object.",A={};function c(v,O){return{factory:c,granularity:"groupInstance",size:b=>e.$.isLocation(b)?b.shape.getSize(b.group,b.instance):r,props:O,description:t}}const i={name:"shape-group",label:"Shape Group",category:"",factory:c,getParams:function y(v){return A},defaultValues:o.t.getDefaultValues(A),isApplicable:v=>!!v.shape}},5013:(tn,Ue,n)=>{"use strict";n.d(Ue,{kk:()=>y,ru:()=>A});var e=n(8277);const o="Gives everything the same, uniform size.",r={value:e.t.Numeric(1,{min:0,max:20,step:.1})};function A(c,i){const v=i.value;return{factory:A,granularity:"uniform",size:()=>v,props:i,description:o}}const y={name:"uniform",label:"Uniform",category:"",factory:A,getParams:function t(c){return r},defaultValues:e.t.getDefaultValues(r),isApplicable:c=>!0}},9213:(tn,Ue,n)=>{"use strict";n.d(Ue,{l:()=>y});var e=n(3246),o=n(9136),r=n(9498),t=n(6765),A=n(9359);function y(c,i){return{kind:c,layers:i}}!function(c){function v(m){return 0===m.layers.length}c.Empty={kind:"empty-loci",layers:[]},c.areEqual=function i(m,u){if(0===m.layers.length&&0===u.layers.length)return!0;if(m.layers.length!==u.layers.length)return!1;for(let d=0,s=m.layers.length;d{h.push({loci:a,material:S,clear:!1})}),{kind:"element-loci",layers:h}}return m},c.filter=function _(m,u){if(v(m))return m;if("element-loci"===m.kind){const{structure:d}=m.layers[0].loci,s=[];for(const C of m.layers){let{loci:h,material:a,clear:S}=C;const D=o.iZ.Loci.remap(h,u);h=o.iZ.Loci.remap(D,d),o.iZ.Loci.isEmpty(h)||s.push({loci:h,material:a,clear:S})}return{kind:"element-loci",layers:s}}return m},c.ofScript=function M(m,u){const d=[];for(let s=0,C=m.length;s{"use strict";n.d(Ue,{D:()=>i,S:()=>y});var y,e=n(467),o=n(274),r=n(2832),t=n(8277),A=n(9359);function c(v){return v.map(O=>[O.name,O.provider.label,O.provider.category])}!function(v){function b(){return{color:o.J.Empty,size:r.F.Empty}}function M(){return(M=(0,e.A)(function*(l,m,u,d){var s,C;yield null===(s=m.colorThemeRegistry.get(d.colorTheme.name).ensureCustomProperties)||void 0===s?void 0:s.attach(l,u),yield null===(C=m.sizeThemeRegistry.get(d.sizeTheme.name).ensureCustomProperties)||void 0===C?void 0:C.attach(l,u)})).apply(this,arguments)}v.create=function O(l,m,u,d){d=d||b();const s=u.colorTheme,C=u.sizeTheme;return d.color=l.colorThemeRegistry.create(s.name,m,s.params),d.size=l.sizeThemeRegistry.create(C.name,m,C.params),d},v.createEmpty=b,v.ensureDependencies=function _(l,m,u,d){return M.apply(this,arguments)},v.releaseDependencies=function I(l,m,u){var d,s;null===(d=l.colorThemeRegistry.get(u.colorTheme.name).ensureCustomProperties)||void 0===d||d.detach(m),null===(s=l.sizeThemeRegistry.get(u.sizeTheme.name).ensureCustomProperties)||void 0===s||s.detach(m)}}(y||(y={}));class i{get default(){return this._list[0]}get list(){return this._list}get types(){return c(this._list)}constructor(O,b){this.emptyProvider=b,this._list=[],this._map=new Map,this._name=new Map,(0,A.IF)(O,(_,M)=>{if(_.name!==M)throw new Error(`Fix build in themes to have matching names. ${_.name} ${M}`);this.add(_)})}sort(){this._list.sort((O,b)=>O.provider.category===b.provider.category?O.provider.labelb.provider.label?1:0:O.provider.category_.name===O.name),1);const b=this._map.get(O.name);b&&(this._map.delete(O.name),this._name.delete(b))}has(O){return this._map.has(O.name)}get(O){return this._map.get(O)||this.emptyProvider}getName(O){if(!this._name.has(O))throw new Error(`'${O.label}' is not a registered theme provider.`);return this._name.get(O)}create(O,b,_={}){const M=this.get(O);return M.factory(b,{...t.t.getDefaultValues(M.getParams(b)),..._})}getApplicableList(O){return this._list.filter(b=>b.provider.isApplicable(O))}getApplicableTypes(O){return c(this.getApplicableList(O))}clear(){this._list.length=0,this._map.clear(),this._name.clear()}}},1965:(tn,Ue,n)=>{"use strict";n.d(Ue,{x:()=>t});var e=n(3246),o=n(9136),r=n(9498);function t(A,y){return{kind:A,layers:y}}!function(A){function c(I){return 0===I.layers.length}A.Empty={kind:"empty-loci",layers:[]},A.areEqual=function y(I,l){if(0===I.layers.length&&0===l.layers.length)return!0;if(I.layers.length!==l.layers.length)return!1;for(let m=0,u=I.layers.length;m{d.push({loci:s,value:C})}),{kind:"element-loci",layers:d}}return I},A.filter=function O(I,l){if(c(I))return I;if("element-loci"===I.kind){const{structure:m}=I.layers[0].loci,u=[];for(const d of I.layers){let{loci:s,value:C}=d;const h=o.iZ.Loci.remap(s,l);s=o.iZ.Loci.remap(h,m),o.iZ.Loci.isEmpty(s)||u.push({loci:s,value:C})}return{kind:"element-loci",layers:u}}return I},A.ofScript=function b(I,l){const m=[];for(let u=0,d=I.length;u{"use strict";function A(p){let E=-1/0;for(let T=0,L=p.length;TE&&(E=p[T]);return E}function y(p){let E=1/0;for(let T=0,L=p.length;TT&&(T=p[L]);return[E,T]}function i(p,E=1,T=0){const L=p.length;let w=0;for(let Q=T;Q=0||(p.push(E),0))}function l(p,E){const T=p.indexOf(E);if(T<0)return!1;for(let L=T,w=p.length-1;Ld,u$:()=>u,qW:()=>s,$6:()=>C,_M:()=>A,VR:()=>v,GP:()=>y,em:()=>c,P6:()=>M,mO:()=>_,C2:()=>O,Z2:()=>I,K3:()=>l,jJ:()=>i,WE:()=>b}),n(9359)},1861:(tn,Ue,n)=>{"use strict";n.d(Ue,{E:()=>i,V:()=>c});var c,e=n(467),o=n(3559),r=n(8382),t=n(3188),A=n(4824),y=n(8484);!function(v){function O(u,d){return{kind:"url",id:o.k.create22(),url:u,...d}}v.Url=O,v.File=function b(u){return{kind:"file",id:o.k.create22(),name:u.name,file:u}},v.isUrl=function _(u){return"url"===u?.kind},v.isFile=function M(u){return"file"===u?.kind},v.Wrapper=function I(u,d,s){return{data:u,dispose:()=>{s.release(d)}}},v.getUrl=function l(u){return"string"==typeof u?u:u.url},v.getUrlAsset=function m(u,d,s){return"string"==typeof d?u.tryFindUrl(d,s)||O(d,{body:s}):d}}(c||(c={}));class i{constructor(){this._assets=new Map}get assets(){return(0,r.ZR)(this._assets.values())}tryFindUrl(O,b){const _=this.assets.values();for(;;){const M=_.next();if(M.done)return;const I=M.value.asset;if(c.isUrl(I)&&I.url===O&&(I.body||"")===(b||""))return I}}set(O,b){this._assets.set(O.id,{asset:O,file:b,refCount:0})}get(O){return this._assets.get(O.id)}delete(O){return this._assets.delete(O.id)}has(O){return this._assets.has(O.id)}resolve(O,b,_=!0){var M=this;return c.isUrl(O)?A.YZ.create(`Download ${O.title||O.url}`,function(){var I=(0,e.A)(function*(l){if(M._assets.has(O.id)){const d=M._assets.get(O.id);return d.refCount++,c.Wrapper(yield(0,t.dH)(d.file,b).runInContext(l),O,M)}if(!_)return c.Wrapper(yield(0,t.hW)({...O,type:b}).runInContext(l),O,M);const m=yield(0,t.hW)({...O,type:"binary"}).runInContext(l),u=new y.em([m],"raw-data");return M._assets.set(O.id,{asset:O,file:u,refCount:1}),c.Wrapper(yield(0,t.dH)(u,b).runInContext(l),O,M)});return function(l){return I.apply(this,arguments)}}()):A.YZ.create(`Read ${O.name}`,function(){var I=(0,e.A)(function*(l){if(M._assets.has(O.id)){const m=M._assets.get(O.id);return m.refCount++,c.Wrapper(yield(0,t.dH)(m.file,b).runInContext(l),O,M)}if(!(O.file instanceof y.em))throw new Error(`Cannot resolve file asset '${O.name}' (${O.id})`);return _&&M._assets.set(O.id,{asset:O,file:O.file,refCount:1}),c.Wrapper(yield(0,t.dH)(O.file,b).runInContext(l),O,M)});return function(l){return I.apply(this,arguments)}}())}release(O){const b=this._assets.get(O.id);b&&(b.refCount--,b.refCount<=0&&this._assets.delete(O.id))}clear(){this._assets.clear()}dispose(){this.clear()}}},4123:(tn,Ue,n)=>{"use strict";n.d(Ue,{O:()=>r});var e=n(4080),o=n(7785);function r(i,v="",O=""){return r.create(i,v,O)}!function(i){function I(d){return d.triggers.map(m.format).join(" or ")}function m(d,s){return m.create(d,s)}var d;i.create=function v(d,s="",C=""){return{triggers:d,action:s,description:C}},i.isBinding=function O(d){return!!d&&Array.isArray(d.triggers)&&"string"==typeof d.action},i.Empty={triggers:[],action:"",description:""},i.isEmpty=function b(d){return 0===d.triggers.length||d.triggers.every(s=>void 0===s.buttons&&void 0===s.modifiers&&!s.code)},i.match=function _(d,s,C){return d.triggers.some(h=>m.match(h,s,C))},i.matchKey=function M(d,s,C,h){return d.triggers.some(a=>m.matchKey(a,s,C,h))},i.formatTriggers=I,i.format=function l(d,s=""){const C=d.description||(0,o.Mk)(s);return(0,o.GW)(C,{triggers:""+I(d)+""})},i.Trigger=m,i.TriggerKey=function u(d,s){return m.create(void 0,s,d)},(d=m=i.Trigger||(i.Trigger={})).create=function s(S,D,R){return{buttons:S,modifiers:D,code:R}},d.Empty={},d.match=function C(S,D,R){const{buttons:f,modifiers:p}=S;return void 0!==f&&(f===D||e.qt.has(f,D))&&(!p||e.Fs.areEqual(p,R))},d.matchKey=function h(S,D,R,f){const{modifiers:p,code:E}=S;return void 0!==E&&(E===D||1===E.length&&4===D.length&&D.startsWith("Key")&&!!f&&1===f.length&&f.toUpperCase()===E.toUpperCase())&&(!p||e.Fs.areEqual(p,R))},d.format=function a(S){const D=[],R=function A(i,v){const O=[];return void 0!==i||v?0===i?O.push("mouse hover"):void 0!==i&&(t.has(i,t.Flag.Primary)&&O.push("left mouse button"),t.has(i,t.Flag.Secondary)&&O.push("right mouse button"),t.has(i,t.Flag.Auxilary)&&O.push("wheel/middle mouse button"),t.has(i,t.Flag.Forth)&&O.push("three fingers")):O.push("any mouse button"),O.join(" + ")}(S.buttons,S.code);R&&D.push(R);const f=function c(i){return i?.startsWith("Key")&&(i=i.substring(3)),i&&(0,o.Hh)(i).toLowerCase()}(S.code);f&&D.push(f);const p=function y(i,v){const O=[];return i?(i.alt&&O.push("alt key"),i.control&&O.push("control key"),i.meta&&O.push("meta/command key"),i.shift&&O.push("shift key"),v&&0===O.length&&O.push("no key")):v&&O.push("any key"),O.join(" + ")}(S.modifiers);return p&&D.push(p),D.join(" + ")}}(r||(r={}));const t=e.qt},9455:(tn,Ue,n)=>{"use strict";var e,o;n.d(Ue,{N:()=>e}),(o=e||(e={})).create=function r(y){return y},o.has=function t(y,c){return!!(y&c)},o.hasAll=function A(y,c){return!!c&&(y&c)===c}},9390:(tn,Ue,n)=>{"use strict";n.d(Ue,{B:()=>A});var e=n(4369),o=n(4490),r=n(8277),t=n(7785);function A(){}!function(y){y.Type={none:0,plane:1,sphere:2,cube:3,cylinder:4,infiniteCone:5},y.Params={variant:r.t.Select("pixel",r.t.arrayToOptions(["instance","pixel"])),objects:r.t.ObjectList({type:r.t.Select("plane",r.t.objectToOptions(y.Type,I=>(0,t.Mk)(I))),invert:r.t.Boolean(!1),position:r.t.Vec3((0,e.eB)()),rotation:r.t.Group({axis:r.t.Vec3(e.eB.create(1,0,0)),angle:r.t.Numeric(0,{min:-180,max:180,step:1},{description:"Angle in Degrees"})},{isExpanded:!0}),scale:r.t.Vec3(e.eB.create(1,1,1))},I=>(0,t.Mk)(I.type))};const i=(0,e.k)(),v=(0,e.k)(),O=(0,e.eB)(),b=(0,e.eB)();y.getClip=function _(I,l){const m=I.objects.length,{type:u,invert:d,position:s,rotation:C,scale:h}=l?.objects||function c(I){return{count:0,type:new Array(I).fill(1),invert:new Array(I).fill(!1),position:new Array(3*I).fill(0),rotation:new Array(4*I).fill(0),scale:new Array(3*I).fill(1)}}(m);for(let a=0;a{"use strict";n.d(Ue,{Ak:()=>c,Q1:()=>r,Q5:()=>t,_j:()=>y,qM:()=>i});var e=n(7551),o=n(9083);function r(v){return v}function t(v,O,b,_){return{label:v,description:b,list:_,type:O}}function y(v){return v}function c(v,O,b){const _={};for(const M in v){let I=v[M];I=r.saturate(I,O),I=r.darken(I,-b),_[M]=I}return _}function i(v){return v}!function(v){function d(W,te,de){return W<<16|te<<8|de}function s(W,te,de){return 255*W<<16|255*te<<8|255*de}function p(W){const te=W>>16&255;return te!==(W>>8&255)||te!==(255&W)}v.toStyle=function O(W){return`rgb(${W>>16&255}, ${W>>8&255}, ${255&W})`},v.toHexStyle=function b(W){return"#"+("000000"+W.toString(16)).slice(-6)},v.toHexString=function _(W){return"0x"+("000000"+W.toString(16)).slice(-6)},v.toRgbString=function M(W){return`RGB: ${v.toRgb(W).join(", ")}`},v.toRgb=function I(W){return[W>>16&255,W>>8&255,255&W]},v.toRgbNormalized=function l(W){return[(W>>16&255)/255,(W>>8&255)/255,(255&W)/255]},v.fromHexStyle=function m(W){return parseInt(W.replace("#","0x"))},v.fromHexString=function u(W){return parseInt(W)},v.fromRgb=d,v.fromNormalizedRgb=s,v.fromArray=function C(W,te){return d(W[te],W[te+1],W[te+2])},v.fromNormalizedArray=function h(W,te){return s(W[te],W[te+1],W[te+2])},v.toArray=function a(W,te,de){return te[de]=W>>16&255,te[de+1]=W>>8&255,te[de+2]=255&W,te},v.toArrayNormalized=function S(W,te,de){return te[de]=(W>>16&255)/255,te[de+1]=(W>>8&255)/255,te[de+2]=(255&W)/255,te},v.toVec3=function D(W,te){return W[0]=te>>16&255,W[1]=te>>8&255,W[2]=255&te,W},v.toVec3Normalized=function R(W,te){return W[0]=(te>>16&255)/255,W[1]=(te>>8&255)/255,W[2]=(255&te)/255,W},v.interpolate=function f(W,te,de){const ye=W>>16&255,j=W>>8&255,Z=255&W;return ye+((te>>16&255)-ye)*de<<16|j+((te>>8&255)-j)*de<<8|Z+((255&te)-Z)*de},v.hasHue=p;const E=[0,0,0];function T(W,te){return p(W)?(e.G.fromColor(E,W),e.G.toColor(e.G.saturate(E,E,te))):W}v.saturate=T,v.desaturate=function L(W,te){return T(W,-te)};const w=[0,0,0];function Q(W,te){return o.E.fromColor(w,W),o.E.toColor(o.E.darken(w,w,te))}function V(W){return W<=.03928?W/12.92:Math.pow((W+.055)/1.055,2.4)}function U(W){return.2126*V((W>>16&255)/255)+.7152*V((W>>8&255)/255)+.0722*V((255&W)/255)}function k(W){return W<.04045?.0773993808*W:Math.pow(.9478672986*W+.0521327014,2.4)}function $(W){return W<.0031308?12.92*W:1.055*Math.pow(W,.41666)-.055}v.darken=Q,v.lighten=function G(W,te){return Q(W,-te)},v.luminance=U,v.contrast=function N(W,te){const de=U(W),ye=U(te);return de>ye?(de+.05)/(ye+.05):(ye+.05)/(de+.05)},v.sRGBToLinear=function H(W){return s(k((W>>16&255)/255),k((W>>8&255)/255),k((255&W)/255))},v.linearToSRGB=function J(W){return s($((W>>16&255)/255),$((W>>8&255)/255),$((255&W)/255))}}(r||(r={}))},190:(tn,Ue,n)=>{"use strict";n.d(Ue,{Q1:()=>e.Q1,_j:()=>e._j,wC:()=>o.w});var e=n(3057),o=n(6412)},1907:(tn,Ue,n)=>{"use strict";n.d(Ue,{CL:()=>A,JA:()=>i,Qx:()=>y,VI:()=>r,cG:()=>c});var e=n(3057),o=n(7785);const r={"orange-red":(0,e.Q5)("Orange-Red","sequential","Orange-Red, sequential color scheme from ColorBrewer 2.0",[16775148,16705736,16635038,16628612,16551257,15689032,14102559,11730944,8323072]),"purple-blue":(0,e.Q5)("Purple-Blue","sequential","Purple-Blue, sequential color scheme from ColorBrewer 2.0",[16775163,15525874,13685222,10927579,7645647,3576e3,356528,285325,145496]),"blue-purple":(0,e.Q5)("Blue-Purple","sequential","Blue-Purple, sequential color scheme from ColorBrewer 2.0",[16252157,14740724,12571622,10403034,9213638,9202609,8929693,8458108,5046347]),oranges:(0,e.Q5)("Oranges","sequential","",[16774635,16705230,16634018,16625259,16616764,15821075,14239745,10892803,8333060]),"blue-green":(0,e.Q5)("Blue-Green","sequential","",[16252157,15070713,13429990,10082505,6734500,4304502,2329413,27948,17435]),"yellow-orange-brown":(0,e.Q5)("Yellow-Orange-Brown","sequential","",[16777189,16775100,16704401,16696399,16685353,15495188,13388802,10040324,6694150]),"yellow-green":(0,e.Q5)("Yellow-Green","sequential","",[16777189,16252089,14282915,11394446,7915129,4303709,2327619,26679,17705]),reds:(0,e.Q5)("Reds","sequential","",[16774640,16703698,16563105,16552562,16476746,15678252,13309981,10817301,6750221]),"red-purple":(0,e.Q5)("Red-Purple","sequential","",[16775155,16638173,16565696,16424885,16214177,14496919,11403646,7995767,4784234]),greens:(0,e.Q5)("Greens","sequential","",[16252149,15070688,13101504,10607003,7652470,4303709,2329413,27948,17435]),"yellow-green-blue":(0,e.Q5)("Yellow-Green-Blue","sequential","",[16777177,15595697,13101492,8375739,4306628,1937856,2252456,2438292,531800]),purples:(0,e.Q5)("Purples","sequential","",[16579581,15724021,14342891,12369372,10394312,8420794,6967715,5515151,4128893]),"green-blue":(0,e.Q5)("Green-Blue","sequential","",[16252144,14742491,13429701,11066805,8113348,5157843,2854078,551084,540801]),greys:(0,e.Q5)("Greys","sequential","",[16777215,15790320,14277081,12434877,9868950,7566195,5395026,2434341,0]),"yellow-orange-red":(0,e.Q5)("Yellow-Orange-Red","sequential","",[16777164,16772512,16701814,16691788,16616764,16535082,14883356,12386342,8388646]),"purple-red":(0,e.Q5)("Purple-Red","sequential","",[16250105,15196655,13941210,13210823,14640560,15149450,13505110,9961539,6750239]),blues:(0,e.Q5)("Blues","sequential","",[16251903,14609399,13032431,10406625,7057110,4362950,2191797,545180,536683]),"purple-blue-green":(0,e.Q5)("Purple-Blue-Green","sequential","",[16775163,15524592,13685222,10927579,6793679,3576e3,164234,93273,83510]),spectral:(0,e.Q5)("Spectral","diverging","",[10355010,13975119,16018755,16625249,16703627,16777151,15136152,11263396,6734501,3311805,6180770]),"red-yellow-green":(0,e.Q5)("Red-Yellow-Green","diverging","",[10813478,14102567,16018755,16625249,16703627,16777151,14282635,10934634,6733155,1742928,26679]),"red-blue":(0,e.Q5)("Red-Blue","diverging","",[6750239,11671595,14049357,16033154,16636871,16250871,13755888,9618910,4428739,2188972,340065]),"pink-yellow-green":(0,e.Q5)("Pink-Yellow-Green","diverging","",[9306450,12917629,14579630,15840986,16638191,16250871,15136208,12116358,8371265,5083681,2581529]),"purple-green":(0,e.Q5)("Purple-Green","diverging","",[4194379,7744131,10055851,12756431,15193320,16250871,14282963,10935200,5942881,1800247,17435]),"red-yellow-blue":(0,e.Q5)("Red-Yellow-Blue","diverging","Red-Yellow-Blue, diverging color scheme from ColorBrewer 2.0",[10813478,14102567,16018755,16625249,16703632,16777151,14742520,11262441,7646673,4552116,3225237]),"brown-white-green":(0,e.Q5)("Brown-White-Green","diverging","",[5517317,9195786,12550445,14664317,16181443,16119285,13101797,8441281,3512207,91742,15408]),"red-grey":(0,e.Q5)("Red-Grey","diverging","",[6750239,11671595,14049357,16033154,16636871,16777215,14737632,12237498,8882055,5066061,1710618]),"orange-purple":(0,e.Q5)("Orange-Purple","diverging","",[8338184,11753478,14713364,16627811,16703670,16250871,14211819,11709394,8418220,5515144,2949195]),"set-2":(0,e.Q5)("Set-2","qualitative","",[6734501,16551266,9281739,15174339,10934356,16767279,15058068,11776947]),accent:(0,e.Q5)("Accent","qualitative","",[8374655,12496596,16629894,16777113,3697840,15729279,12540695,6710886]),"set-1":(0,e.Q5)("Set-1","qualitative","",[14948892,3636920,5091146,9981603,16744192,16777011,10901032,16220607,10066329]),"set-3":(0,e.Q5)("Set-3","qualitative","",[9294791,16777139,12499674,16482418,8434131,16626786,11787881,16567781,14277081,12353725,13429701,16772463]),"dark-2":(0,e.Q5)("Dark-2","qualitative","",[1810039,14245634,7696563,15149450,6727198,15117058,10909213,6710886]),paired:(0,e.Q5)("Paired","qualitative","",[10931939,2062516,11722634,3383340,16489113,14883356,16629615,16744192,13284054,6962586,16777113,11622696]),"pastel-2":(0,e.Q5)("Pastel-2","qualitative","",[11789005,16633260,13358568,16042724,15136201,16773806,15852236,13421772]),"pastel-1":(0,e.Q5)("Pastel-1","qualitative","",[16495790,11783651,13429701,14601188,16701862,16777164,15063229,16636652,15921906]),"many-distinct":(0,e.Q5)("Many-Distinct","qualitative","",[1810039,14245634,7696563,15149450,6727198,15117058,10909213,6710886,14948892,3636920,5091146,9981603,16744192,16777011,10901032,16220607,10066329,6734501,16551266,9281739,15174339,10934356,16767279,15058068,11776947]),magma:(0,e.Q5)("Magma","sequential","Perceptually uniform shades of black-red-white",[4329332,4853881,5378684,5903742,6363263,6888576,7413633,7938689,8463745,8988801,9513600,10038655,10563454,11088508,11613562,12138360,12728949,13254258,13714030,14239338,14699366,15094114,15489119,15753309,16017499,16216411,16350045,16483424,16551523,16619368,16621934,16689780,16692091,16694402,16696969,16633746,16636058,16638371,16575148,16577461,16514239]),inferno:(0,e.Q5)("Inferno","sequential","Perceptually uniform shades of black-red-yellow",[4721514,5246316,5771373,6296430,6821486,7346542,7871597,8396651,8921450,9446504,9971557,10496610,10956127,11481435,12006486,12466258,12926285,13386056,13780802,14241085,14570295,14965297,15229227,15558693,15757342,15956248,16154897,16288267,16421638,16489734,16492043,16494612,16496926,16368426,16305463,16111429,15982678,15853928,15856253,16119953,16580260]),plasma:(0,e.Q5)("Plasma","sequential","Perceptually uniform shades of blue-red-yellow",[1771148,2426257,3081365,3671193,4195228,4784799,5308834,5833124,6357158,6815911,7340200,7864744,8324007,8783782,9309348,9769377,10164126,10624154,11018902,11413393,11808141,12137352,12466307,12795519,13124730,13453685,13717361,14046573,14309992,14573668,14837344,15035483,15299159,15497299,15695438,15893834,16091974,16224833,16357693,16425017,16557877,16625457,16627245,16629289,16631334,16567845,16438820,16310052,16115494,15921190,15726625]),viridis:(0,e.Q5)("Viridis","sequential","Perceptually uniform shades of blue-green-yellow",[4524123,4656994,4658793,4726127,4727668,4663929,4599933,4535937,4406404,4276870,4081800,3952010,3822475,3627148,3497356,3302029,3172237,3042446,2912654,2782862,2652814,2523022,2393229,2328973,2198924,2069132,2004874,2005897,2007175,2139525,2337154,2666111,3060348,3520376,4045684,4570991,5227369,5883748,6605661,7392854,8180303,8967495,9819967,10672695,11525166,12443174,13295646,14148121,15000344,15852828,16639780]),cividis:(0,e.Q5)("Cividis","sequential","Perceptually uniform shades of blue-green-yellow, should look effectively identical to colorblind and non-colorblind users",[11367,12400,537456,1455727,2046574,2571629,3031404,3425388,3754092,4148075,4476779,4805227,5133932,5396844,5725549,5988462,6317166,6580079,6843249,7171698,7434867,7697781,7960951,8289656,8618104,8881272,9209976,9538679,9867127,10195830,10524533,10853235,11181938,11510640,11839343,12168045,12497002,12891240,13219941,13548642,13943134,14271834,14666326,14995025,15389516,15718470,16112703,16507190,16639799]),twilight:(0,e.Q5)("Twilight","sequential","Perceptually uniform shades of white-blue-black-red-white, cyclic",[14670305,14211037,13554648,12766675,11847630,10993866,10139847,9351365,8628419,8036290,7509952,7048895,6718653,6519739,6386105,6252470,6184114,6181293,6112935,6044831,5976470,5777291,5447293,5052270,4592479,4067665,3674181,3281211,3150646,3543352,4067644,4657728,5379141,6166345,6953549,7741007,8463184,9120336,9777743,10304079,10830671,11291984,11687762,12083541,12348505,12613471,12878439,13077872,13211771,13411209,13545111,13809830,14074293,14338756,14537169,14735067,14801121]),turbo:(0,e.Q5)("Turbo","sequential","Improved (smooth) rainbow colormap for visualization",[4866485,4872413,4354034,3770361,3120629,2667241,2475736,2611140,3073454,3928216,5109892,6487408,8126047,9829201,11531332,13167162,14605618,15780908,16693543,16753699,16748063,16741916,16146200,15026195,13644558,12198408,10818563,9833728]),rainbow:(0,e.Q5)("Rainbow","sequential","",[3367393,3516485,16383744,15501073,12526114]),"red-white-blue":(0,e.Q5)("Red-White-Blue","diverging","",[12526114,16777215,3367393])},A=Object.keys(r).map(v=>[v,r[v].label,(0,o.ZH)(r[v].type)]),y=A.filter(v=>"diverging"===r[v[0]].type||"sequential"===r[v[0]].type),c=A.filter(v=>"qualitative"===r[v[0]].type);function i(v){return v in r?r[v]:(console.warn(`unknown color list named '${v}'`),r["red-yellow-blue"])}},2745:(tn,Ue,n)=>{"use strict";n.d(Ue,{s:()=>o});const o=(0,n(3057)._j)({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflower:6591981,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,laserlemon:16777044,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrod:16448210,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,maroon2:8323072,maroon3:11546720,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,purple2:8323199,purple3:10494192,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});!function(){const t=new Map;Object.keys(o).forEach(A=>{t.set(o[A],A)})}()},7809:(tn,Ue,n)=>{"use strict";n.d(Ue,{S:()=>S,U:()=>C});var e=n(2293),o=n(8277),r=n(9083),t=n(7551),A=n(9359),y=n(9909),c=n(2745);const i={hue:o.t.Interval([1,360],{min:0,max:360,step:1}),chroma:o.t.Interval([40,70],{min:0,max:100,step:1}),luminance:o.t.Interval([15,85],{min:0,max:100,step:1}),sort:o.t.Select("contrast",o.t.arrayToOptions(["none","contrast"]),{description:"no sorting leaves colors approximately ordered by hue"}),clusteringStepCount:o.t.Numeric(50,{min:10,max:200,step:1},{isHidden:!0}),minSampleCount:o.t.Numeric(800,{min:100,max:5e3,step:100},{isHidden:!0}),sampleCountFactor:o.t.Numeric(5,{min:1,max:100,step:1},{isHidden:!0})},v=2,O=[0,0,0],b=[0,0,0];function _(D,R){return r.E.toHcl(O,D),r.E.fromColor(b,r.E.toColor(D)),O[0]>=R.hue[0]&&O[0]<=R.hue[1]&&O[1]>=R.chroma[0]&&O[1]<=R.chroma[1]&&O[2]>=R.luminance[0]&&O[2]<=R.luminance[1]&&b[0]>=D[0]-v&&b[0]<=D[0]+v&&b[1]>=D[1]-v&&b[1]<=D[1]+v&&b[2]>=D[2]-v&&b[2]<=D[2]+v}function l(D,R){let f=1/0,p=0;for(let E=0;E`${D+1}`,minLabel:"Start",maxLabel:"End"};function S(D,R,f={}){var p;let E,T;if("colors"===R.palette.name&&"interpolate"===R.palette.params.list.kind){const{list:L}=R.palette.params,w=[0,D-1],{minLabel:Q,maxLabel:G}={...a,...f};let V=L.colors;0===V.length&&(V=(0,u.JA)(s.colorList).list);const U=d.w.create({listOrName:V,domain:w,minLabel:Q,maxLabel:G});T=U.legend,E=U.color}else{let L;"colors"===R.palette.name?(L=R.palette.params.list.colors.map(V=>Array.isArray(V)?V[0]:V),0===L.length&&(L=(0,u.JA)("dark-2").list.map(V=>Array.isArray(V)?V[0]:V))):(D=Math.min(D,R.palette.params.maxCount),L=function m(D,R={}){const f={...o.t.getDefaultValues(i),...R};if(D<=0)return[];const p=function I(D,R){const f=new Map,p=Math.ceil(Math.cbrt(D)),E=(0,t.G)(),T=Math.max((R.hue[1]-R.hue[0])/p,1),L=Math.max((R.chroma[1]-R.chroma[0])/p,1),w=Math.max((R.luminance[1]-R.luminance[0])/p,1);for(let Q=R.hue[0]+T/2;Q<=R.hue[1];Q+=T)for(let G=R.chroma[0]+L/2;G<=R.chroma[1];G+=L)for(let V=R.luminance[0]+w/2;V<=R.luminance[1];V+=w){const U=r.E.fromHcl((0,r.E)(),t.G.set(E,Q,G,V));_(U,R)&&f.set(r.E.toColor(U),U)}return Array.from(f.values())}(Math.max(f.minSampleCount,D*f.sampleCountFactor),f);if(p.length=D));Q+=L);for(let Q=1;Q<=f.clusteringStepCount;++Q){const G=(0,A.Go)(T),V=(0,A.Go)(p);for(let N=0;N0;){const p=f[f.length-1];let E=0,T=Number.NEGATIVE_INFINITY;for(let L=0;LT&&(T=w,E=L)}f.push(R.splice(E,1)[0])}return f}(E):E).map(Q=>r.E.toColor(Q))}(D,R.palette.params));const w=null!==(p=f.valueLabel)&&void 0!==p?p:a.valueLabel,Q=L.length,G=[];for(let V=0;VL[V%Q]}return{color:E,legend:T}}},6412:(tn,Ue,n)=>{"use strict";n.d(Ue,{w:()=>i});var e=n(3057),o=n(1907),r=n(9909),t=n(2293),A=n(3543),y=n(127);const c={domain:[0,1],reverse:!1,listOrName:"red-yellow-blue",minLabel:"",maxLabel:""};var i;(i||(i={})).create=function O(b){const{domain:_,reverse:M,listOrName:I}={...c,...b},l="string"==typeof I?(0,o.JA)(I).list:I,m=M?l.slice().reverse():l,u=m.length-1;let d=0,s=0,C=0;function h(f,p){s=f,C=p,d=C-s||1}h(_[0],_[1]);const a=(0,r.NT)(b.minLabel,s.toString()),S=(0,r.NT)(b.maxLabel,C.toString());let D;if(m.every(f=>Array.isArray(f))){const f=[...m];f.sort((L,w)=>L[1]-w[1]);const p=f.map(L=>L[0]),E=A.SortedArray.ofSortedArray(f.map(L=>L[1])),T=p.length-1;D=L=>{const w=(0,y.qE)((L-s)/d,0,1),Q=A.SortedArray.findPredecessorIndex(E,w);if(0===Q)return p[s];if(Q>T)return p[T];const G=E[Q-1],U=(0,y.qE)((w-G)/(E[Q]-G),0,1);return e.Q1.interpolate(p[Q-1],p[Q],U)}}else D=f=>{const p=Math.min(m.length-1,Math.max(0,(f-s)/d*u)),E=Math.floor(p),T=m[E],L=m[Math.ceil(p)];return e.Q1.interpolate(T,L,p-E)};return{color:D,colorToArray:(f,p,E)=>{e.Q1.toArray(D(f),p,E)},normalizedColorToArray:(f,p,E)=>{e.Q1.toArrayNormalized(D(f),p,E)},setDomain:h,get legend(){return(0,t.A)(a,S,m)}}}},7551:(tn,Ue,n)=>{"use strict";n.d(Ue,{G:()=>r});var e=n(4490),o=n(9083);function r(){return r.zero()}!function(t){function A(){const a=[.1,0,0];return a[0]=0,a}t.zero=A,t.create=function y(a,S,D){const R=A();return R[0]=a,R[1]=S,R[2]=D,R},t.set=function c(a,S,D,R){return a[0]=S,a[1]=D,a[2]=R,a},t.hasHue=function i(a){return!isNaN(a[0])};const v=[0,0,0];t.fromColor=function O(a,S){return o.E.toHcl(a,o.E.fromColor(v,S))},t.fromLab=function b(a,S){return o.E.toHcl(a,S)};const _=[0,0,0];function I(a,S){let[D,R,f]=S;return isNaN(D)&&(D=0),D=(0,e.pu)(D),a[0]=f,a[1]=Math.cos(D)*R,a[2]=Math.sin(D)*R,a}function m(a,S,D){return a[0]=S[0],a[1]=Math.max(0,S[1]+h*D),a[2]=S[2],a}t.toColor=function M(a){return o.E.toColor(I(_,a))},t.toLab=I,t.copy=function l(a,S){return a[0]=S[0],a[1]=S[1],a[2]=S[2],a},t.saturate=m,t.desaturate=function u(a,S,D){return m(a,S,-D)};const d=[0,0,0];function s(a,S,D){return I(d,S),o.E.toHcl(a,o.E.darken(d,d,D))}t.darken=s,t.lighten=function C(a,S,D){return s(a,S,-D)};const h=18}(r||(r={}))},9083:(tn,Ue,n)=>{"use strict";n.d(Ue,{E:()=>A});var e=n(3057),o=n(7551),r=n(4490),t=n(127);function A(){return A.zero()}!function(y){function c(){const V=[.1,0,0];return V[0]=0,V}function I(V,U){const[N,k,H]=U,$=Math.sqrt(k*k+H*H);let J=((0,r.H)(Math.atan2(H,k))+360)%360;return 0===Math.round(1e4*$)&&(J=Number.NaN),V[0]=J,V[1]=$,V[2]=N,V}function m(V,U,N){return V[0]=U[0]-h*N,V[1]=U[1],V[2]=U[2],V}y.zero=c,y.create=function i(V,U,N){const k=c();return k[0]=V,k[1]=U,k[2]=N,k},y.set=function v(V,U,N,k){return V[0]=U,V[1]=N,V[2]=k,V},y.distance=function O(V,U){const N=U[0]-V[0],k=U[1]-V[1],H=U[2]-V[2];return Math.sqrt(N*N+k*k+H*H)},y.fromColor=function b(V,U){const[N,k,H]=e.Q1.toRgb(U),[$,J,W]=function G(V,U,N){return[Q((.4124564*(V=w(V))+.3575761*(U=w(U))+.1804375*(N=w(N)))/a),Q((.2126729*V+.7151522*U+.072175*N)/S),Q((.0193339*V+.119192*U+.9503041*N)/D)]}(N,k,H),te=116*J-16;return V[0]=te<0?0:te,V[1]=500*($-J),V[2]=200*(J-W),V},y.fromHcl=function _(V,U){return o.G.toLab(V,U)},y.toColor=function M(V){let U=(V[0]+16)/116,N=isNaN(V[1])?U:U+V[1]/500,k=isNaN(V[2])?U:U-V[2]/200;U=S*L(U),N=a*L(N),k=D*L(k);const H=T(3.2404542*N-1.5371385*U-.4985314*k),$=T(-.969266*N+1.8760108*U+.041556*k),J=T(.0556434*N-.2040259*U+1.0572252*k);return e.Q1.fromRgb(Math.round((0,t.qE)(H,0,255)),Math.round((0,t.qE)($,0,255)),Math.round((0,t.qE)(J,0,255)))},y.toHcl=I,y.copy=function l(V,U){return V[0]=U[0],V[1]=U[1],V[2]=U[2],V},y.darken=m,y.lighten=function u(V,U,N){return m(V,U,-N)};const d=[0,0,0];function s(V,U,N){return I(d,U),o.G.toLab(V,o.G.saturate(d,d,N))}y.saturate=s,y.desaturate=function C(V,U,N){return s(V,U,-N)};const h=18,a=.95047,S=1,D=1.08883,R=.137931034,f=.206896552,p=.12841855,E=.008856452;function T(V){return 255*(V<=.00304?12.92*V:1.055*Math.pow(V,1/2.4)-.055)}function L(V){return V>f?V*V*V:p*(V-R)}function w(V){return(V/=255)<=.04045?V/12.92:Math.pow((V+.055)/1.055,2.4)}function Q(V){return V>E?Math.pow(V,1/3):V/p+R}}(A||(A={}))},3188:(tn,Ue,n)=>{"use strict";n.d(Ue,{Ui:()=>w,dH:()=>O,hW:()=>b});var e=n(467),o=n(275),r=n(4824),t=n(1861),A=n(8484),y=n(6985),c=function(N){return N[N.None=0]="None",N[N.Gzip=1]="Gzip",N[N.Zip=2]="Zip",N}(c||{});function O(N,k){return function h(N,k){if(A.K0)return function a(N,k){return r.YZ.create("Read File",function(){var H=(0,e.A)(function*($){const J="zip"===k?c.None:l(N.name);let W;return yield $.update({message:"Opening file...",canAbort:!1}),W="binary"===k||"zip"===k||J!==c.None?yield N.arrayBuffer():yield N.text(),yield $.update({message:"Processing file...",canAbort:!1}),yield s($,W,k,J)});return function($){return H.apply(this,arguments)}}())}(N,k);let H;return r.YZ.create("Read File",function(){var $=(0,e.A)(function*(J){try{H=new FileReader;const W="zip"===k?c.None:l(N.name);"binary"===k||"zip"===k||W!==c.None?H.readAsArrayBuffer(N):H.readAsText(N),yield J.update({message:"Opening file...",canAbort:!0});const te=yield I(J,"Reading...",H);return yield J.update({message:"Processing file...",canAbort:!1}),yield s(J,te.result,k,W)}finally{H=void 0}});return function(J){return $.apply(this,arguments)}}(),()=>{H&&H.abort()})}(N,k)}function b(N){return"string"==typeof N?f(N,N,"string"):f(N.title,N.url,N.type||"string",N.body,N.headers)}function M(N){return N?"Failed to download data. Possible reasons: Resource is not available, or CORS is not allowed on the server.":"Failed to open file."}function I(N,k,H){return new Promise(($,J)=>{if(function _(N){if(!A.K0&&N instanceof FileReader)return N.readyState===FileReader.DONE;if(N instanceof A.En)return N.readyState===A.En.DONE;throw new Error("unknown data type")}(H)){const{error:te}=H;return void(null!=te?J(te??M(H instanceof A.En)):$(H))}let W=!1;H.onerror=te=>{if(W)return;const{error:de}=te.target;J(de??M(H instanceof A.En))},H.onprogress=te=>{if(N.shouldUpdate&&!W)try{N.update(te.lengthComputable?{message:k,isIndeterminate:!1,current:te.loaded,max:te.total}:{message:`${k} ${(te.loaded/1024/1024).toFixed(2)} MB`,isIndeterminate:!0})}catch(de){W=!0,J(de)}},H.onload=te=>{$(H)}})}function l(N){return/\.gz$/i.test(N)?c.Gzip:/\.zip$/i.test(N)?c.Zip:c.None}const m=/^(__MACOSX|.DS_Store)/;function d(){return(d=(0,e.A)(function*(N,k,H){switch(H){case c.None:return k;case c.Gzip:return(0,y.Aq)(N,k);case c.Zip:const $=yield(0,y.$1)(N,k.buffer),J=Object.keys($).filter(W=>!m.test(W));if(1!==J.length)throw new Error("can only decompress zip files with a single entry");return $[J[0]]}})).apply(this,arguments)}function s(N,k,H,$){return C.apply(this,arguments)}function C(){return C=(0,e.A)(function*(N,k,H,$){let J=k instanceof ArrayBuffer?new Uint8Array(k):k;if(null===J)throw new Error("no data given");if($!==c.None){if(!(J instanceof Uint8Array))throw new Error("need Uint8Array for decompression");const W=yield function u(N,k,H){return d.apply(this,arguments)}(N,J,$);"string"===H?(yield N.update({message:"Decoding text..."}),J=(0,o.ss)(W,0,W.length)):J=W}if("binary"===H&&J instanceof Uint8Array)return J;if("zip"===H&&J instanceof Uint8Array)return yield(0,y.$1)(N,J.buffer);if("string"===H&&"string"==typeof J)return J;if("xml"===H&&"string"==typeof J)return(new DOMParser).parseFromString(J,"application/xml");if("json"===H&&"string"==typeof J)return JSON.parse(J);throw new Error(`could not get requested response data '${H}'`)}),C.apply(this,arguments)}let p,S=(()=>{class N{static get(){return this.pool.length?this.pool.pop():new A.En}static emptyFunc(){}static deposit(H){this.pool.length=200&&N.status<400){const{response:H}=N;if(S.deposit(N),("binary"===k||"zip"===k)&&H instanceof ArrayBuffer)return new Uint8Array(H);if("string"===k&&"string"==typeof H)return H;if("xml"===k&&H instanceof XMLDocument)return H;if("json"===k&&"object"==typeof H)return H;throw new Error(`could not get requested response data '${k}'`)}throw S.deposit(N),new Error(`Download failed with status code ${N.status}`)}(ye,H)});return function(de){return te.apply(this,arguments)}}(),()=>{W&&(W.abort(),W=void 0)})}function w(N,k,H,$){return Q.apply(this,arguments)}function Q(){return(Q=(0,e.A)(function*(N,k,H,$){const J=H.length,W=new Array(H.length);yield N.update({message:"Downloading...",current:0,max:J});let te=[],de=[],ye=0;for(let Z=Math.min(J,$);ye0;){const Z=yield Promise.race(te),q=H[Z.index],Y=de.indexOf(Z.index);if(j++,"error"===Z.kind&&!q.canFail)throw new Error(`${q.url}: ${Z.error}`);if(N.shouldUpdate&&(yield N.update({message:"Downloading...",current:j,max:J})),W[Z.index]=Z,te=te.filter(G,Y),de=de.filter(G,Y),ye{"use strict";n.d(Ue,{Bb:()=>o,EF:()=>v,Zq:()=>e,fv:()=>i,g$:()=>r});let e=function(){try{return!0}catch{return!1}}(),o=function(){try{const _=process.env.DEBUG;return"*"===_||"molstar"===_}catch{return!1}}(),r=!1;const c=[];function i(b){c.includes(b)||c.push(b)}function v(b){const _=c.indexOf(b);-1!==_&&c.splice(_,1)}},2732:(tn,Ue,n)=>{"use strict";function o(t){try{t.dispatchEvent(new MouseEvent("click"))}catch{const y=document.createEvent("MouseEvents");y.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(y)}}function r(t,A="download"){if(t)if("download"in HTMLAnchorElement.prototype){const y=document.createElement("a");y.download=A,y.rel="noopener","string"==typeof t?(y.href=t,o(y)):(y.href=URL.createObjectURL(t),setTimeout(()=>URL.revokeObjectURL(y.href),4e4),setTimeout(()=>o(y)))}else if(typeof navigator<"u"&&navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(t,A);else{const y=window.navigator.userAgent,c=/Safari/i.test(y),i=/CriOS\/[\d]+/.test(y),v=O=>{!function e(t){window.open(t,"_blank")||(window.location.href=t)}(i?O:O.replace(/^data:[^;]*;/,"data:attachment/file;"))};if((c||i)&&FileReader)if(t instanceof Blob){const O=new FileReader;O.onloadend=()=>v(O.result),O.readAsDataURL(t)}else v(t);else{const O=URL.createObjectURL("string"==typeof t?new Blob([t]):t);location.href=O,setTimeout(()=>URL.revokeObjectURL(O),4e4)}}}n.d(Ue,{R:()=>r})},8361:(tn,Ue,n)=>{"use strict";n.d(Ue,{h:()=>t});class e{constructor(y,c){this.parent=null,this.child=null,this.degree=0,this.isMarked=!1,this.key=y,this.value=c,this.prev=this,this.next=this}}const r=new class o{constructor(y){if(this._index=-1,this._items=[],this._len=0,y){let c=y,i=0;do{this._items[i++]=c,c=c.next}while(y!==c);this._len=i}}hasNext(){return this._index0)throw new Error("New key is larger than old key");y.key=c;const i=y.parent;i&&this._compare(y,i)<0&&(this._cut(y,i,this._minNode),this._cascadingCut(i,this._minNode)),this._compare(y,this._minNode)<0&&(this._minNode=y)}delete(y){const c=y.parent;c&&(this._cut(y,c,this._minNode),this._cascadingCut(c,this._minNode)),this._minNode=y,this.extractMinimum()}extractMinimum(){const y=this._minNode;if(y){if(y.child){let i=y.child;do{i.parent=null,i=i.next}while(i!==y.child)}let c=null;y.next!==y&&(c=y.next),this._removeNodeFromList(y),this._nodeCount--,this._minNode=this._mergeLists(c,y.child),this._minNode&&(this._minNode=this._consolidate(this._minNode))}return y}findMinimum(){return this._minNode}insert(y,c){const i=new e(y,c);return this._minNode=this._mergeLists(this._minNode,i),this._nodeCount++,i}isEmpty(){return null===this._minNode}size(){return null===this._minNode?0:this._getNodeListSize(this._minNode)}union(y){this._minNode=this._mergeLists(this._minNode,y._minNode),this._nodeCount+=y._nodeCount}_defaultCompare(y,c){return y.key>c.key?1:y.key0){const b=v;v=O,O=b}this._linkHeaps(O,v),c[v.degree]=null,v.degree++,O=c[v.degree]}c[v.degree]=v}let i=null;for(let v=0;v{"use strict";n.d(Ue,{o:()=>o});const e=["gz","zip"];function o(r){let t=r,A="";const y=t.lastIndexOf("?"),c=-1!==y?t.substring(y):"";t=t.substring(0,-1===y?t.length:y);const i=t.replace(/^.*[\\/]/,"");let v=i.substring(0,i.lastIndexOf("."));const O=i.split(".");let b=O.length>1?(O.pop()||"").toLowerCase():"";const _=t.match(/^(.+):\/\/(.+)$/);_&&(A=_[1].toLowerCase(),t=_[2]||"");const M=t.substring(0,t.lastIndexOf("/")+1);return e.includes(b)&&(b=(t.substr(0,t.length-b.length-1).split(".").pop()||"").toLowerCase(),v=v.substr(0,v.length-b.length-1)),{path:t,name:i,ext:b,base:v,dir:M,protocol:A,query:c}}},7778:(tn,Ue,n)=>{"use strict";function e(o=0,r=Number.MAX_SAFE_INTEGER){let t=o;return()=>{const A=t;return t=(t+1)%r,A}}n.d(Ue,{q:()=>e})},2775:(tn,Ue,n)=>{"use strict";var e,o;n.d(Ue,{N:()=>e}),(o=e||(e={})).create=function r(y,c,i){return{array:y,width:c,height:i}},o.flipY=function t(y){const{array:c,width:i,height:v}=y,b=i*(c.length/(i*v));for(let _=0,M=v/2;_{"use strict";n.d(Ue,{NJ:()=>e.N,fe:()=>o.f,kk:()=>r.k,xv:()=>c.xv,IQ:()=>c.IQ,af:()=>O,bD:()=>_,NT:()=>m,fU:()=>R,lQ:()=>i,bN:()=>M,f8:()=>I});var y,e=n(9455),o=n(9115),r=n(3559);function t(E,T){return E-T}!function(E){class T{has(te){return!1}forEach(te,de){return de}constructor(){this.size=0}}class L{has(te){return te===this.idx}forEach(te,de){return te(this.idx,de),de}constructor(te){this.idx=te,this.size=1}}class w{has(te){return tete[de++]=ye),function A(E){Array.prototype.sort.call(E,t)}(te),this._flat=te,this._flat}forEach(te,de){return this._forEach(te,de),de}constructor(te){this.set=te,this._flat=void 0,this.size=te.size}}function U(W){return new G(W)}function H(W,te){return new w(W,te)}E.always=function V(W){return new Q(W)},E.never=new T,E.ofSet=U,E.singleton=function N(W){return new L(W)},E.ofUniqueIndices=function k(W){const te=W.length;if(0===te)return new T;if(1===te)return new L(W[0]);let de=0;for(const Z of W)Z>de&&(de=Z);if(te===de)return new Q(te);if(te/de<1/12){const Z=new Set;for(const q of W)Z.add(q);return new G(Z)}const j=new Int8Array(de+1);for(const Z of W)j[Z]=1;return new w(j,W.length)},E.ofMask=H,E.hasAny=function $(W,te){for(const de of te)if(W.has(de))return!0;return!1},E.complement=function J(W,te){let de=0,ye=0;if(te.forEach(j=>{W.has(j)||(de++,j>ye&&(ye=j))}),de/ye<1/12){const j=new Set;return te.forEach(Z=>{W.has(Z)||j.add(Z)}),U(j)}{const j=new Uint8Array(ye+1);return te.forEach(Z=>{W.has(Z)||(j[Z]=1)}),H(j,de)}}}(y||(y={}));var c=n(7187);const i=function(){};function O(E,T){const L=E.length;if(L!==T.length)return!1;for(let w=0;w{"use strict";n.d(Ue,{Fs:()=>v,RN:()=>c,Vl:()=>b,Y7:()=>A,bP:()=>l,qt:()=>O,vq:()=>y});var e=n(1413),o=n(7361),r=n(4369),t=n(9909);function A(u){if("object"==typeof u){if("buttons"in u)return u.buttons;if("which"in u){const d=u.which;if(2===d)return 4;if(3===d)return 2;if(d>0)return 1<=0)return 1<!0,pixelScale:1};var v,O;!function(u){function d(a,S){return a.shift===S.shift&&a.alt===S.alt&&a.control===S.control&&a.meta===S.meta}function h(a={}){return{shift:!!a.shift,alt:!!a.alt,control:!!a.control,meta:!!a.meta}}u.None=h(),u.areEqual=d,u.areNone=function s(a){return d(a,u.None)},u.size=function C(a){if(!a)return 0;let S=0;return a.shift&&S++,a.alt&&S++,a.control&&S++,a.meta&&S++,S},u.create=h}(v||(v={})),function(u){let d;var s;u.has=t.NJ.has,u.create=t.NJ.create,(s=d=u.Flag||(u.Flag={}))[s.None=0]="None",s[s.Primary=1]="Primary",s[s.Secondary=2]="Secondary",s[s.Auxilary=4]="Auxilary",s[s.Forth=8]="Forth",s[s.Five=16]="Five"}(O||(O={}));const b={key:"",code:"",modifiers:v.None,x:-1,y:-1,pageX:-1,pageY:-1,preventDefault:t.lQ};var _=function(u){return u[u.Stopped=0]="Stopped",u[u.Started=1]="Started",u[u.Moving=2]="Moving",u}(_||{});function M(){return{drag:new e.B,interactionEnd:new e.B,click:new e.B,move:new e.B,wheel:new e.B,pinch:new e.B,gesture:new e.B,resize:new e.B,leave:new e.B,enter:new e.B,modifiers:new e.B,key:new e.B,keyUp:new e.B,keyDown:new e.B,lock:new e.B}}const I=["Backspace","Delete"];var l,u;(u=l||(l={})).create=function d(C={}){const{noScroll:h,noContextMenu:a}={...i,...C};return{noScroll:h,noContextMenu:a,pointerLock:!1,width:0,height:0,pixelRatio:1,...M(),setPixelScale:t.lQ,requestPointerLock:t.lQ,exitPointerLock:t.lQ,dispose:t.lQ}},u.fromElement=function s(C,h={}){let{noScroll:a,noContextMenu:D,noPinchZoom:R,noTextSelect:f,mask:p,pixelScale:E,preventGestures:T}={...i,...h},L=C.clientWidth*de(),w=C.clientHeight*de(),Q=!1,G=(0,o.LM)(),V=0,U=0;const N=(0,r.ZY)(),k=(0,r.ZY)(),H=(0,r.ZY)(),$=(0,r.ZY)(),J=(0,r.ZY)(),W={shift:!1,alt:!1,control:!1,meta:!1},te={x:-1,y:-1,pageX:-1,pageY:-1};function de(){return window.devicePixelRatio*E}function ye(){return{...W}}function j(Ot){return Ot.target===document.body||Ot.target===C}let xe,Z=_.Stopped,q=!1,Y=O.create(O.Flag.None),ee=O.Flag.None,g=!1,_e=!1;typeof window.ResizeObserver<"u"&&(xe=new window.ResizeObserver(It));const le=M(),{drag:Ae,interactionEnd:Be,wheel:Ce,pinch:Re,gesture:ke,click:we,move:Oe,leave:Se,enter:Ve,resize:Ne,modifiers:K,key:ne,keyUp:be,keyDown:Te,lock:ie}=le;function ve(){Q=C.ownerDocument.pointerLockElement===C,kt(Q),ie.next(Q)}function ce(){console.error("Unable to use Pointer Lock API"),Q=!1,kt(Q),ie.next(Q)}function se(Ot){p(Ot.clientX,Ot.clientY)&&D&&Ot.preventDefault()}function ae(Ot){W.alt=Ot.altKey,W.shift=Ot.shiftKey,W.control=Ot.ctrlKey,W.meta=Ot.metaKey}function ge(){(Y||W.shift||W.alt||W.meta||W.control)&&(Y=0,W.shift=W.alt=W.control=W.meta=!1)}function Ie(Ot){let An=!1;!W.alt&&Ot.altKey&&(An=!0,W.alt=!0),!W.shift&&Ot.shiftKey&&(An=!0,W.shift=!0),!W.control&&Ot.ctrlKey&&(An=!0,W.control=!0),!W.meta&&Ot.metaKey&&(An=!0,W.meta=!0),An&&g&&K.next(ye()),j(Ot)&&g&&Te.next({key:Ot.key,code:Ot.code,modifiers:ye(),...te,preventDefault:()=>Ot.preventDefault()})}function Le(Ot){let An=!1;W.alt&&!Ot.altKey&&(An=!0,W.alt=!1),W.shift&&!Ot.shiftKey&&(An=!0,W.shift=!1),W.control&&!Ot.ctrlKey&&(An=!0,W.control=!1),W.meta&&!Ot.metaKey&&(An=!0,W.meta=!1),An&&g&&K.next(ye()),I.includes(Ot.key)&&nt(Ot),j(Ot)&&g&&be.next({key:Ot.key,code:Ot.code,modifiers:ye(),...te,preventDefault:()=>Ot.preventDefault()})}function nt(Ot){!j(Ot)||!g||ne.next({key:Ot.key,code:Ot.code,modifiers:ye(),...te,preventDefault:()=>Ot.preventDefault()})}function je(Ot){const An=Ot.touches[0],jn=Ot.touches[1];return{clientX:(An.clientX+jn.clientX)/2,clientY:(An.clientY+jn.clientY)/2,pageX:(An.pageX+jn.pageX)/2,pageY:(An.pageY+jn.pageY)/2,target:Ot.target}}function Lt(Ot){const An=Ot.touches[0].pageX-Ot.touches[1].pageX,jn=Ot.touches[0].pageY-Ot.touches[1].pageY;return Math.sqrt(An*An+jn*jn)}!function ue(){C.addEventListener("contextmenu",se,!1),C.addEventListener("wheel",Gt,!1),C.addEventListener("mousedown",Ke,!1),window.addEventListener("mousemove",ut,!1),window.addEventListener("mouseup",Kt,!1),C.addEventListener("touchstart",mt,!1),C.addEventListener("touchmove",Me,!1),C.addEventListener("touchend",_t,!1),C.addEventListener("gesturechange",Dn,!1),C.addEventListener("gesturestart",nn,!1),C.addEventListener("gestureend",jt,!1),window.addEventListener("blur",ge),window.addEventListener("keyup",Le,!1),window.addEventListener("keydown",Ie,!1),window.addEventListener("keypress",nt,!1),document.addEventListener("pointerlockchange",ve,!1),document.addEventListener("pointerlockerror",ce,!1),null!=xe?xe.observe(C.parentElement):window.addEventListener("resize",It,!1)}();let en,Je=-1;const Bt=(0,r.ZY)(),pn=(0,r.ZY)();function mt(Ot){if(Ot.preventDefault(),en=void 0,Je=-1,1===Ot.touches.length)Je=0,r.ZY.set(Bt,Ot.touches[0].pageX,Ot.touches[0].pageY),en=Ot.touches[0],Y=ee=O.Flag.Primary,gt(Ot.touches[0]);else if(2===Ot.touches.length){Y=O.Flag.Secondary&O.Flag.Auxilary,ee=O.Flag.Secondary,gt(je(Ot));const An=Lt(Ot);V=An,Re.next({distance:An,fraction:1,fractionDelta:0,delta:0,isStart:!0,buttons:Y,button:ee,modifiers:ye()})}else 3===Ot.touches.length&&(Y=ee=O.Flag.Forth,gt(je(Ot)))}function _t(Ot){if(sn(),en&&Je<=4){const An=en;if(!p(An.clientX,An.clientY))return;$t(pn,An);const{pageX:jn,pageY:On}=Vt(An),[fr,Dr]=pn;we.next({x:fr,y:Dr,pageX:jn,pageY:On,buttons:Y,button:ee,modifiers:ye()})}en=void 0}function Me(Ot){if(ee=O.Flag.None,R&&(Ot.preventDefault(),Ot.stopPropagation(),Ot.originalEvent&&(Ot.originalEvent.preventDefault(),Ot.originalEvent.stopPropagation())),en=void 0,1===Ot.touches.length)Y=O.Flag.Primary,en=Ot.touches[0],function $e(Ot){Je<0||(r.ZY.set(pn,Ot.touches[0].pageX,Ot.touches[0].pageY),Je+=r.ZY.distance(Bt,pn),r.ZY.copy(Bt,pn))}(Ot),At(Ot.touches[0]);else if(2===Ot.touches.length){const An=Lt(Ot),jn=V-An;if(Math.abs(jn)<4)Y=O.Flag.Secondary,At(je(Ot));else{Y=O.Flag.Auxilary,ae(Ot);const On=V/An;Re.next({delta:jn,fraction:On,fractionDelta:U-On,distance:An,isStart:!1,buttons:Y,button:ee,modifiers:ye()}),U=On}V=An}else 3===Ot.touches.length&&(Y=O.Flag.Forth,At(je(Ot)))}function Ke(Ot){ae(Ot),Y=A(Ot),ee=y(Ot),gt(Ot)}function ut(Ot){ae(Ot),Y=A(Ot),ee=O.Flag.None,At(Ot)}function Kt(Ot){ae(Ot),Y=A(Ot),ee=y(Ot),function yt(Ot){if(Z=_.Stopped,p(Ot.clientX,Ot.clientY)){if($t(H,Ot),!_e&&r.ZY.distance(H,N)<4){const{pageX:An,pageY:jn}=Vt(Ot),[On,fr]=H;we.next({x:On,y:fr,pageX:An,pageY:jn,buttons:Y,button:ee,modifiers:ye()})}_e=!1}}(Ot),sn()}function sn(){Be.next(void 0)}function gt(Ot){p(Ot.clientX,Ot.clientY)&&($t(k,Ot),r.ZY.copy(N,k),Dt(k)&&(Z=_.Started))}function At(Ot){var An;$t(H,Ot);const{pageX:jn,pageY:On}=Vt(Ot),[fr,Dr]=H,{movementX:Pr,movementY:or}=Ot,Nr=Dt(H)&&p(Ot.clientX,Ot.clientY);if(g&&!Nr?Se.next(void 0):!g&&Nr&&Ve.next(void 0),g=Nr,te.x=fr,te.y=Dr,te.pageX=jn,te.pageY=On,Oe.next({x:fr,y:Dr,pageX:jn,pageY:On,movementX:Pr,movementY:or,buttons:Y,button:ee,modifiers:ye(),inside:Nr,onElement:Ot.target===C}),Z===_.Stopped||(f&&(null===(An=Ot.preventDefault)||void 0===An||An.call(Ot)),r.ZY.div($,r.ZY.sub($,H,k),function Ct(Ot){return Ot[0]=C.clientWidth,Ot[1]=C.clientHeight,Ot}(J)),r.ZY.magnitude($)=4&&(_e=!0);const[Or,Jr]=$;Ae.next({x:fr,y:Dr,dx:Or,dy:Jr,pageX:jn,pageY:On,buttons:Y,button:ee,modifiers:ye(),isStart:Ir}),r.ZY.copy(k,H),Z=_.Moving}function Gt(Ot){if(!p(Ot.clientX,Ot.clientY))return;$t(H,Ot);const{pageX:An,pageY:jn}=Vt(Ot),[On,fr]=H;a&&Ot.preventDefault();const Dr=function m(u){let h=0,a=0,S=0,D=0,R=0;return"detail"in u&&(a=u.detail),"wheelDelta"in u&&(a=-u.wheelDelta/120),"wheelDeltaY"in u&&(a=-u.wheelDeltaY/120),"wheelDeltaX"in u&&(h=-u.wheelDeltaX/120),"axis"in u&&u.axis===u.HORIZONTAL_AXIS&&(h=a,a=0),S=10*h,D=10*a,"deltaY"in u&&(D=u.deltaY),"deltaX"in u&&(S=u.deltaX),"deltaZ"in u&&(R=u.deltaZ),(S||D||R)&&u.deltaMode&&(1===u.deltaMode?(S*=40,D*=40,R*=40):(S*=800,D*=800,R*=800)),S&&!h&&(h=S<1?-1:1),D&&!a&&(a=D<1?-1:1),{spinX:h,spinY:a,dx:S,dy:D,dz:R}}(Ot);Y=ee=O.Flag.Auxilary,(Dr.dx||Dr.dy||Dr.dz)&&Ce.next({x:On,y:fr,pageX:An,pageY:jn,...Dr,buttons:Y,button:ee,modifiers:ye()})}function rn(Ot){var An,jn;T&&(Ot.preventDefault(),null===(An=Ot.stopImmediatePropagation)||void 0===An||An.call(Ot),null===(jn=Ot.stopPropagation)||void 0===jn||jn.call(Ot))}let tt=0,Mt=0;function nn(Ot){rn(Ot),tt=Ot.scale,Mt=Ot.rotation,ke.next({scale:Ot.scale,rotation:Ot.rotation,deltaRotation:0,deltaScale:0,isStart:!0})}function bn(Ot,An){ke.next({scale:Ot.scale,rotation:Ot.rotation,deltaRotation:Mt-Ot.rotation,deltaScale:tt-Ot.scale,isEnd:An}),Mt=Ot.rotation,tt=Ot.scale}function Dn(Ot){rn(Ot),bn(Ot)}function jt(Ot){rn(Ot),bn(Ot,!0)}function It(){L=C.clientWidth*de(),w=C.clientHeight*de(),Ne.next({})}function Dt(Ot){if(C instanceof Window||C instanceof Document||C===document.body)return!0;{const An=C.getBoundingClientRect();return Ot[0]>=0&&Ot[1]>=0&&Ot[0]{E=Ot,L=C.clientWidth*de(),w=C.clientHeight*de()},requestPointerLock:Ot=>{G=Ot,Q||C.requestPointerLock()},exitPointerLock:()=>{Q&&C.ownerDocument.exitPointerLock()},dispose:function re(){q||(q=!0,C.removeEventListener("contextmenu",se,!1),C.removeEventListener("wheel",Gt,!1),C.removeEventListener("mousedown",Ke,!1),window.removeEventListener("mousemove",ut,!1),window.removeEventListener("mouseup",Kt,!1),C.removeEventListener("touchstart",mt,!1),C.removeEventListener("touchmove",Me,!1),C.removeEventListener("touchend",_t,!1),C.removeEventListener("gesturechange",Dn,!1),C.removeEventListener("gesturestart",nn,!1),C.removeEventListener("gestureend",jt,!1),window.removeEventListener("blur",ge),window.removeEventListener("keyup",Le,!1),window.removeEventListener("keydown",Ie,!1),window.removeEventListener("keypress",nt,!1),document.removeEventListener("pointerlockchange",ve,!1),document.removeEventListener("pointerlockerror",ce,!1),yn.remove(),null!=xe?(xe.unobserve(C.parentElement),xe.disconnect()):window.removeEventListener("resize",It,!1))}}}},2293:(tn,Ue,n)=>{"use strict";function e(r){return{kind:"table-legend",table:r}}function o(r,t,A){return{kind:"scale-legend",minLabel:r,maxLabel:t,colors:A}}n.d(Ue,{A:()=>o,h:()=>e})},2229:(tn,Ue,n)=>{"use strict";var e,o;n.d(Ue,{x:()=>e}),(o=e||(e={})).message=function r(c){return{type:"message",timestamp:new Date,message:c}},o.error=function t(c){return{type:"error",timestamp:new Date,message:c}},o.warning=function A(c){return{type:"warning",timestamp:new Date,message:c}},o.info=function y(c){return{type:"info",timestamp:new Date,message:c}}},6825:(tn,Ue,n)=>{"use strict";n.d(Ue,{BH:()=>i,HX:()=>O,Ro:()=>v,ly:()=>c,sY:()=>A,uP:()=>y,xi:()=>t});var A,b,e=n(3543),o=n(9455),r=n(1372),t=function(b){return b[b.None=0]="None",b[b.Highlight=1]="Highlight",b[b.RemoveHighlight=2]="RemoveHighlight",b[b.Select=4]="Select",b[b.Deselect=8]="Deselect",b[b.Toggle=16]="Toggle",b[b.Clear=32]="Clear",b}(t||{});function y(b,_,M){b.fill(_,0,M)}function c(b,_,M){switch(M){case t.Highlight:b[_]|=1;break;case t.RemoveHighlight:b[_]&=-2;break;case t.Select:b[_]|=2;break;case t.Deselect:b[_]&=-3;break;case t.Toggle:b[_]^=2;break;case t.Clear:b[_]=0}}function i(b,_,M){if(M===t.None)return!1;if(e.IX.is(_)){const I=e.IX.start(_),l=e.IX.end(_),m=I+3>>2,u=m+(l-4*m>>2);if(u<=m){for(let S=I;S>2),s=I,C=Math.min(4*m,l),h=Math.max(I,4*u),a=l;switch(M){case t.Highlight:for(let S=m;S{"use strict";n.d(Ue,{i:()=>o});var r,e=n(8277);function o(r){return{...o.Zero,...r}}(r=o||(o={})).Zero={metalness:0,roughness:0,bumpiness:0},r.toArray=function t(c,i,v){return i[v]=255*c.metalness,i[v+1]=255*c.roughness,i[v+2]=255*c.bumpiness,i},r.toString=function A({metalness:c,roughness:i,bumpiness:v}){return`M ${c.toFixed(2)} | R ${i.toFixed(2)} | B ${v.toFixed(2)}`},r.getParam=function y(c){return e.t.Group({metalness:e.t.Numeric(0,{min:0,max:1,step:.01}),roughness:e.t.Numeric(1,{min:0,max:1,step:.01}),bumpiness:e.t.Numeric(0,{min:0,max:1,step:.01})},{...c,presets:[[{metalness:0,roughness:1,bumpiness:0},"Matte"],[{metalness:0,roughness:.2,bumpiness:0},"Plastic"],[{metalness:0,roughness:.6,bumpiness:0},"Glossy"],[{metalness:1,roughness:.6,bumpiness:0},"Metallic"]]})}},1094:(tn,Ue,n)=>{"use strict";function e(r){let t,A;return(...y)=>{if(!t||t.length!==y.length)return t=y,A=r.apply(void 0,y),A;for(let c=0,i=y.length;c{if(t.has(A))return t.get(A);const y=r(A);return t.set(A,y),y}}n.d(Ue,{E:()=>o,_:()=>e})},8484:(tn,Ue,n)=>{"use strict";n.d(Ue,{En:()=>o,K0:()=>e,em:()=>r});const e=typeof process<"u"&&null!=process.versions&&null!=process.versions.node,o=function t(){return typeof XMLHttpRequest>"u"||e?n(2684):XMLHttpRequest}(),r=function A(){if(typeof File>"u"||e){class y{arrayBuffer(){return this.blob.arrayBuffer()}slice(i,v,O){return this.blob.slice(i,v,O)}stream(){return this.blob.stream()}text(){return this.blob.text()}constructor(i,v,O){var b;this.blob=new Blob(i,O),this.size=this.blob.size,this.type=this.blob.type,this.name=v,this.lastModified=null!==(b=O?.lastModified)&&void 0!==b?b:0,this.webkitRelativePath=""}}return y}return File}()},9854:(tn,Ue,n)=>{"use strict";n.d(Ue,{H:()=>o,t:()=>e});const e=function(){if(typeof window<"u"&&window.performance){const r=window.performance;return()=>r.now()}return typeof process<"u"&&"undefined"!==process.hrtime&&"function"==typeof process.hrtime?()=>{const r=process.hrtime();return 1e3*r[0]+r[1]/1e6}:Date.now?()=>Date.now():()=>+new Date}();function o(r,t=!0){if(isNaN(r))return"n/a";const A=Math.floor(r/36e5),y=Math.floor(r/6e4%60),c=Math.floor(r/1e3%60);let i=Math.floor(r%1e3).toString();for(;i.length<3;)i="0"+i;for(;!t&&i.length>1&&"0"===i[i.length-1];)i=i.substr(0,i.length-1);return A>0?`${A}h${y}m${c}.${i}s`:y>0?`${y}m${c}.${i}s`:c>0?`${c}.${i}s`:`${r.toFixed(0)}ms`}},4951:(tn,Ue,n)=>{"use strict";n.d(Ue,{FO:()=>v,Gu:()=>r,OK:()=>t});var e=n(127),o=n(4369);function r(O,b,_){return O=(0,e.qE)(Math.round(O),0,16777215)+1,b[_+2]=O%256,O=Math.floor(O/256),b[_+1]=O%256,O=Math.floor(O/256),b[_]=O%256,b}function t(O,b,_){return 256*Math.floor(O)*256+256*Math.floor(b)+Math.floor(_)-1}const A=255/256,y=o.eB.create(16777216,65536,256),c=o.Zb.create(A/y[0],A/y[1],A/y[2],A/1),i=(0,o.Zb)();function v(O,b,_,M){return o.Zb.set(i,O/255,b/255,_/255,M/255),o.Zb.dot(i,c)}},229:(tn,Ue,n)=>{"use strict";function e(i,v,O){let _,b=1;for(_=0;_=0){const m=e(i[M],v,O);m<0?b=-1:m>b&&(b=m)}const l=Math.abs(i[M]);if(l>O){const m=Math.floor(Math.log10(Math.abs(l)))+1;m>_&&(_=m)}}return{mantissaDigits:b,integerDigits:_}}function t(i){i=i.trim();const v=parseInt(i,10);return!isNaN(v)&&v.toString()===i}function A(i){if(!isFinite(i))return 0;let v=1,O=0;for(;Math.round(i*v)/v!==i;)v*=10,++O;return O}function y(i,v){return parseFloat(i.toPrecision(v))}n.d(Ue,{Fq:()=>t,In:()=>r,QX:()=>y,XV:()=>A,bL:()=>o})},9359:(tn,Ue,n)=>{"use strict";n.d(Ue,{Go:()=>c,IF:()=>O,JW:()=>o,Wv:()=>y,bN:()=>t});const e=Object.prototype.hasOwnProperty;function o(u,d){for(const s of Object.keys(d))e.call(d,s)&&typeof u[s]>"u"&&(u[s]=d[s]);return u}function r(u,d){let s=!1;for(const C of Object.keys(d))if(e.call(d,C)&&d[C]!==u[C]){s=!0;break}return s?Object.assign({},u,d):u}function t(u,d){if(!u)return!d;if(!d)return!1;const s=Object.keys(u);if(Object.keys(d).length!==s.length)return!1;for(const C of s)if(!e.call(u,C)||u[C]!==d[C])return!1;return!0}function y(u,d){let s=u;for(let C=0;C{"use strict";n.d(Ue,{t:()=>c});var c,e=n(9909),o=n(4369),r=n(9359),t=n(7785),A=n(1907),y=n(1861);!function(i){function v(Oe,Se){return Se&&(Se.label&&(Oe.label=Se.label),Se.description&&(Oe.description=Se.description),Se.legend&&(Oe.legend=Se.legend),Se.fieldLabels&&(Oe.fieldLabels=Se.fieldLabels),Se.isHidden&&(Oe.isHidden=Se.isHidden),Se.shortLabel&&(Oe.shortLabel=Se.shortLabel),Se.twoColumns&&(Oe.twoColumns=Se.twoColumns),Se.isEssential&&(Oe.isEssential=Se.isEssential),Se.category&&(Oe.category=Se.category),Se.hideIf&&(Oe.hideIf=Se.hideIf),Se.help&&(Oe.help=Se.help)),Oe}function _(Oe,Se,Ve){return v({type:"select",defaultValue:we(Oe,Se),options:Se,cycle:Ve?.cycle},Ve)}function S(Oe,Se){return Se&&(typeof Se.min<"u"&&(Oe.min=Se.min),typeof Se.max<"u"&&(Oe.max=Se.max),typeof Se.step<"u"&&(Oe.step=Se.step)),Oe}function p(Oe,Se){const Ve=v({type:"group",defaultValue:Se?.customDefault||J(Oe),params:Oe},Se);return Se?.presets&&(Ve.presets=Se.presets),Se?.isExpanded&&(Ve.isExpanded=Se.isExpanded),Se?.isFlat&&(Ve.isFlat=Se.isFlat),Se?.pivot&&(Ve.pivot=Se.pivot),Ve}function Q(){return J(this.element)}function G(){throw new Error("getValue not set. Fix runtime.")}function J(Oe){const Se={};for(const Ve of Object.keys(Oe))Oe[Ve].isOptional||(Se[Ve]=Oe[Ve].defaultValue);return Se}function W(Oe,Se,Ve){return()=>Oe(Se,Ve)}function te(Oe,Se,Ve){if(Se)if("value-ref"===Oe.type){Se.getValue=Se.ref?W(Oe.resolveRef,Se.ref,Ve):()=>{throw new Error("Unset ref in ValueRef value.")}}else if("data-ref"===Oe.type){Se.getValue=Se.ref?W(Ve,Se.ref,Ve):()=>{throw new Error("Unset ref in ValueRef value.")}}else if("group"===Oe.type)j(Oe.params,Se,Ve);else if("mapped"===Oe.type){const Ne=Se;te(Oe.map(Ne.name),Ne.params,Ve)}else if("object-list"===Oe.type){if(!ye(Oe.element))return;for(const Ne of Se)j(Oe.element,Ne,Ve)}}function de(Oe){if("value-ref"===Oe.type||"data-ref"===Oe.type)return!0;if("group"===Oe.type){if(ye(Oe.params))return!0}else if("mapped"===Oe.type){for(const[Se]of Oe.select.options)if(de(Oe.map(Se)))return!0}else if("object-list"===Oe.type)return ye(Oe.element);return!1}function ye(Oe){for(const Se of Object.keys(Oe))if(de(Oe[Se]))return!0;return!1}function j(Oe,Se,Ve){for(const Ne of Object.keys(Oe))te(Oe[Ne],Se?.[Ne],Ve)}function ee(Oe,Se,Ve){if(Se===Ve)return!0;if("object"!=typeof Se||"object"!=typeof Ve)return!1;for(const Ne of Object.keys(Oe))if(!g(Oe[Ne],Se[Ne],Ve[Ne]))return!1;return!0}function g(Oe,Se,Ve){if(Se===Ve)return!0;if("group"===Oe.type)return ee(Oe.params,Se,Ve);if("mapped"===Oe.type){const Ne=Se,K=Ve;return Ne.name===K.name&&g(Oe.map(Ne.name),Ne.params,K.params)}if("multi-select"===Oe.type){const Ne=Se,K=Ve;if(Ne.length!==K.length)return!1;if(Ne.length<10){for(let ne=0,be=Ne.length;ne"u")return Ve?Oe.defaultValue:void 0;if(!le(Oe.select,Ne.name))return Oe.defaultValue;const K=Oe.map(Ne.name);return{name:Ne.name,params:Ae(K,Ne.params,Ve)}}if("select"===Oe.type)return le(Oe,Se)?Se:Oe.defaultValue;if("multi-select"===Oe.type){if(!Array.isArray(Se))return Oe.defaultValue;const Ne=Se.filter(function(K){return le(this,K)},Oe);return Se.length>0&&0===Ne.length?Oe.defaultValue:Ne}return"object-list"===Oe.type?Array.isArray(Se)?Se.map(Ne=>Be(Oe.element,Ne,Ve?"all":"skip")):Oe.defaultValue:Se}function Be(Oe,Se,Ve){if("object"!=typeof Se||null===Se)return Ve?J(Oe):Se;const Ne=Object.create(null);for(const K of Object.keys(Oe)){const ne=Oe[K];void 0===Se[K]?"all"===Ve&&(Ne[K]=ne.defaultValue):Ne[K]=Ae(ne,Se[K],"skip"!==Ve)}return Ne}function we(Oe,Se){for(const Ve of Se)if(Ve[0]===Oe)return Oe;return Se.length>0?Se[0][0]:void 0}i.Essential={isEssential:!0},i.Optional=function O(Oe){const Se={...Oe};return Se.isOptional=!0,Se},i.Value=function b(Oe,Se){return v({type:"value",defaultValue:Oe},Se)},i.Select=_,i.MultiSelect=function M(Oe,Se,Ve){const Ne=v({type:"multi-select",defaultValue:Oe,options:Se},Ve);return Ve?.emptyValue&&(Ne.emptyValue=Ve.emptyValue),Ne},i.Boolean=function I(Oe,Se){return v({type:"boolean",defaultValue:Oe},Se)},i.Text=function l(Oe="",Se){return v({type:"text",defaultValue:Oe,multiline:Se?.multiline,placeholder:Se?.placeholder,disableInteractiveUpdates:Se?.disableInteractiveUpdates},Se)},i.Color=function m(Oe,Se){const Ve=v({type:"color",defaultValue:Oe},Se);return Se?.isExpanded&&(Ve.isExpanded=Se.isExpanded),Ve},i.ColorList=function u(Oe,Se){let Ve;if("string"==typeof Oe){const Ne=(0,A.JA)(Oe);Ve={kind:"qualitative"!==Ne.type?"interpolate":"set",colors:Ne.list}}else Ve=Oe;return v({type:"color-list",presetKind:Se?.presetKind||"all",defaultValue:Ve,offsets:!!Se?.offsets},Se)},i.Vec3=function d(Oe,Se,Ve){return v(S({type:"vec3",defaultValue:Oe},Se),Ve)},i.Mat4=function s(Oe,Se){return v({type:"mat4",defaultValue:Oe},Se)},i.Url=function C(Oe,Se){return v({type:"url",defaultValue:"string"==typeof Oe?y.V.Url(Oe):y.V.Url(Oe.url,{body:Oe.body})},Se)},i.File=function h(Oe){const Se=v({type:"file",defaultValue:null},Oe);return Oe?.accept&&(Se.accept=Oe.accept),Se},i.FileList=function a(Oe){const Se=v({type:"file-list",defaultValue:null},Oe);return Oe?.accept&&(Se.accept=Oe.accept),Se},i.Numeric=function D(Oe,Se,Ve){const Ne=v(S({type:"number",defaultValue:Oe},Se),Ve);return Ve?.immediateUpdate&&(Ne.immediateUpdate=!0),Ne},i.Interval=function R(Oe,Se,Ve){return v(S({type:"interval",defaultValue:Oe},Se),Ve)},i.LineGraph=function f(Oe,Se){const Ve=v({type:"line-graph",defaultValue:Oe},Se);return Se?.getVolume&&(Ve.getVolume=Se.getVolume),Ve},i.Group=p,i.EmptyGroup=function E(Oe){return p({},Oe)},i.Mapped=function T(Oe,Se,Ve,Ne){const K=we(Oe,Se);return v({type:"mapped",defaultValue:{name:K,params:Ve(K).defaultValue},select:_(K,Se,Ne),map:Ve},Ne)},i.MappedStatic=function L(Oe,Se,Ve){const Ne=Ve?.options?Ve.options:Object.keys(Se).map(ne=>[ne,Se[ne].label||(0,t.Mk)(ne)]),K=we(Oe,Ne);return v({type:"mapped",defaultValue:{name:K,params:Se[K].defaultValue},select:_(K,Ne,Ve),map:ne=>Se[ne]},Ve)},i.ObjectList=function w(Oe,Se,Ve){return v({type:"object-list",element:Oe,getLabel:Se,ctor:Q,defaultValue:Ve?.defaultValue||[]},Ve)},i.ValueRef=function V(Oe,Se,Ve){var Ne;return v({type:"value-ref",defaultValue:{ref:null!==(Ne=Ve?.defaultRef)&&void 0!==Ne?Ne:"",getValue:G},getOptions:Oe,resolveRef:Se},Ve)},i.DataRef=function U(Oe){var Se;return v({type:"data-ref",defaultValue:{ref:null!==(Se=Oe?.defaultRef)&&void 0!==Se?Se:"",getValue:G}},Oe)},i.Converted=function N(Oe,Se,Ve){return v({type:"converted",defaultValue:Se(Ve.defaultValue),converted:Ve,fromValue:Oe,toValue:Se},Ve)},i.Conditioned=function k(Oe,Se,Ve,Ne,K){const ne=Object.keys(Se).map(be=>[be,be]);return v({type:"conditioned",select:_(Ve(Oe),ne,K),defaultValue:Oe,conditionParams:Se,conditionForValue:Ve,conditionedValue:Ne},K)},i.Script=function H(Oe,Se){return v({type:"script",defaultValue:Oe},Se)},i.For=function $(Oe){return 0},i.getDefaultValues=J,i.resolveRefs=j,i.setDefaultValues=function Z(Oe,Se){for(const Ve of Object.keys(Oe))Oe[Ve].isOptional||(Oe[Ve].defaultValue=Se[Ve])},i.clone=function q(Oe){return(0,r.Go)(Oe)},i.validate=function Y(Oe,Se){},i.areEqual=ee,i.isParamEqual=g,i.merge=_e,i.mergeParam=xe,i.normalizeParams=Be,i.objectToOptions=function Ce(Oe,Se){const Ve=[];for(const Ne of Object.keys(Oe))if(Se){const K=Se(Ne,Oe[Ne]);Ve.push("string"==typeof K?[Ne,K]:[Ne,K[0],K[1]])}else Ve.push("string"==typeof Oe[Ne]?[Ne,Oe[Ne]]:[Ne,null===Se?Ne:(0,t.Mk)(Ne)]);return Ve},i.arrayToOptions=function Re(Oe,Se){const Ve=[];for(const Ne of Oe)Ve.push(Se?[Ne,Se(Ne)]:[Ne,null===Se?Ne:(0,t.Mk)(Ne)]);return Ve},i.optionLabel=function ke(Oe,Se){for(const Ve of Oe.options)if(Ve[0]===Se)return Ve[1];return""}}(c||(c={}))},8956:(tn,Ue,n)=>{"use strict";n.d(Ue,{V:()=>r});var r,e=n(1413),o=n(4412);(r||(r={})).create=function y(){const c=new t,i=()=>c.create();return i.dispose=()=>c.dispose(),i.behavior=v=>c.behavior(v),i};class t{constructor(){this._eventList=[],this._disposed=!1}create(){const y=new e.B;return this._eventList.push(y),y}behavior(y){const c=new o.t(y);return this._eventList.push(c),c}dispose(){if(!this._disposed){for(const y of this._eventList)y.complete();this._disposed=!0}}}},9986:(tn,Ue,n)=>{"use strict";var e,o;n.d(Ue,{M:()=>e}),(o=e||(e={})).toArray=function r(l){return Array.from(l.values())},o.isSuperset=function t(l,m){if(l===m)return!0;if(l.size0;l.size{"use strict";var e;n.d(Ue,{f:()=>e}),function(o){o.create=function r(a=512){return{current:[],offset:0,capacity:a,chunks:[]}},o.getString=function t(a){return a.chunks.length?(a.offset>0&&(a.chunks[a.chunks.length]=a.current.length===a.offset?a.current.join(""):a.current.slice(0,a.offset).join("")),a.chunks.join("")):a.current.length===a.offset?a.current.join(""):a.current.splice(0,a.offset).join("")},o.getSize=function A(a){let S=0;for(const D of a.chunks)S+=D.length;for(let D=0;D0&&(a.chunks[a.chunks.length]=a.current.length===a.offset?a.current.join(""):a.current.slice(0,a.offset).join(""),a.offset=0),a.chunks};const c=[];function v(a,S){S>0&&_(a,c[S])}function _(a,S){a.offset===a.capacity&&(a.chunks[a.chunks.length]=a.current.join(""),a.offset=0),a.current[a.offset++]=S}!function(){let a="";for(let S=0;S<512;S++)c[S]=a,a+=" "}(),o.newline=function i(a){_(a,"\n")},o.whitespace=v,o.whitespace1=function O(a){_(a," ")},o.write=function b(a,S){S&&(a.offset===a.capacity&&(a.chunks[a.chunks.length]=a.current.join(""),a.offset=0),a.current[a.offset++]=S)},o.writeSafe=_,o.writePadLeft=function M(a,S,D){S?(v(a,D-S.length),_(a,S)):v(a,D)},o.writePadRight=function I(a,S,D){if(!S)return void v(a,D);const R=D-S.length;_(a,S),v(a,R)},o.writeInteger=function l(a,S){_(a,""+S)},o.writeIntegerAndSpace=function m(a,S){_(a,S+" ")},o.writeIntegerPadLeft=function u(a,S,D){const R=""+S;v(a,D-R.length),_(a,R)},o.writeIntegerPadRight=function d(a,S,D){const R=""+S,f=D-R.length;_(a,R),v(a,f)},o.writeFloat=function s(a,S,D){_(a,""+Math.round(D*S)/D)},o.writeFloatPadLeft=function C(a,S,D,R){const f=""+Math.round(D*S)/D;v(a,R-f.length),_(a,f)},o.writeFloatPadRight=function h(a,S,D,R){const f=""+Math.round(D*S)/D,p=R-f.length;_(a,f),v(a,p)}}(e||(e={}))},7785:(tn,Ue,n)=>{"use strict";function r(h,a=" "){return h.replace(/([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g,`$1${a}$2`)}function t(h){return i(r(h))}n.d(Ue,{GW:()=>l,Hh:()=>t,Kq:()=>s,LX:()=>I,Mk:()=>M,Nt:()=>C,ZH:()=>i,r4:()=>c});const y=h=>h.toUpperCase();function c(h){return h?"string"==typeof h?h.toUpperCase():`${h}`.toUpperCase():""}function i(h){return h.toLowerCase().replace(/^\w|\s\w/g,y)}function M(h){return i(r(function v(h){return h.replace(/_/g," ")}(function b(h){return h.replace(/-/g," ")}(h))))}function I(h,a,S,D){const R=D.length;if(R>S-a)return!1;for(let f=0;f]+>/g,"")}function C(h){return h.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}},1372:(tn,Ue,n)=>{"use strict";function e(t){return Object.keys(t)}function o(t){throw new Error("unreachable")}function r(t){return"function"==typeof t?.then}n.d(Ue,{$X:()=>r,dr:()=>o,mX:()=>e})},5091:(tn,Ue,n)=>{"use strict";function o(r,t){return`${r}${"/"===r[r.length-1]||"/"===t[0]?"":"/"}${t}`}n.d(Ue,{r:()=>o})},3559:(tn,Ue,n)=>{"use strict";n.d(Ue,{k:()=>o});var o,e=n(9854);!function(r){const t=typeof btoa<"u"?btoa:v=>Buffer.from(v).toString("base64"),A=[];r.create22=function y(){let v=+new Date+(0,e.t)();for(let O=0;O<16;O++)A[O]=String.fromCharCode((v+255*Math.random())%255|0),v=Math.floor(v/255);return t(A.join("")).replace(/\+/g,"-").replace(/\//g,"_").substr(0,22)},r.createv4=function c(){let v=+new Date+(0,e.t)();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(b){const _=(v+16*Math.random())%16|0;return v=Math.floor(v/16),("x"===b?_:3&_|8).toString(16)})},r.is=function i(v){return"string"==typeof v}}(o||(o={}))},7187:(tn,Ue,n)=>{"use strict";n.d(Ue,{IQ:()=>A,xv:()=>t});var o,y,e=n(7778);(y=o||(o={})).create=function c(v){return{ref:v}},y.set=function i(v,O){return v.ref=O,v};const r=(0,e.q)(0,2147483647);var t,A;!function(y){y.create=function c(v,O){return{id:r(),version:0,value:v,metadata:O}},y.withValue=function i(v,O){return{id:v.id,version:v.version+1,value:O,metadata:v.metadata}}}(t||(t={})),function(y){function i(b,_){return o.set(b,t.withValue(b.ref,_))}y.create=function c(b,_){return o.create(t.create(b,_))},y.update=i,y.set=function v(b,_){return o.set(b,_)},y.updateIfChanged=function O(b,_){return b.ref.value!==_?i(b,_):b}}(A||(A={}))},6985:(tn,Ue,n)=>{"use strict";n.d(Ue,{qQ:()=>ie,Aq:()=>Ve,$1:()=>Be});var e=n(467);function t(se,ae){return se[ae]|se[ae+1]<<8}function A(se,ae,ge){se[ae]=255&ge,se[ae+1]=ge>>8&255}function y(se,ae){return 16777216*se[ae+3]+(se[ae+2]<<16|se[ae+1]<<8|se[ae])}function c(se,ae,ge){se[ae]=255&ge,se[ae+1]=ge>>8&255,se[ae+2]=ge>>16&255,se[ae+3]=ge>>24&255}function v(se){return se.length<2?"0"+se:se}function _(se){const ae=se.length;let ge=0;for(let Ie=0;Ie>>1:ge>>>=1;se[ae]=ge}return se}();function l(se,ae,ge){return 4294967295^function I(se,ae,ge,Ie){for(let Le=0;Le>>8;return se}(4294967295,se,ae,ge)}const u=function(){const se=Uint16Array,ae=Uint32Array;return{next_code:new se(16),bl_count:new se(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],exb:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],ldef:new se(32),df0:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],dxb:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],ddef:new ae(32),flmap:new se(512),fltree:[],fdmap:new se(32),fdtree:[],lmap:new se(32768),ltree:[],ttree:[],dmap:new se(32768),dtree:[],imap:new se(512),itree:[],rev15:new se(32768),lhst:new ae(286),dhst:new ae(30),ihst:new ae(19),lits:new ae(15e3),strt:new se(65536),prev:new se(32768)}}();function d(se,ae,ge){const Ie=se.length,Le=u.rev15;for(let nt=0;nt>1<<4|Lt,en=ae-Lt;let Bt=se[nt]<>>15-ae]=Je,Bt++}}function s(se,ae){const ge=se.length,Ie=u.bl_count;for(let je=0;je<=ae;je++)Ie[je]=0;for(let je=1;je>>Ie}function a(se,ae){const{data:ge,noBuf:Ie}=se;let{buf:Le,BFINAL:nt,off:je,pos:Lt}=se,Je=0;for(;0===nt&&Jeut&&(ut=yt)}Lt+=3*Ke,s(u.itree,ut),d(u.itree,ut,u.imap),en=u.lmap,Bt=u.dmap,Lt=f(u.imap,(1<>>4;if(Me>>>8){if(256===Me)break;{let Ke=je+Me-254;if(Me>264){const yt=u.ldef[Me-257];Ke=je+(yt>>>3)+E(ge,Lt,7&yt),Lt+=7&yt}const ut=Bt[L(ge,Lt)&$e];Lt+=15&ut;const sn=u.ddef[ut>>>4],gt=(sn>>>4)+T(ge,Lt,15&sn);for(Lt+=15&sn,Ie&&(Le=R(Le,je+(1<<17)));je>>3),Me=ge[_t-4]|ge[_t-3]<<8;Ie&&(Le=R(Le,je+Me)),Le.set(new Uint8Array(ge.buffer,ge.byteOffset+_t,Me),je),Lt=_t+Me<<3,je+=Me}}se.buf=Le,se.BFINAL=nt,se.off=je,se.pos=Lt}function D(){return(D=(0,e.A)(function*(se,ae,ge){if(3===ae[0]&&0===ae[1])return ge||new Uint8Array(0);const Ie=function h(se,ae){const ge=void 0===ae;return void 0===ae&&(ae=new Uint8Array(se.length>>>2<<3)),{data:se,buf:ae,noBuf:ge,BFINAL:0,off:0,pos:0}}(ae,ge);for(;0===Ie.BFINAL;)se.shouldUpdate&&(yield se.update({message:"Inflating blocks...",current:Ie.pos,max:ae.length})),a(Ie,100);return Ie.buf.length===Ie.off?Ie.buf:Ie.buf.slice(0,Ie.off)})).apply(this,arguments)}function R(se,ae){const ge=se.length;if(ae<=ge)return se;const Ie=new Uint8Array(Math.max(ge<<1,ae));return Ie.set(se,0),Ie}function f(se,ae,ge,Ie,Le,nt){let je=0;for(;je>>4;if(Je<=15)nt[je]=Je,je++;else{let en=0,Bt=0;16===Je?(Bt=3+E(Ie,Le,2),Le+=2,en=nt[je-1]):17===Je?(Bt=3+E(Ie,Le,3),Le+=3):18===Je&&(Bt=11+E(Ie,Le,7),Le+=7);const pn=je+Bt;for(;je>>1;for(;ntLe&&(Le=Lt),nt++}for(;nt>>3]|se[1+(ae>>>3)]<<8)>>>(7&ae)&(1<>>3]|se[1+(ae>>>3)]<<8|se[2+(ae>>>3)]<<16)>>>(7&ae)&(1<>>3]|se[1+(ae>>>3)]<<8|se[2+(ae>>>3)]<<16)>>>(7&ae)}!function(){for(let ge=0;ge<32768;ge++){let Ie=ge;Ie=(2863311530&Ie)>>>1|(1431655765&Ie)<<1,Ie=(3435973836&Ie)>>>2|(858993459&Ie)<<2,Ie=(4042322160&Ie)>>>4|(252645135&Ie)<<4,Ie=(4278255360&Ie)>>>8|(16711935&Ie)<<8,u.rev15[ge]=(Ie>>>16|Ie<<16)>>>17}function ae(ge,Ie,Le){for(;0!=Ie--;)ge.push(0,Le)}for(let ge=0;ge<32;ge++)u.ldef[ge]=u.of0[ge]<<3|u.exb[ge],u.ddef[ge]=u.df0[ge]<<4|u.dxb[ge];ae(u.fltree,144,8),ae(u.fltree,112,9),ae(u.fltree,24,7),ae(u.fltree,8,8),s(u.fltree,9),d(u.fltree,9,u.flmap),C(u.fltree,9),ae(u.fdtree,32,5),s(u.fdtree,5),d(u.fdtree,5,u.fdmap),C(u.fdtree,5),ae(u.itree,19,0),ae(u.ltree,286,0),ae(u.dtree,30,0),ae(u.ttree,320,0)}();var w=n(1372);function Q(se,ae,ge){const Ie=[],Le=se.length,nt=ae.length;for(let _t=0;_tge&&(function V(se,ae,ge){let Ie=0,Le=0;const nt=1<ae;Ie++){const je=se[Ie].d;se[Ie].d=ae,Le+=nt-(1<>>=ge-ae;Le>0;){const je=se[Ie].d;je=0;Ie--)se[Ie].d===ae&&Le<0&&(se[Ie].d--,Le++);0!==Le&&console.log("debt left")}(Lt,ge,mt),mt=ge);for(let _t=0;_t14e3||Bt>26697)&&Ie-je>100&&(Je>>16,yt=65535&sn,At=ee(gt,u.of0);u.lhst[257+At]++;const Gt=ee(yt,u.df0);u.dhst[Gt]++,$e+=u.exb[At]+u.dxb[Gt],Me[en]=gt<<23|je-Je,Me[en+1]=yt<<16|At<<8|Gt,en+=2,Je=je+gt}else u.lhst[ge[je]]++;Bt++}}se.i=je,se.pos=Lt,se.cvrd=Je,se.li=en,se.lc=Bt,se.bs=pn,se.ebits=$e,se.c=mt,se.nc=_t}const k=[[0,0,0,0,0],[4,4,8,4,0],[4,5,16,8,0],[4,6,16,16,0],[4,10,16,32,0],[8,16,32,32,0],[8,16,128,128,0],[8,32,128,256,0],[32,128,258,1024,1],[32,258,258,4096,1]];function $(){return($=(0,e.A)(function*(se,ae,ge,Ie,Le){const nt=function U(se,ae,ge,Ie){const{lits:Le,strt:nt,prev:je}=u;return{data:se,out:ae,opt:k[Ie],i:0,pos:ge<<3,cvrd:0,dlen:se.length,li:0,lc:0,bs:0,ebits:0,c:0,nc:0,lits:Le,strt:nt,prev:je}}(ae,ge,Ie,Le),{dlen:je}=nt;if(0===Le){let{i:_t,pos:Me}=nt;for(;_t>>3}for(je>2&&(nt.nc=te(ae,0),nt.strt[nt.nc]=0);nt.i>>3})).apply(this,arguments)}function J(se,ae,ge,Ie,Le,nt){let je=32767&ae,Lt=ge[je],Je=je-Lt+32768&32767;if(Lt===je||Ie!==te(se,ae-Je))return 0;let en=0,Bt=0;const pn=Math.min(32767,ae);for(;Je<=pn&&0!=--nt&&Lt!==je;){if(0===en||se[ae+en]===se[ae+en-Je]){let $e=W(se,ae,Je);if($e>en){if(en=$e,Bt=Je,en>=Le)break;Je+2<$e&&($e=Je+2);let mt=0;for(let _t=0;_t<$e-2;_t++){const Me=ae-Je+_t+32768&32767,ut=Me-ge[Me]+32768&32767;ut>mt&&(mt=ut,Lt=Me)}}}je=Lt,Lt=ge[je],Je+=je-Lt+32768&32767}return en<<16|Bt}function W(se,ae,ge){if(se[ae]!==se[ae-ge]||se[ae+1]!==se[ae+1-ge]||se[ae+2]!==se[ae+2-ge])return 0;const Ie=ae,Le=Math.min(se.length,ae+258);for(ae+=3;ae4&&0===u.itree[1+(u.ordr[Lt-1]<<1)];)Lt--;return[se,ae,je,Ie,nt,Lt,ge,Le]}(),ut=32+(Je+3&7?8-(Je+3&7):0)+(je<<3),Kt=Ie+Z(u.fltree,u.lhst)+Z(u.fdtree,u.dhst);let sn=Ie+Z(u.ltree,u.lhst)+Z(u.dtree,u.dhst);sn+=14+3*_t+Z(u.itree,u.ihst)+(2*u.ihst[16]+3*u.ihst[17]+7*u.ihst[18]);for(let yt=0;yt<286;yt++)u.lhst[yt]=0;for(let yt=0;yt<30;yt++)u.dhst[yt]=0;for(let yt=0;yt<19;yt++)u.ihst[yt]=0;const gt=ut>>23,nn=Gt+(8388607&tt);for(;Gt>16,jt=bn>>8&255,It=255&bn;_e(Lt,Je=g(257+jt,yt,Lt,Je),Mt-u.of0[jt]),xe(Lt,Je=g(It,At,Lt,Je+=u.exb[jt]),Dn-u.df0[It]),Je+=u.dxb[It],Gt+=Mt}}Je=g(256,yt,Lt,Je)}return Je}function ye(se,ae,ge,Ie,Le){let nt=Le>>>3;return Ie[nt]=ge,Ie[nt+1]=ge>>>8,Ie[nt+2]=255-Ie[nt],Ie[nt+3]=255-Ie[nt+1],nt+=4,Ie.set(new Uint8Array(se.buffer,ae,ge),nt),Le+(ge+4<<3)}function Z(se,ae){let ge=0;for(let Ie=0;Ie15&&(_e(ge,Ie,je),Ie+=Lt)}return Ie}function Y(se,ae){let ge=se.length;for(;2!==ge&&0===se[ge-1];)ge-=2;for(let Ie=0;Ie>>1,138);en<11?ae.push(17,en-3):ae.push(18,en-11),Ie+=2*en-2}else if(Le===Lt&&nt===Le&&je===Le){let Je=Ie+5;for(;Je+2>>1,6);ae.push(16,en-3),Ie+=2*en-2}else ae.push(Le,0)}return ge>>>1}function ee(se,ae){let ge=0;return ae[16|ge]<=se&&(ge|=16),ae[8|ge]<=se&&(ge|=8),ae[4|ge]<=se&&(ge|=4),ae[2|ge]<=se&&(ge|=2),ae[1|ge]<=se&&(ge|=1),ge}function g(se,ae,ge,Ie){return xe(ge,Ie,ae[se<<1]),Ie+ae[1+(se<<1)]}function _e(se,ae,ge){const Ie=ae>>>3;se[Ie]|=ge<<=7&ae,se[Ie+1]|=ge>>>8}function xe(se,ae,ge){const Ie=ae>>>3;se[Ie]|=ge<<=7&ae,se[Ie+1]|=ge>>>8,se[Ie+2]|=ge>>>16}var le=n(4824);function Be(se,ae){return Ce.apply(this,arguments)}function Ce(){return(Ce=(0,e.A)(function*(se,ae,ge=!1){const Ie=Object.create(null),Le=new Uint8Array(ae);if(19280!==t(Le,0))throw new Error('Invalid ZIP file. A valid ZIP file must start with two magic bytes \\x50\\x4b ("PK" in ASCII).');let nt=Le.length-4;for(;101010256!==y(Le,nt);)nt--;let je=nt;je+=4,je+=4;const Lt=t(Le,je);je+=2,je+=2,je+=4;const Je=y(Le,je);je+=4,je=Je;for(let en=0;enfunction ue(se,ae){return re.apply(this,arguments)}(ge,se,ae))}function re(){return(re=(0,e.A)(function*(se,ae,ge=!1){let Ie=0;const Le={};for(const pn in ae){const $e=!ve(pn)&&!ge,mt=ae[pn],_t=l(mt,0,mt.length);Le[pn]={cpr:$e,usize:mt.length,crc:_t,file:$e?yield be(se,mt):mt}}for(const pn in Le)Ie+=Le[pn].file.length+30+46+2*_(pn);Ie+=22;const nt=new Uint8Array(Ie);let je=0;const Lt=[];for(const pn in Le){const $e=Le[pn];Lt.push(je),je=ce(nt,je,pn,$e,0)}let Je=0;const en=je;for(const pn in Le){const $e=Le[pn];Lt.push(je),je=ce(nt,je,pn,$e,1,Lt[Je++])}const Bt=je-en;return c(nt,je,101010256),je+=4,je+=4,A(nt,je,Je),je+=2,A(nt,je,Je),je+=2,c(nt,je,Bt),je+=4,c(nt,je,en),je+=4,je+=2,nt.buffer})).apply(this,arguments)}function ve(se){const ae=se.split(".").pop().toLowerCase();return-1!=="png,jpg,jpeg,zip".indexOf(ae)}function ce(se,ae,ge,Ie,Le,nt=0){const je=Ie.file;c(se,ae,0===Le?67324752:33639248),ae+=4,1===Le&&(ae+=2),A(se,ae,20),A(se,ae+=2,0),A(se,ae+=2,Ie.cpr?8:0),c(se,ae+=2,0),c(se,ae+=4,Ie.crc),c(se,ae+=4,je.length),c(se,ae+=4,Ie.usize),A(se,ae+=4,_(ge)),A(se,ae+=2,0),ae+=2,1===Le&&(ae+=2,ae+=2,c(se,ae+=6,nt),ae+=4);const Lt=function b(se,ae,ge){const Ie=ge.length;let Le=0;for(let nt=0;nt>18,se[ae+Le+1]=128|je>>12&63,se[ae+Le+2]=128|je>>6&63,se[ae+Le+3]=128|63&je,Le+=4}else se[ae+Le]=224|je>>12,se[ae+Le+1]=128|je>>6&63,se[ae+Le+2]=128|63&je,Le+=3;else se[ae+Le]=192|je>>6,se[ae+Le+1]=128|63&je,Le+=2;else se[ae+Le]=je,Le++}return Le}(se,ae,ge);return ae+=Lt,0===Le&&(se.set(je,ae),ae+=je.length),ae}},2209:(tn,Ue,n)=>{"use strict";var e=n(1395),o=Symbol.for("react.element"),r=Symbol.for("react.fragment"),t=Object.prototype.hasOwnProperty,A=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,y={key:!0,ref:!0,__self:!0,__source:!0};function c(i,v,O){var b,_={},M=null,I=null;for(b in void 0!==O&&(M=""+O),void 0!==v.key&&(M=""+v.key),void 0!==v.ref&&(I=v.ref),v)t.call(v,b)&&!y.hasOwnProperty(b)&&(_[b]=v[b]);if(i&&i.defaultProps)for(b in v=i.defaultProps)void 0===_[b]&&(_[b]=v[b]);return{$$typeof:o,type:i,key:M,ref:I,props:_,_owner:A.current}}Ue.Fragment=r,Ue.jsx=c,Ue.jsxs=c},330:(tn,Ue)=>{"use strict";var n=Symbol.for("react.element"),e=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),t=Symbol.for("react.profiler"),A=Symbol.for("react.provider"),y=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),i=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),O=Symbol.for("react.lazy"),b=Symbol.iterator,M={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},I=Object.assign,l={};function m(k,H,$){this.props=k,this.context=H,this.refs=l,this.updater=$||M}function u(){}function d(k,H,$){this.props=k,this.context=H,this.refs=l,this.updater=$||M}m.prototype.isReactComponent={},m.prototype.setState=function(k,H){if("object"!=typeof k&&"function"!=typeof k&&null!=k)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,k,H,"setState")},m.prototype.forceUpdate=function(k){this.updater.enqueueForceUpdate(this,k,"forceUpdate")},u.prototype=m.prototype;var s=d.prototype=new u;s.constructor=d,I(s,m.prototype),s.isPureReactComponent=!0;var C=Array.isArray,h=Object.prototype.hasOwnProperty,a={current:null},S={key:!0,ref:!0,__self:!0,__source:!0};function D(k,H,$){var J,W={},te=null,de=null;if(null!=H)for(J in void 0!==H.ref&&(de=H.ref),void 0!==H.key&&(te=""+H.key),H)h.call(H,J)&&!S.hasOwnProperty(J)&&(W[J]=H[J]);var ye=arguments.length-2;if(1===ye)W.children=$;else if(1{"use strict";tn.exports=n(330)},9619:(tn,Ue,n)=>{"use strict";tn.exports=n(2209)},2771:(tn,Ue,n)=>{"use strict";n.d(Ue,{m:()=>r});var e=n(1413),o=n(6129);class r extends e.B{constructor(A=1/0,y=1/0,c=o.U){super(),this._bufferSize=A,this._windowTime=y,this._timestampProvider=c,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=y===1/0,this._bufferSize=Math.max(1,A),this._windowTime=Math.max(1,y)}next(A){const{isStopped:y,_buffer:c,_infiniteTimeWindow:i,_timestampProvider:v,_windowTime:O}=this;y||(c.push(A),!i&&c.push(v.now()+O)),this._trimBuffer(),super.next(A)}_subscribe(A){this._throwIfClosed(),this._trimBuffer();const y=this._innerSubscribe(A),{_infiniteTimeWindow:c,_buffer:i}=this,v=i.slice();for(let O=0;O{"use strict";n.d(Ue,{h:()=>y});var e=n(6365),o=n(8750),r=n(983),t=n(9326),A=n(6648);function y(...c){const i=(0,t.lI)(c),v=(0,t.R0)(c,1/0),O=c;return O.length?1===O.length?(0,o.Tg)(O[0]):(0,e.U)(v)((0,A.H)(O,i)):r.w}},1584:(tn,Ue,n)=>{"use strict";n.d(Ue,{O:()=>A});var e=n(1985),o=n(8839),r=n(9470);function A(y=0,c,i=o.b){let v=-1;return null!=c&&((0,r.m)(c)?i=c:v=c),new e.c(O=>{let b=function t(y){return y instanceof Date&&!isNaN(y)}(y)?+y-i.now():y;b<0&&(b=0);let _=0;return i.schedule(function(){O.closed||(O.next(_++),0<=v?this.schedule(void 0,v):O.complete())},b)})}},140:(tn,Ue,n)=>{"use strict";n.d(Ue,{v:()=>i});var e=n(1983),o=n(9974),r=n(2326),t=n(6450),A=n(1203),y=n(9326);function c(...v){const O=(0,y.ms)(v);return O?(0,A.F)(c(...v),(0,t.I)(O)):(0,o.N)((b,_)=>{(0,e.P)([b,...(0,r.K)(v)])(_)})}function i(...v){return c(...v)}},152:(tn,Ue,n)=>{"use strict";n.d(Ue,{B:()=>t});var e=n(8839),o=n(9974),r=n(4360);function t(A,y=e.E){return(0,o.N)((c,i)=>{let v=null,O=null,b=null;const _=()=>{if(v){v.unsubscribe(),v=null;const I=O;O=null,i.next(I)}};function M(){const I=b+A,l=y.now();if(l{O=I,b=y.now(),v||(v=y.schedule(M,A),i.add(v))},()=>{_(),i.complete()},void 0,()=>{O=v=null}))})}},3294:(tn,Ue,n)=>{"use strict";n.d(Ue,{F:()=>t});var e=n(3669),o=n(9974),r=n(4360);function t(y,c=e.D){return y=y??A,(0,o.N)((i,v)=>{let O,b=!0;i.subscribe((0,r._)(v,_=>{const M=c(_);(b||!y(O,M))&&(b=!1,O=M,v.next(_))}))})}function A(y,c){return y===c}},9568:(tn,Ue,n)=>{"use strict";n.d(Ue,{t:()=>i});var e=n(2771),o=n(8750),r=n(1413),t=n(7707),A=n(9974);function c(v,O,...b){if(!0===O)return void v();if(!1===O)return;const _=new t.Ms({next:()=>{_.unsubscribe(),v()}});return(0,o.Tg)(O(...b)).subscribe(_)}function i(v,O,b){let _,M=!1;return v&&"object"==typeof v?({bufferSize:_=1/0,windowTime:O=1/0,refCount:M=!1,scheduler:b}=v):_=v??1/0,function y(v={}){const{connector:O=(()=>new r.B),resetOnError:b=!0,resetOnComplete:_=!0,resetOnRefCountZero:M=!0}=v;return I=>{let l,m,u,d=0,s=!1,C=!1;const h=()=>{m?.unsubscribe(),m=void 0},a=()=>{h(),l=u=void 0,s=C=!1},S=()=>{const D=l;a(),D?.unsubscribe()};return(0,A.N)((D,R)=>{d++,!C&&!s&&h();const f=u=u??O();R.add(()=>{d--,0===d&&!C&&!s&&(m=c(S,M))}),f.subscribe(R),!l&&d>0&&(l=new t.Ms({next:p=>f.next(p),error:p=>{C=!0,h(),m=c(a,b,p),f.error(p)},complete:()=>{s=!0,h(),m=c(a,_),f.complete()}}),(0,o.Tg)(D).subscribe(l))})(I)}}({connector:()=>new e.m(_,O,b),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:M})}},3386:(tn,Ue,n)=>{"use strict";n.d(Ue,{c:()=>c});var e=n(8839),o=n(9974),r=n(4360),t=n(8750),y=n(1584);function c(i,v=e.E,O){const b=(0,y.O)(i,v);return function A(i,v){return(0,o.N)((O,b)=>{const{leading:_=!0,trailing:M=!1}=v??{};let I=!1,l=null,m=null,u=!1;const d=()=>{m?.unsubscribe(),m=null,M&&(h(),u&&b.complete())},s=()=>{m=null,u&&b.complete()},C=a=>m=(0,t.Tg)(i(a)).subscribe((0,r._)(b,d,s)),h=()=>{if(I){I=!1;const a=l;l=null,b.next(a),!u&&C(a)}};O.subscribe((0,r._)(b,a=>{I=!0,l=a,(!m||m.closed)&&(_?h():C(a))},()=>{u=!0,(!(M&&I&&m)||m.closed)&&b.complete()}))})}(()=>b,O)}},8839:(tn,Ue,n)=>{"use strict";n.d(Ue,{b:()=>O,E:()=>v});var e=n(8359);class o extends e.yU{constructor(_,M){super()}schedule(_,M=0){return this}}const r={setInterval(b,_,...M){const{delegate:I}=r;return I?.setInterval?I.setInterval(b,_,...M):setInterval(b,_,...M)},clearInterval(b){const{delegate:_}=r;return(_?.clearInterval||clearInterval)(b)},delegate:void 0};var t=n(7908),y=n(6129);class c{constructor(_,M=c.now){this.schedulerActionCtor=_,this.now=M}schedule(_,M=0,I){return new this.schedulerActionCtor(this,_).schedule(I,M)}}c.now=y.U.now;const v=new class i extends c{constructor(_,M=c.now){super(_,M),this.actions=[],this._active=!1}flush(_){const{actions:M}=this;if(this._active)return void M.push(_);let I;this._active=!0;do{if(I=_.execute(_.state,_.delay))break}while(_=M.shift());if(this._active=!1,I){for(;_=M.shift();)_.unsubscribe();throw I}}}(class A extends o{constructor(_,M){super(_,M),this.scheduler=_,this.work=M,this.pending=!1}schedule(_,M=0){var I;if(this.closed)return this;this.state=_;const l=this.id,m=this.scheduler;return null!=l&&(this.id=this.recycleAsyncId(m,l,M)),this.pending=!0,this.delay=M,this.id=null!==(I=this.id)&&void 0!==I?I:this.requestAsyncId(m,this.id,M),this}requestAsyncId(_,M,I=0){return r.setInterval(_.flush.bind(_,this),I)}recycleAsyncId(_,M,I=0){if(null!=I&&this.delay===I&&!1===this.pending)return M;null!=M&&r.clearInterval(M)}execute(_,M){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const I=this._execute(_,M);if(I)return I;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(_,M){let l,I=!1;try{this.work(_)}catch(m){I=!0,l=m||new Error("Scheduled action threw falsy error")}if(I)return this.unsubscribe(),l}unsubscribe(){if(!this.closed){const{id:_,scheduler:M}=this,{actions:I}=M;this.work=this.state=this.scheduler=null,this.pending=!1,(0,t.o)(I,this),null!=_&&(this.id=this.recycleAsyncId(M,_,null)),this.delay=null,super.unsubscribe()}}}),O=v},6129:(tn,Ue,n)=>{"use strict";n.d(Ue,{U:()=>e});const e={now:()=>(e.delegate||Date).now(),delegate:void 0}},2326:(tn,Ue,n)=>{"use strict";n.d(Ue,{K:()=>o});const{isArray:e}=Array;function o(r){return 1===r.length&&e(r[0])?r[0]:r}},2684:tn=>{tn.exports=XMLHttpRequest},1025:(tn,Ue,n)=>{"use strict";n.d(Ue,{ht:()=>Re,jM:()=>Be});var e=Symbol.for("immer-nothing"),o=Symbol.for("immer-draftable"),r=Symbol.for("immer-state");function A(K,...ne){throw new Error(`[Immer] minified error nr: ${K}. Full error at: https://bit.ly/3cXEKWf`)}var y=Object.getPrototypeOf;function c(K){return!!K&&!!K[r]}function i(K){return!!K&&(O(K)||Array.isArray(K)||!!K[o]||!!K.constructor?.[o]||d(K)||s(K))}var v=Object.prototype.constructor.toString();function O(K){if(!K||"object"!=typeof K)return!1;const ne=y(K);if(null===ne)return!0;const be=Object.hasOwnProperty.call(ne,"constructor")&&ne.constructor;return be===Object||"function"==typeof be&&Function.toString.call(be)===v}function _(K,ne){0===M(K)?Reflect.ownKeys(K).forEach(be=>{ne(be,K[be],K)}):K.forEach((be,Te)=>ne(Te,be,K))}function M(K){const ne=K[r];return ne?ne.type_:Array.isArray(K)?1:d(K)?2:s(K)?3:0}function I(K,ne){return 2===M(K)?K.has(ne):Object.prototype.hasOwnProperty.call(K,ne)}function m(K,ne,be){const Te=M(K);2===Te?K.set(ne,be):3===Te?K.add(be):K[ne]=be}function d(K){return K instanceof Map}function s(K){return K instanceof Set}function C(K){return K.copy_||K.base_}function h(K,ne){if(d(K))return new Map(K);if(s(K))return new Set(K);if(Array.isArray(K))return Array.prototype.slice.call(K);const be=O(K);if(!0===ne||"class_only"===ne&&!be){const Te=Object.getOwnPropertyDescriptors(K);delete Te[r];let ie=Reflect.ownKeys(Te);for(let ue=0;ue1&&(K.set=K.add=K.clear=K.delete=S),Object.freeze(K),ne&&Object.entries(K).forEach(([be,Te])=>a(Te,!0))),K}function S(){A(2)}function D(K){return Object.isFrozen(K)}var E,R={};function f(K){const ne=R[K];return ne||A(0),ne}function T(){return E}function w(K,ne){ne&&(f("Patches"),K.patches_=[],K.inversePatches_=[],K.patchListener_=ne)}function Q(K){G(K),K.drafts_.forEach(U),K.drafts_=null}function G(K){K===E&&(E=K.parent_)}function V(K){return E=function L(K,ne){return{drafts_:[],parent_:K,immer_:ne,canAutoFreeze_:!0,unfinalizedDrafts_:0}}(E,K)}function U(K){const ne=K[r];0===ne.type_||1===ne.type_?ne.revoke_():ne.revoked_=!0}function N(K,ne){ne.unfinalizedDrafts_=ne.drafts_.length;const be=ne.drafts_[0];return void 0!==K&&K!==be?(be[r].modified_&&(Q(ne),A(4)),i(K)&&(K=k(ne,K),ne.parent_||$(ne,K)),ne.patches_&&f("Patches").generateReplacementPatches_(be[r].base_,K,ne.patches_,ne.inversePatches_)):K=k(ne,be,[]),Q(ne),ne.patches_&&ne.patchListener_(ne.patches_,ne.inversePatches_),K!==e?K:void 0}function k(K,ne,be){if(D(ne))return ne;const Te=ne[r];if(!Te)return _(ne,(ie,ue)=>H(K,Te,ne,ie,ue,be)),ne;if(Te.scope_!==K)return ne;if(!Te.modified_)return $(K,Te.base_,!0),Te.base_;if(!Te.finalized_){Te.finalized_=!0,Te.scope_.unfinalizedDrafts_--;const ie=Te.copy_;let ue=ie,re=!1;3===Te.type_&&(ue=new Set(ie),ie.clear(),re=!0),_(ue,(ve,ce)=>H(K,Te,ie,ve,ce,be,re)),$(K,ie,!1),be&&K.patches_&&f("Patches").generatePatches_(Te,be,K.patches_,K.inversePatches_)}return Te.copy_}function H(K,ne,be,Te,ie,ue,re){if(c(ie)){const ce=k(K,ie,ue&&ne&&3!==ne.type_&&!I(ne.assigned_,Te)?ue.concat(Te):void 0);if(m(be,Te,ce),!c(ce))return;K.canAutoFreeze_=!1}else re&&be.add(ie);if(i(ie)&&!D(ie)){if(!K.immer_.autoFreeze_&&K.unfinalizedDrafts_<1)return;k(K,ie),(!ne||!ne.scope_.parent_)&&"symbol"!=typeof Te&&Object.prototype.propertyIsEnumerable.call(be,Te)&&$(K,ie)}}function $(K,ne,be=!1){!K.parent_&&K.immer_.autoFreeze_&&K.canAutoFreeze_&&a(ne,be)}var W={get(K,ne){if(ne===r)return K;const be=C(K);if(!I(be,ne))return function ye(K,ne,be){const Te=j(ne,be);return Te?"value"in Te?Te.value:Te.get?.call(K.draft_):void 0}(K,be,ne);const Te=be[ne];return K.finalized_||!i(Te)?Te:Te===de(K.base_,ne)?(q(K),K.copy_[ne]=ee(Te,K)):Te},has:(K,ne)=>ne in C(K),ownKeys:K=>Reflect.ownKeys(C(K)),set(K,ne,be){const Te=j(C(K),ne);if(Te?.set)return Te.set.call(K.draft_,be),!0;if(!K.modified_){const ie=de(C(K),ne),ue=ie?.[r];if(ue&&ue.base_===be)return K.copy_[ne]=be,K.assigned_[ne]=!1,!0;if(function u(K,ne){return K===ne?0!==K||1/K==1/ne:K!=K&&ne!=ne}(be,ie)&&(void 0!==be||I(K.base_,ne)))return!0;q(K),Z(K)}return K.copy_[ne]===be&&(void 0!==be||ne in K.copy_)||Number.isNaN(be)&&Number.isNaN(K.copy_[ne])||(K.copy_[ne]=be,K.assigned_[ne]=!0),!0},deleteProperty:(K,ne)=>(void 0!==de(K.base_,ne)||ne in K.base_?(K.assigned_[ne]=!1,q(K),Z(K)):delete K.assigned_[ne],K.copy_&&delete K.copy_[ne],!0),getOwnPropertyDescriptor(K,ne){const be=C(K),Te=Reflect.getOwnPropertyDescriptor(be,ne);return Te&&{writable:!0,configurable:1!==K.type_||"length"!==ne,enumerable:Te.enumerable,value:be[ne]}},defineProperty(){A(11)},getPrototypeOf:K=>y(K.base_),setPrototypeOf(){A(12)}},te={};function de(K,ne){const be=K[r];return(be?C(be):K)[ne]}function j(K,ne){if(!(ne in K))return;let be=y(K);for(;be;){const Te=Object.getOwnPropertyDescriptor(be,ne);if(Te)return Te;be=y(be)}}function Z(K){K.modified_||(K.modified_=!0,K.parent_&&Z(K.parent_))}function q(K){K.copy_||(K.copy_=h(K.base_,K.scope_.immer_.useStrictShallowCopy_))}function ee(K,ne){const be=d(K)?f("MapSet").proxyMap_(K,ne):s(K)?f("MapSet").proxySet_(K,ne):function J(K,ne){const be=Array.isArray(K),Te={type_:be?1:0,scope_:ne?ne.scope_:T(),modified_:!1,finalized_:!1,assigned_:{},parent_:ne,base_:K,draft_:null,copy_:null,revoke_:null,isManual_:!1};let ie=Te,ue=W;be&&(ie=[Te],ue=te);const{revoke:re,proxy:ve}=Proxy.revocable(ie,ue);return Te.draft_=ve,Te.revoke_=re,ve}(K,ne);return(ne?ne.scope_:T()).drafts_.push(be),be}function _e(K){if(!i(K)||D(K))return K;const ne=K[r];let be;if(ne){if(!ne.modified_)return ne.base_;ne.finalized_=!0,be=h(K,ne.scope_.immer_.useStrictShallowCopy_)}else be=h(K,!0);return _(be,(Te,ie)=>{m(be,Te,_e(ie))}),ne&&(ne.finalized_=!1),be}_(W,(K,ne)=>{te[K]=function(){return arguments[0]=arguments[0][0],ne.apply(this,arguments)}}),te.deleteProperty=function(K,ne){return te.set.call(this,K,ne,void 0)},te.set=function(K,ne,be){return W.set.call(this,K[0],ne,be,K[0])};var Ae=new class{constructor(K){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(ne,be,Te)=>{if("function"==typeof ne&&"function"!=typeof be){const ue=be;be=ne;const re=this;return function(ce=ue,...se){return re.produce(ce,ae=>be.call(this,ae,...se))}}let ie;if("function"!=typeof be&&A(6),void 0!==Te&&"function"!=typeof Te&&A(7),i(ne)){const ue=V(this),re=ee(ne,void 0);let ve=!0;try{ie=be(re),ve=!1}finally{ve?Q(ue):G(ue)}return w(ue,Te),N(ie,ue)}if(!ne||"object"!=typeof ne){if(ie=be(ne),void 0===ie&&(ie=ne),ie===e&&(ie=void 0),this.autoFreeze_&&a(ie,!0),Te){const ue=[],re=[];f("Patches").generateReplacementPatches_(ne,ie,ue,re),Te(ue,re)}return ie}A(1)},this.produceWithPatches=(ne,be)=>{if("function"==typeof ne)return(re,...ve)=>this.produceWithPatches(re,ce=>ne(ce,...ve));let Te,ie;return[this.produce(ne,be,(re,ve)=>{Te=re,ie=ve}),Te,ie]},"boolean"==typeof K?.autoFreeze&&this.setAutoFreeze(K.autoFreeze),"boolean"==typeof K?.useStrictShallowCopy&&this.setUseStrictShallowCopy(K.useStrictShallowCopy)}createDraft(K){i(K)||A(8),c(K)&&(K=function g(K){return c(K)||A(10),_e(K)}(K));const ne=V(this),be=ee(K,void 0);return be[r].isManual_=!0,G(ne),be}finishDraft(K,ne){const be=K&&K[r];(!be||!be.isManual_)&&A(9);const{scope_:Te}=be;return w(Te,ne),N(void 0,Te)}setAutoFreeze(K){this.autoFreeze_=K}setUseStrictShallowCopy(K){this.useStrictShallowCopy_=K}applyPatches(K,ne){let be;for(be=ne.length-1;be>=0;be--){const ie=ne[be];if(0===ie.path.length&&"replace"===ie.op){K=ie.value;break}}be>-1&&(ne=ne.slice(be+1));const Te=f("Patches").applyPatches_;return c(K)?Te(K,ne):this.produce(K,ie=>Te(ie,ne))}},Be=Ae.produce,Re=(Ae.produceWithPatches.bind(Ae),Ae.setAutoFreeze.bind(Ae));Ae.setUseStrictShallowCopy.bind(Ae),Ae.applyPatches.bind(Ae),Ae.createDraft.bind(Ae),Ae.finishDraft.bind(Ae)}}]); \ No newline at end of file diff --git a/docs/772.0440337245892f34.js b/docs/772.0440337245892f34.js deleted file mode 100644 index 342e256..0000000 --- a/docs/772.0440337245892f34.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdemo_showcase=self.webpackChunkdemo_showcase||[]).push([[772],{9772:(bt,de,j)=>{j.r(de),j.d(de,{PageFeaturesViewerComponent:()=>Gb});var g=j(4438);let me=(()=>{class e{constructor(n){this.templateRef=n}static#e=this.\u0275fac=function(i){return new(i||e)(g.rXU(g.C4Q))};static#t=this.\u0275dir=g.FsC({type:e,selectors:[["","ngx-features-viewer-label",""]],standalone:!0})}return e})();var le=j(5558),Q=j(8141),B=j(177),X=j(2771),P=j(6354),ne=j(9568);function H(e){return e}function ze(e){return"translate("+e+",0)"}function we(e){return"translate(0,"+e+")"}function Ae(e){return t=>+e(t)}function Fe(e,t){return t=Math.max(0,e.bandwidth()-2*t)/2,e.round()&&(t=Math.round(t)),n=>+e(n)+t}function Re(){return!this.__axis}function ye(e,t){var n=[],i=null,o=null,r=6,f=6,c=3,b=typeof window<"u"&&window.devicePixelRatio>1?0:.5,a=1===e||4===e?-1:1,l=4===e||2===e?"x":"y",s=1===e||3===e?ze:we;function u(d){var A=i??(t.ticks?t.ticks.apply(t,n):t.domain()),C=o??(t.tickFormat?t.tickFormat.apply(t,n):H),w=Math.max(r,0)+c,m=t.range(),_=+m[0]+b,y=+m[m.length-1]+b,q=(t.bandwidth?Fe:Ae)(t.copy(),b),M=d.selection?d.selection():d,R=M.selectAll(".domain").data([null]),I=M.selectAll(".tick").data(A,t).order(),V=I.exit(),Y=I.enter().append("g").attr("class","tick"),D=I.select("line"),S=I.select("text");R=R.merge(R.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),I=I.merge(Y),D=D.merge(Y.append("line").attr("stroke","currentColor").attr(l+"2",a*r)),S=S.merge(Y.append("text").attr("fill","currentColor").attr(l,a*w).attr("dy",1===e?"0em":3===e?"0.71em":"0.32em")),d!==M&&(R=R.transition(d),I=I.transition(d),D=D.transition(d),S=S.transition(d),V=V.transition(d).attr("opacity",1e-6).attr("transform",function(L){return isFinite(L=q(L))?s(L+b):this.getAttribute("transform")}),Y.attr("opacity",1e-6).attr("transform",function(L){var F=this.parentNode.__axis;return s((F&&isFinite(F=F(L))?F:q(L))+b)})),V.remove(),R.attr("d",4===e||2===e?f?"M"+a*f+","+_+"H"+b+"V"+y+"H"+a*f:"M"+b+","+_+"V"+y:f?"M"+_+","+a*f+"V"+b+"H"+y+"V"+a*f:"M"+_+","+b+"H"+y),I.attr("opacity",1).attr("transform",function(L){return s(q(L)+b)}),D.attr(l+"2",a*r),S.attr(l,a*w).text(C),M.filter(Re).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===e?"start":4===e?"end":"middle"),M.each(function(){this.__axis=q})}return u.scale=function(d){return arguments.length?(t=d,u):t},u.ticks=function(){return n=Array.from(arguments),u},u.tickArguments=function(d){return arguments.length?(n=null==d?[]:Array.from(d),u):n.slice()},u.tickValues=function(d){return arguments.length?(i=null==d?null:Array.from(d),u):i&&i.slice()},u.tickFormat=function(d){return arguments.length?(o=d,u):o},u.tickSize=function(d){return arguments.length?(r=f=+d,u):r},u.tickSizeInner=function(d){return arguments.length?(r=+d,u):r},u.tickSizeOuter=function(d){return arguments.length?(f=+d,u):f},u.tickPadding=function(d){return arguments.length?(c=+d,u):c},u.offset=function(d){return arguments.length?(b=+d,u):b},u}function st(){}function Me(e){return null==e?st:function(){return this.querySelector(e)}}function io(){return[]}function kn(e){return null==e?io:function(){return this.querySelectorAll(e)}}function Mn(e){return function(){return this.matches(e)}}function Sn(e){return function(t){return t.matches(e)}}var fo=Array.prototype.find;function bo(){return this.firstElementChild}var lo=Array.prototype.filter;function so(){return Array.from(this.children)}function zn(e){return new Array(e.length)}function ut(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}function wo(e,t,n,i,o,r){for(var c,f=0,b=t.length,a=r.length;ft?1:e>=t?0:NaN}ut.prototype={constructor:ut,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};var Lt="http://www.w3.org/1999/xhtml";const An={svg:"http://www.w3.org/2000/svg",xhtml:Lt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function ht(e){var t=e+="",n=t.indexOf(":");return n>=0&&"xmlns"!==(t=e.slice(0,n))&&(e=e.slice(n+1)),An.hasOwnProperty(t)?{space:An[t],local:e}:e}function Fo(e){return function(){this.removeAttribute(e)}}function Ro(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Do(e,t){return function(){this.setAttribute(e,t)}}function Io(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function Vo(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttribute(e):this.setAttribute(e,n)}}function jo(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function qn(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Oo(e){return function(){this.style.removeProperty(e)}}function Xo(e,t,n){return function(){this.style.setProperty(e,t,n)}}function Ho(e,t,n){return function(){var i=t.apply(this,arguments);null==i?this.style.removeProperty(e):this.style.setProperty(e,i,n)}}function Ve(e,t){return e.style.getPropertyValue(t)||qn(e).getComputedStyle(e,null).getPropertyValue(t)}function Yo(e){return function(){delete this[e]}}function Bo(e,t){return function(){this[e]=t}}function Ko(e,t){return function(){var n=t.apply(this,arguments);null==n?delete this[e]:this[e]=n}}function En(e){return e.trim().split(/^|\s+/)}function Ot(e){return e.classList||new Tn(e)}function Tn(e){this._node=e,this._names=En(e.getAttribute("class")||"")}function $n(e,t){for(var n=Ot(e),i=-1,o=t.length;++i=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};var Pn=[null];function ae(e,t){this._groups=e,this._parents=t}function Fn(){return new ae([[document.documentElement]],Pn)}ae.prototype=Fn.prototype={constructor:ae,select:function Ie(e){"function"!=typeof e&&(e=Me(e));for(var t=this._groups,n=t.length,i=new Array(n),o=0;o=y&&(y=_+1);!(M=w[y])&&++y=0;)(f=i[o])&&(r&&4^f.compareDocumentPosition(r)&&r.parentNode.insertBefore(f,r),r=f);return this},sort:function Ao(e){function t(s,u){return s&&u?e(s.__data__,u.__data__):!s-!u}e||(e=qo);for(var n=this._groups,i=n.length,o=new Array(i),r=0;r1?this.each((null==t?Oo:"function"==typeof t?Ho:Xo)(e,t,n??"")):Ve(this.node(),e)},property:function Uo(e,t){return arguments.length>1?this.each((null==t?Yo:"function"==typeof t?Ko:Bo)(e,t)):this.node()[e]},classed:function Jo(e,t){var n=En(e+"");if(arguments.length<2){for(var i=Ot(this.node()),o=-1,r=n.length;++o=0&&(n=t.slice(i+1),t=t.slice(0,i)),{type:t,name:n}})}(e+""),r=i.length;if(!(arguments.length<2)){for(c=t?zr:Sr,o=0;o{}};function Rn(){for(var i,e=0,t=arguments.length,n={};e=0&&(i=n.slice(o+1),n=n.slice(0,o)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:i}})}(e+"",n),r=-1,f=i.length;if(!(arguments.length<2)){if(null!=t&&"function"!=typeof t)throw new Error("invalid callback: "+t);for(;++r0)for(var o,r,n=new Array(o),i=0;i=0&&e._call.call(void 0,t),e=e._next;--je}()}finally{je=0,function Vr(){for(var e,n,t=pt,i=1/0;t;)t._call?(i>t._time&&(i=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:pt=n);Ze=e,Gt(i)}(),qe=0}}function Ir(){var e=Je.now(),t=e-gt;t>Vn&&(mt-=t,gt=e)}function Gt(e){je||(We&&(We=clearTimeout(We)),e-qe>24?(e<1/0&&(We=setTimeout(On,e-Je.now()-mt)),Qe&&(Qe=clearInterval(Qe))):(Qe||(gt=Je.now(),Qe=setInterval(Ir,Vn)),je=1,jn(On)))}function Xn(e,t,n){var i=new wt;return i.restart(o=>{i.stop(),e(o+t)},t=null==t?0:+t,n),i}wt.prototype=Ln.prototype={constructor:wt,restart:function(e,t,n){if("function"!=typeof e)throw new TypeError("callback is not a function");n=(null==n?Ht():+n)+(null==t?0:+t),!this._next&&Ze!==this&&(Ze?Ze._next=this:pt=this,Ze=this),this._call=e,this._time=n,Gt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Gt())}};var jr=In("start","end","cancel","interrupt"),Lr=[],Hn=0,Yt=2,yt=3,Bt=5,vt=6;function xt(e,t,n,i,o,r){var f=e.__transition;if(f){if(n in f)return}else e.__transition={};!function Or(e,t,n){var o,i=e.__transition;function f(a){var l,s,u,d;if(1!==n.state)return b();for(l in i)if((d=i[l]).name===n.name){if(d.state===yt)return Xn(f);4===d.state?(d.state=vt,d.timer.stop(),d.on.call("interrupt",e,e.__data__,d.index,d.group),delete i[l]):+lHn)throw new Error("too late; already scheduled");return n}function pe(e,t){var n=se(e,t);if(n.state>yt)throw new Error("too late; already running");return n}function se(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function _t(e,t){var i,o,f,n=e.__transition,r=!0;if(n){for(f in t=null==t?null:t+"",n)(i=n[f]).name===t?(o=i.state>Yt&&i.state180?l+=360:l-a>180&&(a+=360),u.push({i:s.push(o(s)+"rotate(",null,i)-2,x:ue(a,l)})):l&&s.push(o(s)+"rotate("+l+i)}(a.rotate,l.rotate,s,u),function c(a,l,s,u){a!==l?u.push({i:s.push(o(s)+"skewX(",null,i)-2,x:ue(a,l)}):l&&s.push(o(s)+"skewX("+l+i)}(a.skewX,l.skewX,s,u),function b(a,l,s,u,d,A){if(a!==s||l!==u){var C=d.push(o(d)+"scale(",null,",",null,")");A.push({i:C-4,x:ue(a,s)},{i:C-2,x:ue(l,u)})}else(1!==s||1!==u)&&d.push(o(d)+"scale("+s+","+u+")")}(a.scaleX,a.scaleY,l.scaleX,l.scaleY,s,u),a=l=null,function(d){for(var w,A=-1,C=u.length;++A>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?St(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?St(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=Zr.exec(e))?new re(t[1],t[2],t[3],1):(t=Jr.exec(e))?new re(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=ef.exec(e))?St(t[1],t[2],t[3],t[4]):(t=tf.exec(e))?St(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=nf.exec(e))?ii(t[1],t[2]/100,t[3]/100,1):(t=of.exec(e))?ii(t[1],t[2]/100,t[3]/100,t[4]):Qn.hasOwnProperty(e)?ei(Qn[e]):"transparent"===e?new re(NaN,NaN,NaN,0):null}function ei(e){return new re(e>>16&255,e>>8&255,255&e,1)}function St(e,t,n,i){return i<=0&&(e=t=n=NaN),new re(e,t,n,i)}function zt(e,t,n,i){return 1===arguments.length?function cf(e){return e instanceof et||(e=Ee(e)),e?new re((e=e.rgb()).r,e.g,e.b,e.opacity):new re}(e):new re(e,t,n,i??1)}function re(e,t,n,i){this.r=+e,this.g=+t,this.b=+n,this.opacity=+i}function ti(){return`#${$e(this.r)}${$e(this.g)}${$e(this.b)}`}function ni(){const e=At(this.opacity);return`${1===e?"rgb(":"rgba("}${Te(this.r)}, ${Te(this.g)}, ${Te(this.b)}${1===e?")":`, ${e})`}`}function At(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Te(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function $e(e){return((e=Te(e))<16?"0":"")+e.toString(16)}function ii(e,t,n,i){return i<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new he(e,t,n,i)}function oi(e){if(e instanceof he)return new he(e.h,e.s,e.l,e.opacity);if(e instanceof et||(e=Ee(e)),!e)return new he;if(e instanceof he)return e;var t=(e=e.rgb()).r/255,n=e.g/255,i=e.b/255,o=Math.min(t,n,i),r=Math.max(t,n,i),f=NaN,c=r-o,b=(r+o)/2;return c?(f=t===r?(n-i)/c+6*(n0&&b<1?0:f,new he(f,c,b,e.opacity)}function he(e,t,n,i){this.h=+e,this.s=+t,this.l=+n,this.opacity=+i}function ri(e){return(e=(e||0)%360)<0?e+360:e}function qt(e){return Math.max(0,Math.min(1,e||0))}function Zt(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}function fi(e,t,n,i,o){var r=e*e,f=r*e;return((1-3*e+3*r-f)*t+(4-6*r+3*f)*n+(1+3*e+3*r-3*f)*i+f*o)/6}Qt(et,Ee,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Zn,formatHex:Zn,formatHex8:function rf(){return this.rgb().formatHex8()},formatHsl:function ff(){return oi(this).formatHsl()},formatRgb:Jn,toString:Jn}),Qt(re,zt,Wn(et,{brighter(e){return e=null==e?Mt:Math.pow(Mt,e),new re(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new re(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new re(Te(this.r),Te(this.g),Te(this.b),At(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:ti,formatHex:ti,formatHex8:function bf(){return`#${$e(this.r)}${$e(this.g)}${$e(this.b)}${$e(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:ni,toString:ni})),Qt(he,function af(e,t,n,i){return 1===arguments.length?oi(e):new he(e,t,n,i??1)},Wn(et,{brighter(e){return e=null==e?Mt:Math.pow(Mt,e),new he(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new he(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,i=n+(n<.5?n:1-n)*t,o=2*n-i;return new re(Zt(e>=240?e-240:e+120,o,i),Zt(e,o,i),Zt(e<120?e+240:e-120,o,i),this.opacity)},clamp(){return new he(ri(this.h),qt(this.s),qt(this.l),At(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=At(this.opacity);return`${1===e?"hsl(":"hsla("}${ri(this.h)}, ${100*qt(this.s)}%, ${100*qt(this.l)}%${1===e?")":`, ${e})`}`}}));const Jt=e=>()=>e;function bi(e,t){var n=t-e;return n?function ci(e,t){return function(n){return e+n*t}}(e,n):Jt(isNaN(e)?t:e)}const Et=function e(t){var n=function hf(e){return 1==(e=+e)?bi:function(t,n){return n-t?function uf(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(i){return Math.pow(e+i*t,n)}}(t,n,e):Jt(isNaN(t)?n:t)}}(t);function i(o,r){var f=n((o=zt(o)).r,(r=zt(r)).r),c=n(o.g,r.g),b=n(o.b,r.b),a=bi(o.opacity,r.opacity);return function(l){return o.r=f(l),o.g=c(l),o.b=b(l),o.opacity=a(l),o+""}}return i.gamma=e,i}(1);function ai(e){return function(t){var f,c,n=t.length,i=new Array(n),o=new Array(n),r=new Array(n);for(f=0;f=1?(n=1,t-1):Math.floor(n*t),o=e[i],r=e[i+1];return fi((n-i/t)*t,i>0?e[i-1]:2*o-r,o,r,in&&(r=t.slice(n,r),c[f]?c[f]+=r:c[++f]=r),(i=i[0])===(o=o[0])?c[f]?c[f]+=o:c[++f]=o:(c[++f]=null,b.push({i:f,x:ue(i,o)})),n=tn.lastIndex;return n=0&&(t=t.slice(0,n)),!t||"start"===t})}(t)?Kt:pe;return function(){var f=r(this,e),c=f.on;c!==i&&(o=(i=c).copy()).on(t,n),f.on=o}}(n,e,t))},attr:function _f(e,t){var n=ht(e),i="transform"===n?Br:si;return this.attrTween(e,"function"==typeof t?(n.local?xf:vf)(n,i,Wt(this,"attr."+e,t)):null==t?(n.local?mf:gf)(n):(n.local?yf:wf)(n,i,t))},attrTween:function Af(e,t){var n="attr."+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;var i=ht(e);return this.tween(n,(i.local?Sf:zf)(i,t))},style:function Jf(e,t,n){var i="transform"==(e+="")?Yr:si;return null==t?this.styleTween(e,function Uf(e,t){var n,i,o;return function(){var r=Ve(this,e),f=(this.style.removeProperty(e),Ve(this,e));return r===f?null:r===n&&f===i?o:o=t(n=r,i=f)}}(e,i)).on("end.style."+e,ui(e)):"function"==typeof t?this.styleTween(e,function Qf(e,t,n){var i,o,r;return function(){var f=Ve(this,e),c=n(this),b=c+"";return null==c&&(this.style.removeProperty(e),b=c=Ve(this,e)),f===b?null:f===i&&b===o?r:(o=b,r=t(i=f,c))}}(e,i,Wt(this,"style."+e,t))).each(function Zf(e,t){var n,i,o,c,r="style."+t,f="end."+r;return function(){var b=pe(this,e),a=b.on,l=null==b.value[r]?c||(c=ui(t)):void 0;(a!==n||o!==l)&&(i=(n=a).copy()).on(f,o=l),b.on=i}}(this._id,e)):this.styleTween(e,function Wf(e,t,n){var i,r,o=n+"";return function(){var f=Ve(this,e);return f===o?null:f===i?r:r=t(i=f,n)}}(e,i,t),n).on("end.style."+e,null)},styleTween:function nc(e,t,n){var i="style."+(e+="");if(arguments.length<2)return(i=this.tween(i))&&i._value;if(null==t)return this.tween(i,null);if("function"!=typeof t)throw new Error;return this.tween(i,function tc(e,t,n){var i,o;function r(){var f=t.apply(this,arguments);return f!==o&&(i=(o=f)&&function ec(e,t,n){return function(i){this.style.setProperty(e,t.call(this,i),n)}}(e,f,n)),i}return r._value=t,r}(e,t,n??""))},text:function rc(e){return this.tween("text","function"==typeof e?function oc(e){return function(){var t=e(this);this.textContent=t??""}}(Wt(this,"text",e)):function ic(e){return function(){this.textContent=e}}(null==e?"":e+""))},textTween:function bc(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(null==e)return this.tween(t,null);if("function"!=typeof e)throw new Error;return this.tween(t,function cc(e){var t,n;function i(){var o=e.apply(this,arguments);return o!==n&&(t=(n=o)&&function fc(e){return function(t){this.textContent=e.call(this,t)}}(o)),t}return i._value=e,i}(e))},remove:function Hf(){return this.on("end.remove",function Xf(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}(this._id))},tween:function Wr(e,t){var n=this._id;if(e+="",arguments.length<2){for(var f,i=se(this.node(),n).tween,o=0,r=i.length;o1?i[0]+i.slice(2):i,+e.slice(n+1)]}function He(e){return(e=Nt(Math.abs(e)))?e[1]:NaN}["w","e"].map(it),["n","s"].map(it),["n","w","e","s","nw","ne","sw","se"].map(it);var yi,Ac=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ct(e){if(!(t=Ac.exec(e)))throw new Error("invalid format: "+e);var t;return new cn({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function cn(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}function vi(e,t){var n=Nt(e,t);if(!n)return e+"";var i=n[0],o=n[1];return o<0?"0."+new Array(-o).join("0")+i:i.length>o+1?i.slice(0,o+1)+"."+i.slice(o+1):i+new Array(o-i.length+2).join("0")}Ct.prototype=cn.prototype,cn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const xi={"%":(e,t)=>(100*e).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:function Mc(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)},e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>vi(100*e,t),r:vi,s:function Ec(e,t){var n=Nt(e,t);if(!n)return e+"";var i=n[0],o=n[1],r=o-(yi=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,f=i.length;return r===f?i:r>f?i+new Array(r-f+1).join("0"):r>0?i.slice(0,r)+"."+i.slice(r):"0."+new Array(1-r).join("0")+Nt(e,Math.max(0,t+r-1))[0]},X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function _i(e){return e}var Pt,bn,Si,ki=Array.prototype.map,Mi=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"];!function $c(e){Pt=function Tc(e){var t=void 0===e.grouping||void 0===e.thousands?_i:function Sc(e,t){return function(n,i){for(var o=n.length,r=[],f=0,c=e[0],b=0;o>0&&c>0&&(b+c+1>i&&(c=Math.max(1,i-b)),r.push(n.substring(o-=c,o+c)),!((b+=c+1)>i));)c=e[f=(f+1)%e.length];return r.reverse().join(t)}}(ki.call(e.grouping,Number),e.thousands+""),n=void 0===e.currency?"":e.currency[0]+"",i=void 0===e.currency?"":e.currency[1]+"",o=void 0===e.decimal?".":e.decimal+"",r=void 0===e.numerals?_i:function zc(e){return function(t){return t.replace(/[0-9]/g,function(n){return e[+n]})}}(ki.call(e.numerals,String)),f=void 0===e.percent?"%":e.percent+"",c=void 0===e.minus?"\u2212":e.minus+"",b=void 0===e.nan?"NaN":e.nan+"";function a(s){var u=(s=Ct(s)).fill,d=s.align,A=s.sign,C=s.symbol,w=s.zero,m=s.width,_=s.comma,y=s.precision,q=s.trim,M=s.type;"n"===M?(_=!0,M="g"):xi[M]||(void 0===y&&(y=12),q=!0,M="g"),(w||"0"===u&&"="===d)&&(w=!0,u="0",d="=");var R="$"===C?n:"#"===C&&/[boxX]/.test(M)?"0"+M.toLowerCase():"",I="$"===C?i:/[%p]/.test(M)?f:"",V=xi[M],Y=/[defgprs%]/.test(M);function D(S){var h,x,p,L=R,F=I;if("c"===M)F=V(S)+F,S="";else{var v=(S=+S)<0||1/S<0;if(S=isNaN(S)?b:V(Math.abs(S),y),q&&(S=function qc(e){e:for(var o,t=e.length,n=1,i=-1;n0&&(i=0)}return i>0?e.slice(0,i)+e.slice(o+1):e}(S)),v&&0==+S&&"+"!==A&&(v=!1),L=(v?"("===A?A:c:"-"===A||"("===A?"":A)+L,F=("s"===M?Mi[8+yi/3]:"")+F+(v&&"("===A?")":""),Y)for(h=-1,x=S.length;++h(p=S.charCodeAt(h))||p>57){F=(46===p?o+S.slice(h+1):S.slice(h))+F,S=S.slice(0,h);break}}_&&!w&&(S=t(S,1/0));var z=L.length+S.length+F.length,k=z>1)+L+S+F+k.slice(z);break;default:S=k+L+S+F}return r(S)}return y=void 0===y?6:/[gprs]/.test(M)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),D.toString=function(){return s+""},D}return{format:a,formatPrefix:function l(s,u){var d=a(((s=Ct(s)).type="f",s)),A=3*Math.max(-8,Math.min(8,Math.floor(He(u)/3))),C=Math.pow(10,-A),w=Mi[8+A/3];return function(m){return d(C*m)+w}}}}(e),bn=Pt.format,Si=Pt.formatPrefix}({thousands:",",grouping:[3],currency:["$",""]});const Nc=Math.sqrt(50),Cc=Math.sqrt(10),Pc=Math.sqrt(2);function Ft(e,t,n){const i=(t-e)/Math.max(0,n),o=Math.floor(Math.log10(i)),r=i/Math.pow(10,o),f=r>=Nc?10:r>=Cc?5:r>=Pc?2:1;let c,b,a;return o<0?(a=Math.pow(10,-o)/f,c=Math.round(e*a),b=Math.round(t*a),c/at&&--b,a=-a):(a=Math.pow(10,o)*f,c=Math.round(e/a),b=Math.round(t/a),c*at&&--b),bt?1:e>=t?0:NaN}function Dc(e,t){return null==e||null==t?NaN:te?1:t>=e?0:NaN}function zi(e){let t,n,i;function o(c,b,a=0,l=c.length){if(a>>1;n(c[s],b)<0?a=s+1:l=s}while(aRt(e(c),b),i=(c,b)=>e(c)-b):(t=e===Rt||e===Dc?e:Ic,n=e,i=e),{left:o,center:function f(c,b,a=0,l=c.length){const s=o(c,b,a,l-1);return s>a&&i(c[s-1],b)>-i(c[s],b)?s-1:s},right:function r(c,b,a=0,l=c.length){if(a>>1;n(c[s],b)<=0?a=s+1:l=s}while(a0))return[];if((e=+e)==(t=+t))return[e];const i=t=o))return[];const c=r-o+1,b=new Array(c);if(i)if(f<0)for(let a=0;a0;){if((a=an(f,c,n))===b)return i[o]=f,i[r]=c,t(i);if(a>0)f=Math.floor(f/a)*a,c=Math.ceil(c/a)*a;else{if(!(a<0))break;f=Math.ceil(f*a)/a,c=Math.floor(c*a)/a}b=a}return e},e}function $i(){var e=function eb(){return function Jc(){var i,o,r,c,b,a,e=Ei,t=Ei,n=ln,f=Ge;function l(){var u=Math.min(e.length,t.length);return f!==Ge&&(f=function Uc(e,t){var n;return e>t&&(n=e,e=t,t=n),function(i){return Math.max(e,Math.min(t,i))}}(e[0],e[u-1])),c=u>2?Qc:Wc,b=a=null,s}function s(u){return null==u||isNaN(u=+u)?r:(b||(b=c(e.map(i),t,n)))(i(f(u)))}return s.invert=function(u){return f(o((a||(a=c(t,e.map(i),ue)))(u)))},s.domain=function(u){return arguments.length?(e=Array.from(u,Kc),l()):e.slice()},s.range=function(u){return arguments.length?(t=Array.from(u),l()):t.slice()},s.rangeRound=function(u){return t=Array.from(u),n=Yc,l()},s.clamp=function(u){return arguments.length?(f=!!u||Ge,l()):f!==Ge},s.interpolate=function(u){return arguments.length?(n=u,l()):n},s.unknown=function(u){return arguments.length?(r=u,s):r},function(u,d){return i=u,o=d,l()}}()(Ge,Ge)}();return e.copy=function(){return function Zc(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}(e,$i())},Ti.apply(e,arguments),rb(e)}class Ni extends Map{constructor(t,n=Fi){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const[i,o]of t)this.set(i,o)}get(t){return super.get(un(this,t))}has(t){return super.has(un(this,t))}set(t,n){return super.set(function Ci({_intern:e,_key:t},n){const i=t(n);return e.has(i)?e.get(i):(e.set(i,n),n)}(this,t),n)}delete(t){return super.delete(function Pi({_intern:e,_key:t},n){const i=t(n);return e.has(i)&&(n=e.get(i),e.delete(i)),n}(this,t))}}function un({_intern:e,_key:t},n){const i=t(n);return e.has(i)?e.get(i):n}function Fi(e){return null!==e&&"object"==typeof e?e.valueOf():e}Set;const Ri=Symbol("implicit");function Di(){var e=new Ni,t=[],n=[],i=Ri;function o(r){let f=e.get(r);if(void 0===f){if(i!==Ri)return i;e.set(r,f=t.push(r)-1)}return n[f%n.length]}return o.domain=function(r){if(!arguments.length)return t.slice();t=[],e=new Ni;for(const f of r)e.has(f)||e.set(f,t.push(f)-1);return o},o.range=function(r){return arguments.length?(n=Array.from(r),o):n.slice()},o.unknown=function(r){return arguments.length?(i=r,o):i},o.copy=function(){return Di(t,n).unknown(i)},Ti.apply(o,arguments),o}function ie(e){return"string"==typeof e?new ae([[document.querySelector(e)]],[document.documentElement]):new ae([[e]],Pn)}function Ye(e){return function(){return e}}function Ii(e){this._context=e}function bb(e){return new Ii(e)}Ii.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};const hn=Math.PI,dn=2*hn,Ne=1e-6,ab=dn-Ne;function Vi(e){this._+=e[0];for(let t=1,n=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Vi;const n=10**t;return function(i){this._+=i[0];for(let o=1,r=i.length;oNe)if(Math.abs(s*b-a*l)>Ne&&r){let d=i-f,A=o-c,C=b*b+a*a,w=d*d+A*A,m=Math.sqrt(C),_=Math.sqrt(u),y=r*Math.tan((hn-Math.acos((C+u-w)/(2*m*_)))/2),q=y/_,M=y/m;Math.abs(q-1)>Ne&&this._append`L${t+q*l},${n+q*s}`,this._append`A${r},${r},0,0,${+(s*d>l*A)},${this._x1=t+M*b},${this._y1=n+M*a}`}else this._append`L${this._x1=t},${this._y1=n}`}arc(t,n,i,o,r,f){if(t=+t,n=+n,f=!!f,(i=+i)<0)throw new Error(`negative radius: ${i}`);let c=i*Math.cos(o),b=i*Math.sin(o),a=t+c,l=n+b,s=1^f,u=f?o-r:r-o;null===this._x1?this._append`M${a},${l}`:(Math.abs(this._x1-a)>Ne||Math.abs(this._y1-l)>Ne)&&this._append`L${a},${l}`,i&&(u<0&&(u=u%dn+dn),u>ab?this._append`A${i},${i},0,1,${s},${t-c},${n-b}A${i},${i},0,1,${s},${this._x1=a},${this._y1=l}`:u>Ne&&this._append`A${i},${i},0,${+(u>=hn)},${s},${this._x1=t+i*Math.cos(r)},${this._y1=n+i*Math.sin(r)}`)}rect(t,n,i,o){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${i=+i}v${+o}h${-i}Z`}toString(){return this._}}function hb(e){return e[0]}function db(e){return e[1]}function ji(e){return e<0?-1:1}function Li(e,t,n){var i=e._x1-e._x0,o=t-e._x1,r=(e._y1-e._y0)/(i||o<0&&-0),f=(n-e._y1)/(o||i<0&&-0),c=(r*o+f*i)/(i+o);return(ji(r)+ji(f))*Math.min(Math.abs(r),Math.abs(f),.5*Math.abs(c))||0}function Oi(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function pn(e,t,n){var i=e._x0,r=e._x1,f=e._y1,c=(r-i)/3;e._context.bezierCurveTo(i+c,e._y0+c*t,r-c,f-c*n,r,f)}function It(e){this._context=e}function Hi(e){this._context=e}function gb(e){return new It(e)}It.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:pn(this,this._t0,Oi(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(t=+t,(e=+e)!==this._x1||t!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,pn(this,Oi(this,n=Li(this,e,t)),n);break;default:pn(this,this._t0,n=Li(this,e,t))}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}},(function Xi(e){this._context=new Hi(e)}.prototype=Object.create(It.prototype)).point=function(e,t){It.prototype.point.call(this,t,e)},Hi.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,n,i,o,r){this._context.bezierCurveTo(t,e,i,n,r,o)}};const gn={capture:!0,passive:!1};function mn(e){e.preventDefault(),e.stopImmediatePropagation()}function Gi(e){return((e=Math.exp(e))+1/e)/2}const _b=function e(t,n,i){function o(r,f){var w,m,c=r[0],b=r[1],a=r[2],u=f[2],d=f[0]-c,A=f[1]-b,C=d*d+A*A;if(C<1e-12)m=Math.log(u/a)/t,w=function(I){return[c+I*d,b+I*A,a*Math.exp(t*I*m)]};else{var _=Math.sqrt(C),y=(u*u-a*a+i*C)/(2*a*n*_),q=(u*u-a*a-i*C)/(2*u*n*_),M=Math.log(Math.sqrt(y*y+1)-y),R=Math.log(Math.sqrt(q*q+1)-q);m=(R-M)/t,w=function(I){var V=I*m,Y=Gi(M),D=a/(n*_)*(Y*function xb(e){return((e=Math.exp(2*e))-1)/(e+1)}(t*V+M)-function vb(e){return((e=Math.exp(e))-1/e)/2}(M));return[c+D*d,b+D*A,a*Y/Gi(t*V+M)]}}return w.duration=1e3*m*t/Math.SQRT2,w}return o.rho=function(r){var f=Math.max(.001,+r),c=f*f;return e(f,c,c*c)},o}(Math.SQRT2,2,4);function Ce(e,t){if(e=function kb(e){let t;for(;t=e.sourceEvent;)e=t;return e}(e),void 0===t&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var i=n.createSVGPoint();return i.x=e.clientX,i.y=e.clientY,[(i=i.matrixTransform(t.getScreenCTM().inverse())).x,i.y]}if(t.getBoundingClientRect){var o=t.getBoundingClientRect();return[e.clientX-o.left-t.clientLeft,e.clientY-o.top-t.clientTop]}}return[e.pageX,e.pageY]}const Vt=e=>()=>e;function Mb(e,{sourceEvent:t,target:n,transform:i,dispatch:o}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:i,enumerable:!0,configurable:!0},_:{value:o}})}function ke(e,t,n){this.k=e,this.x=t,this.y=n}ke.prototype={constructor:ke,scale:function(e){return 1===e?this:new ke(this.k*e,this.x,this.y)},translate:function(e,t){return 0===e&0===t?this:new ke(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var wn=new ke(1,0,0);function yn(e){e.stopImmediatePropagation()}function ot(e){e.preventDefault(),e.stopImmediatePropagation()}function zb(e){return!(e.ctrlKey&&"wheel"!==e.type||e.button)}function Ab(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e).hasAttribute("viewBox")?[[(e=e.viewBox.baseVal).x,e.y],[e.x+e.width,e.y+e.height]]:[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]:[[0,0],[e.clientWidth,e.clientHeight]]}function Yi(){return this.__zoom||wn}function qb(e){return-e.deltaY*(1===e.deltaMode?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Eb(){return navigator.maxTouchPoints||"ontouchstart"in this}function Tb(e,t,n){var i=e.invertX(t[0][0])-n[0][0],o=e.invertX(t[1][0])-n[1][0],r=e.invertY(t[0][1])-n[0][1],f=e.invertY(t[1][1])-n[1][1];return e.translate(o>i?(i+o)/2:Math.min(0,i)||Math.max(0,o),f>r?(r+f)/2:Math.min(0,r)||Math.max(0,f))}let rt=(()=>{class e{get div(){return this.root.nativeElement}get width(){return this.div.offsetWidth}get margin(){const{"margin-top":n,"margin-right":i,"margin-bottom":o,"margin-left":r}=this.settings;return{top:n,right:i,bottom:o,left:r}}constructor(){this.initialize$=new X.m(1),this.initialized$=this.initialize$.pipe((0,Q.M)(n=>this.root=n),(0,P.T)(()=>{const n=function fb(e){return ie(Xt(e).call(document.documentElement))}("svg"),i=n.node();if(!i)throw new Error("Could not create SVG node");return this.div.append(i),n}),(0,Q.M)(n=>this.svg=n),(0,Q.M)(n=>{this.clip=n.append("defs").append("clipPath").attr("id","clip").append("rect");const i=n.append("g").attr("class","focus");this.draw=i.append("g").attr("class","features").attr("clip-path","url(#clip)"),this.zoom=function $b(){var l,s,u,e=zb,t=Ab,n=Tb,i=qb,o=Eb,r=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],c=250,b=_b,a=In("start","zoom","end"),d=500,A=150,C=0,w=10;function m(h){h.property("__zoom",Yi).on("wheel.zoom",V,{passive:!1}).on("mousedown.zoom",Y).on("dblclick.zoom",D).filter(o).on("touchstart.zoom",S).on("touchmove.zoom",L).on("touchend.zoom touchcancel.zoom",F).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function _(h,x){return(x=Math.max(r[0],Math.min(r[1],x)))===h.k?h:new ke(x,h.x,h.y)}function y(h,x,p){var v=x[0]-p[0]*h.k,z=x[1]-p[1]*h.k;return v===h.x&&z===h.y?h:new ke(h.k,v,z)}function q(h){return[(+h[0][0]+ +h[1][0])/2,(+h[0][1]+ +h[1][1])/2]}function M(h,x,p,v){h.on("start.zoom",function(){R(this,arguments).event(v).start()}).on("interrupt.zoom end.zoom",function(){R(this,arguments).event(v).end()}).tween("zoom",function(){var z=this,k=arguments,E=R(z,k).event(v),T=t.apply(z,k),$=null==p?q(T):"function"==typeof p?p.apply(z,k):p,fe=Math.max(T[1][0]-T[0][0],T[1][1]-T[0][1]),K=z.__zoom,te="function"==typeof x?x.apply(z,k):x,ce=b(K.invert($).concat(fe/K.k),te.invert($).concat(fe/te.k));return function(O){if(1===O)O=te;else{var oe=ce(O),Be=fe/oe[2];O=new ke(Be,$[0]-oe[0]*Be,$[1]-oe[1]*Be)}E.zoom(null,O)}})}function R(h,x,p){return!p&&h.__zooming||new I(h,x)}function I(h,x){this.that=h,this.args=x,this.active=0,this.sourceEvent=null,this.extent=t.apply(h,x),this.taps=0}function V(h,...x){if(e.apply(this,arguments)){var p=R(this,x).event(h),v=this.__zoom,z=Math.max(r[0],Math.min(r[1],v.k*Math.pow(2,i.apply(this,arguments)))),k=Ce(h);if(p.wheel)(p.mouse[0][0]!==k[0]||p.mouse[0][1]!==k[1])&&(p.mouse[1]=v.invert(p.mouse[0]=k)),clearTimeout(p.wheel);else{if(v.k===z)return;p.mouse=[k,v.invert(k)],_t(this),p.start()}ot(h),p.wheel=setTimeout(function E(){p.wheel=null,p.end()},A),p.zoom("mouse",n(y(_(v,z),p.mouse[0],p.mouse[1]),p.extent,f))}}function Y(h,...x){if(!u&&e.apply(this,arguments)){var p=h.currentTarget,v=R(this,x,!0).event(h),z=ie(h.view).on("mousemove.zoom",function $(K){if(ot(K),!v.moved){var te=K.clientX-E,ce=K.clientY-T;v.moved=te*te+ce*ce>C}v.event(K).zoom("mouse",n(y(v.that.__zoom,v.mouse[0]=Ce(K,p),v.mouse[1]),v.extent,f))},!0).on("mouseup.zoom",function fe(K){z.on("mousemove.zoom mouseup.zoom",null),function wb(e,t){var n=e.document.documentElement,i=ie(e).on("dragstart.drag",null);t&&(i.on("click.drag",mn,gn),setTimeout(function(){i.on("click.drag",null)},0)),"onselectstart"in n?i.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}(K.view,v.moved),ot(K),v.event(K).end()},!0),k=Ce(h,p),E=h.clientX,T=h.clientY;(function mb(e){var t=e.document.documentElement,n=ie(e).on("dragstart.drag",mn,gn);"onselectstart"in t?n.on("selectstart.drag",mn,gn):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")})(h.view),yn(h),v.mouse=[k,this.__zoom.invert(k)],_t(this),v.start()}}function D(h,...x){if(e.apply(this,arguments)){var p=this.__zoom,v=Ce(h.changedTouches?h.changedTouches[0]:h,this),z=p.invert(v),E=n(y(_(p,p.k*(h.shiftKey?.5:2)),v,z),t.apply(this,x),f);ot(h),c>0?ie(this).transition().duration(c).call(M,E,v,h):ie(this).call(m.transform,E,v,h)}}function S(h,...x){if(e.apply(this,arguments)){var k,E,T,$,p=h.touches,v=p.length,z=R(this,x,h.changedTouches.length===v).event(h);for(yn(h),E=0;E{const i=n.append("g").attr("class","x axis"),o=n.append("g").attr("class","y axis");this.axes={x:i,y:o}}),(0,Q.M)(()=>this.scale={x:$i(),y:Di()}),(0,ne.t)(1))}static#e=this.\u0275fac=function(i){return new(i||e)};static#t=this.\u0275prov=g.jDH({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})(),vn=(()=>{class e{constructor(){this._traces=new Map,this._parent=new Map,this._children=new Map}set hierarchy(n){this.setHierarchy(n)}get traces(){return this._traces}get features(){const n=this.traces,i=new Map;for(const o of n.values())for(const[r,f]of Object.entries(o.values))i.set(`trace-${o.id}-feature-${r}`,f);return i}setHierarchy(n){let i=0,o=[...n];for(;o.length>0;){const[r]=o.splice(0,1),f=r.nested||[],c=new Array;for(const l of[r,...f]){const s="trace"===l.type?l:{type:"trace",values:[l],label:l.label,id:void 0,expanded:void 0};s.values=s.values.sort((u,d)=>"continuous"!==u.type?-1:"continuous"!==d.type?1:0),s.id=void 0!==s.id?s.id:i++,s.expanded=!1!==s.expanded,this._traces.set(s.id,s),c.push(s)}const b=c[0],a=c.slice(1);a.forEach(l=>this._parent.set(l,b.id)),this._children.set(b,a.map(l=>l.id)),o=[...c.slice(1),...o]}}getTrace(n){return this.traces.get(n)}getParent(n){const i=this._parent.get(n);return i&&this._traces.get(i)}getBranch(n){const i=[],o=[n];for(;o.length>0;){const r=o.pop();i.push(r);const f=this.getChildren(r);o.push(...f)}return i}getChildren(n){return(this._children.get(n)||[]).map(o=>this._traces.get(o))}static#e=this.\u0275fac=function(i){return new(i||e)};static#t=this.\u0275prov=g.jDH({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var Nb=j(3294),Bi=j(9172);function Ki(e,t,n){e.attr("height",t.height).attr("width",t.width).attr("y",n.top).attr("x",n.left)}let Ui=(()=>{class e{get svg(){return this.initializeService.svg}get div(){return this.initializeService.div}get height(){return this.div.offsetHeight}get width(){return this.div.offsetWidth}get margin(){return this.initializeService.margin}get scale(){return this.initializeService.scale}get axes(){return this.initializeService.axes}constructor(n){this.initializeService=n,this.resize$=new X.m(1);const i=this.resize$.pipe((0,P.T)(()=>({width:this.width,height:this.height})),(0,Nb.F)((o,r)=>o.width===r.width),(0,P.T)(()=>{}),(0,Bi.Z)(void 0));this.resized$=i.pipe((0,P.T)(()=>this.updateRoot()),(0,P.T)(()=>this.updateDraw()),(0,P.T)(()=>this.updateAxes()),(0,P.T)(()=>this.updateRangeX()),(0,P.T)(()=>this.updateRangeY()))}updateRoot(){const{y:n}=this.scale,o=n.range().at(-1)+this.margin.bottom,r=this.width;this.svg.attr("height",o).attr("width",r)}updateDraw(){const n={width:0,height:0};n.height=this.height-this.margin.top-this.margin.bottom,n.width=this.width-this.margin.left-this.margin.right,Ki(this.initializeService.clip,n,this.margin),Ki(this.initializeService.events,n,this.margin)}updateAxes(){const{x:n,y:i}=this.axes;n.attr("transform",`translate(0, ${this.height-this.margin.top})`),i.attr("transform",`translate(${this.margin.left}, 0)`)}updateRangeX(){const n=this.scale.x,i=this.width,{left:o,right:r}=this.margin;n.range([o,i-r])}updateRangeY(){}static#e=this.\u0275fac=function(i){return new(i||e)(g.KVO(rt))};static#t=this.\u0275prov=g.jDH({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})(),Wi=(()=>{class e{constructor(n){this.initService=n,this.zoom$=new X.m(1);const o=this.initService.initialized$.pipe((0,P.T)(()=>this._scale={x:this.initService.scale.x.copy(),y:this.initService.scale.y.copy()}),(0,ne.t)(1)).pipe((0,le.n)(()=>this.zoom$),(0,P.T)(r=>{const{x:f}=this._scale,{x:c}=this.initService.scale,b=r.transform.rescaleX(f),[a,l]=b.domain();return c.domain([a,l]),this.initService.scale}),(0,Bi.Z)(this.initService.scale));this.zoomed$=o.pipe((0,P.T)(()=>{const r=this.initService.axes,f=this.initService.scale,c=f.x.ticks().filter(a=>Number.isInteger(a)).slice(1,-1),b=function jt(e){return ye(3,e)}(f.x).tickValues(c).tickFormat(bn(".0f"));r.x.call(b)}))}static#e=this.\u0275fac=function(i){return new(i||e)(g.KVO(rt))};static#t=this.\u0275prov=g.jDH({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})();const Qi={H:"blue",K:"blue",R:"blue",D:"red",E:"red",S:"green",T:"green",N:"green",Q:"green",A:"white",V:"white",L:"white",I:"white",M:"white",F:"magenta",W:"magenta",Y:"magenta",P:"brown",G:"brown",C:"yellow",B:"grey",Z:"grey",X:"grey","-":"grey"},xn=(parseFloat(getComputedStyle(document.documentElement).fontSize),e=>e.id),_n=(e,t)=>t;let Zi=(()=>{class e{constructor(n,i){this.initializeService=n,this.featuresService=i,this.traces$=new X.m(1),this.sequence$=new X.m(1),this["char.width"]=0,this.draw$=this.sequence$.pipe((0,Q.M)(o=>{this.initializeService.scale.x.domain([0,o.length+1])}),(0,P.T)(o=>this.createSequence(o)),(0,Q.M)(()=>{const r=this.initializeService.settings["content-size"]/3;this.tooltip=ie(this.initializeService.div).append("div").attr("class","tooltip").style("position","absolute").style("display","none").style("opacity",1).style("color","black").style("padding",".25rem").style("background-color","white").style("border","solid").style("border-width","1px").style("border-radius",r+"px")}),(0,ne.t)(1),(0,le.n)(()=>this.traces$),(0,Q.M)(o=>this.updateScale(o)),(0,Q.M)(o=>this.createLabels(o)),(0,Q.M)(o=>this.createGrid(o)),(0,Q.M)(o=>this.createTraces(o)),(0,ne.t)(1)),this.drawn$=this.draw$.pipe((0,P.T)(()=>this.updateSequence()),(0,P.T)(()=>this.updateGrid()),(0,P.T)(()=>this.updateLabels()),(0,P.T)(()=>this.updateTraces()))}updateScale(n){const i=this.initializeService.scale.y,o=["sequence",...n.map(({id:f})=>f+"")],r=o.reduce((f,c,b)=>{if(0===b&&"sequence"===c){const s=this.initializeService.settings["margin-top"];return[s,s+this.initializeService.settings["line-height"]]}const a=this.featuresService.getTrace(+c);if(a){const l=f.at(-1);let s=a["line-height"]||this.initializeService.settings["line-height"];return"dodge"===a.position&&(s=a.values.reduce((u,d)=>u+(d["line-height"]||this.initializeService.settings["line-height"]),0)),[...f,l+s]}throw new Error("Trace not found")},[]);i.domain(o).range(r)}createSequence(n){const o=this.initializeService.draw.selectAll("g.sequence").data([n]).join("g").attr("class","sequence");this["group.residues"]=o.selectAll("g.residue").data(n).join("g").attr("id",(f,c)=>`residue-${c+1}`).attr("class","residue"),this["group.residues"].append("rect").attr("class","color").attr("fill",f=>(f=>Qi[f]||Qi.X)(f)).attr("fill-opacity",.1);let r=0;this["group.residues"].append("text").attr("class","name").text(f=>""+f).each(function(){r=Math.max(r,this.getBBox().width)}),this["char.width"]=r}updateSequence(){const n=this.initializeService.margin,{x:i,y:o}=this.initializeService.scale,{"line-height":r}=this.initializeService.settings,f=i(1)-i(0),c=this["char.width"],{"group.residues":b}=this;b.select("rect.color").attr("x",(a,l)=>i(l+.5)).attr("y",n.top).attr("width",()=>f).attr("height","100%"),b.select("text.name").attr("x",(a,l)=>i(l+1)).attr("y",o("sequence")+r/2).attr("width",()=>f).attr("height",r).attr("dominant-baseline","central").style("text-anchor","middle").attr("fill",this.initializeService.settings["text-color"]).attr("opacity",()=>c>f?0:1)}createLabels(n){const{y:i}=this.initializeService.scale,o=this.initializeService.settings,{left:r}=this.initializeService.margin,f=this.initializeService.svg.selectAll("g.labels").data([n],_n).join("g").attr("class","labels");this["group.labels"]=f.selectAll("g.label").data([{id:"sequence",label:"Sequence",expanded:!0},...n],xn).join(c=>{const b=c.append("g").attr("id",a=>"label-"+a.id).attr("class","label");return b.each(a=>{const l=""+a.id,s=this.initializeService.div.querySelector("div#label-"+l);s&&(s.style.position="absolute",s.style.left="0px",s.style.overflow="hidden",s.style.top=i(l)+"px",s.style.height=(a["line-height"]||o["line-height"])+"px",s.style.width=r+"px")}),b},c=>c,c=>(c.each(b=>{const l=this.initializeService.div.querySelector("div#label-"+b.id);l&&(l.style.display="none")}),c)),this["group.labels"].each(c=>{const b=""+c.id,a=this.initializeService.div.querySelector("div#label-"+b);a&&(a.style.position="absolute",a.style.overflow="hidden",a.style.left="0px",a.style.top=i(b)+"px",a.style.display="block",a.style.height=(c["line-height"]||o["line-height"])+"px",a.style.width=r+"px")}),this["group.labels"].selectAll("rect").data(c=>[c],_n).join("rect").attr("height",c=>c["line-height"]||o["line-height"]).attr("width",()=>r).attr("fill","none")}updateLabels(){const n=this.initializeService.scale.y,i=this.initializeService.settings;this["group.labels"].select("rect").attr("y",o=>n(String(o.id))).attr("x",0),this["group.labels"].select("text").attr("y",o=>n(String(o.id))+(o["line-height"]||i["line-height"])/2).attr("x",0).attr("dominant-baseline","central").attr("fill",o=>o["text-color"]||i["text-color"])}createGrid(n){const i=this.initializeService.svg.selectAll("g.grid").data([n],_n).join("g").attr("class","grid").lower();this["group.grid"]=i.selectAll("rect.grid-line").data(n,xn).join("rect").attr("id",o=>"grid-"+o.id).attr("class","grid-line")}updateGrid(){const n=this.initializeService.scale.y,i=this.initializeService.width,o=this.initializeService.margin,r=this.initializeService.settings;this["group.grid"].attr("x",o.left).attr("y",f=>{const c=f.values[f.values.length-1],b=n(""+f.id),a=c["line-height"]||f["line-height"]||r["line-height"];return"continuous"!==c.type?b+a/2-.5:b+a/2-(c["content-size"]||f["content-size"]||r["content-size"])/2}).attr("width",i-o.left-o.right).attr("height",f=>{const c=f.values[f.values.length-1];return"continuous"===c.type?c["content-size"]||f["content-size"]||r["content-size"]:1}).attr("fill",this.initializeService.settings["grid-color"])}createTraces(n){const i=this.initializeService.settings,o=this.tooltip;this["group.traces"]=this.initializeService.draw.selectAll("g.trace").data(n,xn).join("g").attr("id",r=>"trace-"+r.id).attr("class","trace"),this["group.traces"].each(function(r){const c=ie(this).selectAll("g.feature").data(r.values);c.enter().append("g").attr("class",b=>"feature "+b.type).attr("id",(b,a)=>`trace-${r.id}-feature-${a}`).each(function(b,a){"loci"===b.type&&b.values.forEach((l,s)=>{const u=(b["content-size"]||r["content-size"]||i["content-size"])/3,d=ie(this).append("rect").attr("stroke",b["trace-color"]||r["trace-color"]||i["trace-color"]).attr("stroke-opacity",1).attr("stroke-width",1).attr("fill",b["trace-color"]||r["trace-color"]||i["trace-color"]).attr("fill-opacity",.5).attr("rx",u).attr("ry",u);d.data([l]),d.on("mouseover",A=>function Cb(e,t,n,i,o,r){t.style("display","block"),t.style("opacity",1)}(0,o)),d.on("mousemove",A=>function Pb(e,t,n,i,o,r){"loci"===i.type&&t.html(`Trace: ${n.id}
Feature: ${i.index}
Index: ${o}
Value: ${r.start!==r.end?r.start+"-"+r.end:r.start}`),"continuous"===i.type&&t.html(`Trace: ${n.id}
Feature: ${i.index}
Index: ${o}
Value: ${r}`),t.style("left",e.offsetX+10+"px").style("top",e.offsetY+10+"px")}(A,o,r,{...b,index:a},s,l)),d.on("mouseleave",A=>function Fb(e,t,n,i,o,r){t.style("opacity",0),t.style("display","none")}(0,o))}),"continuous"===b.type&&ie(this).append("path").attr("stroke",b["trace-color"]||r["trace-color"]||i["trace-color"]).attr("stroke-opacity",1).attr("stroke-width",2).attr("fill","none").data([b.values])}),c.exit().remove()})}updateTraces(){const n=this.initializeService.scale,i=this.initializeService.settings;this["group.traces"].each(function(o){ie(this).selectAll("g.feature").each(function(c){const b=n.y(""+o.id),a=c["line-height"]||o["line-height"]||i["line-height"],l=c["line-height"]||o["content-size"]||i["content-size"];if("loci"===c.type){const s=n.x(1)-n.x(0);ie(this).selectAll("rect").attr("x",u=>n.x(u.start-.5)).attr("y",b+a/2-l/2).attr("height",l).attr("width",u=>s*(u.end-u.start+1))}if("continuous"===c.type){const s=c.values,u=void 0!==c.min?c.min:Math.min(...c.values),d=void 0!==c.max?c.max:Math.max(...c.values),A=s.map((w,m)=>[m+1,1-(w-u)/(d-u)]),C=function pb(e,t){var n=Ye(!0),i=null,o=bb,r=null,f=function ub(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(null==n)t=null;else{const i=Math.floor(n);if(!(i>=0))throw new RangeError(`invalid digits: ${n}`);t=i}return e},()=>new Dt(t)}(c);function c(b){var a,s,d,l=(b=function cb(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}(b)).length,u=!1;for(null==i&&(r=o(d=f())),a=0;a<=l;++a)!(an.x(w)).y(([,w])=>b+a/2-(l-2)/2+(l-2)*w);ie(this).select("path").attr("d",C(A))}})})}onLabelClick(n){n.expanded=!1===n.expanded;const i=Array.from(this.featuresService.traces.values()),o=[];for(const f of i){const{expanded:c}={expanded:!0,...f};if(!0!==c){const b=this.featuresService.getBranch(f).slice(1);o.push(...b)}}const r=i.filter(f=>!o.includes(f));this.traces$.next(r),console.log("Trace",n)}static#e=this.\u0275fac=function(i){return new(i||e)(g.KVO(rt),g.KVO(vn))};static#t=this.\u0275prov=g.jDH({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})();const Rb=["root"],Db=e=>({trace:e});function Ib(e,t){if(1&e){const n=g.RV6();g.j41(0,"div",3),g.bIt("click",function(){const o=g.eBV(n).$implicit,r=g.XpG(2);return g.Njj(r.drawService.onLabelClick(o.value))})("keyup",function(){const o=g.eBV(n).$implicit,r=g.XpG(2);return g.Njj(r.drawService.onLabelClick(o.value))}),g.eu8(1,4),g.k0s()}if(2&e){const n=t.$implicit,i=g.XpG(2);g.Y8G("id","label-"+n.key),g.R7$(),g.Y8G("ngTemplateOutlet",i.label.templateRef)("ngTemplateOutletContext",g.eq3(3,Db,n.value))}}function Vb(e,t){if(1&e&&(g.Z7z(0,Ib,2,5,"div",2,g.Vm6),g.nI1(2,"keyvalue")),2&e){const n=g.XpG();g.Dyx(g.bMT(2,0,n.featuresService.traces))}}let jb=(()=>{class e{set settings(n){this.initService.settings=n}set features(n){this.featuresService.hierarchy=n;const i=Array.from(this.featuresService.traces.values());this.traces$.next(i)}constructor(n,i,o,r,f){this.featuresService=n,this.initService=i,this.resizeService=o,this.zoomService=r,this.drawService=f,this.traces$=this.drawService.traces$,this.sequence$=this.drawService.sequence$,this.update$=this.initService.initialized$.pipe((0,le.n)(()=>this.drawService.draw$),(0,le.n)(()=>this.resizeService.resized$),(0,Q.M)(()=>{const{left:c,right:b,bottom:a}=this.resizeService.margin,l=this.resizeService.height,s=this.resizeService.width,u=this.sequence.length+1;this.initService.zoom.translateExtent([[c,0],[s-b,l-a]]).scaleExtent([1,u/5]).extent([[c,0],[s-b,l-a]]).on("zoom",d=>{this.zoomService.zoom$.next(d)})}),(0,le.n)(()=>this.zoomService.zoomed$),(0,le.n)(()=>this.drawService.drawn$)),this._update=this.update$.subscribe()}ngOnChanges(n){n&&n.sequence&&this.sequence$.next(this.sequence)}ngAfterViewInit(){this.initService.initialize$.next(this._root)}ngOnDestroy(){this._update.unsubscribe()}onResize(n){this.resizeService.resize$.next(n)}static#e=this.\u0275fac=function(i){return new(i||e)(g.rXU(vn),g.rXU(rt),g.rXU(Ui),g.rXU(Wi),g.rXU(Zi))};static#t=this.\u0275cmp=g.VBU({type:e,selectors:[["ngx-features-viewer"]],contentQueries:function(i,o,r){if(1&i&&g.wni(r,me,5),2&i){let f;g.mGM(f=g.lsd())&&(o.label=f.first)}},viewQuery:function(i,o){if(1&i&&g.GBs(Rb,5),2&i){let r;g.mGM(r=g.lsd())&&(o._root=r.first)}},hostBindings:function(i,o){1&i&&g.bIt("resize",function(f){return o.onResize(f)},!1,g.tSv)},inputs:{settings:"settings",features:"features",sequence:"sequence"},standalone:!0,features:[g.Jv_([rt,vn,Ui,Zi,Wi]),g.OA$,g.aNF],decls:3,vars:1,consts:[["root",""],[2,"position","relative","display","block","width","100%","height","100%"],["tabindex","0",3,"id"],["tabindex","0",3,"click","keyup","id"],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(i,o){1&i&&(g.j41(0,"div",1,0),g.DNE(2,Vb,3,2),g.k0s()),2&i&&(g.R7$(2),g.vxM(2,o.label?2:-1))},dependencies:[B.MD,B.T3,B.lG],styles:['@charset "UTF-8";.labels #label-sequence .parent div{cursor:default}.labels #label-sequence .parent div i{display:none}.labels .label .children-0>i{visibility:hidden}.labels .label i:before{transition:transform .4s}.labels .label.active i:before{transform:roate(0deg)}.labels .label:not(.active) i:before{transform:rotate(-90deg)}.labels .label div{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;box-sizing:border-box;height:100%;width:100%;cursor:pointer}.labels .label div span{text-wrap:wrap;line-break:anywhere;flex-shrink:1;flex-grow:1}.labels .label div i{flex-shrink:0;flex-grow:0}.labels div.depth-0{width:100%;padding:0 .25rem 0 .75rem}.labels div.depth-1{width:100%;padding:0 .25rem 0 1.5rem}.labels div.depth-2{width:100%;padding:0 .25rem 0 2.25rem}.labels div.depth-3{width:100%;padding:0 .25rem 0 3rem}.labels div.depth-4{width:100%;padding:0 .25rem 0 3.75rem}.labels div.depth-5{width:100%;padding:0 .25rem 0 4.5rem}/*!\n * Bootstrap Icons v1.11.3 (https://icons.getbootstrap.com/)\n * Copyright 2019-2024 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE)\n */@font-face{font-display:block;font-family:bootstrap-icons;src:url(bootstrap-icons.bfa90bda92a84a6a.woff2) format("woff2"),url(bootstrap-icons.70a9dee9e5ab72aa.woff) format("woff")}.bi:before,[class^=bi-]:before,[class*=" bi-"]:before{display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-weight:400!important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bi-123:before{content:"\\f67f"}.bi-alarm-fill:before{content:"\\f101"}.bi-alarm:before{content:"\\f102"}.bi-align-bottom:before{content:"\\f103"}.bi-align-center:before{content:"\\f104"}.bi-align-end:before{content:"\\f105"}.bi-align-middle:before{content:"\\f106"}.bi-align-start:before{content:"\\f107"}.bi-align-top:before{content:"\\f108"}.bi-alt:before{content:"\\f109"}.bi-app-indicator:before{content:"\\f10a"}.bi-app:before{content:"\\f10b"}.bi-archive-fill:before{content:"\\f10c"}.bi-archive:before{content:"\\f10d"}.bi-arrow-90deg-down:before{content:"\\f10e"}.bi-arrow-90deg-left:before{content:"\\f10f"}.bi-arrow-90deg-right:before{content:"\\f110"}.bi-arrow-90deg-up:before{content:"\\f111"}.bi-arrow-bar-down:before{content:"\\f112"}.bi-arrow-bar-left:before{content:"\\f113"}.bi-arrow-bar-right:before{content:"\\f114"}.bi-arrow-bar-up:before{content:"\\f115"}.bi-arrow-clockwise:before{content:"\\f116"}.bi-arrow-counterclockwise:before{content:"\\f117"}.bi-arrow-down-circle-fill:before{content:"\\f118"}.bi-arrow-down-circle:before{content:"\\f119"}.bi-arrow-down-left-circle-fill:before{content:"\\f11a"}.bi-arrow-down-left-circle:before{content:"\\f11b"}.bi-arrow-down-left-square-fill:before{content:"\\f11c"}.bi-arrow-down-left-square:before{content:"\\f11d"}.bi-arrow-down-left:before{content:"\\f11e"}.bi-arrow-down-right-circle-fill:before{content:"\\f11f"}.bi-arrow-down-right-circle:before{content:"\\f120"}.bi-arrow-down-right-square-fill:before{content:"\\f121"}.bi-arrow-down-right-square:before{content:"\\f122"}.bi-arrow-down-right:before{content:"\\f123"}.bi-arrow-down-short:before{content:"\\f124"}.bi-arrow-down-square-fill:before{content:"\\f125"}.bi-arrow-down-square:before{content:"\\f126"}.bi-arrow-down-up:before{content:"\\f127"}.bi-arrow-down:before{content:"\\f128"}.bi-arrow-left-circle-fill:before{content:"\\f129"}.bi-arrow-left-circle:before{content:"\\f12a"}.bi-arrow-left-right:before{content:"\\f12b"}.bi-arrow-left-short:before{content:"\\f12c"}.bi-arrow-left-square-fill:before{content:"\\f12d"}.bi-arrow-left-square:before{content:"\\f12e"}.bi-arrow-left:before{content:"\\f12f"}.bi-arrow-repeat:before{content:"\\f130"}.bi-arrow-return-left:before{content:"\\f131"}.bi-arrow-return-right:before{content:"\\f132"}.bi-arrow-right-circle-fill:before{content:"\\f133"}.bi-arrow-right-circle:before{content:"\\f134"}.bi-arrow-right-short:before{content:"\\f135"}.bi-arrow-right-square-fill:before{content:"\\f136"}.bi-arrow-right-square:before{content:"\\f137"}.bi-arrow-right:before{content:"\\f138"}.bi-arrow-up-circle-fill:before{content:"\\f139"}.bi-arrow-up-circle:before{content:"\\f13a"}.bi-arrow-up-left-circle-fill:before{content:"\\f13b"}.bi-arrow-up-left-circle:before{content:"\\f13c"}.bi-arrow-up-left-square-fill:before{content:"\\f13d"}.bi-arrow-up-left-square:before{content:"\\f13e"}.bi-arrow-up-left:before{content:"\\f13f"}.bi-arrow-up-right-circle-fill:before{content:"\\f140"}.bi-arrow-up-right-circle:before{content:"\\f141"}.bi-arrow-up-right-square-fill:before{content:"\\f142"}.bi-arrow-up-right-square:before{content:"\\f143"}.bi-arrow-up-right:before{content:"\\f144"}.bi-arrow-up-short:before{content:"\\f145"}.bi-arrow-up-square-fill:before{content:"\\f146"}.bi-arrow-up-square:before{content:"\\f147"}.bi-arrow-up:before{content:"\\f148"}.bi-arrows-angle-contract:before{content:"\\f149"}.bi-arrows-angle-expand:before{content:"\\f14a"}.bi-arrows-collapse:before{content:"\\f14b"}.bi-arrows-expand:before{content:"\\f14c"}.bi-arrows-fullscreen:before{content:"\\f14d"}.bi-arrows-move:before{content:"\\f14e"}.bi-aspect-ratio-fill:before{content:"\\f14f"}.bi-aspect-ratio:before{content:"\\f150"}.bi-asterisk:before{content:"\\f151"}.bi-at:before{content:"\\f152"}.bi-award-fill:before{content:"\\f153"}.bi-award:before{content:"\\f154"}.bi-back:before{content:"\\f155"}.bi-backspace-fill:before{content:"\\f156"}.bi-backspace-reverse-fill:before{content:"\\f157"}.bi-backspace-reverse:before{content:"\\f158"}.bi-backspace:before{content:"\\f159"}.bi-badge-3d-fill:before{content:"\\f15a"}.bi-badge-3d:before{content:"\\f15b"}.bi-badge-4k-fill:before{content:"\\f15c"}.bi-badge-4k:before{content:"\\f15d"}.bi-badge-8k-fill:before{content:"\\f15e"}.bi-badge-8k:before{content:"\\f15f"}.bi-badge-ad-fill:before{content:"\\f160"}.bi-badge-ad:before{content:"\\f161"}.bi-badge-ar-fill:before{content:"\\f162"}.bi-badge-ar:before{content:"\\f163"}.bi-badge-cc-fill:before{content:"\\f164"}.bi-badge-cc:before{content:"\\f165"}.bi-badge-hd-fill:before{content:"\\f166"}.bi-badge-hd:before{content:"\\f167"}.bi-badge-tm-fill:before{content:"\\f168"}.bi-badge-tm:before{content:"\\f169"}.bi-badge-vo-fill:before{content:"\\f16a"}.bi-badge-vo:before{content:"\\f16b"}.bi-badge-vr-fill:before{content:"\\f16c"}.bi-badge-vr:before{content:"\\f16d"}.bi-badge-wc-fill:before{content:"\\f16e"}.bi-badge-wc:before{content:"\\f16f"}.bi-bag-check-fill:before{content:"\\f170"}.bi-bag-check:before{content:"\\f171"}.bi-bag-dash-fill:before{content:"\\f172"}.bi-bag-dash:before{content:"\\f173"}.bi-bag-fill:before{content:"\\f174"}.bi-bag-plus-fill:before{content:"\\f175"}.bi-bag-plus:before{content:"\\f176"}.bi-bag-x-fill:before{content:"\\f177"}.bi-bag-x:before{content:"\\f178"}.bi-bag:before{content:"\\f179"}.bi-bar-chart-fill:before{content:"\\f17a"}.bi-bar-chart-line-fill:before{content:"\\f17b"}.bi-bar-chart-line:before{content:"\\f17c"}.bi-bar-chart-steps:before{content:"\\f17d"}.bi-bar-chart:before{content:"\\f17e"}.bi-basket-fill:before{content:"\\f17f"}.bi-basket:before{content:"\\f180"}.bi-basket2-fill:before{content:"\\f181"}.bi-basket2:before{content:"\\f182"}.bi-basket3-fill:before{content:"\\f183"}.bi-basket3:before{content:"\\f184"}.bi-battery-charging:before{content:"\\f185"}.bi-battery-full:before{content:"\\f186"}.bi-battery-half:before{content:"\\f187"}.bi-battery:before{content:"\\f188"}.bi-bell-fill:before{content:"\\f189"}.bi-bell:before{content:"\\f18a"}.bi-bezier:before{content:"\\f18b"}.bi-bezier2:before{content:"\\f18c"}.bi-bicycle:before{content:"\\f18d"}.bi-binoculars-fill:before{content:"\\f18e"}.bi-binoculars:before{content:"\\f18f"}.bi-blockquote-left:before{content:"\\f190"}.bi-blockquote-right:before{content:"\\f191"}.bi-book-fill:before{content:"\\f192"}.bi-book-half:before{content:"\\f193"}.bi-book:before{content:"\\f194"}.bi-bookmark-check-fill:before{content:"\\f195"}.bi-bookmark-check:before{content:"\\f196"}.bi-bookmark-dash-fill:before{content:"\\f197"}.bi-bookmark-dash:before{content:"\\f198"}.bi-bookmark-fill:before{content:"\\f199"}.bi-bookmark-heart-fill:before{content:"\\f19a"}.bi-bookmark-heart:before{content:"\\f19b"}.bi-bookmark-plus-fill:before{content:"\\f19c"}.bi-bookmark-plus:before{content:"\\f19d"}.bi-bookmark-star-fill:before{content:"\\f19e"}.bi-bookmark-star:before{content:"\\f19f"}.bi-bookmark-x-fill:before{content:"\\f1a0"}.bi-bookmark-x:before{content:"\\f1a1"}.bi-bookmark:before{content:"\\f1a2"}.bi-bookmarks-fill:before{content:"\\f1a3"}.bi-bookmarks:before{content:"\\f1a4"}.bi-bookshelf:before{content:"\\f1a5"}.bi-bootstrap-fill:before{content:"\\f1a6"}.bi-bootstrap-reboot:before{content:"\\f1a7"}.bi-bootstrap:before{content:"\\f1a8"}.bi-border-all:before{content:"\\f1a9"}.bi-border-bottom:before{content:"\\f1aa"}.bi-border-center:before{content:"\\f1ab"}.bi-border-inner:before{content:"\\f1ac"}.bi-border-left:before{content:"\\f1ad"}.bi-border-middle:before{content:"\\f1ae"}.bi-border-outer:before{content:"\\f1af"}.bi-border-right:before{content:"\\f1b0"}.bi-border-style:before{content:"\\f1b1"}.bi-border-top:before{content:"\\f1b2"}.bi-border-width:before{content:"\\f1b3"}.bi-border:before{content:"\\f1b4"}.bi-bounding-box-circles:before{content:"\\f1b5"}.bi-bounding-box:before{content:"\\f1b6"}.bi-box-arrow-down-left:before{content:"\\f1b7"}.bi-box-arrow-down-right:before{content:"\\f1b8"}.bi-box-arrow-down:before{content:"\\f1b9"}.bi-box-arrow-in-down-left:before{content:"\\f1ba"}.bi-box-arrow-in-down-right:before{content:"\\f1bb"}.bi-box-arrow-in-down:before{content:"\\f1bc"}.bi-box-arrow-in-left:before{content:"\\f1bd"}.bi-box-arrow-in-right:before{content:"\\f1be"}.bi-box-arrow-in-up-left:before{content:"\\f1bf"}.bi-box-arrow-in-up-right:before{content:"\\f1c0"}.bi-box-arrow-in-up:before{content:"\\f1c1"}.bi-box-arrow-left:before{content:"\\f1c2"}.bi-box-arrow-right:before{content:"\\f1c3"}.bi-box-arrow-up-left:before{content:"\\f1c4"}.bi-box-arrow-up-right:before{content:"\\f1c5"}.bi-box-arrow-up:before{content:"\\f1c6"}.bi-box-seam:before{content:"\\f1c7"}.bi-box:before{content:"\\f1c8"}.bi-braces:before{content:"\\f1c9"}.bi-bricks:before{content:"\\f1ca"}.bi-briefcase-fill:before{content:"\\f1cb"}.bi-briefcase:before{content:"\\f1cc"}.bi-brightness-alt-high-fill:before{content:"\\f1cd"}.bi-brightness-alt-high:before{content:"\\f1ce"}.bi-brightness-alt-low-fill:before{content:"\\f1cf"}.bi-brightness-alt-low:before{content:"\\f1d0"}.bi-brightness-high-fill:before{content:"\\f1d1"}.bi-brightness-high:before{content:"\\f1d2"}.bi-brightness-low-fill:before{content:"\\f1d3"}.bi-brightness-low:before{content:"\\f1d4"}.bi-broadcast-pin:before{content:"\\f1d5"}.bi-broadcast:before{content:"\\f1d6"}.bi-brush-fill:before{content:"\\f1d7"}.bi-brush:before{content:"\\f1d8"}.bi-bucket-fill:before{content:"\\f1d9"}.bi-bucket:before{content:"\\f1da"}.bi-bug-fill:before{content:"\\f1db"}.bi-bug:before{content:"\\f1dc"}.bi-building:before{content:"\\f1dd"}.bi-bullseye:before{content:"\\f1de"}.bi-calculator-fill:before{content:"\\f1df"}.bi-calculator:before{content:"\\f1e0"}.bi-calendar-check-fill:before{content:"\\f1e1"}.bi-calendar-check:before{content:"\\f1e2"}.bi-calendar-date-fill:before{content:"\\f1e3"}.bi-calendar-date:before{content:"\\f1e4"}.bi-calendar-day-fill:before{content:"\\f1e5"}.bi-calendar-day:before{content:"\\f1e6"}.bi-calendar-event-fill:before{content:"\\f1e7"}.bi-calendar-event:before{content:"\\f1e8"}.bi-calendar-fill:before{content:"\\f1e9"}.bi-calendar-minus-fill:before{content:"\\f1ea"}.bi-calendar-minus:before{content:"\\f1eb"}.bi-calendar-month-fill:before{content:"\\f1ec"}.bi-calendar-month:before{content:"\\f1ed"}.bi-calendar-plus-fill:before{content:"\\f1ee"}.bi-calendar-plus:before{content:"\\f1ef"}.bi-calendar-range-fill:before{content:"\\f1f0"}.bi-calendar-range:before{content:"\\f1f1"}.bi-calendar-week-fill:before{content:"\\f1f2"}.bi-calendar-week:before{content:"\\f1f3"}.bi-calendar-x-fill:before{content:"\\f1f4"}.bi-calendar-x:before{content:"\\f1f5"}.bi-calendar:before{content:"\\f1f6"}.bi-calendar2-check-fill:before{content:"\\f1f7"}.bi-calendar2-check:before{content:"\\f1f8"}.bi-calendar2-date-fill:before{content:"\\f1f9"}.bi-calendar2-date:before{content:"\\f1fa"}.bi-calendar2-day-fill:before{content:"\\f1fb"}.bi-calendar2-day:before{content:"\\f1fc"}.bi-calendar2-event-fill:before{content:"\\f1fd"}.bi-calendar2-event:before{content:"\\f1fe"}.bi-calendar2-fill:before{content:"\\f1ff"}.bi-calendar2-minus-fill:before{content:"\\f200"}.bi-calendar2-minus:before{content:"\\f201"}.bi-calendar2-month-fill:before{content:"\\f202"}.bi-calendar2-month:before{content:"\\f203"}.bi-calendar2-plus-fill:before{content:"\\f204"}.bi-calendar2-plus:before{content:"\\f205"}.bi-calendar2-range-fill:before{content:"\\f206"}.bi-calendar2-range:before{content:"\\f207"}.bi-calendar2-week-fill:before{content:"\\f208"}.bi-calendar2-week:before{content:"\\f209"}.bi-calendar2-x-fill:before{content:"\\f20a"}.bi-calendar2-x:before{content:"\\f20b"}.bi-calendar2:before{content:"\\f20c"}.bi-calendar3-event-fill:before{content:"\\f20d"}.bi-calendar3-event:before{content:"\\f20e"}.bi-calendar3-fill:before{content:"\\f20f"}.bi-calendar3-range-fill:before{content:"\\f210"}.bi-calendar3-range:before{content:"\\f211"}.bi-calendar3-week-fill:before{content:"\\f212"}.bi-calendar3-week:before{content:"\\f213"}.bi-calendar3:before{content:"\\f214"}.bi-calendar4-event:before{content:"\\f215"}.bi-calendar4-range:before{content:"\\f216"}.bi-calendar4-week:before{content:"\\f217"}.bi-calendar4:before{content:"\\f218"}.bi-camera-fill:before{content:"\\f219"}.bi-camera-reels-fill:before{content:"\\f21a"}.bi-camera-reels:before{content:"\\f21b"}.bi-camera-video-fill:before{content:"\\f21c"}.bi-camera-video-off-fill:before{content:"\\f21d"}.bi-camera-video-off:before{content:"\\f21e"}.bi-camera-video:before{content:"\\f21f"}.bi-camera:before{content:"\\f220"}.bi-camera2:before{content:"\\f221"}.bi-capslock-fill:before{content:"\\f222"}.bi-capslock:before{content:"\\f223"}.bi-card-checklist:before{content:"\\f224"}.bi-card-heading:before{content:"\\f225"}.bi-card-image:before{content:"\\f226"}.bi-card-list:before{content:"\\f227"}.bi-card-text:before{content:"\\f228"}.bi-caret-down-fill:before{content:"\\f229"}.bi-caret-down-square-fill:before{content:"\\f22a"}.bi-caret-down-square:before{content:"\\f22b"}.bi-caret-down:before{content:"\\f22c"}.bi-caret-left-fill:before{content:"\\f22d"}.bi-caret-left-square-fill:before{content:"\\f22e"}.bi-caret-left-square:before{content:"\\f22f"}.bi-caret-left:before{content:"\\f230"}.bi-caret-right-fill:before{content:"\\f231"}.bi-caret-right-square-fill:before{content:"\\f232"}.bi-caret-right-square:before{content:"\\f233"}.bi-caret-right:before{content:"\\f234"}.bi-caret-up-fill:before{content:"\\f235"}.bi-caret-up-square-fill:before{content:"\\f236"}.bi-caret-up-square:before{content:"\\f237"}.bi-caret-up:before{content:"\\f238"}.bi-cart-check-fill:before{content:"\\f239"}.bi-cart-check:before{content:"\\f23a"}.bi-cart-dash-fill:before{content:"\\f23b"}.bi-cart-dash:before{content:"\\f23c"}.bi-cart-fill:before{content:"\\f23d"}.bi-cart-plus-fill:before{content:"\\f23e"}.bi-cart-plus:before{content:"\\f23f"}.bi-cart-x-fill:before{content:"\\f240"}.bi-cart-x:before{content:"\\f241"}.bi-cart:before{content:"\\f242"}.bi-cart2:before{content:"\\f243"}.bi-cart3:before{content:"\\f244"}.bi-cart4:before{content:"\\f245"}.bi-cash-stack:before{content:"\\f246"}.bi-cash:before{content:"\\f247"}.bi-cast:before{content:"\\f248"}.bi-chat-dots-fill:before{content:"\\f249"}.bi-chat-dots:before{content:"\\f24a"}.bi-chat-fill:before{content:"\\f24b"}.bi-chat-left-dots-fill:before{content:"\\f24c"}.bi-chat-left-dots:before{content:"\\f24d"}.bi-chat-left-fill:before{content:"\\f24e"}.bi-chat-left-quote-fill:before{content:"\\f24f"}.bi-chat-left-quote:before{content:"\\f250"}.bi-chat-left-text-fill:before{content:"\\f251"}.bi-chat-left-text:before{content:"\\f252"}.bi-chat-left:before{content:"\\f253"}.bi-chat-quote-fill:before{content:"\\f254"}.bi-chat-quote:before{content:"\\f255"}.bi-chat-right-dots-fill:before{content:"\\f256"}.bi-chat-right-dots:before{content:"\\f257"}.bi-chat-right-fill:before{content:"\\f258"}.bi-chat-right-quote-fill:before{content:"\\f259"}.bi-chat-right-quote:before{content:"\\f25a"}.bi-chat-right-text-fill:before{content:"\\f25b"}.bi-chat-right-text:before{content:"\\f25c"}.bi-chat-right:before{content:"\\f25d"}.bi-chat-square-dots-fill:before{content:"\\f25e"}.bi-chat-square-dots:before{content:"\\f25f"}.bi-chat-square-fill:before{content:"\\f260"}.bi-chat-square-quote-fill:before{content:"\\f261"}.bi-chat-square-quote:before{content:"\\f262"}.bi-chat-square-text-fill:before{content:"\\f263"}.bi-chat-square-text:before{content:"\\f264"}.bi-chat-square:before{content:"\\f265"}.bi-chat-text-fill:before{content:"\\f266"}.bi-chat-text:before{content:"\\f267"}.bi-chat:before{content:"\\f268"}.bi-check-all:before{content:"\\f269"}.bi-check-circle-fill:before{content:"\\f26a"}.bi-check-circle:before{content:"\\f26b"}.bi-check-square-fill:before{content:"\\f26c"}.bi-check-square:before{content:"\\f26d"}.bi-check:before{content:"\\f26e"}.bi-check2-all:before{content:"\\f26f"}.bi-check2-circle:before{content:"\\f270"}.bi-check2-square:before{content:"\\f271"}.bi-check2:before{content:"\\f272"}.bi-chevron-bar-contract:before{content:"\\f273"}.bi-chevron-bar-down:before{content:"\\f274"}.bi-chevron-bar-expand:before{content:"\\f275"}.bi-chevron-bar-left:before{content:"\\f276"}.bi-chevron-bar-right:before{content:"\\f277"}.bi-chevron-bar-up:before{content:"\\f278"}.bi-chevron-compact-down:before{content:"\\f279"}.bi-chevron-compact-left:before{content:"\\f27a"}.bi-chevron-compact-right:before{content:"\\f27b"}.bi-chevron-compact-up:before{content:"\\f27c"}.bi-chevron-contract:before{content:"\\f27d"}.bi-chevron-double-down:before{content:"\\f27e"}.bi-chevron-double-left:before{content:"\\f27f"}.bi-chevron-double-right:before{content:"\\f280"}.bi-chevron-double-up:before{content:"\\f281"}.bi-chevron-down:before{content:"\\f282"}.bi-chevron-expand:before{content:"\\f283"}.bi-chevron-left:before{content:"\\f284"}.bi-chevron-right:before{content:"\\f285"}.bi-chevron-up:before{content:"\\f286"}.bi-circle-fill:before{content:"\\f287"}.bi-circle-half:before{content:"\\f288"}.bi-circle-square:before{content:"\\f289"}.bi-circle:before{content:"\\f28a"}.bi-clipboard-check:before{content:"\\f28b"}.bi-clipboard-data:before{content:"\\f28c"}.bi-clipboard-minus:before{content:"\\f28d"}.bi-clipboard-plus:before{content:"\\f28e"}.bi-clipboard-x:before{content:"\\f28f"}.bi-clipboard:before{content:"\\f290"}.bi-clock-fill:before{content:"\\f291"}.bi-clock-history:before{content:"\\f292"}.bi-clock:before{content:"\\f293"}.bi-cloud-arrow-down-fill:before{content:"\\f294"}.bi-cloud-arrow-down:before{content:"\\f295"}.bi-cloud-arrow-up-fill:before{content:"\\f296"}.bi-cloud-arrow-up:before{content:"\\f297"}.bi-cloud-check-fill:before{content:"\\f298"}.bi-cloud-check:before{content:"\\f299"}.bi-cloud-download-fill:before{content:"\\f29a"}.bi-cloud-download:before{content:"\\f29b"}.bi-cloud-drizzle-fill:before{content:"\\f29c"}.bi-cloud-drizzle:before{content:"\\f29d"}.bi-cloud-fill:before{content:"\\f29e"}.bi-cloud-fog-fill:before{content:"\\f29f"}.bi-cloud-fog:before{content:"\\f2a0"}.bi-cloud-fog2-fill:before{content:"\\f2a1"}.bi-cloud-fog2:before{content:"\\f2a2"}.bi-cloud-hail-fill:before{content:"\\f2a3"}.bi-cloud-hail:before{content:"\\f2a4"}.bi-cloud-haze-fill:before{content:"\\f2a6"}.bi-cloud-haze:before{content:"\\f2a7"}.bi-cloud-haze2-fill:before{content:"\\f2a8"}.bi-cloud-lightning-fill:before{content:"\\f2a9"}.bi-cloud-lightning-rain-fill:before{content:"\\f2aa"}.bi-cloud-lightning-rain:before{content:"\\f2ab"}.bi-cloud-lightning:before{content:"\\f2ac"}.bi-cloud-minus-fill:before{content:"\\f2ad"}.bi-cloud-minus:before{content:"\\f2ae"}.bi-cloud-moon-fill:before{content:"\\f2af"}.bi-cloud-moon:before{content:"\\f2b0"}.bi-cloud-plus-fill:before{content:"\\f2b1"}.bi-cloud-plus:before{content:"\\f2b2"}.bi-cloud-rain-fill:before{content:"\\f2b3"}.bi-cloud-rain-heavy-fill:before{content:"\\f2b4"}.bi-cloud-rain-heavy:before{content:"\\f2b5"}.bi-cloud-rain:before{content:"\\f2b6"}.bi-cloud-slash-fill:before{content:"\\f2b7"}.bi-cloud-slash:before{content:"\\f2b8"}.bi-cloud-sleet-fill:before{content:"\\f2b9"}.bi-cloud-sleet:before{content:"\\f2ba"}.bi-cloud-snow-fill:before{content:"\\f2bb"}.bi-cloud-snow:before{content:"\\f2bc"}.bi-cloud-sun-fill:before{content:"\\f2bd"}.bi-cloud-sun:before{content:"\\f2be"}.bi-cloud-upload-fill:before{content:"\\f2bf"}.bi-cloud-upload:before{content:"\\f2c0"}.bi-cloud:before{content:"\\f2c1"}.bi-clouds-fill:before{content:"\\f2c2"}.bi-clouds:before{content:"\\f2c3"}.bi-cloudy-fill:before{content:"\\f2c4"}.bi-cloudy:before{content:"\\f2c5"}.bi-code-slash:before{content:"\\f2c6"}.bi-code-square:before{content:"\\f2c7"}.bi-code:before{content:"\\f2c8"}.bi-collection-fill:before{content:"\\f2c9"}.bi-collection-play-fill:before{content:"\\f2ca"}.bi-collection-play:before{content:"\\f2cb"}.bi-collection:before{content:"\\f2cc"}.bi-columns-gap:before{content:"\\f2cd"}.bi-columns:before{content:"\\f2ce"}.bi-command:before{content:"\\f2cf"}.bi-compass-fill:before{content:"\\f2d0"}.bi-compass:before{content:"\\f2d1"}.bi-cone-striped:before{content:"\\f2d2"}.bi-cone:before{content:"\\f2d3"}.bi-controller:before{content:"\\f2d4"}.bi-cpu-fill:before{content:"\\f2d5"}.bi-cpu:before{content:"\\f2d6"}.bi-credit-card-2-back-fill:before{content:"\\f2d7"}.bi-credit-card-2-back:before{content:"\\f2d8"}.bi-credit-card-2-front-fill:before{content:"\\f2d9"}.bi-credit-card-2-front:before{content:"\\f2da"}.bi-credit-card-fill:before{content:"\\f2db"}.bi-credit-card:before{content:"\\f2dc"}.bi-crop:before{content:"\\f2dd"}.bi-cup-fill:before{content:"\\f2de"}.bi-cup-straw:before{content:"\\f2df"}.bi-cup:before{content:"\\f2e0"}.bi-cursor-fill:before{content:"\\f2e1"}.bi-cursor-text:before{content:"\\f2e2"}.bi-cursor:before{content:"\\f2e3"}.bi-dash-circle-dotted:before{content:"\\f2e4"}.bi-dash-circle-fill:before{content:"\\f2e5"}.bi-dash-circle:before{content:"\\f2e6"}.bi-dash-square-dotted:before{content:"\\f2e7"}.bi-dash-square-fill:before{content:"\\f2e8"}.bi-dash-square:before{content:"\\f2e9"}.bi-dash:before{content:"\\f2ea"}.bi-diagram-2-fill:before{content:"\\f2eb"}.bi-diagram-2:before{content:"\\f2ec"}.bi-diagram-3-fill:before{content:"\\f2ed"}.bi-diagram-3:before{content:"\\f2ee"}.bi-diamond-fill:before{content:"\\f2ef"}.bi-diamond-half:before{content:"\\f2f0"}.bi-diamond:before{content:"\\f2f1"}.bi-dice-1-fill:before{content:"\\f2f2"}.bi-dice-1:before{content:"\\f2f3"}.bi-dice-2-fill:before{content:"\\f2f4"}.bi-dice-2:before{content:"\\f2f5"}.bi-dice-3-fill:before{content:"\\f2f6"}.bi-dice-3:before{content:"\\f2f7"}.bi-dice-4-fill:before{content:"\\f2f8"}.bi-dice-4:before{content:"\\f2f9"}.bi-dice-5-fill:before{content:"\\f2fa"}.bi-dice-5:before{content:"\\f2fb"}.bi-dice-6-fill:before{content:"\\f2fc"}.bi-dice-6:before{content:"\\f2fd"}.bi-disc-fill:before{content:"\\f2fe"}.bi-disc:before{content:"\\f2ff"}.bi-discord:before{content:"\\f300"}.bi-display-fill:before{content:"\\f301"}.bi-display:before{content:"\\f302"}.bi-distribute-horizontal:before{content:"\\f303"}.bi-distribute-vertical:before{content:"\\f304"}.bi-door-closed-fill:before{content:"\\f305"}.bi-door-closed:before{content:"\\f306"}.bi-door-open-fill:before{content:"\\f307"}.bi-door-open:before{content:"\\f308"}.bi-dot:before{content:"\\f309"}.bi-download:before{content:"\\f30a"}.bi-droplet-fill:before{content:"\\f30b"}.bi-droplet-half:before{content:"\\f30c"}.bi-droplet:before{content:"\\f30d"}.bi-earbuds:before{content:"\\f30e"}.bi-easel-fill:before{content:"\\f30f"}.bi-easel:before{content:"\\f310"}.bi-egg-fill:before{content:"\\f311"}.bi-egg-fried:before{content:"\\f312"}.bi-egg:before{content:"\\f313"}.bi-eject-fill:before{content:"\\f314"}.bi-eject:before{content:"\\f315"}.bi-emoji-angry-fill:before{content:"\\f316"}.bi-emoji-angry:before{content:"\\f317"}.bi-emoji-dizzy-fill:before{content:"\\f318"}.bi-emoji-dizzy:before{content:"\\f319"}.bi-emoji-expressionless-fill:before{content:"\\f31a"}.bi-emoji-expressionless:before{content:"\\f31b"}.bi-emoji-frown-fill:before{content:"\\f31c"}.bi-emoji-frown:before{content:"\\f31d"}.bi-emoji-heart-eyes-fill:before{content:"\\f31e"}.bi-emoji-heart-eyes:before{content:"\\f31f"}.bi-emoji-laughing-fill:before{content:"\\f320"}.bi-emoji-laughing:before{content:"\\f321"}.bi-emoji-neutral-fill:before{content:"\\f322"}.bi-emoji-neutral:before{content:"\\f323"}.bi-emoji-smile-fill:before{content:"\\f324"}.bi-emoji-smile-upside-down-fill:before{content:"\\f325"}.bi-emoji-smile-upside-down:before{content:"\\f326"}.bi-emoji-smile:before{content:"\\f327"}.bi-emoji-sunglasses-fill:before{content:"\\f328"}.bi-emoji-sunglasses:before{content:"\\f329"}.bi-emoji-wink-fill:before{content:"\\f32a"}.bi-emoji-wink:before{content:"\\f32b"}.bi-envelope-fill:before{content:"\\f32c"}.bi-envelope-open-fill:before{content:"\\f32d"}.bi-envelope-open:before{content:"\\f32e"}.bi-envelope:before{content:"\\f32f"}.bi-eraser-fill:before{content:"\\f330"}.bi-eraser:before{content:"\\f331"}.bi-exclamation-circle-fill:before{content:"\\f332"}.bi-exclamation-circle:before{content:"\\f333"}.bi-exclamation-diamond-fill:before{content:"\\f334"}.bi-exclamation-diamond:before{content:"\\f335"}.bi-exclamation-octagon-fill:before{content:"\\f336"}.bi-exclamation-octagon:before{content:"\\f337"}.bi-exclamation-square-fill:before{content:"\\f338"}.bi-exclamation-square:before{content:"\\f339"}.bi-exclamation-triangle-fill:before{content:"\\f33a"}.bi-exclamation-triangle:before{content:"\\f33b"}.bi-exclamation:before{content:"\\f33c"}.bi-exclude:before{content:"\\f33d"}.bi-eye-fill:before{content:"\\f33e"}.bi-eye-slash-fill:before{content:"\\f33f"}.bi-eye-slash:before{content:"\\f340"}.bi-eye:before{content:"\\f341"}.bi-eyedropper:before{content:"\\f342"}.bi-eyeglasses:before{content:"\\f343"}.bi-facebook:before{content:"\\f344"}.bi-file-arrow-down-fill:before{content:"\\f345"}.bi-file-arrow-down:before{content:"\\f346"}.bi-file-arrow-up-fill:before{content:"\\f347"}.bi-file-arrow-up:before{content:"\\f348"}.bi-file-bar-graph-fill:before{content:"\\f349"}.bi-file-bar-graph:before{content:"\\f34a"}.bi-file-binary-fill:before{content:"\\f34b"}.bi-file-binary:before{content:"\\f34c"}.bi-file-break-fill:before{content:"\\f34d"}.bi-file-break:before{content:"\\f34e"}.bi-file-check-fill:before{content:"\\f34f"}.bi-file-check:before{content:"\\f350"}.bi-file-code-fill:before{content:"\\f351"}.bi-file-code:before{content:"\\f352"}.bi-file-diff-fill:before{content:"\\f353"}.bi-file-diff:before{content:"\\f354"}.bi-file-earmark-arrow-down-fill:before{content:"\\f355"}.bi-file-earmark-arrow-down:before{content:"\\f356"}.bi-file-earmark-arrow-up-fill:before{content:"\\f357"}.bi-file-earmark-arrow-up:before{content:"\\f358"}.bi-file-earmark-bar-graph-fill:before{content:"\\f359"}.bi-file-earmark-bar-graph:before{content:"\\f35a"}.bi-file-earmark-binary-fill:before{content:"\\f35b"}.bi-file-earmark-binary:before{content:"\\f35c"}.bi-file-earmark-break-fill:before{content:"\\f35d"}.bi-file-earmark-break:before{content:"\\f35e"}.bi-file-earmark-check-fill:before{content:"\\f35f"}.bi-file-earmark-check:before{content:"\\f360"}.bi-file-earmark-code-fill:before{content:"\\f361"}.bi-file-earmark-code:before{content:"\\f362"}.bi-file-earmark-diff-fill:before{content:"\\f363"}.bi-file-earmark-diff:before{content:"\\f364"}.bi-file-earmark-easel-fill:before{content:"\\f365"}.bi-file-earmark-easel:before{content:"\\f366"}.bi-file-earmark-excel-fill:before{content:"\\f367"}.bi-file-earmark-excel:before{content:"\\f368"}.bi-file-earmark-fill:before{content:"\\f369"}.bi-file-earmark-font-fill:before{content:"\\f36a"}.bi-file-earmark-font:before{content:"\\f36b"}.bi-file-earmark-image-fill:before{content:"\\f36c"}.bi-file-earmark-image:before{content:"\\f36d"}.bi-file-earmark-lock-fill:before{content:"\\f36e"}.bi-file-earmark-lock:before{content:"\\f36f"}.bi-file-earmark-lock2-fill:before{content:"\\f370"}.bi-file-earmark-lock2:before{content:"\\f371"}.bi-file-earmark-medical-fill:before{content:"\\f372"}.bi-file-earmark-medical:before{content:"\\f373"}.bi-file-earmark-minus-fill:before{content:"\\f374"}.bi-file-earmark-minus:before{content:"\\f375"}.bi-file-earmark-music-fill:before{content:"\\f376"}.bi-file-earmark-music:before{content:"\\f377"}.bi-file-earmark-person-fill:before{content:"\\f378"}.bi-file-earmark-person:before{content:"\\f379"}.bi-file-earmark-play-fill:before{content:"\\f37a"}.bi-file-earmark-play:before{content:"\\f37b"}.bi-file-earmark-plus-fill:before{content:"\\f37c"}.bi-file-earmark-plus:before{content:"\\f37d"}.bi-file-earmark-post-fill:before{content:"\\f37e"}.bi-file-earmark-post:before{content:"\\f37f"}.bi-file-earmark-ppt-fill:before{content:"\\f380"}.bi-file-earmark-ppt:before{content:"\\f381"}.bi-file-earmark-richtext-fill:before{content:"\\f382"}.bi-file-earmark-richtext:before{content:"\\f383"}.bi-file-earmark-ruled-fill:before{content:"\\f384"}.bi-file-earmark-ruled:before{content:"\\f385"}.bi-file-earmark-slides-fill:before{content:"\\f386"}.bi-file-earmark-slides:before{content:"\\f387"}.bi-file-earmark-spreadsheet-fill:before{content:"\\f388"}.bi-file-earmark-spreadsheet:before{content:"\\f389"}.bi-file-earmark-text-fill:before{content:"\\f38a"}.bi-file-earmark-text:before{content:"\\f38b"}.bi-file-earmark-word-fill:before{content:"\\f38c"}.bi-file-earmark-word:before{content:"\\f38d"}.bi-file-earmark-x-fill:before{content:"\\f38e"}.bi-file-earmark-x:before{content:"\\f38f"}.bi-file-earmark-zip-fill:before{content:"\\f390"}.bi-file-earmark-zip:before{content:"\\f391"}.bi-file-earmark:before{content:"\\f392"}.bi-file-easel-fill:before{content:"\\f393"}.bi-file-easel:before{content:"\\f394"}.bi-file-excel-fill:before{content:"\\f395"}.bi-file-excel:before{content:"\\f396"}.bi-file-fill:before{content:"\\f397"}.bi-file-font-fill:before{content:"\\f398"}.bi-file-font:before{content:"\\f399"}.bi-file-image-fill:before{content:"\\f39a"}.bi-file-image:before{content:"\\f39b"}.bi-file-lock-fill:before{content:"\\f39c"}.bi-file-lock:before{content:"\\f39d"}.bi-file-lock2-fill:before{content:"\\f39e"}.bi-file-lock2:before{content:"\\f39f"}.bi-file-medical-fill:before{content:"\\f3a0"}.bi-file-medical:before{content:"\\f3a1"}.bi-file-minus-fill:before{content:"\\f3a2"}.bi-file-minus:before{content:"\\f3a3"}.bi-file-music-fill:before{content:"\\f3a4"}.bi-file-music:before{content:"\\f3a5"}.bi-file-person-fill:before{content:"\\f3a6"}.bi-file-person:before{content:"\\f3a7"}.bi-file-play-fill:before{content:"\\f3a8"}.bi-file-play:before{content:"\\f3a9"}.bi-file-plus-fill:before{content:"\\f3aa"}.bi-file-plus:before{content:"\\f3ab"}.bi-file-post-fill:before{content:"\\f3ac"}.bi-file-post:before{content:"\\f3ad"}.bi-file-ppt-fill:before{content:"\\f3ae"}.bi-file-ppt:before{content:"\\f3af"}.bi-file-richtext-fill:before{content:"\\f3b0"}.bi-file-richtext:before{content:"\\f3b1"}.bi-file-ruled-fill:before{content:"\\f3b2"}.bi-file-ruled:before{content:"\\f3b3"}.bi-file-slides-fill:before{content:"\\f3b4"}.bi-file-slides:before{content:"\\f3b5"}.bi-file-spreadsheet-fill:before{content:"\\f3b6"}.bi-file-spreadsheet:before{content:"\\f3b7"}.bi-file-text-fill:before{content:"\\f3b8"}.bi-file-text:before{content:"\\f3b9"}.bi-file-word-fill:before{content:"\\f3ba"}.bi-file-word:before{content:"\\f3bb"}.bi-file-x-fill:before{content:"\\f3bc"}.bi-file-x:before{content:"\\f3bd"}.bi-file-zip-fill:before{content:"\\f3be"}.bi-file-zip:before{content:"\\f3bf"}.bi-file:before{content:"\\f3c0"}.bi-files-alt:before{content:"\\f3c1"}.bi-files:before{content:"\\f3c2"}.bi-film:before{content:"\\f3c3"}.bi-filter-circle-fill:before{content:"\\f3c4"}.bi-filter-circle:before{content:"\\f3c5"}.bi-filter-left:before{content:"\\f3c6"}.bi-filter-right:before{content:"\\f3c7"}.bi-filter-square-fill:before{content:"\\f3c8"}.bi-filter-square:before{content:"\\f3c9"}.bi-filter:before{content:"\\f3ca"}.bi-flag-fill:before{content:"\\f3cb"}.bi-flag:before{content:"\\f3cc"}.bi-flower1:before{content:"\\f3cd"}.bi-flower2:before{content:"\\f3ce"}.bi-flower3:before{content:"\\f3cf"}.bi-folder-check:before{content:"\\f3d0"}.bi-folder-fill:before{content:"\\f3d1"}.bi-folder-minus:before{content:"\\f3d2"}.bi-folder-plus:before{content:"\\f3d3"}.bi-folder-symlink-fill:before{content:"\\f3d4"}.bi-folder-symlink:before{content:"\\f3d5"}.bi-folder-x:before{content:"\\f3d6"}.bi-folder:before{content:"\\f3d7"}.bi-folder2-open:before{content:"\\f3d8"}.bi-folder2:before{content:"\\f3d9"}.bi-fonts:before{content:"\\f3da"}.bi-forward-fill:before{content:"\\f3db"}.bi-forward:before{content:"\\f3dc"}.bi-front:before{content:"\\f3dd"}.bi-fullscreen-exit:before{content:"\\f3de"}.bi-fullscreen:before{content:"\\f3df"}.bi-funnel-fill:before{content:"\\f3e0"}.bi-funnel:before{content:"\\f3e1"}.bi-gear-fill:before{content:"\\f3e2"}.bi-gear-wide-connected:before{content:"\\f3e3"}.bi-gear-wide:before{content:"\\f3e4"}.bi-gear:before{content:"\\f3e5"}.bi-gem:before{content:"\\f3e6"}.bi-geo-alt-fill:before{content:"\\f3e7"}.bi-geo-alt:before{content:"\\f3e8"}.bi-geo-fill:before{content:"\\f3e9"}.bi-geo:before{content:"\\f3ea"}.bi-gift-fill:before{content:"\\f3eb"}.bi-gift:before{content:"\\f3ec"}.bi-github:before{content:"\\f3ed"}.bi-globe:before{content:"\\f3ee"}.bi-globe2:before{content:"\\f3ef"}.bi-google:before{content:"\\f3f0"}.bi-graph-down:before{content:"\\f3f1"}.bi-graph-up:before{content:"\\f3f2"}.bi-grid-1x2-fill:before{content:"\\f3f3"}.bi-grid-1x2:before{content:"\\f3f4"}.bi-grid-3x2-gap-fill:before{content:"\\f3f5"}.bi-grid-3x2-gap:before{content:"\\f3f6"}.bi-grid-3x2:before{content:"\\f3f7"}.bi-grid-3x3-gap-fill:before{content:"\\f3f8"}.bi-grid-3x3-gap:before{content:"\\f3f9"}.bi-grid-3x3:before{content:"\\f3fa"}.bi-grid-fill:before{content:"\\f3fb"}.bi-grid:before{content:"\\f3fc"}.bi-grip-horizontal:before{content:"\\f3fd"}.bi-grip-vertical:before{content:"\\f3fe"}.bi-hammer:before{content:"\\f3ff"}.bi-hand-index-fill:before{content:"\\f400"}.bi-hand-index-thumb-fill:before{content:"\\f401"}.bi-hand-index-thumb:before{content:"\\f402"}.bi-hand-index:before{content:"\\f403"}.bi-hand-thumbs-down-fill:before{content:"\\f404"}.bi-hand-thumbs-down:before{content:"\\f405"}.bi-hand-thumbs-up-fill:before{content:"\\f406"}.bi-hand-thumbs-up:before{content:"\\f407"}.bi-handbag-fill:before{content:"\\f408"}.bi-handbag:before{content:"\\f409"}.bi-hash:before{content:"\\f40a"}.bi-hdd-fill:before{content:"\\f40b"}.bi-hdd-network-fill:before{content:"\\f40c"}.bi-hdd-network:before{content:"\\f40d"}.bi-hdd-rack-fill:before{content:"\\f40e"}.bi-hdd-rack:before{content:"\\f40f"}.bi-hdd-stack-fill:before{content:"\\f410"}.bi-hdd-stack:before{content:"\\f411"}.bi-hdd:before{content:"\\f412"}.bi-headphones:before{content:"\\f413"}.bi-headset:before{content:"\\f414"}.bi-heart-fill:before{content:"\\f415"}.bi-heart-half:before{content:"\\f416"}.bi-heart:before{content:"\\f417"}.bi-heptagon-fill:before{content:"\\f418"}.bi-heptagon-half:before{content:"\\f419"}.bi-heptagon:before{content:"\\f41a"}.bi-hexagon-fill:before{content:"\\f41b"}.bi-hexagon-half:before{content:"\\f41c"}.bi-hexagon:before{content:"\\f41d"}.bi-hourglass-bottom:before{content:"\\f41e"}.bi-hourglass-split:before{content:"\\f41f"}.bi-hourglass-top:before{content:"\\f420"}.bi-hourglass:before{content:"\\f421"}.bi-house-door-fill:before{content:"\\f422"}.bi-house-door:before{content:"\\f423"}.bi-house-fill:before{content:"\\f424"}.bi-house:before{content:"\\f425"}.bi-hr:before{content:"\\f426"}.bi-hurricane:before{content:"\\f427"}.bi-image-alt:before{content:"\\f428"}.bi-image-fill:before{content:"\\f429"}.bi-image:before{content:"\\f42a"}.bi-images:before{content:"\\f42b"}.bi-inbox-fill:before{content:"\\f42c"}.bi-inbox:before{content:"\\f42d"}.bi-inboxes-fill:before{content:"\\f42e"}.bi-inboxes:before{content:"\\f42f"}.bi-info-circle-fill:before{content:"\\f430"}.bi-info-circle:before{content:"\\f431"}.bi-info-square-fill:before{content:"\\f432"}.bi-info-square:before{content:"\\f433"}.bi-info:before{content:"\\f434"}.bi-input-cursor-text:before{content:"\\f435"}.bi-input-cursor:before{content:"\\f436"}.bi-instagram:before{content:"\\f437"}.bi-intersect:before{content:"\\f438"}.bi-journal-album:before{content:"\\f439"}.bi-journal-arrow-down:before{content:"\\f43a"}.bi-journal-arrow-up:before{content:"\\f43b"}.bi-journal-bookmark-fill:before{content:"\\f43c"}.bi-journal-bookmark:before{content:"\\f43d"}.bi-journal-check:before{content:"\\f43e"}.bi-journal-code:before{content:"\\f43f"}.bi-journal-medical:before{content:"\\f440"}.bi-journal-minus:before{content:"\\f441"}.bi-journal-plus:before{content:"\\f442"}.bi-journal-richtext:before{content:"\\f443"}.bi-journal-text:before{content:"\\f444"}.bi-journal-x:before{content:"\\f445"}.bi-journal:before{content:"\\f446"}.bi-journals:before{content:"\\f447"}.bi-joystick:before{content:"\\f448"}.bi-justify-left:before{content:"\\f449"}.bi-justify-right:before{content:"\\f44a"}.bi-justify:before{content:"\\f44b"}.bi-kanban-fill:before{content:"\\f44c"}.bi-kanban:before{content:"\\f44d"}.bi-key-fill:before{content:"\\f44e"}.bi-key:before{content:"\\f44f"}.bi-keyboard-fill:before{content:"\\f450"}.bi-keyboard:before{content:"\\f451"}.bi-ladder:before{content:"\\f452"}.bi-lamp-fill:before{content:"\\f453"}.bi-lamp:before{content:"\\f454"}.bi-laptop-fill:before{content:"\\f455"}.bi-laptop:before{content:"\\f456"}.bi-layer-backward:before{content:"\\f457"}.bi-layer-forward:before{content:"\\f458"}.bi-layers-fill:before{content:"\\f459"}.bi-layers-half:before{content:"\\f45a"}.bi-layers:before{content:"\\f45b"}.bi-layout-sidebar-inset-reverse:before{content:"\\f45c"}.bi-layout-sidebar-inset:before{content:"\\f45d"}.bi-layout-sidebar-reverse:before{content:"\\f45e"}.bi-layout-sidebar:before{content:"\\f45f"}.bi-layout-split:before{content:"\\f460"}.bi-layout-text-sidebar-reverse:before{content:"\\f461"}.bi-layout-text-sidebar:before{content:"\\f462"}.bi-layout-text-window-reverse:before{content:"\\f463"}.bi-layout-text-window:before{content:"\\f464"}.bi-layout-three-columns:before{content:"\\f465"}.bi-layout-wtf:before{content:"\\f466"}.bi-life-preserver:before{content:"\\f467"}.bi-lightbulb-fill:before{content:"\\f468"}.bi-lightbulb-off-fill:before{content:"\\f469"}.bi-lightbulb-off:before{content:"\\f46a"}.bi-lightbulb:before{content:"\\f46b"}.bi-lightning-charge-fill:before{content:"\\f46c"}.bi-lightning-charge:before{content:"\\f46d"}.bi-lightning-fill:before{content:"\\f46e"}.bi-lightning:before{content:"\\f46f"}.bi-link-45deg:before{content:"\\f470"}.bi-link:before{content:"\\f471"}.bi-linkedin:before{content:"\\f472"}.bi-list-check:before{content:"\\f473"}.bi-list-nested:before{content:"\\f474"}.bi-list-ol:before{content:"\\f475"}.bi-list-stars:before{content:"\\f476"}.bi-list-task:before{content:"\\f477"}.bi-list-ul:before{content:"\\f478"}.bi-list:before{content:"\\f479"}.bi-lock-fill:before{content:"\\f47a"}.bi-lock:before{content:"\\f47b"}.bi-mailbox:before{content:"\\f47c"}.bi-mailbox2:before{content:"\\f47d"}.bi-map-fill:before{content:"\\f47e"}.bi-map:before{content:"\\f47f"}.bi-markdown-fill:before{content:"\\f480"}.bi-markdown:before{content:"\\f481"}.bi-mask:before{content:"\\f482"}.bi-megaphone-fill:before{content:"\\f483"}.bi-megaphone:before{content:"\\f484"}.bi-menu-app-fill:before{content:"\\f485"}.bi-menu-app:before{content:"\\f486"}.bi-menu-button-fill:before{content:"\\f487"}.bi-menu-button-wide-fill:before{content:"\\f488"}.bi-menu-button-wide:before{content:"\\f489"}.bi-menu-button:before{content:"\\f48a"}.bi-menu-down:before{content:"\\f48b"}.bi-menu-up:before{content:"\\f48c"}.bi-mic-fill:before{content:"\\f48d"}.bi-mic-mute-fill:before{content:"\\f48e"}.bi-mic-mute:before{content:"\\f48f"}.bi-mic:before{content:"\\f490"}.bi-minecart-loaded:before{content:"\\f491"}.bi-minecart:before{content:"\\f492"}.bi-moisture:before{content:"\\f493"}.bi-moon-fill:before{content:"\\f494"}.bi-moon-stars-fill:before{content:"\\f495"}.bi-moon-stars:before{content:"\\f496"}.bi-moon:before{content:"\\f497"}.bi-mouse-fill:before{content:"\\f498"}.bi-mouse:before{content:"\\f499"}.bi-mouse2-fill:before{content:"\\f49a"}.bi-mouse2:before{content:"\\f49b"}.bi-mouse3-fill:before{content:"\\f49c"}.bi-mouse3:before{content:"\\f49d"}.bi-music-note-beamed:before{content:"\\f49e"}.bi-music-note-list:before{content:"\\f49f"}.bi-music-note:before{content:"\\f4a0"}.bi-music-player-fill:before{content:"\\f4a1"}.bi-music-player:before{content:"\\f4a2"}.bi-newspaper:before{content:"\\f4a3"}.bi-node-minus-fill:before{content:"\\f4a4"}.bi-node-minus:before{content:"\\f4a5"}.bi-node-plus-fill:before{content:"\\f4a6"}.bi-node-plus:before{content:"\\f4a7"}.bi-nut-fill:before{content:"\\f4a8"}.bi-nut:before{content:"\\f4a9"}.bi-octagon-fill:before{content:"\\f4aa"}.bi-octagon-half:before{content:"\\f4ab"}.bi-octagon:before{content:"\\f4ac"}.bi-option:before{content:"\\f4ad"}.bi-outlet:before{content:"\\f4ae"}.bi-paint-bucket:before{content:"\\f4af"}.bi-palette-fill:before{content:"\\f4b0"}.bi-palette:before{content:"\\f4b1"}.bi-palette2:before{content:"\\f4b2"}.bi-paperclip:before{content:"\\f4b3"}.bi-paragraph:before{content:"\\f4b4"}.bi-patch-check-fill:before{content:"\\f4b5"}.bi-patch-check:before{content:"\\f4b6"}.bi-patch-exclamation-fill:before{content:"\\f4b7"}.bi-patch-exclamation:before{content:"\\f4b8"}.bi-patch-minus-fill:before{content:"\\f4b9"}.bi-patch-minus:before{content:"\\f4ba"}.bi-patch-plus-fill:before{content:"\\f4bb"}.bi-patch-plus:before{content:"\\f4bc"}.bi-patch-question-fill:before{content:"\\f4bd"}.bi-patch-question:before{content:"\\f4be"}.bi-pause-btn-fill:before{content:"\\f4bf"}.bi-pause-btn:before{content:"\\f4c0"}.bi-pause-circle-fill:before{content:"\\f4c1"}.bi-pause-circle:before{content:"\\f4c2"}.bi-pause-fill:before{content:"\\f4c3"}.bi-pause:before{content:"\\f4c4"}.bi-peace-fill:before{content:"\\f4c5"}.bi-peace:before{content:"\\f4c6"}.bi-pen-fill:before{content:"\\f4c7"}.bi-pen:before{content:"\\f4c8"}.bi-pencil-fill:before{content:"\\f4c9"}.bi-pencil-square:before{content:"\\f4ca"}.bi-pencil:before{content:"\\f4cb"}.bi-pentagon-fill:before{content:"\\f4cc"}.bi-pentagon-half:before{content:"\\f4cd"}.bi-pentagon:before{content:"\\f4ce"}.bi-people-fill:before{content:"\\f4cf"}.bi-people:before{content:"\\f4d0"}.bi-percent:before{content:"\\f4d1"}.bi-person-badge-fill:before{content:"\\f4d2"}.bi-person-badge:before{content:"\\f4d3"}.bi-person-bounding-box:before{content:"\\f4d4"}.bi-person-check-fill:before{content:"\\f4d5"}.bi-person-check:before{content:"\\f4d6"}.bi-person-circle:before{content:"\\f4d7"}.bi-person-dash-fill:before{content:"\\f4d8"}.bi-person-dash:before{content:"\\f4d9"}.bi-person-fill:before{content:"\\f4da"}.bi-person-lines-fill:before{content:"\\f4db"}.bi-person-plus-fill:before{content:"\\f4dc"}.bi-person-plus:before{content:"\\f4dd"}.bi-person-square:before{content:"\\f4de"}.bi-person-x-fill:before{content:"\\f4df"}.bi-person-x:before{content:"\\f4e0"}.bi-person:before{content:"\\f4e1"}.bi-phone-fill:before{content:"\\f4e2"}.bi-phone-landscape-fill:before{content:"\\f4e3"}.bi-phone-landscape:before{content:"\\f4e4"}.bi-phone-vibrate-fill:before{content:"\\f4e5"}.bi-phone-vibrate:before{content:"\\f4e6"}.bi-phone:before{content:"\\f4e7"}.bi-pie-chart-fill:before{content:"\\f4e8"}.bi-pie-chart:before{content:"\\f4e9"}.bi-pin-angle-fill:before{content:"\\f4ea"}.bi-pin-angle:before{content:"\\f4eb"}.bi-pin-fill:before{content:"\\f4ec"}.bi-pin:before{content:"\\f4ed"}.bi-pip-fill:before{content:"\\f4ee"}.bi-pip:before{content:"\\f4ef"}.bi-play-btn-fill:before{content:"\\f4f0"}.bi-play-btn:before{content:"\\f4f1"}.bi-play-circle-fill:before{content:"\\f4f2"}.bi-play-circle:before{content:"\\f4f3"}.bi-play-fill:before{content:"\\f4f4"}.bi-play:before{content:"\\f4f5"}.bi-plug-fill:before{content:"\\f4f6"}.bi-plug:before{content:"\\f4f7"}.bi-plus-circle-dotted:before{content:"\\f4f8"}.bi-plus-circle-fill:before{content:"\\f4f9"}.bi-plus-circle:before{content:"\\f4fa"}.bi-plus-square-dotted:before{content:"\\f4fb"}.bi-plus-square-fill:before{content:"\\f4fc"}.bi-plus-square:before{content:"\\f4fd"}.bi-plus:before{content:"\\f4fe"}.bi-power:before{content:"\\f4ff"}.bi-printer-fill:before{content:"\\f500"}.bi-printer:before{content:"\\f501"}.bi-puzzle-fill:before{content:"\\f502"}.bi-puzzle:before{content:"\\f503"}.bi-question-circle-fill:before{content:"\\f504"}.bi-question-circle:before{content:"\\f505"}.bi-question-diamond-fill:before{content:"\\f506"}.bi-question-diamond:before{content:"\\f507"}.bi-question-octagon-fill:before{content:"\\f508"}.bi-question-octagon:before{content:"\\f509"}.bi-question-square-fill:before{content:"\\f50a"}.bi-question-square:before{content:"\\f50b"}.bi-question:before{content:"\\f50c"}.bi-rainbow:before{content:"\\f50d"}.bi-receipt-cutoff:before{content:"\\f50e"}.bi-receipt:before{content:"\\f50f"}.bi-reception-0:before{content:"\\f510"}.bi-reception-1:before{content:"\\f511"}.bi-reception-2:before{content:"\\f512"}.bi-reception-3:before{content:"\\f513"}.bi-reception-4:before{content:"\\f514"}.bi-record-btn-fill:before{content:"\\f515"}.bi-record-btn:before{content:"\\f516"}.bi-record-circle-fill:before{content:"\\f517"}.bi-record-circle:before{content:"\\f518"}.bi-record-fill:before{content:"\\f519"}.bi-record:before{content:"\\f51a"}.bi-record2-fill:before{content:"\\f51b"}.bi-record2:before{content:"\\f51c"}.bi-reply-all-fill:before{content:"\\f51d"}.bi-reply-all:before{content:"\\f51e"}.bi-reply-fill:before{content:"\\f51f"}.bi-reply:before{content:"\\f520"}.bi-rss-fill:before{content:"\\f521"}.bi-rss:before{content:"\\f522"}.bi-rulers:before{content:"\\f523"}.bi-save-fill:before{content:"\\f524"}.bi-save:before{content:"\\f525"}.bi-save2-fill:before{content:"\\f526"}.bi-save2:before{content:"\\f527"}.bi-scissors:before{content:"\\f528"}.bi-screwdriver:before{content:"\\f529"}.bi-search:before{content:"\\f52a"}.bi-segmented-nav:before{content:"\\f52b"}.bi-server:before{content:"\\f52c"}.bi-share-fill:before{content:"\\f52d"}.bi-share:before{content:"\\f52e"}.bi-shield-check:before{content:"\\f52f"}.bi-shield-exclamation:before{content:"\\f530"}.bi-shield-fill-check:before{content:"\\f531"}.bi-shield-fill-exclamation:before{content:"\\f532"}.bi-shield-fill-minus:before{content:"\\f533"}.bi-shield-fill-plus:before{content:"\\f534"}.bi-shield-fill-x:before{content:"\\f535"}.bi-shield-fill:before{content:"\\f536"}.bi-shield-lock-fill:before{content:"\\f537"}.bi-shield-lock:before{content:"\\f538"}.bi-shield-minus:before{content:"\\f539"}.bi-shield-plus:before{content:"\\f53a"}.bi-shield-shaded:before{content:"\\f53b"}.bi-shield-slash-fill:before{content:"\\f53c"}.bi-shield-slash:before{content:"\\f53d"}.bi-shield-x:before{content:"\\f53e"}.bi-shield:before{content:"\\f53f"}.bi-shift-fill:before{content:"\\f540"}.bi-shift:before{content:"\\f541"}.bi-shop-window:before{content:"\\f542"}.bi-shop:before{content:"\\f543"}.bi-shuffle:before{content:"\\f544"}.bi-signpost-2-fill:before{content:"\\f545"}.bi-signpost-2:before{content:"\\f546"}.bi-signpost-fill:before{content:"\\f547"}.bi-signpost-split-fill:before{content:"\\f548"}.bi-signpost-split:before{content:"\\f549"}.bi-signpost:before{content:"\\f54a"}.bi-sim-fill:before{content:"\\f54b"}.bi-sim:before{content:"\\f54c"}.bi-skip-backward-btn-fill:before{content:"\\f54d"}.bi-skip-backward-btn:before{content:"\\f54e"}.bi-skip-backward-circle-fill:before{content:"\\f54f"}.bi-skip-backward-circle:before{content:"\\f550"}.bi-skip-backward-fill:before{content:"\\f551"}.bi-skip-backward:before{content:"\\f552"}.bi-skip-end-btn-fill:before{content:"\\f553"}.bi-skip-end-btn:before{content:"\\f554"}.bi-skip-end-circle-fill:before{content:"\\f555"}.bi-skip-end-circle:before{content:"\\f556"}.bi-skip-end-fill:before{content:"\\f557"}.bi-skip-end:before{content:"\\f558"}.bi-skip-forward-btn-fill:before{content:"\\f559"}.bi-skip-forward-btn:before{content:"\\f55a"}.bi-skip-forward-circle-fill:before{content:"\\f55b"}.bi-skip-forward-circle:before{content:"\\f55c"}.bi-skip-forward-fill:before{content:"\\f55d"}.bi-skip-forward:before{content:"\\f55e"}.bi-skip-start-btn-fill:before{content:"\\f55f"}.bi-skip-start-btn:before{content:"\\f560"}.bi-skip-start-circle-fill:before{content:"\\f561"}.bi-skip-start-circle:before{content:"\\f562"}.bi-skip-start-fill:before{content:"\\f563"}.bi-skip-start:before{content:"\\f564"}.bi-slack:before{content:"\\f565"}.bi-slash-circle-fill:before{content:"\\f566"}.bi-slash-circle:before{content:"\\f567"}.bi-slash-square-fill:before{content:"\\f568"}.bi-slash-square:before{content:"\\f569"}.bi-slash:before{content:"\\f56a"}.bi-sliders:before{content:"\\f56b"}.bi-smartwatch:before{content:"\\f56c"}.bi-snow:before{content:"\\f56d"}.bi-snow2:before{content:"\\f56e"}.bi-snow3:before{content:"\\f56f"}.bi-sort-alpha-down-alt:before{content:"\\f570"}.bi-sort-alpha-down:before{content:"\\f571"}.bi-sort-alpha-up-alt:before{content:"\\f572"}.bi-sort-alpha-up:before{content:"\\f573"}.bi-sort-down-alt:before{content:"\\f574"}.bi-sort-down:before{content:"\\f575"}.bi-sort-numeric-down-alt:before{content:"\\f576"}.bi-sort-numeric-down:before{content:"\\f577"}.bi-sort-numeric-up-alt:before{content:"\\f578"}.bi-sort-numeric-up:before{content:"\\f579"}.bi-sort-up-alt:before{content:"\\f57a"}.bi-sort-up:before{content:"\\f57b"}.bi-soundwave:before{content:"\\f57c"}.bi-speaker-fill:before{content:"\\f57d"}.bi-speaker:before{content:"\\f57e"}.bi-speedometer:before{content:"\\f57f"}.bi-speedometer2:before{content:"\\f580"}.bi-spellcheck:before{content:"\\f581"}.bi-square-fill:before{content:"\\f582"}.bi-square-half:before{content:"\\f583"}.bi-square:before{content:"\\f584"}.bi-stack:before{content:"\\f585"}.bi-star-fill:before{content:"\\f586"}.bi-star-half:before{content:"\\f587"}.bi-star:before{content:"\\f588"}.bi-stars:before{content:"\\f589"}.bi-stickies-fill:before{content:"\\f58a"}.bi-stickies:before{content:"\\f58b"}.bi-sticky-fill:before{content:"\\f58c"}.bi-sticky:before{content:"\\f58d"}.bi-stop-btn-fill:before{content:"\\f58e"}.bi-stop-btn:before{content:"\\f58f"}.bi-stop-circle-fill:before{content:"\\f590"}.bi-stop-circle:before{content:"\\f591"}.bi-stop-fill:before{content:"\\f592"}.bi-stop:before{content:"\\f593"}.bi-stoplights-fill:before{content:"\\f594"}.bi-stoplights:before{content:"\\f595"}.bi-stopwatch-fill:before{content:"\\f596"}.bi-stopwatch:before{content:"\\f597"}.bi-subtract:before{content:"\\f598"}.bi-suit-club-fill:before{content:"\\f599"}.bi-suit-club:before{content:"\\f59a"}.bi-suit-diamond-fill:before{content:"\\f59b"}.bi-suit-diamond:before{content:"\\f59c"}.bi-suit-heart-fill:before{content:"\\f59d"}.bi-suit-heart:before{content:"\\f59e"}.bi-suit-spade-fill:before{content:"\\f59f"}.bi-suit-spade:before{content:"\\f5a0"}.bi-sun-fill:before{content:"\\f5a1"}.bi-sun:before{content:"\\f5a2"}.bi-sunglasses:before{content:"\\f5a3"}.bi-sunrise-fill:before{content:"\\f5a4"}.bi-sunrise:before{content:"\\f5a5"}.bi-sunset-fill:before{content:"\\f5a6"}.bi-sunset:before{content:"\\f5a7"}.bi-symmetry-horizontal:before{content:"\\f5a8"}.bi-symmetry-vertical:before{content:"\\f5a9"}.bi-table:before{content:"\\f5aa"}.bi-tablet-fill:before{content:"\\f5ab"}.bi-tablet-landscape-fill:before{content:"\\f5ac"}.bi-tablet-landscape:before{content:"\\f5ad"}.bi-tablet:before{content:"\\f5ae"}.bi-tag-fill:before{content:"\\f5af"}.bi-tag:before{content:"\\f5b0"}.bi-tags-fill:before{content:"\\f5b1"}.bi-tags:before{content:"\\f5b2"}.bi-telegram:before{content:"\\f5b3"}.bi-telephone-fill:before{content:"\\f5b4"}.bi-telephone-forward-fill:before{content:"\\f5b5"}.bi-telephone-forward:before{content:"\\f5b6"}.bi-telephone-inbound-fill:before{content:"\\f5b7"}.bi-telephone-inbound:before{content:"\\f5b8"}.bi-telephone-minus-fill:before{content:"\\f5b9"}.bi-telephone-minus:before{content:"\\f5ba"}.bi-telephone-outbound-fill:before{content:"\\f5bb"}.bi-telephone-outbound:before{content:"\\f5bc"}.bi-telephone-plus-fill:before{content:"\\f5bd"}.bi-telephone-plus:before{content:"\\f5be"}.bi-telephone-x-fill:before{content:"\\f5bf"}.bi-telephone-x:before{content:"\\f5c0"}.bi-telephone:before{content:"\\f5c1"}.bi-terminal-fill:before{content:"\\f5c2"}.bi-terminal:before{content:"\\f5c3"}.bi-text-center:before{content:"\\f5c4"}.bi-text-indent-left:before{content:"\\f5c5"}.bi-text-indent-right:before{content:"\\f5c6"}.bi-text-left:before{content:"\\f5c7"}.bi-text-paragraph:before{content:"\\f5c8"}.bi-text-right:before{content:"\\f5c9"}.bi-textarea-resize:before{content:"\\f5ca"}.bi-textarea-t:before{content:"\\f5cb"}.bi-textarea:before{content:"\\f5cc"}.bi-thermometer-half:before{content:"\\f5cd"}.bi-thermometer-high:before{content:"\\f5ce"}.bi-thermometer-low:before{content:"\\f5cf"}.bi-thermometer-snow:before{content:"\\f5d0"}.bi-thermometer-sun:before{content:"\\f5d1"}.bi-thermometer:before{content:"\\f5d2"}.bi-three-dots-vertical:before{content:"\\f5d3"}.bi-three-dots:before{content:"\\f5d4"}.bi-toggle-off:before{content:"\\f5d5"}.bi-toggle-on:before{content:"\\f5d6"}.bi-toggle2-off:before{content:"\\f5d7"}.bi-toggle2-on:before{content:"\\f5d8"}.bi-toggles:before{content:"\\f5d9"}.bi-toggles2:before{content:"\\f5da"}.bi-tools:before{content:"\\f5db"}.bi-tornado:before{content:"\\f5dc"}.bi-trash-fill:before{content:"\\f5dd"}.bi-trash:before{content:"\\f5de"}.bi-trash2-fill:before{content:"\\f5df"}.bi-trash2:before{content:"\\f5e0"}.bi-tree-fill:before{content:"\\f5e1"}.bi-tree:before{content:"\\f5e2"}.bi-triangle-fill:before{content:"\\f5e3"}.bi-triangle-half:before{content:"\\f5e4"}.bi-triangle:before{content:"\\f5e5"}.bi-trophy-fill:before{content:"\\f5e6"}.bi-trophy:before{content:"\\f5e7"}.bi-tropical-storm:before{content:"\\f5e8"}.bi-truck-flatbed:before{content:"\\f5e9"}.bi-truck:before{content:"\\f5ea"}.bi-tsunami:before{content:"\\f5eb"}.bi-tv-fill:before{content:"\\f5ec"}.bi-tv:before{content:"\\f5ed"}.bi-twitch:before{content:"\\f5ee"}.bi-twitter:before{content:"\\f5ef"}.bi-type-bold:before{content:"\\f5f0"}.bi-type-h1:before{content:"\\f5f1"}.bi-type-h2:before{content:"\\f5f2"}.bi-type-h3:before{content:"\\f5f3"}.bi-type-italic:before{content:"\\f5f4"}.bi-type-strikethrough:before{content:"\\f5f5"}.bi-type-underline:before{content:"\\f5f6"}.bi-type:before{content:"\\f5f7"}.bi-ui-checks-grid:before{content:"\\f5f8"}.bi-ui-checks:before{content:"\\f5f9"}.bi-ui-radios-grid:before{content:"\\f5fa"}.bi-ui-radios:before{content:"\\f5fb"}.bi-umbrella-fill:before{content:"\\f5fc"}.bi-umbrella:before{content:"\\f5fd"}.bi-union:before{content:"\\f5fe"}.bi-unlock-fill:before{content:"\\f5ff"}.bi-unlock:before{content:"\\f600"}.bi-upc-scan:before{content:"\\f601"}.bi-upc:before{content:"\\f602"}.bi-upload:before{content:"\\f603"}.bi-vector-pen:before{content:"\\f604"}.bi-view-list:before{content:"\\f605"}.bi-view-stacked:before{content:"\\f606"}.bi-vinyl-fill:before{content:"\\f607"}.bi-vinyl:before{content:"\\f608"}.bi-voicemail:before{content:"\\f609"}.bi-volume-down-fill:before{content:"\\f60a"}.bi-volume-down:before{content:"\\f60b"}.bi-volume-mute-fill:before{content:"\\f60c"}.bi-volume-mute:before{content:"\\f60d"}.bi-volume-off-fill:before{content:"\\f60e"}.bi-volume-off:before{content:"\\f60f"}.bi-volume-up-fill:before{content:"\\f610"}.bi-volume-up:before{content:"\\f611"}.bi-vr:before{content:"\\f612"}.bi-wallet-fill:before{content:"\\f613"}.bi-wallet:before{content:"\\f614"}.bi-wallet2:before{content:"\\f615"}.bi-watch:before{content:"\\f616"}.bi-water:before{content:"\\f617"}.bi-whatsapp:before{content:"\\f618"}.bi-wifi-1:before{content:"\\f619"}.bi-wifi-2:before{content:"\\f61a"}.bi-wifi-off:before{content:"\\f61b"}.bi-wifi:before{content:"\\f61c"}.bi-wind:before{content:"\\f61d"}.bi-window-dock:before{content:"\\f61e"}.bi-window-sidebar:before{content:"\\f61f"}.bi-window:before{content:"\\f620"}.bi-wrench:before{content:"\\f621"}.bi-x-circle-fill:before{content:"\\f622"}.bi-x-circle:before{content:"\\f623"}.bi-x-diamond-fill:before{content:"\\f624"}.bi-x-diamond:before{content:"\\f625"}.bi-x-octagon-fill:before{content:"\\f626"}.bi-x-octagon:before{content:"\\f627"}.bi-x-square-fill:before{content:"\\f628"}.bi-x-square:before{content:"\\f629"}.bi-x:before{content:"\\f62a"}.bi-youtube:before{content:"\\f62b"}.bi-zoom-in:before{content:"\\f62c"}.bi-zoom-out:before{content:"\\f62d"}.bi-bank:before{content:"\\f62e"}.bi-bank2:before{content:"\\f62f"}.bi-bell-slash-fill:before{content:"\\f630"}.bi-bell-slash:before{content:"\\f631"}.bi-cash-coin:before{content:"\\f632"}.bi-check-lg:before{content:"\\f633"}.bi-coin:before{content:"\\f634"}.bi-currency-bitcoin:before{content:"\\f635"}.bi-currency-dollar:before{content:"\\f636"}.bi-currency-euro:before{content:"\\f637"}.bi-currency-exchange:before{content:"\\f638"}.bi-currency-pound:before{content:"\\f639"}.bi-currency-yen:before{content:"\\f63a"}.bi-dash-lg:before{content:"\\f63b"}.bi-exclamation-lg:before{content:"\\f63c"}.bi-file-earmark-pdf-fill:before{content:"\\f63d"}.bi-file-earmark-pdf:before{content:"\\f63e"}.bi-file-pdf-fill:before{content:"\\f63f"}.bi-file-pdf:before{content:"\\f640"}.bi-gender-ambiguous:before{content:"\\f641"}.bi-gender-female:before{content:"\\f642"}.bi-gender-male:before{content:"\\f643"}.bi-gender-trans:before{content:"\\f644"}.bi-headset-vr:before{content:"\\f645"}.bi-info-lg:before{content:"\\f646"}.bi-mastodon:before{content:"\\f647"}.bi-messenger:before{content:"\\f648"}.bi-piggy-bank-fill:before{content:"\\f649"}.bi-piggy-bank:before{content:"\\f64a"}.bi-pin-map-fill:before{content:"\\f64b"}.bi-pin-map:before{content:"\\f64c"}.bi-plus-lg:before{content:"\\f64d"}.bi-question-lg:before{content:"\\f64e"}.bi-recycle:before{content:"\\f64f"}.bi-reddit:before{content:"\\f650"}.bi-safe-fill:before{content:"\\f651"}.bi-safe2-fill:before{content:"\\f652"}.bi-safe2:before{content:"\\f653"}.bi-sd-card-fill:before{content:"\\f654"}.bi-sd-card:before{content:"\\f655"}.bi-skype:before{content:"\\f656"}.bi-slash-lg:before{content:"\\f657"}.bi-translate:before{content:"\\f658"}.bi-x-lg:before{content:"\\f659"}.bi-safe:before{content:"\\f65a"}.bi-apple:before{content:"\\f65b"}.bi-microsoft:before{content:"\\f65d"}.bi-windows:before{content:"\\f65e"}.bi-behance:before{content:"\\f65c"}.bi-dribbble:before{content:"\\f65f"}.bi-line:before{content:"\\f660"}.bi-medium:before{content:"\\f661"}.bi-paypal:before{content:"\\f662"}.bi-pinterest:before{content:"\\f663"}.bi-signal:before{content:"\\f664"}.bi-snapchat:before{content:"\\f665"}.bi-spotify:before{content:"\\f666"}.bi-stack-overflow:before{content:"\\f667"}.bi-strava:before{content:"\\f668"}.bi-wordpress:before{content:"\\f669"}.bi-vimeo:before{content:"\\f66a"}.bi-activity:before{content:"\\f66b"}.bi-easel2-fill:before{content:"\\f66c"}.bi-easel2:before{content:"\\f66d"}.bi-easel3-fill:before{content:"\\f66e"}.bi-easel3:before{content:"\\f66f"}.bi-fan:before{content:"\\f670"}.bi-fingerprint:before{content:"\\f671"}.bi-graph-down-arrow:before{content:"\\f672"}.bi-graph-up-arrow:before{content:"\\f673"}.bi-hypnotize:before{content:"\\f674"}.bi-magic:before{content:"\\f675"}.bi-person-rolodex:before{content:"\\f676"}.bi-person-video:before{content:"\\f677"}.bi-person-video2:before{content:"\\f678"}.bi-person-video3:before{content:"\\f679"}.bi-person-workspace:before{content:"\\f67a"}.bi-radioactive:before{content:"\\f67b"}.bi-webcam-fill:before{content:"\\f67c"}.bi-webcam:before{content:"\\f67d"}.bi-yin-yang:before{content:"\\f67e"}.bi-bandaid-fill:before{content:"\\f680"}.bi-bandaid:before{content:"\\f681"}.bi-bluetooth:before{content:"\\f682"}.bi-body-text:before{content:"\\f683"}.bi-boombox:before{content:"\\f684"}.bi-boxes:before{content:"\\f685"}.bi-dpad-fill:before{content:"\\f686"}.bi-dpad:before{content:"\\f687"}.bi-ear-fill:before{content:"\\f688"}.bi-ear:before{content:"\\f689"}.bi-envelope-check-fill:before{content:"\\f68b"}.bi-envelope-check:before{content:"\\f68c"}.bi-envelope-dash-fill:before{content:"\\f68e"}.bi-envelope-dash:before{content:"\\f68f"}.bi-envelope-exclamation-fill:before{content:"\\f691"}.bi-envelope-exclamation:before{content:"\\f692"}.bi-envelope-plus-fill:before{content:"\\f693"}.bi-envelope-plus:before{content:"\\f694"}.bi-envelope-slash-fill:before{content:"\\f696"}.bi-envelope-slash:before{content:"\\f697"}.bi-envelope-x-fill:before{content:"\\f699"}.bi-envelope-x:before{content:"\\f69a"}.bi-explicit-fill:before{content:"\\f69b"}.bi-explicit:before{content:"\\f69c"}.bi-git:before{content:"\\f69d"}.bi-infinity:before{content:"\\f69e"}.bi-list-columns-reverse:before{content:"\\f69f"}.bi-list-columns:before{content:"\\f6a0"}.bi-meta:before{content:"\\f6a1"}.bi-nintendo-switch:before{content:"\\f6a4"}.bi-pc-display-horizontal:before{content:"\\f6a5"}.bi-pc-display:before{content:"\\f6a6"}.bi-pc-horizontal:before{content:"\\f6a7"}.bi-pc:before{content:"\\f6a8"}.bi-playstation:before{content:"\\f6a9"}.bi-plus-slash-minus:before{content:"\\f6aa"}.bi-projector-fill:before{content:"\\f6ab"}.bi-projector:before{content:"\\f6ac"}.bi-qr-code-scan:before{content:"\\f6ad"}.bi-qr-code:before{content:"\\f6ae"}.bi-quora:before{content:"\\f6af"}.bi-quote:before{content:"\\f6b0"}.bi-robot:before{content:"\\f6b1"}.bi-send-check-fill:before{content:"\\f6b2"}.bi-send-check:before{content:"\\f6b3"}.bi-send-dash-fill:before{content:"\\f6b4"}.bi-send-dash:before{content:"\\f6b5"}.bi-send-exclamation-fill:before{content:"\\f6b7"}.bi-send-exclamation:before{content:"\\f6b8"}.bi-send-fill:before{content:"\\f6b9"}.bi-send-plus-fill:before{content:"\\f6ba"}.bi-send-plus:before{content:"\\f6bb"}.bi-send-slash-fill:before{content:"\\f6bc"}.bi-send-slash:before{content:"\\f6bd"}.bi-send-x-fill:before{content:"\\f6be"}.bi-send-x:before{content:"\\f6bf"}.bi-send:before{content:"\\f6c0"}.bi-steam:before{content:"\\f6c1"}.bi-terminal-dash:before{content:"\\f6c3"}.bi-terminal-plus:before{content:"\\f6c4"}.bi-terminal-split:before{content:"\\f6c5"}.bi-ticket-detailed-fill:before{content:"\\f6c6"}.bi-ticket-detailed:before{content:"\\f6c7"}.bi-ticket-fill:before{content:"\\f6c8"}.bi-ticket-perforated-fill:before{content:"\\f6c9"}.bi-ticket-perforated:before{content:"\\f6ca"}.bi-ticket:before{content:"\\f6cb"}.bi-tiktok:before{content:"\\f6cc"}.bi-window-dash:before{content:"\\f6cd"}.bi-window-desktop:before{content:"\\f6ce"}.bi-window-fullscreen:before{content:"\\f6cf"}.bi-window-plus:before{content:"\\f6d0"}.bi-window-split:before{content:"\\f6d1"}.bi-window-stack:before{content:"\\f6d2"}.bi-window-x:before{content:"\\f6d3"}.bi-xbox:before{content:"\\f6d4"}.bi-ethernet:before{content:"\\f6d5"}.bi-hdmi-fill:before{content:"\\f6d6"}.bi-hdmi:before{content:"\\f6d7"}.bi-usb-c-fill:before{content:"\\f6d8"}.bi-usb-c:before{content:"\\f6d9"}.bi-usb-fill:before{content:"\\f6da"}.bi-usb-plug-fill:before{content:"\\f6db"}.bi-usb-plug:before{content:"\\f6dc"}.bi-usb-symbol:before{content:"\\f6dd"}.bi-usb:before{content:"\\f6de"}.bi-boombox-fill:before{content:"\\f6df"}.bi-displayport:before{content:"\\f6e1"}.bi-gpu-card:before{content:"\\f6e2"}.bi-memory:before{content:"\\f6e3"}.bi-modem-fill:before{content:"\\f6e4"}.bi-modem:before{content:"\\f6e5"}.bi-motherboard-fill:before{content:"\\f6e6"}.bi-motherboard:before{content:"\\f6e7"}.bi-optical-audio-fill:before{content:"\\f6e8"}.bi-optical-audio:before{content:"\\f6e9"}.bi-pci-card:before{content:"\\f6ea"}.bi-router-fill:before{content:"\\f6eb"}.bi-router:before{content:"\\f6ec"}.bi-thunderbolt-fill:before{content:"\\f6ef"}.bi-thunderbolt:before{content:"\\f6f0"}.bi-usb-drive-fill:before{content:"\\f6f1"}.bi-usb-drive:before{content:"\\f6f2"}.bi-usb-micro-fill:before{content:"\\f6f3"}.bi-usb-micro:before{content:"\\f6f4"}.bi-usb-mini-fill:before{content:"\\f6f5"}.bi-usb-mini:before{content:"\\f6f6"}.bi-cloud-haze2:before{content:"\\f6f7"}.bi-device-hdd-fill:before{content:"\\f6f8"}.bi-device-hdd:before{content:"\\f6f9"}.bi-device-ssd-fill:before{content:"\\f6fa"}.bi-device-ssd:before{content:"\\f6fb"}.bi-displayport-fill:before{content:"\\f6fc"}.bi-mortarboard-fill:before{content:"\\f6fd"}.bi-mortarboard:before{content:"\\f6fe"}.bi-terminal-x:before{content:"\\f6ff"}.bi-arrow-through-heart-fill:before{content:"\\f700"}.bi-arrow-through-heart:before{content:"\\f701"}.bi-badge-sd-fill:before{content:"\\f702"}.bi-badge-sd:before{content:"\\f703"}.bi-bag-heart-fill:before{content:"\\f704"}.bi-bag-heart:before{content:"\\f705"}.bi-balloon-fill:before{content:"\\f706"}.bi-balloon-heart-fill:before{content:"\\f707"}.bi-balloon-heart:before{content:"\\f708"}.bi-balloon:before{content:"\\f709"}.bi-box2-fill:before{content:"\\f70a"}.bi-box2-heart-fill:before{content:"\\f70b"}.bi-box2-heart:before{content:"\\f70c"}.bi-box2:before{content:"\\f70d"}.bi-braces-asterisk:before{content:"\\f70e"}.bi-calendar-heart-fill:before{content:"\\f70f"}.bi-calendar-heart:before{content:"\\f710"}.bi-calendar2-heart-fill:before{content:"\\f711"}.bi-calendar2-heart:before{content:"\\f712"}.bi-chat-heart-fill:before{content:"\\f713"}.bi-chat-heart:before{content:"\\f714"}.bi-chat-left-heart-fill:before{content:"\\f715"}.bi-chat-left-heart:before{content:"\\f716"}.bi-chat-right-heart-fill:before{content:"\\f717"}.bi-chat-right-heart:before{content:"\\f718"}.bi-chat-square-heart-fill:before{content:"\\f719"}.bi-chat-square-heart:before{content:"\\f71a"}.bi-clipboard-check-fill:before{content:"\\f71b"}.bi-clipboard-data-fill:before{content:"\\f71c"}.bi-clipboard-fill:before{content:"\\f71d"}.bi-clipboard-heart-fill:before{content:"\\f71e"}.bi-clipboard-heart:before{content:"\\f71f"}.bi-clipboard-minus-fill:before{content:"\\f720"}.bi-clipboard-plus-fill:before{content:"\\f721"}.bi-clipboard-pulse:before{content:"\\f722"}.bi-clipboard-x-fill:before{content:"\\f723"}.bi-clipboard2-check-fill:before{content:"\\f724"}.bi-clipboard2-check:before{content:"\\f725"}.bi-clipboard2-data-fill:before{content:"\\f726"}.bi-clipboard2-data:before{content:"\\f727"}.bi-clipboard2-fill:before{content:"\\f728"}.bi-clipboard2-heart-fill:before{content:"\\f729"}.bi-clipboard2-heart:before{content:"\\f72a"}.bi-clipboard2-minus-fill:before{content:"\\f72b"}.bi-clipboard2-minus:before{content:"\\f72c"}.bi-clipboard2-plus-fill:before{content:"\\f72d"}.bi-clipboard2-plus:before{content:"\\f72e"}.bi-clipboard2-pulse-fill:before{content:"\\f72f"}.bi-clipboard2-pulse:before{content:"\\f730"}.bi-clipboard2-x-fill:before{content:"\\f731"}.bi-clipboard2-x:before{content:"\\f732"}.bi-clipboard2:before{content:"\\f733"}.bi-emoji-kiss-fill:before{content:"\\f734"}.bi-emoji-kiss:before{content:"\\f735"}.bi-envelope-heart-fill:before{content:"\\f736"}.bi-envelope-heart:before{content:"\\f737"}.bi-envelope-open-heart-fill:before{content:"\\f738"}.bi-envelope-open-heart:before{content:"\\f739"}.bi-envelope-paper-fill:before{content:"\\f73a"}.bi-envelope-paper-heart-fill:before{content:"\\f73b"}.bi-envelope-paper-heart:before{content:"\\f73c"}.bi-envelope-paper:before{content:"\\f73d"}.bi-filetype-aac:before{content:"\\f73e"}.bi-filetype-ai:before{content:"\\f73f"}.bi-filetype-bmp:before{content:"\\f740"}.bi-filetype-cs:before{content:"\\f741"}.bi-filetype-css:before{content:"\\f742"}.bi-filetype-csv:before{content:"\\f743"}.bi-filetype-doc:before{content:"\\f744"}.bi-filetype-docx:before{content:"\\f745"}.bi-filetype-exe:before{content:"\\f746"}.bi-filetype-gif:before{content:"\\f747"}.bi-filetype-heic:before{content:"\\f748"}.bi-filetype-html:before{content:"\\f749"}.bi-filetype-java:before{content:"\\f74a"}.bi-filetype-jpg:before{content:"\\f74b"}.bi-filetype-js:before{content:"\\f74c"}.bi-filetype-jsx:before{content:"\\f74d"}.bi-filetype-key:before{content:"\\f74e"}.bi-filetype-m4p:before{content:"\\f74f"}.bi-filetype-md:before{content:"\\f750"}.bi-filetype-mdx:before{content:"\\f751"}.bi-filetype-mov:before{content:"\\f752"}.bi-filetype-mp3:before{content:"\\f753"}.bi-filetype-mp4:before{content:"\\f754"}.bi-filetype-otf:before{content:"\\f755"}.bi-filetype-pdf:before{content:"\\f756"}.bi-filetype-php:before{content:"\\f757"}.bi-filetype-png:before{content:"\\f758"}.bi-filetype-ppt:before{content:"\\f75a"}.bi-filetype-psd:before{content:"\\f75b"}.bi-filetype-py:before{content:"\\f75c"}.bi-filetype-raw:before{content:"\\f75d"}.bi-filetype-rb:before{content:"\\f75e"}.bi-filetype-sass:before{content:"\\f75f"}.bi-filetype-scss:before{content:"\\f760"}.bi-filetype-sh:before{content:"\\f761"}.bi-filetype-svg:before{content:"\\f762"}.bi-filetype-tiff:before{content:"\\f763"}.bi-filetype-tsx:before{content:"\\f764"}.bi-filetype-ttf:before{content:"\\f765"}.bi-filetype-txt:before{content:"\\f766"}.bi-filetype-wav:before{content:"\\f767"}.bi-filetype-woff:before{content:"\\f768"}.bi-filetype-xls:before{content:"\\f76a"}.bi-filetype-xml:before{content:"\\f76b"}.bi-filetype-yml:before{content:"\\f76c"}.bi-heart-arrow:before{content:"\\f76d"}.bi-heart-pulse-fill:before{content:"\\f76e"}.bi-heart-pulse:before{content:"\\f76f"}.bi-heartbreak-fill:before{content:"\\f770"}.bi-heartbreak:before{content:"\\f771"}.bi-hearts:before{content:"\\f772"}.bi-hospital-fill:before{content:"\\f773"}.bi-hospital:before{content:"\\f774"}.bi-house-heart-fill:before{content:"\\f775"}.bi-house-heart:before{content:"\\f776"}.bi-incognito:before{content:"\\f777"}.bi-magnet-fill:before{content:"\\f778"}.bi-magnet:before{content:"\\f779"}.bi-person-heart:before{content:"\\f77a"}.bi-person-hearts:before{content:"\\f77b"}.bi-phone-flip:before{content:"\\f77c"}.bi-plugin:before{content:"\\f77d"}.bi-postage-fill:before{content:"\\f77e"}.bi-postage-heart-fill:before{content:"\\f77f"}.bi-postage-heart:before{content:"\\f780"}.bi-postage:before{content:"\\f781"}.bi-postcard-fill:before{content:"\\f782"}.bi-postcard-heart-fill:before{content:"\\f783"}.bi-postcard-heart:before{content:"\\f784"}.bi-postcard:before{content:"\\f785"}.bi-search-heart-fill:before{content:"\\f786"}.bi-search-heart:before{content:"\\f787"}.bi-sliders2-vertical:before{content:"\\f788"}.bi-sliders2:before{content:"\\f789"}.bi-trash3-fill:before{content:"\\f78a"}.bi-trash3:before{content:"\\f78b"}.bi-valentine:before{content:"\\f78c"}.bi-valentine2:before{content:"\\f78d"}.bi-wrench-adjustable-circle-fill:before{content:"\\f78e"}.bi-wrench-adjustable-circle:before{content:"\\f78f"}.bi-wrench-adjustable:before{content:"\\f790"}.bi-filetype-json:before{content:"\\f791"}.bi-filetype-pptx:before{content:"\\f792"}.bi-filetype-xlsx:before{content:"\\f793"}.bi-1-circle-fill:before{content:"\\f796"}.bi-1-circle:before{content:"\\f797"}.bi-1-square-fill:before{content:"\\f798"}.bi-1-square:before{content:"\\f799"}.bi-2-circle-fill:before{content:"\\f79c"}.bi-2-circle:before{content:"\\f79d"}.bi-2-square-fill:before{content:"\\f79e"}.bi-2-square:before{content:"\\f79f"}.bi-3-circle-fill:before{content:"\\f7a2"}.bi-3-circle:before{content:"\\f7a3"}.bi-3-square-fill:before{content:"\\f7a4"}.bi-3-square:before{content:"\\f7a5"}.bi-4-circle-fill:before{content:"\\f7a8"}.bi-4-circle:before{content:"\\f7a9"}.bi-4-square-fill:before{content:"\\f7aa"}.bi-4-square:before{content:"\\f7ab"}.bi-5-circle-fill:before{content:"\\f7ae"}.bi-5-circle:before{content:"\\f7af"}.bi-5-square-fill:before{content:"\\f7b0"}.bi-5-square:before{content:"\\f7b1"}.bi-6-circle-fill:before{content:"\\f7b4"}.bi-6-circle:before{content:"\\f7b5"}.bi-6-square-fill:before{content:"\\f7b6"}.bi-6-square:before{content:"\\f7b7"}.bi-7-circle-fill:before{content:"\\f7ba"}.bi-7-circle:before{content:"\\f7bb"}.bi-7-square-fill:before{content:"\\f7bc"}.bi-7-square:before{content:"\\f7bd"}.bi-8-circle-fill:before{content:"\\f7c0"}.bi-8-circle:before{content:"\\f7c1"}.bi-8-square-fill:before{content:"\\f7c2"}.bi-8-square:before{content:"\\f7c3"}.bi-9-circle-fill:before{content:"\\f7c6"}.bi-9-circle:before{content:"\\f7c7"}.bi-9-square-fill:before{content:"\\f7c8"}.bi-9-square:before{content:"\\f7c9"}.bi-airplane-engines-fill:before{content:"\\f7ca"}.bi-airplane-engines:before{content:"\\f7cb"}.bi-airplane-fill:before{content:"\\f7cc"}.bi-airplane:before{content:"\\f7cd"}.bi-alexa:before{content:"\\f7ce"}.bi-alipay:before{content:"\\f7cf"}.bi-android:before{content:"\\f7d0"}.bi-android2:before{content:"\\f7d1"}.bi-box-fill:before{content:"\\f7d2"}.bi-box-seam-fill:before{content:"\\f7d3"}.bi-browser-chrome:before{content:"\\f7d4"}.bi-browser-edge:before{content:"\\f7d5"}.bi-browser-firefox:before{content:"\\f7d6"}.bi-browser-safari:before{content:"\\f7d7"}.bi-c-circle-fill:before{content:"\\f7da"}.bi-c-circle:before{content:"\\f7db"}.bi-c-square-fill:before{content:"\\f7dc"}.bi-c-square:before{content:"\\f7dd"}.bi-capsule-pill:before{content:"\\f7de"}.bi-capsule:before{content:"\\f7df"}.bi-car-front-fill:before{content:"\\f7e0"}.bi-car-front:before{content:"\\f7e1"}.bi-cassette-fill:before{content:"\\f7e2"}.bi-cassette:before{content:"\\f7e3"}.bi-cc-circle-fill:before{content:"\\f7e6"}.bi-cc-circle:before{content:"\\f7e7"}.bi-cc-square-fill:before{content:"\\f7e8"}.bi-cc-square:before{content:"\\f7e9"}.bi-cup-hot-fill:before{content:"\\f7ea"}.bi-cup-hot:before{content:"\\f7eb"}.bi-currency-rupee:before{content:"\\f7ec"}.bi-dropbox:before{content:"\\f7ed"}.bi-escape:before{content:"\\f7ee"}.bi-fast-forward-btn-fill:before{content:"\\f7ef"}.bi-fast-forward-btn:before{content:"\\f7f0"}.bi-fast-forward-circle-fill:before{content:"\\f7f1"}.bi-fast-forward-circle:before{content:"\\f7f2"}.bi-fast-forward-fill:before{content:"\\f7f3"}.bi-fast-forward:before{content:"\\f7f4"}.bi-filetype-sql:before{content:"\\f7f5"}.bi-fire:before{content:"\\f7f6"}.bi-google-play:before{content:"\\f7f7"}.bi-h-circle-fill:before{content:"\\f7fa"}.bi-h-circle:before{content:"\\f7fb"}.bi-h-square-fill:before{content:"\\f7fc"}.bi-h-square:before{content:"\\f7fd"}.bi-indent:before{content:"\\f7fe"}.bi-lungs-fill:before{content:"\\f7ff"}.bi-lungs:before{content:"\\f800"}.bi-microsoft-teams:before{content:"\\f801"}.bi-p-circle-fill:before{content:"\\f804"}.bi-p-circle:before{content:"\\f805"}.bi-p-square-fill:before{content:"\\f806"}.bi-p-square:before{content:"\\f807"}.bi-pass-fill:before{content:"\\f808"}.bi-pass:before{content:"\\f809"}.bi-prescription:before{content:"\\f80a"}.bi-prescription2:before{content:"\\f80b"}.bi-r-circle-fill:before{content:"\\f80e"}.bi-r-circle:before{content:"\\f80f"}.bi-r-square-fill:before{content:"\\f810"}.bi-r-square:before{content:"\\f811"}.bi-repeat-1:before{content:"\\f812"}.bi-repeat:before{content:"\\f813"}.bi-rewind-btn-fill:before{content:"\\f814"}.bi-rewind-btn:before{content:"\\f815"}.bi-rewind-circle-fill:before{content:"\\f816"}.bi-rewind-circle:before{content:"\\f817"}.bi-rewind-fill:before{content:"\\f818"}.bi-rewind:before{content:"\\f819"}.bi-train-freight-front-fill:before{content:"\\f81a"}.bi-train-freight-front:before{content:"\\f81b"}.bi-train-front-fill:before{content:"\\f81c"}.bi-train-front:before{content:"\\f81d"}.bi-train-lightrail-front-fill:before{content:"\\f81e"}.bi-train-lightrail-front:before{content:"\\f81f"}.bi-truck-front-fill:before{content:"\\f820"}.bi-truck-front:before{content:"\\f821"}.bi-ubuntu:before{content:"\\f822"}.bi-unindent:before{content:"\\f823"}.bi-unity:before{content:"\\f824"}.bi-universal-access-circle:before{content:"\\f825"}.bi-universal-access:before{content:"\\f826"}.bi-virus:before{content:"\\f827"}.bi-virus2:before{content:"\\f828"}.bi-wechat:before{content:"\\f829"}.bi-yelp:before{content:"\\f82a"}.bi-sign-stop-fill:before{content:"\\f82b"}.bi-sign-stop-lights-fill:before{content:"\\f82c"}.bi-sign-stop-lights:before{content:"\\f82d"}.bi-sign-stop:before{content:"\\f82e"}.bi-sign-turn-left-fill:before{content:"\\f82f"}.bi-sign-turn-left:before{content:"\\f830"}.bi-sign-turn-right-fill:before{content:"\\f831"}.bi-sign-turn-right:before{content:"\\f832"}.bi-sign-turn-slight-left-fill:before{content:"\\f833"}.bi-sign-turn-slight-left:before{content:"\\f834"}.bi-sign-turn-slight-right-fill:before{content:"\\f835"}.bi-sign-turn-slight-right:before{content:"\\f836"}.bi-sign-yield-fill:before{content:"\\f837"}.bi-sign-yield:before{content:"\\f838"}.bi-ev-station-fill:before{content:"\\f839"}.bi-ev-station:before{content:"\\f83a"}.bi-fuel-pump-diesel-fill:before{content:"\\f83b"}.bi-fuel-pump-diesel:before{content:"\\f83c"}.bi-fuel-pump-fill:before{content:"\\f83d"}.bi-fuel-pump:before{content:"\\f83e"}.bi-0-circle-fill:before{content:"\\f83f"}.bi-0-circle:before{content:"\\f840"}.bi-0-square-fill:before{content:"\\f841"}.bi-0-square:before{content:"\\f842"}.bi-rocket-fill:before{content:"\\f843"}.bi-rocket-takeoff-fill:before{content:"\\f844"}.bi-rocket-takeoff:before{content:"\\f845"}.bi-rocket:before{content:"\\f846"}.bi-stripe:before{content:"\\f847"}.bi-subscript:before{content:"\\f848"}.bi-superscript:before{content:"\\f849"}.bi-trello:before{content:"\\f84a"}.bi-envelope-at-fill:before{content:"\\f84b"}.bi-envelope-at:before{content:"\\f84c"}.bi-regex:before{content:"\\f84d"}.bi-text-wrap:before{content:"\\f84e"}.bi-sign-dead-end-fill:before{content:"\\f84f"}.bi-sign-dead-end:before{content:"\\f850"}.bi-sign-do-not-enter-fill:before{content:"\\f851"}.bi-sign-do-not-enter:before{content:"\\f852"}.bi-sign-intersection-fill:before{content:"\\f853"}.bi-sign-intersection-side-fill:before{content:"\\f854"}.bi-sign-intersection-side:before{content:"\\f855"}.bi-sign-intersection-t-fill:before{content:"\\f856"}.bi-sign-intersection-t:before{content:"\\f857"}.bi-sign-intersection-y-fill:before{content:"\\f858"}.bi-sign-intersection-y:before{content:"\\f859"}.bi-sign-intersection:before{content:"\\f85a"}.bi-sign-merge-left-fill:before{content:"\\f85b"}.bi-sign-merge-left:before{content:"\\f85c"}.bi-sign-merge-right-fill:before{content:"\\f85d"}.bi-sign-merge-right:before{content:"\\f85e"}.bi-sign-no-left-turn-fill:before{content:"\\f85f"}.bi-sign-no-left-turn:before{content:"\\f860"}.bi-sign-no-parking-fill:before{content:"\\f861"}.bi-sign-no-parking:before{content:"\\f862"}.bi-sign-no-right-turn-fill:before{content:"\\f863"}.bi-sign-no-right-turn:before{content:"\\f864"}.bi-sign-railroad-fill:before{content:"\\f865"}.bi-sign-railroad:before{content:"\\f866"}.bi-building-add:before{content:"\\f867"}.bi-building-check:before{content:"\\f868"}.bi-building-dash:before{content:"\\f869"}.bi-building-down:before{content:"\\f86a"}.bi-building-exclamation:before{content:"\\f86b"}.bi-building-fill-add:before{content:"\\f86c"}.bi-building-fill-check:before{content:"\\f86d"}.bi-building-fill-dash:before{content:"\\f86e"}.bi-building-fill-down:before{content:"\\f86f"}.bi-building-fill-exclamation:before{content:"\\f870"}.bi-building-fill-gear:before{content:"\\f871"}.bi-building-fill-lock:before{content:"\\f872"}.bi-building-fill-slash:before{content:"\\f873"}.bi-building-fill-up:before{content:"\\f874"}.bi-building-fill-x:before{content:"\\f875"}.bi-building-fill:before{content:"\\f876"}.bi-building-gear:before{content:"\\f877"}.bi-building-lock:before{content:"\\f878"}.bi-building-slash:before{content:"\\f879"}.bi-building-up:before{content:"\\f87a"}.bi-building-x:before{content:"\\f87b"}.bi-buildings-fill:before{content:"\\f87c"}.bi-buildings:before{content:"\\f87d"}.bi-bus-front-fill:before{content:"\\f87e"}.bi-bus-front:before{content:"\\f87f"}.bi-ev-front-fill:before{content:"\\f880"}.bi-ev-front:before{content:"\\f881"}.bi-globe-americas:before{content:"\\f882"}.bi-globe-asia-australia:before{content:"\\f883"}.bi-globe-central-south-asia:before{content:"\\f884"}.bi-globe-europe-africa:before{content:"\\f885"}.bi-house-add-fill:before{content:"\\f886"}.bi-house-add:before{content:"\\f887"}.bi-house-check-fill:before{content:"\\f888"}.bi-house-check:before{content:"\\f889"}.bi-house-dash-fill:before{content:"\\f88a"}.bi-house-dash:before{content:"\\f88b"}.bi-house-down-fill:before{content:"\\f88c"}.bi-house-down:before{content:"\\f88d"}.bi-house-exclamation-fill:before{content:"\\f88e"}.bi-house-exclamation:before{content:"\\f88f"}.bi-house-gear-fill:before{content:"\\f890"}.bi-house-gear:before{content:"\\f891"}.bi-house-lock-fill:before{content:"\\f892"}.bi-house-lock:before{content:"\\f893"}.bi-house-slash-fill:before{content:"\\f894"}.bi-house-slash:before{content:"\\f895"}.bi-house-up-fill:before{content:"\\f896"}.bi-house-up:before{content:"\\f897"}.bi-house-x-fill:before{content:"\\f898"}.bi-house-x:before{content:"\\f899"}.bi-person-add:before{content:"\\f89a"}.bi-person-down:before{content:"\\f89b"}.bi-person-exclamation:before{content:"\\f89c"}.bi-person-fill-add:before{content:"\\f89d"}.bi-person-fill-check:before{content:"\\f89e"}.bi-person-fill-dash:before{content:"\\f89f"}.bi-person-fill-down:before{content:"\\f8a0"}.bi-person-fill-exclamation:before{content:"\\f8a1"}.bi-person-fill-gear:before{content:"\\f8a2"}.bi-person-fill-lock:before{content:"\\f8a3"}.bi-person-fill-slash:before{content:"\\f8a4"}.bi-person-fill-up:before{content:"\\f8a5"}.bi-person-fill-x:before{content:"\\f8a6"}.bi-person-gear:before{content:"\\f8a7"}.bi-person-lock:before{content:"\\f8a8"}.bi-person-slash:before{content:"\\f8a9"}.bi-person-up:before{content:"\\f8aa"}.bi-scooter:before{content:"\\f8ab"}.bi-taxi-front-fill:before{content:"\\f8ac"}.bi-taxi-front:before{content:"\\f8ad"}.bi-amd:before{content:"\\f8ae"}.bi-database-add:before{content:"\\f8af"}.bi-database-check:before{content:"\\f8b0"}.bi-database-dash:before{content:"\\f8b1"}.bi-database-down:before{content:"\\f8b2"}.bi-database-exclamation:before{content:"\\f8b3"}.bi-database-fill-add:before{content:"\\f8b4"}.bi-database-fill-check:before{content:"\\f8b5"}.bi-database-fill-dash:before{content:"\\f8b6"}.bi-database-fill-down:before{content:"\\f8b7"}.bi-database-fill-exclamation:before{content:"\\f8b8"}.bi-database-fill-gear:before{content:"\\f8b9"}.bi-database-fill-lock:before{content:"\\f8ba"}.bi-database-fill-slash:before{content:"\\f8bb"}.bi-database-fill-up:before{content:"\\f8bc"}.bi-database-fill-x:before{content:"\\f8bd"}.bi-database-fill:before{content:"\\f8be"}.bi-database-gear:before{content:"\\f8bf"}.bi-database-lock:before{content:"\\f8c0"}.bi-database-slash:before{content:"\\f8c1"}.bi-database-up:before{content:"\\f8c2"}.bi-database-x:before{content:"\\f8c3"}.bi-database:before{content:"\\f8c4"}.bi-houses-fill:before{content:"\\f8c5"}.bi-houses:before{content:"\\f8c6"}.bi-nvidia:before{content:"\\f8c7"}.bi-person-vcard-fill:before{content:"\\f8c8"}.bi-person-vcard:before{content:"\\f8c9"}.bi-sina-weibo:before{content:"\\f8ca"}.bi-tencent-qq:before{content:"\\f8cb"}.bi-wikipedia:before{content:"\\f8cc"}.bi-alphabet-uppercase:before{content:"\\f2a5"}.bi-alphabet:before{content:"\\f68a"}.bi-amazon:before{content:"\\f68d"}.bi-arrows-collapse-vertical:before{content:"\\f690"}.bi-arrows-expand-vertical:before{content:"\\f695"}.bi-arrows-vertical:before{content:"\\f698"}.bi-arrows:before{content:"\\f6a2"}.bi-ban-fill:before{content:"\\f6a3"}.bi-ban:before{content:"\\f6b6"}.bi-bing:before{content:"\\f6c2"}.bi-cake:before{content:"\\f6e0"}.bi-cake2:before{content:"\\f6ed"}.bi-cookie:before{content:"\\f6ee"}.bi-copy:before{content:"\\f759"}.bi-crosshair:before{content:"\\f769"}.bi-crosshair2:before{content:"\\f794"}.bi-emoji-astonished-fill:before{content:"\\f795"}.bi-emoji-astonished:before{content:"\\f79a"}.bi-emoji-grimace-fill:before{content:"\\f79b"}.bi-emoji-grimace:before{content:"\\f7a0"}.bi-emoji-grin-fill:before{content:"\\f7a1"}.bi-emoji-grin:before{content:"\\f7a6"}.bi-emoji-surprise-fill:before{content:"\\f7a7"}.bi-emoji-surprise:before{content:"\\f7ac"}.bi-emoji-tear-fill:before{content:"\\f7ad"}.bi-emoji-tear:before{content:"\\f7b2"}.bi-envelope-arrow-down-fill:before{content:"\\f7b3"}.bi-envelope-arrow-down:before{content:"\\f7b8"}.bi-envelope-arrow-up-fill:before{content:"\\f7b9"}.bi-envelope-arrow-up:before{content:"\\f7be"}.bi-feather:before{content:"\\f7bf"}.bi-feather2:before{content:"\\f7c4"}.bi-floppy-fill:before{content:"\\f7c5"}.bi-floppy:before{content:"\\f7d8"}.bi-floppy2-fill:before{content:"\\f7d9"}.bi-floppy2:before{content:"\\f7e4"}.bi-gitlab:before{content:"\\f7e5"}.bi-highlighter:before{content:"\\f7f8"}.bi-marker-tip:before{content:"\\f802"}.bi-nvme-fill:before{content:"\\f803"}.bi-nvme:before{content:"\\f80c"}.bi-opencollective:before{content:"\\f80d"}.bi-pci-card-network:before{content:"\\f8cd"}.bi-pci-card-sound:before{content:"\\f8ce"}.bi-radar:before{content:"\\f8cf"}.bi-send-arrow-down-fill:before{content:"\\f8d0"}.bi-send-arrow-down:before{content:"\\f8d1"}.bi-send-arrow-up-fill:before{content:"\\f8d2"}.bi-send-arrow-up:before{content:"\\f8d3"}.bi-sim-slash-fill:before{content:"\\f8d4"}.bi-sim-slash:before{content:"\\f8d5"}.bi-sourceforge:before{content:"\\f8d6"}.bi-substack:before{content:"\\f8d7"}.bi-threads-fill:before{content:"\\f8d8"}.bi-threads:before{content:"\\f8d9"}.bi-transparency:before{content:"\\f8da"}.bi-twitter-x:before{content:"\\f8db"}.bi-type-h4:before{content:"\\f8dc"}.bi-type-h5:before{content:"\\f8dd"}.bi-type-h6:before{content:"\\f8de"}.bi-backpack-fill:before{content:"\\f8df"}.bi-backpack:before{content:"\\f8e0"}.bi-backpack2-fill:before{content:"\\f8e1"}.bi-backpack2:before{content:"\\f8e2"}.bi-backpack3-fill:before{content:"\\f8e3"}.bi-backpack3:before{content:"\\f8e4"}.bi-backpack4-fill:before{content:"\\f8e5"}.bi-backpack4:before{content:"\\f8e6"}.bi-brilliance:before{content:"\\f8e7"}.bi-cake-fill:before{content:"\\f8e8"}.bi-cake2-fill:before{content:"\\f8e9"}.bi-duffle-fill:before{content:"\\f8ea"}.bi-duffle:before{content:"\\f8eb"}.bi-exposure:before{content:"\\f8ec"}.bi-gender-neuter:before{content:"\\f8ed"}.bi-highlights:before{content:"\\f8ee"}.bi-luggage-fill:before{content:"\\f8ef"}.bi-luggage:before{content:"\\f8f0"}.bi-mailbox-flag:before{content:"\\f8f1"}.bi-mailbox2-flag:before{content:"\\f8f2"}.bi-noise-reduction:before{content:"\\f8f3"}.bi-passport-fill:before{content:"\\f8f4"}.bi-passport:before{content:"\\f8f5"}.bi-person-arms-up:before{content:"\\f8f6"}.bi-person-raised-hand:before{content:"\\f8f7"}.bi-person-standing-dress:before{content:"\\f8f8"}.bi-person-standing:before{content:"\\f8f9"}.bi-person-walking:before{content:"\\f8fa"}.bi-person-wheelchair:before{content:"\\f8fb"}.bi-shadows:before{content:"\\f8fc"}.bi-suitcase-fill:before{content:"\\f8fd"}.bi-suitcase-lg-fill:before{content:"\\f8fe"}.bi-suitcase-lg:before{content:"\\f8ff"}.bi-suitcase:before{content:"\\f900"}.bi-suitcase2-fill:before{content:"\\f901"}.bi-suitcase2:before{content:"\\f902"}.bi-vignette:before{content:"\\f903"}foreignObject.loci{box-sizing:border-box;border-radius:.375rem;position:relative;display:block}foreignObject.loci div.foreground{position:relative;display:flex;height:100%;width:100%;justify-content:center;align-items:center;box-sizing:inherit;border-radius:inherit;border-width:1px;border-style:solid;opacity:1}foreignObject.loci div.background{position:absolute;left:0;top:0;display:block;height:100%;width:100%;opacity:.3}foreignObject.pins div.foreground{position:relative;display:flex;height:100%;width:100%;justify-content:center;align-items:flex-end;box-sizing:border-box}foreignObject.dssp div.foreground{position:relative;display:flex;height:100%;width:100%;justify-content:center;align-items:flex-end;box-sizing:border-box}foreignObject.dssp i[class^=dssp]{position:relative;visibility:hidden;display:flex;height:100%;width:100%}foreignObject.dssp i.dssp-helix{visibility:visible;background-color:inherit;-webkit-mask-image:url(dssp-helix.74d0a47e4d7ed27e.svg);mask-image:url(dssp-helix.74d0a47e4d7ed27e.svg);-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:auto 100%;mask-size:auto 100%}foreignObject.dssp i.dssp-strand{display:flex;visibility:hidden}foreignObject.dssp i.dssp-strand:before{visibility:visible;background-color:inherit;-webkit-mask-image:url(dssp-strand-tail.783864b28823e2c7.svg);mask-image:url(dssp-strand-tail.783864b28823e2c7.svg);-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:auto 100%;mask-size:auto 100%;flex-shrink:1;flex-grow:1;content:""}foreignObject.dssp i.dssp-strand:after{visibility:visible;background-color:inherit;-webkit-mask-image:url(dssp-strand-head.85a295955fb4c220.svg);mask-image:url(dssp-strand-head.85a295955fb4c220.svg);-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:auto 100%;mask-size:auto 100%;flex-shrink:0;flex-grow:0;content:"";width:31px}.axis-grid line{stroke-opacity:.3;stroke:gray}.axis-grid line:nth-child(1){stroke-dasharray:2}.y.axis .tick text{display:none}\n'],encapsulation:2,changeDetection:0})}return e})();function Lb(e,t){1&e&&g.nrm(0,"i",10)}function Ob(e,t){1&e&&g.nrm(0,"i",11)}function Xb(e,t){if(1&e&&(g.j41(0,"div"),g.EFF(1),g.DNE(2,Lb,1,0,"i",10)(3,Ob,1,0),g.k0s()),2&e){const n=t.trace;g.AVh("text-muted",!n.expanded),g.R7$(),g.SpI(" ",n.label,"\xa0 "),g.R7$(),g.vxM(2,n.expanded?2:3)}}let Gb=(()=>{class e{constructor(){this.settings={"line-height":24,"content-size":16,"background-color":"transparent","trace-color":"cyan","grid-color":"rgba(222, 226, 230, 0.5)","text-color":"white","margin-top":24,"margin-right":24,"margin-bottom":24,"margin-left":128},this.sequence=Array.from("MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGPDEAPRMPEAAPPVAPAPAAPTPAAPAPAPSWPLSSSVPSQKTYQGSYGFRLGFLHSGTAKSVTCTYSPALNKMFCQLAKTCPVQLWVDSTPPPGTRVRAMAIYKQSQHMTEVVRRCPHHERCSDSDGLAPPQHLIRVEGNLRVEYLDDRNTFRHSVVVPYEPPEVGSDCTTIHYNYMCNSSCMGGMNRRPILTIITLEDSSGNLLGRNSFEVRVCACPGRDRRTEEENLRKKGEPHHELPPGSTKRALPNNTSSSPQPKKKPLDGEYFTLQIRGRERFEMFRELNEALELKDAQAGKEPGGSRAHSSHLKSKKGQSTSRHKKLMFKTEGPDSD".slice(0,100)),this.features=[{label:"Feature #1",type:"continuous",values:Array.from({length:70},()=>Math.floor(100*Math.random())+1)},{label:"Feature #2",type:"loci","trace-color":"red",values:[{start:1,end:50},{start:30,end:60}]},{label:"Feature #3",type:"trace",position:"overlap",values:[{type:"loci",values:[{start:1,end:10}],"trace-color":"blue"},{type:"loci",values:[{start:20,end:40}],"trace-color":"red"},{type:"loci",values:[{start:60,end:100}],"trace-color":"yellow"},{type:"continuous",values:Array.from({length:70},()=>Math.floor(100*Math.random())+1),"trace-color":"yellow"}],"background-color":"transparent"},{label:"Feature #4",type:"loci",values:[{start:27,end:56},{start:61,end:72}],nested:[{label:"Feature #5",type:"trace",values:[{type:"loci",values:[{start:1,end:5},{start:6,end:10}]},{type:"loci",values:[{start:10,end:27}]}]},{label:"Feature #6",type:"continuous",values:Array.from({length:70},()=>Math.floor(100*Math.random())+1)}]},{label:"Feature #7",type:"loci",values:[{start:81,end:81},{start:82,end:82}],nested:[{label:"Feature #8",type:"trace",values:[{type:"loci",values:[{start:81,end:81}]},{type:"loci",values:[{start:82,end:82}]}]},{label:"Feature #9",type:"continuous","trace-color":"greenyellow",values:Array.from({length:70},()=>Math.floor(100*Math.random())+1)}]}]}static#e=this.\u0275fac=function(i){return new(i||e)};static#t=this.\u0275cmp=g.VBU({type:e,selectors:[["page-features-viewer"]],standalone:!0,features:[g.aNF],decls:25,vars:3,consts:[[1,"container","pt-3"],[1,"mb-3"],[1,"d-flex","flex-row","gap-3","mb-3"],[2,"display","block","width","1rem","height","1rem","background","black","font-size","1rem","line-height","1rem"],[2,"display","block","width","1rem","height","auto","background","black","color","white","font-size","1rem","line-height",".5rem"],[2,"display","block","width","auto","height","1rem","background","black","color","white","font-size","1rem","line-height","1rem"],[1,"d-block","mb-3"],[2,"display","block","height","auto","width","100%"],[3,"sequence","features","settings"],[3,"ngx-features-viewer-label"],[1,"bi","bi-caret-down-fill"],[1,"bi","bi-caret-right"]],template:function(i,o){1&i&&(g.j41(0,"div",0)(1,"div",1)(2,"h1"),g.EFF(3,"Feature viewer"),g.k0s(),g.j41(4,"p"),g.EFF(5," The feature viewer allows you to represent features on a reference seqeunce... "),g.k0s()(),g.j41(6,"div",2),g.nrm(7,"div",3),g.j41(8,"div",4),g.EFF(9," W"),g.k0s(),g.j41(10,"div",5),g.EFF(11," W"),g.k0s()(),g.j41(12,"div",6)(13,"p"),g.EFF(14," Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras congue velit in sem sodales pretium. Vivamus sit amet enim malesuada, efficitur quam quis, semper metus. Aenean commodo tellus eu viverra lacinia. Nam sed lectus non tellus suscipit pellentesque. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse lacus diam, laoreet eget nisl et, dictum dictum elit. Vivamus sit amet fringilla elit, vitae pulvinar nisl. Donec mattis magna lacus, id congue risus aliquet a. "),g.k0s(),g.j41(15,"p"),g.EFF(16," Cras nec malesuada risus. Integer a tincidunt ante. Vivamus eu mauris placerat, dictum diam vitae, laoreet eros. Integer porttitor neque vel lectus ullamcorper commodo. Aliquam erat volutpat. Morbi convallis fermentum mauris, quis aliquet tellus posuere non. Nunc aliquet mattis tellus et ultrices. "),g.k0s()(),g.j41(17,"div",7)(18,"ngx-features-viewer",8),g.DNE(19,Xb,4,4,"ng-template",9),g.k0s()(),g.j41(20,"div")(21,"p"),g.EFF(22," Morbi convallis ipsum sit amet felis faucibus mollis. Duis nec viverra nisl, nec maximus nisl. Proin non malesuada massa, sit amet auctor elit. Sed condimentum, urna id commodo semper, nisi lorem lobortis velit, eu auctor ante magna eu nibh. Aliquam mattis pulvinar sapien vitae rhoncus. Sed lacinia ex a ultrices finibus. Phasellus eu erat eu sapien laoreet dapibus ac vitae mauris. "),g.k0s(),g.j41(23,"p"),g.EFF(24," Vestibulum elementum sem vel lorem suscipit varius. Mauris malesuada porta sapien blandit facilisis. Aliquam pretium erat nec lorem molestie, et feugiat turpis semper. Donec tempus posuere nibh, maximus hendrerit odio eleifend vitae. Praesent consequat felis leo, at ullamcorper nisl dictum sed. Morbi erat dui, sollicitudin id interdum convallis, elementum laoreet lorem. Duis leo massa, commodo id tempor sed, semper ut dui. Proin faucibus feugiat sapien, et cursus nunc. Duis eu mattis ipsum, ac facilisis quam. Donec a sapien non lectus iaculis luctus. Nulla lobortis turpis id nisi consectetur aliquet. Aliquam dignissim aliquam erat, at egestas nulla ullamcorper a. Duis porta interdum venenatis. Praesent a lorem at velit egestas efficitur eu et lectus. Suspendisse potenti. Duis imperdiet aliquam hendrerit. "),g.k0s()()()),2&i&&(g.R7$(18),g.Y8G("sequence",o.sequence)("features",o.features)("settings",o.settings))},dependencies:[me,jb,B.MD],changeDetection:0})}return e})()},2771:(bt,de,j)=>{j.d(de,{m:()=>le});var g=j(1413),me=j(6129);class le extends g.B{constructor(B=1/0,X=1/0,P=me.U){super(),this._bufferSize=B,this._windowTime=X,this._timestampProvider=P,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=X===1/0,this._bufferSize=Math.max(1,B),this._windowTime=Math.max(1,X)}next(B){const{isStopped:X,_buffer:P,_infiniteTimeWindow:ne,_timestampProvider:H,_windowTime:G}=this;X||(P.push(B),!ne&&P.push(H.now()+G)),this._trimBuffer(),super.next(B)}_subscribe(B){this._throwIfClosed(),this._trimBuffer();const X=this._innerSubscribe(B),{_infiniteTimeWindow:P,_buffer:ne}=this,H=ne.slice();for(let G=0;G{j.d(de,{F:()=>Q});var g=j(3669),me=j(9974),le=j(4360);function Q(X,P=g.D){return X=X??B,(0,me.N)((ne,H)=>{let G,Z=!0;ne.subscribe((0,le._)(H,U=>{const be=P(U);(Z||!X(G,be))&&(Z=!1,G=be,H.next(U))}))})}function B(X,P){return X===P}},9568:(bt,de,j)=>{j.d(de,{t:()=>ne});var g=j(2771),me=j(8750),le=j(1413),Q=j(7707),B=j(9974);function P(H,G,...Z){if(!0===G)return void H();if(!1===G)return;const U=new Q.Ms({next:()=>{U.unsubscribe(),H()}});return(0,me.Tg)(G(...Z)).subscribe(U)}function ne(H,G,Z){let U,be=!1;return H&&"object"==typeof H?({bufferSize:U=1/0,windowTime:G=1/0,refCount:be=!1,scheduler:Z}=H):U=H??1/0,function X(H={}){const{connector:G=(()=>new le.B),resetOnError:Z=!0,resetOnComplete:U=!0,resetOnRefCountZero:be=!0}=H;return at=>{let ze,we,Ae,Fe=0,Re=!1,ye=!1;const Ke=()=>{we?.unsubscribe(),we=void 0},lt=()=>{Ke(),ze=Ae=void 0,Re=ye=!1},jt=()=>{const De=ze;lt(),De?.unsubscribe()};return(0,B.N)((De,st)=>{Fe++,!ye&&!Re&&Ke();const Me=Ae=Ae??G();st.add(()=>{Fe--,0===Fe&&!ye&&!Re&&(we=P(jt,be))}),Me.subscribe(st),!ze&&Fe>0&&(ze=new Q.Ms({next:Ie=>Me.next(Ie),error:Ie=>{ye=!0,Ke(),we=P(lt,Z,Ie),Me.error(Ie)},complete:()=>{Re=!0,Ke(),we=P(lt,U),Me.complete()}}),(0,me.Tg)(De).subscribe(ze))})(at)}}({connector:()=>new g.m(U,G,Z),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:be})}},6129:(bt,de,j)=>{j.d(de,{U:()=>g});const g={now:()=>(g.delegate||Date).now(),delegate:void 0}}}]); \ No newline at end of file diff --git a/docs/876.ad26e918280ccdc0.js b/docs/876.ad26e918280ccdc0.js deleted file mode 100644 index 009ad49..0000000 --- a/docs/876.ad26e918280ccdc0.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkdemo_showcase=self.webpackChunkdemo_showcase||[]).push([[876],{9876:(Zn,be,F)=>{"use strict";F.r(be),F.d(be,{PageStructureViewerComponent:()=>uh});var Le={};F.r(Le),F.d(Le,{boolean:()=>ge,booleanish:()=>gt,commaOrSpaceSeparated:()=>Wt,commaSeparated:()=>gi,number:()=>$,overloadedBoolean:()=>yl,spaceSeparated:()=>Qe});var Lt={};F.r(Lt),F.d(Lt,{attentionMarkers:()=>oa,contentInitial:()=>oc,disable:()=>la,document:()=>Er,flow:()=>Gp,flowInitial:()=>Qp,insideSpan:()=>So,string:()=>lc,text:()=>wo});var He=F(177),R=F(467),Nt=F(2771),mt=F(5964),Ue=F(9974),fe=F(4360),Te=F(8750),Ne=F(3669),Me=F(5343),qt=F(9326),xe=F(5558),xt=F(6648),Dt=F(9568),Pe=F(140),je=F(6354),z=F(9136),De=F(9767),jt=F(1073),ft=F(261),bt=F(4369),fn=F(9498),wt=F(190);function on(r){let e;return r=r.replace(/^#/,""),[e,r]=[r.slice(6,8),r.slice(0,6)],[wt.Q1.fromHexStyle("#"+r),1-+("0x"+(e||"ff"))/255]}var Xn=F(2802),jn=F(573),we=F(381),Q=F(8277),St=F(8384),Jn=F(2086),ee=F(9283),de=F(528);const Je=St.x.builderFactory("interactions")({name:"interactions",from:we.O.Root,to:we.O.Shape.Provider,params:{data:Q.t.Value(void 0,{isHidden:!1})}})({apply:({params:r})=>new we.O.Shape.Provider({label:"",data:r.data,params:ee.e.Params,geometryUtils:ee.e.Utils,getShape:(e,i)=>function Se(r){const e=jn.P.createState(512,512);for(let i=0;ir[i].color,()=>1,i=>r[i].label)}(i)},{label:""})});var W=F(4438),Zt=F(3286);let gn=(()=>{class r{constructor(){this.settings$=new Nt.m}set settings(i){this.settings$.next(this._settings=i)}get settings(){return this._settings}static#e=this.\u0275fac=function(s){return new(s||r)};static#t=this.\u0275prov=W.jDH({token:r,factory:r.\u0275fac,providedIn:"platform"})}return r})();var _t=F(5621),p=F(9619),he=F(1395),Zr=F(9909),Z=F(1133);const fl=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,wu=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Gs={};function Zs(r,e){return((e||Gs).jsx?wu:fl).test(r)}const Su=/[ \t\n\f\r]/g;function gl(r){return""===r.replace(Su,"")}class ur{constructor(e,i,s){this.property=e,this.normal=i,s&&(this.space=s)}}function Xs(r,e){const i={},s={};let l=-1;for(;++l"xlink:"+e.slice(5).toLowerCase(),properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null}}),xl=Hi({space:"xml",transform:(r,e)=>"xml:"+e.slice(3).toLowerCase(),properties:{xmlLang:null,xmlBase:null,xmlSpace:null}});function bl(r,e){return e in r?r[e]:e}function wl(r,e){return bl(r,e.toLowerCase())}const Js=Hi({space:"xmlns",attributes:{xmlnsxlink:"xmlns:xlink"},transform:wl,properties:{xmlns:null,xmlnsXLink:null}}),Sl=Hi({transform:(r,e)=>"role"===e?e:"aria-"+e.slice(4).toLowerCase(),properties:{ariaActiveDescendant:null,ariaAtomic:gt,ariaAutoComplete:null,ariaBusy:gt,ariaChecked:gt,ariaColCount:$,ariaColIndex:$,ariaColSpan:$,ariaControls:Qe,ariaCurrent:null,ariaDescribedBy:Qe,ariaDetails:null,ariaDisabled:gt,ariaDropEffect:Qe,ariaErrorMessage:null,ariaExpanded:gt,ariaFlowTo:Qe,ariaGrabbed:gt,ariaHasPopup:null,ariaHidden:gt,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:Qe,ariaLevel:$,ariaLive:null,ariaModal:gt,ariaMultiLine:gt,ariaMultiSelectable:gt,ariaOrientation:null,ariaOwns:Qe,ariaPlaceholder:null,ariaPosInSet:$,ariaPressed:gt,ariaReadOnly:gt,ariaRelevant:null,ariaRequired:gt,ariaRoleDescription:Qe,ariaRowCount:$,ariaRowIndex:$,ariaRowSpan:$,ariaSelected:gt,ariaSetSize:$,ariaSort:null,ariaValueMax:$,ariaValueMin:$,ariaValueNow:$,ariaValueText:null,role:null}}),ns=Hi({space:"html",attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},transform:wl,mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:gi,acceptCharset:Qe,accessKey:Qe,action:null,allow:null,allowFullScreen:ge,allowPaymentRequest:ge,allowUserMedia:ge,alt:null,as:null,async:ge,autoCapitalize:null,autoComplete:Qe,autoFocus:ge,autoPlay:ge,blocking:Qe,capture:null,charSet:null,checked:ge,cite:null,className:Qe,cols:$,colSpan:null,content:null,contentEditable:gt,controls:ge,controlsList:Qe,coords:$|gi,crossOrigin:null,data:null,dateTime:null,decoding:null,default:ge,defer:ge,dir:null,dirName:null,disabled:ge,download:yl,draggable:gt,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:ge,formTarget:null,headers:Qe,height:$,hidden:ge,high:$,href:null,hrefLang:null,htmlFor:Qe,httpEquiv:Qe,id:null,imageSizes:null,imageSrcSet:null,inert:ge,inputMode:null,integrity:null,is:null,isMap:ge,itemId:null,itemProp:Qe,itemRef:Qe,itemScope:ge,itemType:Qe,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:ge,low:$,manifest:null,max:null,maxLength:$,media:null,method:null,min:null,minLength:$,multiple:ge,muted:ge,name:null,nonce:null,noModule:ge,noValidate:ge,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:ge,optimum:$,pattern:null,ping:Qe,placeholder:null,playsInline:ge,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:ge,referrerPolicy:null,rel:Qe,required:ge,reversed:ge,rows:$,rowSpan:$,sandbox:Qe,scope:null,scoped:ge,seamless:ge,selected:ge,shadowRootClonable:ge,shadowRootDelegatesFocus:ge,shadowRootMode:null,shape:null,size:$,sizes:null,slot:null,span:$,spellCheck:gt,src:null,srcDoc:null,srcLang:null,srcSet:null,start:$,step:null,style:null,tabIndex:$,target:null,title:null,translate:null,type:null,typeMustMatch:ge,useMap:null,value:gt,width:$,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:Qe,axis:null,background:null,bgColor:null,border:$,borderColor:null,bottomMargin:$,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:ge,declare:ge,event:null,face:null,frame:null,frameBorder:null,hSpace:$,leftMargin:$,link:null,longDesc:null,lowSrc:null,marginHeight:$,marginWidth:$,noResize:ge,noHref:ge,noShade:ge,noWrap:ge,object:null,profile:null,prompt:null,rev:null,rightMargin:$,rules:null,scheme:null,scrolling:gt,standby:null,summary:null,text:null,topMargin:$,valueType:null,version:null,vAlign:null,vLink:null,vSpace:$,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:ge,disableRemotePlayback:ge,prefix:null,property:null,results:$,security:null,unselectable:null}}),kl=Hi({space:"svg",attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},transform:bl,properties:{about:Wt,accentHeight:$,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:$,amplitude:$,arabicForm:null,ascent:$,attributeName:null,attributeType:null,azimuth:$,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:$,by:null,calcMode:null,capHeight:$,className:Qe,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:$,diffuseConstant:$,direction:null,display:null,dur:null,divisor:$,dominantBaseline:null,download:ge,dx:null,dy:null,edgeMode:null,editable:null,elevation:$,enableBackground:null,end:null,event:null,exponent:$,externalResourcesRequired:null,fill:null,fillOpacity:$,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:gi,g2:gi,glyphName:gi,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:$,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:$,horizOriginX:$,horizOriginY:$,id:null,ideographic:$,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:$,k:$,k1:$,k2:$,k3:$,k4:$,kernelMatrix:Wt,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:$,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:$,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:$,overlineThickness:$,paintOrder:null,panose1:null,path:null,pathLength:$,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:Qe,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:$,pointsAtY:$,pointsAtZ:$,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:Wt,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:Wt,rev:Wt,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:Wt,requiredFeatures:Wt,requiredFonts:Wt,requiredFormats:Wt,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:$,specularExponent:$,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:$,strikethroughThickness:$,string:null,stroke:null,strokeDashArray:Wt,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:$,strokeOpacity:$,strokeWidth:null,style:null,surfaceScale:$,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:Wt,tabIndex:$,tableValues:null,target:null,targetX:$,targetY:$,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:Wt,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:$,underlineThickness:$,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:$,values:null,vAlphabetic:$,vMathematical:$,vectorEffect:null,vHanging:$,vIdeographic:$,version:null,vertAdvY:$,vertOriginX:$,vertOriginY:$,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:$,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null}}),is=Xs([xl,vl,Js,Sl,ns],"html"),Cl=Xs([xl,vl,Js,Sl,kl],"svg"),rs=/^data[-\w.:]+$/i,ss=/-[a-z]/g,eo=/[A-Z]/g;function sp(r){return"-"+r.toLowerCase()}function op(r){return r.charAt(1).toUpperCase()}const lp={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"};var El=F(5390);const ap=El.default||El,Al=Il("end"),to=Il("start");function Il(r){return function e(i){const s=i&&i.position&&i.position[r]||{};if("number"==typeof s.line&&s.line>0&&"number"==typeof s.column&&s.column>0)return{line:s.line,column:s.column,offset:"number"==typeof s.offset&&s.offset>-1?s.offset:void 0}}}function os(r){return r&&"object"==typeof r?"position"in r||"type"in r?at(r.position):"start"in r||"end"in r?at(r):"line"in r||"column"in r?Tl(r):"":""}function Tl(r){return Eu(r&&r.line)+":"+Eu(r&&r.column)}function at(r){return Tl(r&&r.start)+"-"+Tl(r&&r.end)}function Eu(r){return r&&"number"==typeof r?r:1}class Et extends Error{constructor(e,i,s){super(),"string"==typeof i&&(s=i,i=void 0);let l="",u={},c=!1;if(i&&(u="line"in i&&"column"in i||"start"in i&&"end"in i?{place:i}:"type"in i?{ancestors:[i],place:i.position}:{...i}),"string"==typeof e?l=e:!u.cause&&e&&(c=!0,l=e.message,u.cause=e),!u.ruleId&&!u.source&&"string"==typeof s){const f=s.indexOf(":");-1===f?u.ruleId=s:(u.source=s.slice(0,f),u.ruleId=s.slice(f+1))}if(!u.place&&u.ancestors&&u.ancestors){const f=u.ancestors[u.ancestors.length-1];f&&(u.place=f.position)}const h=u.place&&"start"in u.place?u.place.start:u.place;this.ancestors=u.ancestors||void 0,this.cause=u.cause||void 0,this.column=h?h.column:void 0,this.fatal=void 0,this.message=l,this.line=h?h.line:void 0,this.name=os(u.place)||"1:1",this.place=u.place||void 0,this.reason=this.message,this.ruleId=u.ruleId||void 0,this.source=u.source||void 0,this.stack=c&&u.cause&&"string"==typeof u.cause.stack?u.cause.stack:""}}Et.prototype.file="",Et.prototype.name="",Et.prototype.reason="",Et.prototype.message="",Et.prototype.stack="",Et.prototype.column=void 0,Et.prototype.line=void 0,Et.prototype.ancestors=void 0,Et.prototype.cause=void 0,Et.prototype.fatal=void 0,Et.prototype.place=void 0,Et.prototype.ruleId=void 0,Et.prototype.source=void 0;const no={}.hasOwnProperty,io=new Map,up=/[A-Z]/g,Au=/-([a-z])/g,ro=new Set(["table","tbody","thead","tfoot","tr"]),Un=new Set(["td","th"]),Iu="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function Tu(r,e,i){return"element"===e.type?function cp(r,e,i){const s=r.schema;let l=s;"svg"===e.tagName.toLowerCase()&&"html"===s.space&&(l=Cl,r.schema=l),r.ancestors.push(e);const u=zl(r,e.tagName,!1),c=function Nl(r,e){const i={};let s,l;for(l in e.properties)if("children"!==l&&no.call(e.properties,l)){const u=Dl(r,l,e.properties[l]);if(u){const[c,h]=u;r.tableCellAlignToStyle&&"align"===c&&"string"==typeof h&&Un.has(e.tagName)?s=h:i[c]=h}}return s&&((i.style||(i.style={}))["css"===r.stylePropertyNameCase?"text-align":"textAlign"]=s),i}(r,e);let h=Ml(r,e);return ro.has(e.tagName)&&(h=h.filter(function(f){return"string"!=typeof f||!function ku(r){return"object"==typeof r?"text"===r.type&&gl(r.value):gl(r)}(f)})),Pu(r,c,u,e),Pl(c,h),r.ancestors.pop(),r.schema=s,r.create(e,u,c,i)}(r,e,i):"mdxFlowExpression"===e.type||"mdxTextExpression"===e.type?function pp(r,e){if(e.data&&e.data.estree&&r.evaluater){return r.evaluater.evaluateExpression(e.data.estree.body[0].expression)}hr(r,e.position)}(r,e):"mdxJsxFlowElement"===e.type||"mdxJsxTextElement"===e.type?function oo(r,e,i){const s=r.schema;let l=s;"svg"===e.name&&"html"===s.space&&(l=Cl,r.schema=l),r.ancestors.push(e);const u=null===e.name?r.Fragment:zl(r,e.name,!0),c=function as(r,e){const i={};for(const s of e.attributes)if("mdxJsxExpressionAttribute"===s.type)if(s.data&&s.data.estree&&r.evaluater){Object.assign(i,r.evaluater.evaluateExpression(s.data.estree.body[0].expression.properties[0].argument))}else hr(r,e.position);else{const l=s.name;let u;if(s.value&&"object"==typeof s.value)if(s.value.data&&s.value.data.estree&&r.evaluater){u=r.evaluater.evaluateExpression(s.value.data.estree.body[0].expression)}else hr(r,e.position);else u=null===s.value||s.value;i[l]=u}return i}(r,e),h=Ml(r,e);return Pu(r,c,u,e),Pl(c,h),r.ancestors.pop(),r.schema=s,r.create(e,u,c,i)}(r,e,i):"mdxjsEsm"===e.type?function so(r,e){if(e.data&&e.data.estree&&r.evaluater)return r.evaluater.evaluateProgram(e.data.estree);hr(r,e.position)}(r,e):"root"===e.type?function ls(r,e,i){const s={};return Pl(s,Ml(r,e)),r.create(e,r.Fragment,s,i)}(r,e,i):"text"===e.type?function lo(r,e){return e.value}(0,e):void 0}function Pu(r,e,i,s){"string"!=typeof i&&i!==r.Fragment&&r.passNode&&(e.node=s)}function Pl(r,e){if(e.length>0){const i=e.length>1?e:e[0];i&&(r.children=i)}}function Ml(r,e){const i=[];let s=-1;const l=r.passKeys?new Map:io;for(;++s4&&"data"===i.slice(0,4)&&rs.test(e)){if("-"===e.charAt(4)){const u=e.slice(5).replace(ss,op);s="data"+u.charAt(0).toUpperCase()+u.slice(1)}else{const u=e.slice(4);if(!ss.test(u)){let c=u.replace(eo,sp);"-"!==c.charAt(0)&&(c="-"+c),e="data"+c}}l=ts}return new l(s,e)}(r.schema,e);if(!(null==i||"number"==typeof i&&Number.isNaN(i))){if(Array.isArray(i)&&(i=s.commaSeparated?function Qs(r,e){const i=e||{};return(""===r[r.length-1]?[...r,""]:r).join((i.padRight?" ":"")+","+(!1===i.padLeft?"":" ")).trim()}(i):function Cu(r){return r.join(" ").trim()}(i)),"style"===s.property){let l="object"==typeof i?i:function Ve(r,e){const i={};try{ap(e,function s(l,u){let c=l;"--"!==c.slice(0,2)&&("-ms-"===c.slice(0,4)&&(c="ms-"+c.slice(4)),c=c.replace(Au,Mu)),i[c]=u})}catch(l){if(!r.ignoreInvalidStyle){const c=new Et("Cannot parse `style` attribute",{ancestors:r.ancestors,cause:l,ruleId:"style",source:"hast-util-to-jsx-runtime"});throw c.file=r.filePath||void 0,c.url=Iu+"#cannot-parse-style-attribute",c}}return i}(r,String(i));return"css"===r.stylePropertyNameCase&&(l=function Ol(r){const e={};let i;for(i in r)no.call(r,i)&&(e[Nu(i)]=r[i]);return e}(l)),["style",l]}return["react"===r.elementAttributeNameCase&&s.space?lp[s.property]||s.property:s.attribute,i]}}function zl(r,e,i){let s;if(i)if(e.includes(".")){const l=e.split(".");let c,u=-1;for(;++ul?0:l+e:e>l?l:e,i=i>0?i:0,s.length<1e4)c=Array.from(s),c.unshift(e,i),r.splice(...c);else for(i&&r.splice(e,i);u0?(an(r,r.length,0,e),r):e}class dp{constructor(e){this.left=e?[...e]:[],this.right=[]}get(e){if(e<0||e>=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-s+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-s+this.left.length).reverse())}splice(e,i,s){const l=i||0;this.setCursor(Math.trunc(e));const u=this.right.splice(this.right.length-l,Number.POSITIVE_INFINITY);return s&&mr(this.left,s),u.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),mr(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),mr(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&0===this.right.length||e<0&&0===this.left.length))if(e-1&&r.test(String.fromCharCode(i))}}function We(r,e,i,s){const l=s?s-1:Number.POSITIVE_INFINITY;let u=0;return function c(f){return ze(f)?(r.enter(i),h(f)):e(f)};function h(f){return ze(f)&&u++c))return;const ve=e.events.length;let Ae,Ze,Fe=ve;for(;Fe--;)if("exit"===e.events[Fe][0]&&"chunkFlow"===e.events[Fe][1].type){if(Ae){Ze=e.events[Fe][1].end;break}Ae=!0}for(D(s),H=ve;HB;){const ae=i[X];e.containerState=ae[1],ae[0].exit.call(e,r)}i.length=B}function O(){l.write([null]),u=void 0,l=void 0,e.containerState._closeFlow=void 0}}},br={tokenize:function Bl(r,e,i){return We(r,r.attempt(this.parser.constructs.document,e,i),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}},wr={tokenize:function hs(r,e,i){return function s(u){return ze(u)?We(r,l,"linePrefix")(u):l(u)};function l(u){return null===u||le(u)?e(u):i(u)}},partial:!0},po={tokenize:function vp(r,e){let i;return function s(h){return r.enter("content"),i=r.enter("chunkContent",{contentType:"content"}),l(h)};function l(h){return null===h?u(h):le(h)?r.check(Bu,c,u)(h):(r.consume(h),l)}function u(h){return r.exit("chunkContent"),r.exit("content"),e(h)}function c(h){return r.consume(h),r.exit("chunkContent"),i.next=r.enter("chunkContent",{contentType:"content",previous:i}),i=i.next,l}},resolve:function yp(r){return fr(r),r}},Bu={tokenize:function xp(r,e,i){const s=this;return function l(c){return r.exit("chunkContent"),r.enter("lineEnding"),r.consume(c),r.exit("lineEnding"),We(r,u,"linePrefix")};function u(c){if(null===c||le(c))return i(c);const h=s.events[s.events.length-1];return!s.parser.constructs.disable.null.includes("codeIndented")&&h&&"linePrefix"===h[1].type&&h[2].sliceSerialize(h[1],!0).length>=4?e(c):r.interrupt(s.parser.constructs.flow,i,e)(c)}},partial:!0},Hl={tokenize:function bp(r){const e=this,i=r.attempt(wr,function s(u){if(null!==u)return r.enter("lineEndingBlank"),r.consume(u),r.exit("lineEndingBlank"),e.currentConstruct=void 0,i;r.consume(u)},r.attempt(this.parser.constructs.flowInitial,l,We(r,r.attempt(this.parser.constructs.flow,l,r.attempt(po,l)),"linePrefix")));return i;function l(u){if(null!==u)return r.enter("lineEnding"),r.consume(u),r.exit("lineEnding"),e.currentConstruct=void 0,i;r.consume(u)}}},wp={resolveAll:Ul()},Sp=Hu("string"),kp=Hu("text");function Hu(r){return{tokenize:function e(i){const s=this,l=this.parser.constructs[r],u=i.attempt(l,c,h);return c;function c(g){return y(g)?u(g):h(g)}function h(g){if(null!==g)return i.enter("data"),i.consume(g),f;i.consume(g)}function f(g){return y(g)?(i.exit("data"),u(g)):(i.consume(g),f)}function y(g){if(null===g)return!0;const x=l[g];let w=-1;if(x)for(;++w=3&&(null===y||le(y))?(r.exit("thematicBreak"),e(y)):i(y)}function f(y){return y===l?(r.consume(y),s++,f):(r.exit("thematicBreakSequence"),ze(y)?We(r,h,"whitespace")(y):h(y))}}},Xt={name:"list",tokenize:function Tp(r,e,i){const s=this,l=s.events[s.events.length-1];let u=l&&"linePrefix"===l[1].type?l[2].sliceSerialize(l[1],!0).length:0,c=0;return function h(b){const C=s.containerState.type||(42===b||43===b||45===b?"listUnordered":"listOrdered");if("listUnordered"===C?!s.containerState.marker||b===s.containerState.marker:vr(b)){if(s.containerState.type||(s.containerState.type=C,r.enter(C,{_container:!0})),"listUnordered"===C)return r.enter("listItemPrefix"),42===b||45===b?r.check(ho,i,y)(b):y(b);if(!s.interrupt||49===b)return r.enter("listItemPrefix"),r.enter("listItemValue"),f(b)}return i(b)};function f(b){return vr(b)&&++c<10?(r.consume(b),f):(!s.interrupt||c<2)&&(s.containerState.marker?b===s.containerState.marker:41===b||46===b)?(r.exit("listItemValue"),y(b)):i(b)}function y(b){return r.enter("listItemMarker"),r.consume(b),r.exit("listItemMarker"),s.containerState.marker=s.containerState.marker||b,r.check(wr,s.interrupt?i:g,r.attempt(Uu,w,x))}function g(b){return s.containerState.initialBlankLine=!0,u++,w(b)}function x(b){return ze(b)?(r.enter("listItemPrefixWhitespace"),r.consume(b),r.exit("listItemPrefixWhitespace"),w):i(b)}function w(b){return s.containerState.size=u+s.sliceSerialize(r.exit("listItemPrefix"),!0).length,e(b)}},continuation:{tokenize:function Pp(r,e,i){const s=this;return s.containerState._closeFlow=void 0,r.check(wr,function l(h){return s.containerState.furtherBlankLines=s.containerState.furtherBlankLines||s.containerState.initialBlankLine,We(r,e,"listItemIndent",s.containerState.size+1)(h)},function u(h){return s.containerState.furtherBlankLines||!ze(h)?(s.containerState.furtherBlankLines=void 0,s.containerState.initialBlankLine=void 0,c(h)):(s.containerState.furtherBlankLines=void 0,s.containerState.initialBlankLine=void 0,r.attempt(Ip,e,c)(h))});function c(h){return s.containerState._closeFlow=!0,s.interrupt=void 0,We(r,r.attempt(Xt,e,i),"linePrefix",s.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(h)}}},exit:function Np(r){r.exit(this.containerState.type)}},Uu={tokenize:function Mp(r,e,i){const s=this;return We(r,function l(u){const c=s.events[s.events.length-1];return!ze(u)&&c&&"listItemPrefixWhitespace"===c[1].type?e(u):i(u)},"listItemPrefixWhitespace",s.parser.constructs.disable.null.includes("codeIndented")?void 0:5)},partial:!0},Ip={tokenize:function Lp(r,e,i){const s=this;return We(r,function l(u){const c=s.events[s.events.length-1];return c&&"listItemIndent"===c[1].type&&c[2].sliceSerialize(c[1],!0).length===s.containerState.size?e(u):i(u)},"listItemIndent",s.containerState.size+1)},partial:!0},Vu={name:"blockQuote",tokenize:function _l(r,e,i){const s=this;return function l(c){if(62===c){const h=s.containerState;return h.open||(r.enter("blockQuote",{_container:!0}),h.open=!0),r.enter("blockQuotePrefix"),r.enter("blockQuoteMarker"),r.consume(c),r.exit("blockQuoteMarker"),u}return i(c)};function u(c){return ze(c)?(r.enter("blockQuotePrefixWhitespace"),r.consume(c),r.exit("blockQuotePrefixWhitespace"),r.exit("blockQuotePrefix"),e):(r.exit("blockQuotePrefix"),e(c))}},continuation:{tokenize:function ms(r,e,i){const s=this;return function l(c){return ze(c)?We(r,u,"linePrefix",s.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(c):u(c)};function u(c){return r.attempt(Vu,e,i)(c)}}},exit:function Dp(r){r.exit("blockQuote")}};function Wl(r,e,i,s,l,u,c,h,f){const y=f||Number.POSITIVE_INFINITY;let g=0;return function x(D){return 60===D?(r.enter(s),r.enter(l),r.enter(u),r.consume(D),r.exit(u),w):null===D||32===D||41===D||ds(D)?i(D):(r.enter(s),r.enter(c),r.enter(h),r.enter("chunkString",{contentType:"string"}),N(D))};function w(D){return 62===D?(r.enter(u),r.consume(D),r.exit(u),r.exit(l),r.exit(s),e):(r.enter(h),r.enter("chunkString",{contentType:"string"}),b(D))}function b(D){return 62===D?(r.exit("chunkString"),r.exit(h),w(D)):null===D||60===D||le(D)?i(D):(r.consume(D),92===D?C:b)}function C(D){return 60===D||62===D||92===D?(r.consume(D),b):b(D)}function N(D){return g||null!==D&&41!==D&&!Rt(D)?g999||null===b||91===b||93===b&&!f||94===b&&!h&&"_hiddenFootnoteSupport"in c.parser.constructs?i(b):93===b?(r.exit(u),r.enter(l),r.consume(b),r.exit(l),r.exit(s),e):le(b)?(r.enter("lineEnding"),r.consume(b),r.exit("lineEnding"),g):(r.enter("chunkString",{contentType:"string"}),x(b))}function x(b){return null===b||91===b||93===b||le(b)||h++>999?(r.exit("chunkString"),g(b)):(r.consume(b),f||(f=!ze(b)),92===b?w:x)}function w(b){return 91===b||92===b||93===b?(r.consume(b),h++,x):x(b)}}function $l(r,e,i,s,l,u){let c;return function h(w){return 34===w||39===w||40===w?(r.enter(s),r.enter(l),r.consume(w),r.exit(l),c=40===w?41:w,f):i(w)};function f(w){return w===c?(r.enter(l),r.consume(w),r.exit(l),r.exit(s),e):(r.enter(u),y(w))}function y(w){return w===c?(r.exit(u),f(c)):null===w?i(w):le(w)?(r.enter("lineEnding"),r.consume(w),r.exit("lineEnding"),We(r,y,"linePrefix")):(r.enter("chunkString",{contentType:"string"}),g(w))}function g(w){return w===c||null===w||le(w)?(r.exit("chunkString"),y(w)):(r.consume(w),92===w?x:g)}function x(w){return w===c||92===w?(r.consume(w),g):g(w)}}function Sr(r,e){let i;return function s(l){return le(l)?(r.enter("lineEnding"),r.consume(l),r.exit("lineEnding"),i=!0,s):ze(l)?We(r,s,i?"linePrefix":"lineSuffix")(l):e(l)}}function Ui(r){return r.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const kr={name:"definition",tokenize:function Op(r,e,i){const s=this;let l;return function u(b){return r.enter("definition"),function c(b){return Kl.call(s,r,h,i,"definitionLabel","definitionLabelMarker","definitionLabelString")(b)}(b)};function h(b){return l=Ui(s.sliceSerialize(s.events[s.events.length-1][1]).slice(1,-1)),58===b?(r.enter("definitionMarker"),r.consume(b),r.exit("definitionMarker"),f):i(b)}function f(b){return Rt(b)?Sr(r,y)(b):y(b)}function y(b){return Wl(r,g,i,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(b)}function g(b){return r.attempt(zp,x,x)(b)}function x(b){return ze(b)?We(r,w,"whitespace")(b):w(b)}function w(b){return null===b||le(b)?(r.exit("definition"),s.parser.defined.push(l),e(b)):i(b)}}},zp={tokenize:function Rp(r,e,i){return function s(h){return Rt(h)?Sr(r,l)(h):i(h)};function l(h){return $l(r,u,i,"definitionTitle","definitionTitleMarker","definitionTitleString")(h)}function u(h){return ze(h)?We(r,c,"whitespace")(h):c(h)}function c(h){return null===h||le(h)?e(h):i(h)}},partial:!0},mo={name:"codeIndented",tokenize:function fs(r,e,i){const s=this;return function l(y){return r.enter("codeIndented"),We(r,u,"linePrefix",5)(y)};function u(y){const g=s.events[s.events.length-1];return g&&"linePrefix"===g[1].type&&g[2].sliceSerialize(g[1],!0).length>=4?c(y):i(y)}function c(y){return null===y?f(y):le(y)?r.attempt(qu,c,f)(y):(r.enter("codeFlowValue"),h(y))}function h(y){return null===y||le(y)?(r.exit("codeFlowValue"),c(y)):(r.consume(y),h)}function f(y){return r.exit("codeIndented"),e(y)}}},qu={tokenize:function gs(r,e,i){const s=this;return l;function l(c){return s.parser.lazy[s.now().line]?i(c):le(c)?(r.enter("lineEnding"),r.consume(c),r.exit("lineEnding"),l):We(r,u,"linePrefix",5)(c)}function u(c){const h=s.events[s.events.length-1];return h&&"linePrefix"===h[1].type&&h[2].sliceSerialize(h[1],!0).length>=4?e(c):le(c)?l(c):i(c)}},partial:!0},Fp={name:"headingAtx",tokenize:function Bp(r,e,i){let s=0;return function l(g){return r.enter("atxHeading"),function u(g){return r.enter("atxHeadingSequence"),c(g)}(g)};function c(g){return 35===g&&s++<6?(r.consume(g),c):null===g||Rt(g)?(r.exit("atxHeadingSequence"),h(g)):i(g)}function h(g){return 35===g?(r.enter("atxHeadingSequence"),f(g)):null===g||le(g)?(r.exit("atxHeading"),e(g)):ze(g)?We(r,h,"whitespace")(g):(r.enter("atxHeadingText"),y(g))}function f(g){return 35===g?(r.consume(g),f):(r.exit("atxHeadingSequence"),h(g))}function y(g){return null===g||35===g||Rt(g)?(r.exit("atxHeadingText"),h(g)):(r.consume(g),y)}},resolve:function fo(r,e){let l,u,i=r.length-2,s=3;return"whitespace"===r[s][1].type&&(s+=2),i-2>s&&"whitespace"===r[i][1].type&&(i-=2),"atxHeadingSequence"===r[i][1].type&&(s===i-1||i-4>s&&"whitespace"===r[i-2][1].type)&&(i-=s+1===i?2:4),i>s&&(l={type:"atxHeadingText",start:r[s][1].start,end:r[i][1].end},u={type:"chunkText",start:r[s][1].start,end:r[i][1].end,contentType:"text"},an(r,s,i-s+1,[["enter",l,e],["enter",u,e],["exit",u,e],["exit",l,e]])),r}},Ql={name:"setextUnderline",tokenize:function Yl(r,e,i){const s=this;let l;return function u(y){let x,g=s.events.length;for(;g--;)if("lineEnding"!==s.events[g][1].type&&"linePrefix"!==s.events[g][1].type&&"content"!==s.events[g][1].type){x="paragraph"===s.events[g][1].type;break}return s.parser.lazy[s.now().line]||!s.interrupt&&!x?i(y):(r.enter("setextHeadingLine"),l=y,function c(y){return r.enter("setextHeadingLineSequence"),h(y)}(y))};function h(y){return y===l?(r.consume(y),h):(r.exit("setextHeadingLineSequence"),ze(y)?We(r,f,"lineSuffix")(y):f(y))}function f(y){return null===y||le(y)?(r.exit("setextHeadingLine"),e(y)):i(y)}},resolveTo:function Gl(r,e){let s,l,u,i=r.length;for(;i--;)if("enter"===r[i][0]){if("content"===r[i][1].type){s=i;break}"paragraph"===r[i][1].type&&(l=i)}else"content"===r[i][1].type&&r.splice(i,1),!u&&"definition"===r[i][1].type&&(u=i);const c={type:"setextHeading",start:Object.assign({},r[l][1].start),end:Object.assign({},r[r.length-1][1].end)};return r[l][1].type="setextHeadingText",u?(r.splice(l,0,["enter",c,e]),r.splice(u+1,0,["exit",r[s][1],e]),r[s][1].end=Object.assign({},r[u][1].end)):r[s][1]=c,r.push(["exit",c,e]),r}},_u=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],Zl=["pre","script","style","textarea"],Wu={name:"htmlFlow",tokenize:function qp(r,e,i){const s=this;let l,u,c,h,f;return function y(E){return function g(E){return r.enter("htmlFlow"),r.enter("htmlFlowData"),r.consume(E),x}(E)};function x(E){return 33===E?(r.consume(E),w):47===E?(r.consume(E),u=!0,N):63===E?(r.consume(E),l=3,s.interrupt?e:j):un(E)?(r.consume(E),c=String.fromCharCode(E),V):i(E)}function w(E){return 45===E?(r.consume(E),l=2,b):91===E?(r.consume(E),l=5,h=0,C):un(E)?(r.consume(E),l=4,s.interrupt?e:j):i(E)}function b(E){return 45===E?(r.consume(E),s.interrupt?e:j):i(E)}function C(E){return E==="CDATA[".charCodeAt(h++)?(r.consume(E),6===h?s.interrupt?e:_e:C):i(E)}function N(E){return un(E)?(r.consume(E),c=String.fromCharCode(E),V):i(E)}function V(E){if(null===E||47===E||62===E||Rt(E)){const Bn=47===E,Ws=c.toLowerCase();return Bn||u||!Zl.includes(Ws)?_u.includes(c.toLowerCase())?(l=6,Bn?(r.consume(E),D):s.interrupt?e(E):_e(E)):(l=7,s.interrupt&&!s.parser.lazy[s.now().line]?i(E):u?O(E):B(E)):(l=1,s.interrupt?e(E):_e(E))}return 45===E||cn(E)?(r.consume(E),c+=String.fromCharCode(E),V):i(E)}function D(E){return 62===E?(r.consume(E),s.interrupt?e:_e):i(E)}function O(E){return ze(E)?(r.consume(E),O):Ze(E)}function B(E){return 47===E?(r.consume(E),Ze):58===E||95===E||un(E)?(r.consume(E),X):ze(E)?(r.consume(E),B):Ze(E)}function X(E){return 45===E||46===E||58===E||95===E||cn(E)?(r.consume(E),X):ae(E)}function ae(E){return 61===E?(r.consume(E),H):ze(E)?(r.consume(E),ae):B(E)}function H(E){return null===E||60===E||61===E||62===E||96===E?i(E):34===E||39===E?(r.consume(E),f=E,ve):ze(E)?(r.consume(E),H):Fe(E)}function ve(E){return E===f?(r.consume(E),f=null,Ae):null===E||le(E)?i(E):(r.consume(E),ve)}function Fe(E){return null===E||34===E||39===E||47===E||60===E||61===E||62===E||96===E||Rt(E)?ae(E):(r.consume(E),Fe)}function Ae(E){return 47===E||62===E||ze(E)?B(E):i(E)}function Ze(E){return 62===E?(r.consume(E),mn):i(E)}function mn(E){return null===E||le(E)?_e(E):ze(E)?(r.consume(E),mn):i(E)}function _e(E){return 45===E&&2===l?(r.consume(E),qe):60===E&&1===l?(r.consume(E),ye):62===E&&4===l?(r.consume(E),Yn):63===E&&3===l?(r.consume(E),j):93===E&&5===l?(r.consume(E),Fn):!le(E)||6!==l&&7!==l?null===E||le(E)?(r.exit("htmlFlowData"),oe(E)):(r.consume(E),_e):(r.exit("htmlFlowData"),r.check(Hp,sr,oe)(E))}function oe(E){return r.check(Up,te,sr)(E)}function te(E){return r.enter("lineEnding"),r.consume(E),r.exit("lineEnding"),Ie}function Ie(E){return null===E||le(E)?oe(E):(r.enter("htmlFlowData"),_e(E))}function qe(E){return 45===E?(r.consume(E),j):_e(E)}function ye(E){return 47===E?(r.consume(E),c="",ht):_e(E)}function ht(E){if(62===E){const Bn=c.toLowerCase();return Zl.includes(Bn)?(r.consume(E),Yn):_e(E)}return un(E)&&c.length<8?(r.consume(E),c+=String.fromCharCode(E),ht):_e(E)}function Fn(E){return 93===E?(r.consume(E),j):_e(E)}function j(E){return 62===E?(r.consume(E),Yn):45===E&&2===l?(r.consume(E),j):_e(E)}function Yn(E){return null===E||le(E)?(r.exit("htmlFlowData"),sr(E)):(r.consume(E),Yn)}function sr(E){return r.exit("htmlFlow"),e(E)}},resolveTo:function Vp(r){let e=r.length;for(;e--&&("enter"!==r[e][0]||"htmlFlow"!==r[e][1].type););return e>1&&"linePrefix"===r[e-2][1].type&&(r[e][1].start=r[e-2][1].start,r[e+1][1].start=r[e-2][1].start,r.splice(e-2,2)),r},concrete:!0},Hp={tokenize:function In(r,e,i){return function s(l){return r.enter("lineEnding"),r.consume(l),r.exit("lineEnding"),r.attempt(wr,e,i)}},partial:!0},Up={tokenize:function _p(r,e,i){const s=this;return function l(c){return le(c)?(r.enter("lineEnding"),r.consume(c),r.exit("lineEnding"),u):i(c)};function u(c){return s.parser.lazy[s.now().line]?i(c):e(c)}},partial:!0},Cr={tokenize:function $u(r,e,i){const s=this;return function l(c){return null===c?i(c):(r.enter("lineEnding"),r.consume(c),r.exit("lineEnding"),u)};function u(c){return s.parser.lazy[s.now().line]?i(c):e(c)}},partial:!0},Xl={name:"codeFenced",tokenize:function Ku(r,e,i){const s=this,l={tokenize:function ae(H,ve,Fe){let Ae=0;return function Ze(Ie){return H.enter("lineEnding"),H.consume(Ie),H.exit("lineEnding"),mn};function mn(Ie){return H.enter("codeFencedFence"),ze(Ie)?We(H,_e,"linePrefix",s.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(Ie):_e(Ie)}function _e(Ie){return Ie===h?(H.enter("codeFencedFenceSequence"),oe(Ie)):Fe(Ie)}function oe(Ie){return Ie===h?(Ae++,H.consume(Ie),oe):Ae>=c?(H.exit("codeFencedFenceSequence"),ze(Ie)?We(H,te,"whitespace")(Ie):te(Ie)):Fe(Ie)}function te(Ie){return null===Ie||le(Ie)?(H.exit("codeFencedFence"),ve(Ie)):Fe(Ie)}},partial:!0};let h,u=0,c=0;return function f(H){return function y(H){const ve=s.events[s.events.length-1];return u=ve&&"linePrefix"===ve[1].type?ve[2].sliceSerialize(ve[1],!0).length:0,h=H,r.enter("codeFenced"),r.enter("codeFencedFence"),r.enter("codeFencedFenceSequence"),g(H)}(H)};function g(H){return H===h?(c++,r.consume(H),g):c<3?i(H):(r.exit("codeFencedFenceSequence"),ze(H)?We(r,x,"whitespace")(H):x(H))}function x(H){return null===H||le(H)?(r.exit("codeFencedFence"),s.interrupt?e(H):r.check(Cr,N,X)(H)):(r.enter("codeFencedFenceInfo"),r.enter("chunkString",{contentType:"string"}),w(H))}function w(H){return null===H||le(H)?(r.exit("chunkString"),r.exit("codeFencedFenceInfo"),x(H)):ze(H)?(r.exit("chunkString"),r.exit("codeFencedFenceInfo"),We(r,b,"whitespace")(H)):96===H&&H===h?i(H):(r.consume(H),w)}function b(H){return null===H||le(H)?x(H):(r.enter("codeFencedFenceMeta"),r.enter("chunkString",{contentType:"string"}),C(H))}function C(H){return null===H||le(H)?(r.exit("chunkString"),r.exit("codeFencedFenceMeta"),x(H)):96===H&&H===h?i(H):(r.consume(H),C)}function N(H){return r.attempt(l,X,V)(H)}function V(H){return r.enter("lineEnding"),r.consume(H),r.exit("lineEnding"),D}function D(H){return u>0&&ze(H)?We(r,O,"linePrefix",u+1)(H):O(H)}function O(H){return null===H||le(H)?r.check(Cr,N,X)(H):(r.enter("codeFlowValue"),B(H))}function B(H){return null===H||le(H)?(r.exit("codeFlowValue"),O(H)):(r.consume(H),B)}function X(H){return r.exit("codeFenced"),e(H)}},concrete:!0},Jl=document.createElement("i");function ys(r){const e="&"+r+";";Jl.innerHTML=e;const i=Jl.textContent;return(59!==i.charCodeAt(i.length-1)||"semi"===r)&&i!==e&&i}const Qu={name:"characterReference",tokenize:function Wp(r,e,i){const s=this;let u,c,l=0;return function h(x){return r.enter("characterReference"),r.enter("characterReferenceMarker"),r.consume(x),r.exit("characterReferenceMarker"),f};function f(x){return 35===x?(r.enter("characterReferenceMarkerNumeric"),r.consume(x),r.exit("characterReferenceMarkerNumeric"),y):(r.enter("characterReferenceValue"),u=31,c=cn,g(x))}function y(x){return 88===x||120===x?(r.enter("characterReferenceMarkerHexadecimal"),r.consume(x),r.exit("characterReferenceMarkerHexadecimal"),r.enter("characterReferenceValue"),u=6,c=Rl,g):(r.enter("characterReferenceValue"),u=7,c=vr,g(x))}function g(x){if(59===x&&l){const w=r.exit("characterReferenceValue");return c!==cn||ys(s.sliceSerialize(w))?(r.enter("characterReferenceMarker"),r.consume(x),r.exit("characterReferenceMarker"),r.exit("characterReference"),e):i(x)}return c(x)&&l++1&&r[i][1].end.offset-r[i][1].start.offset>1?2:1;const x=Object.assign({},r[s][1].end),w=Object.assign({},r[i][1].start);nc(x,-f),nc(w,f),c={type:f>1?"strongSequence":"emphasisSequence",start:x,end:Object.assign({},r[s][1].end)},h={type:f>1?"strongSequence":"emphasisSequence",start:Object.assign({},r[i][1].start),end:w},u={type:f>1?"strongText":"emphasisText",start:Object.assign({},r[s][1].end),end:Object.assign({},r[i][1].start)},l={type:f>1?"strong":"emphasis",start:Object.assign({},c.start),end:Object.assign({},h.end)},r[s][1].end=Object.assign({},c.start),r[i][1].start=Object.assign({},h.end),y=[],r[s][1].end.offset-r[s][1].start.offset&&(y=kt(y,[["enter",r[s][1],e],["exit",r[s][1],e]])),y=kt(y,[["enter",l,e],["enter",c,e],["exit",c,e],["enter",u,e]]),y=kt(y,Vl(e.parser.constructs.insideSpan.null,r.slice(s+1,i),e)),y=kt(y,[["exit",u,e],["enter",h,e],["exit",h,e],["exit",l,e]]),r[i][1].end.offset-r[i][1].start.offset?(g=2,y=kt(y,[["enter",r[i][1],e],["exit",r[i][1],e]])):g=0,an(r,s-1,i-s+3,y),i=s+y.length-g-2;break}for(i=-1;++i-1){const h=c[0];"string"==typeof h?c[0]=h.slice(s):c.shift()}u>0&&c.push(r[l].slice(0,u))}return c}(c,oe)}function V(){const{line:oe,column:te,offset:Ie,_index:qe,_bufferIndex:ye}=s;return{line:oe,column:te,offset:Ie,_index:qe,_bufferIndex:ye}}function B(oe){f=void 0,w=oe,x=x(oe)}function Fe(oe,te){te.restore()}function Ae(oe,te){return function Ie(qe,ye,ht){let Fn,j,Yn,sr;return Array.isArray(qe)?Bn(qe):"tokenize"in qe?Bn([qe]):function E(Yt){return function gu(or){const Ks=null!==or&&Yt[or],pl=null!==or&&Yt.null;return Bn([...Array.isArray(Ks)?Ks:Ks?[Ks]:[],...Array.isArray(pl)?pl:pl?[pl]:[]])(or)}}(qe);function Bn(Yt){return Fn=Yt,j=0,0===Yt.length?ht:Ws(Yt[j])}function Ws(Yt){return function gu(or){return sr=function mn(){const oe=V(),te=g.previous,Ie=g.currentConstruct,qe=g.events.length,ye=Array.from(h);return{restore:function ht(){s=oe,g.previous=te,g.currentConstruct=Ie,g.events.length=qe,h=ye,_e()},from:qe}}(),Yn=Yt,Yt.partial||(g.currentConstruct=Yt),Yt.name&&g.parser.constructs.disable.null.includes(Yt.name)?np():Yt.tokenize.call(te?Object.assign(Object.create(g),te):g,y,bd,np)(or)}}function bd(Yt){return f=!0,oe(Yn,sr),ye}function np(Yt){return f=!0,sr.restore(),++j13&&i<32||i>126&&i<160||i>55295&&i<57344||i>64975&&i<65008||!(65535&~i)||65534==(65535&i)||i>1114111?"\ufffd":String.fromCodePoint(i)}const Zp=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function ca(r,e,i){if(e)return e;if(35===i.charCodeAt(0)){const l=i.charCodeAt(1),u=120===l||88===l;return ua(i.slice(u?2:1),u?16:10)}return ys(i)||r}const ri={}.hasOwnProperty;function ac(r,e,i){return"string"!=typeof e&&(i=e,e=void 0),function Ar(r){const e={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:u(Pd),autolinkProtocol:Ae,autolinkEmail:Ae,atxHeading:u(Ad),blockQuote:u(function or(){return{type:"blockquote",children:[]}}),characterEscape:Ae,characterReference:Ae,codeFenced:u(Ks),codeFencedFenceInfo:c,codeFencedFenceMeta:c,codeIndented:u(Ks,c),codeText:u(function pl(){return{type:"inlineCode",value:""}},c),codeTextData:Ae,data:Ae,codeFlowValue:Ae,definition:u(function wd(){return{type:"definition",identifier:"",label:null,title:null,url:""}}),definitionDestinationString:c,definitionLabelString:c,definitionTitleString:c,emphasis:u(function ch(){return{type:"emphasis",children:[]}}),hardBreakEscape:u(Id),hardBreakTrailing:u(Id),htmlFlow:u(Td,c),htmlFlowData:Ae,htmlText:u(Td,c),htmlTextData:Ae,image:u(function ph(){return{type:"image",title:null,url:"",alt:null}}),label:c,link:u(Pd),listItem:u(function dh(U){return{type:"listItem",spread:U._spread,checked:null,children:[]}}),listItemValue:function w(U){this.data.expectingFirstListItemValue&&(this.stack[this.stack.length-2].start=Number.parseInt(this.sliceSerialize(U),10),this.data.expectingFirstListItemValue=void 0)},listOrdered:u(Ld,function x(){this.data.expectingFirstListItemValue=!0}),listUnordered:u(Ld),paragraph:u(function hh(){return{type:"paragraph",children:[]}}),reference:function E(){this.data.referenceType="collapsed"},referenceString:c,resourceDestinationString:c,resourceTitleString:c,setextHeading:u(Ad),strong:u(function mh(){return{type:"strong",children:[]}}),thematicBreak:u(function gh(){return{type:"thematicBreak"}})},exit:{atxHeading:f(),atxHeadingSequence:function ae(U){const Y=this.stack[this.stack.length-1];if(!Y.depth){const ke=this.sliceSerialize(U).length;Y.depth=ke}},autolink:f(),autolinkEmail:function gu(U){Ze.call(this,U),this.stack[this.stack.length-1].url="mailto:"+this.sliceSerialize(U)},autolinkProtocol:function Yt(U){Ze.call(this,U),this.stack[this.stack.length-1].url=this.sliceSerialize(U)},blockQuote:f(),characterEscapeValue:Ze,characterReferenceMarkerHexadecimal:Ws,characterReferenceMarkerNumeric:Ws,characterReferenceValue:function bd(U){const Y=this.sliceSerialize(U),ke=this.data.characterReferenceType;let Be;ke?(Be=ua(Y,"characterReferenceMarkerNumeric"===ke?10:16),this.data.characterReferenceType=void 0):Be=ys(Y),this.stack[this.stack.length-1].value+=Be},characterReference:function np(U){this.stack.pop().position.end=zt(U.end)},codeFenced:f(function V(){const U=this.resume();this.stack[this.stack.length-1].value=U.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),this.data.flowCodeInside=void 0}),codeFencedFence:function N(){this.data.flowCodeInside||(this.buffer(),this.data.flowCodeInside=!0)},codeFencedFenceInfo:function b(){const U=this.resume();this.stack[this.stack.length-1].lang=U},codeFencedFenceMeta:function C(){const U=this.resume();this.stack[this.stack.length-1].meta=U},codeFlowValue:Ze,codeIndented:f(function D(){const U=this.resume();this.stack[this.stack.length-1].value=U.replace(/(\r?\n|\r)$/g,"")}),codeText:f(function Ie(){const U=this.resume();this.stack[this.stack.length-1].value=U}),codeTextData:Ze,data:Ze,definition:f(),definitionDestinationString:function X(){const U=this.resume();this.stack[this.stack.length-1].url=U},definitionLabelString:function O(U){const Y=this.resume(),ke=this.stack[this.stack.length-1];ke.label=Y,ke.identifier=Ui(this.sliceSerialize(U)).toLowerCase()},definitionTitleString:function B(){const U=this.resume();this.stack[this.stack.length-1].title=U},emphasis:f(),hardBreakEscape:f(_e),hardBreakTrailing:f(_e),htmlFlow:f(function oe(){const U=this.resume();this.stack[this.stack.length-1].value=U}),htmlFlowData:Ze,htmlText:f(function te(){const U=this.resume();this.stack[this.stack.length-1].value=U}),htmlTextData:Ze,image:f(function ye(){const U=this.stack[this.stack.length-1];if(this.data.inReference){const Y=this.data.referenceType||"shortcut";U.type+="Reference",U.referenceType=Y,delete U.url,delete U.title}else delete U.identifier,delete U.label;this.data.referenceType=void 0}),label:function Fn(){const U=this.stack[this.stack.length-1],Y=this.resume(),ke=this.stack[this.stack.length-1];this.data.inReference=!0,"link"===ke.type?ke.children=U.children:ke.alt=Y},labelText:function ht(U){const Y=this.sliceSerialize(U),ke=this.stack[this.stack.length-2];ke.label=function Xp(r){return r.replace(Zp,ca)}(Y),ke.identifier=Ui(Y).toLowerCase()},lineEnding:function mn(U){const Y=this.stack[this.stack.length-1];if(this.data.atHardBreak)return Y.children[Y.children.length-1].position.end=zt(U.end),void(this.data.atHardBreak=void 0);!this.data.setextHeadingSlurpLineEnding&&e.canContainEols.includes(Y.type)&&(Ae.call(this,U),Ze.call(this,U))},link:f(function qe(){const U=this.stack[this.stack.length-1];if(this.data.inReference){const Y=this.data.referenceType||"shortcut";U.type+="Reference",U.referenceType=Y,delete U.url,delete U.title}else delete U.identifier,delete U.label;this.data.referenceType=void 0}),listItem:f(),listOrdered:f(),listUnordered:f(),paragraph:f(),referenceString:function Bn(U){const Y=this.resume(),ke=this.stack[this.stack.length-1];ke.label=Y,ke.identifier=Ui(this.sliceSerialize(U)).toLowerCase(),this.data.referenceType="full"},resourceDestinationString:function j(){const U=this.resume();this.stack[this.stack.length-1].url=U},resourceTitleString:function Yn(){const U=this.resume();this.stack[this.stack.length-1].title=U},resource:function sr(){this.data.inReference=void 0},setextHeading:f(function Fe(){this.data.setextHeadingSlurpLineEnding=void 0}),setextHeadingLineSequence:function ve(U){this.stack[this.stack.length-1].depth=61===this.sliceSerialize(U).codePointAt(0)?1:2},setextHeadingText:function H(){this.data.setextHeadingSlurpLineEnding=!0},strong:f(),thematicBreak:f()}};Ir(e,(r||{}).mdastExtensions||[]);const i={};return function s(U){let Y={type:"root",children:[]};const ke={stack:[Y],tokenStack:[],config:e,enter:h,exit:y,buffer:c,resume:g,data:i},Be=[];let Xe=-1;for(;++Xe0){const fi=ke.tokenStack[ke.tokenStack.length-1];(fi[1]||Co).call(ke,void 0,fi[0])}for(Y.position={start:zt(U.length>0?U[0][1].start:{line:1,column:1,offset:0}),end:zt(U.length>0?U[U.length-2][1].end:{line:1,column:1,offset:0})},Xe=-1;++Xe((r,e)=>{const i=(l,u)=>(r.set(u,l),l),s=l=>{if(r.has(l))return r.get(l);const[u,c]=e[l];switch(u){case 0:case-1:return i(c,l);case 1:{const h=i([],l);for(const f of c)h.push(s(f));return h}case 2:{const h=i({},l);for(const[f,y]of c)h[s(f)]=s(y);return h}case 3:return i(new Date(c),l);case 4:{const{source:h,flags:f}=c;return i(new RegExp(h,f),l)}case 5:{const h=i(new Map,l);for(const[f,y]of c)h.set(s(f),s(y));return h}case 6:{const h=i(new Set,l);for(const f of c)h.add(s(f));return h}case 7:{const{name:h,message:f}=c;return i(new li[h](f),l)}case 8:return i(BigInt(c),l);case"BigInt":return i(Object(BigInt(c)),l)}return i(new li[u](c),l)};return s})(new Map,r)(0),{toString:Pr}={},{keys:Jt}=Object,bi=r=>{const e=typeof r;if("object"!==e||!r)return[0,e];const i=Pr.call(r).slice(8,-1);switch(i){case"Array":return[1,""];case"Object":return[2,""];case"Date":return[3,""];case"RegExp":return[4,""];case"Map":return[5,""];case"Set":return[6,""]}return i.includes("Array")?[1,i]:i.includes("Error")?[7,i]:[2,i]},ks=([r,e])=>0===r&&("function"===e||"symbol"===e),Cs=(r,{json:e,lossy:i}={})=>{const s=[];return((r,e,i,s)=>{const l=(c,h)=>{const f=s.push(c)-1;return i.set(h,f),f},u=c=>{if(i.has(c))return i.get(c);let[h,f]=bi(c);switch(h){case 0:{let g=c;switch(f){case"bigint":h=8,g=c.toString();break;case"function":case"symbol":if(r)throw new TypeError("unable to serialize "+f);g=null;break;case"undefined":return l([-1],c)}return l([h,g],c)}case 1:{if(f)return l([f,[...c]],c);const g=[],x=l([h,g],c);for(const w of c)g.push(u(w));return x}case 2:{if(f)switch(f){case"BigInt":return l([f,c.toString()],c);case"Boolean":case"Number":case"String":return l([f,c.valueOf()],c)}if(e&&"toJSON"in c)return u(c.toJSON());const g=[],x=l([h,g],c);for(const w of Jt(c))(r||!ks(bi(c[w])))&&g.push([u(w),u(c[w])]);return x}case 3:return l([h,c.toISOString()],c);case 4:{const{source:g,flags:x}=c;return l([h,{source:g,flags:x}],c)}case 5:{const g=[],x=l([h,g],c);for(const[w,b]of c)(r||!ks(bi(w))&&!ks(bi(b)))&&g.push([u(w),u(b)]);return x}case 6:{const g=[],x=l([h,g],c);for(const w of c)(r||!ks(bi(w)))&&g.push(u(w));return x}}const{message:y}=c;return l([h,{name:f,message:y}],c)};return u})(!(e||i),!!e,new Map,s)(r),s},js="function"==typeof structuredClone?(r,e)=>e&&("json"in e||"lossy"in e)?Kt(Cs(r,e)):structuredClone(r):(r,e)=>Kt(Cs(r,e));function _n(r){const e=[];let i=-1,s=0,l=0;for(;++i55295&&u<57344){const h=r.charCodeAt(i+1);u<56320&&h>56319&&h<57344?(c=String.fromCharCode(u,h),l=1):c="\ufffd"}else c=String.fromCharCode(u);c&&(e.push(r.slice(s,i),encodeURIComponent(c)),s=i+l+1,c=""),l&&(i+=l,l=0)}return e.join("")+r.slice(s)}function pa(r,e){const i=[{type:"text",value:"\u21a9"}];return e>1&&i.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(e)}]}),i}function pc(r,e){return"Back to reference "+(r+1)+(e>1?"-"+e:"")}const ki=function(r){if(null==r)return vn;if("function"==typeof r)return $t(r);if("object"==typeof r)return Array.isArray(r)?function Lr(r){const e=[];let i=-1;for(;++i":"")+")"})}return w;function w(){let C,N,V,b=Wn;if((!e||u(f,y,g[g.length-1]||void 0))&&(b=function dn(r){return Array.isArray(r)?r:"number"==typeof r?[_i,r]:null==r?Wn:[r]}(i(f,g)),b[0]===da))return b;if("children"in f&&f.children){const D=f;if(D.children&&b[0]!==ha)for(N=(s?D.children.length:-1)+c,V=g.concat(D);N>-1&&N1}const Lo=9,Ki=32;function xn(r){const e=String(r),i=/\r?\n|\r/g;let s=i.exec(e),l=0;const u=[];for(;s;)u.push(Ei(e.slice(l,s.index),l>0,!0),s[0]),l=s.index+s[0].length,s=i.exec(e);return u.push(Ei(e.slice(l),l>0,!1)),u.join("")}function Ei(r,e,i){let s=0,l=r.length;if(e){let u=r.codePointAt(s);for(;u===Lo||u===Ki;)s++,u=r.codePointAt(s)}if(i){let u=r.codePointAt(l-1);for(;u===Lo||u===Ki;)l--,u=r.codePointAt(l-1)}return l>s?r.slice(s,l):""}const ai={blockquote:function et(r,e){const i={type:"element",tagName:"blockquote",properties:{},children:r.wrap(r.all(e),!0)};return r.patch(e,i),r.applyData(e,i)},break:function Tn(r,e){const i={type:"element",tagName:"br",properties:{},children:[]};return r.patch(e,i),[r.applyData(e,i),{type:"text",value:"\n"}]},code:function dc(r,e){const i=e.value?e.value+"\n":"",s={};e.lang&&(s.className=["language-"+e.lang]);let l={type:"element",tagName:"code",properties:s,children:[{type:"text",value:i}]};return e.meta&&(l.data={meta:e.meta}),r.patch(e,l),l=r.applyData(e,l),l={type:"element",tagName:"pre",properties:{},children:[l]},r.patch(e,l),l},delete:function hc(r,e){const i={type:"element",tagName:"del",properties:{},children:r.all(e)};return r.patch(e,i),r.applyData(e,i)},emphasis:function fa(r,e){const i={type:"element",tagName:"em",properties:{},children:r.all(e)};return r.patch(e,i),r.applyData(e,i)},footnoteReference:function ga(r,e){const i="string"==typeof r.options.clobberPrefix?r.options.clobberPrefix:"user-content-",s=String(e.identifier).toUpperCase(),l=_n(s.toLowerCase()),u=r.footnoteOrder.indexOf(s);let c,h=r.footnoteCounts.get(s);void 0===h?(h=0,r.footnoteOrder.push(s),c=r.footnoteOrder.length):c=u+1,h+=1,r.footnoteCounts.set(s,h);const f={type:"element",tagName:"a",properties:{href:"#"+i+"fn-"+l,id:i+"fnref-"+l+(h>1?"-"+h:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(c)}]};r.patch(e,f);const y={type:"element",tagName:"sup",properties:{},children:[f]};return r.patch(e,y),r.applyData(e,y)},heading:function mc(r,e){const i={type:"element",tagName:"h"+e.depth,properties:{},children:r.all(e)};return r.patch(e,i),r.applyData(e,i)},html:function Ao(r,e){if(r.options.allowDangerousHtml){const i={type:"raw",value:e.value};return r.patch(e,i),r.applyData(e,i)}},imageReference:function Nr(r,e){const i=String(e.identifier).toUpperCase(),s=r.definitionById.get(i);if(!s)return ya(r,e);const l={src:_n(s.url||""),alt:e.alt};null!=s.title&&(l.title=s.title);const u={type:"element",tagName:"img",properties:l,children:[]};return r.patch(e,u),r.applyData(e,u)},image:function va(r,e){const i={src:_n(e.url)};null!=e.alt&&(i.alt=e.alt),null!=e.title&&(i.title=e.title);const s={type:"element",tagName:"img",properties:i,children:[]};return r.patch(e,s),r.applyData(e,s)},inlineCode:function td(r,e){const i={type:"text",value:e.value.replace(/\r?\n|\r/g," ")};r.patch(e,i);const s={type:"element",tagName:"code",properties:{},children:[i]};return r.patch(e,s),r.applyData(e,s)},linkReference:function Es(r,e){const i=String(e.identifier).toUpperCase(),s=r.definitionById.get(i);if(!s)return ya(r,e);const l={href:_n(s.url||"")};null!=s.title&&(l.title=s.title);const u={type:"element",tagName:"a",properties:l,children:r.all(e)};return r.patch(e,u),r.applyData(e,u)},link:function Io(r,e){const i={href:_n(e.url)};null!=e.title&&(i.title=e.title);const s={type:"element",tagName:"a",properties:i,children:r.all(e)};return r.patch(e,s),r.applyData(e,s)},listItem:function fc(r,e,i){const s=r.all(e),l=i?function gc(r){let e=!1;if("list"===r.type){e=r.spread||!1;const i=r.children;let s=-1;for(;!e&&++s0&&x.children.unshift({type:"text",value:" "}),x.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:e.checked,disabled:!0},children:[]}),u.className=["task-list-item"]}let h=-1;for(;++h0){const c={type:"element",tagName:"tbody",properties:{},children:r.wrap(i,!0)},h=to(e.children[1]),f=Al(e.children[e.children.length-1]);h&&f&&(c.position={start:h,end:f}),l.push(c)}const u={type:"element",tagName:"table",properties:{},children:r.wrap(l,!0)};return r.patch(e,u),r.applyData(e,u)},tableCell:function wa(r,e){const i={type:"element",tagName:"td",properties:{},children:r.all(e)};return r.patch(e,i),r.applyData(e,i)},tableRow:function ba(r,e,i){const s=i?i.children:void 0,u=0===(s?s.indexOf(e):1)?"th":"td",c=i&&"table"===i.type?i.align:void 0,h=c?c.length:e.children.length;let f=-1;const y=[];for(;++f0&&i.push({type:"text",value:"\n"}),i}function ka(r){let e=0,i=r.charCodeAt(e);for(;9===i||32===i;)e++,i=r.charCodeAt(e);return r.slice(e)}function Dr(r,e){const i=ui(r,e),s=i.one(r,void 0),l=function ed(r){const e="string"==typeof r.options.clobberPrefix?r.options.clobberPrefix:"user-content-",i=r.options.footnoteBackContent||pa,s=r.options.footnoteBackLabel||pc,l=r.options.footnoteLabel||"Footnotes",u=r.options.footnoteLabelTagName||"h2",c=r.options.footnoteLabelProperties||{className:["sr-only"]},h=[];let f=-1;for(;++f0&&C.push({type:"text",value:" "});let O="string"==typeof i?i:i(f,b);"string"==typeof O&&(O={type:"text",value:O}),C.push({type:"element",tagName:"a",properties:{href:"#"+e+"fnref-"+w+(b>1?"-"+b:""),dataFootnoteBackref:"",ariaLabel:"string"==typeof s?s:s(f,b),className:["data-footnote-backref"]},children:Array.isArray(O)?O:[O]})}const V=g[g.length-1];if(V&&"element"===V.type&&"p"===V.tagName){const O=V.children[V.children.length-1];O&&"text"===O.type?O.value+=" ":V.children.push({type:"text",value:" "}),V.children.push(...C)}else g.push(...C);const D={type:"element",tagName:"li",properties:{id:e+"fn-"+w},children:r.wrap(g,!0)};r.patch(y,D),h.push(D)}if(0!==h.length)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:u,properties:{...js(c),id:"footnote-label"},children:[{type:"text",value:l}]},{type:"text",value:"\n"},{type:"element",tagName:"ol",properties:{},children:r.wrap(h,!0)},{type:"text",value:"\n"}]}}(i),u=Array.isArray(s)?{type:"root",children:s}:s||{type:"root",children:[]};return l&&u.children.push({type:"text",value:"\n"},l),u}function Kn(r,e){return r&&"run"in r?function(){var i=(0,R.A)(function*(s,l){const u=Dr(s,{file:l,...e});yield r.run(u,l)});return function(s,l){return i.apply(this,arguments)}}():function(i,s){return Dr(i,{file:s,...e||r})}}function zr(r){if(r)throw r}var $i=F(6216);function ci(r){if("object"!=typeof r||null===r)return!1;const e=Object.getPrototypeOf(r);return!(null!==e&&e!==Object.prototype&&null!==Object.getPrototypeOf(e)||Symbol.toStringTag in r||Symbol.iterator in r)}const Ln_basename=function ja(r,e){if(void 0!==e&&"string"!=typeof e)throw new TypeError('"ext" argument must be a string');Qi(r);let u,i=0,s=-1,l=r.length;if(void 0===e||0===e.length||e.length>r.length){for(;l--;)if(47===r.codePointAt(l)){if(u){i=l+1;break}}else s<0&&(u=!0,s=l+1);return s<0?"":r.slice(i,s)}if(e===r)return"";let c=-1,h=e.length-1;for(;l--;)if(47===r.codePointAt(l)){if(u){i=l+1;break}}else c<0&&(u=!0,c=l+1),h>-1&&(r.codePointAt(l)===e.codePointAt(h--)?h<0&&(s=l):(h=-1,s=c));return i===s?s=c:s<0&&(s=r.length),r.slice(i,s)},Ln_dirname=function st(r){if(Qi(r),0===r.length)return".";let s,e=-1,i=r.length;for(;--i;)if(47===r.codePointAt(i)){if(s){e=i;break}}else s||(s=!0);return e<0?47===r.codePointAt(0)?"/":".":1===e&&47===r.codePointAt(0)?"//":r.slice(0,e)},Ln_extname=function Do(r){Qi(r);let c,e=r.length,i=-1,s=0,l=-1,u=0;for(;e--;){const h=r.codePointAt(e);if(47!==h)i<0&&(c=!0,i=e+1),46===h?l<0?l=e:1!==u&&(u=1):l>-1&&(u=-1);else if(c){s=e+1;break}}return l<0||i<0||0===u||1===u&&l===i-1&&l===s+1?"":r.slice(l,i)},Ln_join=function Ea(...r){let i,e=-1;for(;++e2){if(f=i.lastIndexOf("/"),f!==i.length-1){f<0?(i="",s=0):(i=i.slice(0,f),s=i.length-1-i.lastIndexOf("/")),l=c,u=0;continue}}else if(i.length>0){i="",s=0,l=c,u=0;continue}e&&(i=i.length>0?i+"/..":"..",s=2)}else i.length>0?i+="/"+r.slice(l+1,c):i=r.slice(l+1,c),s=c-l-1;l=c,u=0}else 46===h&&u>-1?u++:u=-1}return i}(r,!e);return 0===i.length&&!e&&(i="."),i.length>0&&47===r.codePointAt(r.length-1)&&(i+="/"),e?"/"+i:i}(i)},Ln_sep="/";function Qi(r){if("string"!=typeof r)throw new TypeError("Path must be a string. Received "+JSON.stringify(r))}const Gi_cwd=function ot(){return"/"};function pt(r){return!!(null!==r&&"object"==typeof r&&"href"in r&&r.href&&"protocol"in r&&r.protocol&&void 0===r.auth)}const Yi=["history","path","basename","stem","extname","dirname"];class Rr{constructor(e){let i;i=e?pt(e)?{path:e}:"string"==typeof e||function Ta(r){return!!(r&&"object"==typeof r&&"byteLength"in r&&"byteOffset"in r)}(e)?{value:e}:e:{},this.cwd=Gi_cwd(),this.data={},this.history=[],this.messages=[];let l,s=-1;for(;++sc.length;let f;h&&c.push(l);try{f=r.apply(this,c)}catch(y){if(h&&i)throw y;return l(y)}h||(f&&f.then&&"function"==typeof f.then?f.then(u,l):f instanceof Error?l(f):u(f))};function l(c,...h){i||(i=!0,e(c,...h))}function u(c){l(null,c)}}(g,h)(...y):c(null,...y)}}(null,...l)},use:function s(l){if("function"!=typeof l)throw new TypeError("Expected `middelware` to be a function, not "+l);return r.push(l),e}};return e}()}copy(){const e=new tn;let i=-1;for(;++i0){let[b,...C]=g;const N=s[w][1];ci(N)&&ci(b)&&(b=$i(!0,N,b)),s[w]=[y,b,...C]}}}}const Is=(new tn).freeze();function Ts(r,e){if("function"!=typeof e)throw new TypeError("Cannot `"+r+"` without `parser`")}function Ps(r,e){if("function"!=typeof e)throw new TypeError("Cannot `"+r+"` without `compiler`")}function Fo(r,e){if(e)throw new Error("Cannot call `"+r+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function La(r){if(!ci(r)||"string"!=typeof r.type)throw new TypeError("Expected node, got `"+r+"`")}function Na(r,e,i){if(!i)throw new Error("`"+r+"` finished async. Use `"+e+"` instead")}function Ls(r){return function wc(r){return!!(r&&"object"==typeof r&&"message"in r&&"messages"in r)}(r)?r:new Rr(r)}const Fr=[],Ma={allowDangerousHtml:!0},Bo=/^(https?|ircs?|mailto|xmpp)$/i,Ho=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function Da(r){const e=r.allowedElements,i=r.allowElement,s=r.children||"",l=r.className,u=r.components,c=r.disallowedElements,h=r.rehypePlugins||Fr,f=r.remarkPlugins||Fr,y=r.remarkRehypeOptions?{...r.remarkRehypeOptions,...Ma}:Ma,g=r.skipHtml,x=r.unwrapDisallowed,w=r.urlTransform||za,b=Is().use(Jp).use(f).use(Kn,y).use(h),C=new Rr;"string"==typeof s&&(C.value=s);for(const O of Ho)Object.hasOwn(r,O.from);const N=b.parse(C);let V=b.runSync(N,C);return l&&(V={type:"element",tagName:"div",properties:{className:l},children:"root"===V.type?V.children:[V]}),en(V,function D(O,B,X){if("raw"===O.type&&X&&"number"==typeof B)return g?X.children.splice(B,1):X.children[B]={type:"text",value:O.value},B;if("element"===O.type){let ae;for(ae in us)if(Object.hasOwn(us,ae)&&Object.hasOwn(O.properties,ae)){const H=O.properties[ae],ve=us[ae];(null===ve||ve.includes(O.tagName))&&(O.properties[ae]=w(String(H||""),ae,O))}}if("element"===O.type){let ae=e?!e.includes(O.tagName):!!c&&c.includes(O.tagName);if(!ae&&i&&"number"==typeof B&&(ae=!i(O,B,X)),ae&&X&&"number"==typeof B)return x&&O.children?X.children.splice(B,1,...O.children):X.children.splice(B,1),B}}),function En(r,e){if(!e||void 0===e.Fragment)throw new TypeError("Expected `Fragment` in options");const i=e.filePath||void 0;let s;if(e.development){if("function"!=typeof e.jsxDEV)throw new TypeError("Expected `jsxDEV` in options when `development: true`");s=function Lu(r,e){return function i(s,l,u,c){const h=Array.isArray(u.children),f=to(s);return e(l,u,c,h,{columnNumber:f?f.column-1:void 0,fileName:r,lineNumber:f?f.line:void 0},void 0)}}(i,e.jsxDEV)}else{if("function"!=typeof e.jsx)throw new TypeError("Expected `jsx` in production options");if("function"!=typeof e.jsxs)throw new TypeError("Expected `jsxs` in production options");s=function Ll(r,e,i){return function s(l,u,c,h){const y=Array.isArray(c.children)?i:e;return h?y(u,c,h):y(u,c)}}(0,e.jsx,e.jsxs)}const l={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:s,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:i,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:!1!==e.passKeys,passNode:e.passNode||!1,schema:"svg"===e.space?Cl:is,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:!1!==e.tableCellAlignToStyle},u=Tu(l,r,void 0);return u&&"string"!=typeof u?u:l.create(r,l.Fragment,{children:u||void 0},void 0)}(V,{Fragment:p.Fragment,components:u,ignoreInvalidStyle:!0,jsx:p.jsx,jsxs:p.jsxs,passKeys:!0,passNode:!0})}function za(r){const e=r.indexOf(":"),i=r.indexOf("?"),s=r.indexOf("#"),l=r.indexOf("/");return e<0||l>-1&&e>l||i>-1&&e>i||s>-1&&e>s||Bo.test(r.slice(0,e))?r:""}var Uo=F(1732),ue=F(6763),L=F(3584),I=F(9611),$e=F(7561);class jc extends Z.dL{constructor(){super(...arguments),this.updateParams=e=>{this.plugin.managers.animation.updateParams({[e.name]:e.value})},this.updateCurrentParams=e=>{this.plugin.managers.animation.updateCurrentParams({[e.name]:e.value})},this.startOrStop=()=>{const e=this.plugin.managers.animation;"playing"===e.state.animationState?e.stop():(this.props.onStart&&this.props.onStart(),e.start())}}componentDidMount(){this.subscribe(this.plugin.managers.animation.events.updated,()=>this.forceUpdate())}render(){var e,i;const s=this.plugin.managers.animation;if(s.isEmpty)return null;const l="playing"===s.state.animationState,u=null===(i=(e=s.current.anim).canApply)||void 0===i?void 0:i.call(e,this.plugin);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)($e.y1,{params:s.getParams(),values:s.state.params,onChange:this.updateParams,isDisabled:l}),(0,p.jsx)($e.y1,{params:s.current.params,values:s.current.paramValues,onChange:this.updateCurrentParams,isDisabled:l}),(0,p.jsx)("div",{className:"msp-flex-row",children:(0,p.jsx)(L.$n,{icon:"playing"!==s.state.animationState?void 0:I.M6,onClick:this.startOrStop,disabled:void 0!==u&&!1===u.canApply,children:"playing"===s.state.animationState?"Stop":void 0===u||u.canApply?"Start":u.reason||"Start"})})]})}}var Ec=F(1893),Br=F(9039),Ac=F(2277),tt=F(1832),Ee=F(8791),Hr=F(1094),Oa=F(4412);function Ra(r){return(0,mt.p)((e,i)=>r<=i)}class Ii extends Z.jB{constructor(){super(...arguments),this.onChange=({name:e,value:i})=>{const s={...this.props.params,[e]:i};this.props.events.onChange(s,this.areInitial(s),this.validate(s))}}validate(e){}areInitial(e){return Q.t.areEqual(this.props.info.params,e,this.props.info.initialValues)}render(){return(0,p.jsx)($e.y1,{params:this.props.info.params,values:this.props.params,onChange:this.onChange,onEnter:this.props.events.onEnter,isDisabled:this.props.isDisabled})}}!function(r){function e(l){const u=Object.keys(l);for(const c of u)if(!l[c].isHidden)return!1;return!0}r.infoFromAction=function i(l,u,c,h){const f=u.cells.get(h).obj,y=c.definition.params?c.definition.params(f,l):{};return{initialValues:Q.t.getDefaultValues(y),params:y,isEmpty:e(y)}},r.infoFromTransform=function s(l,u,c){const h=u.cells.get(c.ref),f=h.params&&h.params.definition||{};return{initialValues:h.params&&h.params.values||{},params:f,isEmpty:e(f)}}}(Ii||(Ii={}));class Ns extends Z.jB{constructor(){var e;super(...arguments),e=this,this.busy=new Oa.t(!1),this.onEnter=()=>{this.state.error||this.apply()},this.autoApplyHandle=void 0,this.events={onEnter:this.onEnter,onChange:(i,s,l)=>{this.clearAutoApply(),this.setState({params:i,isInitial:s,error:l&&l[0]},()=>{!s&&!this.state.error&&this.canAutoApply(i)&&(this.clearAutoApply(),this.autoApplyHandle=setTimeout(this.apply,50))})}},this.apply=(0,R.A)(function*(){var i,s;e.clearAutoApply(),e.setState({busy:!0});try{yield e.applyAction()}catch(l){console.error(l)}finally{null===(s=(i=e.props).onApply)||void 0===s||s.call(i),e.busy.next(!1)}}),this.refresh=()=>{this.setState({params:this.getInfo().initialValues,isInitial:!0,error:void 0})},this.setDefault=()=>{const i=this.getInfo(),s=Q.t.getDefaultValues(i.params);this.setState({params:s,isInitial:Q.t.areEqual(i.params,s,i.initialValues),error:void 0})},this.toggleExpanded=()=>{this.setState({isCollapsed:!this.state.isCollapsed})}}clearAutoApply(){void 0!==this.autoApplyHandle&&(clearTimeout(this.autoApplyHandle),this.autoApplyHandle=void 0)}componentDidMount(){this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.busy.value!==e&&this.busy.next(e)}),this.subscribe(this.busy.pipe(Ra(1)),e=>{this.setState({busy:e})})}renderApply(){const e=this.canApply();return!this.props.autoHideApply||e&&!this.canAutoApply(this.state.params)?(0,p.jsxs)("div",{className:"msp-transform-apply-wrap",children:[(0,p.jsx)(L.K0,{svg:I.ij,className:"msp-transform-default-params",onClick:this.setDefault,disabled:this.state.busy,title:"Set default params"}),(0,p.jsx)("div",{className:"msp-transform-apply-wider",children:(0,p.jsx)(L.$n,{icon:e?I.Xq:void 0,className:"msp-btn-commit msp-btn-commit-"+(e?"on":"off"),onClick:this.apply,disabled:!e,children:this.props.applyLabel||this.applyText()})})]}):null}renderDefault(){const e=this.getInfo(),i=e.isEmpty&&this.isUpdate(),s=this.getHeader(),l=this.getTransformerId(),u=this.plugin.customParamEditors.has(l)?this.plugin.customParamEditors.get(l):Ii,c=this.state.isCollapsed?"msp-transform-wrapper msp-transform-wrapper-collapsed":"msp-transform-wrapper";let h=null;if(!i&&!this.state.isCollapsed){const{a:y,b:g,bCell:x}=this.getSourceAndTarget(),w=this.renderApply();h=(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(u,{info:e,a:y,b:g,bCell:x,events:this.events,params:this.state.params,isDisabled:this.state.busy}),w]})}const f=(0,p.jsxs)("div",{className:c,style:{marginBottom:this.props.noMargin?0:void 0},children:["none"!==s&&!this.props.wrapInExpander&&(0,p.jsx)("div",{className:"msp-transform-header",children:(0,p.jsxs)(L.$n,{onClick:this.toggleExpanded,title:s.description,children:[!i&&(0,p.jsx)(I.In,{svg:this.state.isCollapsed?I.Cp:I.DM}),s.name]})}),h]});return i||!this.props.wrapInExpander?f:(0,p.jsx)(L.Yj,{header:this.isUpdate()?`Update ${"none"===s?"":s.name}`:`Apply ${"none"===s?"":s.name}`,headerLeftMargin:this.props.expanderHeaderLeftMargin,children:f})}renderSimple(){var e,i,s;const l=this.getInfo(),u=this.canApply(),c=(0,p.jsxs)("div",{className:"msp-flex-row",children:[(0,p.jsx)(L.$n,{icon:null===(e=this.props.simpleApply)||void 0===e?void 0:e.icon,title:null===(i=this.props.simpleApply)||void 0===i?void 0:i.title,disabled:this.state.busy||!u,onClick:this.apply,className:"msp-btn-apply-simple",children:null===(s=this.props.simpleApply)||void 0===s?void 0:s.header}),!l.isEmpty&&(0,p.jsx)(L.ff,{icon:I.Hk,label:"",title:"Options",toggle:this.toggleExpanded,isSelected:!this.state.isCollapsed,disabled:this.state.busy,style:{flex:"0 0 40px",padding:0}})]});if(this.state.isCollapsed)return c;const h=this.getTransformerId(),f=this.plugin.customParamEditors.has(h)?this.plugin.customParamEditors.get(h):Ii,{a:y,b:g,bCell:x}=this.getSourceAndTarget();return(0,p.jsxs)(p.Fragment,{children:[c,(0,p.jsx)(f,{info:l,a:y,b:g,bCell:x,events:this.events,params:this.state.params,isDisabled:this.state.busy})]})}render(){return this.props.simpleApply?this.renderSimple():this.renderDefault()}}class pi extends Ns{constructor(){super(...arguments),this._getInfo=(0,Hr._)(e=>Ii.infoFromTransform(this.plugin,this.props.state,e)),this.state={error:void 0,isInitial:!0,params:this.getInfo().initialValues,busy:!1,isCollapsed:this.props.initiallyCollapsed}}applyAction(){return this.props.customUpdate?this.props.customUpdate(this.state.params):this.plugin.state.updateTransform(this.props.state,this.props.transform.ref,this.state.params)}getInfo(){return this._getInfo(this.props.transform)}getTransformerId(){return this.props.transform.transformer.id}getHeader(){return this.props.customHeader||this.props.transform.transformer.definition.display}canApply(){const{state:e}=this.props,i=e.cells.get(this.props.transform.ref);if(!i)return!1;if("error"===i.status){const s=e.cells.get(this.props.transform.parent);return!!s&&"ok"===s.status}return!this.state.error&&!this.state.busy&&!this.state.isInitial}applyText(){return this.canApply()?"Update":"Nothing to Update"}isUpdate(){return!0}getSourceAndTarget(){const e=this.props.state.cells.get(this.props.transform.ref);return{a:this.props.state.cells.get(this.props.transform.parent).obj,b:e?.obj,bCell:e}}canAutoApply(e){const i=this.props.transform.transformer.definition.canAutoUpdate;if(!i)return!1;const{state:s}=this.props,l=s.cells.get(this.props.transform.ref);return!(!l||!l.sourceRef||"ok"!==l.status)&&i({a:s.cells.get(l.sourceRef).obj,b:l.obj,oldParams:this.getInfo().initialValues,newParams:e},this.plugin)}componentDidMount(){super.componentDidMount(),this.props.toggleCollapsed&&this.subscribe(this.props.toggleCollapsed,()=>this.setState({isCollapsed:!this.state.isCollapsed})),this.subscribe(this.plugin.state.events.object.updated,({ref:e,state:i})=>{this.props.transform.ref!==e||this.props.state!==i||this.state.params!==this.props.transform.params&&(this._getInfo=(0,Hr._)(s=>Ii.infoFromTransform(this.plugin,this.props.state,s)),this.setState({params:this.props.transform.params,isInitial:!0}))})}componentDidUpdate(e){var i;if(this.props.transform!==e.transform){const s=this.props.state.cells.get(this.props.transform.ref);this.setState({params:(null===(i=s.params)||void 0===i?void 0:i.values)||{},isInitial:!0,error:void 0,simpleOnly:this.state.simpleOnly})}}}class nd extends Z.jB{get current(){return this.plugin.managers.structure.hierarchy.behaviors.selection}componentDidMount(){this.subscribe(this.current,()=>this.forceUpdate())}get unitcell(){var e;const{selection:i}=this.plugin.managers.structure.hierarchy;if(0===i.structures.length)return null;const s=[];for(const l of i.structures){const u=l.model;u?.unitcell&&null!==(e=u.unitcell)&&void 0!==e&&e.cell.obj&&s.push(u.unitcell)}return 0===s.length?null:(0,p.jsx)(bn,{refs:s,labelMultiple:"Unit Cells"})}get customControls(){const e=[];return this.plugin.genericRepresentationControls.forEach((i,s)=>{const[l,u]=i(this.plugin.managers.structure.hierarchy.selection);l.length>0&&e.push((0,p.jsx)("div",{children:(0,p.jsx)(bn,{refs:l,labelMultiple:u})},s))}),e.length>0?e:null}render(){return(0,p.jsx)(p.Fragment,{children:(0,p.jsxs)("div",{style:{marginTop:"6px"},children:[this.unitcell,this.customControls]})})}}class bn extends Z.jB{constructor(){super(...arguments),this.state={showOptions:!1},this.toggleVisibility=e=>{e.preventDefault(),this.plugin.managers.structure.hierarchy.toggleVisibility(this.props.refs),e.currentTarget.blur()},this.highlight=e=>{e.preventDefault(),this.pivot.cell.parent&&ue.a.Interactivity.Object.Highlight(this.plugin,{state:this.pivot.cell.parent,ref:this.props.refs.map(i=>i.cell.transform.ref)})},this.clearHighlight=e=>{e.preventDefault(),ue.a.Interactivity.ClearHighlights(this.plugin)},this.focus=e=>{var i;e.preventDefault();let s=!0;for(const u of this.props.refs)if(!u.cell.state.isHidden){s=!1;break}s&&this.plugin.managers.structure.hierarchy.toggleVisibility(this.props.refs,"show");const l=[];for(const u of this.props.refs){if(u.cell.state.isHidden)continue;const c=null===(i=u.cell.obj)||void 0===i?void 0:i.data.repr.getLoci();c&&l.push(c)}this.plugin.managers.camera.focusLoci(l)},this.toggleOptions=()=>this.setState({showOptions:!this.state.showOptions})}componentDidMount(){this.subscribe(this.plugin.state.events.cell.stateUpdated,e=>{var i;tt.Uw.ObjectEvent.isCell(e,null===(i=this.pivot)||void 0===i?void 0:i.cell)&&this.forceUpdate()})}get pivot(){return this.props.refs[0]}render(){const{refs:e,labelMultiple:i}=this.props;if(0===e.length)return null;const s=e[0];let l,u;if(1===e.length){const{obj:c}=s.cell;if(!c)return null;l=c?.label,u=c?.description}else l=`${e.length} ${i||"Objects"}`;return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"msp-flex-row",children:[(0,p.jsxs)("button",{className:"msp-form-control msp-control-button-label",title:`${l}. Click to focus.`,onClick:this.focus,onMouseEnter:this.highlight,onMouseLeave:this.clearHighlight,style:{textAlign:"left"},children:[l," ",(0,p.jsx)("small",{children:u})]}),(0,p.jsx)(L.K0,{svg:s.cell.state.isHidden?I.qF:I.zs,toggleState:!1,className:"msp-form-control",onClick:this.toggleVisibility,title:s.cell.state.isHidden?"Show":"Hide",small:!0,flex:!0}),1===e.length&&(0,p.jsx)(L.K0,{svg:I.cv,className:"msp-form-control",onClick:this.toggleOptions,title:"Options",toggleState:this.state.showOptions,flex:!0})]}),1===e.length&&this.state.showOptions&&s.cell.parent&&(0,p.jsx)(p.Fragment,{children:(0,p.jsx)("div",{className:"msp-control-offset",children:(0,p.jsx)(pi,{state:s.cell.parent,transform:s.cell.transform,customHeader:"none",autoHideApply:!0})})})]})}}class Fa extends Z.VK{defaultState(){return{header:"Components",isCollapsed:!1,isDisabled:!1,brand:{accent:"blue",svg:I.c3}}}componentDidMount(){this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,e=>this.setState({description:Ac.G.getSelectedStructuresDescription(this.plugin)}))}renderControls(){return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(Vo,{}),(0,p.jsx)(Tc,{}),(0,p.jsx)(nd,{})]})}}class Vo extends Z.jB{constructor(){super(...arguments),this.state={isEmpty:!0,isBusy:!1,canUndo:!1},this.togglePreset=this.toggleAction("preset"),this.toggleAdd=this.toggleAction("add"),this.toggleOptions=this.toggleAction("options"),this.hideAction=()=>this.setState({action:void 0}),this.applyPreset=e=>{if(this.hideAction(),!e)return;const i=this.plugin.managers.structure,{structures:s}=i.hierarchy.selection;null===e.value?i.component.clear(s):i.component.applyPreset(s,e.value)},this.undo=()=>{const e=this.plugin.state.data.undo();e&&this.plugin.runTask(e)}}get isDisabled(){return this.state.isBusy||this.state.isEmpty}componentDidMount(){this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,e=>this.setState({action:"options"!==this.state.action||0===e.structures.length?void 0:"options",isEmpty:0===e.structures.length})),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e,action:"options"!==this.state.action?void 0:"options"})}),this.subscribe(this.plugin.state.data.events.historyUpdated,({state:e})=>{this.setState({canUndo:e.canUndo})})}toggleAction(e){return()=>this.setState({action:this.state.action===e?void 0:e})}get presetControls(){return(0,p.jsx)(Ee.W,{items:this.presetActions,onSelect:this.applyPreset})}get presetActions(){const e=this.plugin.managers.structure.component.pivotStructure,i=this.plugin.builders.structure.representation.getPresets(e?.cell.obj);return Ee.W.createItems(i,{label:s=>s.display.name,category:s=>s.display.group,description:s=>s.display.description})}render(){const e=this.state.canUndo?`Undo ${this.plugin.state.data.latestUndoLabel}`:"Some mistakes of the past can be undone.";return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"msp-flex-row",children:[(0,p.jsx)(L.ff,{icon:I.sM,label:"Preset",title:"Apply a representation preset for the current structure(s).",toggle:this.togglePreset,isSelected:"preset"===this.state.action,disabled:this.isDisabled}),(0,p.jsx)(L.ff,{icon:I.CR,label:"Add",title:"Add a new representation component for a selection.",toggle:this.toggleAdd,isSelected:"add"===this.state.action,disabled:this.isDisabled}),(0,p.jsx)(L.ff,{icon:I.Hk,label:"",title:"Options that are applied to all applicable representations.",style:{flex:"0 0 40px",padding:0},toggle:this.toggleOptions,isSelected:"options"===this.state.action,disabled:this.isDisabled}),(0,p.jsx)(L.K0,{svg:I.L3,className:"msp-flex-item",flex:"40px",onClick:this.undo,disabled:!this.state.canUndo||this.isDisabled,title:e})]}),"preset"===this.state.action&&this.presetControls,"add"===this.state.action&&(0,p.jsx)("div",{className:"msp-control-offset",children:(0,p.jsx)(Ba,{onApply:this.hideAction})}),"options"===this.state.action&&(0,p.jsx)("div",{className:"msp-control-offset",children:(0,p.jsx)(Ic,{isDisabled:this.isDisabled})})]})}}class Ba extends Z.jB{constructor(){super(...arguments),this.state=this.createState(),this.apply=()=>{const e=this.props.forSelection?this.currentStructures:this.selectedStructures;this.props.onApply(),this.plugin.managers.structure.component.add(this.state.values,e)},this.paramsChanged=e=>this.setState({values:e})}createState(){const e=Br.C.getAddParams(this.plugin);return{params:e,values:Q.t.getDefaultValues(e)}}get selectedStructures(){return this.plugin.managers.structure.component.currentStructures}get currentStructures(){return this.plugin.managers.structure.hierarchy.current.structures}render(){return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)($e.y1,{params:this.state.params,values:this.state.values,onChangeValues:this.paramsChanged}),(0,p.jsx)(L.$n,{icon:I.CR,title:"Use Selection and optional Representation to create a new Component.",className:"msp-btn-commit msp-btn-commit-on",onClick:this.apply,style:{marginTop:"1px"},children:"Create Component"})]})}}class Ic extends Z.jB{constructor(){super(...arguments),this.update=e=>this.plugin.managers.structure.component.setOptions(e)}componentDidMount(){this.subscribe(this.plugin.managers.structure.component.events.optionsUpdated,()=>this.forceUpdate())}render(){return(0,p.jsx)($e.y1,{params:Br.C.OptionsParams,values:this.plugin.managers.structure.component.state.options,onChangeValues:this.update,isDisabled:this.props.isDisabled})}}class Tc extends Z.jB{componentDidMount(){this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,()=>{this.forceUpdate()})}render(){const e=this.plugin.managers.structure.hierarchy.currentComponentGroups;return 0===e.length?null:(0,p.jsx)("div",{style:{marginTop:"6px"},children:e.map(i=>(0,p.jsx)(Ha,{group:i},i[0].cell.transform.ref))})}}class Ha extends Z.jB{constructor(){super(...arguments),this.state={action:void 0},this.toggleVisible=e=>{e.preventDefault(),e.currentTarget.blur(),this.plugin.managers.structure.component.toggleVisibility(this.props.group)},this.selectAction=e=>{e&&(0,e?.value)()},this.remove=()=>this.plugin.managers.structure.hierarchy.remove(this.props.group,!0),this.toggleAction=()=>this.setState({action:"action"===this.state.action?void 0:"action"}),this.toggleLabel=()=>this.setState({action:"label"===this.state.action?void 0:"label"}),this.highlight=e=>{e.preventDefault(),this.props.group[0].cell.parent&&ue.a.Interactivity.Object.Highlight(this.plugin,{state:this.props.group[0].cell.parent,ref:this.props.group.map(i=>i.cell.transform.ref)})},this.clearHighlight=e=>{e.preventDefault(),ue.a.Interactivity.ClearHighlights(this.plugin)},this.focus=()=>{let e=!0;for(const i of this.props.group)if(!i.cell.state.isHidden){e=!1;break}e&&this.plugin.managers.structure.hierarchy.toggleVisibility(this.props.group,"show"),this.plugin.managers.camera.focusSpheres(this.props.group,i=>{var s;if(!i.cell.state.isHidden)return null===(s=i.cell.obj)||void 0===s?void 0:s.data.boundary.sphere})},this.updateLabel=e=>{this.plugin.managers.structure.component.updateLabel(this.pivot,e)}}get pivot(){return this.props.group[0]}componentDidMount(){this.subscribe(this.plugin.state.events.cell.stateUpdated,e=>{tt.Uw.ObjectEvent.isCell(e,this.pivot.cell)&&this.forceUpdate()})}get colorByActions(){var e,i;const s=this.plugin.managers.structure.component,u=null===(e=this.pivot.representations[0].cell.transform.params)||void 0===e?void 0:e.colorTheme.name,c=(0,Ec.A8)(this.plugin,null===(i=this.pivot.cell.obj)||void 0===i?void 0:i.data);return Ee.W.createItemsFromSelectOptions(c,{value:h=>()=>s.updateRepresentationsTheme(this.props.group,{color:h[0]}),selected:h=>h[0]===u})}get actions(){const e=this.plugin.managers.structure.component,i=[[Ee.W.Header("Add Representation"),...Br.C.getRepresentationTypes(this.plugin,this.props.group[0]).map(s=>Ee.W.Item(s[1],()=>e.addRepresentation(this.props.group,s[0])))]];return this.pivot.representations.length>0&&i.push([Ee.W.Header("Set Coloring",{isIndependent:!0}),...this.colorByActions]),e.canBeModified(this.props.group[0])&&i.push([Ee.W.Header("Modify by Selection"),Ee.W.Item("Include",()=>e.modifyByCurrentSelection(this.props.group,"union"),{icon:I.QM}),Ee.W.Item("Subtract",()=>e.modifyByCurrentSelection(this.props.group,"subtract"),{icon:I.tk}),Ee.W.Item("Intersect",()=>e.modifyByCurrentSelection(this.props.group,"intersect"),{icon:I.sx})]),i.push(Ee.W.Item("Select This",()=>e.selectThis(this.props.group),{icon:I.B7})),e.canBeModified(this.props.group[0])&&i.push(Ee.W.Item("Edit Label",this.toggleLabel)),i}get reprLabel(){var e;const i=this.pivot;return 0===i.representations.length?"No repr.":1===i.representations.length?null===(e=i.representations[0].cell.obj)||void 0===e?void 0:e.label:`${i.representations.length} reprs`}render(){var e;const i=this.pivot,s=i.cell,l=null===(e=s.obj)||void 0===e?void 0:e.label;return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"msp-flex-row",children:[(0,p.jsxs)(L.$n,{noOverflow:!0,className:"msp-control-button-label",title:`${l}. Click to focus.`,onClick:this.focus,onMouseEnter:this.highlight,onMouseLeave:this.clearHighlight,style:{textAlign:"left"},children:[l,(0,p.jsx)("small",{className:"msp-25-lower-contrast-text",style:{float:"right"},children:this.reprLabel})]}),(0,p.jsx)(L.K0,{svg:s.state.isHidden?I.qF:I.zs,toggleState:!1,onClick:this.toggleVisible,title:(s.state.isHidden?"Show":"Hide")+" component",small:!0,className:"msp-form-control",flex:!0}),(0,p.jsx)(L.K0,{svg:I.mf,toggleState:!1,onClick:this.remove,title:"Remove",small:!0,className:"msp-form-control",flex:!0}),(0,p.jsx)(L.K0,{svg:I.cv,onClick:this.toggleAction,title:"Actions",toggleState:"action"===this.state.action,className:"msp-form-control",flex:!0})]}),"label"===this.state.action&&(0,p.jsx)("div",{className:"msp-control-offset",style:{marginBottom:"6px"},children:(0,p.jsx)(L.eJ,{label:"Label",control:(0,p.jsxs)("div",{style:{display:"flex",textAlignLast:"center"},children:[(0,p.jsx)(L.ks,{onChange:this.updateLabel,value:l,style:{flex:"1 1 auto",minWidth:0},className:"msp-form-control",blurOnEnter:!0,blurOnEscape:!0}),(0,p.jsx)(L.K0,{svg:I.Xq,onClick:this.toggleLabel,className:"msp-form-control msp-control-button-label",flex:!0})]})})}),"action"===this.state.action&&(0,p.jsxs)("div",{className:"msp-accent-offset",children:[(0,p.jsx)("div",{style:{marginBottom:"6px"},children:(0,p.jsx)(Ee.W,{items:this.actions,onSelect:this.selectAction,noOffset:!0})}),(0,p.jsx)("div",{style:{marginBottom:"6px"},children:i.representations.map(c=>(0,p.jsx)(Ur,{group:this.props.group,representation:c},c.cell.transform.ref))})]})]})}}class Ur extends Z.jB{constructor(){super(...arguments),this.remove=()=>this.plugin.managers.structure.component.removeRepresentations(this.props.group,this.props.representation),this.toggleVisible=e=>{e.preventDefault(),e.currentTarget.blur(),this.plugin.managers.structure.component.toggleVisibility(this.props.group,this.props.representation)},this.update=e=>this.plugin.managers.structure.component.updateRepresentations(this.props.group,this.props.representation,e)}componentDidMount(){this.subscribe(this.plugin.state.events.cell.stateUpdated,e=>{tt.Uw.ObjectEvent.isCell(e,this.props.representation.cell)&&this.forceUpdate()})}render(){var e;const i=this.props.representation.cell;return(0,p.jsxs)("div",{className:"msp-representation-entry",children:[i.parent&&(0,p.jsx)(L.Yj,{header:`${(null===(e=i.obj)||void 0===e?void 0:e.label)||""} Representation`,noOffset:!0,children:(0,p.jsx)(pi,{state:i.parent,transform:i.transform,customHeader:"none",customUpdate:this.update,noMargin:!0})}),(0,p.jsx)(L.K0,{svg:I.mf,onClick:this.remove,title:"Remove",small:!0,className:"msp-default-bg",toggleState:!1,style:{position:"absolute",top:0,right:"32px",lineHeight:"24px",height:"24px",textAlign:"right",width:"44px",paddingRight:"6px",background:"none"}}),(0,p.jsx)(L.K0,{svg:this.props.representation.cell.state.isHidden?I.qF:I.zs,toggleState:!1,onClick:this.toggleVisible,title:"Toggle Visibility",small:!0,className:"msp-default-bg",style:{position:"absolute",top:0,right:0,lineHeight:"24px",height:"24px",textAlign:"right",width:"32px",paddingRight:"6px",background:"none"}})]})}}var qo=F(3246),Ua=F(5995),Bt=F(237),Nn=F(3917),Zi=F(9096),Pc=F(4986),Va=F(7232),qa=F(9677);function Dc(r,e){if("atom-id"===e){const i=function Mc(r){return r.split(",").map(e=>e.trim().split(/\s+|[-]/g).filter(i=>!!i)).filter(e=>1===e.length||2===e.length).map(e=>1===e.length?[+e[0],+e[0]]:[+e[0],+e[1]])}(r);return function nn(r){const e=qa.th.create();for(const[s,l]of r)for(let u=s;u<=l;u++)qa.th.add(e,u,u);const i=De.J.struct.generator.atomGroups({"atom-test":De.J.core.set.has([De.J.set(...e.array),De.J.ammp("id")])});return(0,Va.wE)(i)}(i)}return function id(r,e){var i;const s=[],l="auth"===e?"auth_asym_id":"label_asym_id",u="auth"===e?"auth_seq_id":"label_seq_id";for(const h of r)if("range"===h.kind)s.push(De.J.struct.generator.atomGroups({"chain-test":De.J.core.rel.eq([De.J.ammp(l),h.asym_id]),"residue-test":De.J.core.rel.inRange([De.J.ammp(u),h.seq_id_beg,h.seq_id_end])}));else{const f=(null!==(i=h.ins_code)&&void 0!==i?i:"").trim();s.push(De.J.struct.generator.atomGroups({"chain-test":De.J.core.rel.eq([De.J.ammp(l),h.asym_id]),"residue-test":De.J.core.logic.and([De.J.core.rel.eq([De.J.ammp(u),h.seq_id]),De.J.core.rel.eq([De.J.ammp("pdbx_PDB_ins_code"),f])])}))}const c=De.J.struct.combinator.merge(s);return(0,Va.wE)(c)}(function Nc(r){return r.split(",").map(e=>e.trim().split(/\s+|[-]/g).filter(i=>!!i)).map(e=>function Qt(r,e,i){if(r&&0!==e.length&&!Number.isNaN(+e[0]))return Number.isNaN(i)?{kind:"single",asym_id:r,seq_id:+e[0],ins_code:e[1]}:{kind:"range",asym_id:r,seq_id_beg:+e[0],seq_id_end:i}}(e[0],function Lc(r){return r?r.split(":"):[]}(e[1]),+e[2])).filter(e=>!!e)}(r),e)}var Xi=F(7785),di=F(4123),Ms=F(1937);class _o extends he.PureComponent{getBindingComponents(){const e=function _a(r){return Object.keys(r).map(e=>[e,r[e]]).filter(e=>di.O.isBinding(e[1]))}(this.props.bindings);return(0,p.jsx)(p.Fragment,{children:e.map(i=>{const[s,l]=i;return di.O.isEmpty(l)?null:(0,p.jsxs)("div",{style:{marginBottom:"6px"},children:[(0,p.jsx)("b",{children:l.action}),(0,p.jsx)("br",{}),(0,p.jsx)("span",{dangerouslySetInnerHTML:{__html:di.O.format(l,s)}})]},s)})})}render(){return(0,p.jsx)(Mn,{children:this.getBindingComponents()})}}class Mn extends he.PureComponent{render(){return(0,p.jsx)("div",{className:"msp-help-text",children:(0,p.jsx)("div",{children:this.props.children})})}}class wn extends he.PureComponent{constructor(){super(...arguments),this.state={header:this.props.header,isExpanded:!!this.props.initiallyExpanded},this.toggleExpanded=()=>this.setState({isExpanded:!this.state.isExpanded})}render(){return(0,p.jsxs)("div",{className:"msp-control-group-wrapper",children:[(0,p.jsx)("div",{className:"msp-control-group-header",children:(0,p.jsxs)(L.$n,{onClick:this.toggleExpanded,children:[(0,p.jsx)(I.In,{svg:this.state.isExpanded?I.DM:I.Cp}),this.props.header]})}),this.state.isExpanded&&(0,p.jsx)("div",{className:"msp-control-offset",style:{display:this.state.isExpanded?"block":"none"},children:this.props.children})]})}}function Ds(r){return(0,p.jsx)("div",{className:"msp-simple-help-section",children:r.header})}class Wo extends Z.dL{constructor(){super(...arguments),this.getInteractionBindings=(0,Hr._)(e=>{let i;return e.forEach(s=>{var l;const u=null===(l=s.params)||void 0===l?void 0:l.values;u?.bindings&&Object.keys(u.bindings).length>0&&(i||(i={}),Object.assign(i,u.bindings))}),i})}componentDidMount(){this.subscribe(this.plugin.events.canvas3d.settingsUpdated,()=>this.forceUpdate())}render(){const e=this.getInteractionBindings(this.plugin.state.behaviors.cells);return(0,p.jsxs)(p.Fragment,{children:[!this.props.selectOnly&&this.plugin.canvas3d&&(0,p.jsx)(wn,{header:"Moving in 3D",children:(0,p.jsx)(_o,{bindings:this.plugin.canvas3d.props.trackball.bindings})},"trackball"),!!e&&(0,p.jsx)(wn,{header:"Mouse & Key Controls",children:(0,p.jsx)(_o,{bindings:e})},"interactions")]})}}class Wa extends Z.dL{componentDidMount(){this.subscribe(this.plugin.events.canvas3d.settingsUpdated,()=>this.forceUpdate())}formatTriggers(e){return e.triggers.map(i=>di.O.Trigger.format(i)).join(" or ")}getTriggerFor(e,i){const l=this.plugin.state.behaviors.select(tt.QX.Generators.ofTransformer(e)),u=1===l.length?l[0].params:void 0,c=u?u.values.bindings:{};return this.formatTriggers(i in c?c[i]:di.O.Empty)}render(){const e=this.getTriggerFor(Ms.SelectLoci,"clickSelectToggle"),i=this.getTriggerFor(Ms.FocusLoci,"clickFocus");return(0,p.jsxs)("div",{children:[(0,p.jsx)(Ds,{header:"Interface Controls"}),(0,p.jsxs)(wn,{header:"Inline Help",children:[(0,p.jsx)(Mn,{children:"Many user interface elements show a little questionmark icon when hovered over. Clicking the icon toggles the display of an inline help text."}),(0,p.jsx)(Mn,{children:"Tooltips may provide additional information on a user interface element and are shown when hovering over it with the mouse."})]}),(0,p.jsx)(wn,{header:"Selections",children:(0,p.jsxs)(Mn,{children:["The viewer allows changing colors and representations for selections of atoms, residues or chains. Selections can be created by",(0,p.jsxs)("ul",{style:{paddingLeft:"20px"},children:[(0,p.jsxs)("li",{children:["picking elements on the 3D canvas or the sequence view using the mouse, e.g. toggle selection using ",e," (for more see help section on ",(0,p.jsx)("i",{children:"Mouse Controls"}),")"]}),(0,p.jsxs)("li",{children:["using the ",(0,p.jsx)("i",{children:"Add"}),", ",(0,p.jsx)("i",{children:"Remove"})," and ",(0,p.jsx)("i",{children:"Only"})," dropdown buttons in the ",(0,p.jsx)("i",{children:"Manage Selection"})," panel which allow modifing the current selection by predefined sets"]})]})]})}),(0,p.jsx)(wn,{header:"Coloring",children:(0,p.jsxs)(Mn,{children:["There are two ways to color structures. Every representation (e.g. cartoon or spacefill) has a color theme which can be changed using the dropdown for each representation in the ",(0,p.jsx)("i",{children:"Structure Settings"})," panel. Additionally any selection atoms, residues or chains can by given a custom color. For that, first select the parts of the structure to be colored (see help section on ",(0,p.jsx)("i",{children:"Selections"}),") and, second, choose a color from the color dropdown botton in the ",(0,p.jsx)("i",{children:"Selection"})," row of the ",(0,p.jsx)("i",{children:"Change Representation"})," panel. The theme color can be seen as a base color that is overpainted by the custom color. Custom colors can be removed for a selection with the 'Clear' option in the color dropdown."]})}),(0,p.jsx)(wn,{header:"Representations",children:(0,p.jsxs)(Mn,{children:["Structures can be shown with many different representations (e.g. cartoon or spacefill). The ",(0,p.jsx)("i",{children:"Change Representation"})," panel offers a collection of predefined styles which can be applied using the ",(0,p.jsx)("i",{children:"Preset"})," dropdown button. Additionally any selection atoms, residues or chains can by shown with a custom representation. For that, first select the parts of the structure to be mofified (see help section on ",(0,p.jsx)("i",{children:"Selections"}),") and, second, choose a representation to hide or show from the ",(0,p.jsx)("i",{children:"Show"})," and ",(0,p.jsx)("i",{children:"Hide"})," dropdown bottons in the ",(0,p.jsx)("i",{children:"Selection"})," row of the ",(0,p.jsx)("i",{children:"Change Representation"})," panel. The ",(0,p.jsx)("i",{children:"Everything"})," row applies the action to the whole structure instead of the current selection."]})}),(0,p.jsx)(wn,{header:"Surroundings",children:(0,p.jsxs)(Mn,{children:["To show the surroundings of a residue or ligand, click it in the 3D scene or in the sequence widget using ",i,"."]})}),(0,p.jsx)(Ds,{header:"How-to Guides"}),(0,p.jsx)(wn,{header:"Create an Image",children:(0,p.jsxs)(Mn,{children:[(0,p.jsxs)("p",{children:["Use the ",(0,p.jsx)(I.In,{svg:I.OY})," icon in the viewport to bring up the screenshot controls."]}),(0,p.jsxs)("p",{children:["To adjust the size of the image, use the ",(0,p.jsx)("i",{children:"Resolution"})," dropdown."]})]})}),(0,p.jsx)(Ds,{header:"Mouse Controls"}),(0,p.jsx)(Wo,{})]})}}class Vr extends Z.jB{constructor(){super(...arguments),this._toggleSelMode=()=>{this.plugin.selectionMode=!this.plugin.selectionMode}}componentDidMount(){this.subscribe(this.plugin.events.canvas3d.settingsUpdated,()=>this.forceUpdate()),this.subscribe(this.plugin.layout.events.updated,()=>this.forceUpdate()),this.subscribe(this.plugin.behaviors.interaction.selectionMode,()=>this.forceUpdate())}render(){return(0,p.jsx)(L.K0,{svg:I.yG,onClick:this._toggleSelMode,title:"Toggle Selection Mode",style:this.props.inline?{background:"transparent",width:"auto",height:"auto",lineHeight:"unset"}:{background:"transparent"},toggleState:this.plugin.selectionMode})}}const rd={granularity:Pc.d.Params.granularity},Ji=new Map([["add","Add/Union Selection"],["remove","Remove/Subtract Selection"],["intersect","Intersect Selection"],["set","Set Selection"]]);class Ka extends Z.dL{constructor(){super(...arguments),this.state={action:void 0,helper:void 0,isEmpty:!0,isBusy:!1,canUndo:!1},this.set=(e,i)=>{this.plugin.managers.structure.selection.fromSelectionQuery(e,i,!1)},this.selectQuery=(e,i)=>{if(!e||!this.state.action)return void this.setState({action:void 0});const s=this.state.action;i?.shiftKey?this.set(s,e.value):this.setState({action:void 0},()=>{this.set(s,e.value)})},this.selectHelper=(e,i)=>{console.log(e),this.setState(e&&this.state.action?{helper:e.value.kind}:{action:void 0,helper:void 0})},this.queriesItems=[],this.queriesVersion=-1,this.helpersItems=void 0,this.toggleAdd=this.showAction("add"),this.toggleRemove=this.showAction("remove"),this.toggleIntersect=this.showAction("intersect"),this.toggleSet=this.showAction("set"),this.toggleTheme=this.showAction("theme"),this.toggleAddComponent=this.showAction("add-component"),this.toggleHelp=this.showAction("help"),this.setGranuality=({value:e})=>{this.plugin.managers.interactivity.setProps({granularity:e})},this.turnOff=()=>this.plugin.selectionMode=!1,this.undo=()=>{const e=this.plugin.state.data.undo();e&&this.plugin.runTask(e)},this.subtract=()=>{const e=this.plugin.managers.structure.hierarchy.getStructuresWithSelection(),i=[];for(const s of e)i.push(...s.components);0!==i.length&&this.plugin.managers.structure.component.modifyByCurrentSelection(i,"subtract")}}componentDidMount(){this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,e=>{const i=0===e.hierarchy.structures.length;this.state.isEmpty!==i&&this.setState({isEmpty:i}),this.queriesVersion=-1,this.forceUpdate()}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e,action:void 0})}),this.subscribe(this.plugin.managers.interactivity.events.propsUpdated,()=>{this.forceUpdate()}),this.subscribe(this.plugin.state.data.events.historyUpdated,({state:e})=>{this.setState({canUndo:e.canUndo})})}get isDisabled(){return this.state.isBusy||this.state.isEmpty}get structures(){var e;const i=[];for(const s of this.plugin.managers.structure.hierarchy.selection.structures){const l=null===(e=s.cell.obj)||void 0===e?void 0:e.data;l&&i.push(l)}return i}get queries(){const{registry:e}=this.plugin.query.structure;if(e.version!==this.queriesVersion){const i=this.structures,s=[...e.list,...(0,Zi.Ag)(i),...(0,Zi.Mt)(i),...(0,Zi.HU)(i)].sort((l,u)=>u.priority-l.priority);this.queriesItems=Ee.W.createItems(s,{filter:l=>l!==Zi.Ou.current&&!l.isHidden,label:l=>l.label,category:l=>l.category,description:l=>l.description}),this.queriesVersion=e.version}return this.queriesItems}get helpers(){return this.helpersItems||(this.helpersItems=Ee.W.createItems([{kind:"residue-list",category:"Helpers",label:"Atom/Residue Identifier List",description:"Create a selection from a list of atom/residue ranges."}],{label:i=>i.label,category:i=>i.category,description:i=>i.description})),this.helpersItems}showAction(e){return()=>this.setState({action:this.state.action===e?void 0:e,helper:void 0})}render(){const e=this.plugin.managers.interactivity.props.granularity,i=this.state.canUndo?`Undo ${this.plugin.state.data.latestUndoLabel}`:"Some mistakes of the past can be undone.";let s;if(this.state.action&&!this.state.helper)s=(0,p.jsxs)(p.Fragment,{children:[this.state.action&&"theme"!==this.state.action&&"add-component"!==this.state.action&&"help"!==this.state.action&&(0,p.jsxs)("div",{className:"msp-selection-viewport-controls-actions",children:[(0,p.jsx)(Ee.W,{header:Ji.get(this.state.action),title:"Click to close.",items:this.queries,onSelect:this.selectQuery,noOffset:!0}),(0,p.jsx)(Ee.W,{items:this.helpers,onSelect:this.selectHelper,noOffset:!0})]}),"theme"===this.state.action&&(0,p.jsx)("div",{className:"msp-selection-viewport-controls-actions",children:(0,p.jsx)(L.tW,{header:"Theme",title:"Click to close.",initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:this.toggleTheme,topRightIcon:I.X6,children:(0,p.jsx)(Ko,{onApply:this.toggleTheme})})}),"add-component"===this.state.action&&(0,p.jsx)("div",{className:"msp-selection-viewport-controls-actions",children:(0,p.jsx)(L.tW,{header:"Add Component",title:"Click to close.",initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:this.toggleAddComponent,topRightIcon:I.X6,children:(0,p.jsx)(Ba,{onApply:this.toggleAddComponent,forSelection:!0})})}),"help"===this.state.action&&(0,p.jsx)("div",{className:"msp-selection-viewport-controls-actions",children:(0,p.jsxs)(L.tW,{header:"Help",title:"Click to close.",initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:this.toggleHelp,topRightIcon:I.X6,maxHeight:"300px",children:[(0,p.jsx)(wn,{header:"Selection Operations",children:(0,p.jsxs)(Mn,{children:["Use ",(0,p.jsx)(I.In,{svg:I.QM,inline:!0})," ",(0,p.jsx)(I.In,{svg:I.tk,inline:!0})," ",(0,p.jsx)(I.In,{svg:I.sx,inline:!0})," ",(0,p.jsx)(I.In,{svg:I.B7,inline:!0})," to modify the selection."]})}),(0,p.jsx)(wn,{header:"Representation Operations",children:(0,p.jsxs)(Mn,{children:["Use ",(0,p.jsx)(I.In,{svg:I.fe,inline:!0})," ",(0,p.jsx)(I.In,{svg:I.c3,inline:!0})," ",(0,p.jsx)(I.In,{svg:I.$j,inline:!0})," ",(0,p.jsx)(I.In,{svg:I.L3,inline:!0})," to color, create components, remove from components, or undo actions."]})}),(0,p.jsx)(Wo,{selectOnly:!0})]})})]});else if(Ji.has(this.state.action)&&"residue-list"===this.state.helper){const l=()=>this.setState({action:void 0,helper:void 0});s=(0,p.jsx)("div",{className:"msp-selection-viewport-controls-actions",children:(0,p.jsx)(L.tW,{header:"Atom/Residue Identifier List",title:"Click to close.",initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:l,topRightIcon:I.X6,children:(0,p.jsx)(Oc,{modifier:this.state.action,plugin:this.plugin,close:l})})})}return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"msp-flex-row",style:{background:"none"},children:[(0,p.jsx)($e.UT,{title:"Picking Level for selecting and highlighting",param:rd.granularity,name:"granularity",value:e,onChange:this.setGranuality,isDisabled:this.isDisabled}),(0,p.jsx)(L.ff,{icon:I.QM,title:`${Ji.get("add")}. Hold shift key to keep menu open.`,toggle:this.toggleAdd,isSelected:"add"===this.state.action,disabled:this.isDisabled}),(0,p.jsx)(L.ff,{icon:I.tk,title:`${Ji.get("remove")}. Hold shift key to keep menu open.`,toggle:this.toggleRemove,isSelected:"remove"===this.state.action,disabled:this.isDisabled}),(0,p.jsx)(L.ff,{icon:I.sx,title:`${Ji.get("intersect")}. Hold shift key to keep menu open.`,toggle:this.toggleIntersect,isSelected:"intersect"===this.state.action,disabled:this.isDisabled}),(0,p.jsx)(L.ff,{icon:I.B7,title:`${Ji.get("set")}. Hold shift key to keep menu open.`,toggle:this.toggleSet,isSelected:"set"===this.state.action,disabled:this.isDisabled}),(0,p.jsx)(L.ff,{icon:I.fe,title:"Apply Theme to Selection",toggle:this.toggleTheme,isSelected:"theme"===this.state.action,disabled:this.isDisabled,style:{marginLeft:"10px"}}),(0,p.jsx)(L.ff,{icon:I.c3,title:"Create Component of Selection with Representation",toggle:this.toggleAddComponent,isSelected:"add-component"===this.state.action,disabled:this.isDisabled}),(0,p.jsx)(L.K0,{svg:I.$j,title:"Remove/subtract Selection from all Components",onClick:this.subtract,disabled:this.isDisabled}),(0,p.jsx)(L.K0,{svg:I.L3,onClick:this.undo,disabled:!this.state.canUndo||this.isDisabled,title:i}),(0,p.jsx)(L.ff,{icon:I.ml,title:"Show/hide help",toggle:this.toggleHelp,style:{marginLeft:"10px"},isSelected:"help"===this.state.action}),this.plugin.config.get(Bt.AB.Viewport.ShowSelectionMode)&&(0,p.jsx)(L.K0,{svg:I.XD,title:"Turn selection mode off",onClick:this.turnOff})]}),s]})}}class zc extends Z.dL{constructor(){super(...arguments),this.state={isEmpty:!0,isBusy:!1},this.clear=()=>this.plugin.managers.interactivity.lociSelects.deselectAll(),this.focus=()=>{if(0===this.plugin.managers.structure.selection.stats.elementCount)return;const{sphere:e}=this.plugin.managers.structure.selection.getBoundary();this.plugin.managers.camera.focusSphere(e)},this.highlight=e=>{this.plugin.managers.interactivity.lociHighlights.clearHighlights(),this.plugin.managers.structure.selection.entries.forEach(i=>{this.plugin.managers.interactivity.lociHighlights.highlight({loci:i.selection},!1)})},this.clearHighlight=()=>{this.plugin.managers.interactivity.lociHighlights.clearHighlights()}}componentDidMount(){this.subscribe(this.plugin.managers.structure.selection.events.changed,()=>{this.forceUpdate()}),this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,e=>{const i=0===e.structures.length;this.state.isEmpty!==i&&this.setState({isEmpty:i})}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e})})}get isDisabled(){return this.state.isBusy||this.state.isEmpty}get stats(){const e=this.plugin.managers.structure.selection.stats;return 0===e.structureCount||0===e.elementCount?"Nothing Selected":`${(0,Xi.Kq)(e.label)} Selected`}render(){const e=this.plugin.managers.structure.selection.stats,i=0===e.structureCount||0===e.elementCount;return i&&this.props.hideOnEmpty?null:(0,p.jsx)(p.Fragment,{children:(0,p.jsxs)("div",{className:"msp-flex-row",children:[(0,p.jsx)(L.$n,{noOverflow:!0,onClick:this.focus,title:"Click to Focus Selection",disabled:i,onMouseEnter:this.highlight,onMouseLeave:this.clearHighlight,style:{textAlignLast:i?void 0:"left"},children:this.stats}),!i&&(0,p.jsx)(L.K0,{svg:I.XD,onClick:this.clear,title:"Clear",className:"msp-form-control",flex:!0})]})})}}class Ko extends Z.jB{constructor(){super(...arguments),this._params=(0,Hr._)(e=>Br.C.getThemeParams(this.plugin,e)),this.state={values:Q.t.getDefaultValues(this.params)},this.apply=()=>{var e,i;this.plugin.managers.structure.component.applyTheme(this.state.values,this.plugin.managers.structure.hierarchy.current.structures),null===(i=(e=this.props).onApply)||void 0===i||i.call(e)},this.paramsChanged=e=>this.setState({values:e})}get params(){return this._params(this.plugin.managers.structure.component.pivotStructure)}render(){return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)($e.y1,{params:this.params,values:this.state.values,onChangeValues:this.paramsChanged}),(0,p.jsx)(L.$n,{icon:I.fe,className:"msp-btn-commit msp-btn-commit-on",onClick:this.apply,style:{marginTop:"1px"},children:"Apply Theme"})]})}}const Qn={idType:Q.t.Select("auth",Q.t.arrayToOptions(["auth","label","atom-id"])),identifiers:Q.t.Text("",{description:"A comma separated list of atom identifiers (e.g. 10, 15-25) or residue ranges in given chain (e.g. A 10-15, B 25, C 30:i)"})},sd=Q.t.getDefaultValues(Qn);function Oc({modifier:r,plugin:e,close:i}){const[s,l]=he.useState(sd),u=()=>{if(0!==s.identifiers.trim().length)try{i();const c=Dc(s.identifiers,s.idType);e.managers.structure.selection.fromCompiledQuery(r,c,!1)}catch(c){console.error(c),e.log.error("Failed to create selection")}};return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)($e.y1,{params:Qn,values:s,onChangeValues:l,onEnter:u}),(0,p.jsxs)(L.$n,{className:"msp-btn-commit msp-btn-commit-on",disabled:0===s.identifiers.trim().length,onClick:u,style:{marginTop:"1px"},children:[(0,Xi.ZH)(r)," Selection"]})]})}class $a extends Z.VK{defaultState(){return{isCollapsed:!1,header:"Measurements",brand:{accent:"gray",svg:I.yF}}}renderControls(){return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(Fc,{}),(0,p.jsx)(Rc,{})]})}}class Rc extends Z.jB{componentDidMount(){this.subscribe(this.plugin.managers.structure.measurement.behaviors.state,()=>{this.forceUpdate()})}renderGroup(e,i){const s=[];for(const l of e)l.obj&&s.push((0,p.jsx)(Ht,{cell:l},l.obj.id));return s.length?(0,p.jsx)(L.Yj,{header:i,initiallyExpanded:!0,children:s}):null}render(){const e=this.plugin.managers.structure.measurement.state;return(0,p.jsxs)("div",{style:{marginTop:"6px"},children:[this.renderGroup(e.labels,"Labels"),this.renderGroup(e.distances,"Distances"),this.renderGroup(e.angles,"Angles"),this.renderGroup(e.dihedrals,"Dihedrals"),this.renderGroup(e.orientations,"Orientations"),this.renderGroup(e.planes,"Planes")]})}}class Fc extends Z.jB{constructor(){super(...arguments),this.state={isBusy:!1,action:void 0},this.measureDistance=()=>{const e=this.plugin.managers.structure.selection.additionsHistory;this.plugin.managers.structure.measurement.addDistance(e[0].loci,e[1].loci)},this.measureAngle=()=>{const e=this.plugin.managers.structure.selection.additionsHistory;this.plugin.managers.structure.measurement.addAngle(e[0].loci,e[1].loci,e[2].loci)},this.measureDihedral=()=>{const e=this.plugin.managers.structure.selection.additionsHistory;this.plugin.managers.structure.measurement.addDihedral(e[0].loci,e[1].loci,e[2].loci,e[3].loci)},this.addLabel=()=>{this.plugin.managers.structure.measurement.addLabel(this.plugin.managers.structure.selection.additionsHistory[0].loci)},this.addOrientation=()=>{const e=[];this.plugin.managers.structure.selection.entries.forEach(i=>{e.push(i.selection)}),this.plugin.managers.structure.measurement.addOrientation(e)},this.addPlane=()=>{const e=[];this.plugin.managers.structure.selection.entries.forEach(i=>{e.push(i.selection)}),this.plugin.managers.structure.measurement.addPlane(e)},this.selectAction=e=>{this.toggleAdd(),e&&(0,e?.value)()},this.toggleAdd=()=>this.setState({action:"add"===this.state.action?void 0:"add"}),this.toggleOptions=()=>this.setState({action:"options"===this.state.action?void 0:"options"})}componentDidMount(){this.subscribe(this.selection.events.additionsHistoryUpdated,()=>{this.forceUpdate(),this.updateOrderLabels()}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e})})}componentWillUnmount(){this.clearOrderLabels(),super.componentWillUnmount()}componentDidUpdate(e,i){this.state.action!==i.action&&this.updateOrderLabels()}clearOrderLabels(){this.plugin.managers.structure.measurement.addOrderLabels([])}updateOrderLabels(){if("add"!==this.state.action)return void this.clearOrderLabels();const e=[],i=this.selection.additionsHistory;for(let s=0;sthis.highlight(e.loci),onMouseLeave:()=>this.plugin.managers.interactivity.lociHighlights.clearHighlights(),children:[(0,p.jsxs)(L.$n,{noOverflow:!0,title:"Click to focus. Hover to highlight.",onClick:()=>this.focusLoci(e.loci),style:{width:"auto",textAlign:"left"},children:[i,". ",(0,p.jsx)("span",{dangerouslySetInnerHTML:{__html:e.label}})]}),s.length>1&&(0,p.jsx)(L.K0,{svg:I.p8,small:!0,className:"msp-form-control",onClick:()=>this.moveHistory(e,"up"),flex:"20px",title:"Move up"}),s.length>1&&(0,p.jsx)(L.K0,{svg:I.qp,small:!0,className:"msp-form-control",onClick:()=>this.moveHistory(e,"down"),flex:"20px",title:"Move down"}),(0,p.jsx)(L.K0,{svg:I.mf,small:!0,className:"msp-form-control",onClick:()=>this.plugin.managers.structure.selection.modifyHistory(e,"remove"),flex:!0,title:"Remove"})]},e.id)}add(){const e=this.plugin.managers.structure.selection.additionsHistory,i=[];for(let u=0,c=Math.min(e.length,4);u0&&(0,p.jsx)("div",{className:"msp-control-offset",children:i}),0===i.length&&(0,p.jsx)("div",{className:"msp-control-offset msp-help-text",children:(0,p.jsxs)("div",{className:"msp-help-description",children:[(0,p.jsx)(I.In,{svg:I.ml,inline:!0}),"Add one or more selections",l]})})]})}render(){return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"msp-flex-row",children:[(0,p.jsx)(L.ff,{icon:I.CR,label:"Add",toggle:this.toggleAdd,isSelected:"add"===this.state.action,disabled:this.state.isBusy,className:"msp-btn-apply-simple"}),(0,p.jsx)(L.ff,{icon:I.Hk,label:"",title:"Options",toggle:this.toggleOptions,isSelected:"options"===this.state.action,disabled:this.state.isBusy,style:{flex:"0 0 40px",padding:0}})]}),"add"===this.state.action&&this.add(),"options"===this.state.action&&(0,p.jsx)(zs,{})]})}}class zs extends Z.jB{constructor(){super(...arguments),this.state={isDisabled:!1},this.changed=e=>{this.plugin.managers.structure.measurement.setOptions(e)}}componentDidMount(){this.subscribe(this.plugin.managers.structure.measurement.behaviors.state,()=>{this.forceUpdate()}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isDisabled:e})})}render(){return(0,p.jsx)("div",{className:"msp-control-offset",children:(0,p.jsx)($e.y1,{params:Ua.Gu,values:this.plugin.managers.structure.measurement.state.options,onChangeValues:this.changed,isDisabled:this.state.isDisabled})})}}class Ht extends Z.jB{constructor(){super(...arguments),this.state={showUpdate:!1},this.delete=()=>{ue.a.State.RemoveObject(this.plugin,{state:this.props.cell.parent,ref:this.props.cell.transform.parent,removeParentGhosts:!0})},this.toggleVisibility=e=>{e.preventDefault(),ue.a.State.ToggleVisibility(this.plugin,{state:this.props.cell.parent,ref:this.props.cell.transform.parent}),e.currentTarget.blur()},this.highlight=()=>{var e;if(!this.selections)return;this.plugin.managers.interactivity.lociHighlights.clearHighlights();for(const l of this.lociArray)this.plugin.managers.interactivity.lociHighlights.highlight({loci:l},!1);const s=null===(e=this.props.cell.obj)||void 0===e?void 0:e.data.repr.getAllLoci();if(s)for(const l of s)this.plugin.managers.interactivity.lociHighlights.highlight({loci:l},!1)},this.clearHighlight=()=>{this.plugin.managers.interactivity.lociHighlights.clearHighlights()},this.toggleUpdate=()=>this.setState({showUpdate:!this.state.showUpdate}),this.focus=()=>{if(!this.selections)return;const i=qo.QN.getBundleBoundingSphere({loci:this.lociArray});i&&this.plugin.managers.camera.focusSphere(i)},this.selectAction=e=>{e&&(this.setState({showUpdate:!1}),(0,e?.value)())}}componentDidMount(){this.subscribe(this.plugin.state.events.cell.stateUpdated,e=>{this.forceUpdate()})}get selections(){var e;return null===(e=this.props.cell.obj)||void 0===e?void 0:e.data.sourceData}get lociArray(){const e=this.selections;return e?e.infos?[e.infos[0].loci]:e.pairs?e.pairs[0].loci:e.triples?e.triples[0].loci:e.quads?e.quads[0].loci:e.locis?e.locis:[]:[]}get label(){const e=this.selections;return e?e.infos?(0,Nn.YQ)(e.infos[0].loci,{condensed:!0}):e.pairs?(0,Nn.W8)(e.pairs[0],{condensed:!0,unitLabel:this.plugin.managers.structure.measurement.state.options.distanceUnitLabel}):e.triples?(0,Nn.k0)(e.triples[0],{condensed:!0}):e.quads?(0,Nn.kd)(e.quads[0],{condensed:!0}):e.locis?(0,Nn.k7)(e.locis,{countsOnly:!0}):"":""}get actions(){return[Ee.W.Item("Select This",()=>this.plugin.managers.structure.selection.fromSelections(this.props.cell.sourceRef),{icon:I.B7})]}render(){const{cell:e}=this.props,{obj:i}=e;return i?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"msp-flex-row",onMouseEnter:this.highlight,onMouseLeave:this.clearHighlight,children:[(0,p.jsx)("button",{className:"msp-form-control msp-control-button-label msp-no-overflow",title:"Click to focus. Hover to highlight.",onClick:this.focus,style:{width:"auto",textAlign:"left"},children:(0,p.jsx)("span",{dangerouslySetInnerHTML:{__html:this.label}})}),(0,p.jsx)(L.K0,{svg:e.state.isHidden?I.qF:I.zs,toggleState:!1,small:!0,className:"msp-form-control",onClick:this.toggleVisibility,flex:!0,title:e.state.isHidden?"Show":"Hide"}),(0,p.jsx)(L.K0,{svg:I.mf,small:!0,className:"msp-form-control",onClick:this.delete,flex:!0,title:"Delete",toggleState:!1}),(0,p.jsx)(L.K0,{svg:I.cv,className:"msp-form-control",onClick:this.toggleUpdate,flex:!0,title:"Actions",toggleState:this.state.showUpdate})]},i.id),this.state.showUpdate&&e.parent&&(0,p.jsx)(p.Fragment,{children:(0,p.jsxs)("div",{className:"msp-accent-offset",children:[(0,p.jsx)(Ee.W,{items:this.actions,onSelect:this.selectAction,noOffset:!0}),(0,p.jsx)(L.Yj,{header:"Options",noOffset:!0,children:(0,p.jsx)(pi,{state:e.parent,transform:e.transform,customHeader:"none",autoHideApply:!0})})]})})]}):null}}var Ce=F(3543);function Qa(r,e,i,s){const l=Ce.SortedArray.indexOf(e.unit.elements,e.element),u=z.iZ.Loci(e.structure,[{unit:e.unit,indices:Ce.CD.ofSingleton(l)}]),c="residue"===s?z.iZ.Loci.extendToWholeResidues(u):z.iZ.Loci.extendToWholeChains(u),h=z.StructureProperties.entity.pdbx_description(e).join(", ");for(const f of i.units){const y=z.iZ.Loci(c.structure,[{unit:f,indices:c.elements[0].indices}]);let g=(0,Nn.YQ)(y,{reverse:!0,hidePrefix:!0,htmlStyling:!1,granularity:s});g||(g=(0,Nn.YQ)(y,{hidePrefix:!1,htmlStyling:!1})),i.units.length>1&&(g+=` | ${y.elements[0].unit.conformation.operator.name}`);const x={label:g,category:h,loci:y};r.has(h)?r.get(h).push(x):r.set(h,[x])}}function $o(r){const e=new Map,i=z.iZ.Location.create(r);for(const l of r.unitSymmetryGroups){if(!z.Nf.isAtomic(l.units[0]))continue;i.unit=l.units[0],i.element=l.elements[0];const u=z.Nf.Traits.is(i.unit.traits,z.Nf.Trait.MultiChain),c=z.StructureProperties.entity.type(i),h="non-polymer"===c,f="branched"===c;if(z.StructureProperties.entity.prd_id(i))Qa(e,i,l,"chain");else if(h&&!u)Qa(e,i,l,"residue");else if(f||h&&u){const g=i.unit,{index:x}=g.model.atomicHierarchy.residueAtomSegments;let w=-1;for(let b=0,C=g.elements.length;b{1===l.length?s.push({label:`${u}: ${l[0].label}`,loci:l[0].loci}):l.length<2e3&&s.push(...l)}),s}class Ut extends Z.dL{constructor(){super(...arguments),this.state={isBusy:!1,showAction:!1},this.getSelectionItems=(0,Hr._)(e=>{var i;const s=[];for(const l of e){const u=null===(i=l.cell.obj)||void 0===i?void 0:i.data;if(u){const c=$o(u);c.length>0&&s.push([Ee.W.Header(u.label,{description:u.label}),...Ee.W.createItems(c,{label:h=>h.label,category:h=>h.category,description:h=>h.label})])}}return s}),this.selectAction=(e,i)=>{if(!e||!this.state.showAction)return void this.setState({showAction:!1});const s=e.value;i?.shiftKey?this.plugin.managers.structure.focus.addFromLoci(s.loci):this.plugin.managers.structure.focus.set(s),this.focusCamera()},this.toggleAction=()=>this.setState({showAction:!this.state.showAction}),this.focusCamera=()=>{const{current:e}=this.plugin.managers.structure.focus;e&&this.plugin.managers.camera.focusLoci(e.loci)},this.clear=()=>{this.plugin.managers.structure.focus.clear(),this.plugin.managers.camera.reset()},this.highlightCurrent=()=>{const{current:e}=this.plugin.managers.structure.focus;e&&this.plugin.managers.interactivity.lociHighlights.highlightOnly({loci:e.loci},!1)},this.clearHighlights=()=>{this.plugin.managers.interactivity.lociHighlights.clearHighlights()}}componentDidMount(){this.subscribe(this.plugin.managers.structure.focus.behaviors.current,e=>{this.getSelectionItems([]),this.forceUpdate()}),this.subscribe(this.plugin.managers.structure.focus.events.historyUpdated,e=>{this.forceUpdate()}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e,showAction:!1})})}get isDisabled(){return this.state.isBusy||0===this.plugin.managers.structure.hierarchy.selection.structures.length}get actionItems(){const e=[],{history:i}=this.plugin.managers.structure.focus;i.length>0&&e.push([Ee.W.Header("History",{description:"Previously focused on items."}),...Ee.W.createItems(i,{label:u=>u.label,description:u=>u.category&&u.label!==u.category?`${u.category} | ${u.label}`:u.label})]);const s=this.getSelectionItems(this.plugin.managers.structure.hierarchy.selection.structures);1===s.length&&(s[0][0].initiallyExpanded=!0);const l=[];return s.length>0&&l.push(...s),e.length>0&&l.push(...e),l}getToggleBindingLabel(){var e;const i=this.plugin.state.behaviors.transforms.get(Ms.FocusLoci.id);if(!i)return"";const s=null===(e=i.params)||void 0===e?void 0:e.bindings.clickFocus;return!s||di.O.isEmpty(s)?"":di.O.formatTriggers(s)}render(){const{current:e}=this.plugin.managers.structure.focus,i=e?.label||"Nothing Focused";let s="Click to Center Camera";if(!e){s="Select focus using the menu";const l=this.getToggleBindingLabel();l&&(s+=`\nor use '${l}' on element`)}return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"msp-flex-row",children:[(0,p.jsx)(L.$n,{noOverflow:!0,onClick:this.focusCamera,title:s,onMouseEnter:this.highlightCurrent,onMouseLeave:this.clearHighlights,disabled:this.isDisabled||!e,style:{textAlignLast:e?"left":void 0},children:i}),e&&(0,p.jsx)(L.K0,{svg:I.XD,onClick:this.clear,title:"Clear",className:"msp-form-control",flex:!0,disabled:this.isDisabled}),(0,p.jsx)(L.ff,{icon:I.vC,title:"Select a focus target to center on an show its surroundings. Hold shift to focus on multiple targets.",toggle:this.toggleAction,isSelected:this.state.showAction,disabled:this.isDisabled,style:{flex:"0 0 40px",padding:0}})]}),this.state.showAction&&(0,p.jsx)(Ee.W,{items:this.actionItems,onSelect:this.selectAction})]})}}class od extends Z.VK{constructor(){super(...arguments),this.item=e=>{var i,s,l,u,c,h,f,y,g;const x=this.plugin.managers.structure.hierarchy.seletionSet;let w;switch(e.kind){case"model":{const C=null===(i=e.cell.obj)||void 0===i?void 0:i.data;C&&z.Kx.TrajectoryInfo.get(C).size>1&&(w=`${null===(s=e.cell.obj)||void 0===s?void 0:s.data.entryId} | Model ${z.Kx.TrajectoryInfo.get(C).index+1} of ${z.Kx.TrajectoryInfo.get(C).size}`),w=`${null===(l=e.cell.obj)||void 0===l?void 0:l.data.entryId} | ${null===(u=e.cell.obj)||void 0===u?void 0:u.label}`;break}case"structure":{const C=null===(c=e.cell.obj)||void 0===c?void 0:c.data.models[0];if(C&&z.Kx.TrajectoryInfo.get(C).size>1){w=`${C.entryId} | ${null===(h=e.cell.obj)||void 0===h?void 0:h.label} (Model ${z.Kx.TrajectoryInfo.get(C).index+1} of ${z.Kx.TrajectoryInfo.get(C).size})`;break}if(C){w=`${C.entryId} | ${null===(f=e.cell.obj)||void 0===f?void 0:f.label}`;break}w=`${null===(y=e.cell.obj)||void 0===y?void 0:y.label}`;break}default:w=null===(g=e.cell.obj)||void 0===g?void 0:g.label}return{kind:"item",label:w||e.kind,selected:x.has(e.cell.transform.ref),value:[e]}},this.getTrajectoryItems=e=>{var i;return 0===e.models.length?this.item(e):[Ee.W.Header(null===(i=e.cell.obj)||void 0===i?void 0:i.label),...e.models.map(this.getModelItems)]},this.getModelItems=e=>{var i,s,l;if(0===e.structures.length)return this.item(e);if(1===e.structures.length){const c=e.structures[0];return{label:`${null===(i=e.cell.obj)||void 0===i?void 0:i.label} | ${null===(s=c.cell.obj)||void 0===s?void 0:s.label}`,selected:this.plugin.managers.structure.hierarchy.seletionSet.has(c.cell.transform.ref),value:[e,c]}}return[Ee.W.Header(null===(l=e.cell.obj)||void 0===l?void 0:l.label),...e.structures.map(this.item)]},this.selectHierarchy=e=>{if(!e||0===e.length)return;const i=[];for(const s of e)for(const l of s.value)i.push(l);this.plugin.managers.structure.hierarchy.updateCurrent(i,e[0].selected?"remove":"add")},this.toggleHierarchy=()=>this.setState({show:"hierarchy"!==this.state.show?"hierarchy":void 0}),this.togglePreset=()=>this.setState({show:"presets"!==this.state.show?"presets":void 0}),this.applyPreset=e=>{if(this.setState({show:void 0}),!e)return;const i=this.plugin.managers.structure,{trajectories:s}=i.hierarchy.selection;i.hierarchy.applyPreset(s,e.value)},this.updateModelQueueParams=void 0,this.isUpdatingModel=!1,this.updateStructureModel=e=>{this.updateModelQueueParams=e,this._updateStructureModel()},this.updateStructure=e=>{const{selection:i}=this.plugin.managers.structure.hierarchy;return this.plugin.managers.structure.hierarchy.updateStructure(i.structures[0],e)}}defaultState(){return{header:"Structure",isCollapsed:!1,isBusy:!1,brand:{accent:"purple",svg:I.Rm}}}componentDidMount(){this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,()=>this.forceUpdate()),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e})})}get hierarchyItems(){const e=this.plugin.managers.structure.hierarchy,{current:i}=e,s=[];return i.trajectories.length>1&&s.push([Ee.W.Header("Trajectories"),...i.trajectories.map(this.item)]),(i.models.length>1||i.trajectories.length>1)&&s.push([Ee.W.Header("Models"),...i.models.map(this.item)]),1===i.trajectories.length&&1===i.models.length?s.push(...i.structures.map(this.item)):i.structures.length>0&&s.push([Ee.W.Header("Structures"),...i.structures.map(this.item)]),s}get isEmpty(){const{structures:e,models:i,trajectories:s}=this.plugin.managers.structure.hierarchy.current;return 0===s.length&&0===i.length&&0===e.length}get label(){var e,i,s,l,u,c,h,f,y,g,x,w,b,C;const{structures:N,models:V,trajectories:D}=this.plugin.managers.structure.hierarchy.selection;if(1===N.length){const O=N[0];return null!==(i=null===(e=O.model)||void 0===e?void 0:e.trajectory)&&void 0!==i&&i.models&&1===O.model.trajectory.models.length?null===(s=O.cell.obj)||void 0===s?void 0:s.data.label:O.model?`${null===(l=O.model.cell.obj)||void 0===l?void 0:l.label} | ${null===(u=O.cell.obj)||void 0===u?void 0:u.data.label}`:null===(c=O.cell.obj)||void 0===c?void 0:c.data.label}if(N.length>1){const O=N[0],B=null===(h=O?.model)||void 0===h?void 0:h.trajectory;let X=!0;for(const ae of N)if((null===(f=ae?.model)||void 0===f?void 0:f.trajectory)!==B){X=!1;break}return X&&B?`${null===(y=B.cell.obj)||void 0===y?void 0:y.label} | ${N.length} structures`:`${N.length} structures`}if(V.length>0){const O=V[0].trajectory;if(1===V.length){const X=null===(g=V[0].cell.obj)||void 0===g?void 0:g.data;return X&&z.Kx.TrajectoryInfo.get(X).size>1?`${null===(x=O?.cell.obj)||void 0===x?void 0:x.label} | Model ${z.Kx.TrajectoryInfo.get(X).index+1} of ${z.Kx.TrajectoryInfo.get(X).size}`:`${null===(w=O?.cell.obj)||void 0===w?void 0:w.label} | Model`}let B=!0;for(const X of V)if(X.trajectory!==O){B=!1;break}return B?`${null===(b=O?.cell.obj)||void 0===b?void 0:b.label} | ${V.length} models`:`${V.length} models`}return D.length>0?1===D.length?`${null===(C=D[0].cell.obj)||void 0===C?void 0:C.label} trajectory`:`${D.length} trajectories`:0===D.length&&0===V.length&&0===N.length?"Nothing Loaded":"Nothing Selected"}get presetActions(){const e=[],{trajectories:i}=this.plugin.managers.structure.hierarchy.selection;if(0===i.length)return e;let s=this.plugin.builders.structure.hierarchy.getPresets(i[0].cell.obj);if(i.length>1){const l=new Set(s);for(let u=1;ul.has(u))}for(const l of s)e.push(Ee.W.Item(l.display.name,l,{description:l.display.description}));return e}_updateStructureModel(){var e=this;return(0,R.A)(function*(){if(!e.updateModelQueueParams||e.isUpdatingModel)return;const i=e.updateModelQueueParams;e.updateModelQueueParams=void 0;try{e.isUpdatingModel=!0;const{selection:s}=e.plugin.managers.structure.hierarchy,l=s.structures[0].model;yield e.plugin.state.updateTransform(e.plugin.state.data,l.cell.transform.ref,i,"Model Index")}finally{e.isUpdatingModel=!1,e._updateStructureModel()}})()}get modelIndex(){var e,i;const{selection:s}=this.plugin.managers.structure.hierarchy;if(1!==s.structures.length)return null;const l=s.structures[0].model;if(!l||l.cell.transform.transformer!==jt.f.Model.ModelFromTrajectory||!l.cell.obj||z.Kx.TrajectoryInfo.get(l.cell.obj.data).size<=1)return null;const u=null===(e=l.cell.params)||void 0===e?void 0:e.definition;return u?(0,p.jsx)($e.y1,{params:u,values:null===(i=l.cell.params)||void 0===i?void 0:i.values,onChangeValues:this.updateStructureModel,isDisabled:this.state.isBusy}):null}get structureType(){var e;const{selection:i}=this.plugin.managers.structure.hierarchy;if(1!==i.structures.length)return null;const s=i.structures[0];return(null===(e=s.cell.params)||void 0===e?void 0:e.definition)&&s.cell.parent?(0,p.jsx)(pi,{state:s.cell.parent,transform:s.cell.transform,customHeader:"none",customUpdate:this.updateStructure,noMargin:!0,autoHideApply:!0}):null}get transform(){const{selection:e}=this.plugin.managers.structure.hierarchy;if(1!==e.structures.length)return null;const i=e.structures[0];if(!i.cell.parent)return null;const s=tt.QX.tryFindDecorator(this.plugin.state.data,i.cell.transform.ref,jt.f.Model.TransformStructureConformation);return s?(0,p.jsx)(L.Yj,{header:"Conformation Transform",children:(0,p.jsx)(pi,{state:s.parent,transform:s.transform,customHeader:"none",noMargin:!0,autoHideApply:!0})}):void 0}renderControls(){const e=this.state.isBusy||this.isEmpty,i=this.presetActions,s=this.label;return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"msp-flex-row",style:{marginTop:"1px"},children:[(0,p.jsx)(L.$n,{noOverflow:!0,flex:!0,onClick:this.toggleHierarchy,disabled:e,title:s,children:s}),i.length>0&&(0,p.jsx)(L.K0,{svg:I.sM,className:"msp-form-control",flex:"40px",onClick:this.togglePreset,title:"Apply a structure presets to the current hierarchy.",toggleState:"presets"===this.state.show,disabled:e})]}),"hierarchy"===this.state.show&&(0,p.jsx)(Ee.W,{items:this.hierarchyItems,onSelect:this.selectHierarchy,multiselect:!0}),"presets"===this.state.show&&(0,p.jsx)(Ee.W,{items:i,onSelect:this.applyPreset}),this.modelIndex,this.structureType,this.transform,(0,p.jsxs)("div",{style:{marginTop:"6px"},children:[(0,p.jsx)(Ut,{}),(0,p.jsx)(zc,{hideOnEmpty:!0})]})]})}}var ne=F(9012),er=F(6230),Qo=F(958);class Go extends Ns{constructor(){super(...arguments),this._getInfo=(0,Hr._)((e,i,s)=>Ii.infoFromAction(this.plugin,this.props.state,this.props.action,this.props.nodeRef)),this.state={plugin:this.plugin,ref:this.props.nodeRef,version:this.props.state.transforms.get(this.props.nodeRef).version,error:void 0,isInitial:!0,params:this.getInfo().initialValues,busy:!1,isCollapsed:this.props.initiallyCollapsed}}applyAction(){return ue.a.State.ApplyAction(this.plugin,{state:this.props.state,action:this.props.action.create(this.state.params),ref:this.props.nodeRef})}getInfo(){var e;return this._getInfo(this.props.nodeRef,this.props.state.transforms.get(this.props.nodeRef).version,null===(e=this.state)||void 0===e?void 0:e.isCollapsed)}getTransformerId(){return this.props.state.transforms.get(this.props.nodeRef).transformer.id}getHeader(){return this.props.hideHeader?"none":this.props.action.definition.display}canApply(){return!this.state.error&&!this.state.busy}canAutoApply(){return!1}applyText(){return"Apply"}isUpdate(){return!1}getSourceAndTarget(){return{a:this.props.state.cells.get(this.props.nodeRef).obj}}static getDerivedStateFromProps(e,i){const s=e.state.transforms.get(e.nodeRef).version;if(e.nodeRef===i.ref&&s===i.version)return null;const l=e.state.cells.get(e.nodeRef).obj,u=e.action.definition.params?Q.t.getDefaultValues(e.action.definition.params(l,i.plugin)):{};return{plugin:i.plugin,ref:e.nodeRef,version:s,params:u,isInitial:!0,error:void 0}}}var ld=F(3442),Os=F(22);class Yo extends Z.VK{defaultState(){return{header:"Volume Streaming",isCollapsed:!1,isBusy:!1,isHidden:!0,brand:{accent:"cyan",svg:I.Fi}}}componentDidMount(){this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,()=>{this.setState({isHidden:!this.canEnable(),description:Ac.G.getSelectedStructuresDescription(this.plugin)})}),this.subscribe(this.plugin.state.events.cell.stateUpdated,e=>{tt.Cn.hasTag(e.cell.transform,er.h.RootTag)&&this.forceUpdate()}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e})})}get pivot(){return this.plugin.managers.structure.hierarchy.selection.structures[0]}canEnable(){var e,i;const{selection:s}=this.plugin.managers.structure.hierarchy;if(1!==s.structures.length)return!1;const l=this.pivot.cell;return!!l.obj&&!(null===(i=(e=Qo.p3.definition).isApplicable)||void 0===i||!i.call(e,l.obj,l.transform,this.plugin))}renderEnable(){var e,i;const s=this.pivot;if(!s.cell.parent)return null;const l=tt.QX.findTagInSubtree(s.cell.parent.tree,this.pivot.cell.transform.ref,er.h.RootTag),u=l&&s.cell.parent.cells.get(l),c=u&&"error"===u.status?{header:u.errorText&&null!==(e=u.errorText)&&void 0!==e&&e.includes("404")?"No Density Data Available":"Error Enabling",icon:I.Bw,title:u.errorText}:u&&0===(null===(i=u.obj)||void 0===i?void 0:i.data.entries.length)?{header:"Error Enabling",icon:I.Bw,title:"No Entry for Streaming Found"}:{header:"Enable",icon:I.Xq,title:"Enable"};return(0,p.jsx)(Go,{state:s.cell.parent,action:Qo.p3,initiallyCollapsed:!0,nodeRef:s.cell.transform.ref,simpleApply:c})}renderParams(){var e,i,s,l,u;const c=this.pivot;if(!c.cell.parent)return null;const h="selection-box"===(null===(i=null===(e=c.volumeStreaming)||void 0===e?void 0:e.cell.transform.params)||void 0===i?void 0:i.entry.params.view.name)&&(null===(u=null===(l=null===(s=this.plugin.state.behaviors.cells.get(Ms.FocusLoci.id))||void 0===s?void 0:s.params)||void 0===l?void 0:l.values)||void 0===u?void 0:u.bindings);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(pi,{state:c.cell.parent,transform:c.volumeStreaming.cell.transform,customHeader:"none",noMargin:!0}),h&&(0,p.jsx)(L.Yj,{header:"Controls Help",children:(0,p.jsx)(_o,{bindings:h})})]})}renderControls(){const e=this.pivot;return e?e.volumeStreaming?this.renderParams():this.renderEnable():null}}class Ga extends Z.VK{constructor(){super(...arguments),this.item=e=>{var i;const l=(null===(i=e.cell.obj)||void 0===i?void 0:i.label)||"Volume";return{kind:"item",label:("lazy-volume"===e.kind?"Load ":"")+(l||e.kind),selected:this.plugin.managers.volume.hierarchy.selection===e,value:e}},this.selectCurrent=e=>{if(this.toggleHierarchy(),!e)return;const i=e.value;"volume"===i.kind?this.plugin.managers.volume.hierarchy.setCurrent(i):this.lazyLoad(i.cell)},this.selectAdd=e=>{e&&(this.setState({show:void 0}),e.value())},this.toggleHierarchy=()=>this.setState({show:"hierarchy"!==this.state.show?"hierarchy":void 0}),this.toggleAddRepr=()=>this.setState({show:"add-repr"!==this.state.show?"add-repr":void 0})}defaultState(){return{header:"Volume",isCollapsed:!1,isBusy:!1,isHidden:!0,brand:{accent:"purple",svg:I.Fi}}}componentDidMount(){this.subscribe(this.plugin.managers.volume.hierarchy.behaviors.selection,e=>{this.setState({isHidden:0===e.hierarchy.volumes.length&&0===e.hierarchy.lazyVolumes.length})}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e})})}get hierarchyItems(){const e=this.plugin.managers.volume.hierarchy,{current:i}=e,s=[];for(const l of i.volumes)s.push(this.item(l));for(const l of i.lazyVolumes)s.push(this.item(l));return s}get addActions(){const e=this.plugin.managers.volume.hierarchy,i=e.selection;return[...ne.L.getRepresentationTypes(this.plugin,i).map(l=>Ee.W.Item(l[1],()=>e.addRepresentation(i,l[0])))]}get isEmpty(){const{volumes:e,lazyVolumes:i}=this.plugin.managers.volume.hierarchy.current;return 0===e.length&&0===i.length}get label(){var e;if(this.state.loadingLabel)return`Loading ${this.state.loadingLabel}...`;const i=this.plugin.managers.volume.hierarchy.selection;return i?(null===(e=i?.cell.obj)||void 0===e?void 0:e.label)||"Volume":"Nothing Selected"}lazyLoad(e){var i=this;return(0,R.A)(function*(){const{url:s,isBinary:l,format:u,entryId:c,isovalues:h}=e.obj.data;i.setState({isBusy:!0,loadingLabel:e.obj.label});try{const f=i.plugin;yield f.dataTransaction((0,R.A)(function*(){var y,g,x,w;const b=yield f.builders.data.download({url:s,isBinary:l},{state:{isGhost:!0}}),C=yield f.dataFormats.get(u).parse(f,b,{entryId:c}),N=C.volume||C.volumes[0];if(!N?.isOk)throw new Error("Failed to parse any volume.");const V=f.build();for(const D of h)V.to(null!==(x=null===(y=C.volumes)||void 0===y?void 0:y[null!==(g=D.volumeIndex)&&void 0!==g?g:0])&&void 0!==x?x:C.volume).apply(jt.f.Representation.VolumeRepresentation3D,(0,ld.aK)(i.plugin,N.data,{type:"isosurface",typeParams:{alpha:null!==(w=D.alpha)&&void 0!==w?w:1,isoValue:"absolute"===D.type?{kind:"absolute",absoluteValue:D.value}:{kind:"relative",relativeValue:D.value}},color:"uniform",colorParams:{value:D.color}}));yield V.commit(),yield f.build().delete(e).commit()}))}finally{i.setState({isBusy:!1,loadingLabel:void 0})}})()}renderControls(){const e=this.state.isBusy||this.isEmpty,i=this.label,s=this.plugin.managers.volume.hierarchy.selection;return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"msp-flex-row",style:{marginTop:"1px"},children:[(0,p.jsx)(L.$n,{noOverflow:!0,flex:!0,onClick:this.toggleHierarchy,disabled:e,title:i,children:i}),!this.isEmpty&&s&&(0,p.jsx)(L.K0,{svg:I.CR,onClick:this.toggleAddRepr,title:"Apply a structure presets to the current hierarchy.",toggleState:"add-repr"===this.state.show,disabled:e})]}),"hierarchy"===this.state.show&&(0,p.jsx)(Ee.W,{items:this.hierarchyItems,onSelect:this.selectCurrent}),"add-repr"===this.state.show&&(0,p.jsx)(Ee.W,{items:this.addActions,onSelect:this.selectAdd}),s&&s.representations.length>0&&(0,p.jsx)("div",{style:{marginTop:"6px"},children:s.representations.map(l=>(0,p.jsx)(Bc,{representation:l},l.cell.transform.ref))})]})}}class Bc extends Z.jB{constructor(){super(...arguments),this.state={action:void 0},this.remove=()=>this.plugin.managers.volume.hierarchy.remove([this.props.representation],!0),this.toggleVisible=e=>{e.preventDefault(),e.currentTarget.blur(),this.plugin.managers.volume.hierarchy.toggleVisibility([this.props.representation])},this.toggleColor=()=>{this.setState({action:"select-color"===this.state.action?void 0:"select-color"})},this.toggleUpdate=()=>this.setState({action:"update"===this.state.action?void 0:"update"}),this.highlight=e=>{e.preventDefault(),this.props.representation.cell.parent&&ue.a.Interactivity.Object.Highlight(this.plugin,{state:this.props.representation.cell.parent,ref:this.props.representation.cell.transform.ref})},this.clearHighlight=e=>{e.preventDefault(),ue.a.Interactivity.ClearHighlights(this.plugin)},this.focus=()=>{var e;const i=this.props.representation,s=null===(e=i.cell.obj)||void 0===e?void 0:e.data.repr.getAllLoci();i.cell.state.isHidden&&this.plugin.managers.volume.hierarchy.toggleVisibility([this.props.representation],"show"),s&&this.plugin.managers.camera.focusLoci(s,{extraRadius:1})},this.updateColor=({value:e})=>{const i=this.props.representation.cell.transform;return this.plugin.build().to(i.ref).update({...i.params,colorTheme:{name:"uniform",params:{value:e}}}).commit()}}componentDidMount(){this.subscribe(this.plugin.state.events.cell.stateUpdated,e=>{tt.Uw.ObjectEvent.isCell(e,this.props.representation.cell)&&this.forceUpdate()})}get color(){var e,i;const s=this.props.representation.cell;if("uniform"===(null===(e=s.transform.params)||void 0===e?void 0:e.colorTheme.name))return null===(i=s.transform.params)||void 0===i?void 0:i.colorTheme.params.value}render(){var e,i,s;const l=this.props.representation.cell,u=this.color;return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"msp-flex-row",children:[void 0!==u&&(0,p.jsx)(L.$n,{style:{backgroundColor:wt.Q1.toStyle(u),minWidth:32,width:32},onClick:this.toggleColor}),(0,p.jsxs)(L.$n,{noOverflow:!0,className:"msp-control-button-label",title:`${null===(e=l.obj)||void 0===e?void 0:e.label}. Click to focus.`,onClick:this.focus,onMouseEnter:this.highlight,onMouseLeave:this.clearHighlight,style:{textAlign:"left"},children:[null===(i=l.obj)||void 0===i?void 0:i.label,(0,p.jsx)("small",{className:"msp-25-lower-contrast-text",style:{float:"right"},children:null===(s=l.obj)||void 0===s?void 0:s.description})]}),(0,p.jsx)(L.K0,{svg:l.state.isHidden?I.qF:I.zs,toggleState:!1,onClick:this.toggleVisible,title:(l.state.isHidden?"Show":"Hide")+" component",small:!0,className:"msp-form-control",flex:!0}),(0,p.jsx)(L.K0,{svg:I.mf,onClick:this.remove,title:"Remove",small:!0}),(0,p.jsx)(L.K0,{svg:I.cv,onClick:this.toggleUpdate,title:"Actions",toggleState:"update"===this.state.action})]}),"update"===this.state.action&&!!l.parent&&(0,p.jsx)("div",{style:{marginBottom:"6px"},className:"msp-accent-offset",children:(0,p.jsx)(pi,{state:l.parent,transform:l.transform,customHeader:"none",noMargin:!0})}),"select-color"===this.state.action&&void 0!==u&&(0,p.jsx)("div",{style:{marginBottom:"6px",marginTop:1},className:"msp-accent-offset",children:(0,p.jsx)(L.tW,{header:"Select Color",initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:this.toggleColor,topRightIcon:I.X6,noTopMargin:!0,childrenClassName:"msp-viewport-controls-panel-controls",children:(0,p.jsx)(Os.cq,{param:Hc,value:this.color,onChange:this.updateColor,name:"color",hideNameRow:!0})})})]})}}const Hc=Q.t.Color((0,wt.Q1)(1184274));var yt,r,Ya=F(6220),nt=F(6639),it=F(1778);function Za(r,e){if(Math.abs(r)>Math.abs(e)){const i=e/r;return Math.abs(r)*Math.sqrt(1+i*i)}if(0!==e){const i=r/e;return Math.abs(e)*Math.sqrt(1+i*i)}return 0}(r=yt||(yt={})).createCache=function e(s){return{size:s,matrix:it.u.create(s,s),eigenValues:new Float64Array(s),D:new Float64Array(s),E:new Float64Array(s)}},r.compute=function i(s){!function Dn(r,e,i,s,l){for(let c=0;c0;l--){let u=0,c=0;for(let h=0;h0&&(f=-f),i[l]=u*f,c-=h*f,e[l-1]=h-f;for(let g=0;gf){let g=0;do{g+=1;let x=e[f],w=(e[f+1]-x)/(2*i[f]),b=Za(w,1);w<0&&(b=-b),e[f]=i[f]/(w+b),e[f+1]=i[f]*(w+b);const C=e[f+1];let N=x-e[f];for(let H=f+2;H=f;H--){O=D,D=V,ae=X,x=V*i[H],N=V*w,b=Za(w,i[H]),i[H+1]=X*b,X=i[H]/b,V=w/b,w=V*e[H]-X*x,e[H+1]=N+X*(V*x+X*e[H]);for(let ve=0;ve=1e3)throw new Error("SVD: Not converging.")}while(Math.abs(i[f])>h*c)}e[f]=e[f]+u,i[f]=0}for(let f=0;f"u"&&(l={bTransform:nt.$.zero(),rmsd:0}),function _c(r){const e=function Vc(r){const e=r.evdCache.matrix;it.u.makeZero(e);const i=r.a.x,s=r.a.y,l=r.a.z,u=r.b.x,c=r.b.y,h=r.b.z,f=r.centerA,y=r.centerB;let g=0;const x=Math.min(r.a.x.length,r.b.x.length);for(let w=0;w{i=0;const c={};u.forEach(h=>c[r[i++]]=h),l[r[s++]]=c}),l}const vt={blosum62:Ct("ARNDCQEGHILKMFPSTWYVBZX",[[4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-2,-1,0],[-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-1,0,-1],[-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,3,0,-1],[-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,4,1,-1],[0,-3,-3,-3,9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2],[-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,0,3,-1],[-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,1,4,-1],[0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-1,-2,-1],[-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,0,0,-1],[-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-3,-3,-1],[-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,1,-4,-3,-1],[-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,0,1,-1],[-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-3,-1,-1],[-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-3,-3,-1],[-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-2,-1,-2],[1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,0,0,0],[0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-1,-1,0],[-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,1,-4,-3,-2,11,2,-3,-4,-3,-2],[-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-3,-2,-1],[0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-3,-2,-1],[-2,-1,3,4,-3,0,1,-1,0,-3,-4,0,-3,-3,-2,0,-1,-4,-3,-3,4,1,-1],[-1,0,0,1,-3,3,4,-2,0,-3,-3,1,-1,-3,-1,0,-1,-3,-2,-2,1,4,-1],[0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,0,0,-2,-1,-1,-1,-1,-1]]),blosum62x:Ct("ACDEFGHIKLMNPQRSTVWY",[[4,0,-2,-1,-2,0,-2,-1,-1,-1,-1,-2,-1,-1,-1,1,0,0,-3,-2],[0,9,-3,-4,-2,-3,-3,-1,-3,-1,-1,-3,-3,-3,-3,-1,-1,-1,-2,-2],[-2,-3,6,2,-3,-1,-1,-3,-1,-4,-3,1,-1,0,-2,0,-1,-3,-4,-3],[-1,-4,2,5,-3,-2,0,-3,1,-3,-2,0,-1,2,0,0,-1,-2,-3,-2],[-2,-2,-3,-3,6,-3,-1,0,-3,0,0,-3,-4,-3,-3,-2,-2,-1,1,3],[0,-3,-1,-2,-3,6,-2,-4,-2,-4,-3,0,-2,-2,-2,0,-2,-3,-2,-3],[-2,-3,-1,0,-1,-2,8,-3,-1,-3,-2,1,-2,0,0,-1,-2,-3,-2,2],[-1,-1,-3,-3,0,-4,-3,4,-3,2,1,-3,-3,-3,-3,-2,-1,3,-3,-1],[-1,-3,-1,1,-3,-2,-1,-3,5,-2,-1,0,-1,1,2,0,-1,-2,-3,-2],[-1,-1,-4,-3,0,-4,-3,2,-2,4,2,-3,-3,-2,-2,-2,-1,1,-2,-1],[-1,-1,-3,-2,0,-3,-2,1,-1,2,5,-2,-2,0,-1,-1,-1,1,-1,-1],[-2,-3,1,0,-3,0,1,-3,0,-3,-2,6,-2,0,0,1,0,-3,-4,-2],[-1,-3,-1,-1,-4,-2,-2,-3,-1,-3,-2,-2,7,-1,-2,-1,-1,-2,-4,-3],[-1,-3,0,2,-3,-2,0,-3,1,-2,0,0,-1,5,1,0,-1,-2,-2,-1],[-1,-3,-2,0,-3,-2,0,-3,2,-2,-1,0,-2,1,5,-1,-1,-3,-3,-2],[1,-1,0,0,-2,0,-1,-2,0,-2,-1,1,-1,0,-1,4,1,-2,-3,-2],[0,-1,-1,-1,-2,-2,-2,-1,-1,-1,-1,0,-1,-1,-1,1,5,0,-2,-2],[0,-1,-3,-2,-1,-3,-3,3,-2,1,1,-3,-2,-2,-3,-2,0,4,-3,-1],[-3,-2,-4,-3,1,-2,-2,-3,-3,-2,-1,-4,-4,-2,-3,-3,-2,-3,11,2],[-2,-2,-3,-2,3,-3,2,-1,-2,-1,-1,-2,-3,-1,-2,-2,-2,-1,2,7]])},Ot={gapPenalty:-11,gapExtensionPenalty:-1,substMatrix:"default"};class qr{constructor(e,i,s){this.seqA=e,this.seqB=i,this.S=[],this.V=[],this.H=[],this.gapPenalty=s.gapPenalty,this.gapExtensionPenalty=s.gapExtensionPenalty,this.substMatrix="default"===s.substMatrix?void 0:vt[s.substMatrix],this.n=this.seqA.length,this.m=this.seqB.length}initMatrices(){const{n:e,m:i,gapPenalty:s,S:l,V:u,H:c}=this;for(let h=0;h<=e;++h){l[h]=[],u[h]=[],c[h]=[];for(let f=0;f<=i;++f)l[h][f]=0,u[h][f]=0,c[h][f]=0}for(let h=0;h<=e;++h)l[h][0]=s,c[h][0]=-1/0;for(let h=0;h<=i;++h)l[0][h]=s,u[0][h]=-1/0;l[0][0]=0}makeScoreFn(){const{seqA:e,seqB:i,substMatrix:s}=this;return s?function(u,c){var h,f;return null!==(f=null===(h=s[e[u]])||void 0===h?void 0:h[i[c]])&&void 0!==f?f:-4}:function(u,c){return e[u]===i[c]?5:-3}}calculate(){this.initMatrices();const e=this.makeScoreFn(),{V:i,H:s,S:l,n:u,m:c,gapExtensionPenalty:h,gapPenalty:f}=this;let y,g,x,w,b;for(let C=1;C<=u;++C){g=l[C-1],y=i[C-1],x=i[C],w=s[C],b=l[C];for(let N=1;N<=c;++N)x[N]=Math.max(g[N]+f,y[N]+h),w[N]=Math.max(b[N-1]+f,w[N-1]+h),b[N]=Math.max(g[N-1]+e(C-1,N-1),x[N],w[N])}}trace(){const e=this.makeScoreFn(),{V:i,H:s,S:l,seqA:u,seqB:c,gapExtensionPenalty:h,gapPenalty:f}=this;let x,w,y=this.n,g=this.m,b="",C="";for(l[y][g]>=i[y][g]?(x="S",w=l[y][g]):i[y][g]>=s[y][g]?(x="V",w=i[y][g]):(x="H",w=s[y][g]);y>0&&g>0;)"S"===x?l[y][g]===l[y-1][g-1]+e(y-1,g-1)?(b=u[y-1]+b,C=c[g-1]+C,--y,--g,x="S"):l[y][g]===i[y][g]?x="V":l[y][g]===s[y][g]?x="H":(--y,--g):"V"===x?i[y][g]===i[y-1][g]+h?(b=u[y-1]+b,C="-"+C,--y,x="V"):i[y][g]===l[y-1][g]+f?(b=u[y-1]+b,C="-"+C,--y,x="S"):--y:"H"===x&&(s[y][g]===s[y][g-1]+h?(b="-"+b,C=c[g-1]+C,--g,x="H"):s[y][g]===l[y][g-1]+f?(b="-"+b,C=c[g-1]+C,--g,x="S"):--g);for(;y>0;)b=u[y-1]+b,C="-"+C,--y;for(;g>0;)b="-"+b,C=c[g-1]+C,--g;return{aliA:b,aliB:C,score:w}}}var dt;function Pi(r){return r.model.sequence.byEntityKey[function Rs(r){switch(r.kind){case 0:return r.model.atomicHierarchy.index.getEntityFromChain(r.chainIndex[r.elements[0]]);case 1:return r.model.coarseHierarchy.spheres.entityKey[r.elements[0]];case 2:return r.model.coarseHierarchy.gaussians.entityKey[r.elements[0]]}}(r)].sequence}!function(r){function e(s){const l=new Map;if(Ja.Nf.isAtomic(s.unit)){const{label_seq_id:u}=s.unit.model.atomicHierarchy.residues,{residueIndex:c}=s.unit;for(let h=0,f=Ce.CD.size(s.indices);h=e)break}if(s>=e)break}return i}function el(r,e,i,s){const l=Tt.Positions.empty(s),u=Tt.Positions.empty(s);let c=0;for(const{pivots:h}of r){const f=h[e],y=h[i];if(!f||!y)continue;const g=Math.min(f[2]-f[1],y[2]-y[1]);for(let x=0;x=0?B:X,!l(u,O,X,ae))continue;const H=`${g[O]}-${x[O]}-${w[O]}`;if(e.has(H)){const ve=e.get(H);ve.pivots[i]||(ve.pivots[i]=[c,X,ae])}else e.set(H,{key:H,pivots:{[i]:[c,X,ae]}})}}}}class Ni extends Z.VK{defaultState(){return{isCollapsed:!1,header:"Superposition",brand:{accent:"gray",svg:I.lj},isHidden:!0}}componentDidMount(){this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,e=>{this.setState({isHidden:e.structures.length<2})})}renderControls(){return(0,p.jsx)(p.Fragment,{children:(0,p.jsx)(nl,{})})}}const Bs={alignSequences:Q.t.Boolean(!0,{isEssential:!0,description:"For Chain-based 3D superposition, perform a sequence alignment and use the aligned residue pairs to guide the 3D superposition."}),traceOnly:Q.t.Boolean(!0,{description:"For Chain- and Uniprot-based 3D superposition, base superposition only on CA (and equivalent) atoms."})},Hs=Q.t.getDefaultValues(Bs);class nl extends Z.jB{constructor(){var e;super(...arguments),e=this,this.state={isBusy:!1,canUseDb:!1,action:void 0,options:Hs},this.superposeChains=(0,R.A)(function*(){var i,s,l;const{query:u}=e.state.options.traceOnly?Zi.Ou.trace:Zi.Ou.polymer,c=e.chainEntries,h=c.map(w=>{const b=z.iZ.Loci.toStructure(w.loci),C=z.cv.toLociWithSourceUnits(u(new z.cY(b)));return z.iZ.Loci.remap(C,e.getRootStructure(w.loci.structure))}),f=e.plugin.managers.structure.hierarchy.findStructure(null===(i=h[0])||void 0===i?void 0:i.structure),y=null===(l=null===(s=f?.transform)||void 0===s?void 0:s.cell.obj)||void 0===l?void 0:l.data.coordinateSystem,g=e.state.options.alignSequences?function rn(r){const e=[];if(r.length<=0)return e;const i=tr.i.Loci.getFirstLocation(r[0]),l=Xo.Z.entity.subtype(i).match(Fs)?"blosum62":"default";for(let u=1;uz.iZ.Loci.remap(x.loci,e.getRootStructure(x.loci.structure))),h=Jo(c),f=e.plugin.managers.structure.hierarchy.findStructure(null===(i=c[0])||void 0===i?void 0:i.structure),y=null===(l=null===(s=f?.transform)||void 0===s?void 0:s.cell.obj)||void 0===l?void 0:l.data.coordinateSystem,g=u[0];for(let x=1,w=c.length;x{var N;return null===(N=C.cell.obj)||void 0===N?void 0:N.data}),{entries:f,failedPairs:y,zeroOverlapPairs:g}=function hi(r,e){var i,s;const l=new Map;for(let g=0;g`[${C.map(([N,V])=>`(${h[N].models[0].entryId}, ${h[V].models[0].entryId})`).join(", ")}]`;g.length&&e.plugin.log.warn(`Superposition: No UNIPROT mapping overlap between structures ${b(g)}.`),y.length&&e.plugin.log.error(`Superposition: Failed to superpose structures ${b(y)}.`),f.length&&(e.plugin.log.info(`Superposed ${f.length+1} structures with avg. RMSD ${w.toFixed(2)} \xc5.`),yield e.cameraReset())}),this.toggleByChains=()=>this.setState({action:"byChains"===this.state.action?void 0:"byChains"}),this.toggleByAtoms=()=>this.setState({action:"byAtoms"===this.state.action?void 0:"byAtoms"}),this.toggleOptions=()=>this.setState({action:"options"===this.state.action?void 0:"options"}),this.setOptions=i=>{this.setState({options:i})}}componentDidMount(){this.subscribe(this.selection.events.changed,()=>{this.forceUpdate()}),this.subscribe(this.selection.events.additionsHistoryUpdated,()=>{this.forceUpdate()}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e})}),this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,e=>{this.setState({canUseDb:e.structures.every(i=>{var s;return!(null===(s=i.cell.obj)||void 0===s||!s.data)&&i.cell.obj.data.models.some(l=>Ya.W.Provider.isApplicable(l))})})})}get selection(){return this.plugin.managers.structure.selection}transform(e,i,s){var l=this;return(0,R.A)(function*(){const u=tt.so.resolveAndCheck(l.plugin.state.data,e);if(!u)return;const c=l.plugin.state.data.selectQ(g=>g.byRef(u.transform.ref).subtree().withTransformer(jt.f.Model.TransformStructureConformation))[0],f={transform:{name:"matrix",params:{data:s&&!bt.$I.isIdentity(s.matrix)?bt.$I.mul((0,bt.$I)(),s.matrix,i):i,transpose:!1}}},y=c?l.plugin.state.data.build().to(c).update(f):l.plugin.state.data.build().to(e).insert(jt.f.Model.TransformStructureConformation,f,{tags:"SuperpositionTransform"});yield l.plugin.runTask(l.plugin.state.data.updateTree(y))})()}getRootStructure(e){var i;const s=this.plugin.helpers.substructureParent.get(e);return null===(i=this.plugin.state.data.selectQ(l=>l.byValue(s).rootOfType(we.O.Molecule.Structure))[0].obj)||void 0===i?void 0:i.data}cameraReset(){var e=this;return(0,R.A)(function*(){yield new Promise(i=>requestAnimationFrame(i)),ue.a.Camera.Reset(e.plugin)})()}highlight(e){this.plugin.managers.interactivity.lociHighlights.highlightOnly({loci:e},!1)}moveHistory(e,i){this.plugin.managers.structure.selection.modifyHistory(e,i,void 0,!0)}focusLoci(e){this.plugin.managers.camera.focusLoci(e)}lociEntry(e,i){return(0,p.jsx)("div",{className:"msp-flex-row",children:(0,p.jsx)(L.$n,{noOverflow:!0,title:"Click to focus. Hover to highlight.",onClick:()=>this.focusLoci(e.loci),style:{width:"auto",textAlign:"left"},onMouseEnter:()=>this.highlight(e.loci),onMouseLeave:()=>this.plugin.managers.interactivity.lociHighlights.clearHighlights(),children:(0,p.jsx)("span",{dangerouslySetInnerHTML:{__html:e.label}})})},i)}historyEntry(e,i){const s=this.plugin.managers.structure.selection.additionsHistory;return(0,p.jsxs)("div",{className:"msp-flex-row",children:[(0,p.jsxs)(L.$n,{noOverflow:!0,title:"Click to focus. Hover to highlight.",onClick:()=>this.focusLoci(e.loci),style:{width:"auto",textAlign:"left"},onMouseEnter:()=>this.highlight(e.loci),onMouseLeave:()=>this.plugin.managers.interactivity.lociHighlights.clearHighlights(),children:[i,". ",(0,p.jsx)("span",{dangerouslySetInnerHTML:{__html:e.label}})]}),s.length>1&&(0,p.jsx)(L.K0,{svg:I.p8,small:!0,className:"msp-form-control",onClick:()=>this.moveHistory(e,"up"),flex:"20px",title:"Move up"}),s.length>1&&(0,p.jsx)(L.K0,{svg:I.qp,small:!0,className:"msp-form-control",onClick:()=>this.moveHistory(e,"down"),flex:"20px",title:"Move down"}),(0,p.jsx)(L.K0,{svg:I.mf,small:!0,className:"msp-form-control",onClick:()=>this.plugin.managers.structure.selection.modifyHistory(e,"remove"),flex:!0,title:"Remove"})]},e.id)}atomsLociEntry(e,i){return(0,p.jsxs)("div",{children:[(0,p.jsx)("div",{className:"msp-control-group-header",children:(0,p.jsx)("div",{className:"msp-no-overflow",title:e.label,children:e.label})}),(0,p.jsx)("div",{className:"msp-control-offset",children:e.atoms.map((s,l)=>this.historyEntry(s,l))})]},i)}get chainEntries(){const e=z.iZ.Location.create(),i=[];return this.plugin.managers.structure.selection.entries.forEach(({selection:s},l)=>{const u=tt.so.resolveAndCheck(this.plugin.state.data,l);if(!u||z.iZ.Loci.isEmpty(s))return;const c=z.iZ.Loci.getFirstLocation(s,e);if(s.elements.length>1||"polymer"!==z.StructureProperties.entity.type(c))return;const h=z.iZ.Stats.ofLoci(s),f=(0,Nn.d_)(h,{countsOnly:!0}),y=(0,Nn.BB)(c,{reverse:!0,granularity:"chain"}).split("|");i.push({loci:s,label:`${f} | ${y[0]} | ${y[y.length-1]}`,cell:u})}),i}get atomEntries(){const e=new Map,i=this.plugin.managers.structure.selection.additionsHistory;for(let l=0,u=i.length;l{const c=this.plugin.helpers.substructureParent.get(u),h=[];for(let g=0,x=l.length;g0&&(0,p.jsx)("div",{className:"msp-control-offset",children:e.map((i,s)=>this.lociEntry(i,s))}),e.length<2&&(0,p.jsx)("div",{className:"msp-control-offset msp-help-text",children:(0,p.jsxs)("div",{className:"msp-help-description",children:[(0,p.jsx)(I.In,{svg:I.ml,inline:!0}),"Add 2 or more selections",this.toggleHint()," from separate structures. Selections must be limited to single polymer chains or residues therein."]})}),e.length>1&&(0,p.jsx)(L.$n,{title:"Superpose structures by selected chains.",className:"msp-btn-commit msp-btn-commit-on",onClick:this.superposeChains,style:{marginTop:"1px"},children:"Superpose"})]})}addByAtoms(){const e=this.atomEntries;return(0,p.jsxs)(p.Fragment,{children:[e.length>0&&(0,p.jsx)("div",{className:"msp-control-offset",children:e.map((i,s)=>this.atomsLociEntry(i,s))}),e.length<2&&(0,p.jsx)("div",{className:"msp-control-offset msp-help-text",children:(0,p.jsxs)("div",{className:"msp-help-description",children:[(0,p.jsx)(I.In,{svg:I.ml,inline:!0}),"Add 1 or more selections",this.toggleHint()," from separate structures. Selections must be limited to single atoms."]})}),e.length>1&&(0,p.jsx)(L.$n,{title:"Superpose structures by selected atoms.",className:"msp-btn-commit msp-btn-commit-on",onClick:this.superposeAtoms,style:{marginTop:"1px"},children:"Superpose"})]})}superposeByDbMapping(){return(0,p.jsx)(p.Fragment,{children:(0,p.jsx)(L.$n,{icon:I.$8,title:"Superpose structures using intersection of residues from SIFTS UNIPROT mapping.",className:"msp-btn msp-btn-block",onClick:this.superposeDb,style:{marginTop:"1px"},disabled:this.state.isBusy,children:"Uniprot"})})}render(){return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"msp-flex-row",children:[(0,p.jsx)(L.ff,{icon:I.$8,label:"Chains",toggle:this.toggleByChains,isSelected:"byChains"===this.state.action,disabled:this.state.isBusy}),(0,p.jsx)(L.ff,{icon:I.z7,label:"Atoms",toggle:this.toggleByAtoms,isSelected:"byAtoms"===this.state.action,disabled:this.state.isBusy}),this.state.canUseDb&&this.superposeByDbMapping(),(0,p.jsx)(L.ff,{icon:I.Hk,label:"",title:"Options",toggle:this.toggleOptions,isSelected:"options"===this.state.action,disabled:this.state.isBusy,style:{flex:"0 0 40px",padding:0}})]}),"byChains"===this.state.action&&this.addByChains(),"byAtoms"===this.state.action&&this.addByAtoms(),"options"===this.state.action&&(0,p.jsx)("div",{className:"msp-control-offset",children:(0,p.jsx)($e.y1,{params:Bs,values:this.state.options,onChangeValues:this.setOptions,isDisabled:this.state.isBusy})})]})}}var Us=F(9880),Gt=F(3099);class Mi extends Z.VK{defaultState(){return{isCollapsed:!1,header:"Quick Styles",brand:{accent:"gray",svg:I._c}}}renderControls(){return(0,p.jsx)(p.Fragment,{children:(0,p.jsx)(zn,{})})}}class zn extends Z.jB{default(){var e=this;return(0,R.A)(function*(){const{structures:i}=e.plugin.managers.structure.hierarchy.selection,s=e.plugin.config.get(Bt.AB.Structure.DefaultRepresentationPreset)||Us.Bj.auto.id,l=e.plugin.builders.structure.representation.resolveProvider(s);if(yield e.plugin.managers.structure.component.applyPreset(i,l),e.plugin.managers.structure.component.setOptions(Q.t.getDefaultValues(Br.C.OptionsParams)),e.plugin.canvas3d){const u=Q.t.getDefaultValues(Gt.co);e.plugin.canvas3d.setProps({postprocessing:{outline:u.outline,occlusion:u.occlusion}})}})()}illustrative(){var e=this;return(0,R.A)(function*(){const{structures:i}=e.plugin.managers.structure.hierarchy.selection;yield e.plugin.managers.structure.component.applyPreset(i,Us.Bj.illustrative),e.plugin.canvas3d&&e.plugin.canvas3d.setProps({postprocessing:{outline:{name:"on",params:{scale:1,color:(0,wt.Q1)(0),threshold:.25,includeTransparent:!0}},occlusion:{name:"on",params:{multiScale:{name:"off",params:{}},radius:5,bias:.8,blurKernelSize:15,samples:32,resolutionScale:1,color:(0,wt.Q1)(0)}},shadow:{name:"off",params:{}}}})})()}stylized(){var e=this;return(0,R.A)(function*(){if(e.plugin.managers.structure.component.setOptions({...e.plugin.managers.structure.component.state.options,ignoreLight:!0}),e.plugin.canvas3d){const i=e.plugin.canvas3d.props.postprocessing;e.plugin.canvas3d.setProps({postprocessing:{outline:{name:"on",params:"on"===i.outline.name?i.outline.params:{scale:1,color:(0,wt.Q1)(0),threshold:.33,includeTransparent:!0}},occlusion:{name:"on",params:"on"===i.occlusion.name?i.occlusion.params:{multiScale:{name:"off",params:{}},radius:5,bias:.8,blurKernelSize:15,samples:32,resolutionScale:1,color:(0,wt.Q1)(0)}},shadow:{name:"off",params:{}}}})}})()}render(){return(0,p.jsxs)("div",{className:"msp-flex-row",children:[(0,p.jsx)(L.$n,{noOverflow:!0,title:"Applies default representation preset. Set outline and occlusion effects to defaults.",onClick:()=>this.default(),style:{width:"auto"},children:"Default"}),(0,p.jsx)(L.$n,{noOverflow:!0,title:"Applies no representation preset. Enables outline and occlusion effects. Enables ignore-light representation parameter.",onClick:()=>this.stylized(),style:{width:"auto"},children:"Stylized"}),(0,p.jsx)(L.$n,{noOverflow:!0,title:"Applies illustrative representation preset. Enables outline and occlusion effects. Enables ignore-light parameter.",onClick:()=>this.illustrative(),style:{width:"auto"},children:"Illustrative"})]})}}class sn extends Z.dL{constructor(){super(...arguments),this.state={show:!1,label:""},this.update=()=>{const e=this.plugin.state.data,i=e.selectQ(c=>c.ofTransformer(jt.f.Model.ModelFromTrajectory));if(0===i.length)return void this.setState({show:!1});let s="",l=0;const u=new Set;for(const c of i){if(!c.sourceRef)continue;const h=e.cells.get(c.sourceRef).obj;if(h&&h.data.frameCount>1){if(u.has(c.sourceRef))return void this.setState({show:!1});u.add(c.sourceRef),l++,s||(s=`Model ${c.transform.params.modelIndex+1} / ${h.data.frameCount}`)}}l>1&&(s=""),this.setState({show:l>0,label:s})},this.reset=()=>ue.a.State.ApplyAction(this.plugin,{state:this.plugin.state.data,action:Uo.UpdateTrajectory.create({action:"reset"})}),this.prev=()=>ue.a.State.ApplyAction(this.plugin,{state:this.plugin.state.data,action:Uo.UpdateTrajectory.create({action:"advance",by:-1})}),this.next=()=>ue.a.State.ApplyAction(this.plugin,{state:this.plugin.state.data,action:Uo.UpdateTrajectory.create({action:"advance",by:1})})}componentDidMount(){this.subscribe(this.plugin.state.data.events.changed,this.update),this.subscribe(this.plugin.behaviors.state.isAnimating,this.update)}render(){const e=this.plugin.behaviors.state.isAnimating.value;return!this.state.show||e&&!this.state.label||!this.plugin.config.get(Bt.AB.Viewport.ShowTrajectoryControls)?null:(0,p.jsxs)("div",{className:"msp-traj-controls",children:[!e&&(0,p.jsx)(L.K0,{svg:I.je,title:"First Model",onClick:this.reset,disabled:e}),!e&&(0,p.jsx)(L.K0,{svg:I.d6,title:"Previous Model",onClick:this.prev,disabled:e}),!e&&(0,p.jsx)(L.K0,{svg:I.xf,title:"Next Model",onClick:this.next,disabled:e}),!!this.state.label&&(0,p.jsx)("span",{children:this.state.label})]})}}class Wc extends Z.dL{constructor(){super(...arguments),this.state={isBusy:!1,show:!0},this.keyUp=e=>{if(!e.ctrlKey||this.state.isBusy||e.target!==document.body)return;const i=this.plugin.managers.snapshot;if(37===e.keyCode||"ArrowLeft"===e.key)i.state.isPlaying&&i.stop(),this.prev();else if(38===e.keyCode||"ArrowUp"===e.key){if(i.state.isPlaying&&i.stop(),0===i.state.entries.size)return;const s=i.state.entries.get(0);this.update(s.snapshot.id)}else if(39===e.keyCode||"ArrowRight"===e.key)i.state.isPlaying&&i.stop(),this.next();else if(40===e.keyCode||"ArrowDown"===e.key){if(i.state.isPlaying&&i.stop(),0===i.state.entries.size)return;const s=i.state.entries.get(i.state.entries.size-1);this.update(s.snapshot.id)}},this.change=e=>{"none"!==e.target.value&&this.update(e.target.value)},this.prev=()=>{const e=this.plugin.managers.snapshot,i=e.getNextId(e.state.current,-1);i&&this.update(i)},this.next=()=>{const e=this.plugin.managers.snapshot,i=e.getNextId(e.state.current,1);i&&this.update(i)},this.togglePlay=()=>{this.plugin.managers.snapshot.togglePlay()}}componentDidMount(){this.subscribe(this.plugin.managers.snapshot.events.changed,()=>this.forceUpdate()),this.subscribe(this.plugin.behaviors.state.isBusy,e=>this.setState({isBusy:e})),this.subscribe(this.plugin.behaviors.state.isAnimating,e=>this.setState({isBusy:e})),window.addEventListener("keyup",this.keyUp,!1)}componentWillUnmount(){super.componentWillUnmount(),window.removeEventListener("keyup",this.keyUp,!1)}update(e){var i=this;return(0,R.A)(function*(){i.setState({isBusy:!0}),yield ue.a.State.Snapshots.Apply(i.plugin,{id:e}),i.setState({isBusy:!1})})()}render(){const e=this.plugin.managers.snapshot,i=e.state.entries.size;if(i<2||!this.state.show)return null;const s=e.state.current,l=e.state.isPlaying;return(0,p.jsxs)("div",{className:"msp-state-snapshot-viewport-controls",children:[(0,p.jsxs)("select",{className:"msp-form-control",value:s||"none",onChange:this.change,disabled:this.state.isBusy||l,children:[!s&&(0,p.jsx)("option",{value:"none"},"none"),e.state.entries.valueSeq().map((u,c)=>(0,p.jsxs)("option",{value:u.snapshot.id,children:[`[${c+1}/${i}]`," ",u.name||new Date(u.timestamp).toLocaleString()]},u.snapshot.id))]}),(0,p.jsx)(L.K0,{svg:l?I.xY:I.M6,title:l?"Pause":"Cycle States",onClick:this.togglePlay,disabled:!l&&this.state.isBusy}),!l&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(L.K0,{svg:I.d6,title:"Previous State",onClick:this.prev,disabled:this.state.isBusy||l}),(0,p.jsx)(L.K0,{svg:I.xf,title:"Next State",onClick:this.next,disabled:this.state.isBusy||l})]})]})}}function iu(){var r;const e=he.useContext(Z.aU),[i,s]=he.useState(0);he.useEffect(()=>{const c=e.managers.snapshot.events.changed.subscribe(()=>s(h=>h+1));return()=>c.unsubscribe()},[e]);const l=e.managers.snapshot.state.current;if(!l)return null;const u=e.managers.snapshot.getEntry(l);return null!==(r=u?.description)&&void 0!==r&&r.trim()?(0,p.jsx)("div",{className:"msp-snapshot-description-wrapper",children:(0,p.jsx)(Da,{skipHtml:!0,components:{a:ru},children:u.description})}):null}function ru({href:r,children:e,element:i}){const s=he.useContext(Z.aU);return r&&"#"===r[0]?(0,p.jsx)("a",{href:"#",onClick:l=>{l.preventDefault(),s.managers.snapshot.applyKey(r.substring(1))},children:e}):i}class ud extends Z.dL{constructor(){super(...arguments),this.state={isEmpty:!0,isExpanded:!1,isBusy:!1,isAnimating:!1,isPlaying:!1},this.toggleExpanded=()=>this.setState({isExpanded:!this.state.isExpanded}),this.stop=()=>{this.plugin.managers.animation.stop(),this.plugin.managers.snapshot.stop()}}componentDidMount(){this.subscribe(this.plugin.managers.snapshot.events.changed,()=>{this.setState(this.plugin.managers.snapshot.state.isPlaying?{isPlaying:!0,isExpanded:!1}:{isPlaying:!1})}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState(e?{isBusy:!0,isExpanded:!1,isEmpty:this.plugin.state.data.tree.transforms.size<2}:{isBusy:!1,isEmpty:this.plugin.state.data.tree.transforms.size<2})}),this.subscribe(this.plugin.behaviors.state.isAnimating,e=>{this.setState(e?{isAnimating:!0,isExpanded:!1}:{isAnimating:!1})})}render(){const e=this.plugin.managers.snapshot.state.isPlaying;if(e||this.state.isEmpty||this.plugin.managers.animation.isEmpty||!this.plugin.config.get(Bt.AB.Viewport.ShowAnimation))return null;const i=this.state.isAnimating;return(0,p.jsxs)("div",{className:"msp-animation-viewport-controls",children:[(0,p.jsxs)("div",{children:[(0,p.jsx)("div",{className:"msp-semi-transparent-background"}),(0,p.jsx)(L.K0,{svg:i||e?I.xY:I.NT,transparent:!0,title:i?"Stop":"Select Animation",onClick:i||e?this.stop:this.toggleExpanded,toggleState:this.state.isExpanded,disabled:!i&&!e&&(this.state.isBusy||this.state.isPlaying||this.state.isEmpty)})]}),this.state.isExpanded&&!this.state.isBusy&&(0,p.jsx)("div",{className:"msp-animation-viewport-controls-select",children:(0,p.jsx)(jc,{onStart:this.toggleExpanded})})]})}}class Di extends Z.dL{componentDidMount(){this.subscribe(this.plugin.behaviors.interaction.selectionMode,()=>this.forceUpdate())}render(){return this.plugin.selectionMode?(0,p.jsx)("div",{className:"msp-selection-viewport-controls",children:(0,p.jsx)(Ka,{})}):null}}class Kc extends Z.dL{constructor(){super(...arguments),this.state={labels:[]}}componentDidMount(){this.subscribe(this.plugin.behaviors.labels.highlight,e=>this.setState({labels:e.labels}))}render(){return 0===this.state.labels.length?null:(0,p.jsx)("div",{className:"msp-highlight-info",children:this.state.labels.map((e,i)=>e.indexOf("\n")>0?(0,p.jsx)("div",{className:"msp-highlight-markdown-row",children:(0,p.jsx)(Da,{skipHtml:!0,children:e})},""+i):(0,p.jsx)("div",{className:"msp-highlight-simple-row",dangerouslySetInnerHTML:{__html:e}},""+i))})}}class su extends Z.dL{componentDidMount(){this.subscribe(this.plugin.state.behaviors.events.changed,()=>this.forceUpdate())}render(){const e=[];return this.plugin.customStructureControls.forEach((i,s)=>{e.push((0,p.jsx)(i,{initiallyCollapsed:this.props.initiallyCollapsed},s))}),e.length>0?(0,p.jsx)(p.Fragment,{children:e}):null}}class ir extends Z.dL{render(){return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"msp-section-header",children:[(0,p.jsx)(I.In,{svg:I.RZ}),"Structure Tools"]}),(0,p.jsx)(od,{}),(0,p.jsx)($a,{}),(0,p.jsx)(Ni,{}),(0,p.jsx)(Mi,{}),(0,p.jsx)(Fa,{}),this.plugin.config.get(Bt.AB.VolumeStreaming.Enabled)&&(0,p.jsx)(Yo,{}),(0,p.jsx)(Ga,{}),(0,p.jsx)(su,{})]})}}var Wr=F(3386),ut=F(3177);class $c extends Z.dL{get current(){return this.props.state.behaviors.currentObject.value}componentDidMount(){this.subscribe(this.plugin.state.events.object.updated,({ref:e,state:i})=>{const s=this.current;s.ref!==e||s.state!==i||this.forceUpdate()}),this.subscribe(this.plugin.state.data.actions.events.added,()=>this.forceUpdate()),this.subscribe(this.plugin.state.data.actions.events.removed,()=>this.forceUpdate())}render(){const{state:e,nodeRef:i}=this.props,s=e.cells.get(i),l=e.actions.fromCell(s,this.plugin);if(0===l.length)return null;const u=s.transform.transformer.definition,c=s.obj?s.obj.label:u.display&&u.display.name||u.name;return(0,p.jsxs)("div",{className:"msp-state-actions",children:[!this.props.hideHeader&&(0,p.jsxs)("div",{className:"msp-section-header",children:[(0,p.jsx)(I.In,{svg:I.Mm})," ",`Actions (${c})`]}),l.map((h,f)=>(0,p.jsx)(Go,{state:e,action:h,nodeRef:i,initiallyCollapsed:0===f?!this.props.alwaysExpandFirst&&this.props.initiallyCollapsed:this.props.initiallyCollapsed},`${h.id}`))]})}}var Kr=F(39),ou=F(2768),il=F(9854),cd=F(5091);class pd extends Z.dL{render(){var e;return(0,p.jsxs)("div",{children:[(0,p.jsx)(L.X3,{icon:I.e,title:"Plugin State"}),(0,p.jsx)("div",{style:{marginBottom:"10px"},children:(0,p.jsx)(L.Yj,{header:"Save Options",initiallyExpanded:!1,children:(0,p.jsx)(au,{})})}),(0,p.jsx)(Gn,{}),(0,p.jsx)(Gc,{}),(0,p.jsx)(L.X3,{title:"Save as File",accent:"blue"}),(0,p.jsx)(lu,{}),"none"!==(null===(e=this.plugin.spec.components)||void 0===e?void 0:e.remoteState)&&(0,p.jsx)(uu,{})]})}}class lu extends Z.dL{constructor(){super(...arguments),this.downloadToFileJson=()=>{var e,i;null===(i=(e=this.props).onAction)||void 0===i||i.call(e),ue.a.State.Snapshots.DownloadToFile(this.plugin,{type:"json"})},this.downloadToFileZip=()=>{var e,i;null===(i=(e=this.props).onAction)||void 0===i||i.call(e),ue.a.State.Snapshots.DownloadToFile(this.plugin,{type:"zip"})},this.open=e=>{var i,s;e.target.files&&e.target.files[0]?(null===(s=(i=this.props).onAction)||void 0===s||s.call(i),ue.a.State.Snapshots.OpenFile(this.plugin,{file:e.target.files[0]})):this.plugin.log.error("No state file selected")}}render(){return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"msp-flex-row",children:[(0,p.jsx)(L.$n,{icon:I.U3,onClick:this.downloadToFileJson,title:"Save the state description. Input data are loaded using the provided sources. Does not work if local files are used as input.",children:"State"}),(0,p.jsx)(L.$n,{icon:I.U3,onClick:this.downloadToFileZip,title:"Save the state including the input data.",children:"Session"}),(0,p.jsxs)("div",{className:"msp-btn msp-btn-block msp-btn-action msp-loader-msp-btn-file",children:[(0,p.jsx)(I.In,{svg:I.sd,inline:!0})," Open ",(0,p.jsx)("input",{onChange:this.open,type:"file",multiple:!1,accept:".molx,.molj"})]})]}),(0,p.jsxs)("div",{className:"msp-help-text",style:{padding:"10px"},children:[(0,p.jsx)(I.In,{svg:I.Rf})," This is an experimental feature and stored states/sessions might not be openable in a future version."]})]})}}class au extends Z.dL{componentDidMount(){this.subscribe(this.plugin.state.snapshotParams,()=>this.forceUpdate())}render(){return(0,p.jsx)($e.y1,{params:ou.p.SnapshotParams,values:this.plugin.state.snapshotParams.value,onChangeValues:this.plugin.state.setSnapshotParams})}}class Gn extends Z.dL{constructor(){super(...arguments),this.state={params:Q.t.getDefaultValues(Gn.Params)},this.add=()=>{ue.a.State.Snapshots.Add(this.plugin,{name:this.state.params.name,description:this.state.params.description})},this.updateParams=e=>this.setState({params:e}),this.clear=()=>{ue.a.State.Snapshots.Clear(this.plugin,{})}}shouldComponentUpdate(e,i){return!(0,Zr.f8)(this.props,e)||!(0,Zr.f8)(this.state,i)}render(){return(0,p.jsx)("div",{children:(0,p.jsx)($r,{parent:this})})}}function Qc(r,e,i){return!!e&&r.managers.snapshot.state.entries.some(s=>(!i||s.snapshot.id!==i)&&s.key===e)}function $r({parent:r}){const[e,i]=he.useState({key:"",name:"",description:""}),s=()=>{ue.a.State.Snapshots.Add(r.plugin,{key:e.key,name:e.name,description:e.description}),i({key:"",name:"",description:""})},l=Qc(r.plugin,e.key);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(lt,{state:e,setState:i,apply:s}),(0,p.jsxs)("div",{className:"msp-flex-row",children:[(0,p.jsx)(L.K0,{onClick:r.clear,svg:I.mf,title:"Remove All"}),(0,p.jsx)(L.$n,{onClick:s,icon:l?void 0:I.CR,style:{textAlign:"right"},commit:l?"off":"on",disabled:l,children:l?"Key must be unique":"Add"})]})]})}Gn.Params={name:Q.t.Text(),description:Q.t.Text()};class Gc extends Z.dL{constructor(){super(...arguments),this.state={editingId:void 0},this.edit=e=>{const i=e.currentTarget.getAttribute("data-id");i&&this.setState({editingId:i===this.state.editingId?void 0:i})},this.doneEdit=()=>this.setState({editingId:void 0}),this.apply=e=>{const i=e.currentTarget.getAttribute("data-id");i&&ue.a.State.Snapshots.Apply(this.plugin,{id:i})},this.remove=e=>{const i=e.currentTarget.getAttribute("data-id");i&&ue.a.State.Snapshots.Remove(this.plugin,{id:i})},this.moveUp=e=>{const i=e.currentTarget.getAttribute("data-id");i&&ue.a.State.Snapshots.Move(this.plugin,{id:i,dir:-1})},this.moveDown=e=>{const i=e.currentTarget.getAttribute("data-id");i&&ue.a.State.Snapshots.Move(this.plugin,{id:i,dir:1})},this.replace=e=>{const i=e.currentTarget.getAttribute("data-id");i&&ue.a.State.Snapshots.Replace(this.plugin,{id:i})}}componentDidMount(){this.subscribe(this.plugin.managers.snapshot.events.changed,()=>this.forceUpdate())}render(){const e=this.plugin.managers.snapshot.state.current,i=[];return this.plugin.managers.snapshot.state.entries.forEach(s=>{var l;i.push((0,p.jsxs)("li",{className:"msp-flex-row",children:[(0,p.jsxs)(L.$n,{"data-id":s.snapshot.id,onClick:this.apply,className:"msp-no-overflow",children:[(0,p.jsxs)("span",{style:{fontWeight:s.snapshot.id===e?"bold":void 0},children:[!!s.key&&`[${s.key}] `,s.name||new Date(s.timestamp).toLocaleString()]})," ",(0,p.jsx)("small",{children:`${s.snapshot.durationInMs?(0,il.H)(s.snapshot.durationInMs,!1):""}`})]}),(0,p.jsx)(L.K0,{svg:I.Hk,"data-id":s.snapshot.id,title:"Edit",onClick:this.edit,flex:"28px"}),(0,p.jsx)(L.K0,{svg:I.p8,"data-id":s.snapshot.id,title:"Move Up",onClick:this.moveUp,flex:"20px"}),(0,p.jsx)(L.K0,{svg:I.qp,"data-id":s.snapshot.id,title:"Move Down",onClick:this.moveDown,flex:"20px"}),(0,p.jsx)(L.K0,{svg:I.sy,"data-id":s.snapshot.id,title:"Replace",onClick:this.replace,flex:"20px"}),(0,p.jsx)(L.K0,{svg:I.mf,"data-id":s.snapshot.id,title:"Remove",onClick:this.remove,flex:"20px"})]},s.snapshot.id)),this.state.editingId===s.snapshot.id&&i.push((0,p.jsx)(dd,{entry:s,plugin:this.plugin,done:this.doneEdit},`${s.snapshot.id}-edit`));const u=s.image&&(null===(l=this.plugin.managers.asset.get(s.image))||void 0===l?void 0:l.file);u&&i.push((0,p.jsx)("li",{className:"msp-state-image-row",children:(0,p.jsx)(L.$n,{"data-id":s.snapshot.id,onClick:this.apply,children:(0,p.jsx)("img",{draggable:!1,src:URL.createObjectURL(u)})})},`${s.snapshot.id}-image`))}),(0,p.jsx)(p.Fragment,{children:(0,p.jsx)("ul",{style:{listStyle:"none",marginTop:"10px"},className:"msp-state-list",children:i})})}}function lt({state:r,setState:e,apply:i}){const s=he.useRef(),l=he.useRef(),[u,c]=he.useState(!1);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(L.eJ,{label:"Name",control:(0,p.jsx)("input",{type:"text",value:r.name,placeholder:"Name",onChange:h=>e({...r,name:h.target.value}),onKeyUp:h=>{var f;"Enter"===h.key&&(null===(f=s.current)||void 0===f||f.focus())}})}),(0,p.jsx)(L.eJ,{label:(0,p.jsxs)(p.Fragment,{children:["Key",(0,p.jsx)($e.Z4,{show:u,toggle:()=>c(h=>!h)})]}),control:(0,p.jsx)("input",{type:"text",ref:s,value:r.key,placeholder:"Key (optional)",onChange:h=>e({...r,key:h.target.value}),onKeyUp:h=>{var f;"Enter"===h.key&&(null===(f=l.current)||void 0===f||f.focus())}})}),u&&(0,p.jsx)("div",{className:"msp-control-offset",children:(0,p.jsx)($e.jH,{description:"Optional snapshot key used to activate snapshots from descriptions, labels, etc."})}),(0,p.jsx)("div",{className:"msp-flex-row msp-text-area-wrapper",style:{marginBottom:1},children:(0,p.jsx)("textarea",{ref:l,placeholder:"Markdown Description\n\n- Use [title](#key) to link to a snapshot",className:"msp-form-control",value:r.description,onChange:h=>e({...r,description:h.target.value}),onKeyUp:h=>{"Enter"===h.key&&h.ctrlKey&&i(r)}})})]})}function dd({entry:r,plugin:e,done:i}){var s,l,u;const[c,h]=he.useState({key:null!==(s=r.key)&&void 0!==s?s:"",name:null!==(l=r.name)&&void 0!==l?l:"",description:null!==(u=r.description)&&void 0!==u?u:""}),f=()=>{e.managers.snapshot.update(r,c),i()},y=Qc(e,c.key,r.snapshot.id);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(lt,{state:c,setState:h,apply:f}),(0,p.jsx)("div",{className:"msp-flex-row",style:{marginBottom:1},children:(0,p.jsx)(L.$n,{onClick:f,icon:y?void 0:I.Xq,style:{textAlign:"right"},commit:y?"off":"on",disabled:y,children:y?"Key must be unique":"Apply"})})]})}class uu extends Z.dL{constructor(){var e;super(...arguments),e=this,this.Params={name:Q.t.Text(),options:Q.t.Group({description:Q.t.Text(),playOnLoad:Q.t.Boolean(!1),serverUrl:Q.t.Text(this.plugin.config.get(Bt.AB.State.CurrentServer))})},this.state={params:Q.t.getDefaultValues(this.Params),entries:(0,Kr.uY)(),isBusy:!1},this.ListOnlyParams={options:Q.t.Group({serverUrl:Q.t.Text(this.plugin.config.get(Bt.AB.State.CurrentServer))},{isFlat:!0})},this._mounted=!1,this.refresh=(0,R.A)(function*(){try{e.setState({isBusy:!0}),e.plugin.config.set(Bt.AB.State.CurrentServer,e.state.params.options.serverUrl);const i=(yield e.plugin.runTask(e.plugin.fetch({url:e.serverUrl("list"),type:"json"})))||[];i.sort((l,u)=>l.isSticky===u.isSticky?l.timestamp-u.timestamp:l.isSticky?-1:1);const s=(0,Kr.uY)().asMutable();for(const l of i)s.set(l.id,{...l,url:e.serverUrl(`get/${l.id}`),removeUrl:e.serverUrl(`remove/${l.id}`)});e._mounted&&e.setState({entries:s.asImmutable(),isBusy:!1})}catch(i){console.error(i),e.plugin.log.error("Error fetching remote snapshots"),e._mounted&&e.setState({entries:(0,Kr.uY)(),isBusy:!1})}}),this.upload=(0,R.A)(function*(){e.setState({isBusy:!0}),e.plugin.config.set(Bt.AB.State.CurrentServer,e.state.params.options.serverUrl),yield ue.a.State.Snapshots.Upload(e.plugin,{name:e.state.params.name,description:e.state.params.options.description,playOnLoad:e.state.params.options.playOnLoad,serverUrl:e.state.params.options.serverUrl}),e.plugin.log.message("Snapshot uploaded."),e._mounted&&(e.setState({isBusy:!1}),e.refresh())}),this.fetch=function(){var i=(0,R.A)(function*(s){const l=s.currentTarget.getAttribute("data-id");if(!l)return;const u=e.state.entries.get(l);if(u){e.setState({isBusy:!0});try{yield ue.a.State.Snapshots.Fetch(e.plugin,{url:u.url})}finally{e._mounted&&e.setState({isBusy:!1})}}});return function(s){return i.apply(this,arguments)}}(),this.remove=function(){var i=(0,R.A)(function*(s){const l=s.currentTarget.getAttribute("data-id");if(!l)return;const u=e.state.entries.get(l);if(u){e.setState({entries:e.state.entries.remove(l)});try{yield fetch(u.removeUrl)}catch(c){console.error(c)}}});return function(s){return i.apply(this,arguments)}}()}componentDidMount(){this.refresh(),this._mounted=!0}componentWillUnmount(){super.componentWillUnmount(),this._mounted=!1}serverUrl(e){return e?(0,cd.r)(this.state.params.options.serverUrl,e):this.state.params.options.serverUrl}render(){return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(L.X3,{title:"Remote States",accent:"blue"}),!this.props.listOnly&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)($e.y1,{params:this.Params,values:this.state.params,onEnter:this.upload,onChange:e=>{this.setState({params:{...this.state.params,[e.name]:e.value}})},isDisabled:this.state.isBusy}),(0,p.jsxs)("div",{className:"msp-flex-row",children:[(0,p.jsx)(L.K0,{onClick:this.refresh,disabled:this.state.isBusy,svg:I.ij}),(0,p.jsx)(L.$n,{icon:I.XI,onClick:this.upload,disabled:this.state.isBusy,commit:!0,children:"Upload"})]})]}),(0,p.jsx)(hd,{entries:this.state.entries,isBusy:this.state.isBusy,serverUrl:this.state.params.options.serverUrl,fetch:this.fetch,remove:this.props.listOnly?void 0:this.remove}),this.props.listOnly&&(0,p.jsxs)("div",{style:{marginTop:"10px"},children:[(0,p.jsx)($e.y1,{params:this.ListOnlyParams,values:this.state.params,onEnter:this.upload,onChange:e=>{this.setState({params:{...this.state.params,[e.name]:e.value}})},isDisabled:this.state.isBusy}),(0,p.jsx)("div",{className:"msp-flex-row",children:(0,p.jsx)(L.$n,{onClick:this.refresh,disabled:this.state.isBusy,icon:I.ij,children:"Refresh"})})]})]})}}class hd extends Z.jB{constructor(){var e;super(...arguments),e=this,this.open=function(){var i=(0,R.A)(function*(s){const l=s.currentTarget.getAttribute("data-id");if(!l)return;const u=e.props.entries.get(l);if(!u)return;s.preventDefault();let c=`${window.location}`;const h=c.indexOf("?");h>0&&(c=c.substr(0,h)),window.open(`${c}?snapshot-url=${encodeURIComponent(u.url)}`,"_blank")});return function(s){return i.apply(this,arguments)}}()}render(){return(0,p.jsx)("ul",{style:{listStyle:"none",marginTop:"10px"},className:"msp-state-list",children:this.props.entries.valueSeq().map(e=>(0,p.jsxs)("li",{className:"msp-flex-row",children:[(0,p.jsxs)(L.$n,{"data-id":e.id,onClick:this.props.fetch,disabled:this.props.isBusy,onContextMenu:this.open,title:"Click to download, right-click to open in a new tab.",children:[e.name||new Date(e.timestamp).toLocaleString()," ",(0,p.jsx)("small",{children:e.description})]}),!e.isSticky&&this.props.remove&&(0,p.jsx)(L.K0,{svg:I.mf,"data-id":e.id,title:"Remove",onClick:this.props.remove,disabled:this.props.isBusy,small:!0})]},e.id))})}}var md=F(152),Yc=F(6323);class cu extends Z.dL{constructor(){super(...arguments),this.state={showActions:!0}}componentDidMount(){this.subscribe(this.plugin.state.events.cell.created,e=>{e.cell.transform.parent===tt.Cn.RootRef&&this.forceUpdate()}),this.subscribe(this.plugin.state.events.cell.removed,e=>{e.parent===tt.Cn.RootRef&&this.forceUpdate()})}static getDerivedStateFromProps(e,i){const u=0===e.state.tree.children.get(e.state.tree.root.ref).size;return i.showActions===u?null:{showActions:u}}render(){const e=this.props.state.tree.root.ref;return this.state.showActions?(0,p.jsxs)("div",{style:{margin:"10px",cursor:"default"},children:[(0,p.jsx)("p",{children:"Nothing to see here yet."}),(0,p.jsxs)("p",{children:["Structures and Volumes can be loaded from the ",(0,p.jsx)(I.In,{svg:I.yf})," tab."]})]}):(0,p.jsx)(On,{cell:this.props.state.cells.get(e),depth:0})}}class On extends Z.dL{constructor(){super(...arguments),this.state={isCollapsed:!!this.props.cell.state.isCollapsed,isNull:On.isNull(this.props.cell),showLabel:On.showLabel(this.props.cell)}}is(e){return e.ref===this.ref&&e.state===this.props.cell.parent}get ref(){return this.props.cell.transform.ref}componentDidMount(){this.subscribe(this.plugin.state.events.cell.stateUpdated,e=>{this.props.cell===e.cell&&this.is(e)&&e.state.cells.has(this.ref)&&(this.state.isCollapsed!==!!e.cell.state.isCollapsed||this.state.isNull!==On.isNull(e.cell)||this.state.showLabel!==On.showLabel(e.cell))&&this.forceUpdate()}),this.subscribe(this.plugin.state.events.cell.created,e=>{this.props.cell.parent===e.state&&this.ref===e.cell.transform.parent&&this.forceUpdate()}),this.subscribe(this.plugin.state.events.cell.removed,e=>{this.props.cell.parent===e.state&&this.ref===e.parent&&this.forceUpdate()})}static getDerivedStateFromProps(e,i){const s=On.isNull(e.cell),l=On.showLabel(e.cell);return!!e.cell.state.isCollapsed===i.isCollapsed&&i.isNull===s&&i.showLabel===l?null:{isCollapsed:!!e.cell.state.isCollapsed,isNull:s,showLabel:l}}static hasDecorator(e){var i;const s=e.parent.tree.children.get(e.transform.ref);return 1===s.size&&!(null===(i=e.parent)||void 0===i||!i.tree.transforms.get(s.first()).transformer.definition.isDecorator)}static isNull(e){return!e||!e.parent||e.obj===tt.BM.Null||!e.parent.tree.transforms.has(e.transform.ref)}static showLabel(e){return e.transform.ref!==tt.Cn.RootRef&&("ok"!==e.status||!e.state.isGhost&&!On.hasDecorator(e))}render(){if(this.state.isNull)return null;const e=this.props.cell,i=e.parent.tree.children.get(this.ref);if(!this.state.showLabel)return 0===i.size?null:(0,p.jsx)(p.Fragment,{children:i.map(l=>(0,p.jsx)(On,{cell:e.parent.cells.get(l),depth:this.props.depth},l))});const s=this.props.depth+1;return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(Cn,{cell:e,depth:this.props.depth}),0===i.size?void 0:(0,p.jsx)("div",{style:{display:this.state.isCollapsed?"none":"block"},children:i.map(l=>(0,p.jsx)(On,{cell:e.parent.cells.get(l),depth:s},l))})]})}}class Cn extends Z.dL{constructor(){super(...arguments),this.state={isCurrent:this.props.cell.parent.current===this.ref,isCollapsed:!!this.props.cell.state.isCollapsed,action:void 0,currentAction:void 0},this.setCurrent=e=>{e?.preventDefault(),e?.currentTarget.blur(),ue.a.State.SetCurrentObject(this.plugin,{state:this.props.cell.parent,ref:this.ref})},this.setCurrentRoot=e=>{e?.preventDefault(),e?.currentTarget.blur(),ue.a.State.SetCurrentObject(this.plugin,{state:this.props.cell.parent,ref:tt.Cn.RootRef})},this.remove=e=>{e?.preventDefault(),ue.a.State.RemoveObject(this.plugin,{state:this.props.cell.parent,ref:this.ref,removeParentGhosts:!0})},this.toggleVisible=e=>{e.preventDefault(),ue.a.State.ToggleVisibility(this.plugin,{state:this.props.cell.parent,ref:this.ref}),e.currentTarget.blur()},this.toggleExpanded=e=>{e.preventDefault(),ue.a.State.ToggleExpanded(this.plugin,{state:this.props.cell.parent,ref:this.ref}),e.currentTarget.blur()},this.highlight=e=>{e.preventDefault(),ue.a.Interactivity.Object.Highlight(this.plugin,{state:this.props.cell.parent,ref:this.ref}),e.currentTarget.blur()},this.clearHighlight=e=>{e.preventDefault(),ue.a.Interactivity.ClearHighlights(this.plugin),e.currentTarget.blur()},this.hideApply=()=>{this.setCurrentRoot()},this.selectAction=e=>{e&&(0,e?.value)()}}is(e){return e.ref===this.ref&&e.state===this.props.cell.parent}get ref(){return this.props.cell.transform.ref}componentDidMount(){this.subscribe(this.plugin.state.events.cell.stateUpdated.pipe((0,mt.p)(e=>this.is(e)),(0,md.B)(33)),e=>{this.forceUpdate()}),this.subscribe(this.props.cell.parent.behaviors.currentObject,e=>{this.is(e)?e.state.transforms.has(this.ref)&&this._setCurrent(this.props.cell.parent.current===this.ref,!!this.props.cell.state.isCollapsed):this.state.isCurrent&&e.state.transforms.has(this.ref)&&this._setCurrent(this.props.cell.parent.current===this.ref,this.state.isCollapsed)})}_setCurrent(e,i){this.setState(e?{isCurrent:e,action:"options",currentAction:void 0,isCollapsed:i}:{isCurrent:e,action:void 0,currentAction:void 0,isCollapsed:i})}static getDerivedStateFromProps(e,i){const s=e.cell.parent.current===e.cell.transform.ref,l=!!e.cell.state.isCollapsed;return i.isCollapsed===l&&i.isCurrent===s?null:{isCurrent:s,isCollapsed:l,action:void 0,currentAction:void 0}}get actions(){const e=this.props.cell,i=[...e.parent.actions.fromCell(e,this.plugin)];if(0!==i.length)return i.sort((s,l)=>s.definition.display.nameEe.W.Item(s.definition.display.name,()=>this.setState({action:"apply",currentAction:s})))]}updates(e){const i=this.props.cell,s=Yc.P.getDecoratorChain(i.parent,i.transform.ref),l=[];for(let u=s.length-1;u>=0;u--){const c=s[u];l.push((0,p.jsx)(pi,{state:i.parent,transform:c.transform,noMargin:!0,wrapInExpander:!0,expanderHeaderLeftMargin:e},`${c.transform.transformer.id}-${u}`))}return(0,p.jsx)("div",{className:"msp-tree-updates-wrapper",children:l})}render(){const e=this.props.cell,i=e.transform;if(!e)return null;const s=this.is(e.parent.behaviors.currentObject.value),l="error"!==e.status&&"ok"!==e.status;let u;if("error"!==e.status&&e.obj){const b=e.obj;u=(0,p.jsxs)(L.$n,{className:`msp-btn-tree-label msp-type-class-${b.type.typeClass}`,noOverflow:!0,disabled:l,title:`${b.label} ${b.description?b.description:""}`,onClick:this.state.isCurrent?this.setCurrentRoot:this.setCurrent,children:[(0,p.jsx)("span",{children:b.label})," ",b.description?(0,p.jsx)("small",{children:b.description}):void 0]})}else{const b="error"===e.status?e.errorText:i.transformer.definition.display.name;u=(0,p.jsxs)(L.$n,{className:"msp-btn-tree-label msp-no-hover-outline",noOverflow:!0,title:b,onClick:this.state.isCurrent?this.setCurrentRoot:this.setCurrent,disabled:l,children:["error"===e.status&&(0,p.jsxs)("b",{children:["[",e.status,"]"]})," ",(0,p.jsx)("span",{children:b})]})}const c=e.parent.tree.children.get(this.ref),h=e.state,f=(0,p.jsx)(L.K0,{svg:h.isCollapsed?I.Cp:I.DM,flex:"20px",disabled:l,onClick:this.toggleExpanded,transparent:!0,className:"msp-no-hover-outline",style:{visibility:c.size>0?"visible":"hidden"}}),y=e.state.isLocked?void 0:(0,p.jsx)(L.K0,{svg:I.mf,onClick:this.remove,disabled:l,small:!0,toggleState:!1}),g=(0,p.jsx)(L.K0,{svg:h.isHidden?I.qF:I.zs,toggleState:!1,disabled:l,small:!0,onClick:this.toggleVisible}),w=(0,p.jsxs)("div",{className:"msp-flex-row msp-tree-row"+(s?" msp-tree-row-current":""),onMouseEnter:this.highlight,onMouseLeave:this.clearHighlight,style:{marginLeft:8*this.props.depth+"px"},children:[f,u,y,g]});if(!s)return w;if("apply"===this.state.action&&this.state.currentAction)return(0,p.jsxs)("div",{style:{marginBottom:"1px"},children:[w,(0,p.jsx)(L.tW,{header:`Apply ${this.state.currentAction.definition.display.name}`,initialExpanded:!0,hideExpander:!0,hideOffset:!1,onHeaderClick:this.hideApply,topRightIcon:I.X6,headerLeftMargin:8*this.props.depth+21+"px",children:(0,p.jsx)(Go,{onApply:this.hideApply,state:this.props.cell.parent,action:this.state.currentAction,nodeRef:this.props.cell.transform.ref,hideHeader:!0,noMargin:!0})})]});if("options"===this.state.action){const b=this.actions,C=this.updates(8*this.props.depth+21+"px");return(0,p.jsxs)("div",{style:{marginBottom:"1px"},children:[w,C,b&&(0,p.jsx)("div",{style:{marginLeft:8*this.props.depth+21+"px",marginTop:"-1px"},children:(0,p.jsx)(Ee.W,{items:b,onSelect:this.selectAction})})]})}return w}}class pu extends Z.dL{componentDidMount(){this.subscribe(this.plugin.state.behaviors.events.changed,()=>this.forceUpdate())}render(){const e=[];return this.plugin.customImportControls.forEach((i,s)=>{e.push((0,p.jsx)(i,{initiallyCollapsed:this.props.initiallyCollapsed},s))}),e.length>0?(0,p.jsx)(p.Fragment,{children:e}):null}}class fd extends Z.dL{constructor(){var e;super(...arguments),this.state={tab:this.plugin.behaviors.layout.leftPanelTabName.value},this.set=i=>{if(this.state.tab===i)return this.setState({tab:"none"},()=>this.plugin.behaviors.layout.leftPanelTabName.next("none")),void ue.a.Layout.Update(this.plugin,{state:{regionState:{...this.plugin.layout.state.regionState,left:"collapsed"}}});this.setState({tab:i},()=>this.plugin.behaviors.layout.leftPanelTabName.next(i)),"full"!==this.plugin.layout.state.regionState.left&&ue.a.Layout.Update(this.plugin,{state:{regionState:{...this.plugin.layout.state.regionState,left:"full"}}})},this.tabs={none:(0,p.jsx)(p.Fragment,{}),root:(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(L.X3,{icon:I.yf,title:"Home"}),(0,p.jsx)($c,{state:this.plugin.state.data,nodeRef:tt.Cn.RootRef,hideHeader:!0,initiallyCollapsed:!0,alwaysExpandFirst:!0}),(0,p.jsx)(pu,{}),"none"!==(null===(e=this.plugin.spec.components)||void 0===e?void 0:e.remoteState)&&(0,p.jsx)(uu,{listOnly:!0})]}),data:(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(L.X3,{icon:I.ID,title:(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(rr,{})," State Tree"]})}),(0,p.jsx)(cu,{state:this.plugin.state.data})]}),states:(0,p.jsx)(pd,{}),settings:(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(L.X3,{icon:I.Hk,title:"Plugin Settings"}),(0,p.jsx)(rl,{})]}),help:(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(L.X3,{icon:I.ml,title:"Help"}),(0,p.jsx)(Wa,{})]})}}componentDidMount(){this.subscribe(this.plugin.behaviors.layout.leftPanelTabName,e=>{this.state.tab!==e&&this.setState({tab:e}),"none"===e&&"collapsed"!==this.plugin.layout.state.regionState.left&&ue.a.Layout.Update(this.plugin,{state:{regionState:{...this.plugin.layout.state.regionState,left:"collapsed"}}})}),this.subscribe(this.plugin.state.data.events.changed,({state:e})=>{"data"===this.state.tab&&1===e.cells.size&&this.set("root")})}render(){const e=this.state.tab;return(0,p.jsxs)("div",{className:"msp-left-panel-controls",children:[(0,p.jsxs)("div",{className:"msp-left-panel-controls-buttons",children:[(0,p.jsx)(L.K0,{svg:I.yf,toggleState:"root"===e,transparent:!0,onClick:()=>this.set("root"),title:"Home"}),(0,p.jsx)(zi,{set:this.set}),(0,p.jsx)(L.K0,{svg:I.e,toggleState:"states"===e,transparent:!0,onClick:()=>this.set("states"),title:"Plugin State"}),(0,p.jsx)(L.K0,{svg:I.ml,toggleState:"help"===e,transparent:!0,onClick:()=>this.set("help"),title:"Help"}),(0,p.jsx)("div",{className:"msp-left-panel-controls-buttons-bottom",children:(0,p.jsx)(L.K0,{svg:I.Hk,toggleState:"settings"===e,transparent:!0,onClick:()=>this.set("settings"),title:"Settings"})})]}),(0,p.jsx)("div",{className:"msp-scrollable-container",children:this.tabs[e]})]})}}class zi extends Z.dL{constructor(){super(...arguments),this.state={changed:!1}}get tab(){return this.plugin.behaviors.layout.leftPanelTabName.value}componentDidMount(){this.subscribe(this.plugin.behaviors.layout.leftPanelTabName,e=>{"data"===this.tab?this.setState({changed:!1}):this.forceUpdate()}),this.subscribe(this.plugin.state.data.events.changed,e=>{"data"!==this.tab&&this.setState({changed:!0})})}render(){return(0,p.jsx)(L.K0,{svg:I.ID,toggleState:"data"===this.tab,transparent:!0,onClick:()=>this.props.set("data"),title:"State Tree",style:{position:"relative"},extraContent:this.state.changed?(0,p.jsx)("div",{className:"msp-left-panel-controls-button-data-dirty"}):void 0})}}class rl extends Z.dL{constructor(){super(...arguments),this.setSettings=e=>{ue.a.Canvas3D.SetSettings(this.plugin,{settings:{[e.name]:e.value}})},this.setCanvas3DContextProps=e=>{var i;null===(i=this.plugin.canvas3dContext)||void 0===i||i.setProps({[e.name]:e.value}),this.plugin.events.canvas3d.settingsUpdated.next(void 0)}}componentDidMount(){this.subscribe(this.plugin.events.canvas3d.settingsUpdated,()=>this.forceUpdate()),this.subscribe(this.plugin.layout.events.updated,()=>this.forceUpdate()),this.plugin.canvas3d&&this.subscribe(this.plugin.canvas3d.camera.stateChanged.pipe((0,Wr.c)(500,void 0,{leading:!0,trailing:!0})),e=>{(void 0!==e.radiusMax||void 0!==e.radius)&&this.forceUpdate()})}render(){return(0,p.jsxs)(p.Fragment,{children:[this.plugin.canvas3d&&this.plugin.canvas3dContext&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(L.X3,{title:"Viewport"}),(0,p.jsx)($e.y1,{params:ut._i,values:this.plugin.canvas3d.props,onChange:this.setSettings}),(0,p.jsx)($e.y1,{params:ut.H7.Params,values:this.plugin.canvas3dContext.props,onChange:this.setCanvas3DContextProps})]}),(0,p.jsx)(L.X3,{title:"Behavior"}),(0,p.jsx)(cu,{state:this.plugin.state.behaviors})]})}}class rr extends Z.dL{constructor(){super(...arguments),this.remove=e=>{e.preventDefault(),ue.a.State.RemoveObject(this.plugin,{state:this.plugin.state.data,ref:tt.Cn.RootRef})}}componentDidMount(){this.subscribe(this.plugin.state.events.cell.created,e=>{e.cell.transform.parent===tt.Cn.RootRef&&this.forceUpdate()}),this.subscribe(this.plugin.state.events.cell.removed,e=>{e.parent===tt.Cn.RootRef&&this.forceUpdate()})}render(){return 0===this.plugin.state.data.tree.children.get(tt.Cn.RootRef).size?null:(0,p.jsx)(L.K0,{svg:I.mf,onClick:this.remove,title:"Remove All",style:{display:"inline-block"},small:!0,className:"msp-no-hover-outline",transparent:!0})}}var sl=F(1413),ol=F(2443),Vt=F(4080);class du extends Z.dL{constructor(){super(...arguments),this.parentDiv=he.createRef(),this.lastMouseOverSeqIdx=-1,this.highlightQueue=new sl.B,this.lociHighlightProvider=(e,i)=>{this.props.sequenceWrapper.markResidue(e.loci,i)&&this.updateMarker()},this.lociSelectionProvider=(e,i)=>{this.props.sequenceWrapper.markResidue(e.loci,i)&&this.updateMarker()},this.contextMenu=e=>{e.preventDefault()},this.mouseDownLoci=void 0,this.mouseDown=e=>{e.stopPropagation();const i=this.getSeqIdx(e),s=this.getLoci(i),l=(0,Vt.Y7)(e.nativeEvent),u=(0,Vt.vq)(e.nativeEvent),c=(0,Vt.RN)(e.nativeEvent);this.click(s,l,u,c),this.mouseDownLoci=s},this.mouseUp=e=>{if(e.stopPropagation(),void 0===this.mouseDownLoci)return;const i=this.getSeqIdx(e),s=this.getLoci(i);if(s&&!z.iZ.Loci.areEqual(this.mouseDownLoci,s)){const l=(0,Vt.Y7)(e.nativeEvent),u=(0,Vt.vq)(e.nativeEvent),c=(0,Vt.RN)(e.nativeEvent),h=this.mouseDownLoci.elements[0],f=s.elements[0],y=Math.min(Ce.CD.min(h.indices),Ce.CD.min(f.indices)),g=Math.max(Ce.CD.max(h.indices),Ce.CD.max(f.indices)),x=z.iZ.Loci(s.structure,[{unit:h.unit,indices:Ce.CD.ofRange(y,g)}]);this.click(z.iZ.Loci.subtract(x,this.mouseDownLoci),l,u,c)}this.mouseDownLoci=void 0},this.location=z.iZ.Location.create(void 0),this.mouseMove=e=>{e.stopPropagation();const i=(0,Vt.Y7)(e.nativeEvent),s=(0,Vt.vq)(e.nativeEvent),l=(0,Vt.RN)(e.nativeEvent),u=e.target;if(!u||!u.getAttribute){if(-1===this.lastMouseOverSeqIdx)return;return this.lastMouseOverSeqIdx=-1,void this.highlightQueue.next({seqIdx:-1,buttons:i,button:s,modifiers:l})}const c=u.hasAttribute("data-seqid")?+u.getAttribute("data-seqid"):-1;if(this.lastMouseOverSeqIdx!==c)if(this.lastMouseOverSeqIdx=c,void 0!==this.mouseDownLoci){const h=this.getLoci(c);this.hover(h,Vt.qt.Flag.None,Vt.qt.Flag.None,{...l,shift:!0})}else this.highlightQueue.next({seqIdx:c,buttons:i,button:s,modifiers:l})},this.mouseLeave=e=>{if(e.stopPropagation(),this.mouseDownLoci=void 0,-1===this.lastMouseOverSeqIdx)return;this.lastMouseOverSeqIdx=-1;const i=(0,Vt.Y7)(e.nativeEvent),s=(0,Vt.vq)(e.nativeEvent),l=(0,Vt.RN)(e.nativeEvent);this.highlightQueue.next({seqIdx:-1,buttons:i,button:s,modifiers:l})}}get sequenceNumberPeriod(){return void 0!==this.props.sequenceNumberPeriod?this.props.sequenceNumberPeriod:this.props.sequenceWrapper.length>10?10:this.getSequenceNumber(this.props.sequenceWrapper.length-1).length>1?5:1}componentDidMount(){this.plugin.managers.interactivity.lociHighlights.addProvider(this.lociHighlightProvider),this.plugin.managers.interactivity.lociSelects.addProvider(this.lociSelectionProvider),this.subscribe(this.highlightQueue.pipe((0,Wr.c)(3*16.666,void 0,{leading:!0,trailing:!0})),e=>{const i=this.getLoci(e.seqIdx<0?void 0:e.seqIdx);this.hover(i,e.buttons,e.button,e.modifiers)})}componentWillUnmount(){super.componentWillUnmount(),this.plugin.managers.interactivity.lociHighlights.removeProvider(this.lociHighlightProvider),this.plugin.managers.interactivity.lociSelects.removeProvider(this.lociSelectionProvider)}getLoci(e){if(void 0!==e){const i=this.props.sequenceWrapper.getLoci(e);if(!z.iZ.Loci.isEmpty(i))return i}}getSeqIdx(e){let i;const s=e.target;return s&&s.getAttribute&&(i=s.hasAttribute("data-seqid")?+s.getAttribute("data-seqid"):void 0),i}hover(e,i,s,l){const u={current:ol.YL.Loci.Empty,buttons:i,button:s,modifiers:l};void 0!==e&&!z.iZ.Loci.isEmpty(e)&&(u.current={loci:e}),this.plugin.behaviors.interaction.hover.next(u)}click(e,i,s,l){const u={current:ol.YL.Loci.Empty,buttons:i,button:s,modifiers:l};void 0!==e&&!z.iZ.Loci.isEmpty(e)&&(u.current={loci:e}),this.plugin.behaviors.interaction.click.next(u)}getBackgroundColor(e){return typeof e>"u"&&console.error("unexpected marker value"),0===e?"":e%2==0?"rgb(51, 255, 25)":"rgb(255, 102, 153)"}getResidueClass(e,i){return i.length>1?this.props.sequenceWrapper.residueClass(e)+(0===e?" msp-sequence-residue-long-begin":" msp-sequence-residue-long"):this.props.sequenceWrapper.residueClass(e)}residue(e,i,s){return(0,p.jsx)("span",{"data-seqid":e,style:{backgroundColor:this.getBackgroundColor(s)},className:this.getResidueClass(e,i),children:`\u200b${i}\u200b`},e)}getSequenceNumberClass(e,i,s){const l=["msp-sequence-number"];return i.startsWith("-")?l.push(s.length>1&&e>0?"msp-sequence-number-long-negative":"msp-sequence-number-negative"):s.length>1&&e>0&&l.push("msp-sequence-number-long"),l.join(" ")}getSequenceNumber(e){let i="";const s=this.props.sequenceWrapper.getLoci(e),l=z.iZ.Loci.getFirstLocation(s,this.location);return l&&(z.Nf.isAtomic(l.unit)?i=`${z.StructureProperties.residue.auth_seq_id(l)}${z.StructureProperties.residue.pdbx_PDB_ins_code(l)||""}`:z.Nf.isCoarse(l.unit)&&(i=`${e+1}`)),i}padSeqNum(e){return e.length<5?e+new Array(5-e.length+1).join("\xa0"):e}getSequenceNumberSpan(e,i){const s=this.getSequenceNumber(e);return(0,p.jsx)("span",{className:this.getSequenceNumberClass(e,s,i),children:this.padSeqNum(s)},`marker-${e}`)}updateMarker(){if(!this.parentDiv.current)return;const e=this.parentDiv.current.children,{markerArray:i}=this.props.sequenceWrapper,s=!this.props.hideSequenceNumbers,l=this.sequenceNumberPeriod;let u=0;for(let c=0,h=i.length;cthis.sequence.index(c);if(z.iZ.Loci.is(e)){if(!z.oE.areRootsEquivalent(e.structure,l))return!1;e=z.iZ.Loci.remap(e,l);for(const c of e.elements)this.unitMap.has(c.unit.id)&&(s=z.Nf.isAtomic(c.unit)?Xc(c,i,this.markerArray,u)||s:hu(c,i,this.markerArray,u)||s)}else if(z.oE.isLoci(e)){if(!z.oE.areRootsEquivalent(e.structure,l))return!1;(0,Rn.BH)(this.markerArray,this.observed,i)&&(s=!0)}return s}getLoci(e){const i=function al(r,e,i){return z.RT.generators.atoms({unitTest:s=>z.StructureProperties.unit.chainGroupId(s.element)===r&&z.StructureProperties.unit.operator_name(s.element)===e,residueTest:s=>0===s.element.unit.kind?z.StructureProperties.residue.label_seq_id(s.element)===i:z.StructureProperties.coarse.seq_id_begin(s.element)<=i&&z.StructureProperties.coarse.seq_id_end(s.element)>=i})}(this.data.units[0].chainGroupId,this.data.units[0].conformation.operator.name,this.seqId(e));return z.cv.toLociWithSourceUnits(z.Oz.run(i,this.data.structure))}constructor(e){const i=z.iZ.Location.create(e.structure,e.units[0],e.units[0].elements[0]),s=e.units[0].model.sequence.byEntityKey[z.StructureProperties.entity.key(i)],l=s.sequence.length;super(e,new Uint8Array(l),l),this.unitMap=new Map;for(const h of e.units)this.unitMap.set(h.id,h);this.sequence=s.sequence,this.missing=e.units[0].model.properties.missingResidues,this.modelNum=e.units[0].model.modelNum,this.asymId=z.Nf.isAtomic(e.units[0])?z.StructureProperties.chain.label_asym_id(i):z.StructureProperties.coarse.asym_id(i);const c=[];for(let h=0;hc[u[f]],f=>{const y=h.value(f);(0,Rn.ly)(i,s(y),e)}),!0}function hu(r,e,i,s){const{model:l,elements:u}=r.unit,c=z.Nf.isSpheres(r.unit)?l.coarseHierarchy.spheres.seq_id_begin:l.coarseHierarchy.gaussians.seq_id_begin,h=z.Nf.isSpheres(r.unit)?l.coarseHierarchy.spheres.seq_id_end:l.coarseHierarchy.gaussians.seq_id_end;return Ce.CD.forEach(r.indices,f=>{const y=u[f];for(let g=s(c.value(y)),x=s(h.value(y));g<=x;g++)(0,Rn.ly)(i,g,e)}),!0}class gd extends Vs{residueLabel(e){return this.sequence[e]}residueColor(e){return Qr.s.black}residueClass(e){return"msp-sequence-present"}mark(e,i){let s=!1;const{structure:l}=this.data;if(z.iZ.Loci.is(e)){if(!z.oE.areRootsEquivalent(e.structure,l))return!1;e=z.iZ.Loci.remap(e,l);for(const u of e.elements){const c=this.unitMap.get(u.unit.id);if(c){const{index:h}=u.unit.model.atomicHierarchy.residueAtomSegments;Ce.CD.forEach(u.indices,f=>{const y=this.sequenceIndices.get(h[c.elements[f]]);void 0!==y&&(0,Rn.BH)(this.markerArray,Ce.IX.ofSingleton(y),i)&&(s=!0)})}}}else if(z.oE.isLoci(e)){if(!z.oE.areRootsEquivalent(e.structure,l))return!1;(0,Rn.BH)(this.markerArray,Ce.IX.ofBounds(0,this.length),i)&&(s=!0)}return s}getLoci(e){const i=[],s=this.residueIndices.get(e);if(void 0!==s){const l=this.seqToUnit.get(e),{offsets:u}=l.model.atomicHierarchy.residueAtomSegments,c=Ce.SortedArray.findPredecessorIndex(l.elements,u[s]),h=Ce.SortedArray.findPredecessorIndex(l.elements,u[s+1]);i.push({unit:l,indices:Ce.IX.ofBounds(c,h)})}return z.iZ.Loci(this.data.structure,i)}constructor(e){const i=[],s=new Map,l=new Map,u=new Map;for(let f=0,y=e.units.length;f0&&l.push(`${i} residues`),l.push(`${s} elements`),super(e,new Uint8Array(1),1),this.label=`Whole Chain (${l.join(", ")})`,this.unitIndices=c,this.loci=z.iZ.Loci(this.data.structure,h)}}class mu extends Vs{residueLabel(e){return"X"}residueColor(e){return Qr.s.black}residueClass(e){return"msp-sequence-present"}mark(e,i){let s=!1;const{structure:l,units:u}=this.data;if(z.iZ.Loci.is(e)){if(!z.oE.areRootsEquivalent(e.structure,l))return!1;e=z.iZ.Loci.remap(e,l);for(const c of e.elements){const h=this.unitIndices.get(c.unit.id);h&&Ce.CD.isSubset(h,c.indices)&&(0,Rn.BH)(this.markerArray,c.indices,i)&&(s=!0)}}else if(z.oE.isLoci(e)){if(!z.oE.areRootsEquivalent(e.structure,l))return!1;for(let c=0,h=u.length;c0){const g={structure:i,units:y},x=y[0];let w;if(x.polymerElements.length){const b=z.iZ.Location.create(i,x,x.elements[0]),C=x.model.sequence.byEntityKey[z.StructureProperties.entity.key(b)];if(C&&C.sequence.length<=5e3)w=new ll(g);else{const N=y.reduce((V,D)=>V+D.polymerElements.length,0);w=z.Nf.isAtomic(x)||N>5e3?new ul(g):new mu(g)}}else z.Nf.isAtomic(x)?w=y.reduce((C,N)=>C+N.residueCount,0)>5e3?new ul(g):new gd(g):(console.warn("should not happen, expecting coarse units to be polymeric"),w=new ul(g));return w.markResidue(e.getLoci(i),Rn.xi.Select),w}return"No sequence available"}function Oi(r,e=!1){const i=[],s=z.iZ.Location.create(r),l=new Set;for(const u of r.units){z.iZ.Location.set(s,r,u,u.elements[0]);const c=z.StructureProperties.entity.id(s),h=r.getModelIndex(u.model),f=`${h}|${c}`;if(l.has(f)||e&&"polymer"!==z.StructureProperties.entity.type(s))continue;let y=z.StructureProperties.entity.pdbx_description(s).join(", ");if(r.models.length&&(r.representativeModel?y+=` (Model ${r.models[h].modelNum})`:y.startsWith("Polymer ")&&(y+=` (${r.models[h].entry})`)),i.push([f,`${c}: ${y}`]),l.add(f),i.length>1e3)return[["","Too many entities"]]}return 0===i.length&&i.push(["","No entities"]),i}function _s(r,e){const i=[],s=z.iZ.Location.create(r),l=new Set,[u,c]=Yr(e);for(const h of r.units){if(z.iZ.Location.set(s,r,h,h.elements[0]),r.getModelIndex(h.model)!==u||z.StructureProperties.entity.id(s)!==c)continue;const f=h.chainGroupId;if(l.has(f))continue;const y=(0,Nn.BB)(s,{granularity:"chain",hidePrefix:!0,htmlStyling:!1});if(i.push([f,y]),l.add(f),i.length>1e3)return[[-1,"Too many chains"]]}return 0===i.length&&i.push([-1,"No chains"]),i}function mi(r,e,i){const s=[],l=z.iZ.Location.create(r),u=new Set,[c,h]=Yr(e);for(const f of r.units){if(z.iZ.Location.set(l,r,f,f.elements[0]),r.getModelIndex(f.model)!==c||z.StructureProperties.entity.id(l)!==h||f.chainGroupId!==i)continue;const y=ep(l);if(!u.has(y)&&(s.push([y,f.conformation.operator.name]),u.add(y),s.length>1e3))return[["","Too many operators"]]}return 0===s.length&&s.push(["","No operators"]),s}function t(r){var e;const i=[],s=[],l=r.select(tt.QX.Generators.rootsOfType(we.O.Molecule.Structure));for(const u of l)null!==(e=u.obj)&&void 0!==e&&e.data&&(s.push(u.obj.data),i.push([u.transform.ref,u.obj.data.label]));return 0===i.length&&i.push(["","No structure"]),{options:i,all:s}}const n=Q.t.Select("single",[["single","Chain"],["polymers","Polymers"],["all","Everything"]]);class o extends Z.dL{constructor(){super(...arguments),this.state={structureOptions:{options:[],all:[]},structure:z.oE.Empty,structureRef:"",modelEntityId:"",chainGroupId:-1,operatorKey:"",mode:"single"},this.setParamProps=e=>{const i={...this.state};switch(e.name){case"mode":if(i.mode=e.value,this.state.mode===i.mode)return;if("all"===i.mode||"polymers"===i.mode)break;case"structure":"structure"===e.name&&(i.structureRef=e.value),i.structure=this.getStructure(i.structureRef),i.modelEntityId=Oi(i.structure)[0][0],i.chainGroupId=_s(i.structure,i.modelEntityId)[0][0],i.operatorKey=mi(i.structure,i.modelEntityId,i.chainGroupId)[0][0];break;case"entity":i.modelEntityId=e.value,i.chainGroupId=_s(i.structure,i.modelEntityId)[0][0],i.operatorKey=mi(i.structure,i.modelEntityId,i.chainGroupId)[0][0];break;case"chain":i.chainGroupId=e.value,i.operatorKey=mi(i.structure,i.modelEntityId,i.chainGroupId)[0][0];break;case"operator":i.operatorKey=e.value}this.setState(i)}}componentDidMount(){this.plugin.state.data.select(tt.QX.Generators.rootsOfType(we.O.Molecule.Structure)).length>0&&this.setState(this.getInitialState()),this.subscribe(this.plugin.state.events.object.updated,({ref:e,obj:i})=>{e===this.state.structureRef&&i&&i.type===we.O.Molecule.Structure.type&&i.data!==this.state.structure&&this.sync()}),this.subscribe(this.plugin.state.events.object.created,({obj:e})=>{e&&e.type===we.O.Molecule.Structure.type&&this.sync()}),this.subscribe(this.plugin.state.events.object.removed,({obj:e})=>{e&&e.type===we.O.Molecule.Structure.type&&e.data===this.state.structure&&this.sync()})}sync(){const e=t(this.plugin.state.data);(0,cl.af)(e.all,this.state.structureOptions.all)||this.setState(this.getInitialState())}getStructure(e){const s=this.plugin.state.data.select(e)[0];return e&&s&&s.obj?s.obj.data:z.oE.Empty}getSequenceWrapper(e){return{wrapper:tp(this.state,this.plugin.managers.structure.selection),label:`${Q.t.optionLabel(e.chain,this.state.chainGroupId)} | ${Q.t.optionLabel(e.entity,this.state.modelEntityId)}`}}getSequenceWrappers(e){if("single"===this.state.mode)return[this.getSequenceWrapper(e)];const i=this.getStructure(this.state.structureRef),s=[];for(const[l,u]of Oi(i,"polymers"===this.state.mode))for(const[c,h]of _s(i,l))for(const[f]of mi(i,l,c))if(s.push({wrapper:tp({structure:i,modelEntityId:l,chainGroupId:c,operatorKey:f},this.plugin.managers.structure.selection),label:`${h} | ${u}`}),s.length>30)return[];return s}getInitialState(){var e;const i=t(this.plugin.state.data),s=i.options[0][0],l=this.getStructure(s);let u=Oi(l)[0][0],c=_s(l,u)[0][0],h=mi(l,u,c)[0][0];return this.state.structure&&this.state.structure===l&&(u=this.state.modelEntityId,c=this.state.chainGroupId,h=this.state.operatorKey),{structureOptions:i,structure:l,structureRef:s,modelEntityId:u,chainGroupId:c,operatorKey:h,mode:null!==(e=this.props.defaultMode)&&void 0!==e?e:"single"}}get params(){const{structureOptions:e,structure:i,modelEntityId:s,chainGroupId:l}=this.state,u=Oi(i),c=_s(i,s),h=mi(i,s,l);return{structure:Q.t.Select(e.options[0][0],e.options,{shortLabel:!0}),entity:Q.t.Select(u[0][0],u,{shortLabel:!0}),chain:Q.t.Select(c[0][0],c,{shortLabel:!0,twoColumns:!0,label:"Chain"}),operator:Q.t.Select(h[0][0],h,{shortLabel:!0,twoColumns:!0}),mode:n}}get values(){return{structure:this.state.structureRef,entity:this.state.modelEntityId,chain:this.state.chainGroupId,operator:this.state.operatorKey,mode:this.state.mode}}render(){if(this.getStructure(this.state.structureRef)===z.oE.Empty)return(0,p.jsx)("div",{className:"msp-sequence",children:(0,p.jsxs)("div",{className:"msp-sequence-select",children:[(0,p.jsx)(I.In,{svg:I.ml,style:{cursor:"help",position:"absolute",right:0,top:0},title:"Shows a sequence of one or more chains. Use the controls to alter selection."}),(0,p.jsx)("span",{children:"Sequence"}),(0,p.jsx)("span",{style:{fontWeight:"normal"},children:"No structure available"})]})});const e=this.params,i=this.values,s=this.getSequenceWrappers(e);return(0,p.jsxs)("div",{className:"msp-sequence",children:[(0,p.jsxs)("div",{className:"msp-sequence-select",children:[(0,p.jsx)(I.In,{svg:I.ml,style:{cursor:"help",position:"absolute",right:0,top:0},title:"This shows a single sequence. Use the controls to show a different sequence."}),(0,p.jsx)("span",{children:"Sequence of"}),(0,p.jsx)($e.UT,{title:`[Structure] ${Q.t.optionLabel(e.structure,i.structure)}`,param:e.structure,name:"structure",value:i.structure,onChange:this.setParamProps}),(0,p.jsx)($e.UT,{title:"[Mode]",param:n,name:"mode",value:i.mode,onChange:this.setParamProps}),"single"===i.mode&&(0,p.jsx)($e.UT,{title:`[Entity] ${Q.t.optionLabel(e.entity,i.entity)}`,param:e.entity,name:"entity",value:i.entity,onChange:this.setParamProps}),"single"===i.mode&&(0,p.jsx)($e.UT,{title:`[Chain] ${Q.t.optionLabel(e.chain,i.chain)}`,param:e.chain,name:"chain",value:i.chain,onChange:this.setParamProps}),e.operator.options.length>1&&(0,p.jsx)(p.Fragment,{children:(0,p.jsx)($e.UT,{title:`[Instance] ${Q.t.optionLabel(e.operator,i.operator)}`,param:e.operator,name:"operator",value:i.operator,onChange:this.setParamProps})})]}),(0,p.jsx)(a,{children:s.map((l,u)=>{const c="string"==typeof l.wrapper?(0,p.jsx)("div",{className:"msp-sequence-wrapper",children:l.wrapper},u):(0,p.jsx)(du,{sequenceWrapper:l.wrapper},u);return"single"===i.mode?c:(0,p.jsxs)(he.Fragment,{children:[(0,p.jsx)("div",{className:"msp-sequence-chain-label",children:l.label}),c]},u)})})]})}}function a({children:r}){return(0,p.jsx)("div",{className:"msp-sequence-wrapper-non-empty",children:r})}const v=he.useSyncExternalStore?function m(r){return he.useSyncExternalStore(he.useCallback(e=>{const i=r?.pipe(Ra(1)).subscribe(e);return()=>i?.unsubscribe()},[r]),he.useCallback(()=>r?.value,[r]))}:function d(r){const[,e]=he.useState({}),i=he.useRef();return i.current=r?.value,he.useEffect(()=>{if(!r)return;const s=r.subscribe(l=>{i.current!==l&&e({})});return()=>s.unsubscribe()},[r]),r?.value};function S(r){return v(r)}function k(){const r=(0,he.useContext)(Z.aU),[e,i]=(0,he.useState)((0,Kr.uY)());return(0,he.useEffect)(()=>{const s=r.events.task.progress.subscribe(u=>{var c;const h=!(null===(c=r.spec.components)||void 0===c||!c.hideTaskOverlay);"background"===u.level&&(h||!u.useOverlay)&&i(f=>f.set(u.id,u))}),l=r.events.task.finished.subscribe(({id:u})=>{i(c=>c.delete(u))});return()=>{s.unsubscribe(),l.unsubscribe()}},[r]),(0,p.jsxs)("div",{className:"msp-background-tasks",children:[e.valueSeq().map(s=>(0,p.jsx)(_,{event:s},s.id)),(0,p.jsx)(M,{})]})}function M(){var r;const i=S(null===(r=(0,he.useContext)(Z.aU).canvas3d)||void 0===r?void 0:r.commitQueueSize);return i?(0,p.jsx)("div",{className:"msp-task-state",children:(0,p.jsx)("div",{children:(0,p.jsxs)("div",{children:["Commiting renderables... ",i," remaining"]})})}):null}class _ extends Z.dL{constructor(){super(...arguments),this.abort=()=>{this.plugin.managers.task.requestAbort(this.props.event.progress.root.progress.taskId,"User Request")}}render(){const e=this.props.event.progress.root,i=K(this.props.event.progress.root)-1,s=e.progress.isIndeterminate?void 0:(0,p.jsxs)(p.Fragment,{children:["[",e.progress.current,"/",e.progress.max,"]"]}),l=i>0?(0,p.jsxs)(p.Fragment,{children:["[",i," subtask(s)]"]}):void 0;return(0,p.jsx)("div",{className:"msp-task-state",children:(0,p.jsxs)("div",{children:[e.progress.canAbort&&(0,p.jsx)(L.K0,{svg:I.VH,onClick:this.abort,title:"Abort"}),(0,p.jsxs)("div",{children:[e.progress.message," ",s," ",l]})]})})}}function K(r){if(0===r.children.length)return 1;let e=0;for(const i of r.children)e+=K(i);return e}function q(){const r=(0,he.useContext)(Z.aU),[e,i]=(0,he.useState)((0,Kr.uY)());return(0,he.useEffect)(()=>{const s=r.events.task.progress.subscribe(u=>{u.useOverlay&&i(c=>c.set(u.id,u))}),l=r.events.task.finished.subscribe(({id:u})=>{i(c=>c.delete(u))});return()=>{s.unsubscribe(),l.unsubscribe()}},[r]),0===e.size?null:(0,p.jsx)("div",{className:"msp-overlay-tasks",children:e.valueSeq().map(s=>(0,p.jsx)(_,{event:s},s.id))})}class J extends Z.dL{constructor(){super(...arguments),this.hide=()=>{(this.props.entry.hide||function(){}).call(null)}}render(){const e=this.props.entry,i=(0,p.jsx)("div","string"==typeof e.message?{dangerouslySetInnerHTML:{__html:e.message}}:{children:(0,p.jsx)(e.message,{})});return(0,p.jsxs)("div",{className:"msp-toast-entry",children:[(0,p.jsx)("div",{className:"msp-toast-title",onClick:()=>this.hide(),children:e.title}),(0,p.jsx)("div",{className:"msp-toast-message",children:i}),(0,p.jsx)("div",{className:"msp-toast-clear"}),(0,p.jsx)("div",{className:"msp-toast-hide",children:(0,p.jsx)(L.K0,{svg:I.VH,onClick:this.hide,title:"Hide",className:"msp-no-hover-outline"})})]})}}class ie extends Z.dL{componentDidMount(){this.subscribe(this.plugin.managers.toast.events.changed,()=>this.forceUpdate())}render(){const e=this.plugin.managers.toast.state;if(!e.entries.count())return null;const i=[];return e.entries.forEach((s,l)=>i.push(s)),i.sort(function(s,l){return s.serialNumber-l.serialNumber}),(0,p.jsx)("div",{className:"msp-toast-container",children:i.map(s=>(0,p.jsx)(J,{entry:s},s.serialNumber))})}}class re extends Z.dL{constructor(){super(...arguments),this.container=he.createRef(),this.state={noWebGl:!1,showLogo:!0},this.handleLogo=()=>{var e;this.setState({showLogo:!(null!==(e=this.plugin.canvas3d)&&void 0!==e&&e.reprCount.value)})}}componentDidMount(){this.container.current&&this.plugin.mount(this.container.current,{checkeredCanvasBackground:!0})?(this.handleLogo(),this.subscribe(this.plugin.canvas3d.reprCount,this.handleLogo)):this.setState({noWebGl:!0})}componentWillUnmount(){super.componentWillUnmount(),this.plugin.unmount()}renderMissing(){return this.props.noWebGl?(0,p.jsx)(this.props.noWebGl,{}):(0,p.jsx)("div",{className:"msp-no-webgl",children:(0,p.jsxs)("div",{children:[(0,p.jsx)("p",{children:(0,p.jsx)("b",{children:"WebGL does not seem to be available."})}),(0,p.jsx)("p",{children:"This can be caused by an outdated browser, graphics card driver issue, or bad weather. Sometimes, just restarting the browser helps. Also, make sure hardware acceleration is enabled in your browser."}),(0,p.jsxs)("p",{children:["For a list of supported browsers, refer to ",(0,p.jsx)("a",{href:"http://caniuse.com/#feat=webgl",target:"_blank",children:"http://caniuse.com/#feat=webgl"}),"."]})]})})}render(){if(this.state.noWebGl)return this.renderMissing();const e=this.props.logo;return(0,p.jsx)("div",{className:this.props.parentClassName||"msp-viewport",style:this.props.parentStyle,ref:this.container,children:this.state.showLogo&&e&&(0,p.jsx)(e,{})})}}var ct=F(9359);const A=he.memo(r=>{const{plugin:e,cropFrameColor:i}=r,s=e.helpers.viewportScreenshot,[l,u]=(0,he.useState)(null),c=(0,he.useRef)(null),h=(0,he.useRef)(r);return(0,he.useEffect)(()=>{h.current=r},Object.values(r)),(0,he.useEffect)(()=>{l!==c.current&&u(c.current)}),(0,he.useEffect)(()=>{var f;let y=!1;const g=[];function x(V,D){V&&g.push(V.subscribe(D))}function w(){const V=h.current;!V.suspend&&c.current&&P(s,c.current,V.customBackground,V.borderColor,V.borderWidth),c.current||(y=!0)}const b=setInterval(()=>{y&&(y=!1,w())},125);let C;x(e.events.canvas3d.settingsUpdated,()=>y=!0),x(null===(f=e.canvas3d)||void 0===f?void 0:f.didDraw,()=>y=!0),x(e.state.data.behaviors.isUpdating,V=>{V||(y=!0)}),x(s?.behaviors.values,()=>y=!0),x(s?.behaviors.cropParams,()=>y=!0),typeof ResizeObserver<"u"&&(C=new ResizeObserver(()=>y=!0));const N=c.current;return C?.observe(N),w(),()=>{clearInterval(b),g.forEach(V=>V.unsubscribe()),C?.unobserve(N)}},[s]),(0,he.useLayoutEffect)(()=>{c.current&&P(s,c.current,r.customBackground,r.borderColor,r.borderWidth)},[...Object.values(r)]),(0,p.jsx)(p.Fragment,{children:(0,p.jsxs)("div",{style:{position:"relative",width:"100%",height:"100%"},children:[(0,p.jsx)("canvas",{ref:c,onContextMenu:f=>{f.preventDefault(),f.stopPropagation()},style:{display:"block",width:"100%",height:"100%"}}),(0,p.jsx)(G,{plugin:e,canvas:l,color:i})]})})},(r,e)=>(0,ct.bN)(r,e));function P(r,e,i,s,l){if(!r)return;const{canvas:u,width:c,height:h}=r.getPreview(),f=e.getContext("2d");if(!f)return;const y=e.clientWidth,g=e.clientHeight;e.width=y,e.height=g,f.clearRect(0,0,y,g);const x=ce(c,h,y,g);if(i)f.fillStyle=i,f.fillRect(x.x,x.y,x.width,x.height);else if(r.values.transparent)for(let b=0;bx.width?x.width-b:13,C+13>x.height?x.height-C:13);if(f.drawImage(u,x.x,x.y,x.width,x.height),s&&l){const w=l;f.rect(x.x,x.y,x.width,x.height),f.rect(x.x+w,x.y+w,x.width-2*w,x.height-2*w),f.fillStyle=s,f.fill("evenodd")}}function G({plugin:r,canvas:e,color:i="rgba(255, 87, 45, 0.75)"}){var s;const l=r.helpers.viewportScreenshot,u=S(l?.behaviors.values),c=S(l?.behaviors.cropParams),h=S(l?.behaviors.relativeCrop),f=(0,he.useRef)({x:0,y:0,width:0,height:0});S("viewport"===u?.resolution.name?null===(s=r.canvas3d)||void 0===s?void 0:s.resized:void 0);const[y,g]=he.useState(""),[x,w]=(0,he.useState)([0,0]),[b,C]=(0,he.useState)([0,0]);if(!l||!e||!h)return null;const{width:N,height:V}=l.getSizeAndViewport(),D=ce(N,V,e.clientWidth,e.clientHeight),O={x:D.x+Math.floor(D.width*h.x),y:D.y+Math.floor(D.height*h.y),width:Math.ceil(D.width*h.width),height:Math.ceil(D.height*h.height)},B=se(O),X=se(D);if("move"===y?(B.l+=b[0]-x[0],B.r+=b[0]-x[0],B.t+=b[1]-x[1],B.b+=b[1]-x[1]):y&&(y.indexOf("left")>=0?B.l+=b[0]-x[0]:y.indexOf("right")>=0&&(B.r+=b[0]-x[0]),y.indexOf("top")>=0?B.t+=b[1]-x[1]:y.indexOf("bottom")>=0&&(B.b+=b[1]-x[1])),B.l>B.r){const ye=B.l;B.l=B.r,B.r=ye}if(B.t>B.b){const ye=B.t;B.t=B.b,B.b=ye}B.l=Math.min(X.r-40,Math.max(X.l,B.l)),B.r=Math.max(X.l+40,Math.min(X.r,B.r)),B.t=Math.min(X.b-40,Math.max(X.t,B.t)),B.b=Math.max(X.t+40,Math.min(X.b,B.b)),O.x=B.l,O.y=B.t,O.width=B.r-B.l+1,O.height=B.b-B.t+1,f.current=O;const H=ye=>{ye.preventDefault(),C([ye.pageX,ye.pageY])},ve=ye=>{ye.preventDefault();const ht=ye.touches[0];C([ht.pageX,ht.pageY])},Fe=ye=>{ye.preventDefault(),g(ye.currentTarget.getAttribute("data-drag"));const ht=ye.touches[0],Fn=[ht.pageX,ht.pageY];w(Fn),C(Fn),window.addEventListener("touchend",mn),window.addEventListener("touchmove",ve)},Ae=ye=>{ye.preventDefault(),g(ye.currentTarget.getAttribute("data-drag"));const ht=[ye.pageX,ye.pageY];w(ht),C(ht),window.addEventListener("mouseup",Ze),window.addEventListener("mousemove",H)},Ze=()=>{window.removeEventListener("mouseup",Ze),window.removeEventListener("mousemove",H),_e()},mn=()=>{window.removeEventListener("touchend",mn),window.removeEventListener("touchmove",ve),_e()};function _e(){const ye=f.current;c?.auto&&l?.behaviors.cropParams.next({...c,auto:!1}),l?.behaviors.relativeCrop.next({x:(ye.x-D.x)/D.width,y:(ye.y-D.y)/D.height,width:ye.width/D.width,height:ye.height/D.height}),g("");const ht=[0,0];w(ht),C(ht)}const oe=ye=>{ye.preventDefault(),ye.stopPropagation()},qe="transparent";return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("div",{"data-drag":"move",style:{position:"absolute",left:O.x,top:O.y,width:O.width,height:O.height,border:`3px solid ${i}`,cursor:"move"},onMouseDown:Ae,onTouchStart:Fe,draggable:!1,onContextMenu:oe}),(0,p.jsx)("div",{"data-drag":"left",style:{position:"absolute",left:O.x-4,top:O.y+4,width:16,height:O.height-4,background:qe,cursor:"w-resize"},onMouseDown:Ae,onTouchStart:Fe,draggable:!1,onContextMenu:oe}),(0,p.jsx)("div",{"data-drag":"right",style:{position:"absolute",left:B.r-8,top:O.y,width:16,height:O.height-4,background:qe,cursor:"w-resize"},onMouseDown:Ae,onTouchStart:Fe,draggable:!1,onContextMenu:oe}),(0,p.jsx)("div",{"data-drag":"top",style:{position:"absolute",left:O.x-4,top:O.y-4,width:O.width+8,height:16,background:qe,cursor:"n-resize"},onMouseDown:Ae,onTouchStart:Fe,draggable:!1,onContextMenu:oe}),(0,p.jsx)("div",{"data-drag":"bottom",style:{position:"absolute",left:O.x-4,top:B.b-8,width:O.width+8,height:16,background:qe,cursor:"n-resize"},onMouseDown:Ae,onTouchStart:Fe,draggable:!1,onContextMenu:oe}),(0,p.jsx)("div",{"data-drag":"top, left",style:{position:"absolute",left:B.l-4,top:B.t-4,width:16,height:16,background:qe,cursor:"nw-resize"},onMouseDown:Ae,onTouchStart:Fe,draggable:!1,onContextMenu:oe}),(0,p.jsx)("div",{"data-drag":"bottom, right",style:{position:"absolute",left:B.r-8,top:B.b-8,width:16,height:16,background:qe,cursor:"nw-resize"},onMouseDown:Ae,onTouchStart:Fe,draggable:!1,onContextMenu:oe}),(0,p.jsx)("div",{"data-drag":"top, right",style:{position:"absolute",left:B.r-8,top:B.t-4,width:16,height:16,background:qe,cursor:"ne-resize"},onMouseDown:Ae,onTouchStart:Fe,draggable:!1,onContextMenu:oe}),(0,p.jsx)("div",{"data-drag":"bottom, left",style:{position:"absolute",left:B.l-4,top:B.b-8,width:16,height:16,background:qe,cursor:"ne-resize"},onMouseDown:Ae,onTouchStart:Fe,draggable:!1,onContextMenu:oe})]})}function se(r){return{l:r.x,t:r.y,r:r.x+r.width-1,b:r.y+r.height-1}}function ce(r,e,i,s){const l=r/e;if(l<=i/s){const c=s*l;return{x:Math.round((i-c)/2),y:0,width:Math.round(c),height:s}}{const c=i/l;return{x:0,y:Math.round((s-c)/2),width:i,height:Math.round(c)}}}class pe extends Z.dL{constructor(){var e;super(...arguments),e=this,this.state={showPreview:!0,isDisabled:!1},this.download=()=>{var i;null===(i=this.plugin.helpers.viewportScreenshot)||void 0===i||i.download(),this.props.close()},this.copy=(0,R.A)(function*(){var i;try{yield null===(i=e.plugin.helpers.viewportScreenshot)||void 0===i?void 0:i.copyToClipboard(),ue.a.Toast.Show(e.plugin,{message:"Copied to clipboard.",title:"Screenshot",timeoutMs:1500})}catch{return e.copyImg()}}),this.copyImg=(0,R.A)(function*(){var i;const s=yield null===(i=e.plugin.helpers.viewportScreenshot)||void 0===i?void 0:i.getImageDataUri();e.setState({imageData:s})}),this.open=i=>{!i.target.files||!i.target.files[0]||ue.a.State.Snapshots.OpenFile(this.plugin,{file:i.target.files[0]})}}componentDidMount(){this.subscribe(this.plugin.state.data.behaviors.isUpdating,e=>{this.setState({isDisabled:e})})}componentWillUnmount(){super.componentWillUnmount(),this.setState({imageData:void 0})}render(){var e;const i=!(null===(e=navigator.clipboard)||void 0===e||!e.write);return(0,p.jsxs)("div",{children:[this.state.showPreview&&(0,p.jsxs)("div",{className:"msp-image-preview",children:[(0,p.jsx)(A,{plugin:this.plugin}),(0,p.jsx)(Pt,{plugin:this.plugin})]}),(0,p.jsxs)("div",{className:"msp-flex-row",children:[!this.state.imageData&&(0,p.jsx)(L.$n,{icon:I.y5,onClick:i?this.copy:this.copyImg,disabled:this.state.isDisabled,children:"Copy"}),this.state.imageData&&(0,p.jsx)(L.$n,{onClick:()=>this.setState({imageData:void 0}),disabled:this.state.isDisabled,children:"Clear"}),(0,p.jsx)(L.$n,{icon:I.U3,onClick:this.download,disabled:this.state.isDisabled,children:"Download"})]}),this.state.imageData&&(0,p.jsxs)("div",{className:"msp-row msp-copy-image-wrapper",children:[(0,p.jsx)("div",{children:"Right click below + Copy Image"}),(0,p.jsx)("img",{src:this.state.imageData,style:{width:"100%",height:32,display:"block"}})]}),(0,p.jsx)(me,{plugin:this.plugin,isDisabled:this.state.isDisabled}),(0,p.jsxs)(L.Yj,{header:"State",children:[(0,p.jsx)(lu,{onAction:this.props.close}),(0,p.jsx)(L.Yj,{header:"Save Options",initiallyExpanded:!1,noOffset:!0,children:(0,p.jsx)(au,{})})]})]})}}function me({plugin:r,isDisabled:e}){const i=r.helpers.viewportScreenshot,s=S(i?.behaviors.values);return i?(0,p.jsx)($e.y1,{params:i.params,values:s,onChangeValues:l=>i.behaviors.values.next(l),isDisabled:e}):null}function Pt({plugin:r}){const e=r.helpers.viewportScreenshot,i=S(e?.behaviors.cropParams);return S(e?.behaviors.relativeCrop),e&&i?(0,p.jsxs)("div",{style:{width:"100%",height:"24px",marginTop:"8px"},children:[(0,p.jsx)(L.ff,{icon:I.l8,title:"Auto-crop",inline:!0,isSelected:i.auto,style:{background:"transparent",float:"left",width:"auto",height:"24px",lineHeight:"24px"},toggle:()=>e.toggleAutocrop(),label:"Auto-crop "+(i.auto?"On":"Off")}),!i.auto&&(0,p.jsx)(L.$n,{icon:I.FJ,title:"Crop",style:{background:"transparent",float:"right",height:"24px",lineHeight:"24px",width:"24px",padding:"0"},onClick:()=>e.autocrop()}),!i.auto&&!e.isFullFrame&&(0,p.jsx)(L.$n,{icon:I.fL,title:"Reset Crop",style:{background:"transparent",float:"right",height:"24px",lineHeight:"24px",width:"24px",padding:"0"},onClick:()=>e.resetCrop()})]}):null}var Re=F(1025);class yd extends Z.dL{componentDidMount(){this.plugin.canvas3d&&(this.subscribe(this.plugin.events.canvas3d.settingsUpdated,()=>this.forceUpdate()),this.subscribe(this.plugin.canvas3d.camera.stateChanged.pipe((0,Wr.c)(500,void 0,{leading:!0,trailing:!0})),e=>{(void 0!==e.radiusMax||void 0!==e.radius)&&this.forceUpdate()}))}render(){return this.plugin.canvas3d?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)($e.dr,{mapping:Md}),(0,p.jsx)(Wo,{})]}):null}}const fu={sequence:"Sequence",log:"Log",left:"Left Panel",right:"Right Panel"},Nd={animate:ut._i.trackball.params.animate,camera:ut._i.camera,background:Q.t.Group({color:Q.t.Color((0,wt.Q1)(16579577),{label:"Background",description:"Custom background color"}),transparent:Q.t.Boolean(!1),style:ut._i.postprocessing.params.background},{pivot:"color"}),lighting:Q.t.Group({occlusion:ut._i.postprocessing.params.occlusion,shadow:ut._i.postprocessing.params.shadow,outline:ut._i.postprocessing.params.outline,dof:ut._i.postprocessing.params.dof,fog:ut._i.cameraFog},{isFlat:!0}),clipping:Q.t.Group({...ut._i.cameraClipping.params},{pivot:"radius"}),layout:Q.t.MultiSelect([],Q.t.objectToOptions(fu)),advanced:Q.t.Group({multiSample:ut._i.multiSample,hiZ:ut._i.hiZ,sharpening:ut._i.postprocessing.params.sharpening,pixelScale:ut.H7.Params.pixelScale,transparency:ut.H7.Params.transparency})},Md=function Ri(r){return({values:e,update:i,apply:s})=>({params:"function"==typeof r.params?r.params:l=>r.params,getTarget:r.target,getValues:e,update(l,u){const c=r.target(u);return(0,Re.jM)(c,h=>i(l,h,u))},apply:s||(()=>{})})}({params:r=>{var e;const i=Q.t.clone(Nd),s=null===(e=r.spec.components)||void 0===e?void 0:e.controls;if(s){const u=[];"none"!==s.top&&u.push(["sequence",fu.sequence]),"none"!==s.bottom&&u.push(["log",fu.log]),"none"!==s.left&&u.push(["left",fu.left]),"none"!==s.right&&u.push(["right",fu.right]),i.layout.options=u}const l=r.config.get(Bt.AB.Background.Styles)||[];return l.length>0&&Object.assign(i.background.params.style,{presets:(0,ct.Go)(l),isFlat:!1}),i},target(r){var e,i,s;const l=null===(e=r.spec.components)||void 0===e?void 0:e.controls,u=r.layout.state.regionState,c=[];"hidden"!==u.top&&(!l||"none"!==l.top)&&c.push("sequence"),"hidden"!==u.bottom&&(!l||"none"!==l.bottom)&&c.push("log"),"hidden"!==u.left&&(!l||"none"!==l.left)&&c.push("left"),"hidden"!==u.right&&(!l||"none"!==l.right)&&c.push("right");const{pixelScale:h,transparency:f}=null===(i=r.canvas3dContext)||void 0===i?void 0:i.props;return{canvas:null===(s=r.canvas3d)||void 0===s?void 0:s.props,layout:c,pixelScale:h,transparency:f}}})({values(r,e){const{canvas:i}=r;return{layout:r.layout,animate:i.trackball.animate,camera:i.camera,background:{color:i.renderer.backgroundColor,transparent:i.transparentBackground,style:i.postprocessing.background},lighting:{occlusion:i.postprocessing.occlusion,shadow:i.postprocessing.shadow,outline:i.postprocessing.outline,dof:i.postprocessing.dof,fog:i.cameraFog},clipping:{...i.cameraClipping},advanced:{multiSample:i.multiSample,hiZ:i.hiZ,sharpening:i.postprocessing.sharpening,pixelScale:r.pixelScale,transparency:r.transparency}}},update(r,e){const i=e.canvas;i.trackball.animate=r.animate,i.camera=r.camera,i.transparentBackground=r.background.transparent,i.renderer.backgroundColor=r.background.color,i.postprocessing.occlusion=r.lighting.occlusion,i.postprocessing.shadow=r.lighting.shadow,i.postprocessing.outline=r.lighting.outline,i.postprocessing.background=r.background.style,i.cameraFog=r.lighting.fog,i.cameraClipping={radius:r.clipping.radius,far:r.clipping.far,minNear:r.clipping.minNear},i.multiSample=r.advanced.multiSample,i.hiZ=r.advanced.hiZ,i.postprocessing.sharpening=r.advanced.sharpening,i.postprocessing.dof=r.lighting.dof,e.layout=r.layout,e.pixelScale=r.advanced.pixelScale,e.transparency=r.advanced.transparency},apply:(r,e)=>(0,R.A)(function*(){var i;yield ue.a.Canvas3D.SetSettings(e,{settings:r.canvas});const s=r.layout.indexOf("left")<0,l=(0,Re.jM)(e.layout.state,u=>{u.regionState.top=r.layout.indexOf("sequence")>=0?"full":"hidden",u.regionState.bottom=r.layout.indexOf("log")>=0?"full":"hidden",u.regionState.left=s?"hidden":"none"===e.behaviors.layout.leftPanelTabName.value?"collapsed":"full",u.regionState.right=r.layout.indexOf("right")>=0?"full":"hidden"});yield ue.a.Layout.Update(e,{state:l}),s&&ue.a.State.SetCurrentObject(e,{state:e.state.data,ref:tt.Cn.RootRef}),null===(i=e.canvas3dContext)||void 0===i||i.setProps({pixelScale:r.pixelScale,transparency:r.transparency})})()});class Dd extends Z.dL{constructor(){super(...arguments),this.allCollapsedState={isSettingsExpanded:!1,isScreenshotExpanded:!1},this.state={...this.allCollapsedState,isCameraResetEnabled:!0},this.resetCamera=()=>{ue.a.Camera.Reset(this.plugin,{})},this.toggleSettingsExpanded=this.toggle("isSettingsExpanded"),this.toggleScreenshotExpanded=this.toggle("isScreenshotExpanded"),this.toggleControls=()=>{ue.a.Layout.Update(this.plugin,{state:{showControls:!this.plugin.layout.state.showControls}})},this.toggleExpanded=()=>{ue.a.Layout.Update(this.plugin,{state:{isExpanded:!this.plugin.layout.state.isExpanded}})},this.setSettings=e=>{ue.a.Canvas3D.SetSettings(this.plugin,{settings:{[e.name]:e.value}})},this.setLayout=e=>{ue.a.Layout.Update(this.plugin,{state:{[e.name]:e.value}})},this.screenshot=()=>{var e;null===(e=this.plugin.helpers.viewportScreenshot)||void 0===e||e.download()},this.enableCameraReset=e=>{this.setState(i=>({...i,isCameraResetEnabled:e}))}}toggle(e){return i=>{this.setState(s=>({...s,...this.allCollapsedState,[e]:!this.state[e]})),i?.currentTarget.blur()}}componentDidMount(){this.subscribe(this.plugin.events.canvas3d.settingsUpdated,()=>this.forceUpdate()),this.subscribe(this.plugin.layout.events.updated,()=>this.forceUpdate()),this.plugin.canvas3d&&this.subscribe(this.plugin.canvas3d.camera.stateChanged.pipe((0,Wr.c)(500,void 0,{leading:!0,trailing:!0})),e=>this.enableCameraReset(0!==e.radius&&0!==e.radiusMax))}icon(e,i,s,l=!0){return(0,p.jsx)(L.K0,{svg:e,toggleState:l,onClick:i,title:s,style:{background:"transparent"}})}render(){return(0,p.jsxs)("div",{className:"msp-viewport-controls",children:[(0,p.jsxs)("div",{className:"msp-viewport-controls-buttons",children:[(0,p.jsxs)("div",{className:"msp-hover-box-wrapper",children:[(0,p.jsx)("div",{className:"msp-semi-transparent-background"}),this.icon(I.FP,this.resetCamera,"Reset Zoom"),(0,p.jsx)("div",{className:"msp-hover-box-body",children:(0,p.jsxs)("div",{className:"msp-flex-column",children:[(0,p.jsx)("div",{className:"msp-flex-row",children:(0,p.jsx)(L.$n,{onClick:()=>this.resetCamera(),disabled:!this.state.isCameraResetEnabled,title:"Set camera zoom to fit the visible scene into view",children:"Reset Zoom"})}),(0,p.jsx)("div",{className:"msp-flex-row",children:(0,p.jsx)(L.$n,{onClick:()=>ue.a.Camera.OrientAxes(this.plugin),disabled:!this.state.isCameraResetEnabled,title:"Align principal component axes of the loaded structures to the screen axes (\u201clay flat\u201d)",children:"Orient Axes"})}),(0,p.jsx)("div",{className:"msp-flex-row",children:(0,p.jsx)(L.$n,{onClick:()=>ue.a.Camera.ResetAxes(this.plugin),disabled:!this.state.isCameraResetEnabled,title:"Align Cartesian axes to the screen axes",children:"Reset Axes"})})]})}),(0,p.jsx)("div",{className:"msp-hover-box-spacer"})]}),(0,p.jsxs)("div",{children:[(0,p.jsx)("div",{className:"msp-semi-transparent-background"}),this.icon(I.C$,this.toggleScreenshotExpanded,"Screenshot / State Snapshot",this.state.isScreenshotExpanded)]}),(0,p.jsxs)("div",{children:[(0,p.jsx)("div",{className:"msp-semi-transparent-background"}),this.plugin.config.get(Bt.AB.Viewport.ShowControls)&&this.icon(I.fl,this.toggleControls,"Toggle Controls Panel",this.plugin.layout.state.showControls),this.plugin.config.get(Bt.AB.Viewport.ShowExpand)&&this.icon(I.E2,this.toggleExpanded,"Toggle Expanded Viewport",this.plugin.layout.state.isExpanded),this.plugin.config.get(Bt.AB.Viewport.ShowSettings)&&this.icon(I.Hk,this.toggleSettingsExpanded,"Settings / Controls Info",this.state.isSettingsExpanded)]}),this.plugin.config.get(Bt.AB.Viewport.ShowSelectionMode)&&(0,p.jsxs)("div",{children:[(0,p.jsx)("div",{className:"msp-semi-transparent-background"}),(0,p.jsx)(Vr,{})]})]}),this.state.isScreenshotExpanded&&(0,p.jsx)("div",{className:"msp-viewport-controls-panel",children:(0,p.jsx)(L.tW,{header:"Screenshot / State",title:"Click to close.",initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:this.toggleScreenshotExpanded,topRightIcon:I.X6,noTopMargin:!0,childrenClassName:"msp-viewport-controls-panel-controls",children:(0,p.jsx)(pe,{close:this.toggleScreenshotExpanded})})}),this.state.isSettingsExpanded&&(0,p.jsx)("div",{className:"msp-viewport-controls-panel",children:(0,p.jsx)(L.tW,{header:"Settings / Controls Info",title:"Click to close.",initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:this.toggleSettingsExpanded,topRightIcon:I.X6,noTopMargin:!0,childrenClassName:"msp-viewport-controls-panel-controls",children:(0,p.jsx)(yd,{})})})]})}}const zd=()=>(0,p.jsx)("a",{className:"msp-logo",href:"https://molstar.org",target:"_blank"}),Od=()=>(0,p.jsx)(re,{logo:zd});var Rd=F(6511),Fd=F(1861);function Bd({plugin:r}){return r.isInitialized?(0,p.jsx)(Z.aU.Provider,{value:r,children:(0,p.jsx)(Cd,{})}):(0,p.jsx)(Hd,{plugin:r})}function Hd({plugin:r}){const[e,i]=he.useState({kind:"pending"});return he.useEffect(()=>{i({kind:"pending"});let s=!0;return r.initialized.then(()=>{s&&i({kind:"initialized"})}).catch(l=>{s&&i({kind:"error",message:`${l}`})}),()=>{s=!1}},[r]),"pending"===e.kind?null:"error"===e.kind?(0,p.jsx)("div",{className:"msp-plugin",children:(0,p.jsxs)("div",{className:"msp-plugin-init-error",children:["Initialization error: ",e.message]})}):(0,p.jsx)(Z.aU.Provider,{value:r,children:(0,p.jsx)(Cd,{})})}class Cd extends Z.dL{constructor(){super(...arguments),this.onDrop=e=>{e.preventDefault();const i=[];if(e.dataTransfer.items)for(let l=0;l{const u=l.name.toLowerCase();return u.endsWith(".molx")||u.endsWith(".molj")});s.length>0?ue.a.State.Snapshots.OpenFile(this.plugin,{file:s[0]}):this.plugin.runTask(this.plugin.state.data.applyAction(Rd.OpenFiles,{files:i.map(l=>Fd.V.File(l)),format:{name:"auto",params:{}},visuals:!0}))},this.onDragOver=e=>{e.preventDefault()},this.showDragOverlay=new Oa.t(!1),this.onDragEnter=e=>{let i=!1;if(e.dataTransfer.items&&e.dataTransfer.items.length>0){for(let s=0;sthis.forceUpdate())}region(e,i){return(0,p.jsx)("div",{className:`msp-layout-region msp-layout-${e}`,children:(0,p.jsx)("div",{className:"msp-layout-static",children:i?(0,p.jsx)(i,{}):null})})}get layoutVisibilityClassName(){var e,i;const s=this.plugin.layout.state,l=null!==(i=null===(e=this.plugin.spec.components)||void 0===e?void 0:e.controls)&&void 0!==i?i:{},u=[];return("none"===l.top||!s.showControls||"hidden"===s.regionState.top)&&u.push("msp-layout-hide-top"),"none"!==l.left&&s.showControls&&"hidden"!==s.regionState.left?"collapsed"===s.regionState.left&&u.push("msp-layout-collapse-left"):u.push("msp-layout-hide-left"),("none"===l.right||!s.showControls||"hidden"===s.regionState.right)&&u.push("msp-layout-hide-right"),("none"===l.bottom||!s.showControls||"hidden"===s.regionState.bottom)&&u.push("msp-layout-hide-bottom"),u.join(" ")}get layoutClassName(){const e=this.plugin.layout.state,i=["msp-plugin-content"];return e.isExpanded?i.push("msp-layout-expanded"):i.push("msp-layout-standard",`msp-layout-standard-${e.controlsDisplay}`),i.join(" ")}render(){var e,i,s,l,u,c,h;const f=this.plugin.layout.state,y=(null===(e=this.plugin.spec.components)||void 0===e?void 0:e.controls)||{},g=(null===(s=null===(i=this.plugin.spec.components)||void 0===i?void 0:i.viewport)||void 0===s?void 0:s.view)||_d,x=(null===(u=null===(l=this.plugin.spec.components)||void 0===l?void 0:l.sequenceViewer)||void 0===u?void 0:u.view)||o;return(0,p.jsx)("div",{className:"msp-plugin",children:(0,p.jsxs)("div",{className:this.layoutClassName,onDragEnter:this.onDragEnter,children:[(0,p.jsxs)("div",{className:this.layoutVisibilityClassName,children:[this.region("main",g),f.showControls&&"none"!==y.top&&this.region("top",y.top||x),f.showControls&&"none"!==y.left&&this.region("left",y.left||fd),f.showControls&&"none"!==y.right&&this.region("right",y.right||qd),f.showControls&&"none"!==y.bottom&&this.region("bottom",y.bottom||Wd)]}),!(null!==(c=this.plugin.spec.components)&&void 0!==c&&c.hideTaskOverlay)&&(0,p.jsx)(q,{}),!(null!==(h=this.plugin.spec.components)&&void 0!==h&&h.disableDragOverlay)&&(0,p.jsx)(Vd,{plugin:this.plugin,showDragOverlay:this.showDragOverlay})]})})}}function Vd({plugin:r,showDragOverlay:e}){const i=S(e),s=l=>{l.dataTransfer.dropEffect="copy",l.preventDefault(),l.stopPropagation()};return(0,p.jsx)("div",{className:"msp-drag-drop-overlay",style:{display:i?"flex":"none"},onDragEnter:s,onDragOver:s,onDragLeave:()=>e.next(!1),onDrop:l=>function Ud(r,e,i){r.preventDefault(),r.stopPropagation(),i.next(!1);const s=[];if(r.dataTransfer.items)for(let l=0;lthis.setState({entries:this.plugin.log.entries}))}componentDidUpdate(){this.scrollToBottom()}scrollToBottom(){const e=this.wrapper.current;e&&(e.scrollTop=e.scrollHeight-e.clientHeight-1)}render(){const i=this.state.entries,s=i.size,l=[];for(let u=Math.max(0,s-10),c=0;u{class r{set container(i){this.initialize$.next(i)}constructor(i,s){this.settingsService=i,this.pluginService=s,this.initialize$=new Nt.m(1);const l=this.pluginService.plugin$,u=this.settingsService.settings$;this.initialized$=this.initialize$.pipe((0,je.T)(c=>{const h=c.nativeElement;return{div:h,canvas:h.firstElementChild}}),(0,Pe.v)(l),(0,je.T)(([{div:c},h])=>((0,Kd.render)((0,he.createElement)(Bd,{plugin:h}),c),h)),(0,Dt.t)(1),(0,Pe.v)(u),(0,je.T)(([c,h])=>{if(c.canvas3d){const[f,y]=on(h["background-color"]);c.canvas3d.setProps({renderer:{backgroundColor:f,pickingAlphaThreshold:y}})}return c}))}static#e=this.\u0275fac=function(s){return new(s||r)(W.KVO(gn),W.KVO(_t.z))};static#t=this.\u0275prov=W.jDH({token:r,factory:r.\u0275fac,providedIn:"platform"})}return r})();function xd(r,e){return function $d(r,e){const i=fn.e.getStructureSelection(r,e);return z.cv.toLociWithSourceUnits(i)}(De.J.struct.generator.atomGroups({"residue-test":De.J.core.set.has([De.J.set(...r),De.J.core.str.concat([De.J.ammp("auth_asym_id"),De.J.ammp("auth_seq_id"),De.J.ammp("pdbx_PDB_ins_code")])])}),e)}let jd=(()=>{class r{set loci(i){this.loci$.next(i)}set interactions(i){this.interactions$.next(i)}constructor(i,s,l,u){var c=this;this.structureService=i,this.settingsService=s,this.pluginService=l,this.canvasService=u,this.loci$=new Nt.m(1),this.interactions$=new Nt.m(1);const h=this.structureService.source$.pipe((0,mt.p)(g=>null!=g));this.structure$=this.structureService.structure$.pipe(function Mt(...r){const e=(0,qt.ms)(r);return(0,Ue.N)((i,s)=>{const l=r.length,u=new Array(l);let c=r.map(()=>!1),h=!1;for(let f=0;f{u[f]=y,!h&&!c[f]&&(c[f]=!0,(h=c.every(Ne.D))&&(c=null))},Me.l));i.subscribe((0,fe._)(s,f=>{if(h){const y=[f,...u];s.next(e?e(...y):y)}}))})}(h),(0,xe.n)(([g,x])=>(0,xt.H)((0,R.A)(function*(){const w=c.pluginService.plugin,b=yield w.builders.structure.tryCreateComponentStatic(g,"polymer",{label:x.label}),[C]=on(c.settingsService.settings["backbone-color"]);return yield w.builders.structure.representation.addRepresentation(b,{type:"cartoon",color:"uniform",colorParams:{value:C}}),g.cell.obj.data})())),(0,Dt.t)(1));const f=this.getLociRepresentation(),y=this.getInteractionsRepresentation();this.representation$=this.structure$.pipe((0,Pe.v)(this.canvasService.initialized$),(0,Pe.v)(f),(0,Pe.v)(y),(0,je.T)(()=>{}),(0,Dt.t)(1)),this._representation=this.representation$.subscribe()}ngOnDestroy(){this._representation.unsubscribe()}getLociRepresentation(){return this.structure$.pipe((0,Pe.v)(this.loci$),(0,je.T)(([i,s])=>({structure:i,loci:s})),(0,je.T)(({structure:i,loci:s})=>{const l=[...this.structureService.i2r.values()];return{structure:i,loci:s.map(c=>{if(c.start){c={...c,end:c.end||c.start};const h=this.structureService.r2i.get(c.chain+c.start),f=this.structureService.r2i.get(c.chain+c.end);return{...c,ids:l.slice(h,f+1)}}return{...c,ids:l.filter(h=>h.startsWith(c.chain))}})}}),(0,xe.n)(({structure:i,loci:s})=>{const l=[];for(const{ids:f,color:y}of s){const g=xd(f,i),x=z.iZ.Bundle.fromLoci(g),[w]=on(y||this.settingsService.settings["backbone-color"]);l.push({bundle:x,color:w,clear:!1})}const u=this.pluginService.plugin,c=u.state.data.build(),h=function Qd(r,e){const i=ft.l.ofBundle(r,e.root),s=ft.l.merge(i);return ft.l.filter(s,e)}(l,i);for(const f of u.managers.structure.hierarchy.current.structures)for(const y of f.components)for(const g of y.representations){c.to(g.cell.transform.ref).apply(jt.f.Representation.OverpaintStructureRepresentation3DFromBundle,ft.l.toBundle(h));const x=xd([...this.structureService.i2r.values()],i),w=z.iZ.Bundle.fromLoci(x),[b,C]=on(this.settingsService.settings["backbone-color"]);c.to(g.cell.transform.ref).apply(jt.f.Representation.TransparencyStructureRepresentation3DFromBundle,{layers:[{bundle:w,value:C}]})}return(0,xt.H)(c.commit({doNotUpdateCurrent:!0}))}))}getInteractionsRepresentation(){let i;return this.structure$.pipe((0,Pe.v)(this.interactions$),(0,je.T)(([s,l])=>({structure:s,interactions:l})),(0,je.T)(({structure:s,interactions:l})=>{const u=l.reduce((c,{from:h,to:f})=>[...c,h,f],[]);return z.oE.eachAtomicHierarchyElement(s,{atom:c=>{const h=bt.eB.create(z.StructureProperties.atom.x(c),z.StructureProperties.atom.y(c),z.StructureProperties.atom.z(c));for(const f of u)f.coordinates||(f["atom.id"]===z.StructureProperties.atom.id(c)||f["chain.id"]===z.StructureProperties.chain.auth_asym_id(c)&&f["residue.id"]===z.StructureProperties.residue.auth_seq_id(c)+z.StructureProperties.residue.pdbx_PDB_ins_code(c)&&f["atom.name"]===z.StructureProperties.atom.auth_atom_id(c))&&(f.coordinates=h)}}),{structure:s,interactions:l=l.filter(({from:c,to:h})=>c.coordinates&&h.coordinates)}}),(0,xe.n)(({interactions:s})=>{const u=this.pluginService.plugin.state.data.build(),c=s.map(({from:f,to:y,color:g,label:x,size:w})=>({from:f.coordinates,to:y.coordinates,color:on(g||this.settingsService.settings["interaction-color"]).at(0),size:w||this.settingsService.settings["interaction-size"],label:x}));return i&&u.delete(i),i=u.toRoot().apply(Je,{data:c}).apply(jt.f.Representation.ShapeRepresentation3D).ref,(0,xt.H)(u.commit({doNotUpdateCurrent:!0}))}),(0,Dt.t)(1))}static#e=this.\u0275fac=function(s){return new(s||r)(W.KVO(Zt.Z),W.KVO(gn),W.KVO(_t.z),W.KVO(vd))};static#t=this.\u0275prov=W.jDH({token:r,factory:r.\u0275fac,providedIn:"platform"})}return r})();var Gd=F(2326),Yd=F(6365);let Ed=(()=>{class r{set highlights(i){this.input$.next(i)}constructor(i,s){this.structureService=i,this.pluginService=s,this.input$=new Nt.m(1);const l=this.pluginService.plugin,u=l.behaviors.interaction.hover,c=this.structureService.structure$.pipe((0,Pe.v)(this.input$),(0,je.T)(([f,y])=>({structure:f,highlights:y})),(0,je.T)(({structure:f,highlights:y})=>{if(y){const g=[...this.structureService.i2r.values()],x=this.structureService.r2i.get(y.chain+y.start),w=this.structureService.r2i.get(y.chain+y.end);return{structure:f,highlights:{...y,ids:g.slice(x,w+1)}}}return{structure:f,highlights:{start:"",end:"",chain:"",ids:[]}}}),(0,je.T)(({structure:f,highlights:y})=>{if(y.ids.length>0){const g=xd(y.ids,f);l.managers.interactivity.lociHighlights.highlightOnly({loci:g})}}));this.output$=u.pipe((0,je.T)(f=>{if(f&&"element-loci"===f.current.loci.kind&&z.iZ.Loci.is(f.current.loci)){const y=z.iZ.Loci.getFirstLocation(f.current.loci);if(y){const g=z.StructureProperties.chain.auth_asym_id(y),b=z.StructureProperties.residue.auth_seq_id(y)+z.StructureProperties.residue.pdbx_PDB_ins_code(y);return{start:b,end:b+"",chain:g}}}}),(0,Dt.t)(1));const h=c.pipe(function Xd(...r){return function Zd(...r){const e=(0,qt.lI)(r),i=(0,qt.R0)(r,1/0);return r=(0,Gd.K)(r),(0,Ue.N)((s,l)=>{(0,Yd.U)(i)((0,xt.H)([s,...r],e)).subscribe(l)})}(...r)}(this.output$),(0,je.T)(()=>{}));this._highlights=h.subscribe()}ngOnDestroy(){this._highlights.unsubscribe()}static#e=this.\u0275fac=function(s){return new(s||r)(W.KVO(Zt.Z),W.KVO(_t.z))};static#t=this.\u0275prov=W.jDH({token:r,factory:r.\u0275fac,providedIn:"platform"})}return r})();const Jd=["container"];let eh=(()=>{class r{set container(i){this.canvasService.container=i}set source(i){this.structureService.source=i}set loci(i){this.representationService.loci=i}set interactions(i){this.representationService.interactions=i}set settings(i){this.settingsService.settings=i}set highlights(i){this.highlightService.highlights=i}constructor(i,s,l,u,c,h){this.representationService=i,this.highlightService=s,this.structureService=l,this.settingsService=u,this.pluginService=c,this.canvasService=h,this.highlights$=this.highlightService.output$}static#e=this.\u0275fac=function(s){return new(s||r)(W.rXU(jd),W.rXU(Ed),W.rXU(Zt.Z),W.rXU(gn),W.rXU(_t.z),W.rXU(vd))};static#t=this.\u0275cmp=W.VBU({type:r,selectors:[["ngx-structure-viewer"]],viewQuery:function(s,l){if(1&s&&W.GBs(Jd,5),2&s){let u;W.mGM(u=W.lsd())&&(l.container=u.first)}},inputs:{source:"source",loci:"loci",interactions:"interactions",settings:"settings",highlights:"highlights"},outputs:{highlights$:"highlights"},standalone:!0,features:[W.Jv_([jd,Ed,Zt.Z,gn,_t.z,vd]),W.aNF],decls:4,vars:0,consts:[["container",""],["canvas",""],[1,"ngx-structure-viewer-container"],[1,"ngx-structure-viewer-canvas"]],template:function(s,l){1&s&&(W.j41(0,"div",2,0),W.nrm(2,"canvas",3,1),W.k0s())},dependencies:[He.MD],styles:[".msp-plugin{font-family:Helvetica Neue,Segoe UI,Helvetica,Source Sans Pro,Arial,sans-serif;font-size:14px;line-height:1.42857143;position:absolute;inset:0;background:#111318}.msp-plugin *{box-sizing:border-box}.msp-plugin [hidden],.msp-plugin template{display:none}.msp-plugin a{background-color:transparent}.msp-plugin a:active,.msp-plugin a:hover{outline:0}.msp-plugin abbr[title]{border-bottom:1px dotted}.msp-plugin b,.msp-plugin strong{font-weight:700}.msp-plugin small{font-size:80%}.msp-plugin img{border:0}.msp-plugin svg:not(:root){overflow:hidden}.msp-plugin button,.msp-plugin input,.msp-plugin optgroup,.msp-plugin select,.msp-plugin textarea{color:inherit;font:inherit;margin:0}.msp-plugin button{overflow:visible}.msp-plugin button,.msp-plugin select{text-transform:none}.msp-plugin button,.msp-plugin html input[type=button],.msp-plugin input[type=reset],.msp-plugin input[type=submit]{-webkit-appearance:button;cursor:pointer}.msp-plugin button[disabled],.msp-plugin html input[disabled]{cursor:default}.msp-plugin button::-moz-focus-inner,.msp-plugin input::-moz-focus-inner{border:0;padding:0}.msp-plugin input{line-height:normal}.msp-plugin input[type=checkbox],.msp-plugin input[type=radio]{box-sizing:border-box;padding:0}.msp-plugin input[type=number]::-webkit-inner-spin-button,.msp-plugin input[type=number]::-webkit-outer-spin-button{height:auto}.msp-plugin textarea{overflow:auto}.msp-plugin .msp-layout-expanded,.msp-plugin .msp-layout-standard{inset:0}.msp-plugin .msp-layout-standard{border:1px solid #313645}.msp-plugin .msp-layout-region{overflow:hidden}.msp-plugin .msp-layout-static,.msp-plugin .msp-layout-scrollable{position:absolute}.msp-plugin .msp-scrollable{overflow-y:auto}.msp-plugin .msp-scrollable-container{position:absolute;inset:0;overflow-y:auto}.msp-plugin .msp-layout-static{overflow:hidden}.msp-plugin .msp-layout-top .msp-layout-static,.msp-plugin .msp-layout-main .msp-layout-static,.msp-plugin .msp-layout-bottom .msp-layout-static,.msp-plugin .msp-layout-right .msp-layout-static{inset:0}.msp-plugin .msp-layout-right .msp-layout-scrollable{inset:43px 0 0}.msp-plugin .msp-layout-left .msp-layout-static{inset:0}.msp-plugin .msp-layout-standard-outside{position:absolute}.msp-plugin .msp-layout-standard-outside .msp-layout-main{position:absolute;inset:0}.msp-plugin .msp-layout-standard-outside .msp-layout-top{position:absolute;right:0;height:97px;top:-97px;width:50%;border-left:1px solid #313645;border-bottom:1px solid #313645}.msp-plugin .msp-layout-standard-outside .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;top:-97px;width:50%;border-bottom:1px solid #313645}.msp-plugin .msp-layout-standard-outside .msp-layout-right{position:absolute;width:50%;right:0;bottom:-295px;height:295px;border-left:1px solid #313645;border-top:1px solid #313645}.msp-plugin .msp-layout-standard-outside .msp-layout-left{position:absolute;width:50%;left:0;bottom:-295px;height:295px;border-top:1px solid #313645}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-right .msp-layout-left{width:100%}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}.msp-plugin .msp-layout-standard-outside .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-outside .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-outside .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}.msp-plugin .msp-layout-standard-landscape{position:absolute}.msp-plugin .msp-layout-standard-landscape .msp-layout-main{position:absolute;inset:100px 300px 70px 330px}.msp-plugin .msp-layout-standard-landscape .msp-layout-top{position:absolute;left:330px;right:300px;height:100px;top:0;border-bottom:1px solid #313645}.msp-plugin .msp-layout-standard-landscape .msp-layout-bottom{position:absolute;left:330px;right:300px;height:70px;bottom:0;border-top:1px solid #313645}.msp-plugin .msp-layout-standard-landscape .msp-layout-right{position:absolute;width:300px;right:0;bottom:0;top:0;border-left:1px solid #313645}.msp-plugin .msp-layout-standard-landscape .msp-layout-left{position:absolute;width:330px;left:0;bottom:0;top:0;border-right:1px solid #313645}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-main,.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-top,.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-bottom{right:0}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-main,.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-top,.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-bottom{left:0}.msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-main,.msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-top,.msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-bottom{left:32px}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-bottom .msp-layout-main{bottom:0}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-landscape .msp-layout-hide-top .msp-layout-main{top:0}.msp-plugin .msp-layout-standard-portrait{position:absolute}.msp-plugin .msp-layout-standard-portrait .msp-layout-main{position:absolute;inset:97px 0 361px}.msp-plugin .msp-layout-standard-portrait .msp-layout-top{position:absolute;right:0;height:97px;top:0;width:50%;border-left:1px solid #313645;border-bottom:1px solid #313645}.msp-plugin .msp-layout-standard-portrait .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;width:50%;border-bottom:1px solid #313645}.msp-plugin .msp-layout-standard-portrait .msp-layout-right{position:absolute;width:50%;right:0;bottom:0;height:361px;border-left:1px solid #313645;border-top:1px solid #313645}.msp-plugin .msp-layout-standard-portrait .msp-layout-left{position:absolute;width:50%;left:0;bottom:0;height:361px;border-top:1px solid #313645}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-right .msp-layout-left{width:100%}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-right.msp-layout-hide-left .msp-layout-main{bottom:0}.msp-plugin .msp-layout-standard-portrait .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-portrait .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}.msp-plugin .msp-layout-standard-portrait .msp-layout-hide-top.msp-layout-hide-bottom .msp-layout-main{top:0}.msp-plugin .msp-layout-standard-reactive{position:absolute}@media (orientation: landscape),(min-width: 1000px){.msp-plugin .msp-layout-standard-reactive .msp-layout-main{position:absolute;inset:100px 300px 70px 330px}.msp-plugin .msp-layout-standard-reactive .msp-layout-top{position:absolute;left:330px;right:300px;height:100px;top:0;border-bottom:1px solid #313645}.msp-plugin .msp-layout-standard-reactive .msp-layout-bottom{position:absolute;left:330px;right:300px;height:70px;bottom:0;border-top:1px solid #313645}.msp-plugin .msp-layout-standard-reactive .msp-layout-right{position:absolute;width:300px;right:0;bottom:0;top:0;border-left:1px solid #313645}.msp-plugin .msp-layout-standard-reactive .msp-layout-left{position:absolute;width:330px;left:0;bottom:0;top:0;border-right:1px solid #313645}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-main,.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-top,.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-bottom{right:0}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-main,.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-top,.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-bottom{left:0}.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-main,.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-top,.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-bottom{left:32px}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-main{bottom:0}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-main{top:0}}@media (orientation: portrait) and (max-width: 1000px){.msp-plugin .msp-layout-standard-reactive .msp-layout-main{position:absolute;inset:97px 0 361px}.msp-plugin .msp-layout-standard-reactive .msp-layout-top{position:absolute;right:0;height:97px;top:0;width:50%;border-left:1px solid #313645;border-bottom:1px solid #313645}.msp-plugin .msp-layout-standard-reactive .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;width:50%;border-bottom:1px solid #313645}.msp-plugin .msp-layout-standard-reactive .msp-layout-right{position:absolute;width:50%;right:0;bottom:0;height:361px;border-left:1px solid #313645;border-top:1px solid #313645}.msp-plugin .msp-layout-standard-reactive .msp-layout-left{position:absolute;width:50%;left:0;bottom:0;height:361px;border-top:1px solid #313645}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-left{width:100%}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right.msp-layout-hide-left .msp-layout-main{bottom:0}.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}.msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top.msp-layout-hide-bottom .msp-layout-main{top:0}}.msp-plugin .msp-layout-expanded{position:fixed}@media (orientation: landscape){.msp-plugin .msp-layout-expanded .msp-layout-main{position:absolute;inset:100px 300px 70px 330px}.msp-plugin .msp-layout-expanded .msp-layout-top{position:absolute;left:330px;right:300px;height:100px;top:0;border-bottom:1px solid #313645}.msp-plugin .msp-layout-expanded .msp-layout-bottom{position:absolute;left:330px;right:300px;height:70px;bottom:0;border-top:1px solid #313645}.msp-plugin .msp-layout-expanded .msp-layout-right{position:absolute;width:300px;right:0;bottom:0;top:0;border-left:1px solid #313645}.msp-plugin .msp-layout-expanded .msp-layout-left{position:absolute;width:330px;left:0;bottom:0;top:0;border-right:1px solid #313645}.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-main,.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-top,.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-bottom{right:0}.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-main,.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-top,.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-bottom{left:0}.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-main,.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-top,.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-bottom{left:32px}.msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-main{bottom:0}.msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-main{top:0}}@media (orientation: portrait){.msp-plugin .msp-layout-expanded .msp-layout-main{position:absolute;inset:97px 0 361px}.msp-plugin .msp-layout-expanded .msp-layout-top{position:absolute;right:0;height:97px;top:0;width:50%;border-left:1px solid #313645;border-bottom:1px solid #313645}.msp-plugin .msp-layout-expanded .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;width:50%;border-bottom:1px solid #313645}.msp-plugin .msp-layout-expanded .msp-layout-right{position:absolute;width:50%;right:0;bottom:0;height:361px;border-left:1px solid #313645;border-top:1px solid #313645}.msp-plugin .msp-layout-expanded .msp-layout-left{position:absolute;width:50%;left:0;bottom:0;height:361px;border-top:1px solid #313645}.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-right{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-left{width:100%}.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-left{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-right.msp-layout-hide-left .msp-layout-main{bottom:0}.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-left{width:32px}.msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}.msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-top{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-bottom{display:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}.msp-plugin .msp-layout-expanded .msp-layout-hide-top.msp-layout-hide-bottom .msp-layout-main{top:0}}.msp-plugin ::-webkit-scrollbar{width:10px;height:10px}.msp-plugin ::-webkit-scrollbar-track{border-radius:0;background-color:#16191f}.msp-plugin ::-webkit-scrollbar-thumb{border-radius:0;background-color:#0e0f14}.msp-plugin .msp-form-control,.msp-plugin .msp-control-row select,.msp-plugin .msp-control-row button,.msp-plugin .msp-control-row input[type=text],.msp-plugin .msp-btn{display:block;width:100%;background:#0c0d11;border:none;padding:0 10px;line-height:30px;height:32px;appearance:none;box-shadow:none;background-image:none}.msp-plugin .msp-form-control::-moz-placeholder,.msp-plugin .msp-control-row select::-moz-placeholder,.msp-plugin .msp-control-row button::-moz-placeholder,.msp-plugin .msp-control-row input[type=text]::-moz-placeholder,.msp-plugin .msp-btn::-moz-placeholder{color:#637ca0;opacity:1}.msp-plugin .msp-form-control:-ms-input-placeholder,.msp-plugin .msp-control-row select:-ms-input-placeholder,.msp-plugin .msp-control-row button:-ms-input-placeholder,.msp-plugin .msp-control-row input[type=text]:-ms-input-placeholder,.msp-plugin .msp-btn:-ms-input-placeholder{color:#637ca0}.msp-plugin .msp-form-control::-webkit-input-placeholder,.msp-plugin .msp-control-row select::-webkit-input-placeholder,.msp-plugin .msp-control-row button::-webkit-input-placeholder,.msp-plugin .msp-control-row input[type=text]::-webkit-input-placeholder,.msp-plugin .msp-btn::-webkit-input-placeholder{color:#637ca0}.msp-plugin .msp-form-control:hover,.msp-plugin .msp-control-row select:hover,.msp-plugin .msp-control-row button:hover,.msp-plugin .msp-control-row input[type=text]:hover,.msp-plugin .msp-btn:hover{color:#51a2fb;background-color:#16191f;border:none;outline-offset:-1px!important;outline:1px solid #363c4c!important}.msp-plugin .msp-form-control:active,.msp-plugin .msp-control-row select:active,.msp-plugin .msp-control-row button:active,.msp-plugin .msp-control-row input[type=text]:active,.msp-plugin .msp-btn:active,.msp-plugin .msp-form-control:focus,.msp-plugin .msp-control-row select:focus,.msp-plugin .msp-control-row button:focus,.msp-plugin .msp-control-row input[type=text]:focus,.msp-plugin .msp-btn:focus{color:#ccd4e0;background-color:#0c0d11;border:none;outline-offset:0;outline:none}.msp-plugin .msp-form-control[disabled],.msp-plugin .msp-control-row select[disabled],.msp-plugin .msp-control-row button[disabled],.msp-plugin .msp-control-row input[disabled][type=text],.msp-plugin [disabled].msp-btn,.msp-plugin .msp-form-control[readonly],.msp-plugin .msp-control-row select[readonly],.msp-plugin .msp-control-row button[readonly],.msp-plugin .msp-control-row input[readonly][type=text],.msp-plugin [readonly].msp-btn,fieldset[disabled] .msp-plugin .msp-form-control,fieldset[disabled] .msp-plugin .msp-control-row select,fieldset[disabled] .msp-plugin .msp-control-row button,fieldset[disabled] .msp-plugin .msp-control-row input[type=text],fieldset[disabled] .msp-plugin .msp-btn{background:#111318;opacity:.35}.msp-plugin .msp-btn,.msp-plugin .msp-control-row button{display:inline-block;margin-bottom:0;text-align:center;touch-action:manipulation;cursor:pointer;background-image:none;white-space:nowrap;-webkit-user-select:none;user-select:none;padding:0 10px;line-height:32px;border:none;box-sizing:border-box}.msp-plugin .msp-btn[disabled],.msp-plugin .msp-control-row button[disabled]{background:#111318;opacity:.35}.msp-plugin .msp-btn-block,.msp-plugin .msp-control-row button{display:block;width:100%}.msp-plugin .msp-btn,.msp-plugin .msp-control-row button,.msp-plugin .msp-btn:active,.msp-plugin .msp-btn-link:focus,.msp-plugin .msp-btn:hover{outline:none}.msp-plugin .msp-material-icon svg{display:inline-flex;vertical-align:middle;font-size:1.2em;margin-bottom:3px;fill:currentColor;width:1em;height:1em;flex-shrink:0;-webkit-user-select:none;user-select:none}.msp-plugin .msp-btn-block>.msp-material-icon,.msp-plugin .msp-control-row button>.msp-material-icon{margin-left:0;margin-right:.4em}.msp-plugin .msp-btn-childless>.msp-material-icon{margin-left:0;margin-right:0}.msp-plugin .msp-btn-icon{border:none;height:32px;width:32px;line-height:32px;padding:0;text-align:center}.msp-plugin .msp-btn-icon:hover{color:#51a2fb;background-color:#16191f;border:none;outline-offset:-1px!important;outline:1px solid #363c4c!important}.msp-plugin .msp-btn-icon[disabled],.msp-plugin .msp-btn-icon[disabled]:hover,.msp-plugin .msp-btn-icon[disabled]:active{color:#637ca0}.msp-plugin .msp-btn-icon-small{border:none;height:32px;width:20px;line-height:32px;padding:0;text-align:center}.msp-plugin .msp-btn-icon-small:hover{color:#51a2fb;background-color:#16191f;border:none;outline-offset:-1px!important;outline:1px solid #363c4c!important}.msp-plugin .msp-btn-icon-small[disabled],.msp-plugin .msp-btn-icon-small[disabled]:hover,.msp-plugin .msp-btn-icon-small[disabled]:active{color:#637ca0}.msp-plugin .msp-btn-link{font-weight:400;border-radius:0}.msp-plugin .msp-btn-link,.msp-plugin .msp-btn-link:active,.msp-plugin .msp-btn-link.active,.msp-plugin .msp-btn-link[disabled],fieldset[disabled] .msp-plugin .msp-btn-link{background-color:transparent;box-shadow:none}.msp-plugin .msp-btn-link,.msp-plugin .msp-btn-link:hover,.msp-plugin .msp-btn-link:focus,.msp-plugin .msp-btn-link:active{border-color:transparent}.msp-plugin .msp-btn-link:hover,.msp-plugin .msp-btn-link:focus{text-decoration:none;background-color:transparent}.msp-plugin .msp-btn-link[disabled]:hover,.msp-plugin .msp-btn-link[disabled]:focus,fieldset[disabled] .msp-plugin .msp-btn-link:hover,fieldset[disabled] .msp-plugin .msp-btn-link:focus{text-decoration:none}.msp-plugin .msp-btn-link .msp-icon{font-size:100%}.msp-plugin .msp-btn-link,.msp-plugin .msp-btn-link:active,.msp-plugin .msp-btn-link:focus{color:#ccd4e0;text-decoration:none}.msp-plugin .msp-btn-link:hover{color:#51a2fb;text-decoration:none}.msp-plugin .msp-btn-link-toggle-on{color:#ccd4e0}.msp-plugin .msp-btn-link-toggle-off,.msp-plugin .msp-btn-link-toggle-off:active,.msp-plugin .msp-btn-link-toggle-off:focus{color:#637ca0!important}.msp-plugin .msp-btn-link-toggle-off:hover,.msp-plugin .msp-btn-link-toggle-on:hover{color:#51a2fb!important}.msp-plugin .msp-btn-action,.msp-plugin .msp-btn-action:active,.msp-plugin .msp-btn-action:focus{color:#ccd4e0;background:#0c0d11}.msp-plugin .msp-btn-action:hover{color:#51a2fb;background:#060709}.msp-plugin .msp-btn-action[disabled],.msp-plugin .msp-btn-action[disabled]:hover,.msp-plugin .msp-btn-action[disabled]:active,.msp-plugin .msp-btn-action[disabled]:focus{color:#c9d1de}.msp-plugin .msp-btn-commit-on,.msp-plugin .msp-btn-commit-on:active,.msp-plugin .msp-btn-commit-on:focus{color:#68befd;background:#0d0e12}.msp-plugin .msp-btn-commit-on:hover{color:#51a2fb;background:#07080b}.msp-plugin .msp-btn-commit-on[disabled],.msp-plugin .msp-btn-commit-on[disabled]:hover,.msp-plugin .msp-btn-commit-on[disabled]:active,.msp-plugin .msp-btn-commit-on[disabled]:focus{color:#63bcfd}.msp-plugin .msp-btn-commit-off,.msp-plugin .msp-btn-commit-off:active,.msp-plugin .msp-btn-commit-off:focus{color:#ccd4e0;background:#090a0c}.msp-plugin .msp-btn-commit-off:hover{color:#51a2fb;background:#030405}.msp-plugin .msp-btn-commit-off[disabled],.msp-plugin .msp-btn-commit-off[disabled]:hover,.msp-plugin .msp-btn-commit-off[disabled]:active,.msp-plugin .msp-btn-commit-off[disabled]:focus{color:#c9d1de}.msp-plugin .msp-btn-remove:hover{color:#f2f4f7}.msp-plugin .msp-btn-commit-on:hover{color:#0393fc}.msp-plugin .msp-btn-action{height:32px;line-height:32px}.msp-plugin input[type=file]{display:block}.msp-plugin input[type=range]{display:block;width:100%}.msp-plugin select[multiple],.msp-plugin select[size],.msp-plugin textarea.msp-form-control,.msp-plugin textarea.msp-btn{height:auto}.msp-plugin .msp-control-top-offset{margin-top:1px}.msp-plugin .msp-btn-commit{text-align:right;padding:0 10px 0 0;line-height:32px;border:none;overflow:hidden;font-weight:700}.msp-plugin .msp-btn-commit .msp-icon{display:block-inline;line-height:32px;width:32px;text-align:center}.msp-plugin select.msp-form-control,.msp-plugin .msp-control-row select,.msp-plugin select.msp-btn{background:none;background-color:#0c0d11;background-size:8px 12px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAMAAACzvE1FAAAADFBMVEUzMzMzMzMzMzMzMzMKAG/3AAAAA3RSTlMAf4C/aSLHAAAAPElEQVR42q3NMQ4AIAgEQTn//2cLdRKppSGzBYwzVXvznNWs8C58CiussPJj8h6NwgorrKRdTvuV9v16Afn0AYFOB7aYAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:right 10px center;padding-right:24px}.msp-plugin select.msp-form-control:-moz-focusring,.msp-plugin .msp-control-row select:-moz-focusring,.msp-plugin select.msp-btn:-moz-focusring{color:transparent;text-shadow:0 0 0 #ccd4e0}.msp-plugin .msp-default-bg{background:#111318}.msp-plugin .msp-transparent-bg{background:transparent}.msp-plugin .msp-no-hover-outline:hover{color:#51a2fb;background-color:inherit;border:none;outline-offset:0!important;outline:none!important}.msp-plugin .msp-icon-inline{margin-right:8px}.msp-plugin .msp-control-row{position:relative;height:32px;background:#111318;margin-top:1px}.msp-plugin .msp-control-row>span.msp-control-row-label,.msp-plugin .msp-control-row>button.msp-control-button-label{line-height:32px;display:block;width:120px;text-align:right;padding:0 10px;color:#9cacc3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative;-webkit-user-select:none;-o-user-select:none;user-select:none;cursor:default}.msp-plugin .msp-control-row>button.msp-control-button-label{background:#111318;cursor:pointer}.msp-plugin .msp-control-row .msp-control-current{background:#111318}.msp-plugin .msp-control-row>div.msp-control-row-ctrl{position:absolute;inset:0 0 0 120px}.msp-plugin .msp-control-row>div{background:#0c0d11}.msp-plugin .msp-control-row>.msp-flex-row,.msp-plugin .msp-control-row>.msp-state-image-row{background:#111318}.msp-plugin .msp-control-label-short>span{width:80px!important}.msp-plugin .msp-control-label-short>div:nth-child(2){left:80px!important}.msp-plugin .msp-control-col-2{float:left;width:50%}.msp-plugin .msp-control-twoline{height:64px!important}.msp-plugin .msp-control-group{position:relative}.msp-plugin .msp-toggle-button .msp-icon{display:inline-block;margin-right:6px}.msp-plugin .msp-toggle-button>div>button:hover{border-color:#16191f!important;border:none;outline-offset:-1px!important;outline:1px solid #363c4c!important}.msp-plugin .msp-slider>div:first-child{position:absolute;inset:0 62px 0 18px;display:flex}.msp-plugin .msp-slider>div:last-child{position:absolute;height:32px;line-height:32px;text-align:center;right:0;width:50px;top:0;bottom:0}.msp-plugin .msp-slider input[type=text]{padding-right:6px;padding-left:4px;font-size:80%;text-align:right}.msp-plugin .msp-slider2>div:first-child{position:absolute;height:32px;line-height:32px;text-align:center;left:0;width:25px;top:0;bottom:0;font-size:80%}.msp-plugin .msp-slider2>div:nth-child(2){position:absolute;inset:0 37px 0 35px;display:flex}.msp-plugin .msp-slider2>div:last-child{position:absolute;height:32px;line-height:32px;text-align:center;right:0;width:25px;top:0;bottom:0;font-size:80%}.msp-plugin .msp-slider2 input[type=text]{padding-right:4px;padding-left:4px;font-size:80%;text-align:center}.msp-plugin .msp-toggle-color-picker button{border:10px solid #0c0d11!important;margin:0;text-align:center;padding-right:10px;padding-left:10px}.msp-plugin .msp-toggle-color-picker button:hover{border-color:#16191f!important;border:none;outline-offset:-1px!important;outline:1px solid #363c4c!important}.msp-plugin .msp-toggle-color-picker .msp-color-picker{position:absolute;z-index:100000;background:#111318;border-top:1px solid #111318;padding-bottom:5px;width:100%}.msp-plugin .msp-toggle-color-picker-above .msp-color-picker{top:-85px;height:85px}.msp-plugin .msp-toggle-color-picker-below .msp-color-picker{top:32px;height:80px}.msp-plugin .msp-control-offset{padding-left:10px}.msp-plugin .msp-accent-offset{padding-left:1px;margin-left:8px;border-left:2px solid #d67118}.msp-plugin .msp-control-group-wrapper{margin-bottom:0;margin-top:1px}.msp-plugin .msp-control-group-header{background:#111318}.msp-plugin .msp-control-group-header>button,.msp-plugin .msp-control-group-header div{padding-left:4px;text-align:left;height:24px!important;line-height:24px!important;font-size:85%!important;background:#111318!important;color:#9cacc3}.msp-plugin .msp-control-group-header .msp-icon{height:24px!important;line-height:24px!important}.msp-plugin .msp-control-group-header>span{padding-left:5px;line-height:21.3333333333px;font-size:70%;background:#111318;color:#9cacc3}.msp-plugin .msp-control-current{background:#111318}.msp-plugin .msp-control-group-footer{background:#1c1f27;height:5px;font-size:1px;margin-top:1px}.msp-plugin .msp-control-group-expander{display:block;position:absolute;line-height:32px;padding:0;left:0;top:0;width:120px;text-align:left;background:transparent}.msp-plugin .msp-control-group-expander .msp-icon{line-height:29px;width:31px;text-align:center;font-size:100%}.msp-plugin .msp-plugin-layout_controls{position:absolute;left:10px;top:10px}.msp-plugin .msp-plugin-layout_controls>button:first-child{margin-right:6px}.msp-plugin .msp-empty-control{display:none}.msp-plugin .msp-control .msp-btn-block,.msp-plugin .msp-control .msp-control-row button,.msp-plugin .msp-control-row .msp-control button{margin-bottom:0;margin-top:0}.msp-plugin .msp-row-text{height:32px;position:relative;background:#111318;margin-top:1px}.msp-plugin .msp-row-text>div{line-height:32px;text-align:center;color:#9cacc3}.msp-plugin .msp-help span{display:none}.msp-plugin .msp-help:hover span{display:inline-block;background:linear-gradient(#111318,#111318cc)}.msp-plugin .msp-help-text{position:relative;background:#111318;margin-top:1px}.msp-plugin .msp-help-text>div{padding:5px 10px;text-align:left;color:#9cacc3}.msp-plugin .msp-help-description{font-style:italic}.msp-plugin .msp-help-legend{padding-top:10px}.msp-plugin .msp-scale-legend>div{width:100%;height:30px}.msp-plugin .msp-scale-legend>div>span{padding:5px;color:#fff;font-weight:700;background-color:#0003}.msp-plugin .msp-table-legend>div{margin-right:5px;display:inline-flex}.msp-plugin .msp-table-legend>div .msp-table-legend-color{width:30px;height:20px}.msp-plugin .msp-table-legend>div .msp-table-legend-text{margin:0 5px}.msp-plugin .msp-image-preview{position:relative;background:#111318;margin-top:1px;padding:10px}.msp-plugin .msp-image-preview canvas{-webkit-user-select:none;user-select:none}.msp-plugin .msp-image-preview>span{margin-top:6px;display:block;text-align:center;font-size:80%;line-height:15px}.msp-plugin .msp-copy-image-wrapper{position:relative}.msp-plugin .msp-copy-image-wrapper div{font-weight:700;padding:3px;margin:1px 0;width:100%;background:#0c0d11;text-align:center}.msp-plugin .msp-copy-image-wrapper img{margin-top:1px}.msp-plugin .msp-control-text-area-wrapper,.msp-plugin .msp-text-area-wrapper{position:relative}.msp-plugin .msp-control-text-area-wrapper textarea,.msp-plugin .msp-text-area-wrapper textarea{border:none;width:100%;height:100%;background:#0c0d11;padding:5px 10px;resize:none;font-size:12px;line-height:16px}.msp-plugin .msp-control-text-area-wrapper{height:64px!important}.msp-plugin .msp-text-area-wrapper{height:96px!important}.msp-plugin .msp-slider-base{position:relative;height:14px;padding:5px 0;width:100%;border-radius:6px;align-self:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.msp-plugin .msp-slider-base *{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.msp-plugin .msp-slider-base-rail{position:absolute;width:100%;background-color:#1f222b;height:4px;border-radius:2px}.msp-plugin .msp-slider-base-track{position:absolute;left:0;height:4px;border-radius:6px;background-color:tint(#ccd4e0,60%)}.msp-plugin .msp-slider-base-handle{position:absolute;margin-left:-11px;margin-top:-9px;width:22px;height:22px;cursor:pointer;border-radius:50%;background-color:#ccd4e0;border:4px solid #1f222b}.msp-plugin .msp-slider-base-handle:hover{background-color:#51a2fb}.msp-plugin .msp-slider-base-mark{position:absolute;top:18px;left:0;width:100%;font-size:12px}.msp-plugin .msp-slider-base-mark-text{position:absolute;display:inline-block;vertical-align:middle;text-align:center;cursor:pointer;color:#999}.msp-plugin .msp-slider-base-mark-text-active{color:#666}.msp-plugin .msp-slider-base-step{position:absolute;width:100%;height:4px;background:transparent}.msp-plugin .msp-slider-base-dot{position:absolute;bottom:-2px;margin-left:-4px;width:8px;height:8px;border:2px solid #e9e9e9;background-color:#fff;cursor:pointer;border-radius:50%;vertical-align:middle}.msp-plugin .msp-slider-base-dot:first-child{margin-left:-4px}.msp-plugin .msp-slider-base-dot:last-child{margin-left:-4px}.msp-plugin .msp-slider-base-dot-active{border-color:tint(#ccd4e0,50%)}.msp-plugin .msp-slider-base-disabled{background:#111318;opacity:.35}.msp-plugin .msp-slider-base-disabled .msp-slider-base-handle,.msp-plugin .msp-slider-base-disabled .msp-slider-base-dot{cursor:not-allowed}.msp-plugin .msp-slider-base-disabled .msp-slider-base-mark-text,.msp-plugin .msp-slider-base-disabled .msp-slider-base-dot{cursor:not-allowed!important}.msp-plugin .msp-description{padding:10px;font-size:85%;background:#111318;text-align:center;-webkit-user-select:none;-o-user-select:none;user-select:none;font-weight:light;cursor:default}.msp-plugin .msp-description:not(:first-child){border-top:1px solid #1f222b}.msp-plugin .msp-color-picker input{color:#000!important}.msp-plugin .msp-no-webgl{position:absolute;width:100%;height:100%;left:0;top:0;display:table;text-align:center;background:#111318}.msp-plugin .msp-no-webgl>div{display:table-cell;vertical-align:middle;text-align:center;width:100%;height:100%}.msp-plugin .msp-no-webgl>div b{font-size:120%}.msp-plugin .msp-loader-msp-btn-file{position:relative;overflow:hidden}.msp-plugin .msp-loader-msp-btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;filter:alpha(opacity=0);opacity:0;outline:none;background:#fff;cursor:inherit;display:block}.msp-plugin .msp-controls-section{margin-bottom:10px}.msp-plugin .msp-combined-color-button{border:4px solid #0c0d11!important;margin:0;text-align:center;padding-right:10px;padding-left:10px}.msp-plugin .msp-combined-color-button:hover{border-color:#16191f!important;border:none;outline-offset:-1px!important;outline:1px solid #363c4c!important}.msp-plugin .msp-combined-color-swatch{width:100%;display:grid;grid-gap:1px;grid-template-columns:repeat(6,auto)}.msp-plugin .msp-combined-color-swatch .msp-btn:hover,.msp-plugin .msp-combined-color-swatch .msp-control-row button:hover,.msp-plugin .msp-control-row .msp-combined-color-swatch button:hover{outline-offset:-1px!important;outline:1px solid #363c4c!important}.msp-plugin .msp-action-select{position:relative}.msp-plugin .msp-action-select select{padding-left:42px}.msp-plugin .msp-action-select option:first-child{color:#9cacc3}.msp-plugin .msp-action-select>.msp-icon{display:block;top:0;left:10px;position:absolute;line-height:32px}.msp-plugin .msp-simple-help-section{height:28px;line-height:28px;margin-top:5px;margin-bottom:5px;padding:0 10px;font-weight:500;background:#111318;color:#ccd4e0}.msp-plugin .msp-left-panel-controls-buttons{position:absolute;width:32px;top:0;bottom:0;padding-top:10px;background:#111318}.msp-plugin .msp-left-panel-controls-buttons-bottom{position:absolute;bottom:0}.msp-plugin .msp-left-panel-controls-button-data-dirty{position:absolute;width:6px;height:6px;background:#d67118;border-radius:3px;right:6px;bottom:6px}.msp-plugin .msp-left-panel-controls .msp-scrollable-container{left:33px}.msp-plugin .msp-mapped-parameter-group{position:relative}.msp-plugin .msp-mapped-parameter-group>.msp-control-row:first-child>div:nth-child(2){right:33px}.msp-plugin .msp-mapped-parameter-group>button:first-child{right:33px}.msp-plugin .msp-mapped-parameter-group>.msp-btn-icon{position:absolute;right:0;width:32px;top:0;padding:0}.msp-plugin .msp-shape-filled{fill:#ccd4e0;stroke:#ccd4e0}.msp-plugin .msp-shape-empty{fill:none;stroke:#ccd4e0}.msp-plugin .msp-no-overflow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.msp-plugin .msp-25-lower-contrast-text{color:#7d91b0}.msp-plugin .msp-expandable-group-color-stripe{position:absolute;left:0;top:30px;width:120px;height:2px}.msp-plugin .msp-section-header{height:32px;line-height:32px;margin-top:10px;margin-bottom:10px;text-align:right;padding:0 10px;font-weight:700;background:#111318;overflow:hidden;cursor:default}.msp-plugin .msp-section-header>.msp-icon{display:block;float:left}.msp-plugin .msp-section-header>small{font-weight:400}.msp-plugin .msp-current-header{height:32px;line-height:32px;margin-bottom:10px;text-align:center;font-weight:700;background:#111318}.msp-plugin .msp-flex-row,.msp-plugin .msp-state-image-row{margin-top:1px;background:#111318;display:flex;flex-direction:row;width:inherit;height:32px}.msp-plugin .msp-flex-row>.msp-flex-item,.msp-plugin .msp-state-image-row>.msp-flex-item{margin:0 1px 0 0;flex:1 1 auto;overflow:hidden}.msp-plugin .msp-flex-row>.msp-flex-item:last-child,.msp-plugin .msp-state-image-row>.msp-flex-item:last-child{margin-right:0}.msp-plugin .msp-flex-row>select,.msp-plugin .msp-state-image-row>select,.msp-plugin .msp-flex-row>button,.msp-plugin .msp-state-image-row>button{margin:0 1px 0 0;flex:1 1 auto;height:32px;overflow:hidden}.msp-plugin .msp-flex-row .msp-btn-icon,.msp-plugin .msp-state-image-row .msp-btn-icon,.msp-plugin .msp-flex-row .msp-btn-icon-small,.msp-plugin .msp-state-image-row .msp-btn-icon-small{flex:0 0 32px;max-width:32px}.msp-plugin .msp-flex-row>select,.msp-plugin .msp-state-image-row>select{background:none}.msp-plugin .msp-flex-row>select>option[value=_],.msp-plugin .msp-state-image-row>select>option[value=_]{display:none}.msp-plugin .msp-flex-row>select:last-child,.msp-plugin .msp-state-image-row>select:last-child,.msp-plugin .msp-flex-row>button:last-child,.msp-plugin .msp-state-image-row>button:last-child{margin-right:0}.msp-plugin .msp-flex-row>button.msp-control-button-label,.msp-plugin .msp-state-image-row>button.msp-control-button-label{background:#111318}.msp-plugin .msp-state-list{list-style:none}.msp-plugin .msp-state-list>li{position:relative;overflow:hidden}.msp-plugin .msp-state-list>li>button:first-child{text-align:left;border-left:10px solid #2a2f3c!important}.msp-plugin .msp-state-list>li>div{position:absolute;right:0;top:0}.msp-plugin .msp-state-image-row{height:96px;margin-top:0}.msp-plugin .msp-state-image-row>button{height:96px;padding:0}.msp-plugin .msp-state-image-row>button>img{min-height:96px;width:inherit;transform:translateY(-50%);top:50%;position:relative}.msp-plugin .msp-tree-row{position:relative;margin-top:0;margin-bottom:1px;background:transparent}.msp-plugin .msp-tree-row-current .msp-btn-tree-label{border-radius:0!important}.msp-plugin .msp-tree-row-current .msp-btn-tree-label>span{font-weight:700}.msp-plugin .msp-tree-row .msp-btn-tree-label{text-align:left;border-radius:0 0 0 8px;border-left-width:4px;border-left-style:solid}.msp-plugin .msp-tree-row .msp-btn-tree-label>small{color:#8d9fb9}.msp-plugin .msp-tree-updates-wrapper .msp-control-group-header:last-child{margin-bottom:1px}.msp-plugin .msp-viewport-top-left-controls{position:absolute;left:10px;top:10px}.msp-plugin .msp-viewport-top-left-controls .msp-traj-controls{line-height:32px;float:left;margin-right:10px;background-color:#0c0d11}.msp-plugin .msp-viewport-top-left-controls .msp-traj-controls>span{color:#ccd4e0;margin-left:10px;margin-right:10px;font-size:85%;display:inline-block}.msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-viewport-controls{line-height:32px;float:left;margin-right:10px}.msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-viewport-controls>button{background-color:#0c0d11}.msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-viewport-controls>select{display:inline-block;width:200px;margin-right:10px}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls{line-height:32px;float:left;margin-right:10px;position:relative}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls>div:first-child{position:relative;display:inline-block}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls>div:first-child>button{position:relative}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls .msp-animation-viewport-controls-select{width:290px;position:absolute;left:0;margin-top:10px;background:#1f222b}.msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls .msp-animation-viewport-controls-select .msp-control-row:first-child{margin-top:0}.msp-plugin .msp-selection-viewport-controls{position:relative;margin:10px auto 0;width:430px}.msp-plugin .msp-selection-viewport-controls-actions{position:absolute;width:100%;top:32px;background:#1f222b}.msp-plugin .msp-selection-viewport-controls>.msp-flex-row .msp-btn,.msp-plugin .msp-selection-viewport-controls>.msp-state-image-row .msp-btn,.msp-plugin .msp-selection-viewport-controls>.msp-flex-row .msp-control-row button,.msp-plugin .msp-control-row .msp-selection-viewport-controls>.msp-flex-row button,.msp-plugin .msp-selection-viewport-controls>.msp-state-image-row .msp-control-row button,.msp-plugin .msp-control-row .msp-selection-viewport-controls>.msp-state-image-row button{padding:0 5px}.msp-plugin .msp-selection-viewport-controls select.msp-form-control,.msp-plugin .msp-selection-viewport-controls select.msp-btn,.msp-plugin .msp-selection-viewport-controls .msp-control-row select,.msp-plugin .msp-control-row .msp-selection-viewport-controls select{padding:0 5px;text-align:center;background:#0c0d11;flex:0 0 80px;text-overflow:ellipsis}.msp-plugin .msp-param-object-list-item{margin-top:1px;position:relative}.msp-plugin .msp-param-object-list-item>button{text-align:left}.msp-plugin .msp-param-object-list-item>button>span{font-weight:700}.msp-plugin .msp-param-object-list-item>div{position:absolute;right:0;top:0}.msp-plugin .msp-state-actions .msp-transform-wrapper:last-child{margin-bottom:10px}.msp-plugin .msp-button-row{display:flex;flex-direction:row;height:32px;width:inherit}.msp-plugin .msp-button-row>button{margin:0 1px 0 0;flex:1 1 auto;height:32px;text-align-last:center;background:none;padding:0 10px;overflow:hidden}.msp-plugin .msp-action-menu-options-no-header,.msp-plugin .msp-action-menu-options .msp-control-group-children{max-height:300px;overflow:hidden;overflow-y:auto}.msp-plugin .msp-action-menu-options .msp-control-row,.msp-plugin .msp-action-menu-options button,.msp-plugin .msp-action-menu-options .msp-icon,.msp-plugin .msp-action-menu-options .msp-flex-row,.msp-plugin .msp-action-menu-options .msp-state-image-row{height:24px;line-height:24px}.msp-plugin .msp-action-menu-options button{text-align:left}.msp-plugin .msp-action-menu-options .msp-action-menu-button{margin-top:1px;display:flex}.msp-plugin .msp-action-menu-options .msp-action-menu-button .msp-icon{margin-right:6px}.msp-plugin .msp-representation-entry{position:relative}.msp-plugin .msp-representation-entry>.msp-control-group-header>.msp-btn,.msp-plugin .msp-control-row .msp-representation-entry>.msp-control-group-header>button{font-weight:700}.msp-plugin .msp-representation-entry>.msp-control-group-header>.msp-icon,.msp-plugin .msp-representation-entry>.msp-control-group-header>.msp-btn-link{line-height:24px;height:24px}.msp-plugin .msp-control-group-presets-wrapper{position:absolute;right:0;top:0}.msp-plugin .msp-control-group-presets-wrapper .msp-control-group-header{background:transparent}.msp-plugin .msp-control-group-presets-wrapper button{background:transparent!important}.msp-plugin .msp-parameter-matrix input{flex:1 1 auto;min-width:0}.msp-plugin .msp-btn-apply-simple{text-align:left}.msp-plugin .msp-btn-apply-simple .msp-icon{margin-right:10px}.msp-plugin .msp-type-class-Root{border-left-color:#111318}.msp-plugin .msp-type-class-Group{border-left-color:#d67118}.msp-plugin .msp-type-class-Data{border-left-color:#6d8082}.msp-plugin .msp-type-class-Object{border-left-color:#25a25a}.msp-plugin .msp-type-class-Representation3D{border-left-color:#258cd1}.msp-plugin .msp-type-class-Behavior{border-left-color:#804399}.msp-plugin .msp-accent-color-cyan{color:#6d8082}.msp-plugin .msp-accent-bg-cyan{background:#6d8082}.msp-plugin .msp-transform-header-brand-cyan{border-bottom:1px solid #6d8082}.msp-plugin .msp-transform-header-brand-cyan:active,.msp-plugin .msp-transform-header-brand-cyan:focus{border-bottom:1px solid #6d8082}.msp-plugin .msp-accent-color-red{color:#bf2718}.msp-plugin .msp-accent-bg-red{background:#bf2718}.msp-plugin .msp-transform-header-brand-red{border-bottom:1px solid #bf2718}.msp-plugin .msp-transform-header-brand-red:active,.msp-plugin .msp-transform-header-brand-red:focus{border-bottom:1px solid #bf2718}.msp-plugin .msp-accent-color-gray{color:#22303d}.msp-plugin .msp-accent-bg-gray{background:#22303d}.msp-plugin .msp-transform-header-brand-gray{border-bottom:1px solid #22303d}.msp-plugin .msp-transform-header-brand-gray:active,.msp-plugin .msp-transform-header-brand-gray:focus{border-bottom:1px solid #22303d}.msp-plugin .msp-accent-color-green{color:#25a25a}.msp-plugin .msp-accent-bg-green{background:#25a25a}.msp-plugin .msp-transform-header-brand-green{border-bottom:1px solid #25a25a}.msp-plugin .msp-transform-header-brand-green:active,.msp-plugin .msp-transform-header-brand-green:focus{border-bottom:1px solid #25a25a}.msp-plugin .msp-accent-color-purple{color:#804399}.msp-plugin .msp-accent-bg-purple{background:#804399}.msp-plugin .msp-transform-header-brand-purple{border-bottom:1px solid #804399}.msp-plugin .msp-transform-header-brand-purple:active,.msp-plugin .msp-transform-header-brand-purple:focus{border-bottom:1px solid #804399}.msp-plugin .msp-accent-color-blue{color:#258cd1}.msp-plugin .msp-accent-bg-blue{background:#258cd1}.msp-plugin .msp-transform-header-brand-blue{border-bottom:1px solid #258cd1}.msp-plugin .msp-transform-header-brand-blue:active,.msp-plugin .msp-transform-header-brand-blue:focus{border-bottom:1px solid #258cd1}.msp-plugin .msp-accent-color-orange{color:#d67118}.msp-plugin .msp-accent-bg-orange{background:#d67118}.msp-plugin .msp-transform-header-brand-orange{border-bottom:1px solid #d67118}.msp-plugin .msp-transform-header-brand-orange:active,.msp-plugin .msp-transform-header-brand-orange:focus{border-bottom:1px solid #d67118}.msp-plugin .msp-volume-channel-inline-controls>:first-child{position:absolute;left:0;top:0;height:32px;right:32px}.msp-plugin .msp-volume-channel-inline-controls .msp-slider>div:first-child{right:42px}.msp-plugin .msp-volume-channel-inline-controls .msp-slider>div:last-child{width:30px}.msp-plugin .msp-volume-channel-inline-controls>button{position:absolute;right:0;width:32px;top:0;padding:0}.msp-plugin .msp-volume-channel-inline-controls>button .msp-material-icon{margin-right:0}.msp-plugin .msp-list-unstyled{padding-left:0;list-style:none}.msp-plugin .msp-drag-drop-overlay{border:12px dashed #ccd4e0;background:#0000005c;display:flex;align-items:center;justify-content:center;position:absolute;inset:0;font-size:48px;font-weight:700}.msp-plugin .msp-task-state{line-height:32px}.msp-plugin .msp-task-state>span{-webkit-user-select:none;-o-user-select:none;user-select:none;cursor:default}.msp-plugin .msp-overlay-tasks{position:absolute;display:flex;inset:0;height:100%;width:100%;z-index:1000;justify-content:center;align-items:center;background:#00000040}.msp-plugin .msp-overlay-tasks .msp-task-state>div{height:32px;margin-top:1px;position:relative;width:100%;background:#111318}.msp-plugin .msp-overlay-tasks .msp-task-state>div>div{height:32px;line-height:32px;display:inline-block;padding:0 10px;-webkit-user-select:none;-o-user-select:none;user-select:none;cursor:default;white-space:nowrap;background:#111318;position:absolute}.msp-plugin .msp-overlay-tasks .msp-task-state>div>button{display:inline-block;margin-top:-3px}.msp-plugin .msp-background-tasks{position:absolute;left:0;bottom:0;z-index:1000}.msp-plugin .msp-background-tasks .msp-task-state>div{height:32px;margin-top:1px;position:relative;width:100%;background:#111318}.msp-plugin .msp-background-tasks .msp-task-state>div>div{height:32px;line-height:32px;display:inline-block;padding:0 10px;-webkit-user-select:none;-o-user-select:none;user-select:none;cursor:default;white-space:nowrap;background:#111318;position:absolute}.msp-plugin .msp-background-tasks .msp-task-state>div>button{display:inline-block;margin-top:-3px}.msp-plugin .msp-viewport{position:absolute;inset:0;background:#111318}.msp-plugin .msp-viewport .msp-btn-link{background:#0003}.msp-plugin .msp-viewport-expanded{position:fixed;z-index:1000}.msp-plugin .msp-viewport-host3d{position:absolute;inset:0;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none;touch-action:manipulation}.msp-plugin .msp-viewport-host3d>canvas{background-color:#111318;background-image:linear-gradient(45deg,lightgrey 25%,transparent 25%,transparent 75%,lightgrey 75%,lightgrey),linear-gradient(45deg,lightgrey 25%,transparent 25%,transparent 75%,lightgrey 75%,lightgrey);background-size:60px 60px;background-position:0 0,30px 30px}.msp-plugin .msp-viewport-controls{position:absolute;right:10px;top:10px;width:32px}.msp-plugin .msp-viewport-controls-buttons{text-align:right;position:relative}.msp-plugin .msp-viewport-controls-buttons>div{position:relative;margin-bottom:4px}.msp-plugin .msp-viewport-controls-buttons button{padding:0;text-align:center;width:32px;position:relative}.msp-plugin .msp-viewport-controls-buttons .msp-btn-link-toggle-off{color:#637ca0}.msp-plugin .msp-viewport-controls-buttons .msp-btn-link:hover{color:#51a2fb}.msp-plugin .msp-semi-transparent-background{background:#111318;opacity:.5;position:absolute;top:0;left:0;width:100%;height:100%}.msp-plugin .msp-hover-box-wrapper{position:relative}.msp-plugin .msp-hover-box-wrapper .msp-hover-box-body{visibility:hidden;position:absolute;right:36px;top:0;width:100px;background-color:#111318}.msp-plugin .msp-hover-box-wrapper .msp-hover-box-spacer{visibility:hidden;position:absolute;right:32px;top:0;width:4px;height:32px}.msp-plugin .msp-hover-box-wrapper:hover .msp-hover-box-body,.msp-plugin .msp-hover-box-wrapper:hover .msp-hover-box-spacer{visibility:visible}.msp-plugin .msp-viewport-controls-panel{width:290px;top:0;right:36px;position:absolute;background:#1f222b}.msp-plugin .msp-viewport-controls-panel .msp-control-group-wrapper:first-child{padding-top:0}.msp-plugin .msp-viewport-controls-panel .msp-viewport-controls-panel-controls{overflow-y:auto;max-height:400px}.msp-plugin .msp-highlight-toast-wrapper{position:absolute;right:10px;bottom:10px;max-width:95%;z-index:10000}.msp-plugin .msp-highlight-info{color:#51a2fb;padding:3px 10px;background:#111318;opacity:90%;max-width:400px;-webkit-user-select:none;-o-user-select:none;user-select:none;cursor:default}.msp-plugin .msp-highlight-markdown-row{padding-left:10px}.msp-plugin .msp-highlight-simple-row{text-align:right}.msp-plugin .msp-highlight-info-hr{margin-inline:0px;margin-block:3px;border:none;height:1px;background-color:#51a2fb}.msp-plugin .msp-highlight-info-additional{font-size:85%;display:inline-block;color:#056ee1}.msp-plugin .msp-snapshot-description-wrapper{background:#11131880;position:absolute;left:0;top:42px;padding:6.6px 10px;max-height:224px;overflow:hidden;overflow-y:auto;max-width:400px}.msp-plugin .msp-snapshot-description-wrapper a{text-decoration:underline;cursor:pointer;color:#ccd4e0}.msp-plugin .msp-snapshot-description-wrapper ul,.msp-plugin .msp-snapshot-description-wrapper ol{padding-left:14px}.msp-plugin .msp-log-wrap{position:absolute;inset:0;overflow:hidden}.msp-plugin .msp-log{position:absolute;inset:0 -20px 0 0;overflow-y:scroll;overflow-x:hidden;font-size:90%;background:#1f222b}.msp-plugin .msp-log{font-size:90%;color:#bcc7d6}.msp-plugin .msp-log ul{padding:0;margin:0}.msp-plugin .msp-log li{clear:both;margin:0;background:#111318;position:relative}.msp-plugin .msp-log li:not(:last-child){border-bottom:1px solid #313645}.msp-plugin .msp-log .msp-log-entry{margin-left:110px;background:#14171c;padding:3px 25px 3px 10px}.msp-plugin .msp-log .msp-log-timestamp{padding:3px 10px;float:left;text-align:right;width:110px;color:#8d9fb9;font-size:100%}.msp-plugin .msp-log .msp-log-timestamp small{font-size:100%}.msp-plugin .msp-log .label{margin-top:-3px;font-size:7pt}.msp-plugin .msp-log-entry-badge{position:absolute;left:0;top:0;bottom:0;width:6px}.msp-plugin .msp-log-entry-message{background:#0cca5d}.msp-plugin .msp-log-entry-info{background:#5e3673}.msp-plugin .msp-log-entry-error{background:#fd354b}.msp-plugin .msp-log-entry-warning{background:#fcc937}.msp-plugin .msp-sequence{position:absolute;inset:0;background:#111318}.msp-plugin .msp-sequence-select{position:relative;height:24px;width:100%;margin-bottom:1px;background:#1f222b;text-align:left}.msp-plugin .msp-sequence-select>span{display:inline-block;line-height:24px;padding:0 10px;font-size:85%;font-weight:700;cursor:default}.msp-plugin .msp-sequence-select>select{display:inline-block;max-width:120px;width:auto;text-overflow:ellipsis;font-size:85%;height:24px;line-height:24px;background-size:6px 8px;background-color:#1f222b}.msp-plugin .msp-sequence-wrapper{word-break:break-word;padding:10px 10px 3px;-webkit-user-select:none;user-select:none}.msp-plugin .msp-sequence-wrapper-non-empty{font-size:85%;line-height:180%;font-family:Courier New,monospace;background:#0c0d11;width:100%;overflow-y:auto;overflow-x:hidden;position:absolute;inset:25px 0 0}.msp-plugin .msp-sequence-chain-label{margin-left:10px;margin-top:10px;-webkit-user-select:none;user-select:none;color:#51a2fb;font-size:90%;line-height:90%;padding-left:.2em}.msp-plugin .msp-sequence-wrapper span{cursor:pointer}.msp-plugin .msp-sequence-wrapper .msp-sequence-residue-long{margin:0 .2em}.msp-plugin .msp-sequence-wrapper .msp-sequence-residue-long-begin{margin:0 .2em 0 0}.msp-plugin .msp-sequence-wrapper .msp-sequence-label{color:#51a2fb;font-size:90%;line-height:90%;padding-bottom:1em;padding-left:.2em}.msp-plugin .msp-sequence-wrapper .msp-sequence-number{color:#51a2fb;word-break:keep-all;cursor:default;position:relative;top:-1.1em;left:3.1em;padding:0;margin-left:-3em;font-size:80%}.msp-plugin .msp-sequence-wrapper .msp-sequence-number-long{left:3.3em}.msp-plugin .msp-sequence-wrapper .msp-sequence-number-long-negative{left:2.7em}.msp-plugin .msp-sequence-wrapper .msp-sequence-number-negative{left:2.5em}.msp-plugin .msp-sequence-wrapper .msp-sequence-present{color:#ccd4e0}.msp-plugin .msp-sequence-wrapper .msp-sequence-missing{color:#637ca0}.msp-plugin .msp-transformer .msp-entity-badge{position:absolute;top:0;right:0;height:32px;line-height:32px;width:32px}.msp-plugin .msp-layout-right,.msp-plugin .msp-layout-left{background:#1f222b}.msp-plugin .msp-transformer-wrapper{position:relative}.msp-plugin .msp-transformer-wrapper .msp-entity-badge{left:0;top:0}.msp-plugin .msp-transformer-wrapper:first-child .msp-panel-description-content{top:33px}.msp-plugin .msp-transformer-wrapper:not(:first-child) .msp-panel-description-content{bottom:33px}.msp-plugin .msp-transform-wrapper{margin-bottom:10px}.msp-plugin .msp-transform-wrapper-collapsed,.msp-plugin .msp-transform-update-wrapper,.msp-plugin .msp-transform-update-wrapper-collapsed{margin-bottom:1px}.msp-plugin .msp-transform-update-wrapper>.msp-transform-header>button,.msp-plugin .msp-transform-update-wrapper-collapsed>.msp-transform-header>button{text-align:left;padding-left:32px;line-height:24px;background:#16191f}.msp-plugin .msp-transform-wrapper>.msp-transform-header>button{text-align:left;background:#111318;font-weight:700;padding-right:5px}.msp-plugin .msp-transform-header{position:relative}.msp-plugin .msp-transform-header>button>small{font-weight:400;float:right}.msp-plugin .msp-transform-header>button>span:first-child{margin-right:10px}.msp-plugin .msp-transform-header>button:hover{color:#9cacc3}.msp-plugin .msp-transform-header-brand{margin-bottom:-1px}.msp-plugin .msp-transform-header-brand svg{fill:#ccd4e0;stroke:#ccd4e0}.msp-plugin .msp-transform-default-params{background:#111318;position:absolute;left:0;top:0;width:32px;padding:0}.msp-plugin .msp-transform-default-params:hover{background:#000}.msp-plugin .msp-transform-apply-wrap{position:relative;margin-top:1px;width:100%;height:32px}.msp-plugin .msp-transform-refresh{width:87px;margin-left:33px;background:#111318;text-align:right}.msp-plugin .msp-transform-apply{display:block;position:absolute;left:120px;right:0;top:0}.msp-plugin .msp-transform-apply-wider{margin-left:33px}.msp-plugin .msp-data-beh{margin:10px 0!important}.msp-plugin .msp-toast-container{position:relative;z-index:1001}.msp-plugin .msp-toast-container .msp-toast-entry{color:#ccd4e0;background:#1f222b;position:relative;float:right;min-height:32px;margin-top:10px;border:1px solid #313645;display:table}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-title{height:100%;line-height:32px;padding:0 10px;background:#111318;font-weight:700;display:table-cell;-webkit-user-select:none;-o-user-select:none;user-select:none;font-weight:light;cursor:pointer}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message{padding:3px 42px 3px 10px;display:table-cell}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a{text-decoration:none;color:#68befd;font-weight:700}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a:hover{text-decoration:underline;color:#0393fc}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a:active,.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a:focus{color:#68befd;outline-offset:0;outline:none}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-hide{position:absolute;width:42px;right:0;top:0;bottom:0}.msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-hide .msp-btn-icon{background:transparent;position:absolute;inset:1px 0 0;width:100%;text-align:right;padding-right:5px}.msp-plugin .msp-help-row{position:relative;height:32px;background:#111318;margin-top:1px;display:table;width:100%}.msp-plugin .msp-help-row>span{width:120px;text-align:right;padding:3px 10px;color:#9cacc3;display:table-cell;font-weight:700;-webkit-user-select:none;-o-user-select:none;user-select:none;cursor:default}.msp-plugin .msp-help-row>div{background:#0c0d11;position:relative;padding:3px 10px;display:table-cell}.msp-plugin .msp-canvas{width:100%;height:100%;background-color:#f3f2ee}.msp-plugin .msp-canvas text{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.msp-plugin .msp-canvas circle{stroke:#000;stroke-width:10;stroke-opacity:.3}.msp-plugin .msp-canvas circle:hover{fill:#ae5d04;stroke:#000;stroke-width:10px}.msp-plugin .msp-canvas .info{fill:#fff;stroke:#000;stroke-width:3}.msp-plugin .msp-canvas .show{visibility:visible}.msp-plugin .msp-canvas .hide{visibility:hidden}.msp-plugin .msp-canvas .delete-button rect{fill:#ed4337;stroke:#000}.msp-plugin .msp-canvas .delete-button text{stroke:#fff;fill:#fff}.msp-plugin .msp-canvas .delete-button:hover{stroke:#000;stroke-width:3;fill:#ff6961}.msp-plugin .msp-canvas .infoCircle:hover{fill:#4c66b2}.msp-plugin .msp-canvas:focus{outline:none}.msp-plugin .msp-logo{display:block;position:absolute;bottom:10px;right:10px;height:32px;width:100px;background-repeat:no-repeat;background-position:bottom right;background-size:auto;background-image:url(data:image/png;base64,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)}.msp-plugin .msp-plugin-content{color:#ccd4e0}.msp-plugin .msp-plugin-init-error{white-space:pre;margin:10px}\n",".ngx-structure-viewer-container{position:relative;height:100%;width:100%}.ngx-structure-viewer-canvas{position:absolute;height:100%;width:100%;left:0;top:0}\n"],encapsulation:2})}return r})();var th=F(8839),nh=F(1584),rh=F(9172);function sh(r,e){if(1&r&&(W.j41(0,"div",6)(1,"div",7),W.nrm(2,"div",8),W.j41(3,"code",9)(4,"pre",10),W.EFF(5),W.nI1(6,"json"),W.k0s()()()()),2&r){const i=e.$implicit;W.R7$(2),W.xc7("background-color",i.color),W.R7$(3),W.JRh(W.bMT(6,3,i))}}function oh(r,e){if(1&r&&(W.j41(0,"div",0)(1,"div",1)(2,"div",2),W.nrm(3,"ngx-structure-viewer",3),W.k0s()(),W.j41(4,"div",4)(5,"h2"),W.EFF(6,"Color chain"),W.k0s(),W.j41(7,"div",5),W.Z7z(8,sh,7,5,"div",6,W.Vm6),W.k0s()()()),2&r){const i=e,s=W.XpG();W.R7$(3),W.Y8G("settings",s.settings)("source",s.source)("loci",i),W.R7$(5),W.Dyx(i)}}let lh=(()=>{class r{constructor(){this.settings={"background-color":"#2b3035ff","backbone-color":"#6ea8fecc","interaction-color":"#ff0000ff","interaction-size":1},this.source={type:"remote",format:"mmcif",label:"8VAP",binary:!1,link:"assets/8vap.cif"};const i=[{chain:"A",color:"#6f42c1"},{chain:"B",color:"#0d6efd"},{chain:"C",color:"#dc3545"},{chain:"D",color:"#ffc107"},{chain:"E",color:"#28a745"},{chain:"F",color:"#17a2b8"},{chain:"G",color:"#fd7e14"}];this.chains$=function ih(r=0,e=th.E){return r<0&&(r=0),(0,nh.O)(r,r,e)}(3e3).pipe((0,je.T)(()=>i.map(s=>s.color)),(0,je.T)(s=>s.sort(()=>Math.random()-.5)),(0,je.T)(s=>s.map((l,u)=>({...i[u],color:l}))),(0,rh.Z)(i),(0,Dt.t)(1))}static#e=this.\u0275fac=function(s){return new(s||r)};static#t=this.\u0275cmp=W.VBU({type:r,selectors:[["app-section-chains"]],standalone:!0,features:[W.aNF],decls:2,vars:3,consts:[[1,"row","mb-3"],[1,"col-9"],[1,"rounded","squared","overflow-hidden","shadow-sm"],[3,"settings","source","loci"],[1,"col-3","pt-0","p-3"],[1,"d-flex","flex-column","gap-2"],[1,"flex-1"],[1,"d-flex","flex-row","gap-2"],[1,"d-block","flex-shrink-0","p-2"],[1,"bg-body-tertiary","flex-grow-1","p-3"],[1,"m-0"]],template:function(s,l){if(1&s&&(W.DNE(0,oh,10,3,"div",0),W.nI1(1,"async")),2&s){let u;W.vxM(0,(u=W.bMT(1,1,l.chains$))?0:-1,u)}},dependencies:[eh,He.MD,He.Jj,He.TG],changeDetection:0})}return r})();var ah=F(6933);let uh=(()=>{class r{static#e=this.\u0275fac=function(s){return new(s||r)};static#t=this.\u0275cmp=W.VBU({type:r,selectors:[["page-structure-viewer"]],standalone:!0,features:[W.aNF],decls:10,vars:0,consts:[[1,"container","pt-3"],[1,"mb-3"]],template:function(s,l){1&s&&(W.j41(0,"div",0)(1,"div",1)(2,"h1"),W.EFF(3,"Structure viewer"),W.k0s(),W.j41(4,"p"),W.EFF(5," The "),W.j41(6,"b"),W.EFF(7,"ngx-structure-viewer"),W.k0s(),W.EFF(8," is a Mol* wrapper for Angular. It is a viewer for molecular structures and can be used to visualize and interact with 3D molecular structures. It works out of the box with the latest releases of Angular and automatized the most common features of Mol*. "),W.k0s()(),W.nrm(9,"app-section-chains"),W.k0s())},dependencies:[lh,ah.iI,He.MD],styles:[".progress-bar[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_progress 10s linear infinite;width:0}@keyframes _ngcontent-%COMP%_progress{0%{width:0}to{width:100%}}"]})}return r})()},6216:Zn=>{"use strict";var be=Object.prototype.hasOwnProperty,F=Object.prototype.toString,Le=Object.defineProperty,Lt=Object.getOwnPropertyDescriptor,He=function(fe){return"function"==typeof Array.isArray?Array.isArray(fe):"[object Array]"===F.call(fe)},R=function(fe){if(!fe||"[object Object]"!==F.call(fe))return!1;var Me,Te=be.call(fe,"constructor"),Ne=fe.constructor&&fe.constructor.prototype&&be.call(fe.constructor.prototype,"isPrototypeOf");if(fe.constructor&&!Te&&!Ne)return!1;for(Me in fe);return typeof Me>"u"||be.call(fe,Me)},Nt=function(fe,Te){Le&&"__proto__"===Te.name?Le(fe,Te.name,{enumerable:!0,configurable:!0,value:Te.newValue,writable:!0}):fe[Te.name]=Te.newValue},mt=function(fe,Te){if("__proto__"===Te){if(!be.call(fe,Te))return;if(Lt)return Lt(fe,Te).value}return fe[Te]};Zn.exports=function Ue(){var fe,Te,Ne,Me,qt,Mt,xe=arguments[0],xt=1,Dt=arguments.length,Pe=!1;for("boolean"==typeof xe&&(Pe=xe,xe=arguments[1]||{},xt=2),(null==xe||"object"!=typeof xe&&"function"!=typeof xe)&&(xe={});xt{var be=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,F=/\n/g,Le=/^\s*/,Lt=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,He=/^:\s*/,R=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,Nt=/^[;\s]*/,mt=/^\s+|\s+$/g;function Mt(xe){return xe?xe.replace(mt,""):""}Zn.exports=function(xe,xt){if("string"!=typeof xe)throw new TypeError("First argument must be a string");if(!xe)return[];xt=xt||{};var Dt=1,Pe=1;function je(we){var Q=we.match(F);Q&&(Dt+=Q.length);var St=we.lastIndexOf("\n");Pe=~St?we.length-St:Pe+we.length}function z(){var we={line:Dt,column:Pe};return function(Q){return Q.position=new De(we),fn(),Q}}function De(we){this.start=we,this.end={line:Dt,column:Pe},this.source=xt.source}De.prototype.content=xe;var jt=[];function ft(we){var Q=new Error(xt.source+":"+Dt+":"+Pe+": "+we);if(Q.reason=we,Q.filename=xt.source,Q.line=Dt,Q.column=Pe,Q.source=xe,!xt.silent)throw Q;jt.push(Q)}function bt(we){var Q=we.exec(xe);if(Q){var St=Q[0];return je(St),xe=xe.slice(St.length),Q}}function fn(){bt(Le)}function wt(we){var Q;for(we=we||[];Q=on();)!1!==Q&&we.push(Q);return we}function on(){var we=z();if("/"==xe.charAt(0)&&"*"==xe.charAt(1)){for(var Q=2;""!=xe.charAt(Q)&&("*"!=xe.charAt(Q)||"/"!=xe.charAt(Q+1));)++Q;if(""===xe.charAt((Q+=2)-1))return ft("End of comment missing");var St=xe.slice(2,Q-2);return Pe+=2,je(St),xe=xe.slice(Q),Pe+=2,we({type:"comment",comment:St})}}function Xn(){var we=z(),Q=bt(Lt);if(Q){if(on(),!bt(He))return ft("property missing ':'");var St=bt(R),Jn=we({type:"declaration",property:Mt(Q[0].replace(be,"")),value:St?Mt(St[0].replace(be,"")):""});return bt(Nt),Jn}}return fn(),function jn(){var Q,we=[];for(wt(we);Q=Xn();)!1!==Q&&(we.push(Q),wt(we));return we}()}},7578:(Zn,be,F)=>{"use strict";var Lt=F(1395),He=F(1605);function R(t){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+t,o=1;o"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ne=Object.prototype.hasOwnProperty,Me=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,qt={},Mt={};function Pe(t,n,o,a,d,m,v){this.acceptsBooleans=2===n||3===n||4===n,this.attributeName=a,this.attributeNamespace=d,this.mustUseProperty=o,this.propertyName=t,this.type=n,this.sanitizeURL=m,this.removeEmptyString=v}var je={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){je[t]=new Pe(t,0,!1,t,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var n=t[0];je[n]=new Pe(n,1,!1,t[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(t){je[t]=new Pe(t,2,!1,t.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){je[t]=new Pe(t,2,!1,t,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(t){je[t]=new Pe(t,3,!1,t.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(t){je[t]=new Pe(t,3,!0,t,null,!1,!1)}),["capture","download"].forEach(function(t){je[t]=new Pe(t,4,!1,t,null,!1,!1)}),["cols","rows","size","span"].forEach(function(t){je[t]=new Pe(t,6,!1,t,null,!1,!1)}),["rowSpan","start"].forEach(function(t){je[t]=new Pe(t,5,!1,t.toLowerCase(),null,!1,!1)});var z=/[\-:]([a-z])/g;function De(t){return t[1].toUpperCase()}function jt(t,n,o,a){var d=je.hasOwnProperty(n)?je[n]:null;(null!==d?0!==d.type:a||!(2"u"||function xt(t,n,o,a){if(null!==o&&0===o.type)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return!a&&(null!==o?!o.acceptsBooleans:"data-"!==(t=t.toLowerCase().slice(0,5))&&"aria-"!==t);default:return!1}}(t,n,o,a))return!0;if(a)return!1;if(null!==o)switch(o.type){case 3:return!n;case 4:return!1===n;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}(n,o,d,a)&&(o=null),a||null===d?function xe(t){return!!Ne.call(Mt,t)||!Ne.call(qt,t)&&(Me.test(t)?Mt[t]=!0:(qt[t]=!0,!1))}(n)&&(null===o?t.removeAttribute(n):t.setAttribute(n,""+o)):d.mustUseProperty?t[d.propertyName]=null===o?3!==d.type&&"":o:(n=d.attributeName,a=d.attributeNamespace,null===o?t.removeAttribute(n):(o=3===(d=d.type)||4===d&&!0===o?"":""+o,a?t.setAttributeNS(a,n,o):t.setAttribute(n,o))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(t){var n=t.replace(z,De);je[n]=new Pe(n,1,!1,t,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var n=t.replace(z,De);je[n]=new Pe(n,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(t){var n=t.replace(z,De);je[n]=new Pe(n,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(t){je[t]=new Pe(t,1,!1,t.toLowerCase(),null,!1,!1)}),je.xlinkHref=new Pe("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(t){je[t]=new Pe(t,1,!1,t.toLowerCase(),null,!0,!0)});var ft=Lt.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,bt=Symbol.for("react.element"),fn=Symbol.for("react.portal"),wt=Symbol.for("react.fragment"),on=Symbol.for("react.strict_mode"),Xn=Symbol.for("react.profiler"),jn=Symbol.for("react.provider"),we=Symbol.for("react.context"),Q=Symbol.for("react.forward_ref"),St=Symbol.for("react.suspense"),Jn=Symbol.for("react.suspense_list"),ee=Symbol.for("react.memo"),de=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var Se=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var rt=Symbol.iterator;function Je(t){return null===t||"object"!=typeof t?null:"function"==typeof(t=rt&&t[rt]||t["@@iterator"])?t:null}var Zt,W=Object.assign;function gn(t){if(void 0===Zt)try{throw Error()}catch(o){var n=o.stack.trim().match(/\n( *(at )?)/);Zt=n&&n[1]||""}return"\n"+Zt+t}var _t=!1;function p(t,n){if(!t||_t)return"";_t=!0;var o=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(n)if(n=function(){throw Error()},Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(n,[])}catch(M){var a=M}Reflect.construct(t,[],n)}else{try{n.call()}catch(M){a=M}t.call(n.prototype)}else{try{throw Error()}catch(M){a=M}t()}}catch(M){if(M&&a&&"string"==typeof M.stack){for(var d=M.stack.split("\n"),m=a.stack.split("\n"),v=d.length-1,S=m.length-1;1<=v&&0<=S&&d[v]!==m[S];)S--;for(;1<=v&&0<=S;v--,S--)if(d[v]!==m[S]){if(1!==v||1!==S)do{if(v--,0>--S||d[v]!==m[S]){var k="\n"+d[v].replace(" at new "," at ");return t.displayName&&k.includes("")&&(k=k.replace("",t.displayName)),k}}while(1<=v&&0<=S);break}}}finally{_t=!1,Error.prepareStackTrace=o}return(t=t?t.displayName||t.name:"")?gn(t):""}function he(t){switch(t.tag){case 5:return gn(t.type);case 16:return gn("Lazy");case 13:return gn("Suspense");case 19:return gn("SuspenseList");case 0:case 2:case 15:return p(t.type,!1);case 11:return p(t.type.render,!1);case 1:return p(t.type,!0);default:return""}}function Zr(t){if(null==t)return null;if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t;switch(t){case wt:return"Fragment";case fn:return"Portal";case Xn:return"Profiler";case on:return"StrictMode";case St:return"Suspense";case Jn:return"SuspenseList"}if("object"==typeof t)switch(t.$$typeof){case we:return(t.displayName||"Context")+".Consumer";case jn:return(t._context.displayName||"Context")+".Provider";case Q:var n=t.render;return(t=t.displayName)||(t=""!==(t=n.displayName||n.name||"")?"ForwardRef("+t+")":"ForwardRef"),t;case ee:return null!==(n=t.displayName||null)?n:Zr(t.type)||"Memo";case de:n=t._payload,t=t._init;try{return Zr(t(n))}catch{}}return null}function Z(t){var n=t.type;switch(t.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return t=(t=n.render).displayName||t.name||"",n.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Zr(n);case 8:return n===on?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof n)return n.displayName||n.name||null;if("string"==typeof n)return n}return null}function Fi(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":case"object":return t;default:return""}}function ip(t){var n=t.type;return(t=t.nodeName)&&"input"===t.toLowerCase()&&("checkbox"===n||"radio"===n)}function hl(t){t._valueTracker||(t._valueTracker=function Sd(t){var n=ip(t)?"checked":"value",o=Object.getOwnPropertyDescriptor(t.constructor.prototype,n),a=""+t[n];if(!t.hasOwnProperty(n)&&typeof o<"u"&&"function"==typeof o.get&&"function"==typeof o.set){var d=o.get,m=o.set;return Object.defineProperty(t,n,{configurable:!0,get:function(){return d.call(this)},set:function(v){a=""+v,m.call(this,v)}}),Object.defineProperty(t,n,{enumerable:o.enumerable}),{getValue:function(){return a},setValue:function(v){a=""+v},stopTracking:function(){t._valueTracker=null,delete t[n]}}}}(t))}function rp(t){if(!t)return!1;var n=t._valueTracker;if(!n)return!0;var o=n.getValue(),a="";return t&&(a=ip(t)?t.checked?"true":"false":t.value),(t=a)!==o&&(n.setValue(t),!0)}function Qs(t){if(typeof(t=t||(typeof document<"u"?document:void 0))>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function ml(t,n){return W({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n.checked??t._wrapperState.initialChecked})}function xu(t,n){var o=null==n.defaultValue?"":n.defaultValue,a=null!=n.checked?n.checked:n.defaultChecked;o=Fi(null!=n.value?n.value:o),t._wrapperState={initialChecked:a,initialValue:o,controlled:"checkbox"===n.type||"radio"===n.type?null!=n.checked:null!=n.value}}function bu(t,n){null!=(n=n.checked)&&jt(t,"checked",n,!1)}function fl(t,n){bu(t,n);var o=Fi(n.value),a=n.type;if(null!=o)"number"===a?(0===o&&""===t.value||t.value!=o)&&(t.value=""+o):t.value!==""+o&&(t.value=""+o);else if("submit"===a||"reset"===a)return void t.removeAttribute("value");n.hasOwnProperty("value")?Gs(t,n.type,o):n.hasOwnProperty("defaultValue")&&Gs(t,n.type,Fi(n.defaultValue)),null==n.checked&&null!=n.defaultChecked&&(t.defaultChecked=!!n.defaultChecked)}function wu(t,n,o){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var a=n.type;if(("submit"===a||"reset"===a)&&null==n.value)return;n=""+t._wrapperState.initialValue,o||n===t.value||(t.value=n),t.defaultValue=n}""!==(o=t.name)&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,""!==o&&(t.name=o)}function Gs(t,n,o){("number"!==n||Qs(t.ownerDocument)!==t)&&(null==o?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+o&&(t.defaultValue=""+o))}var Ys=Array.isArray;function Xr(t,n,o,a){if(t=t.options,n){n={};for(var d=0;d"+n.valueOf().toString()+"",n=cr.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;n.firstChild;)t.appendChild(n.firstChild)}},typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(n,o,a,d){MSApp.execUnsafeLocalFunction(function(){return t(n,o)})}:t);function Jr(t,n){if(n){var o=t.firstChild;if(o&&o===t.lastChild&&3===o.nodeType)return void(o.nodeValue=n)}t.textContent=n}var ge={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},gt=["Webkit","ms","Moz","O"];function yl(t,n,o){return null==n||"boolean"==typeof n||""===n?"":o||"number"!=typeof n||0===n||ge.hasOwnProperty(t)&&ge[t]?(""+n).trim():n+"px"}function $(t,n){for(var o in t=t.style,n)if(n.hasOwnProperty(o)){var a=0===o.indexOf("--"),d=yl(o,n[o],a);"float"===o&&(o="cssFloat"),a?t.setProperty(o,d):t[o]=d}}Object.keys(ge).forEach(function(t){gt.forEach(function(n){n=n+t.charAt(0).toUpperCase()+t.substring(1),ge[n]=ge[t]})});var Qe=W({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function gi(t,n){if(n){if(Qe[t]&&(null!=n.children||null!=n.dangerouslySetInnerHTML))throw Error(R(137,t));if(null!=n.dangerouslySetInnerHTML){if(null!=n.children)throw Error(R(60));if("object"!=typeof n.dangerouslySetInnerHTML||!("__html"in n.dangerouslySetInnerHTML))throw Error(R(61))}if(null!=n.style&&"object"!=typeof n.style)throw Error(R(62))}}function Wt(t,n){if(-1===t.indexOf("-"))return"string"==typeof n.is;switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ei=null;function es(t){return(t=t.target||t.srcElement||window).correspondingUseElement&&(t=t.correspondingUseElement),3===t.nodeType?t.parentNode:t}var ts=null,Bi=null,pr=null;function Hi(t){if(t=vi(t)){if("function"!=typeof ts)throw Error(R(280));var n=t.stateNode;n&&(n=Tr(n),ts(t.stateNode,t.type,n))}}function vl(t){Bi?pr?pr.push(t):pr=[t]:Bi=t}function xl(){if(Bi){var t=Bi,n=pr;if(pr=Bi=null,Hi(t),n)for(t=0;t>>=0)?32:31-(Tu(t)/cp|0)|0},Tu=Math.log,cp=Math.LN2,so=64,oo=4194304;function ls(t){switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&t;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&t;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function lo(t,n){var o=t.pendingLanes;if(0===o)return 0;var a=0,d=t.suspendedLanes,m=t.pingedLanes,v=268435455&o;if(0!==v){var S=v&~d;0!==S?a=ls(S):0!=(m&=v)&&(a=ls(m))}else 0!=(v=o&~d)?a=ls(v):0!==m&&(a=ls(m));if(0===a)return 0;if(0!==n&&n!==a&&!(n&d)&&((d=a&-a)>=(m=n&-n)||16===d&&4194240&m))return n;if(4&a&&(a|=16&o),0!==(n=t.entangledLanes))for(t=t.entanglements,n&=a;0o;o++)n.push(t);return n}function as(t,n,o){t.pendingLanes|=n,536870912!==n&&(t.suspendedLanes=0,t.pingedLanes=0),(t=t.eventTimes)[n=31-En(n)]=o}function Dl(t,n){var o=t.entangledLanes|=n;for(t=t.entanglements;o;){var a=31-En(o),d=1<=ms),Kl=" ",$l=!1;function Sr(t,n){switch(t){case"keyup":return-1!==Vu.indexOf(n.keyCode);case"keydown":return 229!==n.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ui(t){return"object"==typeof(t=t.detail)&&"data"in t?t.data:null}var kr=!1,Rp={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function mo(t){var n=t&&t.nodeName&&t.nodeName.toLowerCase();return"input"===n?!!Rp[t.type]:"textarea"===n}function qu(t,n,o,a){vl(a),0<(n=bo(n,"onChange")).length&&(o=new Fl("onChange","change",null,o,a),t.push({event:o,listeners:n}))}var fs=null,gs=null;function Fp(t){rc(t,0)}function fo(t){if(rp(oi(t)))return t}function Bp(t,n){if("change"===t)return n}var Ql=!1;if(Te){var Gl;if(Te){var Yl="oninput"in document;if(!Yl){var _u=document.createElement("div");_u.setAttribute("oninput","return;"),Yl="function"==typeof _u.oninput}Gl=Yl}else Gl=!1;Ql=Gl&&(!document.documentMode||9=n)return{node:o,offset:n-t};t=a}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=Xl(o)}}function $u(t,n){return!(!t||!n)&&(t===n||(!t||3!==t.nodeType)&&(n&&3===n.nodeType?$u(t,n.parentNode):"contains"in t?t.contains(n):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(n))))}function Jl(){for(var t=window,n=Qs();n instanceof t.HTMLIFrameElement;){try{var o="string"==typeof n.contentWindow.location.href}catch{o=!1}if(!o)break;n=Qs((t=n.contentWindow).document)}return n}function ys(t){var n=t&&t.nodeName&&t.nodeName.toLowerCase();return n&&("input"===n&&("text"===t.type||"search"===t.type||"tel"===t.type||"url"===t.type||"password"===t.type)||"textarea"===n||"true"===t.contentEditable)}function Qu(t){var n=Jl(),o=t.focusedElem,a=t.selectionRange;if(n!==o&&o&&o.ownerDocument&&$u(o.ownerDocument.documentElement,o)){if(null!==a&&ys(o))if(n=a.start,void 0===(t=a.end)&&(t=n),"selectionStart"in o)o.selectionStart=n,o.selectionEnd=Math.min(t,o.value.length);else if((t=(n=o.ownerDocument||document)&&n.defaultView||window).getSelection){t=t.getSelection();var d=o.textContent.length,m=Math.min(a.start,d);a=void 0===a.end?m:Math.min(a.end,d),!t.extend&&m>a&&(d=a,a=m,m=d),d=Ku(o,m);var v=Ku(o,a);d&&v&&(1!==t.rangeCount||t.anchorNode!==d.node||t.anchorOffset!==d.offset||t.focusNode!==v.node||t.focusOffset!==v.offset)&&((n=n.createRange()).setStart(d.node,d.offset),t.removeAllRanges(),m>a?(t.addRange(n),t.extend(v.node,v.offset)):(n.setEnd(v.node,v.offset),t.addRange(n)))}for(n=[],t=o;t=t.parentNode;)1===t.nodeType&&n.push({element:t,left:t.scrollLeft,top:t.scrollTop});for("function"==typeof o.focus&&o.focus(),o=0;o=document.documentMode,Vi=null,ea=null,qi=null,ta=!1;function go(t,n,o){var a=o.window===o?o.document:9===o.nodeType?o:o.ownerDocument;ta||null==Vi||Vi!==Qs(a)||(a="selectionStart"in(a=Vi)&&ys(a)?{start:a.selectionStart,end:a.selectionEnd}:{anchorNode:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset},qi&&Cr(qi,a)||(qi=a,0<(a=bo(ea,"onSelect")).length&&(n=new Fl("onSelect","select",null,n,o),t.push({event:n,listeners:a}),n.target=Vi)))}function yo(t,n){var o={};return o[t.toLowerCase()]=n.toLowerCase(),o["Webkit"+t]="webkit"+n,o["Moz"+t]="moz"+n,o}var jr={animationend:yo("Animation","AnimationEnd"),animationiteration:yo("Animation","AnimationIteration"),animationstart:yo("Animation","AnimationStart"),transitionend:yo("Transition","TransitionEnd")},na={},Gu={};function vo(t){if(na[t])return na[t];if(!jr[t])return t;var o,n=jr[t];for(o in n)if(n.hasOwnProperty(o)&&o in Gu)return na[t]=n[o];return t}Te&&(Gu=document.createElement("div").style,"AnimationEvent"in window||(delete jr.animationend.animation,delete jr.animationiteration.animation,delete jr.animationstart.animation),"TransitionEvent"in window||delete jr.transitionend.transition);var Yu=vo("animationend"),Zu=vo("animationiteration"),Xu=vo("animationstart"),Ju=vo("transitionend"),ec=new Map,tc="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function ii(t,n){ec.set(t,n),Ue(n,[t])}for(var vs=0;vsxi||(t.current=Ss[xi],Ss[xi]=null,xi--)}function Ke(t,n){xi++,Ss[xi]=t.current,t.current=n}var li={},Ft=qn(li),Kt=qn(!1),yn=li;function Pr(t,n){var o=t.type.contextTypes;if(!o)return li;var a=t.stateNode;if(a&&a.__reactInternalMemoizedUnmaskedChildContext===n)return a.__reactInternalMemoizedMaskedChildContext;var m,d={};for(m in o)d[m]=n[m];return a&&((t=t.stateNode).__reactInternalMemoizedUnmaskedChildContext=n,t.__reactInternalMemoizedMaskedChildContext=d),d}function Jt(t){return null!=t.childContextTypes}function bi(){Ge(Kt),Ge(Ft)}function ks(t,n,o){if(Ft.current!==li)throw Error(R(168));Ke(Ft,n),Ke(Kt,o)}function cc(t,n,o){var a=t.stateNode;if(n=n.childContextTypes,"function"!=typeof a.getChildContext)return o;for(var d in a=a.getChildContext())if(!(d in n))throw Error(R(108,Z(t)||"Unknown",d));return W({},o,a)}function Cs(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||li,yn=Ft.current,Ke(Ft,t),Ke(Kt,Kt.current),!0}function js(t,n,o){var a=t.stateNode;if(!a)throw Error(R(169));o?(t=cc(t,n,yn),a.__reactInternalMemoizedMergedChildContext=t,Ge(Kt),Ge(Ft),Ke(Ft,t)):Ge(Kt),Ke(Kt,o)}var wi=null,_n=!1,pa=!1;function pc(t){null===wi?wi=[t]:wi.push(t)}function Si(){if(!pa&&null!==wi){pa=!0;var t=0,n=Ve;try{var o=wi;for(Ve=1;t>=v,d-=v,ji=1<<32-En(n)+d|o<me?(Pt=pe,pe=null):Pt=pe.sibling;var Re=q(T,pe,P[me],G);if(null===Re){null===pe&&(pe=Pt);break}t&&pe&&null===Re.alternate&&n(T,pe),A=m(Re,A,me),null===ce?se=Re:ce.sibling=Re,ce=Re,pe=Pt}if(me===P.length)return o(T,pe),et&&_i(T,me),se;if(null===pe){for(;meme?(Pt=pe,pe=null):Pt=pe.sibling;var Ri=q(T,pe,Re.value,G);if(null===Ri){null===pe&&(pe=Pt);break}t&&pe&&null===Ri.alternate&&n(T,pe),A=m(Ri,A,me),null===ce?se=Ri:ce.sibling=Ri,ce=Ri,pe=Pt}if(Re.done)return o(T,pe),et&&_i(T,me),se;if(null===pe){for(;!Re.done;me++,Re=P.next())null!==(Re=K(T,Re.value,G))&&(A=m(Re,A,me),null===ce?se=Re:ce.sibling=Re,ce=Re);return et&&_i(T,me),se}for(pe=a(T,pe);!Re.done;me++,Re=P.next())null!==(Re=J(pe,T,me,Re.value,G))&&(t&&null!==Re.alternate&&pe.delete(null===Re.key?me:Re.key),A=m(Re,A,me),null===ce?se=Re:ce.sibling=Re,ce=Re);return t&&pe.forEach(function(yd){return n(T,yd)}),et&&_i(T,me),se}(T,A,P,G);Io(T,P)}return"string"==typeof P&&""!==P||"number"==typeof P?(P=""+P,null!==A&&6===A.tag?(o(T,A.sibling),(A=d(A,P)).return=T,T=A):(o(T,A),(A=ol(P,T.mode,G)).return=T,T=A),v(T)):o(T,A)}}var Wi=gc(!0),yc=gc(!1),To=qn(null),Po=null,Mr=null,xa=null;function ba(){xa=Mr=Po=null}function wa(t){var n=To.current;Ge(To),t._currentValue=n}function Lo(t,n,o){for(;null!==t;){var a=t.alternate;if((t.childLanes&n)!==n?(t.childLanes|=n,null!==a&&(a.childLanes|=n)):null!==a&&(a.childLanes&n)!==n&&(a.childLanes|=n),t===o)break;t=t.return}}function Ki(t,n){Po=t,xa=Mr=null,null!==(t=t.dependencies)&&null!==t.firstContext&&(t.lanes&n&&(nn=!0),t.firstContext=null)}function xn(t){var n=t._currentValue;if(xa!==t)if(t={context:t,memoizedValue:n,next:null},null===Mr){if(null===Po)throw Error(R(308));Mr=t,Po.dependencies={lanes:0,firstContext:t}}else Mr=Mr.next=t;return n}var Ei=null;function Sa(t){null===Ei?Ei=[t]:Ei.push(t)}function vc(t,n,o,a){var d=n.interleaved;return null===d?(o.next=o,Sa(n)):(o.next=d.next,d.next=o),n.interleaved=o,ai(t,a)}function ai(t,n){t.lanes|=n;var o=t.alternate;for(null!==o&&(o.lanes|=n),o=t,t=t.return;null!==t;)t.childLanes|=n,null!==(o=t.alternate)&&(o.childLanes|=n),o=t,t=t.return;return 3===o.tag?o.stateNode:null}var Pn=!1;function As(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function xc(t,n){n.updateQueue===(t=t.updateQueue)&&(n.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,effects:t.effects})}function ui(t,n){return{eventTime:t,lane:n,tag:0,payload:null,callback:null,next:null}}function Ai(t,n,o){var a=t.updateQueue;if(null===a)return null;if(a=a.shared,2&Oe){var d=a.pending;return null===d?n.next=n:(n.next=d.next,d.next=n),a.pending=n,ai(t,o)}return null===(d=a.interleaved)?(n.next=n,Sa(a)):(n.next=d.next,d.next=n),a.interleaved=n,ai(t,o)}function No(t,n,o){if(null!==(n=n.updateQueue)&&(n=n.shared,4194240&o)){var a=n.lanes;n.lanes=o|=a&=t.pendingLanes,Dl(t,o)}}function bc(t,n){var o=t.updateQueue,a=t.alternate;if(null===a||o!==(a=a.updateQueue))null===(t=o.lastBaseUpdate)?o.firstBaseUpdate=n:t.next=n,o.lastBaseUpdate=n;else{var d=null,m=null;if(null!==(o=o.firstBaseUpdate)){do{var v={eventTime:o.eventTime,lane:o.lane,tag:o.tag,payload:o.payload,callback:o.callback,next:null};null===m?d=m=v:m=m.next=v,o=o.next}while(null!==o);null===m?d=m=n:m=m.next=n}else d=m=n;t.updateQueue=o={baseState:a.baseState,firstBaseUpdate:d,lastBaseUpdate:m,shared:a.shared,effects:a.effects}}}function Mo(t,n,o,a){var d=t.updateQueue;Pn=!1;var m=d.firstBaseUpdate,v=d.lastBaseUpdate,S=d.shared.pending;if(null!==S){d.shared.pending=null;var k=S,M=k.next;k.next=null,null===v?m=M:v.next=M,v=k;var _=t.alternate;null!==_&&(S=(_=_.updateQueue).lastBaseUpdate)!==v&&(null===S?_.firstBaseUpdate=M:S.next=M,_.lastBaseUpdate=k)}if(null!==m){var K=d.baseState;for(v=0,_=M=k=null,S=m;;){var q=S.lane,J=S.eventTime;if((a&q)===q){null!==_&&(_=_.next={eventTime:J,lane:0,tag:S.tag,payload:S.payload,callback:S.callback,next:null});e:{var ie=t,re=S;switch(q=n,J=o,re.tag){case 1:if("function"==typeof(ie=re.payload)){K=ie.call(J,K,q);break e}K=ie;break e;case 3:ie.flags=-65537&ie.flags|128;case 0:if(null==(q="function"==typeof(ie=re.payload)?ie.call(J,K,q):ie))break e;K=W({},K,q);break e;case 2:Pn=!0}}null!==S.callback&&0!==S.lane&&(t.flags|=64,null===(q=d.effects)?d.effects=[S]:q.push(S))}else J={eventTime:J,lane:q,tag:S.tag,payload:S.payload,callback:S.callback,next:null},null===_?(M=_=J,k=K):_=_.next=J,v|=q;if(null===(S=S.next)){if(null===(S=d.shared.pending))break;S=(q=S).next,q.next=null,d.lastBaseUpdate=q,d.shared.pending=null}}if(null===_&&(k=K),d.baseState=k,d.firstBaseUpdate=M,d.lastBaseUpdate=_,null!==(n=d.shared.interleaved)){d=n;do{v|=d.lane,d=d.next}while(d!==n)}else null===m&&(d.shared.lanes=0);Pi|=v,t.lanes=v,t.memoizedState=K}}function ka(t,n,o){if(t=n.effects,n.effects=null,null!==t)for(n=0;no?o:4,t(!0);var a=Qi.transition;Qi.transition={};try{t(!1),n()}finally{Ve=o,Qi.transition=a}}function tt(){return tn().memoizedState}function Ee(t,n,o){var a=Mi(t);o={lane:a,action:o,hasEagerState:!1,eagerState:null,next:null},Oa(t)?Ra(n,o):null!==(o=vc(t,n,o,a))&&(zn(o,t,a,Gt()),Ii(o,n,a))}function Hr(t,n,o){var a=Mi(t),d={lane:a,action:o,hasEagerState:!1,eagerState:null,next:null};if(Oa(t))Ra(n,d);else{var m=t.alternate;if(0===t.lanes&&(null===m||0===m.lanes)&&null!==(m=n.lastRenderedReducer))try{var v=n.lastRenderedState,S=m(v,o);if(d.hasEagerState=!0,d.eagerState=S,In(S,v)){var k=n.interleaved;return null===k?(d.next=d,Sa(n)):(d.next=k.next,k.next=d),void(n.interleaved=d)}}catch{}null!==(o=vc(t,n,d,a))&&(zn(o,t,a,d=Gt()),Ii(o,n,a))}}function Oa(t){var n=t.alternate;return t===ot||null!==n&&n===ot}function Ra(t,n){Yi=Oo=!0;var o=t.pending;null===o?n.next=n:(n.next=o.next,o.next=n),t.pending=n}function Ii(t,n,o){if(4194240&o){var a=n.lanes;n.lanes=o|=a&=t.pendingLanes,Dl(t,o)}}var Ns={readContext:xn,useCallback:It,useContext:It,useEffect:It,useImperativeHandle:It,useInsertionEffect:It,useLayoutEffect:It,useMemo:It,useReducer:It,useRef:It,useState:It,useDebugValue:It,useDeferredValue:It,useTransition:It,useMutableSource:It,useSyncExternalStore:It,useId:It,unstable_isNewReconciler:!1},pi={readContext:xn,useCallback:function(t,n){return $n().memoizedState=[t,void 0===n?null:n],t},useContext:xn,useEffect:Da,useImperativeHandle:function(t,n,o){return o=null!=o?o.concat([t]):null,Bo(4194308,4,L.bind(null,n,t),o)},useLayoutEffect:function(t,n){return Bo(4194308,4,t,n)},useInsertionEffect:function(t,n){return Bo(4,2,t,n)},useMemo:function(t,n){var o=$n();return n=void 0===n?null:n,t=t(),o.memoizedState=[t,n],t},useReducer:function(t,n,o){var a=$n();return n=void 0!==o?o(n):n,a.memoizedState=a.baseState=n,a.queue=t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:n},t=t.dispatch=Ee.bind(null,ot,t),[a.memoizedState,t]},useRef:function(t){return $n().memoizedState={current:t}},useState:Cc,useDebugValue:$e,useDeferredValue:function(t){return $n().memoizedState=t},useTransition:function(){var t=Cc(!1),n=t[0];return t=Ac.bind(null,t[1]),$n().memoizedState=t,[n,t]},useMutableSource:function(){},useSyncExternalStore:function(t,n,o){var a=ot,d=$n();if(et){if(void 0===o)throw Error(R(407));o=o()}else{if(o=n(),null===Ct)throw Error(R(349));30&Gi||Na(a,n,o)}d.memoizedState=o;var m={value:o,getSnapshot:n};return d.queue=m,Da(wc.bind(null,a,m,t),[t]),a.flags|=2048,Fr(9,Ls.bind(null,a,m,o,n),void 0,null),o},useId:function(){var t=$n(),n=Ct.identifierPrefix;if(et){var o=Wn;n=":"+n+"R"+(o=(ji&~(1<<32-En(ji)-1)).toString(32)+o),0<(o=Rr++)&&(n+="H"+o.toString(32)),n+=":"}else n=":"+n+"r"+(o=Ia++).toString(32)+":";return t.memoizedState=n},unstable_isNewReconciler:!1},kd={readContext:xn,useCallback:jc,useContext:xn,useEffect:za,useImperativeHandle:I,useInsertionEffect:Uo,useLayoutEffect:ue,useMemo:Ec,useReducer:Ts,useRef:Ma,useState:function(){return Ts(Is)},useDebugValue:$e,useDeferredValue:function(t){return Br(tn(),pt.memoizedState,t)},useTransition:function(){return[Ts(Is)[0],tn().memoizedState]},useMutableSource:Fo,useSyncExternalStore:La,useId:tt,unstable_isNewReconciler:!1},nd={readContext:xn,useCallback:jc,useContext:xn,useEffect:za,useImperativeHandle:I,useInsertionEffect:Uo,useLayoutEffect:ue,useMemo:Ec,useReducer:Ps,useRef:Ma,useState:function(){return Ps(Is)},useDebugValue:$e,useDeferredValue:function(t){var n=tn();return null===pt?n.memoizedState=t:Br(n,pt.memoizedState,t)},useTransition:function(){return[Ps(Is)[0],tn().memoizedState]},useMutableSource:Fo,useSyncExternalStore:La,useId:tt,unstable_isNewReconciler:!1};function bn(t,n){if(t&&t.defaultProps){for(var o in n=W({},n),t=t.defaultProps)void 0===n[o]&&(n[o]=t[o]);return n}return n}function Fa(t,n,o,a){o=null==(o=o(a,n=t.memoizedState))?n:W({},n,o),t.memoizedState=o,0===t.lanes&&(t.updateQueue.baseState=o)}var Vo={isMounted:function(t){return!!(t=t._reactInternals)&&dr(t)===t},enqueueSetState:function(t,n,o){t=t._reactInternals;var a=Gt(),d=Mi(t),m=ui(a,d);m.payload=n,null!=o&&(m.callback=o),null!==(n=Ai(t,m,d))&&(zn(n,t,d,a),No(n,t,d))},enqueueReplaceState:function(t,n,o){t=t._reactInternals;var a=Gt(),d=Mi(t),m=ui(a,d);m.tag=1,m.payload=n,null!=o&&(m.callback=o),null!==(n=Ai(t,m,d))&&(zn(n,t,d,a),No(n,t,d))},enqueueForceUpdate:function(t,n){t=t._reactInternals;var o=Gt(),a=Mi(t),d=ui(o,a);d.tag=2,null!=n&&(d.callback=n),null!==(n=Ai(t,d,a))&&(zn(n,t,a,o),No(n,t,a))}};function Ba(t,n,o,a,d,m,v){return"function"==typeof(t=t.stateNode).shouldComponentUpdate?t.shouldComponentUpdate(a,m,v):!(n.prototype&&n.prototype.isPureReactComponent&&Cr(o,a)&&Cr(d,m))}function Ic(t,n,o){var a=!1,d=li,m=n.contextType;return"object"==typeof m&&null!==m?m=xn(m):(d=Jt(n)?yn:Ft.current,m=(a=null!=(a=n.contextTypes))?Pr(t,d):li),n=new n(o,m),t.memoizedState=null!=n.state?n.state:null,n.updater=Vo,t.stateNode=n,n._reactInternals=t,a&&((t=t.stateNode).__reactInternalMemoizedUnmaskedChildContext=d,t.__reactInternalMemoizedMaskedChildContext=m),n}function Tc(t,n,o,a){t=n.state,"function"==typeof n.componentWillReceiveProps&&n.componentWillReceiveProps(o,a),"function"==typeof n.UNSAFE_componentWillReceiveProps&&n.UNSAFE_componentWillReceiveProps(o,a),n.state!==t&&Vo.enqueueReplaceState(n,n.state,null)}function Ha(t,n,o,a){var d=t.stateNode;d.props=o,d.state=t.memoizedState,d.refs={},As(t);var m=n.contextType;"object"==typeof m&&null!==m?d.context=xn(m):(m=Jt(n)?yn:Ft.current,d.context=Pr(t,m)),d.state=t.memoizedState,"function"==typeof(m=n.getDerivedStateFromProps)&&(Fa(t,n,m,o),d.state=t.memoizedState),"function"==typeof n.getDerivedStateFromProps||"function"==typeof d.getSnapshotBeforeUpdate||"function"!=typeof d.UNSAFE_componentWillMount&&"function"!=typeof d.componentWillMount||(n=d.state,"function"==typeof d.componentWillMount&&d.componentWillMount(),"function"==typeof d.UNSAFE_componentWillMount&&d.UNSAFE_componentWillMount(),n!==d.state&&Vo.enqueueReplaceState(d,d.state,null),Mo(t,o,d,a),d.state=t.memoizedState),"function"==typeof d.componentDidMount&&(t.flags|=4194308)}function Ur(t,n){try{var o="",a=n;do{o+=he(a),a=a.return}while(a);var d=o}catch(m){d="\nError generating stack: "+m.message+"\n"+m.stack}return{value:t,source:n,stack:d,digest:null}}function qo(t,n,o){return{value:t,source:null,stack:o??null,digest:n??null}}function Ua(t,n){try{console.error(n.value)}catch(o){setTimeout(function(){throw o})}}var Bt="function"==typeof WeakMap?WeakMap:Map;function Nn(t,n,o){(o=ui(-1,o)).tag=3,o.payload={element:null};var a=n.value;return o.callback=function(){el||(el=!0,tu=a),Ua(0,n)},o}function Zi(t,n,o){(o=ui(-1,o)).tag=3;var a=t.type.getDerivedStateFromError;if("function"==typeof a){var d=n.value;o.payload=function(){return a(d)},o.callback=function(){Ua(0,n)}}var m=t.stateNode;return null!==m&&"function"==typeof m.componentDidCatch&&(o.callback=function(){Ua(0,n),"function"!=typeof a&&(null===Li?Li=new Set([this]):Li.add(this));var v=n.stack;this.componentDidCatch(n.value,{componentStack:null!==v?v:""})}),o}function Pc(t,n,o){var a=t.pingCache;if(null===a){a=t.pingCache=new Bt;var d=new Set;a.set(n,d)}else void 0===(d=a.get(n))&&a.set(n,d=new Set);d.has(o)||(d.add(o),t=dd.bind(null,t,n,o),n.then(t,t))}function Va(t){do{var n;if((n=13===t.tag)&&(n=null===(n=t.memoizedState)||null!==n.dehydrated),n)return t;t=t.return}while(null!==t);return null}function qa(t,n,o,a,d){return 1&t.mode?(t.flags|=65536,t.lanes=d,t):(t===n?t.flags|=65536:(t.flags|=128,o.flags|=131072,o.flags&=-52805,1===o.tag&&(null===o.alternate?o.tag=17:((n=ui(-1,1)).tag=2,Ai(o,n,1))),o.lanes|=1),t)}var id=ft.ReactCurrentOwner,nn=!1;function Qt(t,n,o,a){n.child=null===t?yc(n,null,o,a):Wi(n,t.child,o,a)}function Lc(t,n,o,a,d){o=o.render;var m=n.ref;return Ki(n,d),a=Ta(t,n,o,a,m,d),o=Pa(),null===t||nn?(et&&o&&ha(n),n.flags|=1,Qt(t,n,a,d),n.child):(n.updateQueue=t.updateQueue,n.flags&=-2053,t.lanes&=~d,Qn(t,n,d))}function Nc(t,n,o,a,d){if(null===t){var m=o.type;return"function"!=typeof m||pu(m)||void 0!==m.defaultProps||null!==o.compare||void 0!==o.defaultProps?((t=rl(o.type,null,a,n,n.mode,d)).ref=n.ref,t.return=n,n.child=t):(n.tag=15,n.type=m,Mc(t,n,m,a,d))}return m=t.child,t.lanes&d||!(o=null!==(o=o.compare)?o:Cr)(m.memoizedProps,a)||t.ref!==n.ref?(n.flags|=1,(t=zi(m,a)).ref=n.ref,t.return=n,n.child=t):Qn(t,n,d)}function Mc(t,n,o,a,d){if(null!==t){var m=t.memoizedProps;if(Cr(m,a)&&t.ref===n.ref){if(nn=!1,n.pendingProps=a=m,!(t.lanes&d))return n.lanes=t.lanes,Qn(t,n,d);131072&t.flags&&(nn=!0)}}return di(t,n,o,a,d)}function Dc(t,n,o){var a=n.pendingProps,d=a.children,m=null!==t?t.memoizedState:null;if("hidden"===a.mode)if(1&n.mode){if(!(1073741824&o))return t=null!==m?m.baseLanes|o:o,n.lanes=n.childLanes=1073741824,n.memoizedState={baseLanes:t,cachePool:null,transitions:null},n.updateQueue=null,Ke(qr,hn),hn|=t,null;n.memoizedState={baseLanes:0,cachePool:null,transitions:null},a=null!==m?m.baseLanes:o,Ke(qr,hn),hn|=a}else n.memoizedState={baseLanes:0,cachePool:null,transitions:null},Ke(qr,hn),hn|=o;else null!==m?(a=m.baseLanes|o,n.memoizedState=null):a=o,Ke(qr,hn),hn|=a;return Qt(t,n,d,o),n.child}function Xi(t,n){var o=n.ref;(null===t&&null!==o||null!==t&&t.ref!==o)&&(n.flags|=512,n.flags|=2097152)}function di(t,n,o,a,d){var m=Jt(o)?yn:Ft.current;return m=Pr(n,m),Ki(n,d),o=Ta(t,n,o,a,m,d),a=Pa(),null===t||nn?(et&&a&&ha(n),n.flags|=1,Qt(t,n,o,d),n.child):(n.updateQueue=t.updateQueue,n.flags&=-2053,t.lanes&=~d,Qn(t,n,d))}function Ms(t,n,o,a,d){if(Jt(o)){var m=!0;Cs(n)}else m=!1;if(Ki(n,d),null===n.stateNode)Ko(t,n),Ic(n,o,a),Ha(n,o,a,d),a=!0;else if(null===t){var v=n.stateNode,S=n.memoizedProps;v.props=S;var k=v.context,M=o.contextType;M="object"==typeof M&&null!==M?xn(M):Pr(n,M=Jt(o)?yn:Ft.current);var _=o.getDerivedStateFromProps,K="function"==typeof _||"function"==typeof v.getSnapshotBeforeUpdate;K||"function"!=typeof v.UNSAFE_componentWillReceiveProps&&"function"!=typeof v.componentWillReceiveProps||(S!==a||k!==M)&&Tc(n,v,a,M),Pn=!1;var q=n.memoizedState;v.state=q,Mo(n,a,v,d),k=n.memoizedState,S!==a||q!==k||Kt.current||Pn?("function"==typeof _&&(Fa(n,o,_,a),k=n.memoizedState),(S=Pn||Ba(n,o,S,a,q,k,M))?(K||"function"!=typeof v.UNSAFE_componentWillMount&&"function"!=typeof v.componentWillMount||("function"==typeof v.componentWillMount&&v.componentWillMount(),"function"==typeof v.UNSAFE_componentWillMount&&v.UNSAFE_componentWillMount()),"function"==typeof v.componentDidMount&&(n.flags|=4194308)):("function"==typeof v.componentDidMount&&(n.flags|=4194308),n.memoizedProps=a,n.memoizedState=k),v.props=a,v.state=k,v.context=M,a=S):("function"==typeof v.componentDidMount&&(n.flags|=4194308),a=!1)}else{v=n.stateNode,xc(t,n),S=n.memoizedProps,M=n.type===n.elementType?S:bn(n.type,S),v.props=M,K=n.pendingProps,q=v.context,k="object"==typeof(k=o.contextType)&&null!==k?xn(k):Pr(n,k=Jt(o)?yn:Ft.current);var J=o.getDerivedStateFromProps;(_="function"==typeof J||"function"==typeof v.getSnapshotBeforeUpdate)||"function"!=typeof v.UNSAFE_componentWillReceiveProps&&"function"!=typeof v.componentWillReceiveProps||(S!==K||q!==k)&&Tc(n,v,a,k),Pn=!1,v.state=q=n.memoizedState,Mo(n,a,v,d);var ie=n.memoizedState;S!==K||q!==ie||Kt.current||Pn?("function"==typeof J&&(Fa(n,o,J,a),ie=n.memoizedState),(M=Pn||Ba(n,o,M,a,q,ie,k)||!1)?(_||"function"!=typeof v.UNSAFE_componentWillUpdate&&"function"!=typeof v.componentWillUpdate||("function"==typeof v.componentWillUpdate&&v.componentWillUpdate(a,ie,k),"function"==typeof v.UNSAFE_componentWillUpdate&&v.UNSAFE_componentWillUpdate(a,ie,k)),"function"==typeof v.componentDidUpdate&&(n.flags|=4),"function"==typeof v.getSnapshotBeforeUpdate&&(n.flags|=1024)):("function"!=typeof v.componentDidUpdate||S===t.memoizedProps&&q===t.memoizedState||(n.flags|=4),"function"!=typeof v.getSnapshotBeforeUpdate||S===t.memoizedProps&&q===t.memoizedState||(n.flags|=1024),n.memoizedProps=a,n.memoizedState=ie),v.props=a,v.state=ie,v.context=k,a=M):("function"!=typeof v.componentDidUpdate||S===t.memoizedProps&&q===t.memoizedState||(n.flags|=4),"function"!=typeof v.getSnapshotBeforeUpdate||S===t.memoizedProps&&q===t.memoizedState||(n.flags|=1024),a=!1)}return _a(t,n,o,a,m,d)}function _a(t,n,o,a,d,m){Xi(t,n);var v=!!(128&n.flags);if(!a&&!v)return d&&js(n,o,!1),Qn(t,n,m);a=n.stateNode,id.current=n;var S=v&&"function"!=typeof o.getDerivedStateFromError?null:a.render();return n.flags|=1,null!==t&&v?(n.child=Wi(n,t.child,null,m),n.child=Wi(n,null,S,m)):Qt(t,n,S,m),n.memoizedState=a.state,d&&js(n,o,!0),n.child}function _o(t){var n=t.stateNode;n.pendingContext?ks(0,n.pendingContext,n.pendingContext!==n.context):n.context&&ks(0,n.context,!1),Ca(t,n.containerInfo)}function Mn(t,n,o,a,d){return Nr(),va(d),n.flags|=256,Qt(t,n,o,a),n.child}var Oc,$a,Rc,Fc,wn={dehydrated:null,treeContext:null,retryLane:0};function Ds(t){return{baseLanes:t,cachePool:null,transitions:null}}function Wo(t,n,o){var S,a=n.pendingProps,d=st.current,m=!1,v=!!(128&n.flags);if((S=v)||(S=(null===t||null!==t.memoizedState)&&!!(2&d)),S?(m=!0,n.flags&=-129):(null===t||null!==t.memoizedState)&&(d|=1),Ke(st,1&d),null===t)return ga(n),null!==(t=n.memoizedState)&&null!==(t=t.dehydrated)?(n.lanes=1&n.mode?"$!"===t.data?8:1073741824:1,null):(v=a.children,t=a.fallback,m?(m=n.child,v={mode:"hidden",children:v},1&(a=n.mode)||null===m?m=sl(v,a,0,null):(m.childLanes=0,m.pendingProps=v),t=rr(t,a,o,null),m.return=n,t.return=n,m.sibling=t,n.child=m,n.child.memoizedState=Ds(o),n.memoizedState=wn,t):Wa(n,v));if(null!==(d=t.memoizedState)&&null!==(S=d.dehydrated))return function rd(t,n,o,a,d,m,v){if(o)return 256&n.flags?(n.flags&=-257,Vr(t,n,v,a=qo(Error(R(422))))):null!==n.memoizedState?(n.child=t.child,n.flags|=128,null):(m=a.fallback,a=sl({mode:"visible",children:a.children},d=n.mode,0,null),(m=rr(m,d,v,null)).flags|=2,a.return=n,m.return=n,a.sibling=m,n.child=a,1&n.mode&&Wi(n,t.child,null,v),n.child.memoizedState=Ds(v),n.memoizedState=wn,m);if(!(1&n.mode))return Vr(t,n,v,null);if("$!"===d.data){if(a=d.nextSibling&&d.nextSibling.dataset)var S=a.dgst;return a=S,Vr(t,n,v,a=qo(m=Error(R(419)),a,void 0))}if(S=!!(v&t.childLanes),nn||S){if(null!==(a=Ct)){switch(v&-v){case 4:d=2;break;case 16:d=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:d=32;break;case 536870912:d=268435456;break;default:d=0}0!==(d=d&(a.suspendedLanes|v)?0:d)&&d!==m.retryLane&&(m.retryLane=d,ai(t,d),zn(a,t,d,-1))}return ou(),Vr(t,n,v,a=qo(Error(R(421))))}return"$?"===d.data?(n.flags|=128,n.child=t.child,n=hd.bind(null,t),d._reactRetry=n,null):(t=m.treeContext,en=ri(d.nextSibling),dn=n,et=!0,Tn=null,null!==t&&($t[vn++]=ji,$t[vn++]=Wn,$t[vn++]=Ci,ji=t.id,Wn=t.overflow,Ci=n),(n=Wa(n,a.children)).flags|=4096,n)}(t,n,v,a,S,d,o);if(m){m=a.fallback,S=(d=t.child).sibling;var k={mode:"hidden",children:a.children};return 1&(v=n.mode)||n.child===d?(a=zi(d,k)).subtreeFlags=14680064&d.subtreeFlags:((a=n.child).childLanes=0,a.pendingProps=k,n.deletions=null),null!==S?m=zi(S,m):(m=rr(m,v,o,null)).flags|=2,m.return=n,a.return=n,a.sibling=m,n.child=a,a=m,m=n.child,v=null===(v=t.child.memoizedState)?Ds(o):{baseLanes:v.baseLanes|o,cachePool:null,transitions:v.transitions},m.memoizedState=v,m.childLanes=t.childLanes&~o,n.memoizedState=wn,a}return t=(m=t.child).sibling,a=zi(m,{mode:"visible",children:a.children}),!(1&n.mode)&&(a.lanes=o),a.return=n,a.sibling=null,null!==t&&(null===(o=n.deletions)?(n.deletions=[t],n.flags|=16):o.push(t)),n.child=a,n.memoizedState=null,a}function Wa(t,n){return(n=sl({mode:"visible",children:n},t.mode,0,null)).return=t,t.child=n}function Vr(t,n,o,a){return null!==a&&va(a),Wi(n,t.child,null,o),(t=Wa(n,n.pendingProps.children)).flags|=2,n.memoizedState=null,t}function Ji(t,n,o){t.lanes|=n;var a=t.alternate;null!==a&&(a.lanes|=n),Lo(t.return,n,o)}function Ka(t,n,o,a,d){var m=t.memoizedState;null===m?t.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:a,tail:o,tailMode:d}:(m.isBackwards=n,m.rendering=null,m.renderingStartTime=0,m.last=a,m.tail=o,m.tailMode=d)}function zc(t,n,o){var a=n.pendingProps,d=a.revealOrder,m=a.tail;if(Qt(t,n,a.children,o),2&(a=st.current))a=1&a|2,n.flags|=128;else{if(null!==t&&128&t.flags)e:for(t=n.child;null!==t;){if(13===t.tag)null!==t.memoizedState&&Ji(t,o,n);else if(19===t.tag)Ji(t,o,n);else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===n)break e;for(;null===t.sibling;){if(null===t.return||t.return===n)break e;t=t.return}t.sibling.return=t.return,t=t.sibling}a&=1}if(Ke(st,a),1&n.mode)switch(d){case"forwards":for(o=n.child,d=null;null!==o;)null!==(t=o.alternate)&&null===Do(t)&&(d=o),o=o.sibling;null===(o=d)?(d=n.child,n.child=null):(d=o.sibling,o.sibling=null),Ka(n,!1,d,o,m);break;case"backwards":for(o=null,d=n.child,n.child=null;null!==d;){if(null!==(t=d.alternate)&&null===Do(t)){n.child=d;break}t=d.sibling,d.sibling=o,o=d,d=t}Ka(n,!0,o,null,m);break;case"together":Ka(n,!1,null,null,void 0);break;default:n.memoizedState=null}else n.memoizedState=null;return n.child}function Ko(t,n){!(1&n.mode)&&null!==t&&(t.alternate=null,n.alternate=null,n.flags|=2)}function Qn(t,n,o){if(null!==t&&(n.dependencies=t.dependencies),Pi|=n.lanes,!(o&n.childLanes))return null;if(null!==t&&n.child!==t.child)throw Error(R(153));if(null!==n.child){for(o=zi(t=n.child,t.pendingProps),n.child=o,o.return=n;null!==t.sibling;)(o=o.sibling=zi(t=t.sibling,t.pendingProps)).return=n;o.sibling=null}return n.child}function zs(t,n){if(!et)switch(t.tailMode){case"hidden":n=t.tail;for(var o=null;null!==n;)null!==n.alternate&&(o=n),n=n.sibling;null===o?t.tail=null:o.sibling=null;break;case"collapsed":o=t.tail;for(var a=null;null!==o;)null!==o.alternate&&(a=o),o=o.sibling;null===a?n||null===t.tail?t.tail=null:t.tail.sibling=null:a.sibling=null}}function Ht(t){var n=null!==t.alternate&&t.alternate.child===t.child,o=0,a=0;if(n)for(var d=t.child;null!==d;)o|=d.lanes|d.childLanes,a|=14680064&d.subtreeFlags,a|=14680064&d.flags,d.return=t,d=d.sibling;else for(d=t.child;null!==d;)o|=d.lanes|d.childLanes,a|=d.subtreeFlags,a|=d.flags,d.return=t,d=d.sibling;return t.subtreeFlags|=a,t.childLanes=o,n}function Ce(t,n,o){var a=n.pendingProps;switch(ma(n),n.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Ht(n),null;case 1:case 17:return Jt(n.type)&&bi(),Ht(n),null;case 3:return a=n.stateNode,Or(),Ge(Kt),Ge(Ft),Aa(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),(null===t||null===t.child)&&(Ao(n)?n.flags|=4:null===t||t.memoizedState.isDehydrated&&!(256&n.flags)||(n.flags|=1024,null!==Tn&&(ru(Tn),Tn=null))),$a(t,n),Ht(n),null;case 5:ja(n);var d=ci($i.current);if(o=n.type,null!==t&&null!=n.stateNode)Rc(t,n,o,a,d),t.ref!==n.ref&&(n.flags|=512,n.flags|=2097152);else{if(!a){if(null===n.stateNode)throw Error(R(166));return Ht(n),null}if(t=ci(Kn.current),Ao(n)){o=n.type;var m=n.memoizedProps;switch((a=n.stateNode)[zt]=n,a[Ir]=m,t=!!(1&n.mode),o){case"dialog":Ye("cancel",a),Ye("close",a);break;case"iframe":case"object":case"embed":Ye("load",a);break;case"video":case"audio":for(d=0;d<\/script>",t=t.removeChild(t.firstChild)):"string"==typeof a.is?t=v.createElement(o,{is:a.is}):(t=v.createElement(o),"select"===o&&(v=t,a.multiple?v.multiple=!0:a.size&&(v.size=a.size))):t=v.createElementNS(t,o),t[zt]=n,t[Ir]=a,Oc(t,n,!1,!1),n.stateNode=t;e:{switch(v=Wt(o,a),o){case"dialog":Ye("cancel",t),Ye("close",t),d=a;break;case"iframe":case"object":case"embed":Ye("load",t),d=a;break;case"video":case"audio":for(d=0;d_r&&(n.flags|=128,a=!0,zs(m,!1),n.lanes=4194304)}else{if(!a)if(null!==(t=Do(v))){if(n.flags|=128,a=!0,null!==(o=t.updateQueue)&&(n.updateQueue=o,n.flags|=4),zs(m,!0),null===m.tail&&"hidden"===m.tailMode&&!v.alternate&&!et)return Ht(n),null}else 2*at()-m.renderingStartTime>_r&&1073741824!==o&&(n.flags|=128,a=!0,zs(m,!1),n.lanes=4194304);m.isBackwards?(v.sibling=n.child,n.child=v):(null!==(o=m.last)?o.sibling=v:n.child=v,m.last=v)}return null!==m.tail?(m.rendering=n=m.tail,m.tail=n.sibling,m.renderingStartTime=at(),n.sibling=null,o=st.current,Ke(st,a?1&o|2:1&o),n):(Ht(n),null);case 22:case 23:return Wr(),a=null!==n.memoizedState,null!==t&&null!==t.memoizedState!==a&&(n.flags|=8192),a&&1&n.mode?1073741824&hn&&(Ht(n),6&n.subtreeFlags&&(n.flags|=8192)):Ht(n),null;case 24:case 25:return null}throw Error(R(156,n.tag))}function Qa(t,n){switch(ma(n),n.tag){case 1:return Jt(n.type)&&bi(),65536&(t=n.flags)?(n.flags=-65537&t|128,n):null;case 3:return Or(),Ge(Kt),Ge(Ft),Aa(),65536&(t=n.flags)&&!(128&t)?(n.flags=-65537&t|128,n):null;case 5:return ja(n),null;case 13:if(Ge(st),null!==(t=n.memoizedState)&&null!==t.dehydrated){if(null===n.alternate)throw Error(R(340));Nr()}return 65536&(t=n.flags)?(n.flags=-65537&t|128,n):null;case 19:return Ge(st),null;case 4:return Or(),null;case 10:return wa(n.type._context),null;case 22:case 23:return Wr(),null;default:return null}}Oc=function(t,n){for(var o=n.child;null!==o;){if(5===o.tag||6===o.tag)t.appendChild(o.stateNode);else if(4!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===n)break;for(;null===o.sibling;){if(null===o.return||o.return===n)return;o=o.return}o.sibling.return=o.return,o=o.sibling}},$a=function(){},Rc=function(t,n,o,a){var d=t.memoizedProps;if(d!==a){t=n.stateNode,ci(Kn.current);var v,m=null;switch(o){case"input":d=ml(t,d),a=ml(t,a),m=[];break;case"select":d=W({},d,{value:void 0}),a=W({},a,{value:void 0}),m=[];break;case"textarea":d=Zs(t,d),a=Zs(t,a),m=[];break;default:"function"!=typeof d.onClick&&"function"==typeof a.onClick&&(t.onclick=So)}for(M in gi(o,a),o=null,d)if(!a.hasOwnProperty(M)&&d.hasOwnProperty(M)&&null!=d[M])if("style"===M){var S=d[M];for(v in S)S.hasOwnProperty(v)&&(o||(o={}),o[v]="")}else"dangerouslySetInnerHTML"!==M&&"children"!==M&&"suppressContentEditableWarning"!==M&&"suppressHydrationWarning"!==M&&"autoFocus"!==M&&(mt.hasOwnProperty(M)?m||(m=[]):(m=m||[]).push(M,null));for(M in a){var k=a[M];if(S=d?.[M],a.hasOwnProperty(M)&&k!==S&&(null!=k||null!=S))if("style"===M)if(S){for(v in S)!S.hasOwnProperty(v)||k&&k.hasOwnProperty(v)||(o||(o={}),o[v]="");for(v in k)k.hasOwnProperty(v)&&S[v]!==k[v]&&(o||(o={}),o[v]=k[v])}else o||(m||(m=[]),m.push(M,o)),o=k;else"dangerouslySetInnerHTML"===M?(S=S?S.__html:void 0,null!=(k=k?k.__html:void 0)&&S!==k&&(m=m||[]).push(M,k)):"children"===M?"string"!=typeof k&&"number"!=typeof k||(m=m||[]).push(M,""+k):"suppressContentEditableWarning"!==M&&"suppressHydrationWarning"!==M&&(mt.hasOwnProperty(M)?(null!=k&&"onScroll"===M&&Ye("scroll",t),m||S===k||(m=[])):(m=m||[]).push(M,k))}o&&(m=m||[]).push("style",o);var M=m;(n.updateQueue=M)&&(n.flags|=4)}},Fc=function(t,n,o,a){o!==a&&(n.flags|=4)};var $o=!1,Ut=!1,od="function"==typeof WeakSet?WeakSet:Set,ne=null;function er(t,n){var o=t.ref;if(null!==o)if("function"==typeof o)try{o(null)}catch(a){lt(t,n,a)}else o.current=null}function Qo(t,n,o){try{o()}catch(a){lt(t,n,a)}}var Go=!1;function Os(t,n,o){var a=n.updateQueue;if(null!==(a=null!==a?a.lastEffect:null)){var d=a=a.next;do{if((d.tag&t)===t){var m=d.destroy;d.destroy=void 0,void 0!==m&&Qo(n,o,m)}d=d.next}while(d!==a)}}function Yo(t,n){if(null!==(n=null!==(n=n.updateQueue)?n.lastEffect:null)){var o=n=n.next;do{(o.tag&t)===t&&(o.destroy=(0,o.create)()),o=o.next}while(o!==n)}}function Ga(t){var n=t.ref;null!==n&&(t=t.stateNode,"function"==typeof n?n(t):n.current=t)}function Bc(t){var n=t.alternate;null!==n&&(t.alternate=null,Bc(n)),t.child=null,t.deletions=null,t.sibling=null,5===t.tag&&null!==(n=t.stateNode)&&(delete n[zt],delete n[Ir],delete n[Co],delete n[Jp],delete n[uc]),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}function Hc(t){return 5===t.tag||3===t.tag||4===t.tag}function Ya(t){e:for(;;){for(;null===t.sibling;){if(null===t.return||Hc(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;5!==t.tag&&6!==t.tag&&18!==t.tag;){if(2&t.flags||null===t.child||4===t.tag)continue e;t.child.return=t,t=t.child}if(!(2&t.flags))return t.stateNode}}function nt(t,n,o){var a=t.tag;if(5===a||6===a)t=t.stateNode,n?8===o.nodeType?o.parentNode.insertBefore(t,n):o.insertBefore(t,n):(8===o.nodeType?(n=o.parentNode).insertBefore(t,o):(n=o).appendChild(t),null!=(o=o._reactRootContainer)||null!==n.onclick||(n.onclick=So));else if(4!==a&&null!==(t=t.child))for(nt(t,n,o),t=t.sibling;null!==t;)nt(t,n,o),t=t.sibling}function it(t,n,o){var a=t.tag;if(5===a||6===a)t=t.stateNode,n?o.insertBefore(t,n):o.appendChild(t);else if(4!==a&&null!==(t=t.child))for(it(t,n,o),t=t.sibling;null!==t;)it(t,n,o),t=t.sibling}var yt=null,Dn=!1;function Ti(t,n,o){for(o=o.child;null!==o;)Uc(t,n,o),o=o.sibling}function Uc(t,n,o){if(Un&&"function"==typeof Un.onCommitFiberUnmount)try{Un.onCommitFiberUnmount(ro,o)}catch{}switch(o.tag){case 5:Ut||er(o,n);case 6:var a=yt,d=Dn;yt=null,Ti(t,n,o),Dn=d,null!==(yt=a)&&(Dn?(o=o.stateNode,8===(t=yt).nodeType?t.parentNode.removeChild(o):t.removeChild(o)):yt.removeChild(o.stateNode));break;case 18:null!==yt&&(Dn?(o=o.stateNode,8===(t=yt).nodeType?ca(t.parentNode,o):1===t.nodeType&&ca(t,o),uo(t)):ca(yt,o.stateNode));break;case 4:a=yt,d=Dn,yt=o.stateNode.containerInfo,Dn=!0,Ti(t,n,o),yt=a,Dn=d;break;case 0:case 11:case 14:case 15:if(!Ut&&null!==(a=o.updateQueue)&&null!==(a=a.lastEffect)){d=a=a.next;do{var m=d,v=m.destroy;m=m.tag,void 0!==v&&(2&m||4&m)&&Qo(o,n,v),d=d.next}while(d!==a)}Ti(t,n,o);break;case 1:if(!Ut&&(er(o,n),"function"==typeof(a=o.stateNode).componentWillUnmount))try{a.props=o.memoizedProps,a.state=o.memoizedState,a.componentWillUnmount()}catch(S){lt(o,n,S)}Ti(t,n,o);break;case 21:Ti(t,n,o);break;case 22:1&o.mode?(Ut=(a=Ut)||null!==o.memoizedState,Ti(t,n,o),Ut=a):Ti(t,n,o);break;default:Ti(t,n,o)}}function Za(t){var n=t.updateQueue;if(null!==n){t.updateQueue=null;var o=t.stateNode;null===o&&(o=t.stateNode=new od),n.forEach(function(a){var d=md.bind(null,t,a);o.has(a)||(o.add(a),a.then(d,d))})}}function Sn(t,n){var o=n.deletions;if(null!==o)for(var a=0;ad&&(d=v),a&=~m}if(a=d,10<(a=(120>(a=at()-a)?120:480>a?480:1080>a?1080:1920>a?1920:3e3>a?3e3:4320>a?4320:1960*Ja(a/1960))-a)){t.timeoutHandle=ko(Gn.bind(null,t,rn,hi),a);break}Gn(t,rn,hi);break;default:throw Error(R(329))}}}return sn(t,at()),t.callbackNode===o?Wc.bind(null,t):null}function iu(t,n){var o=Fs;return t.current.memoizedState.isDehydrated&&(ut(t,n).flags|=256),2!==(t=il(t,n))&&(n=rn,rn=o,null!==n&&ru(n)),t}function ru(t){null===rn?rn=t:rn.push.apply(rn,t)}function Di(t,n){for(n&=~Jo,t.suspendedLanes|=n&=~Xo,t.pingedLanes&=~n,t=t.expirationTimes;0t?16:t,null===Ni)var a=!1;else{if(t=Ni,Ni=null,Bs=0,6&Oe)throw Error(R(331));var d=Oe;for(Oe|=4,ne=t.current;null!==ne;){var m=ne,v=m.child;if(16&ne.flags){var S=m.deletions;if(null!==S){for(var k=0;kat()-nr?ut(t,0):Jo|=o),sn(t,n)}function uu(t,n){0===n&&(1&t.mode?(n=oo,!(130023424&(oo<<=1))&&(oo=4194304)):n=1);var o=Gt();null!==(t=ai(t,n))&&(as(t,n,o),sn(t,o))}function hd(t){var n=t.memoizedState,o=0;null!==n&&(o=n.retryLane),uu(t,o)}function md(t,n){var o=0;switch(t.tag){case 13:var a=t.stateNode,d=t.memoizedState;null!==d&&(o=d.retryLane);break;case 19:a=t.stateNode;break;default:throw Error(R(314))}null!==a&&a.delete(n),uu(t,o)}function cu(t,n){return Il(t,n)}function On(t,n,o,a){this.tag=t,this.key=o,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Cn(t,n,o,a){return new On(t,n,o,a)}function pu(t){return!(!(t=t.prototype)||!t.isReactComponent)}function zi(t,n){var o=t.alternate;return null===o?((o=Cn(t.tag,n,t.key,t.mode)).elementType=t.elementType,o.type=t.type,o.stateNode=t.stateNode,o.alternate=t,t.alternate=o):(o.pendingProps=n,o.type=t.type,o.flags=0,o.subtreeFlags=0,o.deletions=null),o.flags=14680064&t.flags,o.childLanes=t.childLanes,o.lanes=t.lanes,o.child=t.child,o.memoizedProps=t.memoizedProps,o.memoizedState=t.memoizedState,o.updateQueue=t.updateQueue,o.dependencies=null===(n=t.dependencies)?null:{lanes:n.lanes,firstContext:n.firstContext},o.sibling=t.sibling,o.index=t.index,o.ref=t.ref,o}function rl(t,n,o,a,d,m){var v=2;if(a=t,"function"==typeof t)pu(t)&&(v=1);else if("string"==typeof t)v=5;else e:switch(t){case wt:return rr(o.children,d,m,n);case on:v=8,d|=8;break;case Xn:return(t=Cn(12,o,n,2|d)).elementType=Xn,t.lanes=m,t;case St:return(t=Cn(13,o,n,d)).elementType=St,t.lanes=m,t;case Jn:return(t=Cn(19,o,n,d)).elementType=Jn,t.lanes=m,t;case Se:return sl(o,d,m,n);default:if("object"==typeof t&&null!==t)switch(t.$$typeof){case jn:v=10;break e;case we:v=9;break e;case Q:v=11;break e;case ee:v=14;break e;case de:v=16,a=null;break e}throw Error(R(130,null==t?t:typeof t,""))}return(n=Cn(v,o,n,d)).elementType=t,n.type=a,n.lanes=m,n}function rr(t,n,o,a){return(t=Cn(7,t,a,n)).lanes=o,t}function sl(t,n,o,a){return(t=Cn(22,t,a,n)).elementType=Se,t.lanes=o,t.stateNode={isHidden:!1},t}function ol(t,n,o){return(t=Cn(6,t,null,n)).lanes=o,t}function Vt(t,n,o){return(n=Cn(4,null!==t.children?t.children:[],t.key,n)).lanes=o,n.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},n}function Zc(t,n,o,a,d){this.tag=n,this.containerInfo=t,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Nl(0),this.expirationTimes=Nl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Nl(0),this.identifierPrefix=a,this.onRecoverableError=d,this.mutableSourceEagerHydrationData=null}function du(t,n,o,a,d,m,v,S,k){return t=new Zc(t,n,o,S,k),1===n?(n=1,!0===m&&(n|=8)):n=0,m=Cn(3,null,null,n),t.current=m,m.stateNode=t,m.memoizedState={element:a,isDehydrated:o,cache:null,transitions:null,pendingSuspenseBoundaries:null},As(m),t}function Vs(t){if(!t)return li;e:{if(dr(t=t._reactInternals)!==t||1!==t.tag)throw Error(R(170));var n=t;do{switch(n.tag){case 3:n=n.stateNode.context;break e;case 1:if(Jt(n.type)){n=n.stateNode.__reactInternalMemoizedMergedChildContext;break e}}n=n.return}while(null!==n);throw Error(R(171))}if(1===t.tag){var o=t.type;if(Jt(o))return cc(t,o,n)}return n}function ll(t,n,o,a){var d=n.current,m=Gt(),v=Mi(d);return o=Vs(o),null===n.context?n.context=o:n.pendingContext=o,(n=ui(m,v)).payload={element:t},null!==(a=void 0===a?null:a)&&(n.callback=a),null!==(t=Ai(d,n,v))&&(zn(t,d,v,m),No(t,d,v)),v}function al(t){return(t=t.current).child?t.child.stateNode:null}function Xc(t,n){if(null!==(t=t.memoizedState)&&null!==t.dehydrated){var o=t.retryLane;t.retryLane=0!==o&&o{"use strict";(function Le(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||"function"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Le)}catch(Lt){console.error(Lt)}})(),Zn.exports=F(7578)},3909:(Zn,be)=>{"use strict";function F(ee,de){var Se=ee.length;ee.push(de);e:for(;0>>1,Je=ee[rt];if(!(0>>1;rtHe(gn,Se))_tHe(p,gn)?(ee[rt]=p,ee[_t]=Se,rt=_t):(ee[rt]=gn,ee[Zt]=Se,rt=Zt);else{if(!(_tHe(p,Se)))break e;ee[rt]=p,ee[_t]=Se,rt=_t}}}return de}function He(ee,de){var Se=ee.sortIndex-de.sortIndex;return 0!==Se?Se:ee.id-de.id}if("object"==typeof performance&&"function"==typeof performance.now){var R=performance;be.unstable_now=function(){return R.now()}}else{var Nt=Date,mt=Nt.now();be.unstable_now=function(){return Nt.now()-mt}}var Ue=[],fe=[],Te=1,Ne=null,Me=3,qt=!1,Mt=!1,xe=!1,xt="function"==typeof setTimeout?setTimeout:null,Dt="function"==typeof clearTimeout?clearTimeout:null,Pe=typeof setImmediate<"u"?setImmediate:null;function je(ee){for(var de=Le(fe);null!==de;){if(null===de.callback)Lt(fe);else{if(!(de.startTime<=ee))break;Lt(fe),de.sortIndex=de.expirationTime,F(Ue,de)}de=Le(fe)}}function z(ee){if(xe=!1,je(ee),!Mt)if(null!==Le(Ue))Mt=!0,St(De);else{var de=Le(fe);null!==de&&Jn(z,de.startTime-ee)}}function De(ee,de){Mt=!1,xe&&(xe=!1,Dt(bt),bt=-1),qt=!0;var Se=Me;try{for(je(de),Ne=Le(Ue);null!==Ne&&(!(Ne.expirationTime>de)||ee&&!on());){var rt=Ne.callback;if("function"==typeof rt){Ne.callback=null,Me=Ne.priorityLevel;var Je=rt(Ne.expirationTime<=de);de=be.unstable_now(),"function"==typeof Je?Ne.callback=Je:Ne===Le(Ue)&&Lt(Ue),je(de)}else Lt(Ue);Ne=Le(Ue)}if(null!==Ne)var W=!0;else{var Zt=Le(fe);null!==Zt&&Jn(z,Zt.startTime-de),W=!1}return W}finally{Ne=null,Me=Se,qt=!1}}typeof navigator<"u"&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var jn,jt=!1,ft=null,bt=-1,fn=5,wt=-1;function on(){return!(be.unstable_now()-wtee||125rt?(ee.sortIndex=Se,F(fe,ee),null===Le(Ue)&&ee===Le(fe)&&(xe?(Dt(bt),bt=-1):xe=!0,Jn(z,Se-rt))):(ee.sortIndex=Je,F(Ue,ee),Mt||qt||(Mt=!0,St(De))),ee},be.unstable_shouldYield=on,be.unstable_wrapCallback=function(ee){var de=Me;return function(){var Se=Me;Me=de;try{return ee.apply(this,arguments)}finally{Me=Se}}}},1605:(Zn,be,F)=>{"use strict";Zn.exports=F(3909)},5390:function(Zn,be,F){"use strict";var Le=this&&this.__importDefault||function(R){return R&&R.__esModule?R:{default:R}};Object.defineProperty(be,"__esModule",{value:!0});var Lt=Le(F(1763));be.default=function He(R,Nt){var mt=null;if(!R||"string"!=typeof R)return mt;var Ue=(0,Lt.default)(R),fe="function"==typeof Nt;return Ue.forEach(function(Te){if("declaration"===Te.type){var Ne=Te.property,Me=Te.value;fe?Nt(Ne,Me,Te):Me&&((mt=mt||{})[Ne]=Me)}}),mt}}}]); \ No newline at end of file diff --git a/docs/chunk-BDFDQ2SB.js b/docs/chunk-BDFDQ2SB.js new file mode 100644 index 0000000..b933bb7 --- /dev/null +++ b/docs/chunk-BDFDQ2SB.js @@ -0,0 +1,24 @@ +import{a as X}from"./chunk-ED6QR4VZ.js";import{A as l,B as f,E as T,F as he,G,H as u,M as y,N as r,O as B,P as V,Q as xe,R as fe,T as U,U as R,V as F,W as _,X as H,a as se,aa as Fe,b as ce,ba as I,c as le,ca as _e,e as w,ea as Z,f as ae,h as de,i as ee,j as te,k as ue,l as pe,m as ne,ma as be,n as p,o as A,q as h,r as x,s as oe,t as me,u as ge,v as D,w as $,x as L,y as K,z as c}from"./chunk-SAL4EXGL.js";import{E as re,Q as N,a as g,b as C,n as Q,v as S}from"./chunk-T4BLILQN.js";var Ce={I:{"background-color":"#CC79A7","text-color":"black"},L:{"background-color":"#CC79A7","text-color":"black"},V:{"background-color":"#CC79A7","text-color":"black"},A:{"background-color":"#CC79A7","text-color":"black"},M:{"background-color":"#CC79A7","text-color":"black"},F:{"background-color":"#E69F00","text-color":"black"},W:{"background-color":"#E69F00","text-color":"black"},Y:{"background-color":"#E69F00","text-color":"black"},K:{"background-color":"#0072B2","text-color":"white"},R:{"background-color":"#0072B2","text-color":"white"},H:{"background-color":"#0072B2","text-color":"white"},D:{"background-color":"#D55E00","text-color":"black"},E:{"background-color":"#D55E00","text-color":"black"},N:{"background-color":"#009E73","text-color":"black"},Q:{"background-color":"#009E73","text-color":"black"},S:{"background-color":"#009E73","text-color":"black"},T:{"background-color":"#009E73","text-color":"black"},P:{"background-color":"#56B4E9","text-color":"black"},G:{"background-color":"#56B4E9","text-color":"black"},C:{"background-color":"#F0E442","text-color":"black"}};ue();var M=class{set index(n){this.keys=n.map(s=>""+s),this.values=n.map((s,e)=>e),this._index=this.keys.reduce((s,e,t)=>(s[""+e]=t,s),{})}get index(){return this._index}map(n){let s=this._index[""+n.start],e=this._index[""+n.end];return C(g({},n),{start:s,end:e})}};var J=(()=>{let n=class n{set select(e){this.select$.next(e)}get select(){return this.select$.value}constructor(e){this.indexService=e,this.select$=new Q(null),this.selected$=this.select$,this.selecting=!1}onMouseDown(e,t){this.selecting=!0,this.select={start:t,end:t}}onMouseEnter(e,t){if(this.selecting){let i=this.indexService.index[t];if(this.select){let{start:a,end:d}=this.indexService.map(this.select);id&&(this.select=C(g({},this.select),{end:t}))}}}onMouseUp(e){this.selecting=!1}};n.\u0275fac=function(t){return new(t||n)(le(M))},n.\u0275prov=se({token:n,factory:n.\u0275fac});let o=n;return o})();function ve(o){let n=o.split(/[\n\r]+/),s=[],e=-1;for(let t of n)if(t=t.trim(),t.startsWith(">"))s.push({sequence:"",label:t.slice(1)}),e++;else if(e>-1)s[e].sequence+=t;else throw new Error("Provided text is not in fasta format");return s}var we=o=>({j:o}),De=(o,n)=>({i:o,j:n}),Ve=(o,n)=>({i:"index",name:"index",j:o,value:n}),Ie=(o,n)=>({i:"consensus",name:"consensus",j:o,value:n}),je=(o,n)=>({i:o,j:n,name:"residue"}),$e=o=>["cell",o];function Le(o,n){o&1&&(c(0,"div",6),r(1,"Consensus"),l())}function Ke(o,n){if(o&1&&(c(0,"div",6),r(1),l()),o&2){let s=n.$implicit;p(),B(s||"Sequence")}}function Ge(o,n){o&1&&T(0)}function Be(o,n){o&1&&T(0)}function Re(o,n){if(o&1&&h(0,Be,1,0,"ng-container",10),o&2){let s=u().$index,e=u().$implicit;u();let t=y(13);x("ngTemplateOutlet",t)("ngTemplateOutletContext",U(2,we,e.start+s))}}function He(o,n){o&1&&T(0)}function Ye(o,n){if(o&1&&h(0,He,1,0,"ng-container",10),o&2){let s=u().$index,e=u().$index,t=u().$implicit;u();let i=y(15);x("ngTemplateOutlet",i)("ngTemplateOutletContext",R(2,De,s,t.start+e))}}function We(o,n){if(o&1&&h(0,Ye,1,5,"ng-container"),o&2){let s,e=n.$implicit,t=u().$index;D(0,(s=e[t])?0:-1,s)}}function ze(o,n){if(o&1&&(c(0,"div",9),h(1,Ge,1,0,"ng-container",10)(2,Re,1,4,"ng-container"),L(3,We,1,1,null,null,$),l()),o&2){let s=n.$index,e=u().$implicit,t=u(),i=y(11);p(),x("ngTemplateOutlet",i)("ngTemplateOutletContext",U(3,we,e.start+s)),p(),D(2,t.sequences.length>1?2:-1),p(),K(t.sequences)}}function Qe(o,n){if(o&1&&(c(0,"div",8),L(1,ze,5,5,"div",9,$),l()),o&2){let s=n.$implicit,e=u();p(),K(e.first.slice(s.start,s.end))}}function Ue(o,n){o&1&&T(0)}function Ze(o,n){if(o&1&&(h(0,Ue,1,0,"ng-container",10),c(1,"div",11),r(2),l()),o&2){let s=n.j,e=u(),t=y(17);x("ngTemplateOutlet",t)("ngTemplateOutletContext",R(3,Ve,s,e.indexService.keys[s])),p(2),B(e.indexService.keys[s])}}function Xe(o,n){o&1&&T(0)}function Je(o,n){if(o&1&&h(0,Xe,1,0,"ng-container",10),o&2){let s=n.j,e=u(),t=y(17);x("ngTemplateOutlet",t)("ngTemplateOutletContext",R(2,Ie,s,e.consensus[s][0]))}}function et(o,n){o&1&&T(0)}function tt(o,n){if(o&1&&h(0,et,1,0,"ng-container",10),o&2){let s=n.i,e=n.j;u();let t=y(17);x("ngTemplateOutlet",t)("ngTemplateOutletContext",R(2,je,s,e))}}function nt(o,n){if(o&1){let s=he();c(0,"div",13),G("mouseenter",function(t){ee(s);let i=u(2).j,a=u();return te(a.onMouseEnter(t,a.indexService.keys[i]))})("mousedown",function(t){ee(s);let i=u(2).j,a=u();return te(a.onMouseDown(t,a.indexService.keys[i]))}),r(1),l()}if(o&2){let s=n,e=u(2),t=e.i,i=e.j,a=e.value,d=e.name,q=u();ge(U(10,$e,d)),oe("background-color",s["background-color"])("border-color",s["border-color"])("color",s.color),x("id","cell-"+t+"-"+i),p(),V(" ",a||q.sequences[t][i]," ")}}function ot(o,n){if(o&1&&h(0,nt,2,12,"div",12),o&2){let s,e=u(),t=e.i,i=e.j;D(0,(s=n[t][i])?0:-1,s)}}function it(o,n){if(o&1&&(h(0,ot,1,1),F(1,"async")),o&2){let s,e=u();D(0,(s=_(1,1,e.styles$))?0:-1,s)}}var P=(()=>{let n=class n{set settings(e){this._settings=g(g({},this.settings),e||{});let{"chunk-size":t,"rotate-index":i}=this.settings;this._settings["rotate-index"]=t<0?!0:i,this._settings["split-chunks"]=!(t<0)}get settings(){return this._settings}get split(){return this.settings["chunk-size"]}get cmap(){return this.settings["color-map"]}get first(){return this.sequences[0]}get length(){return this.first.length}set select(e){this.selectionService.select=e}constructor(e,t){this.selectionService=e,this.indexService=t,this._settings={"chunk-size":5,"background-color":"transparent","selection-color":"greenyellow","text-color":"black","rotate-index":!1,"split-chunks":!1,"color-map":Ce},this.loci$=new Q({}),this.loci=[],this.selected$=this.selectionService.selected$,this.styles$=this.loci$.pipe(re(this.selected$),S(([i,a])=>{let d={},W=[this.consensus.map(([m])=>m).join(""),...this.sequences];for(let m=0;mt.sequence),this.labels=this.labels||e.map(t=>t.label)}else if(this.sequence)this.labels=[this.label||""],this.sequences=[this.sequence];else throw new Error("No single sequence, nor fasta were provided");if(this.labels){let e=this.sequences.length,t=this.sequences[0].length;if(e<1)throw new Error("No sequences were provided");if(this.labels.length!==e)throw new Error("Number of labels does not match number of sequences");if(this.sequences.some(i=>i.length!==t))throw new Error("All sequences must have the same length")}else throw new Error("No labels were provided")}setChunks(){this.chunks=[];let e=this.length,t=this.split>=0?this.split:1;for(let i=0;id[1]-a[1])),this.logo.push(i)}}setConsensus(){this.consensus=[];for(let e=0;ei+1)),this.indexService.index=e}setLoci(){let e=this.loci.reduce((t,i)=>{let{start:a,end:d}=this.indexService.map(i);for(let q=a;q<=d;q++){let W=this.indexService.keys[q];t[W]=i}return t},{});this.loci$.next(e)}asOpacity(e){return`${Math.round(e*100)}%`}};n.\u0275fac=function(t){return new(t||n)(A(J),A(M))},n.\u0275cmp=w({type:n,selectors:[["ngx-sequence-viewer"]],hostBindings:function(t,i){t&1&&G("mouseup",function(d){return i.onMouseUp(d)},!1,ne)("mousedown",function(){return i.onMouseDownOut()},!1,ne)},inputs:{settings:"settings",label:"label",labels:"labels",fasta:"fasta",sequence:"sequence",index:"index",loci:"loci",select:"select"},outputs:{selected$:"selected$"},standalone:!0,features:[xe([J,M]),de,fe],decls:18,vars:9,consts:[["indexCellTemplate",""],["consensusCellTemplate",""],["residueCellTemplate",""],["cellTemplate",""],[1,"scaffold"],[1,"labels"],[1,"label"],[1,"chunks"],[1,"chunk"],[1,"position"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"placeholder","index"],[3,"id","class","background-color","border-color","color"],[3,"mouseenter","mousedown","id"]],template:function(t,i){t&1&&(c(0,"div",4)(1,"div",5)(2,"div",6),r(3,"Index"),l(),h(4,Le,2,0,"div",6),L(5,Ke,2,1,"div",6,$),l(),c(7,"div",7),L(8,Qe,3,0,"div",8,$),l()(),h(10,Ze,3,6,"ng-template",null,0,H)(12,Je,1,5,"ng-template",null,1,H)(14,tt,1,5,"ng-template",null,2,H)(16,it,2,3,"ng-template",null,3,H)),t&2&&(oe("background-color",i.settings["background-color"])("color",i.settings["text-color"]),me("split-chunks",i.settings["split-chunks"])("rotate-index",i.settings["rotate-index"]),p(4),D(4,i.sequences.length>1?4:-1),p(),K(i.labels),p(3),K(i.chunks))},dependencies:[Z,Fe,I],styles:["[_nghost-%COMP%]{position:relative;display:block;height:auto;width:100%;overflow:hidden;font-family:monospace,monospace;-webkit-user-select:none;user-select:none;cursor:default}[_nghost-%COMP%] .scaffold[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:start;align-items:stretch;overflow:auto;gap:.25rem}[_nghost-%COMP%] .scaffold[_ngcontent-%COMP%] .labels[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:end;align-items:end;position:sticky;left:0;z-index:999;padding-right:.25rem;background-color:inherit;color:inherit}[_nghost-%COMP%] .scaffold[_ngcontent-%COMP%] .chunks[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-shrink:0;flex-grow:1}[_nghost-%COMP%] .scaffold[_ngcontent-%COMP%] .chunk[_ngcontent-%COMP%]{display:flex;flex-direction:row;flex-wrap:nowrap;overflow:hidden;gap:0}[_nghost-%COMP%] .scaffold[_ngcontent-%COMP%] .position[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:end;align-items:center;position:relative}[_nghost-%COMP%] .scaffold[_ngcontent-%COMP%] .position[_ngcontent-%COMP%] .placeholder.index[_ngcontent-%COMP%]{position:absolute;right:0;top:0;display:none;pointer-events:none}[_nghost-%COMP%] .scaffold[_ngcontent-%COMP%] .position[_ngcontent-%COMP%] .residue[_ngcontent-%COMP%], [_nghost-%COMP%] .scaffold[_ngcontent-%COMP%] .position[_ngcontent-%COMP%] .consensus[_ngcontent-%COMP%]{width:100%;text-align:center}[_nghost-%COMP%] .scaffold[_ngcontent-%COMP%] .label[_ngcontent-%COMP%], [_nghost-%COMP%] .scaffold[_ngcontent-%COMP%] .cell.index[_ngcontent-%COMP%], [_nghost-%COMP%] .scaffold[_ngcontent-%COMP%] .cell.residue[_ngcontent-%COMP%], [_nghost-%COMP%] .scaffold[_ngcontent-%COMP%] .cell.consensus[_ngcontent-%COMP%]{border-color:transparent;border-width:1px;border-style:solid}[_nghost-%COMP%] .scaffold[_ngcontent-%COMP%] .cell.index[_ngcontent-%COMP%], [_nghost-%COMP%] .scaffold[_ngcontent-%COMP%] .placeholder.index[_ngcontent-%COMP%]{font-size:.75em}[_nghost-%COMP%] .scaffold.rotate-index[_ngcontent-%COMP%] .cell.index[_ngcontent-%COMP%]{display:block;flex-grow:1;position:relative!important;height:auto;text-align:left;transform:rotate(-180deg);writing-mode:vertical-rl;white-space:nowrap;padding-bottom:.25rem;padding-top:.25rem}[_nghost-%COMP%] .scaffold.split-chunks[_ngcontent-%COMP%] .chunks[_ngcontent-%COMP%]{gap:.25rem}[_nghost-%COMP%] .scaffold.split-chunks[_ngcontent-%COMP%] .cell.index[_ngcontent-%COMP%]{font-size:0;height:100%;width:100%}[_nghost-%COMP%] .scaffold.split-chunks[_ngcontent-%COMP%] .position[_ngcontent-%COMP%]:last-child .placeholder.index[_ngcontent-%COMP%]{display:block}"],changeDetection:0});let o=n;return o})();var st=`>unit.1.fasta +RFSIAYWHTFTADGTDQFGKATMQRPWNHYTDPMDIA---KARVEAAFEFFDKIN----- +-------- +>unit.7.fasta +----GV------LGSIDANTGDMLLGWDTDQFPTDIRMT----TLAMYEVIKMGG----- +-------- +>unit.2.fasta +---APY-FCFH-DRDIAPEGDTLRET------------------------NKNLDTIVAM +IKDYLKTS +>unit.3.fasta +-KTKVLWGTAN-----LFSNPRFVHGAS-TSCNADVFAYSAAQVKKALEITKELG----- +-------- +>unit.6.fasta +-DKY------------FKVNIEANH----ATLAFHDF------QH-ELRYARIN------ +-------- +>unit.5.fasta +----------F-EGQFLIE-PKPKEP---TK---HQY---DFDVANVLAFLRKYDL---- +-------- +>unit.4.fasta +GENYVFWGGREGYETLLNTDMEFE------LDNFARF------LHMAVDYAKEIG----- +-------- +>unit.8.fasta +---------FD-KGGLNFD-AKVRRA---SFEPEDLF---LGHIAGMDAFAKGFKVAYKL +VKD-----`,Ee=(()=>{let n=class n{constructor(e){this.themeSelectorService=e,this.fasta=st,this.settings={"background-color":"#FFFFFF","text-color":"black","chunk-size":5,"rotate-index":!1},this.loci=[{start:20,end:30,"background-color":"#648FFF"},{start:40,end:50,"background-color":"#FE6100"},{start:60,end:70,"background-color":"#648FFF"}],this.selected$=new pe;let t=this.themeSelectorService.theme$;this.settings$=t.pipe(S(()=>document.documentElement.getAttribute("data-bs-theme")),S(i=>i==="dark"?C(g({},this.settings),{"background-color":"#212529","text-color":"white"}):this.settings),N(1))}onSelected(e){this.selected$.emit(e)}};n.\u0275fac=function(t){return new(t||n)(A(X))},n.\u0275cmp=w({type:n,selectors:[["app-multiple-sequence-alignment"]],decls:68,vars:19,consts:[[1,"mb-3"],[1,"mb-1"],[1,"mb-0"],[3,"selected$","fasta","loci","settings"]],template:function(t,i){t&1&&(c(0,"div",0)(1,"h2"),r(2,"Mutliple sequence alignment"),l(),c(3,"div",0)(4,"p",1),r(5," This sequence viewer allows to visualize a multiple sequence alignment (MSA). "),c(6,"b"),r(7,"Index"),l(),r(8," can be shown for each position in the alignment. Otherwise, positions can be grouped in chunks. Hence, onlythe index of the last position in each chunk is shown."),f(9,"br"),l(),c(10,"p",1),r(11," For each position in the alignment, logo is computed."),f(12,"br"),r(13,"The "),c(14,"b"),r(15,"logo"),l(),r(16," is the relative frequency of a each amino-acid within a specific position. "),c(17,"b"),r(18,"Consensus"),l(),r(19," is shown in the first row: the most frequent amino-acid in each specific position. "),l(),c(20,"p",2),r(21," Custom "),c(22,"b"),r(23,"color map"),l(),r(24," can be defined for each residue. However, by default we offer a color map based on the broadly adopted ZAPPO scheme. Such scheme has been implemented using the Wong et al. palette for color blindness. "),l()(),c(25,"div",0)(26,"ngx-sequence-viewer",3),F(27,"async"),G("selected$",function(d){return i.onSelected(d)}),l()(),c(28,"div",0)(29,"p",1),r(30," The tool allows to "),c(31,"b"),r(32,"highlight"),l(),r(33," one or more loci. A "),c(34,"b"),r(35,"locus"),l(),r(36," is defined as one or more contiguous positions. It is identified by its start and end positions. "),l(),c(37,"p",1),r(38," Each locus allows to define a custom "),c(39,"code"),r(40,"background-color"),l(),r(41," property which is then applied to the border of cells within locus' boundaries, as well as the background for those cells for which the selected color map does not have an associated color (e.g. gaps) and index. "),l(),c(42,"p",2),r(43," Currently highlighted loci are: "),c(44,"code"),r(45," ["),f(46,"br"),r(47),F(48,"json"),f(49,"br"),r(50),F(51,"json"),f(52,"br"),r(53),F(54,"json"),f(55,"br"),r(56," ] "),l()()(),c(57,"div",0)(58,"p",1)(59,"b"),r(60,"Selection"),l(),r(61," functionality is provided by the component. An event is emitted when a locus is selected. Selected locus applies `selection-color`, defined in settings, to the border of cells within selected locus boundaries, to the background of those cells for which the selected color map does not have an associated color (e.g. gaps) and index. This overrides the style applied by other loci beforehand. "),l(),c(62,"p",2),r(63," Currently selected locus is: "),c(64,"code"),r(65),F(66,"async"),F(67,"json"),l()()()()),t&2&&(p(26),x("fasta",i.fasta)("loci",i.loci)("settings",_(27,7,i.settings$)),p(21),V(" \xA0\xA0\xA0\xA0",_(48,9,i.loci[0]),""),p(3),V(" \xA0\xA0\xA0\xA0",_(51,11,i.loci[1]),""),p(3),V(" \xA0\xA0\xA0\xA0",_(54,13,i.loci[2]),""),p(12),B(_(67,17,_(66,15,i.selected$))))},dependencies:[P,I,_e]});let o=n;return o})();var Ae=(()=>{let n=class n{constructor(e){this.themeSelectorService=e,this.settings={"background-color":"#FFFFFF","text-color":"black","rotate-index":!0,"chunk-size":-1},this.sequence="MTEITAAMVKELRESTGAGMMDCKNALSETNGDFDKAVQLLREKGLGKAAKKADRLAAEG",this.index=this.sequence.split("").map((i,a)=>{let d=""+a;return["A","E","I","O","U"].includes(i)&&(d=d+i),a%2===1&&(d="-"+d),d});let t=this.themeSelectorService.theme$;this.settings$=t.pipe(S(()=>document.documentElement.getAttribute("data-bs-theme")),S(i=>i==="dark"?C(g({},this.settings),{"background-color":"#212529","text-color":"white"}):this.settings),N(1))}};n.\u0275fac=function(t){return new(t||n)(A(X))},n.\u0275cmp=w({type:n,selectors:[["app-single-sequence-viewer"]],decls:20,vars:5,consts:[[1,"mb-3"],[3,"sequence","index","settings"],[1,"mb-1"],[1,"mb-0"]],template:function(t,i){t&1&&(c(0,"div",0)(1,"h2"),r(2,"Single sequence viewer"),l(),c(3,"div",0),f(4,"ngx-sequence-viewer",1),F(5,"async"),l(),c(6,"div",0)(7,"p",2),r(8," In this case, a single sequence is shown by the sequence viewer. No split parameter has been set for chunks, so no chunk is visible. Instead, the "),c(9,"b"),r(10,"index"),l(),r(11," of each position is visualized. Each index is "),c(12,"b"),r(13,"rotated"),l(),r(14,", in order for each position to mantain the same width. "),l(),c(15,"p",3),r(16," A custom index has been set in this specific example. Doing so, not only we allow to show sequences with a numeric index (e.g. protein sequences from the UniProtKB). Instead, we allow also other kind of sequences, such as those underlying protein structures from the PDB to be represented. In fact, those have a particular "),c(17,"b"),r(18,"alpha-numeric"),l(),r(19," index. "),l()()()),t&2&&(p(4),x("sequence",i.sequence)("index",i.index)("settings",_(5,3,i.settings$)))},dependencies:[P,I]});let o=n;return o})();var Te=(()=>{let n=class n{};n.\u0275fac=function(t){return new(t||n)},n.\u0275cmp=w({type:n,selectors:[["app-page-sequence-viewer"]],decls:3,vars:0,consts:[[1,"container","pt-3"]],template:function(t,i){t&1&&(c(0,"div",0),f(1,"app-multiple-sequence-alignment")(2,"app-single-sequence-viewer"),l())},dependencies:[Ee,Ae]});let o=n;return o})();var at=[{path:"",component:Te}],jt=(()=>{let n=class n{};n.\u0275fac=function(t){return new(t||n)},n.\u0275mod=ae({type:n}),n.\u0275inj=ce({imports:[P,be.forChild(at),Z]});let o=n;return o})();export{jt as PageSequenceViewerModule}; diff --git a/docs/chunk-DUVKI6S6.js b/docs/chunk-DUVKI6S6.js new file mode 100644 index 0000000..7c60d59 --- /dev/null +++ b/docs/chunk-DUVKI6S6.js @@ -0,0 +1,7 @@ +import{A as H,B as _t,E as wn,F as $o,G as vn,H as Me,I as Po,J as Ro,K as kn,L as _n,N as J,P as Oo,Q as Fo,R as Do,T as Sn,V as zn,W as Mn,a as re,aa as Lo,b as qo,c as Se,d as Ao,da as Vo,e as kt,ea as St,f as Eo,g as Co,h as No,i as pn,j as hn,m as To,ma as jo,n as ue,o as ge,p as Io,q as Qe,r as ze,t as mn,v as We,w as gn,x as xn,y as yn,z as V}from"./chunk-SAL4EXGL.js";import{K as Mo,Q as _e,S as vt,T as se,V as X,a as Ke,b as wt,o as be,v as P}from"./chunk-T4BLILQN.js";var zt=(()=>{let t=class t{set _where(o){o==="left"||o==="right"?this.where=o:this.where="left"}constructor(o){this.templateRef=o,this.where="left"}};t.\u0275fac=function(r){return new(r||t)(ge(Io))},t.\u0275dir=Co({type:t,selectors:[["","ngx-features-viewer-label",""]],inputs:{_where:[Ao.None,"ngx-features-viewer-label","_where"]},standalone:!0});let e=t;return e})();function qe(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function qn(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function Mt(e){let t,n,o;e.length!==2?(t=qe,n=(a,c)=>qe(e(a),c),o=(a,c)=>e(a)-c):(t=e===qe||e===qn?e:mf,n=e,o=e);function r(a,c,l=0,b=a.length){if(l>>1;n(a[u],c)<0?l=u+1:b=u}while(l>>1;n(a[u],c)<=0?l=u+1:b=u}while(ll&&o(a[u-1],c)>-o(a[u],c)?u-1:u}return{left:r,center:f,right:i}}function mf(){return 0}function An(e){return e===null?NaN:+e}var Bo=Mt(qe),Ho=Bo.right,gf=Bo.left,xf=Mt(An).center,En=Ho;var Fe=class extends Map{constructor(t,n=vf){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),t!=null)for(let[o,r]of t)this.set(o,r)}get(t){return super.get(Xo(this,t))}has(t){return super.has(Xo(this,t))}set(t,n){return super.set(yf(this,t),n)}delete(t){return super.delete(wf(this,t))}};function Xo({_intern:e,_key:t},n){let o=t(n);return e.has(o)?e.get(o):n}function yf({_intern:e,_key:t},n){let o=t(n);return e.has(o)?e.get(o):(e.set(o,n),n)}function wf({_intern:e,_key:t},n){let o=t(n);return e.has(o)&&(n=e.get(o),e.delete(o)),n}function vf(e){return e!==null&&typeof e=="object"?e.valueOf():e}var kf=Math.sqrt(50),_f=Math.sqrt(10),Sf=Math.sqrt(2);function qt(e,t,n){let o=(t-e)/Math.max(0,n),r=Math.floor(Math.log10(o)),i=o/Math.pow(10,r),f=i>=kf?10:i>=_f?5:i>=Sf?2:1,a,c,l;return r<0?(l=Math.pow(10,-r)/f,a=Math.round(e*l),c=Math.round(t*l),a/lt&&--c,l=-l):(l=Math.pow(10,r)*f,a=Math.round(e/l),c=Math.round(t/l),a*lt&&--c),c0))return[];if(e===t)return[e];let o=t=r))return[];let a=i-r+1,c=new Array(a);if(o)if(f<0)for(let l=0;l+e(t)}function Af(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),n=>+e(n)+t}function Ef(){return!this.__axis}function Cf(e,t){var n=[],o=null,r=null,i=6,f=6,a=3,c=typeof window<"u"&&window.devicePixelRatio>1?0:.5,l=e===Nn||e===Et?-1:1,b=e===Et||e===Tn?"x":"y",u=e===Nn||e===In?zf:Mf;function s(p){var y=o??(t.ticks?t.ticks.apply(t,n):t.domain()),k=r??(t.tickFormat?t.tickFormat.apply(t,n):Yo),M=Math.max(i,0)+a,m=t.range(),A=+m[0]+c,q=+m[m.length-1]+c,C=(t.bandwidth?Af:qf)(t.copy(),c),z=p.selection?p.selection():p,I=z.selectAll(".domain").data([null]),$=z.selectAll(".tick").data(y,t).order(),Q=$.exit(),W=$.enter().append("g").attr("class","tick"),K=$.select("line"),_=$.select("text");I=I.merge(I.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),$=$.merge(W),K=K.merge(W.append("line").attr("stroke","currentColor").attr(b+"2",l*i)),_=_.merge(W.append("text").attr("fill","currentColor").attr(b,l*M).attr("dy",e===Nn?"0em":e===In?"0.71em":"0.32em")),p!==z&&(I=I.transition(p),$=$.transition(p),K=K.transition(p),_=_.transition(p),Q=Q.transition(p).attr("opacity",Go).attr("transform",function(D){return isFinite(D=C(D))?u(D+c):this.getAttribute("transform")}),W.attr("opacity",Go).attr("transform",function(D){var O=this.parentNode.__axis;return u((O&&isFinite(O=O(D))?O:C(D))+c)})),Q.remove(),I.attr("d",e===Et||e===Tn?f?"M"+l*f+","+A+"H"+c+"V"+q+"H"+l*f:"M"+c+","+A+"V"+q:f?"M"+A+","+l*f+"V"+c+"H"+q+"V"+l*f:"M"+A+","+c+"H"+q),$.attr("opacity",1).attr("transform",function(D){return u(C(D)+c)}),K.attr(b+"2",l*i),_.attr(b,l*M).text(k),z.filter(Ef).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===Tn?"start":e===Et?"end":"middle"),z.each(function(){this.__axis=C})}return s.scale=function(p){return arguments.length?(t=p,s):t},s.ticks=function(){return n=Array.from(arguments),s},s.tickArguments=function(p){return arguments.length?(n=p==null?[]:Array.from(p),s):n.slice()},s.tickValues=function(p){return arguments.length?(o=p==null?null:Array.from(p),s):o&&o.slice()},s.tickFormat=function(p){return arguments.length?(r=p,s):r},s.tickSize=function(p){return arguments.length?(i=f=+p,s):i},s.tickSizeInner=function(p){return arguments.length?(i=+p,s):i},s.tickSizeOuter=function(p){return arguments.length?(f=+p,s):f},s.tickPadding=function(p){return arguments.length?(a=+p,s):a},s.offset=function(p){return arguments.length?(c=+p,s):c},s}function $n(e){return Cf(In,e)}var Nf={value:()=>{}};function Qo(){for(var e=0,t=arguments.length,n={},o;e=0&&(o=n.slice(r+1),n=n.slice(0,r)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:o}})}Ct.prototype=Qo.prototype={constructor:Ct,on:function(e,t){var n=this._,o=Tf(e+"",n),r,i=-1,f=o.length;if(arguments.length<2){for(;++i0)for(var n=new Array(r),o=0,r,i;o=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),Pn.hasOwnProperty(t)?{space:Pn[t],local:e}:e}function $f(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===Nt&&t.documentElement.namespaceURI===Nt?t.createElement(e):t.createElementNS(n,e)}}function Pf(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function De(e){var t=de(e);return(t.local?Pf:$f)(t)}function Rf(){}function Ae(e){return e==null?Rf:function(){return this.querySelector(e)}}function Wo(e){typeof e!="function"&&(e=Ae(e));for(var t=this._groups,n=t.length,o=new Array(n),r=0;r=q&&(q=A+1);!(z=M[q])&&++q=0;)(f=o[r])&&(i&&f.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(f,i),i=f);return this}function cr(e){e||(e=Qf);function t(u,s){return u&&s?e(u.__data__,s.__data__):!u-!s}for(var n=this._groups,o=n.length,r=new Array(o),i=0;it?1:e>=t?0:NaN}function lr(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function br(){return Array.from(this)}function sr(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?na:typeof t=="function"?ra:oa)(e,t,n??"")):ye(this.node(),e)}function ye(e,t){return e.style.getPropertyValue(t)||$t(e).getComputedStyle(e,null).getPropertyValue(t)}function ia(e){return function(){delete this[e]}}function fa(e,t){return function(){this[e]=t}}function aa(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function gr(e,t){return arguments.length>1?this.each((t==null?ia:typeof t=="function"?aa:fa)(e,t)):this.node()[e]}function xr(e){return e.trim().split(/^|\s+/)}function On(e){return e.classList||new yr(e)}function yr(e){this._node=e,this._names=xr(e.getAttribute("class")||"")}yr.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function wr(e,t){for(var n=On(e),o=-1,r=t.length;++o=0&&(n=t.slice(o+1),t=t.slice(0,o)),{type:t,name:n}})}function za(e){return function(){var t=this.__on;if(t){for(var n=0,o=-1,r=t.length,i;n>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Ft(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Ft(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Na.exec(e))?new G(t[1],t[2],t[3],1):(t=Ta.exec(e))?new G(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Ia.exec(e))?Ft(t[1],t[2],t[3],t[4]):(t=$a.exec(e))?Ft(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Pa.exec(e))?Hr(t[1],t[2]/100,t[3]/100,1):(t=Ra.exec(e))?Hr(t[1],t[2]/100,t[3]/100,t[4]):Fr.hasOwnProperty(e)?Vr(Fr[e]):e==="transparent"?new G(NaN,NaN,NaN,0):null}function Vr(e){return new G(e>>16&255,e>>8&255,e&255,1)}function Ft(e,t,n,o){return o<=0&&(e=t=n=NaN),new G(e,t,n,o)}function Da(e){return e instanceof rt||(e=te(e)),e?(e=e.rgb(),new G(e.r,e.g,e.b,e.opacity)):new G}function Ve(e,t,n,o){return arguments.length===1?Da(e):new G(e,t,n,o??1)}function G(e,t,n,o){this.r=+e,this.g=+t,this.b=+n,this.opacity=+o}Ot(G,Ve,jn(rt,{brighter(e){return e=e==null?Lt:Math.pow(Lt,e),new G(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?nt:Math.pow(nt,e),new G(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new G(Ce(this.r),Ce(this.g),Ce(this.b),Vt(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:jr,formatHex:jr,formatHex8:La,formatRgb:Br,toString:Br}));function jr(){return`#${Ee(this.r)}${Ee(this.g)}${Ee(this.b)}`}function La(){return`#${Ee(this.r)}${Ee(this.g)}${Ee(this.b)}${Ee((isNaN(this.opacity)?1:this.opacity)*255)}`}function Br(){let e=Vt(this.opacity);return`${e===1?"rgb(":"rgba("}${Ce(this.r)}, ${Ce(this.g)}, ${Ce(this.b)}${e===1?")":`, ${e})`}`}function Vt(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Ce(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Ee(e){return e=Ce(e),(e<16?"0":"")+e.toString(16)}function Hr(e,t,n,o){return o<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new ee(e,t,n,o)}function Yr(e){if(e instanceof ee)return new ee(e.h,e.s,e.l,e.opacity);if(e instanceof rt||(e=te(e)),!e)return new ee;if(e instanceof ee)return e;e=e.rgb();var t=e.r/255,n=e.g/255,o=e.b/255,r=Math.min(t,n,o),i=Math.max(t,n,o),f=NaN,a=i-r,c=(i+r)/2;return a?(t===i?f=(n-o)/a+(n0&&c<1?0:f,new ee(f,a,c,e.opacity)}function Gr(e,t,n,o){return arguments.length===1?Yr(e):new ee(e,t,n,o??1)}function ee(e,t,n,o){this.h=+e,this.s=+t,this.l=+n,this.opacity=+o}Ot(ee,Gr,jn(rt,{brighter(e){return e=e==null?Lt:Math.pow(Lt,e),new ee(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?nt:Math.pow(nt,e),new ee(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,o=n+(n<.5?n:1-n)*t,r=2*n-o;return new G(Bn(e>=240?e-240:e+120,r,o),Bn(e,r,o),Bn(e<120?e+240:e-120,r,o),this.opacity)},clamp(){return new ee(Xr(this.h),Dt(this.s),Dt(this.l),Vt(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Vt(this.opacity);return`${e===1?"hsl(":"hsla("}${Xr(this.h)}, ${Dt(this.s)*100}%, ${Dt(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Xr(e){return e=(e||0)%360,e<0?e+360:e}function Dt(e){return Math.max(0,Math.min(1,e||0))}function Bn(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}function Hn(e,t,n,o,r){var i=e*e,f=i*e;return((1-3*e+3*i-f)*t+(4-6*i+3*f)*n+(1+3*e+3*i-3*f)*o+f*r)/6}function Kr(e){var t=e.length-1;return function(n){var o=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),r=e[o],i=e[o+1],f=o>0?e[o-1]:2*r-i,a=o()=>e;function Va(e,t){return function(n){return e+n*t}}function ja(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(o){return Math.pow(e+o*t,n)}}function Wr(e){return(e=+e)==1?jt:function(t,n){return n-t?ja(t,n,e):it(isNaN(t)?n:t)}}function jt(e,t){var n=t-e;return n?Va(e,n):it(isNaN(e)?t:e)}var Ne=function e(t){var n=Wr(t);function o(r,i){var f=n((r=Ve(r)).r,(i=Ve(i)).r),a=n(r.g,i.g),c=n(r.b,i.b),l=jt(r.opacity,i.opacity);return function(b){return r.r=f(b),r.g=a(b),r.b=c(b),r.opacity=l(b),r+""}}return o.gamma=e,o}(1);function Ur(e){return function(t){var n=t.length,o=new Array(n),r=new Array(n),i=new Array(n),f,a;for(f=0;fn&&(i=t.slice(n,i),a[f]?a[f]+=i:a[++f]=i),(o=o[0])===(r=r[0])?a[f]?a[f]+=r:a[++f]=r:(a[++f]=null,c.push({i:f,x:j(o,r)})),n=Xn.lastIndex;return n180?b+=360:b-l>180&&(l+=360),s.push({i:u.push(r(u)+"rotate(",null,o)-2,x:j(l,b)})):b&&u.push(r(u)+"rotate("+b+o)}function a(l,b,u,s){l!==b?s.push({i:u.push(r(u)+"skewX(",null,o)-2,x:j(l,b)}):b&&u.push(r(u)+"skewX("+b+o)}function c(l,b,u,s,p,y){if(l!==u||b!==s){var k=p.push(r(p)+"scale(",null,",",null,")");y.push({i:k-4,x:j(l,u)},{i:k-2,x:j(b,s)})}else(u!==1||s!==1)&&p.push(r(p)+"scale("+u+","+s+")")}return function(l,b){var u=[],s=[];return l=e(l),b=e(b),i(l.translateX,l.translateY,b.translateX,b.translateY,u,s),f(l.rotate,b.rotate,u,s),a(l.skewX,b.skewX,u,s),c(l.scaleX,l.scaleY,b.scaleX,b.scaleY,u,s),l=b=null,function(p){for(var y=-1,k=s.length,M;++y=0&&e._call.call(void 0,t),e=e._next;--je}function ci(){Ie=(Yt=bt.now())+Gt,je=ct=0;try{si()}finally{je=0,Za(),Ie=0}}function Ua(){var e=bt.now(),t=e-Yt;t>li&&(Gt-=t,Yt=e)}function Za(){for(var e,t=Xt,n,o=1/0;t;)t._call?(o>t._time&&(o=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:Xt=n);lt=e,Zn(o)}function Zn(e){if(!je){ct&&(ct=clearTimeout(ct));var t=e-Ie;t>24?(e<1/0&&(ct=setTimeout(ci,e-bt.now()-Gt)),at&&(at=clearInterval(at))):(at||(Yt=bt.now(),at=setInterval(Ua,li)),je=1,bi(ci))}}function Qt(e,t,n){var o=new st;return t=t==null?0:+t,o.restart(r=>{o.stop(),e(r+t)},t,n),o}var Ja=Ze("start","end","cancel","interrupt"),ec=[],pi=0,ui=1,Ut=2,Wt=3,di=4,Zt=5,dt=6;function we(e,t,n,o,r,i){var f=e.__transition;if(!f)e.__transition={};else if(n in f)return;tc(e,n,{name:t,index:o,group:r,on:Ja,tween:ec,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:pi})}function pt(e,t){var n=F(e,t);if(n.state>pi)throw new Error("too late; already scheduled");return n}function B(e,t){var n=F(e,t);if(n.state>Wt)throw new Error("too late; already running");return n}function F(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function tc(e,t,n){var o=e.__transition,r;o[t]=n,n.timer=Kt(i,0,n.time);function i(l){n.state=ui,n.timer.restart(f,n.delay,n.time),n.delay<=l&&f(l-n.delay)}function f(l){var b,u,s,p;if(n.state!==ui)return c();for(b in o)if(p=o[b],p.name===n.name){if(p.state===Wt)return Qt(f);p.state===di?(p.state=dt,p.timer.stop(),p.on.call("interrupt",e,e.__data__,p.index,p.group),delete o[b]):+bUt&&o.state=0&&(t=t.slice(0,n)),!t||t==="start"})}function vc(e,t,n){var o,r,i=wc(t)?pt:B;return function(){var f=i(this,e),a=f.on;a!==o&&(r=(o=a).copy()).on(t,n),f.on=r}}function zi(e,t){var n=this._id;return arguments.length<2?F(this.node(),n).on.on(e):this.each(vc(n,e,t))}function kc(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Mi(){return this.on("end.remove",kc(this._id))}function qi(e){var t=this._name,n=this._id;typeof e!="function"&&(e=Ae(e));for(var o=this._groups,r=o.length,i=new Array(r),f=0;f=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Li;let n=10**t;return function(o){this._+=o[0];for(let r=1,i=o.length;r$e)if(!(Math.abs(u*c-l*b)>$e)||!i)this._append`L${this._x1=t},${this._y1=n}`;else{let p=o-f,y=r-a,k=c*c+l*l,M=p*p+y*y,m=Math.sqrt(k),A=Math.sqrt(s),q=i*Math.tan((eo-Math.acos((k+s-M)/(2*m*A)))/2),C=q/A,z=q/m;Math.abs(C-1)>$e&&this._append`L${t+C*b},${n+C*u}`,this._append`A${i},${i},0,0,${+(u*p>b*y)},${this._x1=t+z*c},${this._y1=n+z*l}`}}arc(t,n,o,r,i,f){if(t=+t,n=+n,o=+o,f=!!f,o<0)throw new Error(`negative radius: ${o}`);let a=o*Math.cos(r),c=o*Math.sin(r),l=t+a,b=n+c,u=1^f,s=f?r-i:i-r;this._x1===null?this._append`M${l},${b}`:(Math.abs(this._x1-l)>$e||Math.abs(this._y1-b)>$e)&&this._append`L${l},${b}`,o&&(s<0&&(s=s%to+to),s>Fc?this._append`A${o},${o},0,1,${u},${t-a},${n-c}A${o},${o},0,1,${u},${this._x1=l},${this._y1=b}`:s>$e&&this._append`A${o},${o},0,${+(s>=eo)},${u},${this._x1=t+o*Math.cos(i)},${this._y1=n+o*Math.sin(i)}`)}rect(t,n,o,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${o=+o}v${+r}h${-o}Z`}toString(){return this._}};function Vi(){return new Pe}Vi.prototype=Pe.prototype;function ji(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function Re(e,t){if((n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var n,o=e.slice(0,n);return[o.length>1?o[0]+o.slice(2):o,+e.slice(n+1)]}function fe(e){return e=Re(Math.abs(e)),e?e[1]:NaN}function Bi(e,t){return function(n,o){for(var r=n.length,i=[],f=0,a=e[0],c=0;r>0&&a>0&&(c+a+1>o&&(a=Math.max(1,o-c)),i.push(n.substring(r-=a,r+a)),!((c+=a+1)>o));)a=e[f=(f+1)%e.length];return i.reverse().join(t)}}function Hi(e){return function(t){return t.replace(/[0-9]/g,function(n){return e[+n]})}}var Lc=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ke(e){if(!(t=Lc.exec(e)))throw new Error("invalid format: "+e);var t;return new nn({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}ke.prototype=nn.prototype;function nn(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}nn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Xi(e){e:for(var t=e.length,n=1,o=-1,r;n0&&(o=0);break}return o>0?e.slice(0,o)+e.slice(r+1):e}var no;function Yi(e,t){var n=Re(e,t);if(!n)return e+"";var o=n[0],r=n[1],i=r-(no=Math.max(-8,Math.min(8,Math.floor(r/3)))*3)+1,f=o.length;return i===f?o:i>f?o+new Array(i-f+1).join("0"):i>0?o.slice(0,i)+"."+o.slice(i):"0."+new Array(1-i).join("0")+Re(e,Math.max(0,t+i-1))[0]}function oo(e,t){var n=Re(e,t);if(!n)return e+"";var o=n[0],r=n[1];return r<0?"0."+new Array(-r).join("0")+o:o.length>r+1?o.slice(0,r+1)+"."+o.slice(r+1):o+new Array(r-o.length+2).join("0")}var ro={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:ji,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>oo(e*100,t),r:oo,s:Yi,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function io(e){return e}var Gi=Array.prototype.map,Ki=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Qi(e){var t=e.grouping===void 0||e.thousands===void 0?io:Bi(Gi.call(e.grouping,Number),e.thousands+""),n=e.currency===void 0?"":e.currency[0]+"",o=e.currency===void 0?"":e.currency[1]+"",r=e.decimal===void 0?".":e.decimal+"",i=e.numerals===void 0?io:Hi(Gi.call(e.numerals,String)),f=e.percent===void 0?"%":e.percent+"",a=e.minus===void 0?"\u2212":e.minus+"",c=e.nan===void 0?"NaN":e.nan+"";function l(u){u=ke(u);var s=u.fill,p=u.align,y=u.sign,k=u.symbol,M=u.zero,m=u.width,A=u.comma,q=u.precision,C=u.trim,z=u.type;z==="n"?(A=!0,z="g"):ro[z]||(q===void 0&&(q=12),C=!0,z="g"),(M||s==="0"&&p==="=")&&(M=!0,s="0",p="=");var I=k==="$"?n:k==="#"&&/[boxX]/.test(z)?"0"+z.toLowerCase():"",$=k==="$"?o:/[%p]/.test(z)?f:"",Q=ro[z],W=/[defgprs%]/.test(z);q=q===void 0?6:/[gprs]/.test(z)?Math.max(1,Math.min(21,q)):Math.max(0,Math.min(20,q));function K(_){var D=I,O=$,d,g,h;if(z==="c")O=Q(_)+O,_="";else{_=+_;var x=_<0||1/_<0;if(_=isNaN(_)?c:Q(Math.abs(_),q),C&&(_=Xi(_)),x&&+_==0&&y!=="+"&&(x=!1),D=(x?y==="("?y:a:y==="-"||y==="("?"":y)+D,O=(z==="s"?Ki[8+no/3]:"")+O+(x&&y==="("?")":""),W){for(d=-1,g=_.length;++dh||h>57){O=(h===46?r+_.slice(d+1):_.slice(d))+O,_=_.slice(0,d);break}}}A&&!M&&(_=t(_,1/0));var v=D.length+_.length+O.length,w=v>1)+D+_+O+w.slice(v);break;default:_=w+D+_+O;break}return i(_)}return K.toString=function(){return u+""},K}function b(u,s){var p=l((u=ke(u),u.type="f",u)),y=Math.max(-8,Math.min(8,Math.floor(fe(s)/3)))*3,k=Math.pow(10,-y),M=Ki[8+y/3];return function(m){return p(k*m)+M}}return{format:l,formatPrefix:b}}var on,He,rn;fo({thousands:",",grouping:[3],currency:["$",""]});function fo(e){return on=Qi(e),He=on.format,rn=on.formatPrefix,on}function ao(e){return Math.max(0,-fe(Math.abs(e)))}function co(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(fe(t)/3)))*3-fe(Math.abs(e)))}function lo(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,fe(t)-fe(e))+1}function fn(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}var bo=Symbol("implicit");function ht(){var e=new Fe,t=[],n=[],o=bo;function r(i){let f=e.get(i);if(f===void 0){if(o!==bo)return o;e.set(i,f=t.push(i)-1)}return n[f%n.length]}return r.domain=function(i){if(!arguments.length)return t.slice();t=[],e=new Fe;for(let f of i)e.has(f)||e.set(f,t.push(f)-1);return r},r.range=function(i){return arguments.length?(n=Array.from(i),r):n.slice()},r.unknown=function(i){return arguments.length?(o=i,r):o},r.copy=function(){return ht(t,n).unknown(o)},fn.apply(r,arguments),r}function so(e){return function(){return e}}function uo(e){return+e}var Wi=[0,1];function Xe(e){return e}function po(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:so(isNaN(t)?NaN:.5)}function Vc(e,t){var n;return e>t&&(n=e,e=t,t=n),function(o){return Math.max(e,Math.min(t,o))}}function jc(e,t,n){var o=e[0],r=e[1],i=t[0],f=t[1];return r2?Bc:jc,c=l=null,u}function u(s){return s==null||isNaN(s=+s)?i:(c||(c=a(e.map(o),t,n)))(o(f(s)))}return u.invert=function(s){return f(r((l||(l=a(t,e.map(o),j)))(s)))},u.domain=function(s){return arguments.length?(e=Array.from(s,uo),b()):e.slice()},u.range=function(s){return arguments.length?(t=Array.from(s),b()):t.slice()},u.rangeRound=function(s){return t=Array.from(s),n=Gn,b()},u.clamp=function(s){return arguments.length?(f=s?!0:Xe,b()):f!==Xe},u.interpolate=function(s){return arguments.length?(n=s,b()):n},u.unknown=function(s){return arguments.length?(i=s,u):i},function(s,p){return o=s,r=p,b()}}function ho(){return Hc()(Xe,Xe)}function mo(e,t,n,o){var r=Cn(e,t,n),i;switch(o=ke(o??",f"),o.type){case"s":{var f=Math.max(Math.abs(e),Math.abs(t));return o.precision==null&&!isNaN(i=co(r,f))&&(o.precision=i),rn(o,f)}case"":case"e":case"g":case"p":case"r":{o.precision==null&&!isNaN(i=lo(r,Math.max(Math.abs(e),Math.abs(t))))&&(o.precision=i-(o.type==="e"));break}case"f":case"%":{o.precision==null&&!isNaN(i=ao(r))&&(o.precision=i-(o.type==="%")*2);break}}return He(o)}function Xc(e){var t=e.domain;return e.ticks=function(n){var o=t();return At(o[0],o[o.length-1],n??10)},e.tickFormat=function(n,o){var r=t();return mo(r[0],r[r.length-1],n??10,o)},e.nice=function(n){n==null&&(n=10);var o=t(),r=0,i=o.length-1,f=o[r],a=o[i],c,l,b=10;for(a0;){if(l=Ue(f,a,n),l===c)return o[r]=f,o[i]=a,t(o);if(l>0)f=Math.floor(f/l)*l,a=Math.ceil(a/l)*l;else if(l<0)f=Math.ceil(f*l)/l,a=Math.floor(a*l)/l;else break;c=l}return e},e}function mt(){var e=ho();return e.copy=function(){return Ui(e,mt())},fn.apply(e,arguments),Xc(e)}function Oe(e){return function(){return e}}function Zi(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(n==null)t=null;else{let o=Math.floor(n);if(!(o>=0))throw new RangeError(`invalid digits: ${n}`);t=o}return e},()=>new Pe(t)}var Bm=Array.prototype.slice;function Ji(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function ef(e){this._context=e}ef.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function tf(e){return new ef(e)}function nf(e){return e[0]}function of(e){return e[1]}function go(e,t){var n=Oe(!0),o=null,r=tf,i=null,f=Zi(a);e=typeof e=="function"?e:e===void 0?nf:Oe(e),t=typeof t=="function"?t:t===void 0?of:Oe(t);function a(c){var l,b=(c=Ji(c)).length,u,s=!1,p;for(o==null&&(i=r(p=f())),l=0;l<=b;++l)!(l()=>e;function wo(e,{sourceEvent:t,target:n,transform:o,dispatch:r}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:o,enumerable:!0,configurable:!0},_:{value:r}})}function ne(e,t,n){this.k=e,this.x=t,this.y=n}ne.prototype={constructor:ne,scale:function(e){return e===1?this:new ne(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new ne(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var xt=new ne(1,0,0);vo.prototype=ne.prototype;function vo(e){for(;!e.__zoom;)if(!(e=e.parentNode))return xt;return e.__zoom}function cn(e){e.stopImmediatePropagation()}function Ye(e){e.preventDefault(),e.stopImmediatePropagation()}function Gc(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function Kc(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function lf(){return this.__zoom||xt}function Qc(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Wc(){return navigator.maxTouchPoints||"ontouchstart"in this}function Uc(e,t,n){var o=e.invertX(t[0][0])-n[0][0],r=e.invertX(t[1][0])-n[1][0],i=e.invertY(t[0][1])-n[0][1],f=e.invertY(t[1][1])-n[1][1];return e.translate(r>o?(o+r)/2:Math.min(0,o)||Math.max(0,r),f>i?(i+f)/2:Math.min(0,i)||Math.max(0,f))}function ko(){var e=Gc,t=Kc,n=Uc,o=Qc,r=Wc,i=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],a=250,c=Un,l=Ze("start","zoom","end"),b,u,s,p=500,y=150,k=0,M=10;function m(d){d.property("__zoom",lf).on("wheel.zoom",Q,{passive:!1}).on("mousedown.zoom",W).on("dblclick.zoom",K).filter(r).on("touchstart.zoom",_).on("touchmove.zoom",D).on("touchend.zoom touchcancel.zoom",O).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}m.transform=function(d,g,h,x){var v=d.selection?d.selection():d;v.property("__zoom",lf),d!==v?z(d,g,h,x):v.interrupt().each(function(){I(this,arguments).event(x).start().zoom(null,typeof g=="function"?g.apply(this,arguments):g).end()})},m.scaleBy=function(d,g,h,x){m.scaleTo(d,function(){var v=this.__zoom.k,w=typeof g=="function"?g.apply(this,arguments):g;return v*w},h,x)},m.scaleTo=function(d,g,h,x){m.transform(d,function(){var v=t.apply(this,arguments),w=this.__zoom,S=h==null?C(v):typeof h=="function"?h.apply(this,arguments):h,E=w.invert(S),T=typeof g=="function"?g.apply(this,arguments):g;return n(q(A(w,T),S,E),v,f)},h,x)},m.translateBy=function(d,g,h,x){m.transform(d,function(){return n(this.__zoom.translate(typeof g=="function"?g.apply(this,arguments):g,typeof h=="function"?h.apply(this,arguments):h),t.apply(this,arguments),f)},null,x)},m.translateTo=function(d,g,h,x,v){m.transform(d,function(){var w=t.apply(this,arguments),S=this.__zoom,E=x==null?C(w):typeof x=="function"?x.apply(this,arguments):x;return n(xt.translate(E[0],E[1]).scale(S.k).translate(typeof g=="function"?-g.apply(this,arguments):-g,typeof h=="function"?-h.apply(this,arguments):-h),w,f)},x,v)};function A(d,g){return g=Math.max(i[0],Math.min(i[1],g)),g===d.k?d:new ne(g,d.x,d.y)}function q(d,g,h){var x=g[0]-h[0]*d.k,v=g[1]-h[1]*d.k;return x===d.x&&v===d.y?d:new ne(d.k,x,v)}function C(d){return[(+d[0][0]+ +d[1][0])/2,(+d[0][1]+ +d[1][1])/2]}function z(d,g,h,x){d.on("start.zoom",function(){I(this,arguments).event(x).start()}).on("interrupt.zoom end.zoom",function(){I(this,arguments).event(x).end()}).tween("zoom",function(){var v=this,w=arguments,S=I(v,w).event(x),E=t.apply(v,w),T=h==null?C(E):typeof h=="function"?h.apply(v,w):h,oe=Math.max(E[1][0]-E[0][0],E[1][1]-E[0][1]),L=v.__zoom,U=typeof g=="function"?g.apply(v,w):g,ce=c(L.invert(T).concat(oe/L.k),U.invert(T).concat(oe/U.k));return function(Z){if(Z===1)Z=U;else{var le=ce(Z),dn=oe/le[2];Z=new ne(dn,T[0]-le[0]*dn,T[1]-le[1]*dn)}S.zoom(null,Z)}})}function I(d,g,h){return!h&&d.__zooming||new $(d,g)}function $(d,g){this.that=d,this.args=g,this.active=0,this.sourceEvent=null,this.extent=t.apply(d,g),this.taps=0}$.prototype={event:function(d){return d&&(this.sourceEvent=d),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(d,g){return this.mouse&&d!=="mouse"&&(this.mouse[1]=g.invert(this.mouse[0])),this.touch0&&d!=="touch"&&(this.touch0[1]=g.invert(this.touch0[0])),this.touch1&&d!=="touch"&&(this.touch1[1]=g.invert(this.touch1[0])),this.that.__zoom=g,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(d){var g=R(this.that).datum();l.call(d,this.that,new wo(d,{sourceEvent:this.sourceEvent,target:m,type:d,transform:this.that.__zoom,dispatch:l}),g)}};function Q(d,...g){if(!e.apply(this,arguments))return;var h=I(this,g).event(d),x=this.__zoom,v=Math.max(i[0],Math.min(i[1],x.k*Math.pow(2,o.apply(this,arguments)))),w=he(d);if(h.wheel)(h.mouse[0][0]!==w[0]||h.mouse[0][1]!==w[1])&&(h.mouse[1]=x.invert(h.mouse[0]=w)),clearTimeout(h.wheel);else{if(x.k===v)return;h.mouse=[w,x.invert(w)],ve(this),h.start()}Ye(d),h.wheel=setTimeout(S,y),h.zoom("mouse",n(q(A(x,v),h.mouse[0],h.mouse[1]),h.extent,f));function S(){h.wheel=null,h.end()}}function W(d,...g){if(s||!e.apply(this,arguments))return;var h=d.currentTarget,x=I(this,g,!0).event(d),v=R(d.view).on("mousemove.zoom",T,!0).on("mouseup.zoom",oe,!0),w=he(d,h),S=d.clientX,E=d.clientY;Ln(d.view),cn(d),x.mouse=[w,this.__zoom.invert(w)],ve(this),x.start();function T(L){if(Ye(L),!x.moved){var U=L.clientX-S,ce=L.clientY-E;x.moved=U*U+ce*ce>k}x.event(L).zoom("mouse",n(q(x.that.__zoom,x.mouse[0]=he(L,h),x.mouse[1]),x.extent,f))}function oe(L){v.on("mousemove.zoom mouseup.zoom",null),Vn(L.view,x.moved),Ye(L),x.event(L).end()}}function K(d,...g){if(e.apply(this,arguments)){var h=this.__zoom,x=he(d.changedTouches?d.changedTouches[0]:d,this),v=h.invert(x),w=h.k*(d.shiftKey?.5:2),S=n(q(A(h,w),x,v),t.apply(this,g),f);Ye(d),a>0?R(this).transition().duration(a).call(z,S,x,d):R(this).call(m.transform,S,x,d)}}function _(d,...g){if(e.apply(this,arguments)){var h=d.touches,x=h.length,v=I(this,g,d.changedTouches.length===x).event(d),w,S,E,T;for(cn(d),S=0;S{let t=class t{get div(){return this.root.nativeElement}get width(){return this.div.offsetWidth}get margin(){let{"margin-top":o,"margin-right":r,"margin-bottom":i,"margin-left":f}=this.settings;return{top:o,right:r,bottom:i,left:f}}constructor(){this.initialize$=new be(1),this.initialized$=this.initialize$.pipe(X(o=>this.root=o),P(()=>{let o=Dn("svg"),r=o.node();if(r)this.div.append(r);else throw new Error("Could not create SVG node");return o}),X(o=>this.svg=o),X(o=>{this.clip=o.append("defs").append("clipPath").attr("id","clip").append("rect");let r=o.append("g").attr("class","focus");this.draw=r.append("g").attr("class","features").attr("clip-path","url(#clip)"),this.zoom=ko(),this.events=r.append("rect").attr("class","zoom").style("fill","none").style("pointer-events","all").lower(),r.call(this.zoom)}),X(o=>{let r=o.append("g").attr("class","x axis"),i=o.append("g").attr("class","y axis");this.axes={x:r,y:i}}),X(()=>this.scale={x:mt(),y:ht()}),_e(1))}};t.\u0275fac=function(r){return new(r||t)},t.\u0275prov=re({token:t,factory:t.\u0275fac,providedIn:"platform"});let e=t;return e})();var Ge=(()=>{let t=class t{constructor(){this._traces=new Map,this._parent=new Map,this._children=new Map}set hierarchy(o){this.setHierarchy(o)}get traces(){return this._traces}get features(){let o=this.traces,r=new Map;for(let i of o.values())for(let[f,a]of Object.entries(i.values))r.set(`trace-${i.id}-feature-${f}`,a);return r}setHierarchy(o){let r=0,i=[...o];for(;i.length>0;){let[f]=i.splice(0,1),a=f.nested||[],c=new Array;for(let u of[f,...a]){let s=u.type==="trace"?u:{type:"trace",values:[u],label:u.label,id:void 0,expanded:void 0};s.values=s.values.sort((p,y)=>p.type!=="continuous"?-1:y.type!=="continuous"?1:0),s.id=s.id!==void 0?s.id:r++,s.expanded=s.expanded!==!1,this._traces.set(s.id,s),c.push(s)}let l=c[0],b=c.slice(1);b.forEach(u=>this._parent.set(u,l.id)),this._children.set(l,b.map(u=>u.id)),i=[...c.slice(1),...i]}}getTrace(o){return this.traces.get(o)}getParent(o){let r=this._parent.get(o);return r&&this._traces.get(r)}getBranch(o){let r=[],i=[o];for(;i.length>0;){let f=i.pop();r.push(f);let a=this.getChildren(f);i.push(...a)}return r}getChildren(o){return(this._children.get(o)||[]).map(i=>this._traces.get(i))}};t.\u0275fac=function(r){return new(r||t)},t.\u0275prov=re({token:t,factory:t.\u0275fac,providedIn:"root"});let e=t;return e})();function sf(e,t,n){e.attr("height",t.height).attr("width",t.width).attr("y",n.top).attr("x",n.left)}var bn=(()=>{let t=class t{get svg(){return this.initializeService.svg}get div(){return this.initializeService.div}get height(){return this.div.offsetHeight}get width(){return this.div.offsetWidth}get margin(){return this.initializeService.margin}get scale(){return this.initializeService.scale}get axes(){return this.initializeService.axes}constructor(o){this.initializeService=o,this.resize$=new be(1);let r=this.resize$.pipe(P(()=>({width:this.width,height:this.height})),Mo((i,f)=>i.width===f.width),P(()=>{}),vt(void 0));this.resized$=r.pipe(P(()=>this.updateRoot()),P(()=>this.updateDraw()),P(()=>this.updateAxes()),P(()=>this.updateRangeX()),P(()=>this.updateRangeY()))}updateRoot(){let{y:o}=this.scale,i=o.range().at(-1)+this.margin.bottom,f=this.width;this.svg.attr("height",i).attr("width",f)}updateDraw(){let o={width:0,height:0};o.height=this.height-this.margin.top-this.margin.bottom,o.width=this.width-this.margin.left-this.margin.right,sf(this.initializeService.clip,o,this.margin),sf(this.initializeService.events,o,this.margin)}updateAxes(){let{x:o,y:r}=this.axes;o.attr("transform",`translate(0, ${this.height-this.margin.top})`),r.attr("transform",`translate(${this.margin.left}, 0)`)}updateRangeX(){let o=this.scale.x,r=this.width,{left:i,right:f}=this.margin;o.range([i,r-f])}updateRangeY(){}};t.\u0275fac=function(r){return new(r||t)(Se(ae))},t.\u0275prov=re({token:t,factory:t.\u0275fac,providedIn:"platform"});let e=t;return e})();var sn=(()=>{let t=class t{constructor(o){this.initService=o,this.zoom$=new be(1);let i=this.initService.initialized$.pipe(P(()=>this._scale={x:this.initService.scale.x.copy(),y:this.initService.scale.y.copy()}),_e(1)).pipe(se(()=>this.zoom$),P(f=>{let{x:a}=this._scale,{x:c}=this.initService.scale,l=f.transform.rescaleX(a),[b,u]=l.domain();return c.domain([b,u]),this.initService.scale}),vt(this.initService.scale));this.zoomed$=i.pipe(P(()=>{let f=this.initService.axes,a=this.initService.scale,c=a.x.ticks().filter(b=>Number.isInteger(b)).slice(1,-1),l=$n(a.x).tickValues(c).tickFormat(He(".0f"));f.x.call(l)}))}};t.\u0275fac=function(r){return new(r||t)(Se(ae))},t.\u0275prov=re({token:t,factory:t.\u0275fac,providedIn:"platform"});let e=t;return e})();var uf={H:"blue",K:"blue",R:"blue",D:"red",E:"red",S:"green",T:"green",N:"green",Q:"green",A:"white",V:"white",L:"white",I:"white",M:"white",F:"magenta",W:"magenta",Y:"magenta",P:"brown",G:"brown",C:"yellow",B:"grey",Z:"grey",X:"grey","-":"grey"},t0=parseFloat(getComputedStyle(document.documentElement).fontSize),So=e=>e.id,zo=(e,t)=>t,un=(()=>{let t=class t{constructor(o,r){this.initializeService=o,this.featuresService=r,this.traces$=new be(1),this.sequence$=new be(1),this["char.width"]=0,this.draw$=this.sequence$.pipe(X(i=>{let f=this.initializeService.scale.x,a=[0,i.length+1];f.domain(a)}),P(i=>this.createSequence(i)),X(()=>{let f=this.initializeService.settings["content-size"]/3;this.tooltip=R(this.initializeService.div).append("div").attr("class","tooltip").style("position","absolute").style("display","none").style("opacity",1).style("color","black").style("padding",".25rem").style("background-color","white").style("border","solid").style("border-width","1px").style("border-radius",f+"px")}),_e(1),se(()=>this.traces$),X(i=>this.updateScale(i)),X(i=>this.createLabels(i)),X(i=>this.createGrid(i)),X(i=>this.createTraces(i)),_e(1)),this.drawn$=this.draw$.pipe(P(()=>this.updateSequence()),P(()=>this.updateGrid()),P(()=>this.updateLabels()),P(()=>this.updateTraces()))}updateScale(o){let r=this.initializeService.scale.y,i=["sequence",...o.map(({id:a})=>a+"")],f=i.reduce((a,c,l)=>{if(l===0&&c==="sequence"){let u=this.initializeService.settings["line-height"],s=this.initializeService.settings["margin-top"];return[s,s+u]}let b=this.featuresService.getTrace(+c);if(b){let u=a.at(-1),s=b["line-height"]||this.initializeService.settings["line-height"];return b.position==="dodge"&&(s=b.values.reduce((p,y)=>p+(y["line-height"]||this.initializeService.settings["line-height"]),0)),[...a,u+s]}throw new Error("Trace not found")},[]);r.domain(i).range(f)}createSequence(o){let r=a=>uf[a]||uf.X,i=this.initializeService.draw.selectAll("g.sequence").data([o]).join("g").attr("class","sequence");this["group.residues"]=i.selectAll("g.residue").data(o).join("g").attr("id",(a,c)=>`residue-${c+1}`).attr("class","residue"),this["group.residues"].append("rect").attr("class","color").attr("fill",a=>r(a)).attr("fill-opacity",.1);let f=0;this["group.residues"].append("text").attr("class","name").text(a=>""+a).each(function(){f=Math.max(f,this.getBBox().width)}),this["char.width"]=f}updateSequence(){let o=this.initializeService.margin,{x:r,y:i}=this.initializeService.scale,{"line-height":f}=this.initializeService.settings,a=r(1)-r(0),c=this["char.width"],{"group.residues":l}=this;l.select("rect.color").attr("x",(b,u)=>r(u+.5)).attr("y",o.top).attr("width",()=>a).attr("height","100%"),l.select("text.name").attr("x",(b,u)=>r(u+1)).attr("y",i("sequence")+f/2).attr("width",()=>a).attr("height",f).attr("dominant-baseline","central").style("text-anchor","middle").attr("fill",this.initializeService.settings["text-color"]).attr("opacity",()=>c>a?0:1)}createLabels(o){let{y:r}=this.initializeService.scale,i=this.initializeService.settings,{left:f}=this.initializeService.margin,a=this.initializeService.svg.selectAll("g.labels").data([o],zo).join("g").attr("class","labels");this["group.labels"]=a.selectAll("g.label").data([{id:"sequence",label:"Sequence",expanded:!0},...o],So).join(c=>{let l=c.append("g").attr("id",b=>"label-"+b.id).attr("class","label");return l.each(b=>{let u=""+b.id,s=this.initializeService.div.querySelector("div#label-"+u);s&&(s.style.position="absolute",s.style.left="0px",s.style.overflow="hidden",s.style.top=r(u)+"px",s.style.height=(b["line-height"]||i["line-height"])+"px",s.style.width=f+"px")}),l},c=>c,c=>(c.each(l=>{let b=l.id,u=this.initializeService.div.querySelector("div#label-"+b);u&&(u.style.display="none")}),c)),this["group.labels"].each(c=>{let l=""+c.id,b=this.initializeService.div.querySelector("div#label-"+l);b&&(b.style.position="absolute",b.style.overflow="hidden",b.style.left="0px",b.style.top=r(l)+"px",b.style.display="block",b.style.height=(c["line-height"]||i["line-height"])+"px",b.style.width=f+"px")}),this["group.labels"].selectAll("rect").data(c=>[c],zo).join("rect").attr("height",c=>c["line-height"]||i["line-height"]).attr("width",()=>f).attr("fill","none")}updateLabels(){let o=this.initializeService.scale.y,r=this.initializeService.settings;this["group.labels"].select("rect").attr("y",i=>o(String(i.id))).attr("x",0),this["group.labels"].select("text").attr("y",i=>{let f=o(String(i.id)),a=i["line-height"]||r["line-height"];return f+a/2}).attr("x",0).attr("dominant-baseline","central").attr("fill",i=>i["text-color"]||r["text-color"])}createGrid(o){let r=this.initializeService.svg.selectAll("g.grid").data([o],zo).join("g").attr("class","grid").lower();this["group.grid"]=r.selectAll("rect.grid-line").data(o,So).join("rect").attr("id",i=>"grid-"+i.id).attr("class","grid-line")}updateGrid(){let o=this.initializeService.scale.y,r=this.initializeService.width,i=this.initializeService.margin,f=this.initializeService.settings;this["group.grid"].attr("x",i.left).attr("y",a=>{let c=a.values[a.values.length-1],l=o(""+a.id),b=c["line-height"]||a["line-height"]||f["line-height"],u=c["content-size"]||a["content-size"]||f["content-size"];return c.type!=="continuous"?l+b/2-.5:l+b/2-u/2}).attr("width",r-i.left-i.right).attr("height",a=>{let c=a.values[a.values.length-1];return c.type==="continuous"?c["content-size"]||a["content-size"]||f["content-size"]:1}).attr("fill",this.initializeService.settings["grid-color"])}createTraces(o){let r=this.initializeService.settings,i=this.tooltip;this["group.traces"]=this.initializeService.draw.selectAll("g.trace").data(o,So).join("g").attr("id",f=>"trace-"+f.id).attr("class","trace"),this["group.traces"].each(function(f){let c=R(this).selectAll("g.feature").data(f.values);c.enter().append("g").attr("class",l=>"feature "+l.type).attr("id",(l,b)=>`trace-${f.id}-feature-${b}`).each(function(l,b){l.type==="loci"&&l.values.forEach((u,s)=>{let p=(l["content-size"]||f["content-size"]||r["content-size"])/3,y=R(this).append("rect").attr("stroke",l["trace-color"]||f["trace-color"]||r["trace-color"]).attr("stroke-opacity",1).attr("stroke-width",1).attr("fill",l["trace-color"]||f["trace-color"]||r["trace-color"]).attr("fill-opacity",.5).attr("rx",p).attr("ry",p);y.data([u]),y.on("mouseover",k=>el(k,i,f,wt(Ke({},l),{index:b}),s,u)),y.on("mousemove",k=>tl(k,i,f,wt(Ke({},l),{index:b}),s,u)),y.on("mouseleave",k=>nl(k,i,f,wt(Ke({},l),{index:b}),s,u))}),l.type==="continuous"&&R(this).append("path").attr("stroke",l["trace-color"]||f["trace-color"]||r["trace-color"]).attr("stroke-opacity",1).attr("stroke-width",2).attr("fill","none").data([l.values])}),c.exit().remove()})}updateTraces(){let o=this.initializeService.scale,r=this.initializeService.settings;this["group.traces"].each(function(i){R(this).selectAll("g.feature").each(function(c){let l=o.y(""+i.id),b=c["line-height"]||i["line-height"]||r["line-height"],u=c["line-height"]||i["content-size"]||r["content-size"];if(c.type==="loci"){let s=o.x(1)-o.x(0);R(this).selectAll("rect").attr("x",p=>o.x(p.start-.5)).attr("y",l+b/2-u/2).attr("height",u).attr("width",p=>s*(p.end-p.start+1))}if(c.type==="continuous"){let s=c.values,p=c.min!==void 0?c.min:Math.min(...c.values),y=c.max!==void 0?c.max:Math.max(...c.values),k=s.map((m,A)=>[A+1,1-(m-p)/(y-p)]),M=go().curve(yo).x(([m])=>o.x(m)).y(([,m])=>l+b/2-(u-2)/2+(u-2)*m);R(this).select("path").attr("d",M(k))}})})}onLabelClick(o){o.expanded=o.expanded===!1;let r=Array.from(this.featuresService.traces.values()),i=[];for(let a of r){let{expanded:c}=Ke({expanded:!0},a);if(c!==!0){let l=this.featuresService.getBranch(a).slice(1);i.push(...l)}}let f=r.filter(a=>!i.includes(a));this.traces$.next(f),console.log("Trace",o)}};t.\u0275fac=function(r){return new(r||t)(Se(ae),Se(Ge))},t.\u0275prov=re({token:t,factory:t.\u0275fac,providedIn:"platform"});let e=t;return e})();function el(e,t,n,o,r,i){t.style("display","block"),t.style("opacity",1)}function tl(e,t,n,o,r,i){if(o.type==="loci"){let f=i;t.html(`Trace: ${n.id}
Feature: ${o.index}
Index: ${r}
Value: ${f.start!==f.end?f.start+"-"+f.end:f.start}`)}o.type==="continuous"&&t.html(`Trace: ${n.id}
Feature: ${o.index}
Index: ${r}
Value: ${i}`),t.style("left",e.offsetX+10+"px").style("top",e.offsetY+10+"px")}function nl(e,t,n,o,r,i){t.style("opacity",0),t.style("display","none")}var rl=["root"],df=e=>({trace:e});function il(e,t){if(e&1){let n=$o();V(0,"div",3),vn("click",function(){let r=pn(n).$implicit,i=Me(2);return hn(i.drawService.onLabelClick(r.value))})("keyup",function(){let r=pn(n).$implicit,i=Me(2);return hn(i.drawService.onLabelClick(r.value))}),wn(1,4),H()}if(e&2){let n=t.$implicit,o=Me(2);ze("id","label-left-"+n.key),ue(),ze("ngTemplateOutlet",o.labelLeft.templateRef)("ngTemplateOutletContext",Sn(3,df,n.value))}}function fl(e,t){if(e&1&&(xn(0,il,2,5,"div",2,gn),zn(2,"keyvalue")),e&2){let n=Me();yn(Mn(2,0,n.featuresService.traces))}}function al(e,t){if(e&1&&(V(0,"div",2),wn(1,4),H()),e&2){let n=t.$implicit,o=Me(2);ze("id","label-right-"+n.key),ue(),ze("ngTemplateOutlet",o.labelRight.templateRef)("ngTemplateOutletContext",Sn(3,df,n.value))}}function cl(e,t){if(e&1&&(xn(0,al,2,5,"div",2,gn),zn(2,"keyvalue")),e&2){let n=Me();yn(Mn(2,0,n.featuresService.traces))}}var yt=(()=>{let t=class t{set settings(o){this.initService.settings=o}set features(o){this.featuresService.hierarchy=o;let r=Array.from(this.featuresService.traces.values());this.traces$.next(r)}constructor(o,r,i,f,a){this.featuresService=o,this.initService=r,this.resizeService=i,this.zoomService=f,this.drawService=a,this.traces$=this.drawService.traces$,this.sequence$=this.drawService.sequence$,this.update$=this.initService.initialized$.pipe(se(()=>this.drawService.draw$),se(()=>this.resizeService.resized$),X(()=>{let{left:c,right:l,bottom:b}=this.resizeService.margin,u=this.resizeService.height,s=this.resizeService.width,p=this.sequence.length+1;this.initService.zoom.translateExtent([[c,0],[s-l,u-b]]).scaleExtent([1,p/5]).extent([[c,0],[s-l,u-b]]).on("zoom",y=>{this.zoomService.zoom$.next(y)})}),se(()=>this.zoomService.zoomed$),se(()=>this.drawService.drawn$)),this._update=this.update$.subscribe()}ngOnChanges(o){o&&o.sequence&&this.sequence$.next(this.sequence)}ngAfterContentInit(){this.labels&&this.labels.forEach(o=>{if(this.labelLeft&&this.labelRight)throw new Error("Only one label can be defined");o.where==="left"&&(this.labelLeft=o),o.where==="right"&&(this.labelRight=o)})}ngAfterViewInit(){this.initService.initialize$.next(this._root)}ngOnDestroy(){this._update.unsubscribe()}onResize(o){this.resizeService.resize$.next(o)}};t.\u0275fac=function(r){return new(r||t)(ge(Ge),ge(ae),ge(bn),ge(sn),ge(un))},t.\u0275cmp=kt({type:t,selectors:[["ngx-features-viewer"]],contentQueries:function(r,i,f){if(r&1&&Po(f,zt,4),r&2){let a;kn(a=_n())&&(i.labels=a)}},viewQuery:function(r,i){if(r&1&&Ro(rl,5),r&2){let f;kn(f=_n())&&(i._root=f.first)}},hostBindings:function(r,i){r&1&&vn("resize",function(a){return i.onResize(a)},!1,To)},inputs:{settings:"settings",features:"features",sequence:"sequence"},standalone:!0,features:[Fo([ae,Ge,bn,un,sn]),No,Do],decls:4,vars:2,consts:[["root",""],[2,"position","relative","display","block","width","100%","height","100%"],["tabindex","0",3,"id"],["tabindex","0",3,"click","keyup","id"],[3,"ngTemplateOutlet","ngTemplateOutletContext"]],template:function(r,i){r&1&&(V(0,"div",1,0),Qe(2,fl,3,2)(3,cl,3,2),H()),r&2&&(ue(2),We(2,i.labelLeft?2:-1),ue(),We(3,i.labelRight?3:-1))},dependencies:[St,Lo,Vo],styles:[`@charset "UTF-8";.labels #label-sequence .parent div{cursor:default}.labels #label-sequence .parent div i{display:none}.labels .label .children-0>i{visibility:hidden}.labels .label i:before{transition:transform .4s}.labels .label.active i:before{transform:roate(0deg)}.labels .label:not(.active) i:before{transform:rotate(-90deg)}.labels .label div{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;box-sizing:border-box;height:100%;width:100%;cursor:pointer}.labels .label div span{text-wrap:wrap;line-break:anywhere;flex-shrink:1;flex-grow:1}.labels .label div i{flex-shrink:0;flex-grow:0}.labels div.depth-0{width:100%;padding:0 .25rem 0 .75rem}.labels div.depth-1{width:100%;padding:0 .25rem 0 1.5rem}.labels div.depth-2{width:100%;padding:0 .25rem 0 2.25rem}.labels div.depth-3{width:100%;padding:0 .25rem 0 3rem}.labels div.depth-4{width:100%;padding:0 .25rem 0 3.75rem}.labels div.depth-5{width:100%;padding:0 .25rem 0 4.5rem}@font-face{font-display:block;font-family:bootstrap-icons;src:url("./media/bootstrap-icons-X6UQXWUS.woff2") format("woff2"),url("./media/bootstrap-icons-OCU552PF.woff") format("woff")}.bi:before,[class^=bi-]:before,[class*=" bi-"]:before{display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-weight:400!important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bi-123:before{content:"\\f67f"}.bi-alarm-fill:before{content:"\\f101"}.bi-alarm:before{content:"\\f102"}.bi-align-bottom:before{content:"\\f103"}.bi-align-center:before{content:"\\f104"}.bi-align-end:before{content:"\\f105"}.bi-align-middle:before{content:"\\f106"}.bi-align-start:before{content:"\\f107"}.bi-align-top:before{content:"\\f108"}.bi-alt:before{content:"\\f109"}.bi-app-indicator:before{content:"\\f10a"}.bi-app:before{content:"\\f10b"}.bi-archive-fill:before{content:"\\f10c"}.bi-archive:before{content:"\\f10d"}.bi-arrow-90deg-down:before{content:"\\f10e"}.bi-arrow-90deg-left:before{content:"\\f10f"}.bi-arrow-90deg-right:before{content:"\\f110"}.bi-arrow-90deg-up:before{content:"\\f111"}.bi-arrow-bar-down:before{content:"\\f112"}.bi-arrow-bar-left:before{content:"\\f113"}.bi-arrow-bar-right:before{content:"\\f114"}.bi-arrow-bar-up:before{content:"\\f115"}.bi-arrow-clockwise:before{content:"\\f116"}.bi-arrow-counterclockwise:before{content:"\\f117"}.bi-arrow-down-circle-fill:before{content:"\\f118"}.bi-arrow-down-circle:before{content:"\\f119"}.bi-arrow-down-left-circle-fill:before{content:"\\f11a"}.bi-arrow-down-left-circle:before{content:"\\f11b"}.bi-arrow-down-left-square-fill:before{content:"\\f11c"}.bi-arrow-down-left-square:before{content:"\\f11d"}.bi-arrow-down-left:before{content:"\\f11e"}.bi-arrow-down-right-circle-fill:before{content:"\\f11f"}.bi-arrow-down-right-circle:before{content:"\\f120"}.bi-arrow-down-right-square-fill:before{content:"\\f121"}.bi-arrow-down-right-square:before{content:"\\f122"}.bi-arrow-down-right:before{content:"\\f123"}.bi-arrow-down-short:before{content:"\\f124"}.bi-arrow-down-square-fill:before{content:"\\f125"}.bi-arrow-down-square:before{content:"\\f126"}.bi-arrow-down-up:before{content:"\\f127"}.bi-arrow-down:before{content:"\\f128"}.bi-arrow-left-circle-fill:before{content:"\\f129"}.bi-arrow-left-circle:before{content:"\\f12a"}.bi-arrow-left-right:before{content:"\\f12b"}.bi-arrow-left-short:before{content:"\\f12c"}.bi-arrow-left-square-fill:before{content:"\\f12d"}.bi-arrow-left-square:before{content:"\\f12e"}.bi-arrow-left:before{content:"\\f12f"}.bi-arrow-repeat:before{content:"\\f130"}.bi-arrow-return-left:before{content:"\\f131"}.bi-arrow-return-right:before{content:"\\f132"}.bi-arrow-right-circle-fill:before{content:"\\f133"}.bi-arrow-right-circle:before{content:"\\f134"}.bi-arrow-right-short:before{content:"\\f135"}.bi-arrow-right-square-fill:before{content:"\\f136"}.bi-arrow-right-square:before{content:"\\f137"}.bi-arrow-right:before{content:"\\f138"}.bi-arrow-up-circle-fill:before{content:"\\f139"}.bi-arrow-up-circle:before{content:"\\f13a"}.bi-arrow-up-left-circle-fill:before{content:"\\f13b"}.bi-arrow-up-left-circle:before{content:"\\f13c"}.bi-arrow-up-left-square-fill:before{content:"\\f13d"}.bi-arrow-up-left-square:before{content:"\\f13e"}.bi-arrow-up-left:before{content:"\\f13f"}.bi-arrow-up-right-circle-fill:before{content:"\\f140"}.bi-arrow-up-right-circle:before{content:"\\f141"}.bi-arrow-up-right-square-fill:before{content:"\\f142"}.bi-arrow-up-right-square:before{content:"\\f143"}.bi-arrow-up-right:before{content:"\\f144"}.bi-arrow-up-short:before{content:"\\f145"}.bi-arrow-up-square-fill:before{content:"\\f146"}.bi-arrow-up-square:before{content:"\\f147"}.bi-arrow-up:before{content:"\\f148"}.bi-arrows-angle-contract:before{content:"\\f149"}.bi-arrows-angle-expand:before{content:"\\f14a"}.bi-arrows-collapse:before{content:"\\f14b"}.bi-arrows-expand:before{content:"\\f14c"}.bi-arrows-fullscreen:before{content:"\\f14d"}.bi-arrows-move:before{content:"\\f14e"}.bi-aspect-ratio-fill:before{content:"\\f14f"}.bi-aspect-ratio:before{content:"\\f150"}.bi-asterisk:before{content:"\\f151"}.bi-at:before{content:"\\f152"}.bi-award-fill:before{content:"\\f153"}.bi-award:before{content:"\\f154"}.bi-back:before{content:"\\f155"}.bi-backspace-fill:before{content:"\\f156"}.bi-backspace-reverse-fill:before{content:"\\f157"}.bi-backspace-reverse:before{content:"\\f158"}.bi-backspace:before{content:"\\f159"}.bi-badge-3d-fill:before{content:"\\f15a"}.bi-badge-3d:before{content:"\\f15b"}.bi-badge-4k-fill:before{content:"\\f15c"}.bi-badge-4k:before{content:"\\f15d"}.bi-badge-8k-fill:before{content:"\\f15e"}.bi-badge-8k:before{content:"\\f15f"}.bi-badge-ad-fill:before{content:"\\f160"}.bi-badge-ad:before{content:"\\f161"}.bi-badge-ar-fill:before{content:"\\f162"}.bi-badge-ar:before{content:"\\f163"}.bi-badge-cc-fill:before{content:"\\f164"}.bi-badge-cc:before{content:"\\f165"}.bi-badge-hd-fill:before{content:"\\f166"}.bi-badge-hd:before{content:"\\f167"}.bi-badge-tm-fill:before{content:"\\f168"}.bi-badge-tm:before{content:"\\f169"}.bi-badge-vo-fill:before{content:"\\f16a"}.bi-badge-vo:before{content:"\\f16b"}.bi-badge-vr-fill:before{content:"\\f16c"}.bi-badge-vr:before{content:"\\f16d"}.bi-badge-wc-fill:before{content:"\\f16e"}.bi-badge-wc:before{content:"\\f16f"}.bi-bag-check-fill:before{content:"\\f170"}.bi-bag-check:before{content:"\\f171"}.bi-bag-dash-fill:before{content:"\\f172"}.bi-bag-dash:before{content:"\\f173"}.bi-bag-fill:before{content:"\\f174"}.bi-bag-plus-fill:before{content:"\\f175"}.bi-bag-plus:before{content:"\\f176"}.bi-bag-x-fill:before{content:"\\f177"}.bi-bag-x:before{content:"\\f178"}.bi-bag:before{content:"\\f179"}.bi-bar-chart-fill:before{content:"\\f17a"}.bi-bar-chart-line-fill:before{content:"\\f17b"}.bi-bar-chart-line:before{content:"\\f17c"}.bi-bar-chart-steps:before{content:"\\f17d"}.bi-bar-chart:before{content:"\\f17e"}.bi-basket-fill:before{content:"\\f17f"}.bi-basket:before{content:"\\f180"}.bi-basket2-fill:before{content:"\\f181"}.bi-basket2:before{content:"\\f182"}.bi-basket3-fill:before{content:"\\f183"}.bi-basket3:before{content:"\\f184"}.bi-battery-charging:before{content:"\\f185"}.bi-battery-full:before{content:"\\f186"}.bi-battery-half:before{content:"\\f187"}.bi-battery:before{content:"\\f188"}.bi-bell-fill:before{content:"\\f189"}.bi-bell:before{content:"\\f18a"}.bi-bezier:before{content:"\\f18b"}.bi-bezier2:before{content:"\\f18c"}.bi-bicycle:before{content:"\\f18d"}.bi-binoculars-fill:before{content:"\\f18e"}.bi-binoculars:before{content:"\\f18f"}.bi-blockquote-left:before{content:"\\f190"}.bi-blockquote-right:before{content:"\\f191"}.bi-book-fill:before{content:"\\f192"}.bi-book-half:before{content:"\\f193"}.bi-book:before{content:"\\f194"}.bi-bookmark-check-fill:before{content:"\\f195"}.bi-bookmark-check:before{content:"\\f196"}.bi-bookmark-dash-fill:before{content:"\\f197"}.bi-bookmark-dash:before{content:"\\f198"}.bi-bookmark-fill:before{content:"\\f199"}.bi-bookmark-heart-fill:before{content:"\\f19a"}.bi-bookmark-heart:before{content:"\\f19b"}.bi-bookmark-plus-fill:before{content:"\\f19c"}.bi-bookmark-plus:before{content:"\\f19d"}.bi-bookmark-star-fill:before{content:"\\f19e"}.bi-bookmark-star:before{content:"\\f19f"}.bi-bookmark-x-fill:before{content:"\\f1a0"}.bi-bookmark-x:before{content:"\\f1a1"}.bi-bookmark:before{content:"\\f1a2"}.bi-bookmarks-fill:before{content:"\\f1a3"}.bi-bookmarks:before{content:"\\f1a4"}.bi-bookshelf:before{content:"\\f1a5"}.bi-bootstrap-fill:before{content:"\\f1a6"}.bi-bootstrap-reboot:before{content:"\\f1a7"}.bi-bootstrap:before{content:"\\f1a8"}.bi-border-all:before{content:"\\f1a9"}.bi-border-bottom:before{content:"\\f1aa"}.bi-border-center:before{content:"\\f1ab"}.bi-border-inner:before{content:"\\f1ac"}.bi-border-left:before{content:"\\f1ad"}.bi-border-middle:before{content:"\\f1ae"}.bi-border-outer:before{content:"\\f1af"}.bi-border-right:before{content:"\\f1b0"}.bi-border-style:before{content:"\\f1b1"}.bi-border-top:before{content:"\\f1b2"}.bi-border-width:before{content:"\\f1b3"}.bi-border:before{content:"\\f1b4"}.bi-bounding-box-circles:before{content:"\\f1b5"}.bi-bounding-box:before{content:"\\f1b6"}.bi-box-arrow-down-left:before{content:"\\f1b7"}.bi-box-arrow-down-right:before{content:"\\f1b8"}.bi-box-arrow-down:before{content:"\\f1b9"}.bi-box-arrow-in-down-left:before{content:"\\f1ba"}.bi-box-arrow-in-down-right:before{content:"\\f1bb"}.bi-box-arrow-in-down:before{content:"\\f1bc"}.bi-box-arrow-in-left:before{content:"\\f1bd"}.bi-box-arrow-in-right:before{content:"\\f1be"}.bi-box-arrow-in-up-left:before{content:"\\f1bf"}.bi-box-arrow-in-up-right:before{content:"\\f1c0"}.bi-box-arrow-in-up:before{content:"\\f1c1"}.bi-box-arrow-left:before{content:"\\f1c2"}.bi-box-arrow-right:before{content:"\\f1c3"}.bi-box-arrow-up-left:before{content:"\\f1c4"}.bi-box-arrow-up-right:before{content:"\\f1c5"}.bi-box-arrow-up:before{content:"\\f1c6"}.bi-box-seam:before{content:"\\f1c7"}.bi-box:before{content:"\\f1c8"}.bi-braces:before{content:"\\f1c9"}.bi-bricks:before{content:"\\f1ca"}.bi-briefcase-fill:before{content:"\\f1cb"}.bi-briefcase:before{content:"\\f1cc"}.bi-brightness-alt-high-fill:before{content:"\\f1cd"}.bi-brightness-alt-high:before{content:"\\f1ce"}.bi-brightness-alt-low-fill:before{content:"\\f1cf"}.bi-brightness-alt-low:before{content:"\\f1d0"}.bi-brightness-high-fill:before{content:"\\f1d1"}.bi-brightness-high:before{content:"\\f1d2"}.bi-brightness-low-fill:before{content:"\\f1d3"}.bi-brightness-low:before{content:"\\f1d4"}.bi-broadcast-pin:before{content:"\\f1d5"}.bi-broadcast:before{content:"\\f1d6"}.bi-brush-fill:before{content:"\\f1d7"}.bi-brush:before{content:"\\f1d8"}.bi-bucket-fill:before{content:"\\f1d9"}.bi-bucket:before{content:"\\f1da"}.bi-bug-fill:before{content:"\\f1db"}.bi-bug:before{content:"\\f1dc"}.bi-building:before{content:"\\f1dd"}.bi-bullseye:before{content:"\\f1de"}.bi-calculator-fill:before{content:"\\f1df"}.bi-calculator:before{content:"\\f1e0"}.bi-calendar-check-fill:before{content:"\\f1e1"}.bi-calendar-check:before{content:"\\f1e2"}.bi-calendar-date-fill:before{content:"\\f1e3"}.bi-calendar-date:before{content:"\\f1e4"}.bi-calendar-day-fill:before{content:"\\f1e5"}.bi-calendar-day:before{content:"\\f1e6"}.bi-calendar-event-fill:before{content:"\\f1e7"}.bi-calendar-event:before{content:"\\f1e8"}.bi-calendar-fill:before{content:"\\f1e9"}.bi-calendar-minus-fill:before{content:"\\f1ea"}.bi-calendar-minus:before{content:"\\f1eb"}.bi-calendar-month-fill:before{content:"\\f1ec"}.bi-calendar-month:before{content:"\\f1ed"}.bi-calendar-plus-fill:before{content:"\\f1ee"}.bi-calendar-plus:before{content:"\\f1ef"}.bi-calendar-range-fill:before{content:"\\f1f0"}.bi-calendar-range:before{content:"\\f1f1"}.bi-calendar-week-fill:before{content:"\\f1f2"}.bi-calendar-week:before{content:"\\f1f3"}.bi-calendar-x-fill:before{content:"\\f1f4"}.bi-calendar-x:before{content:"\\f1f5"}.bi-calendar:before{content:"\\f1f6"}.bi-calendar2-check-fill:before{content:"\\f1f7"}.bi-calendar2-check:before{content:"\\f1f8"}.bi-calendar2-date-fill:before{content:"\\f1f9"}.bi-calendar2-date:before{content:"\\f1fa"}.bi-calendar2-day-fill:before{content:"\\f1fb"}.bi-calendar2-day:before{content:"\\f1fc"}.bi-calendar2-event-fill:before{content:"\\f1fd"}.bi-calendar2-event:before{content:"\\f1fe"}.bi-calendar2-fill:before{content:"\\f1ff"}.bi-calendar2-minus-fill:before{content:"\\f200"}.bi-calendar2-minus:before{content:"\\f201"}.bi-calendar2-month-fill:before{content:"\\f202"}.bi-calendar2-month:before{content:"\\f203"}.bi-calendar2-plus-fill:before{content:"\\f204"}.bi-calendar2-plus:before{content:"\\f205"}.bi-calendar2-range-fill:before{content:"\\f206"}.bi-calendar2-range:before{content:"\\f207"}.bi-calendar2-week-fill:before{content:"\\f208"}.bi-calendar2-week:before{content:"\\f209"}.bi-calendar2-x-fill:before{content:"\\f20a"}.bi-calendar2-x:before{content:"\\f20b"}.bi-calendar2:before{content:"\\f20c"}.bi-calendar3-event-fill:before{content:"\\f20d"}.bi-calendar3-event:before{content:"\\f20e"}.bi-calendar3-fill:before{content:"\\f20f"}.bi-calendar3-range-fill:before{content:"\\f210"}.bi-calendar3-range:before{content:"\\f211"}.bi-calendar3-week-fill:before{content:"\\f212"}.bi-calendar3-week:before{content:"\\f213"}.bi-calendar3:before{content:"\\f214"}.bi-calendar4-event:before{content:"\\f215"}.bi-calendar4-range:before{content:"\\f216"}.bi-calendar4-week:before{content:"\\f217"}.bi-calendar4:before{content:"\\f218"}.bi-camera-fill:before{content:"\\f219"}.bi-camera-reels-fill:before{content:"\\f21a"}.bi-camera-reels:before{content:"\\f21b"}.bi-camera-video-fill:before{content:"\\f21c"}.bi-camera-video-off-fill:before{content:"\\f21d"}.bi-camera-video-off:before{content:"\\f21e"}.bi-camera-video:before{content:"\\f21f"}.bi-camera:before{content:"\\f220"}.bi-camera2:before{content:"\\f221"}.bi-capslock-fill:before{content:"\\f222"}.bi-capslock:before{content:"\\f223"}.bi-card-checklist:before{content:"\\f224"}.bi-card-heading:before{content:"\\f225"}.bi-card-image:before{content:"\\f226"}.bi-card-list:before{content:"\\f227"}.bi-card-text:before{content:"\\f228"}.bi-caret-down-fill:before{content:"\\f229"}.bi-caret-down-square-fill:before{content:"\\f22a"}.bi-caret-down-square:before{content:"\\f22b"}.bi-caret-down:before{content:"\\f22c"}.bi-caret-left-fill:before{content:"\\f22d"}.bi-caret-left-square-fill:before{content:"\\f22e"}.bi-caret-left-square:before{content:"\\f22f"}.bi-caret-left:before{content:"\\f230"}.bi-caret-right-fill:before{content:"\\f231"}.bi-caret-right-square-fill:before{content:"\\f232"}.bi-caret-right-square:before{content:"\\f233"}.bi-caret-right:before{content:"\\f234"}.bi-caret-up-fill:before{content:"\\f235"}.bi-caret-up-square-fill:before{content:"\\f236"}.bi-caret-up-square:before{content:"\\f237"}.bi-caret-up:before{content:"\\f238"}.bi-cart-check-fill:before{content:"\\f239"}.bi-cart-check:before{content:"\\f23a"}.bi-cart-dash-fill:before{content:"\\f23b"}.bi-cart-dash:before{content:"\\f23c"}.bi-cart-fill:before{content:"\\f23d"}.bi-cart-plus-fill:before{content:"\\f23e"}.bi-cart-plus:before{content:"\\f23f"}.bi-cart-x-fill:before{content:"\\f240"}.bi-cart-x:before{content:"\\f241"}.bi-cart:before{content:"\\f242"}.bi-cart2:before{content:"\\f243"}.bi-cart3:before{content:"\\f244"}.bi-cart4:before{content:"\\f245"}.bi-cash-stack:before{content:"\\f246"}.bi-cash:before{content:"\\f247"}.bi-cast:before{content:"\\f248"}.bi-chat-dots-fill:before{content:"\\f249"}.bi-chat-dots:before{content:"\\f24a"}.bi-chat-fill:before{content:"\\f24b"}.bi-chat-left-dots-fill:before{content:"\\f24c"}.bi-chat-left-dots:before{content:"\\f24d"}.bi-chat-left-fill:before{content:"\\f24e"}.bi-chat-left-quote-fill:before{content:"\\f24f"}.bi-chat-left-quote:before{content:"\\f250"}.bi-chat-left-text-fill:before{content:"\\f251"}.bi-chat-left-text:before{content:"\\f252"}.bi-chat-left:before{content:"\\f253"}.bi-chat-quote-fill:before{content:"\\f254"}.bi-chat-quote:before{content:"\\f255"}.bi-chat-right-dots-fill:before{content:"\\f256"}.bi-chat-right-dots:before{content:"\\f257"}.bi-chat-right-fill:before{content:"\\f258"}.bi-chat-right-quote-fill:before{content:"\\f259"}.bi-chat-right-quote:before{content:"\\f25a"}.bi-chat-right-text-fill:before{content:"\\f25b"}.bi-chat-right-text:before{content:"\\f25c"}.bi-chat-right:before{content:"\\f25d"}.bi-chat-square-dots-fill:before{content:"\\f25e"}.bi-chat-square-dots:before{content:"\\f25f"}.bi-chat-square-fill:before{content:"\\f260"}.bi-chat-square-quote-fill:before{content:"\\f261"}.bi-chat-square-quote:before{content:"\\f262"}.bi-chat-square-text-fill:before{content:"\\f263"}.bi-chat-square-text:before{content:"\\f264"}.bi-chat-square:before{content:"\\f265"}.bi-chat-text-fill:before{content:"\\f266"}.bi-chat-text:before{content:"\\f267"}.bi-chat:before{content:"\\f268"}.bi-check-all:before{content:"\\f269"}.bi-check-circle-fill:before{content:"\\f26a"}.bi-check-circle:before{content:"\\f26b"}.bi-check-square-fill:before{content:"\\f26c"}.bi-check-square:before{content:"\\f26d"}.bi-check:before{content:"\\f26e"}.bi-check2-all:before{content:"\\f26f"}.bi-check2-circle:before{content:"\\f270"}.bi-check2-square:before{content:"\\f271"}.bi-check2:before{content:"\\f272"}.bi-chevron-bar-contract:before{content:"\\f273"}.bi-chevron-bar-down:before{content:"\\f274"}.bi-chevron-bar-expand:before{content:"\\f275"}.bi-chevron-bar-left:before{content:"\\f276"}.bi-chevron-bar-right:before{content:"\\f277"}.bi-chevron-bar-up:before{content:"\\f278"}.bi-chevron-compact-down:before{content:"\\f279"}.bi-chevron-compact-left:before{content:"\\f27a"}.bi-chevron-compact-right:before{content:"\\f27b"}.bi-chevron-compact-up:before{content:"\\f27c"}.bi-chevron-contract:before{content:"\\f27d"}.bi-chevron-double-down:before{content:"\\f27e"}.bi-chevron-double-left:before{content:"\\f27f"}.bi-chevron-double-right:before{content:"\\f280"}.bi-chevron-double-up:before{content:"\\f281"}.bi-chevron-down:before{content:"\\f282"}.bi-chevron-expand:before{content:"\\f283"}.bi-chevron-left:before{content:"\\f284"}.bi-chevron-right:before{content:"\\f285"}.bi-chevron-up:before{content:"\\f286"}.bi-circle-fill:before{content:"\\f287"}.bi-circle-half:before{content:"\\f288"}.bi-circle-square:before{content:"\\f289"}.bi-circle:before{content:"\\f28a"}.bi-clipboard-check:before{content:"\\f28b"}.bi-clipboard-data:before{content:"\\f28c"}.bi-clipboard-minus:before{content:"\\f28d"}.bi-clipboard-plus:before{content:"\\f28e"}.bi-clipboard-x:before{content:"\\f28f"}.bi-clipboard:before{content:"\\f290"}.bi-clock-fill:before{content:"\\f291"}.bi-clock-history:before{content:"\\f292"}.bi-clock:before{content:"\\f293"}.bi-cloud-arrow-down-fill:before{content:"\\f294"}.bi-cloud-arrow-down:before{content:"\\f295"}.bi-cloud-arrow-up-fill:before{content:"\\f296"}.bi-cloud-arrow-up:before{content:"\\f297"}.bi-cloud-check-fill:before{content:"\\f298"}.bi-cloud-check:before{content:"\\f299"}.bi-cloud-download-fill:before{content:"\\f29a"}.bi-cloud-download:before{content:"\\f29b"}.bi-cloud-drizzle-fill:before{content:"\\f29c"}.bi-cloud-drizzle:before{content:"\\f29d"}.bi-cloud-fill:before{content:"\\f29e"}.bi-cloud-fog-fill:before{content:"\\f29f"}.bi-cloud-fog:before{content:"\\f2a0"}.bi-cloud-fog2-fill:before{content:"\\f2a1"}.bi-cloud-fog2:before{content:"\\f2a2"}.bi-cloud-hail-fill:before{content:"\\f2a3"}.bi-cloud-hail:before{content:"\\f2a4"}.bi-cloud-haze-fill:before{content:"\\f2a6"}.bi-cloud-haze:before{content:"\\f2a7"}.bi-cloud-haze2-fill:before{content:"\\f2a8"}.bi-cloud-lightning-fill:before{content:"\\f2a9"}.bi-cloud-lightning-rain-fill:before{content:"\\f2aa"}.bi-cloud-lightning-rain:before{content:"\\f2ab"}.bi-cloud-lightning:before{content:"\\f2ac"}.bi-cloud-minus-fill:before{content:"\\f2ad"}.bi-cloud-minus:before{content:"\\f2ae"}.bi-cloud-moon-fill:before{content:"\\f2af"}.bi-cloud-moon:before{content:"\\f2b0"}.bi-cloud-plus-fill:before{content:"\\f2b1"}.bi-cloud-plus:before{content:"\\f2b2"}.bi-cloud-rain-fill:before{content:"\\f2b3"}.bi-cloud-rain-heavy-fill:before{content:"\\f2b4"}.bi-cloud-rain-heavy:before{content:"\\f2b5"}.bi-cloud-rain:before{content:"\\f2b6"}.bi-cloud-slash-fill:before{content:"\\f2b7"}.bi-cloud-slash:before{content:"\\f2b8"}.bi-cloud-sleet-fill:before{content:"\\f2b9"}.bi-cloud-sleet:before{content:"\\f2ba"}.bi-cloud-snow-fill:before{content:"\\f2bb"}.bi-cloud-snow:before{content:"\\f2bc"}.bi-cloud-sun-fill:before{content:"\\f2bd"}.bi-cloud-sun:before{content:"\\f2be"}.bi-cloud-upload-fill:before{content:"\\f2bf"}.bi-cloud-upload:before{content:"\\f2c0"}.bi-cloud:before{content:"\\f2c1"}.bi-clouds-fill:before{content:"\\f2c2"}.bi-clouds:before{content:"\\f2c3"}.bi-cloudy-fill:before{content:"\\f2c4"}.bi-cloudy:before{content:"\\f2c5"}.bi-code-slash:before{content:"\\f2c6"}.bi-code-square:before{content:"\\f2c7"}.bi-code:before{content:"\\f2c8"}.bi-collection-fill:before{content:"\\f2c9"}.bi-collection-play-fill:before{content:"\\f2ca"}.bi-collection-play:before{content:"\\f2cb"}.bi-collection:before{content:"\\f2cc"}.bi-columns-gap:before{content:"\\f2cd"}.bi-columns:before{content:"\\f2ce"}.bi-command:before{content:"\\f2cf"}.bi-compass-fill:before{content:"\\f2d0"}.bi-compass:before{content:"\\f2d1"}.bi-cone-striped:before{content:"\\f2d2"}.bi-cone:before{content:"\\f2d3"}.bi-controller:before{content:"\\f2d4"}.bi-cpu-fill:before{content:"\\f2d5"}.bi-cpu:before{content:"\\f2d6"}.bi-credit-card-2-back-fill:before{content:"\\f2d7"}.bi-credit-card-2-back:before{content:"\\f2d8"}.bi-credit-card-2-front-fill:before{content:"\\f2d9"}.bi-credit-card-2-front:before{content:"\\f2da"}.bi-credit-card-fill:before{content:"\\f2db"}.bi-credit-card:before{content:"\\f2dc"}.bi-crop:before{content:"\\f2dd"}.bi-cup-fill:before{content:"\\f2de"}.bi-cup-straw:before{content:"\\f2df"}.bi-cup:before{content:"\\f2e0"}.bi-cursor-fill:before{content:"\\f2e1"}.bi-cursor-text:before{content:"\\f2e2"}.bi-cursor:before{content:"\\f2e3"}.bi-dash-circle-dotted:before{content:"\\f2e4"}.bi-dash-circle-fill:before{content:"\\f2e5"}.bi-dash-circle:before{content:"\\f2e6"}.bi-dash-square-dotted:before{content:"\\f2e7"}.bi-dash-square-fill:before{content:"\\f2e8"}.bi-dash-square:before{content:"\\f2e9"}.bi-dash:before{content:"\\f2ea"}.bi-diagram-2-fill:before{content:"\\f2eb"}.bi-diagram-2:before{content:"\\f2ec"}.bi-diagram-3-fill:before{content:"\\f2ed"}.bi-diagram-3:before{content:"\\f2ee"}.bi-diamond-fill:before{content:"\\f2ef"}.bi-diamond-half:before{content:"\\f2f0"}.bi-diamond:before{content:"\\f2f1"}.bi-dice-1-fill:before{content:"\\f2f2"}.bi-dice-1:before{content:"\\f2f3"}.bi-dice-2-fill:before{content:"\\f2f4"}.bi-dice-2:before{content:"\\f2f5"}.bi-dice-3-fill:before{content:"\\f2f6"}.bi-dice-3:before{content:"\\f2f7"}.bi-dice-4-fill:before{content:"\\f2f8"}.bi-dice-4:before{content:"\\f2f9"}.bi-dice-5-fill:before{content:"\\f2fa"}.bi-dice-5:before{content:"\\f2fb"}.bi-dice-6-fill:before{content:"\\f2fc"}.bi-dice-6:before{content:"\\f2fd"}.bi-disc-fill:before{content:"\\f2fe"}.bi-disc:before{content:"\\f2ff"}.bi-discord:before{content:"\\f300"}.bi-display-fill:before{content:"\\f301"}.bi-display:before{content:"\\f302"}.bi-distribute-horizontal:before{content:"\\f303"}.bi-distribute-vertical:before{content:"\\f304"}.bi-door-closed-fill:before{content:"\\f305"}.bi-door-closed:before{content:"\\f306"}.bi-door-open-fill:before{content:"\\f307"}.bi-door-open:before{content:"\\f308"}.bi-dot:before{content:"\\f309"}.bi-download:before{content:"\\f30a"}.bi-droplet-fill:before{content:"\\f30b"}.bi-droplet-half:before{content:"\\f30c"}.bi-droplet:before{content:"\\f30d"}.bi-earbuds:before{content:"\\f30e"}.bi-easel-fill:before{content:"\\f30f"}.bi-easel:before{content:"\\f310"}.bi-egg-fill:before{content:"\\f311"}.bi-egg-fried:before{content:"\\f312"}.bi-egg:before{content:"\\f313"}.bi-eject-fill:before{content:"\\f314"}.bi-eject:before{content:"\\f315"}.bi-emoji-angry-fill:before{content:"\\f316"}.bi-emoji-angry:before{content:"\\f317"}.bi-emoji-dizzy-fill:before{content:"\\f318"}.bi-emoji-dizzy:before{content:"\\f319"}.bi-emoji-expressionless-fill:before{content:"\\f31a"}.bi-emoji-expressionless:before{content:"\\f31b"}.bi-emoji-frown-fill:before{content:"\\f31c"}.bi-emoji-frown:before{content:"\\f31d"}.bi-emoji-heart-eyes-fill:before{content:"\\f31e"}.bi-emoji-heart-eyes:before{content:"\\f31f"}.bi-emoji-laughing-fill:before{content:"\\f320"}.bi-emoji-laughing:before{content:"\\f321"}.bi-emoji-neutral-fill:before{content:"\\f322"}.bi-emoji-neutral:before{content:"\\f323"}.bi-emoji-smile-fill:before{content:"\\f324"}.bi-emoji-smile-upside-down-fill:before{content:"\\f325"}.bi-emoji-smile-upside-down:before{content:"\\f326"}.bi-emoji-smile:before{content:"\\f327"}.bi-emoji-sunglasses-fill:before{content:"\\f328"}.bi-emoji-sunglasses:before{content:"\\f329"}.bi-emoji-wink-fill:before{content:"\\f32a"}.bi-emoji-wink:before{content:"\\f32b"}.bi-envelope-fill:before{content:"\\f32c"}.bi-envelope-open-fill:before{content:"\\f32d"}.bi-envelope-open:before{content:"\\f32e"}.bi-envelope:before{content:"\\f32f"}.bi-eraser-fill:before{content:"\\f330"}.bi-eraser:before{content:"\\f331"}.bi-exclamation-circle-fill:before{content:"\\f332"}.bi-exclamation-circle:before{content:"\\f333"}.bi-exclamation-diamond-fill:before{content:"\\f334"}.bi-exclamation-diamond:before{content:"\\f335"}.bi-exclamation-octagon-fill:before{content:"\\f336"}.bi-exclamation-octagon:before{content:"\\f337"}.bi-exclamation-square-fill:before{content:"\\f338"}.bi-exclamation-square:before{content:"\\f339"}.bi-exclamation-triangle-fill:before{content:"\\f33a"}.bi-exclamation-triangle:before{content:"\\f33b"}.bi-exclamation:before{content:"\\f33c"}.bi-exclude:before{content:"\\f33d"}.bi-eye-fill:before{content:"\\f33e"}.bi-eye-slash-fill:before{content:"\\f33f"}.bi-eye-slash:before{content:"\\f340"}.bi-eye:before{content:"\\f341"}.bi-eyedropper:before{content:"\\f342"}.bi-eyeglasses:before{content:"\\f343"}.bi-facebook:before{content:"\\f344"}.bi-file-arrow-down-fill:before{content:"\\f345"}.bi-file-arrow-down:before{content:"\\f346"}.bi-file-arrow-up-fill:before{content:"\\f347"}.bi-file-arrow-up:before{content:"\\f348"}.bi-file-bar-graph-fill:before{content:"\\f349"}.bi-file-bar-graph:before{content:"\\f34a"}.bi-file-binary-fill:before{content:"\\f34b"}.bi-file-binary:before{content:"\\f34c"}.bi-file-break-fill:before{content:"\\f34d"}.bi-file-break:before{content:"\\f34e"}.bi-file-check-fill:before{content:"\\f34f"}.bi-file-check:before{content:"\\f350"}.bi-file-code-fill:before{content:"\\f351"}.bi-file-code:before{content:"\\f352"}.bi-file-diff-fill:before{content:"\\f353"}.bi-file-diff:before{content:"\\f354"}.bi-file-earmark-arrow-down-fill:before{content:"\\f355"}.bi-file-earmark-arrow-down:before{content:"\\f356"}.bi-file-earmark-arrow-up-fill:before{content:"\\f357"}.bi-file-earmark-arrow-up:before{content:"\\f358"}.bi-file-earmark-bar-graph-fill:before{content:"\\f359"}.bi-file-earmark-bar-graph:before{content:"\\f35a"}.bi-file-earmark-binary-fill:before{content:"\\f35b"}.bi-file-earmark-binary:before{content:"\\f35c"}.bi-file-earmark-break-fill:before{content:"\\f35d"}.bi-file-earmark-break:before{content:"\\f35e"}.bi-file-earmark-check-fill:before{content:"\\f35f"}.bi-file-earmark-check:before{content:"\\f360"}.bi-file-earmark-code-fill:before{content:"\\f361"}.bi-file-earmark-code:before{content:"\\f362"}.bi-file-earmark-diff-fill:before{content:"\\f363"}.bi-file-earmark-diff:before{content:"\\f364"}.bi-file-earmark-easel-fill:before{content:"\\f365"}.bi-file-earmark-easel:before{content:"\\f366"}.bi-file-earmark-excel-fill:before{content:"\\f367"}.bi-file-earmark-excel:before{content:"\\f368"}.bi-file-earmark-fill:before{content:"\\f369"}.bi-file-earmark-font-fill:before{content:"\\f36a"}.bi-file-earmark-font:before{content:"\\f36b"}.bi-file-earmark-image-fill:before{content:"\\f36c"}.bi-file-earmark-image:before{content:"\\f36d"}.bi-file-earmark-lock-fill:before{content:"\\f36e"}.bi-file-earmark-lock:before{content:"\\f36f"}.bi-file-earmark-lock2-fill:before{content:"\\f370"}.bi-file-earmark-lock2:before{content:"\\f371"}.bi-file-earmark-medical-fill:before{content:"\\f372"}.bi-file-earmark-medical:before{content:"\\f373"}.bi-file-earmark-minus-fill:before{content:"\\f374"}.bi-file-earmark-minus:before{content:"\\f375"}.bi-file-earmark-music-fill:before{content:"\\f376"}.bi-file-earmark-music:before{content:"\\f377"}.bi-file-earmark-person-fill:before{content:"\\f378"}.bi-file-earmark-person:before{content:"\\f379"}.bi-file-earmark-play-fill:before{content:"\\f37a"}.bi-file-earmark-play:before{content:"\\f37b"}.bi-file-earmark-plus-fill:before{content:"\\f37c"}.bi-file-earmark-plus:before{content:"\\f37d"}.bi-file-earmark-post-fill:before{content:"\\f37e"}.bi-file-earmark-post:before{content:"\\f37f"}.bi-file-earmark-ppt-fill:before{content:"\\f380"}.bi-file-earmark-ppt:before{content:"\\f381"}.bi-file-earmark-richtext-fill:before{content:"\\f382"}.bi-file-earmark-richtext:before{content:"\\f383"}.bi-file-earmark-ruled-fill:before{content:"\\f384"}.bi-file-earmark-ruled:before{content:"\\f385"}.bi-file-earmark-slides-fill:before{content:"\\f386"}.bi-file-earmark-slides:before{content:"\\f387"}.bi-file-earmark-spreadsheet-fill:before{content:"\\f388"}.bi-file-earmark-spreadsheet:before{content:"\\f389"}.bi-file-earmark-text-fill:before{content:"\\f38a"}.bi-file-earmark-text:before{content:"\\f38b"}.bi-file-earmark-word-fill:before{content:"\\f38c"}.bi-file-earmark-word:before{content:"\\f38d"}.bi-file-earmark-x-fill:before{content:"\\f38e"}.bi-file-earmark-x:before{content:"\\f38f"}.bi-file-earmark-zip-fill:before{content:"\\f390"}.bi-file-earmark-zip:before{content:"\\f391"}.bi-file-earmark:before{content:"\\f392"}.bi-file-easel-fill:before{content:"\\f393"}.bi-file-easel:before{content:"\\f394"}.bi-file-excel-fill:before{content:"\\f395"}.bi-file-excel:before{content:"\\f396"}.bi-file-fill:before{content:"\\f397"}.bi-file-font-fill:before{content:"\\f398"}.bi-file-font:before{content:"\\f399"}.bi-file-image-fill:before{content:"\\f39a"}.bi-file-image:before{content:"\\f39b"}.bi-file-lock-fill:before{content:"\\f39c"}.bi-file-lock:before{content:"\\f39d"}.bi-file-lock2-fill:before{content:"\\f39e"}.bi-file-lock2:before{content:"\\f39f"}.bi-file-medical-fill:before{content:"\\f3a0"}.bi-file-medical:before{content:"\\f3a1"}.bi-file-minus-fill:before{content:"\\f3a2"}.bi-file-minus:before{content:"\\f3a3"}.bi-file-music-fill:before{content:"\\f3a4"}.bi-file-music:before{content:"\\f3a5"}.bi-file-person-fill:before{content:"\\f3a6"}.bi-file-person:before{content:"\\f3a7"}.bi-file-play-fill:before{content:"\\f3a8"}.bi-file-play:before{content:"\\f3a9"}.bi-file-plus-fill:before{content:"\\f3aa"}.bi-file-plus:before{content:"\\f3ab"}.bi-file-post-fill:before{content:"\\f3ac"}.bi-file-post:before{content:"\\f3ad"}.bi-file-ppt-fill:before{content:"\\f3ae"}.bi-file-ppt:before{content:"\\f3af"}.bi-file-richtext-fill:before{content:"\\f3b0"}.bi-file-richtext:before{content:"\\f3b1"}.bi-file-ruled-fill:before{content:"\\f3b2"}.bi-file-ruled:before{content:"\\f3b3"}.bi-file-slides-fill:before{content:"\\f3b4"}.bi-file-slides:before{content:"\\f3b5"}.bi-file-spreadsheet-fill:before{content:"\\f3b6"}.bi-file-spreadsheet:before{content:"\\f3b7"}.bi-file-text-fill:before{content:"\\f3b8"}.bi-file-text:before{content:"\\f3b9"}.bi-file-word-fill:before{content:"\\f3ba"}.bi-file-word:before{content:"\\f3bb"}.bi-file-x-fill:before{content:"\\f3bc"}.bi-file-x:before{content:"\\f3bd"}.bi-file-zip-fill:before{content:"\\f3be"}.bi-file-zip:before{content:"\\f3bf"}.bi-file:before{content:"\\f3c0"}.bi-files-alt:before{content:"\\f3c1"}.bi-files:before{content:"\\f3c2"}.bi-film:before{content:"\\f3c3"}.bi-filter-circle-fill:before{content:"\\f3c4"}.bi-filter-circle:before{content:"\\f3c5"}.bi-filter-left:before{content:"\\f3c6"}.bi-filter-right:before{content:"\\f3c7"}.bi-filter-square-fill:before{content:"\\f3c8"}.bi-filter-square:before{content:"\\f3c9"}.bi-filter:before{content:"\\f3ca"}.bi-flag-fill:before{content:"\\f3cb"}.bi-flag:before{content:"\\f3cc"}.bi-flower1:before{content:"\\f3cd"}.bi-flower2:before{content:"\\f3ce"}.bi-flower3:before{content:"\\f3cf"}.bi-folder-check:before{content:"\\f3d0"}.bi-folder-fill:before{content:"\\f3d1"}.bi-folder-minus:before{content:"\\f3d2"}.bi-folder-plus:before{content:"\\f3d3"}.bi-folder-symlink-fill:before{content:"\\f3d4"}.bi-folder-symlink:before{content:"\\f3d5"}.bi-folder-x:before{content:"\\f3d6"}.bi-folder:before{content:"\\f3d7"}.bi-folder2-open:before{content:"\\f3d8"}.bi-folder2:before{content:"\\f3d9"}.bi-fonts:before{content:"\\f3da"}.bi-forward-fill:before{content:"\\f3db"}.bi-forward:before{content:"\\f3dc"}.bi-front:before{content:"\\f3dd"}.bi-fullscreen-exit:before{content:"\\f3de"}.bi-fullscreen:before{content:"\\f3df"}.bi-funnel-fill:before{content:"\\f3e0"}.bi-funnel:before{content:"\\f3e1"}.bi-gear-fill:before{content:"\\f3e2"}.bi-gear-wide-connected:before{content:"\\f3e3"}.bi-gear-wide:before{content:"\\f3e4"}.bi-gear:before{content:"\\f3e5"}.bi-gem:before{content:"\\f3e6"}.bi-geo-alt-fill:before{content:"\\f3e7"}.bi-geo-alt:before{content:"\\f3e8"}.bi-geo-fill:before{content:"\\f3e9"}.bi-geo:before{content:"\\f3ea"}.bi-gift-fill:before{content:"\\f3eb"}.bi-gift:before{content:"\\f3ec"}.bi-github:before{content:"\\f3ed"}.bi-globe:before{content:"\\f3ee"}.bi-globe2:before{content:"\\f3ef"}.bi-google:before{content:"\\f3f0"}.bi-graph-down:before{content:"\\f3f1"}.bi-graph-up:before{content:"\\f3f2"}.bi-grid-1x2-fill:before{content:"\\f3f3"}.bi-grid-1x2:before{content:"\\f3f4"}.bi-grid-3x2-gap-fill:before{content:"\\f3f5"}.bi-grid-3x2-gap:before{content:"\\f3f6"}.bi-grid-3x2:before{content:"\\f3f7"}.bi-grid-3x3-gap-fill:before{content:"\\f3f8"}.bi-grid-3x3-gap:before{content:"\\f3f9"}.bi-grid-3x3:before{content:"\\f3fa"}.bi-grid-fill:before{content:"\\f3fb"}.bi-grid:before{content:"\\f3fc"}.bi-grip-horizontal:before{content:"\\f3fd"}.bi-grip-vertical:before{content:"\\f3fe"}.bi-hammer:before{content:"\\f3ff"}.bi-hand-index-fill:before{content:"\\f400"}.bi-hand-index-thumb-fill:before{content:"\\f401"}.bi-hand-index-thumb:before{content:"\\f402"}.bi-hand-index:before{content:"\\f403"}.bi-hand-thumbs-down-fill:before{content:"\\f404"}.bi-hand-thumbs-down:before{content:"\\f405"}.bi-hand-thumbs-up-fill:before{content:"\\f406"}.bi-hand-thumbs-up:before{content:"\\f407"}.bi-handbag-fill:before{content:"\\f408"}.bi-handbag:before{content:"\\f409"}.bi-hash:before{content:"\\f40a"}.bi-hdd-fill:before{content:"\\f40b"}.bi-hdd-network-fill:before{content:"\\f40c"}.bi-hdd-network:before{content:"\\f40d"}.bi-hdd-rack-fill:before{content:"\\f40e"}.bi-hdd-rack:before{content:"\\f40f"}.bi-hdd-stack-fill:before{content:"\\f410"}.bi-hdd-stack:before{content:"\\f411"}.bi-hdd:before{content:"\\f412"}.bi-headphones:before{content:"\\f413"}.bi-headset:before{content:"\\f414"}.bi-heart-fill:before{content:"\\f415"}.bi-heart-half:before{content:"\\f416"}.bi-heart:before{content:"\\f417"}.bi-heptagon-fill:before{content:"\\f418"}.bi-heptagon-half:before{content:"\\f419"}.bi-heptagon:before{content:"\\f41a"}.bi-hexagon-fill:before{content:"\\f41b"}.bi-hexagon-half:before{content:"\\f41c"}.bi-hexagon:before{content:"\\f41d"}.bi-hourglass-bottom:before{content:"\\f41e"}.bi-hourglass-split:before{content:"\\f41f"}.bi-hourglass-top:before{content:"\\f420"}.bi-hourglass:before{content:"\\f421"}.bi-house-door-fill:before{content:"\\f422"}.bi-house-door:before{content:"\\f423"}.bi-house-fill:before{content:"\\f424"}.bi-house:before{content:"\\f425"}.bi-hr:before{content:"\\f426"}.bi-hurricane:before{content:"\\f427"}.bi-image-alt:before{content:"\\f428"}.bi-image-fill:before{content:"\\f429"}.bi-image:before{content:"\\f42a"}.bi-images:before{content:"\\f42b"}.bi-inbox-fill:before{content:"\\f42c"}.bi-inbox:before{content:"\\f42d"}.bi-inboxes-fill:before{content:"\\f42e"}.bi-inboxes:before{content:"\\f42f"}.bi-info-circle-fill:before{content:"\\f430"}.bi-info-circle:before{content:"\\f431"}.bi-info-square-fill:before{content:"\\f432"}.bi-info-square:before{content:"\\f433"}.bi-info:before{content:"\\f434"}.bi-input-cursor-text:before{content:"\\f435"}.bi-input-cursor:before{content:"\\f436"}.bi-instagram:before{content:"\\f437"}.bi-intersect:before{content:"\\f438"}.bi-journal-album:before{content:"\\f439"}.bi-journal-arrow-down:before{content:"\\f43a"}.bi-journal-arrow-up:before{content:"\\f43b"}.bi-journal-bookmark-fill:before{content:"\\f43c"}.bi-journal-bookmark:before{content:"\\f43d"}.bi-journal-check:before{content:"\\f43e"}.bi-journal-code:before{content:"\\f43f"}.bi-journal-medical:before{content:"\\f440"}.bi-journal-minus:before{content:"\\f441"}.bi-journal-plus:before{content:"\\f442"}.bi-journal-richtext:before{content:"\\f443"}.bi-journal-text:before{content:"\\f444"}.bi-journal-x:before{content:"\\f445"}.bi-journal:before{content:"\\f446"}.bi-journals:before{content:"\\f447"}.bi-joystick:before{content:"\\f448"}.bi-justify-left:before{content:"\\f449"}.bi-justify-right:before{content:"\\f44a"}.bi-justify:before{content:"\\f44b"}.bi-kanban-fill:before{content:"\\f44c"}.bi-kanban:before{content:"\\f44d"}.bi-key-fill:before{content:"\\f44e"}.bi-key:before{content:"\\f44f"}.bi-keyboard-fill:before{content:"\\f450"}.bi-keyboard:before{content:"\\f451"}.bi-ladder:before{content:"\\f452"}.bi-lamp-fill:before{content:"\\f453"}.bi-lamp:before{content:"\\f454"}.bi-laptop-fill:before{content:"\\f455"}.bi-laptop:before{content:"\\f456"}.bi-layer-backward:before{content:"\\f457"}.bi-layer-forward:before{content:"\\f458"}.bi-layers-fill:before{content:"\\f459"}.bi-layers-half:before{content:"\\f45a"}.bi-layers:before{content:"\\f45b"}.bi-layout-sidebar-inset-reverse:before{content:"\\f45c"}.bi-layout-sidebar-inset:before{content:"\\f45d"}.bi-layout-sidebar-reverse:before{content:"\\f45e"}.bi-layout-sidebar:before{content:"\\f45f"}.bi-layout-split:before{content:"\\f460"}.bi-layout-text-sidebar-reverse:before{content:"\\f461"}.bi-layout-text-sidebar:before{content:"\\f462"}.bi-layout-text-window-reverse:before{content:"\\f463"}.bi-layout-text-window:before{content:"\\f464"}.bi-layout-three-columns:before{content:"\\f465"}.bi-layout-wtf:before{content:"\\f466"}.bi-life-preserver:before{content:"\\f467"}.bi-lightbulb-fill:before{content:"\\f468"}.bi-lightbulb-off-fill:before{content:"\\f469"}.bi-lightbulb-off:before{content:"\\f46a"}.bi-lightbulb:before{content:"\\f46b"}.bi-lightning-charge-fill:before{content:"\\f46c"}.bi-lightning-charge:before{content:"\\f46d"}.bi-lightning-fill:before{content:"\\f46e"}.bi-lightning:before{content:"\\f46f"}.bi-link-45deg:before{content:"\\f470"}.bi-link:before{content:"\\f471"}.bi-linkedin:before{content:"\\f472"}.bi-list-check:before{content:"\\f473"}.bi-list-nested:before{content:"\\f474"}.bi-list-ol:before{content:"\\f475"}.bi-list-stars:before{content:"\\f476"}.bi-list-task:before{content:"\\f477"}.bi-list-ul:before{content:"\\f478"}.bi-list:before{content:"\\f479"}.bi-lock-fill:before{content:"\\f47a"}.bi-lock:before{content:"\\f47b"}.bi-mailbox:before{content:"\\f47c"}.bi-mailbox2:before{content:"\\f47d"}.bi-map-fill:before{content:"\\f47e"}.bi-map:before{content:"\\f47f"}.bi-markdown-fill:before{content:"\\f480"}.bi-markdown:before{content:"\\f481"}.bi-mask:before{content:"\\f482"}.bi-megaphone-fill:before{content:"\\f483"}.bi-megaphone:before{content:"\\f484"}.bi-menu-app-fill:before{content:"\\f485"}.bi-menu-app:before{content:"\\f486"}.bi-menu-button-fill:before{content:"\\f487"}.bi-menu-button-wide-fill:before{content:"\\f488"}.bi-menu-button-wide:before{content:"\\f489"}.bi-menu-button:before{content:"\\f48a"}.bi-menu-down:before{content:"\\f48b"}.bi-menu-up:before{content:"\\f48c"}.bi-mic-fill:before{content:"\\f48d"}.bi-mic-mute-fill:before{content:"\\f48e"}.bi-mic-mute:before{content:"\\f48f"}.bi-mic:before{content:"\\f490"}.bi-minecart-loaded:before{content:"\\f491"}.bi-minecart:before{content:"\\f492"}.bi-moisture:before{content:"\\f493"}.bi-moon-fill:before{content:"\\f494"}.bi-moon-stars-fill:before{content:"\\f495"}.bi-moon-stars:before{content:"\\f496"}.bi-moon:before{content:"\\f497"}.bi-mouse-fill:before{content:"\\f498"}.bi-mouse:before{content:"\\f499"}.bi-mouse2-fill:before{content:"\\f49a"}.bi-mouse2:before{content:"\\f49b"}.bi-mouse3-fill:before{content:"\\f49c"}.bi-mouse3:before{content:"\\f49d"}.bi-music-note-beamed:before{content:"\\f49e"}.bi-music-note-list:before{content:"\\f49f"}.bi-music-note:before{content:"\\f4a0"}.bi-music-player-fill:before{content:"\\f4a1"}.bi-music-player:before{content:"\\f4a2"}.bi-newspaper:before{content:"\\f4a3"}.bi-node-minus-fill:before{content:"\\f4a4"}.bi-node-minus:before{content:"\\f4a5"}.bi-node-plus-fill:before{content:"\\f4a6"}.bi-node-plus:before{content:"\\f4a7"}.bi-nut-fill:before{content:"\\f4a8"}.bi-nut:before{content:"\\f4a9"}.bi-octagon-fill:before{content:"\\f4aa"}.bi-octagon-half:before{content:"\\f4ab"}.bi-octagon:before{content:"\\f4ac"}.bi-option:before{content:"\\f4ad"}.bi-outlet:before{content:"\\f4ae"}.bi-paint-bucket:before{content:"\\f4af"}.bi-palette-fill:before{content:"\\f4b0"}.bi-palette:before{content:"\\f4b1"}.bi-palette2:before{content:"\\f4b2"}.bi-paperclip:before{content:"\\f4b3"}.bi-paragraph:before{content:"\\f4b4"}.bi-patch-check-fill:before{content:"\\f4b5"}.bi-patch-check:before{content:"\\f4b6"}.bi-patch-exclamation-fill:before{content:"\\f4b7"}.bi-patch-exclamation:before{content:"\\f4b8"}.bi-patch-minus-fill:before{content:"\\f4b9"}.bi-patch-minus:before{content:"\\f4ba"}.bi-patch-plus-fill:before{content:"\\f4bb"}.bi-patch-plus:before{content:"\\f4bc"}.bi-patch-question-fill:before{content:"\\f4bd"}.bi-patch-question:before{content:"\\f4be"}.bi-pause-btn-fill:before{content:"\\f4bf"}.bi-pause-btn:before{content:"\\f4c0"}.bi-pause-circle-fill:before{content:"\\f4c1"}.bi-pause-circle:before{content:"\\f4c2"}.bi-pause-fill:before{content:"\\f4c3"}.bi-pause:before{content:"\\f4c4"}.bi-peace-fill:before{content:"\\f4c5"}.bi-peace:before{content:"\\f4c6"}.bi-pen-fill:before{content:"\\f4c7"}.bi-pen:before{content:"\\f4c8"}.bi-pencil-fill:before{content:"\\f4c9"}.bi-pencil-square:before{content:"\\f4ca"}.bi-pencil:before{content:"\\f4cb"}.bi-pentagon-fill:before{content:"\\f4cc"}.bi-pentagon-half:before{content:"\\f4cd"}.bi-pentagon:before{content:"\\f4ce"}.bi-people-fill:before{content:"\\f4cf"}.bi-people:before{content:"\\f4d0"}.bi-percent:before{content:"\\f4d1"}.bi-person-badge-fill:before{content:"\\f4d2"}.bi-person-badge:before{content:"\\f4d3"}.bi-person-bounding-box:before{content:"\\f4d4"}.bi-person-check-fill:before{content:"\\f4d5"}.bi-person-check:before{content:"\\f4d6"}.bi-person-circle:before{content:"\\f4d7"}.bi-person-dash-fill:before{content:"\\f4d8"}.bi-person-dash:before{content:"\\f4d9"}.bi-person-fill:before{content:"\\f4da"}.bi-person-lines-fill:before{content:"\\f4db"}.bi-person-plus-fill:before{content:"\\f4dc"}.bi-person-plus:before{content:"\\f4dd"}.bi-person-square:before{content:"\\f4de"}.bi-person-x-fill:before{content:"\\f4df"}.bi-person-x:before{content:"\\f4e0"}.bi-person:before{content:"\\f4e1"}.bi-phone-fill:before{content:"\\f4e2"}.bi-phone-landscape-fill:before{content:"\\f4e3"}.bi-phone-landscape:before{content:"\\f4e4"}.bi-phone-vibrate-fill:before{content:"\\f4e5"}.bi-phone-vibrate:before{content:"\\f4e6"}.bi-phone:before{content:"\\f4e7"}.bi-pie-chart-fill:before{content:"\\f4e8"}.bi-pie-chart:before{content:"\\f4e9"}.bi-pin-angle-fill:before{content:"\\f4ea"}.bi-pin-angle:before{content:"\\f4eb"}.bi-pin-fill:before{content:"\\f4ec"}.bi-pin:before{content:"\\f4ed"}.bi-pip-fill:before{content:"\\f4ee"}.bi-pip:before{content:"\\f4ef"}.bi-play-btn-fill:before{content:"\\f4f0"}.bi-play-btn:before{content:"\\f4f1"}.bi-play-circle-fill:before{content:"\\f4f2"}.bi-play-circle:before{content:"\\f4f3"}.bi-play-fill:before{content:"\\f4f4"}.bi-play:before{content:"\\f4f5"}.bi-plug-fill:before{content:"\\f4f6"}.bi-plug:before{content:"\\f4f7"}.bi-plus-circle-dotted:before{content:"\\f4f8"}.bi-plus-circle-fill:before{content:"\\f4f9"}.bi-plus-circle:before{content:"\\f4fa"}.bi-plus-square-dotted:before{content:"\\f4fb"}.bi-plus-square-fill:before{content:"\\f4fc"}.bi-plus-square:before{content:"\\f4fd"}.bi-plus:before{content:"\\f4fe"}.bi-power:before{content:"\\f4ff"}.bi-printer-fill:before{content:"\\f500"}.bi-printer:before{content:"\\f501"}.bi-puzzle-fill:before{content:"\\f502"}.bi-puzzle:before{content:"\\f503"}.bi-question-circle-fill:before{content:"\\f504"}.bi-question-circle:before{content:"\\f505"}.bi-question-diamond-fill:before{content:"\\f506"}.bi-question-diamond:before{content:"\\f507"}.bi-question-octagon-fill:before{content:"\\f508"}.bi-question-octagon:before{content:"\\f509"}.bi-question-square-fill:before{content:"\\f50a"}.bi-question-square:before{content:"\\f50b"}.bi-question:before{content:"\\f50c"}.bi-rainbow:before{content:"\\f50d"}.bi-receipt-cutoff:before{content:"\\f50e"}.bi-receipt:before{content:"\\f50f"}.bi-reception-0:before{content:"\\f510"}.bi-reception-1:before{content:"\\f511"}.bi-reception-2:before{content:"\\f512"}.bi-reception-3:before{content:"\\f513"}.bi-reception-4:before{content:"\\f514"}.bi-record-btn-fill:before{content:"\\f515"}.bi-record-btn:before{content:"\\f516"}.bi-record-circle-fill:before{content:"\\f517"}.bi-record-circle:before{content:"\\f518"}.bi-record-fill:before{content:"\\f519"}.bi-record:before{content:"\\f51a"}.bi-record2-fill:before{content:"\\f51b"}.bi-record2:before{content:"\\f51c"}.bi-reply-all-fill:before{content:"\\f51d"}.bi-reply-all:before{content:"\\f51e"}.bi-reply-fill:before{content:"\\f51f"}.bi-reply:before{content:"\\f520"}.bi-rss-fill:before{content:"\\f521"}.bi-rss:before{content:"\\f522"}.bi-rulers:before{content:"\\f523"}.bi-save-fill:before{content:"\\f524"}.bi-save:before{content:"\\f525"}.bi-save2-fill:before{content:"\\f526"}.bi-save2:before{content:"\\f527"}.bi-scissors:before{content:"\\f528"}.bi-screwdriver:before{content:"\\f529"}.bi-search:before{content:"\\f52a"}.bi-segmented-nav:before{content:"\\f52b"}.bi-server:before{content:"\\f52c"}.bi-share-fill:before{content:"\\f52d"}.bi-share:before{content:"\\f52e"}.bi-shield-check:before{content:"\\f52f"}.bi-shield-exclamation:before{content:"\\f530"}.bi-shield-fill-check:before{content:"\\f531"}.bi-shield-fill-exclamation:before{content:"\\f532"}.bi-shield-fill-minus:before{content:"\\f533"}.bi-shield-fill-plus:before{content:"\\f534"}.bi-shield-fill-x:before{content:"\\f535"}.bi-shield-fill:before{content:"\\f536"}.bi-shield-lock-fill:before{content:"\\f537"}.bi-shield-lock:before{content:"\\f538"}.bi-shield-minus:before{content:"\\f539"}.bi-shield-plus:before{content:"\\f53a"}.bi-shield-shaded:before{content:"\\f53b"}.bi-shield-slash-fill:before{content:"\\f53c"}.bi-shield-slash:before{content:"\\f53d"}.bi-shield-x:before{content:"\\f53e"}.bi-shield:before{content:"\\f53f"}.bi-shift-fill:before{content:"\\f540"}.bi-shift:before{content:"\\f541"}.bi-shop-window:before{content:"\\f542"}.bi-shop:before{content:"\\f543"}.bi-shuffle:before{content:"\\f544"}.bi-signpost-2-fill:before{content:"\\f545"}.bi-signpost-2:before{content:"\\f546"}.bi-signpost-fill:before{content:"\\f547"}.bi-signpost-split-fill:before{content:"\\f548"}.bi-signpost-split:before{content:"\\f549"}.bi-signpost:before{content:"\\f54a"}.bi-sim-fill:before{content:"\\f54b"}.bi-sim:before{content:"\\f54c"}.bi-skip-backward-btn-fill:before{content:"\\f54d"}.bi-skip-backward-btn:before{content:"\\f54e"}.bi-skip-backward-circle-fill:before{content:"\\f54f"}.bi-skip-backward-circle:before{content:"\\f550"}.bi-skip-backward-fill:before{content:"\\f551"}.bi-skip-backward:before{content:"\\f552"}.bi-skip-end-btn-fill:before{content:"\\f553"}.bi-skip-end-btn:before{content:"\\f554"}.bi-skip-end-circle-fill:before{content:"\\f555"}.bi-skip-end-circle:before{content:"\\f556"}.bi-skip-end-fill:before{content:"\\f557"}.bi-skip-end:before{content:"\\f558"}.bi-skip-forward-btn-fill:before{content:"\\f559"}.bi-skip-forward-btn:before{content:"\\f55a"}.bi-skip-forward-circle-fill:before{content:"\\f55b"}.bi-skip-forward-circle:before{content:"\\f55c"}.bi-skip-forward-fill:before{content:"\\f55d"}.bi-skip-forward:before{content:"\\f55e"}.bi-skip-start-btn-fill:before{content:"\\f55f"}.bi-skip-start-btn:before{content:"\\f560"}.bi-skip-start-circle-fill:before{content:"\\f561"}.bi-skip-start-circle:before{content:"\\f562"}.bi-skip-start-fill:before{content:"\\f563"}.bi-skip-start:before{content:"\\f564"}.bi-slack:before{content:"\\f565"}.bi-slash-circle-fill:before{content:"\\f566"}.bi-slash-circle:before{content:"\\f567"}.bi-slash-square-fill:before{content:"\\f568"}.bi-slash-square:before{content:"\\f569"}.bi-slash:before{content:"\\f56a"}.bi-sliders:before{content:"\\f56b"}.bi-smartwatch:before{content:"\\f56c"}.bi-snow:before{content:"\\f56d"}.bi-snow2:before{content:"\\f56e"}.bi-snow3:before{content:"\\f56f"}.bi-sort-alpha-down-alt:before{content:"\\f570"}.bi-sort-alpha-down:before{content:"\\f571"}.bi-sort-alpha-up-alt:before{content:"\\f572"}.bi-sort-alpha-up:before{content:"\\f573"}.bi-sort-down-alt:before{content:"\\f574"}.bi-sort-down:before{content:"\\f575"}.bi-sort-numeric-down-alt:before{content:"\\f576"}.bi-sort-numeric-down:before{content:"\\f577"}.bi-sort-numeric-up-alt:before{content:"\\f578"}.bi-sort-numeric-up:before{content:"\\f579"}.bi-sort-up-alt:before{content:"\\f57a"}.bi-sort-up:before{content:"\\f57b"}.bi-soundwave:before{content:"\\f57c"}.bi-speaker-fill:before{content:"\\f57d"}.bi-speaker:before{content:"\\f57e"}.bi-speedometer:before{content:"\\f57f"}.bi-speedometer2:before{content:"\\f580"}.bi-spellcheck:before{content:"\\f581"}.bi-square-fill:before{content:"\\f582"}.bi-square-half:before{content:"\\f583"}.bi-square:before{content:"\\f584"}.bi-stack:before{content:"\\f585"}.bi-star-fill:before{content:"\\f586"}.bi-star-half:before{content:"\\f587"}.bi-star:before{content:"\\f588"}.bi-stars:before{content:"\\f589"}.bi-stickies-fill:before{content:"\\f58a"}.bi-stickies:before{content:"\\f58b"}.bi-sticky-fill:before{content:"\\f58c"}.bi-sticky:before{content:"\\f58d"}.bi-stop-btn-fill:before{content:"\\f58e"}.bi-stop-btn:before{content:"\\f58f"}.bi-stop-circle-fill:before{content:"\\f590"}.bi-stop-circle:before{content:"\\f591"}.bi-stop-fill:before{content:"\\f592"}.bi-stop:before{content:"\\f593"}.bi-stoplights-fill:before{content:"\\f594"}.bi-stoplights:before{content:"\\f595"}.bi-stopwatch-fill:before{content:"\\f596"}.bi-stopwatch:before{content:"\\f597"}.bi-subtract:before{content:"\\f598"}.bi-suit-club-fill:before{content:"\\f599"}.bi-suit-club:before{content:"\\f59a"}.bi-suit-diamond-fill:before{content:"\\f59b"}.bi-suit-diamond:before{content:"\\f59c"}.bi-suit-heart-fill:before{content:"\\f59d"}.bi-suit-heart:before{content:"\\f59e"}.bi-suit-spade-fill:before{content:"\\f59f"}.bi-suit-spade:before{content:"\\f5a0"}.bi-sun-fill:before{content:"\\f5a1"}.bi-sun:before{content:"\\f5a2"}.bi-sunglasses:before{content:"\\f5a3"}.bi-sunrise-fill:before{content:"\\f5a4"}.bi-sunrise:before{content:"\\f5a5"}.bi-sunset-fill:before{content:"\\f5a6"}.bi-sunset:before{content:"\\f5a7"}.bi-symmetry-horizontal:before{content:"\\f5a8"}.bi-symmetry-vertical:before{content:"\\f5a9"}.bi-table:before{content:"\\f5aa"}.bi-tablet-fill:before{content:"\\f5ab"}.bi-tablet-landscape-fill:before{content:"\\f5ac"}.bi-tablet-landscape:before{content:"\\f5ad"}.bi-tablet:before{content:"\\f5ae"}.bi-tag-fill:before{content:"\\f5af"}.bi-tag:before{content:"\\f5b0"}.bi-tags-fill:before{content:"\\f5b1"}.bi-tags:before{content:"\\f5b2"}.bi-telegram:before{content:"\\f5b3"}.bi-telephone-fill:before{content:"\\f5b4"}.bi-telephone-forward-fill:before{content:"\\f5b5"}.bi-telephone-forward:before{content:"\\f5b6"}.bi-telephone-inbound-fill:before{content:"\\f5b7"}.bi-telephone-inbound:before{content:"\\f5b8"}.bi-telephone-minus-fill:before{content:"\\f5b9"}.bi-telephone-minus:before{content:"\\f5ba"}.bi-telephone-outbound-fill:before{content:"\\f5bb"}.bi-telephone-outbound:before{content:"\\f5bc"}.bi-telephone-plus-fill:before{content:"\\f5bd"}.bi-telephone-plus:before{content:"\\f5be"}.bi-telephone-x-fill:before{content:"\\f5bf"}.bi-telephone-x:before{content:"\\f5c0"}.bi-telephone:before{content:"\\f5c1"}.bi-terminal-fill:before{content:"\\f5c2"}.bi-terminal:before{content:"\\f5c3"}.bi-text-center:before{content:"\\f5c4"}.bi-text-indent-left:before{content:"\\f5c5"}.bi-text-indent-right:before{content:"\\f5c6"}.bi-text-left:before{content:"\\f5c7"}.bi-text-paragraph:before{content:"\\f5c8"}.bi-text-right:before{content:"\\f5c9"}.bi-textarea-resize:before{content:"\\f5ca"}.bi-textarea-t:before{content:"\\f5cb"}.bi-textarea:before{content:"\\f5cc"}.bi-thermometer-half:before{content:"\\f5cd"}.bi-thermometer-high:before{content:"\\f5ce"}.bi-thermometer-low:before{content:"\\f5cf"}.bi-thermometer-snow:before{content:"\\f5d0"}.bi-thermometer-sun:before{content:"\\f5d1"}.bi-thermometer:before{content:"\\f5d2"}.bi-three-dots-vertical:before{content:"\\f5d3"}.bi-three-dots:before{content:"\\f5d4"}.bi-toggle-off:before{content:"\\f5d5"}.bi-toggle-on:before{content:"\\f5d6"}.bi-toggle2-off:before{content:"\\f5d7"}.bi-toggle2-on:before{content:"\\f5d8"}.bi-toggles:before{content:"\\f5d9"}.bi-toggles2:before{content:"\\f5da"}.bi-tools:before{content:"\\f5db"}.bi-tornado:before{content:"\\f5dc"}.bi-trash-fill:before{content:"\\f5dd"}.bi-trash:before{content:"\\f5de"}.bi-trash2-fill:before{content:"\\f5df"}.bi-trash2:before{content:"\\f5e0"}.bi-tree-fill:before{content:"\\f5e1"}.bi-tree:before{content:"\\f5e2"}.bi-triangle-fill:before{content:"\\f5e3"}.bi-triangle-half:before{content:"\\f5e4"}.bi-triangle:before{content:"\\f5e5"}.bi-trophy-fill:before{content:"\\f5e6"}.bi-trophy:before{content:"\\f5e7"}.bi-tropical-storm:before{content:"\\f5e8"}.bi-truck-flatbed:before{content:"\\f5e9"}.bi-truck:before{content:"\\f5ea"}.bi-tsunami:before{content:"\\f5eb"}.bi-tv-fill:before{content:"\\f5ec"}.bi-tv:before{content:"\\f5ed"}.bi-twitch:before{content:"\\f5ee"}.bi-twitter:before{content:"\\f5ef"}.bi-type-bold:before{content:"\\f5f0"}.bi-type-h1:before{content:"\\f5f1"}.bi-type-h2:before{content:"\\f5f2"}.bi-type-h3:before{content:"\\f5f3"}.bi-type-italic:before{content:"\\f5f4"}.bi-type-strikethrough:before{content:"\\f5f5"}.bi-type-underline:before{content:"\\f5f6"}.bi-type:before{content:"\\f5f7"}.bi-ui-checks-grid:before{content:"\\f5f8"}.bi-ui-checks:before{content:"\\f5f9"}.bi-ui-radios-grid:before{content:"\\f5fa"}.bi-ui-radios:before{content:"\\f5fb"}.bi-umbrella-fill:before{content:"\\f5fc"}.bi-umbrella:before{content:"\\f5fd"}.bi-union:before{content:"\\f5fe"}.bi-unlock-fill:before{content:"\\f5ff"}.bi-unlock:before{content:"\\f600"}.bi-upc-scan:before{content:"\\f601"}.bi-upc:before{content:"\\f602"}.bi-upload:before{content:"\\f603"}.bi-vector-pen:before{content:"\\f604"}.bi-view-list:before{content:"\\f605"}.bi-view-stacked:before{content:"\\f606"}.bi-vinyl-fill:before{content:"\\f607"}.bi-vinyl:before{content:"\\f608"}.bi-voicemail:before{content:"\\f609"}.bi-volume-down-fill:before{content:"\\f60a"}.bi-volume-down:before{content:"\\f60b"}.bi-volume-mute-fill:before{content:"\\f60c"}.bi-volume-mute:before{content:"\\f60d"}.bi-volume-off-fill:before{content:"\\f60e"}.bi-volume-off:before{content:"\\f60f"}.bi-volume-up-fill:before{content:"\\f610"}.bi-volume-up:before{content:"\\f611"}.bi-vr:before{content:"\\f612"}.bi-wallet-fill:before{content:"\\f613"}.bi-wallet:before{content:"\\f614"}.bi-wallet2:before{content:"\\f615"}.bi-watch:before{content:"\\f616"}.bi-water:before{content:"\\f617"}.bi-whatsapp:before{content:"\\f618"}.bi-wifi-1:before{content:"\\f619"}.bi-wifi-2:before{content:"\\f61a"}.bi-wifi-off:before{content:"\\f61b"}.bi-wifi:before{content:"\\f61c"}.bi-wind:before{content:"\\f61d"}.bi-window-dock:before{content:"\\f61e"}.bi-window-sidebar:before{content:"\\f61f"}.bi-window:before{content:"\\f620"}.bi-wrench:before{content:"\\f621"}.bi-x-circle-fill:before{content:"\\f622"}.bi-x-circle:before{content:"\\f623"}.bi-x-diamond-fill:before{content:"\\f624"}.bi-x-diamond:before{content:"\\f625"}.bi-x-octagon-fill:before{content:"\\f626"}.bi-x-octagon:before{content:"\\f627"}.bi-x-square-fill:before{content:"\\f628"}.bi-x-square:before{content:"\\f629"}.bi-x:before{content:"\\f62a"}.bi-youtube:before{content:"\\f62b"}.bi-zoom-in:before{content:"\\f62c"}.bi-zoom-out:before{content:"\\f62d"}.bi-bank:before{content:"\\f62e"}.bi-bank2:before{content:"\\f62f"}.bi-bell-slash-fill:before{content:"\\f630"}.bi-bell-slash:before{content:"\\f631"}.bi-cash-coin:before{content:"\\f632"}.bi-check-lg:before{content:"\\f633"}.bi-coin:before{content:"\\f634"}.bi-currency-bitcoin:before{content:"\\f635"}.bi-currency-dollar:before{content:"\\f636"}.bi-currency-euro:before{content:"\\f637"}.bi-currency-exchange:before{content:"\\f638"}.bi-currency-pound:before{content:"\\f639"}.bi-currency-yen:before{content:"\\f63a"}.bi-dash-lg:before{content:"\\f63b"}.bi-exclamation-lg:before{content:"\\f63c"}.bi-file-earmark-pdf-fill:before{content:"\\f63d"}.bi-file-earmark-pdf:before{content:"\\f63e"}.bi-file-pdf-fill:before{content:"\\f63f"}.bi-file-pdf:before{content:"\\f640"}.bi-gender-ambiguous:before{content:"\\f641"}.bi-gender-female:before{content:"\\f642"}.bi-gender-male:before{content:"\\f643"}.bi-gender-trans:before{content:"\\f644"}.bi-headset-vr:before{content:"\\f645"}.bi-info-lg:before{content:"\\f646"}.bi-mastodon:before{content:"\\f647"}.bi-messenger:before{content:"\\f648"}.bi-piggy-bank-fill:before{content:"\\f649"}.bi-piggy-bank:before{content:"\\f64a"}.bi-pin-map-fill:before{content:"\\f64b"}.bi-pin-map:before{content:"\\f64c"}.bi-plus-lg:before{content:"\\f64d"}.bi-question-lg:before{content:"\\f64e"}.bi-recycle:before{content:"\\f64f"}.bi-reddit:before{content:"\\f650"}.bi-safe-fill:before{content:"\\f651"}.bi-safe2-fill:before{content:"\\f652"}.bi-safe2:before{content:"\\f653"}.bi-sd-card-fill:before{content:"\\f654"}.bi-sd-card:before{content:"\\f655"}.bi-skype:before{content:"\\f656"}.bi-slash-lg:before{content:"\\f657"}.bi-translate:before{content:"\\f658"}.bi-x-lg:before{content:"\\f659"}.bi-safe:before{content:"\\f65a"}.bi-apple:before{content:"\\f65b"}.bi-microsoft:before{content:"\\f65d"}.bi-windows:before{content:"\\f65e"}.bi-behance:before{content:"\\f65c"}.bi-dribbble:before{content:"\\f65f"}.bi-line:before{content:"\\f660"}.bi-medium:before{content:"\\f661"}.bi-paypal:before{content:"\\f662"}.bi-pinterest:before{content:"\\f663"}.bi-signal:before{content:"\\f664"}.bi-snapchat:before{content:"\\f665"}.bi-spotify:before{content:"\\f666"}.bi-stack-overflow:before{content:"\\f667"}.bi-strava:before{content:"\\f668"}.bi-wordpress:before{content:"\\f669"}.bi-vimeo:before{content:"\\f66a"}.bi-activity:before{content:"\\f66b"}.bi-easel2-fill:before{content:"\\f66c"}.bi-easel2:before{content:"\\f66d"}.bi-easel3-fill:before{content:"\\f66e"}.bi-easel3:before{content:"\\f66f"}.bi-fan:before{content:"\\f670"}.bi-fingerprint:before{content:"\\f671"}.bi-graph-down-arrow:before{content:"\\f672"}.bi-graph-up-arrow:before{content:"\\f673"}.bi-hypnotize:before{content:"\\f674"}.bi-magic:before{content:"\\f675"}.bi-person-rolodex:before{content:"\\f676"}.bi-person-video:before{content:"\\f677"}.bi-person-video2:before{content:"\\f678"}.bi-person-video3:before{content:"\\f679"}.bi-person-workspace:before{content:"\\f67a"}.bi-radioactive:before{content:"\\f67b"}.bi-webcam-fill:before{content:"\\f67c"}.bi-webcam:before{content:"\\f67d"}.bi-yin-yang:before{content:"\\f67e"}.bi-bandaid-fill:before{content:"\\f680"}.bi-bandaid:before{content:"\\f681"}.bi-bluetooth:before{content:"\\f682"}.bi-body-text:before{content:"\\f683"}.bi-boombox:before{content:"\\f684"}.bi-boxes:before{content:"\\f685"}.bi-dpad-fill:before{content:"\\f686"}.bi-dpad:before{content:"\\f687"}.bi-ear-fill:before{content:"\\f688"}.bi-ear:before{content:"\\f689"}.bi-envelope-check-fill:before{content:"\\f68b"}.bi-envelope-check:before{content:"\\f68c"}.bi-envelope-dash-fill:before{content:"\\f68e"}.bi-envelope-dash:before{content:"\\f68f"}.bi-envelope-exclamation-fill:before{content:"\\f691"}.bi-envelope-exclamation:before{content:"\\f692"}.bi-envelope-plus-fill:before{content:"\\f693"}.bi-envelope-plus:before{content:"\\f694"}.bi-envelope-slash-fill:before{content:"\\f696"}.bi-envelope-slash:before{content:"\\f697"}.bi-envelope-x-fill:before{content:"\\f699"}.bi-envelope-x:before{content:"\\f69a"}.bi-explicit-fill:before{content:"\\f69b"}.bi-explicit:before{content:"\\f69c"}.bi-git:before{content:"\\f69d"}.bi-infinity:before{content:"\\f69e"}.bi-list-columns-reverse:before{content:"\\f69f"}.bi-list-columns:before{content:"\\f6a0"}.bi-meta:before{content:"\\f6a1"}.bi-nintendo-switch:before{content:"\\f6a4"}.bi-pc-display-horizontal:before{content:"\\f6a5"}.bi-pc-display:before{content:"\\f6a6"}.bi-pc-horizontal:before{content:"\\f6a7"}.bi-pc:before{content:"\\f6a8"}.bi-playstation:before{content:"\\f6a9"}.bi-plus-slash-minus:before{content:"\\f6aa"}.bi-projector-fill:before{content:"\\f6ab"}.bi-projector:before{content:"\\f6ac"}.bi-qr-code-scan:before{content:"\\f6ad"}.bi-qr-code:before{content:"\\f6ae"}.bi-quora:before{content:"\\f6af"}.bi-quote:before{content:"\\f6b0"}.bi-robot:before{content:"\\f6b1"}.bi-send-check-fill:before{content:"\\f6b2"}.bi-send-check:before{content:"\\f6b3"}.bi-send-dash-fill:before{content:"\\f6b4"}.bi-send-dash:before{content:"\\f6b5"}.bi-send-exclamation-fill:before{content:"\\f6b7"}.bi-send-exclamation:before{content:"\\f6b8"}.bi-send-fill:before{content:"\\f6b9"}.bi-send-plus-fill:before{content:"\\f6ba"}.bi-send-plus:before{content:"\\f6bb"}.bi-send-slash-fill:before{content:"\\f6bc"}.bi-send-slash:before{content:"\\f6bd"}.bi-send-x-fill:before{content:"\\f6be"}.bi-send-x:before{content:"\\f6bf"}.bi-send:before{content:"\\f6c0"}.bi-steam:before{content:"\\f6c1"}.bi-terminal-dash:before{content:"\\f6c3"}.bi-terminal-plus:before{content:"\\f6c4"}.bi-terminal-split:before{content:"\\f6c5"}.bi-ticket-detailed-fill:before{content:"\\f6c6"}.bi-ticket-detailed:before{content:"\\f6c7"}.bi-ticket-fill:before{content:"\\f6c8"}.bi-ticket-perforated-fill:before{content:"\\f6c9"}.bi-ticket-perforated:before{content:"\\f6ca"}.bi-ticket:before{content:"\\f6cb"}.bi-tiktok:before{content:"\\f6cc"}.bi-window-dash:before{content:"\\f6cd"}.bi-window-desktop:before{content:"\\f6ce"}.bi-window-fullscreen:before{content:"\\f6cf"}.bi-window-plus:before{content:"\\f6d0"}.bi-window-split:before{content:"\\f6d1"}.bi-window-stack:before{content:"\\f6d2"}.bi-window-x:before{content:"\\f6d3"}.bi-xbox:before{content:"\\f6d4"}.bi-ethernet:before{content:"\\f6d5"}.bi-hdmi-fill:before{content:"\\f6d6"}.bi-hdmi:before{content:"\\f6d7"}.bi-usb-c-fill:before{content:"\\f6d8"}.bi-usb-c:before{content:"\\f6d9"}.bi-usb-fill:before{content:"\\f6da"}.bi-usb-plug-fill:before{content:"\\f6db"}.bi-usb-plug:before{content:"\\f6dc"}.bi-usb-symbol:before{content:"\\f6dd"}.bi-usb:before{content:"\\f6de"}.bi-boombox-fill:before{content:"\\f6df"}.bi-displayport:before{content:"\\f6e1"}.bi-gpu-card:before{content:"\\f6e2"}.bi-memory:before{content:"\\f6e3"}.bi-modem-fill:before{content:"\\f6e4"}.bi-modem:before{content:"\\f6e5"}.bi-motherboard-fill:before{content:"\\f6e6"}.bi-motherboard:before{content:"\\f6e7"}.bi-optical-audio-fill:before{content:"\\f6e8"}.bi-optical-audio:before{content:"\\f6e9"}.bi-pci-card:before{content:"\\f6ea"}.bi-router-fill:before{content:"\\f6eb"}.bi-router:before{content:"\\f6ec"}.bi-thunderbolt-fill:before{content:"\\f6ef"}.bi-thunderbolt:before{content:"\\f6f0"}.bi-usb-drive-fill:before{content:"\\f6f1"}.bi-usb-drive:before{content:"\\f6f2"}.bi-usb-micro-fill:before{content:"\\f6f3"}.bi-usb-micro:before{content:"\\f6f4"}.bi-usb-mini-fill:before{content:"\\f6f5"}.bi-usb-mini:before{content:"\\f6f6"}.bi-cloud-haze2:before{content:"\\f6f7"}.bi-device-hdd-fill:before{content:"\\f6f8"}.bi-device-hdd:before{content:"\\f6f9"}.bi-device-ssd-fill:before{content:"\\f6fa"}.bi-device-ssd:before{content:"\\f6fb"}.bi-displayport-fill:before{content:"\\f6fc"}.bi-mortarboard-fill:before{content:"\\f6fd"}.bi-mortarboard:before{content:"\\f6fe"}.bi-terminal-x:before{content:"\\f6ff"}.bi-arrow-through-heart-fill:before{content:"\\f700"}.bi-arrow-through-heart:before{content:"\\f701"}.bi-badge-sd-fill:before{content:"\\f702"}.bi-badge-sd:before{content:"\\f703"}.bi-bag-heart-fill:before{content:"\\f704"}.bi-bag-heart:before{content:"\\f705"}.bi-balloon-fill:before{content:"\\f706"}.bi-balloon-heart-fill:before{content:"\\f707"}.bi-balloon-heart:before{content:"\\f708"}.bi-balloon:before{content:"\\f709"}.bi-box2-fill:before{content:"\\f70a"}.bi-box2-heart-fill:before{content:"\\f70b"}.bi-box2-heart:before{content:"\\f70c"}.bi-box2:before{content:"\\f70d"}.bi-braces-asterisk:before{content:"\\f70e"}.bi-calendar-heart-fill:before{content:"\\f70f"}.bi-calendar-heart:before{content:"\\f710"}.bi-calendar2-heart-fill:before{content:"\\f711"}.bi-calendar2-heart:before{content:"\\f712"}.bi-chat-heart-fill:before{content:"\\f713"}.bi-chat-heart:before{content:"\\f714"}.bi-chat-left-heart-fill:before{content:"\\f715"}.bi-chat-left-heart:before{content:"\\f716"}.bi-chat-right-heart-fill:before{content:"\\f717"}.bi-chat-right-heart:before{content:"\\f718"}.bi-chat-square-heart-fill:before{content:"\\f719"}.bi-chat-square-heart:before{content:"\\f71a"}.bi-clipboard-check-fill:before{content:"\\f71b"}.bi-clipboard-data-fill:before{content:"\\f71c"}.bi-clipboard-fill:before{content:"\\f71d"}.bi-clipboard-heart-fill:before{content:"\\f71e"}.bi-clipboard-heart:before{content:"\\f71f"}.bi-clipboard-minus-fill:before{content:"\\f720"}.bi-clipboard-plus-fill:before{content:"\\f721"}.bi-clipboard-pulse:before{content:"\\f722"}.bi-clipboard-x-fill:before{content:"\\f723"}.bi-clipboard2-check-fill:before{content:"\\f724"}.bi-clipboard2-check:before{content:"\\f725"}.bi-clipboard2-data-fill:before{content:"\\f726"}.bi-clipboard2-data:before{content:"\\f727"}.bi-clipboard2-fill:before{content:"\\f728"}.bi-clipboard2-heart-fill:before{content:"\\f729"}.bi-clipboard2-heart:before{content:"\\f72a"}.bi-clipboard2-minus-fill:before{content:"\\f72b"}.bi-clipboard2-minus:before{content:"\\f72c"}.bi-clipboard2-plus-fill:before{content:"\\f72d"}.bi-clipboard2-plus:before{content:"\\f72e"}.bi-clipboard2-pulse-fill:before{content:"\\f72f"}.bi-clipboard2-pulse:before{content:"\\f730"}.bi-clipboard2-x-fill:before{content:"\\f731"}.bi-clipboard2-x:before{content:"\\f732"}.bi-clipboard2:before{content:"\\f733"}.bi-emoji-kiss-fill:before{content:"\\f734"}.bi-emoji-kiss:before{content:"\\f735"}.bi-envelope-heart-fill:before{content:"\\f736"}.bi-envelope-heart:before{content:"\\f737"}.bi-envelope-open-heart-fill:before{content:"\\f738"}.bi-envelope-open-heart:before{content:"\\f739"}.bi-envelope-paper-fill:before{content:"\\f73a"}.bi-envelope-paper-heart-fill:before{content:"\\f73b"}.bi-envelope-paper-heart:before{content:"\\f73c"}.bi-envelope-paper:before{content:"\\f73d"}.bi-filetype-aac:before{content:"\\f73e"}.bi-filetype-ai:before{content:"\\f73f"}.bi-filetype-bmp:before{content:"\\f740"}.bi-filetype-cs:before{content:"\\f741"}.bi-filetype-css:before{content:"\\f742"}.bi-filetype-csv:before{content:"\\f743"}.bi-filetype-doc:before{content:"\\f744"}.bi-filetype-docx:before{content:"\\f745"}.bi-filetype-exe:before{content:"\\f746"}.bi-filetype-gif:before{content:"\\f747"}.bi-filetype-heic:before{content:"\\f748"}.bi-filetype-html:before{content:"\\f749"}.bi-filetype-java:before{content:"\\f74a"}.bi-filetype-jpg:before{content:"\\f74b"}.bi-filetype-js:before{content:"\\f74c"}.bi-filetype-jsx:before{content:"\\f74d"}.bi-filetype-key:before{content:"\\f74e"}.bi-filetype-m4p:before{content:"\\f74f"}.bi-filetype-md:before{content:"\\f750"}.bi-filetype-mdx:before{content:"\\f751"}.bi-filetype-mov:before{content:"\\f752"}.bi-filetype-mp3:before{content:"\\f753"}.bi-filetype-mp4:before{content:"\\f754"}.bi-filetype-otf:before{content:"\\f755"}.bi-filetype-pdf:before{content:"\\f756"}.bi-filetype-php:before{content:"\\f757"}.bi-filetype-png:before{content:"\\f758"}.bi-filetype-ppt:before{content:"\\f75a"}.bi-filetype-psd:before{content:"\\f75b"}.bi-filetype-py:before{content:"\\f75c"}.bi-filetype-raw:before{content:"\\f75d"}.bi-filetype-rb:before{content:"\\f75e"}.bi-filetype-sass:before{content:"\\f75f"}.bi-filetype-scss:before{content:"\\f760"}.bi-filetype-sh:before{content:"\\f761"}.bi-filetype-svg:before{content:"\\f762"}.bi-filetype-tiff:before{content:"\\f763"}.bi-filetype-tsx:before{content:"\\f764"}.bi-filetype-ttf:before{content:"\\f765"}.bi-filetype-txt:before{content:"\\f766"}.bi-filetype-wav:before{content:"\\f767"}.bi-filetype-woff:before{content:"\\f768"}.bi-filetype-xls:before{content:"\\f76a"}.bi-filetype-xml:before{content:"\\f76b"}.bi-filetype-yml:before{content:"\\f76c"}.bi-heart-arrow:before{content:"\\f76d"}.bi-heart-pulse-fill:before{content:"\\f76e"}.bi-heart-pulse:before{content:"\\f76f"}.bi-heartbreak-fill:before{content:"\\f770"}.bi-heartbreak:before{content:"\\f771"}.bi-hearts:before{content:"\\f772"}.bi-hospital-fill:before{content:"\\f773"}.bi-hospital:before{content:"\\f774"}.bi-house-heart-fill:before{content:"\\f775"}.bi-house-heart:before{content:"\\f776"}.bi-incognito:before{content:"\\f777"}.bi-magnet-fill:before{content:"\\f778"}.bi-magnet:before{content:"\\f779"}.bi-person-heart:before{content:"\\f77a"}.bi-person-hearts:before{content:"\\f77b"}.bi-phone-flip:before{content:"\\f77c"}.bi-plugin:before{content:"\\f77d"}.bi-postage-fill:before{content:"\\f77e"}.bi-postage-heart-fill:before{content:"\\f77f"}.bi-postage-heart:before{content:"\\f780"}.bi-postage:before{content:"\\f781"}.bi-postcard-fill:before{content:"\\f782"}.bi-postcard-heart-fill:before{content:"\\f783"}.bi-postcard-heart:before{content:"\\f784"}.bi-postcard:before{content:"\\f785"}.bi-search-heart-fill:before{content:"\\f786"}.bi-search-heart:before{content:"\\f787"}.bi-sliders2-vertical:before{content:"\\f788"}.bi-sliders2:before{content:"\\f789"}.bi-trash3-fill:before{content:"\\f78a"}.bi-trash3:before{content:"\\f78b"}.bi-valentine:before{content:"\\f78c"}.bi-valentine2:before{content:"\\f78d"}.bi-wrench-adjustable-circle-fill:before{content:"\\f78e"}.bi-wrench-adjustable-circle:before{content:"\\f78f"}.bi-wrench-adjustable:before{content:"\\f790"}.bi-filetype-json:before{content:"\\f791"}.bi-filetype-pptx:before{content:"\\f792"}.bi-filetype-xlsx:before{content:"\\f793"}.bi-1-circle-fill:before{content:"\\f796"}.bi-1-circle:before{content:"\\f797"}.bi-1-square-fill:before{content:"\\f798"}.bi-1-square:before{content:"\\f799"}.bi-2-circle-fill:before{content:"\\f79c"}.bi-2-circle:before{content:"\\f79d"}.bi-2-square-fill:before{content:"\\f79e"}.bi-2-square:before{content:"\\f79f"}.bi-3-circle-fill:before{content:"\\f7a2"}.bi-3-circle:before{content:"\\f7a3"}.bi-3-square-fill:before{content:"\\f7a4"}.bi-3-square:before{content:"\\f7a5"}.bi-4-circle-fill:before{content:"\\f7a8"}.bi-4-circle:before{content:"\\f7a9"}.bi-4-square-fill:before{content:"\\f7aa"}.bi-4-square:before{content:"\\f7ab"}.bi-5-circle-fill:before{content:"\\f7ae"}.bi-5-circle:before{content:"\\f7af"}.bi-5-square-fill:before{content:"\\f7b0"}.bi-5-square:before{content:"\\f7b1"}.bi-6-circle-fill:before{content:"\\f7b4"}.bi-6-circle:before{content:"\\f7b5"}.bi-6-square-fill:before{content:"\\f7b6"}.bi-6-square:before{content:"\\f7b7"}.bi-7-circle-fill:before{content:"\\f7ba"}.bi-7-circle:before{content:"\\f7bb"}.bi-7-square-fill:before{content:"\\f7bc"}.bi-7-square:before{content:"\\f7bd"}.bi-8-circle-fill:before{content:"\\f7c0"}.bi-8-circle:before{content:"\\f7c1"}.bi-8-square-fill:before{content:"\\f7c2"}.bi-8-square:before{content:"\\f7c3"}.bi-9-circle-fill:before{content:"\\f7c6"}.bi-9-circle:before{content:"\\f7c7"}.bi-9-square-fill:before{content:"\\f7c8"}.bi-9-square:before{content:"\\f7c9"}.bi-airplane-engines-fill:before{content:"\\f7ca"}.bi-airplane-engines:before{content:"\\f7cb"}.bi-airplane-fill:before{content:"\\f7cc"}.bi-airplane:before{content:"\\f7cd"}.bi-alexa:before{content:"\\f7ce"}.bi-alipay:before{content:"\\f7cf"}.bi-android:before{content:"\\f7d0"}.bi-android2:before{content:"\\f7d1"}.bi-box-fill:before{content:"\\f7d2"}.bi-box-seam-fill:before{content:"\\f7d3"}.bi-browser-chrome:before{content:"\\f7d4"}.bi-browser-edge:before{content:"\\f7d5"}.bi-browser-firefox:before{content:"\\f7d6"}.bi-browser-safari:before{content:"\\f7d7"}.bi-c-circle-fill:before{content:"\\f7da"}.bi-c-circle:before{content:"\\f7db"}.bi-c-square-fill:before{content:"\\f7dc"}.bi-c-square:before{content:"\\f7dd"}.bi-capsule-pill:before{content:"\\f7de"}.bi-capsule:before{content:"\\f7df"}.bi-car-front-fill:before{content:"\\f7e0"}.bi-car-front:before{content:"\\f7e1"}.bi-cassette-fill:before{content:"\\f7e2"}.bi-cassette:before{content:"\\f7e3"}.bi-cc-circle-fill:before{content:"\\f7e6"}.bi-cc-circle:before{content:"\\f7e7"}.bi-cc-square-fill:before{content:"\\f7e8"}.bi-cc-square:before{content:"\\f7e9"}.bi-cup-hot-fill:before{content:"\\f7ea"}.bi-cup-hot:before{content:"\\f7eb"}.bi-currency-rupee:before{content:"\\f7ec"}.bi-dropbox:before{content:"\\f7ed"}.bi-escape:before{content:"\\f7ee"}.bi-fast-forward-btn-fill:before{content:"\\f7ef"}.bi-fast-forward-btn:before{content:"\\f7f0"}.bi-fast-forward-circle-fill:before{content:"\\f7f1"}.bi-fast-forward-circle:before{content:"\\f7f2"}.bi-fast-forward-fill:before{content:"\\f7f3"}.bi-fast-forward:before{content:"\\f7f4"}.bi-filetype-sql:before{content:"\\f7f5"}.bi-fire:before{content:"\\f7f6"}.bi-google-play:before{content:"\\f7f7"}.bi-h-circle-fill:before{content:"\\f7fa"}.bi-h-circle:before{content:"\\f7fb"}.bi-h-square-fill:before{content:"\\f7fc"}.bi-h-square:before{content:"\\f7fd"}.bi-indent:before{content:"\\f7fe"}.bi-lungs-fill:before{content:"\\f7ff"}.bi-lungs:before{content:"\\f800"}.bi-microsoft-teams:before{content:"\\f801"}.bi-p-circle-fill:before{content:"\\f804"}.bi-p-circle:before{content:"\\f805"}.bi-p-square-fill:before{content:"\\f806"}.bi-p-square:before{content:"\\f807"}.bi-pass-fill:before{content:"\\f808"}.bi-pass:before{content:"\\f809"}.bi-prescription:before{content:"\\f80a"}.bi-prescription2:before{content:"\\f80b"}.bi-r-circle-fill:before{content:"\\f80e"}.bi-r-circle:before{content:"\\f80f"}.bi-r-square-fill:before{content:"\\f810"}.bi-r-square:before{content:"\\f811"}.bi-repeat-1:before{content:"\\f812"}.bi-repeat:before{content:"\\f813"}.bi-rewind-btn-fill:before{content:"\\f814"}.bi-rewind-btn:before{content:"\\f815"}.bi-rewind-circle-fill:before{content:"\\f816"}.bi-rewind-circle:before{content:"\\f817"}.bi-rewind-fill:before{content:"\\f818"}.bi-rewind:before{content:"\\f819"}.bi-train-freight-front-fill:before{content:"\\f81a"}.bi-train-freight-front:before{content:"\\f81b"}.bi-train-front-fill:before{content:"\\f81c"}.bi-train-front:before{content:"\\f81d"}.bi-train-lightrail-front-fill:before{content:"\\f81e"}.bi-train-lightrail-front:before{content:"\\f81f"}.bi-truck-front-fill:before{content:"\\f820"}.bi-truck-front:before{content:"\\f821"}.bi-ubuntu:before{content:"\\f822"}.bi-unindent:before{content:"\\f823"}.bi-unity:before{content:"\\f824"}.bi-universal-access-circle:before{content:"\\f825"}.bi-universal-access:before{content:"\\f826"}.bi-virus:before{content:"\\f827"}.bi-virus2:before{content:"\\f828"}.bi-wechat:before{content:"\\f829"}.bi-yelp:before{content:"\\f82a"}.bi-sign-stop-fill:before{content:"\\f82b"}.bi-sign-stop-lights-fill:before{content:"\\f82c"}.bi-sign-stop-lights:before{content:"\\f82d"}.bi-sign-stop:before{content:"\\f82e"}.bi-sign-turn-left-fill:before{content:"\\f82f"}.bi-sign-turn-left:before{content:"\\f830"}.bi-sign-turn-right-fill:before{content:"\\f831"}.bi-sign-turn-right:before{content:"\\f832"}.bi-sign-turn-slight-left-fill:before{content:"\\f833"}.bi-sign-turn-slight-left:before{content:"\\f834"}.bi-sign-turn-slight-right-fill:before{content:"\\f835"}.bi-sign-turn-slight-right:before{content:"\\f836"}.bi-sign-yield-fill:before{content:"\\f837"}.bi-sign-yield:before{content:"\\f838"}.bi-ev-station-fill:before{content:"\\f839"}.bi-ev-station:before{content:"\\f83a"}.bi-fuel-pump-diesel-fill:before{content:"\\f83b"}.bi-fuel-pump-diesel:before{content:"\\f83c"}.bi-fuel-pump-fill:before{content:"\\f83d"}.bi-fuel-pump:before{content:"\\f83e"}.bi-0-circle-fill:before{content:"\\f83f"}.bi-0-circle:before{content:"\\f840"}.bi-0-square-fill:before{content:"\\f841"}.bi-0-square:before{content:"\\f842"}.bi-rocket-fill:before{content:"\\f843"}.bi-rocket-takeoff-fill:before{content:"\\f844"}.bi-rocket-takeoff:before{content:"\\f845"}.bi-rocket:before{content:"\\f846"}.bi-stripe:before{content:"\\f847"}.bi-subscript:before{content:"\\f848"}.bi-superscript:before{content:"\\f849"}.bi-trello:before{content:"\\f84a"}.bi-envelope-at-fill:before{content:"\\f84b"}.bi-envelope-at:before{content:"\\f84c"}.bi-regex:before{content:"\\f84d"}.bi-text-wrap:before{content:"\\f84e"}.bi-sign-dead-end-fill:before{content:"\\f84f"}.bi-sign-dead-end:before{content:"\\f850"}.bi-sign-do-not-enter-fill:before{content:"\\f851"}.bi-sign-do-not-enter:before{content:"\\f852"}.bi-sign-intersection-fill:before{content:"\\f853"}.bi-sign-intersection-side-fill:before{content:"\\f854"}.bi-sign-intersection-side:before{content:"\\f855"}.bi-sign-intersection-t-fill:before{content:"\\f856"}.bi-sign-intersection-t:before{content:"\\f857"}.bi-sign-intersection-y-fill:before{content:"\\f858"}.bi-sign-intersection-y:before{content:"\\f859"}.bi-sign-intersection:before{content:"\\f85a"}.bi-sign-merge-left-fill:before{content:"\\f85b"}.bi-sign-merge-left:before{content:"\\f85c"}.bi-sign-merge-right-fill:before{content:"\\f85d"}.bi-sign-merge-right:before{content:"\\f85e"}.bi-sign-no-left-turn-fill:before{content:"\\f85f"}.bi-sign-no-left-turn:before{content:"\\f860"}.bi-sign-no-parking-fill:before{content:"\\f861"}.bi-sign-no-parking:before{content:"\\f862"}.bi-sign-no-right-turn-fill:before{content:"\\f863"}.bi-sign-no-right-turn:before{content:"\\f864"}.bi-sign-railroad-fill:before{content:"\\f865"}.bi-sign-railroad:before{content:"\\f866"}.bi-building-add:before{content:"\\f867"}.bi-building-check:before{content:"\\f868"}.bi-building-dash:before{content:"\\f869"}.bi-building-down:before{content:"\\f86a"}.bi-building-exclamation:before{content:"\\f86b"}.bi-building-fill-add:before{content:"\\f86c"}.bi-building-fill-check:before{content:"\\f86d"}.bi-building-fill-dash:before{content:"\\f86e"}.bi-building-fill-down:before{content:"\\f86f"}.bi-building-fill-exclamation:before{content:"\\f870"}.bi-building-fill-gear:before{content:"\\f871"}.bi-building-fill-lock:before{content:"\\f872"}.bi-building-fill-slash:before{content:"\\f873"}.bi-building-fill-up:before{content:"\\f874"}.bi-building-fill-x:before{content:"\\f875"}.bi-building-fill:before{content:"\\f876"}.bi-building-gear:before{content:"\\f877"}.bi-building-lock:before{content:"\\f878"}.bi-building-slash:before{content:"\\f879"}.bi-building-up:before{content:"\\f87a"}.bi-building-x:before{content:"\\f87b"}.bi-buildings-fill:before{content:"\\f87c"}.bi-buildings:before{content:"\\f87d"}.bi-bus-front-fill:before{content:"\\f87e"}.bi-bus-front:before{content:"\\f87f"}.bi-ev-front-fill:before{content:"\\f880"}.bi-ev-front:before{content:"\\f881"}.bi-globe-americas:before{content:"\\f882"}.bi-globe-asia-australia:before{content:"\\f883"}.bi-globe-central-south-asia:before{content:"\\f884"}.bi-globe-europe-africa:before{content:"\\f885"}.bi-house-add-fill:before{content:"\\f886"}.bi-house-add:before{content:"\\f887"}.bi-house-check-fill:before{content:"\\f888"}.bi-house-check:before{content:"\\f889"}.bi-house-dash-fill:before{content:"\\f88a"}.bi-house-dash:before{content:"\\f88b"}.bi-house-down-fill:before{content:"\\f88c"}.bi-house-down:before{content:"\\f88d"}.bi-house-exclamation-fill:before{content:"\\f88e"}.bi-house-exclamation:before{content:"\\f88f"}.bi-house-gear-fill:before{content:"\\f890"}.bi-house-gear:before{content:"\\f891"}.bi-house-lock-fill:before{content:"\\f892"}.bi-house-lock:before{content:"\\f893"}.bi-house-slash-fill:before{content:"\\f894"}.bi-house-slash:before{content:"\\f895"}.bi-house-up-fill:before{content:"\\f896"}.bi-house-up:before{content:"\\f897"}.bi-house-x-fill:before{content:"\\f898"}.bi-house-x:before{content:"\\f899"}.bi-person-add:before{content:"\\f89a"}.bi-person-down:before{content:"\\f89b"}.bi-person-exclamation:before{content:"\\f89c"}.bi-person-fill-add:before{content:"\\f89d"}.bi-person-fill-check:before{content:"\\f89e"}.bi-person-fill-dash:before{content:"\\f89f"}.bi-person-fill-down:before{content:"\\f8a0"}.bi-person-fill-exclamation:before{content:"\\f8a1"}.bi-person-fill-gear:before{content:"\\f8a2"}.bi-person-fill-lock:before{content:"\\f8a3"}.bi-person-fill-slash:before{content:"\\f8a4"}.bi-person-fill-up:before{content:"\\f8a5"}.bi-person-fill-x:before{content:"\\f8a6"}.bi-person-gear:before{content:"\\f8a7"}.bi-person-lock:before{content:"\\f8a8"}.bi-person-slash:before{content:"\\f8a9"}.bi-person-up:before{content:"\\f8aa"}.bi-scooter:before{content:"\\f8ab"}.bi-taxi-front-fill:before{content:"\\f8ac"}.bi-taxi-front:before{content:"\\f8ad"}.bi-amd:before{content:"\\f8ae"}.bi-database-add:before{content:"\\f8af"}.bi-database-check:before{content:"\\f8b0"}.bi-database-dash:before{content:"\\f8b1"}.bi-database-down:before{content:"\\f8b2"}.bi-database-exclamation:before{content:"\\f8b3"}.bi-database-fill-add:before{content:"\\f8b4"}.bi-database-fill-check:before{content:"\\f8b5"}.bi-database-fill-dash:before{content:"\\f8b6"}.bi-database-fill-down:before{content:"\\f8b7"}.bi-database-fill-exclamation:before{content:"\\f8b8"}.bi-database-fill-gear:before{content:"\\f8b9"}.bi-database-fill-lock:before{content:"\\f8ba"}.bi-database-fill-slash:before{content:"\\f8bb"}.bi-database-fill-up:before{content:"\\f8bc"}.bi-database-fill-x:before{content:"\\f8bd"}.bi-database-fill:before{content:"\\f8be"}.bi-database-gear:before{content:"\\f8bf"}.bi-database-lock:before{content:"\\f8c0"}.bi-database-slash:before{content:"\\f8c1"}.bi-database-up:before{content:"\\f8c2"}.bi-database-x:before{content:"\\f8c3"}.bi-database:before{content:"\\f8c4"}.bi-houses-fill:before{content:"\\f8c5"}.bi-houses:before{content:"\\f8c6"}.bi-nvidia:before{content:"\\f8c7"}.bi-person-vcard-fill:before{content:"\\f8c8"}.bi-person-vcard:before{content:"\\f8c9"}.bi-sina-weibo:before{content:"\\f8ca"}.bi-tencent-qq:before{content:"\\f8cb"}.bi-wikipedia:before{content:"\\f8cc"}.bi-alphabet-uppercase:before{content:"\\f2a5"}.bi-alphabet:before{content:"\\f68a"}.bi-amazon:before{content:"\\f68d"}.bi-arrows-collapse-vertical:before{content:"\\f690"}.bi-arrows-expand-vertical:before{content:"\\f695"}.bi-arrows-vertical:before{content:"\\f698"}.bi-arrows:before{content:"\\f6a2"}.bi-ban-fill:before{content:"\\f6a3"}.bi-ban:before{content:"\\f6b6"}.bi-bing:before{content:"\\f6c2"}.bi-cake:before{content:"\\f6e0"}.bi-cake2:before{content:"\\f6ed"}.bi-cookie:before{content:"\\f6ee"}.bi-copy:before{content:"\\f759"}.bi-crosshair:before{content:"\\f769"}.bi-crosshair2:before{content:"\\f794"}.bi-emoji-astonished-fill:before{content:"\\f795"}.bi-emoji-astonished:before{content:"\\f79a"}.bi-emoji-grimace-fill:before{content:"\\f79b"}.bi-emoji-grimace:before{content:"\\f7a0"}.bi-emoji-grin-fill:before{content:"\\f7a1"}.bi-emoji-grin:before{content:"\\f7a6"}.bi-emoji-surprise-fill:before{content:"\\f7a7"}.bi-emoji-surprise:before{content:"\\f7ac"}.bi-emoji-tear-fill:before{content:"\\f7ad"}.bi-emoji-tear:before{content:"\\f7b2"}.bi-envelope-arrow-down-fill:before{content:"\\f7b3"}.bi-envelope-arrow-down:before{content:"\\f7b8"}.bi-envelope-arrow-up-fill:before{content:"\\f7b9"}.bi-envelope-arrow-up:before{content:"\\f7be"}.bi-feather:before{content:"\\f7bf"}.bi-feather2:before{content:"\\f7c4"}.bi-floppy-fill:before{content:"\\f7c5"}.bi-floppy:before{content:"\\f7d8"}.bi-floppy2-fill:before{content:"\\f7d9"}.bi-floppy2:before{content:"\\f7e4"}.bi-gitlab:before{content:"\\f7e5"}.bi-highlighter:before{content:"\\f7f8"}.bi-marker-tip:before{content:"\\f802"}.bi-nvme-fill:before{content:"\\f803"}.bi-nvme:before{content:"\\f80c"}.bi-opencollective:before{content:"\\f80d"}.bi-pci-card-network:before{content:"\\f8cd"}.bi-pci-card-sound:before{content:"\\f8ce"}.bi-radar:before{content:"\\f8cf"}.bi-send-arrow-down-fill:before{content:"\\f8d0"}.bi-send-arrow-down:before{content:"\\f8d1"}.bi-send-arrow-up-fill:before{content:"\\f8d2"}.bi-send-arrow-up:before{content:"\\f8d3"}.bi-sim-slash-fill:before{content:"\\f8d4"}.bi-sim-slash:before{content:"\\f8d5"}.bi-sourceforge:before{content:"\\f8d6"}.bi-substack:before{content:"\\f8d7"}.bi-threads-fill:before{content:"\\f8d8"}.bi-threads:before{content:"\\f8d9"}.bi-transparency:before{content:"\\f8da"}.bi-twitter-x:before{content:"\\f8db"}.bi-type-h4:before{content:"\\f8dc"}.bi-type-h5:before{content:"\\f8dd"}.bi-type-h6:before{content:"\\f8de"}.bi-backpack-fill:before{content:"\\f8df"}.bi-backpack:before{content:"\\f8e0"}.bi-backpack2-fill:before{content:"\\f8e1"}.bi-backpack2:before{content:"\\f8e2"}.bi-backpack3-fill:before{content:"\\f8e3"}.bi-backpack3:before{content:"\\f8e4"}.bi-backpack4-fill:before{content:"\\f8e5"}.bi-backpack4:before{content:"\\f8e6"}.bi-brilliance:before{content:"\\f8e7"}.bi-cake-fill:before{content:"\\f8e8"}.bi-cake2-fill:before{content:"\\f8e9"}.bi-duffle-fill:before{content:"\\f8ea"}.bi-duffle:before{content:"\\f8eb"}.bi-exposure:before{content:"\\f8ec"}.bi-gender-neuter:before{content:"\\f8ed"}.bi-highlights:before{content:"\\f8ee"}.bi-luggage-fill:before{content:"\\f8ef"}.bi-luggage:before{content:"\\f8f0"}.bi-mailbox-flag:before{content:"\\f8f1"}.bi-mailbox2-flag:before{content:"\\f8f2"}.bi-noise-reduction:before{content:"\\f8f3"}.bi-passport-fill:before{content:"\\f8f4"}.bi-passport:before{content:"\\f8f5"}.bi-person-arms-up:before{content:"\\f8f6"}.bi-person-raised-hand:before{content:"\\f8f7"}.bi-person-standing-dress:before{content:"\\f8f8"}.bi-person-standing:before{content:"\\f8f9"}.bi-person-walking:before{content:"\\f8fa"}.bi-person-wheelchair:before{content:"\\f8fb"}.bi-shadows:before{content:"\\f8fc"}.bi-suitcase-fill:before{content:"\\f8fd"}.bi-suitcase-lg-fill:before{content:"\\f8fe"}.bi-suitcase-lg:before{content:"\\f8ff"}.bi-suitcase:before{content:"\\f900"}.bi-suitcase2-fill:before{content:"\\f901"}.bi-suitcase2:before{content:"\\f902"}.bi-vignette:before{content:"\\f903"}foreignObject.loci{box-sizing:border-box;border-radius:.375rem;position:relative;display:block}foreignObject.loci div.foreground{position:relative;display:flex;height:100%;width:100%;justify-content:center;align-items:center;box-sizing:inherit;border-radius:inherit;border-width:1px;border-style:solid;opacity:1}foreignObject.loci div.background{position:absolute;left:0;top:0;display:block;height:100%;width:100%;opacity:.3}foreignObject.pins div.foreground{position:relative;display:flex;height:100%;width:100%;justify-content:center;align-items:flex-end;box-sizing:border-box}foreignObject.dssp div.foreground{position:relative;display:flex;height:100%;width:100%;justify-content:center;align-items:flex-end;box-sizing:border-box}foreignObject.dssp i[class^=dssp]{position:relative;visibility:hidden;display:flex;height:100%;width:100%}foreignObject.dssp i.dssp-helix{visibility:visible;background-color:inherit;-webkit-mask-image:url("./media/dssp-helix-OTIKI7SN.svg");mask-image:url("./media/dssp-helix-OTIKI7SN.svg");-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:auto 100%;mask-size:auto 100%}foreignObject.dssp i.dssp-strand{display:flex;visibility:hidden}foreignObject.dssp i.dssp-strand:before{visibility:visible;background-color:inherit;-webkit-mask-image:url("./media/dssp-strand-tail-PA4GJMUI.svg");mask-image:url("./media/dssp-strand-tail-PA4GJMUI.svg");-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:auto 100%;mask-size:auto 100%;flex-shrink:1;flex-grow:1;content:""}foreignObject.dssp i.dssp-strand:after{visibility:visible;background-color:inherit;-webkit-mask-image:url("./media/dssp-strand-head-QWRJLFK7.svg");mask-image:url("./media/dssp-strand-head-QWRJLFK7.svg");-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:auto 100%;mask-size:auto 100%;flex-shrink:0;flex-grow:0;content:"";width:31px}.axis-grid line{stroke-opacity:.3;stroke:gray}.axis-grid line:nth-child(1){stroke-dasharray:2}.y.axis .tick text{display:none} +/*! + * Bootstrap Icons v1.11.3 (https://icons.getbootstrap.com/) + * Copyright 2019-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + */ +`],encapsulation:2,changeDetection:0});let e=t;return e})();function bl(e,t){e&1&&_t(0,"i",11)}function sl(e,t){e&1&&_t(0,"i",12)}function ul(e,t){if(e&1&&(V(0,"div"),J(1),Qe(2,bl,1,0,"i",11)(3,sl,1,0),H()),e&2){let n=t.trace;mn("text-muted",!n.expanded),ue(),Oo(" ",n.label,"\xA0 "),ue(),We(2,n.expanded?2:3)}}function dl(e,t){if(e&1&&(V(0,"div"),J(1," Right label! "),H()),e&2){let n=t.trace;mn("text-muted",!n.expanded)}}var pl="MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGPDEAPRMPEAAPPVAPAPAAPTPAAPAPAPSWPLSSSVPSQKTYQGSYGFRLGFLHSGTAKSVTCTYSPALNKMFCQLAKTCPVQLWVDSTPPPGTRVRAMAIYKQSQHMTEVVRRCPHHERCSDSDGLAPPQHLIRVEGNLRVEYLDDRNTFRHSVVVPYEPPEVGSDCTTIHYNYMCNSSCMGGMNRRPILTIITLEDSSGNLLGRNSFEVRVCACPGRDRRTEEENLRKKGEPHHELPPGSTKRALPNNTSSSPQPKKKPLDGEYFTLQIRGRERFEMFRELNEALELKDAQAGKEPGGSRAHSSHLKSKKGQSTSRHKKLMFKTEGPDSD",pf=(()=>{let t=class t{constructor(){this.settings={"line-height":24,"content-size":16,"background-color":"transparent","trace-color":"cyan","grid-color":"rgba(222, 226, 230, 0.5)","text-color":"white","margin-top":24,"margin-right":24,"margin-bottom":24,"margin-left":128},this.sequence=Array.from(pl.slice(0,100)),this.features=[{label:"Feature #1",type:"continuous",values:Array.from({length:70},()=>Math.floor(Math.random()*100)+1)},{label:"Feature #2",type:"loci","trace-color":"red",values:[{start:1,end:50},{start:30,end:60}]},{label:"Feature #3",type:"trace",position:"overlap",values:[{type:"loci",values:[{start:1,end:10}],"trace-color":"blue"},{type:"loci",values:[{start:20,end:40}],"trace-color":"red"},{type:"loci",values:[{start:60,end:100}],"trace-color":"yellow"},{type:"continuous",values:Array.from({length:70},()=>Math.floor(Math.random()*100)+1),"trace-color":"yellow"}],"background-color":"transparent"},{label:"Feature #4",type:"loci",values:[{start:27,end:56},{start:61,end:72}],nested:[{label:"Feature #5",type:"trace",values:[{type:"loci",values:[{start:1,end:5},{start:6,end:10}]},{type:"loci",values:[{start:10,end:27}]}]},{label:"Feature #6",type:"continuous",values:Array.from({length:70},()=>Math.floor(Math.random()*100)+1)}]},{label:"Feature #7",type:"loci",values:[{start:81,end:81},{start:82,end:82}],nested:[{label:"Feature #8",type:"trace",values:[{type:"loci",values:[{start:81,end:81}]},{type:"loci",values:[{start:82,end:82}]}]},{label:"Feature #9",type:"continuous","trace-color":"greenyellow",values:Array.from({length:70},()=>Math.floor(Math.random()*100)+1)}]}]}};t.\u0275fac=function(r){return new(r||t)},t.\u0275cmp=kt({type:t,selectors:[["page-features-viewer"]],decls:26,vars:3,consts:[[1,"container","pt-3"],[1,"mb-3"],[1,"d-flex","flex-row","gap-3","mb-3"],[2,"display","block","width","1rem","height","1rem","background","black","font-size","1rem","line-height","1rem"],[2,"display","block","width","1rem","height","auto","background","black","color","white","font-size","1rem","line-height",".5rem"],[2,"display","block","width","auto","height","1rem","background","black","color","white","font-size","1rem","line-height","1rem"],[1,"d-block","mb-3"],[2,"display","block","height","auto","width","100%"],[3,"sequence","features","settings"],["ngx-features-viewer-label",""],["ngx-features-viewer-label","right"],[1,"bi","bi-caret-down-fill"],[1,"bi","bi-caret-right"]],template:function(r,i){r&1&&(V(0,"div",0)(1,"div",1)(2,"h1"),J(3,"Feature viewer"),H(),V(4,"p"),J(5," The feature viewer allows you to represent features on a reference seqeunce... "),H()(),V(6,"div",2),_t(7,"div",3),V(8,"div",4),J(9," W"),H(),V(10,"div",5),J(11," W"),H()(),V(12,"div",6)(13,"p"),J(14," Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras congue velit in sem sodales pretium. Vivamus sit amet enim malesuada, efficitur quam quis, semper metus. Aenean commodo tellus eu viverra lacinia. Nam sed lectus non tellus suscipit pellentesque. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse lacus diam, laoreet eget nisl et, dictum dictum elit. Vivamus sit amet fringilla elit, vitae pulvinar nisl. Donec mattis magna lacus, id congue risus aliquet a. "),H(),V(15,"p"),J(16," Cras nec malesuada risus. Integer a tincidunt ante. Vivamus eu mauris placerat, dictum diam vitae, laoreet eros. Integer porttitor neque vel lectus ullamcorper commodo. Aliquam erat volutpat. Morbi convallis fermentum mauris, quis aliquet tellus posuere non. Nunc aliquet mattis tellus et ultrices. "),H()(),V(17,"div",7)(18,"ngx-features-viewer",8),Qe(19,ul,4,4,"ng-template",9)(20,dl,2,2,"ng-template",10),H()(),V(21,"div")(22,"p"),J(23," Morbi convallis ipsum sit amet felis faucibus mollis. Duis nec viverra nisl, nec maximus nisl. Proin non malesuada massa, sit amet auctor elit. Sed condimentum, urna id commodo semper, nisi lorem lobortis velit, eu auctor ante magna eu nibh. Aliquam mattis pulvinar sapien vitae rhoncus. Sed lacinia ex a ultrices finibus. Phasellus eu erat eu sapien laoreet dapibus ac vitae mauris. "),H(),V(24,"p"),J(25," Vestibulum elementum sem vel lorem suscipit varius. Mauris malesuada porta sapien blandit facilisis. Aliquam pretium erat nec lorem molestie, et feugiat turpis semper. Donec tempus posuere nibh, maximus hendrerit odio eleifend vitae. Praesent consequat felis leo, at ullamcorper nisl dictum sed. Morbi erat dui, sollicitudin id interdum convallis, elementum laoreet lorem. Duis leo massa, commodo id tempor sed, semper ut dui. Proin faucibus feugiat sapien, et cursus nunc. Duis eu mattis ipsum, ac facilisis quam. Donec a sapien non lectus iaculis luctus. Nulla lobortis turpis id nisi consectetur aliquet. Aliquam dignissim aliquam erat, at egestas nulla ullamcorper a. Duis porta interdum venenatis. Praesent a lorem at velit egestas efficitur eu et lectus. Suspendisse potenti. Duis imperdiet aliquam hendrerit. "),H()()()),r&2&&(ue(18),ze("sequence",i.sequence)("features",i.features)("settings",i.settings))},dependencies:[zt,yt],changeDetection:0});let e=t;return e})();var hl=[{path:"",component:pf}],w0=(()=>{let t=class t{};t.\u0275fac=function(r){return new(r||t)},t.\u0275mod=Eo({type:t}),t.\u0275inj=qo({imports:[yt,jo.forChild(hl),St]});let e=t;return e})();export{w0 as PageFeaturesViewerModule}; diff --git a/docs/chunk-ED6QR4VZ.js b/docs/chunk-ED6QR4VZ.js new file mode 100644 index 0000000..59f8141 --- /dev/null +++ b/docs/chunk-ED6QR4VZ.js @@ -0,0 +1 @@ +import{a as s}from"./chunk-SAL4EXGL.js";import{n as o}from"./chunk-T4BLILQN.js";var m=(()=>{let t=class t{constructor(){this.theme$=new o(this.getStoredTheme()),this._theme=this.theme$.subscribe(e=>{this.setStoredTheme(e),e==="auto"&&(e=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),document.documentElement.setAttribute("data-bs-theme",e)})}getStoredTheme(){return localStorage.getItem("theme")||"auto"}setStoredTheme(e){localStorage.setItem("theme",e)}ngOnDestroy(){this._theme.unsubscribe()}};t.\u0275fac=function(i){return new(i||t)},t.\u0275prov=s({token:t,factory:t.\u0275fac,providedIn:"root"});let r=t;return r})();export{m as a}; diff --git a/docs/chunk-L7IOURQX.js b/docs/chunk-L7IOURQX.js new file mode 100644 index 0000000..49e332e --- /dev/null +++ b/docs/chunk-L7IOURQX.js @@ -0,0 +1 @@ +import{md as G,n as at,pd as mt}from"./chunk-TI7GFU47.js";import{A as v,B as k,J as T,K as $,L as tt,N as A,Q as ot,R as st,S as J,V as pt,W as nt,X as et,a as m,b as N,ba as it,c as r,e as Z,ea as B,f as H,fa as lt,h as Q,ma as rt,n as W,o as C,q as D,r as U,s as X,z as x}from"./chunk-SAL4EXGL.js";import{C as I,E as Y,Q as a,T as f,V as w,X as V,a as y,g as h,n as q,o as _,q as c,v as F,w as E}from"./chunk-T4BLILQN.js";function K(p){let t;p=p.replace(/^#/,""),[t,p]=[p.slice(6,8),p.slice(0,6)];let ht=at.fromHexStyle("#"+p),o=+("0x"+(t||"ff"))/255;return[ht,1-o]}var g=(()=>{let t=class t{constructor(){this.molstar$=c(import("./chunk-MDWTV2PZ.js")).pipe(w(o=>this._molstar=o),a(1))}get molstar(){return this._molstar}};t.\u0275fac=function(s){return new(s||t)},t.\u0275prov=m({token:t,factory:t.\u0275fac,providedIn:"root"});let p=t;return p})();var u=(()=>{let t=class t{get plugin(){return this._plugin}constructor(o){this.molstarService=o,this.spec={canvas3d:{transparentBackground:!0}},this.container$=new _(1);let{molstar$:s}=this.molstarService;this.plugin$=E([this.container$,s]).pipe(f(([n])=>c(this.initPlugin(n))),a(1))}initPlugin(o){return h(this,null,function*(){let{createPluginUI:s,renderReact18:n,DefaultPluginUISpec:e}=this.molstarService.molstar,i=y({},e());return this._plugin=yield s({target:o.nativeElement,render:n,spec:i})})}};t.\u0275fac=function(s){return new(s||t)(r(g))},t.\u0275prov=m({token:t,factory:t.\u0275fac});let p=t;return p})();var P=(()=>{let t=class t{get source(){return this.source$.value}constructor(o,s){this.molstarService=o,this.pluginService=s,this.source$=new q(null),this.structure$=this.pluginService.plugin$.pipe(Y(this.source$),w(([n,e])=>console.log("plugin",n,"source",e)),f(([,n])=>c(this.parseSource(n))),I(n=>!!n),f(n=>c(this.createStructure(n,this.source))),w(n=>this.setResidues(n.cell?.obj?.data)),a(1))}parseSource(o){return h(this,null,function*(){return yield this.pluginService.plugin.clear(),o?o.type==="local"?yield this.parseLocalSource(o):yield this.parseRemoteSource(o):null})}parseRemoteSource(o){return h(this,null,function*(){let{Asset:s}=this.molstarService.molstar,n=s.Url(o.link),e=o.label,i=o.binary;return this.pluginService.plugin.builders.data.download({url:n,label:e,isBinary:i})})}parseLocalSource(o){return h(this,null,function*(){let{Asset:s}=this.molstarService.molstar,n=o.binary,e=o.label,i=this.pluginService.plugin;if(typeof o.data=="string")return i.builders.data.rawData({data:o.data,label:e});let l;if(o.data instanceof File)l=s.File(o.data);else{let S=o.format==="mmcif"?"cif":"ent",b=`${e}.${S}`;l=s.File(new File([o.data],b))}let{data:d}=yield i.builders.data.readFile({file:l,label:e,isBinary:n});return d})}createStructure(o,s){return h(this,null,function*(){let n=this.pluginService.plugin,e=yield n.builders.structure.parseTrajectory(o,s.format),i=yield n.builders.structure.createModel(e,{modelIndex:0});return n.builders.structure.createStructure(i,{name:"model",params:{}})})}setResidues(o){let s=0,n=this.r2i=new Map,e=this.i2r=new Map;mt.eachAtomicHierarchyElement(o,{residue:i=>{let l=G.residue.auth_seq_id(i),d=G.residue.pdbx_PDB_ins_code(i),b=(G.chain.auth_asym_id(i)+","+l+d).trim();n.set(b,s),e.set(s,b),s++}})}};t.\u0275fac=function(s){return new(s||t)(r(g),r(u))},t.\u0275prov=m({token:t,factory:t.\u0275fac});let p=t;return p})();var O=(()=>{let t=class t{get settings(){return this.settings$.value}constructor(o){this.pluginService=o,this.DEFAULT={"backbone-color":"#000000","background-color":"#FFFFFF","interaction-color":"#FF0000","interaction-size":.1},this.settings$=new q(this.DEFAULT);let{plugin$:s}=this.pluginService,n=E([s,this.settings$]);this._settings=n.subscribe(([e,i])=>{let[l,d]=K(i["background-color"]);e.canvas3d?.setProps({renderer:{backgroundColor:l},transparentBackground:d===1})})}ngOnDestroy(){this._settings.unsubscribe()}};t.\u0275fac=function(s){return new(s||t)(r(u))},t.\u0275prov=m({token:t,factory:t.\u0275fac});let p=t;return p})();var L=(()=>{let t=class t{set loci(o){this.loci$.next(o)}set interactions(o){this.interactions$.next(o)}constructor(o,s,n,e){this.structureService=o,this.settingsService=s,this.molstarService=n,this.pluginService=e,this.loci$=new _(1),this.interactions$=new _(1);let i=this.structureService.source$.pipe(I(d=>d!=null)),l=this.structureService.structure$.pipe(V(i),f(([d,S])=>c(h(this,null,function*(){let b=this.pluginService.plugin,ct=yield b.builders.structure.tryCreateComponentStatic(d,"polymer",{label:S.label});yield b.builders.structure.representation.addRepresentation(ct,{type:"cartoon",color:"uniform",colorParams:{value:K("#000000")}})}))),a(1));this.representation$=l.pipe(Y(this.settingsService.settings$),F(()=>{})),this._representation=this.representation$.subscribe()}ngOnDestroy(){this._representation.unsubscribe()}};t.\u0275fac=function(s){return new(s||t)(r(P),r(O),r(g),r(u))},t.\u0275prov=m({token:t,factory:t.\u0275fac});let p=t;return p})();var ft=["container"],z=(()=>{let t=class t{constructor(o,s,n,e,i){this.representationService=o,this.structureService=s,this.settingsService=n,this.molstarService=e,this.pluginService=i,this.background$=this.settingsService.settings$.pipe(F(l=>l["background-color"]),a(1))}ngOnChanges(o){if(o.settings){let{DEFAULT:s}=this.settingsService,n=this.settings||{};this.settingsService.settings$.next(y(y({},s),n))}o.source&&this.structureService.source$.next(this.source),o.loci}ngAfterViewInit(){this.pluginService.container$.next(this.container)}};t.\u0275fac=function(s){return new(s||t)(C(L),C(P),C(O),C(g),C(u))},t.\u0275cmp=Z({type:t,selectors:[["ngx-structure-viewer"]],viewQuery:function(s,n){if(s&1&&T(ft,5),s&2){let e;$(e=tt())&&(n.container=e.first)}},inputs:{settings:"settings",source:"source",loci:"loci"},standalone:!0,features:[ot([L,P,O,g,u]),Q,st],decls:3,vars:4,consts:[["container",""]],template:function(s,n){s&1&&(k(0,"div",null,0),pt(2,"async")),s&2&&X("background-color",nt(2,2,n.background$))},dependencies:[B,it],styles:["[_nghost-%COMP%]{overflow:hidden;display:block;height:100%;width:100%}[_nghost-%COMP%] .msp-plugin{font-family:Helvetica Neue,Segoe UI,Helvetica,Source Sans Pro,Arial,sans-serif;font-size:14px;line-height:1.42857143;position:absolute;inset:0;background:#111318}[_nghost-%COMP%] .msp-plugin *{box-sizing:border-box}[_nghost-%COMP%] .msp-plugin [hidden], [_nghost-%COMP%] .msp-plugin template{display:none}[_nghost-%COMP%] .msp-plugin a{background-color:transparent}[_nghost-%COMP%] .msp-plugin a:active, [_nghost-%COMP%] .msp-plugin a:hover{outline:0}[_nghost-%COMP%] .msp-plugin abbr[title]{border-bottom:1px dotted}[_nghost-%COMP%] .msp-plugin b, [_nghost-%COMP%] .msp-plugin strong{font-weight:700}[_nghost-%COMP%] .msp-plugin small{font-size:80%}[_nghost-%COMP%] .msp-plugin img{border:0}[_nghost-%COMP%] .msp-plugin svg:not(:root){overflow:hidden}[_nghost-%COMP%] .msp-plugin button, [_nghost-%COMP%] .msp-plugin input, [_nghost-%COMP%] .msp-plugin optgroup, [_nghost-%COMP%] .msp-plugin select, [_nghost-%COMP%] .msp-plugin textarea{color:inherit;font:inherit;margin:0}[_nghost-%COMP%] .msp-plugin button{overflow:visible}[_nghost-%COMP%] .msp-plugin button, [_nghost-%COMP%] .msp-plugin select{text-transform:none}[_nghost-%COMP%] .msp-plugin button, [_nghost-%COMP%] .msp-plugin html input[type=button], [_nghost-%COMP%] .msp-plugin input[type=reset], [_nghost-%COMP%] .msp-plugin input[type=submit]{-webkit-appearance:button;cursor:pointer}[_nghost-%COMP%] .msp-plugin button[disabled], [_nghost-%COMP%] .msp-plugin html input[disabled]{cursor:default}[_nghost-%COMP%] .msp-plugin button::-moz-focus-inner, [_nghost-%COMP%] .msp-plugin input::-moz-focus-inner{border:0;padding:0}[_nghost-%COMP%] .msp-plugin input{line-height:normal}[_nghost-%COMP%] .msp-plugin input[type=checkbox], [_nghost-%COMP%] .msp-plugin input[type=radio]{box-sizing:border-box;padding:0}[_nghost-%COMP%] .msp-plugin input[type=number]::-webkit-inner-spin-button, [_nghost-%COMP%] .msp-plugin input[type=number]::-webkit-outer-spin-button{height:auto}[_nghost-%COMP%] .msp-plugin textarea{overflow:auto}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded, [_nghost-%COMP%] .msp-plugin .msp-layout-standard{inset:0}[_nghost-%COMP%] .msp-plugin .msp-layout-standard{border:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-region{overflow:hidden}[_nghost-%COMP%] .msp-plugin .msp-layout-static, [_nghost-%COMP%] .msp-plugin .msp-layout-scrollable{position:absolute}[_nghost-%COMP%] .msp-plugin .msp-scrollable{overflow-y:auto}[_nghost-%COMP%] .msp-plugin .msp-scrollable-container{position:absolute;inset:0;overflow-y:auto}[_nghost-%COMP%] .msp-plugin .msp-layout-static{overflow:hidden}[_nghost-%COMP%] .msp-plugin .msp-layout-top .msp-layout-static, [_nghost-%COMP%] .msp-plugin .msp-layout-main .msp-layout-static, [_nghost-%COMP%] .msp-plugin .msp-layout-bottom .msp-layout-static{inset:0}[_nghost-%COMP%] .msp-plugin .msp-layout-right .msp-layout-static{inset:0}[_nghost-%COMP%] .msp-plugin .msp-layout-right .msp-layout-scrollable{inset:43px 0 0}[_nghost-%COMP%] .msp-plugin .msp-layout-left .msp-layout-static{inset:0}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside{position:absolute}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-main{position:absolute;inset:0}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-top{position:absolute;right:0;height:97px;top:-97px;width:50%;border-left:1px solid #313645;border-bottom:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;top:-97px;width:50%;border-bottom:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-right{position:absolute;width:50%;right:0;bottom:-295px;height:295px;border-left:1px solid #313645;border-top:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-left{position:absolute;width:50%;left:0;bottom:-295px;height:295px;border-top:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-hide-right .msp-layout-right{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-hide-right .msp-layout-left{width:100%}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-hide-left .msp-layout-left{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-collapse-left .msp-layout-left{width:32px}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-hide-top .msp-layout-top{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-hide-bottom .msp-layout-bottom{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-outside .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape{position:absolute}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-main{position:absolute;inset:100px 300px 70px 330px}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-top{position:absolute;left:330px;right:300px;height:100px;top:0;border-bottom:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-bottom{position:absolute;left:330px;right:300px;height:70px;bottom:0;border-top:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-right{position:absolute;width:300px;right:0;bottom:0;top:0;border-left:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-left{position:absolute;width:330px;left:0;bottom:0;top:0;border-right:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-right{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-main, [_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-top, [_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-hide-right .msp-layout-bottom{right:0}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-left{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-main, [_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-top, [_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-hide-left .msp-layout-bottom{left:0}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-left{width:32px}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-main, [_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-top, [_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-collapse-left .msp-layout-bottom{left:32px}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-hide-bottom .msp-layout-bottom{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-hide-bottom .msp-layout-main{bottom:0}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-hide-top .msp-layout-top{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-landscape .msp-layout-hide-top .msp-layout-main{top:0}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait{position:absolute}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-main{position:absolute;inset:97px 0 361px}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-top{position:absolute;right:0;height:97px;top:0;width:50%;border-left:1px solid #313645;border-bottom:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;width:50%;border-bottom:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-right{position:absolute;width:50%;right:0;bottom:0;height:361px;border-left:1px solid #313645;border-top:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-left{position:absolute;width:50%;left:0;bottom:0;height:361px;border-top:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-hide-right .msp-layout-right{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-hide-right .msp-layout-left{width:100%}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-hide-left .msp-layout-left{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-hide-right.msp-layout-hide-left .msp-layout-main{bottom:0}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-collapse-left .msp-layout-left{width:32px}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-hide-top .msp-layout-top{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-hide-bottom .msp-layout-bottom{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-portrait .msp-layout-hide-top.msp-layout-hide-bottom .msp-layout-main{top:0}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive{position:absolute}@media (orientation: landscape),(min-width: 1000px){[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-main{position:absolute;inset:100px 300px 70px 330px}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-top{position:absolute;left:330px;right:300px;height:100px;top:0;border-bottom:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-bottom{position:absolute;left:330px;right:300px;height:70px;bottom:0;border-top:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-right{position:absolute;width:300px;right:0;bottom:0;top:0;border-left:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-left{position:absolute;width:330px;left:0;bottom:0;top:0;border-right:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-right{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-main, [_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-top, [_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-bottom{right:0}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-left{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-main, [_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-top, [_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-bottom{left:0}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-left{width:32px}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-main, [_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-top, [_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-bottom{left:32px}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-bottom{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-main{bottom:0}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-top{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-main{top:0}}@media (orientation: portrait) and (max-width: 1000px){[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-main{position:absolute;inset:97px 0 361px}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-top{position:absolute;right:0;height:97px;top:0;width:50%;border-left:1px solid #313645;border-bottom:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;width:50%;border-bottom:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-right{position:absolute;width:50%;right:0;bottom:0;height:361px;border-left:1px solid #313645;border-top:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-left{position:absolute;width:50%;left:0;bottom:0;height:361px;border-top:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-right{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right .msp-layout-left{width:100%}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-left{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-right.msp-layout-hide-left .msp-layout-main{bottom:0}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-left{width:32px}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-top{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-bottom{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}[_nghost-%COMP%] .msp-plugin .msp-layout-standard-reactive .msp-layout-hide-top.msp-layout-hide-bottom .msp-layout-main{top:0}}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded{position:fixed}@media (orientation: landscape){[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-main{position:absolute;inset:100px 300px 70px 330px}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-top{position:absolute;left:330px;right:300px;height:100px;top:0;border-bottom:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-bottom{position:absolute;left:330px;right:300px;height:70px;bottom:0;border-top:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-right{position:absolute;width:300px;right:0;bottom:0;top:0;border-left:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-left{position:absolute;width:330px;left:0;bottom:0;top:0;border-right:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-right{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-main, [_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-top, [_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-bottom{right:0}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-left{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-main, [_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-top, [_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-bottom{left:0}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-left{width:32px}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-main, [_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-top, [_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-bottom{left:32px}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-bottom{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-main{bottom:0}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-top{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-main{top:0}}@media (orientation: portrait){[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-main{position:absolute;inset:97px 0 361px}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-top{position:absolute;right:0;height:97px;top:0;width:50%;border-left:1px solid #313645;border-bottom:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-bottom{position:absolute;left:0;right:0;height:97px;width:50%;border-bottom:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-right{position:absolute;width:50%;right:0;bottom:0;height:361px;border-left:1px solid #313645;border-top:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-left{position:absolute;width:50%;left:0;bottom:0;height:361px;border-top:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-right{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-right .msp-layout-left{width:100%}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-left{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-left .msp-layout-right{width:100%;border-left:none}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-right.msp-layout-hide-left .msp-layout-main{bottom:0}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-left{width:32px}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-collapse-left .msp-layout-right{left:32px;width:auto}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-top{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-top .msp-layout-bottom{width:100%;border-left:none}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-bottom{display:none}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-bottom .msp-layout-top{width:100%;border-left:none}[_nghost-%COMP%] .msp-plugin .msp-layout-expanded .msp-layout-hide-top.msp-layout-hide-bottom .msp-layout-main{top:0}}[_nghost-%COMP%] .msp-plugin ::-webkit-scrollbar{width:10px;height:10px}[_nghost-%COMP%] .msp-plugin ::-webkit-scrollbar-track{border-radius:0;background-color:#16191f}[_nghost-%COMP%] .msp-plugin ::-webkit-scrollbar-thumb{border-radius:0;background-color:#0e0f14}[_nghost-%COMP%] .msp-plugin .msp-form-control, [_nghost-%COMP%] .msp-plugin .msp-control-row select, [_nghost-%COMP%] .msp-plugin .msp-control-row button, [_nghost-%COMP%] .msp-plugin .msp-control-row input[type=text], [_nghost-%COMP%] .msp-plugin .msp-btn{display:block;width:100%;background:#0c0d11;border:none;padding:0 10px;line-height:30px;height:32px;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-box-shadow:none;box-shadow:none;background-image:none}[_nghost-%COMP%] .msp-plugin .msp-form-control::-moz-placeholder, [_nghost-%COMP%] .msp-plugin .msp-control-row select::-moz-placeholder, [_nghost-%COMP%] .msp-plugin .msp-control-row button::-moz-placeholder, [_nghost-%COMP%] .msp-plugin .msp-control-row input[type=text]::-moz-placeholder, [_nghost-%COMP%] .msp-plugin .msp-btn::-moz-placeholder{color:#637ca0;opacity:1}[_nghost-%COMP%] .msp-plugin .msp-form-control:-ms-input-placeholder, [_nghost-%COMP%] .msp-plugin .msp-control-row select:-ms-input-placeholder, [_nghost-%COMP%] .msp-plugin .msp-control-row button:-ms-input-placeholder, [_nghost-%COMP%] .msp-plugin .msp-control-row input[type=text]:-ms-input-placeholder, [_nghost-%COMP%] .msp-plugin .msp-btn:-ms-input-placeholder{color:#637ca0}[_nghost-%COMP%] .msp-plugin .msp-form-control::-webkit-input-placeholder, [_nghost-%COMP%] .msp-plugin .msp-control-row select::-webkit-input-placeholder, [_nghost-%COMP%] .msp-plugin .msp-control-row button::-webkit-input-placeholder, [_nghost-%COMP%] .msp-plugin .msp-control-row input[type=text]::-webkit-input-placeholder, [_nghost-%COMP%] .msp-plugin .msp-btn::-webkit-input-placeholder{color:#637ca0}[_nghost-%COMP%] .msp-plugin .msp-form-control:hover, [_nghost-%COMP%] .msp-plugin .msp-control-row select:hover, [_nghost-%COMP%] .msp-plugin .msp-control-row button:hover, [_nghost-%COMP%] .msp-plugin .msp-control-row input[type=text]:hover, [_nghost-%COMP%] .msp-plugin .msp-btn:hover{color:#51a2fb;background-color:#16191f;border:none;outline-offset:-1px!important;outline:1px solid #363c4c!important}[_nghost-%COMP%] .msp-plugin .msp-form-control:active, [_nghost-%COMP%] .msp-plugin .msp-control-row select:active, [_nghost-%COMP%] .msp-plugin .msp-control-row button:active, [_nghost-%COMP%] .msp-plugin .msp-control-row input[type=text]:active, [_nghost-%COMP%] .msp-plugin .msp-btn:active, [_nghost-%COMP%] .msp-plugin .msp-form-control:focus, [_nghost-%COMP%] .msp-plugin .msp-control-row select:focus, [_nghost-%COMP%] .msp-plugin .msp-control-row button:focus, [_nghost-%COMP%] .msp-plugin .msp-control-row input[type=text]:focus, [_nghost-%COMP%] .msp-plugin .msp-btn:focus{color:#ccd4e0;background-color:#0c0d11;border:none;outline-offset:0;outline:none}[_nghost-%COMP%] .msp-plugin .msp-form-control[disabled], [_nghost-%COMP%] .msp-plugin .msp-control-row select[disabled], [_nghost-%COMP%] .msp-plugin .msp-control-row button[disabled], [_nghost-%COMP%] .msp-plugin .msp-control-row input[disabled][type=text], [_nghost-%COMP%] .msp-plugin [disabled].msp-btn, [_nghost-%COMP%] .msp-plugin .msp-form-control[readonly], [_nghost-%COMP%] .msp-plugin .msp-control-row select[readonly], [_nghost-%COMP%] .msp-plugin .msp-control-row button[readonly], [_nghost-%COMP%] .msp-plugin .msp-control-row input[readonly][type=text], [_nghost-%COMP%] .msp-plugin [readonly].msp-btn, fieldset[disabled] [_nghost-%COMP%] .msp-plugin .msp-form-control, [_nghost-%COMP%] fieldset[disabled][_ngcontent-%COMP%] -shadowcsshost .msp-plugin .msp-control-row select, [_nghost-%COMP%] fieldset[disabled][_ngcontent-%COMP%] -shadowcsshost .msp-plugin .msp-control-row button, [_nghost-%COMP%] fieldset[disabled][_ngcontent-%COMP%] -shadowcsshost .msp-plugin .msp-control-row input[type=text], [_nghost-%COMP%] fieldset[disabled][_ngcontent-%COMP%] -shadowcsshost .msp-plugin .msp-btn{background:#111318;opacity:.35}[_nghost-%COMP%] .msp-plugin .msp-btn, [_nghost-%COMP%] .msp-plugin .msp-control-row button{display:inline-block;margin-bottom:0;text-align:center;touch-action:manipulation;cursor:pointer;background-image:none;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:0 10px;line-height:32px;border:none;-moz-box-sizing:border-box;box-sizing:border-box}[_nghost-%COMP%] .msp-plugin .msp-btn[disabled], [_nghost-%COMP%] .msp-plugin .msp-control-row button[disabled]{background:#111318;opacity:.35}[_nghost-%COMP%] .msp-plugin .msp-btn-block, [_nghost-%COMP%] .msp-plugin .msp-control-row button{display:block;width:100%}[_nghost-%COMP%] .msp-plugin .msp-btn, [_nghost-%COMP%] .msp-plugin .msp-control-row button, [_nghost-%COMP%] .msp-plugin .msp-btn:active, [_nghost-%COMP%] .msp-plugin .msp-btn-link:focus, [_nghost-%COMP%] .msp-plugin .msp-btn:hover{outline:none}[_nghost-%COMP%] .msp-plugin .msp-material-icon svg{display:inline-flex;vertical-align:middle;font-size:1.2em;margin-bottom:3px;fill:currentColor;width:1em;height:1em;flex-shrink:0;-webkit-user-select:none;user-select:none}[_nghost-%COMP%] .msp-plugin .msp-btn-block>.msp-material-icon, [_nghost-%COMP%] .msp-plugin .msp-control-row button>.msp-material-icon{margin-left:0;margin-right:.4em}[_nghost-%COMP%] .msp-plugin .msp-btn-childless>.msp-material-icon{margin-left:0;margin-right:0}[_nghost-%COMP%] .msp-plugin .msp-btn-icon{border:none;height:32px;width:32px;line-height:32px;padding:0;text-align:center}[_nghost-%COMP%] .msp-plugin .msp-btn-icon:hover{color:#51a2fb;background-color:#16191f;border:none;outline-offset:-1px!important;outline:1px solid #363c4c!important}[_nghost-%COMP%] .msp-plugin .msp-btn-icon[disabled], [_nghost-%COMP%] .msp-plugin .msp-btn-icon[disabled]:hover, [_nghost-%COMP%] .msp-plugin .msp-btn-icon[disabled]:active{color:#637ca0}[_nghost-%COMP%] .msp-plugin .msp-btn-icon-small{border:none;height:32px;width:20px;line-height:32px;padding:0;text-align:center}[_nghost-%COMP%] .msp-plugin .msp-btn-icon-small:hover{color:#51a2fb;background-color:#16191f;border:none;outline-offset:-1px!important;outline:1px solid #363c4c!important}[_nghost-%COMP%] .msp-plugin .msp-btn-icon-small[disabled], [_nghost-%COMP%] .msp-plugin .msp-btn-icon-small[disabled]:hover, [_nghost-%COMP%] .msp-plugin .msp-btn-icon-small[disabled]:active{color:#637ca0}[_nghost-%COMP%] .msp-plugin .msp-btn-link{font-weight:400;border-radius:0}[_nghost-%COMP%] .msp-plugin .msp-btn-link, [_nghost-%COMP%] .msp-plugin .msp-btn-link:active, [_nghost-%COMP%] .msp-plugin .msp-btn-link.active, [_nghost-%COMP%] .msp-plugin .msp-btn-link[disabled], fieldset[disabled] [_nghost-%COMP%] .msp-plugin .msp-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}[_nghost-%COMP%] .msp-plugin .msp-btn-link, [_nghost-%COMP%] .msp-plugin .msp-btn-link:hover, [_nghost-%COMP%] .msp-plugin .msp-btn-link:focus, [_nghost-%COMP%] .msp-plugin .msp-btn-link:active{border-color:transparent}[_nghost-%COMP%] .msp-plugin .msp-btn-link:hover, [_nghost-%COMP%] .msp-plugin .msp-btn-link:focus{text-decoration:none;background-color:transparent}[_nghost-%COMP%] .msp-plugin .msp-btn-link[disabled]:hover, [_nghost-%COMP%] .msp-plugin .msp-btn-link[disabled]:focus, fieldset[disabled] [_nghost-%COMP%] .msp-plugin .msp-btn-link:hover, fieldset[disabled] [_nghost-%COMP%] .msp-plugin .msp-btn-link:focus{text-decoration:none}[_nghost-%COMP%] .msp-plugin .msp-btn-link .msp-icon{font-size:100%}[_nghost-%COMP%] .msp-plugin .msp-btn-link, [_nghost-%COMP%] .msp-plugin .msp-btn-link:active, [_nghost-%COMP%] .msp-plugin .msp-btn-link:focus{color:#ccd4e0;text-decoration:none}[_nghost-%COMP%] .msp-plugin .msp-btn-link:hover{color:#51a2fb;text-decoration:none}[_nghost-%COMP%] .msp-plugin .msp-btn-link-toggle-on{color:#ccd4e0}[_nghost-%COMP%] .msp-plugin .msp-btn-link-toggle-off, [_nghost-%COMP%] .msp-plugin .msp-btn-link-toggle-off:active, [_nghost-%COMP%] .msp-plugin .msp-btn-link-toggle-off:focus{color:#637ca0!important}[_nghost-%COMP%] .msp-plugin .msp-btn-link-toggle-off:hover, [_nghost-%COMP%] .msp-plugin .msp-btn-link-toggle-on:hover{color:#51a2fb!important}[_nghost-%COMP%] .msp-plugin .msp-btn-action, [_nghost-%COMP%] .msp-plugin .msp-btn-action:active, [_nghost-%COMP%] .msp-plugin .msp-btn-action:focus{color:#ccd4e0;background:#0c0d11}[_nghost-%COMP%] .msp-plugin .msp-btn-action:hover{color:#51a2fb;background:#060709}[_nghost-%COMP%] .msp-plugin .msp-btn-action[disabled], [_nghost-%COMP%] .msp-plugin .msp-btn-action[disabled]:hover, [_nghost-%COMP%] .msp-plugin .msp-btn-action[disabled]:active, [_nghost-%COMP%] .msp-plugin .msp-btn-action[disabled]:focus{color:#c9d1de}[_nghost-%COMP%] .msp-plugin .msp-btn-commit-on, [_nghost-%COMP%] .msp-plugin .msp-btn-commit-on:active, [_nghost-%COMP%] .msp-plugin .msp-btn-commit-on:focus{color:#68befd;background:#0d0e12}[_nghost-%COMP%] .msp-plugin .msp-btn-commit-on:hover{color:#51a2fb;background:#07080b}[_nghost-%COMP%] .msp-plugin .msp-btn-commit-on[disabled], [_nghost-%COMP%] .msp-plugin .msp-btn-commit-on[disabled]:hover, [_nghost-%COMP%] .msp-plugin .msp-btn-commit-on[disabled]:active, [_nghost-%COMP%] .msp-plugin .msp-btn-commit-on[disabled]:focus{color:#63bcfd}[_nghost-%COMP%] .msp-plugin .msp-btn-commit-off, [_nghost-%COMP%] .msp-plugin .msp-btn-commit-off:active, [_nghost-%COMP%] .msp-plugin .msp-btn-commit-off:focus{color:#ccd4e0;background:#090a0c}[_nghost-%COMP%] .msp-plugin .msp-btn-commit-off:hover{color:#51a2fb;background:#030405}[_nghost-%COMP%] .msp-plugin .msp-btn-commit-off[disabled], [_nghost-%COMP%] .msp-plugin .msp-btn-commit-off[disabled]:hover, [_nghost-%COMP%] .msp-plugin .msp-btn-commit-off[disabled]:active, [_nghost-%COMP%] .msp-plugin .msp-btn-commit-off[disabled]:focus{color:#c9d1de}[_nghost-%COMP%] .msp-plugin .msp-btn-remove:hover{color:#f2f4f7}[_nghost-%COMP%] .msp-plugin .msp-btn-commit-on:hover{color:#0393fc}[_nghost-%COMP%] .msp-plugin .msp-btn-action{height:32px;line-height:32px}[_nghost-%COMP%] .msp-plugin input[type=file]{display:block}[_nghost-%COMP%] .msp-plugin input[type=range]{display:block;width:100%}[_nghost-%COMP%] .msp-plugin select[multiple], [_nghost-%COMP%] .msp-plugin select[size]{height:auto}[_nghost-%COMP%] .msp-plugin textarea.msp-form-control, [_nghost-%COMP%] .msp-plugin textarea.msp-btn{height:auto}[_nghost-%COMP%] .msp-plugin .msp-control-top-offset{margin-top:1px}[_nghost-%COMP%] .msp-plugin .msp-btn-commit{text-align:right;padding:0 10px 0 0;line-height:32px;border:none;overflow:hidden;font-weight:700}[_nghost-%COMP%] .msp-plugin .msp-btn-commit .msp-icon{display:block-inline;line-height:32px;width:32px;text-align:center}[_nghost-%COMP%] .msp-plugin select.msp-form-control, [_nghost-%COMP%] .msp-plugin .msp-control-row select, [_nghost-%COMP%] .msp-plugin select.msp-btn{background:none;background-color:#0c0d11;background-size:8px 12px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAMAAACzvE1FAAAADFBMVEUzMzMzMzMzMzMzMzMKAG/3AAAAA3RSTlMAf4C/aSLHAAAAPElEQVR42q3NMQ4AIAgEQTn//2cLdRKppSGzBYwzVXvznNWs8C58CiussPJj8h6NwgorrKRdTvuV9v16Afn0AYFOB7aYAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:right 10px center;padding-right:24px}[_nghost-%COMP%] .msp-plugin select.msp-form-control:-moz-focusring, [_nghost-%COMP%] .msp-plugin .msp-control-row select:-moz-focusring, [_nghost-%COMP%] .msp-plugin select.msp-btn:-moz-focusring{color:transparent;text-shadow:0 0 0 #ccd4e0}[_nghost-%COMP%] .msp-plugin .msp-default-bg{background:#111318}[_nghost-%COMP%] .msp-plugin .msp-transparent-bg{background:transparent}[_nghost-%COMP%] .msp-plugin .msp-no-hover-outline:hover{color:#51a2fb;background-color:inherit;border:none;outline-offset:0!important;outline:none!important}[_nghost-%COMP%] .msp-plugin .msp-icon-inline{margin-right:8px}[_nghost-%COMP%] .msp-plugin .msp-control-row{position:relative;height:32px;background:#111318;margin-top:1px}[_nghost-%COMP%] .msp-plugin .msp-control-row>span.msp-control-row-label, [_nghost-%COMP%] .msp-plugin .msp-control-row>button.msp-control-button-label{line-height:32px;display:block;width:120px;text-align:right;padding:0 10px;color:#9cacc3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default}[_nghost-%COMP%] .msp-plugin .msp-control-row>button.msp-control-button-label{background:#111318;cursor:pointer}[_nghost-%COMP%] .msp-plugin .msp-control-row .msp-control-current{background:#111318}[_nghost-%COMP%] .msp-plugin .msp-control-row>div.msp-control-row-ctrl{position:absolute;inset:0 0 0 120px}[_nghost-%COMP%] .msp-plugin .msp-control-row>div{background:#0c0d11}[_nghost-%COMP%] .msp-plugin .msp-control-row>.msp-flex-row, [_nghost-%COMP%] .msp-plugin .msp-control-row>.msp-state-image-row{background:#111318}[_nghost-%COMP%] .msp-plugin .msp-control-label-short>span{width:80px!important}[_nghost-%COMP%] .msp-plugin .msp-control-label-short>div:nth-child(2){left:80px!important}[_nghost-%COMP%] .msp-plugin .msp-control-col-2{float:left;width:50%}[_nghost-%COMP%] .msp-plugin .msp-control-twoline{height:64px!important}[_nghost-%COMP%] .msp-plugin .msp-control-group{position:relative}[_nghost-%COMP%] .msp-plugin .msp-toggle-button .msp-icon{display:inline-block;margin-right:6px}[_nghost-%COMP%] .msp-plugin .msp-toggle-button>div>button:hover{border-color:#16191f!important;border:none;outline-offset:-1px!important;outline:1px solid #363c4c!important}[_nghost-%COMP%] .msp-plugin .msp-slider>div:first-child{position:absolute;inset:0 62px 0 18px;display:flex}[_nghost-%COMP%] .msp-plugin .msp-slider>div:last-child{position:absolute;height:32px;line-height:32px;text-align:center;right:0;width:50px;top:0;bottom:0}[_nghost-%COMP%] .msp-plugin .msp-slider input[type=text]{padding-right:6px;padding-left:4px;font-size:80%;text-align:right}[_nghost-%COMP%] .msp-plugin .msp-slider2>div:first-child{position:absolute;height:32px;line-height:32px;text-align:center;left:0;width:25px;top:0;bottom:0;font-size:80%}[_nghost-%COMP%] .msp-plugin .msp-slider2>div:nth-child(2){position:absolute;inset:0 37px 0 35px;display:flex}[_nghost-%COMP%] .msp-plugin .msp-slider2>div:last-child{position:absolute;height:32px;line-height:32px;text-align:center;right:0;width:25px;top:0;bottom:0;font-size:80%}[_nghost-%COMP%] .msp-plugin .msp-slider2 input[type=text]{padding-right:4px;padding-left:4px;font-size:80%;text-align:center}[_nghost-%COMP%] .msp-plugin .msp-toggle-color-picker button{border:10px solid #0c0d11!important;margin:0;text-align:center;padding-right:10px;padding-left:10px}[_nghost-%COMP%] .msp-plugin .msp-toggle-color-picker button:hover{border-color:#16191f!important;border:none;outline-offset:-1px!important;outline:1px solid #363c4c!important}[_nghost-%COMP%] .msp-plugin .msp-toggle-color-picker .msp-color-picker{position:absolute;z-index:100000;background:#111318;border-top:1px solid #111318;padding-bottom:5px;width:100%}[_nghost-%COMP%] .msp-plugin .msp-toggle-color-picker-above .msp-color-picker{top:-85px;height:85px}[_nghost-%COMP%] .msp-plugin .msp-toggle-color-picker-below .msp-color-picker{top:32px;height:80px}[_nghost-%COMP%] .msp-plugin .msp-control-offset{padding-left:10px}[_nghost-%COMP%] .msp-plugin .msp-accent-offset{padding-left:1px;margin-left:8px;border-left:2px solid #d67118}[_nghost-%COMP%] .msp-plugin .msp-control-group-wrapper{margin-bottom:0;margin-top:1px}[_nghost-%COMP%] .msp-plugin .msp-control-group-header{background:#111318}[_nghost-%COMP%] .msp-plugin .msp-control-group-header>button, [_nghost-%COMP%] .msp-plugin .msp-control-group-header div{padding-left:4px;text-align:left;height:24px!important;line-height:24px!important;font-size:85%!important;background:#111318!important;color:#9cacc3}[_nghost-%COMP%] .msp-plugin .msp-control-group-header .msp-icon{height:24px!important;line-height:24px!important}[_nghost-%COMP%] .msp-plugin .msp-control-group-header>span{padding-left:5px;line-height:21.3333333333px;font-size:70%;background:#111318;color:#9cacc3}[_nghost-%COMP%] .msp-plugin .msp-control-current{background:#111318}[_nghost-%COMP%] .msp-plugin .msp-control-group-footer{background:#1c1f27;height:5px;font-size:1px;margin-top:1px}[_nghost-%COMP%] .msp-plugin .msp-control-group-expander{display:block;position:absolute;line-height:32px;padding:0;left:0;top:0;width:120px;text-align:left;background:transparent}[_nghost-%COMP%] .msp-plugin .msp-control-group-expander .msp-icon{line-height:29px;width:31px;text-align:center;font-size:100%}[_nghost-%COMP%] .msp-plugin .msp-plugin-layout_controls{position:absolute;left:10px;top:10px}[_nghost-%COMP%] .msp-plugin .msp-plugin-layout_controls>button:first-child{margin-right:6px}[_nghost-%COMP%] .msp-plugin .msp-empty-control{display:none}[_nghost-%COMP%] .msp-plugin .msp-control .msp-btn-block, [_nghost-%COMP%] .msp-plugin .msp-control .msp-control-row button, [_nghost-%COMP%] .msp-plugin .msp-control-row .msp-control button{margin-bottom:0;margin-top:0}[_nghost-%COMP%] .msp-plugin .msp-row-text{height:32px;position:relative;background:#111318;margin-top:1px}[_nghost-%COMP%] .msp-plugin .msp-row-text>div{line-height:32px;text-align:center;color:#9cacc3}[_nghost-%COMP%] .msp-plugin .msp-help span{display:none}[_nghost-%COMP%] .msp-plugin .msp-help:hover span{display:inline-block;background:linear-gradient(#111318,#111318cc)}[_nghost-%COMP%] .msp-plugin .msp-help-text{position:relative;background:#111318;margin-top:1px}[_nghost-%COMP%] .msp-plugin .msp-help-text>div{padding:5px 10px;text-align:left;color:#9cacc3}[_nghost-%COMP%] .msp-plugin .msp-help-description{font-style:italic}[_nghost-%COMP%] .msp-plugin .msp-help-legend{padding-top:10px}[_nghost-%COMP%] .msp-plugin .msp-scale-legend>div{width:100%;height:30px}[_nghost-%COMP%] .msp-plugin .msp-scale-legend>div>span{padding:5px;color:#fff;font-weight:700;background-color:#0003}[_nghost-%COMP%] .msp-plugin .msp-table-legend>div{margin-right:5px;display:inline-flex}[_nghost-%COMP%] .msp-plugin .msp-table-legend>div .msp-table-legend-color{width:30px;height:20px}[_nghost-%COMP%] .msp-plugin .msp-table-legend>div .msp-table-legend-text{margin:0 5px}[_nghost-%COMP%] .msp-plugin .msp-image-preview{position:relative;background:#111318;margin-top:1px;padding:10px}[_nghost-%COMP%] .msp-plugin .msp-image-preview canvas{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[_nghost-%COMP%] .msp-plugin .msp-image-preview>span{margin-top:6px;display:block;text-align:center;font-size:80%;line-height:15px}[_nghost-%COMP%] .msp-plugin .msp-copy-image-wrapper{position:relative}[_nghost-%COMP%] .msp-plugin .msp-copy-image-wrapper div{font-weight:700;padding:3px;margin:1px 0;width:100%;background:#0c0d11;text-align:center}[_nghost-%COMP%] .msp-plugin .msp-copy-image-wrapper img{margin-top:1px}[_nghost-%COMP%] .msp-plugin .msp-control-text-area-wrapper, [_nghost-%COMP%] .msp-plugin .msp-text-area-wrapper{position:relative}[_nghost-%COMP%] .msp-plugin .msp-control-text-area-wrapper textarea, [_nghost-%COMP%] .msp-plugin .msp-text-area-wrapper textarea{border:none;width:100%;height:100%;background:#0c0d11;padding:5px 10px;resize:none;font-size:12px;line-height:16px}[_nghost-%COMP%] .msp-plugin .msp-control-text-area-wrapper{height:64px!important}[_nghost-%COMP%] .msp-plugin .msp-text-area-wrapper{height:96px!important}[_nghost-%COMP%] .msp-plugin .msp-slider-base{position:relative;height:14px;padding:5px 0;width:100%;border-radius:6px;align-self:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}[_nghost-%COMP%] .msp-plugin .msp-slider-base *{box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}[_nghost-%COMP%] .msp-plugin .msp-slider-base-rail{position:absolute;width:100%;background-color:#1f222b;height:4px;border-radius:2px}[_nghost-%COMP%] .msp-plugin .msp-slider-base-track{position:absolute;left:0;height:4px;border-radius:6px;background-color:tint(#ccd4e0,60%)}[_nghost-%COMP%] .msp-plugin .msp-slider-base-handle{position:absolute;margin-left:-11px;margin-top:-9px;width:22px;height:22px;cursor:pointer;border-radius:50%;background-color:#ccd4e0;border:4px solid #1f222b}[_nghost-%COMP%] .msp-plugin .msp-slider-base-handle:hover{background-color:#51a2fb}[_nghost-%COMP%] .msp-plugin .msp-slider-base-mark{position:absolute;top:18px;left:0;width:100%;font-size:12px}[_nghost-%COMP%] .msp-plugin .msp-slider-base-mark-text{position:absolute;display:inline-block;vertical-align:middle;text-align:center;cursor:pointer;color:#999}[_nghost-%COMP%] .msp-plugin .msp-slider-base-mark-text-active{color:#666}[_nghost-%COMP%] .msp-plugin .msp-slider-base-step{position:absolute;width:100%;height:4px;background:transparent}[_nghost-%COMP%] .msp-plugin .msp-slider-base-dot{position:absolute;bottom:-2px;margin-left:-4px;width:8px;height:8px;border:2px solid #e9e9e9;background-color:#fff;cursor:pointer;border-radius:50%;vertical-align:middle}[_nghost-%COMP%] .msp-plugin .msp-slider-base-dot:first-child{margin-left:-4px}[_nghost-%COMP%] .msp-plugin .msp-slider-base-dot:last-child{margin-left:-4px}[_nghost-%COMP%] .msp-plugin .msp-slider-base-dot-active{border-color:tint(#ccd4e0,50%)}[_nghost-%COMP%] .msp-plugin .msp-slider-base-disabled{background:#111318;opacity:.35}[_nghost-%COMP%] .msp-plugin .msp-slider-base-disabled .msp-slider-base-handle, [_nghost-%COMP%] .msp-plugin .msp-slider-base-disabled .msp-slider-base-dot{cursor:not-allowed}[_nghost-%COMP%] .msp-plugin .msp-slider-base-disabled .msp-slider-base-mark-text, [_nghost-%COMP%] .msp-plugin .msp-slider-base-disabled .msp-slider-base-dot{cursor:not-allowed!important}[_nghost-%COMP%] .msp-plugin .msp-description{padding:10px;font-size:85%;background:#111318;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;font-weight:light;cursor:default}[_nghost-%COMP%] .msp-plugin .msp-description:not(:first-child){border-top:1px solid #1f222b}[_nghost-%COMP%] .msp-plugin .msp-color-picker input{color:#000!important}[_nghost-%COMP%] .msp-plugin .msp-no-webgl{position:absolute;width:100%;height:100%;left:0;top:0;display:table;text-align:center;background:#111318}[_nghost-%COMP%] .msp-plugin .msp-no-webgl>div{display:table-cell;vertical-align:middle;text-align:center;width:100%;height:100%}[_nghost-%COMP%] .msp-plugin .msp-no-webgl>div b{font-size:120%}[_nghost-%COMP%] .msp-plugin .msp-loader-msp-btn-file{position:relative;overflow:hidden}[_nghost-%COMP%] .msp-plugin .msp-loader-msp-btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;filter:alpha(opacity=0);opacity:0;outline:none;background:#fff;cursor:inherit;display:block}[_nghost-%COMP%] .msp-plugin .msp-controls-section{margin-bottom:10px}[_nghost-%COMP%] .msp-plugin .msp-combined-color-button{border:4px solid #0c0d11!important;margin:0;text-align:center;padding-right:10px;padding-left:10px}[_nghost-%COMP%] .msp-plugin .msp-combined-color-button:hover{border-color:#16191f!important;border:none;outline-offset:-1px!important;outline:1px solid #363c4c!important}[_nghost-%COMP%] .msp-plugin .msp-combined-color-swatch{width:100%;display:grid;grid-gap:1px;grid-template-columns:repeat(6,auto)}[_nghost-%COMP%] .msp-plugin .msp-combined-color-swatch .msp-btn:hover, [_nghost-%COMP%] .msp-plugin .msp-combined-color-swatch .msp-control-row button:hover, [_nghost-%COMP%] .msp-plugin .msp-control-row .msp-combined-color-swatch button:hover{outline-offset:-1px!important;outline:1px solid #363c4c!important}[_nghost-%COMP%] .msp-plugin .msp-action-select{position:relative}[_nghost-%COMP%] .msp-plugin .msp-action-select select{padding-left:42px}[_nghost-%COMP%] .msp-plugin .msp-action-select option:first-child{color:#9cacc3}[_nghost-%COMP%] .msp-plugin .msp-action-select>.msp-icon{display:block;top:0;left:10px;position:absolute;line-height:32px}[_nghost-%COMP%] .msp-plugin .msp-simple-help-section{height:28px;line-height:28px;margin-top:5px;margin-bottom:5px;padding:0 10px;font-weight:500;background:#111318;color:#ccd4e0}[_nghost-%COMP%] .msp-plugin .msp-left-panel-controls-buttons{position:absolute;width:32px;top:0;bottom:0;padding-top:10px;background:#111318}[_nghost-%COMP%] .msp-plugin .msp-left-panel-controls-buttons-bottom{position:absolute;bottom:0}[_nghost-%COMP%] .msp-plugin .msp-left-panel-controls-button-data-dirty{position:absolute;width:6px;height:6px;background:#d67118;border-radius:3px;right:6px;bottom:6px}[_nghost-%COMP%] .msp-plugin .msp-left-panel-controls .msp-scrollable-container{left:33px}[_nghost-%COMP%] .msp-plugin .msp-mapped-parameter-group{position:relative}[_nghost-%COMP%] .msp-plugin .msp-mapped-parameter-group>.msp-control-row:first-child>div:nth-child(2){right:33px}[_nghost-%COMP%] .msp-plugin .msp-mapped-parameter-group>button:first-child{right:33px}[_nghost-%COMP%] .msp-plugin .msp-mapped-parameter-group>.msp-btn-icon{position:absolute;right:0;width:32px;top:0;padding:0}[_nghost-%COMP%] .msp-plugin .msp-shape-filled{fill:#ccd4e0;stroke:#ccd4e0}[_nghost-%COMP%] .msp-plugin .msp-shape-empty{fill:none;stroke:#ccd4e0}[_nghost-%COMP%] .msp-plugin .msp-no-overflow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[_nghost-%COMP%] .msp-plugin .msp-25-lower-contrast-text{color:#7d91b0}[_nghost-%COMP%] .msp-plugin .msp-expandable-group-color-stripe{position:absolute;left:0;top:30px;width:120px;height:2px}[_nghost-%COMP%] .msp-plugin .msp-section-header{height:32px;line-height:32px;margin-top:10px;margin-bottom:10px;text-align:right;padding:0 10px;font-weight:700;background:#111318;overflow:hidden;cursor:default}[_nghost-%COMP%] .msp-plugin .msp-section-header>.msp-icon{display:block;float:left}[_nghost-%COMP%] .msp-plugin .msp-section-header>small{font-weight:400}[_nghost-%COMP%] .msp-plugin .msp-current-header{height:32px;line-height:32px;margin-bottom:10px;text-align:center;font-weight:700;background:#111318}[_nghost-%COMP%] .msp-plugin .msp-flex-row, [_nghost-%COMP%] .msp-plugin .msp-state-image-row{margin-top:1px;background:#111318;display:flex;flex-direction:row;width:inherit;height:32px}[_nghost-%COMP%] .msp-plugin .msp-flex-row>.msp-flex-item, [_nghost-%COMP%] .msp-plugin .msp-state-image-row>.msp-flex-item{margin:0 1px 0 0;flex:1 1 auto;overflow:hidden}[_nghost-%COMP%] .msp-plugin .msp-flex-row>.msp-flex-item:last-child, [_nghost-%COMP%] .msp-plugin .msp-state-image-row>.msp-flex-item:last-child{margin-right:0}[_nghost-%COMP%] .msp-plugin .msp-flex-row>select, [_nghost-%COMP%] .msp-plugin .msp-state-image-row>select, [_nghost-%COMP%] .msp-plugin .msp-flex-row>button, [_nghost-%COMP%] .msp-plugin .msp-state-image-row>button{margin:0 1px 0 0;flex:1 1 auto;height:32px;overflow:hidden}[_nghost-%COMP%] .msp-plugin .msp-flex-row .msp-btn-icon, [_nghost-%COMP%] .msp-plugin .msp-state-image-row .msp-btn-icon, [_nghost-%COMP%] .msp-plugin .msp-flex-row .msp-btn-icon-small, [_nghost-%COMP%] .msp-plugin .msp-state-image-row .msp-btn-icon-small{flex:0 0 32px;max-width:32px}[_nghost-%COMP%] .msp-plugin .msp-flex-row>select, [_nghost-%COMP%] .msp-plugin .msp-state-image-row>select{background:none}[_nghost-%COMP%] .msp-plugin .msp-flex-row>select>option[value=_], [_nghost-%COMP%] .msp-plugin .msp-state-image-row>select>option[value=_]{display:none}[_nghost-%COMP%] .msp-plugin .msp-flex-row>select:last-child, [_nghost-%COMP%] .msp-plugin .msp-state-image-row>select:last-child, [_nghost-%COMP%] .msp-plugin .msp-flex-row>button:last-child, [_nghost-%COMP%] .msp-plugin .msp-state-image-row>button:last-child{margin-right:0}[_nghost-%COMP%] .msp-plugin .msp-flex-row>button.msp-control-button-label, [_nghost-%COMP%] .msp-plugin .msp-state-image-row>button.msp-control-button-label{background:#111318}[_nghost-%COMP%] .msp-plugin .msp-state-list{list-style:none}[_nghost-%COMP%] .msp-plugin .msp-state-list>li{position:relative;overflow:hidden}[_nghost-%COMP%] .msp-plugin .msp-state-list>li>button:first-child{text-align:left;border-left:10px solid #2a2f3c!important}[_nghost-%COMP%] .msp-plugin .msp-state-list>li>div{position:absolute;right:0;top:0}[_nghost-%COMP%] .msp-plugin .msp-state-image-row{height:96px;margin-top:0}[_nghost-%COMP%] .msp-plugin .msp-state-image-row>button{height:96px;padding:0}[_nghost-%COMP%] .msp-plugin .msp-state-image-row>button>img{min-height:96px;width:inherit;transform:translateY(-50%);top:50%;position:relative}[_nghost-%COMP%] .msp-plugin .msp-tree-row{position:relative;margin-top:0;margin-bottom:1px;background:transparent}[_nghost-%COMP%] .msp-plugin .msp-tree-row-current .msp-btn-tree-label{border-radius:0!important}[_nghost-%COMP%] .msp-plugin .msp-tree-row-current .msp-btn-tree-label>span{font-weight:700}[_nghost-%COMP%] .msp-plugin .msp-tree-row .msp-btn-tree-label{text-align:left;border-radius:0 0 0 8px;border-left-width:4px;border-left-style:solid}[_nghost-%COMP%] .msp-plugin .msp-tree-row .msp-btn-tree-label>small{color:#8d9fb9}[_nghost-%COMP%] .msp-plugin .msp-tree-updates-wrapper .msp-control-group-header:last-child{margin-bottom:1px}[_nghost-%COMP%] .msp-plugin .msp-viewport-top-left-controls{position:absolute;left:10px;top:10px}[_nghost-%COMP%] .msp-plugin .msp-viewport-top-left-controls .msp-traj-controls{line-height:32px;float:left;margin-right:10px;background-color:#0c0d11}[_nghost-%COMP%] .msp-plugin .msp-viewport-top-left-controls .msp-traj-controls>span{color:#ccd4e0;margin-left:10px;margin-right:10px;font-size:85%;display:inline-block}[_nghost-%COMP%] .msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-viewport-controls{line-height:32px;float:left;margin-right:10px}[_nghost-%COMP%] .msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-viewport-controls>button{background-color:#0c0d11}[_nghost-%COMP%] .msp-plugin .msp-viewport-top-left-controls .msp-state-snapshot-viewport-controls>select{display:inline-block;width:200px;margin-right:10px}[_nghost-%COMP%] .msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls{line-height:32px;float:left;margin-right:10px;position:relative}[_nghost-%COMP%] .msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls>div:first-child{position:relative;display:inline-block}[_nghost-%COMP%] .msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls>div:first-child>button{position:relative}[_nghost-%COMP%] .msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls .msp-animation-viewport-controls-select{width:290px;position:absolute;left:0;margin-top:10px;background:#1f222b}[_nghost-%COMP%] .msp-plugin .msp-viewport-top-left-controls .msp-animation-viewport-controls .msp-animation-viewport-controls-select .msp-control-row:first-child{margin-top:0}[_nghost-%COMP%] .msp-plugin .msp-selection-viewport-controls{position:relative;margin:10px auto 0;width:430px}[_nghost-%COMP%] .msp-plugin .msp-selection-viewport-controls-actions{position:absolute;width:100%;top:32px;background:#1f222b}[_nghost-%COMP%] .msp-plugin .msp-selection-viewport-controls>.msp-flex-row .msp-btn, [_nghost-%COMP%] .msp-plugin .msp-selection-viewport-controls>.msp-state-image-row .msp-btn, [_nghost-%COMP%] .msp-plugin .msp-selection-viewport-controls>.msp-flex-row .msp-control-row button, [_nghost-%COMP%] .msp-plugin .msp-control-row .msp-selection-viewport-controls>.msp-flex-row button, [_nghost-%COMP%] .msp-plugin .msp-selection-viewport-controls>.msp-state-image-row .msp-control-row button, [_nghost-%COMP%] .msp-plugin .msp-control-row .msp-selection-viewport-controls>.msp-state-image-row button{padding:0 5px}[_nghost-%COMP%] .msp-plugin .msp-selection-viewport-controls select.msp-form-control, [_nghost-%COMP%] .msp-plugin .msp-selection-viewport-controls select.msp-btn, [_nghost-%COMP%] .msp-plugin .msp-selection-viewport-controls .msp-control-row select, [_nghost-%COMP%] .msp-plugin .msp-control-row .msp-selection-viewport-controls select{padding:0 5px;text-align:center;background:#0c0d11;flex:0 0 80px;text-overflow:ellipsis}[_nghost-%COMP%] .msp-plugin .msp-param-object-list-item{margin-top:1px;position:relative}[_nghost-%COMP%] .msp-plugin .msp-param-object-list-item>button{text-align:left}[_nghost-%COMP%] .msp-plugin .msp-param-object-list-item>button>span{font-weight:700}[_nghost-%COMP%] .msp-plugin .msp-param-object-list-item>div{position:absolute;right:0;top:0}[_nghost-%COMP%] .msp-plugin .msp-state-actions .msp-transform-wrapper:last-child{margin-bottom:10px}[_nghost-%COMP%] .msp-plugin .msp-button-row{display:flex;flex-direction:row;height:32px;width:inherit}[_nghost-%COMP%] .msp-plugin .msp-button-row>button{margin:0 1px 0 0;flex:1 1 auto;height:32px;text-align-last:center;background:none;padding:0 10px;overflow:hidden}[_nghost-%COMP%] .msp-plugin .msp-action-menu-options-no-header, [_nghost-%COMP%] .msp-plugin .msp-action-menu-options .msp-control-group-children{max-height:300px;overflow:hidden;overflow-y:auto}[_nghost-%COMP%] .msp-plugin .msp-action-menu-options .msp-control-row, [_nghost-%COMP%] .msp-plugin .msp-action-menu-options button, [_nghost-%COMP%] .msp-plugin .msp-action-menu-options .msp-icon, [_nghost-%COMP%] .msp-plugin .msp-action-menu-options .msp-flex-row, [_nghost-%COMP%] .msp-plugin .msp-action-menu-options .msp-state-image-row{height:24px;line-height:24px}[_nghost-%COMP%] .msp-plugin .msp-action-menu-options button{text-align:left}[_nghost-%COMP%] .msp-plugin .msp-action-menu-options .msp-action-menu-button{margin-top:1px;display:flex}[_nghost-%COMP%] .msp-plugin .msp-action-menu-options .msp-action-menu-button .msp-icon{margin-right:6px}[_nghost-%COMP%] .msp-plugin .msp-representation-entry{position:relative}[_nghost-%COMP%] .msp-plugin .msp-representation-entry>.msp-control-group-header>.msp-btn, [_nghost-%COMP%] .msp-plugin .msp-control-row .msp-representation-entry>.msp-control-group-header>button{font-weight:700}[_nghost-%COMP%] .msp-plugin .msp-representation-entry>.msp-control-group-header>.msp-icon, [_nghost-%COMP%] .msp-plugin .msp-representation-entry>.msp-control-group-header>.msp-btn-link{line-height:24px;height:24px}[_nghost-%COMP%] .msp-plugin .msp-control-group-presets-wrapper{position:absolute;right:0;top:0}[_nghost-%COMP%] .msp-plugin .msp-control-group-presets-wrapper .msp-control-group-header{background:transparent}[_nghost-%COMP%] .msp-plugin .msp-control-group-presets-wrapper button{background:transparent!important}[_nghost-%COMP%] .msp-plugin .msp-parameter-matrix input{flex:1 1 auto;min-width:0}[_nghost-%COMP%] .msp-plugin .msp-btn-apply-simple{text-align:left}[_nghost-%COMP%] .msp-plugin .msp-btn-apply-simple .msp-icon{margin-right:10px}[_nghost-%COMP%] .msp-plugin .msp-type-class-Root{border-left-color:#111318}[_nghost-%COMP%] .msp-plugin .msp-type-class-Group{border-left-color:#d67118}[_nghost-%COMP%] .msp-plugin .msp-type-class-Data{border-left-color:#6d8082}[_nghost-%COMP%] .msp-plugin .msp-type-class-Object{border-left-color:#25a25a}[_nghost-%COMP%] .msp-plugin .msp-type-class-Representation3D{border-left-color:#258cd1}[_nghost-%COMP%] .msp-plugin .msp-type-class-Behavior{border-left-color:#804399}[_nghost-%COMP%] .msp-plugin .msp-accent-color-cyan{color:#6d8082}[_nghost-%COMP%] .msp-plugin .msp-accent-bg-cyan{background:#6d8082}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-cyan{border-bottom:1px solid #6d8082}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-cyan:active, [_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-cyan:focus{border-bottom:1px solid #6d8082}[_nghost-%COMP%] .msp-plugin .msp-accent-color-red{color:#bf2718}[_nghost-%COMP%] .msp-plugin .msp-accent-bg-red{background:#bf2718}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-red{border-bottom:1px solid #bf2718}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-red:active, [_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-red:focus{border-bottom:1px solid #bf2718}[_nghost-%COMP%] .msp-plugin .msp-accent-color-gray{color:#22303d}[_nghost-%COMP%] .msp-plugin .msp-accent-bg-gray{background:#22303d}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-gray{border-bottom:1px solid #22303d}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-gray:active, [_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-gray:focus{border-bottom:1px solid #22303d}[_nghost-%COMP%] .msp-plugin .msp-accent-color-green{color:#25a25a}[_nghost-%COMP%] .msp-plugin .msp-accent-bg-green{background:#25a25a}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-green{border-bottom:1px solid #25a25a}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-green:active, [_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-green:focus{border-bottom:1px solid #25a25a}[_nghost-%COMP%] .msp-plugin .msp-accent-color-purple{color:#804399}[_nghost-%COMP%] .msp-plugin .msp-accent-bg-purple{background:#804399}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-purple{border-bottom:1px solid #804399}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-purple:active, [_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-purple:focus{border-bottom:1px solid #804399}[_nghost-%COMP%] .msp-plugin .msp-accent-color-blue{color:#258cd1}[_nghost-%COMP%] .msp-plugin .msp-accent-bg-blue{background:#258cd1}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-blue{border-bottom:1px solid #258cd1}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-blue:active, [_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-blue:focus{border-bottom:1px solid #258cd1}[_nghost-%COMP%] .msp-plugin .msp-accent-color-orange{color:#d67118}[_nghost-%COMP%] .msp-plugin .msp-accent-bg-orange{background:#d67118}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-orange{border-bottom:1px solid #d67118}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-orange:active, [_nghost-%COMP%] .msp-plugin .msp-transform-header-brand-orange:focus{border-bottom:1px solid #d67118}[_nghost-%COMP%] .msp-plugin .msp-volume-channel-inline-controls>:first-child{position:absolute;left:0;top:0;height:32px;right:32px}[_nghost-%COMP%] .msp-plugin .msp-volume-channel-inline-controls .msp-slider>div:first-child{right:42px}[_nghost-%COMP%] .msp-plugin .msp-volume-channel-inline-controls .msp-slider>div:last-child{width:30px}[_nghost-%COMP%] .msp-plugin .msp-volume-channel-inline-controls>button{position:absolute;right:0;width:32px;top:0;padding:0}[_nghost-%COMP%] .msp-plugin .msp-volume-channel-inline-controls>button .msp-material-icon{margin-right:0}[_nghost-%COMP%] .msp-plugin .msp-list-unstyled{padding-left:0;list-style:none}[_nghost-%COMP%] .msp-plugin .msp-drag-drop-overlay{border:12px dashed #ccd4e0;background:#0000005c;display:flex;align-items:center;justify-content:center;position:absolute;inset:0;font-size:48px;font-weight:700}[_nghost-%COMP%] .msp-plugin .msp-task-state{line-height:32px}[_nghost-%COMP%] .msp-plugin .msp-task-state>span{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default}[_nghost-%COMP%] .msp-plugin .msp-overlay-tasks{position:absolute;display:flex;inset:0;height:100%;width:100%;z-index:1000;justify-content:center;align-items:center;background:#00000040}[_nghost-%COMP%] .msp-plugin .msp-overlay-tasks .msp-task-state>div{height:32px;margin-top:1px;position:relative;width:100%;background:#111318}[_nghost-%COMP%] .msp-plugin .msp-overlay-tasks .msp-task-state>div>div{height:32px;line-height:32px;display:inline-block;padding:0 10px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;white-space:nowrap;background:#111318;position:absolute}[_nghost-%COMP%] .msp-plugin .msp-overlay-tasks .msp-task-state>div>button{display:inline-block;margin-top:-3px}[_nghost-%COMP%] .msp-plugin .msp-background-tasks{position:absolute;left:0;bottom:0;z-index:1000}[_nghost-%COMP%] .msp-plugin .msp-background-tasks .msp-task-state>div{height:32px;margin-top:1px;position:relative;width:100%;background:#111318}[_nghost-%COMP%] .msp-plugin .msp-background-tasks .msp-task-state>div>div{height:32px;line-height:32px;display:inline-block;padding:0 10px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;white-space:nowrap;background:#111318;position:absolute}[_nghost-%COMP%] .msp-plugin .msp-background-tasks .msp-task-state>div>button{display:inline-block;margin-top:-3px}[_nghost-%COMP%] .msp-plugin .msp-viewport{position:absolute;inset:0;background:#111318}[_nghost-%COMP%] .msp-plugin .msp-viewport .msp-btn-link{background:#0003}[_nghost-%COMP%] .msp-plugin .msp-viewport-expanded{position:fixed;z-index:1000}[_nghost-%COMP%] .msp-plugin .msp-viewport-host3d{position:absolute;inset:0;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none;touch-action:manipulation}[_nghost-%COMP%] .msp-plugin .msp-viewport-host3d>canvas{background-color:#111318;background-image:linear-gradient(45deg,lightgrey 25%,transparent 25%,transparent 75%,lightgrey 75%,lightgrey),linear-gradient(45deg,lightgrey 25%,transparent 25%,transparent 75%,lightgrey 75%,lightgrey);background-size:60px 60px;background-position:0 0,30px 30px}[_nghost-%COMP%] .msp-plugin .msp-viewport-controls{position:absolute;right:10px;top:10px;width:32px}[_nghost-%COMP%] .msp-plugin .msp-viewport-controls-buttons{text-align:right;position:relative}[_nghost-%COMP%] .msp-plugin .msp-viewport-controls-buttons>div{position:relative;margin-bottom:4px}[_nghost-%COMP%] .msp-plugin .msp-viewport-controls-buttons button{padding:0;text-align:center;width:32px;position:relative}[_nghost-%COMP%] .msp-plugin .msp-viewport-controls-buttons .msp-btn-link-toggle-off{color:#637ca0}[_nghost-%COMP%] .msp-plugin .msp-viewport-controls-buttons .msp-btn-link:hover{color:#51a2fb}[_nghost-%COMP%] .msp-plugin .msp-semi-transparent-background{background:#111318;opacity:.5;position:absolute;top:0;left:0;width:100%;height:100%}[_nghost-%COMP%] .msp-plugin .msp-hover-box-wrapper{position:relative}[_nghost-%COMP%] .msp-plugin .msp-hover-box-wrapper .msp-hover-box-body{visibility:hidden;position:absolute;right:36px;top:0;width:100px;background-color:#111318}[_nghost-%COMP%] .msp-plugin .msp-hover-box-wrapper .msp-hover-box-spacer{visibility:hidden;position:absolute;right:32px;top:0;width:4px;height:32px}[_nghost-%COMP%] .msp-plugin .msp-hover-box-wrapper:hover .msp-hover-box-body, [_nghost-%COMP%] .msp-plugin .msp-hover-box-wrapper:hover .msp-hover-box-spacer{visibility:visible}[_nghost-%COMP%] .msp-plugin .msp-viewport-controls-panel{width:290px;top:0;right:36px;position:absolute;background:#1f222b}[_nghost-%COMP%] .msp-plugin .msp-viewport-controls-panel .msp-control-group-wrapper:first-child{padding-top:0}[_nghost-%COMP%] .msp-plugin .msp-viewport-controls-panel .msp-viewport-controls-panel-controls{overflow-y:auto;max-height:400px}[_nghost-%COMP%] .msp-plugin .msp-highlight-toast-wrapper{position:absolute;right:10px;bottom:10px;max-width:95%;z-index:10000}[_nghost-%COMP%] .msp-plugin .msp-highlight-info{color:#51a2fb;padding:3px 10px;background:#111318;opacity:90%;max-width:400px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default}[_nghost-%COMP%] .msp-plugin .msp-highlight-markdown-row{padding-left:10px}[_nghost-%COMP%] .msp-plugin .msp-highlight-simple-row{text-align:right}[_nghost-%COMP%] .msp-plugin .msp-highlight-info-hr{margin-inline:0px;margin-block:3px;border:none;height:1px;background-color:#51a2fb}[_nghost-%COMP%] .msp-plugin .msp-highlight-info-additional{font-size:85%;display:inline-block;color:#056ee1}[_nghost-%COMP%] .msp-plugin .msp-snapshot-description-wrapper{background:#11131880;position:absolute;left:0;top:42px;padding:6.6px 10px;max-height:224px;overflow:hidden;overflow-y:auto;max-width:400px}[_nghost-%COMP%] .msp-plugin .msp-snapshot-description-wrapper a{text-decoration:underline;cursor:pointer;color:#ccd4e0}[_nghost-%COMP%] .msp-plugin .msp-snapshot-description-wrapper ul, [_nghost-%COMP%] .msp-plugin .msp-snapshot-description-wrapper ol{padding-left:14px}[_nghost-%COMP%] .msp-plugin .msp-log-wrap{position:absolute;inset:0;overflow:hidden}[_nghost-%COMP%] .msp-plugin .msp-log{position:absolute;inset:0 -20px 0 0;overflow-y:scroll;overflow-x:hidden;font-size:90%;background:#1f222b}[_nghost-%COMP%] .msp-plugin .msp-log{font-size:90%;color:#bcc7d6}[_nghost-%COMP%] .msp-plugin .msp-log ul{padding:0;margin:0}[_nghost-%COMP%] .msp-plugin .msp-log li{clear:both;margin:0;background:#111318;position:relative}[_nghost-%COMP%] .msp-plugin .msp-log li:not(:last-child){border-bottom:1px solid #313645}[_nghost-%COMP%] .msp-plugin .msp-log .msp-log-entry{margin-left:110px;background:#14171c;padding:3px 25px 3px 10px}[_nghost-%COMP%] .msp-plugin .msp-log .msp-log-timestamp{padding:3px 10px;float:left;text-align:right;width:110px;color:#8d9fb9;font-size:100%}[_nghost-%COMP%] .msp-plugin .msp-log .msp-log-timestamp small{font-size:100%}[_nghost-%COMP%] .msp-plugin .msp-log .label{margin-top:-3px;font-size:7pt}[_nghost-%COMP%] .msp-plugin .msp-log-entry-badge{position:absolute;left:0;top:0;bottom:0;width:6px}[_nghost-%COMP%] .msp-plugin .msp-log-entry-message{background:#0cca5d}[_nghost-%COMP%] .msp-plugin .msp-log-entry-info{background:#5e3673}[_nghost-%COMP%] .msp-plugin .msp-log-entry-error{background:#fd354b}[_nghost-%COMP%] .msp-plugin .msp-log-entry-warning{background:#fcc937}[_nghost-%COMP%] .msp-plugin .msp-sequence{position:absolute;inset:0;background:#111318}[_nghost-%COMP%] .msp-plugin .msp-sequence-select{position:relative;height:24px;width:100%;margin-bottom:1px;background:#1f222b;text-align:left}[_nghost-%COMP%] .msp-plugin .msp-sequence-select>span{display:inline-block;line-height:24px;padding:0 10px;font-size:85%;font-weight:700;cursor:default}[_nghost-%COMP%] .msp-plugin .msp-sequence-select>select{display:inline-block;max-width:120px;width:auto;text-overflow:ellipsis;font-size:85%;height:24px;line-height:24px;background-size:6px 8px;background-color:#1f222b}[_nghost-%COMP%] .msp-plugin .msp-sequence-wrapper{word-break:break-word;padding:10px 10px 3px;-webkit-user-select:none;user-select:none}[_nghost-%COMP%] .msp-plugin .msp-sequence-wrapper-non-empty{font-size:85%;line-height:180%;font-family:Courier New,monospace;background:#0c0d11;width:100%;overflow-y:auto;overflow-x:hidden;position:absolute;inset:25px 0 0}[_nghost-%COMP%] .msp-plugin .msp-sequence-chain-label{margin-left:10px;margin-top:10px;-webkit-user-select:none;user-select:none;color:#51a2fb;font-size:90%;line-height:90%;padding-left:.2em}[_nghost-%COMP%] .msp-plugin .msp-sequence-wrapper span{cursor:pointer}[_nghost-%COMP%] .msp-plugin .msp-sequence-wrapper .msp-sequence-residue-long{margin:0 .2em}[_nghost-%COMP%] .msp-plugin .msp-sequence-wrapper .msp-sequence-residue-long-begin{margin:0 .2em 0 0}[_nghost-%COMP%] .msp-plugin .msp-sequence-wrapper .msp-sequence-label{color:#51a2fb;font-size:90%;line-height:90%;padding-bottom:1em;padding-left:.2em}[_nghost-%COMP%] .msp-plugin .msp-sequence-wrapper .msp-sequence-number{color:#51a2fb;word-break:keep-all;cursor:default;position:relative;top:-1.1em;left:3.1em;padding:0;margin-left:-3em;font-size:80%}[_nghost-%COMP%] .msp-plugin .msp-sequence-wrapper .msp-sequence-number-long{left:3.3em}[_nghost-%COMP%] .msp-plugin .msp-sequence-wrapper .msp-sequence-number-long-negative{left:2.7em}[_nghost-%COMP%] .msp-plugin .msp-sequence-wrapper .msp-sequence-number-negative{left:2.5em}[_nghost-%COMP%] .msp-plugin .msp-sequence-wrapper .msp-sequence-present{color:#ccd4e0}[_nghost-%COMP%] .msp-plugin .msp-sequence-wrapper .msp-sequence-missing{color:#637ca0}[_nghost-%COMP%] .msp-plugin .msp-transformer .msp-entity-badge{position:absolute;top:0;right:0;height:32px;line-height:32px;width:32px}[_nghost-%COMP%] .msp-plugin .msp-layout-right, [_nghost-%COMP%] .msp-plugin .msp-layout-left{background:#1f222b}[_nghost-%COMP%] .msp-plugin .msp-transformer-wrapper{position:relative}[_nghost-%COMP%] .msp-plugin .msp-transformer-wrapper .msp-entity-badge{left:0;top:0}[_nghost-%COMP%] .msp-plugin .msp-transformer-wrapper:first-child .msp-panel-description-content{top:33px}[_nghost-%COMP%] .msp-plugin .msp-transformer-wrapper:not(:first-child) .msp-panel-description-content{bottom:33px}[_nghost-%COMP%] .msp-plugin .msp-transform-wrapper{margin-bottom:10px}[_nghost-%COMP%] .msp-plugin .msp-transform-wrapper-collapsed{margin-bottom:1px}[_nghost-%COMP%] .msp-plugin .msp-transform-update-wrapper{margin-bottom:1px}[_nghost-%COMP%] .msp-plugin .msp-transform-update-wrapper-collapsed{margin-bottom:1px}[_nghost-%COMP%] .msp-plugin .msp-transform-update-wrapper>.msp-transform-header>button, [_nghost-%COMP%] .msp-plugin .msp-transform-update-wrapper-collapsed>.msp-transform-header>button{text-align:left;padding-left:32px;line-height:24px;background:#16191f}[_nghost-%COMP%] .msp-plugin .msp-transform-wrapper>.msp-transform-header>button{text-align:left;background:#111318;font-weight:700;padding-right:5px}[_nghost-%COMP%] .msp-plugin .msp-transform-header{position:relative}[_nghost-%COMP%] .msp-plugin .msp-transform-header>button>small{font-weight:400;float:right}[_nghost-%COMP%] .msp-plugin .msp-transform-header>button>span:first-child{margin-right:10px}[_nghost-%COMP%] .msp-plugin .msp-transform-header>button:hover{color:#9cacc3}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand{margin-bottom:-1px}[_nghost-%COMP%] .msp-plugin .msp-transform-header-brand svg{fill:#ccd4e0;stroke:#ccd4e0}[_nghost-%COMP%] .msp-plugin .msp-transform-default-params{background:#111318;position:absolute;left:0;top:0;width:32px;padding:0}[_nghost-%COMP%] .msp-plugin .msp-transform-default-params:hover{background:#000}[_nghost-%COMP%] .msp-plugin .msp-transform-apply-wrap{position:relative;margin-top:1px;width:100%;height:32px}[_nghost-%COMP%] .msp-plugin .msp-transform-refresh{width:87px;margin-left:33px;background:#111318;text-align:right}[_nghost-%COMP%] .msp-plugin .msp-transform-apply{display:block;position:absolute;left:120px;right:0;top:0}[_nghost-%COMP%] .msp-plugin .msp-transform-apply-wider{margin-left:33px}[_nghost-%COMP%] .msp-plugin .msp-data-beh{margin:10px 0!important}[_nghost-%COMP%] .msp-plugin .msp-toast-container{position:relative;z-index:1001}[_nghost-%COMP%] .msp-plugin .msp-toast-container .msp-toast-entry{color:#ccd4e0;background:#1f222b;position:relative;float:right;min-height:32px;margin-top:10px;border:1px solid #313645;display:table}[_nghost-%COMP%] .msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-title{height:100%;line-height:32px;padding:0 10px;background:#111318;font-weight:700;display:table-cell;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;font-weight:light;cursor:pointer}[_nghost-%COMP%] .msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message{padding:3px 42px 3px 10px;display:table-cell}[_nghost-%COMP%] .msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a{text-decoration:none;color:#68befd;font-weight:700}[_nghost-%COMP%] .msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a:hover{text-decoration:underline;color:#0393fc}[_nghost-%COMP%] .msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a:active, [_nghost-%COMP%] .msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-message a:focus{color:#68befd;outline-offset:0;outline:none}[_nghost-%COMP%] .msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-hide{position:absolute;width:42px;right:0;top:0;bottom:0}[_nghost-%COMP%] .msp-plugin .msp-toast-container .msp-toast-entry .msp-toast-hide .msp-btn-icon{background:transparent;position:absolute;inset:1px 0 0;width:100%;text-align:right;padding-right:5px}[_nghost-%COMP%] .msp-plugin .msp-help-row{position:relative;height:32px;background:#111318;margin-top:1px;display:table;width:100%}[_nghost-%COMP%] .msp-plugin .msp-help-row>span{width:120px;text-align:right;padding:3px 10px;color:#9cacc3;display:table-cell;font-weight:700;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default}[_nghost-%COMP%] .msp-plugin .msp-help-row>div{background:#0c0d11;position:relative;padding:3px 10px;display:table-cell}[_nghost-%COMP%] .msp-plugin .msp-canvas{width:100%;height:100%;background-color:#f3f2ee}[_nghost-%COMP%] .msp-plugin .msp-canvas text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[_nghost-%COMP%] .msp-plugin .msp-canvas circle{stroke:#000;stroke-width:10;stroke-opacity:.3}[_nghost-%COMP%] .msp-plugin .msp-canvas circle:hover{fill:#ae5d04;stroke:#000;stroke-width:10px}[_nghost-%COMP%] .msp-plugin .msp-canvas .info{fill:#fff;stroke:#000;stroke-width:3}[_nghost-%COMP%] .msp-plugin .msp-canvas .show{visibility:visible}[_nghost-%COMP%] .msp-plugin .msp-canvas .hide{visibility:hidden}[_nghost-%COMP%] .msp-plugin .msp-canvas .delete-button rect{fill:#ed4337;stroke:#000}[_nghost-%COMP%] .msp-plugin .msp-canvas .delete-button text{stroke:#fff;fill:#fff}[_nghost-%COMP%] .msp-plugin .msp-canvas .delete-button:hover{stroke:#000;stroke-width:3;fill:#ff6961}[_nghost-%COMP%] .msp-plugin .msp-canvas .infoCircle:hover{fill:#4c66b2}[_nghost-%COMP%] .msp-plugin .msp-canvas:focus{outline:none}[_nghost-%COMP%] .msp-plugin .msp-logo{display:block;position:absolute;bottom:10px;right:10px;height:32px;width:100px;background-repeat:no-repeat;background-position:bottom right;background-size:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAgCAYAAABn7+QVAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKL2lDQ1BJQ0MgUHJvZmlsZQAASMedlndUVNcWh8+9d3qhzTACUobeu8AA0nuTXkVhmBlgKAMOMzSxIaICEUVEmiJIUMSA0VAkVkSxEBRUsAckCCgxGEVULG9G1ouurLz38vL746xv7bP3ufvsvc9aFwCSpy+XlwZLAZDKE/CDPJzpEZFRdOwAgAEeYIApAExWRrpfsHsIEMnLzYWeIXICXwQB8HpYvAJw09AzgE4H/5+kWel8geiYABGbszkZLBEXiDglS5Auts+KmBqXLGYYJWa+KEERy4k5YZENPvsssqOY2ak8tojFOaezU9li7hXxtkwhR8SIr4gLM7mcLBHfErFGijCVK+I34thUDjMDABRJbBdwWIkiNhExiR8S5CLi5QDgSAlfcdxXLOBkC8SXcklLz+FzExIFdB2WLt3U2ppB9+RkpXAEAsMAJiuZyWfTXdJS05m8HAAW7/xZMuLa0kVFtjS1trQ0NDMy/apQ/3Xzb0rc20V6Gfi5ZxCt/4vtr/zSGgBgzIlqs/OLLa4KgM4tAMjd+2LTOACApKhvHde/ug9NPC+JAkG6jbFxVlaWEZfDMhIX9A/9T4e/oa++ZyQ+7o/y0F058UxhioAurhsrLSVNyKdnpDNZHLrhn4f4Hwf+dR4GQZx4Dp/DE0WEiaaMy0sQtZvH5gq4aTw6l/efmvgPw/6kxbkWidL4EVBjjIDUdSpAfu0HKAoRINH7xV3/o2+++DAgfnnhKpOLc//vN/1nwaXiJYOb8DnOJSiEzhLyMxf3xM8SoAEBSAIqkAfKQB3oAENgBqyALXAEbsAb+IMQEAlWAxZIBKmAD7JAHtgECkEx2An2gGpQBxpBM2gFx0EnOAXOg0vgGrgBboP7YBRMgGdgFrwGCxAEYSEyRIHkIRVIE9KHzCAGZA+5Qb5QEBQJxUIJEA8SQnnQZqgYKoOqoXqoGfoeOgmdh65Ag9BdaAyahn6H3sEITIKpsBKsBRvDDNgJ9oFD4FVwArwGzoUL4B1wJdwAH4U74PPwNfg2PAo/g+cQgBARGqKKGCIMxAXxR6KQeISPrEeKkAqkAWlFupE+5CYyiswgb1EYFAVFRxmibFGeqFAUC7UGtR5VgqpGHUZ1oHpRN1FjqFnURzQZrYjWR9ugvdAR6AR0FroQXYFuQrejL6JvoyfQrzEYDA2jjbHCeGIiMUmYtZgSzD5MG+YcZhAzjpnDYrHyWH2sHdYfy8QKsIXYKuxR7FnsEHYC+wZHxKngzHDuuCgcD5ePq8AdwZ3BDeEmcQt4Kbwm3gbvj2fjc/Cl+EZ8N/46fgK/QJAmaBPsCCGEJMImQiWhlXCR8IDwkkgkqhGtiYFELnEjsZJ4jHiZOEZ8S5Ih6ZFcSNEkIWkH6RDpHOku6SWZTNYiO5KjyALyDnIz+QL5EfmNBEXCSMJLgi2xQaJGokNiSOK5JF5SU9JJcrVkrmSF5AnJ65IzUngpLSkXKabUeqkaqZNSI1Jz0hRpU2l/6VTpEukj0lekp2SwMloybjJsmQKZgzIXZMYpCEWd4kJhUTZTGikXKRNUDFWb6kVNohZTv6MOUGdlZWSXyYbJZsvWyJ6WHaUhNC2aFy2FVko7ThumvVuitMRpCWfJ9iWtS4aWzMstlXOU48gVybXJ3ZZ7J0+Xd5NPlt8l3yn/UAGloKcQqJClsF/hosLMUupS26WspUVLjy+9pwgr6ikGKa5VPKjYrzinpKzkoZSuVKV0QWlGmabsqJykXK58RnlahaJir8JVKVc5q/KULkt3oqfQK+m99FlVRVVPVaFqveqA6oKatlqoWr5am9pDdYI6Qz1evVy9R31WQ0XDTyNPo0XjniZek6GZqLlXs09zXktbK1xrq1an1pS2nLaXdq52i/YDHbKOg84anQadW7oYXYZusu4+3Rt6sJ6FXqJejd51fVjfUp+rv09/0ABtYG3AM2gwGDEkGToZZhq2GI4Z0Yx8jfKNOo2eG2sYRxnvMu4z/mhiYZJi0mhy31TG1Ns037Tb9HczPTOWWY3ZLXOyubv5BvMu8xfL9Jdxlu1fdseCYuFnsdWix+KDpZUl37LVctpKwyrWqtZqhEFlBDBKGJet0dbO1husT1m/tbG0Edgct/nN1tA22faI7dRy7eWc5Y3Lx+3U7Jh29Xaj9nT7WPsD9qMOqg5MhwaHx47qjmzHJsdJJ12nJKejTs+dTZz5zu3O8y42Lutczrkirh6uRa4DbjJuoW7Vbo/c1dwT3FvcZz0sPNZ6nPNEe/p47vIc8VLyYnk1e816W3mv8+71IfkE+1T7PPbV8+X7dvvBft5+u/0erNBcwVvR6Q/8vfx3+z8M0A5YE/BjICYwILAm8EmQaVBeUF8wJTgm+Ejw6xDnkNKQ+6E6ocLQnjDJsOiw5rD5cNfwsvDRCOOIdRHXIhUiuZFdUdiosKimqLmVbiv3rJyItogujB5epb0qe9WV1QqrU1afjpGMYcaciEXHhsceiX3P9Gc2MOfivOJq42ZZLqy9rGdsR3Y5e5pjxynjTMbbxZfFTyXYJexOmE50SKxInOG6cKu5L5I8k+qS5pP9kw8lf0oJT2lLxaXGpp7kyfCSeb1pymnZaYPp+umF6aNrbNbsWTPL9+E3ZUAZqzK6BFTRz1S/UEe4RTiWaZ9Zk/kmKyzrRLZ0Ni+7P0cvZ3vOZK577rdrUWtZa3vyVPM25Y2tc1pXvx5aH7e+Z4P6hoINExs9Nh7eRNiUvOmnfJP8svxXm8M3dxcoFWwsGN/isaWlUKKQXziy1XZr3TbUNu62ge3m26u2fyxiF10tNimuKH5fwiq5+o3pN5XffNoRv2Og1LJ0/07MTt7O4V0Ouw6XSZfllo3v9tvdUU4vLyp/tSdmz5WKZRV1ewl7hXtHK30ru6o0qnZWva9OrL5d41zTVqtYu712fh9739B+x/2tdUp1xXXvDnAP3Kn3qO9o0GqoOIg5mHnwSWNYY9+3jG+bmxSaips+HOIdGj0cdLi32aq5+YjikdIWuEXYMn00+uiN71y/62o1bK1vo7UVHwPHhMeefh/7/fBxn+M9JxgnWn/Q/KG2ndJe1AF15HTMdiZ2jnZFdg2e9D7Z023b3f6j0Y+HTqmeqjkte7r0DOFMwZlPZ3PPzp1LPzdzPuH8eE9Mz/0LERdu9Qb2Dlz0uXj5kvulC31OfWcv210+dcXmysmrjKud1yyvdfRb9Lf/ZPFT+4DlQMd1q+tdN6xvdA8uHzwz5DB0/qbrzUu3vG5du73i9uBw6PCdkeiR0TvsO1N3U+6+uJd5b+H+xgfoB0UPpR5WPFJ81PCz7s9to5ajp8dcx/ofBz++P84af/ZLxi/vJwqekJ9UTKpMNk+ZTZ2adp++8XTl04ln6c8WZgp/lf619rnO8x9+c/ytfzZiduIF/8Wn30teyr889GrZq565gLlHr1NfL8wXvZF/c/gt423fu/B3kwtZ77HvKz/ofuj+6PPxwafUT5/+BQOY8/xvJtwPAAAACXBIWXMAAC4iAAAuIgGq4t2SAAANMElEQVRoQ92aB1xURx7H/69sY5eOFBELCipESsSC0RCMJRZMrICHGiMmGjWaqDk7YEsuGok5TS6xi56KGtsFG6jBiAYLKhqVc8GGBZG+fd97N+/twNJWFksS7/v5DG/nN/OG/fze/838Z4CA/wMCE9d9W8oQ3mUMBSojBTqWAuBQAweHIC56lanXHw8xJixM6qhQNcX1KuQykluyKzMPVxvF5XUh3hIpgFSiQz8AJBItSKU6sCsX55P9byLxxRKwYl3W5O6dg5o62IMRmcpyBBz87wNYcyH3R4iL+gh3+8MhHaTqYJKUKO2dPYTigIqza1MlLZLnzh3arQ/uZzVn14YOIGRyJWXrqgR5U6VI1kRJS92VBEEry+wrAnC3F04XL3cY4OMF7/p6weC2zSDQzQG3/IlM7dspdPmU0VxtLqYf5haM6HYOBYLVUwcXByQy92JxXioexUzFhT5cySn3TrjrC4WP3EsPHuPfZGJVZg4HCdt/wF0aT8LWUHT/jTpl4fZU3KNBSHytQ0D33uDR0qfjoqg3hmOpQU65d4u2cW4X6NCyJ1ZeIeKSFRC3p1q4kzYdmzr6Zk98p6rsj+rhi0KoFe5gIm53M/ypDhbNJQgC3kbTFUGSi+LiwmgsWyQ5zk9McESCZ8gEVHvF1kneWJI5CJT2SHWDbUQ0vNbEvqr4OClwCyZ+RzSQ+psomqOwUgOL5vL4BIdCi/aBvtJb3AdYsoirs0usnWfH1vbNOmPlFWHmWlve2DFB3t0nhvh0qm2wRRZuG+ksFyUlDe4qcbYRJ0H8v6NxSxVPNZcnPPJDIAlY8PWnXWVYqsPhZb3lDAfzW3T50xbmZ+MfyFhbRcr7yNj1EZ1gdb+O8DFvMKk7it4+ywYjY11k0s1po8KpmA4tITUmnHaWS5HBKJKr0aC5zXw6QJvgNzyhXDIZS3UgCN3UJq3fdLd188PKs3H8+Bjpvn2x/jv2TwnbsOezt3/YPavTss3TXXHzi4U3Vic/+H5gq+7rkLEkmgb5yWwVb3CnNiFAcD+aOtaGaMobmzrqLaoyIwlC11RkNB/JvPGCiGjQXJ43h8QCSRGzEqeG1Xmah77u48QCPdM7NBYrjSPveJg069i7H2UcjUpndWSZrZ3bFRfHlic8nL1TnezcM2Vyh0dLtsbnzdu8JHHW5qVt8G3Pj9qOT4RYluOE/UYllQZPCvFxMik1cbGRSKsbWwlKUPhxhDGxZJ25Ls28oX2X3k60HmZiqQqDTj+rqX8fB7lTC6xYT2569zA9Jb5m7xz8r3aB03uE9fpOFP7WYujZ/TPo22MSDOs1FT4ePBfG9ZvQsod/12kUJf190prli4YnJ6Mt2HOSMKICGLL/5su3Tn6wPxMYZE4lvMH/RAZP6NjaJGBsJSJIi3mrTg6d9bAYem05YSxS6WJgQdR2LFtnLk9oxFigRaKpq2aEuWMJDizu6UlQosltuo3FivU8zgyOkEhkRzz941u2CogDxyYhgMzDrWb4rMXN0Q36vN4TZr43XuTt0WyeoiR/MwqV509JqgzOSx+77zcw8nGM4UMx2r+5qYJpqpByHVztcc3E+QdFXJWx8dE78MgCDaZYldi5eIB/jwj577/+NB9VJ/GajmHj2nYZKpPZNW5aVJ9v2ULDwlaXdsvFYlvzpo1l9PD4yXUoKStAY3MgFjuAexNvcFA4C+32NgqY3HcofHFg18ioH1adRSHyjdBgCQJaQ/y2SFyzAIMKuSkp+1YAepIOGwZ1Bgo9UGu4gCK2z9ZfoEit3yMI1X8XxZwh+B2al2/7jOnfbsKqGaNeB7RYgmsAmvJi2LHkbwaC0baXyElKKpVe7f/JVlpsY4978Abp0PxsvqcSVVZfMGoud3Z44+HZ8vOeG2m3GWOkntNwK8CTgky4eiWJK9fqflUZJRe0jFirZmgvDSPu29or2PmdzhEgpkVC3/ziIpiRvL1ETUua74+NLed3aEnRg4IC3F2Edp6DNx/AmqxcXLMeFK0w3M8L1yxToTfCtCNZUKTRY8VMZv4TyC/VxFiM3OM7N0BudiaMW/g9VgBkto7QIWyYKDstaSEYGdo3dEQNY/n5/EbKJHBq2QPcOozBWk24K00UGgM3QuI2GisA5cVXIOdyYqHeKBo0cEDSaSwLLNu8TJ5968o6LQORI3oMETRPRycI9GrhkHH7Di/UjQpEvzYeQnlZKMQ0rB1Y/25+xO4M2Fl61/KcazTo4W5ONuRcOIUVEx3CI0Fqax8lljsO9w2tuTMuyksHVcHvwKHX2xIcU9aFsgmQEbR5MX50aztQYJzWu19NY3lmjp6pekIrxmbfvv6woLQQqwCBzZujn0SYqfbX5KkLGprVL51IXgMcW5VdgFgqh4DwkaR/WAxBi837Co5j4Hbmj3wucglL9cJy4ENKzRkVf5+q9Bqnpol9WKpDYuR0DfoKabcL8rGCotfBEQ0GLy41ewk81VyWIfYV3lNmXj2NNizVaNvtPfBBc2B1Hl07BKqi2xkkyf0HSxYg0D7eFn9G5rJ69EAYfXj4zgos1QtaYoq16G2qRCYWA0dw5oFqcb9cAyfvPG50ufq4FI/wdPg5t777+VKoNh1ZPzVbIAiWIwl69qm9G9Lad+kJFF5QKFosXCthjXrI/W0jsCw5G62+Tz0D5p8mU3sxrp7FWwClZKYcHWMawvKqvuf6PZh86HwBusW6VY0g/FzlEru0mHAsPB05mnN3X7sHKzNz+K91Df2o+VQIorDBVGz2lpPHvhobdvRy+v7ewT2HYrUmdy/tBU3po5Ren55MP7e+a6MP2F8aHLHXqr9ExO8Y46oQr08bFS6cflkD/1gT+wYLH1aeydGCSD8Q5ox5Ymo1YdUmgqTI2ZkpWziDToMVM0adCpRntrAERc/B0qvFImSsrWAsWdvYx/j1rkRtYNBGo+bbk9gnGKZ19Q0GgzgVlm4yJeQYq8ydsfb4eW158a6LaTuxYkaZuQN0mrLtb39y/KkL2V+Shdved7URrz9Wj7Fn7xfBuAOZuGbiTqkKRu09Y8HgtkFg5A3+qcpgq8zloUT0vItpyUZthXlq0amKQfnbTgNw5AIsvTos3o2SYGL10vAA0r8eY/mdV4nWgBUz26/eqWMwz7JeQeDrbIcM1idgyXpzp6xOyzHoVBuyUrdiBeD6ySQw6DVr+n9+XImlBmE5ggHOiGs8wleg0G7e8urEQwBNEuavywjpYY2BGse8oQ9QHjgM7bK0/ApfiWDslhOGEq1+NZZqwnH526/cOVbdYP7K13OelKcBY/O5ICKsNpeHFJMJ1zL2aVQlBaAqfgDKswdUKIFYhJutAqVqDznDI1xDdbRVFkkc6YzDQ9piqX448HNSmE+jitVq/mkU4OqzERd9sEJnGNJ/W7pgcGalsTp9FDLRdF5QGwJ0wNpEoAhOi0GGao0M8Fe+DkzpIEgYpMY9G2fuxMRj+axBvyrryEbITtsIjNGwcuDnvzzEzVahJ+gsVnURfTK/Vg6uYUDSNH8gVG/0Ltqy6E2FVNajjYf5WFNZ8AhQcvb88zxvsIEZzBvcV4hYYyQsiP4Jt9YPbyAycgcytM2qn4G/moz9qMpYnkaZK0CIv8y9cKQk72JqkYqAZVi1GmlAxXVGX3DdWHYGKwDurSLBxrb1yLRDo/ftTxkflpQyxW5lyhTJ97vm+azYNneWiCJ+HtxtICnCeTZ/wH0m9yaQHHNAEJ6X+ZGHeINLtLpIiIusP2JrwxspJyLyyzVL+WttY3kabe74xCNFBMd+xXDcl2MTfinBcqPggP5Kfe+bqimTomTwWkg8tPaNjLC3bX5CxtKljjqxViGzyfFrFfTFB/3GK3w9zTvd49eyobCsNGPvlCl1ziKeGWQwxI2sYWx2QamwsFWWcQfO4hbM9EgNLIiaK1zrofGRy8PQ34o1mmf+Hyz5/nub9Kprh4qVS4WzBR6SFEOLVv3hze7zYOiAFTDqveUQ03829O0yDJrYm8+Lr9+/AztOn1SxHPNy/xoqklxEi9qAo7kPq0rGvcIBaOIah3s0yDOZO/rro6rIxDP1Pi1rIBKABb3tiIqCw0fzL38GmvKbuMUyOoMODmf9Ct8d3l3CsfpByR9Pu4KbXg5zhjxBUZlSp8yPPoF7NIhwWG5jb5/h16kbltBrShLw+K4SCvOVCYt2no7HslWg7e9iW5fWcxVNvIGmGVMRGYEoO4zmykLhsBx3heTk4VSgW+lENSObQ8n9POSOHUEi90L97dHOlQKtXg9FFSVwu+A+XLmbx5Tp2F1qhvr7d7Ezb+MhBPjD8tdbNA+SSGSgYwmUGpFwo7AczuYX/an/iEdM6B3qKqbZAbguIKJQEZEosYSLi3efzsKyVZxd3/V1Cc0FisQMGsMAUqkBXfXoqgXChjlgF/LAfCiLOXfuQ5G2tDRcY5CGaRhxO41R4qJlRJSaEZVrjOLbapY6Z9BASkJswn18Sw2CVqx/t5ghncoZElQsBTqm8u+X3A0UaRm48gcD8D/XZskfp8IFSwAAAABJRU5ErkJggg==)}[_nghost-%COMP%] .msp-plugin .msp-plugin-content{color:#ccd4e0}[_nghost-%COMP%] .msp-plugin .msp-plugin-init-error{white-space:pre;margin:10px}[_nghost-%COMP%] canvas{background-image:none!important;background:transparent!important}[_nghost-%COMP%] .msp-plugin .msp-viewport{background:revert}[_nghost-%COMP%] .msp-plugin{background:revert}[_nghost-%COMP%] .msp-plugin .msp-layout-standard{border:revert}[_nghost-%COMP%] .msp-highlight-toast-wrapper{z-index:3!important}"]});let p=t;return p})();var Ct=()=>({"background-color":"#ff0000","backbone-color":"#00ff00"}),xt=()=>({link:"https://files.rcsb.org/download/1crn.pdb",format:"pdb",type:"remote",label:"1CRN",binary:!1});function Pt(p,t){}var dt=(()=>{let t=class t{};t.\u0275fac=function(s){return new(s||t)},t.\u0275cmp=Z({type:t,selectors:[["page-structure-viewer"]],decls:16,vars:4,consts:[["test",""],[1,"container","placeholder-glow","pt-3"],[1,"mb-3"],[1,"row"],[1,"col-4","position-relative"],[1,"squared","rounded","placeholder"],[1,"position-absolute","top-0","left-0","h-100","w-100","overflow-hidden"],[3,"settings","source"],[3,"structure"]],template:function(s,n){s&1&&(x(0,"div",1)(1,"div",2)(2,"h1"),A(3,"Structure viewer"),v(),x(4,"p"),A(5," The "),x(6,"b"),A(7,"ngx-structure-viewer"),v(),A(8," is a Mol* wrapper for Angular. It is a viewer for molecular structures and can be used to visualize and interact with 3D molecular structures. It works out of the box with the latest releases of Angular and automatized the most common features of Mol*. "),v()(),x(9,"div",3)(10,"div",4),k(11,"div",5),x(12,"div",6),k(13,"ngx-structure-viewer",7),v()()()(),D(14,Pt,0,0,"ng-template",8,0,et)),s&2&&(W(13),U("settings",J(2,Ct))("source",J(3,xt)))},dependencies:[z],styles:[".progress-bar[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_progress 10s linear infinite;width:0}@keyframes _ngcontent-%COMP%_progress{0%{width:0}to{width:100%}}"]});let p=t;return p})();var Ot=[{path:"",component:dt}],$t=(()=>{let t=class t{};t.\u0275fac=function(s){return new(s||t)},t.\u0275mod=H({type:t}),t.\u0275inj=N({imports:[z,rt.forChild(Ot),lt,B]});let p=t;return p})();export{$t as PageStructureViewerModule}; diff --git a/docs/chunk-MDWTV2PZ.js b/docs/chunk-MDWTV2PZ.js new file mode 100644 index 0000000..5f38a08 --- /dev/null +++ b/docs/chunk-MDWTV2PZ.js @@ -0,0 +1,6067 @@ +import{$ as W,$a as ie,$b as ts,$c as BT,A as _z,Aa as kz,Ab as EA,Ac as uU,B as Za,Ba as lf,Bb as C0,Bc as dU,C as Wc,Ca as Mz,Cb as re,Cc as mU,D as ko,Da as $s,Db as q,Dc as pU,E as p0,Ea as ro,Eb as es,Ec as fU,F as vo,Fa as Mi,Fb as zz,Fc as hn,G as bo,Ga as cf,Gb as Uz,Gc as hU,H as C,Ha as _A,Hb as Gz,Hc as gU,I as hs,Ia as Rz,Ib as jz,Ic as fa,J as gs,Ja as uf,Jb as no,Jc as yU,K as ys,Ka as df,Kb as Hz,Kc as Fe,L as ep,La as Ri,Lb as qz,Lc as vU,M as Cg,Ma as rp,Mb as ac,Mc as Ce,N as li,Na as wg,Nb as T0,Nc as xr,O as Pz,Oa as Mo,Ob as Wz,Oc as bU,P as vs,Pa as nm,Pb as Xz,Pc as lc,Q as he,Qa as y0,Qb as Yz,Qc as xU,R as Ez,Ra as v0,Rb as Qz,Rc as ff,S as f0,Sa as Bx,Sb as Kz,Sc as SU,T as wA,Ta as b0,Tb as $z,Tc as P0,U as rm,Ua as x0,Ub as DT,Uc as hf,V as Lx,Va as ht,Vb as Zz,Vc as LT,W as TT,Wa as Ee,Wb as Jz,Wc as ha,X as Ai,Xa as Lz,Xb as Vx,Xc as Bi,Y as Iz,Ya as Bz,Yb as im,Yc as Oi,Z as bs,Za as Oz,Zb as eU,Zc as Fi,_ as y,_a as Fz,_b as Yo,_c as op,a as Sg,aa as Dt,ab as om,ac as Pr,ad as CU,b as or,ba as ne,bb as _g,bc as AT,bd as TU,c as Jd,ca as at,cb as PT,cc as np,cd as AA,d as nf,da as Tg,db as ld,dc as kT,dd as wU,e as vz,ea as ur,eb as xt,ec as tU,ed as Gx,f as ST,fa as af,fb as PA,fc as MT,fd as _U,g as bz,ga as xn,gb as Nz,gc as rU,gd as PU,h as Wo,ha as er,hb as Li,hc as nU,hd as Wr,i as fn,ia as tp,ib as Ge,ic as oU,id as EU,j as xz,ja as Dz,jb as mf,jc as iU,jd as g,k as CT,ka as wT,kb as Vz,kc as zx,kd as gf,l as em,la as K,lb as pa,lc as Ux,ld as xs,m as TA,ma as Xo,mb as S0,mc as IA,md as Ne,n as ce,na as _T,nb as Yc,nc as aU,nd as cn,o as of,oa as Az,ob as Ro,oc as DA,od as jx,p as Di,pa as Oe,pb as ET,pc as sU,pd as ue,q as Sz,qa as tr,qb as te,qc as ze,qd as z,r as m0,ra as we,rb as qe,rc as w0,rd as IU,s as ic,sa as $r,sb as pf,sc as lU,sd as cc,t as yo,ta as h0,tb as Ox,tc as sc,td as Js,u as Cz,ua as ki,ub as Qc,uc as Zs,ud as Pg,v as sd,va as ma,vb as cd,vc as _0,vd as yf,w as Jm,wa as sf,wb as Ja,wc as RT,wd as wl,x as tm,xa as g0,xb as IT,xc as rs,xd as Et,y as Tz,ya as Xc,yb as Fx,yc as Pe,z as wz,za as Tl,zb as Nx,zc as cU}from"./chunk-TI7GFU47.js";import{B as ad,C as d0,G as bT,I as gz,K as yz,R as xT,W as qc,a as w,b as U,c as fz,d as Hc,e as ua,f as Ot,g as N,m as ln,n as da,v as hz}from"./chunk-T4BLILQN.js";var fJ=Hc(en=>{"use strict";var hS=Symbol.for("react.element"),yPe=Symbol.for("react.portal"),vPe=Symbol.for("react.fragment"),bPe=Symbol.for("react.strict_mode"),xPe=Symbol.for("react.profiler"),SPe=Symbol.for("react.provider"),CPe=Symbol.for("react.context"),TPe=Symbol.for("react.forward_ref"),wPe=Symbol.for("react.suspense"),_Pe=Symbol.for("react.memo"),PPe=Symbol.for("react.lazy"),nJ=Symbol.iterator;function EPe(t){return t===null||typeof t!="object"?null:(t=nJ&&t[nJ]||t["@@iterator"],typeof t=="function"?t:null)}var aJ={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},sJ=Object.assign,lJ={};function Zv(t,e,r){this.props=t,this.context=e,this.refs=lJ,this.updater=r||aJ}Zv.prototype.isReactComponent={};Zv.prototype.setState=function(t,e){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,t,e,"setState")};Zv.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function cJ(){}cJ.prototype=Zv.prototype;function rB(t,e,r){this.props=t,this.context=e,this.refs=lJ,this.updater=r||aJ}var nB=rB.prototype=new cJ;nB.constructor=rB;sJ(nB,Zv.prototype);nB.isPureReactComponent=!0;var oJ=Array.isArray,uJ=Object.prototype.hasOwnProperty,oB={current:null},dJ={key:!0,ref:!0,__self:!0,__source:!0};function mJ(t,e,r){var n,o={},i=null,a=null;if(e!=null)for(n in e.ref!==void 0&&(a=e.ref),e.key!==void 0&&(i=""+e.key),e)uJ.call(e,n)&&!dJ.hasOwnProperty(n)&&(o[n]=e[n]);var s=arguments.length-2;if(s===1)o.children=r;else if(1{"use strict";hJ.exports=fJ()});var yJ=Hc(nP=>{"use strict";var MPe=Po(),RPe=Symbol.for("react.element"),LPe=Symbol.for("react.fragment"),BPe=Object.prototype.hasOwnProperty,OPe=MPe.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,FPe={key:!0,ref:!0,__self:!0,__source:!0};function gJ(t,e,r){var n,o={},i=null,a=null;r!==void 0&&(i=""+r),e.key!==void 0&&(i=""+e.key),e.ref!==void 0&&(a=e.ref);for(n in e)BPe.call(e,n)&&!FPe.hasOwnProperty(n)&&(o[n]=e[n]);if(t&&t.defaultProps)for(n in e=t.defaultProps,e)o[n]===void 0&&(o[n]=e[n]);return{$$typeof:RPe,type:t,key:i,ref:a,props:o,_owner:OPe.current}}nP.Fragment=LPe;nP.jsx=gJ;nP.jsxs=gJ});var Or=Hc((hFt,vJ)=>{"use strict";vJ.exports=yJ()});var zne=Hc(po=>{"use strict";function TF(t,e){var r=t.length;t.push(e);e:for(;0>>1,o=t[n];if(0>>1;nNE(s,r))lNE(c,s)?(t[n]=c,t[l]=r,n=l):(t[n]=s,t[a]=r,n=a);else if(lNE(c,r))t[n]=c,t[l]=r,n=l;else break e}}return e}function NE(t,e){var r=t.sortIndex-e.sortIndex;return r!==0?r:t.id-e.id}typeof performance=="object"&&typeof performance.now=="function"?(kne=performance,po.unstable_now=function(){return kne.now()}):(xF=Date,Mne=xF.now(),po.unstable_now=function(){return xF.now()-Mne});var kne,xF,Mne,jm=[],jh=[],jMe=1,Xu=null,Vs=3,UE=!1,My=!1,rC=!1,Bne=typeof setTimeout=="function"?setTimeout:null,One=typeof clearTimeout=="function"?clearTimeout:null,Rne=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function wF(t){for(var e=Gd(jh);e!==null;){if(e.callback===null)zE(jh);else if(e.startTime<=t)zE(jh),e.sortIndex=e.expirationTime,TF(jm,e);else break;e=Gd(jh)}}function _F(t){if(rC=!1,wF(t),!My)if(Gd(jm)!==null)My=!0,EF(PF);else{var e=Gd(jh);e!==null&&IF(_F,e.startTime-t)}}function PF(t,e){My=!1,rC&&(rC=!1,One(nC),nC=-1),UE=!0;var r=Vs;try{for(wF(e),Xu=Gd(jm);Xu!==null&&(!(Xu.expirationTime>e)||t&&!Vne());){var n=Xu.callback;if(typeof n=="function"){Xu.callback=null,Vs=Xu.priorityLevel;var o=n(Xu.expirationTime<=e);e=po.unstable_now(),typeof o=="function"?Xu.callback=o:Xu===Gd(jm)&&zE(jm),wF(e)}else zE(jm);Xu=Gd(jm)}if(Xu!==null)var i=!0;else{var a=Gd(jh);a!==null&&IF(_F,a.startTime-e),i=!1}return i}finally{Xu=null,Vs=r,UE=!1}}var GE=!1,VE=null,nC=-1,Fne=5,Nne=-1;function Vne(){return!(po.unstable_now()-Nnet||125n?(t.sortIndex=r,TF(jh,t),Gd(jm)===null&&t===Gd(jh)&&(rC?(One(nC),nC=-1):rC=!0,IF(_F,r-n))):(t.sortIndex=o,TF(jm,t),My||UE||(My=!0,EF(PF))),t};po.unstable_shouldYield=Vne;po.unstable_wrapCallback=function(t){var e=Vs;return function(){var r=Vs;Vs=e;try{return t.apply(this,arguments)}finally{Vs=r}}}});var Gne=Hc((LZt,Une)=>{"use strict";Une.exports=zne()});var Wae=Hc(Oc=>{"use strict";var HMe=Po(),Lc=Gne();function it(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),$F=Object.prototype.hasOwnProperty,qMe=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,jne={},Hne={};function WMe(t){return $F.call(Hne,t)?!0:$F.call(jne,t)?!1:qMe.test(t)?Hne[t]=!0:(jne[t]=!0,!1)}function XMe(t,e,r,n){if(r!==null&&r.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return n?!1:r!==null?!r.acceptsBooleans:(t=t.toLowerCase().slice(0,5),t!=="data-"&&t!=="aria-");default:return!1}}function YMe(t,e,r,n){if(e===null||typeof e>"u"||XMe(t,e,r,n))return!0;if(n)return!1;if(r!==null)switch(r.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function bl(t,e,r,n,o,i,a){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=n,this.attributeNamespace=o,this.mustUseProperty=r,this.propertyName=t,this.type=e,this.sanitizeURL=i,this.removeEmptyString=a}var ms={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){ms[t]=new bl(t,0,!1,t,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var e=t[0];ms[e]=new bl(e,1,!1,t[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(t){ms[t]=new bl(t,2,!1,t.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){ms[t]=new bl(t,2,!1,t,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(t){ms[t]=new bl(t,3,!1,t.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(t){ms[t]=new bl(t,3,!0,t,null,!1,!1)});["capture","download"].forEach(function(t){ms[t]=new bl(t,4,!1,t,null,!1,!1)});["cols","rows","size","span"].forEach(function(t){ms[t]=new bl(t,6,!1,t,null,!1,!1)});["rowSpan","start"].forEach(function(t){ms[t]=new bl(t,5,!1,t.toLowerCase(),null,!1,!1)});var jN=/[\-:]([a-z])/g;function HN(t){return t[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(t){var e=t.replace(jN,HN);ms[e]=new bl(e,1,!1,t,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var e=t.replace(jN,HN);ms[e]=new bl(e,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(t){var e=t.replace(jN,HN);ms[e]=new bl(e,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(t){ms[t]=new bl(t,1,!1,t.toLowerCase(),null,!1,!1)});ms.xlinkHref=new bl("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(t){ms[t]=new bl(t,1,!1,t.toLowerCase(),null,!0,!0)});function qN(t,e,r,n){var o=ms.hasOwnProperty(e)?ms[e]:null;(o!==null?o.type!==0:n||!(2s||o[a]!==i[s]){var l=` +`+o[a].replace(" at new "," at ");return t.displayName&&l.includes("")&&(l=l.replace("",t.displayName)),l}while(1<=a&&0<=s);break}}}finally{AF=!1,Error.prepareStackTrace=r}return(t=t?t.displayName||t.name:"")?mC(t):""}function QMe(t){switch(t.tag){case 5:return mC(t.type);case 16:return mC("Lazy");case 13:return mC("Suspense");case 19:return mC("SuspenseList");case 0:case 2:case 15:return t=kF(t.type,!1),t;case 11:return t=kF(t.type.render,!1),t;case 1:return t=kF(t.type,!0),t;default:return""}}function tN(t){if(t==null)return null;if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case Qb:return"Fragment";case Yb:return"Portal";case ZF:return"Profiler";case WN:return"StrictMode";case JF:return"Suspense";case eN:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case $oe:return(t.displayName||"Context")+".Consumer";case Koe:return(t._context.displayName||"Context")+".Provider";case XN:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case YN:return e=t.displayName||null,e!==null?e:tN(t.type)||"Memo";case qh:e=t._payload,t=t._init;try{return tN(t(e))}catch{}}return null}function KMe(t){var e=t.type;switch(t.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return t=e.render,t=t.displayName||t.name||"",e.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return tN(e);case 8:return e===WN?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function ig(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function Joe(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function $Me(t){var e=Joe(t)?"checked":"value",r=Object.getOwnPropertyDescriptor(t.constructor.prototype,e),n=""+t[e];if(!t.hasOwnProperty(e)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var o=r.get,i=r.set;return Object.defineProperty(t,e,{configurable:!0,get:function(){return o.call(this)},set:function(a){n=""+a,i.call(this,a)}}),Object.defineProperty(t,e,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(a){n=""+a},stopTracking:function(){t._valueTracker=null,delete t[e]}}}}function HE(t){t._valueTracker||(t._valueTracker=$Me(t))}function eie(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var r=e.getValue(),n="";return t&&(n=Joe(t)?t.checked?"true":"false":t.value),t=n,t!==r?(e.setValue(t),!0):!1}function vI(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function rN(t,e){var r=e.checked;return ai({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??t._wrapperState.initialChecked})}function Wne(t,e){var r=e.defaultValue==null?"":e.defaultValue,n=e.checked!=null?e.checked:e.defaultChecked;r=ig(e.value!=null?e.value:r),t._wrapperState={initialChecked:n,initialValue:r,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function tie(t,e){e=e.checked,e!=null&&qN(t,"checked",e,!1)}function nN(t,e){tie(t,e);var r=ig(e.value),n=e.type;if(r!=null)n==="number"?(r===0&&t.value===""||t.value!=r)&&(t.value=""+r):t.value!==""+r&&(t.value=""+r);else if(n==="submit"||n==="reset"){t.removeAttribute("value");return}e.hasOwnProperty("value")?oN(t,e.type,r):e.hasOwnProperty("defaultValue")&&oN(t,e.type,ig(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(t.defaultChecked=!!e.defaultChecked)}function Xne(t,e,r){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var n=e.type;if(!(n!=="submit"&&n!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+t._wrapperState.initialValue,r||e===t.value||(t.value=e),t.defaultValue=e}r=t.name,r!==""&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,r!==""&&(t.name=r)}function oN(t,e,r){(e!=="number"||vI(t.ownerDocument)!==t)&&(r==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+r&&(t.defaultValue=""+r))}var pC=Array.isArray;function ax(t,e,r,n){if(t=t.options,e){e={};for(var o=0;o"+e.valueOf().toString()+"",e=qE.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;e.firstChild;)t.appendChild(e.firstChild)}});function PC(t,e){if(e){var r=t.firstChild;if(r&&r===t.lastChild&&r.nodeType===3){r.nodeValue=e;return}}t.textContent=e}var gC={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ZMe=["Webkit","ms","Moz","O"];Object.keys(gC).forEach(function(t){ZMe.forEach(function(e){e=e+t.charAt(0).toUpperCase()+t.substring(1),gC[e]=gC[t]})});function iie(t,e,r){return e==null||typeof e=="boolean"||e===""?"":r||typeof e!="number"||e===0||gC.hasOwnProperty(t)&&gC[t]?(""+e).trim():e+"px"}function aie(t,e){t=t.style;for(var r in e)if(e.hasOwnProperty(r)){var n=r.indexOf("--")===0,o=iie(r,e[r],n);r==="float"&&(r="cssFloat"),n?t.setProperty(r,o):t[r]=o}}var JMe=ai({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function sN(t,e){if(e){if(JMe[t]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(it(137,t));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(it(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(it(61))}if(e.style!=null&&typeof e.style!="object")throw Error(it(62))}}function lN(t,e){if(t.indexOf("-")===-1)return typeof e.is=="string";switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var cN=null;function QN(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var uN=null,sx=null,lx=null;function Kne(t){if(t=HC(t)){if(typeof uN!="function")throw Error(it(280));var e=t.stateNode;e&&(e=WI(e),uN(t.stateNode,t.type,e))}}function sie(t){sx?lx?lx.push(t):lx=[t]:sx=t}function lie(){if(sx){var t=sx,e=lx;if(lx=sx=null,Kne(t),e)for(t=0;t>>=0,t===0?32:31-(u3e(t)/d3e|0)|0}var WE=64,XE=4194304;function fC(t){switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return t&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function CI(t,e){var r=t.pendingLanes;if(r===0)return 0;var n=0,o=t.suspendedLanes,i=t.pingedLanes,a=r&268435455;if(a!==0){var s=a&~o;s!==0?n=fC(s):(i&=a,i!==0&&(n=fC(i)))}else a=r&~o,a!==0?n=fC(a):i!==0&&(n=fC(i));if(n===0)return 0;if(e!==0&&e!==n&&!(e&o)&&(o=n&-n,i=e&-e,o>=i||o===16&&(i&4194240)!==0))return e;if(n&4&&(n|=r&16),e=t.entangledLanes,e!==0)for(t=t.entanglements,e&=n;0r;r++)e.push(t);return e}function GC(t,e,r){t.pendingLanes|=e,e!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,e=31-Xd(e),t[e]=r}function h3e(t,e){var r=t.pendingLanes&~e;t.pendingLanes=e,t.suspendedLanes=0,t.pingedLanes=0,t.expiredLanes&=e,t.mutableReadLanes&=e,t.entangledLanes&=e,e=t.entanglements;var n=t.eventTimes;for(t=t.expirationTimes;0=vC),ioe=" ",aoe=!1;function Iie(t,e){switch(t){case"keyup":return j3e.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Die(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var Kb=!1;function q3e(t,e){switch(t){case"compositionend":return Die(e);case"keypress":return e.which!==32?null:(aoe=!0,ioe);case"textInput":return t=e.data,t===ioe&&aoe?null:t;default:return null}}function W3e(t,e){if(Kb)return t==="compositionend"||!n4&&Iie(t,e)?(t=Pie(),cI=e4=Qh=null,Kb=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:r,offset:e-t};t=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=coe(r)}}function Rie(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?Rie(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function Lie(){for(var t=window,e=vI();e instanceof t.HTMLIFrameElement;){try{var r=typeof e.contentWindow.location.href=="string"}catch{r=!1}if(r)t=e.contentWindow;else break;e=vI(t.document)}return e}function o4(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}function tRe(t){var e=Lie(),r=t.focusedElem,n=t.selectionRange;if(e!==r&&r&&r.ownerDocument&&Rie(r.ownerDocument.documentElement,r)){if(n!==null&&o4(r)){if(e=n.start,t=n.end,t===void 0&&(t=e),"selectionStart"in r)r.selectionStart=e,r.selectionEnd=Math.min(t,r.value.length);else if(t=(e=r.ownerDocument||document)&&e.defaultView||window,t.getSelection){t=t.getSelection();var o=r.textContent.length,i=Math.min(n.start,o);n=n.end===void 0?i:Math.min(n.end,o),!t.extend&&i>n&&(o=n,n=i,i=o),o=uoe(r,i);var a=uoe(r,n);o&&a&&(t.rangeCount!==1||t.anchorNode!==o.node||t.anchorOffset!==o.offset||t.focusNode!==a.node||t.focusOffset!==a.offset)&&(e=e.createRange(),e.setStart(o.node,o.offset),t.removeAllRanges(),i>n?(t.addRange(e),t.extend(a.node,a.offset)):(e.setEnd(a.node,a.offset),t.addRange(e)))}}for(e=[],t=r;t=t.parentNode;)t.nodeType===1&&e.push({element:t,left:t.scrollLeft,top:t.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r=document.documentMode,$b=null,gN=null,xC=null,yN=!1;function doe(t,e,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;yN||$b==null||$b!==vI(n)||(n=$b,"selectionStart"in n&&o4(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),xC&&MC(xC,n)||(xC=n,n=_I(gN,"onSelect"),0ex||(t.current=TN[ex],TN[ex]=null,ex--)}function fo(t,e){ex++,TN[ex]=t.current,t.current=e}var ag={},js=lg(ag),Jl=lg(!1),zy=ag;function px(t,e){var r=t.type.contextTypes;if(!r)return ag;var n=t.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===e)return n.__reactInternalMemoizedMaskedChildContext;var o={},i;for(i in r)o[i]=e[i];return n&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=e,t.__reactInternalMemoizedMaskedChildContext=o),o}function ec(t){return t=t.childContextTypes,t!=null}function EI(){Io(Jl),Io(js)}function xoe(t,e,r){if(js.current!==ag)throw Error(it(168));fo(js,e),fo(Jl,r)}function jie(t,e,r){var n=t.stateNode;if(e=e.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var o in n)if(!(o in e))throw Error(it(108,KMe(t)||"Unknown",o));return ai({},r,n)}function II(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||ag,zy=js.current,fo(js,t),fo(Jl,Jl.current),!0}function Soe(t,e,r){var n=t.stateNode;if(!n)throw Error(it(169));r?(t=jie(t,e,zy),n.__reactInternalMemoizedMergedChildContext=t,Io(Jl),Io(js),fo(js,t)):Io(Jl),fo(Jl,r)}var Gp=null,XI=!1,GF=!1;function Hie(t){Gp===null?Gp=[t]:Gp.push(t)}function dRe(t){XI=!0,Hie(t)}function cg(){if(!GF&&Gp!==null){GF=!0;var t=0,e=Zn;try{var r=Gp;for(Zn=1;t>=a,o-=a,jp=1<<32-Xd(e)+o|r<P?(A=D,D=null):A=D.sibling;var I=m(v,D,S[P],T);if(I===null){D===null&&(D=A);break}t&&D&&I.alternate===null&&e(v,D),x=i(I,x,P),_===null?E=I:_.sibling=I,_=I,D=A}if(P===S.length)return r(v,D),qo&&Ry(v,P),E;if(D===null){for(;PP?(A=D,D=null):A=D.sibling;var k=m(v,D,I.value,T);if(k===null){D===null&&(D=A);break}t&&D&&k.alternate===null&&e(v,D),x=i(k,x,P),_===null?E=k:_.sibling=k,_=k,D=A}if(I.done)return r(v,D),qo&&Ry(v,P),E;if(D===null){for(;!I.done;P++,I=S.next())I=d(v,I.value,T),I!==null&&(x=i(I,x,P),_===null?E=I:_.sibling=I,_=I);return qo&&Ry(v,P),E}for(D=n(v,D);!I.done;P++,I=S.next())I=p(D,v,P,I.value,T),I!==null&&(t&&I.alternate!==null&&D.delete(I.key===null?P:I.key),x=i(I,x,P),_===null?E=I:_.sibling=I,_=I);return t&&D.forEach(function(M){return e(v,M)}),qo&&Ry(v,P),E}function b(v,x,S,T){if(typeof S=="object"&&S!==null&&S.type===Qb&&S.key===null&&(S=S.props.children),typeof S=="object"&&S!==null){switch(S.$$typeof){case jE:e:{for(var E=S.key,_=x;_!==null;){if(_.key===E){if(E=S.type,E===Qb){if(_.tag===7){r(v,_.sibling),x=o(_,S.props.children),x.return=v,v=x;break e}}else if(_.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===qh&&woe(E)===_.type){r(v,_.sibling),x=o(_,S.props),x.ref=lC(v,_,S),x.return=v,v=x;break e}r(v,_);break}else e(v,_);_=_.sibling}S.type===Qb?(x=Vy(S.props.children,v.mode,T,S.key),x.return=v,v=x):(T=yI(S.type,S.key,S.props,null,v.mode,T),T.ref=lC(v,x,S),T.return=v,v=T)}return a(v);case Yb:e:{for(_=S.key;x!==null;){if(x.key===_)if(x.tag===4&&x.stateNode.containerInfo===S.containerInfo&&x.stateNode.implementation===S.implementation){r(v,x.sibling),x=o(x,S.children||[]),x.return=v,v=x;break e}else{r(v,x);break}else e(v,x);x=x.sibling}x=KF(S,v.mode,T),x.return=v,v=x}return a(v);case qh:return _=S._init,b(v,x,_(S._payload),T)}if(pC(S))return h(v,x,S,T);if(oC(S))return f(v,x,S,T);oI(v,S)}return typeof S=="string"&&S!==""||typeof S=="number"?(S=""+S,x!==null&&x.tag===6?(r(v,x.sibling),x=o(x,S),x.return=v,v=x):(r(v,x),x=QF(S,v.mode,T),x.return=v,v=x),a(v)):r(v,x)}return b}var hx=Yie(!0),Qie=Yie(!1),kI=lg(null),MI=null,nx=null,l4=null;function c4(){l4=nx=MI=null}function u4(t){var e=kI.current;Io(kI),t._currentValue=e}function PN(t,e,r){for(;t!==null;){var n=t.alternate;if((t.childLanes&e)!==e?(t.childLanes|=e,n!==null&&(n.childLanes|=e)):n!==null&&(n.childLanes&e)!==e&&(n.childLanes|=e),t===r)break;t=t.return}}function ux(t,e){MI=t,l4=nx=null,t=t.dependencies,t!==null&&t.firstContext!==null&&(t.lanes&e&&(Zl=!0),t.firstContext=null)}function Zu(t){var e=t._currentValue;if(l4!==t)if(t={context:t,memoizedValue:e,next:null},nx===null){if(MI===null)throw Error(it(308));nx=t,MI.dependencies={lanes:0,firstContext:t}}else nx=nx.next=t;return e}var Oy=null;function d4(t){Oy===null?Oy=[t]:Oy.push(t)}function Kie(t,e,r,n){var o=e.interleaved;return o===null?(r.next=r,d4(e)):(r.next=o.next,o.next=r),e.interleaved=r,Yp(t,n)}function Yp(t,e){t.lanes|=e;var r=t.alternate;for(r!==null&&(r.lanes|=e),r=t,t=t.return;t!==null;)t.childLanes|=e,r=t.alternate,r!==null&&(r.childLanes|=e),r=t,t=t.return;return r.tag===3?r.stateNode:null}var Wh=!1;function m4(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function $ie(t,e){t=t.updateQueue,e.updateQueue===t&&(e.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,effects:t.effects})}function qp(t,e){return{eventTime:t,lane:e,tag:0,payload:null,callback:null,next:null}}function tg(t,e,r){var n=t.updateQueue;if(n===null)return null;if(n=n.shared,vn&2){var o=n.pending;return o===null?e.next=e:(e.next=o.next,o.next=e),n.pending=e,Yp(t,r)}return o=n.interleaved,o===null?(e.next=e,d4(n)):(e.next=o.next,o.next=e),n.interleaved=e,Yp(t,r)}function dI(t,e,r){if(e=e.updateQueue,e!==null&&(e=e.shared,(r&4194240)!==0)){var n=e.lanes;n&=t.pendingLanes,r|=n,e.lanes=r,$N(t,r)}}function _oe(t,e){var r=t.updateQueue,n=t.alternate;if(n!==null&&(n=n.updateQueue,r===n)){var o=null,i=null;if(r=r.firstBaseUpdate,r!==null){do{var a={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};i===null?o=i=a:i=i.next=a,r=r.next}while(r!==null);i===null?o=i=e:i=i.next=e}else o=i=e;r={baseState:n.baseState,firstBaseUpdate:o,lastBaseUpdate:i,shared:n.shared,effects:n.effects},t.updateQueue=r;return}t=r.lastBaseUpdate,t===null?r.firstBaseUpdate=e:t.next=e,r.lastBaseUpdate=e}function RI(t,e,r,n){var o=t.updateQueue;Wh=!1;var i=o.firstBaseUpdate,a=o.lastBaseUpdate,s=o.shared.pending;if(s!==null){o.shared.pending=null;var l=s,c=l.next;l.next=null,a===null?i=c:a.next=c,a=l;var u=t.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==a&&(s===null?u.firstBaseUpdate=c:s.next=c,u.lastBaseUpdate=l))}if(i!==null){var d=o.baseState;a=0,u=c=l=null,s=i;do{var m=s.lane,p=s.eventTime;if((n&m)===m){u!==null&&(u=u.next={eventTime:p,lane:0,tag:s.tag,payload:s.payload,callback:s.callback,next:null});e:{var h=t,f=s;switch(m=e,p=r,f.tag){case 1:if(h=f.payload,typeof h=="function"){d=h.call(p,d,m);break e}d=h;break e;case 3:h.flags=h.flags&-65537|128;case 0:if(h=f.payload,m=typeof h=="function"?h.call(p,d,m):h,m==null)break e;d=ai({},d,m);break e;case 2:Wh=!0}}s.callback!==null&&s.lane!==0&&(t.flags|=64,m=o.effects,m===null?o.effects=[s]:m.push(s))}else p={eventTime:p,lane:m,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(c=u=p,l=d):u=u.next=p,a|=m;if(s=s.next,s===null){if(s=o.shared.pending,s===null)break;m=s,s=m.next,m.next=null,o.lastBaseUpdate=m,o.shared.pending=null}}while(!0);if(u===null&&(l=d),o.baseState=l,o.firstBaseUpdate=c,o.lastBaseUpdate=u,e=o.shared.interleaved,e!==null){o=e;do a|=o.lane,o=o.next;while(o!==e)}else i===null&&(o.shared.lanes=0);jy|=a,t.lanes=a,t.memoizedState=d}}function Poe(t,e,r){if(t=e.effects,e.effects=null,t!==null)for(e=0;er?r:4,t(!0);var n=HF.transition;HF.transition={};try{t(!1),e()}finally{Zn=r,HF.transition=n}}function fae(){return Ju().memoizedState}function hRe(t,e,r){var n=ng(t);if(r={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null},hae(t))gae(e,r);else if(r=Kie(t,e,r,n),r!==null){var o=vl();Yd(r,t,n,o),yae(r,e,n)}}function gRe(t,e,r){var n=ng(t),o={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null};if(hae(t))gae(e,o);else{var i=t.alternate;if(t.lanes===0&&(i===null||i.lanes===0)&&(i=e.lastRenderedReducer,i!==null))try{var a=e.lastRenderedState,s=i(a,r);if(o.hasEagerState=!0,o.eagerState=s,Qd(s,a)){var l=e.interleaved;l===null?(o.next=o,d4(e)):(o.next=l.next,l.next=o),e.interleaved=o;return}}catch{}finally{}r=Kie(t,e,o,n),r!==null&&(o=vl(),Yd(r,t,n,o),yae(r,e,n))}}function hae(t){var e=t.alternate;return t===ii||e!==null&&e===ii}function gae(t,e){SC=BI=!0;var r=t.pending;r===null?e.next=e:(e.next=r.next,r.next=e),t.pending=e}function yae(t,e,r){if(r&4194240){var n=e.lanes;n&=t.pendingLanes,r|=n,e.lanes=r,$N(t,r)}}var OI={readContext:Zu,useCallback:zs,useContext:zs,useEffect:zs,useImperativeHandle:zs,useInsertionEffect:zs,useLayoutEffect:zs,useMemo:zs,useReducer:zs,useRef:zs,useState:zs,useDebugValue:zs,useDeferredValue:zs,useTransition:zs,useMutableSource:zs,useSyncExternalStore:zs,useId:zs,unstable_isNewReconciler:!1},yRe={readContext:Zu,useCallback:function(t,e){return qm().memoizedState=[t,e===void 0?null:e],t},useContext:Zu,useEffect:Ioe,useImperativeHandle:function(t,e,r){return r=r!=null?r.concat([t]):null,pI(4194308,4,cae.bind(null,e,t),r)},useLayoutEffect:function(t,e){return pI(4194308,4,t,e)},useInsertionEffect:function(t,e){return pI(4,2,t,e)},useMemo:function(t,e){var r=qm();return e=e===void 0?null:e,t=t(),r.memoizedState=[t,e],t},useReducer:function(t,e,r){var n=qm();return e=r!==void 0?r(e):e,n.memoizedState=n.baseState=e,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:e},n.queue=t,t=t.dispatch=hRe.bind(null,ii,t),[n.memoizedState,t]},useRef:function(t){var e=qm();return t={current:t},e.memoizedState=t},useState:Eoe,useDebugValue:x4,useDeferredValue:function(t){return qm().memoizedState=t},useTransition:function(){var t=Eoe(!1),e=t[0];return t=fRe.bind(null,t[1]),qm().memoizedState=t,[e,t]},useMutableSource:function(){},useSyncExternalStore:function(t,e,r){var n=ii,o=qm();if(qo){if(r===void 0)throw Error(it(407));r=r()}else{if(r=e(),Qa===null)throw Error(it(349));Gy&30||tae(n,e,r)}o.memoizedState=r;var i={value:r,getSnapshot:e};return o.queue=i,Ioe(nae.bind(null,n,i,t),[t]),n.flags|=2048,zC(9,rae.bind(null,n,i,r,e),void 0,null),r},useId:function(){var t=qm(),e=Qa.identifierPrefix;if(qo){var r=Hp,n=jp;r=(n&~(1<<32-Xd(n)-1)).toString(32)+r,e=":"+e+"R"+r,r=NC++,0<\/script>",t=t.removeChild(t.firstChild)):typeof n.is=="string"?t=a.createElement(r,{is:n.is}):(t=a.createElement(r),r==="select"&&(a=t,n.multiple?a.multiple=!0:n.size&&(a.size=n.size))):t=a.createElementNS(t,r),t[Wm]=e,t[BC]=n,Eae(t,e,!1,!1),e.stateNode=t;e:{switch(a=lN(r,n),r){case"dialog":Eo("cancel",t),Eo("close",t),o=n;break;case"iframe":case"object":case"embed":Eo("load",t),o=n;break;case"video":case"audio":for(o=0;ovx&&(e.flags|=128,n=!0,cC(i,!1),e.lanes=4194304)}else{if(!n)if(t=LI(a),t!==null){if(e.flags|=128,n=!0,r=t.updateQueue,r!==null&&(e.updateQueue=r,e.flags|=4),cC(i,!0),i.tail===null&&i.tailMode==="hidden"&&!a.alternate&&!qo)return Us(e),null}else 2*_i()-i.renderingStartTime>vx&&r!==1073741824&&(e.flags|=128,n=!0,cC(i,!1),e.lanes=4194304);i.isBackwards?(a.sibling=e.child,e.child=a):(r=i.last,r!==null?r.sibling=a:e.child=a,i.last=a)}return i.tail!==null?(e=i.tail,i.rendering=e,i.tail=e.sibling,i.renderingStartTime=_i(),e.sibling=null,r=oi.current,fo(oi,n?r&1|2:r&1),e):(Us(e),null);case 22:case 23:return P4(),n=e.memoizedState!==null,t!==null&&t.memoizedState!==null!==n&&(e.flags|=8192),n&&e.mode&1?kc&1073741824&&(Us(e),e.subtreeFlags&6&&(e.flags|=8192)):Us(e),null;case 24:return null;case 25:return null}throw Error(it(156,e.tag))}function _Re(t,e){switch(a4(e),e.tag){case 1:return ec(e.type)&&EI(),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return gx(),Io(Jl),Io(js),h4(),t=e.flags,t&65536&&!(t&128)?(e.flags=t&-65537|128,e):null;case 5:return f4(e),null;case 13:if(Io(oi),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(it(340));fx()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return Io(oi),null;case 4:return gx(),null;case 10:return u4(e.type._context),null;case 22:case 23:return P4(),null;case 24:return null;default:return null}}var aI=!1,Gs=!1,PRe=typeof WeakSet=="function"?WeakSet:Set,Rt=null;function ox(t,e){var r=t.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(n){hi(t,e,n)}else r.current=null}function BN(t,e,r){try{r()}catch(n){hi(t,e,n)}}var Voe=!1;function ERe(t,e){if(vN=TI,t=Lie(),o4(t)){if("selectionStart"in t)var r={start:t.selectionStart,end:t.selectionEnd};else e:{r=(r=t.ownerDocument)&&r.defaultView||window;var n=r.getSelection&&r.getSelection();if(n&&n.rangeCount!==0){r=n.anchorNode;var o=n.anchorOffset,i=n.focusNode;n=n.focusOffset;try{r.nodeType,i.nodeType}catch{r=null;break e}var a=0,s=-1,l=-1,c=0,u=0,d=t,m=null;t:for(;;){for(var p;d!==r||o!==0&&d.nodeType!==3||(s=a+o),d!==i||n!==0&&d.nodeType!==3||(l=a+n),d.nodeType===3&&(a+=d.nodeValue.length),(p=d.firstChild)!==null;)m=d,d=p;for(;;){if(d===t)break t;if(m===r&&++c===o&&(s=a),m===i&&++u===n&&(l=a),(p=d.nextSibling)!==null)break;d=m,m=d.parentNode}d=p}r=s===-1||l===-1?null:{start:s,end:l}}else r=null}r=r||{start:0,end:0}}else r=null;for(bN={focusedElem:t,selectionRange:r},TI=!1,Rt=e;Rt!==null;)if(e=Rt,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,Rt=t;else for(;Rt!==null;){e=Rt;try{var h=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(h!==null){var f=h.memoizedProps,b=h.memoizedState,v=e.stateNode,x=v.getSnapshotBeforeUpdate(e.elementType===e.type?f:Hd(e.type,f),b);v.__reactInternalSnapshotBeforeUpdate=x}break;case 3:var S=e.stateNode.containerInfo;S.nodeType===1?S.textContent="":S.nodeType===9&&S.documentElement&&S.removeChild(S.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(it(163))}}catch(T){hi(e,e.return,T)}if(t=e.sibling,t!==null){t.return=e.return,Rt=t;break}Rt=e.return}return h=Voe,Voe=!1,h}function CC(t,e,r){var n=e.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var o=n=n.next;do{if((o.tag&t)===t){var i=o.destroy;o.destroy=void 0,i!==void 0&&BN(e,r,i)}o=o.next}while(o!==n)}}function KI(t,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var r=e=e.next;do{if((r.tag&t)===t){var n=r.create;r.destroy=n()}r=r.next}while(r!==e)}}function ON(t){var e=t.ref;if(e!==null){var r=t.stateNode;switch(t.tag){case 5:t=r;break;default:t=r}typeof e=="function"?e(t):e.current=t}}function Aae(t){var e=t.alternate;e!==null&&(t.alternate=null,Aae(e)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(e=t.stateNode,e!==null&&(delete e[Wm],delete e[BC],delete e[CN],delete e[cRe],delete e[uRe])),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}function kae(t){return t.tag===5||t.tag===3||t.tag===4}function zoe(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||kae(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function FN(t,e,r){var n=t.tag;if(n===5||n===6)t=t.stateNode,e?r.nodeType===8?r.parentNode.insertBefore(t,e):r.insertBefore(t,e):(r.nodeType===8?(e=r.parentNode,e.insertBefore(t,r)):(e=r,e.appendChild(t)),r=r._reactRootContainer,r!=null||e.onclick!==null||(e.onclick=PI));else if(n!==4&&(t=t.child,t!==null))for(FN(t,e,r),t=t.sibling;t!==null;)FN(t,e,r),t=t.sibling}function NN(t,e,r){var n=t.tag;if(n===5||n===6)t=t.stateNode,e?r.insertBefore(t,e):r.appendChild(t);else if(n!==4&&(t=t.child,t!==null))for(NN(t,e,r),t=t.sibling;t!==null;)NN(t,e,r),t=t.sibling}var us=null,qd=!1;function Hh(t,e,r){for(r=r.child;r!==null;)Mae(t,e,r),r=r.sibling}function Mae(t,e,r){if(Xm&&typeof Xm.onCommitFiberUnmount=="function")try{Xm.onCommitFiberUnmount(GI,r)}catch{}switch(r.tag){case 5:Gs||ox(r,e);case 6:var n=us,o=qd;us=null,Hh(t,e,r),us=n,qd=o,us!==null&&(qd?(t=us,r=r.stateNode,t.nodeType===8?t.parentNode.removeChild(r):t.removeChild(r)):us.removeChild(r.stateNode));break;case 18:us!==null&&(qd?(t=us,r=r.stateNode,t.nodeType===8?UF(t.parentNode,r):t.nodeType===1&&UF(t,r),AC(t)):UF(us,r.stateNode));break;case 4:n=us,o=qd,us=r.stateNode.containerInfo,qd=!0,Hh(t,e,r),us=n,qd=o;break;case 0:case 11:case 14:case 15:if(!Gs&&(n=r.updateQueue,n!==null&&(n=n.lastEffect,n!==null))){o=n=n.next;do{var i=o,a=i.destroy;i=i.tag,a!==void 0&&(i&2||i&4)&&BN(r,e,a),o=o.next}while(o!==n)}Hh(t,e,r);break;case 1:if(!Gs&&(ox(r,e),n=r.stateNode,typeof n.componentWillUnmount=="function"))try{n.props=r.memoizedProps,n.state=r.memoizedState,n.componentWillUnmount()}catch(s){hi(r,e,s)}Hh(t,e,r);break;case 21:Hh(t,e,r);break;case 22:r.mode&1?(Gs=(n=Gs)||r.memoizedState!==null,Hh(t,e,r),Gs=n):Hh(t,e,r);break;default:Hh(t,e,r)}}function Uoe(t){var e=t.updateQueue;if(e!==null){t.updateQueue=null;var r=t.stateNode;r===null&&(r=t.stateNode=new PRe),e.forEach(function(n){var o=ORe.bind(null,t,n);r.has(n)||(r.add(n),n.then(o,o))})}}function jd(t,e){var r=e.deletions;if(r!==null)for(var n=0;no&&(o=a),n&=~i}if(n=o,n=_i()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*DRe(n/1960))-n,10t?16:t,Kh===null)var n=!1;else{if(t=Kh,Kh=null,VI=0,vn&6)throw Error(it(331));var o=vn;for(vn|=4,Rt=t.current;Rt!==null;){var i=Rt,a=i.child;if(Rt.flags&16){var s=i.deletions;if(s!==null){for(var l=0;l_i()-w4?Ny(t,0):T4|=r),tc(t,e)}function zae(t,e){e===0&&(t.mode&1?(e=XE,XE<<=1,!(XE&130023424)&&(XE=4194304)):e=1);var r=vl();t=Yp(t,e),t!==null&&(GC(t,e,r),tc(t,r))}function BRe(t){var e=t.memoizedState,r=0;e!==null&&(r=e.retryLane),zae(t,r)}function ORe(t,e){var r=0;switch(t.tag){case 13:var n=t.stateNode,o=t.memoizedState;o!==null&&(r=o.retryLane);break;case 19:n=t.stateNode;break;default:throw Error(it(314))}n!==null&&n.delete(e),zae(t,r)}var Uae;Uae=function(t,e,r){if(t!==null)if(t.memoizedProps!==e.pendingProps||Jl.current)Zl=!0;else{if(!(t.lanes&r)&&!(e.flags&128))return Zl=!1,TRe(t,e,r);Zl=!!(t.flags&131072)}else Zl=!1,qo&&e.flags&1048576&&qie(e,AI,e.index);switch(e.lanes=0,e.tag){case 2:var n=e.type;fI(t,e),t=e.pendingProps;var o=px(e,js.current);ux(e,r),o=y4(null,e,n,t,o,r);var i=v4();return e.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,ec(n)?(i=!0,II(e)):i=!1,e.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,m4(e),o.updater=QI,e.stateNode=o,o._reactInternals=e,IN(e,n,t,r),e=kN(null,e,n,!0,i,r)):(e.tag=0,qo&&i&&i4(e),yl(null,e,o,r),e=e.child),e;case 16:n=e.elementType;e:{switch(fI(t,e),t=e.pendingProps,o=n._init,n=o(n._payload),e.type=n,o=e.tag=NRe(n),t=Hd(n,t),o){case 0:e=AN(null,e,n,t,r);break e;case 1:e=Ooe(null,e,n,t,r);break e;case 11:e=Loe(null,e,n,t,r);break e;case 14:e=Boe(null,e,n,Hd(n.type,t),r);break e}throw Error(it(306,n,""))}return e;case 0:return n=e.type,o=e.pendingProps,o=e.elementType===n?o:Hd(n,o),AN(t,e,n,o,r);case 1:return n=e.type,o=e.pendingProps,o=e.elementType===n?o:Hd(n,o),Ooe(t,e,n,o,r);case 3:e:{if(wae(e),t===null)throw Error(it(387));n=e.pendingProps,i=e.memoizedState,o=i.element,$ie(t,e),RI(e,n,null,r);var a=e.memoizedState;if(n=a.element,i.isDehydrated)if(i={element:n,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},e.updateQueue.baseState=i,e.memoizedState=i,e.flags&256){o=yx(Error(it(423)),e),e=Foe(t,e,n,r,o);break e}else if(n!==o){o=yx(Error(it(424)),e),e=Foe(t,e,n,r,o);break e}else for(Mc=eg(e.stateNode.containerInfo.firstChild),Rc=e,qo=!0,Wd=null,r=Qie(e,null,n,r),e.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(fx(),n===o){e=Qp(t,e,r);break e}yl(t,e,n,r)}e=e.child}return e;case 5:return Zie(e),t===null&&_N(e),n=e.type,o=e.pendingProps,i=t!==null?t.memoizedProps:null,a=o.children,xN(n,o)?a=null:i!==null&&xN(n,i)&&(e.flags|=32),Tae(t,e),yl(t,e,a,r),e.child;case 6:return t===null&&_N(e),null;case 13:return _ae(t,e,r);case 4:return p4(e,e.stateNode.containerInfo),n=e.pendingProps,t===null?e.child=hx(e,null,n,r):yl(t,e,n,r),e.child;case 11:return n=e.type,o=e.pendingProps,o=e.elementType===n?o:Hd(n,o),Loe(t,e,n,o,r);case 7:return yl(t,e,e.pendingProps,r),e.child;case 8:return yl(t,e,e.pendingProps.children,r),e.child;case 12:return yl(t,e,e.pendingProps.children,r),e.child;case 10:e:{if(n=e.type._context,o=e.pendingProps,i=e.memoizedProps,a=o.value,fo(kI,n._currentValue),n._currentValue=a,i!==null)if(Qd(i.value,a)){if(i.children===o.children&&!Jl.current){e=Qp(t,e,r);break e}}else for(i=e.child,i!==null&&(i.return=e);i!==null;){var s=i.dependencies;if(s!==null){a=i.child;for(var l=s.firstContext;l!==null;){if(l.context===n){if(i.tag===1){l=qp(-1,r&-r),l.tag=2;var c=i.updateQueue;if(c!==null){c=c.shared;var u=c.pending;u===null?l.next=l:(l.next=u.next,u.next=l),c.pending=l}}i.lanes|=r,l=i.alternate,l!==null&&(l.lanes|=r),PN(i.return,r,e),s.lanes|=r;break}l=l.next}}else if(i.tag===10)a=i.type===e.type?null:i.child;else if(i.tag===18){if(a=i.return,a===null)throw Error(it(341));a.lanes|=r,s=a.alternate,s!==null&&(s.lanes|=r),PN(a,r,e),a=i.sibling}else a=i.child;if(a!==null)a.return=i;else for(a=i;a!==null;){if(a===e){a=null;break}if(i=a.sibling,i!==null){i.return=a.return,a=i;break}a=a.return}i=a}yl(t,e,o.children,r),e=e.child}return e;case 9:return o=e.type,n=e.pendingProps.children,ux(e,r),o=Zu(o),n=n(o),e.flags|=1,yl(t,e,n,r),e.child;case 14:return n=e.type,o=Hd(n,e.pendingProps),o=Hd(n.type,o),Boe(t,e,n,o,r);case 15:return Sae(t,e,e.type,e.pendingProps,r);case 17:return n=e.type,o=e.pendingProps,o=e.elementType===n?o:Hd(n,o),fI(t,e),e.tag=1,ec(n)?(t=!0,II(e)):t=!1,ux(e,r),vae(e,n,o),IN(e,n,o,r),kN(null,e,n,!0,t,r);case 19:return Pae(t,e,r);case 22:return Cae(t,e,r)}throw Error(it(156,e.tag))};function Gae(t,e){return hie(t,e)}function FRe(t,e,r,n){this.tag=t,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=n,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ku(t,e,r,n){return new FRe(t,e,r,n)}function I4(t){return t=t.prototype,!(!t||!t.isReactComponent)}function NRe(t){if(typeof t=="function")return I4(t)?1:0;if(t!=null){if(t=t.$$typeof,t===XN)return 11;if(t===YN)return 14}return 2}function og(t,e){var r=t.alternate;return r===null?(r=Ku(t.tag,e,t.key,t.mode),r.elementType=t.elementType,r.type=t.type,r.stateNode=t.stateNode,r.alternate=t,t.alternate=r):(r.pendingProps=e,r.type=t.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=t.flags&14680064,r.childLanes=t.childLanes,r.lanes=t.lanes,r.child=t.child,r.memoizedProps=t.memoizedProps,r.memoizedState=t.memoizedState,r.updateQueue=t.updateQueue,e=t.dependencies,r.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},r.sibling=t.sibling,r.index=t.index,r.ref=t.ref,r}function yI(t,e,r,n,o,i){var a=2;if(n=t,typeof t=="function")I4(t)&&(a=1);else if(typeof t=="string")a=5;else e:switch(t){case Qb:return Vy(r.children,o,i,e);case WN:a=8,o|=8;break;case ZF:return t=Ku(12,r,e,o|2),t.elementType=ZF,t.lanes=i,t;case JF:return t=Ku(13,r,e,o),t.elementType=JF,t.lanes=i,t;case eN:return t=Ku(19,r,e,o),t.elementType=eN,t.lanes=i,t;case Zoe:return ZI(r,o,i,e);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case Koe:a=10;break e;case $oe:a=9;break e;case XN:a=11;break e;case YN:a=14;break e;case qh:a=16,n=null;break e}throw Error(it(130,t==null?t:typeof t,""))}return e=Ku(a,r,e,o),e.elementType=t,e.type=n,e.lanes=i,e}function Vy(t,e,r,n){return t=Ku(7,t,n,e),t.lanes=r,t}function ZI(t,e,r,n){return t=Ku(22,t,n,e),t.elementType=Zoe,t.lanes=r,t.stateNode={isHidden:!1},t}function QF(t,e,r){return t=Ku(6,t,null,e),t.lanes=r,t}function KF(t,e,r){return e=Ku(4,t.children!==null?t.children:[],t.key,e),e.lanes=r,e.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},e}function VRe(t,e,r,n,o){this.tag=e,this.containerInfo=t,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=RF(0),this.expirationTimes=RF(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=RF(0),this.identifierPrefix=n,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function D4(t,e,r,n,o,i,a,s,l){return t=new VRe(t,e,r,s,l),e===1?(e=1,i===!0&&(e|=8)):e=0,i=Ku(3,null,null,e),t.current=i,i.stateNode=t,i.memoizedState={element:n,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},m4(i),t}function zRe(t,e,r){var n=3{"use strict";function Xae(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Xae)}catch(t){console.error(t)}}Xae(),Yae.exports=Wae()});var $ae=Hc(R4=>{"use strict";var Kae=Qae();R4.createRoot=Kae.createRoot,R4.hydrateRoot=Kae.hydrateRoot;var FZt});var mse=Hc((jJt,dse)=>{"use strict";var sse=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,rLe=/\n/g,nLe=/^\s*/,oLe=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,iLe=/^:\s*/,aLe=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,sLe=/^[;\s]*/,lLe=/^\s+|\s+$/g,cLe=` +`,lse="/",cse="*",Qy="",uLe="comment",dLe="declaration";dse.exports=function(t,e){if(typeof t!="string")throw new TypeError("First argument must be a string");if(!t)return[];e=e||{};var r=1,n=1;function o(f){var b=f.match(rLe);b&&(r+=b.length);var v=f.lastIndexOf(cLe);n=~v?f.length-v:n+f.length}function i(){var f={line:r,column:n};return function(b){return b.position=new a(f),u(),b}}function a(f){this.start=f,this.end={line:r,column:n},this.source=e.source}a.prototype.content=t;var s=[];function l(f){var b=new Error(e.source+":"+r+":"+n+": "+f);if(b.reason=f,b.filename=e.source,b.line=r,b.column=n,b.source=t,e.silent)s.push(b);else throw b}function c(f){var b=f.exec(t);if(b){var v=b[0];return o(v),t=t.slice(v.length),b}}function u(){c(nLe)}function d(f){var b;for(f=f||[];b=m();)b!==!1&&f.push(b);return f}function m(){var f=i();if(!(lse!=t.charAt(0)||cse!=t.charAt(1))){for(var b=2;Qy!=t.charAt(b)&&(cse!=t.charAt(b)||lse!=t.charAt(b+1));)++b;if(b+=2,Qy===t.charAt(b-1))return l("End of comment missing");var v=t.slice(2,b-2);return n+=2,o(v),t=t.slice(b),n+=2,f({type:uLe,comment:v})}}function p(){var f=i(),b=c(oLe);if(b){if(m(),!c(iLe))return l("property missing ':'");var v=c(aLe),x=f({type:dLe,property:use(b[0].replace(sse,Qy)),value:v?use(v[0].replace(sse,Qy)):Qy});return c(sLe),x}}function h(){var f=[];d(f);for(var b;b=p();)b!==!1&&(f.push(b),d(f));return f}return u(),h()};function use(t){return t?t.replace(lLe,Qy):Qy}});var pse=Hc(YC=>{"use strict";var mLe=YC&&YC.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(YC,"__esModule",{value:!0});var pLe=mLe(mse());function fLe(t,e){var r=null;if(!t||typeof t!="string")return r;var n=(0,pLe.default)(t),o=typeof e=="function";return n.forEach(function(i){if(i.type==="declaration"){var a=i.property,s=i.value;o?e(a,s,i):s&&(r=r||{},r[a]=s)}}),r}YC.default=fLe});var Ole=Hc((Iir,Ble)=>{"use strict";var MD=Object.prototype.hasOwnProperty,Lle=Object.prototype.toString,Ile=Object.defineProperty,Dle=Object.getOwnPropertyDescriptor,Ale=function(e){return typeof Array.isArray=="function"?Array.isArray(e):Lle.call(e)==="[object Array]"},kle=function(e){if(!e||Lle.call(e)!=="[object Object]")return!1;var r=MD.call(e,"constructor"),n=e.constructor&&e.constructor.prototype&&MD.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!r&&!n)return!1;var o;for(o in e);return typeof o>"u"||MD.call(e,o)},Mle=function(e,r){Ile&&r.name==="__proto__"?Ile(e,r.name,{enumerable:!0,configurable:!0,value:r.newValue,writable:!0}):e[r.name]=r.newValue},Rle=function(e,r){if(r==="__proto__")if(MD.call(e,r)){if(Dle)return Dle(e,r).value}else return;return e[r]};Ble.exports=function t(){var e,r,n,o,i,a,s=arguments[0],l=1,c=arguments.length,u=!1;for(typeof s=="boolean"&&(u=s,s=arguments[1]||{},l=2),(s==null||typeof s!="object"&&typeof s!="function")&&(s={});l0?Math.ceil(t/n):0;return{width:n,height:o,length:n*o*e}}function Zr(t,e,r,n){let{length:o,width:i,height:a}=Ece(t,e);return n=n&&n.length>=o?n:new r(o),{array:n,width:i,height:a}}var Jc=y(),Ice=new Zs("14"),Dce=new Zs("98");function LU(t){return t>1e5?Ice:Dce}function Pl(t,e,r){let n=r*3,o=LU(e);o.reset();for(let a=0,s=e*3;a>2),n=e-4>>2,o=4*n,i=0;if(n<0)for(let a=0;a>16]}for(let a=o;a!1,a){if(t%r!==0)throw new Error("incompatible groupCount and stride");let s={location:Lo,location2:Lo,index:0,groupIndex:0,instanceIndex:0,isSecondary:!1},l=s.groupIndext.bindFramebuffer(t.FRAMEBUFFER,e),reset:()=>{e=OU(t)},destroy:()=>{r||(t.deleteFramebuffer(e),r=!0)}}}function VU(){return{id:FU(),bind:()=>{},reset:()=>{},destroy:()=>{}}}function BA(t){let e=zU(t);if(e===null)throw new Error('Could not find support for "instanced_arrays"');let r=GU(t);if(r===null)throw new Error('Could not find support for "element_index_uint"');let n=UU(t);if(n===null)throw new Error('Could not find support for "standard_derivatives"');let o=HU(t);ht&&o===null&&console.log('Could not find support for "texture_float"');let i=qU(t);ht&&i===null&&console.log('Could not find support for "texture_float_linear"');let a=WU(t);ht&&a===null&&console.log('Could not find support for "texture_half_float"');let s=XU(t);ht&&s===null&&console.log('Could not find support for "texture_half_float_linear"');let l=t5(t);ht&&l===null&&console.log('Could not find support for "depth_texture"');let c=YU(t);ht&&c===null&&console.log('Could not find support for "blend_minmax"');let u=jU(t);ht&&u===null&&console.log('Could not find support for "vertex_array_object"');let d=QU(t);ht&&d===null&&console.log('Could not find support for "frag_depth"');let m=KU(t);ht&&m===null&&console.log('Could not find support for "color_buffer_float"');let p=$U(t);ht&&p===null&&console.log('Could not find support for "color_buffer_half_float"');let h=ZU(t);ht&&h===null&&console.log('Could not find support for "draw_buffers"');let f=JU(t);ht&&f===null&&console.log('Could not find support for "draw_buffers_indexed"');let b=e5(t);ht&&b===null&&console.log('Could not find support for "shader_texture_lod"');let v=r5(t);ht&&v===null&&console.log('Could not find support for "sRGB"');let x=n5(t);ht&&x===null&&console.log('Could not find support for "disjoint_timer_query"');let S=o5(t);ht&&S===null&&console.log('Could not find support for "multi_draw"');let T=i5(t);ht&&T===null&&console.log('Could not find support for "draw_instanced_base_vertex_base_instance"');let E=a5(t);ht&&E===null&&console.log('Could not find support for "multi_draw_instanced_base_vertex_base_instance"');let _=s5(t);ht&&_===null&&console.log('Could not find support for "parallel_shader_compile"');let D=l5(t);ht&&D===null&&console.log('Could not find support for "fbo_render_mipmap"');let P=c5(t);ht&&P===null&&console.log('Could not find support for "provoking_vertex"');let A=u5(t);ht&&A===null&&console.log('Could not find support for "clip_cull_distance"');let I=d5(t);ht&&I===null&&console.log('Could not find support for "conservative_depth"');let k=m5(t);ht&&k===null&&console.log('Could not find support for "stencil_texturing"');let M=p5(t);ht&&M===null&&console.log('Could not find support for "clip_control"');let R=f5(t);return{instancedArrays:e,standardDerivatives:n,elementIndexUint:r,textureFloat:o,textureFloatLinear:i,textureHalfFloat:a,textureHalfFloatLinear:s,depthTexture:l,blendMinMax:c,vertexArrayObject:u,fragDepth:d,colorBufferFloat:m,colorBufferHalfFloat:p,drawBuffers:h,drawBuffersIndexed:f,shaderTextureLod:b,sRGB:v,disjointTimerQuery:x,multiDraw:S,drawInstancedBaseVertexBaseInstance:T,multiDrawInstancedBaseVertexBaseInstance:E,parallelShaderCompile:_,fboRenderMipmap:D,provokingVertex:P,clipCullDistance:A,conservativeDepth:I,stencilTexturing:k,clipControl:M,noNonInstancedActiveAttribs:R}}function h5(t,e){let r={},n=t.getParameter(t.FRONT_FACE),o=t.getParameter(t.CULL_FACE_MODE),i=t.getParameter(t.DEPTH_WRITEMASK),a=t.getParameter(t.DEPTH_CLEAR_VALUE),s=t.getParameter(t.DEPTH_FUNC),l=t.getParameter(t.COLOR_WRITEMASK),c=t.getParameter(t.COLOR_CLEAR_VALUE),u=t.getParameter(t.BLEND_SRC_RGB),d=t.getParameter(t.BLEND_DST_RGB),m=t.getParameter(t.BLEND_SRC_ALPHA),p=t.getParameter(t.BLEND_DST_ALPHA),h=t.getParameter(t.BLEND_COLOR),f=t.getParameter(t.BLEND_EQUATION_RGB),b=t.getParameter(t.BLEND_EQUATION_ALPHA),v=t.getParameter(t.STENCIL_FUNC),x=t.getParameter(t.STENCIL_VALUE_MASK),S=t.getParameter(t.STENCIL_REF),T=t.getParameter(t.STENCIL_BACK_FUNC),E=t.getParameter(t.STENCIL_BACK_VALUE_MASK),_=t.getParameter(t.STENCIL_BACK_REF),D=t.getParameter(t.STENCIL_WRITEMASK),P=t.getParameter(t.STENCIL_BACK_WRITEMASK),A=t.getParameter(t.STENCIL_FAIL),I=t.getParameter(t.STENCIL_PASS_DEPTH_PASS),k=t.getParameter(t.STENCIL_PASS_DEPTH_FAIL),M=t.getParameter(t.STENCIL_BACK_FAIL),R=t.getParameter(t.STENCIL_BACK_PASS_DEPTH_PASS),B=t.getParameter(t.STENCIL_BACK_PASS_DEPTH_FAIL),F=t.getParameter(t.MAX_VERTEX_ATTRIBS),G=[],V=t.getParameter(t.VIEWPORT),H=t.getParameter(t.SCISSOR_BOX),Q=e.clipControl?t.getParameter(e.clipControl.CLIP_ORIGIN):-1,L=e.clipControl?t.getParameter(e.clipControl.CLIP_DEPTH_MODE):-1,Y=()=>{for(let j=0;j{r[j]!==!0&&(t.enable(j),r[j]=!0)},disable:j=>{r[j]!==!1&&(t.disable(j),r[j]=!1)},frontFace:j=>{j!==n&&(t.frontFace(j),n=j)},cullFace:j=>{j!==o&&(t.cullFace(j),o=j)},depthMask:j=>{j!==i&&(t.depthMask(j),i=j)},clearDepth:j=>{j!==a&&(t.clearDepth(j),a=j)},depthFunc:j=>{j!==s&&(t.depthFunc(j),s=j)},colorMask:(j,O,J,$)=>{(j!==l[0]||O!==l[1]||J!==l[2]||$!==l[3])&&(t.colorMask(j,O,J,$),l[0]=j,l[1]=O,l[2]=J,l[3]=$)},clearColor:(j,O,J,$)=>{(j!==c[0]||O!==c[1]||J!==c[2]||$!==c[3])&&(t.clearColor(j,O,J,$),c[0]=j,c[1]=O,c[2]=J,c[3]=$)},blendFunc:(j,O)=>{(j!==u||O!==d||j!==m||O!==p)&&(t.blendFunc(j,O),u=j,d=O,m=j,p=O)},blendFuncSeparate:(j,O,J,$)=>{(j!==u||O!==d||J!==m||$!==p)&&(t.blendFuncSeparate(j,O,J,$),u=j,d=O,m=J,p=$)},blendEquation:j=>{(j!==f||j!==b)&&(t.blendEquation(j),f=j,b=j)},blendEquationSeparate:(j,O)=>{(j!==f||O!==b)&&(t.blendEquationSeparate(j,O),f=j,b=O)},blendColor:(j,O,J,$)=>{(j!==h[0]||O!==h[1]||J!==h[2]||$!==h[3])&&(t.blendColor(j,O,J,$),h[0]=j,h[1]=O,h[2]=J,h[3]=$)},stencilFunc:(j,O,J)=>{(j!==v||O!==S||J!==x||j!==T||O!==_||J!==E)&&(t.stencilFunc(j,O,J),v=j,S=O,x=J,T=j,_=O,E=J)},stencilFuncSeparate:(j,O,J,$)=>{j===t.FRONT?(O!==v||J!==S||$!==x)&&(t.stencilFuncSeparate(j,O,J,$),v=O,S=J,x=$):j===t.BACK?(O!==T||J!==_||$!==E)&&(t.stencilFuncSeparate(j,O,J,$),T=O,_=J,E=$):j===t.FRONT_AND_BACK&&(O!==v||J!==S||$!==x||O!==T||J!==_||$!==E)&&(t.stencilFuncSeparate(j,O,J,$),v=O,S=J,x=$,T=O,_=J,E=$)},stencilMask:j=>{(j!==D||j!==P)&&(t.stencilMask(j),D=j,P=j)},stencilMaskSeparate:(j,O)=>{j===t.FRONT?O!==D&&(t.stencilMaskSeparate(j,O),D=O):j===t.BACK?O!==P&&(t.stencilMaskSeparate(j,O),P=O):j===t.FRONT_AND_BACK&&(O!==D||O!==P)&&(t.stencilMaskSeparate(j,O),D=O,P=O)},stencilOp:(j,O,J)=>{(j!==A||O!==k||J!==I||j!==M||O!==B||J!==R)&&(t.stencilOp(j,O,J),A=j,k=O,I=J,M=j,B=O,R=J)},stencilOpSeparate:(j,O,J,$)=>{j===t.FRONT?(O!==A||J!==k||$!==I)&&(t.stencilOpSeparate(j,O,J,$),A=O,k=J,I=$):j===t.BACK?(O!==M||J!==B||$!==R)&&(t.stencilOpSeparate(j,O,J,$),M=O,B=J,R=$):j===t.FRONT_AND_BACK&&(O!==A||J!==k||$!==I||O!==M||J!==B||$!==R)&&(t.stencilOpSeparate(j,O,J,$),A=O,k=J,I=$,M=O,B=J,R=$)},enableVertexAttrib:j=>{t.enableVertexAttribArray(j),G[j]=1},clearVertexAttribsState:Y,disableUnusedVertexAttribs:()=>{for(let j=0;j{(j!==V[0]||O!==V[1]||J!==V[2]||$!==V[3])&&(t.viewport(j,O,J,$),V[0]=j,V[1]=O,V[2]=J,V[3]=$)},scissor:(j,O,J,$)=>{(j!==H[0]||O!==H[1]||J!==H[2]||$!==H[3])&&(t.scissor(j,O,J,$),H[0]=j,H[1]=O,H[2]=J,H[3]=$)},clipControl:e.clipControl?(j,O)=>{(j!==Q||O!==L)&&(e.clipControl.clipControl(j,O),Q=j,L=O)}:void 0,reset:()=>{r={},n=t.getParameter(t.FRONT_FACE),o=t.getParameter(t.CULL_FACE_MODE),i=t.getParameter(t.DEPTH_WRITEMASK),a=t.getParameter(t.DEPTH_CLEAR_VALUE),s=t.getParameter(t.DEPTH_FUNC),l=t.getParameter(t.COLOR_WRITEMASK),c=t.getParameter(t.COLOR_CLEAR_VALUE),u=t.getParameter(t.BLEND_SRC_RGB),d=t.getParameter(t.BLEND_DST_RGB),m=t.getParameter(t.BLEND_SRC_ALPHA),p=t.getParameter(t.BLEND_DST_ALPHA),h=t.getParameter(t.BLEND_COLOR),f=t.getParameter(t.BLEND_EQUATION_RGB),b=t.getParameter(t.BLEND_EQUATION_ALPHA),v=t.getParameter(t.STENCIL_FUNC),x=t.getParameter(t.STENCIL_VALUE_MASK),S=t.getParameter(t.STENCIL_REF),T=t.getParameter(t.STENCIL_BACK_FUNC),E=t.getParameter(t.STENCIL_BACK_VALUE_MASK),_=t.getParameter(t.STENCIL_BACK_REF),D=t.getParameter(t.STENCIL_WRITEMASK),P=t.getParameter(t.STENCIL_BACK_WRITEMASK),A=t.getParameter(t.STENCIL_FAIL),I=t.getParameter(t.STENCIL_PASS_DEPTH_PASS),k=t.getParameter(t.STENCIL_PASS_DEPTH_FAIL),M=t.getParameter(t.STENCIL_BACK_FAIL),R=t.getParameter(t.STENCIL_BACK_PASS_DEPTH_PASS),B=t.getParameter(t.STENCIL_BACK_PASS_DEPTH_FAIL),F=t.getParameter(t.MAX_VERTEX_ATTRIBS),G.length=0;for(let j=0;j 0.0 && uBumpAmplitude > 0.0 && bumpiness > 0.0) { + material.rgb += fbm(vModelPosition * uBumpFrequency) * uBumpAmplitude * bumpiness; + material.rgb -= 0.5 * uBumpAmplitude * bumpiness; + } + #endif + + #if defined(dRenderVariant_color) + material.rgb += material.rgb * emissive; + #endif + + gl_FragColor = material; +#else + #ifdef bumpEnabled + if (uBumpFrequency > 0.0 && uBumpAmplitude > 0.0 && bumpiness > 0.0) { + normal = perturbNormal(-vViewPosition, normal, fbm(vModelPosition * uBumpFrequency), (uBumpAmplitude * bumpiness) / uBumpFrequency); + } + #endif + + vec4 color = material; + + ReflectedLight reflectedLight = ReflectedLight(vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); + + PhysicalMaterial physicalMaterial; + physicalMaterial.diffuseColor = color.rgb * (1.0 - metalness); + #ifdef enabledFragDepth + physicalMaterial.roughness = min(max(roughness, 0.0525), 1.0); + #else + vec3 dxy = max(abs(dFdx(normal)), abs(dFdy(normal))); + float geometryRoughness = max(max(dxy.x, dxy.y), dxy.z); + physicalMaterial.roughness = min(max(roughness, 0.0525) + geometryRoughness, 1.0); + #endif + physicalMaterial.specularColor = mix(vec3(0.04), color.rgb, metalness); + physicalMaterial.specularF90 = 1.0; + + GeometricContext geometry; + geometry.position = -vViewPosition; + geometry.normal = normal; + geometry.viewDir = normalize(vViewPosition); + + IncidentLight directLight; + #pragma unroll_loop_start + for (int i = 0; i < dLightCount; ++i) { + directLight.direction = uLightDirection[i]; + directLight.color = uLightColor[i] * PI; // * PI for punctual light + RE_Direct_Physical(directLight, geometry, physicalMaterial, reflectedLight); + } + #pragma unroll_loop_end + + vec3 irradiance = uAmbientColor * PI; // * PI for punctual light + RE_IndirectDiffuse_Physical(irradiance, geometry, physicalMaterial, reflectedLight); + + // indirect specular only metals + vec3 radiance = uAmbientColor * metalness; + vec3 iblIrradiance = uAmbientColor * metalness; + vec3 clearcoatRadiance = vec3(0.0); + RE_IndirectSpecular_Physical(radiance, iblIrradiance, clearcoatRadiance, geometry, physicalMaterial, reflectedLight); + + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular; + outgoingLight = clamp(outgoingLight, 0.01, 0.99); // prevents black artifacts on specular highlight with transparent background + + #if defined(dRenderVariant_color) + outgoingLight += color.rgb * emissive; + #endif + + gl_FragColor = vec4(outgoingLight, color.a); +#endif + +#if defined(dXrayShaded_on) + gl_FragColor.a *= 1.0 - pow(abs(dot(normal, vec3(0.0, 0.0, 1.0))), uXrayEdgeFalloff); +#elif defined(dXrayShaded_inverted) + gl_FragColor.a *= pow(abs(dot(normal, vec3(0.0, 0.0, 1.0))), uXrayEdgeFalloff); +#endif + +gl_FragColor.rgb *= uExposure; +`;var b5=` + +#if defined(dColorMarker) + if (marker > 0.0) { + if ((uMarkerPriority == 1 && marker != 2.0) || (uMarkerPriority != 1 && marker == 1.0)) { + gl_FragColor.rgb = mix(gl_FragColor.rgb, uHighlightColor, uHighlightStrength); + gl_FragColor.a = max(gl_FragColor.a, uHighlightStrength * 0.002); // for direct-volume rendering + } else { + gl_FragColor.rgb = mix(gl_FragColor.rgb, uSelectColor, uSelectStrength); + gl_FragColor.a = max(gl_FragColor.a, uSelectStrength * 0.002); // for direct-volume rendering + } + } else if (uMarkerAverage > 0.0) { + gl_FragColor.rgb = mix(gl_FragColor.rgb, uDimColor, uDimStrength); + gl_FragColor.a = max(gl_FragColor.a, uDimStrength * 0.002); // for direct-volume rendering + } +#endif +`;var x5=` +#if dClipObjectCount != 0 && defined(dClipping) + #if defined(dClippingType_instance) + vClipping = readFromTexture(tClipping, aInstance, uClippingTexDim).a; + #elif defined(dMarkerType_groupInstance) + vClipping = readFromTexture(tClipping, aInstance * float(uGroupCount) + group, uClippingTexDim).a; + #endif +#endif +`;var S5=` +#if defined(dRenderVariant_color) + #if defined(dColorType_attribute) + vColor.rgb = aColor; + #elif defined(dColorType_instance) + vColor.rgb = readFromTexture(tColor, aInstance, uColorTexDim).rgb; + #elif defined(dColorType_group) + #if defined(dDualColor) + vec4 color2; + if (aColorMode == 2.0) { + vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb; + } else { + vColor.rgb = readFromTexture(tColor, group * 2.0, uColorTexDim).rgb; + color2.rgb = readFromTexture(tColor, group * 2.0 + 1.0, uColorTexDim).rgb; + } + #else + vColor.rgb = readFromTexture(tColor, group, uColorTexDim).rgb; + #endif + #elif defined(dColorType_groupInstance) + #if defined(dDualColor) + vec4 color2; + if (aColorMode == 2.0) { + vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb; + } else { + vColor.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0, uColorTexDim).rgb; + color2.rgb = readFromTexture(tColor, (aInstance * float(uGroupCount) + group) * 2.0 + 1.0, uColorTexDim).rgb; + } + #else + vColor.rgb = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim).rgb; + #endif + #elif defined(dColorType_vertex) + vColor.rgb = readFromTexture(tColor, VertexID, uColorTexDim).rgb; + #elif defined(dColorType_vertexInstance) + vColor.rgb = readFromTexture(tColor, int(aInstance) * uVertexCount + VertexID, uColorTexDim).rgb; + #elif defined(dColorType_volume) + vec3 cgridPos = (uColorGridTransform.w * (position - uColorGridTransform.xyz)) / uColorGridDim; + vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb; + #elif defined(dColorType_volumeInstance) + vec3 cgridPos = (uColorGridTransform.w * (vModelPosition - uColorGridTransform.xyz)) / uColorGridDim; + vColor.rgb = texture3dFrom2dLinear(tColorGrid, cgridPos, uColorGridDim, uColorTexDim).rgb; + #endif + + #ifdef dUsePalette + vPaletteV = ((vColor.r * 256.0 * 256.0 * 255.0 + vColor.g * 256.0 * 255.0 + vColor.b * 255.0) - 1.0) / 16777215.0; + #endif + + #ifdef dOverpaint + #if defined(dOverpaintType_instance) + vOverpaint = readFromTexture(tOverpaint, aInstance, uOverpaintTexDim); + #elif defined(dOverpaintType_groupInstance) + vOverpaint = readFromTexture(tOverpaint, aInstance * float(uGroupCount) + group, uOverpaintTexDim); + #elif defined(dOverpaintType_vertexInstance) + vOverpaint = readFromTexture(tOverpaint, int(aInstance) * uVertexCount + VertexID, uOverpaintTexDim); + #elif defined(dOverpaintType_volumeInstance) + vec3 ogridPos = (uOverpaintGridTransform.w * (vModelPosition - uOverpaintGridTransform.xyz)) / uOverpaintGridDim; + vOverpaint = texture3dFrom2dLinear(tOverpaintGrid, ogridPos, uOverpaintGridDim, uOverpaintTexDim); + #endif + + // pre-mix to avoid darkening due to empty overpaint + #ifdef dColorType_uniform + vOverpaint.rgb = mix(uColor.rgb, vOverpaint.rgb, vOverpaint.a); + #else + vOverpaint.rgb = mix(vColor.rgb, vOverpaint.rgb, vOverpaint.a); + #endif + vOverpaint *= uOverpaintStrength; + #endif + + #ifdef dEmissive + #if defined(dEmissiveType_instance) + vEmissive = readFromTexture(tEmissive, aInstance, uEmissiveTexDim).a; + #elif defined(dEmissiveType_groupInstance) + vEmissive = readFromTexture(tEmissive, aInstance * float(uGroupCount) + group, uEmissiveTexDim).a; + #elif defined(dEmissiveType_vertexInstance) + vEmissive = readFromTexture(tEmissive, int(aInstance) * uVertexCount + VertexID, uEmissiveTexDim).a; + #elif defined(dEmissiveType_volumeInstance) + vec3 egridPos = (uEmissiveGridTransform.w * (vModelPosition - uEmissiveGridTransform.xyz)) / uEmissiveGridDim; + vEmissive = texture3dFrom2dLinear(tEmissiveGrid, egridPos, uEmissiveGridDim, uEmissiveTexDim).a; + #endif + vEmissive *= uEmissiveStrength; + #endif + + #ifdef dSubstance + #if defined(dSubstanceType_instance) + vSubstance = readFromTexture(tSubstance, aInstance, uSubstanceTexDim); + #elif defined(dSubstanceType_groupInstance) + vSubstance = readFromTexture(tSubstance, aInstance * float(uGroupCount) + group, uSubstanceTexDim); + #elif defined(dSubstanceType_vertexInstance) + vSubstance = readFromTexture(tSubstance, int(aInstance) * uVertexCount + VertexID, uSubstanceTexDim); + #elif defined(dSubstanceType_volumeInstance) + vec3 sgridPos = (uSubstanceGridTransform.w * (vModelPosition - uSubstanceGridTransform.xyz)) / uSubstanceGridDim; + vSubstance = texture3dFrom2dLinear(tSubstanceGrid, sgridPos, uSubstanceGridDim, uSubstanceTexDim); + #endif + + // pre-mix to avoid artifacts due to empty substance + vSubstance.rgb = mix(vec3(uMetalness, uRoughness, uBumpiness), vSubstance.rgb, vSubstance.a); + vSubstance *= uSubstanceStrength; + #endif +#elif defined(dRenderVariant_emissive) + #ifdef dEmissive + #if defined(dEmissiveType_instance) + vEmissive = readFromTexture(tEmissive, aInstance, uEmissiveTexDim).a; + #elif defined(dEmissiveType_groupInstance) + vEmissive = readFromTexture(tEmissive, aInstance * float(uGroupCount) + group, uEmissiveTexDim).a; + #elif defined(dEmissiveType_vertexInstance) + vEmissive = readFromTexture(tEmissive, int(aInstance) * uVertexCount + VertexID, uEmissiveTexDim).a; + #elif defined(dEmissiveType_volumeInstance) + vec3 egridPos = (uEmissiveGridTransform.w * (vModelPosition - uEmissiveGridTransform.xyz)) / uEmissiveGridDim; + vEmissive = texture3dFrom2dLinear(tEmissiveGrid, egridPos, uEmissiveGridDim, uEmissiveTexDim).a; + #endif + vEmissive *= uEmissiveStrength; + #endif +#elif defined(dRenderVariant_pick) + #ifdef requiredDrawBuffers + vObject = vec4(packIntToRGB(float(uObjectId)), 1.0); + vInstance = vec4(packIntToRGB(aInstance), 1.0); + vGroup = vec4(packIntToRGB(group), 1.0); + #else + if (uPickType == 1) { + vColor = vec4(packIntToRGB(float(uObjectId)), 1.0); + } else if (uPickType == 2) { + vColor = vec4(packIntToRGB(aInstance), 1.0); + } else { + vColor = vec4(packIntToRGB(group), 1.0); + } + #endif +#endif + +#ifdef dTransparency + #if defined(dTransparencyType_instance) + vTransparency = readFromTexture(tTransparency, aInstance, uTransparencyTexDim).a; + #elif defined(dTransparencyType_groupInstance) + vTransparency = readFromTexture(tTransparency, aInstance * float(uGroupCount) + group, uTransparencyTexDim).a; + #elif defined(dTransparencyType_vertexInstance) + vTransparency = readFromTexture(tTransparency, int(aInstance) * uVertexCount + VertexID, uTransparencyTexDim).a; + #elif defined(dTransparencyType_volumeInstance) + vec3 tgridPos = (uTransparencyGridTransform.w * (vModelPosition - uTransparencyGridTransform.xyz)) / uTransparencyGridDim; + vTransparency = texture3dFrom2dLinear(tTransparencyGrid, tgridPos, uTransparencyGridDim, uTransparencyTexDim).a; + #endif + vTransparency *= uTransparencyStrength; +#endif +`;var C5=` +#ifdef dGeometryType_textureMesh + float group = unpackRGBToInt(readFromTexture(tGroup, VertexID, uGeoTexDim).rgb); +#else + float group = aGroup; +#endif +`;var T5=` +#if defined(dNeedsMarker) + #if defined(dMarkerType_instance) + vMarker = readFromTexture(tMarker, aInstance, uMarkerTexDim).a; + #elif defined(dMarkerType_groupInstance) + vMarker = readFromTexture(tMarker, aInstance * float(uGroupCount) + group, uMarkerTexDim).a; + #endif +#endif +`;var w5=` +#if defined(dNeedsMarker) + float marker = uMarker; + if (uMarker == -1.0) { + marker = floor(vMarker * 255.0 + 0.5); // rounding required to work on some cards on win + } +#endif + +#if defined(dRenderVariant_color) + #if defined(dUsePalette) + vec4 material = vec4(texture2D(tPalette, vec2(vPaletteV, 0.5)).rgb, uAlpha); + #elif defined(dColorType_uniform) + vec4 material = vec4(uColor, uAlpha); + #elif defined(dColorType_varying) + vec4 material = vec4(vColor.rgb, uAlpha); + #endif + + // mix material with overpaint + #if defined(dOverpaint) + material.rgb = mix(material.rgb, vOverpaint.rgb, vOverpaint.a); + #endif + + float emissive = uEmissive; + #ifdef dEmissive + emissive += vEmissive; + #endif + + float metalness = uMetalness; + float roughness = uRoughness; + float bumpiness = uBumpiness; + #ifdef dSubstance + float sf = clamp(vSubstance.a, 0.0, 0.99); // clamp to avoid artifacts + metalness = mix(metalness, vSubstance.r, sf); + roughness = mix(roughness, vSubstance.g, sf); + bumpiness = mix(bumpiness, vSubstance.b, sf); + #endif +#elif defined(dRenderVariant_depth) + if (fragmentDepth > getDepth(gl_FragCoord.xy / uDrawingBufferSize)) { + discard; + } + + #ifndef dXrayShaded + #if defined(dTransparency) + float dta = 1.0 - vTransparency; + if (vTransparency < 0.2) dta = 1.0; // hard cutoff looks better + + if (uRenderMask == MaskTransparent && uAlpha * dta == 1.0) { + discard; + } else if (uRenderMask == MaskOpaque && uAlpha * dta < 1.0) { + discard; + } + #else + if (uRenderMask == MaskTransparent && uAlpha == 1.0) { + discard; + } else if (uRenderMask == MaskOpaque && uAlpha < 1.0) { + discard; + } + #endif + #else + if (uRenderMask == MaskOpaque) { + discard; + } + #endif + + vec4 material = packDepthToRGBA(fragmentDepth); +#elif defined(dRenderVariant_marking) + vec4 material; + if(uMarkingType == 1) { + if (marker > 0.0) + discard; + #ifdef enabledFragDepth + material = packDepthToRGBA(gl_FragDepthEXT); + #else + material = packDepthToRGBA(gl_FragCoord.z); + #endif + } else { + if (marker == 0.0) + discard; + float depthTest = 1.0; + if (uMarkingDepthTest) { + depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0; + } + bool isHighlight = intMod(marker, 2.0) > 0.1; + float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar); + float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ)); + if (fogFactor == 1.0) + discard; + material = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0 - fogFactor); + } +#elif defined(dRenderVariant_emissive) + float emissive = uEmissive; + #ifdef dEmissive + emissive += vEmissive; + #endif + vec4 material = vec4(emissive); +#endif + +// apply per-group transparency +#if defined(dTransparency) && (defined(dRenderVariant_pick) || defined(dRenderVariant_color) || defined(dRenderVariant_emissive)) + float ta = 1.0 - vTransparency; + if (vTransparency < 0.09) ta = 1.0; // hard cutoff looks better + + #if defined(dRenderVariant_pick) + if (ta * uAlpha < uPickingAlphaThreshold) + discard; // ignore so the element below can be picked + #elif defined(dRenderVariant_emissive) + if (ta < 1.0) + discard; // emissive not supported with transparency + #elif defined(dRenderVariant_color) + material.a *= ta; + #endif +#endif +`;var _5=` +mat4 model = uModel * aTransform; +mat4 modelView = uView * model; +#ifdef dGeometryType_textureMesh + vec3 position = readFromTexture(tPosition, VertexID, uGeoTexDim).xyz; +#else + vec3 position = aPosition; +#endif +vec4 position4 = vec4(position, 1.0); +// for accessing tColorGrid in vert shader and for clipping in frag shader +vModelPosition = (model * position4).xyz; +vec4 mvPosition = modelView * position4; +vViewPosition = mvPosition.xyz; +gl_Position = uProjection * mvPosition; +`;var P5=` +#if defined(dSizeType_uniform) + float size = uSize; +#elif defined(dSizeType_attribute) + float size = aSize; +#elif defined(dSizeType_instance) + float size = unpackRGBToInt(readFromTexture(tSize, aInstance, uSizeTexDim).rgb); +#elif defined(dSizeType_group) + float size = unpackRGBToInt(readFromTexture(tSize, group, uSizeTexDim).rgb); +#elif defined(dSizeType_groupInstance) + float size = unpackRGBToInt(readFromTexture(tSize, aInstance * float(uGroupCount) + group, uSizeTexDim).rgb); +#endif + +#if defined(dSizeType_instance) || defined(dSizeType_group) || defined(dSizeType_groupInstance) + size /= 100.0; // NOTE factor also set in TypeScript +#endif + +size *= uSizeFactor; +`;var E5=` +float viewZ = depthToViewZ(uIsOrtho, fragmentDepth, uNear, uFar); +float fogFactor = smoothstep(uFogNear, uFogFar, abs(viewZ)); +float alpha = (1.0 - fogFactor) * uAlpha; +// if not opaque enough ignore so the element below can be picked +if (uAlpha < uPickingAlphaThreshold || alpha < 0.1) { + #ifdef dTransparentBackfaces_opaque + if (!interior) discard; + #else + discard; + #endif +} +`;var I5=` +#if defined(dRenderVariant_color) + #if defined(dTransparentBackfaces_off) + if (interior && material.a < 1.0) discard; + #elif defined(dTransparentBackfaces_opaque) + if (interior) material.a = 1.0; + #endif + + #if !defined(dXrayShaded_on) && !defined(dXrayShaded_inverted) + if ((uRenderMask == MaskOpaque && material.a < 1.0) || + (uRenderMask == MaskTransparent && material.a == 1.0) + ) { + discard; + } + #endif +#endif +`;var D5=` +#if defined(dClipVariant_instance) && dClipObjectCount != 0 + vec4 mCenter = uModel * aTransform * vec4(uInvariantBoundingSphere.xyz, 1.0); + if (clipTest(vec4(mCenter.xyz, uInvariantBoundingSphere.w))) + // move out of [ -w, +w ] to 'discard' in vert shader + gl_Position.z = 2.0 * gl_Position.w; +#endif +`;var A5=` +#if defined(dClipVariant_pixel) && dClipObjectCount != 0 + if (clipTest(vec4(vModelPosition, 0.0))) + discard; +#endif +`;var k5=` +uniform float uMetalness; +uniform float uRoughness; +uniform float uBumpiness; +#ifdef bumpEnabled + uniform float uBumpFrequency; + uniform float uBumpAmplitude; +#endif +uniform float uEmissive; + +#if defined(dRenderVariant_color) + #if defined(dColorType_uniform) + uniform vec3 uColor; + #elif defined(dColorType_varying) + varying vec4 vColor; + #endif + + #ifdef dUsePalette + uniform sampler2D tPalette; + varying float vPaletteV; + #endif + + #ifdef dOverpaint + varying vec4 vOverpaint; + #endif + + #ifdef dEmissive + varying float vEmissive; + #endif + + #ifdef dSubstance + varying vec4 vSubstance; + #endif +#elif defined(dRenderVariant_emissive) + #ifdef dEmissive + varying float vEmissive; + #endif +#elif defined(dRenderVariant_pick) + #if __VERSION__ == 100 || !defined(dVaryingGroup) + #ifdef requiredDrawBuffers + varying vec4 vObject; + varying vec4 vInstance; + varying vec4 vGroup; + #else + varying vec4 vColor; + #endif + #else + #ifdef requiredDrawBuffers + flat in vec4 vObject; + flat in vec4 vInstance; + flat in vec4 vGroup; + #else + flat in vec4 vColor; + #endif + #endif +#endif + +#ifdef dTransparency + varying float vTransparency; +#endif +`;var M5=` +uniform float uMetalness; +uniform float uRoughness; +uniform float uBumpiness; + +#if defined(dRenderVariant_color) + #if defined(dColorType_uniform) + uniform vec3 uColor; + #elif defined(dColorType_attribute) + varying vec4 vColor; + attribute vec3 aColor; + #elif defined(dColorType_texture) + varying vec4 vColor; + uniform vec2 uColorTexDim; + uniform sampler2D tColor; + #elif defined(dColorType_grid) + varying vec4 vColor; + uniform vec2 uColorTexDim; + uniform vec3 uColorGridDim; + uniform vec4 uColorGridTransform; + uniform sampler2D tColorGrid; + #elif defined(dColorType_direct) + varying vec4 vColor; + #endif + + #ifdef dUsePalette + varying float vPaletteV; + #endif + + #ifdef dOverpaint + #if defined(dOverpaintType_instance) || defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance) + varying vec4 vOverpaint; + uniform vec2 uOverpaintTexDim; + uniform sampler2D tOverpaint; + #elif defined(dOverpaintType_volumeInstance) + varying vec4 vOverpaint; + uniform vec2 uOverpaintTexDim; + uniform vec3 uOverpaintGridDim; + uniform vec4 uOverpaintGridTransform; + uniform sampler2D tOverpaintGrid; + #endif + uniform float uOverpaintStrength; + #endif + + #ifdef dEmissive + #if defined(dEmissiveType_instance) || defined(dEmissiveType_groupInstance) || defined(dEmissiveType_vertexInstance) + varying float vEmissive; + uniform vec2 uEmissiveTexDim; + uniform sampler2D tEmissive; + #elif defined(dEmissiveType_volumeInstance) + varying float vEmissive; + uniform vec2 uEmissiveTexDim; + uniform vec3 uEmissiveGridDim; + uniform vec4 uEmissiveGridTransform; + uniform sampler2D tEmissiveGrid; + #endif + uniform float uEmissiveStrength; + #endif + + #ifdef dSubstance + #if defined(dSubstanceType_instance) || defined(dSubstanceType_groupInstance) || defined(dSubstanceType_vertexInstance) + varying vec4 vSubstance; + uniform vec2 uSubstanceTexDim; + uniform sampler2D tSubstance; + #elif defined(dSubstanceType_volumeInstance) + varying vec4 vSubstance; + uniform vec2 uSubstanceTexDim; + uniform vec3 uSubstanceGridDim; + uniform vec4 uSubstanceGridTransform; + uniform sampler2D tSubstanceGrid; + #endif + uniform float uSubstanceStrength; + #endif +#elif defined(dRenderVariant_emissive) + #ifdef dEmissive + #if defined(dEmissiveType_instance) || defined(dEmissiveType_groupInstance) || defined(dEmissiveType_vertexInstance) + varying float vEmissive; + uniform vec2 uEmissiveTexDim; + uniform sampler2D tEmissive; + #elif defined(dEmissiveType_volumeInstance) + varying float vEmissive; + uniform vec2 uEmissiveTexDim; + uniform vec3 uEmissiveGridDim; + uniform vec4 uEmissiveGridTransform; + uniform sampler2D tEmissiveGrid; + #endif + uniform float uEmissiveStrength; + #endif +#elif defined(dRenderVariant_pick) + #if __VERSION__ == 100 || !defined(dVaryingGroup) + #ifdef requiredDrawBuffers + varying vec4 vObject; + varying vec4 vInstance; + varying vec4 vGroup; + #else + varying vec4 vColor; + #endif + #else + #ifdef requiredDrawBuffers + flat out vec4 vObject; + flat out vec4 vInstance; + flat out vec4 vGroup; + #else + flat out vec4 vColor; + #endif + #endif +#endif + +#ifdef dTransparency + #if defined(dTransparencyType_instance) || defined(dTransparencyType_groupInstance) || defined(dTransparencyType_vertexInstance) + varying float vTransparency; + uniform vec2 uTransparencyTexDim; + uniform sampler2D tTransparency; + #elif defined(dTransparencyType_volumeInstance) + varying float vTransparency; + uniform vec2 uTransparencyTexDim; + uniform vec3 uTransparencyGridDim; + uniform vec4 uTransparencyGridTransform; + uniform sampler2D tTransparencyGrid; + #endif + uniform float uTransparencyStrength; +#endif +`;var R5=` +#if dClipObjectCount != 0 + vec3 quaternionTransform(const in vec4 q, const in vec3 v) { + vec3 t = 2.0 * cross(q.xyz, v); + return v + q.w * t + cross(q.xyz, t); + } + + vec4 computePlane(const in vec3 normal, const in vec3 inPoint) { + return vec4(normalize(normal), -dot(normal, inPoint)); + } + + float planeSD(const in vec4 plane, const in vec3 center) { + return -dot(plane.xyz, center - plane.xyz * -plane.w); + } + + float sphereSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) { + return ( + length(quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position) / size) - 1.0 + ) * min(min(size.x, size.y), size.z); + } + + float cubeSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) { + vec3 d = abs(quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position)) - size; + return min(max(d.x, max(d.y, d.z)), 0.0) + length(max(d, 0.0)); + } + + float cylinderSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) { + vec3 t = quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position); + + vec2 d = abs(vec2(length(t.xz), t.y)) - size.xy; + return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)); + } + + float infiniteConeSD(const in vec3 position, const in vec4 rotation, const in vec3 size, const in vec3 center) { + vec3 t = quaternionTransform(vec4(-rotation.x, -rotation.y, -rotation.z, rotation.w), center - position); + + float q = length(t.xy); + return dot(size.xy, vec2(q, t.z)); + } + + float getSignedDistance(const in vec3 center, const in int type, const in vec3 position, const in vec4 rotation, const in vec3 scale) { + if (type == 1) { + vec3 normal = quaternionTransform(rotation, vec3(0.0, 1.0, 0.0)); + vec4 plane = computePlane(normal, position); + return planeSD(plane, center); + } else if (type == 2) { + return sphereSD(position, rotation, scale * 0.5, center); + } else if (type == 3) { + return cubeSD(position, rotation, scale * 0.5, center); + } else if (type == 4) { + return cylinderSD(position, rotation, scale * 0.5, center); + } else if (type == 5) { + return infiniteConeSD(position, rotation, scale * 0.5, center); + } else { + return 0.1; + } + } + + #if __VERSION__ == 100 + // 8-bit + int bitwiseAnd(in int a, in int b) { + int d = 128; + int result = 0; + for (int i = 0; i < 8; ++i) { + if (d <= 0) break; + if (a >= d && b >= d) result += d; + if (a >= d) a -= d; + if (b >= d) b -= d; + d /= 2; + } + return result; + } + + bool hasBit(const in int mask, const in int bit) { + return bitwiseAnd(mask, bit) == 0; + } + #else + bool hasBit(const in int mask, const in int bit) { + return (mask & bit) == 0; + } + #endif + + bool clipTest(const in vec4 sphere) { + // flag is a bit-flag for clip-objects to ignore (note, object ids start at 1 not 0) + #if defined(dClipping) + int flag = int(floor(vClipping * 255.0 + 0.5)); + #else + int flag = 0; + #endif + + #pragma unroll_loop_start + for (int i = 0; i < dClipObjectCount; ++i) { + if (flag == 0 || hasBit(flag, UNROLLED_LOOP_INDEX + 1)) { + // TODO take sphere radius into account? + bool test = getSignedDistance(sphere.xyz, uClipObjectType[i], uClipObjectPosition[i], uClipObjectRotation[i], uClipObjectScale[i]) <= 0.0; + if ((!uClipObjectInvert[i] && test) || (uClipObjectInvert[i] && !test)) { + return true; + } + } + } + #pragma unroll_loop_end + return false; + } +#endif +`;var L5=` +uniform int uObjectId; +uniform int uInstanceCount; +uniform int uGroupCount; + +uniform int uPickType; +uniform int uMarkingType; + +uniform vec4 uCameraPlane; +uniform vec4 uLod; + +#if dClipObjectCount != 0 + uniform int uClipObjectType[dClipObjectCount]; + uniform bool uClipObjectInvert[dClipObjectCount]; + uniform vec3 uClipObjectPosition[dClipObjectCount]; + uniform vec4 uClipObjectRotation[dClipObjectCount]; + uniform vec3 uClipObjectScale[dClipObjectCount]; + + #if defined(dClipping) + #if __VERSION__ == 100 || defined(dClippingType_instance) || !defined(dVaryingGroup) + varying float vClipping; + #else + flat in float vClipping; + #endif + #endif +#endif + +#if defined(dColorMarker) + uniform vec3 uHighlightColor; + uniform vec3 uSelectColor; + uniform vec3 uDimColor; + uniform float uHighlightStrength; + uniform float uSelectStrength; + uniform float uDimStrength; + uniform int uMarkerPriority; + uniform float uMarkerAverage; +#endif + +#if defined(dNeedsMarker) + uniform float uMarker; + #if __VERSION__ == 100 || defined(dMarkerType_instance) || !defined(dVaryingGroup) + varying float vMarker; + #else + flat in float vMarker; + #endif +#endif + +#if defined(dRenderVariant_colorDpoit) + #define MAX_DPOIT_DEPTH 99999.0 // NOTE constant also set in TypeScript + uniform sampler2D tDpoitDepth; + uniform sampler2D tDpoitFrontColor; +#endif + +varying vec3 vModelPosition; +varying vec3 vViewPosition; + +uniform vec2 uViewOffset; + +uniform float uNear; +uniform float uFar; +uniform float uIsOrtho; + +uniform bool uFog; +uniform float uFogNear; +uniform float uFogFar; +uniform vec3 uFogColor; + +uniform float uAlpha; +uniform float uPickingAlphaThreshold; +uniform bool uTransparentBackground; + +uniform bool uDoubleSided; +uniform float uInteriorDarkening; +uniform bool uInteriorColorFlag; +uniform vec3 uInteriorColor; +bool interior; + +uniform float uXrayEdgeFalloff; +uniform float uExposure; + +uniform mat4 uProjection; + +uniform int uRenderMask; +uniform bool uMarkingDepthTest; + +uniform sampler2D tDepth; +uniform vec2 uDrawingBufferSize; + +float getDepthPacked(const in vec2 coords) { + return unpackRGBAToDepth(texture2D(tDepth, coords)); +} + +float getDepth(const in vec2 coords) { + #ifdef depthTextureSupport + return texture2D(tDepth, coords).r; + #else + return unpackRGBAToDepth(texture2D(tDepth, coords)); + #endif +} + +float calcDepth(const in vec3 pos) { + vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw; + return 0.5 + 0.5 * clipZW.x / clipZW.y; +} + +// "Bump Mapping Unparametrized Surfaces on the GPU" Morten S. Mikkelsen +// https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf +vec3 perturbNormal(in vec3 position, in vec3 normal, in float height, in float scale) { + vec3 sigmaS = dFdx(position); + vec3 sigmaT = dFdy(position); + + vec3 r1 = cross(sigmaT, normal); + vec3 r2 = cross(normal, sigmaS); + float det = dot(sigmaS, r1); + if (det == 0.0) return normal; + + float bs = dFdx(height); + float bt = dFdy(height); + + vec3 surfGrad = sign(det) * (bs * r1 + bt * r2); + return normalize(abs(det) * normal - scale * surfGrad); +} + +float hash(in float h) { + return fract(sin(h) * 43758.5453123); +} + +float noise(in vec3 x) { + vec3 p = floor(x); + vec3 f = fract(x); + f = f * f * (3.0 - 2.0 * f); + + float n = p.x + p.y * 157.0 + 113.0 * p.z; + return mix( + mix(mix(hash(n + 0.0), hash(n + 1.0), f.x), + mix(hash(n + 157.0), hash(n + 158.0), f.x), f.y), + mix(mix(hash(n + 113.0), hash(n + 114.0), f.x), + mix(hash(n + 270.0), hash(n + 271.0), f.x), f.y), f.z); +} + +float fbm(in vec3 p) { + float f = 0.0; + f += 0.5 * noise(p); + p *= 2.01; + f += 0.25 * noise(p); + p *= 2.02; + f += 0.125 * noise(p); + + return f; +} +`;var B5=` +uniform mat4 uProjection, uModel, uView; +uniform vec3 uCameraPosition; +uniform vec4 uCameraPlane; + +uniform int uObjectId; +uniform int uVertexCount; +uniform int uInstanceCount; +uniform int uGroupCount; +uniform vec4 uInvariantBoundingSphere; +uniform vec4 uLod; + +uniform bool uDoubleSided; +uniform int uPickType; + +#if dClipObjectCount != 0 + uniform int uClipObjectType[dClipObjectCount]; + uniform bool uClipObjectInvert[dClipObjectCount]; + uniform vec3 uClipObjectPosition[dClipObjectCount]; + uniform vec4 uClipObjectRotation[dClipObjectCount]; + uniform vec3 uClipObjectScale[dClipObjectCount]; + + #if defined(dClipping) + uniform vec2 uClippingTexDim; + uniform sampler2D tClipping; + #if __VERSION__ == 100 || defined(dClippingType_instance) || !defined(dVaryingGroup) + varying float vClipping; + #else + flat out float vClipping; + #endif + #endif +#endif + +#if defined(dNeedsMarker) + uniform float uMarker; + uniform vec2 uMarkerTexDim; + uniform sampler2D tMarker; + #if __VERSION__ == 100 || defined(dMarkerType_instance) || !defined(dVaryingGroup) + varying float vMarker; + #else + flat out float vMarker; + #endif +#endif + +varying vec3 vModelPosition; +varying vec3 vViewPosition; + +#if defined(noNonInstancedActiveAttribs) + // int() is needed for some Safari versions + // see https://bugs.webkit.org/show_bug.cgi?id=244152 + #define VertexID int(gl_VertexID) +#else + attribute float aVertex; + #define VertexID int(aVertex) +#endif + +#if defined(enabledMultiDraw) + #define DrawID gl_DrawID +#else + #define DrawID uDrawId +#endif +`;var O5=` +// TODO find a better place for these convenience defines + +#if defined(dRenderVariant_colorBlended) || defined(dRenderVariant_colorWboit) || defined(dRenderVariant_colorDpoit) + #define dRenderVariant_color +#endif + +#if defined(dColorType_instance) || defined(dColorType_group) || defined(dColorType_groupInstance) || defined(dColorType_vertex) || defined(dColorType_vertexInstance) + #define dColorType_texture +#endif + +#if defined(dColorType_volume) || defined(dColorType_volumeInstance) + #define dColorType_grid +#endif + +#if defined(dColorType_attribute) || defined(dColorType_texture) || defined(dColorType_grid) + #define dColorType_varying +#endif + +#if (defined(dRenderVariant_color) && defined(dColorMarker)) || defined(dRenderVariant_marking) + #define dNeedsMarker +#endif + +#if defined(dXrayShaded_on) || defined(dXrayShaded_inverted) + #define dXrayShaded +#endif + +#define MaskAll 0 +#define MaskOpaque 1 +#define MaskTransparent 2 + +// + +#define PI 3.14159265 +#define RECIPROCAL_PI 0.31830988618 +#define EPSILON 1e-6 + +#define saturate(a) clamp(a, 0.0, 1.0) + +#if __VERSION__ == 100 + #define round(x) floor((x) + 0.5) +#endif + +float intDiv(const in float a, const in float b) { return float(int(a) / int(b)); } +vec2 ivec2Div(const in vec2 a, const in vec2 b) { return vec2(ivec2(a) / ivec2(b)); } +float intMod(const in float a, const in float b) { return a - b * float(int(a) / int(b)); } +int imod(const in int a, const in int b) { return a - b * (a / b); } + +float pow2(const in float x) { return x * x; } + +vec3 packIntToRGB(in float value) { + value = clamp(round(value), 0.0, 16777216.0 - 1.0) + 1.0; + vec3 c = vec3(0.0); + c.b = mod(value, 256.0); + value = floor(value / 256.0); + c.g = mod(value, 256.0); + value = floor(value / 256.0); + c.r = mod(value, 256.0); + return c / 255.0; +} +float unpackRGBToInt(const in vec3 rgb) { + return (floor(rgb.r * 255.0 + 0.5) * 256.0 * 256.0 + floor(rgb.g * 255.0 + 0.5) * 256.0 + floor(rgb.b * 255.0 + 0.5)) - 1.0; +} + +vec2 packUnitIntervalToRG(const in float v) { + vec2 enc; + enc.xy = vec2(fract(v * 256.0), v); + enc.y -= enc.x * (1.0 / 256.0); + enc.xy *= 256.0 / 255.0; + + return enc; +} + +float unpackRGToUnitInterval(const in vec2 enc) { + return dot(enc, vec2(255.0 / (256.0 * 256.0), 255.0 / 256.0)); +} + +vec3 screenSpaceToViewSpace(const in vec3 ssPos, const in mat4 invProjection) { + vec4 p = vec4(ssPos * 2.0 - 1.0, 1.0); + p = invProjection * p; + return p.xyz / p.w; +} + +const float PackUpscale = 256.0 / 255.0; // fraction -> 0..1 (including 1) +const float UnpackDownscale = 255.0 / 256.0; // 0..1 -> fraction (excluding 1) +const vec3 PackFactors = vec3(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0); +const vec4 UnpackFactors = UnpackDownscale / vec4(PackFactors, 1.0); +const float ShiftRight8 = 1.0 / 256.0; + +vec4 packDepthToRGBA(const in float v) { + vec4 r = vec4(fract(v * PackFactors), v); + r.yzw -= r.xyz * ShiftRight8; // tidy overflow + return r * PackUpscale; +} +float unpackRGBAToDepth(const in vec4 v) { + return dot(v, UnpackFactors); +} + +vec4 sRGBToLinear(const in vec4 c) { + return vec4(mix(pow(c.rgb * 0.9478672986 + vec3(0.0521327014), vec3(2.4)), c.rgb * 0.0773993808, vec3(lessThanEqual(c.rgb, vec3(0.04045)))), c.a); +} +vec4 linearTosRGB(const in vec4 c) { + return vec4(mix(pow(c.rgb, vec3(0.41666)) * 1.055 - vec3(0.055), c.rgb * 12.92, vec3(lessThanEqual(c.rgb, vec3(0.0031308)))), c.a); +} + +float linearizeDepth(const in float depth, const in float near, const in float far) { + return (2.0 * near) / (far + near - depth * (far - near)); +} + +float perspectiveDepthToViewZ(const in float invClipZ, const in float near, const in float far) { + return (near * far) / ((far - near) * invClipZ - far); +} + +float orthographicDepthToViewZ(const in float linearClipZ, const in float near, const in float far) { + return linearClipZ * (near - far) - near; +} + +float depthToViewZ(const in float isOrtho, const in float linearClipZ, const in float near, const in float far) { + return isOrtho == 1.0 ? orthographicDepthToViewZ(linearClipZ, near, far) : perspectiveDepthToViewZ(linearClipZ, near, far); +} + +#if __VERSION__ == 100 + // transpose + + float transpose(const in float m) { + return m; + } + + mat2 transpose2(const in mat2 m) { + return mat2( + m[0][0], m[1][0], + m[0][1], m[1][1] + ); + } + + mat3 transpose3(const in mat3 m) { + return mat3( + m[0][0], m[1][0], m[2][0], + m[0][1], m[1][1], m[2][1], + m[0][2], m[1][2], m[2][2] + ); + } + + mat4 transpose4(const in mat4 m) { + return mat4( + m[0][0], m[1][0], m[2][0], m[3][0], + m[0][1], m[1][1], m[2][1], m[3][1], + m[0][2], m[1][2], m[2][2], m[3][2], + m[0][3], m[1][3], m[2][3], m[3][3] + ); + } + + // inverse + + float inverse(const in float m) { + return 1.0 / m; + } + + mat2 inverse2(const in mat2 m) { + return mat2(m[1][1],-m[0][1], + -m[1][0], m[0][0]) / (m[0][0]*m[1][1] - m[0][1]*m[1][0]); + } + + mat3 inverse3(const in mat3 m) { + float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2]; + float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2]; + float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2]; + + float b01 = a22 * a11 - a12 * a21; + float b11 = -a22 * a10 + a12 * a20; + float b21 = a21 * a10 - a11 * a20; + + float det = a00 * b01 + a01 * b11 + a02 * b21; + + return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11), + b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10), + b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det; + } + + mat4 inverse4(const in mat4 m) { + float + a00 = m[0][0], a01 = m[0][1], a02 = m[0][2], a03 = m[0][3], + a10 = m[1][0], a11 = m[1][1], a12 = m[1][2], a13 = m[1][3], + a20 = m[2][0], a21 = m[2][1], a22 = m[2][2], a23 = m[2][3], + a30 = m[3][0], a31 = m[3][1], a32 = m[3][2], a33 = m[3][3], + + b00 = a00 * a11 - a01 * a10, + b01 = a00 * a12 - a02 * a10, + b02 = a00 * a13 - a03 * a10, + b03 = a01 * a12 - a02 * a11, + b04 = a01 * a13 - a03 * a11, + b05 = a02 * a13 - a03 * a12, + b06 = a20 * a31 - a21 * a30, + b07 = a20 * a32 - a22 * a30, + b08 = a20 * a33 - a23 * a30, + b09 = a21 * a32 - a22 * a31, + b10 = a21 * a33 - a23 * a31, + b11 = a22 * a33 - a23 * a32, + + det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + + return mat4( + a11 * b11 - a12 * b10 + a13 * b09, + a02 * b10 - a01 * b11 - a03 * b09, + a31 * b05 - a32 * b04 + a33 * b03, + a22 * b04 - a21 * b05 - a23 * b03, + a12 * b08 - a10 * b11 - a13 * b07, + a00 * b11 - a02 * b08 + a03 * b07, + a32 * b02 - a30 * b05 - a33 * b01, + a20 * b05 - a22 * b02 + a23 * b01, + a10 * b10 - a11 * b08 + a13 * b06, + a01 * b08 - a00 * b10 - a03 * b06, + a30 * b04 - a31 * b02 + a33 * b00, + a21 * b02 - a20 * b04 - a23 * b00, + a11 * b07 - a10 * b09 - a12 * b06, + a00 * b09 - a01 * b07 + a02 * b06, + a31 * b01 - a30 * b03 - a32 * b00, + a20 * b03 - a21 * b01 + a22 * b00) / det; + } + + #define isNaN(x) ((x) != (x)) + #define isInf(x) ((x) == (x) + 1.0) +#else + #define transpose2(m) transpose(m) + #define transpose3(m) transpose(m) + #define transpose4(m) transpose(m) + + #define inverse2(m) inverse(m) + #define inverse3(m) inverse(m) + #define inverse4(m) inverse(m) + + #define isNaN isnan + #define isInf isinf +#endif +`;var F5=` +if (uLod.w == 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) { + float d = dot(uCameraPlane.xyz, vModelPosition) + uCameraPlane.w; + float ta = min( + smoothstep(uLod.x, uLod.x + uLod.z, d), + 1.0 - smoothstep(uLod.y - uLod.z, uLod.y, d) + ); + + #if defined(dRenderVariant_color) + float at = 0.0; + + // shift by view-offset during multi-sample rendering to allow for blending + vec2 coord = gl_FragCoord.xy + uViewOffset * 0.25; + + const mat4 thresholdMatrix = mat4( + 1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0, + 13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0, + 4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0, + 16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0 + ); + int ci = int(intMod(coord.x, 4.0)); + int ri = int(intMod(coord.y, 4.0)); + #if __VERSION__ == 100 + vec4 i = vec4(float(ci * 4 + ri)); + vec4 v = thresholdMatrix[0] * vec4(equal(i, vec4(0.0, 1.0, 2.0, 3.0))) + + thresholdMatrix[1] * vec4(equal(i, vec4(4.0, 5.0, 6.0, 7.0))) + + thresholdMatrix[2] * vec4(equal(i, vec4(8.0, 9.0, 10.0, 11.0))) + + thresholdMatrix[3] * vec4(equal(i, vec4(12.0, 13.0, 14.0, 15.0))); + at = v.x + v.y + v.z + v.w; + #else + at = thresholdMatrix[ci][ri]; + #endif + + if (ta < 0.99 && (ta < 0.01 || ta < at)) { + discard; + } + #else + if (ta < uPickingAlphaThreshold) { + discard; + } + #endif +} +`;var N5=` + // floatToRgba adapted from https://github.com/equinor/glsl-float-to-rgba + // MIT License, Copyright (c) 2020 Equinor + + float shiftRight (float v, float amt) { + v = floor(v) + 0.5; + return floor(v / exp2(amt)); + } + float shiftLeft (float v, float amt) { + return floor(v * exp2(amt) + 0.5); + } + float maskLast (float v, float bits) { + return mod(v, shiftLeft(1.0, bits)); + } + float extractBits (float num, float from, float to) { + from = floor(from + 0.5); to = floor(to + 0.5); + return maskLast(shiftRight(num, from), to - from); + } + + vec4 floatToRgba(float texelFloat, bool littleEndian) { + if (texelFloat == 0.0) return vec4(0.0, 0.0, 0.0, 0.0); + float sign = texelFloat > 0.0 ? 0.0 : 1.0; + texelFloat = abs(texelFloat); + float exponent = floor(log2(texelFloat)); + float biased_exponent = exponent + 127.0; + float fraction = ((texelFloat / exp2(exponent)) - 1.0) * 8388608.0; + float t = biased_exponent / 2.0; + float last_bit_of_biased_exponent = fract(t) * 2.0; + float remaining_bits_of_biased_exponent = floor(t); + float byte4 = extractBits(fraction, 0.0, 8.0) / 255.0; + float byte3 = extractBits(fraction, 8.0, 16.0) / 255.0; + float byte2 = (last_bit_of_biased_exponent * 128.0 + extractBits(fraction, 16.0, 23.0)) / 255.0; + float byte1 = (sign * 128.0 + remaining_bits_of_biased_exponent) / 255.0; + return ( + littleEndian + ? vec4(byte4, byte3, byte2, byte1) + : vec4(byte1, byte2, byte3, byte4) + ); + } +`;var V5=` +#if dLightCount != 0 + uniform vec3 uLightDirection[dLightCount]; + uniform vec3 uLightColor[dLightCount]; +#endif +uniform vec3 uAmbientColor; + +struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; +}; + +struct IncidentLight { + vec3 color; + vec3 direction; +}; + +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; + +struct GeometricContext { + vec3 position; + vec3 normal; + vec3 viewDir; +}; + +vec3 BRDF_Lambert(const in vec3 diffuseColor) { + return RECIPROCAL_PI * diffuseColor; +} + +vec3 F_Schlick(const in vec3 f0, const in float f90, const in float dotVH) { + // Original approximation by Christophe Schlick '94 + // float fresnel = pow( 1.0 - dotVH, 5.0 ); + // Optimized variant (presented by Epic at SIGGRAPH '13) + // https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf + float fresnel = exp2((-5.55473 * dotVH - 6.98316) * dotVH); + return f0 * (1.0 - fresnel) + (f90 * fresnel); +} + +// Moving Frostbite to Physically Based Rendering 3.0 - page 12, listing 2 +// https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf +float V_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) { + float a2 = pow2(alpha); + float gv = dotNL * sqrt(a2 + (1.0 - a2) * pow2(dotNV)); + float gl = dotNV * sqrt(a2 + (1.0 - a2) * pow2(dotNL)); + return 0.5 / max(gv + gl, EPSILON); +} + +// Microfacet Models for Refraction through Rough Surfaces - equation (33) +// http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html +// alpha is "roughness squared" in Disney\u2019s reparameterization +float D_GGX(const in float alpha, const in float dotNH) { + float a2 = pow2(alpha); + float denom = pow2(dotNH) * (a2 - 1.0) + 1.0; // avoid alpha = 0 with dotNH = 1 + return RECIPROCAL_PI * a2 / pow2(denom); +} + +// GGX Distribution, Schlick Fresnel, GGX_SmithCorrelated Visibility +vec3 BRDF_GGX(const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness) { + float alpha = pow2(roughness); // UE4's roughness + vec3 halfDir = normalize( lightDir + viewDir); + float dotNL = saturate(dot(normal, lightDir)); + float dotNV = saturate(dot(normal, viewDir)); + float dotNH = saturate(dot(normal, halfDir)); + float dotVH = saturate(dot(viewDir, halfDir)); + vec3 F = F_Schlick(f0, f90, dotVH); + float V = V_GGX_SmithCorrelated(alpha, dotNL, dotNV); + float D = D_GGX(alpha, dotNH); + return F * (V * D); +} + +// Analytical approximation of the DFG LUT, one half of the +// split-sum approximation used in indirect specular lighting. +// via 'environmentBRDF' from "Physically Based Shading on Mobile" +// https://www.unrealengine.com/blog/physically-based-shading-on-mobile +vec2 DFGApprox(const in vec3 normal, const in vec3 viewDir, const in float roughness) { + float dotNV = saturate(dot(normal, viewDir)); + const vec4 c0 = vec4(-1, -0.0275, -0.572, 0.022); + const vec4 c1 = vec4(1, 0.0425, 1.04, -0.04); + vec4 r = roughness * c0 + c1; + float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y; + vec2 fab = vec2(-1.04, 1.04) * a004 + r.zw; + return fab; +} + +// Fdez-Ag\xFCera's "Multiple-Scattering Microfacet Model for Real-Time Image Based Lighting" +// Approximates multiscattering in order to preserve energy. +// http://www.jcgt.org/published/0008/01/03/ +void computeMultiscattering(const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter) { + vec2 fab = DFGApprox(normal, viewDir, roughness); + vec3 FssEss = specularColor * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = specularColor + (1.0 - specularColor) * 0.047619; // 1/21 + vec3 Fms = FssEss * Favg / (1.0 - Ems * Favg); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} + +void RE_Direct_Physical(const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + float dotNL = saturate(dot(geometry.normal, directLight.direction)); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directSpecular += irradiance * BRDF_GGX(directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert(material.diffuseColor); +} + +void RE_IndirectDiffuse_Physical(const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert(material.diffuseColor); +} + +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + // Both indirect specular and indirect diffuse light accumulate here + vec3 singleScattering = vec3(0.0); + vec3 multiScattering = vec3(0.0); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + computeMultiscattering(geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering); + vec3 diffuse = material.diffuseColor * (1.0 - ( singleScattering + multiScattering)); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +`;var z5=` +float matrixScale(in mat4 m){ + vec4 r = m[0]; + return sqrt(r[0] * r[0] + r[1] * r[1] + r[2] * r[2]); +} +`;var U5=` +varying vec3 vNormal; +`;var G5=` +vec4 readFromTexture(const in sampler2D tex, const in float i, const in vec2 dim) { + float x = intMod(i, dim.x); + float y = floor(intDiv(i, dim.x)); + vec2 uv = (vec2(x, y) + 0.5) / dim; + return texture2D(tex, uv); +} + +vec4 readFromTexture(const in sampler2D tex, const in int i, const in vec2 dim) { + int x = imod(i, int(dim.x)); + int y = i / int(dim.x); + vec2 uv = (vec2(x, y) + 0.5) / dim; + return texture2D(tex, uv); +} +`;var j5=` + // rgbaToFloat adapted from https://github.com/ihmeuw/glsl-rgba-to-float + // BSD 3-Clause License + // + // Copyright (c) 2019, Institute for Health Metrics and Evaluation All rights reserved. + // Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + // - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + // - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + // - Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + // + // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + // INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + // OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + // OF THE POSSIBILITY OF SUCH DAMAGE. + + ivec4 floatsToBytes(vec4 inputFloats, bool littleEndian) { + ivec4 bytes = ivec4(inputFloats * 255.0); + return ( + littleEndian + ? bytes.abgr + : bytes + ); + } + + // Break the four bytes down into an array of 32 bits. + void bytesToBits(const in ivec4 bytes, out bool bits[32]) { + for (int channelIndex = 0; channelIndex < 4; ++channelIndex) { + float acc = float(bytes[channelIndex]); + for (int indexInByte = 7; indexInByte >= 0; --indexInByte) { + float powerOfTwo = exp2(float(indexInByte)); + bool bit = acc >= powerOfTwo; + bits[channelIndex * 8 + (7 - indexInByte)] = bit; + acc = mod(acc, powerOfTwo); + } + } + } + + // Compute the exponent of the 32-bit float. + float getExponent(bool bits[32]) { + const int startIndex = 1; + const int bitStringLength = 8; + const int endBeforeIndex = startIndex + bitStringLength; + float acc = 0.0; + int pow2 = bitStringLength - 1; + for (int bitIndex = startIndex; bitIndex < endBeforeIndex; ++bitIndex) { + acc += float(bits[bitIndex]) * exp2(float(pow2--)); + } + return acc; + } + + // Compute the mantissa of the 32-bit float. + float getMantissa(bool bits[32], bool subnormal) { + const int startIndex = 9; + const int bitStringLength = 23; + const int endBeforeIndex = startIndex + bitStringLength; + // Leading/implicit/hidden bit convention: + // If the number is not subnormal (with exponent 0), we add a leading 1 digit. + float acc = float(!subnormal) * exp2(float(bitStringLength)); + int pow2 = bitStringLength - 1; + for (int bitIndex = startIndex; bitIndex < endBeforeIndex; ++bitIndex) { + acc += float(bits[bitIndex]) * exp2(float(pow2--)); + } + return acc; + } + + // Parse the float from its 32 bits. + float bitsToFloat(bool bits[32]) { + float signBit = float(bits[0]) * -2.0 + 1.0; + float exponent = getExponent(bits); + bool subnormal = abs(exponent - 0.0) < 0.01; + float mantissa = getMantissa(bits, subnormal); + float exponentBias = 127.0; + return signBit * mantissa * exp2(exponent - exponentBias - 23.0); + } + + float rgbaToFloat(vec4 texelRGBA, bool littleEndian) { + ivec4 rgbaBytes = floatsToBytes(texelRGBA, littleEndian); + bool bits[32]; + bytesToBits(rgbaBytes, bits); + return bitsToFloat(bits); + } +`;var H5=` +#if defined(dSizeType_uniform) + uniform float uSize; +#elif defined(dSizeType_attribute) + attribute float aSize; +#elif defined(dSizeType_instance) || defined(dSizeType_group) || defined(dSizeType_groupInstance) + uniform vec2 uSizeTexDim; + uniform sampler2D tSize; +#endif + +uniform float uSizeFactor; +`;var q5=` +vec4 texture3dFrom1dTrilinear(const in sampler2D tex, const in vec3 pos, const in vec3 gridDim, const in vec2 texDim, const in float offset) { + float gdYZ = gridDim.z * gridDim.y; + float gdZ = gridDim.z; + vec3 p0 = floor(pos * gridDim); + vec3 p1 = ceil(pos * gridDim); + vec3 pd = (pos * gridDim - p0) / (p1 - p0); + vec4 s000 = readFromTexture(tex, offset + p0.z + p0.y * gdZ + p0.x * gdYZ, texDim); + vec4 s100 = readFromTexture(tex, offset + p0.z + p0.y * gdZ + p1.x * gdYZ, texDim); + vec4 s001 = readFromTexture(tex, offset + p1.z + p0.y * gdZ + p0.x * gdYZ, texDim); + vec4 s101 = readFromTexture(tex, offset + p1.z + p0.y * gdZ + p1.x * gdYZ, texDim); + vec4 s010 = readFromTexture(tex, offset + p0.z + p1.y * gdZ + p0.x * gdYZ, texDim); + vec4 s110 = readFromTexture(tex, offset + p0.z + p1.y * gdZ + p1.x * gdYZ, texDim); + vec4 s011 = readFromTexture(tex, offset + p1.z + p1.y * gdZ + p0.x * gdYZ, texDim); + vec4 s111 = readFromTexture(tex, offset + p1.z + p1.y * gdZ + p1.x * gdYZ, texDim); + vec4 s00 = mix(s000, s100, pd.x); + vec4 s01 = mix(s001, s101, pd.x); + vec4 s10 = mix(s010, s110, pd.x); + vec4 s11 = mix(s011, s111, pd.x); + vec4 s0 = mix(s00, s10, pd.y); + vec4 s1 = mix(s01, s11, pd.y); + return mix(s0, s1, pd.z); +} +`;var W5=` +vec4 texture3dFrom2dLinear(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) { + float zSlice0 = floor(pos.z * gridDim.z); + float column0 = intMod(zSlice0 * gridDim.x, texDim.x) / gridDim.x; + float row0 = floor(intDiv(zSlice0 * gridDim.x, texDim.x)); + vec2 coord0 = (vec2(column0 * gridDim.x, row0 * gridDim.y) + (pos.xy * gridDim.xy)) / texDim; + vec4 color0 = texture2D(tex, coord0); + + float zSlice1 = zSlice0 + 1.0; + float column1 = intMod(zSlice1 * gridDim.x, texDim.x) / gridDim.x; + float row1 = floor(intDiv(zSlice1 * gridDim.x, texDim.x)); + vec2 coord1 = (vec2(column1 * gridDim.x, row1 * gridDim.y) + (pos.xy * gridDim.xy)) / texDim; + vec4 color1 = texture2D(tex, coord1); + + float delta0 = abs((pos.z * gridDim.z) - zSlice0); + return mix(color0, color1, delta0); +} +`;var X5=` +vec4 texture3dFrom2dNearest(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) { + float zSlice = floor(pos.z * gridDim.z + 0.5); // round to nearest z-slice + float column = intMod(zSlice * gridDim.x, texDim.x) / gridDim.x; + float row = floor(intDiv(zSlice * gridDim.x, texDim.x)); + vec2 coord = (vec2(column * gridDim.x, row * gridDim.y) + (pos.xy * gridDim.xy)) / texDim; + return texture2D(tex, coord); +} +`;var Y5=` +#if defined(dRenderVariant_colorWboit) + if (uRenderMask == MaskOpaque) { + if (preFogAlpha < 1.0) { + discard; + } + } else if (uRenderMask == MaskTransparent) { + if (preFogAlpha != 1.0 && fragmentDepth < getDepth(gl_FragCoord.xy / uDrawingBufferSize)) { + #ifdef dTransparentBackfaces_off + if (interior) discard; + #endif + float alpha = gl_FragColor.a; + float wboitWeight = alpha * clamp(pow(1.0 - fragmentDepth, 2.0), 0.01, 1.0); + gl_FragColor = vec4(gl_FragColor.rgb * alpha * wboitWeight, alpha); + // extra alpha is to handle pre-multiplied alpha + #ifndef dGeometryType_directVolume + gl_FragData[1] = vec4((uTransparentBackground ? alpha : 1.0) * alpha * wboitWeight); + #else + gl_FragData[1] = vec4(alpha * alpha * wboitWeight); + #endif + } else { + discard; + } + } +#endif +`;var Q5=` +#if defined(dRenderVariant_colorDpoit) + if (uRenderMask == MaskOpaque) { + if (preFogAlpha < 1.0) { + discard; + } + } else if (uRenderMask == MaskTransparent) { + vec2 coords = gl_FragCoord.xy / uDrawingBufferSize; + if (preFogAlpha != 1.0 && fragmentDepth < getDepth(coords)) { + #ifdef dTransparentBackfaces_off + if (interior) discard; + #endif + + // adapted from https://github.com/tsherif/webgl2examples + // The MIT License, Copyright 2017 Tarek Sherif, Shuai Shao + + vec2 lastDepth = texture2D(tDpoitDepth, coords).rg; + vec4 lastFrontColor = texture2D(tDpoitFrontColor, coords); + + vec4 fragColor = gl_FragColor; + + // depth value always increases + // so we can use MAX blend equation + gl_FragData[2].rg = vec2(-MAX_DPOIT_DEPTH); + + // front color always increases + // so we can use MAX blend equation + gl_FragColor = lastFrontColor; + + // back color is separately blend afterwards each pass + gl_FragData[1] = vec4(0.0); + + float nearestDepth = -lastDepth.x; + float furthestDepth = lastDepth.y; + float alphaMultiplier = 1.0 - lastFrontColor.a; + + if (fragmentDepth < nearestDepth || fragmentDepth > furthestDepth) { + // Skip this depth since it's been peeled. + return; + } + + if (fragmentDepth > nearestDepth && fragmentDepth < furthestDepth) { + // This needs to be peeled. + // The ones remaining after MAX blended for + // all need-to-peel will be peeled next pass. + gl_FragData[2].rg = vec2(-fragmentDepth, fragmentDepth); + return; + } + + // write to back and front color buffer + if (fragmentDepth == nearestDepth) { + gl_FragColor.rgb += fragColor.rgb * fragColor.a * alphaMultiplier; + gl_FragColor.a = 1.0 - alphaMultiplier * (1.0 - fragColor.a); + } else { + gl_FragData[1] += fragColor; + } + + } else { + discard; + } + } +#endif +`;var K5=` +precision highp float; +precision highp int; + +#include common +#include read_from_texture +#include common_vert_params +#include color_vert_params +#include size_vert_params +#include common_clip + +uniform float uPixelRatio; +uniform vec4 uViewport; + +attribute vec3 aPosition; +attribute mat4 aTransform; +attribute float aInstance; +attribute float aGroup; + +void main(){ + #include assign_group + #include assign_color_varying + #include assign_marker_varying + #include assign_clipping_varying + #include assign_position + #include assign_size + + #ifdef dPointSizeAttenuation + gl_PointSize = size * uPixelRatio * ((uViewport.w / 2.0) / -mvPosition.z) * 5.0; + #else + gl_PointSize = size * uPixelRatio; + #endif + gl_PointSize = max(1.0, gl_PointSize); + + gl_Position = uProjection * mvPosition; + + #include clip_instance +} +`;var $5=` +precision highp float; +precision highp int; + +#include common +#include common_frag_params +#include color_frag_params +#include common_clip + +const vec2 center = vec2(0.5); +const float radius = 0.5; + +void main(){ + #include fade_lod + #include clip_pixel + + float fragmentDepth = gl_FragCoord.z; + #include assign_material_color + + #if defined(dPointStyle_circle) + float dist = distance(gl_PointCoord, center); + if (dist > radius) discard; + #elif defined(dPointStyle_fuzzy) + float dist = distance(gl_PointCoord, center); + float fuzzyAlpha = 1.0 - smoothstep(0.0, radius, dist); + if (fuzzyAlpha < 0.0001) discard; + #endif + + #if defined(dPointStyle_fuzzy) && defined(dRenderVariant_color) + material.a *= fuzzyAlpha; + #endif + + #include check_transparency + + #if defined(dRenderVariant_pick) + #include check_picking_alpha + #ifdef requiredDrawBuffers + gl_FragColor = vObject; + gl_FragData[1] = vInstance; + gl_FragData[2] = vGroup; + gl_FragData[3] = packDepthToRGBA(fragmentDepth); + #else + gl_FragColor = vColor; + #endif + #elif defined(dRenderVariant_depth) + gl_FragColor = material; + #elif defined(dRenderVariant_marking) + gl_FragColor = material; + #elif defined(dRenderVariant_emissive) + gl_FragColor = material; + #elif defined(dRenderVariant_color) + gl_FragColor = material; + + #include apply_marker_color + #include apply_fog + #include wboit_write + #include dpoit_write + #endif +} +`;var Z5=` +precision highp float; +precision highp int; + +#include common +#include read_from_texture +#include common_vert_params +#include color_vert_params +#include size_vert_params +#include common_clip + +uniform mat4 uModelView; +uniform mat4 uInvProjection; +uniform float uIsOrtho; + +uniform vec2 uTexDim; +uniform sampler2D tPositionGroup; + +attribute mat4 aTransform; +attribute float aInstance; + +varying float vRadius; +varying vec3 vPoint; +varying vec3 vPointViewPosition; + +#include matrix_scale + +/** + * Bounding rectangle of a clipped, perspective-projected 3D Sphere. + * Michael Mara, Morgan McGuire. 2013 + * + * Specialization by Arseny Kapoulkine, MIT License Copyright (c) 2018 + * https://github.com/zeux/niagara + */ +void sphereProjection(const in vec3 p, const in float r, const in vec2 mapping) { + vec3 pr = p * r; + float pzr2 = p.z * p.z - r * r; + + float vx = sqrt(p.x * p.x + pzr2); + float minx = ((vx * p.x - pr.z) / (vx * p.z + pr.x)) * uProjection[0][0]; + float maxx = ((vx * p.x + pr.z) / (vx * p.z - pr.x)) * uProjection[0][0]; + + float vy = sqrt(p.y * p.y + pzr2); + float miny = ((vy * p.y - pr.z) / (vy * p.z + pr.y)) * uProjection[1][1]; + float maxy = ((vy * p.y + pr.z) / (vy * p.z - pr.y)) * uProjection[1][1]; + + gl_Position.xy = vec2(maxx + minx, maxy + miny) * -0.5; + gl_Position.xy -= mapping * vec2(maxx - minx, maxy - miny) * 0.5; + gl_Position.xy *= gl_Position.w; +} + +void main(void){ + vec2 mapping = vec2(1.0, 1.0); // vertices 2 and 5 + #if __VERSION__ == 100 + int m = imod(VertexID, 6); + #else + int m = VertexID % 6; + #endif + if (m == 0) { + mapping = vec2(-1.0, 1.0); + } else if (m == 1 || m == 3) { + mapping = vec2(-1.0, -1.0); + } else if (m == 4) { + mapping = vec2(1.0, -1.0); + } + + vec4 positionGroup = readFromTexture(tPositionGroup, VertexID / 6, uTexDim); + vec3 position = positionGroup.rgb; + float group = positionGroup.a; + + #include assign_color_varying + #include assign_marker_varying + #include assign_clipping_varying + #include assign_size + + vRadius = size * matrixScale(uModelView); + + vec4 position4 = vec4(position, 1.0); + vModelPosition = (uModel * aTransform * position4).xyz; // for clipping in frag shader + + float d; + if (uLod.w != 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) { + d = dot(uCameraPlane.xyz, vModelPosition) + uCameraPlane.w; + float f = min( + smoothstep(uLod.x, uLod.x + uLod.z, d), + 1.0 - smoothstep(uLod.y - uLod.z, uLod.y, d) + ) * uLod.w; + vRadius *= f; + } + + vec4 mvPosition = uModelView * aTransform * position4; + + #ifdef dApproximate + vec4 mvCorner = vec4(mvPosition.xyz, 1.0); + mvCorner.xy += mapping * vRadius; + gl_Position = uProjection * mvCorner; + #else + if (uIsOrtho == 1.0) { + vec4 mvCorner = vec4(mvPosition.xyz, 1.0); + mvCorner.xy += mapping * vRadius; + gl_Position = uProjection * mvCorner; + } else { + gl_Position = uProjection * vec4(mvPosition.xyz, 1.0); + sphereProjection(mvPosition.xyz, vRadius, mapping); + } + #endif + + vec4 vPoint4 = uInvProjection * gl_Position; + vPoint = vPoint4.xyz / vPoint4.w; + vPointViewPosition = -mvPosition.xyz / mvPosition.w; + + if (gl_Position.z < -gl_Position.w) { + mvPosition.z -= 2.0 * vRadius; // avoid clipping + gl_Position.z = (uProjection * vec4(mvPosition.xyz, 1.0)).z; + } + + if (uLod.w != 0.0 && (uLod.x != 0.0 || uLod.y != 0.0)) { + if (d < uLod.x || d > uLod.y) { + // move out of [ -w, +w ] to 'discard' in vert shader + gl_Position.z = 2.0 * gl_Position.w; + } + } + + #if defined(dClipPrimitive) && !defined(dClipVariant_instance) && dClipObjectCount != 0 + if (clipTest(vec4(vModelPosition.xyz, 0.0))) { + // move out of [ -w, +w ] to 'discard' in vert shader + gl_Position.z = 2.0 * gl_Position.w; + } + #else + #include clip_instance + #endif +} +`;var J5=` +precision highp float; +precision highp int; + +#define bumpEnabled + +#include common +#include common_frag_params +#include color_frag_params +#include light_frag_params +#include common_clip + +uniform mat4 uInvView; +uniform float uAlphaThickness; + +varying float vRadius; +varying vec3 vPoint; +varying vec3 vPointViewPosition; + +#ifdef dSolidInterior + const bool solidInterior = true; +#else + const bool solidInterior = false; +#endif + +bool SphereImpostor(out vec3 modelPos, out vec3 cameraPos, out vec3 cameraNormal, out bool interior, out float fragmentDepth){ + vec3 cameraSpherePos = -vPointViewPosition; + + vec3 rayOrigin = mix(vec3(0.0, 0.0, 0.0), vPoint, uIsOrtho); + vec3 rayDirection = mix(normalize(vPoint), vec3(0.0, 0.0, 1.0), uIsOrtho); + vec3 cameraSphereDir = mix(cameraSpherePos, rayOrigin - cameraSpherePos, uIsOrtho); + + float B = dot(rayDirection, cameraSphereDir); + float det = B * B + vRadius * vRadius - dot(cameraSphereDir, cameraSphereDir); + + if (det < 0.0) return false; + + float sqrtDet = sqrt(det); + float posT = mix(B + sqrtDet, B - sqrtDet, uIsOrtho); + float negT = mix(B - sqrtDet, B + sqrtDet, uIsOrtho); + + cameraPos = rayDirection * negT + rayOrigin; + modelPos = (uInvView * vec4(cameraPos, 1.0)).xyz; + fragmentDepth = calcDepth(cameraPos); + + bool objectClipped = false; + + #if !defined(dClipPrimitive) && defined(dClipVariant_pixel) && dClipObjectCount != 0 + if (clipTest(vec4(modelPos, 0.0))) { + objectClipped = true; + fragmentDepth = -1.0; + } + #endif + + if (fragmentDepth > 0.0) { + cameraNormal = normalize(cameraPos - cameraSpherePos); + interior = false; + return true; + } else if (uDoubleSided || solidInterior) { + cameraPos = rayDirection * posT + rayOrigin; + modelPos = (uInvView * vec4(cameraPos, 1.0)).xyz; + fragmentDepth = calcDepth(cameraPos); + cameraNormal = -normalize(cameraPos - cameraSpherePos); + interior = true; + if (fragmentDepth > 0.0) { + #ifdef dSolidInterior + if (!objectClipped) { + fragmentDepth = 0.0 + (0.0000001 / vRadius); + cameraNormal = -mix(normalize(vPoint), vec3(0.0, 0.0, 1.0), uIsOrtho); + } + #endif + return true; + } + } + + return false; +} + +void main(void){ + vec3 cameraNormal; + float fragmentDepth; + + #ifdef dApproximate + vec3 pointDir = -vPointViewPosition - vPoint; + if (dot(pointDir, pointDir) > vRadius * vRadius) discard; + vec3 vViewPosition = -vPointViewPosition; + fragmentDepth = gl_FragCoord.z; + #if !defined(dIgnoreLight) || defined(dXrayShaded) + pointDir.z -= cos(length(pointDir) / vRadius); + cameraNormal = -normalize(pointDir / vRadius); + #endif + interior = false; + #else + vec3 modelPos; + vec3 cameraPos; + bool hit = SphereImpostor(modelPos, cameraPos, cameraNormal, interior, fragmentDepth); + if (!hit) discard; + + if (fragmentDepth < 0.0) discard; + if (fragmentDepth > 1.0) discard; + + gl_FragDepthEXT = fragmentDepth; + + vec3 vModelPosition = modelPos; + vec3 vViewPosition = cameraPos; + #endif + + #include fade_lod + #if !defined(dClipPrimitive) && defined(dClipVariant_pixel) && dClipObjectCount != 0 + #include clip_pixel + #endif + #include assign_material_color + + #if defined(dRenderVariant_color) + if (uRenderMask == MaskTransparent && uAlphaThickness > 0.0) { + material.a *= min(1.0, vRadius / uAlphaThickness); + } + #endif + + #include check_transparency + + #if defined(dRenderVariant_pick) + #include check_picking_alpha + #ifdef requiredDrawBuffers + gl_FragColor = vObject; + gl_FragData[1] = vInstance; + gl_FragData[2] = vGroup; + gl_FragData[3] = packDepthToRGBA(fragmentDepth); + #else + gl_FragColor = vColor; + #endif + #elif defined(dRenderVariant_depth) + gl_FragColor = material; + #elif defined(dRenderVariant_marking) + gl_FragColor = material; + #elif defined(dRenderVariant_emissive) + gl_FragColor = material; + #elif defined(dRenderVariant_color) + vec3 normal = -cameraNormal; + #include apply_light_color + + #include apply_interior_color + #include apply_marker_color + #include apply_fog + #include wboit_write + #include dpoit_write + #endif +} +`;var eG=` +precision highp float; +precision highp int; + +#include common +#include read_from_texture +#include common_vert_params +#include color_vert_params +#include size_vert_params +#include common_clip + +uniform mat4 uModelView; + +attribute mat4 aTransform; +attribute float aInstance; +attribute float aGroup; + +attribute vec3 aMapping; +attribute vec3 aStart; +attribute vec3 aEnd; +attribute float aScale; +attribute float aCap; +attribute float aColorMode; + +varying mat4 vTransform; +varying vec3 vStart; +varying vec3 vEnd; +varying float vSize; +varying float vCap; + +uniform float uIsOrtho; +uniform vec3 uCameraDir; + +void main() { + #include assign_group + #include assign_color_varying + #include assign_marker_varying + #include assign_clipping_varying + #include assign_size + + mat4 modelTransform = uModel * aTransform; + + vTransform = aTransform; + vStart = (modelTransform * vec4(aStart, 1.0)).xyz; + vEnd = (modelTransform * vec4(aEnd, 1.0)).xyz; + vSize = size * aScale; + vCap = aCap; + + vModelPosition = (vStart + vEnd) * 0.5; + vec3 camDir = -mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho); + vec3 dir = vEnd - vStart; + float f = aMapping.x > 0.0 ? 1.0 : 0.0; + // ensure cylinder 'dir' is pointing towards the camera + if(dot(camDir, dir) < 0.0) { + dir = -dir; + f = 1.0 - f; + } + + vec3 left = cross(camDir, dir); + vec3 up = cross(left, dir); + left = vSize * normalize(left); + up = vSize * normalize(up); + + // move vertex in object-space from center to corner + vModelPosition += aMapping.x * dir + aMapping.y * left + aMapping.z * up; + + vec4 mvPosition = uView * vec4(vModelPosition, 1.0); + vViewPosition = mvPosition.xyz; + gl_Position = uProjection * mvPosition; + + if (gl_Position.z < -gl_Position.w) { + mvPosition.z -= 2.0 * (length(vEnd - vStart) + vSize); // avoid clipping + gl_Position.z = (uProjection * mvPosition).z; + } + + #if defined(dDualColor) && defined(dRenderVariant_color) && (defined(dColorType_group) || defined(dColorType_groupInstance)) + // dual-color mixing + // - for aColorMode between 0 and 1 use aColorMode to interpolate + // - for aColorMode == 2 do nothing, i.e., use vColor + // - for aColorMode == 3 use position on cylinder axis to interpolate + if (aColorMode <= 1.0){ + vColor.rgb = mix(vColor.rgb, color2.rgb, aColorMode); + } else if (aColorMode == 3.0) { + vColor.rgb = mix(vColor.rgb, color2.rgb, mix(-0.25, 1.25, f / 1.5)); + } + #endif + + #include clip_instance +} +`;var tG=` +precision highp float; +precision highp int; + +#define bumpEnabled + +uniform mat4 uView; + +varying mat4 vTransform; +varying vec3 vStart; +varying vec3 vEnd; +varying float vSize; +varying float vCap; + +uniform vec3 uCameraDir; +uniform vec3 uCameraPosition; +uniform mat4 uInvView; + +#include common +#include common_frag_params +#include color_frag_params +#include light_frag_params +#include common_clip + +#ifdef dSolidInterior + const bool solidInterior = true; +#else + const bool solidInterior = false; +#endif + +// adapted from https://www.shadertoy.com/view/4lcSRn +// The MIT License, Copyright 2016 Inigo Quilez +bool CylinderImpostor( + in vec3 rayOrigin, in vec3 rayDir, + in vec3 start, in vec3 end, in float radius, + out vec3 cameraNormal, out bool interior, + out vec3 modelPosition, out vec3 viewPosition, out float fragmentDepth +){ + vec3 ba = end - start; + vec3 oc = rayOrigin - start; + + float baba = dot(ba, ba); + float bard = dot(ba, rayDir); + float baoc = dot(ba, oc); + + float k2 = baba - bard * bard; + float k1 = baba * dot(oc, rayDir) - baoc * bard; + float k0 = baba * dot(oc, oc) - baoc * baoc - radius * radius * baba; + + float h = k1 * k1 - k2 * k0; + if (h < 0.0) return false; + + bool topCap = (vCap > 0.9 && vCap < 1.1) || vCap >= 2.9; + bool bottomCap = (vCap > 1.9 && vCap < 2.1) || vCap >= 2.9; + + #ifdef dSolidInterior + bool topInterior = !topCap; + bool bottomInterior = !bottomCap; + topCap = true; + bottomCap = true; + #else + bool topInterior = false; + bool bottomInterior = false; + #endif + + bool clipped = false; + bool objectClipped = false; + + // body outside + h = sqrt(h); + float t = (-k1 - h) / k2; + float y = baoc + t * bard; + if (y > 0.0 && y < baba) { + interior = false; + cameraNormal = (oc + t * rayDir - ba * y / baba) / radius; + modelPosition = rayOrigin + t * rayDir; + viewPosition = (uView * vec4(modelPosition, 1.0)).xyz; + fragmentDepth = calcDepth(viewPosition); + #if defined(dClipVariant_pixel) && dClipObjectCount != 0 + if (clipTest(vec4(modelPosition, 0.0))) { + objectClipped = true; + fragmentDepth = -1.0; + #ifdef dSolidInterior + topCap = !topInterior; + bottomCap = !bottomInterior; + #endif + } + #endif + if (fragmentDepth > 0.0) return true; + clipped = true; + } + + if (!clipped) { + if (topCap && y < 0.0) { + // top cap + t = -baoc / bard; + if (abs(k1 + k2 * t) < h) { + interior = topInterior; + cameraNormal = -ba / baba; + modelPosition = rayOrigin + t * rayDir; + viewPosition = (uView * vec4(modelPosition, 1.0)).xyz; + fragmentDepth = calcDepth(viewPosition); + #if defined(dClipVariant_pixel) && dClipObjectCount != 0 + if (clipTest(vec4(modelPosition, 0.0))) { + objectClipped = true; + fragmentDepth = -1.0; + #ifdef dSolidInterior + topCap = !topInterior; + bottomCap = !bottomInterior; + #endif + } + #endif + if (fragmentDepth > 0.0) { + #ifdef dSolidInterior + if (interior) cameraNormal = -rayDir; + #endif + return true; + } + } + } else if (bottomCap && y >= 0.0) { + // bottom cap + t = (baba - baoc) / bard; + if (abs(k1 + k2 * t) < h) { + interior = bottomInterior; + cameraNormal = ba / baba; + modelPosition = rayOrigin + t * rayDir; + viewPosition = (uView * vec4(modelPosition, 1.0)).xyz; + fragmentDepth = calcDepth(viewPosition); + #if defined(dClipVariant_pixel) && dClipObjectCount != 0 + if (clipTest(vec4(modelPosition, 0.0))) { + objectClipped = true; + fragmentDepth = -1.0; + #ifdef dSolidInterior + topCap = !topInterior; + bottomCap = !bottomInterior; + #endif + } + #endif + if (fragmentDepth > 0.0) { + #ifdef dSolidInterior + if (interior) cameraNormal = -rayDir; + #endif + return true; + } + } + } + } + + if (uDoubleSided || solidInterior) { + // body inside + h = -h; + t = (-k1 - h) / k2; + y = baoc + t * bard; + if (y > 0.0 && y < baba) { + interior = true; + cameraNormal = -(oc + t * rayDir - ba * y / baba) / radius; + modelPosition = rayOrigin + t * rayDir; + viewPosition = (uView * vec4(modelPosition, 1.0)).xyz; + fragmentDepth = calcDepth(viewPosition); + if (fragmentDepth > 0.0) { + #ifdef dSolidInterior + if (!objectClipped) { + fragmentDepth = 0.0 + (0.0000002 / vSize); + cameraNormal = -rayDir; + } + #endif + return true; + } + } + + if (topCap && y < 0.0) { + // top cap + t = -baoc / bard; + if (abs(k1 + k2 * t) < -h) { + interior = true; + cameraNormal = ba / baba; + modelPosition = rayOrigin + t * rayDir; + viewPosition = (uView * vec4(modelPosition, 1.0)).xyz; + fragmentDepth = calcDepth(viewPosition); + if (fragmentDepth > 0.0) { + #ifdef dSolidInterior + if (!objectClipped) { + fragmentDepth = 0.0 + (0.0000002 / vSize); + cameraNormal = -rayDir; + } + #endif + return true; + } + } + } else if (bottomCap && y >= 0.0) { + // bottom cap + t = (baba - baoc) / bard; + if (abs(k1 + k2 * t) < -h) { + interior = true; + cameraNormal = -ba / baba; + modelPosition = rayOrigin + t * rayDir; + viewPosition = (uView * vec4(modelPosition, 1.0)).xyz; + fragmentDepth = calcDepth(viewPosition); + if (fragmentDepth > 0.0) { + #ifdef dSolidInterior + if (!objectClipped) { + fragmentDepth = 0.0 + (0.0000002 / vSize); + cameraNormal = -rayDir; + } + #endif + return true; + } + } + } + } + + return false; +} + +void main() { + vec3 rayOrigin = vModelPosition; + vec3 rayDir = mix(normalize(vModelPosition - uCameraPosition), uCameraDir, uIsOrtho); + + vec3 cameraNormal; + vec3 modelPosition; + vec3 viewPosition; + float fragmentDepth; + bool hit = CylinderImpostor(rayOrigin, rayDir, vStart, vEnd, vSize, cameraNormal, interior, modelPosition, viewPosition, fragmentDepth); + if (!hit) discard; + + if (fragmentDepth < 0.0) discard; + if (fragmentDepth > 1.0) discard; + + gl_FragDepthEXT = fragmentDepth; + + vec3 vViewPosition = viewPosition; + vec3 vModelPosition = modelPosition; + + #include fade_lod + #include clip_pixel + #include assign_material_color + #include check_transparency + + #if defined(dRenderVariant_pick) + #include check_picking_alpha + #ifdef requiredDrawBuffers + gl_FragColor = vObject; + gl_FragData[1] = vInstance; + gl_FragData[2] = vGroup; + gl_FragData[3] = packDepthToRGBA(fragmentDepth); + #else + gl_FragColor = vColor; + #endif + #elif defined(dRenderVariant_depth) + gl_FragColor = material; + #elif defined(dRenderVariant_marking) + gl_FragColor = material; + #elif defined(dRenderVariant_emissive) + gl_FragColor = material; + #elif defined(dRenderVariant_color) + mat3 normalMatrix = transpose3(inverse3(mat3(uView))); + vec3 normal = normalize(normalMatrix * -normalize(cameraNormal)); + #include apply_light_color + + #include apply_interior_color + #include apply_marker_color + #include apply_fog + #include wboit_write + #include dpoit_write + #endif +} +`;var rG=` +precision highp float; +precision highp int; + +#include common +#include read_from_texture +#include common_vert_params +#include color_vert_params +#include size_vert_params +#include common_clip + +uniform mat4 uModelView; + +attribute vec3 aPosition; +attribute vec2 aMapping; +attribute float aDepth; +attribute vec2 aTexCoord; +attribute mat4 aTransform; +attribute float aInstance; +attribute float aGroup; + +uniform float uOffsetX; +uniform float uOffsetY; +uniform float uOffsetZ; + +uniform float uIsOrtho; +uniform float uPixelRatio; +uniform vec4 uViewport; + +varying vec2 vTexCoord; + +#include matrix_scale + +void main(void){ + #include assign_group + #include assign_color_varying + #include assign_marker_varying + #include assign_clipping_varying + #include assign_size + + vTexCoord = aTexCoord; + + float scale = matrixScale(uModelView); + + float offsetX = uOffsetX * scale; + float offsetY = uOffsetY * scale; + float offsetZ = (uOffsetZ + aDepth * 0.95) * scale; + + vec4 position4 = vec4(aPosition, 1.0); + vec4 mvPosition = uModelView * aTransform * position4; + + vModelPosition = (uModel * aTransform * position4).xyz; // for clipping in frag shader + + // TODO + // #ifdef FIXED_SIZE + // if (ortho) { + // scale /= pixelRatio * ((uViewport.w / 2.0) / -uCameraPosition.z) * 0.1; + // } else { + // scale /= pixelRatio * ((uViewport.w / 2.0) / -mvPosition.z) * 0.1; + // } + // #endif + + vec4 mvCorner = vec4(mvPosition.xyz, 1.0); + + if (vTexCoord.x == 10.0) { // indicates background plane + // move a bit to the back, taking distance to camera into account to avoid z-fighting + offsetZ -= 0.001 * distance(uCameraPosition, (uProjection * mvCorner).xyz); + } + + mvCorner.xy += aMapping * size * scale; + mvCorner.x += offsetX; + mvCorner.y += offsetY; + + if (uIsOrtho == 1.0) { + mvCorner.z += offsetZ; + } else { + mvCorner.xyz += normalize(-mvCorner.xyz) * offsetZ; + } + + gl_Position = uProjection * mvCorner; + + vViewPosition = -mvCorner.xyz; + + #include clip_instance +} +`;var nG=` +precision highp float; +precision highp int; + +#include common +#include common_frag_params +#include color_frag_params +#include common_clip + +uniform sampler2D tFont; + +uniform vec3 uBorderColor; +uniform float uBorderWidth; +uniform vec3 uBackgroundColor; +uniform float uBackgroundOpacity; + +varying vec2 vTexCoord; + +const float smoothness = 32.0; +const float gamma = 2.2; + +void main2(){ + gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); +} + +void main(){ + #include fade_lod + #include clip_pixel + + float fragmentDepth = gl_FragCoord.z; + #include assign_material_color + + if (vTexCoord.x > 1.0) { + #if defined(dRenderVariant_color) + material = vec4(uBackgroundColor, uBackgroundOpacity * material.a); + #endif + } else { + // retrieve signed distance + float sdf = texture2D(tFont, vTexCoord).a + uBorderWidth; + + // perform adaptive anti-aliasing of the edges + float w = clamp(smoothness * (abs(dFdx(vTexCoord.x)) + abs(dFdy(vTexCoord.y))), 0.0, 0.5); + float a = clamp(0.0, 1.0, smoothstep(0.5 - w, 0.5 + w, sdf)); + + // gamma correction for linear attenuation + a = pow(a, 1.0 / gamma); + + if (a < 0.5) discard; + + #if defined(dRenderVariant_color) + // add border + float t = 0.5 + uBorderWidth; + if (uBorderWidth > 0.0 && sdf < t) { + material.xyz = mix(uBorderColor, material.xyz, smoothstep(t - w, t, sdf)); + } + #endif + } + + #include check_transparency + + #if defined(dRenderVariant_pick) + #include check_picking_alpha + #ifdef requiredDrawBuffers + gl_FragColor = vObject; + gl_FragData[1] = vInstance; + gl_FragData[2] = vGroup; + gl_FragData[3] = packDepthToRGBA(fragmentDepth); + #else + gl_FragColor = vColor; + #endif + #elif defined(dRenderVariant_depth) + gl_FragColor = material; + #elif defined(dRenderVariant_marking) + gl_FragColor = material; + #elif defined(dRenderVariant_emissive) + gl_FragColor = material; + #elif defined(dRenderVariant_color) + gl_FragColor = material; + + #include apply_marker_color + #include apply_fog + #include wboit_write + #include dpoit_write + #endif +} +`;var oG=` +precision highp float; +precision highp int; + +#include common +#include read_from_texture +#include common_vert_params +#include color_vert_params +#include size_vert_params +#include common_clip + +uniform float uPixelRatio; +uniform vec4 uViewport; + +attribute mat4 aTransform; +attribute float aInstance; +attribute float aGroup; + +attribute vec2 aMapping; +attribute vec3 aStart; +attribute vec3 aEnd; + +void trimSegment(const in vec4 start, inout vec4 end) { + // trim end segment so it terminates between the camera plane and the near plane + // conservative estimate of the near plane + float a = uProjection[2][2]; // 3rd entry in 3rd column + float b = uProjection[3][2]; // 3rd entry in 4th column + float nearEstimate = -0.5 * b / a; + float alpha = (nearEstimate - start.z) / (end.z - start.z); + end.xyz = mix(start.xyz, end.xyz, alpha); +} + +void main(){ + float aspect = uViewport.z / uViewport.w; + + #include assign_group + #include assign_color_varying + #include assign_marker_varying + #include assign_clipping_varying + #include assign_size + + mat4 modelView = uView * uModel * aTransform; + + // camera space + vec4 start = modelView * vec4(aStart, 1.0); + vec4 end = modelView * vec4(aEnd, 1.0); + + // assign position + vec4 position4 = vec4((aMapping.y < 0.5) ? aStart : aEnd, 1.0); + vec4 mvPosition = modelView * position4; + vViewPosition = mvPosition.xyz; + + vModelPosition = (uModel * aTransform * position4).xyz; // for clipping in frag shader + + // special case for perspective projection, and segments that terminate either in, or behind, the camera plane + // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space + // but we need to perform ndc-space calculations in the shader, so we must address this issue directly + // perhaps there is a more elegant solution -- WestLangley + bool perspective = (uProjection[2][3] == -1.0); // 4th entry in the 3rd column + if (perspective) { + if (start.z < 0.0 && end.z >= 0.0) { + trimSegment(start, end); + } else if (end.z < 0.0 && start.z >= 0.0) { + trimSegment(end, start); + } + } + + // clip space + vec4 clipStart = uProjection * start; + vec4 clipEnd = uProjection * end; + + // ndc space + vec2 ndcStart = clipStart.xy / clipStart.w; + vec2 ndcEnd = clipEnd.xy / clipEnd.w; + + // direction + vec2 dir = ndcEnd - ndcStart; + + // account for clip-space aspect ratio + dir.x *= aspect; + dir = normalize(dir); + + // perpendicular to dir + vec2 offset = vec2(dir.y, - dir.x); + + // undo aspect ratio adjustment + dir.x /= aspect; + offset.x /= aspect; + + // sign flip + if (aMapping.x < 0.0) offset *= -1.0; + + // calculate linewidth + float linewidth; + #ifdef dLineSizeAttenuation + linewidth = size * uPixelRatio * ((uViewport.w / 2.0) / -start.z) * 5.0; + #else + linewidth = size * uPixelRatio; + #endif + linewidth = max(1.0, linewidth); + + // adjust for linewidth + offset *= linewidth; + + // adjust for clip-space to screen-space conversion + offset /= uViewport.w; + + // select end + vec4 clip = (aMapping.y < 0.5) ? clipStart : clipEnd; + + // back to clip space + offset *= clip.w; + clip.xy += offset; + gl_Position = clip; + + #include clip_instance +} +`;var iG=` +precision highp float; +precision highp int; + +#include common +#include common_frag_params +#include color_frag_params +#include common_clip + +void main(){ + #include fade_lod + #include clip_pixel + + float fragmentDepth = gl_FragCoord.z; + #include assign_material_color + #include check_transparency + + #if defined(dRenderVariant_pick) + #include check_picking_alpha + #ifdef requiredDrawBuffers + gl_FragColor = vObject; + gl_FragData[1] = vInstance; + gl_FragData[2] = vGroup; + gl_FragData[3] = packDepthToRGBA(fragmentDepth); + #else + gl_FragColor = vColor; + #endif + #elif defined(dRenderVariant_depth) + gl_FragColor = material; + #elif defined(dRenderVariant_marking) + gl_FragColor = material; + #elif defined(dRenderVariant_emissive) + gl_FragColor = material; + #elif defined(dRenderVariant_color) + gl_FragColor = material; + + #include apply_marker_color + #include apply_fog + #include wboit_write + #include dpoit_write + #endif +} +`;var aG=` +precision highp float; +precision highp int; +precision highp sampler2D; + +#include common +#include read_from_texture +#include common_vert_params +#include color_vert_params +#include common_clip +#include texture3d_from_2d_linear + +#ifdef dGeometryType_textureMesh + uniform vec2 uGeoTexDim; + uniform sampler2D tPosition; + uniform sampler2D tGroup; + uniform sampler2D tNormal; +#else + attribute vec3 aPosition; + attribute float aGroup; + attribute vec3 aNormal; +#endif +attribute mat4 aTransform; +attribute float aInstance; + +varying vec3 vNormal; + +void main(){ + #include assign_group + #include assign_marker_varying + #include assign_clipping_varying + #include assign_position + #include assign_color_varying + #include clip_instance + + #ifdef dGeometryType_textureMesh + vec3 normal = readFromTexture(tNormal, VertexID, uGeoTexDim).xyz; + #else + vec3 normal = aNormal; + #endif + mat3 normalMatrix = transpose3(inverse3(mat3(modelView))); + vec3 transformedNormal = normalize(normalMatrix * normalize(normal)); + #if defined(dFlipSided) + if (!uDoubleSided) { // TODO checking uDoubleSided should not be required, ASR + transformedNormal = -transformedNormal; + } + #endif + vNormal = transformedNormal; +} +`;var sG=` +precision highp float; +precision highp int; + +#define bumpEnabled + +#include common +#include common_frag_params +#include color_frag_params +#include light_frag_params +#include normal_frag_params +#include common_clip + +void main() { + #include fade_lod + #include clip_pixel + + // Workaround for buggy gl_FrontFacing (e.g. on some integrated Intel GPUs) + vec3 fdx = dFdx(vViewPosition); + vec3 fdy = dFdy(vViewPosition); + vec3 faceNormal = normalize(cross(fdx,fdy)); + bool frontFacing = dot(vNormal, faceNormal) > 0.0; + + #if defined(dFlipSided) + interior = frontFacing; + #else + interior = !frontFacing; + #endif + + float fragmentDepth = gl_FragCoord.z; + #include assign_material_color + #include check_transparency + + #if defined(dRenderVariant_pick) + #include check_picking_alpha + #ifdef requiredDrawBuffers + gl_FragColor = vObject; + gl_FragData[1] = vInstance; + gl_FragData[2] = vGroup; + gl_FragData[3] = packDepthToRGBA(fragmentDepth); + #else + gl_FragColor = vColor; + #endif + #elif defined(dRenderVariant_depth) + gl_FragColor = material; + #elif defined(dRenderVariant_marking) + gl_FragColor = material; + #elif defined(dRenderVariant_emissive) + gl_FragColor = material; + #elif defined(dRenderVariant_color) + #if defined(dFlatShaded) + vec3 normal = -faceNormal; + #else + vec3 normal = -normalize(vNormal); + if (uDoubleSided) normal *= float(frontFacing) * 2.0 - 1.0; + #endif + #include apply_light_color + + #include apply_interior_color + #include apply_marker_color + #include apply_fog + #include wboit_write + #include dpoit_write + #endif +} +`;var lG=` +precision highp float; + +attribute vec3 aPosition; +attribute mat4 aTransform; +attribute float aInstance; + +uniform mat4 uModelView; +uniform mat4 uProjection; +uniform vec4 uInvariantBoundingSphere; + +varying vec3 vOrigPos; +varying float vInstance; +varying vec4 vBoundingSphere; +varying mat4 vTransform; + +uniform vec3 uBboxSize; +uniform vec3 uBboxMin; +uniform vec3 uBboxMax; +uniform vec3 uGridDim; +uniform mat4 uTransform; + +uniform mat4 uUnitToCartn; + +void main() { + vec4 unitCoord = vec4(aPosition + vec3(0.5), 1.0); + vec4 mvPosition = uModelView * aTransform * uUnitToCartn * unitCoord; + + vOrigPos = (aTransform * uUnitToCartn * unitCoord).xyz; + vInstance = aInstance; + vBoundingSphere = vec4( + (aTransform * vec4(uInvariantBoundingSphere.xyz, 1.0)).xyz, + uInvariantBoundingSphere.w + ); + vTransform = aTransform; + + gl_Position = uProjection * mvPosition; + + // move z position to near clip plane (but not too close to get precision issues) + gl_Position.z = gl_Position.w - 0.01; +} +`;var cG=` +precision highp float; +precision highp int; + +#include common +#include light_frag_params + +#if dClipObjectCount != 0 + uniform int uClipObjectType[dClipObjectCount]; + uniform bool uClipObjectInvert[dClipObjectCount]; + uniform vec3 uClipObjectPosition[dClipObjectCount]; + uniform vec4 uClipObjectRotation[dClipObjectCount]; + uniform vec3 uClipObjectScale[dClipObjectCount]; +#endif +#include common_clip + +#include read_from_texture +#include texture3d_from_1d_trilinear +#include texture3d_from_2d_nearest +#include texture3d_from_2d_linear + +uniform mat4 uProjection, uTransform, uModelView, uModel, uView; +uniform vec3 uCameraDir; + +uniform sampler2D tDepth; +uniform vec2 uDrawingBufferSize; + +varying vec3 vOrigPos; +varying float vInstance; +varying vec4 vBoundingSphere; +varying mat4 vTransform; + +uniform mat4 uInvView; +uniform vec3 uGridDim; +uniform vec3 uBboxSize; +uniform sampler2D tTransferTex; +uniform float uTransferScale; +uniform float uStepScale; +uniform float uJumpLength; + +uniform int uObjectId; +uniform int uVertexCount; +uniform int uInstanceCount; +uniform int uGroupCount; + +#if defined(dColorMarker) + uniform vec3 uHighlightColor; + uniform vec3 uSelectColor; + uniform vec3 uDimColor; + uniform float uHighlightStrength; + uniform float uSelectStrength; + uniform float uDimStrength; + uniform int uMarkerPriority; + uniform float uMarkerAverage; + + uniform float uMarker; + uniform vec2 uMarkerTexDim; + uniform sampler2D tMarker; +#endif + +uniform float uMetalness; +uniform float uRoughness; +uniform float uEmissive; + +uniform bool uFog; +uniform float uFogNear; +uniform float uFogFar; +uniform vec3 uFogColor; + +uniform float uAlpha; +uniform bool uTransparentBackground; +uniform float uXrayEdgeFalloff; +uniform float uExposure; + +uniform int uRenderMask; + +uniform float uNear; +uniform float uFar; +uniform float uIsOrtho; + +uniform vec3 uCellDim; +uniform vec3 uCameraPosition; +uniform mat4 uCartnToUnit; + +#if __VERSION__ != 100 + // for webgl1 this is given as a 'define' + uniform int uMaxSteps; +#endif + +#if defined(dGridTexType_2d) + precision highp sampler2D; + uniform sampler2D tGridTex; + uniform vec3 uGridTexDim; +#elif defined(dGridTexType_3d) + precision highp sampler3D; + uniform sampler3D tGridTex; +#endif + +#if defined(dColorType_uniform) + uniform vec3 uColor; +#elif defined(dColorType_texture) + uniform vec2 uColorTexDim; + uniform sampler2D tColor; +#endif + +#ifdef dOverpaint + #if defined(dOverpaintType_groupInstance) || defined(dOverpaintType_vertexInstance) + uniform vec2 uOverpaintTexDim; + uniform sampler2D tOverpaint; + #endif +#endif + +#ifdef dUsePalette + uniform sampler2D tPalette; +#endif + +#if defined(dGridTexType_2d) + vec4 textureVal(vec3 pos) { + return texture3dFrom2dLinear(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy); + } + vec4 textureGroup(vec3 pos) { + return texture3dFrom2dNearest(tGridTex, pos + (vec3(0.5, 0.5, 0.0) / uGridDim), uGridDim, uGridTexDim.xy); + } +#elif defined(dGridTexType_3d) + vec4 textureVal(vec3 pos) { + return texture(tGridTex, pos + (vec3(0.5) / uGridDim)); + } + vec4 textureGroup(vec3 pos) { + return texelFetch(tGridTex, ivec3(pos * uGridDim), 0); + } +#endif + +float calcDepth(const in vec3 pos) { + vec2 clipZW = pos.z * uProjection[2].zw + uProjection[3].zw; + return 0.5 + 0.5 * clipZW.x / clipZW.y; +} + +float transferFunction(float value) { + return texture2D(tTransferTex, vec2(value, 0.0)).a; +} + +float getDepth(const in vec2 coords) { + #ifdef depthTextureSupport + return texture2D(tDepth, coords).r; + #else + return unpackRGBAToDepth(texture2D(tDepth, coords)); + #endif +} + +const float gradOffset = 0.5; + +vec3 v3m4(vec3 p, mat4 m) { + return (m * vec4(p, 1.0)).xyz; +} + +float preFogAlphaBlended = 0.0; + +vec4 raymarch(vec3 startLoc, vec3 step, vec3 rayDir) { + mat3 normalMatrix = transpose3(inverse3(mat3(uModelView * vTransform))); + mat4 cartnToUnit = uCartnToUnit * inverse4(vTransform); + #if defined(dClipVariant_pixel) && dClipObjectCount != 0 + mat4 modelTransform = uModel * vTransform * uTransform; + #endif + mat4 modelViewTransform = uModelView * vTransform * uTransform; + + vec3 scaleVol = vec3(1.0) / uGridDim; + vec3 pos = startLoc; + vec4 cell; + float prevValue = -1.0; + float value = 0.0; + vec4 src = vec4(0.0); + vec4 dst = vec4(0.0); + float fragmentDepth; + + vec3 posMin = vec3(0.0); + vec3 posMax = vec3(1.0) - vec3(1.0) / uGridDim; + + vec3 unitPos; + + vec3 nextPos; + float nextValue; + + vec4 material; + vec4 overpaint; + float metalness = uMetalness; + float roughness = uRoughness; + float emissive = uEmissive; + + vec3 gradient = vec3(1.0); + vec3 dx = vec3(gradOffset * scaleVol.x, 0.0, 0.0); + vec3 dy = vec3(0.0, gradOffset * scaleVol.y, 0.0); + vec3 dz = vec3(0.0, 0.0, gradOffset * scaleVol.z); + + float maxDist = min(vBoundingSphere.w * 2.0, uFar - uNear); + float maxDistSq = maxDist * maxDist; + + for (int i = 0; i < uMaxSteps; ++i) { + // break when beyond bounding-sphere or far-plane + vec3 distVec = startLoc - pos; + if (dot(distVec, distVec) > maxDistSq) break; + + unitPos = v3m4(pos, cartnToUnit); + + // continue when outside of grid + if (unitPos.x > posMax.x || unitPos.y > posMax.y || unitPos.z > posMax.z || + unitPos.x < posMin.x || unitPos.y < posMin.y || unitPos.z < posMin.z + ) { + prevValue = value; + pos += step; + continue; + } + + cell = textureVal(unitPos); + value = cell.a; // current voxel value + + if (uJumpLength > 0.0 && value < 0.01) { + nextPos = pos + rayDir * uJumpLength; + nextValue = textureVal(v3m4(nextPos, cartnToUnit)).a; + if (nextValue < 0.01) { + prevValue = nextValue; + pos = nextPos; + continue; + } + } + + vec4 mvPosition = modelViewTransform * vec4(unitPos * uGridDim, 1.0); + if (calcDepth(mvPosition.xyz) > getDepth(gl_FragCoord.xy / uDrawingBufferSize)) + break; + + #if defined(dClipVariant_pixel) && dClipObjectCount != 0 + vec3 vModelPosition = v3m4(unitPos * uGridDim, modelTransform); + if (clipTest(vec4(vModelPosition, 0.0))) { + prevValue = value; + pos += step; + continue; + } + #endif + + vec3 vViewPosition = mvPosition.xyz; + material.a = transferFunction(value); + + #ifdef dPackedGroup + float group = unpackRGBToInt(textureGroup(floor(unitPos * uGridDim + 0.5) / uGridDim).rgb); + #else + vec3 g = floor(unitPos * uGridDim + 0.5); + // note that we swap x and z because the texture is flipped around y + #if defined(dAxisOrder_012) + float group = g.z + g.y * uGridDim.z + g.x * uGridDim.z * uGridDim.y; // 210 + #elif defined(dAxisOrder_021) + float group = g.y + g.z * uGridDim.y + g.x * uGridDim.y * uGridDim.z; // 120 + #elif defined(dAxisOrder_102) + float group = g.z + g.x * uGridDim.z + g.y * uGridDim.z * uGridDim.x; // 201 + #elif defined(dAxisOrder_120) + float group = g.x + g.z * uGridDim.x + g.y * uGridDim.x * uGridDim.z; // 021 + #elif defined(dAxisOrder_201) + float group = g.y + g.x * uGridDim.y + g.z * uGridDim.y * uGridDim.x; // 102 + #elif defined(dAxisOrder_210) + float group = g.x + g.y * uGridDim.x + g.z * uGridDim.x * uGridDim.y; // 012 + #endif + #endif + + #if defined(dColorType_direct) && defined(dUsePalette) + material.rgb = texture2D(tPalette, vec2(value, 0.0)).rgb; + #elif defined(dColorType_uniform) + material.rgb = uColor; + #elif defined(dColorType_instance) + material.rgb = readFromTexture(tColor, vInstance, uColorTexDim).rgb; + #elif defined(dColorType_group) + material.rgb = readFromTexture(tColor, group, uColorTexDim).rgb; + #elif defined(dColorType_groupInstance) + material.rgb = readFromTexture(tColor, vInstance * float(uGroupCount) + group, uColorTexDim).rgb; + #elif defined(dColorType_vertex) + material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, 0.0).rgb; + #elif defined(dColorType_vertexInstance) + material.rgb = texture3dFrom1dTrilinear(tColor, unitPos, uGridDim, uColorTexDim, vInstance * float(uVertexCount)).rgb; + #endif + + #ifdef dOverpaint + #if defined(dOverpaintType_groupInstance) + overpaint = readFromTexture(tOverpaint, vInstance * float(uGroupCount) + group, uOverpaintTexDim); + #elif defined(dOverpaintType_vertexInstance) + overpaint = texture3dFrom1dTrilinear(tOverpaint, unitPos, uGridDim, uOverpaintTexDim, vInstance * float(uVertexCount)); + #endif + + material.rgb = mix(material.rgb, overpaint.rgb, overpaint.a); + #endif + + #if defined(dIgnoreLight) + gl_FragColor.rgb = material.rgb; + #else + if (material.a >= 0.01) { + #ifdef dPackedGroup + // compute gradient by central differences + gradient.x = textureVal(unitPos - dx).a - textureVal(unitPos + dx).a; + gradient.y = textureVal(unitPos - dy).a - textureVal(unitPos + dy).a; + gradient.z = textureVal(unitPos - dz).a - textureVal(unitPos + dz).a; + #else + gradient = cell.xyz * 2.0 - 1.0; + #endif + vec3 normal = -normalize(normalMatrix * normalize(gradient)); + #include apply_light_color + } else { + gl_FragColor.rgb = material.rgb; + } + #endif + + gl_FragColor.a = material.a * uAlpha * uTransferScale; + + #if defined(dColorMarker) + float marker = uMarker; + if (uMarker == -1.0) { + marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a; + marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win + } + #endif + #include apply_marker_color + + preFogAlphaBlended = (1.0 - preFogAlphaBlended) * gl_FragColor.a + preFogAlphaBlended; + fragmentDepth = calcDepth(mvPosition.xyz); + #include apply_fog + + src = gl_FragColor; + + if (!uTransparentBackground) { + // done in 'apply_fog' otherwise + src.rgb *= src.a; + } + dst = (1.0 - dst.a) * src + dst; // standard blending + + // break if the color is opaque enough + if (dst.a > 0.95) + break; + + pos += step; + } + + return dst; +} + +// TODO: support float texture for higher precision values??? +// TODO: support clipping exclusion texture support + +void main() { + #if defined(dRenderVariant_emissive) + discard; + #else + if (gl_FrontFacing) + discard; + + vec3 rayDir = mix(normalize(vOrigPos - uCameraPosition), uCameraDir, uIsOrtho); + vec3 step = rayDir * uStepScale; + + float boundingSphereNear = distance(vBoundingSphere.xyz, uCameraPosition) - vBoundingSphere.w; + float d = max(uNear, boundingSphereNear) - mix(0.0, distance(vOrigPos, uCameraPosition), uIsOrtho); + vec3 start = mix(uCameraPosition, vOrigPos, uIsOrtho) + (d * rayDir); + gl_FragColor = raymarch(start, step, rayDir); + + float fragmentDepth = calcDepth((uModelView * vec4(start, 1.0)).xyz); + float preFogAlpha = clamp(preFogAlphaBlended, 0.0, 1.0); + #include wboit_write + #endif +} +`;var uG=` +precision highp float; +precision highp int; + +#include common +#include common_vert_params + +attribute vec3 aPosition; +attribute vec2 aUv; +attribute mat4 aTransform; +attribute float aInstance; + +varying vec2 vUv; +varying float vInstance; + +void main() { + #include assign_position + + vUv = aUv; + vInstance = aInstance; +} +`;var dG=` +precision highp float; +precision highp int; + +#include common +#include read_from_texture +#include common_frag_params +#include common_clip + +uniform vec2 uImageTexDim; +uniform sampler2D tImageTex; +uniform sampler2D tGroupTex; + +uniform vec2 uMarkerTexDim; +uniform sampler2D tMarker; + +varying vec2 vUv; +varying float vInstance; + +#if defined(dInterpolation_catmulrom) || defined(dInterpolation_mitchell) || defined(dInterpolation_bspline) + #define dInterpolation_cubic +#endif + +#if defined(dInterpolation_cubic) + #if defined(dInterpolation_catmulrom) || defined(dInterpolation_mitchell) + #if defined(dInterpolation_catmulrom) + const float B = 0.0; + const float C = 0.5; + #elif defined(dInterpolation_mitchell) + const float B = 0.333; + const float C = 0.333; + #endif + + float cubicFilter(float x){ + float f = x; + if (f < 0.0) { + f = -f; + } + if (f < 1.0) { + return ((12.0 - 9.0 * B - 6.0 * C) * (f * f * f) + + (-18.0 + 12.0 * B + 6.0 * C) * (f * f) + + (6.0 - 2.0 * B)) / 6.0; + }else if (f >= 1.0 && f < 2.0){ + return ((-B - 6.0 * C) * ( f * f * f) + + (6.0 * B + 30.0 * C) * (f * f) + + (-(12.0 * B) - 48.0 * C) * f + + 8.0 * B + 24.0 * C) / 6.0; + }else{ + return 0.0; + } + } + #elif defined(dInterpolation_bspline) + float cubicFilter(float x) { + float f = x; + if (f < 0.0) { + f = -f; + } + if (f >= 0.0 && f <= 1.0){ + return (2.0 / 3.0) + (0.5) * (f * f * f) - (f * f); + } else if (f > 1.0 && f <= 2.0) { + return 1.0 / 6.0 * pow((2.0 - f), 3.0); + } + return 1.0; + } + #endif + + vec4 biCubic(sampler2D tex, vec2 texCoord) { + vec2 texelSize = 1.0 / uImageTexDim; + texCoord -= texelSize / 2.0; + vec4 nSum = vec4(0.0); + float nDenom = 0.0; + vec2 cell = fract(texCoord * uImageTexDim); + for (float m = -1.0; m <= 2.0; ++m) { + for (float n = -1.0; n <= 2.0; ++n) { + vec4 vecData = texture2D(tex, texCoord + texelSize * vec2(m, n)); + float c = abs(cubicFilter(m - cell.x) * cubicFilter(-n + cell.y)); + nSum += vecData * c; + nDenom += c; + } + } + return nSum / nDenom; + } +#endif + +void main() { + #include fade_lod + #include clip_pixel + + #if defined(dInterpolation_cubic) + vec4 imageData = biCubic(tImageTex, vUv); + #else + vec4 imageData = texture2D(tImageTex, vUv); + #endif + imageData.a = clamp(imageData.a, 0.0, 1.0); + if (imageData.a > 0.9) imageData.a = 1.0; + + imageData.a *= uAlpha; + if (imageData.a < 0.05) + discard; + + float fragmentDepth = gl_FragCoord.z; + + if ((uRenderMask == MaskOpaque && imageData.a < 1.0) || + (uRenderMask == MaskTransparent && imageData.a == 1.0) + ) { + discard; + } + + #if defined(dRenderVariant_pick) + if (imageData.a < 0.3) + discard; + #ifdef requiredDrawBuffers + gl_FragColor = vec4(packIntToRGB(float(uObjectId)), 1.0); + gl_FragData[1] = vec4(packIntToRGB(vInstance), 1.0); + gl_FragData[2] = vec4(texture2D(tGroupTex, vUv).rgb, 1.0); + gl_FragData[3] = packDepthToRGBA(gl_FragCoord.z); + #else + gl_FragColor = vColor; + if (uPickType == 1) { + gl_FragColor = vec4(packIntToRGB(float(uObjectId)), 1.0); + } else if (uPickType == 2) { + gl_FragColor = vec4(packIntToRGB(vInstance), 1.0); + } else { + gl_FragColor = vec4(texture2D(tGroupTex, vUv).rgb, 1.0); + } + #endif + #elif defined(dRenderVariant_depth) + if (imageData.a < 0.05) + discard; + gl_FragColor = packDepthToRGBA(gl_FragCoord.z); + #elif defined(dRenderVariant_marking) + float marker = uMarker; + if (uMarker == -1.0) { + float group = unpackRGBToInt(texture2D(tGroupTex, vUv).rgb); + marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a; + marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win + } + if (uMarkingType == 1) { + if (marker > 0.0 || imageData.a < 0.05) + discard; + gl_FragColor = packDepthToRGBA(gl_FragCoord.z); + } else { + if (marker == 0.0 || imageData.a < 0.05) + discard; + float depthTest = 1.0; + if (uMarkingDepthTest) { + depthTest = (fragmentDepth >= getDepthPacked(gl_FragCoord.xy / uDrawingBufferSize)) ? 1.0 : 0.0; + } + bool isHighlight = intMod(marker, 2.0) > 0.1; + gl_FragColor = vec4(0.0, depthTest, isHighlight ? 1.0 : 0.0, 1.0); + } + #elif defined(dRenderVariant_emissive) + gl_FragColor = vec4(0.0); + #elif defined(dRenderVariant_color) + gl_FragColor = imageData; + + float marker = uMarker; + if (uMarker == -1.0) { + float group = unpackRGBToInt(texture2D(tGroupTex, vUv).rgb); + marker = readFromTexture(tMarker, vInstance * float(uGroupCount) + group, uMarkerTexDim).a; + marker = floor(marker * 255.0 + 0.5); // rounding required to work on some cards on win + } + + #include apply_marker_color + #include apply_fog + #include wboit_write + #include dpoit_write + #endif +} +`;var hG=bo(),kce={apply_fog:g5,apply_interior_color:y5,apply_light_color:v5,apply_marker_color:b5,assign_clipping_varying:x5,assign_color_varying:S5,assign_group:C5,assign_marker_varying:T5,assign_material_color:w5,assign_position:_5,assign_size:P5,check_picking_alpha:E5,check_transparency:I5,clip_instance:D5,clip_pixel:A5,color_frag_params:k5,color_vert_params:M5,common_clip:R5,common_frag_params:L5,common_vert_params:B5,common:O5,fade_lod:F5,float_to_rgba:N5,light_frag_params:V5,matrix_scale:z5,normal_frag_params:U5,read_from_texture:G5,rgba_to_float:j5,size_vert_params:H5,texture3d_from_1d_trilinear:q5,texture3d_from_2d_linear:W5,texture3d_from_2d_nearest:X5,wboit_write:Y5,dpoit_write:Q5},Mce=/^(?!\/\/)\s*#include\s+(\S+)/gm,Rce=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*\+\+i\s*\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g,Lce=/[ \t]*\/\/.*\n/g,Bce=/[ \t]*\/\*[\s\S]*?\*\//g,Oce=/\n{2,}/g;function mG(t){return t.replace(Mce,(e,r)=>{let n=kce[r];if(!n)throw new Error(`empty chunk, '${r}'`);return n}).trim().replace(Lce,` +`).replace(Bce,` +`).replace(Oce,` +`)}function Fce(t){return t.replace(Rce,Nce)}function Nce(t,e,r,n){let o="";for(let i=parseInt(e);i{let n=t[r];n.type==="uniform"?e[r]=wG(n.kind):n.type==="texture"&&(e[r]=wG("t"))}),e}function IG(t){let e={};return Object.keys(t).forEach(r=>{e[r]=C.create($s(t[r].ref.value))}),e}var iue=bo();function aue(t,e){switch(e){case"static":return t.STATIC_DRAW;case"dynamic":return t.DYNAMIC_DRAW;case"stream":return t.STREAM_DRAW}}function sue(t,e){if(e instanceof Uint8Array)return t.UNSIGNED_BYTE;if(e instanceof Int8Array)return t.BYTE;if(e instanceof Uint16Array)return t.UNSIGNED_SHORT;if(e instanceof Int16Array)return t.SHORT;if(e instanceof Uint32Array)return t.UNSIGNED_INT;if(e instanceof Int32Array)return t.INT;if(e instanceof Float32Array)return t.FLOAT;ur(e)}function lue(t,e){switch(e){case"attribute":return t.ARRAY_BUFFER;case"elements":return t.ELEMENT_ARRAY_BUFFER;case"uniform":if(ct(t))return t.UNIFORM_BUFFER;throw new Error("WebGL2 is required for uniform buffers")}}function UT(t){let e=t.createBuffer();if(e===null)throw new Error("Could not create WebGL buffer");return e}function DG(t,e,r,n){let o=UT(t),i=aue(t,r),a=lue(t,n),s=sue(t,e),l=e.BYTES_PER_ELEMENT,c=e.length;function u(m){t.bindBuffer(a,o),t.bufferData(a,m,i)}u(e);let d=!1;return{id:iue(),_usageHint:i,_bufferType:a,_dataType:s,_bpe:l,length:c,getBuffer:()=>o,updateData:u,updateSubData:(m,p,h)=>{t.bindBuffer(a,o),h-p===m.length?t.bufferSubData(a,0,m):t.bufferSubData(a,p*l,m.subarray(p,p+h))},reset:()=>{o=UT(t),u(e)},destroy:()=>{d||(t.deleteBuffer(o),d=!0)}}}function AG(t,e,r){switch(e){case"float32":switch(r){case 1:return t.FLOAT;case 2:return t.FLOAT_VEC2;case 3:return t.FLOAT_VEC3;case 4:return t.FLOAT_VEC4;case 16:return t.FLOAT_MAT4}default:ur(e)}}function kG(t,e,r,n,o,i,a="static"){let{instancedArrays:s}=r,l=DG(t,n,a,"attribute"),{_bufferType:c,_dataType:u,_bpe:d}=l;return U(w({},l),{divisor:i,bind:m=>{if(t.bindBuffer(c,l.getBuffer()),o===16)for(let p=0;p<4;++p)e.enableVertexAttrib(m+p),t.vertexAttribPointer(m+p,4,u,!1,4*4*d,p*4*d),s.vertexAttribDivisor(m+p,i);else e.enableVertexAttrib(m),t.vertexAttribPointer(m,o,u,!1,0,0),s.vertexAttribDivisor(m,i)},changeOffset:(m,p)=>{let h=p*d*o;if(t.bindBuffer(c,l.getBuffer()),o===16)for(let f=0;f<4;++f)t.vertexAttribPointer(m+f,4,u,!1,4*4*d,f*4*d+h);else t.vertexAttribPointer(m,o,u,!1,0,h)}})}function MG(t,e,r){let n=[];return Object.keys(e).forEach(o=>{let i=e[o];i.type==="attribute"&&(n[n.length]=[o,t.resources.attribute(r[o].ref.value,i.itemSize,i.divisor)])}),n}function RG(t,e,r="static"){let n=DG(t,e,r,"elements");return U(w({},n),{bind:()=>{t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n.getBuffer())}})}var cue=bo();function uue(t,e,r){let n={};return Object.keys(r).forEach(o=>{let i=r[o];if(i.type==="attribute"){let a=t.getAttribLocation(e,o);n[o]=a}else if(i.type==="uniform"){let a=t.getUniformLocation(e,o);a===null&&PG(i.kind)&&(a=t.getUniformLocation(e,o+"[0]")),n[o]=a}else if(i.type==="texture"){let a=t.getUniformLocation(e,o);n[o]=a}}),n}function due(t,e,r){let n=t.getProgramParameter(e,t.ACTIVE_ATTRIBUTES);for(let o=0;o{e.currentProgramId=c,t.useProgram(l)},setUniforms:v=>{for(let x=0,S=v.length;x{let S=p[v];S!==null&&h[v](t,S,x)},bindAttributes:v=>{e.clearVertexAttribsState();for(let x=0,S=v.length;x{for(let S=0,T=v.length;S{for(let S=0,T=v.length;S{l=GT(t),f()},destroy:()=>{b||(d.destroy(),m.destroy(),t.deleteProgram(l),b=!0)}}}var fue=bo();function hue(t){let e=t.split(` +`);for(let r=0;r{t.attachShader(n,r)},reset:()=>{r=qx(t,e)},destroy:()=>{t.deleteShader(r)}}}function gue(t,e=0){return{value:t,usageCount:e}}function yue(t){return{free:()=>{t.usageCount-=1},value:t.value}}function OA(t,e,r){let n=new Map;return{get:o=>{let i=t(o),a=n.get(i);return a||(a=gue(e(o)),n.set(i,a)),a.usageCount+=1,yue(a)},clear:()=>{n.forEach((o,i)=>{o.usageCount<=0&&(o.usageCount<0&&console.warn("Reference usageCount below zero."),r(o.value),n.delete(i))})},get count(){return n.size},dispose:()=>{n.forEach(o=>r(o.value)),n.clear()}}}var vue=bo();function bue(t,e){switch(e){case"depth16":return t.DEPTH_COMPONENT16;case"stencil8":return t.STENCIL_INDEX8;case"rgba4":return t.RGBA4;case"depth-stencil":return t.DEPTH_STENCIL;case"depth24":if(ct(t))return t.DEPTH_COMPONENT24;throw new Error("WebGL2 needed for `depth24` renderbuffer format");case"depth32f":if(ct(t))return t.DEPTH_COMPONENT32F;throw new Error("WebGL2 needed for `depth32f` renderbuffer format");case"depth24-stencil8":if(ct(t))return t.DEPTH24_STENCIL8;throw new Error("WebGL2 needed for `depth24-stencil8` renderbuffer format");case"depth32f-stencil8":if(ct(t))return t.DEPTH32F_STENCIL8;throw new Error("WebGL2 needed for `depth32f-stencil8` renderbuffer format")}}function xue(t,e){switch(e){case"depth":return t.DEPTH_ATTACHMENT;case"stencil":return t.STENCIL_ATTACHMENT;case"depth-stencil":return t.DEPTH_STENCIL_ATTACHMENT;case"color0":return t.COLOR_ATTACHMENT0}}function OG(t){let e=t.createRenderbuffer();if(e===null)throw new Error("Could not create WebGL renderbuffer");return e}function FG(t,e,r,n,o){let i=OG(t),a=()=>t.bindRenderbuffer(t.RENDERBUFFER,i),s=bue(t,e),l=xue(t,r);function c(){a(),t.renderbufferStorage(t.RENDERBUFFER,s,n,o)}c();let u=!1;return{id:vue(),bind:a,attachFramebuffer:d=>{d.bind(),a(),t.framebufferRenderbuffer(t.FRAMEBUFFER,l,t.RENDERBUFFER,i),ht&&Eg(t)},detachFramebuffer:d=>{d.bind(),a(),t.framebufferRenderbuffer(t.FRAMEBUFFER,l,t.RENDERBUFFER,null),ht&&Eg(t)},setSize:(d,m)=>{n=d,o=m,c()},reset:()=>{i=OG(t),c()},destroy:()=>{u||(t.deleteRenderbuffer(i),u=!0)}}}var Sue=bo();function NG(t){let{vertexArrayObject:e}=t;if(!e)throw new Error("VertexArrayObject not supported");let r=e.createVertexArray();if(!r)throw new Error("Could not create WebGL vertex array");return r}function VG(t){let{vertexArrayObject:e}=t;if(e===null)throw new Error("VertexArrayObject not supported");return e}function zG(t,e,r,n,o){let i=Sue(),a=NG(e),s=VG(e);function l(){s.bindVertexArray(a),o&&o.bind(),r.bindAttributes(n),s.bindVertexArray(null)}l();let c=!1;return{id:i,bind:()=>{s.bindVertexArray(a)},update:l,reset:()=>{a=NG(e),s=VG(e),l()},destroy:()=>{c||(o&&(s.bindVertexArray(a),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null)),s.deleteVertexArray(a),c=!0)}}}function Cue(t){return typeof t=="boolean"?t?1:0:typeof t=="number"?t*1e4:wA(t)}function UG(t){return U(w({},t.value),{destroy:()=>{t.free()}})}function GG(t,e,r,n){let o={attribute:new Set,elements:new Set,framebuffer:new Set,program:new Set,renderbuffer:new Set,shader:new Set,texture:new Set,cubeTexture:new Set,vertexArray:new Set};function i(c,u){return o[c].add(u),r.resourceCounts[c]+=1,U(w({},u),{destroy:()=>{u.destroy(),o[c].delete(u),r.resourceCounts[c]-=1}})}let a=OA(c=>JSON.stringify(c),c=>i("shader",BG(t,c)),c=>{c.destroy()});function s(c,u){return UG(a.get({type:c,source:u}))}let l=OA(c=>{var u;let d=[c.shaderCode.id],m=((u=c.defineValues.dRenderVariant)===null||u===void 0?void 0:u.ref.value)||"";return Object.keys(c.defineValues).forEach(p=>{var h,f;!((f=(h=c.shaderCode).ignoreDefine)===null||f===void 0)&&f.call(h,p,m,c.defineValues)||d.push(wA(p),Cue(c.defineValues[p].ref.value))}),Ai(d).toString()},c=>i("program",LG(t,e,n,s,c)),c=>{c.destroy()});return{attribute:(c,u,d,m)=>i("attribute",kG(t,e,n,c,u,d,m)),elements:(c,u)=>i("elements",RG(t,c,u)),framebuffer:()=>i("framebuffer",NU(t)),program:(c,u,d)=>UG(l.get({defineValues:c,shaderCode:u,schema:d})),renderbuffer:(c,u,d,m)=>i("renderbuffer",FG(t,c,u,d,m)),shader:s,texture:(c,u,d,m)=>i("texture",jG(t,n,c,u,d,m)),cubeTexture:(c,u,d)=>i("cubeTexture",HG(t,c,u,d)),vertexArray:(c,u,d)=>i("vertexArray",zG(t,n,c,u,d)),getByteCounts:()=>{let c=0;o.texture.forEach(m=>{c+=m.getByteCount()}),o.cubeTexture.forEach(m=>{c+=m.getByteCount()});let u=0;o.attribute.forEach(m=>{u+=m.length*4});let d=0;return o.elements.forEach(m=>{d+=m.length*4}),{texture:c,attribute:u,elements:d}},reset:()=>{o.attribute.forEach(c=>c.reset()),o.elements.forEach(c=>c.reset()),o.framebuffer.forEach(c=>c.reset()),o.renderbuffer.forEach(c=>c.reset()),o.shader.forEach(c=>c.reset()),o.program.forEach(c=>c.reset()),o.vertexArray.forEach(c=>c.reset()),o.texture.forEach(c=>c.reset())},destroy:()=>{o.attribute.forEach(c=>c.destroy()),o.elements.forEach(c=>c.destroy()),o.framebuffer.forEach(c=>c.destroy()),o.renderbuffer.forEach(c=>c.destroy()),o.shader.forEach(c=>c.destroy()),o.program.forEach(c=>c.destroy()),o.vertexArray.forEach(c=>c.destroy()),o.texture.forEach(c=>c.destroy()),a.clear(),l.clear()}}}var qG=bo();function WG(t,e,r,n,o=!0,i="uint8",a="nearest",s="rgba"){if(s==="alpha"&&!ct(t))throw new Error("cannot render to alpha format in webgl1");let l=e.framebuffer(),c=i==="fp16"?e.texture("image-float16",s,"fp16",a):i==="float32"?e.texture("image-float32",s,"float",a):e.texture("image-uint8",s,"ubyte",a),u=o?ct(t)?e.renderbuffer("depth32f","depth",r,n):e.renderbuffer("depth16","depth",r,n):null;function d(){c.define(r,n),c.attachFramebuffer(l,"color0"),u&&u.attachFramebuffer(l)}d();let m=!1;return{id:qG(),texture:c,framebuffer:l,depthRenderbuffer:u,getWidth:()=>r,getHeight:()=>n,bind:()=>{l.bind()},setSize:(p,h)=>{r===p&&n===h||(r=p,n=h,c.define(r,n),u&&u.setSize(r,n))},reset:()=>{d()},destroy:()=>{m||(c.destroy(),l.destroy(),u&&u.destroy(),m=!0)}}}function XG(t){return{id:qG(),texture:un(t),framebuffer:VU(),depthRenderbuffer:null,getWidth:()=>0,getHeight:()=>0,bind:()=>{t.bindFramebuffer(t.FRAMEBUFFER,null)},setSize:()=>{},reset:()=>{},destroy:()=>{}}}function Tue(t,e,r){return t-=t/r,t+=e/r,t}var jT=class{add(e,r){let n=this.avgs.get(e)||r;return n=Tue(n,r,this.count),this.avgs.set(e,n),n}get(e){return this.avgs.get(e)}stats(){return Object.fromEntries(this.avgs.entries())}clear(){this.avgs.clear()}constructor(e){this.count=e,this.avgs=new Map}};function wue(t){t.calls.drawInstanced=0,t.calls.drawInstancedBase=0,t.calls.multiDrawInstancedBase=0,t.calls.counts=0,t.culled.lod=0,t.culled.frustum=0,t.culled.occlusion=0}function _ue(t){return t.disjointTimerQuery?t.disjointTimerQuery.createQuery():null}function YG(t,e,r,n){var o;let i=e.disjointTimerQuery,a=(o=n?.avgCount)!==null&&o!==void 0?o:30,s=new Map,l=new Map,c=[],u=new jT(a),d=new jT(a),m=[],p=null,h=!1,f=()=>{i&&(s.forEach((v,x)=>{i.deleteQuery(x)}),l.clear(),c.length=0,u.clear(),d.clear(),m=[],p=null,h=!1)},b=()=>{if(!i)return;let v=_ue(e);v&&(i.beginQuery(i.TIME_ELAPSED,v),l.forEach((x,S)=>{x.queries.push(v)}),s.set(v,{refCount:l.size}),p=v)};return{resolve:()=>{let v=[];if(!i||!m.length)return v;s.forEach((S,T)=>{if(S.timeElapsed!==void 0)return;let E=i.getQueryParameter(T,i.QUERY_RESULT_AVAILABLE),_=t.getParameter(i.GPU_DISJOINT);if(E&&!_){let D=i.getQueryParameter(T,i.QUERY_RESULT);S.timeElapsed=D}(E||_)&&i.deleteQuery(T)});let x=[];for(let S of m)if(S.queries.every(T=>{var E;return((E=s.get(T))===null||E===void 0?void 0:E.timeElapsed)!==void 0})){let T=0;for(let E of S.queries){let _=s.get(E);T+=_.timeElapsed,_.refCount-=1}if(S.timeElapsed=T,S.root){let E=[],_=(P,A)=>{for(let I of P){let k=I.timeElapsed,M=I.cpu.end-I.cpu.start,R={label:I.label,gpuElapsed:k,gpuAvg:u.add(I.label,k),cpuElapsed:M,cpuAvg:d.add(I.label,M),children:[],calls:I.calls};A.push(R),_(I.children,R.children)}};_(S.children,E);let D=S.cpu.end-S.cpu.start;v.push({label:S.label,gpuElapsed:T,gpuAvg:u.add(S.label,T),cpuElapsed:D,cpuAvg:d.add(S.label,D),children:E,calls:S.calls})}}else x.push(S);return m=x,s.forEach((S,T)=>{S.refCount===0&&s.delete(T)}),v},mark:(v,x=!1)=>{if(!i)return;if(l.has(v))throw new Error(`Timer mark for '${v}' already exists`);p!==null&&i.endQuery(i.TIME_ELAPSED);let S={label:v,queries:[],children:[],root:p===null,cpu:{start:ko(),end:-1},captureStats:x};if(l.set(v,S),c.length&&c[c.length-1].children.push(S),c.push(S),x){if(h)throw new Error("Already capturing stats");wue(r),h=!0}b()},markEnd:v=>{var x;if(!i)return;let S=l.get(v);if(!S)throw new Error(`Timer mark for '${v}' does not exist`);if(((x=c.pop())===null||x===void 0?void 0:x.label)!==v)throw new Error(`Timer mark for '${v}' has pending nested mark`);i.endQuery(i.TIME_ELAPSED),l.delete(v),S.cpu.end=ko(),S.captureStats&&(S.calls=w({},r.calls),h=!1),m.push(S),l.size>0?b():p=null},stats:()=>({gpu:u.stats(),cpu:d.stats()}),formatedStats:()=>{let v={},x=u.stats(),S=d.stats();for(let T of Object.keys(x)){let E=`${(x[T]/1e3/1e3).toFixed(2)}`,_=`${S[T].toFixed(2)}`;v[T]=`${E} ms | CPU: ${_} ms`}return v},clear:f,destroy:()=>{f()}}}function Pue(t){let e=`${(t.gpuElapsed/1e3/1e3).toFixed(2)}`,r=`${(t.gpuAvg/1e3/1e3).toFixed(2)}`,n=`${t.cpuElapsed.toFixed(2)}`,o=`${t.cpuAvg.toFixed(2)}`;return`${t.label} ${e} ms (avg. ${r} ms) | CPU: ${n} ms (avg. ${o} ms)`}function FA(t){t.map(e=>{let r=Pue(e);e.children.length||e.calls?(console.groupCollapsed(r),e.calls&&console.log(e.calls),FA(e.children),console.groupEnd()):console.log(r)})}function KG(t,e){function r(o){try{return t.getContext(o,e)}catch{return null}}let n=(e?.preferWebGl1?null:r("webgl2"))||r("webgl")||r("experimental-webgl");return ht&&console.log(`isWebgl2: ${ct(n)}`),n}function VA(t,e){switch(e){case t.NO_ERROR:return"no error";case t.INVALID_ENUM:return"invalid enum";case t.INVALID_VALUE:return"invalid value";case t.INVALID_OPERATION:return"invalid operation";case t.INVALID_FRAMEBUFFER_OPERATION:return"invalid framebuffer operation";case t.OUT_OF_MEMORY:return"out of memory";case t.CONTEXT_LOST_WEBGL:return"context lost"}return"unknown error"}function zA(t){let e=t.getError();if(e!==t.NO_ERROR)throw new Error(`WebGL error: '${VA(t,e)}'`)}function Eue(t){let e=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS);for(let o=0;o{ct(t)?JG(t,e):(QG||(console.info("Sync object not supported in WebGL"),QG=!0),ej(t),e())})}function ej(t){t.bindFramebuffer(t.FRAMEBUFFER,null),t.readPixels(0,0,1,1,t.RGBA,t.UNSIGNED_BYTE,$G)}function NA(t,e,r,n,o,i){if(ht&&Eg(t),i instanceof Uint8Array)t.readPixels(e,r,n,o,t.RGBA,t.UNSIGNED_BYTE,i);else if(i instanceof Float32Array)t.readPixels(e,r,n,o,t.RGBA,t.FLOAT,i);else if(i instanceof Int32Array&&ct(t))t.readPixels(e,r,n,o,t.RGBA_INTEGER,t.INT,i);else throw new Error("unsupported readPixels buffer type");ht&&zA(t)}function Due(t,e){let r=t.drawingBufferWidth,n=t.drawingBufferHeight,o=new Uint8Array(r*n*4);return HT(t),e.viewport(0,0,r,n),NA(t,0,0,r,n,o),ip.flipY(ip.create(o,r,n))}function Aue(){return{resourceCounts:{attribute:0,elements:0,framebuffer:0,program:0,renderbuffer:0,shader:0,texture:0,cubeTexture:0,vertexArray:0},drawCount:0,instanceCount:0,instancedDrawCount:0,calls:{drawInstanced:0,drawInstancedBase:0,multiDrawInstancedBase:0,counts:0},culled:{lod:0,frustum:0,occlusion:0}}}function tj(t,e={}){let r=BA(t),n=h5(t,r),o=Aue(),i=GG(t,n,o,r),a=YG(t,r,o),s={maxTextureSize:t.getParameter(t.MAX_TEXTURE_SIZE),max3dTextureSize:ct(t)?t.getParameter(t.MAX_3D_TEXTURE_SIZE):0,maxRenderbufferSize:t.getParameter(t.MAX_RENDERBUFFER_SIZE),maxDrawBuffers:r.drawBuffers?t.getParameter(r.drawBuffers.MAX_DRAW_BUFFERS):0,maxTextureImageUnits:t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),maxVertexTextureImageUnits:t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS)};if(s.maxVertexTextureImageUnits<8)throw new Error('Need "MAX_VERTEX_TEXTURE_IMAGE_UNITS" >= 8');let l=r.provokingVertex;l?.provokingVertex(l.FIRST_VERTEX_CONVENTION);let c=!1,u=new da(0),d=e.pixelScale||1,m;if(ct(t)){let h=t.createBuffer(),f,b,v=!1,x=()=>{t.bindBuffer(t.PIXEL_PACK_BUFFER,h),t.getBufferSubData(t.PIXEL_PACK_BUFFER,0,f),t.bindBuffer(t.PIXEL_PACK_BUFFER,null),v=!1,b(),b=void 0,f=void 0};m=(S,T,E,_,D)=>new Promise((P,A)=>{if(v){A("Can not call multiple readPixelsAsync at the same time");return}v=!0,t.bindBuffer(t.PIXEL_PACK_BUFFER,h),t.bufferData(t.PIXEL_PACK_BUFFER,E*_*4,t.STREAM_READ),t.readPixels(S,T,E,_,t.RGBA,t.UNSIGNED_BYTE,0),t.bindBuffer(t.PIXEL_PACK_BUFFER,null),b=P,f=D,JG(t,x)})}else m=(h,f,b,v,x)=>N(this,null,function*(){NA(t,h,f,b,v,x)});let p=new Set;return{gl:t,isWebGL2:ct(t),get pixelRatio(){return(typeof window<"u"&&window.devicePixelRatio||1)*(d||1)},extensions:r,state:n,stats:o,resources:i,timer:a,get maxTextureSize(){return s.maxTextureSize},get max3dTextureSize(){return s.max3dTextureSize},get maxRenderbufferSize(){return s.maxRenderbufferSize},get maxDrawBuffers(){return s.maxDrawBuffers},get maxTextureImageUnits(){return s.maxTextureImageUnits},namedComputeRenderables:Object.create(null),namedFramebuffers:Object.create(null),namedTextures:Object.create(null),get isContextLost(){return c||t.isContextLost()},contextRestored:u,setContextLost:()=>{c=!0,a.clear()},handleContextRestored:h=>{Object.assign(r,BA(t)),n.reset(),n.currentMaterialId=-1,n.currentProgramId=-1,n.currentRenderItemId=-1,i.reset(),p.forEach(f=>f.reset()),h?.(),c=!1,u.next(ko())},setPixelScale:h=>{d=h},createRenderTarget:(h,f,b,v,x,S)=>{let T=WG(t,i,h,f,b,v,x,S);return p.add(T),U(w({},T),{destroy:()=>{T.destroy(),p.delete(T)}})},unbindFramebuffer:()=>HT(t),readPixels:(h,f,b,v,x)=>{NA(t,h,f,b,v,x)},readPixelsAsync:m,waitForGpuCommandsComplete:()=>Iue(t),waitForGpuCommandsCompleteSync:()=>ej(t),getDrawingBufferPixelData:()=>Due(t,n),clear:(h,f,b,v)=>{HT(t),n.enable(t.SCISSOR_TEST),n.depthMask(!0),n.colorMask(!0,!0,!0,!0),n.clearColor(h,f,b,v),n.viewport(0,0,t.drawingBufferWidth,t.drawingBufferHeight),n.scissor(0,0,t.drawingBufferWidth,t.drawingBufferHeight),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)},destroy:h=>{var f,b;i.destroy(),Eue(t),h?.doNotForceWebGLContextLoss||((f=t.getExtension("WEBGL_lose_context"))===null||f===void 0||f.loseContext(),(b=t.getExtension("STACKGL_destroy_context"))===null||b===void 0||b.destroy())}}}function ct(t){return typeof WebGL2RenderingContext<"u"&&t instanceof WebGL2RenderingContext}function zU(t){if(ct(t))return{drawArraysInstanced:t.drawArraysInstanced.bind(t),drawElementsInstanced:t.drawElementsInstanced.bind(t),vertexAttribDivisor:t.vertexAttribDivisor.bind(t),VERTEX_ATTRIB_ARRAY_DIVISOR:t.VERTEX_ATTRIB_ARRAY_DIVISOR};{let e=t.getExtension("ANGLE_instanced_arrays");return e===null?null:{drawArraysInstanced:e.drawArraysInstancedANGLE.bind(e),drawElementsInstanced:e.drawElementsInstancedANGLE.bind(e),vertexAttribDivisor:e.vertexAttribDivisorANGLE.bind(e),VERTEX_ATTRIB_ARRAY_DIVISOR:e.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE}}}function UU(t){if(ct(t))return{FRAGMENT_SHADER_DERIVATIVE_HINT:t.FRAGMENT_SHADER_DERIVATIVE_HINT};{let e=t.getExtension("OES_standard_derivatives");return e===null?null:{FRAGMENT_SHADER_DERIVATIVE_HINT:e.FRAGMENT_SHADER_DERIVATIVE_HINT_OES}}}function GU(t){return ct(t)?{}:t.getExtension("OES_element_index_uint")}function jU(t){if(ct(t))return{VERTEX_ARRAY_BINDING:t.VERTEX_ARRAY_BINDING,bindVertexArray:t.bindVertexArray.bind(t),createVertexArray:t.createVertexArray.bind(t),deleteVertexArray:t.deleteVertexArray.bind(t),isVertexArray:t.isVertexArray.bind(t)};{let e=t.getExtension("OES_vertex_array_object");return e===null?null:{VERTEX_ARRAY_BINDING:e.VERTEX_ARRAY_BINDING_OES,bindVertexArray:e.bindVertexArrayOES.bind(e),createVertexArray:e.createVertexArrayOES.bind(e),deleteVertexArray:e.deleteVertexArrayOES.bind(e),isVertexArray:e.isVertexArrayOES.bind(e)}}}function HU(t){return ct(t)?{}:t.getExtension("OES_texture_float")}function qU(t){return t.getExtension("OES_texture_float_linear")}function WU(t){if(ct(t))return{HALF_FLOAT:t.HALF_FLOAT};{let e=t.getExtension("OES_texture_half_float");return e===null?null:{HALF_FLOAT:e.HALF_FLOAT_OES}}}function XU(t){return t.getExtension("OES_texture_half_float_linear")}function YU(t){if(ct(t))return{MIN:t.MIN,MAX:t.MAX};{let e=t.getExtension("EXT_blend_minmax");return e===null?null:{MIN:e.MIN_EXT,MAX:e.MAX_EXT}}}function QU(t){return ct(t)?{}:t.getExtension("EXT_frag_depth")}function KU(t){if(ct(t))return t.getExtension("EXT_color_buffer_float")===null?null:(t.getExtension("EXT_float_blend"),{RGBA32F:t.RGBA32F});{let e=t.getExtension("WEBGL_color_buffer_float");return e===null?(t.getExtension("OES_texture_float"),rj(t,t.FLOAT)?{RGBA32F:34836}:null):(t.getExtension("EXT_float_blend"),{RGBA32F:e.RGBA32F_EXT})}}function $U(t){if(ct(t))return t.getExtension("EXT_color_buffer_half_float")===null?null:(t.getExtension("EXT_float_blend"),{RGBA16F:t.RGBA16F});{let e=t.getExtension("EXT_color_buffer_half_float");return e===null?(t.getExtension("OES_texture_half_float"),rj(t,36193)?{RGBA16F:34842}:null):(t.getExtension("EXT_float_blend"),{RGBA16F:e.RGBA16F_EXT})}}function ZU(t){if(ct(t))return{drawBuffers:t.drawBuffers.bind(t),COLOR_ATTACHMENT0:t.COLOR_ATTACHMENT0,COLOR_ATTACHMENT1:t.COLOR_ATTACHMENT1,COLOR_ATTACHMENT2:t.COLOR_ATTACHMENT2,COLOR_ATTACHMENT3:t.COLOR_ATTACHMENT3,COLOR_ATTACHMENT4:t.COLOR_ATTACHMENT4,COLOR_ATTACHMENT5:t.COLOR_ATTACHMENT5,COLOR_ATTACHMENT6:t.COLOR_ATTACHMENT6,COLOR_ATTACHMENT7:t.COLOR_ATTACHMENT7,DRAW_BUFFER0:t.DRAW_BUFFER0,DRAW_BUFFER1:t.DRAW_BUFFER1,DRAW_BUFFER2:t.DRAW_BUFFER2,DRAW_BUFFER3:t.DRAW_BUFFER3,DRAW_BUFFER4:t.DRAW_BUFFER4,DRAW_BUFFER5:t.DRAW_BUFFER5,DRAW_BUFFER6:t.DRAW_BUFFER6,DRAW_BUFFER7:t.DRAW_BUFFER7,MAX_COLOR_ATTACHMENTS:t.MAX_COLOR_ATTACHMENTS,MAX_DRAW_BUFFERS:t.MAX_DRAW_BUFFERS};{let e=t.getExtension("WEBGL_draw_buffers");return e===null?null:{drawBuffers:e.drawBuffersWEBGL.bind(e),COLOR_ATTACHMENT0:e.COLOR_ATTACHMENT0_WEBGL,COLOR_ATTACHMENT1:e.COLOR_ATTACHMENT1_WEBGL,COLOR_ATTACHMENT2:e.COLOR_ATTACHMENT2_WEBGL,COLOR_ATTACHMENT3:e.COLOR_ATTACHMENT3_WEBGL,COLOR_ATTACHMENT4:e.COLOR_ATTACHMENT4_WEBGL,COLOR_ATTACHMENT5:e.COLOR_ATTACHMENT5_WEBGL,COLOR_ATTACHMENT6:e.COLOR_ATTACHMENT6_WEBGL,COLOR_ATTACHMENT7:e.COLOR_ATTACHMENT7_WEBGL,DRAW_BUFFER0:e.DRAW_BUFFER0_WEBGL,DRAW_BUFFER1:e.DRAW_BUFFER1_WEBGL,DRAW_BUFFER2:e.DRAW_BUFFER2_WEBGL,DRAW_BUFFER3:e.DRAW_BUFFER3_WEBGL,DRAW_BUFFER4:e.DRAW_BUFFER4_WEBGL,DRAW_BUFFER5:e.DRAW_BUFFER5_WEBGL,DRAW_BUFFER6:e.DRAW_BUFFER6_WEBGL,DRAW_BUFFER7:e.DRAW_BUFFER7_WEBGL,MAX_COLOR_ATTACHMENTS:e.MAX_COLOR_ATTACHMENTS_WEBGL,MAX_DRAW_BUFFERS:e.MAX_DRAW_BUFFERS_WEBGL}}}function JU(t){let e=t.getExtension("OES_draw_buffers_indexed");return e===null?null:{enablei:e.enableiOES.bind(e),disablei:e.disableiOES.bind(e),blendEquationi:e.blendEquationiOES.bind(e),blendEquationSeparatei:e.blendEquationSeparateiOES.bind(e),blendFunci:e.blendFunciOES.bind(e),blendFuncSeparatei:e.blendFuncSeparateiOES.bind(e),colorMaski:e.colorMaskiOES.bind(e)}}function e5(t){return ct(t)?{}:t.getExtension("EXT_shader_texture_lod")}function t5(t){if(ct(t))return{UNSIGNED_INT_24_8:t.UNSIGNED_INT_24_8};{let e=t.getExtension("WEBGL_depth_texture");return e===null?null:{UNSIGNED_INT_24_8:e.UNSIGNED_INT_24_8_WEBGL}}}function r5(t){if(ct(t))return{FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:t.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING,SRGB8_ALPHA8:t.SRGB8_ALPHA8,SRGB8:t.SRGB8,SRGB:t.SRGB};{let e=t.getExtension("EXT_sRGB");return e===null?null:{FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:e.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT,SRGB8_ALPHA8:e.SRGB8_ALPHA8_EXT,SRGB8:e.SRGB_ALPHA_EXT,SRGB:e.SRGB_EXT}}}function n5(t){if(ct(t)){let e=t.getExtension("EXT_disjoint_timer_query_webgl2")||t.getExtension("EXT_disjoint_timer_query");return e===null?null:{QUERY_COUNTER_BITS:e.QUERY_COUNTER_BITS_EXT,CURRENT_QUERY:t.CURRENT_QUERY,QUERY_RESULT:t.QUERY_RESULT,QUERY_RESULT_AVAILABLE:t.QUERY_RESULT_AVAILABLE,TIME_ELAPSED:e.TIME_ELAPSED_EXT,TIMESTAMP:e.TIMESTAMP_EXT,GPU_DISJOINT:e.GPU_DISJOINT_EXT,createQuery:t.createQuery.bind(t),deleteQuery:t.deleteQuery.bind(t),isQuery:t.isQuery.bind(t),beginQuery:t.beginQuery.bind(t),endQuery:t.endQuery.bind(t),queryCounter:e.queryCounterEXT.bind(e),getQuery:t.getQuery.bind(t),getQueryParameter:t.getQueryParameter.bind(t)}}else{let e=t.getExtension("EXT_disjoint_timer_query");return e===null?null:{QUERY_COUNTER_BITS:e.QUERY_COUNTER_BITS_EXT,CURRENT_QUERY:e.CURRENT_QUERY_EXT,QUERY_RESULT:e.QUERY_RESULT_EXT,QUERY_RESULT_AVAILABLE:e.QUERY_RESULT_AVAILABLE_EXT,TIME_ELAPSED:e.TIME_ELAPSED_EXT,TIMESTAMP:e.TIMESTAMP_EXT,GPU_DISJOINT:e.GPU_DISJOINT_EXT,createQuery:e.createQueryEXT.bind(e),deleteQuery:e.deleteQueryEXT.bind(e),isQuery:e.isQueryEXT.bind(e),beginQuery:e.beginQueryEXT.bind(e),endQuery:e.endQueryEXT.bind(e),queryCounter:e.queryCounterEXT.bind(e),getQuery:e.getQueryEXT.bind(e),getQueryParameter:e.getQueryObjectEXT.bind(e)}}}function o5(t){let e=t.getExtension("WEBGL_multi_draw");return e?{multiDrawArrays:e.multiDrawArraysWEBGL.bind(e),multiDrawElements:e.multiDrawElementsWEBGL.bind(e),multiDrawArraysInstanced:e.multiDrawArraysInstancedWEBGL.bind(e),multiDrawElementsInstanced:e.multiDrawElementsInstancedWEBGL.bind(e)}:null}function i5(t){let e=t.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");return e?{drawArraysInstancedBaseInstance:e.drawArraysInstancedBaseInstanceWEBGL.bind(e),drawElementsInstancedBaseVertexBaseInstance:e.drawElementsInstancedBaseVertexBaseInstanceWEBGL.bind(e)}:null}function a5(t){let e=t.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");return e?{multiDrawArraysInstancedBaseInstance:e.multiDrawArraysInstancedBaseInstanceWEBGL.bind(e),multiDrawElementsInstancedBaseVertexBaseInstance:e.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL.bind(e)}:null}function s5(t){let e=t.getExtension("KHR_parallel_shader_compile");return e===null?null:{COMPLETION_STATUS:e.COMPLETION_STATUS_KHR}}function l5(t){return ct(t)?{}:t.getExtension("OES_fbo_render_mipmap")}function c5(t){if(ct(t)){let e=t.getExtension("WEBGL_provoking_vertex");if(e)return{FIRST_VERTEX_CONVENTION:e.FIRST_VERTEX_CONVENTION_WEBGL,LAST_VERTEX_CONVENTION:e.LAST_VERTEX_CONVENTION_WEBGL,PROVOKING_VERTEX:e.PROVOKING_VERTEX_WEBGL,provokingVertex:e.provokingVertexWEBGL.bind(e)}}return null}function u5(t){if(ct(t)){let e=t.getExtension("WEBGL_clip_cull_distance");if(e)return{MAX_CLIP_DISTANCES:e.MAX_CLIP_DISTANCES_WEBGL,MAX_CULL_DISTANCES:e.MAX_CULL_DISTANCES_WEBGL,MAX_COMBINED_CLIP_AND_CULL_DISTANCES:e.MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL,CLIP_DISTANCE0:e.CLIP_DISTANCE0_WEBGL,CLIP_DISTANCE1:e.CLIP_DISTANCE1_WEBGL,CLIP_DISTANCE2:e.CLIP_DISTANCE2_WEBGL,CLIP_DISTANCE3:e.CLIP_DISTANCE3_WEBGL,CLIP_DISTANCE4:e.CLIP_DISTANCE4_WEBGL,CLIP_DISTANCE5:e.CLIP_DISTANCE5_WEBGL,CLIP_DISTANCE6:e.CLIP_DISTANCE6_WEBGL,CLIP_DISTANCE7:e.CLIP_DISTANCE7_WEBGL}}return null}function d5(t){return ct(t)&&t.getExtension("EXT_conservative_depth")?{}:null}function m5(t){if(ct(t)){let e=t.getExtension("WEBGL_stencil_texturing");if(e)return{DEPTH_STENCIL_TEXTURE_MODE:e.DEPTH_STENCIL_TEXTURE_MODE_WEBGL,STENCIL_INDEX:e.STENCIL_INDEX_WEBGL}}return null}function p5(t){let e=t.getExtension("EXT_clip_control");return e?{LOWER_LEFT:e.LOWER_LEFT_EXT,UPPER_LEFT:e.UPPER_LEFT_EXT,NEGATIVE_ONE_TO_ONE:e.NEGATIVE_ONE_TO_ONE_EXT,ZERO_TO_ONE:e.ZERO_TO_ONE_EXT,CLIP_ORIGIN:e.CLIP_ORIGIN_EXT,CLIP_DEPTH_MODE:e.CLIP_DEPTH_MODE_EXT,clipControl:e.clipControlEXT.bind(e)}:null}function f5(t){if(!ct(t))return!1;if(typeof navigator<"u"){let e=window.navigator.userAgent.match(/Firefox\/([0-9]+)\./);return e?parseInt(e[1])>=85:!0}return!1}var kue=` +attribute vec4 aPosition; + +void main() { + gl_Position = aPosition; +}`,Mue=` +precision mediump float; +uniform vec4 uColor; +uniform sampler2D uTexture; + +void main() { + gl_FragColor = texture2D(uTexture, vec2(0.5, 0.5)) * uColor; +}`,Rue=new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]);function rj(t,e){let r=qx(t,{type:"vert",source:kue}),n=qx(t,{type:"frag",source:Mue});if(!r||!n)return!1;let o=GT(t);t.attachShader(o,r),t.attachShader(o,n),t.linkProgram(o),t.useProgram(o);let i=t.getAttribLocation(o,"aPosition"),a=t.getUniformLocation(o,"uColor");if(!a)return ht&&console.log("error getting 'uColor' uniform location"),!1;let s=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,s),t.bufferData(t.ARRAY_BUFFER,Rue,t.STATIC_DRAW),t.enableVertexAttribArray(i),t.vertexAttribPointer(i,2,t.FLOAT,!1,0,0);let l=t.createTexture(),c=new Uint8Array([255,255,255,255]);t.bindTexture(t.TEXTURE_2D,l),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,c);let u=t.createTexture();t.bindTexture(t.TEXTURE_2D,u),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,1,1,0,t.RGBA,e,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let d=t.createFramebuffer();if(t.bindFramebuffer(t.FRAMEBUFFER,d),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,u,0),t.checkFramebufferStatus(t.FRAMEBUFFER)!==t.FRAMEBUFFER_COMPLETE)return ht&&console.log(`error creating framebuffer for '${e}'`),!1;t.bindTexture(t.TEXTURE_2D,l),t.uniform4fv(a,[0,10,20,1]),t.drawArrays(t.TRIANGLES,0,6),t.bindTexture(t.TEXTURE_2D,u),t.bindFramebuffer(t.FRAMEBUFFER,null),t.clearColor(1,0,0,1),t.clear(t.COLOR_BUFFER_BIT),t.uniform4fv(a,[0,1/10,1/20,1]),t.drawArrays(t.TRIANGLES,0,6);let p=new Uint8Array(4);if(t.readPixels(0,0,1,1,t.RGBA,t.UNSIGNED_BYTE,p),p[0]!==0||p[1]<248||p[2]<248||p[3]<254)return ht&&console.log(`not able to actually render to '${e}' texture`),!1;if(e===t.FLOAT){t.bindFramebuffer(t.FRAMEBUFFER,d);let h=new Float32Array(4);t.readPixels(0,0,1,1,t.RGBA,t.FLOAT,h);let f=t.getError();if(f)return ht&&console.log(`error reading float pixels: '${VA(t,f)}'`),!1}return!0}var UA=bo();function Lue(t,e){switch(e){case"image-uint8":return t.TEXTURE_2D;case"image-float32":return t.TEXTURE_2D;case"image-float16":return t.TEXTURE_2D;case"image-depth":return t.TEXTURE_2D}if(ct(t))switch(e){case"image-int32":return t.TEXTURE_2D;case"volume-uint8":return t.TEXTURE_3D;case"volume-float32":return t.TEXTURE_3D;case"volume-float16":return t.TEXTURE_3D}throw new Error(`unknown texture kind '${e}'`)}function sj(t,e,r){switch(e){case"alpha":return ct(t)&&r==="float"?t.RED:ct(t)&&r==="int"?t.RED_INTEGER:t.ALPHA;case"rgb":return ct(t)&&r==="int"?t.RGB_INTEGER:t.RGB;case"rg":if(ct(t)&&r==="float")return t.RG;if(ct(t)&&r==="int")return t.RG_INTEGER;throw new Error('texture format "rg" requires webgl2 and type "float" or int"');case"rgba":return ct(t)&&r==="int"?t.RGBA_INTEGER:t.RGBA;case"depth":return t.DEPTH_COMPONENT}}function Bue(t,e,r){if(ct(t))switch(e){case"alpha":switch(r){case"ubyte":return t.ALPHA;case"float":return t.R32F;case"fp16":return t.R16F;case"int":return t.R32I}case"rg":switch(r){case"ubyte":return t.RG;case"float":return t.RG32F;case"fp16":return t.RG16F;case"int":return t.RG32I}case"rgb":switch(r){case"ubyte":return t.RGB;case"float":return t.RGB32F;case"fp16":return t.RGB16F;case"int":return t.RGB32I}case"rgba":switch(r){case"ubyte":return t.RGBA;case"float":return t.RGBA32F;case"fp16":return t.RGBA16F;case"int":return t.RGBA32I}case"depth":switch(r){case"ushort":return t.DEPTH_COMPONENT16;case"float":return t.DEPTH_COMPONENT32F}}return sj(t,e,r)}function lj(t,e,r,n,o){return Oue(t)*Fue(e)*r*n*(o||1)}function Oue(t){switch(t){case"alpha":return 1;case"rg":return 2;case"rgb":return 3;case"rgba":return 4;case"depth":return 4}}function Fue(t){switch(t){case"ubyte":return 1;case"ushort":return 2;case"float":return 4;case"fp16":return 2;case"int":return 4}}function Nue(t,e,r){switch(r){case"ubyte":return t.UNSIGNED_BYTE;case"ushort":return t.UNSIGNED_SHORT;case"float":return t.FLOAT;case"fp16":if(e.textureHalfFloat)return e.textureHalfFloat.HALF_FLOAT;throw new Error('extension "texture_half_float" unavailable');case"int":if(ct(t))return t.INT;throw new Error('texture type "int" requires webgl2')}}function nj(t,e){switch(e){case"nearest":return t.NEAREST;case"linear":return t.LINEAR}}function qT(t,e,r){switch(r){case"depth":return t.DEPTH_ATTACHMENT;case"stencil":return t.STENCIL_ATTACHMENT;case"color0":case 0:return t.COLOR_ATTACHMENT0}if(e.drawBuffers)switch(r){case"color1":case 1:return e.drawBuffers.COLOR_ATTACHMENT1;case"color2":case 2:return e.drawBuffers.COLOR_ATTACHMENT2;case"color3":case 3:return e.drawBuffers.COLOR_ATTACHMENT3;case"color4":case 4:return e.drawBuffers.COLOR_ATTACHMENT4;case"color5":case 5:return e.drawBuffers.COLOR_ATTACHMENT5;case"color6":case 6:return e.drawBuffers.COLOR_ATTACHMENT6;case"color7":case 7:return e.drawBuffers.COLOR_ATTACHMENT7}throw new Error("unknown texture attachment")}function oj(t){return typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement}function Vue(t,e,r){return e===r.TEXTURE_2D}function ij(t,e,r){return e===r.TEXTURE_3D}function aj(t){let e=t.createTexture();if(e===null)throw new Error("Could not create WebGL texture");return e}function jG(t,e,r,n,o,i){let a=UA(),s=aj(t);if(r.endsWith("float32")&&o!=="float"||r.endsWith("float16")&&o!=="fp16"||r.endsWith("uint8")&&o!=="ubyte"||r.endsWith("int32")&&o!=="int"||r.endsWith("depth")&&o!=="ushort"&&o!=="float")throw new Error(`texture kind '${r}' and type '${o}' are incompatible`);if(!e.depthTexture&&n==="depth")throw new Error("extension 'WEBGL_depth_texture' needed for 'depth' texture format");let l=Lue(t,r),c=nj(t,i),u=sj(t,n,o),d=Bue(t,n,o),m=Nue(t,e,o);function p(){t.bindTexture(l,s),t.texParameteri(l,t.TEXTURE_MAG_FILTER,c),t.texParameteri(l,t.TEXTURE_MIN_FILTER,c),t.texParameteri(l,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(l,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.bindTexture(l,null)}p();let h=0,f=0,b=0,v,x=!1,S=!1;function T(P,A,I){if(P===0||A===0||ct(t)&&l===t.TEXTURE_3D&&I===0)throw new Error("empty textures are not allowed");if(!(h===P&&f===A&&b===(I||0)))if(h=P,f=A,b=I||0,t.bindTexture(l,s),l===t.TEXTURE_2D)t.texImage2D(l,0,d,h,f,0,u,m,null);else if(ct(t)&&l===t.TEXTURE_3D&&b!==void 0)t.texImage3D(l,0,d,h,f,b,0,u,m,null);else throw new Error("unknown texture target")}T(1,1,ct(t)&&l===t.TEXTURE_3D?1:0);function E(P,A=!1){if(P.width===0||P.height===0||!oj(P)&&ct(t)&&ij(P,l,t)&&P.depth===0)throw new Error("empty textures are not allowed");if(t.bindTexture(l,s),t.pixelStorei(t.UNPACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,t.NONE),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),oj(P))h=P.width,f=P.height,t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!1),t.bindTexture(t.TEXTURE_2D,s),t.texImage2D(t.TEXTURE_2D,0,d,u,m,P);else if(Vue(P,l,t)){let I=P.filter?nj(t,P.filter):c;t.texParameteri(l,t.TEXTURE_MAG_FILTER,I),t.texParameteri(l,t.TEXTURE_MIN_FILTER,I),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!!P.flipY),A?t.texSubImage2D(l,0,0,0,P.width,P.height,u,m,P.array):(h=P.width,f=P.height,t.texImage2D(l,0,d,h,f,0,u,m,P.array))}else if(ct(t)&&ij(P,l,t))t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!1),A?t.texSubImage3D(l,0,0,0,0,P.width,P.height,P.depth,u,m,P.array):(h=P.width,f=P.height,b=P.depth,t.texImage3D(l,0,d,h,f,b,0,u,m,P.array));else throw new Error("unknown texture target");t.bindTexture(l,null),v=P}function _(){if(l!==t.TEXTURE_2D)throw new Error("mipmap only supported for 2d textures");if(ct(t)||nf(h)&&nf(f))t.bindTexture(l,s),t.texParameteri(l,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_LINEAR),t.generateMipmap(l),t.bindTexture(l,null),x=!0;else throw new Error("mipmap unsupported for non-power-of-two textures and webgl1")}function D(P,A,I){if(P.bind(),l===t.TEXTURE_2D)t.framebufferTexture2D(t.FRAMEBUFFER,qT(t,e,A),t.TEXTURE_2D,s,0);else if(ct(t)&&l===t.TEXTURE_3D){if(I===void 0)throw new Error("need `layer` to attach 3D texture");t.framebufferTextureLayer(t.FRAMEBUFFER,qT(t,e,A),s,0,I)}else throw new Error("unknown/unsupported texture target")}return{id:a,target:l,format:u,internalFormat:d,type:m,filter:c,getWidth:()=>h,getHeight:()=>f,getDepth:()=>b,getByteCount:()=>lj(n,o,h,f,b),define:T,load:E,mipmap:_,bind:P=>{t.activeTexture(t.TEXTURE0+P),t.bindTexture(l,s)},unbind:P=>{t.activeTexture(t.TEXTURE0+P),t.bindTexture(l,null)},attachFramebuffer:D,detachFramebuffer:(P,A)=>{if(P.bind(),l===t.TEXTURE_2D)t.framebufferTexture2D(t.FRAMEBUFFER,qT(t,e,A),t.TEXTURE_2D,null,0);else if(ct(t)&&l===t.TEXTURE_3D)t.framebufferTextureLayer(t.FRAMEBUFFER,qT(t,e,A),null,0,0);else throw new Error("unknown texture target")},reset:()=>{s=aj(t),p();let[P,A,I]=[h,f,b];h=0,f=0,b=0,T(P,A,I),v&&E(v),x&&_()},destroy:()=>{S||(t.deleteTexture(s),S=!0)}}}function GA(t,e,r){let{resources:n}=t,o=[];return Object.keys(e).forEach(i=>{let a=e[i];if(a.type==="texture"){let s=r[i];if(s)if(a.kind==="texture")o[o.length]=[i,s.ref.value];else{let l=n.texture(a.kind,a.format,a.dataType,a.filter);l.load(s.ref.value),o[o.length]=[i,l]}}}),o}function jA(t,e,r){let n=new Image;n.onload=function(){r.load(n),C.update(e,r)},n.src=t}function zue(t,e){switch(e){case"nx":return t.TEXTURE_CUBE_MAP_NEGATIVE_X;case"ny":return t.TEXTURE_CUBE_MAP_NEGATIVE_Y;case"nz":return t.TEXTURE_CUBE_MAP_NEGATIVE_Z;case"px":return t.TEXTURE_CUBE_MAP_POSITIVE_X;case"py":return t.TEXTURE_CUBE_MAP_POSITIVE_Y;case"pz":return t.TEXTURE_CUBE_MAP_POSITIVE_Z}}function HG(t,e,r,n){let o=t.TEXTURE_CUBE_MAP,i=t.LINEAR,a=t.RGBA,s=t.RGBA,l=t.UNSIGNED_BYTE,c=0,u=t.createTexture();t.bindTexture(o,u);let d=0;ro(e,(p,h)=>{if(!p)return;let f=0,b=zue(t,h),v=new Image;p instanceof File?v.src=URL.createObjectURL(p):af(p)?p.then(x=>{v.src=URL.createObjectURL(x)}):v.src=p,v.addEventListener("load",()=>{c===0&&(c=v.width),t.texImage2D(b,f,a,c,c,0,s,l,null),t.pixelStorei(t.UNPACK_ALIGNMENT,4),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,t.NONE),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!1),t.bindTexture(o,u),t.texImage2D(b,f,a,s,l,v),d+=1,d===6&&(m||(r?(t.texParameteri(o,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_LINEAR),t.generateMipmap(o)):t.texParameteri(o,t.TEXTURE_MIN_FILTER,i),t.texParameteri(o,t.TEXTURE_MAG_FILTER,i)),n?.(m))}),v.addEventListener("error",()=>{n?.(!0)})});let m=!1;return{id:UA(),target:o,format:s,internalFormat:a,type:l,filter:i,getWidth:()=>c,getHeight:()=>c,getDepth:()=>0,getByteCount:()=>lj("rgba","ubyte",c,c,0)*6*(r?2:1),define:()=>{},load:()=>{},mipmap:()=>{},bind:p=>{t.activeTexture(t.TEXTURE0+p),t.bindTexture(o,u)},unbind:p=>{t.activeTexture(t.TEXTURE0+p),t.bindTexture(o,null)},attachFramebuffer:()=>{},detachFramebuffer:()=>{},reset:()=>{},destroy:()=>{m||(t.deleteTexture(u),m=!0)}}}var cj=-1;function uj(t){return t.format===cj}function un(t){var e;let r=(e=t?.TEXTURE_2D)!==null&&e!==void 0?e:3553;return{id:UA(),target:r,format:cj,internalFormat:0,type:0,filter:0,getWidth:()=>0,getHeight:()=>0,getDepth:()=>0,getByteCount:()=>0,define:()=>{},load:()=>{},mipmap:()=>{},bind:n=>{t&&(t.activeTexture(t.TEXTURE0+n),t.bindTexture(r,null))},unbind:n=>{t&&(t.activeTexture(t.TEXTURE0+n),t.bindTexture(r,null))},attachFramebuffer:()=>{throw new Error("cannot attach null-texture to a framebuffer")},detachFramebuffer:()=>{throw new Error("cannot detach null-texture from a framebuffer")},reset:()=>{},destroy:()=>{}}}function uo(t,e,r,n){let o=Uue(t,e,r,n);return r.palette?(C.updateIfChanged(o.dUsePalette,!0),Gue(r.palette,o.tPalette)):C.updateIfChanged(o.dUsePalette,!1),o}function Uue(t,e,r,n){switch(r.granularity){case"uniform":return Hue(t,r.color,n);case"instance":return t.nonInstanceable?dj(t,r.color,n):que(t,r.color,n);case"group":return dj(t,r.color,n);case"groupInstance":return Wue(t,r.color,n);case"vertex":return Xue(e,r.color,n);case"vertexInstance":return Yue(e,r.color,n);case"volume":return mj(r.grid,"volume",n);case"volumeInstance":return mj(r.grid,"volumeInstance",n);case"direct":return Que(n)}}function Gue(t,e){let r=!0,n=e.ref.value;if(t.colors.length!==n.width||n.filter!==t.filter)r=!1;else{let a=n.array,s=0;for(let l of t.colors){let[c,u,d]=ce.toRgb(l);if(a[s++]!==c||a[s++]!==u||a[s++]!==d){r=!1;break}}}if(r)return;let o=new Uint8Array(t.colors.length*3),i=0;for(let a of t.colors){let[s,l,c]=ce.toRgb(a);o[i++]=s,o[i++]=l,o[i++]=c}C.update(e,{array:o,height:1,width:t.colors.length,filter:t.filter})}function jue(t,e){return e?(C.update(e.uColor,ce.toVec3Normalized(e.uColor.ref.value,t)),C.updateIfChanged(e.dColorType,"uniform"),e):{uColor:C.create(ce.toVec3Normalized(y(),t)),tColor:C.create({array:new Uint8Array(3),width:1,height:1}),tColorGrid:C.create(un()),tPalette:C.create({array:new Uint8Array(3),width:1,height:1}),uColorTexDim:C.create(ne.create(1,1)),uColorGridDim:C.create(y.create(1,1,1)),uColorGridTransform:C.create(at.create(0,0,0,1)),dColorType:C.create("uniform"),dUsePalette:C.create(!1)}}function Hue(t,e,r){return jue(e(Lo,!1),r)}function Wx(t,e,r){return r?(C.update(r.tColor,t),C.update(r.uColorTexDim,ne.create(t.width,t.height)),C.updateIfChanged(r.dColorType,e),r):{uColor:C.create(y()),tColor:C.create(t),tColorGrid:C.create(un()),tPalette:C.create({array:new Uint8Array(3),width:1,height:1}),uColorTexDim:C.create(ne.create(t.width,t.height)),uColorGridDim:C.create(y.create(1,1,1)),uColorGridTransform:C.create(at.create(0,0,0,1)),dColorType:C.create(e),dUsePalette:C.create(!1)}}function que(t,e,r){let{instanceCount:n}=t,o=Zr(Math.max(1,n),3,Uint8Array,r&&r.tColor.ref.value.array);for(t.reset();t.hasNext;){let{location:i,isSecondary:a,instanceIndex:s}=t.move();ce.toArray(e(i,a),o.array,s*3),t.skipInstance()}return Wx(o,"instance",r)}function dj(t,e,r){let{groupCount:n,hasLocation2:o}=t,i=Zr(Math.max(1,n*(o?2:1)),3,Uint8Array,r&&r.tColor.ref.value.array);t.reset();let a=o?6:3;for(;t.hasNext&&!t.isNextNewInstance;){let{location:s,location2:l,isSecondary:c,groupIndex:u}=t.move();ce.toArray(e(s,c),i.array,u*a),o&&ce.toArray(e(l,c),i.array,u*a+3)}return Wx(i,"group",r)}function Wue(t,e,r){let{groupCount:n,instanceCount:o,hasLocation2:i}=t,a=o*n*(i?2:1),s=Zr(Math.max(1,a),3,Uint8Array,r&&r.tColor.ref.value.array);t.reset();let l=i?6:3;for(;t.hasNext;){let{location:c,location2:u,isSecondary:d,index:m}=t.move();ce.toArray(e(c,d),s.array,m*l),i&&ce.toArray(e(u,d),s.array,m*l+3)}return Wx(s,"groupInstance",r)}function Xue(t,e,r){let{groupCount:n,stride:o}=t,i=Zr(Math.max(1,n),3,Uint8Array,r&&r.tColor.ref.value.array);for(t.reset(),t.voidInstances();t.hasNext&&!t.isNextNewInstance;){let{location:a,isSecondary:s,groupIndex:l}=t.move(),c=e(a,s);for(let u=0;u=e*16?i.transform.ref.value:new Float32Array(e*16);s.set(t),C.update(i.transform,s),C.updateIfChanged(i.uInstanceCount,e),C.updateIfChanged(i.instanceCount,e);let l=i.aTransform.ref.value.length>=e*16?i.aTransform.ref.value:new Float32Array(e*16);C.update(i.aTransform,l);let c=i.extraTransform.ref.value.length>=e*16?i.extraTransform.ref.value:new Float32Array(e*16);C.update(i.extraTransform,E0(c,e));let u=i.aInstance.ref.value.length>=e?i.aInstance.ref.value:new Float32Array(e);C.update(i.aInstance,Ri(u,e)),C.update(i.hasReflection,a)}else i={aTransform:C.create(new Float32Array(e*16)),matrix:C.create(W.identity()),transform:C.create(new Float32Array(t)),extraTransform:C.create(E0(new Float32Array(e*16),e)),uInstanceCount:C.create(e),instanceCount:C.create(e),aInstance:C.create(Ri(new Float32Array(e))),hasReflection:C.create(a),instanceGrid:C.create(pj())};return WA(i,r,n,o),i}var qA=new Float32Array(16);W.toArray(W.identity(),qA,0);function I0(t){return Xx(new Float32Array(qA),1,void 0,0,0,t)}function E0(t,e){for(let r=0;r0){let u=fj({instanceCount:a,instance:i,transform:o,invariantBoundingSphere:e},r,n);C.update(t.instanceGrid,u),C.update(t.aInstance,u.cellInstance),C.update(t.aTransform,u.cellTransform)}else C.update(t.aInstance,i),C.update(t.aTransform,o)}var ut={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflower:6591981,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,laserlemon:16777044,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrod:16448210,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,maroon2:8323072,maroon3:11546720,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,purple2:8323199,purple3:10494192,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},$ze=function(){let t=new Map;return Object.keys(ut).forEach(e=>{t.set(ut[e],e)}),t}();var zt={Atom:"Atom Property",Chain:"Chain Property",Residue:"Residue Property",Symmetry:"Symmetry",Validation:"Validation",Misc:"Miscellaneous"};var gj=ce(13421772),tde="Gives everything the same, uniform color.",ap={value:g.Color(gj),saturation:g.Numeric(0,{min:-6,max:6,step:.1}),lightness:g.Numeric(0,{min:-6,max:6,step:.1})};function rde(t){return ap}function ud(t,e){let r=li(e.value,gj);return r=ce.saturate(r,e.saturation),r=ce.lighten(r,e.lightness),{factory:ud,granularity:"uniform",color:()=>r,props:e,description:tde,legend:vs([["uniform",r]])}}var yj={name:"uniform",label:"Uniform",category:zt.Misc,factory:ud,getParams:rde,defaultValues:g.getDefaultValues(ap),isApplicable:t=>!0};var nde="Gives everything the same, uniform size.",vj={value:g.Numeric(1,{min:0,max:20,step:.1})};function ode(t){return vj}function XT(t,e){let r=e.value;return{factory:XT,granularity:"uniform",size:()=>r,props:e,description:nde}}var bj={name:"uniform",label:"Uniform",category:"",factory:XT,getParams:ode,defaultValues:g.getDefaultValues(vj),isApplicable:t=>!0};function Qo(t){return w(w({},Qo.Zero),t)}(function(t){t.Zero={metalness:0,roughness:0,bumpiness:0};function e(o,i,a){return i[a]=o.metalness*255,i[a+1]=o.roughness*255,i[a+2]=o.bumpiness*255,i}t.toArray=e;function r({metalness:o,roughness:i,bumpiness:a}){return`M ${o.toFixed(2)} | R ${i.toFixed(2)} | B ${a.toFixed(2)}`}t.toString=r;function n(o){return g.Group({metalness:g.Numeric(0,{min:0,max:1,step:.01}),roughness:g.Numeric(1,{min:0,max:1,step:.01}),bumpiness:g.Numeric(0,{min:0,max:1,step:.01})},U(w({},o),{presets:[[{metalness:0,roughness:1,bumpiness:0},"Matte"],[{metalness:0,roughness:.2,bumpiness:0},"Plastic"],[{metalness:0,roughness:.6,bumpiness:0},"Glossy"],[{metalness:1,roughness:.6,bumpiness:0},"Metallic"]]}))}t.getParam=n})(Qo||(Qo={}));function dd(){}(function(t){t.Type={none:0,plane:1,sphere:2,cube:3,cylinder:4,infiniteCone:5},t.Params={variant:g.Select("pixel",g.arrayToOptions(["instance","pixel"])),objects:g.ObjectList({type:g.Select("plane",g.objectToOptions(t.Type,l=>ic(l))),invert:g.Boolean(!1),position:g.Vec3(y()),rotation:g.Group({axis:g.Vec3(y.create(1,0,0)),angle:g.Numeric(0,{min:-180,max:180,step:1},{description:"Angle in Degrees"})},{isExpanded:!0}),scale:g.Vec3(y.create(1,1,1))},l=>ic(l.type))};function e(l){return{count:0,type:new Array(l).fill(1),invert:new Array(l).fill(!1),position:new Array(l*3).fill(0),rotation:new Array(l*4).fill(0),scale:new Array(l*3).fill(1)}}let r=xn(),n=xn(),o=y(),i=y();function a(l,c){let u=l.objects.length,{type:d,invert:m,position:p,rotation:h,scale:f}=c?.objects||e(u);for(let b=0;b1.2&&(n=2)),{resolution:r,stride:n}}}var ge;(function(t){t.MaterialCategory={category:"Material"},t.ShadingCategory={category:"Shading"},t.CullingLodCategory={category:"Culling & LOD"},t.CustomQualityParamInfo={category:"Custom Quality",hideIf:a=>typeof a.quality<"u"&&a.quality!=="custom"},t.Params={alpha:g.Numeric(1,{min:0,max:1,step:.01},{label:"Opacity",isEssential:!0,description:"How opaque/transparent the representation is rendered."}),quality:g.Select("auto",Qx,{isEssential:!0,description:"Visual/rendering quality of the representation."}),material:Qo.getParam(),clip:g.Group(dd.Params),emissive:g.Numeric(0,{min:0,max:1,step:.01}),instanceGranularity:g.Boolean(!1,{description:"Use instance granularity for marker, transparency, clipping, overpaint, substance data to save memory."}),lod:g.Vec3(y(),void 0,U(w({},t.CullingLodCategory),{description:"Level of detail.",fieldLabels:{x:"Min Distance",y:"Max Distance",z:"Overlap (Shader)"}})),cellSize:g.Numeric(200,{min:0,max:5e3,step:100},U(w({},t.CullingLodCategory),{description:"Instance grid cell size."})),batchSize:g.Numeric(2e3,{min:0,max:5e4,step:500},U(w({},t.CullingLodCategory),{description:"Instance grid batch size."}))};function e(a=ut.grey,s=1,l){l||(l=I0());let c=jt(1,l.instanceCount.ref.value,1,()=>Lo,!1,()=>!1),u={color:ud({},{value:a,lightness:0,saturation:0}),size:XT({},{value:s})};return{transform:l,locationIterator:c,theme:u}}t.createSimple=e;function r(a,s){let l=dd.getClip(a.clip);return{alpha:C.create(a.alpha),uAlpha:C.create(a.alpha),uVertexCount:C.create(s.vertexCount),uGroupCount:C.create(s.groupCount),drawCount:C.create(s.drawCount),uMetalness:C.create(a.material.metalness),uRoughness:C.create(a.material.roughness),uBumpiness:C.create(a.material.bumpiness),uEmissive:C.create(a.emissive),dLightCount:C.create(1),dColorMarker:C.create(!0),dClipObjectCount:C.create(l.objects.count),dClipVariant:C.create(l.variant),uClipObjectType:C.create(l.objects.type),uClipObjectInvert:C.create(l.objects.invert),uClipObjectPosition:C.create(l.objects.position),uClipObjectRotation:C.create(l.objects.rotation),uClipObjectScale:C.create(l.objects.scale),instanceGranularity:C.create(a.instanceGranularity),uLod:C.create(at.create(a.lod[0],a.lod[1],a.lod[2],0))}}t.createValues=r;function n(a,s){C.updateIfChanged(a.alpha,s.alpha),C.updateIfChanged(a.uMetalness,s.material.metalness),C.updateIfChanged(a.uRoughness,s.material.roughness),C.updateIfChanged(a.uBumpiness,s.material.bumpiness),C.updateIfChanged(a.uEmissive,s.emissive);let l=dd.getClip(s.clip);C.updateIfChanged(a.dClipObjectCount,l.objects.count),C.updateIfChanged(a.dClipVariant,l.variant),C.update(a.uClipObjectType,l.objects.type),C.update(a.uClipObjectInvert,l.objects.invert),C.update(a.uClipObjectPosition,l.objects.position),C.update(a.uClipObjectRotation,l.objects.rotation),C.update(a.uClipObjectScale,l.objects.scale),C.updateIfChanged(a.instanceGranularity,s.instanceGranularity),C.update(a.uLod,at.set(a.uLod.ref.value,s.lod[0],s.lod[1],s.lod[2],0))}t.updateValues=n;function o(a={}){let s=a.alpha===void 0?!0:a.alpha===1;return{disposed:!1,visible:!0,alphaFactor:1,pickable:!0,colorOnly:!1,opaque:s,writeDepth:s}}t.createRenderableState=o;function i(a,s){a.opaque=s.alpha*a.alphaFactor>=1,a.writeDepth=a.opaque}t.updateRenderableState=i})(ge||(ge={}));function Sj(t,e,r,n){for(let o=e;o0),C.updateIfChanged(r.dOverpaintType,e),r):{tOverpaint:C.create(n),uOverpaintTexDim:C.create(ne.create(n.width,n.height)),dOverpaint:C.create(t>0),tOverpaintGrid:C.create(un()),uOverpaintGridDim:C.create(y.create(1,1,1)),uOverpaintGridTransform:C.create(at.create(0,0,0,1)),dOverpaintType:C.create(e),uOverpaintStrength:C.create(1)}}var xj={array:new Uint8Array(4),width:1,height:1};function ga(t){return t?(C.update(t.tOverpaint,xj),C.update(t.uOverpaintTexDim,ne.create(1,1)),t):{tOverpaint:C.create(xj),uOverpaintTexDim:C.create(ne.create(1,1)),dOverpaint:C.create(!1),tOverpaintGrid:C.create(un()),uOverpaintGridDim:C.create(y.create(1,1,1)),uOverpaintGridTransform:C.create(at.create(0,0,0,1)),dOverpaintType:C.create("groupInstance"),uOverpaintStrength:C.create(1)}}function wj(t,e,r,n){for(let o=e;o0),C.updateIfChanged(r.transparencyAverage,YA(n.array,t)),C.updateIfChanged(r.dTransparencyType,e),r):{tTransparency:C.create(n),uTransparencyTexDim:C.create(ne.create(n.width,n.height)),dTransparency:C.create(t>0),transparencyAverage:C.create(0),tTransparencyGrid:C.create(un()),uTransparencyGridDim:C.create(y.create(1,1,1)),uTransparencyGridTransform:C.create(at.create(0,0,0,1)),dTransparencyType:C.create(e),uTransparencyStrength:C.create(1)}}var Tj={array:new Uint8Array(1),width:1,height:1};function ya(t){return t?(C.update(t.tTransparency,Tj),C.update(t.uTransparencyTexDim,ne.create(1,1)),t):{tTransparency:C.create(Tj),uTransparencyTexDim:C.create(ne.create(1,1)),dTransparency:C.create(!1),transparencyAverage:C.create(0),tTransparencyGrid:C.create(un()),uTransparencyGridDim:C.create(y.create(1,1,1)),uTransparencyGridTransform:C.create(at.create(0,0,0,1)),dTransparencyType:C.create("groupInstance"),uTransparencyStrength:C.create(1)}}function Ij(t,e,r,n){return t.fill(n,e,r),!0}function Dj(t,e,r){t.fill(0,e,r)}function Aj(t,e,r){let n=Zr(Math.max(1,t),1,Uint8Array,r&&r.tClipping.ref.value.array);return r?(C.update(r.tClipping,n),C.update(r.uClippingTexDim,ne.create(n.width,n.height)),C.updateIfChanged(r.dClipping,t>0),C.updateIfChanged(r.dClippingType,e),r):{tClipping:C.create(n),uClippingTexDim:C.create(ne.create(n.width,n.height)),dClipping:C.create(t>0),dClippingType:C.create(e)}}var Ej={array:new Uint8Array(1),width:1,height:1};function va(t){return t?(C.update(t.tClipping,Ej),C.update(t.uClippingTexDim,ne.create(1,1)),C.updateIfChanged(t.dClipping,!1),t):{tClipping:C.create(Ej),uClippingTexDim:C.create(ne.create(1,1)),dClipping:C.create(!1),dClippingType:C.create("groupInstance")}}function Mj(t,e,r,n){for(let o=e;o0),C.updateIfChanged(r.dSubstanceType,e),r):{tSubstance:C.create(n),uSubstanceTexDim:C.create(ne.create(n.width,n.height)),dSubstance:C.create(t>0),tSubstanceGrid:C.create(un()),uSubstanceGridDim:C.create(y.create(1,1,1)),uSubstanceGridTransform:C.create(at.create(0,0,0,1)),dSubstanceType:C.create(e),uSubstanceStrength:C.create(1)}}var kj={array:new Uint8Array(4),width:1,height:1};function ba(t){return t?(C.update(t.tSubstance,kj),C.update(t.uSubstanceTexDim,ne.create(1,1)),t):{tSubstance:C.create(kj),uSubstanceTexDim:C.create(ne.create(1,1)),dSubstance:C.create(!1),tSubstanceGrid:C.create(un()),uSubstanceGridDim:C.create(y.create(1,1,1)),uSubstanceGridTransform:C.create(at.create(0,0,0,1)),dSubstanceType:C.create("groupInstance"),uSubstanceStrength:C.create(1)}}function Bj(t,e,r,n){for(let o=e;o0),C.updateIfChanged(r.emissiveAverage,KA(n.array,t)),C.updateIfChanged(r.dEmissiveType,e),r):{tEmissive:C.create(n),uEmissiveTexDim:C.create(ne.create(n.width,n.height)),dEmissive:C.create(t>0),emissiveAverage:C.create(0),tEmissiveGrid:C.create(un()),uEmissiveGridDim:C.create(y.create(1,1,1)),uEmissiveGridTransform:C.create(at.create(0,0,0,1)),dEmissiveType:C.create(e),uEmissiveStrength:C.create(1)}}var Lj={array:new Uint8Array(1),width:1,height:1};function xa(t){return t?(C.update(t.tEmissive,Lj),C.update(t.uEmissiveTexDim,ne.create(1,1)),t):{tEmissive:C.create(Lj),uEmissiveTexDim:C.create(ne.create(1,1)),dEmissive:C.create(!1),emissiveAverage:C.create(0),tEmissiveGrid:C.create(un()),uEmissiveGridDim:C.create(y.create(1,1,1)),uEmissiveGridTransform:C.create(at.create(0,0,0,1)),dEmissiveType:C.create("groupInstance"),uEmissiveStrength:C.create(1)}}var Be;(function(t){function e(k,M,R,B,F,G,V){return V?i(k,M,R,B,F,G,V):o(k,M,R,B,F,G)}t.create=e;function r(k){let M=k?k.vertexBuffer.ref.value:new Float32Array(0),R=k?k.indexBuffer.ref.value:new Uint32Array(0),B=k?k.normalBuffer.ref.value:new Float32Array(0),F=k?k.groupBuffer.ref.value:new Float32Array(0);return e(M,R,B,F,0,0,k)}t.createEmpty=r;function n(k){return Ai([k.vertexCount,k.triangleCount,k.vertexBuffer.ref.version,k.indexBuffer.ref.version,k.normalBuffer.ref.version,k.groupBuffer.ref.version])}function o(k,M,R,B,F,G){let V=te(),H,Q=-1,L=-1,Y={kind:"mesh",vertexCount:F,triangleCount:G,vertexBuffer:C.create(k),indexBuffer:C.create(M),normalBuffer:C.create(R),groupBuffer:C.create(B),varyingGroup:C.create(!1),get boundingSphere(){let j=n(Y);if(j!==Q){let O=Pl(Y.vertexBuffer.ref.value,Y.vertexCount,1);te.copy(V,O),Q=j}return V},get groupMapping(){return Y.groupBuffer.ref.version!==L&&(H=Zc(Y.groupBuffer.ref.value,Y.vertexCount),L=Y.groupBuffer.ref.version),H},setBoundingSphere(j){te.copy(V,j),Q=n(Y)},meta:{}};return Y}function i(k,M,R,B,F,G,V){return V.vertexCount=F,V.triangleCount=G,C.update(V.vertexBuffer,k),C.update(V.indexBuffer,M),C.update(V.normalBuffer,R),C.update(V.groupBuffer,B),V}function a(k){let{vertexCount:M,triangleCount:R}=k,B=k.vertexBuffer.ref.value,F=k.indexBuffer.ref.value,G=k.normalBuffer.ref.value.length>=M*3?k.normalBuffer.ref.value:new Float32Array(M*3);G===k.normalBuffer.ref.value&&G.fill(0,0,M*3),OT(B,F,G,M,R),C.update(k.normalBuffer,G)}t.computeNormals=a;function s(k,M=3){let R=k.vertexBuffer.ref.value,B=new Map,F=(H,Q)=>`${H[0].toFixed(Q)}|${H[1].toFixed(Q)}|${H[2].toFixed(Q)}`,G=0,V=y();for(let H=0,Q=k.vertexCount;H{let H=Lx(G,V),Q=B.get(H)||0;B.set(H,Q+1)};for(let G=0;G{B===1&&(TT(R,F),M.add(R[0]),M.add(R[1]))}),M}function f(k,M,R){let B=new Map,F=(G,V)=>{B.has(G)?Mo(B.get(G),V):B.set(G,[V])};return M.forEach(G=>{let V=k[G];for(let H of V)M.has(H)&&R.get(Lx(G,H))===1&&F(G,H)}),B}function b(k,M){let{indexBuffer:R,triangleCount:B}=k,F=R.ref.value,G=he.create(Uint32Array,3,1024,B),V=0;for(let Q=0;QR.get(Le).length<2).map(Le=>{let Qe=R.get(Le);return y.fromArray($,L,Le*3),y.fromArray(ae,L,Qe[0]*3),y.fromArray(Z,L,Qe[1]*3),y.sub(Me,ae,$),y.sub(be,Z,$),[Le,y.angle(Me,be)]});oe.sort(([,Le],[,Qe])=>Le-Qe);for(let[Le,Qe]of oe){if(Zt.has(Le)||Qe>Nr)continue;let Ue=R.get(Le);if(M[Ue[0]].includes(Ue[1])&&!(!((F=R.get(Ue[0]))===null||F===void 0)&&F.includes(Ue[1]))||(y.fromArray($,L,Le*3),y.fromArray(ae,L,Ue[0]*3),y.fromArray(Z,L,Ue[1]*3),y.sub(Me,ae,$),y.sub(be,Z,$),y.add(je,Me,be),y.squaredDistance($,ae)>=B))continue;let Ke=!1;for(let Ve of M[Le])if(!Ue.includes(Ve)&&(y.fromArray(se,L,Ve*3),y.sub(_e,se,$),y.dot(je,_e)<0)){Ke=!0;break}Ke&&(y.fromArray(gt,j,Le*3),y.triangleNormal(fr,$,ae,Z),y.dot(fr,gt)>0?he.add3(O,Le,Ue[0],Ue[1]):he.add3(O,Ue[1],Ue[0],Le),Zt.add(Le),Zt.add(Ue[0]),Zt.add(Ue[1]),J+=1)}let De=he.compact(O);return k.triangleCount=J,C.update(V,De),k}function x(k,M,R){let{iterations:B,lambda:F}=R,G=y(),V=y(),H=y(),Q=y(),L=-F,Y=new Float32Array(k.vertexBuffer.ref.value.length),j=O=>{let J=k.vertexBuffer.ref.value;Y.set(J),M.forEach((ae,Z)=>{if(ae.length!==2)return;y.fromArray(G,J,Z*3),y.fromArray(V,J,ae[0]*3),y.fromArray(H,J,ae[1]*3);let se=1/y.distance(G,V),Me=1/y.distance(G,H);y.scale(V,V,se),y.scale(H,H,Me),y.add(Q,V,H),y.scale(Q,Q,1/(se+Me)),y.sub(Q,Q,G),y.scale(Q,Q,O),y.add(Q,G,Q),y.toArray(Q,Y,Z*3)});let $=k.vertexBuffer.ref.value;C.update(k.vertexBuffer,Y),Y=$};for(let O=0;O(O<0?(y.fromArray(G,H,j*3),y.fromArray(V,Q,j*3)):(y.transformMat4Offset(G,H,L,0,j*3,O*16),y.transformDirectionOffset(V,Q,L,0,j*3,O*16)),F))}function E(k,M,R,B,F){let{instanceCount:G,groupCount:V}=R,H=T(k,M),Q=uo(R,H,B.color),L=F.instanceGranularity?jr(G,"instance"):jr(G*V,"groupInstance"),Y=ga(),j=ya(),O=xa(),J=ba(),$=va(),ae={drawCount:k.triangleCount*3,vertexCount:k.vertexCount,groupCount:V,instanceCount:G},Z=te.clone(k.boundingSphere),se=Hn(Z,M.aTransform.ref.value,G,0);return U(w(w(w(w(w(w(w(w(w({dGeometryType:C.create("mesh"),aPosition:k.vertexBuffer,aNormal:k.normalBuffer,aGroup:k.groupBuffer,elements:k.indexBuffer,dVaryingGroup:k.varyingGroup,boundingSphere:C.create(se),invariantBoundingSphere:C.create(Z),uInvariantBoundingSphere:C.create(at.ofSphere(Z))},Q),L),Y),j),O),J),$),M),ge.createValues(F,ae)),{uDoubleSided:C.create(F.doubleSided),dFlatShaded:C.create(F.flatShaded),dFlipSided:C.create(F.flipSided),dIgnoreLight:C.create(F.ignoreLight),dXrayShaded:C.create(F.xrayShaded==="inverted"?"inverted":F.xrayShaded===!0?"on":"off"),dTransparentBackfaces:C.create(F.transparentBackfaces),uBumpFrequency:C.create(F.bumpFrequency),uBumpAmplitude:C.create(F.bumpAmplitude),meta:C.create(k.meta)})}function _(k,M,R,B,F){let G=ge.createSimple(R,B,F),V=w(w({},g.getDefaultValues(t.Params)),M);return E(k,G.transform,G.locationIterator,G.theme,V)}function D(k,M){ge.updateValues(k,M),C.updateIfChanged(k.uDoubleSided,M.doubleSided),C.updateIfChanged(k.dFlatShaded,M.flatShaded),C.updateIfChanged(k.dFlipSided,M.flipSided),C.updateIfChanged(k.dIgnoreLight,M.ignoreLight),C.updateIfChanged(k.dXrayShaded,M.xrayShaded==="inverted"?"inverted":M.xrayShaded===!0?"on":"off"),C.updateIfChanged(k.dTransparentBackfaces,M.transparentBackfaces),C.updateIfChanged(k.uBumpFrequency,M.bumpFrequency),C.updateIfChanged(k.uBumpAmplitude,M.bumpAmplitude)}function P(k,M){let R=te.clone(M.boundingSphere),B=Hn(R,k.aTransform.ref.value,k.instanceCount.ref.value,0);te.equals(B,k.boundingSphere.ref.value)||C.update(k.boundingSphere,B),te.equals(R,k.invariantBoundingSphere.ref.value)||(C.update(k.invariantBoundingSphere,R),C.update(k.uInvariantBoundingSphere,at.fromSphere(k.uInvariantBoundingSphere.ref.value,R)))}function A(k){let M=ge.createRenderableState(k);return I(M,k),M}function I(k,M){ge.updateRenderableState(k,M),k.opaque=k.opaque&&!M.xrayShaded,k.writeDepth=k.opaque}})(Be||(Be={}));function vf(t,e,r){return t=Wo(Math.round(t),0,16777215)+1,e[r+2]=t%256,t=Math.floor(t/256),e[r+1]=t%256,t=Math.floor(t/256),e[r]=t%256,e}function Ig(t,e,r){return Math.floor(t)*256*256+Math.floor(e)*256+Math.floor(r)-1}var QT=255/256,$A=y.create(256*256*256,256*256,256),sde=at.create(QT/$A[0],QT/$A[1],QT/$A[2],QT/1),Nj=at();function Vj(t,e,r,n){return at.set(Nj,t/255,e/255,r/255,n/255),at.dot(Nj,sde)}function Sa(t,e,r){switch(eo.getGranularity(t,e.granularity)){case"uniform":return dde(t,e.size,r);case"group":return pde(t,e.size,r);case"groupInstance":return fde(t,e.size,r);case"instance":return mde(t,e.size,r)}}var KT=100;function bf(t){switch(t.dSizeType.ref.value){case"uniform":return t.uSize.ref.value;case"instance":case"group":case"groupInstance":let r=0,n=t.tSize.ref.value.array;for(let o=0,i=n.length;o(P<0?y.fromArray(S,T,D*3):y.transformMat4Offset(S,T,E,0,D*3,P*16),x))}function l(h,f,b,v,x){let{instanceCount:S,groupCount:T}=b,E=s(h,f),_=uo(b,E,v.color),D=Sa(b,v.size),P=x.instanceGranularity?jr(S,"instance"):jr(S*T,"groupInstance"),A=ga(),I=ya(),k=xa(),M=ba(),R=va(),B={drawCount:h.pointCount,vertexCount:h.pointCount,groupCount:T,instanceCount:S},F=te.clone(h.boundingSphere),G=Hn(F,f.aTransform.ref.value,S,0);return U(w(w(w(w(w(w(w(w(w(w({dGeometryType:C.create("points"),aPosition:h.centerBuffer,aGroup:h.groupBuffer,boundingSphere:C.create(G),invariantBoundingSphere:C.create(F),uInvariantBoundingSphere:C.create(at.ofSphere(F))},_),D),P),A),I),k),M),R),f),ge.createValues(x,B)),{uSizeFactor:C.create(x.sizeFactor),dPointSizeAttenuation:C.create(x.pointSizeAttenuation),dPointStyle:C.create(x.pointStyle)})}function c(h,f,b,v,x){let S=ge.createSimple(b,v,x),T=w(w({},g.getDefaultValues(t.Params)),f);return l(h,S.transform,S.locationIterator,S.theme,T)}function u(h,f){ge.updateValues(h,f),C.updateIfChanged(h.uSizeFactor,f.sizeFactor),C.updateIfChanged(h.dPointSizeAttenuation,f.pointSizeAttenuation),C.updateIfChanged(h.dPointStyle,f.pointStyle)}function d(h,f){let b=te.clone(f.boundingSphere),v=Hn(b,h.aTransform.ref.value,h.instanceCount.ref.value,0);te.equals(v,h.boundingSphere.ref.value)||C.update(h.boundingSphere,v),te.equals(b,h.invariantBoundingSphere.ref.value)||(C.update(h.invariantBoundingSphere,b),C.update(h.uInvariantBoundingSphere,at.fromSphere(h.uInvariantBoundingSphere.ref.value,b)))}function m(h){let f=ge.createRenderableState(h);return p(f,h),f}function p(h,f){ge.updateRenderableState(h,f),h.opaque=h.opaque&&f.pointStyle!=="fuzzy",h.writeDepth=h.opaque}})(Il||(Il={}));function JA(t,e,r,n,o,i,a){for(let s=0;sn&&(this.currentX=0,this.currentY+=this.scratchH),this.currentY+this.scratchH>o)return console.warn("canvas to small"),this.placeholder;this.mapped[e]={x:this.currentX,y:this.currentY,w:this.scratchW,h:this.scratchH,nw:this.scratchW/this.lineHeight,nh:this.scratchH/this.lineHeight};for(let a=0;a(D<0?y.fromArray(x,S,_*3):y.transformMat4Offset(x,S,T,0,_*3,D*16),v))}function s(p,h,f,b,v){let{instanceCount:x,groupCount:S}=f,T=a(p,h),E=uo(f,T,b.color),_=Sa(f,b.size),D=v.instanceGranularity?jr(x,"instance"):jr(x*S,"groupInstance"),P=ga(),A=ya(),I=xa(),k=ba(),M=va(),R={drawCount:p.charCount*2*3,vertexCount:p.charCount*4,groupCount:S,instanceCount:x},B=jj(p.mappingBuffer.ref.value,p.depthBuffer.ref.value,p.charCount,bf(_)),F=te.expand(te(),p.boundingSphere,B),G=Hn(F,h.aTransform.ref.value,x,0);return U(w(U(w(w(w(w(w(w(w(w(w({dGeometryType:C.create("text"),aPosition:p.centerBuffer,aMapping:p.mappingBuffer,aDepth:p.depthBuffer,aGroup:p.groupBuffer,elements:p.indexBuffer,boundingSphere:C.create(G),invariantBoundingSphere:C.create(F),uInvariantBoundingSphere:C.create(at.ofSphere(F))},E),_),D),P),A),I),k),M),h),{aTexCoord:p.tcoordBuffer,tFont:p.fontTexture,padding:C.create(B)}),ge.createValues(v,R)),{uSizeFactor:C.create(v.sizeFactor),uBorderWidth:C.create(Wo(v.borderWidth,0,.5)),uBorderColor:C.create(ce.toArrayNormalized(v.borderColor,y.zero(),0)),uOffsetX:C.create(v.offsetX),uOffsetY:C.create(v.offsetY),uOffsetZ:C.create(v.offsetZ),uBackgroundColor:C.create(ce.toArrayNormalized(v.backgroundColor,y.zero(),0)),uBackgroundOpacity:C.create(v.backgroundOpacity)})}function l(p,h,f,b,v){let x=ge.createSimple(f,b,v),S=w(w({},g.getDefaultValues(t.Params)),h);return s(p,x.transform,x.locationIterator,x.theme,S)}function c(p,h){ge.updateValues(p,h),C.updateIfChanged(p.uSizeFactor,h.sizeFactor),C.updateIfChanged(p.uBorderWidth,h.borderWidth),ce.fromNormalizedArray(p.uBorderColor.ref.value,0)!==h.borderColor&&(ce.toArrayNormalized(h.borderColor,p.uBorderColor.ref.value,0),C.update(p.uBorderColor,p.uBorderColor.ref.value)),C.updateIfChanged(p.uOffsetX,h.offsetX),C.updateIfChanged(p.uOffsetY,h.offsetY),C.updateIfChanged(p.uOffsetZ,h.offsetZ),ce.fromNormalizedArray(p.uBackgroundColor.ref.value,0)!==h.backgroundColor&&(ce.toArrayNormalized(h.backgroundColor,p.uBackgroundColor.ref.value,0),C.update(p.uBackgroundColor,p.uBackgroundColor.ref.value)),C.updateIfChanged(p.uBackgroundOpacity,h.backgroundOpacity)}function u(p,h){let f=jj(p.aMapping.ref.value,p.aDepth.ref.value,h.charCount,bf(p)),b=te.expand(te(),h.boundingSphere,f),v=Hn(b,p.aTransform.ref.value,p.instanceCount.ref.value,0);te.equals(v,p.boundingSphere.ref.value)||C.update(p.boundingSphere,v),te.equals(b,p.invariantBoundingSphere.ref.value)||(C.update(p.invariantBoundingSphere,b),C.update(p.uInvariantBoundingSphere,at.fromSphere(p.uInvariantBoundingSphere.ref.value,b))),C.update(p.padding,f)}function d(p){let h=ge.createRenderableState(p);return m(h,p),h}function m(p,h){ge.updateRenderableState(p,h),p.pickable=!1,p.opaque=!1,p.writeDepth=!0}})(Bo||(Bo={}));function jj(t,e,r,n){let o=0,i=0;for(let a=0,s=r*4;ao&&(o=c);let u=Math.abs(t[l+1]);u>o&&(o=u);let d=Math.abs(e[a]);d>i&&(i=d)}return Math.max(i,n+n*o)}var el=y(),md=y(),Kx=y(),Hj=he.add,$T=he.add3,vi;(function(t){function e(r=2048,n=1024,o){let i=he.create(Float32Array,1,n,o?o.groupBuffer.ref.value:r),a=he.create(Float32Array,3,n,o?o.startBuffer.ref.value:r),s=he.create(Float32Array,3,n,o?o.endBuffer.ref.value:r),l=(d,m,p,h,f,b,v)=>{for(let x=0;x<4;++x)$T(a,d,m,p),$T(s,h,f,b),Hj(i,v)},c=(d,m,p)=>{for(let h=0;h<4;++h)$T(a,d[0],d[1],d[2]),$T(s,m[0],m[1],m[2]),Hj(i,p)},u=(d,m,p,h)=>{let f=y.distance(d,m),b=p%2!==0,v=Math.floor((p+1)/2),x=f/(p+.5);y.setMagnitude(Kx,y.sub(Kx,m,d),x),y.copy(el,d);for(let S=0;S{let f=y.distance(d,m);u(d,m,f/p,h)},addCage:(d,m,p)=>{let{vertices:h,edges:f}=m;for(let b=0,v=f.length;b{let d=i.elementCount/4,m=he.compact(i,!0),p=he.compact(a,!0),h=he.compact(s,!0),f=o&&d<=o.lineCount?o.mappingBuffer.ref.value:new Float32Array(d*8),b=o&&d<=o.lineCount?o.indexBuffer.ref.value:new Uint32Array(d*6);return(!o||d>o.lineCount)&&yde(d,f,b),Sr.create(f,b,m,p,h,d,o)}}}t.create=e})(vi||(vi={}));function yde(t,e,r){for(let n=0;nS.lineCount&&(C.update(S.mappingBuffer,p),C.update(S.indexBuffer,h)),S.lineCount=x,C.update(S.groupBuffer,f),C.update(S.startBuffer,b),C.update(S.endBuffer,v),S}function s(p,h){let f=p.startBuffer.ref.value;$c(h,f,0,p.lineCount*4),C.update(p.startBuffer,f);let b=p.endBuffer.ref.value;$c(h,b,0,p.lineCount*4),C.update(p.endBuffer,b)}t.transform=s,t.Params=U(w({},ge.Params),{sizeFactor:g.Numeric(2,{min:0,max:10,step:.1}),lineSizeAttenuation:g.Boolean(!1)}),t.Utils={Params:t.Params,createEmpty:r,createValues:c,createValuesSimple:u,updateValues:d,updateBoundingSphere:m,createRenderableState:ge.createRenderableState,updateRenderableState:ge.updateRenderableState,createPositionIterator:l};function l(p,h){let f=p.lineCount*4,b=h.instanceCount.ref.value,v=Ss(),x=v.position,S=p.startBuffer.ref.value,T=p.endBuffer.ref.value,E=h.aTransform.ref.value;return jt(f,b,2,(D,P)=>{let A=D%4===0?S:T;return P<0?y.fromArray(x,A,D*3):y.transformMat4Offset(x,A,E,0,D*3,P*16),v})}function c(p,h,f,b,v){let{instanceCount:x,groupCount:S}=f,T=l(p,h),E=uo(f,T,b.color),_=Sa(f,b.size),D=v.instanceGranularity?jr(x,"instance"):jr(x*S,"groupInstance"),P=ga(),A=ya(),I=xa(),k=ba(),M=va(),R={drawCount:p.lineCount*2*3,vertexCount:p.lineCount*4,groupCount:S,instanceCount:x},B=te.clone(p.boundingSphere),F=Hn(B,h.aTransform.ref.value,x,0);return U(w(w(w(w(w(w(w(w(w(w({dGeometryType:C.create("lines"),aMapping:p.mappingBuffer,aGroup:p.groupBuffer,aStart:p.startBuffer,aEnd:p.endBuffer,elements:p.indexBuffer,boundingSphere:C.create(F),invariantBoundingSphere:C.create(B),uInvariantBoundingSphere:C.create(at.ofSphere(B))},E),_),D),P),A),I),k),M),h),ge.createValues(v,R)),{uSizeFactor:C.create(v.sizeFactor),dLineSizeAttenuation:C.create(v.lineSizeAttenuation),uDoubleSided:C.create(!0),dFlipSided:C.create(!1)})}function u(p,h,f,b,v){let x=ge.createSimple(f,b,v),S=w(w({},g.getDefaultValues(t.Params)),h);return c(p,x.transform,x.locationIterator,x.theme,S)}function d(p,h){ge.updateValues(p,h),C.updateIfChanged(p.uSizeFactor,h.sizeFactor),C.updateIfChanged(p.dLineSizeAttenuation,h.lineSizeAttenuation)}function m(p,h){let f=te.clone(h.boundingSphere),b=Hn(f,p.aTransform.ref.value,p.instanceCount.ref.value,0);te.equals(b,p.boundingSphere.ref.value)||C.update(p.boundingSphere,b),te.equals(f,p.invariantBoundingSphere.ref.value)||(C.update(p.invariantBoundingSphere,f),C.update(p.uInvariantBoundingSphere,at.fromSphere(p.uInvariantBoundingSphere.ref.value,f)))}})(Sr||(Sr={}));var qj=y(),Wj=y(),Xj=y();function Dg(t,e){let r=e.length,n=pd(r/3);for(let o=0;o{y.toArray(s,r,i),y.toArray(l,r,i+3),y.toArray(c,r,i+6),y.triangleNormal(ZT,s,l,c);for(let u=0;u<3;++u)y.toArray(ZT,n,i+3*u),o[a+u]=i/3+u;i+=9,a+=3},addQuad:(s,l,c,u)=>{y.toArray(s,r,i),y.toArray(l,r,i+3),y.toArray(c,r,i+6),y.toArray(u,r,i+9),y.triangleNormal(ZT,s,l,c);for(let m=0;m<4;++m)y.toArray(ZT,n,i+3*m);let d=i/3;o[a]=d,o[a+1]=d+1,o[a+2]=d+2,o[a+3]=d+2,o[a+4]=d+3,o[a+5]=d,i+=12,a+=6},getPrimitive:()=>({vertices:r,normals:n,indices:o})}}var D0=y(),vde=Dt();function A0(t,e){let{vertices:r,normals:n}=t,o=Dt.directionTransform(vde,e);for(let i=0,a=r.length;i({x:e[0],alpha:e[1]}))}function uk(t,e){let r=[{x:0,alpha:0},{x:0,alpha:0},...t,{x:1,alpha:0},{x:1,alpha:0}],n=256,o=e?e.ref.value.array:new Uint8Array(n),i=0,a,s,l,c,u,d,m=t.length+1;for(let h=0;h=e?l=e-1:l<0&&(l=0),i[l]++}return{min:r,max:n,binWidth:o,counts:i}}var Sn;(function(t){t.One={transform:{kind:"matrix",matrix:W.identity()},cells:er.create(er.Space([1,1,1],[0,1,2]),er.Data1([0])),stats:{min:0,max:0,mean:0,sigma:0}};let e=W.zero(),r=W.zero();function n(l){if(l.transform.kind==="matrix")return W.copy(W(),l.transform.matrix);if(l.transform.kind==="spacegroup"){let{cells:{space:c}}=l,u=W.fromScaling(e,y.div(y.zero(),qe.size(y.zero(),l.transform.fractionalBox),y.ofArray(c.dimensions))),d=W.fromTranslation(r,l.transform.fractionalBox.min);return W.mul3(W.zero(),l.transform.cell.fromFractional,d,u)}return W.identity()}t.getGridToCartesianTransform=n;function o(l,c){return l===c}t.areEquivalent=o;function i(l){return l.cells.data.length===0}t.isEmpty=i;function a(l,c){c||(c=te());let u=l.cells.space.dimensions,d=t.getGridToCartesianTransform(l);return te.fromDimensionsAndTransform(c,u,d)}t.getBoundingSphere=a;function s(l,c){let u=l._historams;return u||(u=l._historams={}),u[c]||(u[c]=$j(l.cells.data,c,{min:l.stats.min,max:l.stats.max})),u[c]}t.getHistogram=s})(Sn||(Sn={}));function Zj(t,e){return ie.create("Create Volume",()=>N(this,null,function*(){let{header:r,values:n}=t,o=er.Space(r.dim,[0,1,2],Float64Array),i;if(r.dataSetIds.length===0)i=n;else{let[c,u,d]=r.dim,m=(e?.dataIndex||0)+1,p=0,h=0;i=new Float64Array(c*u*d);for(let f=0;fN(this,null,function*(){let{volume_data_3d_info:n,volume_data_3d:o}=t,i=pa.create(n.spacegroup_number.value(0),y.ofArray(n.spacegroup_cell_size.value(0)),y.scale(y.zero(),y.ofArray(n.spacegroup_cell_angles.value(0)),Math.PI/180)),a=n.axis_order.value(0),s=er.convertToCanonicalAxisIndicesFastToSlow(a),l=s(n.sample_count.value(0)),c=er.Space(l,er.invertAxisOrder(a),Float32Array),u=er.create(c,er.Data1(o.values.toArray({array:Float32Array}))),d=y.ofArray(s(n.origin.value(0))),m=y.ofArray(s(n.dimensions.value(0)));return{label:e?.label,entryId:e?.entryId,grid:{transform:{kind:"spacegroup",cell:i,fractionalBox:qe.create(d,y.add(y.zero(),d,m))},cells:u,stats:{min:n.min_sampled.value(0),max:n.max_sampled.value(0),mean:n.mean_sampled.value(0),sigma:n.sigma_sampled.value(0)}},sourceData:Zx.create(t),customProperties:new Tl,_propertyData:Object.create(null)}}))}var Zx;(function(t){function e(n){return n?.kind==="dscif"}t.is=e;function r(n){return{kind:"dscif",name:n._name,data:n}}t.create=r})(Zx||(Zx={}));var xe;(function(t){function e(v){var x,S,T,E;return((E=(T=(S=(x=v?.grid)===null||x===void 0?void 0:x.cells)===null||S===void 0?void 0:S.space)===null||T===void 0?void 0:T.dimensions)===null||E===void 0?void 0:E.length)&&v?.sourceData&&v?.customProperties&&v?._propertyData}t.is=e;let r;(function(v){function x(I,k,M){return bs(D(I,M).absoluteValue,D(k,M).absoluteValue,M.sigma/100)}v.areSame=x;function S(I){return{kind:"absolute",absoluteValue:I}}v.absolute=S;function T(I){return{kind:"relative",relativeValue:I}}v.relative=T;function E(I,k){return k*I.sigma+I.mean}v.calcAbsolute=E;function _(I,k){return I.sigma===0?0:(k-I.mean)/I.sigma}v.calcRelative=_;function D(I,k){return I.kind==="absolute"?I:{kind:"absolute",absoluteValue:v.calcAbsolute(k,I.relativeValue)}}v.toAbsolute=D;function P(I,k){return I.kind==="relative"?I:{kind:"relative",relativeValue:v.calcRelative(k,I.absoluteValue)}}v.toRelative=P;function A(I){return I.kind==="relative"?`${I.relativeValue.toFixed(2)} \u03C3`:`${I.absoluteValue.toPrecision(4)}`}v.toString=A})(r=t.IsoValue||(t.IsoValue={}));function n(v,x,S){if(S==="relative")return r.relative(x);let T=r.absolute(x);if(Zx.is(v.sourceData)){let E={min:v.sourceData.data.volume_data_3d_info.min_source.value(0),max:v.sourceData.data.volume_data_3d_info.max_source.value(0),mean:v.sourceData.data.volume_data_3d_info.mean_source.value(0),sigma:v.sourceData.data.volume_data_3d_info.sigma_source.value(0)};return t.IsoValue.toRelative(T,E)}return T}t.adjustedIsoValue=n;let o={min:-1,max:1,mean:0,sigma:.1};function i(v,x){let S=x||o,{min:T,max:E,mean:_,sigma:D}=S,P=(T-_)/D,A=(E-_)/D,I=v;return v.kind==="absolute"?v.absoluteValueE&&(I=t.IsoValue.absolute(E)):v.relativeValueA&&(I=t.IsoValue.relative(A)),g.Conditioned(I,{absolute:g.Converted(k=>t.IsoValue.toAbsolute(k,Sn.One.stats).absoluteValue,k=>t.IsoValue.absolute(k),g.Numeric(_,{min:T,max:E,step:Ux(D/100,2)},{immediateUpdate:!0})),relative:g.Converted(k=>t.IsoValue.toRelative(k,Sn.One.stats).relativeValue,k=>t.IsoValue.relative(k),g.Numeric(Math.min(1,A),{min:P,max:A,step:Ux(Math.round((E-T)/D)/100,2)},{immediateUpdate:!0}))},k=>k.kind==="absolute"?"absolute":"relative",(k,M)=>M==="absolute"?t.IsoValue.toAbsolute(k,S):t.IsoValue.toRelative(k,S),{isEssential:!0})}t.createIsoValueParam=i,t.IsoValueParam=i(t.IsoValue.relative(2)),t.One={label:"",grid:Sn.One,sourceData:{kind:"",name:"",data:{}},customProperties:new Tl,_propertyData:Object.create(null)};function a(v,x){return Sn.areEquivalent(v.grid,x.grid)}t.areEquivalent=a;function s(v){return Sn.isEmpty(v.grid)}t.isEmpty=s;function l(v){return $x.is(v.sourceData)?v.sourceData.data.header.orbitals:!1}t.isOrbitals=l;function c(v){return{kind:"volume-loci",volume:v}}t.Loci=c;function u(v){return!!v&&v.kind==="volume-loci"}t.isLoci=u;function d(v,x){return v.volume===x.volume}t.areLociEqual=d;function m(v){return Sn.isEmpty(v.volume.grid)}t.isLociEmpty=m;function p(v,x){return Sn.getBoundingSphere(v.grid,x)}t.getBoundingSphere=p;let h;(function(v){function x(P,A){return{kind:"isosurface-loci",volume:P,isoValue:A}}v.Loci=x;function S(P){return!!P&&P.kind==="isosurface-loci"}v.isLoci=S;function T(P,A){return P.volume===A.volume&&t.IsoValue.areSame(P.isoValue,A.isoValue,P.volume.grid.stats)}v.areLociEqual=T;function E(P){return P.volume.grid.cells.data.length===0}v.isLociEmpty=E;let _=qe();function D(P,A,I){let k=t.IsoValue.toAbsolute(A,P.grid.stats).absoluteValue,M=k<0,R=[0,0,0],B=P.grid.cells.space.getCoords,F=P.grid.cells.data,[G,V,H]=P.grid.cells.space.dimensions,Q=G-1,L=V-1,Y=H-1,j=0,O=0,J=0;for(let ae=0,Z=F.length;ae=k)&&(B(ae,R),R[0]j&&(j=R[0]),R[1]>O&&(O=R[1]),R[2]>J&&(J=R[2]));y.set(_.min,Q-1,L-1,Y-1),y.set(_.max,j+1,O+1,J+1);let $=Sn.getGridToCartesianTransform(P.grid);return qe.transform(_,_,$),te.fromBox3D(I||te(),_)}v.getBoundingSphere=D})(h=t.Isosurface||(t.Isosurface={}));let f;(function(v){function x(A,I){return{kind:"cell-loci",volume:A,indices:I}}v.Loci=x;function S(A){return!!A&&A.kind==="cell-loci"}v.isLoci=S;function T(A,I){return A.volume===I.volume&&we.areEqual(A.indices,I.indices)}v.areLociEqual=T;function E(A){return we.size(A.indices)===0}v.isLociEmpty=E;let _=new Zs("98"),D=y();function P(A,I,k){_.reset();let M=Sn.getGridToCartesianTransform(A.grid),{getCoords:R}=A.grid.cells.space;for(let F=0,G=we.size(I);F{let B=Math.floor(M/E);return A[0]=Math.floor(B/T),A[1]=B%T,A[2]=M%E,y.transformMat4(A,A,x),R>=0&&y.transformMat4Offset(A,A,I,0,0,R*16),P})}function s(b,v){return Math.ceil(y.magnitude(b)*v)}function l(b,v){return Math.min(...b)*(1/v)}function c(b){return 1/b}function u(b,v,x,S,T){let{gridTexture:E,gridTextureDim:_,gridStats:D}=b,{bboxSize:P,bboxMin:A,bboxMax:I,gridDimension:k,transform:M}=b,{instanceCount:R,groupCount:B}=x,F=t.Utils.createPositionIterator(b,v),G=uo(x,F,S.color),V=T.instanceGranularity?jr(R,"instance"):jr(R*B,"groupInstance"),H=ga(),Q=ya(),L=xa(),Y=ba(),j=va(),[O,J,$]=k.ref.value,ae={drawCount:dk.indices.length,vertexCount:O*J*$,groupCount:B,instanceCount:R},Z=te.clone(b.boundingSphere),se=Hn(Z,v.aTransform.ref.value,R,0),Me=ck(T.controlPoints),be=uk(Me);return U(w(w(w(w(w(w(w(w(w({dGeometryType:C.create("directVolume")},G),V),H),Q),L),Y),j),v),ge.createValues(T,ae)),{aPosition:C.create(dk.vertices),elements:C.create(dk.indices),boundingSphere:C.create(se),invariantBoundingSphere:C.create(Z),uInvariantBoundingSphere:C.create(at.ofSphere(Z)),uBboxMin:A,uBboxMax:I,uBboxSize:P,uMaxSteps:C.create(s(k.ref.value,T.stepsPerCell)),uStepScale:C.create(l(b.cellDim.ref.value,T.stepsPerCell)),uJumpLength:C.create(T.jumpLength),uTransform:M,uGridDim:k,tTransferTex:be,uTransferScale:C.create(c(T.stepsPerCell)),dGridTexType:C.create(E.ref.value.getDepth()>0?"3d":"2d"),uGridTexDim:_,tGridTex:E,uGridStats:D,uCellDim:b.cellDim,uCartnToUnit:b.cartnToUnit,uUnitToCartn:b.unitToCartn,dPackedGroup:b.packedGroup,dAxisOrder:C.create(b.axisOrder.ref.value.join("")),dIgnoreLight:C.create(T.ignoreLight),dXrayShaded:C.create(T.xrayShaded==="inverted"?"inverted":T.xrayShaded===!0?"on":"off")})}function d(b,v,x,S,T){let E=ge.createSimple(x,S,T),_=w(w({},g.getDefaultValues(t.Params)),v);return u(b,E.transform,E.locationIterator,E.theme,_)}function m(b,v){ge.updateValues(b,v),C.updateIfChanged(b.dIgnoreLight,v.ignoreLight),C.updateIfChanged(b.dXrayShaded,v.xrayShaded==="inverted"?"inverted":v.xrayShaded===!0?"on":"off");let x=ck(v.controlPoints);uk(x,b.tTransferTex),C.updateIfChanged(b.uMaxSteps,s(b.uGridDim.ref.value,v.stepsPerCell)),C.updateIfChanged(b.uStepScale,l(b.uCellDim.ref.value,v.stepsPerCell)),C.updateIfChanged(b.uTransferScale,c(v.stepsPerCell)),C.updateIfChanged(b.uJumpLength,v.jumpLength)}function p(b,v){let x=te.clone(v.boundingSphere),S=Hn(x,b.aTransform.ref.value,b.instanceCount.ref.value,0);te.equals(S,b.boundingSphere.ref.value)||C.update(b.boundingSphere,S),te.equals(x,b.invariantBoundingSphere.ref.value)||(C.update(b.invariantBoundingSphere,x),C.update(b.uInvariantBoundingSphere,at.fromSphere(b.uInvariantBoundingSphere.ref.value,x)))}function h(b){let v=ge.createRenderableState(b);return v.opaque=!1,v.writeDepth=!1,v}function f(b,v){ge.updateRenderableState(b,v),b.opaque=!1,b.writeDepth=!1}})(ta||(ta={}));function bde(t,e){return te.fromDimensionsAndTransform(te(),t,e)}var Ni;(function(t){function e(S,T,E,_){return _?i(S,T,E,_):o(S,T,E)}t.create=e;function r(S){let T=S?S.centerBuffer.ref.value:new Float32Array(0),E=S?S.groupBuffer.ref.value:new Float32Array(0);return e(T,E,0,S)}t.createEmpty=r;function n(S){return Ai([S.sphereCount,S.centerBuffer.ref.version,S.groupBuffer.ref.version])}function o(S,T,E){let _=te(),D,P=-1,A=-1,I=C.create(Zr(1,4,Float32Array)),k=C.create(ne.create(0,0)),M=C.create([]),R=C.create(0),B={kind:"spheres",sphereCount:E,centerBuffer:C.create(S),groupBuffer:C.create(T),get boundingSphere(){let F=n(B);if(F!==P){let G=Pl(B.centerBuffer.ref.value,B.sphereCount,1);te.copy(_,G),P=F}return _},get groupMapping(){return B.groupBuffer.ref.version!==A&&(D=Zc(B.groupBuffer.ref.value,B.sphereCount),A=B.groupBuffer.ref.version),D},setBoundingSphere(F){te.copy(_,F),P=n(B)},shaderData:{positionGroup:I,texDim:k,lodLevels:M,sizeFactor:R,update(F){var G,V;let H=(G=F?.lodLevels)!==null&&G!==void 0?G:c(M.ref.value),Q=(V=F?.sizeFactor)!==null&&V!==void 0?V:R.ref.value,L=d(H,Q),Y=Zr(B.sphereCount,4,Float32Array,I.ref.value.array),j=a(Y,B.centerBuffer.ref.value,B.groupBuffer.ref.value,B.sphereCount,L),O=j?l(H,Q,j,B.sphereCount):[];C.update(I,Y),C.update(k,ne.set(k.ref.value,Y.width,Y.height)),C.update(M,O),C.update(R,Q)}}};return B.shaderData.update(),B}function i(S,T,E,_){return _.sphereCount=E,C.update(_.centerBuffer,S),C.update(_.groupBuffer,T),_.shaderData.update(),_}function a(S,T,E,_,D){let{array:P}=S;if(D.length===0){for(let k=0;k<_;++k)P[k*4+0]=T[k*3+0],P[k*4+1]=T[k*3+1],P[k*4+2]=T[k*3+2],P[k*4+3]=E[k];return}let A=[0],I=0;for(let k=0,M=D.length;k{let A=u(D,T);return[D.minDistance,D.maxDistance,D.overlap,E[E.length-1-P],Math.pow(Math.min(_,A),1/D.scaleBias),D.stride,D.scaleBias]})}function c(S){return S.map(T=>({minDistance:T[0],maxDistance:T[1],overlap:T[2],stride:T[5],scaleBias:T[6]}))}function u(S,T){return Math.max(1,Math.round(S.stride/Math.pow(T,S.scaleBias)))}function d(S,T){return S.map(E=>u(E,T)).reverse()}t.Params=U(w({},ge.Params),{sizeFactor:g.Numeric(1,{min:0,max:10,step:.1}),doubleSided:g.Boolean(!1,ge.CustomQualityParamInfo),ignoreLight:g.Boolean(!1,ge.ShadingCategory),xrayShaded:g.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],ge.ShadingCategory),transparentBackfaces:g.Select("off",g.arrayToOptions(["off","on","opaque"]),ge.ShadingCategory),solidInterior:g.Boolean(!0,ge.ShadingCategory),clipPrimitive:g.Boolean(!1,U(w({},ge.ShadingCategory),{description:"Clip whole sphere instead of cutting it."})),approximate:g.Boolean(!1,U(w({},ge.ShadingCategory),{description:"Faster rendering, but has artifacts."})),alphaThickness:g.Numeric(0,{min:0,max:20,step:1},U(w({},ge.ShadingCategory),{description:"If not zero, adjusts alpha for radius."})),bumpFrequency:g.Numeric(0,{min:0,max:10,step:.1},ge.ShadingCategory),bumpAmplitude:g.Numeric(1,{min:0,max:5,step:.1},ge.ShadingCategory),lodLevels:g.ObjectList({minDistance:g.Numeric(0),maxDistance:g.Numeric(0),overlap:g.Numeric(0),stride:g.Numeric(0),scaleBias:g.Numeric(3,{min:.1,max:10,step:.1})},S=>`${S.stride}`,U(w({},ge.CullingLodCategory),{defaultValue:[]}))}),t.Utils={Params:t.Params,createEmpty:r,createValues:p,createValuesSimple:h,updateValues:f,updateBoundingSphere:b,createRenderableState:v,updateRenderableState:x,createPositionIterator:m};function m(S,T){let E=S.sphereCount,_=T.instanceCount.ref.value,D=Ss(),P=D.position,A=S.centerBuffer.ref.value,I=T.aTransform.ref.value;return jt(E,_,1,(M,R)=>(R<0?y.fromArray(P,A,M*3):y.transformMat4Offset(P,A,I,0,M*3,R*16),D))}function p(S,T,E,_,D){let{instanceCount:P,groupCount:A}=E,I=m(S,T),k=uo(E,I,_.color),M=Sa(E,_.size),R=D.instanceGranularity?jr(P,"instance"):jr(P*A,"groupInstance"),B=ga(),F=ya(),G=xa(),V=ba(),H=va(),Q={drawCount:S.sphereCount*2*3,vertexCount:S.sphereCount*6,groupCount:A,instanceCount:P},L=S.boundingSphere.radius?bf(M)*D.sizeFactor:0,Y=te.expand(te(),S.boundingSphere,L),j=Hn(Y,T.aTransform.ref.value,P,0);return S.shaderData.update({lodLevels:D.lodLevels,sizeFactor:D.sizeFactor}),U(w(U(w(w(w(w(w(w(w(w(w({dGeometryType:C.create("spheres"),uTexDim:S.shaderData.texDim,tPositionGroup:S.shaderData.positionGroup,boundingSphere:C.create(j),invariantBoundingSphere:C.create(Y),uInvariantBoundingSphere:C.create(at.ofSphere(Y))},k),M),R),B),F),G),V),H),T),{padding:C.create(L)}),ge.createValues(D,Q)),{uSizeFactor:S.shaderData.sizeFactor,uDoubleSided:C.create(D.doubleSided),dIgnoreLight:C.create(D.ignoreLight),dXrayShaded:C.create(D.xrayShaded==="inverted"?"inverted":D.xrayShaded===!0?"on":"off"),dTransparentBackfaces:C.create(D.transparentBackfaces),dSolidInterior:C.create(D.solidInterior),dClipPrimitive:C.create(D.clipPrimitive),dApproximate:C.create(D.approximate),uAlphaThickness:C.create(D.alphaThickness),uBumpFrequency:C.create(D.bumpFrequency),uBumpAmplitude:C.create(D.bumpAmplitude),lodLevels:S.shaderData.lodLevels,centerBuffer:S.centerBuffer,groupBuffer:S.groupBuffer})}function h(S,T,E,_,D){let P=ge.createSimple(E,_,D),A=w(w({},g.getDefaultValues(t.Params)),T);return p(S,P.transform,P.locationIterator,P.theme,A)}function f(S,T){ge.updateValues(S,T),C.updateIfChanged(S.uSizeFactor,T.sizeFactor),C.updateIfChanged(S.uDoubleSided,T.doubleSided),C.updateIfChanged(S.dIgnoreLight,T.ignoreLight),C.updateIfChanged(S.dXrayShaded,T.xrayShaded==="inverted"?"inverted":T.xrayShaded===!0?"on":"off"),C.updateIfChanged(S.dTransparentBackfaces,T.transparentBackfaces),C.updateIfChanged(S.dSolidInterior,T.solidInterior),C.updateIfChanged(S.dClipPrimitive,T.clipPrimitive),C.updateIfChanged(S.dApproximate,T.approximate),C.updateIfChanged(S.uAlphaThickness,T.alphaThickness),C.updateIfChanged(S.uBumpFrequency,T.bumpFrequency),C.updateIfChanged(S.uBumpAmplitude,T.bumpAmplitude);let E=c(S.lodLevels.ref.value);if(!s(T.lodLevels,E)){let _=S.uVertexCount.ref.value/6,D=d(T.lodLevels,T.sizeFactor),P=a(S.tPositionGroup.ref.value,S.centerBuffer.ref.value,S.groupBuffer.ref.value,_,D),A=P?l(T.lodLevels,T.sizeFactor,P,_):[];C.update(S.tPositionGroup,S.tPositionGroup.ref.value),C.update(S.lodLevels,A)}}function b(S,T){let E=T.boundingSphere.radius?bf(S)*S.uSizeFactor.ref.value:0,_=te.expand(te(),T.boundingSphere,E),D=Hn(_,S.aTransform.ref.value,S.instanceCount.ref.value,0);te.equals(D,S.boundingSphere.ref.value)||C.update(S.boundingSphere,D),te.equals(_,S.invariantBoundingSphere.ref.value)||(C.update(S.invariantBoundingSphere,_),C.update(S.uInvariantBoundingSphere,at.fromSphere(S.uInvariantBoundingSphere.ref.value,_))),C.update(S.padding,E)}function v(S){let T=ge.createRenderableState(S);return x(T,S),T}function x(S,T){ge.updateRenderableState(S,T),S.opaque=S.opaque&&!T.xrayShaded,S.writeDepth=S.opaque}})(Ni||(Ni={}));var Ko;(function(t){class e{constructor(){this.index=0,this.textures=[]}get(){return this.textures[this.index]}set(p,h,f){this.textures[this.index]=Object.assign(this.textures[this.index]||{},{vertex:p,group:h,normal:f}),this.index=(this.index+1)%2}destroy(){for(let p of this.textures)p.vertex.destroy(),p.group.destroy(),p.normal.destroy()}}t.DoubleBuffer=e;function r(m,p,h,f,b,v,x){let S=h.getWidth(),T=h.getHeight();return x?(x.vertexCount=m,x.groupCount=p,C.update(x.geoTextureDim,ne.set(x.geoTextureDim.ref.value,S,T)),C.update(x.vertexTexture,h),C.update(x.groupTexture,f),C.update(x.normalTexture,b),x.doubleBuffer.set(h,f,b),te.copy(x.boundingSphere,v),x):{kind:"texture-mesh",vertexCount:m,groupCount:p,geoTextureDim:C.create(ne.create(S,T)),vertexTexture:C.create(h),groupTexture:C.create(f),normalTexture:C.create(b),varyingGroup:C.create(!1),doubleBuffer:new e,boundingSphere:te.clone(v),meta:{}}}t.create=r;function n(m){let p=m?m.vertexTexture.ref.value:un(),h=m?m.groupTexture.ref.value:un(),f=m?m.normalTexture.ref.value:un(),b=m?m.boundingSphere:te();return r(0,0,p,h,f,b,m)}t.createEmpty=n,t.Params=U(w({},ge.Params),{doubleSided:g.Boolean(!1,ge.CustomQualityParamInfo),flipSided:g.Boolean(!1,ge.ShadingCategory),flatShaded:g.Boolean(!1,ge.ShadingCategory),ignoreLight:g.Boolean(!1,ge.ShadingCategory),xrayShaded:g.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],ge.ShadingCategory),transparentBackfaces:g.Select("off",g.arrayToOptions(["off","on","opaque"]),ge.ShadingCategory),bumpFrequency:g.Numeric(0,{min:0,max:10,step:.1},ge.ShadingCategory),bumpAmplitude:g.Numeric(1,{min:0,max:5,step:.1},ge.ShadingCategory)}),t.Utils={Params:t.Params,createEmpty:n,createValues:a,createValuesSimple:s,updateValues:l,updateBoundingSphere:c,createRenderableState:u,updateRenderableState:d,createPositionIterator:i};let o="texture-mesh";function i(m,p){let h=m.meta.webgl;if(!h)return jt(1,1,1,()=>Lo);h.namedFramebuffers[o]||(h.namedFramebuffers[o]=h.resources.framebuffer());let f=h.namedFramebuffers[o],[b,v]=m.geoTextureDim.ref.value,x=new Float32Array(b*v*4);f.bind(),m.vertexTexture.ref.value.attachFramebuffer(f,0),h.readPixels(0,0,b,v,x);let S=new Float32Array(b*v*4);f.bind(),m.normalTexture.ref.value.attachFramebuffer(f,0),h.readPixels(0,0,b,v,S);let T=m.vertexCount,E=p.instanceCount.ref.value,_=Ss(),D=_.position,P=_.normal,A=p.aTransform.ref.value;return jt(T,E,1,(k,M)=>(M<0?(y.fromArray(D,x,k*4),y.fromArray(P,S,k*4)):(y.transformMat4Offset(D,x,A,0,k*4,M*16),y.transformDirectionOffset(P,S,A,0,k*4,M*16)),_))}function a(m,p,h,f,b){let{instanceCount:v,groupCount:x}=h,S=t.Utils.createPositionIterator(m,p),T=uo(h,S,f.color),E=b.instanceGranularity?jr(v,"instance"):jr(v*x,"groupInstance"),_=ga(),D=ya(),P=xa(),A=ba(),I=va(),k={drawCount:m.vertexCount,vertexCount:m.vertexCount,groupCount:x,instanceCount:v},M=te.clone(m.boundingSphere),R=Hn(M,p.aTransform.ref.value,v,0);return U(w(w(w(w(w(w(w(w(w({dGeometryType:C.create("textureMesh"),uGeoTexDim:m.geoTextureDim,tPosition:m.vertexTexture,tGroup:m.groupTexture,tNormal:m.normalTexture,dVaryingGroup:m.varyingGroup,boundingSphere:C.create(R),invariantBoundingSphere:C.create(M),uInvariantBoundingSphere:C.create(at.ofSphere(M))},T),E),_),D),P),A),I),p),ge.createValues(b,k)),{uDoubleSided:C.create(b.doubleSided),dFlatShaded:C.create(b.flatShaded),dFlipSided:C.create(b.flipSided),dIgnoreLight:C.create(b.ignoreLight),dXrayShaded:C.create(b.xrayShaded==="inverted"?"inverted":b.xrayShaded===!0?"on":"off"),dTransparentBackfaces:C.create(b.transparentBackfaces),uBumpFrequency:C.create(b.bumpFrequency),uBumpAmplitude:C.create(b.bumpAmplitude),meta:C.create(m.meta)})}function s(m,p,h,f,b){let v=ge.createSimple(h,f,b),x=w(w({},g.getDefaultValues(t.Params)),p);return a(m,v.transform,v.locationIterator,v.theme,x)}function l(m,p){ge.updateValues(m,p),C.updateIfChanged(m.uDoubleSided,p.doubleSided),C.updateIfChanged(m.dFlatShaded,p.flatShaded),C.updateIfChanged(m.dFlipSided,p.flipSided),C.updateIfChanged(m.dIgnoreLight,p.ignoreLight),C.updateIfChanged(m.dXrayShaded,p.xrayShaded==="inverted"?"inverted":p.xrayShaded===!0?"on":"off"),C.updateIfChanged(m.dTransparentBackfaces,p.transparentBackfaces),C.updateIfChanged(m.uBumpFrequency,p.bumpFrequency),C.updateIfChanged(m.uBumpAmplitude,p.bumpAmplitude)}function c(m,p){let h=te.clone(p.boundingSphere),f=Hn(h,m.aTransform.ref.value,m.instanceCount.ref.value,0);te.equals(f,m.boundingSphere.ref.value)||C.update(m.boundingSphere,f),te.equals(h,m.invariantBoundingSphere.ref.value)||(C.update(m.invariantBoundingSphere,h),C.update(m.uInvariantBoundingSphere,at.fromSphere(m.uInvariantBoundingSphere.ref.value,h)))}function u(m){let p=ge.createRenderableState(m);return d(p,m),p}function d(m,p){ge.updateRenderableState(m,p),m.opaque=m.opaque&&!p.xrayShaded,m.writeDepth=m.opaque}})(Ko||(Ko={}));function Jj(t,e){let r={},n={},o={},i={},a={},s={},l={};return Object.keys(t).forEach(c=>{let u=t[c];u.type==="attribute"&&(r[c]=e[c]),u.type==="define"&&(n[c]=e[c]),u.type==="texture"&&e[c]!==void 0&&(u.variant==="material"?i[c]=e[c]:o[c]=e[c]),u.type==="uniform"&&e[c]!==void 0&&(u.variant==="material"?s[c]=e[c]:u.variant==="buffered"?l[c]=e[c]:a[c]=e[c])}),{attributeValues:r,defineValues:n,textureValues:o,materialTextureValues:i,uniformValues:a,materialUniformValues:s,bufferedUniformValues:l}}function eH(t){let e={};return Object.keys(t).forEach(r=>{e[r]=t[r].ref.version}),e}function hr(t,e,r){return{type:"attribute",kind:t,itemSize:e,divisor:r}}function ee(t,e){return{type:"uniform",kind:t,variant:e}}function We(t,e,r,n,o){return{type:"texture",kind:t,format:e,dataType:r,filter:n,variant:o}}function eu(t){return{type:"elements",kind:t}}function Ye(t,e){return{type:"define",kind:t,options:e}}function Mr(t){return{type:"value",kind:t}}var Ca={uDrawId:ee("i"),uModel:ee("m4"),uView:ee("m4"),uInvView:ee("m4"),uModelView:ee("m4"),uInvModelView:ee("m4"),uProjection:ee("m4"),uInvProjection:ee("m4"),uModelViewProjection:ee("m4"),uInvModelViewProjection:ee("m4"),uIsOrtho:ee("f"),uPixelRatio:ee("f"),uViewport:ee("v4"),uViewOffset:ee("v2"),uDrawingBufferSize:ee("v2"),uCameraPosition:ee("v3"),uCameraDir:ee("v3"),uCameraPlane:ee("v4"),uNear:ee("f"),uFar:ee("f"),uFog:ee("b"),uFogNear:ee("f"),uFogFar:ee("f"),uFogColor:ee("v3"),uTransparentBackground:ee("b"),uLightDirection:ee("v3[]"),uLightColor:ee("v3[]"),uAmbientColor:ee("v3"),uPickingAlphaThreshold:ee("f"),uInteriorDarkening:ee("f"),uInteriorColorFlag:ee("b"),uInteriorColor:ee("v3"),uHighlightColor:ee("v3"),uSelectColor:ee("v3"),uDimColor:ee("v3"),uHighlightStrength:ee("f"),uSelectStrength:ee("f"),uDimStrength:ee("f"),uMarkerPriority:ee("i"),uMarkerAverage:ee("f"),uXrayEdgeFalloff:ee("f"),uExposure:ee("f"),uRenderMask:ee("i"),uMarkingDepthTest:ee("b"),uMarkingType:ee("i"),uPickType:ee("i")},Ta={tDepth:We("texture","depth","ushort","nearest"),tDpoitDepth:We("texture","rg","float","nearest"),tDpoitFrontColor:We("texture","rgba","float","nearest"),tDpoitBackColor:We("texture","rgba","float","nearest")},wa={uObjectId:ee("i")},xde={uColor:ee("v3","material"),uColorTexDim:ee("v2"),uColorGridDim:ee("v3"),uColorGridTransform:ee("v4"),tColor:We("image-uint8","rgb","ubyte","nearest"),tPalette:We("image-uint8","rgb","ubyte","nearest"),tColorGrid:We("texture","rgb","ubyte","linear"),dColorType:Ye("string",["uniform","attribute","instance","group","groupInstance","vertex","vertexInstance","volume","volumeInstance","direct"]),dUsePalette:Ye("boolean")},sm={uSize:ee("f","material"),uSizeTexDim:ee("v2"),tSize:We("image-uint8","rgb","ubyte","nearest"),dSizeType:Ye("string",["uniform","attribute","instance","group","groupInstance"]),uSizeFactor:ee("f","material")},Sde={uMarker:ee("f"),uMarkerTexDim:ee("v2"),tMarker:We("image-uint8","alpha","ubyte","nearest"),markerAverage:Mr("number"),markerStatus:Mr("number"),dMarkerType:Ye("string",["instance","groupInstance"])},Cde={uOverpaintTexDim:ee("v2"),tOverpaint:We("image-uint8","rgba","ubyte","nearest"),dOverpaint:Ye("boolean"),uOverpaintGridDim:ee("v3"),uOverpaintGridTransform:ee("v4"),tOverpaintGrid:We("texture","rgba","ubyte","linear"),dOverpaintType:Ye("string",["instance","groupInstance","volumeInstance"]),uOverpaintStrength:ee("f","material")},Tde={uTransparencyTexDim:ee("v2"),tTransparency:We("image-uint8","alpha","ubyte","nearest"),dTransparency:Ye("boolean"),transparencyAverage:Mr("number"),uTransparencyGridDim:ee("v3"),uTransparencyGridTransform:ee("v4"),tTransparencyGrid:We("texture","alpha","ubyte","linear"),dTransparencyType:Ye("string",["instance","groupInstance","volumeInstance"]),uTransparencyStrength:ee("f","material")},wde={uEmissiveTexDim:ee("v2"),tEmissive:We("image-uint8","alpha","ubyte","nearest"),dEmissive:Ye("boolean"),emissiveAverage:Mr("number"),uEmissiveGridDim:ee("v3"),uEmissiveGridTransform:ee("v4"),tEmissiveGrid:We("texture","alpha","ubyte","linear"),dEmissiveType:Ye("string",["instance","groupInstance","volumeInstance"]),uEmissiveStrength:ee("f","material")},_de={uSubstanceTexDim:ee("v2"),tSubstance:We("image-uint8","rgba","ubyte","nearest"),dSubstance:Ye("boolean"),uSubstanceGridDim:ee("v3"),uSubstanceGridTransform:ee("v4"),tSubstanceGrid:We("texture","rgba","ubyte","linear"),dSubstanceType:Ye("string",["instance","groupInstance","volumeInstance"]),uSubstanceStrength:ee("f","material")},Pde={uClippingTexDim:ee("v2"),tClipping:We("image-uint8","alpha","ubyte","nearest"),dClipping:Ye("boolean"),dClippingType:Ye("string",["instance","groupInstance"])},_a=U(w(w(w(w(w(w(w({dGeometryType:Ye("string",["cylinders","directVolume","image","lines","mesh","points","spheres","text","textureMesh"])},xde),Sde),Cde),Tde),wde),_de),Pde),{dLightCount:Ye("number"),dColorMarker:Ye("boolean"),dClipObjectCount:Ye("number"),dClipVariant:Ye("string",["instance","pixel"]),uClipObjectType:ee("i[]","material"),uClipObjectInvert:ee("b[]","material"),uClipObjectPosition:ee("v3[]","material"),uClipObjectRotation:ee("v4[]","material"),uClipObjectScale:ee("v3[]","material"),aInstance:hr("float32",1,1),aTransform:hr("float32",16,1),uAlpha:ee("f","material"),uMetalness:ee("f","material"),uRoughness:ee("f","material"),uBumpiness:ee("f","material"),uEmissive:ee("f","material"),uVertexCount:ee("i"),uInstanceCount:ee("i"),uGroupCount:ee("i"),uInvariantBoundingSphere:ee("v4"),uLod:ee("v4"),drawCount:Mr("number"),instanceCount:Mr("number"),alpha:Mr("number"),matrix:Mr("m4"),transform:Mr("float32"),extraTransform:Mr("float32"),hasReflection:Mr("boolean"),instanceGranularity:Mr("boolean"),boundingSphere:Mr("sphere"),invariantBoundingSphere:Mr("sphere"),instanceGrid:Mr("instanceGrid")});var tH=` +precision highp float; +precision highp sampler2D; + +uniform sampler2D tColor; +uniform vec2 uTexSize; + +void main() { + vec2 coords = gl_FragCoord.xy / uTexSize; + gl_FragColor = texture2D(tColor, coords); +} +`;var zr=` +precision highp float; + +attribute vec2 aPosition; +uniform vec2 uQuadScale; + +void main(void) { + vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale; + gl_Position = vec4(position, 0.0, 1.0); +} +`;var Ede=bo();function Ide(t,e){let{gl:r}=t;switch(e){case"points":return r.POINTS;case"lines":return r.LINES;case"line-strip":return r.LINE_STRIP;case"line-loop":return r.LINE_LOOP;case"triangles":return r.TRIANGLES;case"triangle-strip":return r.TRIANGLE_STRIP;case"triangle-fan":return r.TRIANGLE_FAN}}var Dde={color:"",pick:"",depth:"",marking:"",emissive:""},Ade=Object.keys(Dde),kde={compute:""},Mde=Object.keys(kde);function mk(t,e,r,n,o){return r=U(w({},r),{dRenderVariant:C.create(e)}),o.dRenderVariant===void 0&&Object.defineProperty(o,"dRenderVariant",{value:Ye("string")}),t.resources.program(r,n,o)}function Rde(){return{attributes:!1,defines:!1,elements:!1,textures:!1}}function Lde(t){t.attributes=!1,t.defines=!1,t.elements=!1,t.textures=!1}function pk(t,e){if(t==="color")switch(e){case"blended":return"colorBlended";case"wboit":return"colorWboit";case"dpoit":return"colorDpoit"}return t}function Pa(t,e,r,n,o,i,a){return rH(t,e,r,n,o,i,Ade,a)}function dr(t,e,r,n,o,i=-1){return rH(t,e,r,n,o,i,Mde,void 0)}function rH(t,e,r,n,o,i,a,s){let l=Ede(),{stats:c,state:u,resources:d}=t,{instancedArrays:m,vertexArrayObject:p,multiDrawInstancedBaseVertexBaseInstance:h,drawInstancedBaseVertexBaseInstance:f}=t.extensions;if(o.uVertexCount&&!t.extensions.noNonInstancedActiveAttribs){let Z=o.uVertexCount.ref.value;o.aVertex=C.create(Ri(new Float32Array(Z))),n.aVertex=hr("float32",1,0)}let{attributeValues:b,defineValues:v,textureValues:x,materialTextureValues:S,uniformValues:T,materialUniformValues:E,bufferedUniformValues:_}=Jj(n,o),D=Object.entries(T),P=Object.entries(E),A=Object.entries(_),I=Object.entries(IG(_)),k=Object.entries(v),M=eH(o),R=Ide(t,e),B={};for(let Z of a)B[Z]=mk(t,pk(Z,s),v,r,n);let F=GA(t,n,x),G=GA(t,n,S),V=MG(t,n,b),H=[];for(let Z=0,se=V.length;ZB[Z],setTransparency:Z=>{if(Z!==s){s=Z;for(let se of a)B[se].destroy(),B[se]=mk(t,pk(se,s),v,r,n)}},render:(Z,se,Me)=>{if(j===0||O===0)return;let be=B[Z];if(be.id===ae&&u.currentRenderItemId===l)be.setUniforms(D),be.bindTextures(F,se);else{let _e=Y[Z];(be.id!==u.currentProgramId||be.id!==ae||i===-1||i!==u.currentMaterialId)&&(be.id!==u.currentProgramId&&be.use(),be.setUniforms(P),be.bindTextures(G,se+F.length),u.currentMaterialId=i,ae=be.id),be.setUniforms(D),be.setUniforms(I),be.bindTextures(F,se),_e?(_e.bind(),Q&&Q.bind()):(Q&&Q.bind(),be.bindAttributes(V)),u.currentRenderItemId=l}if(ht)try{Eg(t.gl)}catch(_e){throw new Error(`Framebuffer error rendering item id ${l}: '${_e}'`)}if(Me){for(let _e of Me)if(_e.count!==0){if(be.setUniforms(_e.uniforms),h)Q?h.multiDrawElementsInstancedBaseVertexBaseInstance(R,_e.counts,0,Q._dataType,_e.offsets,0,_e.instanceCounts,0,_e.baseVertices,0,_e.baseInstances,0,_e.count):h.multiDrawArraysInstancedBaseInstance(R,_e.firsts,0,_e.counts,0,_e.instanceCounts,0,_e.baseInstances,0,_e.count);else if(f)if(Q)for(let je=0;je<_e.count;++je)_e.counts[je]>0&&(be.uniform("uDrawId",je),f.drawElementsInstancedBaseVertexBaseInstance(R,_e.counts[je],Q._dataType,_e.offsets[je],_e.instanceCounts[je],_e.baseVertices[je],_e.baseInstances[je]));else for(let je=0;je<_e.count;++je)_e.counts[je]>0&&(be.uniform("uDrawId",je),f.drawArraysInstancedBaseInstance(R,_e.firsts[je],_e.counts[je],_e.instanceCounts[je],_e.baseInstances[je]));else if(Q)for(let je=0;je<_e.count;++je)_e.counts[je]>0&&(be.uniform("uDrawId",je),be.offsetAttributes(H,_e.baseInstances[je]),m.drawElementsInstanced(R,_e.counts[je],Q._dataType,_e.offsets[je],_e.instanceCounts[je]));else for(let je=0;je<_e.count;++je)_e.counts[je]>0&&(be.uniform("uDrawId",je),be.offsetAttributes(H,_e.baseInstances[je]),m.drawArraysInstanced(R,0,_e.counts[je],_e.instanceCounts[je]));if(Ee){h?c.calls.multiDrawInstancedBase+=1:f?c.calls.drawInstancedBase+=_e.count:c.calls.drawInstanced+=_e.count;for(let je=0;je<_e.count;++je)c.calls.counts+=_e.instanceCounts[je]}}}else Q?m.drawElementsInstanced(R,j,Q._dataType,0,O):m.drawArraysInstanced(R,0,j,O),Ee&&(c.calls.drawInstanced+=1,c.calls.counts+=O);if(ht)try{zA(t.gl)}catch(_e){throw new Error(`Draw error rendering item id ${l}: '${_e}'`)}},update:()=>{if(Lde(J),o.aVertex){let Z=o.uVertexCount.ref.value;o.aVertex.ref.value.length=_e.ref.value.length)be.updateSubData(_e.ref.value,0,be.length);else{be.destroy();let{itemSize:je,divisor:gt}=n[Me];V[Z][1]=d.attribute(_e.ref.value,je,gt),J.attributes=!0}M[Me]=_e.ref.version}}if(Q&&o.elements.ref.version!==M.elements&&(Q.length>=o.elements.ref.value.length?Q.updateSubData(o.elements.ref.value,0,Q.length):(Q.destroy(),Q=d.elements(o.elements.ref.value),J.elements=!0),M.elements=o.elements.ref.version),J.attributes||J.defines||J.elements)for(let Z of a){let se=Y[Z];se&&se.destroy(),Y[Z]=p?d.vertexArray(B[Z],V,Q):null}for(let Z=0,se=F.length;Z{if(!$){for(let Z of a){B[Z].destroy();let se=Y[Z];se&&se.destroy()}F.forEach(([Z,se])=>{n[Z].kind!=="texture"&&se.destroy()}),G.forEach(([Z,se])=>{n[Z].kind!=="texture"&&se.destroy()}),V.forEach(([Z,se])=>se.destroy()),Q&&Q.destroy(),c.drawCount-=j,c.instanceCount-=O,c.instancedDrawCount-=O*j,$=!0}}}}function qn(){return qn.create(y.create(1,0,0),0)}(function(t){function e(f,b){return{normal:f,constant:b}}t.create=e;function r(f,b){return y.copy(f.normal,b.normal),f.constant=b.constant,f}t.copy=r;function n(f){return r(t(),f)}t.clone=n;function o(f,b){let v=1/y.magnitude(b.normal);return y.scale(f.normal,b.normal,v),f.constant=b.constant*v,f}t.normalize=o;function i(f,b){return y.negate(f.normal,b.normal),f.constant=-b.constant,f}t.negate=i;function a(f,b,v){return y.toArray(f.normal,b,v),b[v+3]=f.constant,b}t.toArray=a;function s(f,b,v){return y.fromArray(f.normal,b,v),f.constant=b[v+3],f}t.fromArray=s;function l(f,b,v){return y.copy(f.normal,b),f.constant=-y.dot(f.normal,v),f}t.fromNormalAndCoplanarPoint=l;function c(f,b,v,x){let S=y.triangleNormal(y(),b,v,x);return l(f,S,b),f}t.fromCoplanarPoints=c;let u=y();function d(f,b,v,x,S){y.set(u,b,v,x);let T=1/y.magnitude(u);return y.scale(f.normal,u,T),f.constant=S*T,f}t.setUnnormalized=d;function m(f,b){return y.dot(f.normal,b)+f.constant}t.distanceToPoint=m;function p(f,b){return m(f,b.center)-b.radius}t.distanceToSpher3D=p;function h(f,b,v){return y.scaleAndAdd(f,f,b.normal,-m(b,v))}t.projectPoint=h})(qn||(qn={}));function up(){return up.create(qn(),qn(),qn(),qn(),qn(),qn())}(function(t){function e(c,u,d,m,p,h){return[c,u,d,m,p,h]}t.create=e;function r(c,u){for(let d=0;d<6;++d)qn.copy(c[d],u[d]);return c}t.copy=r;function n(c){return r(t(),c)}t.clone=n;function o(c,u){let d=u[0],m=u[1],p=u[2],h=u[3],f=u[4],b=u[5],v=u[6],x=u[7],S=u[8],T=u[9],E=u[10],_=u[11],D=u[12],P=u[13],A=u[14],I=u[15];return qn.setUnnormalized(c[0],h-d,x-f,_-S,I-D),qn.setUnnormalized(c[1],h+d,x+f,_+S,I+D),qn.setUnnormalized(c[2],h+m,x+b,_+T,I+P),qn.setUnnormalized(c[3],h-m,x-b,_-T,I-P),qn.setUnnormalized(c[4],h-p,x-v,_-E,I-A),qn.setUnnormalized(c[5],h+p,x+v,_+E,I+A),c}t.fromProjectionMatrix=o;function i(c,u){let d=u.center,m=-u.radius;for(let p=0;p<6;++p)if(qn.distanceToPoint(c[p],d)0?u.max[0]:u.min[0],a[1]=m.normal[1]>0?u.max[1]:u.min[1],a[2]=m.normal[2]>0?u.max[2]:u.min[2],qn.distanceToPoint(m,a)<0)return!1}return!0}t.intersectsBox3D=s;function l(c,u){for(let d=0;d<6;++d)if(qn.distanceToPoint(c[d],u)<0)return!1;return!0}t.containsPoint=l})(up||(up={}));var t2=qn.distanceToPoint,r2=up.intersectsSphere3D,n2=te.fromArray,nH=bo();function fk(t,e){return e&&e.instanceCounts.length>=t?e:{firsts:new Int32Array(t),counts:new Int32Array(t),offsets:new Int32Array(t),instanceCounts:new Int32Array(t),baseVertices:new Int32Array(t),baseInstances:new Uint32Array(t),count:0,uniforms:[]}}function Ea(t,e,r){let n=nH(),o=fk(0),i=[],a=!1,s=-1,l=te(),c=()=>{var u;let d=(u=e.lodLevels)===null||u===void 0?void 0:u.ref.value;if(d&&d.length>0){let{cellCount:m}=e.instanceGrid.ref.value;i.length=d.length;for(let p=0,h=d.length;p{var h,f;if(a=!1,e.drawCount.ref.value===0||e.instanceCount.ref.value===0||e.instanceGrid.ref.value.cellSize<=1)return;let{cellOffsets:b,cellSpheres:v,cellCount:x,batchOffsets:S,batchSpheres:T,batchCount:E,batchCell:_,batchSize:D}=e.instanceGrid.ref.value,[P,A]=e.uLod.ref.value,I=P!==0||A!==0,k=2*D,M=(h=e.lodLevels)===null||h===void 0?void 0:h.ref.value;if(M&&M.length>0){if(((f=e.lodLevels)===null||f===void 0?void 0:f.ref.version)!==s)c();else for(let R=0,B=M.length;RA)){Ee&&(p.culled.lod+=b[_[F-1]+1]-b[_[B]]);continue}if(!r2(d,l)){Ee&&(p.culled.frustum+=b[_[F-1]+1]-b[_[B]]);continue}if(m!==null&&m(l)){Ee&&(p.culled.occlusion+=b[_[F-1]+1]-b[_[B]]);continue}for(let H=B;HA)){Ee&&(p.culled.lod+=j);continue}if(!r2(d,l)){Ee&&(p.culled.frustum+=j);continue}if(m!==null&&O-l.radiusM[J][1])continue;let ae=i[J],Z=ae.count;Z>0&&ae.baseInstances[Z-1]+ae.instanceCounts[Z-1]===L&&ae.counts[Z-1]===M[J][3]?ae.instanceCounts[Z-1]+=j:(ae.counts[Z]=M[J][3],ae.instanceCounts[Z]=j,ae.baseInstances[Z]=L,ae.count+=1)}}}}else{o=fk(x,o);let{baseInstances:R,instanceCounts:B,counts:F}=o,G=0;for(let V=0;VA){Ee&&(p.culled.lod+=b[_[Q-1]+1]-b[_[H]]);continue}}if(!r2(d,l)){Ee&&(p.culled.frustum+=b[_[Q-1]+1]-b[_[H]]);continue}if(m!==null&&m(l)){Ee&&(p.culled.occlusion+=b[_[Q-1]+1]-b[_[H]]);continue}for(let Y=H;YA)){Ee&&(p.culled.lod+=$);continue}if(!r2(d,l)){Ee&&(p.culled.frustum+=$);continue}if(m!==null&&ae-l.radius0&&R[G-1]+B[G-1]===O?B[G-1]+=$:(F[G]=e.drawCount.ref.value,B[G]=$,R[G]=O,G+=1)}}}o.count=G,i.length=1,i[0]=o,i[0].uniforms.length=0}a=!0},uncull:()=>{a=!1},render:(u,d)=>{e.uAlpha&&e.alpha&&C.updateIfChanged(e.uAlpha,Wo(e.alpha.ref.value*r.alphaFactor,0,1)),t.render(u,d,a?i:void 0)},getProgram:u=>t.getProgram(u),setTransparency:u=>t.setTransparency(u),update:()=>{t.update(),c()},dispose:()=>t.destroy()}}function mr(t,e){return{id:nH(),values:e,render:()=>t.render("compute",0),update:()=>t.update(),dispose:()=>t.destroy()}}var Jx=new Float32Array([1,1,-1,1,-1,-1,-1,-1,1,-1,1,1]),Er={drawCount:Mr("number"),instanceCount:Mr("number"),aPosition:hr("float32",2,0),uQuadScale:ee("v2")},Ir={drawCount:C.create(6),instanceCount:C.create(1),aPosition:C.create(Jx),uQuadScale:C.create(ne.create(1,1))},Bde=U(w({},Er),{tColor:We("texture","rgba","ubyte","nearest"),uTexSize:ee("v2")}),Ode=Qt("copy",zr,tH);function dp(t,e){let r=U(w({},Ir),{tColor:C.create(e),uTexSize:C.create(ne.create(e.getWidth(),e.getHeight()))}),n=w({},Bde),o=dr(t,"triangles",Ode,n,r);return mr(o,r)}var oH=new Uint32Array([0,1,2,1,3,2]),Fde=new Float32Array([0,1,0,0,1,1,1,0]),iH={nearest:"Nearest",catmulrom:"Catmulrom (Cubic)",mitchell:"Mitchell (Cubic)",bspline:"B-Spline (Cubic)"},aH=Object.keys(iH);var fd;(function(t){function e(m,p,h,f){return f?o(m,p,h,f):n(m,p,h)}t.create=e;function r(m){return Ai([m.cornerBuffer.ref.version])}function n(m,p,h){let f=te(),b=-1,v=m.width,x=m.height,S={kind:"image",imageTexture:C.create(m),imageTextureDim:C.create(ne.create(v,x)),cornerBuffer:C.create(p),groupTexture:C.create(h),get boundingSphere(){let T=r(S);if(T!==b){let E=Nde(S.cornerBuffer.ref.value);te.copy(f,E),b=T}return f}};return S}function o(m,p,h,f){let b=m.width,v=m.height;return C.update(f.imageTexture,m),C.update(f.imageTextureDim,ne.set(f.imageTextureDim.ref.value,b,v)),C.update(f.cornerBuffer,p),C.update(f.groupTexture,h),f}function i(m){let p=Zr(0,4,Uint8Array),h=m?m.cornerBuffer.ref.value:new Float32Array(8*3),f=Zr(0,4,Uint8Array);return e(p,h,f,m)}t.createEmpty=i,t.Params=U(w({},ge.Params),{interpolation:g.Select("bspline",g.objectToOptions(iH))}),t.Utils={Params:t.Params,createEmpty:i,createValues:a,createValuesSimple:s,updateValues:l,updateBoundingSphere:c,createRenderableState:u,updateRenderableState:d,createPositionIterator:()=>jt(1,1,1,()=>Lo)};function a(m,p,h,f,b){let{instanceCount:v,groupCount:x}=h,S=t.Utils.createPositionIterator(m,p),T=uo(h,S,f.color),E=b.instanceGranularity?jr(v,"instance"):jr(v*x,"groupInstance"),_=ga(),D=ya(),P=xa(),A=ba(),I=va(),k={drawCount:oH.length,vertexCount:Jx.length/3,groupCount:x,instanceCount:v},M=te.clone(m.boundingSphere),R=Hn(M,p.aTransform.ref.value,v,0);return U(w(w(w(w(w(w(w(w(w({dGeometryType:C.create("image")},T),E),_),D),P),A),I),p),ge.createValues(b,k)),{aPosition:m.cornerBuffer,aUv:C.create(Fde),elements:C.create(oH),aGroup:C.create(Ri(new Float32Array(4))),boundingSphere:C.create(R),invariantBoundingSphere:C.create(M),uInvariantBoundingSphere:C.create(at.ofSphere(M)),dInterpolation:C.create(b.interpolation),uImageTexDim:m.imageTextureDim,tImageTex:m.imageTexture,tGroupTex:m.groupTexture})}function s(m,p,h,f,b){let v=ge.createSimple(h,f,b),x=w(w({},g.getDefaultValues(t.Params)),p);return a(m,v.transform,v.locationIterator,v.theme,x)}function l(m,p){ge.updateValues(m,p),C.updateIfChanged(m.dInterpolation,p.interpolation)}function c(m,p){let h=te.clone(p.boundingSphere),f=Hn(h,m.aTransform.ref.value,m.instanceCount.ref.value,0);te.equals(f,m.boundingSphere.ref.value)||C.update(m.boundingSphere,f),te.equals(h,m.invariantBoundingSphere.ref.value)||(C.update(m.invariantBoundingSphere,h),C.update(m.uInvariantBoundingSphere,at.fromSphere(m.uInvariantBoundingSphere.ref.value,h)))}function u(m){let p=ge.createRenderableState(m);return p.opaque=!1,p}function d(m,p){ge.updateRenderableState(m,p),m.opaque=!1}})(fd||(fd={}));function Nde(t){let e=y(),r=[];for(let i=0,a=t.length;in&&(n=a)}let o=te.create(e,n);return te.setExtrema(o,r),o}var xo;(function(t){function e(h,f,b,v,x,S,T,E,_,D){return D?i(h,f,b,v,x,S,T,E,_,D):o(h,f,b,v,x,S,T,E,_)}t.create=e;function r(h){let f=h?h.mappingBuffer.ref.value:new Float32Array(0),b=h?h.indexBuffer.ref.value:new Uint32Array(0),v=h?h.groupBuffer.ref.value:new Float32Array(0),x=h?h.startBuffer.ref.value:new Float32Array(0),S=h?h.endBuffer.ref.value:new Float32Array(0),T=h?h.scaleBuffer.ref.value:new Float32Array(0),E=h?h.capBuffer.ref.value:new Float32Array(0),_=h?h.colorModeBuffer.ref.value:new Float32Array(0);return e(f,b,v,x,S,T,E,_,0,h)}t.createEmpty=r;function n(h){return Ai([h.cylinderCount,h.mappingBuffer.ref.version,h.indexBuffer.ref.version,h.groupBuffer.ref.version,h.startBuffer.ref.version,h.endBuffer.ref.version,h.scaleBuffer.ref.version,h.capBuffer.ref.version,h.colorModeBuffer.ref.version])}function o(h,f,b,v,x,S,T,E,_){let D=te(),P,A=-1,I=-1,k={kind:"cylinders",cylinderCount:_,mappingBuffer:C.create(h),indexBuffer:C.create(f),groupBuffer:C.create(b),startBuffer:C.create(v),endBuffer:C.create(x),scaleBuffer:C.create(S),capBuffer:C.create(T),colorModeBuffer:C.create(E),get boundingSphere(){let M=n(k);if(M!==A){let R=Pl(k.startBuffer.ref.value,k.cylinderCount*6,6),B=Pl(k.endBuffer.ref.value,k.cylinderCount*6,6);te.expandBySphere(D,R,B),A=M}return D},get groupMapping(){return k.groupBuffer.ref.version!==I&&(P=Zc(k.groupBuffer.ref.value,k.cylinderCount,6),I=k.groupBuffer.ref.version),P},setBoundingSphere(M){te.copy(D,M),A=n(k)}};return k}function i(h,f,b,v,x,S,T,E,_,D){return _>D.cylinderCount&&(C.update(D.mappingBuffer,h),C.update(D.indexBuffer,f)),D.cylinderCount=_,C.update(D.groupBuffer,b),C.update(D.startBuffer,v),C.update(D.endBuffer,x),C.update(D.scaleBuffer,S),C.update(D.capBuffer,T),C.update(D.colorModeBuffer,E),D}function a(h,f){let b=h.startBuffer.ref.value;$c(f,b,0,h.cylinderCount*6),C.update(h.startBuffer,b);let v=h.endBuffer.ref.value;$c(f,v,0,h.cylinderCount*6),C.update(h.endBuffer,v)}t.transform=a,t.Params=U(w({},ge.Params),{sizeFactor:g.Numeric(1,{min:0,max:10,step:.1}),sizeAspectRatio:g.Numeric(1,{min:0,max:3,step:.01}),doubleSided:g.Boolean(!1,ge.CustomQualityParamInfo),ignoreLight:g.Boolean(!1,ge.ShadingCategory),xrayShaded:g.Select(!1,[[!1,"Off"],[!0,"On"],["inverted","Inverted"]],ge.ShadingCategory),transparentBackfaces:g.Select("off",g.arrayToOptions(["off","on","opaque"]),ge.ShadingCategory),solidInterior:g.Boolean(!0,ge.ShadingCategory),bumpFrequency:g.Numeric(0,{min:0,max:10,step:.1},ge.ShadingCategory),bumpAmplitude:g.Numeric(1,{min:0,max:5,step:.1},ge.ShadingCategory),colorMode:g.Select("default",g.arrayToOptions(["default","interpolate"]),ge.ShadingCategory)}),t.Utils={Params:t.Params,createEmpty:r,createValues:l,createValuesSimple:c,updateValues:u,updateBoundingSphere:d,createRenderableState:m,updateRenderableState:p,createPositionIterator:s};function s(h,f){let b=h.cylinderCount*6,v=f.instanceCount.ref.value,x=Ss(),S=x.position,T=h.startBuffer.ref.value,E=h.endBuffer.ref.value,_=f.aTransform.ref.value;return jt(b,v,2,(P,A)=>{let I=P%6===0?T:E;return A<0?y.fromArray(S,I,P*3):y.transformMat4Offset(S,I,_,0,P*3,A*16),x})}function l(h,f,b,v,x){let{instanceCount:S,groupCount:T}=b,E=s(h,f),_=uo(b,E,v.color),D=Sa(b,v.size),P=x.instanceGranularity?jr(S,"instance"):jr(S*T,"groupInstance"),A=ga(),I=ya(),k=xa(),M=ba(),R=va(),B={drawCount:h.cylinderCount*4*3,vertexCount:h.cylinderCount*6,groupCount:T,instanceCount:S},F=bf(D)*x.sizeFactor,G=te.clone(h.boundingSphere),V=Hn(G,f.aTransform.ref.value,S,0);return U(w(U(w(w(w(w(w(w(w(w(w({dGeometryType:C.create("cylinders"),aMapping:h.mappingBuffer,aGroup:h.groupBuffer,aStart:h.startBuffer,aEnd:h.endBuffer,aScale:h.scaleBuffer,aCap:h.capBuffer,aColorMode:h.colorModeBuffer,elements:h.indexBuffer,boundingSphere:C.create(V),invariantBoundingSphere:C.create(G),uInvariantBoundingSphere:C.create(at.ofSphere(G))},_),D),P),A),I),k),M),R),f),{padding:C.create(F)}),ge.createValues(x,B)),{uSizeFactor:C.create(x.sizeFactor*x.sizeAspectRatio),uDoubleSided:C.create(x.doubleSided),dIgnoreLight:C.create(x.ignoreLight),dXrayShaded:C.create(x.xrayShaded==="inverted"?"inverted":x.xrayShaded===!0?"on":"off"),dTransparentBackfaces:C.create(x.transparentBackfaces),dSolidInterior:C.create(x.solidInterior),uBumpFrequency:C.create(x.bumpFrequency),uBumpAmplitude:C.create(x.bumpAmplitude),dDualColor:C.create(x.colorMode==="interpolate")})}function c(h,f,b,v,x){let S=ge.createSimple(b,v,x),T=w(w({},g.getDefaultValues(t.Params)),f);return l(h,S.transform,S.locationIterator,S.theme,T)}function u(h,f){ge.updateValues(h,f),C.updateIfChanged(h.uSizeFactor,f.sizeFactor*f.sizeAspectRatio),C.updateIfChanged(h.uDoubleSided,f.doubleSided),C.updateIfChanged(h.dIgnoreLight,f.ignoreLight),C.updateIfChanged(h.dXrayShaded,f.xrayShaded==="inverted"?"inverted":f.xrayShaded===!0?"on":"off"),C.updateIfChanged(h.dTransparentBackfaces,f.transparentBackfaces),C.updateIfChanged(h.dSolidInterior,f.solidInterior),C.updateIfChanged(h.uBumpFrequency,f.bumpFrequency),C.updateIfChanged(h.uBumpAmplitude,f.bumpAmplitude),C.updateIfChanged(h.dDualColor,f.colorMode==="interpolate")}function d(h,f){let b=te.clone(f.boundingSphere),v=Hn(b,h.aTransform.ref.value,h.instanceCount.ref.value,0);te.equals(v,h.boundingSphere.ref.value)||C.update(h.boundingSphere,v),te.equals(b,h.invariantBoundingSphere.ref.value)||(C.update(h.invariantBoundingSphere,b),C.update(h.uInvariantBoundingSphere,at.fromSphere(h.uInvariantBoundingSphere.ref.value,b)))}function m(h){let f=ge.createRenderableState(h);return p(f,h),f}function p(h,f){ge.updateRenderableState(h,f),h.opaque=h.opaque&&!f.xrayShaded,h.writeDepth=h.opaque}})(xo||(xo={}));var eo;(function(t){function e(a){switch(a.kind){case"mesh":return a.triangleCount*3;case"points":return a.pointCount;case"spheres":return a.sphereCount*2*3;case"cylinders":return a.cylinderCount*4*3;case"text":return a.charCount*2*3;case"lines":return a.lineCount*2*3;case"direct-volume":return 12*3;case"image":return 2*3;case"texture-mesh":return a.vertexCount}}t.getDrawCount=e;function r(a){switch(a.kind){case"mesh":return a.vertexCount;case"points":return a.pointCount;case"spheres":return a.sphereCount*6;case"cylinders":return a.cylinderCount*6;case"text":return a.charCount*4;case"lines":return a.lineCount*4;case"direct-volume":let[s,l,c]=a.gridDimension.ref.value;return s*l*c;case"image":return 4;case"texture-mesh":return a.vertexCount}}t.getVertexCount=r;function n(a){switch(a.kind){case"mesh":case"points":case"spheres":case"cylinders":case"text":case"lines":return e(a)===0?0:Mi(a.groupBuffer.ref.value)+1;case"direct-volume":return 1;case"image":return Mi(a.groupTexture.ref.value.array)+1;case"texture-mesh":return a.groupCount}}t.getGroupCount=n;function o(a){switch(a.kind){case"mesh":return Be.Utils;case"points":return Il.Utils;case"spheres":return Ni.Utils;case"cylinders":return xo.Utils;case"text":return Bo.Utils;case"lines":return Sr.Utils;case"direct-volume":return ta.Utils;case"image":return fd.Utils;case"texture-mesh":return Ko.Utils}}t.getUtils=o;function i(a,s){return s==="instance"&&a.nonInstanceable?"group":s}t.getGranularity=i})(eo||(eo={}));var Vde=1,zde="Assigns sizes as defined by the shape object.",sH={};function Ude(t){return sH}function o2(t,e){return{factory:o2,granularity:"groupInstance",size:r=>bi.isLocation(r)?r.shape.getSize(r.group,r.instance):Vde,props:e,description:zde}}var lH={name:"shape-group",label:"Shape Group",category:"",factory:o2,getParams:Ude,defaultValues:g.getDefaultValues(sH),isApplicable:t=>!!t.shape};var Gde=ce(13421772),jde="Assigns colors as defined by the shape object.",cH={};function Hde(t){return cH}function i2(t,e){return{factory:i2,granularity:"groupInstance",color:r=>bi.isLocation(r)?r.shape.getColor(r.group,r.instance):Gde,props:e,description:jde}}var uH={name:"shape-group",label:"Shape Group",category:zt.Misc,factory:i2,getParams:Hde,defaultValues:g.getDefaultValues(cH),isApplicable:t=>!!t.shape};var qde=U(w({},_a),{aPosition:hr("float32",3,0),elements:eu("uint32"),uBboxMin:ee("v3"),uBboxMax:ee("v3"),uBboxSize:ee("v3"),uMaxSteps:ee("i"),uStepScale:ee("f"),uJumpLength:ee("f"),uTransform:ee("m4"),uGridDim:ee("v3"),tTransferTex:We("image-uint8","alpha","ubyte","linear"),uTransferScale:ee("f","material"),dGridTexType:Ye("string",["2d","3d"]),uGridTexDim:ee("v3"),tGridTex:We("texture","rgba","ubyte","linear"),uGridStats:ee("v4"),uCellDim:ee("v3"),uCartnToUnit:ee("m4"),uUnitToCartn:ee("m4"),dPackedGroup:Ye("boolean"),dAxisOrder:Ye("string",["012","021","102","120","201","210"]),dIgnoreLight:Ye("boolean"),dXrayShaded:Ye("string",["off","on","inverted"])});function dH(t,e,r,n,o,i){let a=w(w(w(w({},Ca),Ta),wa),qde);t.isWebGL2||(a.uMaxSteps=Ye("number"));let s={uObjectId:C.create(e)},c=Pa(t,"triangles",SG,a,w(w({},r),s),o,i);return Ea(c,r,n)}var Wde=U(w({},_a),{aGroup:hr("float32",1,0),aPosition:hr("float32",3,0),aNormal:hr("float32",3,0),elements:eu("uint32"),dVaryingGroup:Ye("boolean"),dFlatShaded:Ye("boolean"),uDoubleSided:ee("b","material"),dFlipSided:Ye("boolean"),dIgnoreLight:Ye("boolean"),dXrayShaded:Ye("string",["off","on","inverted"]),dTransparentBackfaces:Ye("string",["off","on","opaque"]),uBumpFrequency:ee("f","material"),uBumpAmplitude:ee("f","material"),meta:Mr("unknown")});function mH(t,e,r,n,o,i){let a=w(w(w(w({},Ca),Ta),wa),Wde),s={uObjectId:C.create(e)},c=Pa(t,"triangles",zT,a,w(w({},r),s),o,i);return Ea(c,r,n)}var Xde=U(w(w({},_a),sm),{aGroup:hr("float32",1,0),aPosition:hr("float32",3,0),dPointSizeAttenuation:Ye("boolean"),dPointStyle:Ye("string",["square","circle","fuzzy"])});function pH(t,e,r,n,o,i){let a=w(w(w(w({},Ca),Ta),wa),Xde),s={uObjectId:C.create(e)},c=Pa(t,"points",gG,a,w(w({},r),s),o,i);return Ea(c,r,n)}var Yde=U(w(w({},_a),sm),{aGroup:hr("float32",1,0),aMapping:hr("float32",2,0),aStart:hr("float32",3,0),aEnd:hr("float32",3,0),elements:eu("uint32"),dLineSizeAttenuation:Ye("boolean"),uDoubleSided:ee("b","material"),dFlipSided:Ye("boolean")});function fH(t,e,r,n,o,i){let a=w(w(w(w({},Ca),Ta),wa),Yde),s={uObjectId:C.create(e)},c=Pa(t,"triangles",xG,a,w(w({},r),s),o,i);return Ea(c,r,n)}var Qde=U(w(w({},_a),sm),{uTexDim:ee("v2"),tPositionGroup:We("image-float32","rgba","float","nearest"),padding:Mr("number"),uDoubleSided:ee("b","material"),dIgnoreLight:Ye("boolean"),dXrayShaded:Ye("string",["off","on","inverted"]),dTransparentBackfaces:Ye("string",["off","on","opaque"]),dSolidInterior:Ye("boolean"),dClipPrimitive:Ye("boolean"),dApproximate:Ye("boolean"),uAlphaThickness:ee("f"),uBumpFrequency:ee("f","material"),uBumpAmplitude:ee("f","material"),lodLevels:Mr("unknown"),centerBuffer:Mr("float32"),groupBuffer:Mr("float32")});function hH(t,e,r,n,o,i){let a=w(w(w(w({},Ca),Ta),wa),Qde),s={uObjectId:C.create(e)},c=Pa(t,"triangles",yG,a,w(w({},r),s),o,i);return Ea(c,r,n)}var Kde=U(w(w({},_a),sm),{aGroup:hr("float32",1,0),aPosition:hr("float32",3,0),aMapping:hr("float32",2,0),aDepth:hr("float32",1,0),elements:eu("uint32"),aTexCoord:hr("float32",2,0),tFont:We("image-uint8","alpha","ubyte","linear"),padding:Mr("number"),uBorderWidth:ee("f","material"),uBorderColor:ee("v3","material"),uOffsetX:ee("f","material"),uOffsetY:ee("f","material"),uOffsetZ:ee("f","material"),uBackgroundColor:ee("v3","material"),uBackgroundOpacity:ee("f","material")});function gH(t,e,r,n,o,i){let a=w(w(w(w({},Ca),Ta),wa),Kde),s={uObjectId:C.create(e)},c=Pa(t,"triangles",bG,a,w(w({},r),s),o,i);return Ea(c,r,n)}var $de=U(w({},_a),{uGeoTexDim:ee("v2","buffered"),tPosition:We("texture","rgb","float","nearest"),tGroup:We("texture","alpha","float","nearest"),tNormal:We("texture","rgb","float","nearest"),dVaryingGroup:Ye("boolean"),dFlatShaded:Ye("boolean"),uDoubleSided:ee("b","material"),dFlipSided:Ye("boolean"),dIgnoreLight:Ye("boolean"),dXrayShaded:Ye("string",["off","on","inverted"]),dTransparentBackfaces:Ye("string",["off","on","opaque"]),uBumpFrequency:ee("f","material"),uBumpAmplitude:ee("f","material"),meta:Mr("unknown")});function yH(t,e,r,n,o,i){let a=w(w(w(w({},Ca),Ta),wa),$de),s={uObjectId:C.create(e)},c=Pa(t,"triangles",zT,a,w(w({},r),s),o,i);return Ea(c,r,n)}var Zde=U(w({},_a),{aGroup:hr("float32",1,0),aPosition:hr("float32",3,0),aUv:hr("float32",2,0),elements:eu("uint32"),uImageTexDim:ee("v2"),tImageTex:We("image-uint8","rgba","ubyte","nearest"),tGroupTex:We("image-uint8","rgba","ubyte","nearest"),dInterpolation:Ye("string",aH)});function vH(t,e,r,n,o,i){let a=w(w(w(w({},Ca),Ta),wa),Zde),s={uObjectId:C.create(e)},c=Pa(t,"triangles",CG,a,w(w({},r),s),o,i);return Ea(c,r,n)}var Jde=U(w(w({},_a),sm),{aGroup:hr("float32",1,0),aStart:hr("float32",3,0),aEnd:hr("float32",3,0),aMapping:hr("float32",3,0),aScale:hr("float32",1,0),aCap:hr("float32",1,0),aColorMode:hr("float32",1,0),elements:eu("uint32"),padding:Mr("number"),uDoubleSided:ee("b","material"),dIgnoreLight:Ye("boolean"),dXrayShaded:Ye("string",["off","on","inverted"]),dTransparentBackfaces:Ye("string",["off","on","opaque"]),dSolidInterior:Ye("boolean"),uBumpFrequency:ee("f","material"),uBumpAmplitude:ee("f","material"),dDualColor:Ye("boolean")});function bH(t,e,r,n,o,i){let a=w(w(w(w({},Ca),Ta),wa),Jde),s={uObjectId:C.create(e)},c=Pa(t,"triangles",vG,a,w(w({},r),s),o,i);return Ea(c,r,n)}var eme=bo(0,2147483647),rl=bo(0,2147483647);function tu(t,e,r,n){return{id:eme(),type:t,values:e,state:r,materialId:n}}function xH(t,e,r){switch(e.type){case"mesh":return mH(t,e.id,e.values,e.state,e.materialId,r);case"points":return pH(t,e.id,e.values,e.state,e.materialId,r);case"spheres":return hH(t,e.id,e.values,e.state,e.materialId,r);case"cylinders":return bH(t,e.id,e.values,e.state,e.materialId,r);case"text":return gH(t,e.id,e.values,e.state,e.materialId,r);case"lines":return fH(t,e.id,e.values,e.state,e.materialId,r);case"direct-volume":return dH(t,e.id,e.values,e.state,e.materialId,r);case"image":return vH(t,e.id,e.values,e.state,e.materialId,r);case"texture-mesh":return yH(t,e.id,e.values,e.state,e.materialId,r)}throw new Error("unsupported type")}var Yt;(function(t){function e(u,d,m,p,h,f,b){return{id:vo.create22(),name:u,sourceData:d,geometry:m,transforms:b||[W.identity()],get groupCount(){return eo.getGroupCount(m)},getColor:p,getSize:h,getLabel:f}}t.create=e;function r(u){return{color:i2({shape:u},{}),size:o2({shape:u},{})}}t.getTheme=r;function n(u){let d=u.transforms.length,m=bi.Location(u),p=(h,f)=>(m.group=h,m.instance=f,m);return jt(u.groupCount,d,1,p)}t.groupIterator=n;function o(u,d,m,p,h){let f=h&&h.aTransform.ref.value.length>=u.length*16?h.aTransform.ref.value:new Float32Array(u.length*16);for(let b=0,v=u.length;b{for(let _=x[E],D=x[E+1];_{for(let _=x[E],D=x[E+1];_{let _=p.shape.getSize(E,T);f<_&&(f=_)})}else return te.copy(h,b.boundingSphere);return y.copy(h.center,l.center),h.radius=Math.sqrt(l.radiusSq),te.expand(h,h,f),h}t.getBoundingSphere=m})(bi||(bi={}));var xf={kind:"every-loci"};function So(t){return!!t&&t.kind==="every-loci"}var St={kind:"empty-loci"};function Wn(t){return!!t&&t.kind==="empty-loci"}function Ag(t){return!!t&&t.kind==="data-loci"}function tme(t,e){if(!ep(t.data,e.data)||t.tag!==e.tag||t.elements.length!==e.elements.length)return!1;for(let r=0,n=t.elements.length;rs(v)).filter(v=>!!v);e.reset();for(let v of b)e.includePositionRadius(v.center,v.radius);e.finishedIncludeStep();for(let v of b)e.radiusPositionRadius(v.center,v.radius);return e.getSphere()}t.getBundleBoundingSphere=r;function n(f,b){return So(f)&&So(b)||Wn(f)&&Wn(b)?!0:Ag(f)&&Ag(b)?tme(f,b):ue.isLoci(f)&&ue.isLoci(b)?ue.areLociEqual(f,b):z.Loci.is(f)&&z.Loci.is(b)?z.Loci.areEqual(f,b):ze.isLoci(f)&&ze.isLoci(b)?ze.areLociEqual(f,b):Yt.isLoci(f)&&Yt.isLoci(b)?Yt.areLociEqual(f,b):bi.isLoci(f)&&bi.isLoci(b)?bi.areLociEqual(f,b):xe.isLoci(f)&&xe.isLoci(b)?xe.areLociEqual(f,b):xe.Isosurface.isLoci(f)&&xe.Isosurface.isLoci(b)?xe.Isosurface.areLociEqual(f,b):xe.Cell.isLoci(f)&&xe.Cell.isLoci(b)?xe.Cell.areLociEqual(f,b):xe.Segment.isLoci(f)&&xe.Segment.isLoci(b)?xe.Segment.areLociEqual(f,b):!1}t.areEqual=n;function o(f){return!!f&&f.kind==="every-loci"}t.isEvery=o;function i(f){return So(f)?!1:Wn(f)?!0:Ag(f)?rme(f):ue.isLoci(f)?ue.isLociEmpty(f):z.Loci.is(f)?z.Loci.isEmpty(f):ze.isLoci(f)?ze.isLociEmpty(f):Yt.isLoci(f)?Yt.isLociEmpty(f):bi.isLoci(f)?bi.isLociEmpty(f):xe.isLoci(f)?xe.isLociEmpty(f):xe.Isosurface.isLoci(f)?xe.Isosurface.isLociEmpty(f):xe.Cell.isLoci(f)?xe.Cell.isLociEmpty(f):xe.Segment.isLoci(f)?xe.Segment.isLociEmpty(f):!1}t.isEmpty=i;function a(f,b){return b instanceof ue&&(z.Loci.is(f)?f=z.Loci.remap(f,b):ue.isLoci(f)?f=ue.remapLoci(f,b):ze.isLoci(f)&&(f=ze.remapLoci(f,b))),f}t.remap=a;function s(f,b){var v;if(!(f.kind==="every-loci"||f.kind==="empty-loci")){if(b||(b=te()),f.kind==="structure-loci")return te.copy(b,f.structure.boundary.sphere);if(f.kind==="element-loci")return te.copy(b,z.Loci.getBoundary(f).sphere);if(f.kind==="bond-loci")return ze.getBoundingSphere(f,b);if(f.kind==="shape-loci")return te.copy(b,f.shape.geometry.boundingSphere);if(f.kind==="group-loci")return bi.getBoundingSphere(f,b);if(f.kind==="data-loci")return(v=f.getBoundingSphere)===null||v===void 0?void 0:v.call(f,b);if(f.kind==="volume-loci")return xe.getBoundingSphere(f.volume,b);if(f.kind==="isosurface-loci")return xe.Isosurface.getBoundingSphere(f.volume,f.isoValue,b);if(f.kind==="cell-loci")return xe.Cell.getBoundingSphere(f.volume,f.indices,b);if(f.kind==="segment-loci")return xe.Segment.getBoundingSphere(f.volume,f.segments,b)}}t.getBoundingSphere=s;let l=te.zero();function c(f,b){let v=s(f,l);return v?y.copy(b||y(),v.center):void 0}t.getCenter=c;function u(f){if(!(f.kind==="every-loci"||f.kind==="empty-loci")){if(f.kind==="structure-loci")return z.Loci.getPrincipalAxes(ue.toStructureElementLoci(f.structure));if(f.kind==="element-loci")return z.Loci.getPrincipalAxes(f);if(f.kind==="bond-loci")return;if(f.kind==="shape-loci")return;if(f.kind==="group-loci")return;if(f.kind==="data-loci")return;if(f.kind==="volume-loci")return;if(f.kind==="isosurface-loci")return;if(f.kind==="cell-loci")return;if(f.kind==="segment-loci")return}}t.getPrincipalAxes=u;let d={element:f=>f,residue:f=>z.Loci.is(f)?z.Loci.extendToWholeResidues(f,!0):f,chain:f=>z.Loci.is(f)?z.Loci.extendToWholeChains(f):f,entity:f=>z.Loci.is(f)?z.Loci.extendToWholeEntities(f):f,model:f=>z.Loci.is(f)?z.Loci.extendToWholeModels(f):f,operator:f=>z.Loci.is(f)?z.Loci.extendToWholeOperators(f):f,structure:f=>z.Loci.is(f)?ue.toStructureElementLoci(f.structure):bi.isLoci(f)?Yt.Loci(f.shape):xe.Cell.isLoci(f)?xe.Loci(f.volume):f,elementInstances:f=>z.Loci.is(f)?z.Loci.extendToAllInstances(f):f,residueInstances:f=>z.Loci.is(f)?z.Loci.extendToAllInstances(z.Loci.extendToWholeResidues(f,!0)):f,chainInstances:f=>z.Loci.is(f)?z.Loci.extendToAllInstances(z.Loci.extendToWholeChains(f)):f};t.GranularityOptions=g.objectToOptions(d,f=>{switch(f){case"element":return"Atom/Coarse Element";case"elementInstances":return["Atom/Coarse Element Instances","With Symmetry"];case"structure":return"Structure/Shape";default:return f.indexOf("Instances")?[ic(f),"With Symmetry"]:ic(f)}});function m(f){return f.replace("Instances","")}t.simpleGranularity=m;function p(f,b){return d[b](f)}t.applyGranularity=p;function h(f,b,v=!1){return(b!=="element"||v)&&ze.isLoci(f)&&(f=ze.toStructureElementLoci(f)),ue.isLoci(f)&&(f=ue.toStructureElementLoci(f.structure)),z.Loci.is(f)&&(f=z.Loci.remap(f,f.structure.root)),b&&(f=p(f,b)),f}t.normalize=h})(st||(st={}));function SH(t){return Object.keys(t).filter(e=>!isNaN(e)).map(e=>+e).sort((e,r)=>e-r).map(e=>t[e])}function a2(t,e,r){return t&&t[e]!==void 0?t[e]:r}function Ie(t,...e){return{kind:"alias",aliases:e,symbol:t}}function s2(t,e,...r){return t.info.namespace="molscript-macro",t.id=`molscript-macro.${t.info.name}`,{kind:"macro",symbol:t,translate:e,aliases:[t.info.name,...r]}}function nme(t){return t.kind==="alias"||t.kind==="macro"}var ome=[["Core symbols",Ie(re.core.type.bool,"bool"),Ie(re.core.type.num,"num"),Ie(re.core.type.str,"str"),Ie(re.core.type.regex,"regex"),Ie(re.core.type.list,"list"),Ie(re.core.type.set,"set"),Ie(re.core.type.compositeKey,"composite-key"),Ie(re.core.logic.not,"not"),Ie(re.core.logic.and,"and"),Ie(re.core.logic.or,"or"),Ie(re.core.ctrl.if,"if"),Ie(re.core.ctrl.fn,"fn"),Ie(re.core.ctrl.eval,"eval"),Ie(re.core.math.add,"add","+"),Ie(re.core.math.sub,"sub","-"),Ie(re.core.math.mult,"mult","*"),Ie(re.core.math.div,"div","/"),Ie(re.core.math.pow,"pow","**"),Ie(re.core.math.mod,"mod"),Ie(re.core.math.min,"min"),Ie(re.core.math.max,"max"),Ie(re.core.math.cantorPairing,"cantor-pairing"),Ie(re.core.math.sortedCantorPairing,"sorted-cantor-pairing"),Ie(re.core.math.invertCantorPairing,"invert-cantor-pairing"),Ie(re.core.math.floor,"floor"),Ie(re.core.math.ceil,"ceil"),Ie(re.core.math.roundInt,"round"),Ie(re.core.math.trunc,"trunc"),Ie(re.core.math.abs,"abs"),Ie(re.core.math.sign,"sign"),Ie(re.core.math.sqrt,"sqrt"),Ie(re.core.math.cbrt,"cbrt"),Ie(re.core.math.sin,"sin"),Ie(re.core.math.cos,"cos"),Ie(re.core.math.tan,"tan"),Ie(re.core.math.asin,"asin"),Ie(re.core.math.acos,"acos"),Ie(re.core.math.atan,"atan"),Ie(re.core.math.sinh,"sinh"),Ie(re.core.math.cosh,"cosh"),Ie(re.core.math.tanh,"tanh"),Ie(re.core.math.exp,"exp"),Ie(re.core.math.log,"log"),Ie(re.core.math.log10,"log10"),Ie(re.core.math.atan2,"atan2"),Ie(re.core.rel.eq,"eq","="),Ie(re.core.rel.neq,"neq","!="),Ie(re.core.rel.lt,"lt","<"),Ie(re.core.rel.lte,"lte","<="),Ie(re.core.rel.gr,"gr",">"),Ie(re.core.rel.gre,"gre",">="),Ie(re.core.rel.inRange,"in-range"),Ie(re.core.str.concat,"concat"),Ie(re.core.str.match,"regex.match"),Ie(re.core.list.getAt,"list.get"),Ie(re.core.set.has,"set.has"),Ie(re.core.set.isSubset,"set.subset")],["Structure",["Types",Ie(re.structureQuery.type.entityType,"ent-type"),Ie(re.structureQuery.type.authResidueId,"auth-resid"),Ie(re.structureQuery.type.labelResidueId,"label-resid"),Ie(re.structureQuery.type.ringFingerprint,"ringfp"),Ie(re.structureQuery.type.bondFlags,"bond-flags")],["Slots",Ie(re.structureQuery.slot.elementSetReduce,"atom.set.reduce.value")],["Generators",Ie(re.structureQuery.generator.atomGroups,"sel.atom.atom-groups"),Ie(re.structureQuery.generator.queryInSelection,"sel.atom.query-in-selection"),Ie(re.structureQuery.generator.rings,"sel.atom.rings"),Ie(re.structureQuery.generator.empty,"sel.atom.empty"),Ie(re.structureQuery.generator.all,"sel.atom.all"),Ie(re.structureQuery.generator.bondedAtomicPairs,"sel.atom.bonded-pairs"),s2(Nx("sel.atom.atoms",Fx.Dictionary({0:IT(cd.Bool,{isOptional:!0,defaultValue:!0,description:"Test applied to each atom."})}),C0.ElementSelection,"A selection of singleton atom sets."),t=>q.struct.generator.atomGroups({"atom-test":a2(t,0,!0)})),s2(Nx("sel.atom.res",Fx.Dictionary({0:IT(cd.Bool,{isOptional:!0,defaultValue:!0,description:"Test applied to the 1st atom of each residue."})}),C0.ElementSelection,"A selection of atom sets grouped by residue."),t=>q.struct.generator.atomGroups({"residue-test":a2(t,0,!0),"group-by":q.ammp("residueKey")})),s2(Nx("sel.atom.chains",Fx.Dictionary({0:IT(cd.Bool,{isOptional:!0,defaultValue:!0,description:"Test applied to the 1st atom of each chain."})}),C0.ElementSelection,"A selection of atom sets grouped by chain."),t=>q.struct.generator.atomGroups({"chain-test":a2(t,0,!0),"group-by":q.ammp("chainKey")}))],["Modifiers",Ie(re.structureQuery.modifier.queryEach,"sel.atom.query-each"),Ie(re.structureQuery.modifier.intersectBy,"sel.atom.intersect-by"),Ie(re.structureQuery.modifier.exceptBy,"sel.atom.except-by"),Ie(re.structureQuery.modifier.unionBy,"sel.atom.union-by"),Ie(re.structureQuery.modifier.union,"sel.atom.union"),Ie(re.structureQuery.modifier.cluster,"sel.atom.cluster"),Ie(re.structureQuery.modifier.includeSurroundings,"sel.atom.include-surroundings"),Ie(re.structureQuery.modifier.surroundingLigands,"sel.atom.surrounding-ligands"),Ie(re.structureQuery.modifier.includeConnected,"sel.atom.include-connected"),Ie(re.structureQuery.modifier.expandProperty,"sel.atom.expand-property")],["Filters",Ie(re.structureQuery.filter.pick,"sel.atom.pick"),Ie(re.structureQuery.filter.first,"sel.atom.first"),Ie(re.structureQuery.filter.withSameAtomProperties,"sel.atom.with-same-atom-properties"),Ie(re.structureQuery.filter.intersectedBy,"sel.atom.intersected-by"),Ie(re.structureQuery.filter.within,"sel.atom.within"),Ie(re.structureQuery.filter.isConnectedTo,"sel.atom.is-connected-to")],["Combinators",Ie(re.structureQuery.combinator.intersect,"sel.atom.intersect"),Ie(re.structureQuery.combinator.merge,"sel.atom.merge"),Ie(re.structureQuery.combinator.distanceCluster,"sel.atom.dist-cluster")],["Atom Set Properties",Ie(re.structureQuery.atomSet.atomCount,"atom.set.atom-count"),Ie(re.structureQuery.atomSet.countQuery,"atom.set.count-query"),Ie(re.structureQuery.atomSet.reduce,"atom.set.reduce"),Ie(re.structureQuery.atomSet.propertySet,"atom.set.property")],["Atom Properties",Ie(re.structureQuery.atomProperty.core.elementSymbol,"atom.el"),Ie(re.structureQuery.atomProperty.core.vdw,"atom.vdw"),Ie(re.structureQuery.atomProperty.core.mass,"atom.mass"),Ie(re.structureQuery.atomProperty.core.atomicNumber,"atom.atomic-number"),Ie(re.structureQuery.atomProperty.core.x,"atom.x"),Ie(re.structureQuery.atomProperty.core.y,"atom.y"),Ie(re.structureQuery.atomProperty.core.z,"atom.z"),Ie(re.structureQuery.atomProperty.core.sourceIndex,"atom.src-index"),Ie(re.structureQuery.atomProperty.core.operatorName,"atom.op-name"),Ie(re.structureQuery.atomProperty.core.operatorKey,"atom.op-key"),Ie(re.structureQuery.atomProperty.core.modelIndex,"atom.model-index"),Ie(re.structureQuery.atomProperty.core.modelLabel,"atom.model-label"),Ie(re.structureQuery.atomProperty.core.atomKey,"atom.key"),Ie(re.structureQuery.atomProperty.core.bondCount,"atom.bond-count"),Ie(re.structureQuery.atomProperty.topology.connectedComponentKey,"atom.key.molecule"),Ie(re.structureQuery.atomProperty.macromolecular.authResidueId,"atom.auth-resid"),Ie(re.structureQuery.atomProperty.macromolecular.labelResidueId,"atom.label-resid"),Ie(re.structureQuery.atomProperty.macromolecular.residueKey,"atom.key.res"),Ie(re.structureQuery.atomProperty.macromolecular.chainKey,"atom.key.chain"),Ie(re.structureQuery.atomProperty.macromolecular.entityKey,"atom.key.entity"),Ie(re.structureQuery.atomProperty.macromolecular.isHet,"atom.is-het"),Ie(re.structureQuery.atomProperty.macromolecular.id,"atom.id"),Ie(re.structureQuery.atomProperty.macromolecular.label_atom_id,"atom.label_atom_id"),Ie(re.structureQuery.atomProperty.macromolecular.label_alt_id,"atom.label_alt_id","atom.altloc"),Ie(re.structureQuery.atomProperty.macromolecular.label_comp_id,"atom.label_comp_id"),Ie(re.structureQuery.atomProperty.macromolecular.label_asym_id,"atom.label_asym_id"),Ie(re.structureQuery.atomProperty.macromolecular.label_entity_id,"atom.label_entity_id"),Ie(re.structureQuery.atomProperty.macromolecular.label_seq_id,"atom.label_seq_id"),Ie(re.structureQuery.atomProperty.macromolecular.auth_atom_id,"atom.auth_atom_id","atom.name"),Ie(re.structureQuery.atomProperty.macromolecular.auth_comp_id,"atom.auth_comp_id","atom.resname"),Ie(re.structureQuery.atomProperty.macromolecular.auth_asym_id,"atom.auth_asym_id","atom.chain"),Ie(re.structureQuery.atomProperty.macromolecular.auth_seq_id,"atom.auth_seq_id","atom.resno"),Ie(re.structureQuery.atomProperty.macromolecular.pdbx_PDB_ins_code,"atom.pdbx_PDB_ins_code","atom.inscode"),Ie(re.structureQuery.atomProperty.macromolecular.pdbx_formal_charge,"atom.pdbx_formal_charge"),Ie(re.structureQuery.atomProperty.macromolecular.occupancy,"atom.occupancy"),Ie(re.structureQuery.atomProperty.macromolecular.B_iso_or_equiv,"atom.B_iso_or_equiv","atom.bfactor"),Ie(re.structureQuery.atomProperty.macromolecular.entityType,"atom.entity-type"),Ie(re.structureQuery.atomProperty.macromolecular.entitySubtype,"atom.entity-subtype"),Ie(re.structureQuery.atomProperty.macromolecular.entityPrdId,"atom.entity-prd-id"),Ie(re.structureQuery.atomProperty.macromolecular.entityDescription,"atom.entity-description"),Ie(re.structureQuery.atomProperty.macromolecular.objectPrimitive,"atom.object-primitive"),Ie(re.structureQuery.atomProperty.macromolecular.chemCompType,"atom.chem-comp-type"),Ie(re.structureQuery.atomProperty.macromolecular.secondaryStructureKey,"atom.key.sec-struct"),Ie(re.structureQuery.atomProperty.macromolecular.isModified,"atom.is-modified"),Ie(re.structureQuery.atomProperty.macromolecular.modifiedParentName,"atom.modified-parent")],["Bond Properties",Ie(re.structureQuery.bondProperty.order,"bond.order"),Ie(re.structureQuery.bondProperty.length,"bond.length"),Ie(re.structureQuery.bondProperty.key,"bond.key"),Ie(re.structureQuery.bondProperty.atomA,"bond.atom-a"),Ie(re.structureQuery.bondProperty.atomB,"bond.atom-b"),s2(Nx("bond.is",Fx.List(C0.BondFlag),cd.Bool,`Test if the current bond has at least one (or all if partial = false) of the specified flags: ${cd.oneOfValues(C0.BondFlag).join(", ")}`),t=>q.core.flags.hasAny([q.struct.bondProperty.flags(),q.struct.type.bondFlags(SH(t))]))]]],CH=[];function TH(t){for(let e of t)nme(e)?CH.push(e):e instanceof Array&&TH(e)}TH(ome);var l2=function(){let t=[],e=Object.create(null),r=Qc.create(),n=Qc.create();for(let o of CH){for(let a of o.aliases){if(t.push([a,o]),e[a])throw new Error(`Alias '${a}' already in use.`);e[a]=o}let i=o.symbol.args;if(i.kind!=="dictionary"){i.type.kind==="oneof"&&cd.oneOfValues(i.type).forEach(a=>Qc.add(n,a,a));continue}for(let a of Object.keys(i.map)){isNaN(a)&&Qc.add(r,a,a);let s=i.map[a];s.type.kind==="oneof"&&cd.oneOfValues(s.type).forEach(l=>Qc.add(n,l,l))}}return{symbolList:t,symbolMap:e,namedArgs:r.array,constants:n.array}}();var Hqe=l2.constants,qqe=l2.namedArgs,R0=l2.symbolMap,Wqe=l2.symbolList;function e1(t){if(Ja.isLiteral(t))return t;if(Ja.isSymbol(t)){if(!R0[t.name])return t;let a=R0[t.name];if(a.kind==="alias")return Ja.Symbol(R0[t.name].symbol.id);throw a.translate([])}let e=Ja.isSymbol(t.head)&&!!R0[t.head.name]&&R0[t.head.name].kind==="macro",r=e?t.head:e1(t.head),n=r!==t.head;if(!t.args)return e?e1(t.head):n?Ja.Apply(r):t;let o=!1,i;if(Ja.isArgumentsArray(t.args)){i=[];for(let a=0,s=t.args.length;a{let n=[],o;for(;;)if(o=ru(this._(e,r),o),o.status){if(r===o.index)throw new Error("infinite loop detected in .many() parser --- calling .many() on a parser which can accept zero characters is usually the cause");r=o.index,n.push(o.value)}else return ru(Cs(r,n),o)})}times(e,r){let n=typeof r>"u"?e:r;return new t((o,i)=>{let a=[],s,l,c;for(c=0;ce)}atMost(e){return this.times(0,e)}atLeast(e){return t.seq(this.times(e),this.many()).map(r=>[...r[0],...r[1]])}map(e){return new t((r,n)=>{let o=this._(r,n);return o.status?ru(Cs(o.index,e(o.value)),o):o})}skip(e){return hk(0,this,e)}mark(){return t.seq(t.index,this,t.index).map(e=>({start:e[0],value:e[1],end:e[2]}))}node(e){return t.seq(t.index,this,t.index).map(r=>({name:e,start:r[0],value:r[1],end:r[2]}))}sepBy(e){return t.sepBy(this,e)}sepBy1(e){return t.sepBy1(this,e)}lookahead(e){return this.skip(t.lookahead(e))}notFollowedBy(e){return this.skip(t.notFollowedBy(e))}desc(e){return new t((r,n)=>{let o=this._(r,n);return o.status||(o.expected=[e]),o})}fallback(e){return this.or(t.succeed(e))}ap(e){return t.seq(e,this).map(([r,n])=>r(n))}chain(e){return new t((r,n)=>{let o=this._(r,n);if(!o.status)return o;let i=e(o.value);return ru(i._(r,o.index),o)})}};(function(t){function e(P,A,I){let k=[].slice.call(arguments);if(k.length===0)throw new Error("seqMap needs at least one argument");let M=k.pop();return ume(M),n.apply(null,k).map(function(R){return M.apply(null,R)})}t.seqMap=e;function r(P){let A={};for(let I of Object.keys(P))(function(k){A[k]=T(()=>P[k](A))})(I);return A}t.createLanguage=r;function n(...P){let A=P.length;return new t((I,k)=>{let M,R=new Array(A),B=k;for(let F=0;F{let M;for(let R=0;R[k[0],...k[1]])}t.sepBy1=a;function s(P){let A=`'${P}'`;if(P.length===1){let I=P.charCodeAt(0);return new t((k,M)=>k.charCodeAt(M)===I?Cs(M+1,P):mp(M,A))}return new t((I,k)=>{let M=k+P.length;return I.slice(k,M)===P?Cs(M,P):mp(k,A)})}t.string=s;function l(P){let A=""+P;return A.slice(A.lastIndexOf("/")+1)}function c(P){return RegExp("^(?:"+P.source+")",l(P))}function u(P,A=0){let I=c(P),k=""+P;return new t((M,R)=>{let B=I.exec(M.slice(R));if(B){if(0<=A&&A<=B.length){let G=B[0],V=B[A];return Cs(R+G.length,V)}let F=`invalid match group (0 to ${B.length}) in ${k}`;return mp(R,F)}return mp(R,k)})}t.regexp=u;function d(P){return new t((A,I)=>Cs(I,P))}t.succeed=d;function m(P){return new t((A,I)=>mp(I,P))}t.fail=m;function p(P){if(cme(P))return new t((A,I)=>{let k=P._(A,I);return k.status&&(k.index=I,k.value=null),k});if(typeof P=="string")return p(s(P));if(P instanceof RegExp)return p(u(P));throw new Error("not a string, regexp, or parser: "+P)}t.lookahead=p;function h(P){return new t((A,I)=>{let k=P._(A,I);return k.status?mp(I,'not "'+A.slice(I,k.index)+'"'):Cs(I,null)})}t.notFollowedBy=h;function f(P){return new t((A,I)=>{let k=A.charAt(I);return IP.indexOf(A)>=0)}t.oneOf=b;function v(P){return f(A=>P.indexOf(A)<0)}t.noneOf=v;function x(P,A){return f(I=>P<=I&&I<=A).desc(P+"-"+A)}t.range=x;function S(P){return new t((A,I)=>{let k=I;for(;k{let M=P()._;return A._=M,M(I,k)});return A}t.lazy=T;function E(){return m("empty")}t.empty=E,t.index=new t(function(P,A){return Cs(A,_H(P,A))}),t.anyChar=new t((P,A)=>A>=P.length?mp(A,"any character"):Cs(A+1,P.charAt(A))),t.all=new t(function(P,A){return Cs(P.length,P.slice(A))}),t.eof=new t(function(P,A){return A{let i,a,s=o;for(let l=0;le.furthest)return t;let r=t.furthest===e.furthest?lme(t.expected,e.expected):e.expected;return{status:t.status,furthest:e.furthest,expected:r}}function _H(t,e){let r=t.slice(0,e).split(` +`),n=r.length,o=r[r.length-1].length+1;return{offset:e,line:n,column:o}}function ime(t){return t.length===1?t[0]:"one of "+t.join(", ")}function ame(t,e){let r=e.index,n=r.offset;if(n===t.length)return", got the end of the input";let o=n>0?"'...":"'",i=t.length-n>12?"...'":"'";return` at line ${r.line} column ${r.column}, got ${o}${t.slice(n,n+12)}${i}`}function sme(t,e){return`expected ${ime(e.expected)}${ame(t,e)}`}function lme(t,e){let r=t.length,n=e.length;if(r===0)return e;if(n===0)return t;let o=new Set,i=[];for(let a=0;afe.alt(o,d,i,a).trim(r)),o=fe.takeWhile(T=>T!=="`").trim("`").map(e.str),i=fe.regexp(/[^()\[\]{};`,\n\r\s]+/).map(e.symb),a=fe.regexp(/\s*;+([^\n\r]*)\n/,1).map(e.comment),s=n.many(),l=s.wrap("(",")").map(T=>e.list("(",T)),c=s.wrap("[","]").map(T=>e.list("[",T)),u=s.wrap("{","}").map(T=>e.list("{",T)),d=fe.alt(l,c,u),m=n.many();function p(T){return m.tryParse(T)}function h(T){switch(T.kind){case"string":return T.value;case"symbol":{let E=T.value;if(E.length>1)switch(E.charAt(0)){case".":return q.atomName(E.substr(1));case"_":return q.struct.type.elementSymbol([E.substr(1)])}return E==="true"?!0:E==="false"?!1:x(E)?+E:Ja.Symbol(E)}case"list":switch(T.bracket){case"[":return q.core.type.list(v(T.nodes).map(h));case"{":return q.core.type.set(v(T.nodes).map(h));case"(":{if(T.nodes[0].kind==="comment")throw new Error("Invalid expression");let E=h(T.nodes[0]);return Ja.Apply(E,f(T.nodes))}default:ur(T.bracket)}default:ur(T)}}function f(T){if(T.length<=1)return;if(!b(T)){let P=[];for(let A=1,I=T.length;A1&&I.value.charAt(0)===":"){let k=I.value.substr(1);for(++P;P=A)throw new Error(`There must be a value foolowed a named arg ':${k}'.`);if(T[P].kind==="comment")throw new Error("Invalid expression");E[k]=h(T[P]),isNaN(+k)&&(_=!1)}else E[D++]=h(I)}if(_){let P=Object.keys(E).map(I=>+I).sort((I,k)=>I-k),A=!0;for(let I=0,k=P.length;I1&&D.value.charAt(0)===":")return!0}return!1}function v(T){let E=!1;for(let _=0,D=T.length;__.kind!=="comment"):T}function x(T){return/-?(0|[1-9][0-9]*)([.][0-9]+)?([eE][+-]?[0-9]+)?/.test(T)&&!isNaN(+T)}function S(T){let E=p(T),_=[];for(let D of E)D.kind!=="comment"&&(_[_.length]=h(D));return _}t.parse=S})(gk||(gk={}));var Cn=q;function ra(t,e,r){let n=fe.lazy(()=>fe.seq(t,n).map(o=>r(...o)).or(e));return n}function t1(t,e,r){return fe.seqMap(e,t.many(),(n,o)=>o.reduce((i,a)=>r(a,i),n))}function Vi(t,e,r){return fe.seqMap(e,fe.seq(t,e).many(),(n,o)=>o.reduce((i,a)=>{let[s,l]=a;return r(s,i,l)},n))}function Cf(t,e){return t.reduce((n,o)=>{let i=o.isUnsupported?pp(`operator '${o.name}' not supported`):o.map;return o.type(o.rule,n,i)},e)}function nu(t,e=0){return fe.optWhitespace.then(fe.regexp(t,e).skip(fe.optWhitespace))}function nl(t,e=0){return fe.regexp(t,e).skip(fe.optWhitespace)}function r1(t,e=0){return fe.optWhitespace.then(fe.regexp(t,e))}function c2(t,e){let r=e?`${t}|${Jm(e)}`:t,n=RegExp(`(${r})\\s+([-+]?[0-9]*\\.?[0-9]+)\\s+OF`,"i");return nu(n,2).map(parseFloat)}function pp(t){return function(){throw new Error(t)}}function n1(t){return t.length===1?t[0]:t.length>1?Cn.core.logic.and(t):void 0}function IH(t){return t.length===1?t[0]:t.length>1?Cn.core.logic.or(t):void 0}function yk(t,e){if(e&&e.op!==void 0&&e.val!==void 0){let r=[t,e.val];switch(e.op){case"=":return Cn.core.rel.eq(r);case"!=":return Cn.core.rel.neq(r);case">":return Cn.core.rel.gr(r);case"<":return Cn.core.rel.lt(r);case">=":return Cn.core.rel.gre(r);case"<=":return Cn.core.rel.lte(r);default:throw new Error(`operator '${e.op}' not supported`)}}else return e&&e.flags!==void 0?Cn.core.flags.hasAny([t,e.flags]):e&&e.min!==void 0&&e.max!==void 0?Cn.core.rel.inRange([t,e.min,e.max]):Array.isArray(e)?e.length>1?Cn.core.set.has([Cn.core.type.set(e),t]):Cn.core.rel.eq([t,e[0]]):Cn.core.rel.eq([t,e])}function Ia(t){return Cn.struct.generator.queryInSelection({0:t,query:Cn.struct.generator.all(),"in-complement":!0})}function Dl(t,e){return t.length{let n=t[r],o=pp(`property '${r}' not supported`),i=fe.regexp(n.regex).map(a=>(n.isUnsupported&&o(),yk(n.property,n.map(a))));n.isNumeric||(e[r]=i)}),e}function u2(t){let e=[];return Object.keys(t).sort(Dl).forEach(r=>{let n=t[r],o=pp(`property '${r}' not supported`),i=fe.regexp(n.regex).map(l=>(n.isUnsupported&&o(),yk(n.property,n.map(l)))),a=fe.regexp(vk(r,n.abbr)).trim(fe.optWhitespace),s=l=>Cn.struct.generator.atomGroups({[n.level]:l});n.isNumeric?e.push(a.then(fe.seq(fe.regexp(/>=|<=|=|!=|>|(n.isUnsupported&&o(),yk(n.property,{op:l[0],val:l[1]}))).map(s)):e.push(a.then(i).map(s))}),e}function L0(t){let e=[];return Object.keys(t).sort(Dl).forEach(r=>{let n=t[r],o=n.map?n.map:pp(`keyword '${r}' not supported`),i=fe.regexp(vk(r,n.abbr)).map(o);e.push(i)}),e}function AH(t,e){let r=[],n=fe.regexp(/\(\s*/),o=fe.regexp(/\s*\)/);return Object.keys(t).sort(Dl).forEach(i=>{let a=t[i],s=a.map?a.map:pp(`function '${i}' not supported`),l=fe.regexp(new RegExp(i,"i")).skip(n).then(e).skip(o).map(s);r.push(l)}),r}function o1(t,e){let r=[];return Object.keys(t).sort(Dl).forEach(n=>{let o=t[n],i=pp(`property '${n}' not supported`),a=fe.regexp(vk(n,o.abbr)).lookahead(e).map(()=>(o.isUnsupported&&i(),o.property));r.push(a)}),r}function B0(t,e,r,n){let o=[];for(let i in t)o.push(i),t[i].abbr&&o.push(...t[i].abbr);for(let i in e)o.push(i),e[i].abbr&&o.push(...e[i].abbr);return r.forEach(i=>{o.push(i.name),i.abbr&&o.push(...i.abbr)}),o}function uc(t){return Cn.core.type.set(t.map(Cn.atomName))}function dc(t){return Cn.struct.generator.queryInSelection({0:t,query:Cn.struct.generator.all()})}function Mg(t,e,r){switch(t.head.name){case"structure-query.atom-property.macromolecular.label_atom_id":return Cn.atomName(e);case"structure-query.atom-property.core.element-symbol":return Cn.es(e);case"structure-query.atom-property.macromolecular.secondary-structure-flags":return r&&(e=[r[e.toUpperCase()]||"none"]),Cn.struct.type.secondaryStructureFlags([e]);default:return e}}var EH="structure-query.atom-property.macromolecular.",dme=["entityKey","label_entity_id","entityType"],mme=["chainKey","label_asym_id","label_entity_id","auth_asym_id","entityType"],pme=["residueKey","label_comp_id","label_seq_id","auth_comp_id","auth_seq_id","pdbx_formal_charge","secondaryStructureKey","secondaryStructureFlags","isModified","modifiedParentName"];function kH(t){if(t.head.name.startsWith(EH)){let e=t.head.name.substr(EH.length);if(dme.includes(e))return"entity-test";if(mme.includes(e))return"chain-test";if(pme.includes(e))return"residue-test"}return"atom-test"}var fme=["structure-query.atom-property.macromolecular.secondary-structure-flags"];function MH(t,e){if(fme.includes(t.head.name)){let r=e[0].head,n=[];return e.forEach(o=>n.push(...o.args[0])),Cn.core.flags.hasAny([t,{head:r,args:n}])}else{if(e.length===1)return Cn.core.rel.eq([t,e[0]]);if(e.length>1)return Cn.core.set.has([Cn.core.type.set(e),t])}}function Cr(t){return Cn.struct.generator.atomGroups({"residue-test":Cn.core.set.has([Cn.core.type.set(t),Cn.ammp("label_comp_id")])})}var $o=q,ou=/[-+]?[0-9]*\.?[0-9]+/,i1=/[0-9]+/;function At(t){return t}var hme={none:"none",turn:"turn",sheet:"beta",helix:"helix",dna:"dna",rna:"rna",carbohydrate:"carbohydrate",helix310:"3-10",helixalpha:"alpha",helixpi:"pi",0:"none",1:"turn",2:"beta",3:"helix",4:"dna",5:"rna",6:"carbohydrate",7:"3-10",8:"alpha",9:"pi"};function bk(t){if(t.head){if(t.head.name&&t.head.name==="core.type.regex"&&(t=t.args[0].replace(/^\^|\$$/g,"")),t=hme[t.toString().toLowerCase()]||"none",["dna","rna","carbohydrate"].indexOf(t)!==-1)throw new Error("values 'dna', 'rna', 'carbohydrate' not yet supported for 'structure' property");return $o.struct.type.secondaryStructureFlags([t])}}var xk={adpmax:{"@desc":"the maximum anisotropic displacement parameter for the selected atom","@examples":[""],isUnsupported:!0,regex:ou,map:t=>parseFloat(t),level:"atom-test"},adpmin:{"@desc":"the minimum anisotropic displacement parameter for the selected atom","@examples":[""],isUnsupported:!0,regex:ou,map:t=>parseFloat(t),level:"atom-test"},altloc:{"@desc":"PDB alternate location identifier","@examples":["altloc = A"],regex:/[a-zA-Z0-9]/,map:At,level:"atom-test",property:$o.ammp("label_alt_id")},altname:{"@desc":"an alternative name given to atoms by some file readers (for example, P2N)","@examples":[""],isUnsupported:!0,regex:/[a-zA-Z0-9]/,map:At,level:"atom-test"},atomID:{"@desc":"special atom IDs for PDB atoms assigned by Jmol","@examples":[""],isUnsupported:!0,regex:i1,map:t=>parseInt(t),level:"atom-test"},atomIndex:{"@desc":"atom 0-based index; a unique number for each atom regardless of the number of models loaded","@examples":[""],isUnsupported:!0,regex:i1,map:t=>parseInt(t),level:"atom-test"},atomName:{"@desc":"atom name","@examples":["atomName = CA"],regex:/[a-zA-Z0-9]+/,map:t=>$o.atomName(t),level:"atom-test",property:$o.ammp("label_atom_id")},atomno:{"@desc":'sequential number; you can use "@" instead of "atomno=" -- for example, select @33 or Var x = @33 or @35',"@examples":[""],isUnsupported:!0,regex:i1,map:t=>parseInt(t),level:"atom-test"},atomType:{"@desc":"atom type (mol2, AMBER files) or atom name (other file types)","@examples":["atomType = OH"],regex:/[a-zA-Z0-9]+/,map:t=>$o.atomName(t),level:"atom-test",property:$o.ammp("label_atom_id")},atomX:{"@desc":"Cartesian X coordinate (or just X)","@examples":["x = 4.2"],abbr:["X"],isNumeric:!0,regex:ou,map:t=>parseFloat(t),level:"atom-test",property:$o.acp("x")},atomY:{"@desc":"Cartesian Y coordinate (or just Y)","@examples":["y < 42"],abbr:["Y"],isNumeric:!0,regex:ou,map:t=>parseFloat(t),level:"atom-test",property:$o.acp("y")},atomZ:{"@desc":"Cartesian Z coordinate (or just Z)","@examples":["Z > 10"],abbr:["Z"],isNumeric:!0,regex:ou,map:t=>parseFloat(t),level:"atom-test",property:$o.acp("z")},bondcount:{"@desc":"covalent bond count","@examples":["bondcount = 0"],isNumeric:!0,regex:i1,map:t=>parseInt(t),level:"atom-test",property:$o.acp("bondCount")},bondingRadius:{"@desc":"radius used for auto bonding; synonymous with ionic and ionicRadius","@examples":[""],abbr:["ionic","ionicRadius"],isUnsupported:!0,regex:ou,map:t=>parseFloat(t),level:"atom-test"},cell:{"@desc":'crystallographic unit cell, expressed either in lattice integer notation (111-999) or as a coordinate in ijk space, where {1 1 1} is the same as 555. ANDing two cells, for example select cell=555 and cell=556, selects the atoms on the common face. (Note: in the specifc case of CELL, only "=" is allowed as a comparator.)',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},configuration:{"@desc":'Only in the context {configuration=n}, this option selects the set of atoms with either no ALTLOC specified or those atoms having this index into the array of altlocs within its model. So, for example, if the model has altloc "A" and "B", select configuration=1 is equivalent to select altloc="" or altloc="A", and print {configuration=2} is equivalent to print {altloc="" or altloc="B"}. Configuration 0 is "all atoms in a model having configurations", and an invalid configuration number gives no atoms. (Note: in the specifc case of CONFIGURATION, only "=" is allowed as a comparator.)',"@examples":[""],isUnsupported:!0,regex:i1,map:t=>parseInt(t),level:"atom-test"},chain:{"@desc":'protein chain. For newer CIF files allowing multicharacter chain specifications, use quotations marks: select chain="AA". For these multicharacter desigations, case is not checked unless the CIF file has lower-case chain designations.',"@examples":["chain = A",'chain = "AA"'],regex:/[a-zA-Z0-9]+/,map:At,level:"chain-test",property:$o.ammp("auth_asym_id")},chainNo:{"@desc":'chain number; sequentially counted from 1 for each model; chainNo == 0 means"no chain" or PDB chain identifier indicated as a blank (Jmol 14.0).',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},color:{"@desc":"the atom color","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},covalentRadius:{"@desc":"covalent bonding radius, synonymous with covalent. Not used by Jmol, but could be used, for example, in {*}.spacefill={*}.covalentRadius.all.","@examples":[""],abbr:["covalent"],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},cs:{"@desc":"chemical shift calculated using computational results that include magnetic shielding tensors.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},element:{"@desc":'element symbol. The value of this parameter depends upon the context. Used with select structure=x, x can be either the quoted element symbol, "H", "He", "Li", etc. or atomic number. In all other contexts, the value is the element symbol. When the atom is a specific isotope, the string will contain the isotope number -- "13C", for example.',"@examples":["element=Fe"],regex:/[a-zA-Z]+/,map:t=>$o.es(t),level:"atom-test",property:$o.acp("elementSymbol")},elemno:{"@desc":"atomic element number","@examples":["elemno=8"],regex:/[0-9\s{}-]+/,map:t=>parseInt(t),level:"atom-test",property:$o.acp("atomicNumber")},eta:{"@desc":`Based on Carlos M. Duarte, Leven M. Wadley, and Anna Marie Pyle, RNA structure comparison, motif search and discovery using a reduced representation of RNA conformational space, Nucleic Acids Research, 2003, Vol. 31, No. 16 4755-4761. The parameter eta is the C4'[i-1]-P[i]-C4'[i]-P[i+1] dihedral angle; theta is the P[i]-C4'[i]-P[i+1]-C4'[i+1] dihedral angle. Both are measured on a 0-360 degree scale because they are commonly near 180 degrees. Using the commands plot PROPERTIES eta theta resno; select visible;wireframe only one can create these authors' "RNA worm" graph.`,"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},theta:{"@desc":`Based on Carlos M. Duarte, Leven M. Wadley, and Anna Marie Pyle, RNA structure comparison, motif search and discovery using a reduced representation of RNA conformational space, Nucleic Acids Research, 2003, Vol. 31, No. 16 4755-4761. The parameter eta is the C4'[i-1]-P[i]-C4'[i]-P[i+1] dihedral angle; theta is the P[i]-C4'[i]-P[i+1]-C4'[i+1] dihedral angle. Both are measured on a 0-360 degree scale because they are commonly near 180 degrees. Using the commands plot PROPERTIES eta theta resno; select visible;wireframe only one can create these authors' "RNA worm" graph.`,"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},file:{"@desc":"file number containing this atom","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},formalCharge:{"@desc":"formal charge","@examples":["formalCharge=1"],regex:ou,map:t=>parseFloat(t),level:"atom-test",property:$o.ammp("pdbx_formal_charge")},format:{"@desc":"format (label) of the atom.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},fXyz:{"@desc":"fractional XYZ coordinates","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},fX:{"@desc":"fractional X coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},fY:{"@desc":"fractional Y coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},fZ:{"@desc":"fractional Z coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},fuxyz:{"@desc":"fractional XYZ coordinates in the unitcell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},fux:{"@desc":"fractional X coordinate in the unitcell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},fuy:{"@desc":"fractional Y coordinate in the unitcell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},fuz:{"@desc":"fractional Z coordinate in the unit cell coordinate system","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},group:{"@desc":"3-letter residue code","@examples":["group = ALA"],regex:/[a-zA-Z0-9]{1,3}/,map:At,level:"residue-test",property:$o.ammp("label_comp_id")},group1:{"@desc":"single-letter residue code (amino acids only)","@examples":["group1 = G"],regex:/[a-zA-Z]/,map:At,level:"residue-test",property:$o.ammp("label_comp_id")},groupID:{"@desc":"group ID number: A unique ID for each amino acid or nucleic acid residue in a PDB file. 0 noGroup 1-5 ALA, ARG, ASN, ASP, CYS 6-10 GLN, GLU, GLY, HIS, ILE 11-15 LEU, LYS, MET, PHE, PRO 16-20 SER, THR, TRP, TYR, VAL 21-23 ASX, GLX, UNK 24-29 A, +A, G, +G, I, +I 30-35 C, +C, T, +T, U, +U Additional unique numbers are assigned arbitrarily by Jmol and cannot be used reproducibly.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},groupindex:{"@desc":"overall group index","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},hydrophobicity:{"@desc":"Aminoacid residue scale of hydrophobicity based on Rose, G. D., Geselowitz, A. R., Lesser, G. J., Lee, R. H., and Zehfus, M. H. (1985). Hydrophobicity of amino acid residues in globular proteins, Science, 229(4716):834-838.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},identify:{"@desc":"for a PDB/mmCIF file, a label such as [ILE]7^1:A.CD1%A/3 #47, which includes the group ([ILE]), residue number with optional insertion code (7^1), chain (:A), atom name (CD1), alternate location if present (%A), PDB model number (/3, for NMR models when one file is loaded; /file.model such as /2.3 if more than one file is loaded), and atom number (#47). For non-PDB data, the information is shorter -- for example, H15/2.1 #6, indicating atom name (H15), full file.model number (/2.1), and atom number (#6). If only a single model is loaded, %[identify] does not include the model number.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},insertion:{"@desc":"protein residue insertion code","@examples":["insertion=A"],regex:/[a-zA-Z0-9]/,map:At,level:"atom-test",property:$o.ammp("pdbx_PDB_ins_code")},label:{"@desc":"current atom label (same as format)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},mass:{"@desc":"atomic mass -- especially useful with appended .max or .sum","@examples":["mass > 13"],regex:ou,map:t=>parseFloat(t),level:"atom-test",property:$o.acp("mass")},model:{"@desc":"model number","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},modelindex:{"@desc":"a unique number for each model, starting with 0 and spanning all models in all files","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},modO:{"@desc":"currently calculated occupancy from modulation (0 to 100; NaN if atom has no occupancy modulation)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},modXYZ:{"@desc":"currently calculated displacement modulation (for incommensurately modulated structures). Also modX, modY, modZ for individual components. For atoms without modultion, {xx}.modXYZ is -1 and {xx}.modX is NaN, and in a label %[modXYZ] and %[modX] are blank.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},molecule:{"@desc":"molecule number","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},monomer:{"@desc":"monomer number (group number) in a polymer (usually a chain), starting with 1, or 0 if not part of a biopolymer -- that is, not a connected carbohydrate, amino acid, or nucleic acid (Jmol 14.3.15)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},ms:{"@desc":"magnetic shielding calculated from file-loaded tensors.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},occupancy:{"@desc":'CIF file site occupancy. In SELECT command comparisons ("select occupancy < 90"), an integer n implies measurement on a 0-100 scale; also, in the context %[occupancy] or %q for a label, the reported number is a percentage. In all other cases, such as when %Q is used in a label or when a decimal number is used in a comparison, the scale is 0.0 - 1.0.',"@examples":["occupancy < 1"],regex:ou,map:t=>parseFloat(t),level:"atom-test",property:$o.ammp("occupancy")},partialCharge:{"@desc":"partial charge","@examples":[""],isUnsupported:!0,regex:ou,map:t=>parseFloat(t),level:"atom-test"},phi:{"@desc":"protein group PHI angle for atom's residue","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},polymer:{"@desc":"sequential polymer number in a model, starting with 1.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},polymerLength:{"@desc":"polymer length","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},property_xx:{"@desc":"a property created using the DATA command","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},psi:{"@desc":"protein group PSI angle for the atom's residue","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},radius:{"@desc":'currently displayed radius -- In SELECT command comparisons ("select radius=n"), integer n implies Rasmol units 1/250 Angstroms; in all other cases or when a decimal number is used, the units are Angstroms.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},resno:{"@desc":"PDB residue number, not including insertion code (see also seqcode, below)","@examples":["resno = 100"],regex:/-?[0-9]+/,map:t=>parseInt(t),level:"residue-test",property:$o.ammp("auth_seq_id")},selected:{"@desc":"1.0 if atom is selected; 0.0 if not","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},sequence:{"@desc":'PDB one-character sequence code, as a string of characters, with "?" indicated where single-character codes are not available',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},seqcode:{"@desc":'PDB residue number, including insertion code (for example, 234^2; "seqcode" option added in Jmol 14.3.16)',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},seqid:{"@desc":"(mmCIF only) the value from _atom_site.label_seq_id; a pointer to _entity_poly_seq.num in the ENTITY_POLY_SEQ category specifying the sequence of monomers in a polymer. Allowance is made for the possibility of microheterogeneity in a sample by allowing a given sequence number to be correlated with more than one monomer id. (Jmol 14.2.3)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},shape:{"@desc":'hybridization geometry such as "tetrahedral"',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},site:{"@desc":"crystallographic site number","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},spacefill:{"@desc":"currently displayed radius","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},straightness:{"@desc":'quaternion-derived straightness (second derivative of the quaternion describing the orientation of the residue. This quantity will have different values depending upon the setting of quaternionFrame as "A" (alpha-carbon/phosphorus atom only), "C" (alpha-carbon/pyrimidine or purine base based), "P" (carbonyl-carbon peptide plane/phosphorus tetrahedron based), or "N" (amide-nitrogen based). The default is alpha-carbon based, which corresponds closely to the following combination of Ramachandran angles involving three consecutive residues i-1, i, and i+1: -psii-1 - phii + psii + phii+1.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},strucno:{"@desc":"a unique number for each helix, sheet, or turn in a model, starting with 1.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},structure:{"@desc":'The value of this parameter depends upon the context. Used with select structure=x, x can be either the quoted keyword "none", "turn", "sheet", "helix", "dna", "rna", or "carbohydrate" or a respective number 0-6. In the context {*}.structure, the return value is a number; in the context label %[structure], the return is one of the six keywords.',"@examples":['structure="helix"',"structure=3"],regex:/none|turn|sheet|helix|dna|rna|carbohydrate|[0-6]/i,map:At,level:"residue-test",property:"structure"},substructure:{"@desc":'like structure, the value of this parameter depends upon the context. Used with select substructure=x, x can be either the quoted keyword "none", "turn", "sheet", "helix", "dna", "rna", "carbohydrate", "helix310", "helixalpha", or "helixpi", or the respective number 0-9. In the context {*}.substructure, the return value is a number; in the context label %[substructure], the return is one of the nine keywords.',"@examples":['substructure = "alphahelix"',"substructure =9"],regex:/none|turn|sheet|helix|dna|rna|carbohydrate|helix310|helixalpha|helixpi|[0-9]/i,map:At,level:"residue-test",property:"structure"},surfacedistance:{"@desc":"A value related to the distance of an atom to a nominal molecular surface. 0 indicates at the surface. Positive numbers are minimum distances in Angstroms from the given atom to the surface.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},symop:{"@desc":'the first symmetry operation code that generated this atom by Jmol; an integer starting with 1. See also symmetry, below. This operator is only present if the file contains space group information and the file was loaded using the {i, j, k} option so as to generate symmetry-based atoms. To select only the original atoms prior to application of symmetry, you can either use "SYMOP=n", where n is the symmetry operator corresponding to "x,y,z", or you can specify instead simply "NOT symmetry" the way you might specify "NOT hydrogen". Note that atoms in special positions will have multiple operator matches. These atoms can be selected using the keyword SPECIALPOSITION. The special form select SYMOP=nijk selects a specific translation of atoms from the given crystallographic symmetry operation. Comparators <, <=, >, >=, and != can be used and only apply to the ijk part of the designation. The ijk are relative, not absolute. Thus, symop=2555 selects for atoms that have been transformed by symop=2 but not subjected to any further translation. select symop=1555 is identical to select not symmetry. All other ijk are relative to these selections for 555. If the model was loaded using load "filename.cif" {444 666 1}, where the 1 indicates that all symmetry-generated atoms are to be packed within cell 555 and then translated to fill the other 26 specified cells, then select symop=3555 is nearly the same as select symop=3 and cell=555. (The difference being that cell=555 selects for all atoms that are on any edge of the cell, while symop=3555 does not.) However, the situation is different if instead the model was loaded using load "filename.cif" {444 666 0}, where the 0 indicates that symmetry-generated atoms are to be placed exactly where their symmetry operator would put them (x,-y,z being different then from x, 1-y, z). In that case, select symop=3555 is for all atoms that have been generated using symmetry operation 3 but have not had any additional translations applied to the x,y,z expression found in the CIF file. If, for example, symmetry operation 3 is -x,-y,-z, then load "filename.cif" {444 666 0} will place an atom originally at {1/2, 1/2, 1/2} at positions {-1/2, -1/2, -1/2} (symop=3555) and {-3/2, -3/2, -3/2} (symop=3444) and 24 other sites.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},symmetry:{"@desc":'as "symmetry" or in a label as lower-case "o" gives list of crystallographic symmetry operators generating this atom with lattice designations,such as 3555; upper-case "%O" in a label gives a list without the lattice designations. See also symop, above.',"@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},temperature:{"@desc":"yes yes temperature factor (B-factor)","@examples":["temperature >= 20"],regex:ou,map:t=>parseFloat(t),level:"atom-test",property:$o.ammp("B_iso_or_equiv")},unitXyz:{"@desc":"unit cell XYZ coordinates","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},uX:{"@desc":"unit cell X coordinate normalized to [0,1)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},uY:{"@desc":"unit cell Y coordinate normalized to [0,1)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},uZ:{"@desc":"unit cell Z coordinate normalized to [0,1)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},valence:{"@desc":"the valence of an atom (sum of bonds, where double bond counts as 2 and triple bond counts as 3","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},vanderwaals:{"@desc":"van der Waals radius","@examples":["vanderwaals >2"],regex:ou,map:t=>parseFloat(t),level:"atom-test",property:$o.acp("vdw")},vectorScale:{"@desc":"vibration vector scale","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},volume:{"@desc":"approximate van der Waals volume for this atom. Note, {*}.volume gives an average; use {*}.volume.sum to get total volume.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},vXyz:{"@desc":"vibration vector, or individual components as %vx %vy %vz. For atoms without vibration vectors, {xx}.vXyz is -1; in a label, %[vxyz] is blank.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},vX:{"@desc":"vibration vector X coordinate; for atoms without vibration vector, {xx}.vX is NaN (same for vY and vZ)","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},vY:{"@desc":"vibration vector Y coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},vZ:{"@desc":"vibration vector Z coordinate","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"},xyz:{"@desc":"Cartesian XYZ coordinates; select xyz > 1.0 selects atoms more than one Angstrom from the origin.","@examples":[""],isUnsupported:!0,regex:/[0-9\s{}-]+/,map:At,level:"atom-test"}};var RH=q,Sk=[{"@desc":"Selects atoms that are not included in s1.","@examples":["not ARG"],name:"not",type:ra,rule:fe.alt(fe.regex(/NOT/i).skip(fe.whitespace),fe.string("!").skip(fe.optWhitespace)),map:(t,e)=>Ia(e)},{"@desc":"Selects atoms included in both s1 and s2.","@examples":["ASP and .CA"],name:"and",type:Vi,rule:nu(/AND|&/i),map:(t,e,r)=>RH.struct.modifier.intersectBy({0:e,by:r})},{"@desc":"Selects atoms included in either s1 or s2.","@examples":["ASP or GLU"],name:"or",type:Vi,rule:nu(/OR|\||,/i),map:(t,e,r)=>RH.struct.combinator.merge([e,r])}];var le=q,to={acidic:["ASP","GLU"],aliphatic:["ALA","GLY","ILE","LEU","VAL"],amino:["ALA","ARG","ASN","ASP","CYS","GLN","GLU","GLY","HIS","ILE","LEU","LYS","MET","PHE","PRO","SER","THR","TRP","TYR","VAL","ASX","GLX","UNK"],aromatic:["HIS","PHE","TRP","TYR"],basic:["ARG","HIS","LYS"],buried:["ALA","CYS","ILE","LEU","MET","PHE","TRP","VAL"],cg:["CYT","C","GUA","G"],cyclic:["HIS","PHE","PRO","TRP","TYR"],hydrophobic:["ALA","GLY","ILE","LEU","MET","PHE","PRO","TRP","TYR","VAL"],large:["ARG","GLU","GLN","HIS","ILE","LEU","LYS","MET","PHE","TRP","TYR"],medium:["ASN","ASP","CYS","PRO","THR","VAL"],small:["ALA","GLY","SER"],nucleic:["G","C","A","T","U","I","DG","DC","DA","DT","DU","DI","+G","+C","+A","+T","+U","+I"]},LH={nucleic:["P","O3'","O5'","C5'","C4'","C3'","OP1","OP2","O3*","O5*","C5*","C4*","C3*","C2'","C1'","O4'","O2'"],protein:["C","N","CA"]};function a1(){return le.struct.combinator.merge([le.struct.generator.atomGroups({"residue-test":le.core.set.has([le.set(...to.nucleic),le.ammp("label_comp_id")])}),le.struct.filter.pick({0:le.struct.generator.atomGroups({"group-by":le.ammp("residueKey")}),test:le.core.logic.and([le.core.rel.eq([le.struct.atomSet.atomCount(),1]),le.core.rel.eq([le.ammp("label_atom_id"),le.atomName("P")])])}),le.struct.filter.pick({0:le.struct.generator.atomGroups({"group-by":le.ammp("residueKey")}),test:le.core.logic.or([le.core.set.isSubset([uc(["C1'","C2'","O3'","C3'","C4'","C5'","O5'"]),le.ammpSet("label_atom_id")]),le.core.set.isSubset([uc(["C1*","C2*","O3*","C3*","C4*","C5*","O5*"]),le.ammpSet("label_atom_id")])])})])}function gme(){return le.struct.generator.atomGroups({"residue-test":le.core.set.has([le.set(...to.amino),le.ammp("label_comp_id")])})}function yme(){return le.struct.combinator.merge([le.struct.modifier.intersectBy({0:le.struct.generator.atomGroups({"residue-test":le.core.set.has([le.core.type.set(to.amino),le.ammp("label_comp_id")])}),by:le.struct.generator.atomGroups({"atom-test":le.core.set.has([le.core.type.set(LH.protein),le.ammp("label_atom_id")])})}),le.struct.modifier.intersectBy({0:le.struct.generator.atomGroups({"residue-test":le.core.set.has([le.core.type.set(to.nucleic),le.ammp("label_comp_id")])}),by:le.struct.generator.atomGroups({"atom-test":le.core.set.has([le.core.type.set(LH.nucleic),le.ammp("label_atom_id")])})})])}var Ck={all:{"@desc":"all atoms; same as *",abbr:["*"],map:()=>le.struct.generator.all()},bonded:{"@desc":"covalently bonded",map:()=>le.struct.generator.atomGroups({"atom-test":le.core.rel.gr([le.struct.atomProperty.core.bondCount({flags:le.struct.type.bondFlags(["covalent","metallic","sulfide"])}),0])})},clickable:{"@desc":"actually visible -- having some visible aspect such as wireframe, spacefill, or a label showing, or the alpha-carbon or phosphorus atom in a biomolecule that is rendered with only cartoon, rocket, or other biomolecule-specific shape."},connected:{"@desc":"bonded in any way, including hydrogen bonds",map:()=>le.struct.generator.atomGroups({"atom-test":le.core.rel.gr([le.struct.atomProperty.core.bondCount({flags:le.struct.type.bondFlags()}),0])})},displayed:{"@desc":"displayed using the display or hide command; not necessarily visible"},hidden:{"@desc":"hidden using the display or hide command"},none:{"@desc":"no atoms",map:()=>le.struct.generator.empty()},selected:{"@desc":"atoms that have been selected; defaults to all when a file is first loaded"},thisModel:{"@desc":'atoms in the current frame set, as defined by frame, model, or animation commands. If more than one model is in this set, "thisModel" refers to all of them, regardless of atom displayed/hidden status.'},visible:{"@desc":"visible in any way, including PDB residue atoms for which a cartoon or other such rendering makes their group visible, even if they themselves are not visible."},subset:{"@desc":"the currently defined subset. Note that if a subset is currently defined, then select/display all is the same as select/display subset, restrict none is the same as restrict not subset. In addition, select not subset selects nothing."},specialPosition:{"@desc":"atoms in crystal structures that are at special positions - that is, for which there is more than one operator that leads to them."},unitcell:{"@desc":"atoms within the current unitcell, which may be offset. This includes atoms on the faces and at the vertices of the unitcell."},polyhedra:{"@desc":"all central atoms for which polyhedra have been created. See also polyhera(n), below. (Jmol 14.4)"},nonmetal:{"@desc":"_H,_He,_B,_C,_N,_O,_F,_Ne,_Si,_P,_S,_Cl,_Ar,_As,_Se,_Br,_Kr,_Te,_I,_Xe,_At,_Rn",map:()=>le.struct.generator.atomGroups({"atom-test":le.core.set.has([le.set(...["H","He","B","C","N","O","F","Ne","Si","P","S","Cl","Ar","As","Se","Br","Kr","Te","I","Xe","At","Rn"].map(le.es)),le.acp("elementSymbol")])})},metal:{"@desc":"!nonmetal",map:()=>le.struct.generator.atomGroups({"atom-test":le.core.logic.not([le.core.set.has([le.set(...["H","He","B","C","N","O","F","Ne","Si","P","S","Cl","Ar","As","Se","Br","Kr","Te","I","Xe","At","Rn"].map(le.es)),le.acp("elementSymbol")])])})},alkaliMetal:{"@desc":"_Li,_Na,_K,_Rb,_Cs,_Fr",map:()=>le.struct.generator.atomGroups({"atom-test":le.core.set.has([le.set(...["Li","Na","K","Rb","Cs","Fr"].map(le.es)),le.acp("elementSymbol")])})},alkalineEarth:{"@desc":"_Be,_Mg,_Ca,_Sr,_Ba,_Ra",map:()=>le.struct.generator.atomGroups({"atom-test":le.core.set.has([le.set(...["Be","Mg","Ca","Sr","Ba","Ra"].map(le.es)),le.acp("elementSymbol")])})},nobleGas:{"@desc":"_He,_Ne,_Ar,_Kr,_Xe,_Rn",map:()=>le.struct.generator.atomGroups({"atom-test":le.core.set.has([le.set(...["He","Ne","Ar","Kr","Xe","Rn"].map(le.es)),le.acp("elementSymbol")])})},metalloid:{"@desc":"_B,_Si,_Ge,_As,_Sb,_Te",map:()=>le.struct.generator.atomGroups({"atom-test":le.core.set.has([le.set(...["B","Si","Ge","As","Sb","Te"].map(le.es)),le.acp("elementSymbol")])})},transitionMetal:{"@desc":"(includes La and Ac) elemno>=21 and elemno<=30, elemno=57, elemno=89, elemno>=39 and elemno<=48, elemno>=72 and elemno<=80, elemno>=104 and elemno<=112",map:()=>le.struct.generator.atomGroups({"atom-test":le.core.logic.or([le.core.rel.inRange([le.acp("atomicNumber"),21,30]),le.core.rel.inRange([le.acp("atomicNumber"),39,48]),le.core.rel.inRange([le.acp("atomicNumber"),72,80]),le.core.rel.inRange([le.acp("atomicNumber"),104,112]),le.core.set.has([le.set(57,89),le.acp("atomicNumber")])])})},lanthanide:{"@desc":"(does not include La) elemno>57 and elemno<=71",map:()=>le.struct.generator.atomGroups({"atom-test":le.core.rel.inRange([le.acp("atomicNumber"),57,71])})},actinide:{"@desc":"(does not include Ac) elemno>89 and elemno<=103",map:()=>le.struct.generator.atomGroups({"atom-test":le.core.rel.inRange([le.acp("atomicNumber"),89,103])})},isaromatic:{"@desc":"atoms connected with the AROMATIC, AROMATICSINGLE, or AROMATICDOUBLE bond types",map:()=>le.struct.generator.atomGroups({"atom-test":le.core.rel.gr([le.struct.atomProperty.core.bondCount({flags:le.struct.type.bondFlags(["aromatic"])}),0])})},carbohydrate:{"@desc":""},ions:{"@desc":'(specifically the PDB designations "PO4" and "SO4")'},ligand:{"@desc":'(originally "hetero and not solvent"; changed to "!(protein,nucleic,water,UREA)" for Jmol 12.2)'},nucleic:{"@desc":`any group that (a) has one of the following group names: G, C, A, T, U, I, DG, DC, DA, DT, DU, DI, +G, +C, +A, +T, +U, +I; or (b) can be identified as a group that is only one atom, with name "P"; or (c) has all of the following atoms (prime, ', can replace * here): C1*, C2*, C3*, O3*, C4*, C5*, and O5*.`,map:()=>a1()},purine:{"@desc":"any nucleic group that (a) has one of the following group names: A, G, I, DA, DG, DI, +A, +G, or +I; or (b) also has atoms N7, C8, and N9.",map:()=>le.struct.modifier.intersectBy({0:a1(),by:le.struct.combinator.merge([le.struct.generator.atomGroups({"residue-test":le.core.set.has([le.set("A","G","I","DA","DG","DI","+A","+G","+I"),le.ammp("label_comp_id")])}),le.struct.filter.pick({0:le.struct.generator.atomGroups({"group-by":le.ammp("residueKey")}),test:le.core.set.isSubset([uc(["N7","C8","N9"]),le.ammpSet("label_atom_id")])})])})},pyrimidine:{"@desc":"any nucleic group that (a) has one of the following group names: C, T, U, DC, DT, DU, +C, +T, +U; or (b) also has atom O2.",map:()=>le.struct.modifier.intersectBy({0:a1(),by:le.struct.combinator.merge([le.struct.generator.atomGroups({"residue-test":le.core.set.has([le.set("C","T","U","DC","DT","DU","+C","+T","+U"),le.ammp("label_comp_id")])}),le.struct.filter.pick({0:le.struct.generator.atomGroups({"group-by":le.ammp("residueKey")}),test:le.core.logic.or([le.core.set.has([le.ammpSet("label_atom_id"),le.atomName("O2*")]),le.core.set.has([le.ammpSet("label_atom_id"),le.atomName("O2'")])])})])})},dna:{"@desc":"any nucleic group that (a) has one of the following group names: DG, DC, DA, DT, DU, DI, T, +G, +C, +A, +T; or (b) has neither atom O2* or O2'.",map:()=>le.struct.modifier.intersectBy({0:a1(),by:le.struct.combinator.merge([le.struct.generator.atomGroups({"residue-test":le.core.set.has([le.set("DG","DC","DA","DT","DU","DI","T","+G","+C","+A","+T"),le.ammp("label_comp_id")])}),le.struct.filter.pick({0:le.struct.generator.atomGroups({"group-by":le.ammp("residueKey")}),test:le.core.logic.not([le.core.logic.or([le.core.set.has([le.ammpSet("label_atom_id"),le.atomName("O2*")]),le.core.set.has([le.ammpSet("label_atom_id"),le.atomName("O2'")])])])})])})},rna:{"@desc":"any nucleic group that (a) has one of the following group names: G, C, A, U, I, +U, +I; or (b) has atom O2* or O2'.",map:()=>le.struct.modifier.intersectBy({0:a1(),by:le.struct.combinator.merge([le.struct.generator.atomGroups({"residue-test":le.core.set.has([le.set("G","C","A","U","I","+U","+I"),le.ammp("label_comp_id")])}),le.struct.filter.pick({0:le.struct.generator.atomGroups({"group-by":le.ammp("residueKey")}),test:le.core.logic.or([le.core.set.has([le.ammpSet("label_atom_id"),le.atomName("O2*")]),le.core.set.has([le.ammpSet("label_atom_id"),le.atomName("O2'")])])})])})},protein:{"@desc":'defined as a group that (a) has one of the following group names: ALA, ARG, ASN, ASP, CYS, GLN, GLU, GLY, HIS, ILE, LEU, LYS, MET, PHE, PRO, SER, THR, TRP, TYR, VAL, ASX, GLX, or UNK; or (b) contains PDB atom designations [C, O, CA, and N] bonded correctly; or (c) does not contain "O" but contains [C, CA, and N] bonded correctly; or (d) has only one atom, which has name CA and does not have the group name CA (indicating a calcium atom).',map:()=>gme()},acidic:{"@desc":"ASP GLU",map:()=>Cr(to.acidic)},acyclic:{"@desc":"amino and not cyclic",map:()=>le.struct.modifier.intersectBy({0:Cr(to.amino),by:Ia(Cr(to.cyclic))})},aliphatic:{"@desc":"ALA GLY ILE LEU VAL",map:()=>Cr(to.aliphatic)},amino:{"@desc":"all twenty standard amino acids, plus ASX, GLX, UNK",map:()=>Cr(to.amino)},aromatic:{"@desc":'HIS PHE TRP TYR (see also "isaromatic" for aromatic bonds)',map:()=>Cr(to.aromatic)},basic:{"@desc":"ARG HIS LYS",map:()=>Cr(to.basic)},buried:{"@desc":"ALA CYS ILE LEU MET PHE TRP VAL",map:()=>Cr(to.buried)},charged:{"@desc":"same as acidic or basic -- ASP GLU, ARG HIS LYS",map:()=>Cr(to.acidic.concat(to.basic))},cyclic:{"@desc":"HIS PHE PRO TRP TYR",map:()=>Cr(to.cyclic)},helix:{"@desc":"secondary structure-related.",map:()=>le.struct.generator.atomGroups({"residue-test":le.core.flags.hasAny([le.struct.type.secondaryStructureFlags(["helix"]),le.ammp("secondaryStructureFlags")])})},helixalpha:{"@desc":"secondary structure-related.",map:()=>le.struct.generator.atomGroups({"residue-test":le.core.flags.hasAny([le.struct.type.secondaryStructureFlags(["alpha"]),le.ammp("secondaryStructureFlags")])})},helix310:{"@desc":"secondary structure-related.",map:()=>le.struct.generator.atomGroups({"residue-test":le.core.flags.hasAny([le.struct.type.secondaryStructureFlags(["3-10"]),le.ammp("secondaryStructureFlags")])})},helixpi:{"@desc":"secondary structure-related.",map:()=>le.struct.generator.atomGroups({"residue-test":le.core.flags.hasAny([le.struct.type.secondaryStructureFlags(["pi"]),le.ammp("secondaryStructureFlags")])})},hetero:{"@desc":"PDB atoms designated as HETATM",map:()=>le.struct.generator.atomGroups({"atom-test":le.ammp("isHet")})},hydrophobic:{"@desc":"ALA GLY ILE LEU MET PHE PRO TRP TYR VAL",map:()=>Cr(to.hydrophobic)},large:{"@desc":"ARG GLU GLN HIS ILE LEU LYS MET PHE TRP TYR",map:()=>Cr(to.large)},medium:{"@desc":"ASN ASP CYS PRO THR VAL",map:()=>Cr(to.medium)},negative:{"@desc":"same as acidic -- ASP GLU",map:()=>Cr(to.acidic)},neutral:{"@desc":"amino and not (acidic or basic)",map:()=>le.struct.modifier.intersectBy({0:Cr(to.amino),by:Ia(Cr(to.acidic.concat(to.basic)))})},polar:{"@desc":"amino and not hydrophobic",map:()=>le.struct.modifier.intersectBy({0:Cr(to.amino),by:Ia(Cr(to.hydrophobic))})},positive:{"@desc":"same as basic -- ARG HIS LYS",map:()=>Cr(to.basic)},sheet:{"@desc":"secondary structure-related",map:()=>le.struct.generator.atomGroups({"residue-test":le.core.flags.hasAny([le.struct.type.secondaryStructureFlags(["sheet"]),le.ammp("secondaryStructureFlags")])})},small:{"@desc":"ALA GLY SER",map:()=>Cr(to.small)},surface:{"@desc":"amino and not buried",map:()=>le.struct.modifier.intersectBy({0:Cr(to.amino),by:Ia(Cr(to.buried))})},turn:{"@desc":"secondary structure-related",map:()=>le.struct.generator.atomGroups({"residue-test":le.core.flags.hasAny([le.struct.type.secondaryStructureFlags(["turn"]),le.ammp("secondaryStructureFlags")])})},alpha:{"@desc":"(*.CA)",map:()=>le.struct.generator.atomGroups({"atom-test":le.core.rel.eq([le.atomName("CA"),le.ammp("label_atom_id")])})},base:{"@desc":"(nucleic bases)"},backbone:{"@desc":"(*.C, *.CA, *.N, and all nucleic other than the bases themselves)",abbr:["mainchain"],map:()=>yme()},sidechain:{"@desc":"((protein or nucleic) and not backbone)"},spine:{"@desc":"(*.CA, *.N, *.C for proteins; *.P, *.O3', *.O5', *.C3', *.C4', *.C5 for nucleic acids)"},leadatom:{"@desc":"(*.CA, *.P, and terminal *.O5')"},solvent:{"@desc":'PDB "HOH", water, also the connected set of H-O-H in any model'}};var ir=q,vme=[{"@desc":"value comparisons","@examples":[],name:"=",abbr:["=="],type:Vi,rule:fe.regexp(/\s*(LIKE|>=|<=|=|!=|>|<)\s*/i,1),map:(t,e,r)=>{let n;if(e==="structure"?n=ir.core.flags.hasAny([ir.ammp("secondaryStructureFlags"),bk(r)]):r==="structure"?n=ir.core.flags.hasAny([ir.ammp("secondaryStructureFlags"),bk(e)]):e.head!==void 0?e.head.name==="core.type.regex"&&(n=ir.core.str.match([e,ir.core.type.str([r])])):r.head!==void 0?r.head.name==="core.type.regex"&&(n=ir.core.str.match([r,ir.core.type.str([e])])):t.toUpperCase()==="LIKE"&&(e.head?n=ir.core.str.match([ir.core.type.regex([`^${r}$`,"i"]),ir.core.type.str([e])]):n=ir.core.str.match([ir.core.type.regex([`^${e}$`,"i"]),ir.core.type.str([r])])),!n)switch(e.head&&(r=Mg(e,r)),r.head&&(e=Mg(r,e)),t){case"=":n=ir.core.rel.eq([e,r]);break;case"!=":n=ir.core.rel.neq([e,r]);break;case">":n=ir.core.rel.gr([e,r]);break;case"<":n=ir.core.rel.lt([e,r]);break;case">=":n=ir.core.rel.gre([e,r]);break;case"<=":n=ir.core.rel.lte([e,r]);break;default:throw new Error(`value operator '${t}' not supported`)}return ir.struct.generator.atomGroups({"atom-test":n})}}];function bme(t){let[e,r,n,o,i,a,s]=t[1],l={};i&&(l["chain-test"]=ir.core.rel.eq([ir.ammp("auth_asym_id"),i]));let c=[];e&&c.push(ir.core.rel.eq([ir.ammp("label_comp_id"),e])),r&&c.push(ir.core.logic.and([ir.core.rel.gre([ir.ammp("auth_seq_id"),r[0]]),ir.core.rel.lte([ir.ammp("auth_seq_id"),r[1]])])),n&&c.push(ir.core.rel.eq([ir.ammp("auth_seq_id"),n])),o&&c.push(ir.core.rel.eq([ir.ammp("pdbx_PDB_ins_code"),o])),c.length&&(l["residue-test"]=n1(c));let u=[];return a&&u.push(ir.core.rel.eq([ir.ammp("auth_atom_id"),a])),s&&u.push(ir.core.rel.eq([ir.ammp("label_alt_id"),s])),u.length&&(l["atom-test"]=n1(u)),ir.struct.generator.atomGroups(l)}var xme=fe.createLanguage({Integer:()=>fe.regexp(/-?[0-9]+/).map(Number).desc("integer"),Parens:function(t){return fe.alt(t.Parens,t.Operator,t.Expression).wrap(fe.regexp(/\(\s*/),fe.regexp(/\s*\)/))},Expression:function(t){return fe.alt(t.Keywords,t.AtomExpression.map(bme),t.Within.map(e=>ir.struct.modifier.includeSurroundings({0:e[1],radius:e[0]})),t.ValueQuery,t.Element.map(e=>ir.struct.generator.atomGroups({"atom-test":ir.core.rel.eq([ir.acp("elementSymbol"),ir.struct.type.elementSymbol(e)])})),t.Resname.map(e=>ir.struct.generator.atomGroups({"residue-test":ir.core.rel.eq([ir.ammp("label_comp_id"),e])})))},Operator:function(t){return Cf(Sk,fe.alt(t.Parens,t.Expression))},AtomExpression:function(t){return fe.seq(fe.lookahead(t.AtomPrefix),fe.seq(t.BracketedResname.or(fe.of(null)),t.ResnoRange.or(fe.of(null)),t.Resno.or(fe.of(null)),t.Inscode.or(fe.of(null)),t.Chainname.or(fe.of(null)),t.Atomname.or(fe.of(null)),t.Altloc.or(fe.of(null)),t.Model.or(fe.of(null)))).desc("expression")},AtomPrefix:()=>fe.regexp(/[\[0-9:^%/.-]/).desc("atom-prefix"),Chainname:()=>fe.regexp(/:([A-Za-z]{1,3})/,1).desc("chainname"),Model:()=>fe.regexp(/\/([0-9]+)/,1).map(Number).desc("model"),Element:()=>fe.regexp(/_([A-Za-z]{1,3})/,1).desc("element"),Atomname:()=>fe.regexp(/\.([a-zA-Z0-9]{1,4})/,1).map(ir.atomName).desc("atomname"),Resname:()=>fe.regexp(/[a-zA-Z0-9]{1,4}/).desc("resname"),Resno:t=>t.Integer.desc("resno"),Altloc:()=>fe.regexp(/%([a-zA-Z0-9])/,1).desc("altloc"),Inscode:()=>fe.regexp(/\^([a-zA-Z0-9])/,1).desc("inscode"),BracketedResname:()=>fe.regexp(/\[([a-zA-Z0-9]{1,4})\]/,1).desc("bracketed-resname"),ResnoRange:t=>fe.seq(t.Integer.skip(fe.seq(fe.optWhitespace,fe.string("-"),fe.optWhitespace)),t.Integer).desc("resno-range"),Within:t=>fe.regexp(/within/i).skip(fe.regexp(/\s*\(\s*/)).then(fe.seq(t.Integer.skip(fe.regexp(/\s*,\s*/)),t.Query)).skip(fe.regexp(/\)/)),Keywords:()=>fe.alt(...L0(Ck)).desc("keyword"),Query:function(t){return fe.alt(t.Operator,t.Parens,t.Expression).trim(fe.optWhitespace)},Number:function(){return fe.regexp(/-?(0|[1-9][0-9]*)([.][0-9]+)?([eE][+-]?[0-9]+)?/).map(Number).desc("number")},String:function(){let t=B0(xk,Ck,Sk).sort(Dl).map(Jm).join("|");return fe.alt(fe.regexp(new RegExp(`(?!(${t}))[A-Z0-9_]+`,"i")),fe.regexp(/'((?:[^"\\]|\\.)*)'/,1),fe.regexp(/"((?:[^"\\]|\\.)*)"/,1).map(e=>ir.core.type.regex([`^${e}$`,"i"]))).desc("string")},Value:function(t){return fe.alt(t.Number,t.String)},ValueParens:function(t){return fe.alt(t.ValueParens,t.ValueOperator,t.ValueExpressions).wrap(fe.string("("),fe.string(")"))},ValuePropertyNames:function(){return fe.alt(...o1(xk,/LIKE|>=|<=|=|!=|>|<|\)|\s/i))},ValueOperator:function(t){return Cf(vme,fe.alt(t.ValueParens,t.ValueExpressions))},ValueExpressions:function(t){return fe.alt(t.Value,t.ValuePropertyNames)},ValueQuery:function(t){return fe.alt(t.ValueOperator.map(e=>{if(e.head){if(e.head.name.startsWith("structure-query.generator"))return e}else if(typeof e=="string"&&e.length<=4)return ir.struct.generator.atomGroups({"residue-test":ir.core.rel.eq([ir.ammp("label_comp_id"),e])});throw new Error(`values must be part of an comparison, value '${e}'`)}))}}),BH=t=>xme.Query.tryParse(t);var Da=q,d2=/[-+]?[0-9]*\.?[0-9]+/;function Sme(t){return t.split("+").map(Da.atomName)}function O0(t){return t.split("+").map(e=>e.replace(/^["']|["']$/g,""))}function Tk(t){if(t.includes("-")&&t.includes("+")){let e=t.split("+").map(n=>n.replace(/^["']|["']$/g,"")),r=[];return e.forEach(n=>{if(n.includes("-")&&!n.startsWith("-")){let[o,i]=n.split("-").map(a=>parseInt(a));for(let a=o;a<=i;a++)r.push(a)}else if(n.includes("-")&&n.startsWith("-")&&n.match(/[0-9]+-[-0-9]+/)){let o=-parseInt(n.split("-")[1]),i;n.includes("--")?i=-parseInt(n.split("-")[3]):i=parseInt(n.split("-")[2]);for(let a=o;a<=i;a++)r.push(a)}else n.includes("-")&&n.startsWith("-")&&n.match(/[0-9]+-[-0-9]+/),r.push(parseInt(n))}),r}else if(t.includes("-")&&!t.includes("+")){let e=[];if(t.startsWith("-"))if(t.startsWith("-")&&t.match(/[0-9]+-[-0-9]+/)){let r=-parseInt(t.split("-")[1]),n;t.includes("--")?n=-parseInt(t.split("-")[3]):n=parseInt(t.split("-")[2]);for(let o=r;o<=n;o++)e.push(o)}else t.startsWith("-")&&t.match(/[0-9]+-[-0-9]+/),e.push(parseInt(t));else{let[r,n]=t.split("-").map(o=>parseInt(o));for(let o=r;o<=n;o++)e.push(o)}return e}else return!t.includes("-")&&t.includes("+")?O0(t).map(e=>parseInt(e)):[parseInt(t)]}function Cme(t){return t.split("+").map(Da.struct.type.elementSymbol)}var Tme={H:"helix",S:"beta",L:"none"};function wme(t){return{flags:Da.struct.type.secondaryStructureFlags(t.toUpperCase().split("+").map(e=>Tme[e]||"none"))}}var s1={symbol:{"@desc":"chemical-symbol-list: list of 1- or 2-letter chemical symbols from the periodic table","@examples":["symbol O+N"],abbr:["e."],regex:/[a-zA-Z'"+]+/,map:Cme,level:"atom-test",property:Da.acp("elementSymbol")},name:{"@desc":"atom-name-list: list of up to 4-letter codes for atoms in proteins or nucleic acids","@examples":["name CA+CB+CG+CD"],abbr:["n."],regex:/[a-zA-Z0-9'"+]+/,map:Sme,level:"atom-test",property:Da.ammp("label_atom_id")},resn:{"@desc":"residue-name-list: list of 3-letter codes for amino acids or list of up to 2-letter codes for nucleic acids","@examples":["resn ASP+GLU+ASN+GLN","resn A+G"],abbr:["resname","r."],regex:/[a-zA-Z0-9'"+]+/,map:O0,level:"residue-test",property:Da.ammp("label_comp_id")},resi:{"@desc":"residue-identifier-list list of up to 4-digit residue numbers or residue-identifier-range","@examples":["resi 1+10+100+1000","resi 1-10"],abbr:["resident","residue","resid","i."],regex:/[0-9+-]+/,map:Tk,level:"residue-test",property:Da.ammp("auth_seq_id")},alt:{"@desc":"alternate-conformation-identifier-list list of single letters","@examples":["alt A+B",'alt ""','alt ""+A'],abbr:[],regex:/[a-zA-Z0-9'"+]+/,map:O0,level:"atom-test",property:Da.ammp("label_alt_id")},chain:{"@desc":"chain-identifier-list list of single letters or sometimes numbers","@examples":["chain A"],abbr:["c."],regex:/[a-zA-Z0-9'"+]+/,map:O0,level:"chain-test",property:Da.ammp("auth_asym_id")},segi:{"@desc":"segment-identifier-list list of up to 4 letter identifiers","@examples":["segi lig"],abbr:["segid","s."],regex:/[a-zA-Z0-9'"+]+/,map:O0,level:"chain-test",property:Da.ammp("label_asym_id")},flag:{"@desc":"flag-number a single integer from 0 to 31","@examples":["flag 0"],isUnsupported:!0,abbr:["f."],regex:/[0-9]+/,map:t=>parseInt(t),level:"atom-test"},numeric_type:{"@desc":"type-number a single integer","@examples":["nt. 5"],isUnsupported:!0,abbr:["nt."],regex:/[0-9]+/,map:t=>parseInt(t),level:"atom-test"},text_type:{"@desc":"type-string a list of up to 4 letter codes","@examples":["text_type HA+HC"],isUnsupported:!0,abbr:["tt."],regex:/[a-zA-Z0-9'"+]+/,map:O0,level:"atom-test"},id:{"@desc":"external-index-number a single integer","@examples":["id 23"],regex:/[0-9+-]+/,map:Tk,level:"atom-test",property:Da.ammp("id")},index:{"@desc":"internal-index-number a single integer","@examples":["index 11"],regex:/[0-9+-]+/,map:Tk,level:"atom-test",property:Da.ammp("id")},ss:{"@desc":"secondary-structure-type list of single letters. Helical regions should be assigned H and sheet regions S. Loop regions can either be assigned L or be blank.","@examples":["ss H+S+L",'ss S+""'],abbr:[],regex:/[a-zA-Z'"+]+/,map:wme,level:"residue-test",property:Da.ammp("secondaryStructureFlags")},b:{"@desc":"comparison-operator b-factor-value a real number","@examples":["b > 10"],isNumeric:!0,abbr:[],regex:d2,map:t=>parseFloat(t),level:"atom-test",property:Da.ammp("B_iso_or_equiv")},q:{"@desc":"comparison-operator occupancy-value a real number","@examples":["q <0.50"],isNumeric:!0,abbr:[],regex:d2,map:t=>parseFloat(t),level:"atom-test",property:Da.ammp("occupancy")},formal_charge:{"@desc":"comparison-operator formal charge-value an integer","@examples":["fc. = -1"],isNumeric:!0,abbr:["fc."],regex:d2,map:t=>parseFloat(t),level:"atom-test",property:Da.ammp("pdbx_formal_charge")},partial_charge:{"@desc":"comparison-operator partial charge-value a real number","@examples":["pc. > 1"],isUnsupported:!0,isNumeric:!0,abbr:["pc."],regex:d2,map:t=>parseFloat(t),level:"atom-test"},elem:{"@desc":'str atomic element symbol string ("X" if undefined)',"@examples":["elem N"],regex:/[a-zA-Z0-9]{1,3}/,map:t=>Da.es(t),level:"atom-test",property:Da.acp("elementSymbol")}};var Kt=q,wk=[{"@desc":"Selects atoms that are not included in s1.","@examples":["NOT resn ALA","not (resi 42 or chain A)","!resi 42 or chain A"],name:"not",type:ra,rule:fe.alt(fe.regexp(/NOT/i).skip(fe.whitespace),fe.string("!").skip(fe.optWhitespace)),map:(t,e)=>Ia(e)},{"@desc":"Selects atoms included in both s1 and s2.","@examples":["chain A AND name CA"],name:"and",type:Vi,rule:nu(/AND|&/i),map:(t,e,r)=>Kt.struct.modifier.intersectBy({0:e,by:r})},{"@desc":"Selects atoms included in either s1 or s2.","@examples":["chain A OR chain B"],name:"or",type:Vi,rule:nu(/OR|\|/i),map:(t,e,r)=>Kt.struct.combinator.merge([e,r])},{"@desc":"Selects atoms in s1 whose identifiers name, resi, resn, chain and segi all match atoms in s2.","@examples":["chain A IN chain B"],name:"in",type:Vi,rule:nu(/IN/i),map:(t,e,r)=>Kt.struct.filter.withSameAtomProperties({0:e,source:r,property:Kt.core.type.compositeKey([Kt.ammp("label_atom_id"),Kt.ammp("label_seq_id"),Kt.ammp("label_comp_id"),Kt.ammp("auth_asym_id"),Kt.ammp("label_asym_id")])})},{"@desc":"Selects atoms in s1 whose identifiers name and resi match atoms in s2.","@examples":["chain A LIKE chain B"],name:"like",type:Vi,rule:nu(/LIKE|l\./i),map:(t,e,r)=>Kt.struct.filter.withSameAtomProperties({0:e,source:r,property:Kt.core.type.compositeKey([Kt.ammp("label_atom_id"),Kt.ammp("label_seq_id")])})},{"@desc":"Selects all atoms whose van der Waals radii are separated from the van der Waals radii of s1 by a minimum of X Angstroms.","@examples":["solvent GAP 2"],name:"gap",type:t1,rule:r1(/GAP\s+([-+]?[0-9]*\.?[0-9]+)/i,1).map(t=>parseFloat(t)),map:(t,e)=>Kt.struct.filter.within({0:Kt.struct.generator.all(),target:e,"atom-radius":Kt.acp("vdw"),"max-radius":t,invert:!0})},{"@desc":"Selects atoms with centers within X Angstroms of the center of any atom in s1.","@examples":["resname LIG AROUND 1"],name:"around",abbr:["a."],type:t1,rule:r1(/(AROUND|a\.)\s+([-+]?[0-9]*\.?[0-9]+)/i,2).map(t=>parseFloat(t)),map:(t,e)=>Kt.struct.modifier.exceptBy({0:Kt.struct.filter.within({0:Kt.struct.generator.all(),target:e,"max-radius":t}),by:e})},{"@desc":"Expands s1 by all atoms within X Angstroms of the center of any atom in s1.","@examples":["chain A EXPAND 3"],name:"expand",abbr:["x."],type:t1,rule:r1(/(EXPAND|x\.)\s+([-+]?[0-9]*\.?[0-9]+)/i,2).map(t=>parseFloat(t)),map:(t,e)=>Kt.struct.modifier.includeSurroundings({0:e,radius:t})},{"@desc":"Selects atoms in s1 that are within X Angstroms of any atom in s2.","@examples":["chain A WITHIN 3 OF chain B"],name:"within",abbr:["w."],type:Vi,rule:c2("WITHIN","w."),map:(t,e,r)=>Kt.struct.filter.within({0:e,target:r,"max-radius":t})},{"@desc":"Same as within, but excludes s2 from the selection (and thus is identical to s1 and s2 around X).","@examples":["chain A NEAR_TO 3 OF chain B"],name:"near_to",abbr:["nto."],type:Vi,rule:c2("NEAR_TO","nto."),map:(t,e,r)=>Kt.struct.modifier.exceptBy({0:Kt.struct.filter.within({0:e,target:r,"max-radius":t}),by:r})},{"@desc":"Selects atoms in s1 that are at least X Anstroms away from s2.","@examples":["solvent BEYOND 2 OF chain A"],name:"beyond",abbr:["be."],type:Vi,rule:c2("BEYOND","be."),map:(t,e,r)=>Kt.struct.modifier.exceptBy({0:Kt.struct.filter.within({0:e,target:r,"max-radius":t,invert:!0}),by:r})},{"@desc":"Expands selection to complete residues.","@examples":["BYRESIDUE name N"],name:"byresidue",abbr:["byresi","byres","br."],type:ra,rule:nl(/BYRESIDUE|byresi|byres|br\./i),map:(t,e)=>dc(Kt.struct.modifier.expandProperty({0:Kt.struct.modifier.union({0:e}),property:Kt.ammp("residueKey")}))},{"@desc":"Completely selects all alpha carbons in all residues covered by a selection.","@examples":["BYCALPHA chain A"],name:"bycalpha",abbr:["bca."],type:ra,rule:nl(/BYCALPHA|bca\./i),map:(t,e)=>Kt.struct.generator.queryInSelection({0:Kt.struct.modifier.expandProperty({0:Kt.struct.modifier.union({0:e}),property:Kt.ammp("residueKey")}),query:Kt.struct.generator.atomGroups({"atom-test":Kt.core.rel.eq([Kt.atomName("CA"),Kt.ammp("label_atom_id")])})})},{"@desc":"Expands selection to complete molecules.","@examples":["BYMOLECULE resi 20-30"],name:"bymolecule",isUnsupported:!0,abbr:["bymol","bm."],type:ra,rule:nl(/BYMOLECULE|bymol|bm\./i),map:(t,e)=>dc(Kt.struct.modifier.expandProperty({0:Kt.struct.modifier.union({0:e}),property:Kt.atp("connectedComponentKey")}))},{"@desc":"Expands selection to complete fragments.","@examples":["BYFRAGMENT resi 10"],name:"byfragment",abbr:["byfrag","bf."],isUnsupported:!0,type:ra,rule:nl(/BYFRAGMENT|byfrag|bf\./i),map:(t,e)=>[t,e]},{"@desc":"Expands selection to complete segments.","@examples":["BYSEGMENT resn CYS"],name:"bysegment",abbr:["bysegi","byseg","bs."],type:ra,rule:nl(/BYSEGMENT|bysegi|byseg|bs\./i),map:(t,e)=>dc(Kt.struct.modifier.expandProperty({0:Kt.struct.modifier.union({0:e}),property:Kt.ammp("chainKey")}))},{"@desc":"Expands selection to complete objects.","@examples":["BYOBJECT chain A"],name:"byobject",abbr:["byobj","bo."],isUnsupported:!0,type:ra,rule:nl(/BYOBJECT|byobj|bo\./i),map:(t,e)=>[t,e]},{"@desc":"Expands selection to unit cell.","@examples":["BYCELL chain A"],name:"bycell",isUnsupported:!0,type:ra,rule:nl(/BYCELL/i),map:(t,e)=>[t,e]},{"@desc":"All rings of size \u2264 7 which have at least one atom in s1.","@examples":["BYRING resn HEM"],name:"byring",type:ra,rule:nl(/BYRING/i),map:(t,e)=>dc(Kt.struct.modifier.intersectBy({0:Kt.struct.filter.pick({0:Kt.struct.generator.rings(),test:Kt.core.logic.and([Kt.core.rel.lte([Kt.struct.atomSet.atomCount(),7]),Kt.core.rel.gr([Kt.struct.atomSet.countQuery([e]),1])])}),by:e}))},{"@desc":"Selects atoms directly bonded to s1, excludes s1.","@examples":["NEIGHBOR resn CYS"],name:"neighbor",type:ra,abbr:["nbr."],rule:nl(/NEIGHBOR|nbr\./i),map:(t,e)=>Kt.struct.modifier.exceptBy({0:dc(Kt.struct.modifier.includeConnected({0:Kt.struct.modifier.union({0:e}),"bond-test":!0})),by:e})},{"@desc":"Selects atoms directly bonded to s1, may include s1.","@examples":["BOUND_TO name CA"],name:"bound_to",abbr:["bto."],type:ra,rule:nl(/BOUND_TO|bto\./i),map:(t,e)=>dc(Kt.struct.modifier.includeConnected({0:Kt.struct.modifier.union({0:e})}))},{"@desc":"Extends s1 by X bonds connected to atoms in s1.","@examples":["resname LIG EXTEND 3"],name:"extend",abbr:["xt."],type:t1,rule:r1(/(EXTEND|xt\.)\s+([0-9]+)/i,2).map(t=>parseInt(t)),map:(t,e)=>dc(Kt.struct.modifier.includeConnected({0:Kt.struct.modifier.union({0:e}),"bond-test":!0,"layer-count":t}))}];var et=q,Ts={nucleic:["A","C","T","G","U","DA","DC","DT","DG","DU"],protein:["ALA","ARG","ASN","ASP","CYS","CYX","GLN","GLU","GLY","HIS","HID","HIE","HIP","ILE","LEU","LYS","MET","MSE","PHE","PRO","SER","THR","TRP","TYR","VAL"],solvent:["HOH","WAT","H20","TIP","SOL"]},OH={nucleic:["P","O3'","O5'","C5'","C4'","C3'","OP1","OP2","O3*","O5*","C5*","C4*","C3*","C2'","C1'","O4'","O2'"],protein:["C","N","CA","O"]};function FH(){return et.struct.combinator.merge([et.struct.modifier.intersectBy({0:et.struct.generator.atomGroups({"residue-test":et.core.set.has([et.core.type.set(Ts.protein),et.ammp("label_comp_id")])}),by:et.struct.generator.atomGroups({"atom-test":et.core.set.has([et.core.type.set(OH.protein),et.ammp("label_atom_id")])})}),et.struct.modifier.intersectBy({0:et.struct.generator.atomGroups({"residue-test":et.core.set.has([et.core.type.set(Ts.nucleic),et.ammp("label_comp_id")])}),by:et.struct.generator.atomGroups({"atom-test":et.core.set.has([et.core.type.set(OH.nucleic),et.ammp("label_atom_id")])})})])}var _k={all:{"@desc":"All atoms currently loaded into PyMOL",abbr:["*"],map:()=>et.struct.generator.all()},none:{"@desc":"No atoms (empty selection)",map:()=>et.struct.generator.empty()},hydrogens:{"@desc":"All hydrogen atoms currently loaded into PyMOL",abbr:["hydro","h."],map:()=>et.struct.generator.atomGroups({"atom-test":et.core.rel.eq([et.acp("elementSymbol"),et.es("H")])})},hetatm:{"@desc":"All atoms loaded from Protein Data Bank HETATM records",abbr:["het"],map:()=>et.struct.generator.atomGroups({"atom-test":et.core.rel.eq([et.ammp("isHet"),!0])})},visible:{"@desc":"All atoms in enabled objects with at least one visible representation",abbr:["v."]},polymer:{"@desc":"All atoms on the polymer (not het). Finds atoms with residue identifiers matching a known polymer, such a peptide and DNA.",abbr:["pol."],map:()=>et.struct.generator.atomGroups({"residue-test":et.core.set.has([et.core.type.set(Ts.nucleic.concat(Ts.protein)),et.ammp("label_comp_id")])})},sidechain:{"@desc":"Polymer non-backbone atoms (new in PyMOL 1.6.1)",abbr:["sc."],map:()=>et.struct.modifier.exceptBy({0:et.struct.generator.atomGroups({"residue-test":et.core.set.has([et.core.type.set(Ts.nucleic.concat(Ts.protein)),et.ammp("label_comp_id")])}),by:FH()})},present:{"@desc":"All atoms with defined coordinates in the current state (used in creating movies)",abbr:["pr."]},center:{"@desc":"Pseudo-atom at the center of the scene"},origin:{"@desc":"Pseudo-atom at the origin of rotation"},enabled:{"@desc":"All enabled objects or selections from the object list."},masked:{"@desc":"All masked atoms.",abbr:["msk."]},protected:{"@desc":"All protected atoms.",abbr:["pr."]},bonded:{"@desc":"All bonded atoms",map:()=>et.struct.generator.atomGroups({"atom-test":et.core.rel.gr([et.struct.atomProperty.core.bondCount({flags:et.struct.type.bondFlags(["covalent","metallic","sulfide"])}),0])})},donors:{"@desc":"All hydrogen bond donor atoms.",abbr:["don."]},acceptors:{"@desc":"All hydrogen bond acceptor atoms.",abbr:["acc."]},fixed:{"@desc":"All fixed atoms.",abbr:["fxd."]},restrained:{"@desc":"All restrained atoms.",abbr:["rst."]},organic:{"@desc":"All atoms in non-polymer organic compounds (e.g. ligands, buffers). Finds carbon-containing molecules that do not match known polymers.",abbr:["org."],map:()=>dc(et.struct.modifier.expandProperty({0:et.struct.modifier.union([et.struct.generator.queryInSelection({0:et.struct.generator.atomGroups({"residue-test":et.core.logic.not([et.core.set.has([et.core.type.set(Ts.nucleic.concat(Ts.protein)),et.ammp("label_comp_id")])])}),query:et.struct.generator.atomGroups({"atom-test":et.core.rel.eq([et.es("C"),et.acp("elementSymbol")])})})]),property:et.ammp("residueKey")}))},inorganic:{"@desc":"All non-polymer inorganic atoms/ions. Finds atoms in molecules that do not contain carbon and do not match any known solvent residues.",abbr:["ino."],map:()=>dc(et.struct.modifier.expandProperty({0:et.struct.modifier.union([et.struct.filter.pick({0:et.struct.generator.atomGroups({"residue-test":et.core.logic.not([et.core.set.has([et.core.type.set(Ts.nucleic.concat(Ts.protein).concat(Ts.solvent)),et.ammp("label_comp_id")])]),"group-by":et.ammp("residueKey")}),test:et.core.logic.not([et.core.set.has([et.struct.atomSet.propertySet([et.acp("elementSymbol")]),et.es("C")])])})]),property:et.ammp("residueKey")}))},solvent:{"@desc":"All water molecules. The hardcoded solvent residue identifiers are currently: HOH, WAT, H20, TIP, SOL.",abbr:["sol."],map:()=>et.struct.generator.atomGroups({"residue-test":et.core.set.has([et.core.type.set(Ts.solvent),et.ammp("label_comp_id")])})},guide:{"@desc":"All protein CA and nucleic acid C4*/C4",map:()=>et.struct.combinator.merge([et.struct.generator.atomGroups({"atom-test":et.core.rel.eq([et.atomName("CA"),et.ammp("label_atom_id")]),"residue-test":et.core.set.has([et.core.type.set(Ts.protein),et.ammp("label_comp_id")])}),et.struct.generator.atomGroups({"atom-test":et.core.set.has([uc(["C4*","C4'"]),et.ammp("label_atom_id")]),"residue-test":et.core.set.has([et.core.type.set(Ts.nucleic),et.ammp("label_comp_id")])})])},metals:{"@desc":"All metal atoms (new in PyMOL 1.6.1)"},backbone:{"@desc":"Polymer backbone atoms (new in PyMOL 1.6.1)",abbr:["bb."],map:()=>FH()},"polymer.protein":{"@desc":"Protein (New in PyMOL 2.1)",abbr:["polymer.protein"],map:()=>et.struct.generator.atomGroups({"residue-test":et.core.set.has([et.core.type.set(Ts.protein),et.ammp("label_comp_id")])})},"polymer.nucleic":{"@desc":"Nucleic Acid (New in PyMOL 2.1)",abbr:["polymer.nucleic"],map:()=>et.struct.generator.atomGroups({"residue-test":et.core.set.has([et.core.type.set(Ts.nucleic),et.ammp("label_comp_id")])})}};var _me=q,Zo=DH(s1),ci=fe.string("/");function Xn(t){return t.or(fe.of(null))}function Pme(t){let e={},r={};for(let n in t){let o=s1[n];if(!o)throw new Error(`property '${n}' not supported, value '${t[n]}'`);t[n]!==null&&(r[o.level]||(r[o.level]=[]),r[o.level].push(t[n]))}for(let n in r)e[n]=n1(r[n]);return _me.struct.generator.atomGroups(e)}var Eme=fe.createLanguage({Parens:function(t){return fe.alt(t.Parens,t.Operator,t.Expression).wrap(fe.string("("),fe.string(")"))},Expression:function(t){return fe.alt(t.Keywords,t.AtomSelectionMacro.map(Pme),t.NamedAtomProperties,t.Pepseq,t.Rep,t.Object)},AtomSelectionMacro:function(t){return fe.alt(ci.then(fe.alt(fe.seq(Xn(t.ObjectProperty).skip(ci),Xn(Zo.segi).skip(ci),Xn(Zo.chain).skip(ci),Xn(Zo.resi).skip(ci),Xn(Zo.name)).map(e=>({object:e[0],segi:e[1],chain:e[2],resi:e[3],name:e[4]})),fe.seq(Xn(t.ObjectProperty).skip(ci),Xn(Zo.segi).skip(ci),Xn(Zo.chain).skip(ci),Xn(Zo.resi)).map(e=>({object:e[0],segi:e[1],chain:e[2],resi:e[3]})),fe.seq(Xn(t.ObjectProperty).skip(ci),Xn(Zo.segi).skip(ci),Xn(Zo.chain)).map(e=>({object:e[0],segi:e[1],chain:e[2]})),fe.seq(Xn(t.ObjectProperty).skip(ci),Xn(Zo.segi)).map(e=>({object:e[0],segi:e[1]})),fe.seq(Xn(t.ObjectProperty)).map(e=>({object:e[0]})))),fe.alt(fe.seq(Xn(t.ObjectProperty).skip(ci),Xn(Zo.segi).skip(ci),Xn(Zo.chain).skip(ci),Xn(Zo.resi).skip(ci),Xn(Zo.name)).map(e=>({object:e[0],segi:e[1],chain:e[2],resi:e[3],name:e[4]})),fe.seq(Xn(Zo.segi).skip(ci),Xn(Zo.chain).skip(ci),Xn(Zo.resi).skip(ci),Xn(Zo.name)).map(e=>({segi:e[0],chain:e[1],resi:e[2],name:e[3]})),fe.seq(Xn(Zo.chain).skip(ci),Xn(Zo.resi).skip(ci),Xn(Zo.name)).map(e=>({chain:e[0],resi:e[1],name:e[2]})),fe.seq(Xn(Zo.resi).skip(ci),Xn(Zo.name)).map(e=>({resi:e[0],name:e[1]}))))},NamedAtomProperties:function(){return fe.alt(...u2(s1))},Keywords:()=>fe.alt(...L0(_k)),ObjectProperty:()=>{let t=B0(s1,_k,wk).sort(Dl).map(Jm).join("|");return fe.regexp(new RegExp(`(?!(${t}))[A-Z0-9_]+`,"i"))},Object:t=>t.ObjectProperty.notFollowedBy(ci).map(e=>{throw new Error(`property 'object' not supported, value '${e}'`)}),Pepseq:()=>fe.regexp(/(PEPSEQ|ps\.)\s+([a-z]+)/i,2).map(pp("operator 'pepseq' not supported")),Rep:()=>fe.regexp(/REP\s+(lines|spheres|mesh|ribbon|cartoon|sticks|dots|surface|labels|extent|nonbonded|nb_spheres|slice|extent|slice|dashes|angles|dihedrals|cgo|cell|callback|everything)/i,1).map(pp("operator 'rep' not supported")),Operator:function(t){return Cf(wk,fe.alt(t.Parens,t.Expression,t.Operator))},Query:function(t){return fe.alt(t.Operator,t.Parens,t.Expression).trim(fe.optWhitespace)}}),NH=t=>Eme.Query.tryParse(t);var Fo=q,Al=/[-+]?[0-9]*\.?[0-9]+/,m2=/[+]?[0-9]+/,l1=/[-+]?[0-9]+/;function Rg(t){return t}var Pk={T:"turn",E:"sheet",B:"strand",H:"alpha",G:"3-10",I:"pi",C:"none"};function p2(t){return Fo.struct.type.secondaryStructureFlags([Pk[t.toUpperCase()]||"none"])}var hp={name:{"@desc":"str atom name","@examples":["name CA"],regex:/[a-zA-Z0-9]+/,map:Fo.atomName,level:"atom-test",property:Fo.ammp("label_atom_id")},type:{"@desc":"str atom type","@examples":["type C3"],isUnsupported:!0,regex:/[a-zA-Z0-9]+/,map:Rg,level:"atom-test"},index:{"@desc":"num the atom number, starting at 0","@examples":["index 10"],isNumeric:!0,regex:m2,map:t=>parseInt(t)-1,level:"atom-test",property:Fo.ammp("id")},serial:{"@desc":"num the atom number, starting at 1","@examples":["serial 11"],isNumeric:!0,regex:m2,map:t=>parseInt(t),level:"atom-test",property:Fo.ammp("id")},atomicnumber:{"@desc":"num atomic number (0 if undefined)","@examples":["atomicnumber 13"],isNumeric:!0,regex:m2,map:t=>parseInt(t),level:"atom-test",property:Fo.acp("atomicNumber")},element:{"@desc":'str atomic element symbol string ("X" if undefined)',"@examples":["element N"],regex:/[a-zA-Z0-9]{1,3}/,map:t=>Fo.es(t),level:"atom-test",property:Fo.acp("elementSymbol")},altloc:{"@desc":"str alternate location/conformation identifier","@examples":["altloc C"],regex:/[a-zA-Z0-9]+/,map:Rg,level:"atom-test",property:Fo.ammp("label_alt_id")},chain:{"@desc":"str the one-character chain identifier","@examples":["chain A"],regex:/[a-zA-Z0-9]+/,map:Rg,level:"residue-test",property:Fo.ammp("auth_asym_id")},residue:{"@desc":"num a set of connected atoms with the same residue number","@examples":["residue < 11","residue 11"],isNumeric:!0,regex:l1,map:t=>parseInt(t),level:"residue-test",property:Fo.ammp("auth_seq_id")},fragment:{"@desc":"num a set of connected residues","@examples":["fragment 42"],isUnsupported:!0,isNumeric:!0,regex:l1,map:t=>parseInt(t),level:"residue-test"},pfrag:{"@desc":"num a set of connected protein residues","@examples":["pfrag 42"],isUnsupported:!0,isNumeric:!0,regex:l1,map:t=>parseInt(t),level:"residue-test"},nfrag:{"@desc":"num a set of connected nucleic residues","@examples":["nfrag 42"],isUnsupported:!0,isNumeric:!0,regex:l1,map:t=>parseInt(t),level:"residue-test"},sequence:{"@desc":"str a sequence given by one letter names","@examples":["sequence PGATTACA"],isUnsupported:!0,regex:/[a-zA-Z0-9]+/,map:Rg,level:"residue-test"},numbonds:{"@desc":"num number of bonds","@examples":["numbonds = 2","numbonds >= 3"],isNumeric:!0,regex:m2,map:t=>parseInt(t),level:"atom-test",property:Fo.acp("bondCount")},resname:{"@desc":"str residue name","@examples":["resname ALA"],regex:/[a-zA-Z0-9]+/,map:Rg,level:"residue-test",property:Fo.ammp("auth_comp_id")},resid:{"@desc":"num residue id","@examples":["resid 42"],isNumeric:!0,regex:l1,map:t=>parseInt(t),level:"residue-test",property:Fo.ammp("auth_seq_id")},segname:{"@desc":"str segment name","@examples":["segname B"],regex:/[a-zA-Z0-9]+/,map:Rg,level:"residue-test",property:Fo.ammp("label_asym_id")},x:{"@desc":"float x coordinate","@examples":["x 42"],isNumeric:!0,regex:Al,map:t=>parseFloat(t),level:"atom-test",property:Fo.acp("x")},y:{"@desc":"float y coordinate","@examples":["y > 1.7"],isNumeric:!0,regex:Al,map:t=>parseFloat(t),level:"atom-test",property:Fo.acp("y")},z:{"@desc":"float z coordinate","@examples":["z < 11","z > -21"],isNumeric:!0,regex:Al,map:t=>parseFloat(t),level:"atom-test",property:Fo.acp("z")},radius:{"@desc":"float atomic radius","@examples":["radius > 1.3"],isNumeric:!0,regex:Al,map:t=>parseFloat(t),level:"atom-test",property:Fo.acp("vdw")},mass:{"@desc":"float atomic mass","@examples":["mass > 2"],isNumeric:!0,regex:Al,map:t=>parseFloat(t),level:"atom-test",property:Fo.acp("mass")},charge:{"@desc":"float atomic charge","@examples":["charge > 0","charge 1"],isNumeric:!0,regex:Al,map:t=>parseFloat(t),level:"atom-test",property:Fo.ammp("pdbx_formal_charge")},beta:{"@desc":"float temperature factor","@examples":["beta < 20","beta > 35"],isNumeric:!0,regex:Al,map:t=>parseFloat(t),level:"atom-test",property:Fo.ammp("B_iso_or_equiv")},occupancy:{"@desc":"float occupancy","@examples":["occupancy 1","occupancy < 1"],isNumeric:!0,regex:Al,map:t=>parseFloat(t),level:"atom-test",property:Fo.ammp("occupancy")},user:{"@desc":"float time-varying user-specified value","@examples":["user < 0.1"],isUnsupported:!0,isNumeric:!0,regex:Al,map:t=>parseFloat(t),level:"atom-test"},rasmol:{"@desc":"str translates Rasmol selection string to VMD","@examples":["rasmol 'all'"],isUnsupported:!0,regex:/[^']*/,map:Rg,level:"atom-test"},structure:{"@desc":"str single letter name for the secondary structure","@examples":["structure H","structure H E"],regex:/T|E|B|H|G|I|C/i,map:p2,level:"atom-test",property:Fo.ammp("secondaryStructureFlags")},phi:{"@desc":"float phi backbone conformational angles","@examples":["phi < 160"],isUnsupported:!0,isNumeric:!0,regex:Al,map:t=>parseFloat(t),level:"residue-test"},psi:{"@desc":"float psi backbone conformational angles","@examples":["psi < 160"],isUnsupported:!0,isNumeric:!0,regex:Al,map:t=>parseFloat(t),level:"residue-test"},ufx:{"@desc":"num force to apply in the x coordinate","@examples":["ufx 1"],isUnsupported:!0,isNumeric:!0,regex:Al,map:t=>parseInt(t),level:"atom-test"},ufy:{"@desc":"num force to apply in the y coordinate","@examples":["ufy 1"],isUnsupported:!0,isNumeric:!0,regex:Al,map:t=>parseInt(t),level:"atom-test"},ufz:{"@desc":"num force to apply in the z coordinate","@examples":["ufz 1"],isUnsupported:!0,isNumeric:!0,regex:Al,map:t=>parseInt(t),level:"atom-test"}};var Lg=q,Ime=Object.keys(hp).sort(Dl).filter(t=>!hp[t].isUnsupported).join("|"),Ek=[{"@desc":"Selects atoms that are not included in s1.","@examples":["not protein"],name:"not",type:ra,rule:fe.regexp(/NOT/i).skip(fe.whitespace),map:(t,e)=>Ia(e)},{"@desc":"Selects atoms within a specified distance of a selection","@examples":["within 5 of name FE"],name:"within",type:ra,rule:nl(/WITHIN\s+([-+]?[0-9]*\.?[0-9]+)\s+OF/i,1).map(t=>parseFloat(t)),map:(t,e)=>Lg.struct.modifier.includeSurroundings({0:e,radius:t})},{"@desc":"Exclusive within, equivalent to (within 3 of X) and not X","@examples":["exwithin 10 of resname HEM"],name:"exwithin",type:ra,rule:nl(/EXWITHIN\s+([-+]?[0-9]*\.?[0-9]+)\s+OF/i,1).map(t=>parseFloat(t)),map:(t,e)=>Lg.struct.modifier.exceptBy({0:Lg.struct.modifier.includeSurroundings({0:e,radius:t}),by:e})},{"@desc":"Selects atoms which have the same keyword as the atoms in a given selection","@examples":["same resid as name FE"],name:"same",type:ra,rule:nl(new RegExp(`SAME\\s+(${Ime})\\s+AS`,"i"),1).map(t=>hp[t].property),map:(t,e)=>Lg.struct.filter.withSameAtomProperties({0:Lg.struct.generator.all(),source:e,property:t})},{"@desc":"Selects atoms included in both s1 and s2.","@examples":["backbone and protein"],name:"and",type:Vi,rule:fe.alt(nu(/AND/i),fe.whitespace),map:(t,e,r)=>Lg.struct.modifier.intersectBy({0:e,by:r})},{"@desc":"Selects atoms included in either s1 or s2.","@examples":["water or protein"],name:"or",type:Vi,rule:nu(/OR/i),map:(t,e,r)=>Lg.struct.combinator.merge([e,r])}];var sr=q;function gp(){return sr.struct.filter.pick({0:sr.struct.generator.atomGroups({"group-by":sr.ammp("residueKey")}),test:sr.core.set.isSubset([uc(["C","N","CA","O"]),sr.ammpSet("label_atom_id")])})}function Ik(){return sr.struct.filter.pick({0:sr.struct.generator.atomGroups({"group-by":sr.ammp("residueKey")}),test:sr.core.logic.and([sr.core.set.isSubset([uc(["P"]),sr.ammpSet("label_atom_id")]),sr.core.logic.or([sr.core.set.isSubset([uc(["O3'","C3'","C4'","C5'","O5'"]),sr.ammpSet("label_atom_id")]),sr.core.set.isSubset([uc(["O3*","C3*","C4*","C5*","O5*"]),sr.ammpSet("label_atom_id")])])])})}function VH(){return sr.struct.combinator.merge([sr.struct.generator.queryInSelection({0:gp(),query:sr.struct.generator.atomGroups({"atom-test":sr.core.set.has([uc(zH.protein),sr.ammp("label_atom_id")])})}),sr.struct.generator.queryInSelection({0:Ik(),query:sr.struct.generator.atomGroups({"atom-test":sr.core.set.has([uc(zH.nucleic),sr.ammp("label_atom_id")])})})])}function lm(t){return sr.struct.generator.atomGroups({"residue-test":sr.core.flags.hasAll([sr.ammp("secondaryStructureFlags"),sr.struct.type.secondaryStructureFlags(t)])})}var zH={nucleic:["P","O3'","O5'","C5'","C4'","C3'","OP1","OP2","O3*","O5*","C5*","C4*","C3*"],protein:["C","N","CA","O"]},ui={acidic:["ASP","GLU"],aliphatic:["ALA","GLY","ILE","LEU","VAL"],aromatic:["HIS","PHE","TRP","TYR"],at:["ADA","A","THY","T"],basic:["ARG","HIS","LYS"],buried:["ALA","LEU","VAL","ILE","PHE","CYS","MET","TRP"],cg:["CYT","C","GUA","G"],cyclic:["HIS","PHE","PRO","TRP","TYR"],hydrophobic:["ALA","LEU","VAL","ILE","PRO","PHE","MET","TRP"],medium:["VAL","THR","ASP","ASN","PRO","CYS","ASX","PCA","HYP"],neutral:["VAL","PHE","GLN","TYR","HIS","CYS","MET","TRP","ASX","GLX","PCA","HYP"],purine:["ADE","A","GUA","G"],pyrimidine:["CYT","C","THY","T","URI","U"],small:["ALA","GLY","SER"],water:["H2O","HH0","OHH","HOH","OH2","SOL","WAT","TIP","TIP2","TIP3","TIP4"]},Dk={all:{"@desc":"everything",map:()=>sr.struct.generator.all()},none:{"@desc":"nothing",map:()=>sr.struct.generator.empty()},protein:{"@desc":"a residue with atoms named C, N, CA, and O",map:()=>gp()},nucleic:{"@desc":"a residue with atoms named P, O1P, O2P and either O3', C3', C4', C5', O5' or O3*, C3*, C4*, C5*, O5*. This definition assumes that the base is phosphorylated, an assumption which will be corrected in the future.",map:()=>Ik()},backbone:{"@desc":"the C, N, CA, and O atoms of a protein and the equivalent atoms in a nucleic acid.",map:()=>VH()},sidechain:{"@desc":"non-backbone atoms and bonds",map:()=>Ia(VH())},water:{"@desc":"all atoms with the resname H2O, HH0, OHH, HOH, OH2, SOL, WAT, TIP, TIP2, TIP3 or TIP4",abbr:["waters"],map:()=>Cr(ui.water)},at:{"@desc":"residues named ADA A THY T",map:()=>Cr(ui.at)},acidic:{"@desc":"residues named ASP GLU",map:()=>Cr(ui.acidic)},acyclic:{"@desc":'"protein and not cyclic"',map:()=>sr.struct.modifier.intersectBy({0:gp(),by:Ia(Cr(ui.cyclic))})},aliphatic:{"@desc":"residues named ALA GLY ILE LEU VAL",map:()=>Cr(ui.aliphatic)},alpha:{"@desc":"atom's residue is an alpha helix",map:()=>lm(["alpha"])},amino:{"@desc":"a residue with atoms named C, N, CA, and O",map:()=>gp()},aromatic:{"@desc":"residues named HIS PHE TRP TYR",map:()=>Cr(ui.aromatic)},basic:{"@desc":"residues named ARG HIS LYS",map:()=>Cr(ui.basic)},bonded:{"@desc":"atoms for which numbonds > 0",map:()=>dc(sr.struct.filter.pick({0:sr.struct.modifier.includeConnected({0:sr.struct.generator.all(),"bond-test":sr.core.flags.hasAny([sr.struct.bondProperty.flags(),sr.struct.type.bondFlags(["covalent","metallic","sulfide"])])}),test:sr.core.rel.gr([sr.struct.atomSet.atomCount(),1])}))},buried:{"@desc":"residues named ALA LEU VAL ILE PHE CYS MET TRP",map:()=>Cr(ui.buried)},cg:{"@desc":"residues named CYT C GUA G",map:()=>Cr(ui.cg)},charged:{"@desc":'"basic or acidic"',map:()=>Cr(ui.basic.concat(ui.acidic))},cyclic:{"@desc":"residues named HIS PHE PRO TRP TYR",map:()=>Cr(ui.cyclic)},hetero:{"@desc":'"not (protein or nucleic)"',map:()=>Ia(sr.struct.combinator.merge([gp(),Ik()]))},hydrogen:{"@desc":'name "[0-9]?H.*"',map:()=>sr.struct.generator.atomGroups({"atom-test":sr.core.str.match([sr.core.type.regex(["^[0-9]?[H].*$","i"]),sr.core.type.str([sr.ammp("label_atom_id")])])})},large:{"@desc":'"protein and not (small or medium)"',map:()=>sr.struct.modifier.intersectBy({0:gp(),by:Ia(Cr(ui.small.concat(ui.medium)))})},medium:{"@desc":"residues named VAL THR ASP ASN PRO CYS ASX PCA HYP",map:()=>Cr(ui.medium)},neutral:{"@desc":"residues named VAL PHE GLN TYR HIS CYS MET TRP ASX GLX PCA HYP",map:()=>Cr(ui.neutral)},hydrophobic:{"@desc":"hydrophobic resname ALA LEU VAL ILE PRO PHE MET TRP",map:()=>Cr(ui.hydrophobic)},polar:{"@desc":'"protein and not hydrophobic"',map:()=>sr.struct.modifier.intersectBy({0:gp(),by:Ia(Cr(ui.hydrophobic))})},purine:{"@desc":"residues named ADE A GUA G",map:()=>Cr(ui.purine)},pyrimidine:{"@desc":"residues named CYT C THY T URI U",map:()=>Cr(ui.pyrimidine)},small:{"@desc":"residues named ALA GLY SER",map:()=>Cr(ui.small)},surface:{"@desc":'"protein and not buried"',map:()=>sr.struct.modifier.intersectBy({0:gp(),by:Ia(Cr(ui.buried))})},alpha_helix:{"@desc":"atom's residue is in an alpha helix",map:()=>lm(["alpha"])},pi_helix:{"@desc":"atom's residue is in a pi helix",map:()=>lm(["pi"])},helix_3_10:{"@desc":"atom's residue is in a 3-10 helix",map:()=>lm(["3-10"])},helix:{"@desc":"atom's residue is in an alpha or pi or 3-10 helix",map:()=>lm(["helix"])},extended_beta:{"@desc":"atom's residue is a beta sheet",map:()=>lm(["sheet"])},bridge_beta:{"@desc":"atom's residue is a beta sheet",map:()=>lm(["strand"])},sheet:{"@desc":"atom's residue is a beta sheet",map:()=>lm(["beta"])},turn:{"@desc":"atom's residue is in a turn conformation",map:()=>lm(["turn"])},coil:{"@desc":"atom's residue is in a coil conformation",map:()=>sr.struct.modifier.intersectBy({0:gp(),by:lm(["none"])})}};var is=q,UH={sqr:{"@desc":"square of x","@examples":["sqr(2)"],map:t=>is.core.math.pow([t,2])},sqrt:{"@desc":"square root of x","@examples":["sqrt(2)"],map:t=>is.core.math.sqrt([t])},abs:{"@desc":"absolute value of x","@examples":["abs(2)"],map:t=>is.core.math.abs([t])},floor:{"@desc":"largest integer not greater than x","@examples":["floor(2)"],map:t=>is.core.math.floor([t])},ceil:{"@desc":"smallest integer not less than x","@examples":["ceil(2)"],map:t=>is.core.math.ceil([t])},sin:{"@desc":"sine of x","@examples":["sin(2)"],map:t=>is.core.math.sin([t])},cos:{"@desc":"cosine of x","@examples":["cos(2)"],map:t=>is.core.math.cos([t])},tan:{"@desc":"tangent of x","@examples":["tan(2)"],map:t=>is.core.math.tan([t])},atan:{"@desc":"arctangent of x","@examples":["atan(2)"],map:t=>is.core.math.atan([t])},asin:{"@desc":"arcsin of x","@examples":["asin(2)"],map:t=>is.core.math.asin([t])},acos:{"@desc":"arccos of x","@examples":["acos(2)"],map:t=>is.core.math.acos([t])},sinh:{"@desc":"hyperbolic sine of x","@examples":["sinh(2)"],map:t=>is.core.math.sinh([t])},cosh:{"@desc":"hyperbolic cosine of x","@examples":["cosh(2)"],map:t=>is.core.math.cosh([t])},tanh:{"@desc":"hyperbolic tangent of x","@examples":["tanh(2)"],map:t=>is.core.math.tanh([t])},exp:{"@desc":"e to the power x","@examples":["exp(2)"],map:t=>is.core.math.exp([t])},log:{"@desc":"natural log of x","@examples":["log(2)"],map:t=>is.core.math.log([t])},log10:{"@desc":"log base 10 of x","@examples":["log10(2)"],map:t=>is.core.math.log10([t])}};var oo=q,Dme=[{"@desc":"multiplication, division","@examples":[],name:"mul-div",type:Vi,rule:fe.regexp(/\s*(\*|\/)\s*/,1),map:(t,e,r)=>{switch(t){case"*":return oo.core.math.mult([e,r]);case"/":return oo.core.math.div([e,r]);default:throw new Error(`value operator '${t}' not supported`)}}},{"@desc":"addition, substraction","@examples":[],name:"add-sub",type:Vi,rule:fe.regexp(/\s*(-|\+)\s*/,1),map:(t,e,r)=>{switch(t){case"-":return oo.core.math.sub([e,r]);case"+":return oo.core.math.add([e,r]);default:throw new Error(`value operator '${t}' not supported`)}}},{"@desc":"value comparisons","@examples":[],name:"comparison",type:Vi,rule:fe.alt(fe.regexp(/\s*(=~|==|>=|<=|=|!=|>|<)\s*/,1),fe.whitespace.result("=")),map:(t,e,r)=>{let n;if(e.head!==void 0?(e.head.name==="structure-query.atom-property.macromolecular.secondary-structure-flags"&&(n=oo.core.flags.hasAny([e,p2(r)])),e.head.name==="core.type.regex"&&(n=oo.core.str.match([e,oo.core.type.str([r])]))):r.head!==void 0?(r.head.name==="structure-query.atom-property.macromolecular.secondary-structure-flags"&&(n=oo.core.flags.hasAny([r,p2(e)])),r.head.name==="core.type.regex"&&(n=oo.core.str.match([r,oo.core.type.str([e])]))):t==="=~"&&(e.head?n=oo.core.str.match([oo.core.type.regex([`^${r}$`,"i"]),oo.core.type.str([e])]):n=oo.core.str.match([oo.core.type.regex([`^${e}$`,"i"]),oo.core.type.str([r])])),!n)switch(e.head&&(r=Mg(e,r)),r.head&&(e=Mg(r,e)),t){case"=":case"==":n=oo.core.rel.eq([e,r]);break;case"!=":n=oo.core.rel.neq([e,r]);break;case">":n=oo.core.rel.gr([e,r]);break;case"<":n=oo.core.rel.lt([e,r]);break;case">=":n=oo.core.rel.gre([e,r]);break;case"<=":n=oo.core.rel.lte([e,r]);break;default:throw new Error(`value operator '${t}' not supported`)}return oo.struct.generator.atomGroups({"atom-test":n})}}],Ame=fe.createLanguage({Parens:function(t){return fe.alt(t.Parens,t.Operator,t.Expression).wrap(fe.string("("),fe.string(")"))},Expression:function(t){return fe.alt(t.RangeListProperty,t.ValueQuery,t.Keywords)},NamedAtomProperties:function(){return fe.alt(...u2(hp))},Keywords:()=>fe.alt(...L0(Dk)),ValueRange:function(t){return fe.seq(t.Value.skip(fe.regexp(/\s+TO\s+/i)),t.Value).map(e=>({range:e}))},RangeListProperty:function(t){return fe.seq(fe.alt(...o1(hp,/\s/)).skip(fe.whitespace),fe.alt(t.ValueRange,t.Value).sepBy1(fe.whitespace)).map(e=>{let[r,n]=e,o=[],i=[];n.forEach(c=>{c.range?i.push(oo.core.rel.inRange([r,c.range[0],c.range[1]])):o.push(Mg(r,c,Pk))});let a=IH(i),s=MH(r,o),l;return a&&s?l=oo.core.logic.or([a,s]):l=a||s,oo.struct.generator.atomGroups({[kH(r)]:l})})},Operator:function(t){return Cf(Ek,fe.alt(t.Parens,t.Expression,t.ValueQuery))},Query:function(t){return fe.alt(t.Operator,t.Parens,t.Expression).trim(fe.optWhitespace)},Number:function(){return fe.regexp(/-?(0|[1-9][0-9]*)([.][0-9]+)?([eE][+-]?[0-9]+)?/).map(Number).desc("number")},String:function(){let t=B0(hp,Dk,Ek).sort(Dl).map(Jm).join("|");return fe.alt(fe.regexp(new RegExp(`(?!(${t}))[A-Z0-9_]+`,"i")),fe.regexp(/'((?:[^"\\]|\\.)*)'/,1),fe.regexp(/"((?:[^"\\]|\\.)*)"/,1).map(e=>oo.core.type.regex([`^${e}$`,"i"]))).desc("string")},Value:function(t){return fe.alt(t.Number,t.String)},ValueParens:function(t){return fe.alt(t.ValueParens,t.ValueOperator,t.ValueExpressions).wrap(fe.string("("),fe.string(")"))},ValuePropertyNames:function(){return fe.alt(...o1(hp,/=~|==|>=|<=|=|!=|>|<|\)|\s|\+|-|\*|\//i))},ValueOperator:function(t){return Cf(Dme,fe.alt(t.ValueParens,t.ValueExpressions))},ValueExpressions:function(t){return fe.alt(t.ValueFunctions,t.Value,t.ValuePropertyNames)},ValueFunctions:function(t){return fe.alt(...AH(UH,t.ValueOperator))},ValueQuery:function(t){return fe.alt(t.ValueOperator.map(e=>{if(!e.head.name||!e.head.name.startsWith("structure-query.generator"))throw new Error(`values must be part of an comparison, value '${e}'`);return e}))}}),GH=t=>Ame.Query.tryParse(t);var jH={pymol:NH,vmd:GH,jmol:BH};var kme=jH;function HH(t,e){try{return kme[t](e)}catch(r){throw console.error(r.message),r}}var Ak=class{constructor(){this.map=new Map}removeSymbol(e){this.map.delete(e.symbol.id)}addSymbol(e){this.map.has(e.symbol.id)&&console.warn(`Symbol '${e.symbol.id}' already added. Call removeSymbol/removeCustomProps re-adding the symbol.`),this.map.set(e.symbol.id,e)}addCustomProp(e){if(e.symbols)for(let r of Object.keys(e.symbols))this.addSymbol(e.symbols[r])}removeCustomProp(e){if(e.symbols)for(let r of Object.keys(e.symbols))this.removeSymbol(e.symbols[r])}getRuntime(e){return this.map.get(e)}},N0=new Ak,kk=class{constructor(e){this.table=e,this.constQueryContext=new fa(ue.Empty)}},qH;(function(t){function e(n){return{kind:"const",value:n}}t.Const=e;function r(n){return{kind:"dynamic",runtime:n}}t.Dynamic=r})(qH||(qH={}));var Bg;(function(t){function e(n){return{isConst:!0,fn:function(i){return n}}}t.Const=e;function r(n){return{isConst:!1,fn:n}}t.Dynamic=r})(Bg||(Bg={}));var F0;(function(t){function e(r,n,o,i){if(typeof r.length=="number")for(let a=0,s=r.length;ai[o]=n,[])}),Nt(re.core.type.set,function(e,r){return F0.forEachEval(r,e,function(o,i,a){return a.add(o)},new Set)}),Nt(re.core.type.regex,function(e,r){return new RegExp(r[0](e),r[1]&&r[1](e)||"")}),Nt(re.core.type.bitflags,function(e,r){return+r[0](e)}),Nt(re.core.type.compositeKey,function(e,r){return F0.forEachEval(r,e,(n,o,i)=>i[o]=""+n,[]).join("-")}),Nt(re.core.logic.not,(t,e)=>!e[0](t)),Nt(re.core.logic.and,(t,e)=>{if(typeof e.length=="number"){for(let r=0,n=e.length;r{if(typeof e.length=="number"){for(let r=0,n=e.length;re[0](t)===e[1](t)),Nt(re.core.rel.neq,(t,e)=>e[0](t)!==e[1](t)),Nt(re.core.rel.lt,(t,e)=>e[0](t)e[0](t)<=e[1](t)),Nt(re.core.rel.gr,(t,e)=>e[0](t)>e[1](t)),Nt(re.core.rel.gre,(t,e)=>e[0](t)>=e[1](t)),Nt(re.core.rel.inRange,(t,e)=>{let r=e[0](t);return r>=e[1](t)&&r<=e[2](t)}),Nt(re.core.math.add,(t,e)=>{let r=0;if(typeof e.length=="number")for(let n=0,o=e.length;n{let r=0;if(typeof e.length=="number"){if(e.length===1)return-e[0](t);r=e[0](t)||0;for(let n=1,o=e.length;n{let r=1;if(typeof e.length=="number")for(let n=0,o=e.length;ne[0](t)/e[1](t)),Nt(re.core.math.pow,(t,e)=>Math.pow(e[0](t),e[1](t))),Nt(re.core.math.mod,(t,e)=>e[0](t)%e[1](t)),Nt(re.core.math.min,(t,e)=>{let r=Number.POSITIVE_INFINITY;if(typeof e.length=="number")for(let n=0,o=e.length;n{let r=Number.NEGATIVE_INFINITY;if(typeof e.length=="number")for(let n=0,o=e.length;nrm(e[0](t),e[1](t))),Nt(re.core.math.sortedCantorPairing,(t,e)=>Lx(e[0](t),e[1](t))),Nt(re.core.math.invertCantorPairing,(t,e)=>TT([0,0],e[0](t))),Nt(re.core.math.floor,(t,e)=>Math.floor(e[0](t))),Nt(re.core.math.ceil,(t,e)=>Math.ceil(e[0](t))),Nt(re.core.math.roundInt,(t,e)=>Math.round(e[0](t))),Nt(re.core.math.trunc,(t,e)=>Math.trunc(e[0](t))),Nt(re.core.math.abs,(t,e)=>Math.abs(e[0](t))),Nt(re.core.math.sign,(t,e)=>Math.sign(e[0](t))),Nt(re.core.math.sqrt,(t,e)=>Math.sqrt(e[0](t))),Nt(re.core.math.cbrt,(t,e)=>Math.cbrt(e[0](t))),Nt(re.core.math.sin,(t,e)=>Math.sin(e[0](t))),Nt(re.core.math.cos,(t,e)=>Math.cos(e[0](t))),Nt(re.core.math.tan,(t,e)=>Math.tan(e[0](t))),Nt(re.core.math.asin,(t,e)=>Math.asin(e[0](t))),Nt(re.core.math.acos,(t,e)=>Math.acos(e[0](t))),Nt(re.core.math.atan,(t,e)=>Math.atan(e[0](t))),Nt(re.core.math.sinh,(t,e)=>Math.sinh(e[0](t))),Nt(re.core.math.cosh,(t,e)=>Math.cosh(e[0](t))),Nt(re.core.math.tanh,(t,e)=>Math.tanh(e[0](t))),Nt(re.core.math.exp,(t,e)=>Math.exp(e[0](t))),Nt(re.core.math.log,(t,e)=>Math.log(e[0](t))),Nt(re.core.math.log10,(t,e)=>Math.log10(e[0](t))),Nt(re.core.math.atan2,(t,e)=>Math.atan2(e[0](t),e[1](t))),Nt(re.core.str.match,(t,e)=>e[0](t).test(e[1](t))),Nt(re.core.str.concat,(t,e)=>{let r=[];if(typeof e.length=="number")for(let n=0,o=e.length;ne[0](t)[e[1](t)]),Nt(re.core.list.equal,(t,e)=>v0(e[0](t),e[1](t))),Nt(re.core.set.has,function(e,r){return r[0](e).has(r[1](e))}),Nt(re.core.set.isSubset,function(e,r){return no.isSuperset(r[1](e),r[0](e))}),Nt(re.core.flags.hasAny,(t,e)=>{let r=e[1](t),n=e[0](t);return r?(n&r)!==0:!!n}),Nt(re.core.flags.hasAll,(t,e)=>{let r=e[1](t),n=e[0](t);return r?(n&r)===r:!n}),Nt(re.structureQuery.type.elementSymbol,(t,e)=>Hz(e[0](t))),Nt(re.structureQuery.type.atomName,(t,e)=>Sz(e[0](t))),Nt(re.structureQuery.type.bondFlags,(t,e)=>{let r=0;if(typeof e.length=="number")for(let n=0,o=e.length;nlU.elementFingerprint(Rme(t,e))),Nt(re.structureQuery.type.secondaryStructureFlags,(t,e)=>{let r=0;if(typeof e.length=="number")for(let n=0,o=e.length;ncn.filters.pick(e[0],e.test)(t)),bt(re.structureQuery.filter.first,(t,e)=>cn.filters.first(e[0])(t)),bt(re.structureQuery.filter.withSameAtomProperties,(t,e)=>cn.filters.withSameAtomProperties(e[0],e.source,e.property)(t)),bt(re.structureQuery.filter.intersectedBy,(t,e)=>cn.filters.areIntersectedBy(e[0],e.by)(t)),bt(re.structureQuery.filter.within,(t,e)=>{var r,n,o;return cn.filters.within({query:e[0],target:e.target,minRadius:(r=e["min-radius"])===null||r===void 0?void 0:r.call(e,t),maxRadius:(n=e["max-radius"])===null||n===void 0?void 0:n.call(e,t),elementRadius:e["atom-radius"],invert:(o=e.invert)===null||o===void 0?void 0:o.call(e,t)})(t)}),bt(re.structureQuery.filter.isConnectedTo,(t,e)=>{var r,n;return cn.filters.isConnectedTo({query:e[0],target:e.target,disjunct:(r=e.disjunct)===null||r===void 0?void 0:r.call(e,t),invert:(n=e.invert)===null||n===void 0?void 0:n.call(e,t),bondTest:e["bond-test"]})(t)}),bt(re.structureQuery.generator.atomGroups,function(e,r){return cn.generators.atoms({entityTest:r["entity-test"],chainTest:r["chain-test"],residueTest:r["residue-test"],atomTest:r["atom-test"],groupBy:r["group-by"]})(e)}),bt(re.structureQuery.generator.all,function(e){return cn.generators.all(e)}),bt(re.structureQuery.generator.empty,function(e){return cn.generators.none(e)}),bt(re.structureQuery.generator.bondedAtomicPairs,function(e,r){return cn.generators.bondedAtomicPairs(r&&r[0])(e)}),bt(re.structureQuery.generator.rings,function(e,r){var n,o;return cn.generators.rings((n=r?.fingerprint)===null||n===void 0?void 0:n.call(r,e),(o=r?.["only-aromatic"])===null||o===void 0?void 0:o.call(r,e))(e)}),bt(re.structureQuery.generator.queryInSelection,function(e,r){var n;return cn.generators.querySelection(r[0],r.query,(n=r["in-complement"])===null||n===void 0?void 0:n.call(r,e))(e)}),bt(re.structureQuery.modifier.includeSurroundings,function(e,r){return cn.modifiers.includeSurroundings(r[0],{radius:r.radius(e),wholeResidues:!!(r["as-whole-residues"]&&r["as-whole-residues"](e)),elementRadius:r["atom-radius"]})(e)}),bt(re.structureQuery.modifier.surroundingLigands,function(e,r){return cn.modifiers.surroundingLigands({query:r[0],radius:r.radius(e),includeWater:!!(r["include-water"]&&r["include-water"](e))})(e)}),bt(re.structureQuery.modifier.wholeResidues,function(e,r){return cn.modifiers.wholeResidues(r[0])(e)}),bt(re.structureQuery.modifier.union,function(e,r){return cn.modifiers.union(r[0])(e)}),bt(re.structureQuery.modifier.expandProperty,function(e,r){return cn.modifiers.expandProperty(r[0],r.property)(e)}),bt(re.structureQuery.modifier.exceptBy,function(e,r){return cn.modifiers.exceptBy(r[0],r.by)(e)}),bt(re.structureQuery.modifier.includeConnected,function(e,r){var n,o;return cn.modifiers.includeConnected({query:r[0],bondTest:r["bond-test"],wholeResidues:!!(r["as-whole-residues"]&&r["as-whole-residues"](e)),layerCount:r["layer-count"]&&r["layer-count"](e)||1,fixedPoint:(o=(n=r["fixed-point"])===null||n===void 0?void 0:n.call(r,e))!==null&&o!==void 0?o:!1})(e)}),bt(re.structureQuery.modifier.intersectBy,function(e,r){return cn.modifiers.intersectBy(r[0],r.by)(e)}),bt(re.structureQuery.combinator.merge,(t,e)=>cn.combinators.merge(e)(t)),bt(re.structureQuery.atomProperty.core.elementSymbol,gn(Ne.atom.type_symbol)),bt(re.structureQuery.atomProperty.core.vdw,(t,e)=>ff(Ne.atom.type_symbol(e&&e[0]&&e[0](t)||t.element))),bt(re.structureQuery.atomProperty.core.mass,(t,e)=>SU(Ne.atom.type_symbol(e&&e[0]&&e[0](t)||t.element))),bt(re.structureQuery.atomProperty.core.atomicNumber,(t,e)=>P0(Ne.atom.type_symbol(e&&e[0]&&e[0](t)||t.element))),bt(re.structureQuery.atomProperty.core.x,gn(Ne.atom.x)),bt(re.structureQuery.atomProperty.core.y,gn(Ne.atom.y)),bt(re.structureQuery.atomProperty.core.z,gn(Ne.atom.z)),bt(re.structureQuery.atomProperty.core.sourceIndex,gn(Ne.atom.sourceIndex)),bt(re.structureQuery.atomProperty.core.operatorName,gn(Ne.unit.operator_name)),bt(re.structureQuery.atomProperty.core.operatorKey,gn(Ne.unit.operator_key)),bt(re.structureQuery.atomProperty.core.modelIndex,gn(Ne.unit.model_index)),bt(re.structureQuery.atomProperty.core.modelLabel,gn(Ne.unit.model_label)),bt(re.structureQuery.atomProperty.core.atomKey,(t,e)=>{let r=e&&e[0]&&e[0](t)||t.element;return rm(r.unit.id,r.element)}),bt(re.structureQuery.atomProperty.macromolecular.residueKey,(t,e)=>z.residueIndex(e&&e[0]&&e[0](t)||t.element)),bt(re.structureQuery.atomProperty.macromolecular.chainKey,(t,e)=>z.chainIndex(e&&e[0]&&e[0](t)||t.element)),bt(re.structureQuery.atomProperty.macromolecular.entityKey,(t,e)=>z.entityIndex(e&&e[0]&&e[0](t)||t.element)),bt(re.structureQuery.atomProperty.macromolecular.id,gn(Ne.atom.id)),bt(re.structureQuery.atomProperty.macromolecular.isHet,(t,e)=>Ne.residue.group_PDB(e&&e[0]&&e[0](t)||t.element)!=="ATOM"),bt(re.structureQuery.atomProperty.macromolecular.label_atom_id,gn(Ne.atom.label_atom_id)),bt(re.structureQuery.atomProperty.macromolecular.label_alt_id,gn(Ne.atom.label_alt_id)),bt(re.structureQuery.atomProperty.macromolecular.label_comp_id,gn(Ne.atom.label_comp_id)),bt(re.structureQuery.atomProperty.macromolecular.label_seq_id,gn(Ne.residue.label_seq_id)),bt(re.structureQuery.atomProperty.macromolecular.label_asym_id,gn(Ne.chain.label_asym_id)),bt(re.structureQuery.atomProperty.macromolecular.label_entity_id,gn(Ne.entity.id)),bt(re.structureQuery.atomProperty.macromolecular.auth_atom_id,gn(Ne.atom.auth_atom_id)),bt(re.structureQuery.atomProperty.macromolecular.auth_comp_id,gn(Ne.atom.auth_comp_id)),bt(re.structureQuery.atomProperty.macromolecular.auth_seq_id,gn(Ne.residue.auth_seq_id)),bt(re.structureQuery.atomProperty.macromolecular.auth_asym_id,gn(Ne.chain.auth_asym_id)),bt(re.structureQuery.atomProperty.macromolecular.pdbx_PDB_ins_code,gn(Ne.residue.pdbx_PDB_ins_code)),bt(re.structureQuery.atomProperty.macromolecular.pdbx_formal_charge,gn(Ne.atom.pdbx_formal_charge)),bt(re.structureQuery.atomProperty.macromolecular.occupancy,gn(Ne.atom.occupancy)),bt(re.structureQuery.atomProperty.macromolecular.B_iso_or_equiv,gn(Ne.atom.B_iso_or_equiv)),bt(re.structureQuery.atomProperty.macromolecular.entityType,gn(Ne.entity.type)),bt(re.structureQuery.atomProperty.macromolecular.entitySubtype,gn(Ne.entity.subtype)),bt(re.structureQuery.atomProperty.macromolecular.entityPrdId,gn(Ne.entity.prd_id)),bt(re.structureQuery.atomProperty.macromolecular.entityDescription,gn(Ne.entity.pdbx_description)),bt(re.structureQuery.atomProperty.macromolecular.objectPrimitive,gn(Ne.unit.object_primitive)),bt(re.structureQuery.atomProperty.macromolecular.isNonStandard,gn(Ne.residue.isNonStandard)),bt(re.structureQuery.atomProperty.macromolecular.secondaryStructureKey,gn(Ne.residue.secondary_structure_key)),bt(re.structureQuery.atomProperty.macromolecular.secondaryStructureFlags,gn(Ne.residue.secondary_structure_type)),bt(re.structureQuery.atomProperty.macromolecular.chemCompType,gn(Ne.residue.chem_comp_type)),bt(re.structureQuery.atomSet.atomCount,function(e,r){return cn.atomset.atomCount(e)}),bt(re.structureQuery.atomSet.countQuery,function(e,r){return cn.atomset.countQuery(r[0])(e)}),bt(re.structureQuery.atomSet.propertySet,function(e,r){return cn.atomset.propertySet(r[0])(e)}),bt(re.structureQuery.bondProperty.order,(t,e)=>t.atomicBond.order),bt(re.structureQuery.bondProperty.flags,(t,e)=>t.atomicBond.type),bt(re.structureQuery.bondProperty.key,(t,e)=>t.atomicBond.key),bt(re.structureQuery.bondProperty.atomA,(t,e)=>t.atomicBond.a),bt(re.structureQuery.bondProperty.atomB,(t,e)=>t.atomicBond.b),bt(re.structureQuery.bondProperty.length,(t,e)=>t.atomicBond.length),bt(re.internal.generator.bundleElement,function(e,r){return hU(r.groupedUnits(e),r.ranges(e),r.set(e))}),bt(re.internal.generator.bundle,function(e,r){return gU(r.elements(e))(e)}),bt(re.internal.generator.current,function(e,r){return e.tryGetCurrentSelection()})];function gn(t){return(e,r)=>t(r&&r[0]&&r[0](e)||e.element)}function XH(t,e){return t|(Pr.isName(e)?Pr.fromName(e):0)}function YH(t,e){switch(e.toLowerCase()){case"helix":return t|2;case"alpha":return t|2|4096;case"pi":return t|2|32768;case"310":return t|2|2048;case"beta":return t|4;case"strand":return t|4|4194304;case"sheet":return t|4|8388608;case"turn":return t|16;case"bend":return t|8;case"coil":return t|536870912;default:return t}}function Rme(t,e){let r=[];if(!e)return r;if(typeof e.length=="number")for(let n=0,o=e.length;n{let b=f===-1,v=b?ce(0):f;p.push({loci:h,color:v,clear:b})}),{kind:"element-loci",layers:p}}else return c}t.merge=o;function i(c,u){if(r(c))return c;if(c.kind==="element-loci"){let{structure:d}=c.layers[0].loci,m=[];for(let p of c.layers){let{loci:h,color:f,clear:b}=p,v=z.Loci.remap(h,u);h=z.Loci.remap(v,d),z.Loci.isEmpty(h)||m.push({loci:h,color:f,clear:b})}return{kind:"element-loci",layers:m}}else return c}t.filter=i;function a(c,u){let d=[];for(let m=0,p=c.length;mr(o)}t.factory=e;function r(o){var i;return i=class{static is(s){return!!s&&o===s.type}constructor(s,l){this.data=s,this.id=vo.create22(),this.type=o,this.label=l&&l.label||o.name,this.description=l&&l.description}},i.type=o,i}t.create=r;function n(o,i){if(!o.tags)return!1;for(let a of o.tags)if(a===i)return!0;return!1}t.hasTag=n,t.Null={id:vo.create22(),type:{name:"Null",typeClass:"Null"},data:void 0,label:"Null"}})(Rr||(Rr={}));var V0;(function(t){function e(n){let o=n;return!!o&&!!o.transform&&!!o.parent&&!!o.status}t.is=e;function r(n,o){let i=typeof o=="string"?o:t.is(o)?o.transform.ref:o.ref;return n.cells.get(i)}t.resolve=r})(V0||(V0={}));var z0=class{get cell(){var e;return(e=this.state)===null||e===void 0?void 0:e.cells.get(this.ref)}get obj(){var e,r;return(r=(e=this.state)===null||e===void 0?void 0:e.cells.get(this.ref))===null||r===void 0?void 0:r.obj}get data(){var e;return(e=this.obj)===null||e===void 0?void 0:e.data}update(e,r){if(!this.state)throw new Error("To use update() from StateObjectSelector, 'state' must be defined.");return r||(r=this.state.build()),(r||this.state.build()).to(this).update(e),r}checkValid(){if(!this.state)throw new Error("Unassigned State.");let e=this.cell;if(!e)throw new Error("Not created at all. Did you await/then the corresponding state update?");if(e.status==="ok")return!0;throw e.status==="error"?new Error(e.errorText):e.obj===Rr.Null?new Error("The object is Null."):new Error("Unresolved. Did you await/then the corresponding state update?")}get isOk(){let e=this.cell;return e&&e.status==="ok"&&e.obj!==Rr.Null}constructor(e,r){this.ref=e,this.state=r}},Fn;(function(t){function e(o){var i;if(o)return typeof o=="string"?o:V0.is(o)?o.transform.ref:(i=o.cell)===null||i===void 0?void 0:i.transform.ref}t.resolveRef=e;function r(o,i){if(i)return V0.is(i)?i:typeof i=="string"?o.cells.get(i):i.cell}t.resolve=r;function n(o,i){let a=r(o,i);if(!(!a||!a.obj||a.status!=="ok"))return a}t.resolveAndCheck=n})(Fn||(Fn={}));var b1="delete",Co=5,iu=1<>>0;if(""+r!==e||r===4294967295)return NaN;e=r}return e<0?U0(t)+e:e}function x6(){return!0}function C2(t,e,r){return(t===0&&!C6(t)||r!==void 0&&t<=-r)&&(e===void 0||r!==void 0&&e>=r)}function x1(t,e){return S6(t,e,0)}function T2(t,e){return S6(t,e,e)}function S6(t,e,r){return t===void 0?r:C6(t)?e===1/0?e:Math.max(0,e+t)|0:e===void 0||e===t?t:Math.min(e,t)|0}function C6(t){return t<0||t===0&&1/t===-1/0}var T6="@@__IMMUTABLE_ITERABLE__@@";function Ml(t){return!!(t&&t[T6])}var w6="@@__IMMUTABLE_KEYED__@@";function No(t){return!!(t&&t[w6])}var _6="@@__IMMUTABLE_INDEXED__@@";function kl(t){return!!(t&&t[_6])}function w2(t){return No(t)||kl(t)}var xi=function(e){return Ml(e)?e:hc(e)},lu=function(t){function e(r){return No(r)?r:If(r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(xi),Ng=function(t){function e(r){return kl(r)?r:bd(r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(xi),Y0=function(t){function e(r){return Ml(r)&&!w2(r)?r:Z0(r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(xi);xi.Keyed=lu;xi.Indexed=Ng;xi.Set=Y0;var P6="@@__IMMUTABLE_SEQ__@@";function Qk(t){return!!(t&&t[P6])}var E6="@@__IMMUTABLE_RECORD__@@";function Q0(t){return!!(t&&t[E6])}function um(t){return Ml(t)||Q0(t)}var K0="@@__IMMUTABLE_ORDERED__@@";function yd(t){return!!(t&&t[K0])}var S1=0,vd=1,su=2,zk=typeof Symbol=="function"&&Symbol.iterator,I6="@@iterator",_2=zk||I6,In=function(e){this.next=e};In.prototype.toString=function(){return"[Iterator]"};In.KEYS=S1;In.VALUES=vd;In.ENTRIES=su;In.prototype.inspect=In.prototype.toSource=function(){return this.toString()};In.prototype[_2]=function(){return this};function Vo(t,e,r,n){var o=t===0?e:t===1?r:[e,r];return n?n.value=o:n={value:o,done:!1},n}function Rl(){return{value:void 0,done:!0}}function D6(t){return Array.isArray(t)?!0:!!P2(t)}function QH(t){return t&&typeof t.next=="function"}function Uk(t){var e=P2(t);return e&&e.call(t)}function P2(t){var e=t&&(zk&&t[zk]||t[I6]);if(typeof e=="function")return e}function Lme(t){var e=P2(t);return e&&e===t.entries}function Bme(t){var e=P2(t);return e&&e===t.keys}var $0=Object.prototype.hasOwnProperty;function A6(t){return Array.isArray(t)||typeof t=="string"?!0:t&&typeof t=="object"&&Number.isInteger(t.length)&&t.length>=0&&(t.length===0?Object.keys(t).length===1:t.hasOwnProperty(t.length-1))}var hc=function(t){function e(r){return r==null?$k():um(r)?r.toSeq():Fme(r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toSeq=function(){return this},e.prototype.toString=function(){return this.__toString("Seq {","}")},e.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},e.prototype.__iterate=function(n,o){var i=this._cache;if(i){for(var a=i.length,s=0;s!==a;){var l=i[o?a-++s:s++];if(n(l[1],l[0],this)===!1)break}return s}return this.__iterateUncached(n,o)},e.prototype.__iterator=function(n,o){var i=this._cache;if(i){var a=i.length,s=0;return new In(function(){if(s===a)return Rl();var l=i[o?a-++s:s++];return Vo(n,l[0],l[1])})}return this.__iteratorUncached(n,o)},e}(xi),If=function(t){function e(r){return r==null?$k().toKeyedSeq():Ml(r)?No(r)?r.toSeq():r.fromEntrySeq():Q0(r)?r.toSeq():Zk(r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toKeyedSeq=function(){return this},e}(hc),bd=function(t){function e(r){return r==null?$k():Ml(r)?No(r)?r.entrySeq():r.toIndexedSeq():Q0(r)?r.toSeq().entrySeq():k6(r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.of=function(){return e(arguments)},e.prototype.toIndexedSeq=function(){return this},e.prototype.toString=function(){return this.__toString("Seq [","]")},e}(hc),Z0=function(t){function e(r){return(Ml(r)&&!w2(r)?r:bd(r)).toSetSeq()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.of=function(){return e(arguments)},e.prototype.toSetSeq=function(){return this},e}(hc);hc.isSeq=Qk;hc.Keyed=If;hc.Set=Z0;hc.Indexed=bd;hc.prototype[P6]=!0;var Fg=function(t){function e(r){this._array=r,this.size=r.length}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(n,o){return this.has(n)?this._array[Pf(this,n)]:o},e.prototype.__iterate=function(n,o){for(var i=this._array,a=i.length,s=0;s!==a;){var l=o?a-++s:s++;if(n(i[l],l,this)===!1)break}return s},e.prototype.__iterator=function(n,o){var i=this._array,a=i.length,s=0;return new In(function(){if(s===a)return Rl();var l=o?a-++s:s++;return Vo(n,l,i[l])})},e}(bd),Kk=function(t){function e(r){var n=Object.keys(r).concat(Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(r):[]);this._object=r,this._keys=n,this.size=n.length}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(n,o){return o!==void 0&&!this.has(n)?o:this._object[n]},e.prototype.has=function(n){return $0.call(this._object,n)},e.prototype.__iterate=function(n,o){for(var i=this._object,a=this._keys,s=a.length,l=0;l!==s;){var c=a[o?s-++l:l++];if(n(i[c],c,this)===!1)break}return l},e.prototype.__iterator=function(n,o){var i=this._object,a=this._keys,s=a.length,l=0;return new In(function(){if(l===s)return Rl();var c=a[o?s-++l:l++];return Vo(n,c,i[c])})},e}(If);Kk.prototype[K0]=!0;var Ome=function(t){function e(r){this._collection=r,this.size=r.length||r.size}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.__iterateUncached=function(n,o){if(o)return this.cacheResult().__iterate(n,o);var i=this._collection,a=Uk(i),s=0;if(QH(a))for(var l;!(l=a.next()).done&&n(l.value,s++,this)!==!1;);return s},e.prototype.__iteratorUncached=function(n,o){if(o)return this.cacheResult().__iterator(n,o);var i=this._collection,a=Uk(i);if(!QH(a))return new In(Rl);var s=0;return new In(function(){var l=a.next();return l.done?l:Vo(n,s++,l.value)})},e}(bd),KH;function $k(){return KH||(KH=new Fg([]))}function Zk(t){var e=Jk(t);if(e)return e.fromEntrySeq();if(typeof t=="object")return new Kk(t);throw new TypeError("Expected Array or collection object of [k, v] entries, or keyed object: "+t)}function k6(t){var e=Jk(t);if(e)return e;throw new TypeError("Expected Array or collection object of values: "+t)}function Fme(t){var e=Jk(t);if(e)return Lme(t)?e.fromEntrySeq():Bme(t)?e.toSetSeq():e;if(typeof t=="object")return new Kk(t);throw new TypeError("Expected Array or collection object of values, or keyed object: "+t)}function Jk(t){return A6(t)?new Fg(t):D6(t)?new Ome(t):void 0}var M6="@@__IMMUTABLE_MAP__@@";function eM(t){return!!(t&&t[M6])}function R6(t){return eM(t)&&yd(t)}function $H(t){return!!(t&&typeof t.equals=="function"&&typeof t.hashCode=="function")}function fc(t,e){if(t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1;if(typeof t.valueOf=="function"&&typeof e.valueOf=="function"){if(t=t.valueOf(),e=e.valueOf(),t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1}return!!($H(t)&&$H(e)&&t.equals(e))}var c1=typeof Math.imul=="function"&&Math.imul(4294967295,2)===-2?Math.imul:function(e,r){e|=0,r|=0;var n=e&65535,o=r&65535;return n*o+((e>>>16)*o+n*(r>>>16)<<16>>>0)|0};function E2(t){return t>>>1&1073741824|t&3221225471}var Nme=Object.prototype.valueOf;function mc(t){if(t==null)return ZH(t);if(typeof t.hashCode=="function")return E2(t.hashCode(t));var e=Hme(t);if(e==null)return ZH(e);switch(typeof e){case"boolean":return e?1108378657:1108378656;case"number":return Vme(e);case"string":return e.length>qme?zme(e):Gk(e);case"object":case"function":return Gme(e);case"symbol":return Ume(e);default:if(typeof e.toString=="function")return Gk(e.toString());throw new Error("Value type "+typeof e+" cannot be hashed.")}}function ZH(t){return t===null?1108378658:1108378659}function Vme(t){if(t!==t||t===1/0)return 0;var e=t|0;for(e!==t&&(e^=t*4294967295);t>4294967295;)t/=4294967295,e^=t;return E2(e)}function zme(t){var e=Bk[t];return e===void 0&&(e=Gk(t),Lk===Wme&&(Lk=0,Bk={}),Lk++,Bk[t]=e),e}function Gk(t){for(var e=0,r=0;r0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}function Hme(t){return t.valueOf!==Nme&&typeof t.valueOf=="function"?t.valueOf(t):t}function L6(){var t=++Rk;return Rk&1073741824&&(Rk=0),t}var jk=typeof WeakMap=="function",Hk;jk&&(Hk=new WeakMap);var t6=Object.create(null),Rk=0,Og="__immutablehash__";typeof Symbol=="function"&&(Og=Symbol(Og));var qme=16,Wme=255,Lk=0,Bk={},I2=function(t){function e(r,n){this._iter=r,this._useKeys=n,this.size=r.size}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(n,o){return this._iter.get(n,o)},e.prototype.has=function(n){return this._iter.has(n)},e.prototype.valueSeq=function(){return this._iter.valueSeq()},e.prototype.reverse=function(){var n=this,o=tM(this,!0);return this._useKeys||(o.valueSeq=function(){return n._iter.toSeq().reverse()}),o},e.prototype.map=function(n,o){var i=this,a=V6(this,n,o);return this._useKeys||(a.valueSeq=function(){return i._iter.toSeq().map(n,o)}),a},e.prototype.__iterate=function(n,o){var i=this;return this._iter.__iterate(function(a,s){return n(a,s,i)},o)},e.prototype.__iterator=function(n,o){return this._iter.__iterator(n,o)},e}(If);I2.prototype[K0]=!0;var B6=function(t){function e(r){this._iter=r,this.size=r.size}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.includes=function(n){return this._iter.includes(n)},e.prototype.__iterate=function(n,o){var i=this,a=0;return o&&U0(this),this._iter.__iterate(function(s){return n(s,o?i.size-++a:a++,i)},o)},e.prototype.__iterator=function(n,o){var i=this,a=this._iter.__iterator(vd,o),s=0;return o&&U0(this),new In(function(){var l=a.next();return l.done?l:Vo(n,o?i.size-++s:s++,l.value,l)})},e}(bd),O6=function(t){function e(r){this._iter=r,this.size=r.size}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.has=function(n){return this._iter.includes(n)},e.prototype.__iterate=function(n,o){var i=this;return this._iter.__iterate(function(a){return n(a,a,i)},o)},e.prototype.__iterator=function(n,o){var i=this._iter.__iterator(vd,o);return new In(function(){var a=i.next();return a.done?a:Vo(n,a.value,a.value,a)})},e}(Z0),F6=function(t){function e(r){this._iter=r,this.size=r.size}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.entrySeq=function(){return this._iter.toSeq()},e.prototype.__iterate=function(n,o){var i=this;return this._iter.__iterate(function(a){if(a){n6(a);var s=Ml(a);return n(s?a.get(1):a[1],s?a.get(0):a[0],i)}},o)},e.prototype.__iterator=function(n,o){var i=this._iter.__iterator(vd,o);return new In(function(){for(;;){var a=i.next();if(a.done)return a;var s=a.value;if(s){n6(s);var l=Ml(s);return Vo(n,l?s.get(0):s[0],l?s.get(1):s[1],a)}}})},e}(If);B6.prototype.cacheResult=I2.prototype.cacheResult=O6.prototype.cacheResult=F6.prototype.cacheResult=oM;function N6(t){var e=dm(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var r=t.reverse.apply(this);return r.flip=function(){return t.reverse()},r},e.has=function(r){return t.includes(r)},e.includes=function(r){return t.has(r)},e.cacheResult=oM,e.__iterateUncached=function(r,n){var o=this;return t.__iterate(function(i,a){return r(a,i,o)!==!1},n)},e.__iteratorUncached=function(r,n){if(r===su){var o=t.__iterator(r,n);return new In(function(){var i=o.next();if(!i.done){var a=i.value[0];i.value[0]=i.value[1],i.value[1]=a}return i})}return t.__iterator(r===vd?S1:vd,n)},e}function V6(t,e,r){var n=dm(t);return n.size=t.size,n.has=function(o){return t.has(o)},n.get=function(o,i){var a=t.get(o,on);return a===on?i:e.call(r,a,o,t)},n.__iterateUncached=function(o,i){var a=this;return t.__iterate(function(s,l,c){return o(e.call(r,s,l,c),l,a)!==!1},i)},n.__iteratorUncached=function(o,i){var a=t.__iterator(su,i);return new In(function(){var s=a.next();if(s.done)return s;var l=s.value,c=l[0];return Vo(o,c,e.call(r,l[1],c,t),s)})},n}function tM(t,e){var r=this,n=dm(t);return n._iter=t,n.size=t.size,n.reverse=function(){return t},t.flip&&(n.flip=function(){var o=N6(t);return o.reverse=function(){return t.flip()},o}),n.get=function(o,i){return t.get(e?o:-1-o,i)},n.has=function(o){return t.has(e?o:-1-o)},n.includes=function(o){return t.includes(o)},n.cacheResult=oM,n.__iterate=function(o,i){var a=this,s=0;return i&&U0(t),t.__iterate(function(l,c){return o(l,e?c:i?a.size-++s:s++,a)},!i)},n.__iterator=function(o,i){var a=0;i&&U0(t);var s=t.__iterator(su,!i);return new In(function(){var l=s.next();if(l.done)return l;var c=l.value;return Vo(o,e?c[0]:i?r.size-++a:a++,c[1],l)})},n}function z6(t,e,r,n){var o=dm(t);return n&&(o.has=function(i){var a=t.get(i,on);return a!==on&&!!e.call(r,a,i,t)},o.get=function(i,a){var s=t.get(i,on);return s!==on&&e.call(r,s,i,t)?s:a}),o.__iterateUncached=function(i,a){var s=this,l=0;return t.__iterate(function(c,u,d){if(e.call(r,c,u,d))return l++,i(c,n?u:l-1,s)},a),l},o.__iteratorUncached=function(i,a){var s=t.__iterator(su,a),l=0;return new In(function(){for(;;){var c=s.next();if(c.done)return c;var u=c.value,d=u[0],m=u[1];if(e.call(r,m,d,t))return Vo(i,n?d:l++,m,c)}})},o}function Xme(t,e,r){var n=yc().asMutable();return t.__iterate(function(o,i){n.update(e.call(r,o,i,t),0,function(a){return a+1})}),n.asImmutable()}function Yme(t,e,r){var n=No(t),o=(yd(t)?Ui():yc()).asMutable();t.__iterate(function(a,s){o.update(e.call(r,a,s,t),function(l){return l=l||[],l.push(n?[s,a]:a),l})});var i=nM(t);return o.map(function(a){return ao(t,i(a))}).asImmutable()}function Qme(t,e,r){var n=No(t),o=[[],[]];t.__iterate(function(a,s){o[e.call(r,a,s,t)?1:0].push(n?[s,a]:a)});var i=nM(t);return o.map(function(a){return ao(t,i(a))})}function rM(t,e,r,n){var o=t.size;if(C2(e,r,o))return t;var i=x1(e,o),a=T2(r,o);if(i!==i||a!==a)return rM(t.toSeq().cacheResult(),e,r,n);var s=a-i,l;s===s&&(l=s<0?0:s);var c=dm(t);return c.size=l===0?l:t.size&&l||void 0,!n&&Qk(t)&&l>=0&&(c.get=function(u,d){return u=Pf(this,u),u>=0&&ul)return Rl();var f=m.next();return n||u===vd||f.done?f:u===S1?Vo(u,h-1,void 0,f):Vo(u,h-1,f.value[1],f)})},c}function Kme(t,e,r){var n=dm(t);return n.__iterateUncached=function(o,i){var a=this;if(i)return this.cacheResult().__iterate(o,i);var s=0;return t.__iterate(function(l,c,u){return e.call(r,l,c,u)&&++s&&o(l,c,a)}),s},n.__iteratorUncached=function(o,i){var a=this;if(i)return this.cacheResult().__iterator(o,i);var s=t.__iterator(su,i),l=!0;return new In(function(){if(!l)return Rl();var c=s.next();if(c.done)return c;var u=c.value,d=u[0],m=u[1];return e.call(r,m,d,a)?o===su?c:Vo(o,d,m,c):(l=!1,Rl())})},n}function U6(t,e,r,n){var o=dm(t);return o.__iterateUncached=function(i,a){var s=this;if(a)return this.cacheResult().__iterate(i,a);var l=!0,c=0;return t.__iterate(function(u,d,m){if(!(l&&(l=e.call(r,u,d,m))))return c++,i(u,n?d:c-1,s)}),c},o.__iteratorUncached=function(i,a){var s=this;if(a)return this.cacheResult().__iterator(i,a);var l=t.__iterator(su,a),c=!0,u=0;return new In(function(){var d,m,p;do{if(d=l.next(),d.done)return n||i===vd?d:i===S1?Vo(i,u++,void 0,d):Vo(i,u++,d.value[1],d);var h=d.value;m=h[0],p=h[1],c&&(c=e.call(r,p,m,s))}while(c);return i===su?d:Vo(i,m,p,d)})},o}function $me(t,e){var r=No(t),n=[t].concat(e).map(function(a){return Ml(a)?r&&(a=lu(a)):a=r?Zk(a):k6(Array.isArray(a)?a:[a]),a}).filter(function(a){return a.size!==0});if(n.length===0)return t;if(n.length===1){var o=n[0];if(o===t||r&&No(o)||kl(t)&&kl(o))return o}var i=new Fg(n);return r?i=i.toKeyedSeq():kl(t)||(i=i.toSetSeq()),i=i.flatten(!0),i.size=n.reduce(function(a,s){if(a!==void 0){var l=s.size;if(l!==void 0)return a+l}},0),i}function G6(t,e,r){var n=dm(t);return n.__iterateUncached=function(o,i){if(i)return this.cacheResult().__iterate(o,i);var a=0,s=!1;function l(c,u){c.__iterate(function(d,m){return(!e||u0}function g2(t,e,r,n){var o=dm(t),i=new Fg(r).map(function(a){return a.size});return o.size=n?i.max():i.min(),o.__iterate=function(a,s){for(var l=this.__iterator(vd,s),c,u=0;!(c=l.next()).done&&a(c.value,u++,this)!==!1;);return u},o.__iteratorUncached=function(a,s){var l=r.map(function(d){return d=xi(d),Uk(s?d.reverse():d)}),c=0,u=!1;return new In(function(){var d;return u||(d=l.map(function(m){return m.next()}),u=n?d.every(function(m){return m.done}):d.some(function(m){return m.done})),u?Rl():Vo(a,c++,e.apply(null,d.map(function(m){return m.value})))})},o}function ao(t,e){return t===e?t:Qk(t)?e:t.constructor(e)}function n6(t){if(t!==Object(t))throw new TypeError("Expected [K, V] tuple: "+t)}function nM(t){return No(t)?lu:kl(t)?Ng:Y0}function dm(t){return Object.create((No(t)?If:kl(t)?bd:Z0).prototype)}function oM(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):hc.prototype.cacheResult.call(this)}function j6(t,e){return t===void 0&&e===void 0?0:t===void 0?1:e===void 0?-1:t>e?1:t0;)e[r]=arguments[r+1];if(typeof t!="function")throw new TypeError("Invalid merger function: "+t);return K6(this,e,t)}function K6(t,e,r){for(var n=[],o=0;o0;)e[r]=arguments[r+1];return uM(this,e,t)}function mM(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];return J0(this,t,gd(),function(n){return dM(n,e)})}function pM(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];return J0(this,t,gd(),function(n){return uM(n,e)})}function C1(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this}function T1(){return this.__ownerID?this:this.__ensureOwner(new Yk)}function w1(){return this.__ensureOwner()}function fM(){return this.__altered}var yc=function(t){function e(r){return r==null?gd():eM(r)&&!yd(r)?r:gd().withMutations(function(n){var o=t(r);pc(o.size),o.forEach(function(i,a){return n.set(a,i)})})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.of=function(){for(var n=[],o=arguments.length;o--;)n[o]=arguments[o];return gd().withMutations(function(i){for(var a=0;a=n.length)throw new Error("Missing value for key: "+n[a]);i.set(n[a],n[a+1])}})},e.prototype.toString=function(){return this.__toString("Map {","}")},e.prototype.get=function(n,o){return this._root?this._root.get(0,void 0,n,o):o},e.prototype.set=function(n,o){return a6(this,n,o)},e.prototype.remove=function(n){return a6(this,n,on)},e.prototype.deleteAll=function(n){var o=xi(n);return o.size===0?this:this.withMutations(function(i){o.forEach(function(a){return i.remove(a)})})},e.prototype.clear=function(){return this.size===0?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):gd()},e.prototype.sort=function(n){return Ui(G0(this,n))},e.prototype.sortBy=function(n,o){return Ui(G0(this,o,n))},e.prototype.map=function(n,o){var i=this;return this.withMutations(function(a){a.forEach(function(s,l){a.set(l,n.call(o,s,l,i))})})},e.prototype.__iterator=function(n,o){return new cpe(this,n,o)},e.prototype.__iterate=function(n,o){var i=this,a=0;return this._root&&this._root.iterate(function(s){return a++,n(s[1],s[0],i)},o),a},e.prototype.__ensureOwner=function(n){return n===this.__ownerID?this:n?hM(this.size,this._root,n,this.__hash):this.size===0?gd():(this.__ownerID=n,this.__altered=!1,this)},e}(lu);yc.isMap=eM;var To=yc.prototype;To[M6]=!0;To[b1]=To.remove;To.removeAll=To.deleteAll;To.setIn=aM;To.removeIn=To.deleteIn=sM;To.update=lM;To.updateIn=cM;To.merge=To.concat=Y6;To.mergeWith=Q6;To.mergeDeep=$6;To.mergeDeepWith=Z6;To.mergeIn=mM;To.mergeDeepIn=pM;To.withMutations=C1;To.wasAltered=fM;To.asImmutable=w1;To["@@transducer/init"]=To.asMutable=T1;To["@@transducer/step"]=function(t,e){return t.set(e[0],e[1])};To["@@transducer/result"]=function(t){return t.asImmutable()};var h1=function(e,r){this.ownerID=e,this.entries=r};h1.prototype.get=function(e,r,n,o){for(var i=this.entries,a=0,s=i.length;a=hpe)return upe(e,c,o,i);var p=e&&e===this.ownerID,h=p?c:cm(c);return m?l?u===d-1?h.pop():h[u]=h.pop():h[u]=[o,i]:h.push([o,i]),p?(this.entries=h,this):new h1(e,h)}};var j0=function(e,r,n){this.ownerID=e,this.bitmap=r,this.nodes=n};j0.prototype.get=function(e,r,n,o){r===void 0&&(r=mc(n));var i=1<<((e===0?r:r>>>e)&ol),a=this.bitmap;return a&i?this.nodes[J6(a&i-1)].get(e+Co,r,n,o):o};j0.prototype.update=function(e,r,n,o,i,a,s){n===void 0&&(n=mc(o));var l=(r===0?n:n>>>r)&ol,c=1<=gpe)return mpe(e,p,u,l,f);if(d&&!f&&p.length===2&&s6(p[m^1]))return p[m^1];if(d&&f&&p.length===1&&s6(f))return f;var b=e&&e===this.ownerID,v=d?f?u:u^c:u|c,x=d?f?e8(p,m,f,b):fpe(p,m,b):ppe(p,m,f,b);return b?(this.bitmap=v,this.nodes=x,this):new j0(e,v,x)};var g1=function(e,r,n){this.ownerID=e,this.count=r,this.nodes=n};g1.prototype.get=function(e,r,n,o){r===void 0&&(r=mc(n));var i=(e===0?r:r>>>e)&ol,a=this.nodes[i];return a?a.get(e+Co,r,n,o):o};g1.prototype.update=function(e,r,n,o,i,a,s){n===void 0&&(n=mc(o));var l=(r===0?n:n>>>r)&ol,c=i===on,u=this.nodes,d=u[l];if(c&&!d)return this;var m=gM(d,e,r+Co,n,o,i,a,s);if(m===d)return this;var p=this.count;if(!d)p++;else if(!m&&(p--,p>>r)&ol,a=(r===0?n:n>>>r)&ol,s,l=i===a?[yM(t,e,r+Co,n,o)]:(s=new yp(e,n,o),i>>=1)a[s]=r&1?e[i++]:void 0;return a[n]=o,new g1(t,i+1,a)}function J6(t){return t-=t>>1&1431655765,t=(t&858993459)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,t&127}function e8(t,e,r,n){var o=n?t:cm(t);return o[e]=r,o}function ppe(t,e,r,n){var o=t.length+1;if(n&&e+1===o)return t[e]=r,t;for(var i=new Array(o),a=0,s=0;s0&&i=0&&n>>r&ol;if(o>=this.array.length)return new _f([],e);var i=o===0,a;if(r>0){var s=this.array[o];if(a=s&&s.removeBefore(e,r-Co,n),a===s&&i)return this}if(i&&!a)return this;var l=q0(this,e);if(!i)for(var c=0;c>>r&ol;if(o>=this.array.length)return this;var i;if(r>0){var a=this.array[o];if(i=a&&a.removeAfter(e,r-Co,n),i===a&&o===this.array.length-1)return this}var s=q0(this,e);return s.array.splice(o+1),i&&(s.array[o]=i),s};var p1={};function l6(t,e){var r=t._origin,n=t._capacity,o=v1(n),i=t._tail;return a(t._root,t._level,0);function a(c,u,d){return u===0?s(c,d):l(c,u,d)}function s(c,u){var d=u===o?i&&i.array:c&&c.array,m=u>r?0:r-u,p=n-u;return p>iu&&(p=iu),function(){if(m===p)return p1;var h=e?--p:m++;return d&&d[h]}}function l(c,u,d){var m,p=c&&c.array,h=d>r?0:r-d>>u,f=(n-d>>u)+1;return f>iu&&(f=iu),function(){for(;;){if(m){var b=m();if(b!==p1)return b;m=null}if(h===f)return p1;var v=e?--f:h++;m=a(p&&p[v],u-Co,d+(v<=t.size||e<0)return t.withMutations(function(a){e<0?wf(a,e).set(0,r):wf(a,0,e+1).set(e,r)});e+=t._origin;var n=t._tail,o=t._root,i=Vk();return e>=v1(t._capacity)?n=qk(n,t.__ownerID,0,e,r,i):o=qk(o,t.__ownerID,t._level,e,r,i),i.value?t.__ownerID?(t._root=o,t._tail=n,t.__hash=void 0,t.__altered=!0,t):y1(t._origin,t._capacity,t._level,o,n):t}function qk(t,e,r,n,o,i){var a=n>>>r&ol,s=t&&a0){var c=t&&t.array[a],u=qk(c,e,r-Co,n,o,i);return u===c?t:(l=q0(t,e),l.array[a]=u,l)}return s&&t.array[a]===o?t:(i&&au(i),l=q0(t,e),o===void 0&&a===l.array.length-1?l.array.pop():l.array[a]=o,l)}function q0(t,e){return e&&t&&e===t.ownerID?t:new _f(t?t.array.slice():[],e)}function n8(t,e){if(e>=v1(t._capacity))return t._tail;if(e<1<0;)r=r.array[e>>>n&ol],n-=Co;return r}}function wf(t,e,r){e!==void 0&&(e|=0),r!==void 0&&(r|=0);var n=t.__ownerID||new Yk,o=t._origin,i=t._capacity,a=o+e,s=r===void 0?i:r<0?i+r:o+r;if(a===o&&s===i)return t;if(a>=s)return t.clear();for(var l=t._level,c=t._root,u=0;a+u<0;)c=new _f(c&&c.array.length?[void 0,c]:[],n),l+=Co,u+=1<=1<d?new _f([],n):p;if(p&&m>d&&aCo;b-=Co){var v=d>>>b&ol;f=f.array[v]=q0(f.array[v],n)}f.array[d>>>Co&ol]=p}if(s=m)a-=m,s-=m,l=Co,c=null,h=h&&h.removeBefore(n,0,a);else if(a>o||m>>l&ol;if(x!==m>>>l&ol)break;x&&(u+=(1<o&&(c=c.removeBefore(n,l,a-u)),c&&m>>Co<=iu&&o.size>=n.size*2?(l=o.filter(function(c,u){return c!==void 0&&i!==u}),s=l.toKeyedSeq().map(function(c){return c[0]}).flip().toMap(),t.__ownerID&&(s.__ownerID=l.__ownerID=t.__ownerID)):(s=n.remove(e),l=i===o.size-1?o.pop():o.set(i,void 0))}else if(a){if(r===o.get(i)[1])return t;s=n,l=o.set(i,[e,r])}else s=n.set(e,o.size),l=o.set(o.size,[e,r]);return t.__ownerID?(t.size=s.size,t._map=s,t._list=l,t.__hash=void 0,t.__altered=!0,t):vM(s,l)}var o8="@@__IMMUTABLE_STACK__@@";function Wk(t){return!!(t&&t[o8])}var bM=function(t){function e(r){return r==null?y2():Wk(r)?r:y2().pushAll(r)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.of=function(){return this(arguments)},e.prototype.toString=function(){return this.__toString("Stack [","]")},e.prototype.get=function(n,o){var i=this._head;for(n=Pf(this,n);i&&n--;)i=i.next;return i?i.value:o},e.prototype.peek=function(){return this._head&&this._head.value},e.prototype.push=function(){var n=arguments;if(arguments.length===0)return this;for(var o=this.size+arguments.length,i=this._head,a=arguments.length-1;a>=0;a--)i={value:n[a],next:i};return this.__ownerID?(this.size=o,this._head=i,this.__hash=void 0,this.__altered=!0,this):d1(o,i)},e.prototype.pushAll=function(n){if(n=t(n),n.size===0)return this;if(this.size===0&&Wk(n))return n;pc(n.size);var o=this.size,i=this._head;return n.__iterate(function(a){o++,i={value:a,next:i}},!0),this.__ownerID?(this.size=o,this._head=i,this.__hash=void 0,this.__altered=!0,this):d1(o,i)},e.prototype.pop=function(){return this.slice(1)},e.prototype.clear=function(){return this.size===0?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):y2()},e.prototype.slice=function(n,o){if(C2(n,o,this.size))return this;var i=x1(n,this.size),a=T2(o,this.size);if(a!==this.size)return t.prototype.slice.call(this,n,o);for(var s=this.size-i,l=this._head;i--;)l=l.next;return this.__ownerID?(this.size=s,this._head=l,this.__hash=void 0,this.__altered=!0,this):d1(s,l)},e.prototype.__ensureOwner=function(n){return n===this.__ownerID?this:n?d1(this.size,this._head,n,this.__hash):this.size===0?y2():(this.__ownerID=n,this.__altered=!1,this)},e.prototype.__iterate=function(n,o){var i=this;if(o)return new Fg(this.toArray()).__iterate(function(l,c){return n(l,c,i)},o);for(var a=0,s=this._head;s&&n(s.value,a++,this)!==!1;)s=s.next;return a},e.prototype.__iterator=function(n,o){if(o)return new Fg(this.toArray()).__iterator(n,o);var i=0,a=this._head;return new In(function(){if(a){var s=a.value;return a=a.next,Vo(n,i++,s)}return Rl()})},e}(Ng);bM.isStack=Wk;var il=bM.prototype;il[o8]=!0;il.shift=il.pop;il.unshift=il.push;il.unshiftAll=il.pushAll;il.withMutations=C1;il.wasAltered=fM;il.asImmutable=w1;il["@@transducer/init"]=il.asMutable=T1;il["@@transducer/step"]=function(t,e){return t.unshift(e)};il["@@transducer/result"]=function(t){return t.asImmutable()};function d1(t,e,r,n){var o=Object.create(il);return o.size=t,o._head=e,o.__ownerID=r,o.__hash=n,o.__altered=!1,o}var m6;function y2(){return m6||(m6=d1(0))}var i8="@@__IMMUTABLE_SET__@@";function xM(t){return!!(t&&t[i8])}function a8(t){return xM(t)&&yd(t)}function s8(t,e){if(t===e)return!0;if(!Ml(e)||t.size!==void 0&&e.size!==void 0&&t.size!==e.size||t.__hash!==void 0&&e.__hash!==void 0&&t.__hash!==e.__hash||No(t)!==No(e)||kl(t)!==kl(e)||yd(t)!==yd(e))return!1;if(t.size===0&&e.size===0)return!0;var r=!w2(t);if(yd(t)){var n=t.entries();return e.every(function(l,c){var u=n.next().value;return u&&fc(u[1],l)&&(r||fc(u[0],c))})&&n.next().done}var o=!1;if(t.size===void 0)if(e.size===void 0)typeof t.cacheResult=="function"&&t.cacheResult();else{o=!0;var i=t;t=e,e=i}var a=!0,s=e.__iterate(function(l,c){if(r?!t.has(l):o?!fc(l,t.get(c,on)):!fc(t.get(c,on),l))return a=!1,!1});return a&&t.size===s}function Vg(t,e){var r=function(n){t.prototype[n]=e[n]};return Object.keys(e).forEach(r),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(e).forEach(r),t}function S2(t){if(!t||typeof t!="object")return t;if(!Ml(t)){if(!Ef(t))return t;t=hc(t)}if(No(t)){var e={};return t.__iterate(function(n,o){e[o]=S2(n)}),e}var r=[];return t.__iterate(function(n){r.push(S2(n))}),r}var D2=function(t){function e(r){return r==null?m1():xM(r)&&!yd(r)?r:m1().withMutations(function(n){var o=t(r);pc(o.size),o.forEach(function(i){return n.add(i)})})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.of=function(){return this(arguments)},e.fromKeys=function(n){return this(lu(n).keySeq())},e.intersect=function(n){return n=xi(n).toArray(),n.length?as.intersect.apply(e(n.pop()),n):m1()},e.union=function(n){return n=xi(n).toArray(),n.length?as.union.apply(e(n.pop()),n):m1()},e.prototype.toString=function(){return this.__toString("Set {","}")},e.prototype.has=function(n){return this._map.has(n)},e.prototype.add=function(n){return v2(this,this._map.set(n,n))},e.prototype.remove=function(n){return v2(this,this._map.remove(n))},e.prototype.clear=function(){return v2(this,this._map.clear())},e.prototype.map=function(n,o){var i=this,a=!1,s=v2(this,this._map.mapEntries(function(l){var c=l[1],u=n.call(o,c,c,i);return u!==c&&(a=!0),[u,u]},o));return a?s:this},e.prototype.union=function(){for(var n=[],o=arguments.length;o--;)n[o]=arguments[o];return n=n.filter(function(i){return i.size!==0}),n.length===0?this:this.size===0&&!this.__ownerID&&n.length===1?this.constructor(n[0]):this.withMutations(function(i){for(var a=0;a=0&&o=0&&ithis.size?r:this.find(function(n,o){return o===e},void 0,r)},has:function(e){return e=Pf(this,e),e>=0&&(this.size!==void 0?this.size===1/0||ee?-1:0}function wpe(t){if(t.size===1/0)return 0;var e=yd(t),r=No(t),n=e?1:0,o=t.__iterate(r?e?function(i,a){n=31*n+v6(mc(i),mc(a))|0}:function(i,a){n=n+v6(mc(i),mc(a))|0}:e?function(i){n=31*n+mc(i)|0}:function(i){n=n+mc(i)|0});return _pe(o,n)}function _pe(t,e){return e=c1(e,3432918353),e=c1(e<<15|e>>>-15,461845907),e=c1(e<<13|e>>>-13,5),e=(e+3864292196|0)^t,e=c1(e^e>>>16,2246822507),e=c1(e^e>>>13,3266489909),e=E2(e^e>>>16),e}function v6(t,e){return t^e+2654435769+(t<<6)+(t>>2)|0}var gc=function(t){function e(r){return r==null?Xk():a8(r)?r:Xk().withMutations(function(n){var o=Y0(r);pc(o.size),o.forEach(function(i){return n.add(i)})})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.of=function(){return this(arguments)},e.fromKeys=function(n){return this(lu(n).keySeq())},e.prototype.toString=function(){return this.__toString("OrderedSet {","}")},e}(D2);gc.isOrderedSet=a8;var zg=gc.prototype;zg[K0]=!0;zg.zip=ev.zip;zg.zipWith=ev.zipWith;zg.zipAll=ev.zipAll;zg.__empty=Xk;zg.__make=m8;function m8(t,e){var r=Object.create(zg);return r.size=t?t.size:0,r._map=t,r.__ownerID=e,r}var b6;function Xk(){return b6||(b6=m8(u1()))}function Ppe(t){if(Q0(t))throw new Error("Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.");if(um(t))throw new Error("Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.");if(t===null||typeof t!="object")throw new Error("Can not call `Record` with a non-object as default values. Use a plain javascript object instead.")}var Aa=function(e,r){var n;Ppe(e);var o=function(s){var l=this;if(s instanceof o)return s;if(!(this instanceof o))return new o(s);if(!n){n=!0;var c=Object.keys(e),u=i._indices={};i._name=r,i._keys=c,i._defaultValues=e;for(var d=0;do.definition.isApplicable(a,l):void 0,run({cell:a,state:s,params:l}){let c=s.build().to(a.transform.ref).apply(o,l);return s.updateTree(c)}})}t.fromTransformer=r;let n;(function(o){function i(a){return s=>e(w({from:a.from instanceof Array?a.from:a.from?[a.from]:[],display:typeof a.display=="string"?{name:a.display}:a.display?a.display:{name:"Unnamed State Action"},params:typeof a.params=="object"?()=>a.params:a.params?a.params:void 0,isApplicable:a.isApplicable},typeof s=="function"?{run:s}:s))}o.build=a=>i(a)})(n=t.Builder||(t.Builder={})),t.build=n.build})(Gi||(Gi={}));var Se;(function(t){function e(f,b,v){return f.definition.params?f.definition.params(b,v):{}}t.getParamDefinition=e;function r(f){return!!f&&typeof f.toAction=="function"&&typeof f.apply=="function"}t.is=r;let n;(function(f){f[f.Unchanged=0]="Unchanged",f[f.Updated=1]="Updated",f[f.Recreate=2]="Recreate",f[f.Null=3]="Null"})(n=t.UpdateResult||(t.UpdateResult={}));let o=new Map,i=new Map;function a(f){for(let b of f.definition.from)i.has(b.type)?i.get(b.type).push(f):i.set(b.type,[f])}function s(){return Array.from(o.values())}t.getAll=s;function l(f){let b=o.get(f);if(!b)throw new Error(`A transformer with signature '${f}' is not registered.`);return b}t.get=l;function c(f){return i.get(f)||[]}t.fromType=c;function u(f,b){let{name:v}=b,x=`${f}.${v}`;if(o.has(x))throw new Error(`A transform with id '${v}' is already registered. Please pick a unique identifier for your transforms and/or register them only once. This is to ensure that transforms can be serialized and replayed.`);let S={apply(T,E,_){return kt.create(T,S,E,_)},toAction(){return Gi.fromTransformer(S)},namespace:f,id:x,definition:b,createDefaultParams(T,E){return b.params?g.getDefaultValues(b.params(T,E)):{}}};return o.set(x,S),a(S),S}t.create=u;function d(f){return b=>u(f,b)}t.factory=d;function m(f){return p.build(f)}t.builderFactory=m;let p;(function(f){function b(x,S){return T=>u(x,w({name:S.name,from:S.from instanceof Array?S.from:[S.from],to:S.to instanceof Array?S.to:[S.to],display:typeof S.display=="string"?{name:S.display}:S.display?S.display:{name:m0(S.name.replace(/[-]/g," "))},params:typeof S.params=="object"?()=>S.params:S.params?S.params:void 0,isDecorator:S.isDecorator},T))}function v(x){return S=>b(x,S)}f.build=v})(p=t.Builder||(t.Builder={}));function h(f){return p.build(f)}t.build=h,t.ROOT=u("build-in",{name:"root",from:[],to:[],display:{name:"Root",description:"For internal use."},apply(){throw new Error("should never be applied")},update(){return n.Unchanged}})})(Se||(Se={}));var kt;(function(t){t.RootRef="-=root=-";function e(b,v){return!!b.isHidden!=!!v.isHidden||!!b.isCollapsed!=!!v.isCollapsed||!!b.isGhost!=!!v.isGhost||!!b.isLocked!=!!v.isLocked}t.areStatesEqual=e;function r(b,v){return v?typeof v.isCollapsed<"u"&&b.isCollapsed!==v.isCollapsed||typeof v.isHidden<"u"&&b.isHidden!==v.isHidden||typeof v.isGhost<"u"&&b.isGhost!==v.isGhost||typeof v.isLocked<"u"&&b.isLocked!==v.isLocked:!1}t.isStateChange=r;function n(b,v){if(!v)return!1;let x=!1;for(let S of Object.keys(v)){let T=v[S],E=b[S];!!T!=!!E&&(x=!0,b[S]=T)}return x}t.assignState=n;function o(b,v){if(!v)return!1;let x=!1;for(let S of Object.keys(v)){let T=v[S],E=b[S];!!T!=!!E&&(x=!0,T!==void 0?b[S]=T:delete b[S])}for(let S of Object.keys(b)){let T=v[S],E=b[S];!!T!=!!E&&(x=!0,T!==void 0?b[S]=T:delete b[S])}return x}t.syncState=o;function i(b,v,x,S){let T=S&&S.ref?S.ref:vo.create22(),E;return S&&S.tags&&(E=typeof S.tags=="string"?[S.tags]:S.tags,E.length===0?E=void 0:E.sort()),{parent:b,transformer:v,state:S?.state||{},tags:E,ref:T,dependsOn:S&&S.dependsOn,params:x,version:vo.create22()}}t.create=i;function a(b,v){return U(w({},b),{params:v,version:vo.create22()})}t.withParams=a;function s(b,v){return v?U(w({},b),{state:w(w({},b.state),v)}):b}t.withState=s;function l(b,v){let x;return v&&(x=typeof v=="string"?[v]:v,x.length===0?x=void 0:x.sort()),U(w({},b),{tags:x,version:vo.create22()})}t.withTags=l;function c(b,v){return U(w({},b),{parent:v,version:vo.create22()})}t.withParent=c;function u(b){return i(t.RootRef,Se.ROOT,{},{ref:t.RootRef,state:b})}t.createRoot=u;function d(b,v){return b.tags?b.tags.indexOf(v)>=0:!1}t.hasTag=d;function m(b,v){if(!b.tags)return typeof v!="string"&&v.length===0;if(typeof v=="string")return d(b,v);for(let x of v)if(b.tags.indexOf(x)<0)return!1;return!0}t.hasTags=m;function p(b){return b}function h(b){let v=b.transformer.definition.customSerialization?b.transformer.definition.customSerialization.toJSON:p,x;for(let S of Object.keys(b.state))b.state[S]&&(x||(x={}),x[S]=!0);return{parent:b.parent,transformer:b.transformer.id,params:b.params?v(b.params):void 0,state:x,tags:b.tags,ref:b.ref,dependsOn:b.dependsOn,version:b.version}}t.toJSON=h;function f(b){let v=Se.get(b.transformer),x=v.definition.customSerialization?v.definition.customSerialization.fromJSON:p;return{parent:b.parent,transformer:v,params:b.params?x(b.params):void 0,state:b.state||{},tags:b.tags,ref:b.ref,dependsOn:b.dependsOn,version:b.version}}t.fromJSON=f})(kt||(kt={}));var P1=class{get childMutations(){return this._childMutations?this._childMutations:(this._childMutations=new Map,this._childMutations)}get dependencyMutations(){return this._dependencyMutations?this._dependencyMutations:(this._dependencyMutations=new Map,this._dependencyMutations)}changeNodes(){this.changedNodes||(this.changedNodes=!0,this.transforms=this.transforms.asMutable())}changeChildren(){this.changedChildren||(this.changedChildren=!0,this.children=this.children.asMutable())}changeDependencies(){this.changedDependencies||(this.changedDependencies=!0,this.dependencies=this.dependencies.asMutable())}get root(){return this.transforms.get(kt.RootRef)}asTransient(){return this.asImmutable().asTransient()}addChild(e,r){if(this.changeChildren(),this.childMutations.has(e))this.childMutations.get(e).add(r);else{let n=this.children.get(e).asMutable();n.add(r),this.children.set(e,n),this.childMutations.set(e,n)}}removeChild(e,r){if(this.changeChildren(),this.childMutations.has(e))this.childMutations.get(e).remove(r);else{let n=this.children.get(e).asMutable();n.remove(r),this.children.set(e,n),this.childMutations.set(e,n)}}clearRoot(){let e=kt.RootRef;if(this.children.get(e).size===0)return;this.changeChildren();let r=gc();this.children.set(e,r),this.childMutations.set(e,r)}mutateDependency(e,r,n){let o=this.dependencyMutations.get(e);if(!o){let i=this.dependencies.get(e);if(!i&&n==="remove")return;this.changeDependencies(),o=i?i.asMutable():gc().asMutable(),this.dependencyMutations.set(e,o),this.dependencies.set(e,o)}n==="add"?o.add(r):o.remove(r)}changeParent(e,r){A2(this.transforms,e);let n=this.transforms.get(e);this.removeChild(n.parent,e),this.addChild(r,e),this.changeNodes(),this.transforms.set(e,kt.withParent(n,r))}add(e){let r=e.ref;this.transforms.has(e.ref)&&this.transforms.get(e.ref).parent!==e.parent&&Ape(e.ref);let n=this.children.get(e.parent);if(n||kpe(e.parent),n.has(e.ref)||this.addChild(e.parent,e.ref),this.children.has(e.ref)||(this.changedChildren||(this.changedChildren=!0,this.children=this.children.asMutable()),this.children.set(e.ref,gc())),this.changeNodes(),this.transforms.set(r,e),e.dependsOn)for(let o of e.dependsOn)this.mutateDependency(o,r,"add");return this}setParams(e,r){A2(this.transforms,e);let n=this.transforms.get(e);return lf(n.params,r)?!1:(this.changedNodes||(this.changedNodes=!0,this.transforms=this.transforms.asMutable()),this.transforms.set(n.ref,kt.withParams(n,r)),!0)}setTags(e,r){A2(this.transforms,e);let n=this.transforms.get(e),o=kt.withParams(n,r);return v0(n.tags,o.tags)?!1:(this.changedNodes||(this.changedNodes=!0,this.transforms=this.transforms.asMutable()),this.transforms.set(n.ref,o),!0)}assignState(e,r){A2(this.transforms,e);let n=this.transforms.get(e);if(this._stateUpdates&&this._stateUpdates.has(e))return kt.assignState(n.state,r),n;{this._stateUpdates||(this._stateUpdates=new Set),this._stateUpdates.add(n.ref),this.changeNodes();let o=kt.withState(n,r);return this.transforms.set(e,o),o}}remove(e){let r=this.transforms.get(e);if(!r)return[];let n=Nn.subtreePostOrder(this,r);if(e===kt.RootRef){if(n.pop(),n.length===0)return n;this.clearRoot()}else{if(n.length===0)return n;this.removeChild(r.parent,r.ref)}this.changeNodes(),this.changeChildren();for(let i of n)this.transforms.delete(i.ref),this.children.delete(i.ref),this._childMutations&&this._childMutations.delete(i.ref);let o=[];for(let i of n){if(i.dependsOn)for(let a of i.dependsOn)this.transforms.has(a)&&this.mutateDependency(a,i.ref,"remove");if(this.dependencies.has(i.ref)){let a=this.dependencies.get(i.ref).toArray();this.changeDependencies(),this.dependencies.delete(i.ref),this._dependencyMutations&&this._dependencyMutations.delete(i.ref);for(let s of a)if(this.transforms.has(s))for(let l of this.remove(s))o[o.length]=l}}for(let i of o)n[n.length]=i;return n}asImmutable(){return!this.changedNodes&&!this.changedChildren&&!this._childMutations?this.tree:(this._childMutations&&this._childMutations.forEach(Ipe,this.children),this._dependencyMutations&&this._dependencyMutations.forEach(Dpe,this.dependencies),Nn.create(this.changedNodes?this.transforms.asImmutable():this.transforms,this.changedChildren?this.children.asImmutable():this.children,this.changedDependencies?this.dependencies.asImmutable():this.dependencies))}constructor(e){this.tree=e,this.transforms=this.tree.transforms,this.children=this.tree.children,this.dependencies=this.tree.dependencies,this.changedNodes=!1,this.changedChildren=!1,this.changedDependencies=!1,this._childMutations=void 0,this._dependencyMutations=void 0,this._stateUpdates=void 0}};function Ipe(t,e){this.set(e,t.asImmutable())}function Dpe(t,e){t.size===0?this.delete(e):this.set(e,t.asImmutable())}function Ape(t){throw new Error(`Transform '${t}' is already present in the tree.`)}function kpe(t){throw new Error(`Parent '${t}' must be present in the tree.`)}function A2(t,e){if(!t.has(e))throw new Error(`Node '${e}' is not present in the tree.`)}var Nn;(function(t){class e{get root(){return this.transforms.get(kt.RootRef)}asTransient(){return new P1(this)}constructor(T,E,_){this.transforms=T,this.children=E,this.dependencies=_}}function r(S){let T=S||kt.createRoot();return n(yc([[T.ref,T]]),yc([[T.ref,gc()]]),yc())}t.createEmpty=r;function n(S,T,E){return new e(S,T,E)}t.create=n;function o(S){i(this,this.tree.transforms.get(S))}function i(S,T){let E=S.tree.children.get(T.ref);E&&E.size&&E.forEach(o,S),S.f(T,S.tree,S.state)}function a(S,T,E,_){let D={tree:S,state:E,f:_};return i(D,T),D.state}t.doPostOrder=a;function s(S){l(this,this.tree.transforms.get(S))}function l(S,T){let E=S.f(T,S.tree,S.state);if(typeof E=="boolean"&&!E)return;let _=S.tree.children.get(T.ref);_&&_.size&&_.forEach(s,S)}function c(S,T,E,_){let D={tree:S,state:E,f:_};return l(D,T),D.state}t.doPreOrder=c;function u(S,T,E){E.push(S)}function d(S,T){return a(S,T,[],u)}t.subtreePostOrder=d;function m(S,T,E){E.push(kt.toJSON(S))}function p(S){let T=[];return c(S,S.root,T,m),{transforms:T}}t.toJSON=p;function h(S){let T=yc().asMutable(),E=yc().asMutable(),_=yc().asMutable();for(let P of S.transforms){let A=kt.fromJSON(P);T.set(A.ref,A),E.has(A.ref)||E.set(A.ref,gc().asMutable()),A.ref!==A.parent&&E.get(A.parent).add(A.ref)}let D=new Set;for(let P of S.transforms){let A=P.ref;if(E.set(A,E.get(A).asImmutable()),!!P.dependsOn)for(let I of P.dependsOn)D.add(I),_.has(I)?_.get(I).add(A):_.set(I,gc([A]).asMutable())}return D.forEach(P=>{_.set(P,_.get(P).asImmutable())}),n(T.asImmutable(),E.asImmutable(),_.asImmutable())}t.fromJSON=h;function f(S){console.log({tr:S.transforms.keySeq().toArray(),tr1:S.transforms.valueSeq().toArray().map(T=>T.ref),ch:S.children.keySeq().toArray()})}t.dump=f;function b(S,T,E){if(T===E)return!0;let D=S.children.get(T).values();for(;;){let P=D.next();if(P.done)return!1;if(b(S,P.value,E))return!0}}function v(S,T,E){return!S.transforms.has(T)||!S.transforms.has(E)?!1:b(S,T,E)}t.subtreeHasRef=v;function x(S,T){let E=S.children.get(T);if(E.size!==1)return T;let _=S.transforms.get(E.first());return _.transformer.definition.isDecorator?x(S,_.ref):T}t.getDecoratorRoot=x})(Nn||(Nn={}));var lt;(function(t){function e($,ae){return r($)(ae)}t.select=e;function r($){let ae=$||c.root,Z;return o(ae)?Z=ae.compile():n(ae)?Z=c.byValue(ae).compile():i(ae)?Z=ae:Z=c.byRef(ae).compile(),Z}t.compile=r;function n($){return $.transform!==void 0&&$.status!==void 0}function o($){return $.compile!==void 0}function i($){return typeof $=="function"}let a={select($){return e(this,$||this.state)}};function s($,ae){a[$]=function(...Z){return ae.call(void 0,this,...Z)}}function l($){return Object.create(a,{compile:{writable:!1,configurable:!1,value:$}})}let c;(function($){$.root=l(()=>Zt=>[Zt.cells.get(Zt.tree.root.ref)]);function ae(...Zt){return l(()=>oe=>{let De=[];for(let Le of Zt){let Qe=oe.cells.get(Le);Qe&&De.push(Qe)}return De})}$.byRef=ae;function Z(...Zt){return l(()=>oe=>Zt)}$.byValue=Z;function se(Zt,oe=kt.RootRef){return l(()=>De=>{let Le={roots:[],cells:De.cells,type:Zt.type};return Nn.doPreOrder(De.tree,De.tree.transforms.get(oe),Le,je),Le.roots})}$.rootsOfType=se;function Me(Zt,oe=kt.RootRef){return l(()=>De=>{let Le={ret:[],cells:De.cells,type:Zt.type};return Nn.doPreOrder(De.tree,De.tree.transforms.get(oe),Le,gt),Le.ret})}$.ofType=Me;function be(Zt,oe=kt.RootRef){return l(()=>De=>{let Le={ret:[],cells:De.cells,t:Zt};return Nn.doPreOrder(De.tree,De.tree.transforms.get(oe),Le,fr),Le.ret})}$.ofTransformer=be;function _e(Zt,oe=kt.RootRef){return l(()=>De=>{let Le={ret:[],cells:De.cells,t:Zt};return Nn.doPreOrder(De.tree,De.tree.transforms.get(oe),Le,Nr),Le.ret})}$.ofTransformerWithError=_e;function je(Zt,oe,De){let Le=De.cells.get(Zt.ref);return Le&&Le.obj&&Le.obj.type===De.type?(De.roots.push(Le),!1):!0}function gt(Zt,oe,De){let Le=De.cells.get(Zt.ref);return Le&&Le.obj&&Le.obj.type===De.type&&De.ret.push(Le),!0}function fr(Zt,oe,De){let Le=De.cells.get(Zt.ref);return Le&&Le.obj&&Le.transform.transformer===De.t&&De.ret.push(Le),!0}function Nr(Zt,oe,De){let Le=De.cells.get(Zt.ref);return Le&&Le.status==="error"&&Le.transform.transformer===De.t&&De.ret.push(Le),!0}})(c=t.Generators||(t.Generators={})),s("flatMap",u);function u($,ae){let Z=r($);return l(()=>se=>{let Me=[];for(let be of Z(se))for(let _e of ae(be,se))Me.push(_e);return Me})}t.flatMap=u,s("mapObject",d);function d($,ae){let Z=r($);return l(()=>se=>{let Me=[];for(let be of Z(se)){let _e=ae(be,se);_e&&Me.push(_e)}return Me})}t.mapObject=d,s("unique",m);function m($){let ae=r($);return l(()=>Z=>{let se=new Set,Me=[];for(let be of ae(Z))be&&(se.has(be.transform.ref)||(se.add(be.transform.ref),Me.push(be)));return Me})}t.unique=m,s("first",p);function p($){let ae=r($);return l(()=>Z=>{let se=ae(Z);return se.length?[se[0]]:[]})}t.first=p,s("filter",h);function h($,ae){return u($,Z=>ae(Z)?[Z]:[])}t.filter=h,s("withStatus",f);function f($,ae){return h($,Z=>Z.status===ae)}t.withStatus=f,s("withTag",b);function b($,ae){return h($,Z=>!!Z.transform.tags&&Z.transform.tags.indexOf(ae)>=0)}t.withTag=b,s("subtree",v);function v($){return u($,(ae,Z)=>{let se=[];return Nn.doPreOrder(Z.tree,Z.tree.transforms.get(ae.transform.ref),se,(Me,be,_e)=>{_e.push(Me.ref)}),se.map(Me=>Z.cells.get(Me))})}t.subtree=v,s("children",x);function x($){return u($,(ae,Z)=>{let se=[];return Z.tree.children.get(ae.transform.ref).forEach(Me=>se.push(Z.cells.get(Me))),se})}t.children=x,s("ofType",S);function S($,ae){return h($,Z=>Z.obj?Z.obj.type===ae.type:!1)}t.ofType=S,s("ancestor",T);function T($,ae){return m(d($,(Z,se)=>M(se.tree,se.cells,Z.transform.ref,ae)))}t.ancestor=T,s("ancestorOfType",E);function E($,ae){return m(d($,(Z,se)=>F(se.tree,se.cells,Z.transform.ref,ae)))}t.ancestorOfType=E,s("ancestorWithTransformer",_);function _($,ae){return m(d($,(Z,se)=>B(se.tree,se.cells,Z.transform.ref,ae)))}t.ancestorWithTransformer=_,s("withTransformer",D);function D($,ae){return h($,Z=>Z.transform.transformer===ae)}t.withTransformer=D,s("root",P);function P($,ae){return m(d($,(Z,se)=>R(se.tree,se.cells,Z.transform.ref,ae)))}t.root=P,s("rootOfType",A);function A($,ae){return m(d($,(Z,se)=>G(se.tree,se.cells,Z.transform.ref,ae)))}t.rootOfType=A,s("parent",I);function I($){return m(d($,(ae,Z)=>Z.cells.get(Z.tree.transforms.get(ae.transform.ref).parent)))}t.parent=I;function k($,ae,Z,se,Me){let be=$.transforms.get(Z),_e;for(;;){be=$.transforms.get(be.parent);let je=ae.get(be.ref);if(je.obj&&se(je)&&(_e=je,Me)||be.ref===kt.RootRef)return _e}}function M($,ae,Z,se){return k($,ae,Z,se,!0)}t.findAncestor=M;function R($,ae,Z,se){return k($,ae,Z,se,!1)}t.findRoot=R;function B($,ae,Z,se){return M($,ae,Z,Array.isArray(se)?Me=>se.indexOf(Me.transform.transformer)>=0:Me=>Me.transform.transformer===se)}t.findAncestorWithTransformer=B;function F($,ae,Z,se){return M($,ae,Z,V(se))}t.findAncestorOfType=F;function G($,ae,Z,se){return R($,ae,Z,V(se))}t.findRootOfType=G;function V($){return Array.isArray($)?ae=>{for(let Z of $)if(Z.type===ae.obj.type)return!0}:ae=>ae.obj.type===$.type}function H($,ae,Z){return Nn.doPreOrder($,$.transforms.get(ae),{refs:{},tags:Z},Q).refs}t.findUniqueTagsInSubtree=H;function Q($,ae,Z){if($.tags){for(let se of $.tags)if(Z.tags.has(se)){Z.refs[se]=$.ref;break}}return!0}function L($,ae,Z){return Nn.doPreOrder($,$.transforms.get(ae),{ref:void 0,tag:Z},Y).ref}t.findTagInSubtree=L;function Y($,ae,Z){return $.tags&&$.tags.indexOf(Z.tag)>=0?(Z.ref=$.ref,!1):!0}function j($,ae,Z){return Nn.doPreOrder($,$.transforms.get(ae),{refs:[],tags:Z},O).refs}t.findWithAllTags=j;function O($,ae,Z){if($.tags){let se=Z.tags.size,Me=0;for(let be of $.tags)if(Z.tags.has(be)&&(Me++,Me===se)){Z.refs.push($);break}}else Z.tags.size===0&&Z.refs.push($)}function J($,ae,Z){if($.transforms.get(ae).transformer===Z)return $.cells.get(ae);let Me=$.tree.children.get(ae);if(Me.size!==1)return;let be=Me.first();if($.transforms.get(be).transformer.definition.isDecorator)return J($,be,Z)}t.tryFindDecorator=J})(lt||(lt={}));var _s;(function(t){function e(){let r=new TM,n=()=>r.create();return n.dispose=()=>r.dispose(),n.behavior=o=>r.behavior(o),n}t.create=e})(_s||(_s={}));var TM=class{constructor(){this._eventList=[],this._disposed=!1}create(){let e=new ln;return this._eventList.push(e),e}behavior(e){let r=new da(e);return this._eventList.push(r),r}dispose(){if(!this._disposed){for(let e of this._eventList)e.complete();this._disposed=!0}}};var v8=Symbol.for("immer-nothing"),p8=Symbol.for("immer-draftable"),vc=Symbol.for("immer-state");function xd(t,...e){throw new Error(`[Immer] minified error nr: ${t}. Full error at: https://bit.ly/3cXEKWf`)}var tv=Object.getPrototypeOf;function rv(t){return!!t&&!!t[vc]}function Gg(t){return t?b8(t)||Array.isArray(t)||!!t[p8]||!!t.constructor?.[p8]||B2(t)||O2(t):!1}var Mpe=Object.prototype.constructor.toString();function b8(t){if(!t||typeof t!="object")return!1;let e=tv(t);if(e===null)return!0;let r=Object.hasOwnProperty.call(e,"constructor")&&e.constructor;return r===Object?!0:typeof r=="function"&&Function.toString.call(r)===Mpe}function k2(t,e){L2(t)===0?Reflect.ownKeys(t).forEach(r=>{e(r,t[r],t)}):t.forEach((r,n)=>e(n,r,t))}function L2(t){let e=t[vc];return e?e.type_:Array.isArray(t)?1:B2(t)?2:O2(t)?3:0}function PM(t,e){return L2(t)===2?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function x8(t,e,r){let n=L2(t);n===2?t.set(e,r):n===3?t.add(r):t[e]=r}function Rpe(t,e){return t===e?t!==0||1/t===1/e:t!==t&&e!==e}function B2(t){return t instanceof Map}function O2(t){return t instanceof Set}function Ug(t){return t.copy_||t.base_}function EM(t,e){if(B2(t))return new Map(t);if(O2(t))return new Set(t);if(Array.isArray(t))return Array.prototype.slice.call(t);let r=b8(t);if(e===!0||e==="class_only"&&!r){let n=Object.getOwnPropertyDescriptors(t);delete n[vc];let o=Reflect.ownKeys(n);for(let i=0;i1&&(t.set=t.add=t.clear=t.delete=Lpe),Object.freeze(t),e&&Object.entries(t).forEach(([r,n])=>MM(n,!0))),t}function Lpe(){xd(2)}function F2(t){return Object.isFrozen(t)}var Bpe={};function jg(t){let e=Bpe[t];return e||xd(0,t),e}var E1;function S8(){return E1}function Ope(t,e){return{drafts_:[],parent_:t,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function f8(t,e){e&&(jg("Patches"),t.patches_=[],t.inversePatches_=[],t.patchListener_=e)}function IM(t){DM(t),t.drafts_.forEach(Fpe),t.drafts_=null}function DM(t){t===E1&&(E1=t.parent_)}function h8(t){return E1=Ope(E1,t)}function Fpe(t){let e=t[vc];e.type_===0||e.type_===1?e.revoke_():e.revoked_=!0}function g8(t,e){e.unfinalizedDrafts_=e.drafts_.length;let r=e.drafts_[0];return t!==void 0&&t!==r?(r[vc].modified_&&(IM(e),xd(4)),Gg(t)&&(t=M2(e,t),e.parent_||R2(e,t)),e.patches_&&jg("Patches").generateReplacementPatches_(r[vc].base_,t,e.patches_,e.inversePatches_)):t=M2(e,r,[]),IM(e),e.patches_&&e.patchListener_(e.patches_,e.inversePatches_),t!==v8?t:void 0}function M2(t,e,r){if(F2(e))return e;let n=e[vc];if(!n)return k2(e,(o,i)=>y8(t,n,e,o,i,r)),e;if(n.scope_!==t)return e;if(!n.modified_)return R2(t,n.base_,!0),n.base_;if(!n.finalized_){n.finalized_=!0,n.scope_.unfinalizedDrafts_--;let o=n.copy_,i=o,a=!1;n.type_===3&&(i=new Set(o),o.clear(),a=!0),k2(i,(s,l)=>y8(t,n,o,s,l,r,a)),R2(t,o,!1),r&&t.patches_&&jg("Patches").generatePatches_(n,r,t.patches_,t.inversePatches_)}return n.copy_}function y8(t,e,r,n,o,i,a){if(rv(o)){let s=i&&e&&e.type_!==3&&!PM(e.assigned_,n)?i.concat(n):void 0,l=M2(t,o,s);if(x8(r,n,l),rv(l))t.canAutoFreeze_=!1;else return}else a&&r.add(o);if(Gg(o)&&!F2(o)){if(!t.immer_.autoFreeze_&&t.unfinalizedDrafts_<1)return;M2(t,o),(!e||!e.scope_.parent_)&&typeof n!="symbol"&&Object.prototype.propertyIsEnumerable.call(r,n)&&R2(t,o)}}function R2(t,e,r=!1){!t.parent_&&t.immer_.autoFreeze_&&t.canAutoFreeze_&&MM(e,r)}function Npe(t,e){let r=Array.isArray(t),n={type_:r?1:0,scope_:e?e.scope_:S8(),modified_:!1,finalized_:!1,assigned_:{},parent_:e,base_:t,draft_:null,copy_:null,revoke_:null,isManual_:!1},o=n,i=RM;r&&(o=[n],i=I1);let{revoke:a,proxy:s}=Proxy.revocable(o,i);return n.draft_=s,n.revoke_=a,s}var RM={get(t,e){if(e===vc)return t;let r=Ug(t);if(!PM(r,e))return Vpe(t,r,e);let n=r[e];return t.finalized_||!Gg(n)?n:n===wM(t.base_,e)?(_M(t),t.copy_[e]=kM(n,t)):n},has(t,e){return e in Ug(t)},ownKeys(t){return Reflect.ownKeys(Ug(t))},set(t,e,r){let n=C8(Ug(t),e);if(n?.set)return n.set.call(t.draft_,r),!0;if(!t.modified_){let o=wM(Ug(t),e),i=o?.[vc];if(i&&i.base_===r)return t.copy_[e]=r,t.assigned_[e]=!1,!0;if(Rpe(r,o)&&(r!==void 0||PM(t.base_,e)))return!0;_M(t),AM(t)}return t.copy_[e]===r&&(r!==void 0||e in t.copy_)||Number.isNaN(r)&&Number.isNaN(t.copy_[e])||(t.copy_[e]=r,t.assigned_[e]=!0),!0},deleteProperty(t,e){return wM(t.base_,e)!==void 0||e in t.base_?(t.assigned_[e]=!1,_M(t),AM(t)):delete t.assigned_[e],t.copy_&&delete t.copy_[e],!0},getOwnPropertyDescriptor(t,e){let r=Ug(t),n=Reflect.getOwnPropertyDescriptor(r,e);return n&&{writable:!0,configurable:t.type_!==1||e!=="length",enumerable:n.enumerable,value:r[e]}},defineProperty(){xd(11)},getPrototypeOf(t){return tv(t.base_)},setPrototypeOf(){xd(12)}},I1={};k2(RM,(t,e)=>{I1[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}});I1.deleteProperty=function(t,e){return I1.set.call(this,t,e,void 0)};I1.set=function(t,e,r){return RM.set.call(this,t[0],e,r,t[0])};function wM(t,e){let r=t[vc];return(r?Ug(r):t)[e]}function Vpe(t,e,r){let n=C8(e,r);return n?"value"in n?n.value:n.get?.call(t.draft_):void 0}function C8(t,e){if(!(e in t))return;let r=tv(t);for(;r;){let n=Object.getOwnPropertyDescriptor(r,e);if(n)return n;r=tv(r)}}function AM(t){t.modified_||(t.modified_=!0,t.parent_&&AM(t.parent_))}function _M(t){t.copy_||(t.copy_=EM(t.base_,t.scope_.immer_.useStrictShallowCopy_))}var zpe=class{constructor(t){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,r,n)=>{if(typeof e=="function"&&typeof r!="function"){let i=r;r=e;let a=this;return function(l=i,...c){return a.produce(l,u=>r.call(this,u,...c))}}typeof r!="function"&&xd(6),n!==void 0&&typeof n!="function"&&xd(7);let o;if(Gg(e)){let i=h8(this),a=kM(e,void 0),s=!0;try{o=r(a),s=!1}finally{s?IM(i):DM(i)}return f8(i,n),g8(o,i)}else if(!e||typeof e!="object"){if(o=r(e),o===void 0&&(o=e),o===v8&&(o=void 0),this.autoFreeze_&&MM(o,!0),n){let i=[],a=[];jg("Patches").generateReplacementPatches_(e,o,i,a),n(i,a)}return o}else xd(1,e)},this.produceWithPatches=(e,r)=>{if(typeof e=="function")return(a,...s)=>this.produceWithPatches(a,l=>e(l,...s));let n,o;return[this.produce(e,r,(a,s)=>{n=a,o=s}),n,o]},typeof t?.autoFreeze=="boolean"&&this.setAutoFreeze(t.autoFreeze),typeof t?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(t.useStrictShallowCopy)}createDraft(t){Gg(t)||xd(8),rv(t)&&(t=Upe(t));let e=h8(this),r=kM(t,void 0);return r[vc].isManual_=!0,DM(e),r}finishDraft(t,e){let r=t&&t[vc];(!r||!r.isManual_)&&xd(9);let{scope_:n}=r;return f8(n,e),g8(void 0,n)}setAutoFreeze(t){this.autoFreeze_=t}setUseStrictShallowCopy(t){this.useStrictShallowCopy_=t}applyPatches(t,e){let r;for(r=e.length-1;r>=0;r--){let o=e[r];if(o.path.length===0&&o.op==="replace"){t=o.value;break}}r>-1&&(e=e.slice(r+1));let n=jg("Patches").applyPatches_;return rv(t)?n(t,e):this.produce(t,o=>n(o,e))}};function kM(t,e){let r=B2(t)?jg("MapSet").proxyMap_(t,e):O2(t)?jg("MapSet").proxySet_(t,e):Npe(t,e);return(e?e.scope_:S8()).drafts_.push(r),r}function Upe(t){return rv(t)||xd(10,t),T8(t)}function T8(t){if(!Gg(t)||F2(t))return t;let e=t[vc],r;if(e){if(!e.modified_)return e.base_;e.finalized_=!0,r=EM(t,e.scope_.immer_.useStrictShallowCopy_)}else r=EM(t,!0);return k2(r,(n,o)=>{x8(r,n,T8(o))}),e&&(e.finalized_=!1),r}var bc=new zpe,ss=bc.produce,rXe=bc.produceWithPatches.bind(bc),w8=bc.setAutoFreeze.bind(bc),nXe=bc.setUseStrictShallowCopy.bind(bc),oXe=bc.applyPatches.bind(bc),iXe=bc.createDraft.bind(bc),aXe=bc.finishDraft.bind(bc);var Df;(function(t){function e(a){if(!a.state||a.state.tree===a.editInfo.sourceTree)return a.tree.asImmutable();let s=a.state.tree.asTransient();for(let l of a.actions)switch(l.kind){case"add":s.add(l.transform);break;case"update":s.setParams(l.ref,l.params);break;case"delete":s.remove(l.ref);break;case"insert":{let c=s.children.get(l.ref).toArray();s.add(l.transform);for(let u of c)s.changeParent(u,l.transform.ref);break}}return a.editInfo.sourceTree=a.tree,s.asImmutable()}function r(a){return!!a&&typeof a.getTree=="function"}t.is=r;function n(a){return!!a&&typeof a.getTree=="function"&&typeof a.ref=="string"}t.isTo=n;class o{get editInfo(){return this.state.editInfo}get currentTree(){return this.state.tree}to(s){let l=typeof s=="string"?s:V0.is(s)?s.transform.ref:s.ref;return new i(this.state,l,this)}toRoot(){return new i(this.state,this.state.tree.root.ref,this)}delete(s){let l=Fn.resolveRef(s);return!l||!this.state.tree.transforms.has(l)?this:(this.editInfo.count++,this.state.tree.remove(l),this.state.actions.push({kind:"delete",ref:l}),this)}getTree(){return e(this.state)}commit(s){if(!this.state.state)throw new Error("Cannot commit template tree");return this.state.state.runTask(this.state.state.updateTree(this,s))}constructor(s,l){this.state={state:l,tree:s.asTransient(),actions:[],editInfo:{applied:!1,sourceTree:s,count:0,lastUpdate:void 0}}}}t.Root=o;class i{get editInfo(){return this.state.editInfo}get selector(){return new z0(this.ref,this.state.state)}getApplyRoot(){return Nn.getDecoratorRoot(this.state.tree,this.ref)}apply(s,l,c){if(s.definition.isDecorator)return this.insert(s,l,c);let u=this.getApplyRoot(),d=s.apply(u,l,c);return this.state.tree.add(d),this.editInfo.count++,this.editInfo.lastUpdate=d.ref,this.state.actions.push({kind:"add",transform:d}),new i(this.state,d.ref,this.root)}applyOrUpdate(s,l,c,u){if(this.state.tree.transforms.has(s)){let d=this.to(s);return c&&d.update(c),d}else return this.apply(l,c,U(w({},u),{ref:s}))}applyOrUpdateTagged(s,l,c,u){if(l.definition.isDecorator)throw new Error("Can't use applyOrUpdateTagged on decorator transformers.");let d=this.getApplyRoot(),m=this.state.tree.children.get(d).values();for(;;){let h=m.next();if(h.done)break;let f=this.state.tree.transforms.get(h.value);if(f&&kt.hasTags(f,s)){let b=this.to(h.value);return b.updateTagged(c,_8(f.tags,s,u&&u.tags)),b}}let p=l.apply(d,c,U(w({},u),{tags:_8(s,u&&u.tags)}));return this.state.tree.add(p),this.editInfo.count++,this.editInfo.lastUpdate=p.ref,this.state.actions.push({kind:"add",transform:p}),new i(this.state,p.ref,this.root)}group(s,l,c){return this.apply(s,l,c)}insert(s,l,c){let u=this.state.tree.children.get(this.ref).toArray(),d=s.apply(this.ref,l,c);this.state.tree.add(d);for(let m of u)this.state.tree.changeParent(m,d.ref);return this.editInfo.count++,this.editInfo.lastUpdate=d.ref,this.state.actions.push({kind:"insert",ref:this.ref,transform:d}),new i(this.state,d.ref,this.root)}updateTagged(s,l){(this.state.tree.setParams(this.ref,s)||this.state.tree.setTags(this.ref,l))&&(this.editInfo.count++,this.editInfo.lastUpdate=this.ref,this.state.actions.push({kind:"update",ref:this.ref,params:s}))}update(s,l){let c;if(l){let u=this.state.tree.transforms.get(this.ref);c=ss(u.params,l)}else c=typeof s=="function"?ss(this.state.tree.transforms.get(this.ref).params,s):s;return this.state.tree.setParams(this.ref,c)&&(this.editInfo.count++,this.editInfo.lastUpdate=this.ref,this.state.actions.push({kind:"update",ref:this.ref,params:c})),this.root}to(s){return this.root.to(s)}toRoot(){return this.root.toRoot()}delete(s){return this.root.delete(s)}getTree(){return e(this.state)}commit(s){if(!this.state.state)throw new Error("Cannot commit template tree");return this.state.state.runTask(this.state.state.updateTree(this,s))}constructor(s,l,c){if(this.state=s,this.root=c,this.ref=l,!this.state.tree.transforms.has(l))throw new Error(`Could not find node '${l}'.`)}}t.To=i})(Df||(Df={}));function _8(...t){let e,r=[];for(let n of t)if(n)if(e||(e=new Set),typeof n=="string"){if(e.has(n))continue;e.add(n),r.push(n)}else for(let o of n)e.has(o)||(e.add(o),r.push(o));return r}var N2=class{constructor(){this.ev=_s.create(),this.actions=new Map,this.fromTypeIndex=new Map,this.events={added:this.ev(),removed:this.ev()}}add(e){let r=Se.is(e)?e.toAction():e;if(this.actions.has(r.id))return this;this.actions.set(r.id,r);for(let n of r.definition.from)this.fromTypeIndex.has(n.type)?this.fromTypeIndex.get(n.type).push(r):this.fromTypeIndex.set(n.type,[r]);return this.events.added.next(void 0),this}remove(e){let r=Se.is(e)?e.toAction().id:vo.is(e)?e:e.id,n=this.actions.get(r);if(!n)return this;this.actions.delete(r);for(let o of n.definition.from){let i=this.fromTypeIndex.get(o.type);i&&(nm(i,n),i.length===0&&this.fromTypeIndex.delete(o.type))}return this.events.removed.next(void 0),this}fromCell(e,r){let n=e.obj;if(!n)return[];let o=this.fromTypeIndex.get(n.type);if(!o)return[];let i=!1;for(let s of o)if(s.definition.isApplicable){i=!0;break}if(!i)return o;let a=[];for(let s of o)s.definition.isApplicable?s.definition.isApplicable(n,e.transform,r)&&a.push(s):a.push(s);return a}dispose(){this.ev.dispose()}};var cu;(function(t){function e(i){return{type:"message",timestamp:new Date,message:i}}t.message=e;function r(i){return{type:"error",timestamp:new Date,message:i}}t.error=r;function n(i){return{type:"warning",timestamp:new Date,message:i}}t.warning=n;function o(i){return{type:"info",timestamp:new Date,message:i}}t.info=o})(cu||(cu={}));var Af;(function(t){class e{get current(){return this._current}set current(i){this._current=i}getAncestorOfType(i){if(!this._current)return;let a=this._current;for(;;){if(a=this.cells.get(a.transform.parent),!a.obj)return;if(a.obj.type===i.type)return a.obj;if(a.transform.ref===kt.RootRef)return}}getRootOfType(i){if(!this._current)return;let a=this._current,s;for(;;){if(!a.obj)return;if(a.obj.type===i.type&&(s=a),a.transform.ref===kt.RootRef)return s?s.obj:void 0;a=this.cells.get(a.transform.parent)}}constructor(i){this.cells=i,this._current=void 0}}t.Impl=e;function r(o,i){let a=o.cells,s=a.get(i),l=[s];for(;s?.transform.transformer.definition.isDecorator;)s=a.get(s.transform.parent),l.push(s);return l}t.getDecoratorChain=r;function n(o,i,a){let s,l=o.cells.get(a);if(l)for(;;){if(!l.obj)return;if(l.obj.type===i.type&&(s=l),l.transform.ref===kt.RootRef)return s?s.obj:void 0;l=o.cells.get(l.transform.parent)}}t.getRootOfType=n})(Af||(Af={}));var V2=class{constructor(){this.queue=[],this.signal=new ln}get length(){return this.queue.length}enqueue(e){return this.queue.push(e),this.queue.length===1?!0:this.waitFor(e)}handled(e){rp(this.queue,e),this.queue.length>0&&this.signal.next({v:this.queue[0],stillPresent:!0})}remove(e){let r=rp(this.queue,e);return r&&this.signal.next({v:e,stillPresent:!1}),r}waitFor(e){return new Promise(r=>{let n=this.signal.subscribe(({v:o,stillPresent:i})=>{o===e&&(n.unsubscribe(),r(i))})})}};var Ll=class{get tree(){return this._tree}get transforms(){return this._tree.transforms}get current(){return this.behaviors.currentObject.value.ref}get root(){return this.cells.get(this._tree.root.ref)}build(){return new Df.Root(this.tree,this)}addHistory(e,r){this.historyCapacity!==0&&(this.history.unshift([e,r||"Update"]),this.history.length>this.historyCapacity&&this.history.pop(),this.events.historyUpdated.next({state:this}))}clearHistory(){this.history.length!==0&&(this.history=[],this.events.historyUpdated.next({state:this}))}get latestUndoLabel(){return this.history.length>0?this.history[0][1]:void 0}get canUndo(){return this.history.length>0}undo(){return ie.create("Undo",e=>N(this,null,function*(){let r=this.history.shift();if(r){this.events.historyUpdated.next({state:this}),this.undoingHistory=!0;try{yield this.updateTree(r[0],{canUndo:!1}).runInContext(e)}finally{this.undoingHistory=!1}}}))}getSnapshot(){return{tree:Nn.toJSON(this._tree)}}setSnapshot(e){let r=Nn.fromJSON(e.tree);return this.updateTree(r)}setCurrent(e){this.behaviors.currentObject.next({state:this,ref:e})}updateCellState(e,r){let n=this.cells.get(e);if(!n)return;let o=typeof r=="function"?r(n.state):r;kt.assignState(n.state,o)&&(n.transform=this._tree.assignState(n.transform.ref,o),this.events.cell.stateUpdated.next({state:this,ref:e,cell:n}))}dispose(){this.ev.dispose(),this.actions.dispose()}select(e){return lt.select(e,this)}selectQ(e){return typeof e=="string"?lt.select(e,this):lt.select(e(lt.Generators),this)}applyAction(e,r,n=kt.RootRef){return ie.create("Apply Action",o=>{let i=this.cells.get(n);if(!i)throw new Error(`'${n}' does not exist.`);if(i.status!=="ok")throw new Error(`Action cannot be applied to a cell with status '${i.status}'`);return OM(e.definition.run({ref:n,cell:i,a:i.obj,params:r,state:this},this.globalContext),o)})}transaction(e,r){return ie.create("State Transaction",n=>N(this,null,function*(){let o=this.inTransaction,i=this._tree.asImmutable(),a=!1;try{o||this.behaviors.isUpdating.next(!0),this.inTransaction=!0,this.inTransactionError=!1,yield e(n),this.inTransactionError&&(a=!0,yield this.updateTree(i).runInContext(n))}catch(s){if(a||(a=!0,yield this.updateTree(i).runInContext(n),this.events.log.next(cu.error("Error during state transaction, reverting"))),o)throw this.inTransactionError=!0,s;if(r?.rethrowErrors)throw s;console.error(s)}finally{o||(this.inTransaction=!1,this.events.changed.next({state:this,inTransaction:!1}),this.behaviors.isUpdating.next(!1),a||(r?.canUndo?this.addHistory(i,typeof r.canUndo=="string"?r.canUndo:void 0):this.clearHistory()))}}))}get inUpdate(){return this._inUpdate}updateTree(e,r){let n={tree:e,options:r};return ie.create("Update Tree",o=>N(this,null,function*(){if(!(yield this.updateQueue.enqueue(n)))return;this._inUpdate=!0;let a=r?.canUndo?this._tree.asImmutable():void 0,s=!1;this.inTransaction||this.behaviors.isUpdating.next(!0);try{if(Df.is(e)){if(e.editInfo.applied)throw new Error("This builder has already been applied. Create a new builder for further state updates");e.editInfo.applied=!0}this.reverted=!1;let l=r&&(r.revertIfAborted||r.revertOnError)?yield this._revertibleTreeUpdate(o,n,r):yield this._updateTree(o,n);return s=this.reverted,l.ctx.hadError&&(this.inTransactionError=!0),l.cell?new z0(l.cell.transform.ref,this):void 0}finally{this._inUpdate=!1,this.updateQueue.handled(n),this.inTransaction||(this.behaviors.isUpdating.next(!1),r?.canUndo?s||this.addHistory(a,typeof r.canUndo=="string"?r.canUndo:void 0):this.undoingHistory||this.clearHistory())}}),()=>{this.updateQueue.remove(n)})}_revertibleTreeUpdate(e,r,n){return N(this,null,function*(){let o=this.tree,i=yield this._updateTree(e,r);return(i.ctx.hadError||i.ctx.wasAborted)&&n.revertOnError||i.ctx.wasAborted&&n.revertIfAborted?(this.reverted=!0,yield this._updateTree(e,{tree:o,options:r.options})):i})}_updateTree(e,r){return N(this,null,function*(){let n=!1,o=this.updateTreeAndCreateCtx(r.tree,e,r.options);try{if(n=yield jpe(o),Df.isTo(r.tree)){let i=this.select(r.tree.ref)[0];return{ctx:o,cell:i}}return{ctx:o}}finally{this.spine.current=void 0,n&&this.events.changed.next({state:this,inTransaction:this.inTransaction})}})}updateTreeAndCreateCtx(e,r,n){let o=(Df.is(e)?e.getTree():e).asTransient(),i=this._tree;this._tree=o;let a=this.cells,s={parent:this,editInfo:Df.is(e)?e.editInfo:void 0,errorFree:this.errorFree,taskCtx:r,oldTree:i,tree:o,cells:this.cells,spine:this.spine,results:[],options:w(w({},Gpe),n),changed:!1,hadError:!1,wasAborted:!1,newCurrent:void 0,getCellData:l=>{var c;return(c=a.get(l).obj)===null||c===void 0?void 0:c.data}};return this.errorFree=!0,s}constructor(e,r){this.errorFree=!0,this.ev=_s.create(),this.globalContext=void 0,this.events={cell:{stateUpdated:this.ev(),created:this.ev(),removed:this.ev()},object:{updated:this.ev(),created:this.ev(),removed:this.ev()},log:this.ev(),changed:this.ev(),historyUpdated:this.ev()},this.behaviors={currentObject:this.ev.behavior({state:this,ref:kt.RootRef}),isUpdating:this.ev.behavior(!1)},this.actions=new N2,this.cells=new Map,this.spine=new Af.Impl(this.cells),this.tryGetCellData=i=>{var a,s;let l=(s=(a=this.cells.get(i))===null||a===void 0?void 0:a.obj)===null||s===void 0?void 0:s.data;if(l===void 0)throw new Error(`Cell '${i}' data undefined.`);return l},this.historyCapacity=5,this.history=[],this.undoingHistory=!1,this.inTransaction=!1,this.inTransactionError=!1,this._inUpdate=!1,this.reverted=!1,this.updateQueue=new V2,this._tree=Nn.createEmpty(kt.createRoot(r&&r.rootState)).asTransient();let o=this._tree.root;this.runTask=r.runTask,r?.historyCapacity!==void 0&&(this.historyCapacity=r.historyCapacity),this.cells.set(o.ref,{parent:this,transform:o,sourceRef:void 0,obj:e,status:"ok",state:w({},o.state),errorText:void 0,params:{definition:{},values:{}},paramsNormalizedVersion:o.version,dependencies:{dependentBy:[],dependsOn:[]},cache:{}}),this.globalContext=r&&r.globalContext}};(function(t){function e(n,o){return new t(n,o)}t.create=e;let r;(function(n){function o(i,a){return!!a&&i.ref===a.transform.ref&&i.state===a.parent}n.isCell=o})(r=t.ObjectEvent||(t.ObjectEvent={}))})(Ll||(Ll={}));var Gpe={doNotLogTiming:!1,doNotUpdateCurrent:!0,revertIfAborted:!1,revertOnError:!1,canUndo:!1};function jpe(t){return N(this,null,function*(){let e=!!(t.editInfo&&t.editInfo.count===1&&t.editInfo.lastUpdate&&t.editInfo.sourceTree===t.oldTree),r,n=[],o;if(e)r=[],o=[t.editInfo.lastUpdate];else{r=Xpe(t);let s=t.parent.current,l=!1;for(let c of r)if(c===s){l=!0;break}if(l){let c=P8(t.oldTree,s,r,t.cells);t.parent.setCurrent(c)}for(let c=r.length-1;c>=0;c--){let u=t.cells.get(r[c]);u&&z2(u.transform,u.obj,u?.transform.params,u.cache,t.parent.globalContext)}for(let c of r){let u=t.cells.get(c);u&&(u.parent=void 0,Zpe(u));let d=u&&u.obj;t.cells.delete(c),n.push(d)}o=Hpe(t.cells,t.tree)}let i=tfe(t,o);for(let s of i.added)t.parent.events.cell.created.next({state:t.parent,ref:s.transform.ref,cell:s});for(let s=0;s0||o.length>0||t.changed})}function Hpe(t,e){let r={roots:[],cells:t};return Nn.doPreOrder(e,e.root,r,qpe),r.roots}function qpe(t,e,r){let n=r.cells.get(t.ref);return!n||n.transform.version!==t.version?(r.roots.push(t.ref),!1):!(n.status==="error"||n&&n.obj===Rr.Null)}function Wpe(t,e,r){!r.newTree.transforms.has(t.ref)&&r.cells.has(t.ref)&&r.deletes.push(t.ref)}function Xpe(t){let e={newTree:t.tree,cells:t.cells,deletes:[]};return Nn.doPostOrder(t.oldTree,t.oldTree.root,e,Wpe),e.deletes}function Ype(t,e,r){let n=r.cells.get(t.ref);!n||!kt.syncState(n.state,t.state)||r.parent.events.cell.stateUpdated.next({state:r.parent,ref:t.ref,cell:n})}function Qpe(t){Nn.doPreOrder(t.tree,t.tree.root,t,Ype)}function U2(t,e,r,n){let o=t.cells.get(e),i=o.status!==r;o.status=r,o.errorText=n,i&&t.parent.events.cell.stateUpdated.next({state:t.parent,ref:e,cell:o})}function Kpe(t,e,r){r.cells.get(t.ref).transform=t,U2(r,t.ref,"pending")}function $pe(t,e){for(let r of e)Nn.doPreOrder(t.tree,t.tree.transforms.get(r),t,Kpe)}function Zpe(t){for(let e of t.dependencies.dependsOn)nm(e.dependencies.dependentBy,t)}function Jpe(t,e,{ctx:r,added:n,visited:o}){if(o.add(t.ref),r.cells.has(t.ref))return;let i={parent:r.parent,transform:t,sourceRef:void 0,status:"pending",state:w({},t.state),errorText:void 0,params:void 0,paramsNormalizedVersion:"",dependencies:{dependentBy:[],dependsOn:[]},cache:void 0};r.cells.set(t.ref,i),n.push(i)}function efe(t,e){if(t.transform.dependsOn)for(let r of t.transform.dependsOn){if(!e.tree.transforms.get(r))throw new Error("Cannot depend on a non-existent transform.");let o=e.cells.get(r);Mo(t.dependencies.dependsOn,o),Mo(o.dependencies.dependentBy,t)}}function tfe(t,e){let r={ctx:t,visited:new Set,added:[]};for(let o of e)Nn.doPreOrder(t.tree,t.tree.transforms.get(o),r,Jpe);for(let o of r.added)efe(o,t);let n;return r.visited.forEach(o=>{let i=t.cells.get(o);for(let a of i.dependencies.dependentBy)r.visited.has(a.transform.ref)||(n||(n=Qc.create()),Qc.add(n,a.transform.ref,a))}),{added:r.added,dependent:n?n.array:void 0}}function P8(t,e,r,n){let o=new Set(r);return I8(t,e,o,n)}function I8(t,e,r,n){if(e===kt.RootRef)return e;let o=t.transforms.get(e),i=t.children.get(o.parent).values(),a,s=!1;for(;;){let l=i.next();if(l.done)break;if(r.has(l.value))continue;let c=n.get(l.value);if(!c||c.status==="error"||c.obj===Rr.Null)continue;let u=t.transforms.get(l.value);if(!u.state.isGhost){if(l.value===e){s=!0,r.has(e)||(a=e);continue}if(s)return u.ref;a=u.ref}}return a||I8(t,o.parent,r,n)}function BM(t,e,r,n){n||(t.hadError=!0,t.parent.errorFree=!1);let o=t.cells.get(e);if(r){t.wasAborted=t.wasAborted||ie.isAbort(r);let a=""+r;U2(t,e,"error",a),n||t.parent.events.log.next({type:"error",timestamp:new Date,message:a})}else o.params=void 0;if(o.obj){let a=o.obj;o.obj=void 0,o.cache=void 0,t.parent.events.object.removed.next({state:t.parent,ref:e,obj:a})}let i=t.tree.children.get(e).values();for(;;){let a=i.next();if(a.done)return;BM(t,a.value,void 0,n)}}var rfe="Parent is null";function D8(t,e){return N(this,null,function*(){U2(t,e,"processing");let r=!1;try{let o=ko(),i=yield ofe(t,e),a=ko()-o;i.action!=="none"&&(t.changed=!0),U2(t,e,"ok"),t.results.push(i),i.action==="created"?(r=i.obj===Rr.Null,!r&&!t.options.doNotLogTiming&&t.parent.events.log.next(cu.info(`Created ${i.obj.label} in ${p0(a)}.`))):i.action==="updated"?(r=i.obj===Rr.Null,!r&&!t.options.doNotLogTiming&&t.parent.events.log.next(cu.info(`Updated ${i.obj.label} in ${p0(a)}.`))):i.action==="replaced"&&(r=i.obj===Rr.Null,!r&&!t.options.doNotLogTiming&&t.parent.events.log.next(cu.info(`Updated ${i.obj.label} in ${p0(a)}.`)))}catch(o){t.changed=!0,t.hadError||(t.newCurrent=e),BM(t,e,o,!1),console.error(o);return}let n=t.tree.children.get(e).values();for(;;){let o=n.next();if(o.done)return;r?BM(t,o.value,void 0,!0):yield D8(t,o.value)}})}function nfe(t,e,r,n){let o=e.transformer.definition.params,i=o?o(r,t.parent.globalContext):{};if(n.paramsNormalizedVersion!==e.version)e.params=g.normalizeParams(i,e.params,"all"),n.paramsNormalizedVersion=e.version;else{let a=g.getDefaultValues(i);e.params=e.params?kz(e.params,a):a}return g.resolveRefs(i,e.params,t.getCellData),{definition:i,values:e.params}}function ofe(t,e){return N(this,null,function*(){var r;let{oldTree:n,tree:o}=t,i=t.cells.get(e),a=i.transform;if(i.transform.ref===kt.RootRef)return{action:"none"};let s=t.cells.get(i.transform.parent);if(s?.obj===Rr.Null)if(i.sourceRef=s.transform.ref,n.transforms.has(e)&&i.params){let m=i.params.values,p=i.cache;return z2(a,i.obj,m,p,t.parent.globalContext),i.params=void 0,i.obj=Rr.Null,{ref:e,action:"updated",obj:i.obj}}else return i.params=void 0,{ref:e,action:"created",obj:Rr.Null};let c=a.transformer.definition.from.length===0?s:lt.findAncestorOfType(o,t.cells,e,a.transformer.definition.from);if(!c)throw new Error(`No suitable parent found for '${e}'`);t.spine.current=i;let u=c.obj;i.sourceRef=c.transform.ref;let d=nfe(t,a,u,i);if(!n.transforms.has(e)||!i.params){i.params=d;let m=yield E8(t,i,a.transformer,u,d.values);return LM(m,a),i.obj=m,{ref:e,action:"created",obj:m}}else{let m=i.params.values,p=i.cache,h=(r=i.obj)===null||r===void 0?void 0:r.data,f=d.values;switch(i.params=d,i.obj&&i.obj!==Rr.Null?yield ife(t,i,a.transformer,u,i.obj,m,f):Se.UpdateResult.Recreate){case Se.UpdateResult.Recreate:{let v=i.obj;z2(a,v,m,p,t.parent.globalContext);let x=yield E8(t,i,a.transformer,u,f);return LM(x,a),i.obj=x,{ref:e,action:"replaced",oldObj:v,obj:x}}case Se.UpdateResult.Updated:return LM(i.obj,a),{ref:e,action:"updated",oldData:h,obj:i.obj};case Se.UpdateResult.Null:return z2(a,i.obj,m,p,t.parent.globalContext),i.obj=Rr.Null,{ref:e,action:"updated",obj:i.obj};default:return{action:"none"}}}})}function z2(t,e,r,n,o){var i,a;(a=(i=t.transformer.definition).dispose)===null||a===void 0||a.call(i,{b:e!==Rr.Null?e:void 0,params:r,cache:n},o)}function LM(t,e){!t||t===Rr.Null||(t.tags=e.tags)}function OM(t,e){return typeof t.runInContext=="function"?t.runInContext(e):t}function A8(t){if(t.dependencies.dependsOn.length===0)return;let e=Object.create(null);for(let r of t.dependencies.dependsOn){if(!r.obj)throw new Error("Unresolved dependency.");e[r.transform.ref]=r.obj}return e}function E8(t,e,r,n,o){return e.cache||(e.cache=Object.create(null)),OM(r.definition.apply({a:n,params:o,cache:e.cache,spine:t.spine,dependencies:A8(e)},t.parent.globalContext),t.taskCtx)}function ife(t,e,r,n,o,i,a){return N(this,null,function*(){return r.definition.update?(e.cache||(e.cache=Object.create(null)),OM(r.definition.update({a:n,oldParams:i,b:o,newParams:a,cache:e.cache,spine:t.spine,dependencies:A8(e)},t.parent.globalContext),t.taskCtx)):Se.UpdateResult.Recreate})}var X;(function(t){t.Create=Rr.factory();function e(m){return!!m&&m.type.typeClass==="Representation3D"}t.isRepresentation3D=e;function r(m){return!!m&&m.type.typeClass==="Behavior"}t.isBehavior=r;function n(m){return t.Create(U(w({},m),{typeClass:"Representation3D"}))}t.CreateRepresentation3D=n;function o(m){return t.Create(U(w({},m),{typeClass:"Behavior"}))}t.CreateBehavior=o;class i extends t.Create({name:"Root",typeClass:"Root"}){}t.Root=i;class a extends t.Create({name:"Group",typeClass:"Group"}){}t.Group=a;let s;(function(m){class p extends t.Create({name:"String Data",typeClass:"Data"}){}m.String=p;class h extends t.Create({name:"Binary Data",typeClass:"Data"}){}m.Binary=h;class f extends t.Create({name:"Data Blob",typeClass:"Data"}){}m.Blob=f})(s=t.Data||(t.Data={}));let l;(function(m){class p extends t.Create({name:"JSON Data",typeClass:"Data"}){}m.Json=p;class h extends t.Create({name:"CIF File",typeClass:"Data"}){}m.Cif=h;class f extends t.Create({name:"Cube File",typeClass:"Data"}){}m.Cube=f;class b extends t.Create({name:"PSF File",typeClass:"Data"}){}m.Psf=b;class v extends t.Create({name:"PRMTOP File",typeClass:"Data"}){}m.Prmtop=v;class x extends t.Create({name:"TOP File",typeClass:"Data"}){}m.Top=x;class S extends t.Create({name:"PLY File",typeClass:"Data"}){}m.Ply=S;class T extends t.Create({name:"CCP4/MRC/MAP File",typeClass:"Data"}){}m.Ccp4=T;class E extends t.Create({name:"DSN6/BRIX File",typeClass:"Data"}){}m.Dsn6=E;class _ extends t.Create({name:"DX File",typeClass:"Data"}){}m.Dx=_;class D extends t.Create({name:"Format Blob",typeClass:"Data"}){}m.Blob=D})(l=t.Format||(t.Format={}));let c;(function(m){class p extends t.Create({name:"Coordinates",typeClass:"Object"}){}m.Coordinates=p;class h extends t.Create({name:"Topology",typeClass:"Object"}){}m.Topology=h;class f extends t.Create({name:"Model",typeClass:"Object"}){}m.Model=f;class b extends t.Create({name:"Trajectory",typeClass:"Object"}){}m.Trajectory=b;class v extends t.Create({name:"Structure",typeClass:"Object"}){}m.Structure=v,function(x){class S extends n({name:"Structure 3D"}){}x.Representation3D=S;class T extends t.Create({name:"Structure 3D State",typeClass:"Object"}){}x.Representation3DState=T;class E extends t.Create({name:"Selections",typeClass:"Object"}){}x.Selections=E}(v=m.Structure||(m.Structure={}))})(c=t.Molecule||(t.Molecule={}));let u;(function(m){class p extends t.Create({name:"Volume",typeClass:"Object"}){}m.Data=p;class h extends t.Create({name:"Lazy Volume",typeClass:"Object"}){}m.Lazy=h;class f extends n({name:"Volume 3D"}){}m.Representation3D=f})(u=t.Volume||(t.Volume={}));let d;(function(m){class p extends t.Create({name:"Shape Provider",typeClass:"Object"}){}m.Provider=p;class h extends n({name:"Shape 3D"}){}m.Representation3D=h})(d=t.Shape||(t.Shape={}))})(X||(X={}));var Je;(function(t){t.CreateBuiltIn=Se.factory("ms-plugin"),t.BuiltIn=Se.builderFactory("ms-plugin")})(Je||(Je={}));var nv=class extends X.Create({name:"Volume Streaming",typeClass:"Object"}){},k8;(function(t){let e;(function(r){r.Float32="float32",r.Int8="int8"})(e=t.ValueType||(t.ValueType={}))})(k8||(k8={}));function kf(t,e){return`${t}${t[t.length-1]==="/"||e[0]==="/"?"":"/"}${e}`}var M8={get preferWebGl1(){if(typeof navigator>"u"||typeof window>"u")return!1;if(["Version/15.1 Safari","Version/15.2 Safari","Version/15.3 Safari"].some(o=>navigator.userAgent.indexOf(o)>0))return!0;let e=/iPad|iPhone|iPod/.test(navigator.userAgent),r=navigator.userAgent.includes("Macintosh"),n=navigator.maxTouchPoints>=4;return!window.MSStream&&(e||r&&n)}};var FM=class{toString(){return this.key}valueOf(){return this.key}constructor(e,r){this.key=e,this.defaultValue=r}};function Vn(t,e){return new FM(t,e)}var Wt={item:Vn,General:{IsBusyTimeoutMs:Vn("plugin-config.is-busy-timeout",750),DisableAntialiasing:Vn("plugin-config.disable-antialiasing",!1),DisablePreserveDrawingBuffer:Vn("plugin-config.disable-preserve-drawing-buffer",!1),PixelScale:Vn("plugin-config.pixel-scale",1),PickScale:Vn("plugin-config.pick-scale",.25),Transparency:Vn("plugin-config.transparency","wboit"),PreferWebGl1:Vn("plugin-config.prefer-webgl1",M8.preferWebGl1),AllowMajorPerformanceCaveat:Vn("plugin-config.allow-major-performance-caveat",!1),PowerPreference:Vn("plugin-config.power-preference","high-performance")},State:{DefaultServer:Vn("plugin-state.server","https://webchem.ncbr.muni.cz/molstar-state"),CurrentServer:Vn("plugin-state.server","https://webchem.ncbr.muni.cz/molstar-state"),HistoryCapacity:Vn("history-capacity.server",5)},VolumeStreaming:{Enabled:Vn("volume-streaming.enabled",!0),DefaultServer:Vn("volume-streaming.server","https://ds.litemol.org"),CanStream:Vn("volume-streaming.can-stream",(t,e)=>t.models.length===1&&Et.probablyHasDensityMap(t.models[0])),EmdbHeaderServer:Vn("volume-streaming.emdb-header-server","https://files.wwpdb.org/pub/emdb/structures")},Viewport:{ShowExpand:Vn("viewer.show-expand-button",!0),ShowControls:Vn("viewer.show-controls-button",!0),ShowSettings:Vn("viewer.show-settings-button",!0),ShowSelectionMode:Vn("viewer.show-selection-model-button",!0),ShowAnimation:Vn("viewer.show-animation-button",!0),ShowTrajectoryControls:Vn("viewer.show-trajectory-controls",!0)},Download:{DefaultPdbProvider:Vn("download.default-pdb-provider","pdbe"),DefaultEmdbProvider:Vn("download.default-emdb-provider","pdbe")},Structure:{SizeThresholds:Vn("structure.size-thresholds",ue.DefaultSizeThresholds),DefaultRepresentationPreset:Vn("structure.default-representation-preset","auto"),DefaultRepresentationPresetParams:Vn("structure.default-representation-preset-params",{}),SaccharideCompIdMapType:Vn("structure.saccharide-comp-id-map-type","default")},Background:{Styles:Vn("background.styles",[])}},G2=class{get(e){return this._config.has(e)?this._config.get(e):e.defaultValue}set(e,r){this._config.set(e,r)}delete(e){this._config.delete(e)}constructor(e){this._config=new Map,e&&e.forEach(([r,n])=>this._config.set(r,n))}};function R8(t,e="x-ray"){if(!t)return e;let r=t.models[0];return op.is(r.sourceData)?Et.hasEmMap(r)?"em":Et.hasXrayMap(r)?"x-ray":Et.isFromEm(r)?"em":Et.isFromXray(r)?"x-ray":e:e}function afe(t){let e=[];if(!op.is(t.sourceData))return[t.entryId];let{db_id:r,db_name:n,content_type:o}=t.sourceData.data.db.pdbx_database_related;if(!n.isDefined)return[t.entryId];for(let i=0,a=n.rowCount;ic.primary))===null||i===void 0?void 0:i.level)!==null&&a!==void 0?a:l[0].level})}function cfe(t,e,r){return N(this,null,function*(){var n,o,i;r=r.toUpperCase();let a=yield t.fetch({url:`https://www.ebi.ac.uk/pdbe/api/emdb/entry/map/${r}`,type:"json"}).runInContext(e),s=a?.[r],l;return((i=(o=(n=s?.[0])===null||n===void 0?void 0:n.map)===null||o===void 0?void 0:o.contour_level)===null||i===void 0?void 0:i.value)!==void 0&&(l=+s[0].map.contour_level.value),l})}function B8(t,e,r){return N(this,null,function*(){var n;let o=yield t.fetch({url:`https://www.ebi.ac.uk/pdbe/api/pdb/entry/summary/${r}`,type:"json"}).runInContext(e),i=o?.[r],a=[];if(!((n=i?.[0])===null||n===void 0)&&n.related_structures){let s=i[0].related_structures.filter(l=>l.resource==="EMDB"&&l.relationship==="associated EM volume");if(!s.length)throw new Error(`No related EMDB entry found for '${r}'.`);a.push(...s.map(l=>l.accession))}else throw new Error(`No related EMDB entry found for '${r}'.`);return a})}var rr;(function(t){class e extends X.Create({name:"Root",typeClass:"Root"}){}t.Root=e;class r extends X.Create({name:"Category",typeClass:"Object"}){}t.Category=r;class n extends X.CreateBehavior({name:"Behavior"}){}t.Behavior=n,t.Categories={common:"Common",representation:"Representation",interaction:"Interaction","custom-props":"Custom Properties",misc:"Miscellaneous"},t.CreateCategory=Je.BuiltIn({name:"create-behavior-category",display:{name:"Behavior Category"},from:e,to:r,params:{label:g.Text("",{isHidden:!0})}})({apply({params:u}){return new r({},{label:u.label})}});let o=new Map;function i(u){return o.get(u.id)}t.getCategoryId=i;function a(u){let d=Je.CreateBuiltIn({name:u.name,display:u.display,from:[e],to:[n],params:u.params,apply({params:m},p){let h=u.label?u.label(m):{label:u.display.name,description:u.display.description};return new n(new u.ctor(p,m),h)},update({b:m,newParams:p}){return ie.create("Update Behavior",()=>N(this,null,function*(){return m.data.update?(yield m.data.update(p))?Se.UpdateResult.Updated:Se.UpdateResult.Unchanged:Se.UpdateResult.Unchanged}))},canAutoUpdate:u.canAutoUpdate});return o.set(d.id,u.category),d}t.create=a;function s(u,d){return class{register(){this.sub=u.subscribe(this.ctx,m=>d(m,this.ctx))}dispose(){this.sub&&this.sub.unsubscribe(),this.sub=void 0}constructor(m){this.ctx=m,this.sub=void 0}}}t.simpleCommandHandler=s;class l{subscribeCommand(d,m){this.subs.push(d.subscribe(this.ctx,m))}subscribeObservable(d,m){this.subs.push(d.subscribe(m))}track(d){this.subs.push(d)}dispose(){for(let d of this.subs)d.unsubscribe();this.subs=[]}update(d){return Cg(d,this.params)?!1:(this.params=d,!0)}constructor(d,m){this.ctx=d,this.params=m,this.subs=[]}}t.Handler=l;class c{subscribeCommand(d,m){this.subs.push(d.subscribe(this.plugin,m))}subscribeObservable(d,m){let p=d.subscribe(m);return this.subs.push(p),{unsubscribe:()=>{let h=this.subs.indexOf(p);h>=0&&(this.subs.splice(h,1),p.unsubscribe())}}}dispose(){for(let d of this.subs)d.unsubscribe();this.subs=[]}constructor(d,m){this.plugin=d,this.params=m,this.subs=[]}}t.WithSubscribers=c})(rr||(rr={}));var ov;(function(t){function e(a,s){return{key:a,data:s}}function r(a){return{entries:Ox(),capacity:Math.max(1,a)}}t.create=r;function n(a,s){for(let l=a.entries.first;l;l=l.next)if(l.value.key===s)return a.entries.remove(l),a.entries.addLast(l.value),l.value.data}t.get=n;function o(a,s,l){let c;if(a.entries.count>=a.capacity){let u=a.entries.first;c=u.value.data,a.entries.remove(u)}return a.entries.addLast(e(s,l)),c}t.set=o;function i(a,s){for(let l=a.entries.first;l;l=l.next)if(l.value.key===s){a.entries.remove(l);break}}t.remove=i})(ov||(ov={}));function Tn(){let t=(e,r)=>e.commands.dispatch(t,r||{});return t.subscribe=(e,r)=>e.commands.subscribe(t,r),t.id=vo.create22(),t}var j2=class{constructor(){this.subs=new Map,this.disposing=!1}subscribe(e,r){let n=this.subs.get(e.id);return n||(n=[],this.subs.set(e.id,n)),n.push(r),{unsubscribe:()=>{let o=this.subs.get(e.id);if(!o)return;let i=o.indexOf(r);if(!(i<0)){for(let a=i+1;a{if(this.disposing){o("disposed");return}if(!this.subs.get(e.id)){n();return}this.resolve({cmd:e,params:r,resolve:n,reject:o})})}dispose(){this.subs.clear()}resolve(e){return N(this,null,function*(){let r=this.subs.get(e.cmd.id);if(!r){e.resolve();return}try{for(let n of r)yield n(e.params);e.resolve()}catch(n){e.reject(n)}})}};var Re={State:{SetCurrentObject:Tn(),ApplyAction:Tn(),Update:Tn(),RemoveObject:Tn(),ToggleExpanded:Tn(),ToggleVisibility:Tn(),Snapshots:{Add:Tn(),Replace:Tn(),Move:Tn(),Remove:Tn(),Apply:Tn(),Clear:Tn(),Upload:Tn(),Fetch:Tn(),DownloadToFile:Tn(),OpenFile:Tn(),OpenUrl:Tn()}},Interactivity:{Object:{Highlight:Tn()},Structure:{Highlight:Tn(),Select:Tn()},ClearHighlights:Tn()},Layout:{Update:Tn()},Toast:{Show:Tn(),Hide:Tn()},Camera:{Reset:Tn(),SetSnapshot:Tn(),Focus:Tn(),OrientAxes:Tn(),ResetAxes:Tn()},Canvas3D:{SetSettings:Tn(),ResetSettings:Tn()}};var H2=class{constructor(e=!1){this.isRunning=!1,this.queue=[],this.counter=0,this.log=e}enqueue(e){this.log&&console.log("SingleAsyncQueue enqueue",this.counter),this.queue[0]={id:this.counter,func:e},this.counter++,this.run()}run(){return N(this,null,function*(){if(this.isRunning)return;let e=this.queue.pop();if(e){this.isRunning=!0;try{this.log&&console.log("SingleAsyncQueue run",e.id),yield e.func(),this.log&&console.log("SingleAsyncQueue complete",e.id)}finally{this.isRunning=!1,this.run()}}})}};var di=class extends X.CreateBehavior({name:"Volume Streaming"}){};(function(t){t.RootTag="volume-streaming-info";function e(l,c,u,d,m={}){var p,h,f,b;return g.Group({isoValue:xe.createIsoValueParam((p=m.isoValue)!==null&&p!==void 0?p:u,d),color:g.Color((h=m.color)!==null&&h!==void 0?h:c),wireframe:g.Boolean((f=m.wireframe)!==null&&f!==void 0?f:!1),opacity:g.Numeric((b=m.opacity)!==null&&b!==void 0?b:.3,{min:0,max:1,step:.01})},{label:l,isExpanded:!0})}let r={byteOffset:0,rate:1,sampleCount:[1,1,1],valuesInfo:[{mean:0,min:-1,max:1,sigma:.1},{mean:0,min:-1,max:1,sigma:.1}]};function n(l={}){let{data:c,defaultView:u,channelParams:d}=l,m=new Map;c&&c.entries.forEach(f=>m.set(f.dataId,f));let p=c?c.entries.map(f=>[f.dataId,f.dataId]):[],h=c?c.entries[0].dataId:"";return{entry:g.Mapped(h,p,f=>g.Group(o({entryData:m.get(f),defaultView:u,structure:c&&c.structure,channelParams:d})))}}t.createParams=n;function o(l){let{entryData:c,defaultView:u,structure:d,channelParams:m={}}=l,p=c||{kind:"em",header:{sampling:[r],availablePrecisions:[{precision:0,maxVoxels:0}]},emDefaultContourLevel:xe.IsoValue.relative(0)},h=d&&d.boundary.box||qe();return{view:g.MappedStatic(u||(p.kind==="em"?"auto":"selection-box"),{off:g.Group({}),box:g.Group({bottomLeft:g.Vec3(h.min),topRight:g.Vec3(h.max)},{description:"Static box defined by cartesian coords.",isFlat:!0}),"selection-box":g.Group({radius:g.Numeric(5,{min:0,max:50,step:.5},{description:"Radius in \u212B within which the volume is shown."}),bottomLeft:g.Vec3(y.create(0,0,0),{},{isHidden:!0}),topRight:g.Vec3(y.create(0,0,0),{},{isHidden:!0})},{description:"Box around focused element.",isFlat:!0}),"camera-target":g.Group({radius:g.Numeric(.5,{min:0,max:1,step:.05},{description:"Radius within which the volume is shown (relative to the field of view)."}),dynamicDetailLevel:i(p.header.availablePrecisions,0,{label:"Dynamic Detail"}),bottomLeft:g.Vec3(y.create(0,0,0),{},{isHidden:!0}),topRight:g.Vec3(y.create(0,0,0),{},{isHidden:!0})},{description:"Box around camera target.",isFlat:!0}),cell:g.Group({}),auto:g.Group({radius:g.Numeric(5,{min:0,max:50,step:.5},{description:"Radius in \u212B within which the volume is shown."}),selectionDetailLevel:i(p.header.availablePrecisions,6,{label:"Selection Detail"}),isSelection:g.Boolean(!1,{isHidden:!0}),bottomLeft:g.Vec3(h.min,{},{isHidden:!0}),topRight:g.Vec3(h.max,{},{isHidden:!0})},{description:"Box around focused element.",isFlat:!0})},{options:t.ViewTypeOptions,description:'Controls what of the volume is displayed. "Off" hides the volume alltogether. "Bounded box" shows the volume inside the given box. "Around Interaction" shows the volume around the focused element/atom. "Whole Structure" shows the volume for the whole structure.'}),detailLevel:i(p.header.availablePrecisions,3),channels:p.kind==="em"?g.Group({em:e("EM",ce(6524815),p.emDefaultContourLevel||xe.IsoValue.relative(1),p.header.sampling[0].valuesInfo[0],m.em)},{isFlat:!0}):g.Group({"2fo-fc":e("2Fo-Fc",ce(3367602),xe.IsoValue.relative(1.5),p.header.sampling[0].valuesInfo[0],m["2fo-fc"]),"fo-fc(+ve)":e("Fo-Fc(+ve)",ce(3390259),xe.IsoValue.relative(3),p.header.sampling[0].valuesInfo[1],m["fo-fc(+ve)"]),"fo-fc(-ve)":e("Fo-Fc(-ve)",ce(12268339),xe.IsoValue.relative(-3),p.header.sampling[0].valuesInfo[1],m["fo-fc(-ve)"])},{isFlat:!0})}}t.createEntryParams=o;function i(l,c,u){return g.Select(Math.min(c,l.length-1),l.map((d,m)=>[m,`${m+1} [ ${Math.pow(d.maxVoxels,1/3)|0}^3 cells ]`]),w({description:"Determines the maximum number of voxels. Depending on the size of the volume options are in the range from 1 (0.52M voxels) to 7 (25.17M voxels)."},u))}function a(l){return{entry:{name:l.entry.name,params:{detailLevel:l.entry.params.detailLevel,channels:l.entry.params.channels,view:{name:l.entry.params.view.name,params:w({},l.entry.params.view.params)}}}}}t.copyParams=a,t.ViewTypeOptions=[["off","Off"],["box","Bounded Box"],["selection-box","Around Focus"],["camera-target","Around Camera"],["cell","Whole Structure"],["auto","Auto"]],t.ChannelTypeOptions=[["em","em"],["2fo-fc","2fo-fc"],["fo-fc(+ve)","fo-fc(+ve)"],["fo-fc(-ve)","fo-fc(-ve)"]];class s extends rr.WithSubscribers{get info(){return this.infoMap.get(this.params.entry.name)}queryData(c){return N(this,null,function*(){let u=kf(this.data.serverUrl,`${this.info.kind}/${this.info.dataId.toLowerCase()}`);if(c){let{min:v,max:x}=c;u+=`/box/${v.map(S=>Math.round(1e3*S)/1e3).join(",")}/${x.map(S=>Math.round(1e3*S)/1e3).join(",")}`}else u+="/cell";let d=this.params.entry.params.detailLevel;this.params.entry.params.view.name==="auto"&&this.params.entry.params.view.params.isSelection&&(d=this.params.entry.params.view.params.selectionDetailLevel),this.params.entry.params.view.name==="camera-target"&&c&&(d=this.decideDetail(c,this.params.entry.params.view.params.dynamicDetailLevel)),u+=`?detail=${d}`;let m=ov.get(this.cache,u);if(m)return m.data;let p=Wr.getUrlAsset(this.plugin.managers.asset,u),h=yield this.plugin.runTask(this.plugin.managers.asset.resolve(p,"binary")),f=yield this.parseCif(h.data);if(!f)return;let b=ov.set(this.cache,u,{data:f,asset:h});return b&&b.asset.dispose(),f})}parseCif(c){return N(this,null,function*(){let u=yield this.plugin.runTask(lc.parseBinary(c));if(u.isError){this.plugin.log.error("VolumeStreaming, parsing CIF: "+u.toString());return}if(u.result.blocks.length<2){this.plugin.log.error("VolumeStreaming: Invalid data.");return}let d={};for(let m=1;m{!X.Molecule.Structure.is(u.obj)||!z.Loci.is(this.lastLoci)||this.lastLoci.structure===u.obj.data&&(this.lastLoci=St)}),this.subscribeObservable(this.plugin.state.events.object.updated,u=>{!X.Molecule.Structure.is(u.oldObj)||!z.Loci.is(this.lastLoci)||this.lastLoci.structure===u.oldObj.data&&(this.lastLoci=St)}),this.subscribeObservable(this.plugin.managers.structure.focus.behaviors.current,u=>{if(!this.plugin.state.data.tree.children.has(this.ref))return;let d=u?u.loci:St;switch(this.params.entry.params.view.name){case"auto":this.updateAuto(d);break;case"selection-box":this.updateSelectionBox(d);break;default:this.lastLoci=d;break}})}unregister(){let c=this.cache.entries.first;for(;c;)c.value.data.asset.dispose(),c=c.next}isCameraTargetSame(c,u){if(!c||!u)return!1;let d=y.equals(c.target,u.target),m=y.squaredDistance(c.target,c.position),p=y.squaredDistance(u.target,u.position),h=Math.abs(m-p)/m<.001;return d&&h}cameraTargetDistance(c){return y.distance(c.target,c.position)}getBoxFromLoci(c){var u,d,m;if(st.isEmpty(c)||Wn(c))return qe();let p=this.plugin.helpers.substructureParent.get(c.structure,!0);if(!p)return qe();let h=this.getStructureRoot();if(!h||((u=h.obj)===null||u===void 0?void 0:u.data)!==((d=p.obj)===null||d===void 0?void 0:d.data))return qe();let f=LT.get((m=h.obj)===null||m===void 0?void 0:m.data.models[0]);f&&W.invert(this._invTransform,f);let b=z.Loci.extendToWholeResidues(c),v=z.Loci.getBoundary(b,f&&!Number.isNaN(this._invTransform[0])?this._invTransform:void 0).box;return z.Loci.size(b)===1&&qe.expand(v,v,y.create(1,1,1)),v}updateAuto(c){this.updateQueue.enqueue(()=>N(this,null,function*(){this.lastLoci=c,Wn(c)?yield this.updateParams(this.info.kind==="x-ray"?this.data.structure.boundary.box:void 0,!1):yield this.updateParams(this.getBoxFromLoci(c),!0)}))}updateSelectionBox(c){this.updateQueue.enqueue(()=>N(this,null,function*(){st.areEqual(this.lastLoci,c)?this.lastLoci=St:this.lastLoci=c;let u=this.getBoxFromLoci(this.lastLoci);yield this.updateParams(u)}))}updateCameraTarget(c){this.updateQueue.enqueue(()=>N(this,null,function*(){var u,d,m;let p=(u=this.plugin.canvas3d)===null||u===void 0?void 0:u.props.camera.manualReset;try{p||(d=this.plugin.canvas3d)===null||d===void 0||d.setProps({camera:{manualReset:!0}});let h=this.boxFromCameraTarget(c,!0);yield this.updateParams(h)}finally{p||(m=this.plugin.canvas3d)===null||m===void 0||m.setProps({camera:{manualReset:p}})}}))}boxFromCameraTarget(c,u){var d;let m=c.target,p=this.cameraTargetDistance(c),f=Math.tan(.5*c.fov)*p,b=(d=this.plugin.canvas3d)===null||d===void 0?void 0:d.camera.viewport;b&&b.width>b.height&&(f*=b.width/b.height);let v=this.params.entry.params.view.name==="camera-target"?this.params.entry.params.view.params.radius:.5;f*=v;let x,S,T;if(u){let E=y.zero();qe.size(E,this.data.structure.boundary.box),x=Math.min(f,.5*E[0]),S=Math.min(f,.5*E[1]),T=Math.min(f,.5*E[2])}else x=S=T=f;return qe.create(y.create(m[0]-x,m[1]-S,m[2]-T),y.create(m[0]+x,m[1]+S,m[2]+T))}decideDetail(c,u){let d=this.info.kind==="x-ray"?qe.volume(this.data.structure.boundary.box):this.info.header.spacegroup.size.reduce((b,v)=>b*v,1),p=qe.volume(c)/d,h=this.info.header.availablePrecisions.length-1,f=u;for(;p<=.5&&fthis.updateCameraTarget(f))),d=this.boxFromCameraTarget(this.plugin.canvas3d.camera.getSnapshot(),!0);break;case"cell":d=this.info.kind==="x-ray"?this.data.structure.boundary.box:void 0;break;case"auto":if(d=c.entry.params.view.params.isSelection||this.info.kind==="x-ray"?qe.create(y.clone(c.entry.params.view.params.bottomLeft),y.clone(c.entry.params.view.params.topRight)):void 0,d&&(m=qe.volume(d)<1e-4,c.entry.params.view.params.isSelection)){let f=c.entry.params.view.params.radius;qe.expand(d,d,y.create(f,f,f))}break}let p=m?{}:yield this.queryData(d);if(!p)return!1;let h=c.entry.params.channels;return this.info.kind==="x-ray"?(this.channels["2fo-fc"]=this.createChannel(p["2FO-FC"]||xe.One,h["2fo-fc"],this.info.header.sampling[0].valuesInfo[0]),this.channels["fo-fc(+ve)"]=this.createChannel(p["FO-FC"]||xe.One,h["fo-fc(+ve)"],this.info.header.sampling[0].valuesInfo[1]),this.channels["fo-fc(-ve)"]=this.createChannel(p["FO-FC"]||xe.One,h["fo-fc(-ve)"],this.info.header.sampling[0].valuesInfo[1])):this.channels.em=this.createChannel(p.EM||xe.One,h.em,this.info.header.sampling[0].valuesInfo[0]),!0})}createChannel(c,u,d){let m=u;return{data:c,color:m.color,wireframe:m.wireframe,opacity:m.opacity,isoValue:m.isoValue.kind==="relative"?m.isoValue:xe.IsoValue.toRelative(m.isoValue,d)}}getDescription(){return this.params.entry.params.view.name==="selection-box"?"Selection":this.params.entry.params.view.name==="camera-target"?"Camera":this.params.entry.params.view.name==="box"?"Static Box":this.params.entry.params.view.name==="cell"?"Cell":""}constructor(c,u){super(c,{}),this.plugin=c,this.data=u,this.cache=ov.create(25),this.params={},this.lastLoci=St,this.ref="",this.cameraTargetObservable=this.plugin.canvas3d.didDraw.pipe(qc(500,void 0,{leading:!0,trailing:!0}),hz(()=>{var d;return(d=this.plugin.canvas3d)===null||d===void 0?void 0:d.camera.getSnapshot()}),yz((d,m)=>this.isCameraTargetSame(d,m)),d0(d=>d!==void 0)),this.cameraTargetSubscription=void 0,this.channels={},this._invTransform=W(),this.infoMap=new Map,this.data.entries.forEach(d=>this.infoMap.set(d.dataId,d)),this.updateQueue=new H2}}t.Behavior=s})(di||(di={}));var B3={};ua(B3,{ClippingStructureRepresentation3DFromBundle:()=>u0e,ClippingStructureRepresentation3DFromScript:()=>c0e,EmissiveStructureRepresentation3DFromBundle:()=>a0e,EmissiveStructureRepresentation3DFromScript:()=>i0e,ExplodeStructureRepresentation3D:()=>Jye,ModelUnitcell3D:()=>f0e,OverpaintStructureRepresentation3DFromBundle:()=>r0e,OverpaintStructureRepresentation3DFromScript:()=>t0e,ShapeRepresentation3D:()=>p0e,SpinStructureRepresentation3D:()=>e0e,StructureBoundingBox3D:()=>h0e,StructureRepresentation3D:()=>Tv,StructureSelectionsAngle3D:()=>y0e,StructureSelectionsDihedral3D:()=>v0e,StructureSelectionsDistance3D:()=>g0e,StructureSelectionsLabel3D:()=>b0e,StructureSelectionsOrientation3D:()=>x0e,StructureSelectionsPlane3D:()=>S0e,SubstanceStructureRepresentation3DFromBundle:()=>l0e,SubstanceStructureRepresentation3DFromScript:()=>s0e,ThemeStrengthRepresentation3D:()=>d0e,TransparencyStructureRepresentation3DFromBundle:()=>o0e,TransparencyStructureRepresentation3DFromScript:()=>n0e,UnwindStructureAssemblyRepresentation3D:()=>Zye,VolumeRepresentation3D:()=>m0e,VolumeRepresentation3DHelpers:()=>hu});var q2=ce(13421772),ufe="Assigns colors according to the Symbol Nomenclature for Glycans (SNFG).",O8={};function dfe(t){return O8}function F8(t,e){let r;if(t.structure){let{elements:n,getElementIndices:o}=t.structure.carbohydrates,i=(a,s)=>{if(!Pe.isAtomic(a))return q2;let l=o(a,s);return l.length>0?n[l[0]].component.color:q2};r=(a,s)=>s?zz.Secondary:z.Location.is(a)?i(a.unit,a.element):ze.isLocation(a)?i(a.aUnit,a.aUnit.elements[a.aIndex]):q2}else r=()=>q2;return{factory:F8,granularity:"group",color:r,props:e,description:ufe,legend:vs(Gz)}}var N8={name:"carbohydrate-symbol",label:"Carbohydrate Symbol",category:zt.Residue,factory:F8,getParams:dfe,defaultValues:g.getDefaultValues(O8),isApplicable:t=>!!t.structure&&t.structure.models.some(e=>Et.hasCarbohydrate(e))};var zM={hue:g.Interval([1,360],{min:0,max:360,step:1}),chroma:g.Interval([40,70],{min:0,max:100,step:1}),luminance:g.Interval([15,85],{min:0,max:100,step:1}),sort:g.Select("contrast",g.arrayToOptions(["none","contrast"]),{description:"no sorting leaves colors approximately ordered by hue"}),clusteringStepCount:g.Numeric(50,{min:10,max:200,step:1},{isHidden:!0}),minSampleCount:g.Numeric(800,{min:100,max:5e3,step:100},{isHidden:!0}),sampleCountFactor:g.Numeric(5,{min:1,max:100,step:1},{isHidden:!0})},iv=2,Hg=[0,0,0],qg=[0,0,0];function mfe(t,e){return em.toHcl(Hg,t),em.fromColor(qg,em.toColor(t)),Hg[0]>=e.hue[0]&&Hg[0]<=e.hue[1]&&Hg[1]>=e.chroma[0]&&Hg[1]<=e.chroma[1]&&Hg[2]>=e.luminance[0]&&Hg[2]<=e.luminance[1]&&qg[0]>=t[0]-iv&&qg[0]<=t[0]+iv&&qg[1]>=t[1]-iv&&qg[1]<=t[1]+iv&&qg[2]>=t[2]-iv&&qg[2]<=t[2]+iv}function pfe(t){let e=t.slice(0),r=[e.shift()];for(;e.length>0;){let n=r[r.length-1],o=0,i=Number.NEGATIVE_INFINITY;for(let a=0;ai&&(i=s,o=a)}r.push(e.splice(o,1)[0])}return r}function ffe(t,e){let r=new Map,n=Math.ceil(Math.cbrt(t)),o=TA(),i=Math.max((e.hue[1]-e.hue[0])/n,1),a=Math.max((e.chroma[1]-e.chroma[0])/n,1),s=Math.max((e.luminance[1]-e.luminance[0])/n,1);for(let l=e.hue[0]+i/2;l<=e.hue[1];l+=i)for(let c=e.chroma[0]+a/2;c<=e.chroma[1];c+=a)for(let u=e.luminance[0]+s/2;u<=e.luminance[1];u+=s){let d=em.fromHcl(em(),TA.set(o,l,c,u));mfe(d,e)&&r.set(em.toColor(d),d)}return Array.from(r.values())}function V8(t,e){let r=1/0,n=0;for(let o=0;o=t));l+=a);for(let l=1;l<=r.clusteringStepCount;++l){let c=$s(i),u=$s(n);for(let m=0;mem.toColor(l))}var G8={type:"generate",colorList:"red-yellow-blue"};function Dn(t={}){let e=w(w({},G8),t);return{palette:g.MappedStatic(e.type,{colors:g.Group({list:g.ColorList(e.colorList)},{isFlat:!0}),generate:g.Group(U(w({},zM),{maxCount:g.Numeric(75,{min:1,max:250,step:1})}),{isFlat:!0})},{options:[["colors","Color List"],["generate","Generate Distinct"]]})}}var xQe=g.getDefaultValues(Dn()),U8={valueLabel:t=>`${t+1}`,minLabel:"Start",maxLabel:"End"};function zn(t,e,r={}){var n;let o,i;if(e.palette.name==="colors"&&e.palette.params.list.kind==="interpolate"){let{list:a}=e.palette.params,s=[0,t-1],{minLabel:l,maxLabel:c}=w(w({},U8),r),u=a.colors;u.length===0&&(u=Za(G8.colorList).list);let d=ki.create({listOrName:u,domain:s,minLabel:l,maxLabel:c});i=d.legend,o=d.color}else{let a;e.palette.name==="colors"?(a=e.palette.params.list.colors.map(u=>Array.isArray(u)?u[0]:u),a.length===0&&(a=Za("dark-2").list.map(u=>Array.isArray(u)?u[0]:u))):(t=Math.min(t,e.palette.params.maxCount),a=z8(t,e.palette.params));let s=(n=r.valueLabel)!==null&&n!==void 0?n:U8.valueLabel,l=a.length,c=[];for(let u=0;ua[u%l]}return{color:o,legend:i}}var hfe="many-distinct",j8=ce(16448250),gfe="Gives every chain a color based on its `asym_id` value.",Mf=w({asymId:g.Select("auth",g.arrayToOptions(["auth","label"]))},Dn({type:"colors",colorList:hfe}));function yfe(t){var e;let r=g.clone(Mf);return!((e=t.structure)===null||e===void 0)&&e.models.some(n=>n.coarseHierarchy.isDefined)&&(r.asymId.defaultValue="label"),r}function vfe(t,e){switch(t.kind){case 0:return e==="auth"?Ne.chain.auth_asym_id:Ne.chain.label_asym_id;case 1:case 2:return Ne.coarse.asym_id}}function H8(t,e){let r=vfe(t.unit,e)(t);return t.structure.root.models.length>1?q8(t.unit.model,r):r}function q8(t,e){return`${e}|${(Et.Index.get(t).value||0)+1}`}function bfe(t,e){let r=new Map;for(let n of t.models){let o=Et.AsymIdOffset.get(n).value,i=(e==="auth"?o?.auth:o?.label)||0,a=0;n.properties.structAsymMap.forEach(({auth_id:s},l)=>{let c=e==="auth"?s:l,u=t.models.length>1?q8(n,c):c;r.has(u)||(r.set(u,a+i),++a)})}return r}function Rf(t,e){let r,n;if(t.structure){let o=z.Location.create(t.structure.root),i=bfe(t.structure.root,e.asymId),a=Array.from(i.keys()),s=c=>a[c],l=zn(i.size,e,{valueLabel:s});n=l.legend,r=c=>{let u;if(z.Location.is(c)){let d=H8(c,e.asymId);u=i.get(d)}else if(ze.isLocation(c)){o.unit=c.aUnit,o.element=c.aUnit.elements[c.aIndex];let d=H8(o,e.asymId);u=i.get(d)}return u===void 0?j8:l.color(u)}}else r=()=>j8;return{factory:Rf,granularity:"group",color:r,props:e,description:gfe,legend:n}}var W2={name:"chain-id",label:"Chain Id",category:zt.Chain,factory:Rf,getParams:yfe,defaultValues:g.getDefaultValues(Mf),isApplicable:t=>!!t.structure};var W8=ce(13421772),xfe="Gives every element (atom or coarse sphere/gaussian) a unique color based on the position (index) of the element in the list of elements in the structure.",X8=w({},Dn({type:"colors",colorList:"red-yellow-blue"}));function Sfe(t){return X8}function Y8(t,e){let r,n;if(t.structure){let{units:o}=t.structure.root,i=o.length,a=new Map,s=new Map,l=0;for(let u=0;u{if(z.Location.is(u)){let d=s.get(u.unit.id),m=we.findPredecessorIndex(o[d].elements,u.element);return c.color(a.get(d)+m)}else if(ze.isLocation(u)){let d=s.get(u.aUnit.id),m=we.findPredecessorIndex(o[d].elements,u.aUnit.elements[u.aIndex]);return c.color(a.get(d)+m)}return W8}}else r=()=>W8;return{factory:Y8,granularity:"groupInstance",preferSmoothing:!0,color:r,props:e,description:xfe,legend:n}}var Q8={name:"element-index",label:"Element Index",category:zt.Atom,factory:Y8,getParams:Sfe,defaultValues:g.getDefaultValues(X8),isApplicable:t=>!!t.structure};function Lf(t){let e={};return ro(t,(r,n)=>{e[n]=g.Color(t[n])}),e}var Cfe="many-distinct",K8=ce(13421772),Tfe="Assigns a color based on the operator name of a transformed chain.",X2=w({},Dn({type:"colors",colorList:Cfe}));function wfe(t){return g.clone(X2)}function _fe(t){let e=new Map;for(let r=0,n=t.units.length;ri[l],s=zn(o.size,e,{valueLabel:a});n=s.legend,r=l=>{let c;if(z.Location.is(l)){let u=l.unit.conformation.operator.name;c=o.get(u)}else if(ze.isLocation(l)){let u=l.aUnit.conformation.operator.name;c=o.get(u)}return c===void 0?K8:s.color(c)}}else r=()=>K8;return{factory:Y2,granularity:"instance",color:r,props:e,description:Tfe,legend:n}}var av={name:"operator-name",label:"Operator Name",category:zt.Symmetry,factory:Y2,getParams:wfe,defaultValues:g.getDefaultValues(X2),isApplicable:t=>!!t.structure};var Pfe="many-distinct",$8=ce(16448250),Efe="Gives every chain a color based on its `label_entity_id` value.",Bf=w({},Dn({type:"colors",colorList:Pfe}));function Ife(t){return g.clone(Bf)}function D1(t,e){return`${t}|${e}`}function Dfe(t){let e=new Map;for(let r=0,n=t.models.length;ra[c],l=zn(i.size,e,{valueLabel:s});n=l.legend,r=c=>{let u;if(z.Location.is(c)){let d=Z8(c),m=c.structure.models.indexOf(c.unit.model),p=D1(d,m);u=i.get(p)}else if(ze.isLocation(c)){o.unit=c.aUnit,o.element=c.aUnit.elements[c.aIndex];let d=Z8(o),m=o.structure.models.indexOf(o.unit.model),p=D1(d,m);u=i.get(p)}return u===void 0?$8:l.color(u)}}else r=()=>$8;return{factory:Of,granularity:"group",color:r,props:e,description:Efe,legend:n}}var J8={name:"entity-id",label:"Entity Id",category:zt.Chain,factory:Of,getParams:Ife,defaultValues:g.getDefaultValues(Bf),isApplicable:t=>!!t.structure};var GM="dark-2",Q2=ce(16448250),Afe="Gives ranges of a polymer chain a color based on the entity source it originates from (e.g. gene, plasmid, organism).",Ff=w({},Dn({type:"colors",colorList:GM}));function kfe(t){let e=g.clone(Ff);return t.structure&&t9(t.structure.root.models).srcKeySerialMap.size>tm[GM].list.length&&(e.palette.defaultValue.name="colors",e.palette.defaultValue.params=U(w({},e.palette.defaultValue.params),{list:{kind:"interpolate",colors:Za(GM).list}})),e}function e9(t,e){return`${t}|${e}`}function Mfe(t,e,r,n,o,i){return`${t}|${e}|${r}|${i||o||n}`}function UM(t,e,r,n,o,i,a,s){let{entity_id:l,pdbx_src_id:c,pdbx_beg_seq_num:u,pdbx_end_seq_num:d}=o;for(let m=0,p=o._rowCount;m{let n=r.split("|"),o=n[2];return`${iU(n[3])?`Unnamed ${++e}`:n[3]}${o?` (${o})`:""}`})}function Nf(t,e){let r,n;if(t.structure){let o=z.Location.create(t.structure),{models:i}=t.structure.root,{seqToSrcByModelEntity:a,srcKeySerialMap:s}=t9(i),l=Rfe(s),c=m=>l[m],u=zn(s.size,e,{valueLabel:c});n=u.legend;let d=m=>{let p=i.indexOf(m.unit.model),h=Ne.entity.id(m),f=e9(p,h),b=a.get(f);if(b){let v=b[Ne.residue.label_seq_id(m)-1]-1;return v===-1?Q2:u.color(v)}else return Q2};r=m=>z.Location.is(m)?d(m):ze.isLocation(m)?(o.unit=m.aUnit,o.element=m.aUnit.elements[m.aIndex],d(o)):Q2}else r=()=>Q2;return{factory:Nf,granularity:"group",color:r,props:e,description:Afe,legend:n}}var r9={name:"entity-source",label:"Entity Source",category:zt.Chain,factory:Nf,getParams:kfe,defaultValues:g.getDefaultValues(Ff),isApplicable:t=>!!t.structure};var n9=ce(13421772),Lfe="Gives every model a unique color based on its index.",Vf=w({},Dn({type:"colors",colorList:"many-distinct"}));function Bfe(t){return g.clone(Vf)}function zf(t,e){var r;let n,o;if(t.structure){let i=((r=Et.MaxIndex.get(t.structure.models[0]).value)!==null&&r!==void 0?r:-1)+1,a=zn(i,e);o=a.legend,n=s=>z.Location.is(s)?a.color(Et.Index.get(s.unit.model).value||0):ze.isLocation(s)?a.color(Et.Index.get(s.aUnit.model).value||0):n9}else n=()=>n9;return{factory:zf,granularity:"instance",color:n,props:e,description:Lfe,legend:o}}var o9={name:"model-index",label:"Model Index",category:zt.Chain,factory:zf,getParams:Bfe,defaultValues:g.getDefaultValues(Vf),isApplicable:t=>!!t.structure&&t.structure.elementCount>0};var i9=ce(13421772),Ofe="Gives every structure a unique color based on its index.",Uf=w({},Dn({type:"colors",colorList:"many-distinct"}));function Ffe(t){return g.clone(Uf)}function Gf(t,e){var r;let n,o;if(t.structure){let i=((r=ue.MaxIndex.get(t.structure).value)!==null&&r!==void 0?r:-1)+1,a=zn(i,e);o=a.legend,n=s=>z.Location.is(s)?a.color(ue.Index.get(s.structure).value||0):ze.isLocation(s)?a.color(ue.Index.get(s.aStructure).value||0):i9}else n=()=>i9;return{factory:Gf,granularity:"instance",color:n,props:e,description:Ofe,legend:o}}var a9={name:"structure-index",label:"Structure Index",category:zt.Chain,factory:Gf,getParams:Ffe,defaultValues:g.getDefaultValues(Uf),isApplicable:t=>!!t.structure&&t.structure.elementCount>0};var jM="dark-2",s9=ce(13421772),Nfe="Gives every chain instance (single chain or collection of single elements) a unique color based on the position (index) of the chain in the list of chains in the structure.",K2=w({},Dn({type:"colors",colorList:jM}));function Vfe(t){let e=g.clone(K2);return t.structure&&t.structure.root.units.length>tm[jM].list.length&&(e.palette.defaultValue.name="colors",e.palette.defaultValue.params=U(w({},e.palette.defaultValue.params),{list:{kind:"interpolate",colors:Za(jM).list}})),e}function $2(t,e){let r,n;if(t.structure){let{units:o}=t.structure.root,i=zn(o.length,e);n=i.legend;let a=new Map;for(let s=0,l=o.length;sz.Location.is(s)?a.get(s.unit.id):ze.isLocation(s)?a.get(s.aUnit.id):s9}else r=()=>s9;return{factory:$2,granularity:"instance",color:r,props:e,description:Nfe,legend:n}}var l9={name:"unit-index",label:"Chain Instance",category:zt.Chain,factory:$2,getParams:Vfe,defaultValues:g.getDefaultValues(K2),isApplicable:t=>!!t.structure};var c9={H:16777215,D:16777152,T:16777120,HE:14286847,LI:13402367,BE:12779264,B:16758197,C:9474192,N:3166456,O:16715021,F:9494608,NE:11789301,NA:11230450,MG:9109248,AL:12560038,SI:1578e4,P:16744448,S:16777008,CL:2093087,AR:8442339,K:9388244,CA:4062976,SC:15132390,TI:12567239,V:10921643,CR:9083335,MN:10255047,FE:14706227,CO:15765664,NI:5296208,CU:13140019,ZN:8224944,GA:12750735,GE:6721423,AS:12419299,SE:16752896,BR:10889513,KR:6076625,RB:7351984,SR:65280,Y:9764863,ZR:9756896,NB:7586505,MO:5551541,TC:3907230,RU:2396047,RH:687500,PD:27013,AG:12632256,CD:16767375,IN:10909043,SN:6717568,SB:10380213,TE:13924864,I:9699476,XE:9699476,CS:5707663,BA:51456,LA:7394559,CE:16777159,PR:14286791,ND:13107143,PM:10747847,SM:9437127,EU:6422471,GD:4587463,TB:3211207,DY:2097095,HO:65436,ER:58997,TM:54354,YB:48952,LU:43812,HF:5096191,TA:5089023,W:2200790,RE:2522539,OS:2516630,IR:1528967,PT:13684960,AU:16765219,HG:12105936,TL:10900557,PB:5724513,BI:10375093,PO:11230208,AT:7688005,RN:4358806,FR:4325478,RA:32e3,AC:7384058,TH:47871,PA:41471,U:36863,NP:33023,PU:27647,AM:5528818,CM:7888099,BK:9064419,CF:10565332,ES:11739092,FM:11739066,MD:11734438,NO:12389767,LR:13041766,RF:13369433,DB:13697103,SG:14221381,BH:14680120,HS:15073326,MT:15400998,DS:16777215,RG:16777215,CN:16777215,UUT:16777215,FL:16777215,UUP:16777215,LV:16777215,UUH:16777215},u9=ce(16777215),zfe="Assigns a color to every atom according to its chemical element.",Z2={carbonColor:g.MappedStatic("chain-id",{"chain-id":g.Group(Mf),"unit-index":g.Group(K2,{label:"Chain Instance"}),"entity-id":g.Group(Bf),"entity-source":g.Group(Ff),"operator-name":g.Group(X2),"model-index":g.Group(Vf),"structure-index":g.Group(Uf),uniform:g.Group(ap),"element-symbol":g.EmptyGroup()},{description:"Use chain-id coloring for carbon atoms."}),saturation:g.Numeric(0,{min:-6,max:6,step:.1}),lightness:g.Numeric(.2,{min:-6,max:6,step:.1}),colors:g.MappedStatic("default",{default:g.EmptyGroup(),custom:g.Group(Lf(c9))})};function Ufe(t){return g.clone(Z2)}function Gfe(t,e){let r=t[e];return r===void 0?u9:r}function jfe(t,e){switch(e.name){case"chain-id":return Rf(t,e.params);case"unit-index":return $2(t,e.params);case"entity-id":return Of(t,e.params);case"entity-source":return Nf(t,e.params);case"operator-name":return Y2(t,e.params);case"model-index":return zf(t,e.params);case"structure-index":return Gf(t,e.params);case"uniform":return ud(t,e.params);case"element-symbol":return;default:ur(e)}}function J2(t,e){var r;let n=of(e.colors.name==="default"?c9:e.colors.params,e.saturation,e.lightness),o=(r=jfe(t,e.carbonColor))===null||r===void 0?void 0:r.color;function i(l,c){return o&&l==="C"?o(c,!1):Gfe(n,l)}function a(l){if(z.Location.is(l)){if(Pe.isAtomic(l.unit)){let{type_symbol:c}=l.unit.model.atomicHierarchy.atoms;return i(c.value(l.element),l)}}else if(ze.isLocation(l)&&Pe.isAtomic(l.aUnit)){let{type_symbol:c}=l.aUnit.model.atomicHierarchy.atoms,u=c.value(l.aUnit.elements[l.aIndex]);return i(u,l)}return u9}let s=e.carbonColor.name==="operator-name"||e.carbonColor.name==="unit-index"?"groupInstance":"group";return{factory:J2,granularity:s,preferSmoothing:!0,color:a,props:e,description:zfe,legend:vs(Object.keys(n).map(l=>[l,n[l]]))}}var d9={name:"element-symbol",label:"Element Symbol",category:zt.Atom,factory:J2,getParams:Ufe,defaultValues:g.getDefaultValues(Z2),isApplicable:t=>!!t.structure};var p9={water:3697840,ion:15729279,protein:12496596,RNA:16629894,DNA:12540695,PNA:4367514,saccharide:8374655},HM=ce(16777113),Hfe="Assigns a color based on the molecule type of a residue.",sv={saturation:g.Numeric(0,{min:-6,max:6,step:.1}),lightness:g.Numeric(0,{min:-6,max:6,step:.1}),colors:g.MappedStatic("default",{default:g.EmptyGroup(),custom:g.Group(Lf(p9))})};function qfe(t){return sv}function m9(t,e,r){switch(w0(e,r)){case 2:return t.water;case 3:return t.ion;case 5:return t.protein;case 6:return t.RNA;case 7:return t.DNA;case 8:return t.PNA;case 9:return t.saccharide}return HM}function lv(t,e){let r=of(e.colors.name==="default"?p9:e.colors.params,e.saturation,e.lightness);function n(o){return z.Location.is(o)?m9(r,o.unit,o.element):ze.isLocation(o)?m9(r,o.aUnit,o.aUnit.elements[o.aIndex]):HM}return{factory:lv,granularity:"group",color:n,props:e,description:Hfe,legend:vs(Object.keys(r).map(o=>[o,r[o]]).concat([["Other/unknown",HM]]))}}var f9={name:"molecule-type",label:"Molecule Type",category:zt.Residue,factory:lv,getParams:qfe,defaultValues:g.getDefaultValues(sv),isApplicable:t=>!!t.structure};var qM="dark-2",h9=ce(16448250),Wfe="Gives every polymer chain a color based on its `asym_id` value.",y9=w({},Dn({type:"colors",colorList:qM}));function Xfe(t){let e=g.clone(y9);return t.structure&&v9(t.structure.root).size>tm[qM].list.length&&(e.palette.defaultValue.name="colors",e.palette.defaultValue.params=U(w({},e.palette.defaultValue.params),{list:{kind:"interpolate",colors:Za(qM).list}})),e}function g9(t){switch(t.kind){case 0:return Ne.chain.label_asym_id;case 1:case 2:return Ne.coarse.asym_id}}function v9(t){let e=new Map;for(let r=0,n=t.unitSymmetryGroups.length;ra[c],l=zn(i.size,e,{valueLabel:s});n=l.legend,r=c=>{let u;if(z.Location.is(c)){let d=g9(c.unit);u=i.get(d(c))}else if(ze.isLocation(c)){let d=g9(c.aUnit);o.unit=c.aUnit,o.element=c.aUnit.elements[c.aIndex],u=i.get(d(o))}return u===void 0?h9:l.color(u)}}else r=()=>h9;return{factory:b9,granularity:"group",color:r,props:e,description:Wfe,legend:n}}var x9={name:"polymer-id",label:"Polymer Chain Id",category:zt.Chain,factory:b9,getParams:Xfe,defaultValues:g.getDefaultValues(y9),isApplicable:t=>!!t.structure};var WM="dark-2",S9=ce(13421772),Yfe="Gives every polymer chain instance a unique color based on the position (index) of the polymer in the list of polymers in the structure.",C9=w({},Dn({type:"colors",colorList:WM}));function Qfe(t){let e=g.clone(C9);return t.structure&&T9(t.structure.root)>tm[WM].list.length&&(e.palette.defaultValue.name="colors",e.palette.defaultValue.params=U(w({},e.palette.defaultValue.params),{list:{kind:"interpolate",colors:Za(WM).list}})),e}function T9(t){let e=0,{units:r}=t;for(let n=0,o=r.length;n0&&++e;return e}function w9(t,e){let r,n;if(t.structure){let o=zn(T9(t.structure.root),e);n=o.legend;let{units:i}=t.structure.root,a=new Map;for(let s=0,l=0,c=i.length;s0&&(a.set(i[s].id,o.color(l)),++l);r=s=>{let l;return z.Location.is(s)?l=a.get(s.unit.id):ze.isLocation(s)&&(l=a.get(s.aUnit.id)),l!==void 0?l:S9}}else r=()=>S9;return{factory:w9,granularity:"instance",color:r,props:e,description:Yfe,legend:n}}var _9={name:"polymer-index",label:"Polymer Chain Instance",category:zt.Chain,factory:w9,getParams:Qfe,defaultValues:g.getDefaultValues(C9),isApplicable:t=>!!t.structure};var I9={ALA:9240460,ARG:124,ASN:16743536,ASP:10485826,CYS:16777072,GLN:16731212,GLU:6684672,GLY:15658734,HIS:7368959,ILE:19456,LEU:4546117,LYS:4671416,MET:12099650,PHE:5459026,PRO:5395026,SER:16740418,THR:12078080,TRP:5195264,TYR:9203788,VAL:16747775,A:14423100,G:3329330,I:10145074,C:16766720,T:4286945,U:4251856,DA:14423100,DG:3329330,DI:10145074,DC:16766720,DT:4286945,DU:4251856,APN:14423100,GPN:3329330,CPN:16766720,TPN:4286945},XM=ce(16711935),Kfe="Assigns a color to every residue according to its name.",tw={saturation:g.Numeric(0,{min:-6,max:6,step:.1}),lightness:g.Numeric(1,{min:-6,max:6,step:.1}),colors:g.MappedStatic("default",{default:g.EmptyGroup(),custom:g.Group(Lf(I9))})};function $fe(t){return tw}function P9(t,e){return t.model.atomicHierarchy.atoms.label_comp_id.value(e)}function E9(t,e){let r=t.coarseElements.seq_id_begin.value(e),n=t.coarseElements.seq_id_end.value(e);if(r===n){let o=t.coarseElements.entityKey[e];return t.model.sequence.byEntityKey[o].sequence.compId.value(r-1)}}function ew(t,e){let r=t[e];return r===void 0?XM:r}function rw(t,e){let r=of(e.colors.name==="default"?I9:e.colors.params,e.saturation,e.lightness);function n(o){if(z.Location.is(o))if(Pe.isAtomic(o.unit)){let i=P9(o.unit,o.element);return ew(r,i)}else{let i=E9(o.unit,o.element);if(i)return ew(r,i)}else if(ze.isLocation(o))if(Pe.isAtomic(o.aUnit)){let i=P9(o.aUnit,o.aUnit.elements[o.aIndex]);return ew(r,i)}else{let i=E9(o.aUnit,o.aUnit.elements[o.aIndex]);if(i)return ew(r,i)}return XM}return{factory:rw,granularity:"group",preferSmoothing:!0,color:n,props:e,description:Kfe,legend:vs(Object.keys(r).map(o=>[o,r[o]]).concat([["Unknown",XM]]))}}var D9={name:"residue-name",label:"Residue Name",category:zt.Residue,factory:rw,getParams:$fe,defaultValues:g.getDefaultValues(tw),isApplicable:t=>!!t.structure};var k9={alphaHelix:16711808,threeTenHelix:10485888,piHelix:6291584,betaTurn:6324479,betaStrand:16762880,coil:16777215,bend:6740169,turn:45670,dna:11403518,rna:16580962,carbohydrate:10921722},YM=ce(8421504),Zfe="Assigns a color based on the type of secondary structure and basic molecule type.",nw={saturation:g.Numeric(-1,{min:-6,max:6,step:.1}),lightness:g.Numeric(0,{min:-6,max:6,step:.1}),colors:g.MappedStatic("default",{default:g.EmptyGroup(),custom:g.Group(Lf(k9))})};function Jfe(t){return nw}function A9(t,e,r,n){let o=ts.create(0);if(n&&Pe.isAtomic(e)){let i=n.get(e.invariantId);i&&(o=i.type[i.getIndex(e.residueIndex[r])])}if(ts.is(o,2))return ts.is(o,2048)?t.threeTenHelix:ts.is(o,32768)?t.piHelix:t.alphaHelix;if(ts.is(o,4))return t.betaStrand;if(ts.is(o,8))return t.bend;if(ts.is(o,16))return t.turn;{let i=w0(e,r);if(i===7)return t.dna;if(i===6)return t.rna;if(i===9)return t.carbohydrate;if(i===5)return t.coil}return YM}function ow(t,e){let r=t.structure&&xs.get(t.structure),n=r?f0(r.id,r.version):-1,o=of(e.colors.name==="default"?k9:e.colors.params,e.saturation,e.lightness);function i(a){return z.Location.is(a)?A9(o,a.unit,a.element,r?.value):ze.isLocation(a)?A9(o,a.aUnit,a.aUnit.elements[a.aIndex],r?.value):YM}return{factory:ow,granularity:"group",preferSmoothing:!0,color:i,props:e,contextHash:n,description:Zfe,legend:vs(Object.keys(o).map(a=>[a,o[a]]).concat([["Other",YM]]))}}var M9={name:"secondary-structure",label:"Secondary Structure",category:zt.Residue,factory:ow,getParams:Jfe,defaultValues:g.getDefaultValues(nw),isApplicable:t=>!!t.structure,ensureCustomProperties:{attach:(t,e)=>e.structure?xs.attach(t,e.structure,void 0,!0):Promise.resolve(),detach:t=>t.structure&&xs.ref(t.structure,!1)}};var ehe=ce(13421772),the="Gives every polymer residue a color based on its `seq_id` value.",B9={list:g.ColorList("turbo",{presetKind:"scale"})};function rhe(t){return B9}function R9(t,e){let{model:r}=t;switch(t.kind){case 0:let n=r.atomicHierarchy.residueAtomSegments.index[e];return r.atomicHierarchy.residues.label_seq_id.value(n);case 1:return Math.round((r.coarseHierarchy.spheres.seq_id_begin.value(e)+r.coarseHierarchy.spheres.seq_id_end.value(e))/2);case 2:return Math.round((r.coarseHierarchy.gaussians.seq_id_begin.value(e)+r.coarseHierarchy.gaussians.seq_id_end.value(e))/2)}}function L9(t,e){let{model:r}=t,n="";switch(t.kind){case 0:let a=r.atomicHierarchy.chainAtomSegments.index[e];n=r.atomicHierarchy.chains.label_entity_id.value(a);break;case 1:n=r.coarseHierarchy.spheres.entity_id.value(e);break;case 2:n=r.coarseHierarchy.gaussians.entity_id.value(e);break}if(n==="")return 0;let o=r.entities.getEntityIndex(n);if(o===-1)return 0;let i=r.sequence.byEntityKey[o];return i===void 0?0:i.sequence.length}function O9(t,e){let r=ki.create({listOrName:e.list.colors,minLabel:"Start",maxLabel:"End"});return{factory:O9,granularity:"group",preferSmoothing:!0,color:o=>{if(z.Location.is(o)){let{unit:i,element:a}=o,s=R9(i,a);if(s>0){let l=L9(i,a);if(l)return r.setDomain(0,l-1),r.color(s)}}else if(ze.isLocation(o)){let{aUnit:i,aIndex:a}=o,s=R9(i,i.elements[a]);if(s>0){let l=L9(i,i.elements[a]);if(l)return r.setDomain(0,l-1),r.color(s)}}return ehe},props:e,description:the,legend:r?r.legend:void 0}}var F9={name:"sequence-id",label:"Sequence Id",category:zt.Residue,factory:O9,getParams:rhe,defaultValues:g.getDefaultValues(B9),isApplicable:t=>!!t.structure};var nhe=ce(16777113),ohe="Assigns a color based on the uncertainty or disorder of an element's position, e.g. B-factor or RMSF, depending on the data availability and experimental technique.",V9={domain:g.Interval([0,100]),list:g.ColorList("red-white-blue",{presetKind:"scale"})};function ihe(t){return V9}function N9(t,e){return Pe.isAtomic(t)?t.model.atomicConformation.B_iso_or_equiv.value(e):Pe.isSpheres(t)?t.model.coarseConformation.spheres.rmsf[e]:0}function z9(t,e){let r=ki.create({reverse:!0,domain:e.domain,listOrName:e.list.colors});function n(o){return z.Location.is(o)?r.color(N9(o.unit,o.element)):ze.isLocation(o)?r.color(N9(o.aUnit,o.aUnit.elements[o.aIndex])):nhe}return{factory:z9,granularity:"group",preferSmoothing:!0,color:n,props:e,description:ohe,legend:r?r.legend:void 0}}var U9={name:"uncertainty",label:"Uncertainty/Disorder",category:zt.Atom,factory:z9,getParams:ihe,defaultValues:g.getDefaultValues(V9),isApplicable:t=>!!t.structure&&t.structure.models.some(e=>e.atomicConformation.B_iso_or_equiv.isDefined||e.coarseHierarchy.isDefined)};var ahe=ce(15658734),she="Assigns an illustrative color that gives every chain a color based on the chosen style but with lighter carbons (inspired by David Goodsell's Molecule of the Month style).",G9={style:g.MappedStatic("entity-id",{uniform:g.Group(ap),"chain-id":g.Group(Mf),"entity-id":g.Group(Bf),"entity-source":g.Group(Ff),"molecule-type":g.Group(sv),"model-index":g.Group(Vf),"structure-index":g.Group(Uf)}),carbonLightness:g.Numeric(.8,{min:-6,max:6,step:.1})};function lhe(t){return g.clone(G9)}function che(t,e){switch(e.name){case"uniform":return ud(t,e.params);case"chain-id":return Rf(t,e.params);case"entity-id":return Of(t,e.params);case"entity-source":return Nf(t,e.params);case"molecule-type":return lv(t,e.params);case"model-index":return zf(t,e.params);case"structure-index":return Gf(t,e.params);default:ur(e)}}function j9(t,e){let{color:r,legend:n}=che(t,e.style);function o(a,s){let l=r(a,!1);return s==="C"?ce.lighten(l,e.carbonLightness):l}function i(a){if(z.Location.is(a)&&Pe.isAtomic(a.unit)){let s=a.unit.model.atomicHierarchy.atoms.type_symbol.value(a.element);return o(a,s)}else if(ze.isLocation(a)&&Pe.isAtomic(a.aUnit)){let s=a.aUnit.elements[a.aIndex],l=a.aUnit.model.atomicHierarchy.atoms.type_symbol.value(s);return o(a,l)}return ahe}return{factory:j9,granularity:"group",preferSmoothing:!0,color:i,props:e,description:she,legend:n}}var H9={name:"illustrative",label:"Illustrative",category:zt.Misc,factory:j9,getParams:lhe,defaultValues:g.getDefaultValues(G9),isApplicable:t=>!!t.structure};var uhe='Assigns a color to every amino acid according to the "Experimentally determined hydrophobicity scale for proteins at membrane interfaces" by Wimely and White (doi:10.1038/nsb1096-842).',X9={list:g.ColorList("red-yellow-green",{presetKind:"scale"}),scale:g.Select("DGwif",[["DGwif","DG water-membrane"],["DGwoct","DG water-octanol"],["Oct-IF","DG difference"]])};function dhe(t){return X9}var mhe={DGwif:0,DGwoct:1,"Oct-IF":2};function phe(t,e){let r=AT[t];return r===void 0?0:r[e]}function q9(t,e){return t.model.atomicHierarchy.atoms.label_comp_id.value(e)}function W9(t,e){let r=t.coarseElements.seq_id_begin.value(e),n=t.coarseElements.seq_id_end.value(e);if(r===n){let o=t.coarseElements.entityKey[e];return t.model.sequence.byEntityKey[o].sequence.compId.value(r-1)}}function Y9(t,e){let r=mhe[e.scale],n=1/0,o=-1/0;for(let s in AT){let l=AT[s][r];n=Math.min(n,l),o=Math.max(o,l)}let i=ki.create({listOrName:e.list.colors,domain:[o,n],minLabel:"Hydrophilic",maxLabel:"Hydrophobic"});function a(s){let l;return z.Location.is(s)?Pe.isAtomic(s.unit)?l=q9(s.unit,s.element):l=W9(s.unit,s.element):ze.isLocation(s)&&(Pe.isAtomic(s.aUnit)?l=q9(s.aUnit,s.aUnit.elements[s.aIndex]):l=W9(s.aUnit,s.aUnit.elements[s.aIndex])),i.color(l?phe(l,r):0)}return{factory:Y9,granularity:"group",preferSmoothing:!0,color:a,props:e,description:uhe,legend:i?i.legend:void 0}}var Q9={name:"hydrophobicity",label:"Hydrophobicity",category:zt.Residue,factory:Y9,getParams:dhe,defaultValues:g.getDefaultValues(X9),isApplicable:t=>!!t.structure};var K9=ce(13421772),fhe="Gives every model (frame) a unique color based on the index in its trajectory.",$9=w({},Dn({type:"colors",colorList:"purples"}));function hhe(t){return g.clone($9)}function Z9(t,e){var r,n;let o,i;if(t.structure){let{models:a}=t.structure.root,s=0;for(let u of a)s=Math.max(s,((r=Et.TrajectoryInfo.get(u))===null||r===void 0?void 0:r.size)||0);let l=zn(s,e);i=l.legend;let c=new Map;for(let u=0,d=a.length;uz.Location.is(u)?c.get(Et.TrajectoryInfo.get(u.unit.model).index):ze.isLocation(u)?c.get(Et.TrajectoryInfo.get(u.aUnit.model).index):K9}else o=()=>K9;return{factory:Z9,granularity:"instance",color:o,props:e,description:fhe,legend:i}}var J9={name:"trajectory-index",label:"Trajectory Index",category:zt.Chain,factory:Z9,getParams:hhe,defaultValues:g.getDefaultValues($9),isApplicable:t=>!!t.structure&&t.structure.elementCount>0&&Et.TrajectoryInfo.get(t.structure.models[0]).size>1};var ghe=ce(13421772),yhe="Assigns a color based on the occupancy of an atom.",tq={domain:g.Interval([0,1]),list:g.ColorList("purples",{presetKind:"scale"})};function vhe(t){return tq}function eq(t,e){return Pe.isAtomic(t)?t.model.atomicConformation.occupancy.value(e):0}function rq(t,e){let r=ki.create({reverse:!1,domain:e.domain,listOrName:e.list.colors});function n(o){return z.Location.is(o)?r.color(eq(o.unit,o.element)):ze.isLocation(o)?r.color(eq(o.aUnit,o.aUnit.elements[o.aIndex])):ghe}return{factory:rq,granularity:"group",preferSmoothing:!0,color:n,props:e,description:yhe,legend:r?r.legend:void 0}}var nq={name:"occupancy",label:"Occupancy",category:zt.Atom,factory:rq,getParams:vhe,defaultValues:g.getDefaultValues(tq),isApplicable:t=>!!t.structure&&t.structure.models.some(e=>e.atomicConformation.occupancy.isDefined)};var KM="dark-2",oq=ce(13421772),bhe="Assigns a color based on the operator HKL value of a transformed chain.",iq=w({},Dn({type:"colors",colorList:KM}));function xhe(t){let e=g.clone(iq);return t.structure&&aq(t.structure.root).map.size>tm[KM].list.length&&(e.palette.defaultValue.name="colors",e.palette.defaultValue.params=U(w({},e.palette.defaultValue.params),{list:{kind:"interpolate",colors:Za(KM).list}})),e}var A1=1e4;function $M(t){return t.map(e=>`${e+A1}`.padStart(5,"0")).join("")}function ZM(t){let e=oU(A1,0),r=parseInt(t.substr(0,e)),n=parseInt(t.substr(e,e)),o=parseInt(t.substr(e+e,e));return y.create(r-A1,n-A1,o-A1)}function QM(t){return t.map(e=>e+5).join("")}function aq(t){let e=new Map,r=new Set;for(let a=0,s=t.units.length;ae.set(a,e.size));let o=ZM(n[0]),i=ZM(n[n.length-1]);return{min:o,max:i,map:e}}function sq(t,e){let r,n;if(t.structure){let{min:o,max:i,map:a}=aq(t.structure.root),s=[];a.forEach((u,d)=>{let m=u%a.size,p=QM(ZM(d));s[m]===void 0?s[m]=p:s[m]+=`, ${p}`});let l={minLabel:QM(o),maxLabel:QM(i),valueLabel:u=>s[u]},c=zn(a.size,e,l);n=c.legend,r=u=>{let d;if(z.Location.is(u)){let m=$M(u.unit.conformation.operator.hkl);d=a.get(m)}else if(ze.isLocation(u)){let m=$M(u.aUnit.conformation.operator.hkl);d=a.get(m)}return d===void 0?oq:c.color(d)}}else r=()=>oq;return{factory:sq,granularity:"instance",color:r,props:e,description:bhe,legend:n}}var lq={name:"operator-hkl",label:"Operator HKL",category:zt.Symmetry,factory:sq,getParams:xhe,defaultValues:g.getDefaultValues(iq),isApplicable:t=>!!t.structure};var vp;(function(t){t.Descriptor={name:"atom_partial_charge"},t.Provider=PT.create(t.Descriptor)})(vp||(vp={}));var JM=ce(16777113),She="Assigns a color based on the partial charge of an atom.",uq={domain:g.Interval([-1,1]),list:g.ColorList("red-white-blue",{presetKind:"scale"})};function Che(t){return uq}function cq(t,e){var r;return(r=vp.Provider.get(t.model))===null||r===void 0?void 0:r.data.value(e)}function dq(t,e){let r=ki.create({domain:e.domain,listOrName:e.list.colors});function n(o){if(z.Location.is(o)){let i=cq(o.unit,o.element);return i!==void 0?r.color(i):JM}else if(ze.isLocation(o)){let i=cq(o.aUnit,o.aUnit.elements[o.aIndex]);return i!==void 0?r.color(i):JM}return JM}return{factory:dq,granularity:"group",preferSmoothing:!0,color:n,props:e,description:She,legend:r?r.legend:void 0}}var mq={name:"partial-charge",label:"Partial Charge",category:zt.Atom,factory:dq,getParams:Che,defaultValues:g.getDefaultValues(uq),isApplicable:t=>!!t.structure&&t.structure.models.some(e=>vp.Provider.get(e)!==void 0)};var The="many-distinct",pq=ce(16448250),whe="Gives every atom a color based on its `label_atom_id` value.",fq=w({},Dn({type:"colors",colorList:The}));function _he(t){return g.clone(fq)}function Phe(t){let e=new Map;for(let r of t.models){let{label_atom_id:n}=r.atomicHierarchy.atoms;for(let o=0,i=n.rowCount;oa[c],l=zn(i.size,e,{valueLabel:s});n=l.legend,r=c=>{let u;if(z.Location.is(c)){let d=Ne.atom.label_atom_id(c);u=i.get(d)}else if(ze.isLocation(c)){o.unit=c.aUnit,o.element=c.aUnit.elements[c.aIndex];let d=Ne.atom.label_atom_id(o);u=i.get(d)}return u===void 0?pq:l.color(u)}}else r=()=>pq;return{factory:hq,granularity:"group",preferSmoothing:!0,color:r,props:e,description:whe,legend:n}}var gq={name:"atom-id",label:"Atom Id",category:zt.Atom,factory:hq,getParams:_he,defaultValues:g.getDefaultValues(fq),isApplicable:t=>!!t.structure};var Ehe="Assign color based on the given value of a volume cell.",yq={colorList:g.ColorList({kind:"interpolate",colors:[[ut.white,0],[ut.red,.25],[ut.white,.5],[ut.blue,.75],[ut.white,1]]},{offsets:!0,isEssential:!0})};function Ihe(t){return yq}function vq(t,e){let r=ki.create({domain:[0,1],listOrName:e.colorList.colors}),n=[];for(let i=0;i<256;++i)n[i]=r.color(i/255);let o={colors:n,filter:"linear"};return{factory:vq,granularity:"direct",props:e,description:Ehe,legend:r.legend,palette:o}}var bq={name:"volume-value",label:"Volume Value",category:zt.Misc,factory:vq,getParams:Ihe,defaultValues:g.getDefaultValues(yq),isApplicable:t=>!!t.volume&&!xe.Segmentation.get(t.volume)};var xq=ce(13421772),Dhe="Gives every volume segment a unique color.",Sq=w({},Dn({type:"colors",colorList:"many-distinct"}));function Ahe(t){return g.clone(Sq)}function Cq(t,e){let r,n,o=t.volume&&xe.Segmentation.get(t.volume);if(o){let i=o.segments.size,a=Array.from(o.segments.keys()),s=zn(i,e);n=s.legend,r=l=>xe.Segment.isLocation(l)?s.color(a.indexOf(l.segment)):xq}else r=()=>xq;return{factory:Cq,granularity:"instance",color:r,props:e,description:Dhe,legend:n}}var Tq={name:"volume-segment",label:"Volume Segment",category:zt.Misc,factory:Cq,getParams:Ahe,defaultValues:g.getDefaultValues(Sq),isApplicable:t=>!!t.volume&&!!xe.Segmentation.get(t.volume)};var khe="Assigns a color based on volume value at a given vertex.",wq={volume:g.ValueRef(t=>t.state.data.selectQ(r=>r.root.subtree().filter(n=>{var o;return xe.is((o=n.obj)===null||o===void 0?void 0:o.data)})).map(r=>{var n,o;return[r.transform.ref,(o=(n=r.obj)===null||n===void 0?void 0:n.label)!==null&&o!==void 0?o:""]}),(t,e)=>e(t)),coloring:g.MappedStatic("absolute-value",{"absolute-value":g.Group({domain:g.MappedStatic("auto",{custom:g.Interval([-1,1]),auto:g.Group({symmetric:g.Boolean(!1,{description:"If true the automatic range is determined as [-|max|, |max|]."})})}),list:g.ColorList("red-white-blue",{presetKind:"scale"})}),"relative-value":g.Group({domain:g.MappedStatic("auto",{custom:g.Interval([-1,1]),auto:g.Group({symmetric:g.Boolean(!1,{description:"If true the automatic range is determined as [-|max|, |max|]."})})}),list:g.ColorList("red-white-blue",{presetKind:"scale"})})}),defaultColor:g.Color(ce(13421772)),normalOffset:g.Numeric(0,{min:0,max:20,step:.1},{description:"Offset vertex position along its normal by given amount."})};function _q(t,e){let r;try{r=e.volume.getValue()}catch{}let n;if(r){let o=e.coloring.params,{stats:i}=r.grid,a=o.domain.name==="custom"?o.domain.params:[i.min,i.max],s=e.coloring.name==="relative-value";if(o.domain.name==="auto"&&s&&(a[0]=(a[0]-i.mean)/i.sigma,a[1]=(a[1]-i.mean)/i.sigma),e.coloring.params.domain.name==="auto"&&e.coloring.params.domain.params.symmetric){let v=Math.max(Math.abs(a[0]),Math.abs(a[1]));a[0]=-v,a[1]=v}let l=ki.create({domain:a,listOrName:o.list.colors}),c=Sn.getGridToCartesianTransform(r.grid);W.invert(c,c);let u=y(),{dimensions:d,get:m}=r.grid.cells.space,p=r.grid.cells.data,[h,f,b]=d;n=v=>{if(!BU(v))return e.defaultColor;y.copy(u,v.position),e.normalOffset>0&&y.scaleAndAdd(u,u,v.normal,e.normalOffset),y.transformMat4(u,u,c);let x=Math.floor(u[0]),S=Math.floor(u[1]),T=Math.floor(u[2]);if(x<0||x>=h||S<0||S>=f||T<0||T>=b)return e.defaultColor;let E=u[0]-x,_=u[1]-S,D=u[2]-T,P=Math.min(x+1,h-1),A=Math.min(S+1,f-1),I=Math.min(T+1,b-1),k=m(p,x,S,T),M=m(p,P,S,T),R=m(p,x,A,T),B=m(p,P,A,T),F=fn(fn(k,M,E),fn(R,B,E),_);k=m(p,x,S,I),M=m(p,P,S,I),R=m(p,x,A,I),B=m(p,P,A,I);let G=fn(fn(k,M,E),fn(R,B,E),_),V=fn(F,G,D);return s&&(V=(V-i.mean)/i.sigma),l.color(V)}}else n=()=>e.defaultColor;return{factory:_q,granularity:"vertex",preferSmoothing:!0,color:n,props:e,description:khe}}var Pq={name:"external-volume",label:"External Volume",category:zt.Misc,factory:_q,getParams:()=>wq,defaultValues:g.getDefaultValues(wq),isApplicable:t=>!0};var Mhe="Uses separate themes for coloring mainchain and sidechain visuals.",Eq={mainchain:g.MappedStatic("molecule-type",{uniform:g.Group(ap),"chain-id":g.Group(Mf),"entity-id":g.Group(Bf),"entity-source":g.Group(Ff),"molecule-type":g.Group(sv),"model-index":g.Group(Vf),"structure-index":g.Group(Uf),"secondary-structure":g.Group(nw)}),sidechain:g.MappedStatic("residue-name",{uniform:g.Group(ap),"residue-name":g.Group(tw),"element-symbol":g.Group(Z2)})};function Rhe(t){return g.clone(Eq)}function Lhe(t,e){switch(e.name){case"uniform":return ud(t,e.params);case"chain-id":return Rf(t,e.params);case"entity-id":return Of(t,e.params);case"entity-source":return Nf(t,e.params);case"molecule-type":return lv(t,e.params);case"model-index":return zf(t,e.params);case"structure-index":return Gf(t,e.params);case"secondary-structure":return ow(t,e.params);default:ur(e)}}function Bhe(t,e){switch(e.name){case"uniform":return ud(t,e.params);case"residue-name":return rw(t,e.params);case"element-symbol":return J2(t,e.params);default:ur(e)}}function Iq(t,e){var r,n;let o=Lhe(t,e.mainchain),i=Bhe(t,e.sidechain);function a(l,c){return c?o.color(l,!1):i.color(l,!1)}let s=o.legend;return((r=o.legend)===null||r===void 0?void 0:r.kind)==="table-legend"&&((n=i.legend)===null||n===void 0?void 0:n.kind)==="table-legend"&&(s={kind:"table-legend",table:[...o.legend.table,...i.legend.table]}),{factory:Iq,granularity:"group",preferSmoothing:!1,color:a,props:e,description:Mhe,legend:s}}var Dq={name:"cartoon",label:"Cartoon",category:zt.Misc,factory:Iq,getParams:Rhe,defaultValues:g.getDefaultValues(Eq),isApplicable:t=>!!t.structure};var wo;(function(t){t.Category=zt,t.PaletteScale=(1<<24)-1,t.EmptyFactory=()=>t.Empty;let e=ce(13421772);t.Empty={factory:t.EmptyFactory,granularity:"uniform",color:()=>e,props:{}};function r(o,i){return o.contextHash===i.contextHash&&o.factory===i.factory&&ys(o.props,i.props)}t.areEqual=r,t.EmptyProvider={name:"",label:"",category:"",factory:t.EmptyFactory,getParams:()=>({}),defaultValues:{},isApplicable:()=>!0};function n(){return new cv(t.BuiltIn,t.EmptyProvider)}t.createRegistry=n,t.BuiltIn={"atom-id":gq,"carbohydrate-symbol":N8,cartoon:Dq,"chain-id":W2,"element-index":Q8,"element-symbol":d9,"entity-id":J8,"entity-source":r9,hydrophobicity:Q9,illustrative:H9,"model-index":o9,"molecule-type":f9,occupancy:nq,"operator-hkl":lq,"operator-name":av,"partial-charge":mq,"polymer-id":x9,"polymer-index":_9,"residue-name":D9,"secondary-structure":M9,"sequence-id":F9,"shape-group":uH,"structure-index":a9,"trajectory-index":J9,uncertainty:U9,"unit-index":l9,uniform:yj,"volume-segment":Tq,"volume-value":bq,"external-volume":Pq}})(wo||(wo={}));var Ohe=1,Fhe="Assigns a physical size, i.e. vdW radius for atoms or given radius for coarse spheres.",Aq={scale:g.Numeric(1,{min:.1,max:5,step:.1})};function Nhe(t){return Aq}function e3(t,e){return Pe.isAtomic(t)?ff(t.model.atomicHierarchy.atoms.type_symbol.value(e)):Pe.isSpheres(t)?t.model.coarseConformation.spheres.radius[e]:0}function kq(t,e){let r=e.scale===void 0?1:e.scale;function n(o){let i;return z.Location.is(o)?i=r*e3(o.unit,o.element):ze.isLocation(o)?i=r*Math.min(e3(o.aUnit,o.aUnit.elements[o.aIndex]),e3(o.bUnit,o.bUnit.elements[o.bIndex])):i=r*Ohe,i}return{factory:kq,granularity:"group",size:n,props:e,description:Fhe}}var Mq={name:"physical",label:"Physical",category:"",factory:kq,getParams:Nhe,defaultValues:g.getDefaultValues(Aq),isApplicable:t=>!!t.structure};var Vhe="Assigns a size reflecting the uncertainty or disorder of an element's position, e.g. B-factor or RMSF, depending on the data availability and experimental technique.",Lq={bfactorFactor:g.Numeric(.1,{min:0,max:1,step:.01}),rmsfFactor:g.Numeric(.05,{min:0,max:1,step:.01}),baseSize:g.Numeric(.2,{min:0,max:2,step:.1})};function zhe(t){return Lq}function Rq(t,e,r){return Pe.isAtomic(t)?t.model.atomicConformation.B_iso_or_equiv.value(e)*r.bfactorFactor:Pe.isSpheres(t)?t.model.coarseConformation.spheres.rmsf[e]*r.rmsfFactor:0}function Bq(t,e){function r(n){let o=e.baseSize;return z.Location.is(n)?o+=Rq(n.unit,n.element,e):ze.isLocation(n)&&(o+=Rq(n.aUnit,n.aUnit.elements[n.aIndex],e)),o}return{factory:Bq,granularity:"group",size:r,props:e,description:Vhe}}var Oq={name:"uncertainty",label:"Uncertainty/Disorder",category:"",factory:Bq,getParams:zhe,defaultValues:g.getDefaultValues(Lq),isApplicable:t=>!!t.structure&&t.structure.models.some(e=>e.atomicConformation.B_iso_or_equiv.isDefined||e.coarseHierarchy.isDefined)};var so;(function(t){t.EmptyFactory=()=>t.Empty,t.Empty={factory:t.EmptyFactory,granularity:"uniform",size:()=>1,props:{}};function e(n,o){return n.contextHash===o.contextHash&&n.factory===o.factory&&ys(n.props,o.props)}t.areEqual=e,t.EmptyProvider={name:"",label:"",category:"",factory:t.EmptyFactory,getParams:()=>({}),defaultValues:{},isApplicable:()=>!0};function r(){return new cv(t.BuiltIn,t.EmptyProvider)}t.createRegistry=r,t.BuiltIn={physical:Mq,"shape-group":lH,uncertainty:Oq,uniform:bj}})(so||(so={}));var An;(function(t){function e(i,a,s,l){l=l||r();let c=s.colorTheme,u=s.sizeTheme;return l.color=i.colorThemeRegistry.create(c.name,a,c.params),l.size=i.sizeThemeRegistry.create(u.name,a,u.params),l}t.create=e;function r(){return{color:wo.Empty,size:so.Empty}}t.createEmpty=r;function n(i,a,s,l){return N(this,null,function*(){var c,u;yield(c=a.colorThemeRegistry.get(l.colorTheme.name).ensureCustomProperties)===null||c===void 0?void 0:c.attach(i,s),yield(u=a.sizeThemeRegistry.get(l.sizeTheme.name).ensureCustomProperties)===null||u===void 0?void 0:u.attach(i,s)})}t.ensureDependencies=n;function o(i,a,s){var l,c;(l=i.colorThemeRegistry.get(s.colorTheme.name).ensureCustomProperties)===null||l===void 0||l.detach(a),(c=i.sizeThemeRegistry.get(s.sizeTheme.name).ensureCustomProperties)===null||c===void 0||c.detach(a)}t.releaseDependencies=o})(An||(An={}));function Fq(t){return t.map(e=>[e.name,e.provider.label,e.provider.category])}var cv=class{get default(){return this._list[0]}get list(){return this._list}get types(){return Fq(this._list)}constructor(e,r){this.emptyProvider=r,this._list=[],this._map=new Map,this._name=new Map,ro(e,(n,o)=>{if(n.name!==o)throw new Error(`Fix build in themes to have matching names. ${n.name} ${o}`);this.add(n)})}sort(){this._list.sort((e,r)=>e.provider.category===r.provider.category?e.provider.labelr.provider.label?1:0:e.provider.categoryn.name===e.name),1);let r=this._map.get(e.name);r&&(this._map.delete(e.name),this._name.delete(r))}has(e){return this._map.has(e.name)}get(e){return this._map.get(e)||this.emptyProvider}getName(e){if(!this._name.has(e))throw new Error(`'${e.label}' is not a registered theme provider.`);return this._name.get(e)}create(e,r,n={}){let o=this.get(e);return o.factory(r,w(w({},g.getDefaultValues(o.getParams(r))),n))}getApplicableList(e){return this._list.filter(r=>r.provider.isApplicable(e))}getApplicableTypes(e){return Fq(this.getApplicableList(e))}clear(){this._list.length=0,this._map.clear(),this._name.clear()}};var tt=function(t){return t[t.None=0]="None",t[t.Highlight=1]="Highlight",t[t.RemoveHighlight=2]="RemoveHighlight",t[t.Select=4]="Select",t[t.Deselect=8]="Deselect",t[t.Toggle=16]="Toggle",t[t.Clear=32]="Clear",t}(tt||{}),kn;(function(t){t.is=Wc.has,t.All=tt.Highlight|tt.RemoveHighlight|tt.Select|tt.Deselect|tt.Toggle|tt.Clear,t.Highlighting=tt.Highlight|tt.RemoveHighlight|tt.Clear,t.Selecting=tt.Select|tt.Deselect|tt.Toggle|tt.Clear;function e(r,n){return r===tt.Highlight&&n===tt.RemoveHighlight||r===tt.RemoveHighlight&&n===tt.Highlight||r===tt.Select&&n===tt.Deselect||r===tt.Deselect&&n===tt.Select||r===tt.Toggle&&n===tt.Toggle}t.isReverse=e})(kn||(kn={}));function Nq(t,e,r){t.fill(e,0,r)}function uv(t,e,r){switch(r){case tt.Highlight:t[e]|=1;break;case tt.RemoveHighlight:t[e]&=-2;break;case tt.Select:t[e]|=2;break;case tt.Deselect:t[e]&=-3;break;case tt.Toggle:t[e]^=2;break;case tt.Clear:t[e]=0;break}}function ka(t,e,r){if(r===tt.None)return!1;if(Oe.is(e)){let n=Oe.start(e),o=Oe.end(e),i=n+3>>2,a=i+(o-4*i>>2);if(a<=i){for(let m=n;m>2),l=n,c=Math.min(4*i,o),u=Math.max(n,4*a),d=o;switch(r){case tt.Highlight:for(let m=i;m{p.push({loci:h,value:f})}),{kind:"element-loci",layers:p}}else return c}t.merge=o;function i(c,u){if(r(c))return c;if(c.kind==="element-loci"){let{structure:d}=c.layers[0].loci,m=[];for(let p of c.layers){let{loci:h,value:f}=p,b=z.Loci.remap(h,u);h=z.Loci.remap(b,d),z.Loci.isEmpty(h)||m.push({loci:h,value:f})}return{kind:"element-loci",layers:m}}else return c}t.filter=i;function a(c,u){let d=[];for(let m=0,p=c.length;mr.lowestElementCount?"lowest":n>r.lowerElementCount?"lower":n>r.lowElementCount?"low":n>r.mediumElementCount?"medium":n>r.highElementCount?"high":"higher"}function Ghe(t){if(t.root.models.length===1){let e=rs.Provider.get(t.root.model);if(e&&e.spacegroup.name==="P 1"&&!pa.isZero(e.spacegroup.cell))return e.spacegroup.cell.volume}return qe.volume(t.root.boundary.box)}function k1(t,e){let r=li(t.quality,"auto"),n=li(t.detail,1),o=li(t.radialSegments,12),i=li(t.linearSegments,8),a=li(t.resolution,2),s=li(t.probePositions,12),l=li(t.doubleSided,!0),c=0;if(r==="auto"){if(e instanceof ue)r=t3(e.root),c=Ghe(e);else if(xe.is(e)){let[u,d,m]=e.grid.cells.space.dimensions;c=u*d*m,r=c<1e7?"medium":"low"}}switch(r){case"highest":n=3,o=36,i=18,a=.1,s=72,l=!0;break;case"higher":n=3,o=28,i=14,a=.3,s=48,l=!0;break;case"high":n=2,o=20,i=10,a=.5,s=36,l=!0;break;case"medium":n=1,o=12,i=8,a=.8,s=24,l=!0;break;case"low":n=0,o=8,i=3,a=1.3,s=24,l=!1;break;case"lower":n=0,o=4,i=2,a=3,s=12,l=!1;break;case"lowest":n=0,o=2,i=1,a=8,s=12,l=!1;break;case"custom":break}return a=Math.max(a,c/5e8),a=Math.min(a,20),t.transparentBackfaces==="off"&&(t.alpha!==void 0&&t.alpha<1||t.xrayShaded)&&(l=!1),{detail:n,radialSegments:o,linearSegments:i,resolution:a,probePositions:s,doubleSided:l}}var iw=y.set,Uq=y.normalize,Gq=y.sub,jq=y.addScalar,aw=y.scale,Hq=y.toArray;function jf(t,e,r,n){let o=!1;if(xe.isLoci(t)){if(!xe.areEquivalent(t.volume,e))return!1;n(Oe.ofLength(e.grid.cells.data.length))&&(o=!0)}else if(xe.Isosurface.isLoci(t)){if(!xe.areEquivalent(t.volume,e))return!1;if(r?.isoValue){if(!xe.IsoValue.areSame(t.isoValue,r.isoValue,e.grid.stats))return!1;n(Oe.ofLength(e.grid.cells.data.length))&&(o=!0)}else{let{stats:i,cells:{data:a}}=e.grid,s=i.sigma,l=xe.IsoValue.toAbsolute(t.isoValue,i).absoluteValue;for(let c=0,u=a.length;c{n(Oe.ofSingleton(i))&&(o=!0)})}else if(xe.Segment.isLoci(t)){if(!xe.areEquivalent(t.volume,e))return!1;if(r?.segments){if(!tr.areIntersecting(t.segments,r.segments))return!1;n(Oe.ofLength(e.grid.cells.data.length))&&(o=!0)}else{let i=xe.Segmentation.get(e);if(i){let a=new Set;for(let c=0,u=t.segments.length;cF)continue;let yt=F-It,pe=B(De,Qe,Ke);for(let Ae=0;Aec)throw new Error("outputStride + itemOffset must NOT be larger than colorStride");let m=t.colorType.endsWith("Instance"),p=m?t.instanceCount:1,h=Zr(Math.max(1,p*e),d,Uint8Array),{array:f}=h,[b,v]=i,x=a[0],S=y.fromArray(y(),s,0),T=s[3];function E(I,k,M){let R=Math.floor(M*b%x/b),B=Math.floor(M*b/x),F=R*b+I;return c*(B*v*x+k*x+F)}let _=y(),D=y(),P=y(),A=y();for(let I=0;I p) discard; + + float f = p - dist; + gl_FragColor = vColor * f; + gl_FragData[1] = vec4(f); +} +`;var Jq=` +precision highp float; + +#include common +#include read_from_texture + +uniform int uGroupCount; + +attribute float aSample; +#define SampleID int(aSample) + +attribute mat4 aTransform; +attribute float aInstance; + +uniform vec2 uGeoTexDim; +uniform sampler2D tPosition; +uniform sampler2D tGroup; + +uniform vec2 uColorTexDim; +uniform sampler2D tColor; + +varying vec3 vPosition; +varying vec4 vColor; + +uniform vec3 uBboxSize; +uniform vec3 uBboxMin; +uniform float uResolution; + +void main() { + vec3 position = readFromTexture(tPosition, SampleID, uGeoTexDim).xyz; + float group = unpackRGBToInt(readFromTexture(tGroup, SampleID, uGeoTexDim).rgb); + + position = (aTransform * vec4(position, 1.0)).xyz; + gl_PointSize = 7.0; + vPosition = (position - uBboxMin) / uResolution; + gl_Position = vec4(((position - uBboxMin) / uBboxSize) * 2.0 - 1.0, 1.0); + + #if defined(dColorType_group) + vColor = readFromTexture(tColor, group, uColorTexDim); + #elif defined(dColorType_groupInstance) + vColor = readFromTexture(tColor, aInstance * float(uGroupCount) + group, uColorTexDim); + #endif +} +`;var Qhe={drawCount:Mr("number"),instanceCount:Mr("number"),stride:Mr("number"),uGroupCount:ee("i","material"),aTransform:hr("float32",16,1),aInstance:hr("float32",1,1),aSample:hr("float32",1,0),uGeoTexDim:ee("v2","material"),tPosition:We("texture","rgba","float","nearest","material"),tGroup:We("texture","rgba","float","nearest","material"),uColorTexDim:ee("v2","material"),tColor:We("texture","rgba","ubyte","nearest","material"),dColorType:Ye("string",["group","groupInstance","vertex","vertexInstance"]),uCurrentSlice:ee("f"),uCurrentX:ee("f"),uCurrentY:ee("f"),uBboxMin:ee("v3","material"),uBboxSize:ee("v3","material"),uResolution:ee("f","material")},xc="color-accumulate",R1="color-count";function e7(t,e){let r=new Float32Array(t);for(let n=0;na.drawCount.ref.value||o!==a.stride.ref.value)&&C.update(a.aSample,e7(s,o)),C.updateIfChanged(a.drawCount,s),C.updateIfChanged(a.instanceCount,e.instanceCount),C.updateIfChanged(a.stride,o),C.updateIfChanged(a.uGroupCount,e.groupCount),C.update(a.aTransform,e.transformBuffer),C.update(a.aInstance,e.instanceBuffer),C.update(a.uGeoTexDim,ne.set(a.uGeoTexDim.ref.value,e.positionTexture.getWidth(),e.positionTexture.getHeight())),C.update(a.tPosition,e.positionTexture),C.update(a.tGroup,e.groupTexture),C.update(a.uColorTexDim,ne.set(a.uColorTexDim.ref.value,e.colorData.getWidth(),e.colorData.getHeight())),C.update(a.tColor,e.colorData),C.updateIfChanged(a.dColorType,e.colorType),C.updateIfChanged(a.uCurrentSlice,0),C.updateIfChanged(a.uCurrentX,0),C.updateIfChanged(a.uCurrentY,0),C.update(a.uBboxMin,r.min),C.update(a.uBboxSize,i),C.updateIfChanged(a.uResolution,n),t.namedComputeRenderables[xc].update()}else t.namedComputeRenderables[xc]=$he(t,e,r,n,o);return t.namedComputeRenderables[xc]}function $he(t,e,r,n,o){let i=y.sub(y(),r.max,r.min),a=Math.round(e.vertexCount/o),s={drawCount:C.create(a),instanceCount:C.create(e.instanceCount),stride:C.create(o),uGroupCount:C.create(e.groupCount),aTransform:C.create(e.transformBuffer),aInstance:C.create(e.instanceBuffer),aSample:C.create(e7(a,o)),uGeoTexDim:C.create(ne.create(e.positionTexture.getWidth(),e.positionTexture.getHeight())),tPosition:C.create(e.positionTexture),tGroup:C.create(e.groupTexture),uColorTexDim:C.create(ne.create(e.colorData.getWidth(),e.colorData.getHeight())),tColor:C.create(e.colorData),dColorType:C.create(e.colorType),uCurrentSlice:C.create(0),uCurrentX:C.create(0),uCurrentY:C.create(0),uBboxMin:C.create(r.min),uBboxSize:C.create(i),uResolution:C.create(n)},l=w({},Qhe),c=Qt("accumulate",Jq,Zq,{drawBuffers:"required"}),u=dr(t,"points",c,l,s);return mr(u,s)}function Zhe(t){let{gl:e,state:r}=t;r.disable(e.CULL_FACE),r.enable(e.BLEND),r.disable(e.DEPTH_TEST),r.enable(e.SCISSOR_TEST),r.depthMask(!1),r.clearColor(0,0,0,0),r.blendFunc(e.ONE,e.ONE),r.blendEquation(e.FUNC_ADD)}var Jhe=U(w({},Er),{tColor:We("texture","rgba","float","nearest"),tCount:We("texture","alpha","float","nearest"),uTexSize:ee("v2")}),L1="color-normalize";function ege(t,e,r){if(t.namedComputeRenderables[L1]){let n=t.namedComputeRenderables[L1].values;C.update(n.tColor,e),C.update(n.tCount,r),C.update(n.uTexSize,ne.set(n.uTexSize.ref.value,e.getWidth(),e.getHeight())),t.namedComputeRenderables[L1].update()}else t.namedComputeRenderables[L1]=tge(t,e,r);return t.namedComputeRenderables[L1]}function tge(t,e,r){let n=U(w({},Ir),{tColor:C.create(e),tCount:C.create(r),uTexSize:C.create(ne.create(e.getWidth(),e.getHeight()))}),o=w({},Jhe),i=Qt("normalize",zr,$q),a=dr(t,"triangles",i,o,n);return mr(a,n)}function rge(t){let{gl:e,state:r}=t;r.disable(e.CULL_FACE),r.enable(e.BLEND),r.disable(e.DEPTH_TEST),r.enable(e.SCISSOR_TEST),r.depthMask(!1),r.clearColor(0,0,0,0),r.blendFunc(e.ONE,e.ONE),r.blendEquation(e.FUNC_ADD)}function nge(t){let e=t[0]*t[1]*t[2],r=Math.sqrt(e),n=Math.pow(2,Math.ceil(Math.log(r)/Math.log(2))),o=0,i=t[1],a=1,s=t[2];return n=P&&(G-=P,V+=T,H=0,C.update(F,V)),C.update(B,H),C.update(R,j),l.viewport(H,V,S,T),l.scissor(H,V,S,T),M.render(),++G,H+=S;I.detachFramebuffer(A,0),k.detachFramebuffer(A,1),i.drawBuffers([a.COLOR_ATTACHMENT0,a.NONE]),Ee&&n.timer.markEnd("ColorAccumulate.render"),Ee&&n.timer.mark("ColorNormalize.render"),(!o||uj(o))&&(o=s.texture("image-uint8","rgba","ubyte","linear")),o.define(_,D);let Q=ege(n,I,k);l.currentRenderItemId=-1,rge(n),o.attachFramebuffer(A,0),l.viewport(0,0,_,D),l.scissor(0,0,_,D),a.clear(a.COLOR_BUFFER_BIT),Q.render(),Ee&&n.timer.markEnd("ColorNormalize.render");let L=at.create(x[0],x[1],x[2],f),Y=d?"volumeInstance":"volume";return Ee&&n.timer.markEnd("calcTextureMeshColorSmoothing"),{texture:o,gridDim:v,gridTexDim:ne.create(_,D),gridTransform:L,type:Y}}var r3="color-smoothing-rgb",mv="color-smoothing-rgba",pv="color-smoothing-alpha";function oge(t){return t==="group"||t==="groupInstance"}function n3(t,e,r,n,o){if(!oge(t.dColorType.ref.value))return;r*=3,n.namedTextures[r3]||(n.namedTextures[r3]=n.resources.texture("image-uint8","rgb","ubyte","nearest"));let i=n.namedTextures[r3];i.load(t.tColor.ref.value);let a=B1({vertexCount:t.uVertexCount.ref.value,instanceCount:t.uInstanceCount.ref.value,groupCount:t.uGroupCount.ref.value,transformBuffer:t.aTransform.ref.value,instanceBuffer:t.aInstance.ref.value,positionTexture:t.tPosition.ref.value,groupTexture:t.tGroup.ref.value,colorData:i,colorType:t.dColorType.ref.value,boundingSphere:t.boundingSphere.ref.value,invariantBoundingSphere:t.invariantBoundingSphere.ref.value},e,r,n,o);C.updateIfChanged(t.dColorType,a.type),C.update(t.tColorGrid,a.texture),C.update(t.uColorTexDim,a.gridTexDim),C.update(t.uColorGridDim,a.gridDim),C.update(t.uColorGridTransform,a.gridTransform)}function ige(t){return t==="groupInstance"}function t7(t,e,r,n,o){if(!ige(t.dOverpaintType.ref.value))return;r*=3,n.namedTextures[mv]||(n.namedTextures[mv]=n.resources.texture("image-uint8","rgba","ubyte","nearest"));let i=n.namedTextures[mv];i.load(t.tOverpaint.ref.value);let a=B1({vertexCount:t.uVertexCount.ref.value,instanceCount:t.uInstanceCount.ref.value,groupCount:t.uGroupCount.ref.value,transformBuffer:t.aTransform.ref.value,instanceBuffer:t.aInstance.ref.value,positionTexture:t.tPosition.ref.value,groupTexture:t.tGroup.ref.value,colorData:i,colorType:t.dOverpaintType.ref.value,boundingSphere:t.boundingSphere.ref.value,invariantBoundingSphere:t.invariantBoundingSphere.ref.value},e,r,n,o);C.updateIfChanged(t.dOverpaintType,a.type),C.update(t.tOverpaintGrid,a.texture),C.update(t.uOverpaintTexDim,a.gridTexDim),C.update(t.uOverpaintGridDim,a.gridDim),C.update(t.uOverpaintGridTransform,a.gridTransform)}function age(t){return t==="groupInstance"}function r7(t,e,r,n,o){if(!age(t.dTransparencyType.ref.value))return;r*=3,n.namedTextures[pv]||(n.namedTextures[pv]=n.resources.texture("image-uint8","alpha","ubyte","nearest"));let i=n.namedTextures[pv];i.load(t.tTransparency.ref.value);let a=B1({vertexCount:t.uVertexCount.ref.value,instanceCount:t.uInstanceCount.ref.value,groupCount:t.uGroupCount.ref.value,transformBuffer:t.aTransform.ref.value,instanceBuffer:t.aInstance.ref.value,positionTexture:t.tPosition.ref.value,groupTexture:t.tGroup.ref.value,colorData:i,colorType:t.dTransparencyType.ref.value,boundingSphere:t.boundingSphere.ref.value,invariantBoundingSphere:t.invariantBoundingSphere.ref.value},e,r,n,o);C.updateIfChanged(t.dTransparencyType,a.type),C.update(t.tTransparencyGrid,a.texture),C.update(t.uTransparencyTexDim,a.gridTexDim),C.update(t.uTransparencyGridDim,a.gridDim),C.update(t.uTransparencyGridTransform,a.gridTransform)}function sge(t){return t==="groupInstance"}function n7(t,e,r,n,o){if(!sge(t.dEmissiveType.ref.value))return;r*=3,n.namedTextures[pv]||(n.namedTextures[pv]=n.resources.texture("image-uint8","alpha","ubyte","nearest"));let i=n.namedTextures[pv];i.load(t.tEmissive.ref.value);let a=B1({vertexCount:t.uVertexCount.ref.value,instanceCount:t.uInstanceCount.ref.value,groupCount:t.uGroupCount.ref.value,transformBuffer:t.aTransform.ref.value,instanceBuffer:t.aInstance.ref.value,positionTexture:t.tPosition.ref.value,groupTexture:t.tGroup.ref.value,colorData:i,colorType:t.dEmissiveType.ref.value,boundingSphere:t.boundingSphere.ref.value,invariantBoundingSphere:t.invariantBoundingSphere.ref.value},e,r,n,o);C.updateIfChanged(t.dEmissiveType,a.type),C.update(t.tEmissiveGrid,a.texture),C.update(t.uEmissiveTexDim,a.gridTexDim),C.update(t.uEmissiveGridDim,a.gridDim),C.update(t.uEmissiveGridTransform,a.gridTransform)}function lge(t){return t==="groupInstance"}function o7(t,e,r,n,o){if(!lge(t.dSubstanceType.ref.value))return;r*=3,n.namedTextures[mv]||(n.namedTextures[mv]=n.resources.texture("image-uint8","rgba","ubyte","nearest"));let i=n.namedTextures[mv];i.load(t.tSubstance.ref.value);let a=B1({vertexCount:t.uVertexCount.ref.value,instanceCount:t.uInstanceCount.ref.value,groupCount:t.uGroupCount.ref.value,transformBuffer:t.aTransform.ref.value,instanceBuffer:t.aInstance.ref.value,positionTexture:t.tPosition.ref.value,groupTexture:t.tGroup.ref.value,colorData:i,colorType:t.dSubstanceType.ref.value,boundingSphere:t.boundingSphere.ref.value,invariantBoundingSphere:t.invariantBoundingSphere.ref.value},e,r,n,o);C.updateIfChanged(t.dSubstanceType,a.type),C.update(t.tSubstanceGrid,a.texture),C.update(t.uSubstanceTexDim,a.gridTexDim),C.update(t.uSubstanceGridDim,a.gridDim),C.update(t.uSubstanceGridTransform,a.gridTransform)}var Vt;(function(t){function e(p,h){p&&(p.state.visible=h)}t.setVisibility=e;function r(p,h){p&&(p.state.alphaFactor=h)}t.setAlphaFactor=r;function n(p,h){p&&(p.state.pickable=h)}t.setPickable=n;function o(p,h){p&&(p.state.colorOnly=h)}t.setColorOnly=o;function i(p,h,f,b,v){if(!p||Wn(h))return!1;let{tMarker:x,uMarker:S,markerAverage:T,markerStatus:E,uGroupCount:_,instanceCount:D,instanceGranularity:P}=p.values,A=P.ref.value?D.ref.value:_.ref.value*D.ref.value,{array:I}=x.ref.value,k=E.ref.value;if(!So(h)){let F=0;if(b(h,G=>(F+=Oe.size(G),!0),!0),F===0)return!1;F===A&&(h=xf)}let M=!1,R=-1,B=-1;if(So(h)){let F=Vq(f,k);F.status!==-1?(M=k!==F.status,M&&Nq(I,F.status,A)):M=ka(I,Oe.ofLength(A),f),R=F.average,B=F.status}else M=b(h,F=>ka(I,F,f),!0),M&&(R=zq(f,k),v&&v.status!==-1&&R===-1&&kn.isReverse(v.action,f)&&st.areEqual(h,v.loci)&&(B=v.status,R=B===0?0:.5));return M&&(R===-1&&(R=LA(I,A),R===0&&(B=0)),v&&(v.action=f,v.loci=h,v.status=k),C.updateIfChanged(S,B),B===-1&&C.update(x,x.ref.value),C.updateIfChanged(T,R),C.updateIfChanged(E,B)),M}t.mark=i;function a(p,h,f,b,v){if(!p)return;let{tOverpaint:x,dOverpaintType:S,dOverpaint:T,uGroupCount:E,instanceCount:_,instanceGranularity:D}=p.values,P=D.ref.value?_.ref.value:E.ref.value*_.ref.value,A=D.ref.value?"instance":"groupInstance";Cj(h.layers.length?P:0,A,p.values);let{array:I}=x.ref.value;b&&XA(I,0,P);for(let k=0,M=h.layers.length;k{let H=Oe.start(V),Q=Oe.end(V);return F?XA(I,H,Q):Sj(I,H,Q,B)},!1)}if(C.update(x,x.ref.value),C.updateIfChanged(S,A),C.updateIfChanged(T,h.layers.length>0),h.layers.length!==0&&A!=="instance"&&v&&El(v.props)){let{geometry:k,props:M,webgl:R}=v;if(k.kind==="mesh"){let{resolution:B,overpaintTexture:F}=k.meta,G=os(M.smoothColors,!0,B);G&&(Xq(p.values,G.resolution,G.stride,R,F),k.meta.overpaintTexture=p.values.tOverpaintGrid.ref.value)}else if(R&&k.kind==="texture-mesh"){let{resolution:B,overpaintTexture:F}=k.meta,G=os(M.smoothColors,!0,B);G&&(t7(p.values,G.resolution,G.stride,R,F),k.meta.overpaintTexture=p.values.tOverpaintGrid.ref.value)}}}t.setOverpaint=a;function s(p,h,f,b,v){if(!p)return;let{tTransparency:x,dTransparencyType:S,transparencyAverage:T,dTransparency:E,uGroupCount:_,instanceCount:D,instanceGranularity:P}=p.values,A=P.ref.value?D.ref.value:_.ref.value*D.ref.value,I=P.ref.value?"instance":"groupInstance";Pj(h.layers.length?A:0,I,p.values);let{array:k}=x.ref.value;b&&_j(k,0,A);for(let M=0,R=h.layers.length;M{let H=Oe.start(V),Q=Oe.end(V);return wj(k,H,Q,F)},!1)}if(C.update(x,x.ref.value),C.updateIfChanged(T,YA(k,A)),C.updateIfChanged(S,I),C.updateIfChanged(E,h.layers.length>0),h.layers.length!==0&&I!=="instance"&&v&&El(v.props)){let{geometry:M,props:R,webgl:B}=v;if(M.kind==="mesh"){let{resolution:F,transparencyTexture:G}=M.meta,V=os(R.smoothColors,!0,F);V&&(Yq(p.values,V.resolution,V.stride,B,G),M.meta.transparencyTexture=p.values.tTransparencyGrid.ref.value)}else if(B&&M.kind==="texture-mesh"){let{resolution:F,transparencyTexture:G}=M.meta,V=os(R.smoothColors,!0,F);V&&(r7(p.values,V.resolution,V.stride,B,G),M.meta.transparencyTexture=p.values.tTransparencyGrid.ref.value)}}}t.setTransparency=s;function l(p,h,f,b,v){if(!p)return;let{tEmissive:x,dEmissiveType:S,emissiveAverage:T,dEmissive:E,uGroupCount:_,instanceCount:D,instanceGranularity:P}=p.values,A=P.ref.value?D.ref.value:_.ref.value*D.ref.value,I=P.ref.value?"instance":"groupInstance";Fj(h.layers.length?A:0,I,p.values);let{array:k}=x.ref.value;b&&Oj(k,0,A);for(let M=0,R=h.layers.length;M{let H=Oe.start(V),Q=Oe.end(V);return Bj(k,H,Q,F)},!1)}if(C.update(x,x.ref.value),C.updateIfChanged(T,KA(k,A)),C.updateIfChanged(S,I),C.updateIfChanged(E,h.layers.length>0),h.layers.length!==0&&I!=="instance"&&v&&El(v.props)){let{geometry:M,props:R,webgl:B}=v;if(M.kind==="mesh"){let{resolution:F,emissiveTexture:G}=M.meta,V=os(R.smoothColors,!0,F);V&&(Qq(p.values,V.resolution,V.stride,B,G),M.meta.emissiveTexture=p.values.tEmissiveGrid.ref.value)}else if(B&&M.kind==="texture-mesh"){let{resolution:F,emissiveTexture:G}=M.meta,V=os(R.smoothColors,!0,F);V&&(n7(p.values,V.resolution,V.stride,B,G),M.meta.emissiveTexture=p.values.tEmissiveGrid.ref.value)}}}t.setEmissive=l;function c(p,h,f,b,v){if(!p)return;let{tSubstance:x,dSubstanceType:S,dSubstance:T,uGroupCount:E,instanceCount:_,instanceGranularity:D}=p.values,P=D.ref.value?_.ref.value:E.ref.value*_.ref.value,A=D.ref.value?"instance":"groupInstance";Rj(h.layers.length?P:0,A,p.values);let{array:I}=x.ref.value;b&&QA(I,0,P);for(let k=0,M=h.layers.length;k{let H=Oe.start(V),Q=Oe.end(V);return F?QA(I,H,Q):Mj(I,H,Q,B)},!1)}if(C.update(x,x.ref.value),C.updateIfChanged(S,A),C.updateIfChanged(T,h.layers.length>0),h.layers.length!==0&&A!=="instance"&&v&&El(v.props)){let{geometry:k,props:M,webgl:R}=v;if(k.kind==="mesh"){let{resolution:B,substanceTexture:F}=k.meta,G=os(M.smoothColors,!0,B);G&&(Kq(p.values,G.resolution,G.stride,R,F),k.meta.substanceTexture=p.values.tSubstanceGrid.ref.value)}else if(R&&k.kind==="texture-mesh"){let{resolution:B,substanceTexture:F}=k.meta,G=os(M.smoothColors,!0,B);G&&(o7(p.values,G.resolution,G.stride,R,F),k.meta.substanceTexture=p.values.tSubstanceGrid.ref.value)}}}t.setSubstance=c;function u(p,h,f,b){if(!p)return;let{tClipping:v,dClippingType:x,dClipping:S,uGroupCount:T,instanceCount:E,instanceGranularity:_}=p.values,D=_.ref.value?E.ref.value:T.ref.value*E.ref.value,{layers:P}=h,A=_.ref.value?"instance":"groupInstance";Aj(P.length?D:0,A,p.values);let{array:I}=v.ref.value;b&&Dj(I,0,D);for(let k=0,M=h.layers.length;k{let V=Oe.start(G),H=Oe.end(G);return Ij(I,V,H,B)},!1)}C.update(v,v.ref.value),C.updateIfChanged(x,A),C.updateIfChanged(S,h.layers.length>0)}t.setClipping=u;function d(p,h){p&&(C.updateIfChanged(p.values.uOverpaintStrength,h.overpaint),C.updateIfChanged(p.values.uTransparencyStrength,h.transparency),C.updateIfChanged(p.values.uEmissiveStrength,h.emissive),C.updateIfChanged(p.values.uSubstanceStrength,h.substance))}t.setThemeStrength=d;function m(p,h,f){if(!p||!h&&!f)return;let{values:b}=p;h&&(W.copy(b.matrix.ref.value,h),C.update(b.matrix,b.matrix.ref.value)),f?(b.extraTransform.ref.value.set(f),C.update(b.extraTransform,b.extraTransform.ref.value)):f===null&&(E0(b.extraTransform.ref.value,b.instanceCount.ref.value),C.update(b.extraTransform,b.extraTransform.ref.value)),WA(b,b.invariantBoundingSphere.ref.value,b.instanceGrid.ref.value.cellSize,b.instanceGrid.ref.value.batchSize);let v=Hn(b.invariantBoundingSphere.ref.value,b.transform.ref.value,b.instanceCount.ref.value,0);C.update(b.boundingSphere,v)}t.setTransform=m})(Vt||(Vt={}));function Xr(t,e){return{kind:t,layers:e}}(function(t){t.Empty={kind:"empty-loci",layers:[]};let e;(function(u){u.is=Wc.has;let d;(function(v){v[v.None=0]="None",v[v.One=1]="One",v[v.Two=2]="Two",v[v.Three=4]="Three",v[v.Four=8]="Four",v[v.Five=16]="Five",v[v.Six=32]="Six"})(d=u.Flag||(u.Flag={}));function m(v){return Wc.create(v)}u.create=m,u.Names={one:d.One,two:d.Two,three:d.Three,four:d.Four,five:d.Five,six:d.Six};function p(v){return v in u.Names}u.isName=p;function h(v){switch(v){case"one":return d.One;case"two":return d.Two;case"three":return d.Three;case"four":return d.Four;case"five":return d.Five;case"six":return d.Six}}u.fromName=h;function f(v){let x=d.None;for(let S=0,T=v.length;S{h.push({loci:f,groups:b})}),{kind:"element-loci",layers:h}}else return u}t.merge=i;function a(u,d){if(n(u))return u;if(u.kind==="element-loci"){let{structure:m}=u.layers[0].loci,p=[];for(let h of u.layers){let{loci:f,groups:b}=h,v=z.Loci.remap(f,d);f=z.Loci.remap(v,m),z.Loci.isEmpty(f)||p.push({loci:f,groups:b})}return{kind:"element-loci",layers:p}}else return u}t.filter=a;function s(u,d){let m=[];for(let p=0,h=u.length;p{h.push({loci:f,material:b,clear:!1})}),{kind:"element-loci",layers:h}}else return c}t.merge=o;function i(c,u){if(r(c))return c;if(c.kind==="element-loci"){let{structure:d}=c.layers[0].loci,m=[];for(let p of c.layers){let{loci:h,material:f,clear:b}=p,v=z.Loci.remap(h,u);h=z.Loci.remap(v,d),z.Loci.isEmpty(h)||m.push({loci:h,material:f,clear:b})}return{kind:"element-loci",layers:m}}else return c}t.filter=i;function a(c,u){let d=[];for(let m=0,p=c.length;m{p.push({loci:h,value:f})}),{kind:"element-loci",layers:p}}else return c}t.merge=o;function i(c,u){if(r(c))return c;if(c.kind==="element-loci"){let{structure:d}=c.layers[0].loci,m=[];for(let p of c.layers){let{loci:h,value:f}=p,b=z.Loci.remap(h,u);h=z.Loci.remap(b,d),z.Loci.isEmpty(h)||m.push({loci:h,value:f})}return{kind:"element-loci",layers:m}}else return c}t.filter=i;function a(c,u){let d=[];for(let m=0,p=c.length;mrt.Empty,getParams:()=>({}),defaultValues:{},defaultColorTheme:wo.EmptyProvider,defaultSizeTheme:so.EmptyProvider,isApplicable:()=>!0};function a7(t){return t.map(e=>[e.name,e.provider.label])}var fv=class{get default(){return this._list[0]}get types(){return a7(this._list)}constructor(){this._list=[],this._map=new Map,this._name=new Map}add(e){if(this._map.has(e.name))throw new Error(`${e.name} already registered.`);this._list.push({name:e.name,provider:e}),this._map.set(e.name,e),this._name.set(e,e.name)}getName(e){if(!this._name.has(e))throw new Error(`'${e.label}' is not a registered represenatation provider.`);return this._name.get(e)}remove(e){let r=e.name;this._list.splice(this._list.findIndex(o=>o.name===r),1);let n=this._map.get(r);n&&(this._map.delete(r),this._name.delete(n))}get(e){return this._map.get(e)||cge}get list(){return this._list}getApplicableList(e){return this._list.filter(r=>r.provider.isApplicable(e))}getApplicableTypes(e){return a7(this.getApplicableList(e))}clear(){this._list.length=0,this._map.clear(),this._name.clear()}};var rt;(function(t){let e;(function(s){function l(u,d){return u.repr===d.repr&&st.areEqual(u.loci,d.loci)}s.areEqual=l;function c(u){return st.isEmpty(u.loci)}s.isEmpty=c,s.Empty={loci:St}})(e=t.Loci||(t.Loci={}));function r(){return{visible:!0,alphaFactor:1,pickable:!0,colorOnly:!1,syncManually:!1,transform:W.identity(),overpaint:io.Empty,transparency:Jo.Empty,emissive:ti.Empty,substance:ei.Empty,clipping:Xr.Empty,themeStrength:{overpaint:1,transparency:1,emissive:1,substance:1},markerActions:kn.All}}t.createState=r;function n(s,l){l.visible!==void 0&&(s.visible=l.visible),l.alphaFactor!==void 0&&(s.alphaFactor=l.alphaFactor),l.pickable!==void 0&&(s.pickable=l.pickable),l.colorOnly!==void 0&&(s.colorOnly=l.colorOnly),l.overpaint!==void 0&&(s.overpaint=l.overpaint),l.transparency!==void 0&&(s.transparency=l.transparency),l.emissive!==void 0&&(s.emissive=l.emissive),l.substance!==void 0&&(s.substance=l.substance),l.clipping!==void 0&&(s.clipping=l.clipping),l.themeStrength!==void 0&&(s.themeStrength=l.themeStrength),l.syncManually!==void 0&&(s.syncManually=l.syncManually),l.transform!==void 0&&W.copy(s.transform,l.transform),l.markerActions!==void 0&&(s.markerActions=l.markerActions)}t.updateState=n,t.StateBuilder={create:r,update:n},t.Empty={label:"",groupCount:0,renderObjects:[],geometryVersion:-1,props:{},params:{},updated:new ln,state:r(),theme:An.createEmpty(),createOrUpdate:()=>ie.constant("",void 0),setState:()=>{},setTheme:()=>{},getLoci:()=>St,getAllLoci:()=>[],eachLocation:()=>{},mark:()=>!1,destroy:()=>{}};class o{constructor(){this.curr=new Set,this.next=new Set,this._version=-1}get version(){return this._version}add(l,c){this.next.add(rm(l,c))}snapshot(){no.areEqual(this.curr,this.next)||(this._version+=1),[this.curr,this.next]=[this.next,this.curr],this.next.clear()}}t.GeometryState=o;function i(s,l,c,u,d){let m=0,p=new ln,h=new o,f=u.create(),b=An.createEmpty(),v,x,S,T={},E=Object.keys(d).map((_,D)=>{T[D]=_;let P=d[_](l,c);return P.setState(f),P});return{label:s,updated:p,get groupCount(){let _=0;if(x){let{visuals:D}=x;for(let P=0,A=E.length;P{D&&D!==S&&(v=c(l,D),S=D,x||(x=g.getDefaultValues(v)));let P=k1(Object.assign({},x,_),S);Object.assign(x,_,P);let{visuals:A}=x;return ie.create(`Creating or updating '${s}' representation`,I=>N(this,null,function*(){for(let k=0,M=E.length;k{let{visuals:D}=x;for(let P=0,A=E.length;P{let _=[],{visuals:D}=x;for(let P=0,A=E.length;P{let{visuals:D}=x;for(let P=0,A=E.length;P{let P=!1;for(let A=0,I=E.length;A{u.update(f,_);for(let D=0,P=E.length;D{b=_;for(let D=0,P=E.length;D{let v=k1(Object.assign({},f,b));return Object.assign(f,b,v),ie.create(`Updating '${s}' representation`,x=>N(this,null,function*(){d.add(0,l.id),d.snapshot(),u.next(c++)}))},get state(){return m},get theme(){return p},getLoci:()=>St,getAllLoci:()=>[],eachLocation:()=>{},mark:(b,v)=>!1,setState:b=>{b.visible!==void 0&&Vt.setVisibility(l,b.visible),b.alphaFactor!==void 0&&Vt.setAlphaFactor(l,b.alphaFactor),b.pickable!==void 0&&Vt.setPickable(l,b.pickable),b.colorOnly!==void 0&&Vt.setColorOnly(l,b.colorOnly),b.overpaint,b.transparency,b.emissive,b.substance,b.clipping,b.themeStrength!==void 0&&Vt.setThemeStrength(l,b.themeStrength),b.transform!==void 0&&Vt.setTransform(l,b.transform),t.updateState(m,b)},setTheme:()=>{},destroy(){}}}t.fromRenderObject=a})(rt||(rt={}));function Yn(t,e,r={}){let n=0,o=new ln,i=rt.createState(),a=rl(),s=[],l,c,u=-1,d=An.createEmpty(),m=g.getDefaultValues(e.Params),p,h,f;r.modifyState&&rt.updateState(i,r.modifyState(i));let b=Bl.create();function v(E={},_){Bl.reset(b),!(!_&&!c)&&(_&&!c?b.createNew=!0:_&&c&&_.id===c.id||(_&&c&&_.id!==c.id?(b.updateTransform=!0,b.createGeometry=!0):_&&console.warn("unexpected state")),E.instanceGranularity!==m.instanceGranularity&&(b.updateTransform=!0),b.updateTransform&&(b.updateColor=!0,b.updateSize=!0,b.updateMatrix=!0),b.createGeometry&&(b.updateColor=!0,b.updateSize=!0))}function x(E={},_){return r.modifyProps&&(E=r.modifyProps(E)),ie.create("ShapeRepresentation.create",D=>N(this,null,function*(){let P=Object.assign(m,E),A=_?yield t(D,_,P,c):void 0;if(v(E,A),A&&(c=A,Object.assign(d,Yt.getTheme(c))),b.createNew){s.length=0,h=Yt.groupIterator(c);let I=Yt.createTransform(c.transforms,c.geometry.boundingSphere,P.cellSize,P.batchSize),k=e.createValues(c.geometry,I,h,d,P),M=e.createRenderableState(P);r.modifyState&&Object.assign(M,r.modifyState(M)),rt.updateState(i,M),l=tu(c.geometry.kind,k,M,a),l&&s.push(l),f=e.createPositionIterator(c.geometry,l.values)}else{if(!l)throw new Error("expected renderObject to be available");if(b.updateTransform){h=Yt.groupIterator(c);let{instanceCount:I,groupCount:k}=h;E.instanceGranularity?jr(I,"instance",l.values):jr(I*k,"groupInstance",l.values)}b.updateMatrix&&(Yt.createTransform(c.transforms,c.geometry.boundingSphere,P.cellSize,P.batchSize,l.values),"lodLevels"in l.values&&C.update(l.values.lodLevels,l.values.lodLevels.ref.value)),b.createGeometry&&(C.updateIfChanged(l.values.drawCount,eo.getDrawCount(c.geometry)),C.updateIfChanged(l.values.uVertexCount,eo.getVertexCount(c.geometry)),C.updateIfChanged(l.values.uGroupCount,eo.getGroupCount(c.geometry))),(b.updateTransform||b.createGeometry)&&(e.updateBoundingSphere(l.values,c.geometry),f=e.createPositionIterator(c.geometry,l.values)),b.updateColor&&uo(h,f,d.color,l.values),b.updateSize&&"uSize"in l.values&&Sa(h,d.size,l.values),e.updateValues(l.values,P),e.updateRenderableState(l.state,P)}m=P,(b.createGeometry||b.createNew)&&(u+=1),o.next(n++)}))}function S(E,_,D){let P=!1;if(!bi.isLoci(E)||bi.isLociEmpty(E)||E.shape!==_)return!1;for(let A of E.groups)D(Oe.ofSingleton(A.instance))&&(P=!0);return P}function T(E,_){return So(E)||Yt.isLoci(E)&&E.shape===c?m.instanceGranularity?_(Oe.ofBounds(0,c.transforms.length)):_(Oe.ofBounds(0,c.groupCount*c.transforms.length)):m.instanceGranularity?S(E,c,_):uge(E,c,_)}return{label:"Shape geometry",get groupCount(){return h?h.count:0},get props(){return m},get params(){return p},get state(){return i},get theme(){return d},renderObjects:s,get geometryVersion(){return u},updated:o,createOrUpdate:x,getLoci(E){let{objectId:_,groupId:D,instanceId:P}=E;return l&&l.id===_?bi.Loci(c,[{ids:we.ofSingleton(D),instance:P}]):St},getAllLoci(){return[Yt.Loci(c)]},eachLocation:E=>{for(h.reset();h.hasNext;){let{location:_,isSecondary:D}=h.move();E(_,D)}},mark(E,_){if(!kn.is(i.markerActions,_))return!1;if(bi.isLoci(E)||Yt.isLoci(E)){if(E.shape!==c)return!1}else if(!So(E))return!1;return Vt.mark(l,E,_,T)},setState(E){r.modifyState&&(E=r.modifyState(E)),l&&(E.visible!==void 0&&Vt.setVisibility(l,E.visible),E.alphaFactor!==void 0&&Vt.setAlphaFactor(l,E.alphaFactor),E.pickable!==void 0&&Vt.setPickable(l,E.pickable),E.colorOnly!==void 0&&Vt.setColorOnly(l,E.colorOnly),E.overpaint!==void 0&&Vt.setOverpaint(l,E.overpaint,T,!0),E.transparency!==void 0&&Vt.setTransparency(l,E.transparency,T,!0),E.substance!==void 0&&Vt.setSubstance(l,E.substance,T,!0),E.transform!==void 0&&Vt.setTransform(l,E.transform)),rt.updateState(i,E)},setTheme(E){ht&&console.warn("The `ShapeRepresentation` theme is fixed to `ShapeGroupColorTheme` and `ShapeGroupSizeTheme`. Colors are taken from `Shape.getColor` and sizes from `Shape.getSize`")},destroy(){s.length=0,l&&(l.state.disposed=!0,l=void 0)}}}function uge(t,e,r){if(!bi.isLoci(t)||t.shape!==e)return!1;let n=!1,{groupCount:o}=e,{groups:i}=t;for(let{ids:a,instance:s}of i)if(Oe.is(a)){let l=s*o+Oe.start(a),c=s*o+Oe.end(a);r(Oe.ofBounds(l,c))&&(n=!0)}else for(let l=0,c=a.length;l{e.push(n(o),n(i),n(a))}}}var du=(1+Math.sqrt(5))/2,f7=[-1,du,0,1,du,0,-1,-du,0,1,-du,0,0,-1,du,0,1,du,0,-1,-du,0,1,-du,du,0,-1,du,0,1,-du,0,-1,-du,0,1],pge=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],fge=[0,11,5,11,0,5,1,5,0,1,1,7,0,7,7,10,0,10,10,11,5,9,4,11,2,10,6,7,1,8,3,9,4,9,3,4,2,4,2,3,2,6,3,6,6,8,3,8,8,9,4,5,2,11,6,10,7,8,1,9],l3;function h7(){return l3||(l3=Dg(f7,pge)),l3}var fnt=am(f7,fge);var{vertices:hge,indices:gge}=h7();function Sd(t){return 10*Math.pow(Math.pow(2,t),2)+2}function g7(t){return p7(hge,gge,{detail:t,radius:1})}var y7=new Map,yge=W.identity();function vge(t,e,r){return W.scaleUniformly(t,W.fromTranslation(t,e),r)}function c3(t){let e=y7.get(t);return e===void 0&&(e=g7(t),y7.set(t,e)),e}function Jt(t,e,r,n){Te.addPrimitive(t,vge(yge,e,r),c3(n))}var Cd={radiusTop:1,radiusBottom:1,height:1,radialSegments:8,heightSegments:1,topCap:!1,bottomCap:!1,thetaStart:0,thetaLength:Math.PI*2};function v7(t){let{radiusTop:e,radiusBottom:r,height:n,radialSegments:o,heightSegments:i,topCap:a,bottomCap:s,thetaStart:l,thetaLength:c}=w(w({},Cd),t),u=[],d=[],m=[],p=0,h=[],f=n/2;return b(),a&&e>0&&v(!0),s&&r>0&&v(!1),{vertices:new Float32Array(d),normals:new Float32Array(m),indices:new Uint32Array(u)};function b(){let x=y.zero(),S=(r-e)/n;for(let T=0;T<=i;++T){let E=[],_=T/i,D=_*(r-e)+e;for(let P=0;P<=o;++P){let I=P/o*c+l,k=Math.sin(I),M=Math.cos(I);d.push(D*k,-_*n+f,D*M),y.normalize(x,y.set(x,k,S,M)),m.push(...x),E.push(p++)}h.push(E)}for(let T=0;TYn(Dge,Be.Utils)},g3=w({},Pge);function Ige(t,e,r){let n=Te.createState(256,128,r),{fromFractional:o}=t.symmetry.spacegroup.cell;y.copy(wd,t.ref),e.attachment==="center"?(y.trunc(wd,wd),y.subScalar(wd,wd,.5)):y.floor(wd,wd),W.fromTranslation(O7,wd);let i=ik(ok(Tge),O7),a=Math.cbrt(t.symmetry.spacegroup.cell.volume)/300*e.cellScale;n.currentGroup=1,Te.addCage(n,o,i,a,2,20);let s=te.fromDimensionsAndTransform(te(),y.unit,o);y.transformMat4(wd,wd,o),te.translate(s,s,wd),te.expand(s,s,a);let l=Te.getMesh(n);return l.setBoundingSphere(s),l}function Dge(t,e,r,n){let o=Ige(e,r,n&&n.geometry),i=RT.getUnitcellLabel(e.symmetry);return Yt.create(i,e,o,()=>r.cellColor,()=>1,()=>i)}function y3(t,e,r){let n=y();return r.ref==="model"&&y.transformMat4(n,Et.getCenter(t),e.spacegroup.cell.toFractional),{symmetry:e,ref:n}}function F7(t,e){return rt.createMulti("Unit Cell",t,e,rt.StateBuilder,Ege)}var pu=new Uint16Array([0,1,2,1,3,2]),Yg=he.add3,Ma=he.add2,N7=he.add,Is;(function(t){function e(r={},n=2048,o=1024,i){n*=2,o*=2;let a=he.create(Float32Array,3,o,i?i.centerBuffer.ref.value:n),s=he.create(Float32Array,2,o,i?i.mappingBuffer.ref.value:n),l=he.create(Float32Array,1,o,i?i.depthBuffer.ref.value:n),c=he.create(Uint32Array,3,o,i?i.indexBuffer.ref.value:n),u=he.create(Float32Array,1,o,i?i.groupBuffer.ref.value:n),d=he.create(Float32Array,2,o,i?i.tcoordBuffer.ref.value:n),m=w(w({},g.getDefaultValues(Bo.Params)),r),{attachment:p,background:h,backgroundMargin:f,tether:b,tetherLength:v,tetherBaseWidth:x}=m,S=Gj(m),T=1/2.5*f,E=S.buffer/S.lineHeight,_=(D,P,A,I,k)=>{Yg(a,D,P,A),N7(l,I),N7(u,k)};return{add:(D,P,A,I,k,M,R)=>{let B=0,F=D.length;for(let J=0;J{let D=S.texture,P=he.compact(a,!0),A=he.compact(s,!0),I=he.compact(l,!0),k=he.compact(c,!0),M=he.compact(u,!0),R=he.compact(d,!0);return Bo.create(D,P,A,I,k,M,R,c.elementCount/2,i)}}}t.create=e})(Is||(Is={}));var vv={granularity:"element",condensed:!1,reverse:!1,countsOnly:!1,hidePrefix:!1,htmlStyling:!0};function fu(t,e={}){var r;switch(t.kind){case"structure-loci":return t.structure.models.map(d=>d.entry).filter(d=>!!d).join(", ");case"element-loci":return Qg(z.Stats.ofLoci(t),e);case"bond-loci":let n=t.bonds[0];return n?F1(n,e):"";case"shape-loci":return t.shape.name;case"group-loci":let o=t.groups[0];return o?t.shape.getLabel(we.start(o.ids),o.instance):"";case"every-loci":return"Everything";case"empty-loci":return"Nothing";case"data-loci":return t.getLabel();case"volume-loci":return t.volume.label||"Volume";case"isosurface-loci":return[`${t.volume.label||"Volume"}`,`Isosurface at ${xe.IsoValue.toString(t.isoValue)}`].join(" | ");case"cell-loci":let i=we.size(t.indices),a=we.start(t.indices),s=xe.IsoValue.absolute(t.volume.grid.cells.data[a]),l=xe.IsoValue.toRelative(s,t.volume.grid.stats),c=[`${t.volume.label||"Volume"}`,`${i===1?`Cell #${a}`:`${i} Cells`}`];return i===1&&c.push(`${xe.IsoValue.toString(s)} (${xe.IsoValue.toString(l)})`),c.join(" | ");case"segment-loci":let u=(r=xe.Segmentation.get(t.volume))===null||r===void 0?void 0:r.labels;if(u&&t.segments.length===1){let d=u[t.segments[0]];if(d)return d}return[`${t.volume.label||"Volume"}`,`${t.segments.length===1?`Segment ${t.segments[0]}`:`${t.segments.length} Segments`}`].join(" | ")}}function yv(t,e){return t===1?`1 ${e}`:`${t} ${e}s`}function O1(t,e,r,n,o,i){return`${Sc(e,{granularity:r,hidePrefix:n,reverse:o,condensed:i})} [+ ${yv(t-1,`other ${m0(r)}`)}]`}function Age(t){let{elements:e,model:r}=t,{chainAtomSegments:n,residueAtomSegments:o}=r.atomicHierarchy,i=n.offsets[n.index[e[0]]],a=n.offsets[n.index[e[e.length-1]]+1]-1;return o.index[a]-o.index[i]+1}function Qg(t,e={}){let r=w(w({},vv),e),n=kge(t,r.countsOnly,r.hidePrefix,r.condensed,r.reverse);return r.htmlStyling?n:sd(n)}function qf(t,e={}){let r=z.Stats.create();for(let n of t)z.Stats.add(r,r,z.Stats.ofLoci(n));return Qg(r,e)}function kge(t,e=!1,r=!1,n=!1,o=!1){let{structureCount:i,chainCount:a,residueCount:s,conformationCount:l,elementCount:c}=t;if(!e&&c===1&&s===0&&a===0)return Sc(t.firstElementLoc,{hidePrefix:r,condensed:n,granularity:"element",reverse:o});if(!e&&c===0&&s===1&&a===0)return Sc(t.firstResidueLoc,{hidePrefix:r,condensed:n,granularity:"residue",reverse:o});if(!e&&c===0&&s===0&&a===1){let{unit:u}=t.firstChainLoc,d=Pe.isAtomic(u)&&Age(u)===1||Pe.Traits.is(u.traits,Pe.Trait.MultiChain)?"residue":"chain";return Sc(t.firstChainLoc,{hidePrefix:r,condensed:n,granularity:d,reverse:o})}else if(e){let u=[];return i>0&&u.push(yv(i,"Structure")),a>0&&u.push(yv(a,"Chain")),s>0&&u.push(yv(s,"Residue")),l>0&&u.push(yv(l,"Conformation")),c>0&&u.push(yv(c,"Element")),u.join(" + ")}else{let u=[];return i>0&&u.push(i===1?Sc(t.firstStructureLoc,{hidePrefix:r,condensed:n,granularity:"structure",reverse:o}):O1(i,t.firstStructureLoc,"structure",r,o,n)),a>0&&(u.push(a===1?Sc(t.firstChainLoc,{condensed:n,granularity:"chain",hidePrefix:r,reverse:o}):O1(a,t.firstChainLoc,"chain",r,o,n)),r=!0),s>0&&(u.push(s===1?Sc(t.firstResidueLoc,{condensed:n,granularity:"residue",hidePrefix:r,reverse:o}):O1(s,t.firstResidueLoc,"residue",r,o,n)),r=!0),l>0&&(u.push(l===1?Sc(t.firstConformationLoc,{condensed:n,granularity:"conformation",hidePrefix:r,reverse:o}):O1(l,t.firstConformationLoc,"conformation",r,o,n)),r=!0),c>0&&u.push(c===1?Sc(t.firstElementLoc,{condensed:n,granularity:"element",hidePrefix:r,reverse:o}):O1(c,t.firstElementLoc,"element",r,o,n)),u.join(" + ")}}function F1(t,e={}){return gw({loci:[z.Loci(t.aStructure,[{unit:t.aUnit,indices:we.ofSingleton(t.aIndex)}]),z.Loci(t.bStructure,[{unit:t.bUnit,indices:we.ofSingleton(t.bIndex)}])]},e)}function gw(t,e={}){let r=w(w({},vv),e),n=Mge(t,r);return r.htmlStyling?n:sd(n)}function Mge(t,e){let{granularity:r,hidePrefix:n,reverse:o,condensed:i}=e,a=!0;for(let s of t.loci)if(!z.Loci.is(s)||z.Loci.size(s)!==1){a=!1;break}if(a){let l=t.loci.map(u=>{let{unit:d,indices:m}=u.elements[0];return z.Location.create(u.structure,d,d.elements[we.start(m)])}).map(u=>V7(u,r,n,o||i));if(i)return l.map(u=>u[0].replace(/\[.*\]/g,"").trim()).filter(u=>!!u).join(" \u2014 ");let c=0;for(let u=0,d=Math.min(...l.map(m=>m.length))-1;u0){let u=[l[0].join(" | ")];for(let d=1,m=l.length;d!!p).join(" | "));return u.join(" \u2014 ")}else return l.map(u=>u.filter(d=>!!d).join(" | ")).filter(u=>!!u).join("
")}else return t.loci.map(l=>fu(l,e)).filter(l=>!!l).join(i?" \u2014 ":"
")}function Sc(t,e={}){var r,n;let o=w(w({},vv),e),i=V7(t,o.granularity,o.hidePrefix,o.reverse||o.condensed),a=o.condensed?(n=(r=i[0])===null||r===void 0?void 0:r.replace(/\[.*\]/g,"").trim())!==null&&n!==void 0?n:"":i.filter(s=>!!s).join(" | ");return o.htmlStyling?a:sd(a)}function V7(t,e="element",r=!1,n=!1){let o=[];if(!r){let i=t.unit.model.entry;i.length>30&&(i=i.substr(0,27)+"\u2026"),o.push(`${i}`),e!=="structure"&&(o.push(`Model ${t.unit.model.modelNum}`),o.push(`Instance ${t.unit.conformation.operator.name}`))}return Pe.isAtomic(t.unit)?o.push(...Rge(t,e,n)):Pe.isCoarse(t.unit)?o.push(...Lge(t,e)):o.push("Unknown"),n?o.reverse():o}function Rge(t,e,r=!1){let n=z.Location.residueIndex(t),o=Ne.chain.label_asym_id(t),i=Ne.chain.auth_asym_id(t),a=t.unit.model.atomicHierarchy.residues.label_seq_id.valueKind(n)===0,s=Ne.residue.label_seq_id(t),l=Ne.residue.auth_seq_id(t),c=Ne.residue.pdbx_PDB_ins_code(t),u=Ne.atom.label_comp_id(t),d=Ne.atom.label_atom_id(t),m=Ne.atom.label_alt_id(t),p=Ne.atom.occupancy(t),h=Ne.residue.microheterogeneityCompIds(t),f=e==="residue"&&h.length>1?`(${h.join("|")})`:u,b=[];switch(e){case"element":b.push(`${d}${m?`%${m}`:""}`);case"conformation":e==="conformation"&&m&&b.push(`Conformation ${m}`);case"residue":let v=s===l||!a?l:s;b.push(`${f} ${v}${v!==l?` [auth ${l}]`:""}${c||""}`);case"chain":o===i?b.push(`${o}`):e==="chain"&&Pe.Traits.is(t.unit.traits,Pe.Trait.MultiChain)?b.push(`[auth ${i}]`):b.push(`${o} [auth ${i}]`)}return b.length>0&&p!==1&&!r&&(b[0]=`${b[0]} [occupancy ${Math.round(100*p)/100}]`),b.reverse()}function Lge(t,e){let r=Ne.coarse.asym_id(t),n=Ne.coarse.seq_id_begin(t),o=Ne.coarse.seq_id_end(t),i=[];switch(e){case"element":case"conformation":case"residue":if(n===o){let a=Ne.coarse.entityKey(t),l=t.unit.model.sequence.byEntityKey[a].sequence.compId.value(n-1);i.push(`${l} ${n}`)}else i.push(`${n}-${o}`);case"chain":i.push(`${r}`)}return i.reverse()}function bv(t,e={}){let r=w(U(w({},vv),{measureOnly:!1,unitLabel:"\u212B"}),e),[n,o]=t.loci.map(s=>st.getCenter(s)),i=`${y.distance(n,o).toFixed(2)} ${r.unitLabel}`;if(r.measureOnly)return i;let a=gw(t,r);return r.condensed?`${i} | ${a}`:`Distance ${i}
${a}`}function xv(t,e={}){let r=w(U(w({},vv),{measureOnly:!1}),e),[n,o,i]=t.loci.map(u=>st.getCenter(u)),a=y.sub(y(),n,o),s=y.sub(y(),i,o),l=`${Jd(y.angle(a,s)).toFixed(2)}\xB0`;if(r.measureOnly)return l;let c=gw(t,r);return r.condensed?`${l} | ${c}`:`Angle ${l}
${c}`}function Sv(t,e={}){let r=w(U(w({},vv),{measureOnly:!1}),e),[n,o,i,a]=t.loci.map(c=>st.getCenter(c)),s=`${Jd(y.dihedralAngle(n,o,i,a)).toFixed(2)}\xB0`;if(r.measureOnly)return s;let l=gw(t,r);return r.condensed?`${s} | ${l}`:`Dihedral ${s}
${l}`}var v3={customText:g.Text("",{label:"Text",description:"Override the label with custom value.",isEssential:!0}),textColor:g.Color(ut.black,{isEssential:!0}),textSize:g.Numeric(.5,{min:.1,max:10,step:.1},{isEssential:!0})},Wf=U(w(w({},Bo.Params),v3),{borderWidth:g.Numeric(.2,{min:0,max:.5,step:.01})});var z7={unitLabel:g.Text("\u212B",{isEssential:!0})},Bge=U(w(w({},Sr.Params),z7),{lineSizeAttenuation:g.Boolean(!0),linesColor:g.Color(ut.lightgreen,{isEssential:!0}),linesSize:g.Numeric(.075,{min:.01,max:5,step:.01}),dashLength:g.Numeric(.2,{min:.01,max:.2,step:.01})}),Oge=w(w({},Wf),z7),U7={lines:(t,e)=>Yn(Vge,Sr.Utils,{modifyState:r=>U(w({},r),{markerActions:kn.Highlighting})}),text:(t,e)=>Yn(Uge,Bo.Utils,{modifyState:r=>U(w({},r),{markerActions:tt.None})})},b3=U(w(w({},Bge),Oge),{visuals:g.MultiSelect(["lines","text"],g.objectToOptions(U7))});function Fge(){return{sphereA:te(),sphereB:te(),center:y(),distance:0}}function G7(t,e){let{sphereA:r,sphereB:n,center:o}=e,[i,a]=t.loci;return st.getBoundingSphere(i,r),st.getBoundingSphere(a,n),y.add(o,r.center,n.center),y.scale(o,o,.5),e.distance=y.distance(r.center,n.center),e}var N1=Fge();function j7(t,e){return t.pairs.length===1?`Distance ${bv(t.pairs[0],{unitLabel:e,measureOnly:!0})}`:`${t.pairs.length} Distances`}function Nge(t,e,r){let n=vi.create(128,64,r);for(let o=0,i=t.pairs.length;obv(e.pairs[s],r);return Yt.create(i,e,o,()=>r.linesColor,()=>r.linesSize,a)}function zge(t,e,r){let n=Is.create(e,128,64,r);for(let o=0,i=t.pairs.length;obv(e.pairs[s],r);return Yt.create(i,e,o,()=>r.textColor,()=>r.textSize,a)}function H7(t,e){return rt.createMulti("Distance",t,e,rt.StateBuilder,U7)}function x3(t){let e=t[0].loci,r=t[1].loci;return{pairs:[{loci:[e,r]}]}}function S3(t){let e=t[0].loci,r=t[1].loci,n=t[2].loci;return{triples:[{loci:[e,r,n]}]}}function C3(t){let e=t[0].loci,r=t[1].loci,n=t[2].loci,o=t[3].loci;return{quads:[{loci:[e,r,n,o]}]}}function T3(t){return{infos:[{loci:t[0].loci}]}}function w3(t){return{locis:t.map(e=>e.loci)}}function _3(t){return{locis:t.map(e=>e.loci)}}var Gge=w({},Wf),q7={text:(t,e)=>Yn(Wge,Bo.Utils)},P3=U(w({},Gge),{scaleByRadius:g.Boolean(!0),visuals:g.MultiSelect(["text"],g.objectToOptions(q7)),snapshotKey:g.Text("",{isEssential:!0,disableInteractiveUpdates:!0,description:"Activate the snapshot with the provided key when clicking on the label"}),tooltip:g.Text("",{isEssential:!0,multiline:!0,disableInteractiveUpdates:!0,placeholder:"Tooltip",description:"Tooltip text to be displayed when hovering over the label"})}),jge=te();function E3(t,e=!1){return t.label||fu(t.loci,{hidePrefix:!0,htmlStyling:!1,condensed:e})}function Hge(t){return t.infos.length===1?E3(t.infos[0]):`${t.infos.length} Labels`}function qge(t,e,r){let n=Is.create(e,128,64,r),o=e.customText.trim();for(let i=0,a=t.infos.length;il:c?u=d=>c:u=d=>E3(e.infos[d]),Yt.create(s,e,a,()=>r.textColor,()=>r.textSize,u)}function W7(t,e){return rt.createMulti("Label",t,e,rt.StateBuilder,q7)}var Kg=y(),Xge=W.identity(),$g=new Float32Array(6*3),Yge=new Uint8Array([0,1,2,3,4,5]);function X7(t,e,r,n,o){let{origin:i,dirA:a,dirB:s,dirC:l}=e;y.add(Kg,i,a),y.toArray(y.add(Kg,i,a),$g,0),y.toArray(y.sub(Kg,i,a),$g,3),y.toArray(y.add(Kg,i,s),$g,6),y.toArray(y.sub(Kg,i,s),$g,9),y.toArray(y.add(Kg,i,l),$g,12),y.toArray(y.sub(Kg,i,l),$g,15);let c=am($g,Yge),u=Yc.volume(e),d=Math.cbrt(u)/300*r;Te.addCage(t,Xge,c,d,n,o)}var pit=y.zero(),fit=y.zero();var Xf=y(),Qge=y(),Kge=y(),$ge=y(),Zge=W.identity(),Y7=new Float32Array(8*3),Jge=new Uint8Array([0,1,0,3,0,6,1,2,1,7,2,3,2,4,3,5,4,5,4,7,5,6,6,7]);function Q7(t,e,r,n,o){let{origin:i,dirA:a,dirB:s,dirC:l}=e,c=y.negate(Qge,a),u=y.negate(Kge,s),d=y.negate($ge,l),m=0,p=function(v,x,S){y.copy(Xf,i),y.add(Xf,Xf,v),y.add(Xf,Xf,x),y.add(Xf,Xf,S),y.toArray(Xf,Y7,m),m+=3};p(a,s,l),p(a,s,d),p(a,u,d),p(a,u,l),p(c,u,d),p(c,u,l),p(c,s,l),p(c,s,d);let h=am(Y7,Jge),f=Yc.volume(e),b=Math.cbrt(f)/300*r;Te.addCage(t,Zge,h,b,n,o)}var eye=W.identity(),K7=y();function tye(t,e,r,n,o){return y.add(K7,e,r),W.targetTo(t,e,K7,n),W.setTranslation(t,e),W.scale(t,t,o)}function Cv(t,e,r,n,o,i){Te.addPrimitive(t,tye(eye,e,r,n,o),c3(i))}var I3={color:g.Color(ut.orange),scaleFactor:g.Numeric(1,{min:.1,max:10,step:.1}),radiusScale:g.Numeric(2,{min:.1,max:10,step:.1})},rye=w(w({},Be.Params),I3),nye=w(w({},Be.Params),I3),oye=w(w({},Be.Params),I3),$7={axes:(t,e)=>Yn(sye,Be.Utils),box:(t,e)=>Yn(uye,Be.Utils),ellipsoid:(t,e)=>Yn(pye,Be.Utils)},D3=U(w(w(w({},rye),nye),oye),{visuals:g.MultiSelect(["box"],g.objectToOptions($7))});function iye(t){return`Principal Axes of ${qf(t,{countsOnly:!0})}`}function aye(t,e,r){let n=Te.createState(256,128,r),o=z.Loci.getPrincipalAxesMany(t.locis);return Yc.scale(o.momentsAxes,o.momentsAxes,e.scaleFactor),n.currentGroup=0,X7(n,o.momentsAxes,e.radiusScale,2,20),Te.getMesh(n)}function sye(t,e,r,n){let o=aye(e,r,n&&n.geometry),i=iye(e.locis);return Yt.create(i,e,o,()=>r.color,()=>1,()=>i)}function lye(t){return`Oriented Box of ${qf(t,{countsOnly:!0})}`}function cye(t,e,r){let n=Te.createState(256,128,r),o=z.Loci.getPrincipalAxesMany(t.locis);return Yc.scale(o.boxAxes,o.boxAxes,e.scaleFactor),n.currentGroup=0,Q7(n,o.boxAxes,e.radiusScale,2,20),Te.getMesh(n)}function uye(t,e,r,n){let o=cye(e,r,n&&n.geometry),i=lye(e.locis);return Yt.create(i,e,o,()=>r.color,()=>1,()=>i)}function dye(t){return`Oriented Ellipsoid of ${qf(t,{countsOnly:!0})}`}function mye(t,e,r){let n=Te.createState(256,128,r),i=z.Loci.getPrincipalAxesMany(t.locis).boxAxes,{origin:a,dirA:s,dirB:l}=i,c=Yc.size(y(),i);y.scale(c,c,.5*e.scaleFactor);let u=y.create(c[2],c[1],c[0]);return n.currentGroup=0,Cv(n,a,s,l,u,2),Te.getMesh(n)}function pye(t,e,r,n){let o=mye(e,r,n&&n.geometry),i=dye(e.locis);return Yt.create(i,e,o,()=>r.color,()=>1,()=>i)}function Z7(t,e){let r=rt.createMulti("Orientation",t,e,rt.StateBuilder,$7);return r.setState({markerActions:kn.Highlighting}),r}var fye={radius:1,segments:36,thetaStart:0,thetaLength:Math.PI*2};function yw(t){let{radius:e,segments:r,thetaStart:n,thetaLength:o}=w(w({},fye),t),i=o===Math.PI*2,a=i?r+1:r+2,s=new Float32Array(a*3),l=new Float32Array(a*3),c=new Uint32Array(r*3);s[0]=0,s[1]=0,s[2]=0,l[0]=0,l[1]=1,l[2]=0;for(let u=0,d=3;uYn(xye,Sr.Utils,{modifyState:r=>U(w({},r),{pickable:!1})}),arc:(t,e)=>Yn(Cye,Sr.Utils,{modifyState:r=>U(w({},r),{pickable:!1})}),sector:(t,e)=>Yn(wye,Be.Utils,{modifyProps:r=>U(w({},r),{alpha:r.sectorOpacity}),modifyState:r=>U(w({},r),{markerActions:kn.Highlighting})}),text:(t,e)=>Yn(Pye,Bo.Utils,{modifyState:r=>U(w({},r),{markerActions:tt.None})})},A3=U(w(w(w(w({},hye),gye),yye),Wf),{visuals:g.MultiSelect(["vectors","sector","text"],g.objectToOptions(tW))});function vye(){return{sphereA:te(),sphereB:te(),sphereC:te(),arcDirA:y(),arcDirC:y(),arcNormal:y(),radius:0,angle:0}}var Yf=y(),V1=W();function vw(t,e,r){let{sphereA:n,sphereB:o,sphereC:i}=e,{arcDirA:a,arcDirC:s,arcNormal:l}=e,[c,u,d]=t.loci;st.getBoundingSphere(c,n),st.getBoundingSphere(u,o),st.getBoundingSphere(d,i),y.sub(a,n.center,o.center),y.sub(s,i.center,o.center),y.cross(l,a,s);let p=Math.min(y.magnitude(a),y.magnitude(s))*r;return e.radius=p,e.angle=y.angle(a,s),e}function rW(t,e){let{radius:r,angle:n}=t,o=e?ST(n,r)/e:32;W.targetTo(V1,t.sphereB.center,t.sphereA.center,t.arcNormal),W.setTranslation(V1,t.sphereB.center),W.mul(V1,V1,W.rotY180);let i=yw({radius:r,thetaLength:n,segments:o});return A0(i,V1)}var Ra=vye();function bw(t){return t.triples.length===1?`Angle ${xv(t.triples[0],{measureOnly:!0})}`:`${t.triples.length} Angles`}function bye(t,e,r){let n=vi.create(128,64,r);for(let o=0,i=t.triples.length;or.color,()=>r.linesSize,()=>"")}function Sye(t,e,r){let n=vi.create(128,64,r);for(let o=0,i=t.triples.length;or.color,()=>r.linesSize,()=>"")}function Tye(t,e,r){let n=Te.createState(128,64,r);for(let o=0,i=t.triples.length;oxv(e.triples[s]);return Yt.create(i,e,o,()=>r.color,()=>1,a)}function _ye(t,e,r){let n=Is.create(e,128,64,r);for(let o=0,i=t.triples.length;oxv(e.triples[s]);return Yt.create(i,e,o,()=>r.textColor,()=>r.textSize,a)}function nW(t,e){return rt.createMulti("Angle",t,e,rt.StateBuilder,tW)}var oW={color:g.Color(ut.lightgreen),arcScale:g.Numeric(.7,{min:.01,max:1,step:.01})},xw=U(w(w({},Sr.Params),oW),{lineSizeAttenuation:g.Boolean(!0),linesSize:g.Numeric(.04,{min:.01,max:5,step:.01}),dashLength:g.Numeric(.04,{min:.01,max:.2,step:.01})}),Eye=w({},xw),Iye=w({},xw),Dye=w({},xw),Aye=w({},xw),kye=U(w(w({},Be.Params),oW),{ignoreLight:g.Boolean(!0),sectorOpacity:g.Numeric(.75,{min:0,max:1,step:.01})}),iW={vectors:(t,e)=>Yn(Lye,Sr.Utils,{modifyState:r=>U(w({},r),{pickable:!1})}),extenders:(t,e)=>Yn(zye,Sr.Utils,{modifyState:r=>U(w({},r),{pickable:!1})}),connector:(t,e)=>Yn(Oye,Sr.Utils,{modifyState:r=>U(w({},r),{pickable:!1})}),arms:(t,e)=>Yn(Nye,Sr.Utils,{modifyState:r=>U(w({},r),{pickable:!1})}),arc:(t,e)=>Yn(Gye,Sr.Utils,{modifyState:r=>U(w({},r),{pickable:!1})}),sector:(t,e)=>Yn(Hye,Be.Utils,{modifyProps:r=>U(w({},r),{alpha:r.sectorOpacity}),modifyState:r=>U(w({},r),{markerActions:kn.Highlighting})}),text:(t,e)=>Yn(Wye,Bo.Utils,{modifyState:r=>U(w({},r),{markerActions:tt.None})})},k3=U(w(w(w(w(w(w({},Eye),Iye),Dye),Aye),kye),Wf),{visuals:g.MultiSelect(["extenders","arms","sector","text"],g.objectToOptions(iW))});function Mye(){return{sphereA:te(),sphereB:te(),sphereC:te(),sphereD:te(),dirBA:y(),dirCD:y(),projA:y(),projD:y(),arcPointA:y(),arcPointD:y(),arcDirA:y(),arcDirD:y(),arcCenter:y(),arcNormal:y(),radius:0,angle:0}}var Ds=y(),z1=W();function Zg(t,e,r){let{sphereA:n,sphereB:o,sphereC:i,sphereD:a,dirBA:s,dirCD:l,projA:c,projD:u}=e,{arcPointA:d,arcPointD:m,arcDirA:p,arcDirD:h,arcCenter:f,arcNormal:b}=e,[v,x,S,T]=t.loci;st.getBoundingSphere(v,n),st.getBoundingSphere(x,o),st.getBoundingSphere(S,i),st.getBoundingSphere(T,a),y.add(f,o.center,i.center),y.scale(f,f,.5),y.sub(s,n.center,o.center),y.sub(l,a.center,i.center),y.add(d,f,s),y.add(m,f,l),y.sub(b,i.center,o.center),y.orthogonalize(p,b,s),y.orthogonalize(h,b,l),y.projectPointOnVector(c,d,p,f),y.projectPointOnVector(u,m,h,f);let _=Math.min(y.distance(c,f),y.distance(u,f))*r;y.setMagnitude(p,p,_),y.setMagnitude(h,h,_),y.add(d,f,p),y.add(m,f,h),e.radius=_,e.angle=y.dihedralAngle(n.center,o.center,i.center,a.center),y.matchDirection(Ds,b,y.sub(Ds,d,n.center));let D=y.angle(s,Ds),P=_/Math.cos(D-Sg);y.add(c,o.center,y.setMagnitude(Ds,s,P)),y.matchDirection(Ds,b,y.sub(Ds,m,a.center));let A=y.angle(l,Ds),I=_/Math.cos(A-Sg);return y.add(u,i.center,y.setMagnitude(Ds,l,I)),e}function aW(t,e){let{radius:r,angle:n}=t,o=e?ST(n,r)/e:32;W.targetTo(z1,t.arcCenter,n<0?t.arcPointD:t.arcPointA,t.arcNormal),W.setTranslation(z1,t.arcCenter),W.mul(z1,z1,W.rotY180);let i=yw({radius:r,thetaLength:Math.abs(n),segments:o});return A0(i,z1)}var wn=Mye();function Jg(t){return t.quads.length===1?`Dihedral ${Sv(t.quads[0],{measureOnly:!0})}`:`${t.quads.length} Dihedrals`}function Rye(t,e,r){let n=vi.create(128,64,r);for(let o=0,i=t.quads.length;or.color,()=>r.linesSize,()=>"")}function Bye(t,e,r){let n=vi.create(128,64,r);for(let o=0,i=t.quads.length;or.color,()=>r.linesSize,()=>"")}function Fye(t,e,r){let n=vi.create(128,64,r);for(let o=0,i=t.quads.length;or.color,()=>r.linesSize,()=>"")}function Vye(t,e,r){let n=vi.create(128,64,r);for(let o=0,i=t.quads.length;or.color,()=>r.linesSize,()=>"")}function Uye(t,e,r){let n=vi.create(128,64,r);for(let o=0,i=t.quads.length;or.color,()=>r.linesSize,()=>"")}function jye(t,e,r){let n=Te.createState(128,64,r);for(let o=0,i=t.quads.length;oSv(e.quads[s]);return Yt.create(i,e,o,()=>r.color,()=>1,a)}function qye(t,e,r){let n=Is.create(e,128,64,r);for(let o=0,i=t.quads.length;oSv(e.quads[s]);return Yt.create(i,e,o,()=>r.textColor,()=>r.textSize,a)}function sW(t,e){return rt.createMulti("Dihedral",t,e,rt.StateBuilder,iW)}var M3={};ua(M3,{BoxShape3D:()=>Xye,getBoxMesh:()=>Sw});var Xye=Je.BuiltIn({name:"box-shape-3d",display:"Box Shape",from:X.Root,to:X.Shape.Provider,params:{bottomLeft:g.Vec3(y()),topRight:g.Vec3(y.create(1,1,1)),radius:g.Numeric(.15,{min:.01,max:4,step:.01}),color:g.Color(ut.red)}})({canAutoUpdate(){return!0},apply({params:t}){return ie.create("Shape Representation",e=>N(this,null,function*(){return new X.Shape.Provider({label:"Box",data:t,params:Be.Params,getShape:(r,n)=>{let o=Sw(qe.create(t.bottomLeft,t.topRight),t.radius);return Yt.create("Box",n,o,()=>n.color,()=>1,()=>"Box")},geometryUtils:Be.Utils},{label:"Box"})}))}});function Sw(t,e,r){let n=y.sub(y(),t.max,t.min),o=W.fromTranslation(W(),y.create(.5,.5,.5)),i=W.fromScaling(W(),n),a=W.fromTranslation(W(),t.min),s=W.mul3(W(),a,i,o),l=Te.createState(256,128,r);l.currentGroup=1,Te.addCage(l,s,JT(),e,2,20);let c=Te.getMesh(l),u=y.scaleAndAdd(y(),t.min,n,.5),d=y.distance(t.min,u);return c.setBoundingSphere(te.create(u,d)),c}var lW={vertices:new Float32Array([-.5,.5,0,.5,.5,0,-.5,-.5,0,.5,-.5,0]),normals:new Float32Array([0,0,1,0,0,1,0,0,1,0,0,1]),indices:new Uint32Array([0,2,1,1,2,3])},zat={vertices:lW.vertices,edges:new Uint32Array([0,1,2,3,3,1,2,0])};function cW(){return lW}var Yye=U(w({},Be.Params),{color:g.Color(ut.orange),scaleFactor:g.Numeric(1,{min:.1,max:10,step:.1})}),uW={plane:(t,e)=>Yn($ye,Be.Utils)},L3=U(w({},Yye),{visuals:g.MultiSelect(["plane"],g.objectToOptions(uW))});function Qye(t){return`Best Fit Plane of ${qf(t,{countsOnly:!0})}`}var Qf=W(),R3=y();function Kye(t,e,r){let n=Te.createState(256,128,r),i=z.Loci.getPrincipalAxesMany(t.locis).boxAxes,a=cW();return y.add(R3,i.origin,i.dirC),W.targetTo(Qf,R3,i.origin,i.dirB),W.scale(Qf,Qf,Yc.size(R3,i)),W.scaleUniformly(Qf,Qf,e.scaleFactor),W.setTranslation(Qf,i.origin),n.currentGroup=0,Te.addPrimitive(n,Qf,a),Te.addPrimitiveFlipped(n,Qf,a),Te.getMesh(n)}function $ye(t,e,r,n){let o=Kye(e,r,n&&n.geometry),i=Qye(e.locis);return Yt.create(i,e,o,()=>r.color,()=>1,()=>i)}function dW(t,e){let r=rt.createMulti("Plane",t,e,rt.StateBuilder,uW);return r.setState({markerActions:kn.Highlighting}),r}var Tv=Je.BuiltIn({name:"structure-representation-3d",display:"3D Representation",from:X.Molecule.Structure,to:X.Molecule.Structure.Representation3D,params:(t,e)=>{let{registry:r,themes:n}=e.representation.structure,o=r.get(r.default.name);if(!t){let s={help:l=>{let{name:c,params:u}=l,m=n.colorThemeRegistry.get(c).factory({},u);return{description:m.description,legend:m.legend}}};return{type:g.Mapped(r.default.name,r.types,l=>g.Group(r.get(l).getParams(n,ue.Empty))),colorTheme:g.Mapped(o.defaultColorTheme.name,n.colorThemeRegistry.types,l=>g.Group(n.colorThemeRegistry.get(l).getParams({structure:ue.Empty})),s),sizeTheme:g.Mapped(o.defaultSizeTheme.name,n.sizeThemeRegistry.types,l=>g.Group(n.sizeThemeRegistry.get(l).getParams({structure:ue.Empty})))}}let i={structure:t.data},a={help:s=>{let{name:l,params:c}=s,d=n.colorThemeRegistry.get(l).factory(i,c);return{description:d.description,legend:d.legend}}};return{type:g.Mapped(r.default.name,r.getApplicableTypes(t.data),s=>g.Group(r.get(s).getParams(n,t.data))),colorTheme:g.Mapped(o.defaultColorTheme.name,n.colorThemeRegistry.getApplicableTypes(i),s=>g.Group(n.colorThemeRegistry.get(s).getParams(i)),a),sizeTheme:g.Mapped(o.defaultSizeTheme.name,n.sizeThemeRegistry.getApplicableTypes(i),s=>g.Group(n.sizeThemeRegistry.get(s).getParams(i)))}}})({canAutoUpdate({a:t,oldParams:e,newParams:r}){return t.data.elementCount<1e4||e.type.name===r.type.name&&r.type.params.quality!=="custom"},apply({a:t,params:e,cache:r},n){return ie.create("Structure Representation",o=>N(this,null,function*(){var i,a;let s={runtime:o,assetManager:n.managers.asset},l=n.representation.structure.registry.get(e.type.name),c=((i=l.getData)===null||i===void 0?void 0:i.call(l,t.data,e.type.params))||t.data;l.ensureCustomProperties&&(yield l.ensureCustomProperties.attach(s,c));let u=l.factory(w({webgl:(a=n.canvas3d)===null||a===void 0?void 0:a.webgl},n.representation.structure.themes),l.getParams);yield An.ensureDependencies(s,n.representation.structure.themes,{structure:c},e),u.setTheme(An.create(n.representation.structure.themes,{structure:c},e));let d=e.type.params||{};return yield u.createOrUpdate(d,c).runInContext(o),new X.Molecule.Structure.Representation3D({repr:u,sourceData:t.data},{label:l.label})}))},update({a:t,b:e,oldParams:r,newParams:n,cache:o},i){return ie.create("Structure Representation",a=>N(this,null,function*(){var s,l;if(n.type.name!==r.type.name)return Se.UpdateResult.Recreate;let c=i.representation.structure.registry.get(n.type.name);if(!((s=c.mustRecreate)===null||s===void 0)&&s.call(c,r.type.params,n.type.params))return Se.UpdateResult.Recreate;let u=((l=c.getData)===null||l===void 0?void 0:l.call(c,t.data,n.type.params))||t.data,d={runtime:a,assetManager:i.managers.asset};c.ensureCustomProperties&&(yield c.ensureCustomProperties.attach(d,u)),An.releaseDependencies(i.representation.structure.themes,{structure:e.data.sourceData},r),yield An.ensureDependencies(d,i.representation.structure.themes,{structure:u},n),e.data.repr.setTheme(An.create(i.representation.structure.themes,{structure:u},n));let m=w(w({},e.data.repr.props),n.type.params);return yield e.data.repr.createOrUpdate(m,u).runInContext(a),e.data.sourceData=t.data,Se.UpdateResult.Updated}))},dispose({b:t,params:e},r){if(!t||!e)return;let n=t.data.sourceData,o=r.representation.structure.registry.get(e.type.name);o.ensureCustomProperties&&o.ensureCustomProperties.detach(n),An.releaseDependencies(r.representation.structure.themes,{structure:n},e)},interpolate(t,e,r){if(t.colorTheme.name!=="uniform"||e.colorTheme.name!=="uniform")return r<=.5?t:e;let n=t.colorTheme.params.value,o=e.colorTheme.params.value,i=ce.interpolate(n,o,r);return{type:r<=.5?t.type:e.type,colorTheme:{name:"uniform",params:{value:i}},sizeTheme:r<=.5?t.sizeTheme:e.sizeTheme}}}),Zye=Je.BuiltIn({name:"unwind-structure-assembly-representation-3d",display:"Unwind Assembly 3D Representation",from:X.Molecule.Structure.Representation3D,to:X.Molecule.Structure.Representation3DState,params:{t:g.Numeric(0,{min:0,max:1,step:.01})}})({canAutoUpdate(){return!0},apply({a:t,params:e}){let r=t.data.sourceData,n=new bp(r);return o3(r,n,e.t),new X.Molecule.Structure.Representation3DState({state:{unitTransforms:n},initialState:{unitTransforms:new bp(r)},info:r,repr:t.data.repr},{label:`Unwind T = ${e.t.toFixed(2)}`})},update({a:t,b:e,newParams:r,oldParams:n}){let o=e.data.info;if(t.data.sourceData!==o)return Se.UpdateResult.Recreate;if(t.data.repr!==e.data.repr)return Se.UpdateResult.Recreate;if(n.t===r.t)return Se.UpdateResult.Unchanged;let i=e.data.state.unitTransforms;return o3(o,i,r.t),e.label=`Unwind T = ${r.t.toFixed(2)}`,e.data.repr=t.data.repr,Se.UpdateResult.Updated}}),Jye=Je.BuiltIn({name:"explode-structure-representation-3d",display:"Explode 3D Representation",from:X.Molecule.Structure.Representation3D,to:X.Molecule.Structure.Representation3DState,params:{t:g.Numeric(0,{min:0,max:1,step:.01})}})({canAutoUpdate(){return!0},apply({a:t,params:e}){let r=t.data.sourceData,n=new bp(r);return i3(r,n,e.t,r.root.boundary.sphere),new X.Molecule.Structure.Representation3DState({state:{unitTransforms:n},initialState:{unitTransforms:new bp(r)},info:r,repr:t.data.repr},{label:`Explode T = ${e.t.toFixed(2)}`})},update({a:t,b:e,newParams:r,oldParams:n}){let o=t.data.sourceData;if(e.data.info!==o)return Se.UpdateResult.Recreate;if(t.data.repr!==e.data.repr)return Se.UpdateResult.Recreate;if(n.t===r.t)return Se.UpdateResult.Unchanged;let i=e.data.state.unitTransforms;return i3(o,i,r.t,o.root.boundary.sphere),e.label=`Explode T = ${r.t.toFixed(2)}`,e.data.repr=t.data.repr,Se.UpdateResult.Updated}}),e0e=Je.BuiltIn({name:"spin-structure-representation-3d",display:"Spin 3D Representation",from:X.Molecule.Structure.Representation3D,to:X.Molecule.Structure.Representation3DState,params:w({t:g.Numeric(0,{min:0,max:1,step:.01})},m7)})({canAutoUpdate(){return!0},apply({a:t,params:e}){let r=t.data.sourceData,n=new bp(r),{axis:o,origin:i}=a3(r.root,e);return s3(r,n,e.t,o,i),new X.Molecule.Structure.Representation3DState({state:{unitTransforms:n},initialState:{unitTransforms:new bp(r)},info:r,repr:t.data.repr},{label:`Spin T = ${e.t.toFixed(2)}`})},update({a:t,b:e,newParams:r,oldParams:n}){let o=t.data.sourceData;if(e.data.info!==o)return Se.UpdateResult.Recreate;if(t.data.repr!==e.data.repr)return Se.UpdateResult.Recreate;if(n.t===r.t&&n.axis===r.axis&&n.origin===r.origin)return Se.UpdateResult.Unchanged;let i=e.data.state.unitTransforms,{axis:a,origin:s}=a3(o.root,r);return s3(o,i,r.t,a,s),e.label=`Spin T = ${r.t.toFixed(2)}`,e.data.repr=t.data.repr,Se.UpdateResult.Updated}}),t0e=Je.BuiltIn({name:"overpaint-structure-representation-3d-from-script",display:"Overpaint 3D Representation",from:X.Molecule.Structure.Representation3D,to:X.Molecule.Structure.Representation3DState,params:()=>({layers:g.ObjectList({script:g.Script(Jr("(sel.atom.all)","mol-script")),color:g.Color(ut.blueviolet),clear:g.Boolean(!1)},t=>`${t.clear?"Clear":ce.toRgbString(t.color)}`,{defaultValue:[{script:Jr("(sel.atom.all)","mol-script"),color:ut.blueviolet,clear:!1}]})})})({canAutoUpdate(){return!0},apply({a:t,params:e}){let r=t.data.sourceData,n=t.data.repr.geometryVersion,o=io.ofScript(e.layers,r);return new X.Molecule.Structure.Representation3DState({state:{overpaint:o},initialState:{overpaint:io.Empty},info:{structure:r,geometryVersion:n},repr:t.data.repr},{label:`Overpaint (${o.layers.length} Layers)`})},update({a:t,b:e,newParams:r,oldParams:n}){let o=e.data.info,i=t.data.sourceData;if(i!==o.structure)return Se.UpdateResult.Recreate;if(t.data.repr!==e.data.repr)return Se.UpdateResult.Recreate;let a=t.data.repr.geometryVersion;if(a!==o.geometryVersion&&El(t.data.repr.props))return Se.UpdateResult.Recreate;let s=e.data.state.overpaint,l=io.ofScript(r.layers,i);return io.areEqual(s,l)?Se.UpdateResult.Unchanged:(o.geometryVersion=a,e.data.state.overpaint=l,e.data.repr=t.data.repr,e.label=`Overpaint (${l.layers.length} Layers)`,Se.UpdateResult.Updated)}}),r0e=Je.BuiltIn({name:"overpaint-structure-representation-3d-from-bundle",display:"Overpaint 3D Representation",from:X.Molecule.Structure.Representation3D,to:X.Molecule.Structure.Representation3DState,params:()=>({layers:g.ObjectList({bundle:g.Value(z.Bundle.Empty),color:g.Color(ut.blueviolet),clear:g.Boolean(!1)},t=>`${t.clear?"Clear":ce.toRgbString(t.color)}`,{defaultValue:[{bundle:z.Bundle.Empty,color:ut.blueviolet,clear:!1}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:t,params:e}){let r=t.data.sourceData,n=t.data.repr.geometryVersion,o=io.ofBundle(e.layers,r);return new X.Molecule.Structure.Representation3DState({state:{overpaint:o},initialState:{overpaint:io.Empty},info:{structure:r,geometryVersion:n},repr:t.data.repr},{label:`Overpaint (${o.layers.length} Layers)`})},update({a:t,b:e,newParams:r,oldParams:n}){let o=e.data.info,i=t.data.sourceData;if(i!==o.structure)return Se.UpdateResult.Recreate;if(t.data.repr!==e.data.repr)return Se.UpdateResult.Recreate;let a=t.data.repr.geometryVersion;if(a!==o.geometryVersion&&El(t.data.repr.props))return Se.UpdateResult.Recreate;let s=e.data.state.overpaint,l=io.ofBundle(r.layers,i);return io.areEqual(s,l)?Se.UpdateResult.Unchanged:(o.geometryVersion=a,e.data.state.overpaint=l,e.data.repr=t.data.repr,e.label=`Overpaint (${l.layers.length} Layers)`,Se.UpdateResult.Updated)}}),n0e=Je.BuiltIn({name:"transparency-structure-representation-3d-from-script",display:"Transparency 3D Representation",from:X.Molecule.Structure.Representation3D,to:X.Molecule.Structure.Representation3DState,params:()=>({layers:g.ObjectList({script:g.Script(Jr("(sel.atom.all)","mol-script")),value:g.Numeric(.5,{min:0,max:1,step:.01},{label:"Transparency"})},t=>`Transparency (${t.value})`,{defaultValue:[{script:Jr("(sel.atom.all)","mol-script"),value:.5}]})})})({canAutoUpdate(){return!0},apply({a:t,params:e}){let r=t.data.sourceData,n=t.data.repr.geometryVersion,o=Jo.ofScript(e.layers,r);return new X.Molecule.Structure.Representation3DState({state:{transparency:o},initialState:{transparency:Jo.Empty},info:{structure:r,geometryVersion:n},repr:t.data.repr},{label:`Transparency (${o.layers.length} Layers)`})},update({a:t,b:e,newParams:r,oldParams:n}){let o=e.data.info,i=t.data.sourceData;if(i!==o.structure)return Se.UpdateResult.Recreate;if(t.data.repr!==e.data.repr)return Se.UpdateResult.Recreate;let a=t.data.repr.geometryVersion;if(a!==o.geometryVersion&&El(t.data.repr.props))return Se.UpdateResult.Recreate;let s=e.data.state.transparency,l=Jo.ofScript(r.layers,i);return Jo.areEqual(s,l)?Se.UpdateResult.Unchanged:(o.geometryVersion=a,e.data.state.transparency=l,e.data.repr=t.data.repr,e.label=`Transparency (${l.layers.length} Layers)`,Se.UpdateResult.Updated)}}),o0e=Je.BuiltIn({name:"transparency-structure-representation-3d-from-bundle",display:"Transparency 3D Representation",from:X.Molecule.Structure.Representation3D,to:X.Molecule.Structure.Representation3DState,params:()=>({layers:g.ObjectList({bundle:g.Value(z.Bundle.Empty),value:g.Numeric(.5,{min:0,max:1,step:.01},{label:"Transparency"})},t=>`Transparency (${t.value})`,{defaultValue:[{bundle:z.Bundle.Empty,value:.5}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:t,params:e}){let r=t.data.sourceData,n=t.data.repr.geometryVersion,o=Jo.ofBundle(e.layers,r);return new X.Molecule.Structure.Representation3DState({state:{transparency:o},initialState:{transparency:Jo.Empty},info:{structure:r,geometryVersion:n},repr:t.data.repr},{label:`Transparency (${o.layers.length} Layers)`})},update({a:t,b:e,newParams:r,oldParams:n}){let o=e.data.info,i=t.data.sourceData;if(i!==o.structure)return Se.UpdateResult.Recreate;if(t.data.repr!==e.data.repr)return Se.UpdateResult.Recreate;let a=t.data.repr.geometryVersion;if(a!==o.geometryVersion&&El(t.data.repr.props))return Se.UpdateResult.Recreate;let s=e.data.state.transparency,l=Jo.ofBundle(r.layers,i);return Jo.areEqual(s,l)?Se.UpdateResult.Unchanged:(o.geometryVersion=a,e.data.state.transparency=l,e.data.repr=t.data.repr,e.label=`Transparency (${l.layers.length} Layers)`,Se.UpdateResult.Updated)}}),i0e=Je.BuiltIn({name:"emissive-structure-representation-3d-from-script",display:"Emissive 3D Representation",from:X.Molecule.Structure.Representation3D,to:X.Molecule.Structure.Representation3DState,params:()=>({layers:g.ObjectList({script:g.Script(Jr("(sel.atom.all)","mol-script")),value:g.Numeric(.5,{min:0,max:1,step:.01},{label:"Emissive"})},t=>`Emissive (${t.value})`,{defaultValue:[{script:Jr("(sel.atom.all)","mol-script"),value:.5}]})})})({canAutoUpdate(){return!0},apply({a:t,params:e}){let r=t.data.sourceData,n=t.data.repr.geometryVersion,o=ti.ofScript(e.layers,r);return new X.Molecule.Structure.Representation3DState({state:{emissive:o},initialState:{emissive:ti.Empty},info:{structure:r,geometryVersion:n},repr:t.data.repr},{label:`Emissive (${o.layers.length} Layers)`})},update({a:t,b:e,newParams:r,oldParams:n}){let o=e.data.info,i=t.data.sourceData;if(i!==o.structure)return Se.UpdateResult.Recreate;if(t.data.repr!==e.data.repr)return Se.UpdateResult.Recreate;let a=t.data.repr.geometryVersion;if(a!==o.geometryVersion&&El(t.data.repr.props))return Se.UpdateResult.Recreate;let s=e.data.state.emissive,l=ti.ofScript(r.layers,i);return ti.areEqual(s,l)?Se.UpdateResult.Unchanged:(o.geometryVersion=a,e.data.state.emissive=l,e.data.repr=t.data.repr,e.label=`Emissive (${l.layers.length} Layers)`,Se.UpdateResult.Updated)}}),a0e=Je.BuiltIn({name:"emissive-structure-representation-3d-from-bundle",display:"Emissive 3D Representation",from:X.Molecule.Structure.Representation3D,to:X.Molecule.Structure.Representation3DState,params:()=>({layers:g.ObjectList({bundle:g.Value(z.Bundle.Empty),value:g.Numeric(.5,{min:0,max:1,step:.01},{label:"Emissive"})},t=>`Emissive (${t.value})`,{defaultValue:[{bundle:z.Bundle.Empty,value:.5}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:t,params:e}){let r=t.data.sourceData,n=t.data.repr.geometryVersion,o=ti.ofBundle(e.layers,r);return new X.Molecule.Structure.Representation3DState({state:{emissive:o},initialState:{emissive:ti.Empty},info:{structure:r,geometryVersion:n},repr:t.data.repr},{label:`Emissive (${o.layers.length} Layers)`})},update({a:t,b:e,newParams:r,oldParams:n}){let o=e.data.info,i=t.data.sourceData;if(i!==o.structure)return Se.UpdateResult.Recreate;if(t.data.repr!==e.data.repr)return Se.UpdateResult.Recreate;let a=t.data.repr.geometryVersion;if(a!==o.geometryVersion&&El(t.data.repr.props))return Se.UpdateResult.Recreate;let s=e.data.state.emissive,l=ti.ofBundle(r.layers,i);return ti.areEqual(s,l)?Se.UpdateResult.Unchanged:(o.geometryVersion=a,e.data.state.emissive=l,e.data.repr=t.data.repr,e.label=`Emissive (${l.layers.length} Layers)`,Se.UpdateResult.Updated)}}),s0e=Je.BuiltIn({name:"substance-structure-representation-3d-from-script",display:"Substance 3D Representation",from:X.Molecule.Structure.Representation3D,to:X.Molecule.Structure.Representation3DState,params:()=>({layers:g.ObjectList({script:g.Script(Jr("(sel.atom.all)","mol-script")),material:Qo.getParam(),clear:g.Boolean(!1)},t=>`${t.clear?"Clear":Qo.toString(t.material)}`,{defaultValue:[{script:Jr("(sel.atom.all)","mol-script"),material:Qo({roughness:1}),clear:!1}]})})})({canAutoUpdate(){return!0},apply({a:t,params:e}){let r=t.data.sourceData,n=t.data.repr.geometryVersion,o=ei.ofScript(e.layers,r);return new X.Molecule.Structure.Representation3DState({state:{substance:o},initialState:{substance:ei.Empty},info:{structure:r,geometryVersion:n},repr:t.data.repr},{label:`Substance (${o.layers.length} Layers)`})},update({a:t,b:e,newParams:r,oldParams:n}){let o=e.data.info,i=t.data.sourceData;if(i!==o.structure)return Se.UpdateResult.Recreate;if(t.data.repr!==e.data.repr)return Se.UpdateResult.Recreate;let a=t.data.repr.geometryVersion;if(a!==o.geometryVersion&&El(t.data.repr.props))return Se.UpdateResult.Recreate;let s=e.data.state.substance,l=ei.ofScript(r.layers,i);return ei.areEqual(s,l)?Se.UpdateResult.Unchanged:(o.geometryVersion=a,e.data.state.substance=l,e.data.repr=t.data.repr,e.label=`Substance (${l.layers.length} Layers)`,Se.UpdateResult.Updated)}}),l0e=Je.BuiltIn({name:"substance-structure-representation-3d-from-bundle",display:"Substance 3D Representation",from:X.Molecule.Structure.Representation3D,to:X.Molecule.Structure.Representation3DState,params:()=>({layers:g.ObjectList({bundle:g.Value(z.Bundle.Empty),material:Qo.getParam(),clear:g.Boolean(!1)},t=>`${t.clear?"Clear":Qo.toString(t.material)}`,{defaultValue:[{bundle:z.Bundle.Empty,material:Qo({roughness:1}),clear:!1}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:t,params:e}){let r=t.data.sourceData,n=t.data.repr.geometryVersion,o=ei.ofBundle(e.layers,r);return new X.Molecule.Structure.Representation3DState({state:{substance:o},initialState:{substance:ei.Empty},info:{structure:r,geometryVersion:n},repr:t.data.repr},{label:`Substance (${o.layers.length} Layers)`})},update({a:t,b:e,newParams:r,oldParams:n}){let o=e.data.info,i=t.data.sourceData;if(i!==o.structure)return Se.UpdateResult.Recreate;if(t.data.repr!==e.data.repr)return Se.UpdateResult.Recreate;let a=t.data.repr.geometryVersion;if(a!==o.geometryVersion&&El(t.data.repr.props))return Se.UpdateResult.Recreate;let s=e.data.state.substance,l=ei.ofBundle(r.layers,i);return ei.areEqual(s,l)?Se.UpdateResult.Unchanged:(o.geometryVersion=a,e.data.state.substance=l,e.data.repr=t.data.repr,e.label=`Substance (${l.layers.length} Layers)`,Se.UpdateResult.Updated)}}),c0e=Je.BuiltIn({name:"clipping-structure-representation-3d-from-script",display:"Clipping 3D Representation",from:X.Molecule.Structure.Representation3D,to:X.Molecule.Structure.Representation3DState,params:()=>({layers:g.ObjectList({script:g.Script(Jr("(sel.atom.all)","mol-script")),groups:g.Converted(t=>Xr.Groups.toNames(t),t=>Xr.Groups.fromNames(t),g.MultiSelect(Tg(Xr.Groups.Names),g.objectToOptions(Xr.Groups.Names)))},t=>`${Xr.Groups.toNames(t.groups).length} group(s)`,{defaultValue:[{script:Jr("(sel.atom.all)","mol-script"),groups:Xr.Groups.Flag.None}]})})})({canAutoUpdate(){return!0},apply({a:t,params:e}){let r=t.data.sourceData,n=Xr.ofScript(e.layers,r);return new X.Molecule.Structure.Representation3DState({state:{clipping:n},initialState:{clipping:Xr.Empty},info:r,repr:t.data.repr},{label:`Clipping (${n.layers.length} Layers)`})},update({a:t,b:e,newParams:r,oldParams:n}){let o=e.data.info;if(t.data.sourceData!==o)return Se.UpdateResult.Recreate;if(t.data.repr!==e.data.repr)return Se.UpdateResult.Recreate;let i=e.data.state.clipping,a=Xr.ofScript(r.layers,o);return Xr.areEqual(i,a)?Se.UpdateResult.Unchanged:(e.data.state.clipping=a,e.data.repr=t.data.repr,e.label=`Clipping (${a.layers.length} Layers)`,Se.UpdateResult.Updated)}}),u0e=Je.BuiltIn({name:"clipping-structure-representation-3d-from-bundle",display:"Clipping 3D Representation",from:X.Molecule.Structure.Representation3D,to:X.Molecule.Structure.Representation3DState,params:()=>({layers:g.ObjectList({bundle:g.Value(z.Bundle.Empty),groups:g.Converted(t=>Xr.Groups.toNames(t),t=>Xr.Groups.fromNames(t),g.MultiSelect(Tg(Xr.Groups.Names),g.objectToOptions(Xr.Groups.Names)))},t=>`${Xr.Groups.toNames(t.groups).length} group(s)`,{defaultValue:[{bundle:z.Bundle.Empty,groups:Xr.Groups.Flag.None}],isHidden:!0})})})({canAutoUpdate(){return!0},apply({a:t,params:e}){let r=t.data.sourceData,n=Xr.ofBundle(e.layers,r);return new X.Molecule.Structure.Representation3DState({state:{clipping:n},initialState:{clipping:Xr.Empty},info:r,repr:t.data.repr},{label:`Clipping (${n.layers.length} Layers)`})},update({a:t,b:e,newParams:r,oldParams:n}){let o=e.data.info;if(t.data.sourceData!==o)return Se.UpdateResult.Recreate;if(t.data.repr!==e.data.repr)return Se.UpdateResult.Recreate;let i=e.data.state.clipping,a=Xr.ofBundle(r.layers,o);return Xr.areEqual(i,a)?Se.UpdateResult.Unchanged:(e.data.state.clipping=a,e.data.repr=t.data.repr,e.label=`Clipping (${a.layers.length} Layers)`,Se.UpdateResult.Updated)}}),d0e=Je.BuiltIn({name:"theme-strength-representation-3d",display:"Theme Strength 3D Representation",from:X.Molecule.Structure.Representation3D,to:X.Molecule.Structure.Representation3DState,params:()=>({overpaintStrength:g.Numeric(1,{min:0,max:1,step:.01}),transparencyStrength:g.Numeric(1,{min:0,max:1,step:.01}),emissiveStrength:g.Numeric(1,{min:0,max:1,step:.01}),substanceStrength:g.Numeric(1,{min:0,max:1,step:.01})})})({canAutoUpdate(){return!0},apply({a:t,params:e}){return new X.Molecule.Structure.Representation3DState({state:{themeStrength:{overpaint:e.overpaintStrength,transparency:e.transparencyStrength,emissive:e.emissiveStrength,substance:e.substanceStrength}},initialState:{themeStrength:{overpaint:1,transparency:1,emissive:1,substance:1}},info:{},repr:t.data.repr},{label:"Theme Strength",description:`${e.overpaintStrength.toFixed(2)}, ${e.transparencyStrength.toFixed(2)}, ${e.emissiveStrength.toFixed(2)}, ${e.substanceStrength.toFixed(2)}`})},update({a:t,b:e,newParams:r,oldParams:n}){var o,i,a,s;return r.overpaintStrength===((o=e.data.state.themeStrength)===null||o===void 0?void 0:o.overpaint)&&r.transparencyStrength===((i=e.data.state.themeStrength)===null||i===void 0?void 0:i.transparency)&&r.emissiveStrength===((a=e.data.state.themeStrength)===null||a===void 0?void 0:a.emissive)&&r.substanceStrength===((s=e.data.state.themeStrength)===null||s===void 0?void 0:s.substance)?Se.UpdateResult.Unchanged:(e.data.state.themeStrength={overpaint:r.overpaintStrength,transparency:r.transparencyStrength,emissive:r.emissiveStrength,substance:r.substanceStrength},e.data.repr=t.data.repr,e.label="Theme Strength",e.description=`${r.overpaintStrength.toFixed(2)}, ${r.transparencyStrength.toFixed(2)}, ${r.emissiveStrength.toFixed(2)}, ${r.substanceStrength.toFixed(2)}`,Se.UpdateResult.Updated)},interpolate(t,e,r){return{overpaintStrength:fn(t.overpaintStrength,e.overpaintStrength,r),transparencyStrength:fn(t.transparencyStrength,e.transparencyStrength,r),emissiveStrength:fn(t.emissiveStrength,e.emissiveStrength,r),substanceStrength:fn(t.substanceStrength,e.substanceStrength,r)}}}),hu;(function(t){function e(o,i,a,s,l,c,u,d){let m=o.representation.volume.registry.get(i),p=o.representation.volume.themes.colorThemeRegistry.get(l||m.defaultColorTheme.name),h=o.representation.volume.themes.sizeThemeRegistry.get(u||m.defaultSizeTheme.name),f=g.getDefaultValues(m.getParams(o.representation.volume.themes,a));return{type:{name:i,params:s?w(w({},f),s):f},colorTheme:{name:p.name,params:c?w(w({},p.defaultValues),c):p.defaultValues},sizeTheme:{name:h.name,params:d?w(w({},h.defaultValues),d):h.defaultValues}}}t.getDefaultParams=e;function r(o,i,a,s,l,c,u){let d=o.representation.volume.registry.get(i),m=o.representation.volume.themes.colorThemeRegistry.get(s||d.defaultColorTheme.name),p=o.representation.volume.themes.sizeThemeRegistry.get(c||d.defaultSizeTheme.name);return{type:{name:i,params:a?w(w({},d.defaultValues),a):d.defaultValues},colorTheme:{name:d.defaultColorTheme.name,params:l?w(w({},m.defaultValues),l):m.defaultValues},sizeTheme:{name:d.defaultSizeTheme.name,params:u?w(w({},p.defaultValues),u):p.defaultValues}}}t.getDefaultParamsStatic=r;function n(o){var i,a,s,l;if(o.isoValue)return xe.IsoValue.toString(o.isoValue);if(!((a=(i=o.renderMode)===null||i===void 0?void 0:i.params)===null||a===void 0)&&a.isoValue)return xe.IsoValue.toString((l=(s=o.renderMode)===null||s===void 0?void 0:s.params)===null||l===void 0?void 0:l.isoValue)}t.getDescription=n})(hu||(hu={}));var m0e=Je.BuiltIn({name:"volume-representation-3d",display:"3D Representation",from:X.Volume.Data,to:X.Volume.Representation3D,params:(t,e)=>{let{registry:r,themes:n}=e.representation.volume,o=r.get(r.default.name);if(!t)return{type:g.Mapped(r.default.name,r.types,a=>g.Group(r.get(a).getParams(n,xe.One))),colorTheme:g.Mapped(o.defaultColorTheme.name,n.colorThemeRegistry.types,a=>g.Group(n.colorThemeRegistry.get(a).getParams({volume:xe.One}))),sizeTheme:g.Mapped(o.defaultSizeTheme.name,n.sizeThemeRegistry.types,a=>g.Group(n.sizeThemeRegistry.get(a).getParams({volume:xe.One})))};let i={volume:t.data};return{type:g.Mapped(r.default.name,r.types,a=>g.Group(r.get(a).getParams(n,t.data))),colorTheme:g.Mapped(o.defaultColorTheme.name,n.colorThemeRegistry.getApplicableTypes(i),a=>g.Group(n.colorThemeRegistry.get(a).getParams(i))),sizeTheme:g.Mapped(o.defaultSizeTheme.name,n.sizeThemeRegistry.getApplicableTypes(i),a=>g.Group(n.sizeThemeRegistry.get(a).getParams(i)))}}})({canAutoUpdate({oldParams:t,newParams:e}){return t.type.name===e.type.name},apply({a:t,params:e},r){return ie.create("Volume Representation",n=>N(this,null,function*(){var o;let i={runtime:n,assetManager:r.managers.asset},a=r.representation.volume.registry.get(e.type.name);a.ensureCustomProperties&&(yield a.ensureCustomProperties.attach(i,t.data));let s=a.factory(w({webgl:(o=r.canvas3d)===null||o===void 0?void 0:o.webgl},r.representation.volume.themes),a.getParams);s.setTheme(An.create(r.representation.volume.themes,{volume:t.data},e));let l=e.type.params||{};return yield s.createOrUpdate(l,t.data).runInContext(n),new X.Volume.Representation3D({repr:s,sourceData:t.data},{label:a.label,description:hu.getDescription(l)})}))},update({a:t,b:e,oldParams:r,newParams:n},o){return ie.create("Volume Representation",i=>N(this,null,function*(){var a;if(n.type.name!==r.type.name)return(a=o.representation.volume.registry.get(r.type.name).ensureCustomProperties)===null||a===void 0||a.detach(t.data),Se.UpdateResult.Recreate;let s=w(w({},e.data.repr.props),n.type.params);return e.data.repr.setTheme(An.create(o.representation.volume.themes,{volume:t.data},n)),yield e.data.repr.createOrUpdate(s,t.data).runInContext(i),e.data.sourceData=t.data,e.description=hu.getDescription(s),Se.UpdateResult.Updated}))}});var p0e=Je.BuiltIn({name:"shape-representation-3d",display:"3D Representation",from:X.Shape.Provider,to:X.Shape.Representation3D,params:(t,e)=>t?t.data.params:ge.Params})({canAutoUpdate(){return!0},apply({a:t,params:e},r){return ie.create("Shape Representation",n=>N(this,null,function*(){let o=w(w({},g.getDefaultValues(t.data.params)),e),i=Yn(t.data.getShape,t.data.geometryUtils);return yield i.createOrUpdate(o,t.data.data).runInContext(n),new X.Shape.Representation3D({repr:i,sourceData:t.data},{label:t.data.label})}))},update({a:t,b:e,oldParams:r,newParams:n},o){return ie.create("Shape Representation",i=>N(this,null,function*(){let a=w(w({},e.data.repr.props),n);return yield e.data.repr.createOrUpdate(a,t.data.data).runInContext(i),e.data.sourceData=t.data,Se.UpdateResult.Updated}))}});var f0e=Je.BuiltIn({name:"model-unitcell-3d",display:"Model Unit Cell",from:X.Molecule.Model,to:X.Shape.Representation3D,params:()=>w({},g3)})({isApplicable:t=>!!rs.Provider.get(t.data),canAutoUpdate({oldParams:t,newParams:e}){return!0},apply({a:t,params:e},r){return ie.create("Model Unit Cell",n=>N(this,null,function*(){var o;let i=rs.Provider.get(t.data);if(!i)return Rr.Null;let a=y3(t.data,i,e),s=F7(w({webgl:(o=r.canvas3d)===null||o===void 0?void 0:o.webgl},r.representation.structure.themes),()=>g3);return yield s.createOrUpdate(e,a).runInContext(n),new X.Shape.Representation3D({repr:s,sourceData:a},{label:"Unit Cell",description:i.spacegroup.name})}))},update({a:t,b:e,newParams:r}){return ie.create("Model Unit Cell",n=>N(this,null,function*(){let o=rs.Provider.get(t.data);if(!o)return Se.UpdateResult.Null;let i=w(w({},e.data.repr.props),r),a=y3(t.data,o,i);return yield e.data.repr.createOrUpdate(i,a).runInContext(n),e.data.sourceData=a,Se.UpdateResult.Updated}))}});var h0e=Je.BuiltIn({name:"structure-bounding-box-3d",display:"Bounding Box",from:X.Molecule.Structure,to:X.Shape.Representation3D,params:w({radius:g.Numeric(.05,{min:.01,max:4,step:.01},{isEssential:!0}),color:g.Color(ut.red,{isEssential:!0})},Be.Params)})({canAutoUpdate(){return!0},apply({a:t,params:e},r){return ie.create("Bounding Box",n=>N(this,null,function*(){let o=Yn((i,a,s,l)=>{let c=Sw(a.box,a.radius,l?.geometry);return Yt.create("Bouding Box",a,c,()=>a.color,()=>1,()=>"Bounding Box")},Be.Utils);return yield o.createOrUpdate(e,{box:t.data.boundary.box,radius:e.radius,color:e.color}).runInContext(n),new X.Shape.Representation3D({repr:o,sourceData:t.data},{label:"Bounding Box"})}))},update({a:t,b:e,oldParams:r,newParams:n},o){return ie.create("Bounding Box",i=>N(this,null,function*(){return yield e.data.repr.createOrUpdate(n,{box:t.data.boundary.box,radius:n.radius,color:n.color}).runInContext(i),e.data.sourceData=t.data,Se.UpdateResult.Updated}))}});var g0e=Je.BuiltIn({name:"structure-selections-distance-3d",display:"3D Distance",from:X.Molecule.Structure.Selections,to:X.Shape.Representation3D,params:()=>w({},b3)})({canAutoUpdate({oldParams:t,newParams:e}){return!0},apply({a:t,params:e},r){return ie.create("Structure Distance",n=>N(this,null,function*(){var o;let i=x3(t.data),a=H7(w({webgl:(o=r.canvas3d)===null||o===void 0?void 0:o.webgl},r.representation.structure.themes),()=>b3);return yield a.createOrUpdate(e,i).runInContext(n),new X.Shape.Representation3D({repr:a,sourceData:i},{label:"Distance"})}))},update({a:t,b:e,oldParams:r,newParams:n},o){return ie.create("Structure Distance",i=>N(this,null,function*(){let a=w(w({},e.data.repr.props),n),s=x3(t.data);return yield e.data.repr.createOrUpdate(a,s).runInContext(i),e.data.sourceData=s,Se.UpdateResult.Updated}))}});var y0e=Je.BuiltIn({name:"structure-selections-angle-3d",display:"3D Angle",from:X.Molecule.Structure.Selections,to:X.Shape.Representation3D,params:()=>w({},A3)})({canAutoUpdate({oldParams:t,newParams:e}){return!0},apply({a:t,params:e},r){return ie.create("Structure Angle",n=>N(this,null,function*(){var o;let i=S3(t.data),a=nW(w({webgl:(o=r.canvas3d)===null||o===void 0?void 0:o.webgl},r.representation.structure.themes),()=>A3);return yield a.createOrUpdate(e,i).runInContext(n),new X.Shape.Representation3D({repr:a,sourceData:i},{label:"Angle"})}))},update({a:t,b:e,oldParams:r,newParams:n},o){return ie.create("Structure Angle",i=>N(this,null,function*(){let a=w(w({},e.data.repr.props),n),s=S3(t.data);return yield e.data.repr.createOrUpdate(a,s).runInContext(i),e.data.sourceData=s,Se.UpdateResult.Updated}))}});var v0e=Je.BuiltIn({name:"structure-selections-dihedral-3d",display:"3D Dihedral",from:X.Molecule.Structure.Selections,to:X.Shape.Representation3D,params:()=>w({},k3)})({canAutoUpdate({oldParams:t,newParams:e}){return!0},apply({a:t,params:e},r){return ie.create("Structure Dihedral",n=>N(this,null,function*(){var o;let i=C3(t.data),a=sW(w({webgl:(o=r.canvas3d)===null||o===void 0?void 0:o.webgl},r.representation.structure.themes),()=>k3);return yield a.createOrUpdate(e,i).runInContext(n),new X.Shape.Representation3D({repr:a,sourceData:i},{label:"Dihedral"})}))},update({a:t,b:e,oldParams:r,newParams:n},o){return ie.create("Structure Dihedral",i=>N(this,null,function*(){let a=w(w({},e.data.repr.props),n),s=C3(t.data);return yield e.data.repr.createOrUpdate(a,s).runInContext(i),e.data.sourceData=s,Se.UpdateResult.Updated}))}});var b0e=Je.BuiltIn({name:"structure-selections-label-3d",display:"3D Label",from:X.Molecule.Structure.Selections,to:X.Shape.Representation3D,params:()=>w({},P3)})({canAutoUpdate({oldParams:t,newParams:e}){return!0},apply({a:t,params:e},r){return ie.create("Structure Label",n=>N(this,null,function*(){var o,i,a;let s=T3(t.data),l=W7(w({webgl:(o=r.canvas3d)===null||o===void 0?void 0:o.webgl},r.representation.structure.themes),()=>P3);yield l.createOrUpdate(e,s).runInContext(n);let c=!!(!((i=e.snapshotKey)===null||i===void 0)&&i.trim()||!((a=e.tooltip)===null||a===void 0)&&a.trim());return l.setState({pickable:c,markerActions:c?kn.Highlighting:tt.None}),new X.Shape.Representation3D({repr:l,sourceData:s},{label:"Label"})}))},update({a:t,b:e,oldParams:r,newParams:n},o){return ie.create("Structure Label",i=>N(this,null,function*(){var a,s;let l=w(w({},e.data.repr.props),n),c=T3(t.data);yield e.data.repr.createOrUpdate(l,c).runInContext(i),e.data.sourceData=c;let u=!!(!((a=n.snapshotKey)===null||a===void 0)&&a.trim()||!((s=n.tooltip)===null||s===void 0)&&s.trim());return e.data.repr.setState({pickable:u,markerActions:u?kn.Highlighting:tt.None}),Se.UpdateResult.Updated}))}});var x0e=Je.BuiltIn({name:"structure-selections-orientation-3d",display:"3D Orientation",from:X.Molecule.Structure.Selections,to:X.Shape.Representation3D,params:()=>w({},D3)})({canAutoUpdate({oldParams:t,newParams:e}){return!0},apply({a:t,params:e},r){return ie.create("Structure Orientation",n=>N(this,null,function*(){var o;let i=w3(t.data),a=Z7(w({webgl:(o=r.canvas3d)===null||o===void 0?void 0:o.webgl},r.representation.structure.themes),()=>D3);return yield a.createOrUpdate(e,i).runInContext(n),new X.Shape.Representation3D({repr:a,sourceData:i},{label:"Orientation"})}))},update({a:t,b:e,oldParams:r,newParams:n},o){return ie.create("Structure Orientation",i=>N(this,null,function*(){let a=w(w({},e.data.repr.props),n),s=w3(t.data);return yield e.data.repr.createOrUpdate(a,s).runInContext(i),e.data.sourceData=s,Se.UpdateResult.Updated}))}});var S0e=Je.BuiltIn({name:"structure-selections-plane-3d",display:"3D Plane",from:X.Molecule.Structure.Selections,to:X.Shape.Representation3D,params:()=>w({},L3)})({canAutoUpdate({oldParams:t,newParams:e}){return!0},apply({a:t,params:e},r){return ie.create("Structure Plane",n=>N(this,null,function*(){var o;let i=_3(t.data),a=dW(w({webgl:(o=r.canvas3d)===null||o===void 0?void 0:o.webgl},r.representation.structure.themes),()=>L3);return yield a.createOrUpdate(e,i).runInContext(n),new X.Shape.Representation3D({repr:a,sourceData:i},{label:"Plane"})}))},update({a:t,b:e,oldParams:r,newParams:n},o){return ie.create("Structure Plane",i=>N(this,null,function*(){let a=w(w({},e.data.repr.props),n),s=_3(t.data);return yield e.data.repr.createOrUpdate(a,s).runInContext(i),e.data.sourceData=s,Se.UpdateResult.Updated}))}});function Kf(t,e,r){return{i:t,j:e,k:r}}function gu(t,e){return{a:t,b:e}}var Uo=[Kf(0,0,0),Kf(1,0,0),Kf(1,1,0),Kf(0,1,0),Kf(0,0,1),Kf(1,0,1),Kf(1,1,1),Kf(0,1,1)],mW=[gu(Uo[0],Uo[1]),gu(Uo[1],Uo[2]),gu(Uo[2],Uo[3]),gu(Uo[3],Uo[0]),gu(Uo[4],Uo[5]),gu(Uo[5],Uo[6]),gu(Uo[6],Uo[7]),gu(Uo[7],Uo[4]),gu(Uo[0],Uo[4]),gu(Uo[1],Uo[5]),gu(Uo[2],Uo[6]),gu(Uo[3],Uo[7])],pW=[{i:0,j:0,k:0,e:0},{i:1,j:0,k:0,e:1},{i:0,j:1,k:0,e:0},{i:0,j:0,k:0,e:1},{i:0,j:0,k:1,e:0},{i:1,j:0,k:1,e:1},{i:0,j:1,k:1,e:0},{i:0,j:0,k:1,e:1},{i:0,j:0,k:0,e:2},{i:1,j:0,k:0,e:2},{i:1,j:1,k:0,e:2},{i:0,j:1,k:0,e:2}],fW=[0,265,515,778,1030,1295,1541,1804,2060,2309,2575,2822,3082,3331,3593,3840,400,153,915,666,1430,1183,1941,1692,2460,2197,2975,2710,3482,3219,3993,3728,560,825,51,314,1590,1855,1077,1340,2620,2869,2111,2358,3642,3891,3129,3376,928,681,419,170,1958,1711,1445,1196,2988,2725,2479,2214,4010,3747,3497,3232,1120,1385,1635,1898,102,367,613,876,3180,3429,3695,3942,2154,2403,2665,2912,1520,1273,2035,1786,502,255,1013,764,3580,3317,4095,3830,2554,2291,3065,2800,1616,1881,1107,1370,598,863,85,348,3676,3925,3167,3414,2650,2899,2137,2384,1984,1737,1475,1226,966,719,453,204,4044,3781,3535,3270,3018,2755,2505,2240,2240,2505,2755,3018,3270,3535,3781,4044,204,453,719,966,1226,1475,1737,1984,2384,2137,2899,2650,3414,3167,3925,3676,348,85,863,598,1370,1107,1881,1616,2800,3065,2291,2554,3830,4095,3317,3580,764,1013,255,502,1786,2035,1273,1520,2912,2665,2403,2154,3942,3695,3429,3180,876,613,367,102,1898,1635,1385,1120,3232,3497,3747,4010,2214,2479,2725,2988,1196,1445,1711,1958,170,419,681,928,3376,3129,3891,3642,2358,2111,2869,2620,1340,1077,1855,1590,314,51,825,560,3728,3993,3219,3482,2710,2975,2197,2460,1692,1941,1183,1430,666,915,153,400,3840,3593,3331,3082,2822,2575,2309,2060,1804,1541,1295,1030,778,515,265,0],$f=[[],[0,8,3],[0,1,9],[1,8,3,9,8,1],[1,2,10],[0,8,3,1,2,10],[9,2,10,0,2,9],[2,8,3,2,10,8,10,9,8],[3,11,2],[0,11,2,8,11,0],[1,9,0,2,3,11],[1,11,2,1,9,11,9,8,11],[3,10,1,11,10,3],[0,10,1,0,8,10,8,11,10],[3,9,0,3,11,9,11,10,9],[9,8,10,10,8,11],[4,7,8],[4,3,0,7,3,4],[0,1,9,8,4,7],[4,1,9,4,7,1,7,3,1],[1,2,10,8,4,7],[3,4,7,3,0,4,1,2,10],[9,2,10,9,0,2,8,4,7],[2,10,9,2,9,7,2,7,3,7,9,4],[8,4,7,3,11,2],[11,4,7,11,2,4,2,0,4],[9,0,1,8,4,7,2,3,11],[4,7,11,9,4,11,9,11,2,9,2,1],[3,10,1,3,11,10,7,8,4],[1,11,10,1,4,11,1,0,4,7,11,4],[4,7,8,9,0,11,9,11,10,11,0,3],[4,7,11,4,11,9,9,11,10],[9,5,4],[9,5,4,0,8,3],[0,5,4,1,5,0],[8,5,4,8,3,5,3,1,5],[1,2,10,9,5,4],[3,0,8,1,2,10,4,9,5],[5,2,10,5,4,2,4,0,2],[2,10,5,3,2,5,3,5,4,3,4,8],[9,5,4,2,3,11],[0,11,2,0,8,11,4,9,5],[0,5,4,0,1,5,2,3,11],[2,1,5,2,5,8,2,8,11,4,8,5],[10,3,11,10,1,3,9,5,4],[4,9,5,0,8,1,8,10,1,8,11,10],[5,4,0,5,0,11,5,11,10,11,0,3],[5,4,8,5,8,10,10,8,11],[9,7,8,5,7,9],[9,3,0,9,5,3,5,7,3],[0,7,8,0,1,7,1,5,7],[1,5,3,3,5,7],[9,7,8,9,5,7,10,1,2],[10,1,2,9,5,0,5,3,0,5,7,3],[8,0,2,8,2,5,8,5,7,10,5,2],[2,10,5,2,5,3,3,5,7],[7,9,5,7,8,9,3,11,2],[9,5,7,9,7,2,9,2,0,2,7,11],[2,3,11,0,1,8,1,7,8,1,5,7],[11,2,1,11,1,7,7,1,5],[9,5,8,8,5,7,10,1,3,10,3,11],[5,7,0,5,0,9,7,11,0,1,0,10,11,10,0],[11,10,0,11,0,3,10,5,0,8,0,7,5,7,0],[11,10,5,7,11,5],[10,6,5],[0,8,3,5,10,6],[9,0,1,5,10,6],[1,8,3,1,9,8,5,10,6],[1,6,5,2,6,1],[1,6,5,1,2,6,3,0,8],[9,6,5,9,0,6,0,2,6],[5,9,8,5,8,2,5,2,6,3,2,8],[2,3,11,10,6,5],[11,0,8,11,2,0,10,6,5],[0,1,9,2,3,11,5,10,6],[5,10,6,1,9,2,9,11,2,9,8,11],[6,3,11,6,5,3,5,1,3],[0,8,11,0,11,5,0,5,1,5,11,6],[3,11,6,0,3,6,0,6,5,0,5,9],[6,5,9,6,9,11,11,9,8],[5,10,6,4,7,8],[4,3,0,4,7,3,6,5,10],[1,9,0,5,10,6,8,4,7],[10,6,5,1,9,7,1,7,3,7,9,4],[6,1,2,6,5,1,4,7,8],[1,2,5,5,2,6,3,0,4,3,4,7],[8,4,7,9,0,5,0,6,5,0,2,6],[7,3,9,7,9,4,3,2,9,5,9,6,2,6,9],[3,11,2,7,8,4,10,6,5],[5,10,6,4,7,2,4,2,0,2,7,11],[0,1,9,4,7,8,2,3,11,5,10,6],[9,2,1,9,11,2,9,4,11,7,11,4,5,10,6],[8,4,7,3,11,5,3,5,1,5,11,6],[5,1,11,5,11,6,1,0,11,7,11,4,0,4,11],[0,5,9,0,6,5,0,3,6,11,6,3,8,4,7],[6,5,9,6,9,11,4,7,9,7,11,9],[10,4,9,6,4,10],[4,10,6,4,9,10,0,8,3],[10,0,1,10,6,0,6,4,0],[8,3,1,8,1,6,8,6,4,6,1,10],[1,4,9,1,2,4,2,6,4],[3,0,8,1,2,9,2,4,9,2,6,4],[0,2,4,4,2,6],[8,3,2,8,2,4,4,2,6],[10,4,9,10,6,4,11,2,3],[0,8,2,2,8,11,4,9,10,4,10,6],[3,11,2,0,1,6,0,6,4,6,1,10],[6,4,1,6,1,10,4,8,1,2,1,11,8,11,1],[9,6,4,9,3,6,9,1,3,11,6,3],[8,11,1,8,1,0,11,6,1,9,1,4,6,4,1],[3,11,6,3,6,0,0,6,4],[6,4,8,11,6,8],[7,10,6,7,8,10,8,9,10],[0,7,3,0,10,7,0,9,10,6,7,10],[10,6,7,1,10,7,1,7,8,1,8,0],[10,6,7,10,7,1,1,7,3],[1,2,6,1,6,8,1,8,9,8,6,7],[2,6,9,2,9,1,6,7,9,0,9,3,7,3,9],[7,8,0,7,0,6,6,0,2],[7,3,2,6,7,2],[2,3,11,10,6,8,10,8,9,8,6,7],[2,0,7,2,7,11,0,9,7,6,7,10,9,10,7],[1,8,0,1,7,8,1,10,7,6,7,10,2,3,11],[11,2,1,11,1,7,10,6,1,6,7,1],[8,9,6,8,6,7,9,1,6,11,6,3,1,3,6],[0,9,1,11,6,7],[7,8,0,7,0,6,3,11,0,11,6,0],[7,11,6],[7,6,11],[3,0,8,11,7,6],[0,1,9,11,7,6],[8,1,9,8,3,1,11,7,6],[10,1,2,6,11,7],[1,2,10,3,0,8,6,11,7],[2,9,0,2,10,9,6,11,7],[6,11,7,2,10,3,10,8,3,10,9,8],[7,2,3,6,2,7],[7,0,8,7,6,0,6,2,0],[2,7,6,2,3,7,0,1,9],[1,6,2,1,8,6,1,9,8,8,7,6],[10,7,6,10,1,7,1,3,7],[10,7,6,1,7,10,1,8,7,1,0,8],[0,3,7,0,7,10,0,10,9,6,10,7],[7,6,10,7,10,8,8,10,9],[6,8,4,11,8,6],[3,6,11,3,0,6,0,4,6],[8,6,11,8,4,6,9,0,1],[9,4,6,9,6,3,9,3,1,11,3,6],[6,8,4,6,11,8,2,10,1],[1,2,10,3,0,11,0,6,11,0,4,6],[4,11,8,4,6,11,0,2,9,2,10,9],[10,9,3,10,3,2,9,4,3,11,3,6,4,6,3],[8,2,3,8,4,2,4,6,2],[0,4,2,4,6,2],[1,9,0,2,3,4,2,4,6,4,3,8],[1,9,4,1,4,2,2,4,6],[8,1,3,8,6,1,8,4,6,6,10,1],[10,1,0,10,0,6,6,0,4],[4,6,3,4,3,8,6,10,3,0,3,9,10,9,3],[10,9,4,6,10,4],[4,9,5,7,6,11],[0,8,3,4,9,5,11,7,6],[5,0,1,5,4,0,7,6,11],[11,7,6,8,3,4,3,5,4,3,1,5],[9,5,4,10,1,2,7,6,11],[6,11,7,1,2,10,0,8,3,4,9,5],[7,6,11,5,4,10,4,2,10,4,0,2],[3,4,8,3,5,4,3,2,5,10,5,2,11,7,6],[7,2,3,7,6,2,5,4,9],[9,5,4,0,8,6,0,6,2,6,8,7],[3,6,2,3,7,6,1,5,0,5,4,0],[6,2,8,6,8,7,2,1,8,4,8,5,1,5,8],[9,5,4,10,1,6,1,7,6,1,3,7],[1,6,10,1,7,6,1,0,7,8,7,0,9,5,4],[4,0,10,4,10,5,0,3,10,6,10,7,3,7,10],[7,6,10,7,10,8,5,4,10,4,8,10],[6,9,5,6,11,9,11,8,9],[3,6,11,0,6,3,0,5,6,0,9,5],[0,11,8,0,5,11,0,1,5,5,6,11],[6,11,3,6,3,5,5,3,1],[1,2,10,9,5,11,9,11,8,11,5,6],[0,11,3,0,6,11,0,9,6,5,6,9,1,2,10],[11,8,5,11,5,6,8,0,5,10,5,2,0,2,5],[6,11,3,6,3,5,2,10,3,10,5,3],[5,8,9,5,2,8,5,6,2,3,8,2],[9,5,6,9,6,0,0,6,2],[1,5,8,1,8,0,5,6,8,3,8,2,6,2,8],[1,5,6,2,1,6],[1,3,6,1,6,10,3,8,6,5,6,9,8,9,6],[10,1,0,10,0,6,9,5,0,5,6,0],[0,3,8,5,6,10],[10,5,6],[11,5,10,7,5,11],[11,5,10,11,7,5,8,3,0],[5,11,7,5,10,11,1,9,0],[10,7,5,10,11,7,9,8,1,8,3,1],[11,1,2,11,7,1,7,5,1],[0,8,3,1,2,7,1,7,5,7,2,11],[9,7,5,9,2,7,9,0,2,2,11,7],[7,5,2,7,2,11,5,9,2,3,2,8,9,8,2],[2,5,10,2,3,5,3,7,5],[8,2,0,8,5,2,8,7,5,10,2,5],[9,0,1,5,10,3,5,3,7,3,10,2],[9,8,2,9,2,1,8,7,2,10,2,5,7,5,2],[1,3,5,3,7,5],[0,8,7,0,7,1,1,7,5],[9,0,3,9,3,5,5,3,7],[9,8,7,5,9,7],[5,8,4,5,10,8,10,11,8],[5,0,4,5,11,0,5,10,11,11,3,0],[0,1,9,8,4,10,8,10,11,10,4,5],[10,11,4,10,4,5,11,3,4,9,4,1,3,1,4],[2,5,1,2,8,5,2,11,8,4,5,8],[0,4,11,0,11,3,4,5,11,2,11,1,5,1,11],[0,2,5,0,5,9,2,11,5,4,5,8,11,8,5],[9,4,5,2,11,3],[2,5,10,3,5,2,3,4,5,3,8,4],[5,10,2,5,2,4,4,2,0],[3,10,2,3,5,10,3,8,5,4,5,8,0,1,9],[5,10,2,5,2,4,1,9,2,9,4,2],[8,4,5,8,5,3,3,5,1],[0,4,5,1,0,5],[8,4,5,8,5,3,9,0,5,0,3,5],[9,4,5],[4,11,7,4,9,11,9,10,11],[0,8,3,4,9,7,9,11,7,9,10,11],[1,10,11,1,11,4,1,4,0,7,4,11],[3,1,4,3,4,8,1,10,4,7,4,11,10,11,4],[4,11,7,9,11,4,9,2,11,9,1,2],[9,7,4,9,11,7,9,1,11,2,11,1,0,8,3],[11,7,4,11,4,2,2,4,0],[11,7,4,11,4,2,8,3,4,3,2,4],[2,9,10,2,7,9,2,3,7,7,4,9],[9,10,7,9,7,4,10,2,7,8,7,0,2,0,7],[3,7,10,3,10,2,7,4,10,1,10,0,4,0,10],[1,10,2,8,7,4],[4,9,1,4,1,7,7,1,3],[4,9,1,4,1,7,0,8,1,8,7,1],[4,0,3,7,4,3],[4,8,7],[9,10,8,10,11,8],[3,0,9,3,9,11,11,9,10],[0,1,10,0,10,8,8,10,11],[3,1,10,11,3,10],[1,2,11,1,11,9,9,11,8],[3,0,9,3,9,11,1,2,9,2,11,9],[0,2,11,8,0,11],[3,2,11],[2,3,8,2,8,10,10,8,9],[9,10,2,0,9,2],[2,3,8,2,8,10,0,1,8,1,10,8],[1,10,2],[1,3,8,9,1,8],[0,9,1],[0,3,8],[]],Cw=[[0,4,4,4,2,0,0,0,2,2,0,0],[4,0,4,4,0,8,0,0,0,8,8,0],[4,4,0,4,0,0,8,0,0,0,8,8],[4,4,4,0,0,0,0,1,1,0,0,1],[2,0,0,0,0,8,8,8,2,2,0,0],[0,8,0,0,8,0,8,8,0,8,8,0],[0,0,8,0,8,8,0,8,0,0,8,8],[0,0,0,1,8,8,8,0,1,0,0,1],[2,0,0,1,2,0,0,1,0,2,0,1],[2,8,0,0,2,8,0,0,2,0,8,0],[0,8,8,0,0,8,8,0,0,8,0,8],[0,0,8,1,0,0,8,1,1,0,8,0]];function hW(t,e){let r=Math.min(65536,t*4),n=he.create(Float32Array,3,t,e&&e.vertexBuffer.ref.value),o=he.create(Float32Array,3,t,e&&e.normalBuffer.ref.value),i=he.create(Float32Array,1,t,e&&e.groupBuffer.ref.value),a=he.create(Uint32Array,3,r,e&&e.indexBuffer.ref.value),s=0,l=0;return{addVertex:(c,u,d)=>(++s,he.add3(n,c,u,d)),addNormal:(c,u,d)=>{he.add3(o,c,u,d)},addGroup:c=>{he.add(i,c)},addTriangle:(c,u,d,m)=>{let p=c[u],h=c[d],f=c[m];p>=0&&h>=0&&f>=0&&(++l,he.add3(a,p,h,f))},get:()=>{let c=he.compact(n,!0),u=he.compact(o,!0),d=he.compact(a,!0),m=he.compact(i,!0);return Be.create(c,d,u,m,s,l,e)}}}function gW(t,e){let r=he.create(Float32Array,3,t),n=he.create(Float32Array,1,t),o=he.create(Float32Array,2,t),i=0;return{addVertex:(a,s,l)=>he.add3(r,a,s,l),addNormal:()=>hs,addGroup:a=>{he.add(n,a)},addTriangle:(a,s,l,c,u)=>{let d=a[s],m=a[l],p=a[c];d>=0&&m>=0&&p>=0&&(Cw[s][l]&u&&(++i,he.add2(o,a[s],a[l])),Cw[l][c]&u&&(++i,he.add2(o,a[l],a[c])),Cw[s][c]&u&&(++i,he.add2(o,a[s],a[c])))},get:()=>{let a=he.compact(r,!0),s=he.compact(o,!0),l=he.compact(n,!0),c=vi.create(i,i/10,e);for(let u=0;uN(this,null,function*(){let n=yW(t),{dX:o,dY:i,dZ:a}=vW(n),s=Math.min(262144,Math.max(o*i*a/32,1024)),l=hW(s,e);return yield new Tw(r,l,n).run(),l.get()}))}function wv(t,e){return ie.create("Marching Cubes Lines",r=>N(this,null,function*(){let n=yW(t),{dX:o,dY:i,dZ:a}=vW(n),s=Math.min(262144,Math.max(o*i*a/32,1024)),l=gW(s,e);return yield new Tw(r,l,n).run(),l.get()}))}var Tw=class{doSlices(){return N(this,null,function*(){let e=0;this.edgeFilter=15;for(let r=this.minZ;r0)return o-1;let i=this.scalarField,a=this.scalarFieldGet,s=mW[e],l=s.a,c=s.b,u=l.i+this.i,d=l.j+this.j,m=l.k+this.k,p=c.i+this.i,h=c.j+this.j,f=c.k+this.k,b=a(i,u,d,m),v=a(i,p,h,f),x=(this.isoLevel-b)/(b-v);if(this.idField){let R=this.idFieldGet(this.idField,u,d,m),B=this.idFieldGet(this.idField,p,h,f),F=x<.5?R:B;if(F===-1&&(F=x<.5?B:R),F===-2)return-1;this.builder.addGroup(F)}else this.builder.addGroup(0);let S=this.builder.addVertex(u+x*(u-p),d+x*(d-h),m+x*(m-f));this.verticesOnEdges[n]=S+1;let T=a(i,Math.max(0,u-1),d,m)-a(i,Math.min(this.nX-1,u+1),d,m),E=a(i,u,Math.max(0,d-1),m)-a(i,u,Math.min(this.nY-1,d+1),m),_=a(i,u,d,Math.max(0,m-1))-a(i,u,d,Math.min(this.nZ,m+1)),D=a(i,Math.max(0,p-1),h,f)-a(i,Math.min(this.nX-1,p+1),h,f),P=a(i,p,Math.max(0,h-1),f)-a(i,p,Math.min(this.nY-1,h+1),f),A=a(i,p,h,Math.max(0,f-1))-a(i,p,h,Math.min(this.nZ-1,f+1)),I=T+x*(T-D),k=E+x*(E-P),M=_+x*(_-A);return this.isoLevel>=0?this.builder.addNormal(I,k,M):this.builder.addNormal(-I,-k,-M),S}constructor(e,r){this.builder=e,this.vertList=[0,0,0,0,0,0,0,0,0,0,0,0],this.i=0,this.j=0,this.k=0;let n=r.scalarField.space.dimensions;this.nX=n[0],this.nY=n[1],this.nZ=n[2],this.isoLevel=r.isoLevel,this.scalarFieldGet=r.scalarField.space.get,this.scalarField=r.scalarField.data,r.idField&&(this.idField=r.idField.data,this.idFieldGet=r.idField.space.get),this.verticesOnEdges=new Int32Array(3*this.nX*this.nY*2)}get(e,r,n){return this.scalarFieldGet(this.scalarField,e,r,n)}processCell(e,r,n,o){let i=0;if(this.get(e,r,n)0&&(this.vertList[0]=this.interpolate(0)),(a&2)>0&&(this.vertList[1]=this.interpolate(1)),(a&4)>0&&(this.vertList[2]=this.interpolate(2)),(a&8)>0&&(this.vertList[3]=this.interpolate(3)),(a&16)>0&&(this.vertList[4]=this.interpolate(4)),(a&32)>0&&(this.vertList[5]=this.interpolate(5)),(a&64)>0&&(this.vertList[6]=this.interpolate(6)),(a&128)>0&&(this.vertList[7]=this.interpolate(7)),(a&256)>0&&(this.vertList[8]=this.interpolate(8)),(a&512)>0&&(this.vertList[9]=this.interpolate(9)),(a&1024)>0&&(this.vertList[10]=this.interpolate(10)),(a&2048)>0&&(this.vertList[11]=this.interpolate(11));let s=$f[i];for(let l=0;l=0?this.builder.addTriangle(this.vertList,c,u,d,o):this.builder.addTriangle(this.vertList,d,u,c,o)}}};function C0e(t,e,r,n,o,i){let{createValues:a,createRenderableState:s}=eo.getUtils(e),l=I0(),c=a(e,l,r,n,o),u=s(o);return tu(e.kind,c,u,i)}function _d(t,e){let{defaultProps:r,createGeometry:n,createLocationIterator:o,getLoci:i,eachLocation:a,setUpdateState:s,mustRecreate:l,dispose:c}=t,{updateValues:u,updateBoundingSphere:d,updateRenderableState:m,createPositionIterator:p}=t.geometryUtils,h=Bl.create(),f,b,v,x,S,T=Object.assign({},r),E=An.createEmpty(),_,D,P,A=-1,I,k;function M(V,H,Q,L){if(!Q&&!_)throw new Error("missing volume");if(b=Object.assign({},T,H),v=V,x=Q,S=L,Bl.reset(h),f?(!xe.areEquivalent(x,_)||S!==D)&&(h.createNew=!0):h.createNew=!0,h.createNew){h.createGeometry=!0;return}s(h,Q,b,T,v,E),wo.areEqual(V.color,E.color)||(h.updateColor=!0),h.createGeometry&&(h.updateColor=!0),b.instanceGranularity!==T.instanceGranularity&&(h.updateTransform=!0)}function R(V){if(h.createNew)if(I=o(x,S),V)f=C0e(x,V,I,v,b,e),k=p(V,f.values);else throw new Error("expected geometry to be given");else{if(!f)throw new Error("expected renderObject to be available");if(h.updateTransform){I=o(x,S);let{instanceCount:H,groupCount:Q}=I;b.instanceGranularity?jr(H,"instance",f.values):jr(H*Q,"groupInstance",f.values)}else I.reset();if(h.createGeometry)if(V)C.updateIfChanged(f.values.drawCount,eo.getDrawCount(V)),C.updateIfChanged(f.values.uVertexCount,eo.getVertexCount(V)),C.updateIfChanged(f.values.uGroupCount,eo.getGroupCount(V));else throw new Error("expected geometry to be given");(h.updateTransform||h.createGeometry)&&(d(f.values,V||P),k=p(V||P,f.values)),h.updateSize&&"uSize"in f.values&&Sa(I,v.size,f.values),h.updateColor&&uo(I,k,v.color,f.values),u(f.values,b),m(f.state,b)}T=b,E=v,_=x,D=S,V&&(P=V,A+=1)}function B(V,H,Q,L){let Y=!1;if(xe.Cell.isLoci(V)){if(xe.Cell.isLociEmpty(V)||!xe.areEquivalent(V.volume,H))return!1;L(Oe.ofSingleton(0))&&(Y=!0)}else if(xe.Segment.isLoci(V)){if(xe.Segment.isLociEmpty(V)||!xe.areEquivalent(V.volume,H)||!tr.has(V.segments,Q))return!1;L(Oe.ofSingleton(0))&&(Y=!0)}return Y}function F(V,H){return So(V)?T.instanceGranularity?H(Oe.ofBounds(0,I.instanceCount)):H(Oe.ofBounds(0,I.groupCount*I.instanceCount)):T.instanceGranularity?B(V,_,D,H):a(V,_,D,T,H)}return{get groupCount(){return I?I.count:0},get renderObject(){return f},get geometryVersion(){return A},createOrUpdate(Y,j){return N(this,arguments,function*(V,H,Q={},L){if(M(H,Q,L?.volume||_,L?.key||D),h.createGeometry){let O=n(V,x,S,v,b,P);return af(O)?O.then(R):R(O)}else R()})},getLoci(V){return f?i(V,_,D,T,f.id):St},eachLocation(V){for(I.reset();I.hasNext;){let{location:H,isSecondary:Q}=I.move();V(H,Q)}},mark(V,H){return Vt.mark(f,V,H,F)},setVisibility(V){Vt.setVisibility(f,V)},setAlphaFactor(V){Vt.setAlphaFactor(f,V)},setPickable(V){Vt.setPickable(f,V)},setColorOnly(V){Vt.setColorOnly(f,V)},setTransform(V,H){Vt.setTransform(f,V,H)},setOverpaint(V){return Vt.setOverpaint(f,V,F,!0)},setTransparency(V){return Vt.setTransparency(f,V,F,!0)},setEmissive(V){return Vt.setEmissive(f,V,F,!0)},setSubstance(V){return Vt.setSubstance(f,V,F,!0)},setClipping(V){return Vt.setClipping(f,V,F,!0)},setThemeStrength(V){Vt.setThemeStrength(f,V)},destroy(){c?.(P),f&&(f.state.disposed=!0,f=void 0)},mustRecreate:l}}var blt=w({},ge.Params);function Sp(t,e,r,n,o,i=()=>[-1]){let a=0,{webgl:s}=e,l=new ln,c=new rt.GeometryState,u=rl(),d=[],m=rt.createState(),p=new Map,h,f,b,v,x=An.createEmpty();function S(I,k){return N(this,null,function*(){var M;let R=p.get(k);return R?!((M=R.mustRecreate)===null||M===void 0)&&M.call(R,{volume:h,key:k},v,s)&&(R.destroy(),R=n(u,h,k,v,s),p.set(k,R)):(R=n(u,h,k,v,s),p.set(k,R)),R.createOrUpdate({webgl:s,runtime:I},x,v,{volume:h,key:k})})}function T(I={},k){k&&k!==h&&(b=r(e,k),h=k,v||(v=g.getDefaultValues(b)));let M=k1(Object.assign({},v,I),h);return Object.assign(v,I,M),f=i(v),ie.create("Creating or updating VolumeRepresentation",R=>N(this,null,function*(){let B=new Set(p.keys());for(let F=0,G=f.length;F{var G;(G=p.get(F))===null||G===void 0||G.destroy(),p.delete(F)}),d.length=0,p.forEach(F=>{F.renderObject&&(d.push(F.renderObject),c.add(F.renderObject.id,F.geometryVersion))}),c.snapshot(),l.next(a++)}))}function E(I,k){let M=!1;return p.forEach(R=>{M=R.mark(I,k)||M}),M}function _(I,k){k.visible!==void 0&&I&&I.setVisibility(k.visible),k.alphaFactor!==void 0&&I&&I.setAlphaFactor(k.alphaFactor),k.pickable!==void 0&&I&&I.setPickable(k.pickable),k.overpaint!==void 0&&I&&I.setOverpaint(k.overpaint),k.transparency!==void 0&&I&&I.setTransparency(k.transparency),k.emissive!==void 0&&I&&I.setEmissive(k.emissive),k.substance!==void 0&&I&&I.setSubstance(k.substance),k.clipping!==void 0&&I&&I.setClipping(k.clipping),k.transform!==void 0&&I&&I.setTransform(k.transform),k.themeStrength!==void 0&&I&&I.setThemeStrength(k.themeStrength)}function D(I){let{visible:k,alphaFactor:M,pickable:R,overpaint:B,transparency:F,emissive:G,substance:V,clipping:H,transform:Q,themeStrength:L,syncManually:Y,markerActions:j}=I,O={};k!==void 0&&(O.visible=k),M!==void 0&&(O.alphaFactor=M),R!==void 0&&(O.pickable=R),B!==void 0&&(O.overpaint=B),F!==void 0&&(O.transparency=F),G!==void 0&&(O.emissive=G),V!==void 0&&(O.substance=V),H!==void 0&&(O.clipping=H),L!==void 0&&(O.themeStrength=L),Q!==void 0&&!W.areEqual(Q,m.transform,1e-6)&&(O.transform=Q),Y!==void 0&&(O.syncManually=Y),j!==void 0&&(O.markerActions=j),p.forEach(J=>_(J,O)),rt.updateState(m,I)}function P(I){x=I}function A(){p.forEach(I=>I.destroy()),p.clear()}return{label:t,get groupCount(){let I=0;return p.forEach(k=>{k.renderObject&&(I+=k.groupCount)}),I},get props(){return v},get params(){return b},get state(){return m},get theme(){return x},get geometryVersion(){return c.version},renderObjects:d,updated:l,createOrUpdate:T,setState:D,setTheme:P,getLoci:I=>{let k=St;return p.forEach(M=>{let R=M.getLoci(I);Wn(R)||(k=R)}),k},getAllLoci:()=>[o(h,v)],eachLocation:I=>{p.forEach(k=>{k.eachLocation(I)})},mark:E,destroy:A}}var bW=` +precision highp float; +precision highp int; + +#if __VERSION__ == 100 + precision highp sampler2D; + uniform sampler2D tTexture; +#else + precision highp isampler2D; + uniform isampler2D tTexture; +#endif + +void main(void) { + #if __VERSION__ == 100 + gl_FragColor = texture2D(tTexture, vec2(0.5)); + #else + gl_FragColor = ivec4(texture2D(tTexture, vec2(0.5)).r); + #endif +} +`;var T0e=U(w({},Er),{tTexture:We("texture","rgba","float","nearest")}),yu="histopyramid-sum";function w0e(t,e){if(t.namedComputeRenderables[yu]){let r=t.namedComputeRenderables[yu].values;C.update(r.tTexture,e),t.namedComputeRenderables[yu].update()}else t.namedComputeRenderables[yu]=_0e(t,e);return t.namedComputeRenderables[yu]}function _0e(t,e){let r=U(w({},Ir),{tTexture:C.create(e)}),n=w({},T0e),o=Qt("sum",zr,bW,{},{0:"ivec4"}),i=dr(t,"triangles",o,n,r);return mr(i,r)}function P0e(t){let{gl:e,state:r}=t;r.disable(e.CULL_FACE),r.disable(e.BLEND),r.disable(e.DEPTH_TEST),r.disable(e.SCISSOR_TEST),r.depthMask(!1),r.colorMask(!0,!0,!0,!0),r.clearColor(0,0,0,0)}var ww=new Uint8Array(4),xW=new Int32Array(4);function SW(t,e){Ee&&t.timer.mark("getHistopyramidSum");let{gl:r,state:n,resources:o}=t,i=w0e(t,e);t.state.currentRenderItemId=-1,t.namedFramebuffers[yu]||(t.namedFramebuffers[yu]=o.framebuffer());let a=t.namedFramebuffers[yu];return t.namedTextures[yu]||(t.namedTextures[yu]=ct(r)?o.texture("image-int32","rgba","int","nearest"):o.texture("image-uint8","rgba","ubyte","nearest"),t.namedTextures[yu].define(1,1)),t.namedTextures[yu].attachFramebuffer(a,0),P0e(t),n.viewport(0,0,1,1),i.render(),r.finish(),t.readPixels(0,0,1,1,ct(r)?xW:ww),t.unbindFramebuffer(),Ee&&t.timer.markEnd("getHistopyramidSum"),ct(r)?xW[0]:Ig(ww[0],ww[1],ww[2])}var CW=` +precision highp float; +precision highp int; +precision highp sampler2D; + +uniform sampler2D tInputLevel; + +// previous level used to evaluate the new level +#if __VERSION__ == 100 + uniform sampler2D tPreviousLevel; +#else + precision highp isampler2D; + uniform isampler2D tPreviousLevel; +#endif + +// inverted size of the previous level texture. +uniform float uSize; +uniform float uTexSize; +uniform bool uFirst; + +#include common + +void main(void) { + float k = 0.5 * uSize; + vec2 position = floor((gl_FragCoord.xy / uTexSize) / uSize) * uSize; + + #if __VERSION__ == 100 + float a, b, c, d; + + if (uFirst) { + a = texture2D(tInputLevel, position).r * 255.0; + b = texture2D(tInputLevel, position + vec2(k, 0.0)).r * 255.0; + c = texture2D(tInputLevel, position + vec2(0.0, k)).r * 255.0; + d = texture2D(tInputLevel, position + vec2(k, k)).r * 255.0; + } else { + a = unpackRGBToInt(texture2D(tPreviousLevel, position).rgb); + b = unpackRGBToInt(texture2D(tPreviousLevel, position + vec2(k, 0.0)).rgb); + c = unpackRGBToInt(texture2D(tPreviousLevel, position + vec2(0.0, k)).rgb); + d = unpackRGBToInt(texture2D(tPreviousLevel, position + vec2(k, k)).rgb); + } + gl_FragColor = vec4(packIntToRGB(a + b + c + d), 1.0); + #else + int a, b, c, d; + + if (uFirst) { + a = int(texture2D(tInputLevel, position).r * 255.0); + b = int(texture2D(tInputLevel, position + vec2(k, 0.0)).r * 255.0); + c = int(texture2D(tInputLevel, position + vec2(0.0, k)).r * 255.0); + d = int(texture2D(tInputLevel, position + vec2(k, k)).r * 255.0); + } else { + a = texture2D(tPreviousLevel, position).r; + b = texture2D(tPreviousLevel, position + vec2(k, 0.0)).r; + c = texture2D(tPreviousLevel, position + vec2(0.0, k)).r; + d = texture2D(tPreviousLevel, position + vec2(k, k)).r; + } + gl_FragColor = ivec4(a + b + c + d); + #endif +} +`;var E0e=U(w({},Er),{tInputLevel:We("texture","rgba","float","nearest"),tPreviousLevel:We("texture","rgba","float","nearest"),uSize:ee("f"),uTexSize:ee("f"),uFirst:ee("b")}),Zf="histogram-pyramid";function I0e(t,e,r){if(t.namedComputeRenderables[Zf]){let n=t.namedComputeRenderables[Zf].values;C.update(n.tInputLevel,e),C.update(n.tPreviousLevel,r),t.namedComputeRenderables[Zf].update()}else t.namedComputeRenderables[Zf]=D0e(t,e,r);return t.namedComputeRenderables[Zf]}function D0e(t,e,r){let n=U(w({},Ir),{tInputLevel:C.create(e),tPreviousLevel:C.create(r),uSize:C.create(0),uTexSize:C.create(0),uFirst:C.create(!0)}),o=w({},E0e),i=Qt("reduction",zr,CW,{},{0:"ivec4"}),a=dr(t,"triangles",i,o,n);return mr(a,n)}function A0e(t,e){let r=Math.pow(2,e),n=`level${e}`,o=t.isWebGL2?_w(n,t,"image-int32","alpha","int","nearest"):_w(n,t,"image-uint8","rgba","ubyte","nearest");o.define(r,r);let i=M0e(n,t);return i||(i=TW(n,t),o.attachFramebuffer(i,0)),{texture:o,framebuffer:i}}function k0e(t){let{gl:e,state:r}=t;r.disable(e.CULL_FACE),r.disable(e.BLEND),r.disable(e.DEPTH_TEST),r.enable(e.SCISSOR_TEST),r.depthMask(!1),r.colorMask(!0,!0,!0,!0),r.clearColor(0,0,0,0)}function TW(t,e){let r=`${Zf}-${t}`;return e.namedFramebuffers[r]||(e.namedFramebuffers[r]=e.resources.framebuffer()),e.namedFramebuffers[r]}function _w(t,e,r,n,o,i){let a=`${Zf}-${t}`;return e.namedTextures[a]||(e.namedTextures[a]=e.resources.texture(r,n,o,i)),e.namedTextures[a]}function M0e(t,e){let r=`${Zf}-${t}`;return e.namedFramebuffers[r]}function wW(t,e,r,n){Ee&&t.timer.mark("createHistogramPyramid");let{gl:o,state:i}=t,a=e.getWidth(),s=e.getHeight();if(a!==s||!nf(a))throw new Error("inputTexture must be of square power-of-two size");let l=Math.ceil(Math.log(a)/Math.log(2)),c=Math.pow(2,l),u=Math.pow(2,l),d=Math.pow(2,l-1),m=t.isWebGL2?_w("pyramid",t,"image-int32","alpha","int","nearest"):_w("pyramid",t,"image-uint8","rgba","ubyte","nearest");m.define(u,d);let p=TW("pyramid",t);m.attachFramebuffer(p,0),i.viewport(0,0,u,d),ct(o)?o.clearBufferiv(o.COLOR,0,[0,0,0,0]):o.clear(o.COLOR_BUFFER_BIT);let h=[];for(let S=0;S0&&(C.update(f.values.tPreviousLevel,h[l-S].texture),f.update()),i.currentRenderItemId=-1,i.viewport(0,0,_,_),i.scissor(0,0,_,_),ct(o)?o.clearBufferiv(o.COLOR,0,[0,0,0,0]):o.clear(o.COLOR_BUFFER_BIT),i.scissor(0,0,n[0],n[1]),f.render(),m.bind(0),o.copyTexSubImage2D(o.TEXTURE_2D,0,b,0,0,0,_,_),m.unbind(0),b+=_}o.finish(),Ee&&t.timer.markEnd("createHistogramPyramid");let v=Math.max(1,SW(t,h[0].texture)),x=Math.ceil(v/Math.pow(2,l));return{pyramidTex:m,count:v,height:x,levels:l,scale:r}}var U1;function _W(){if(U1!==void 0)return U1;U1=Zr(16*16,1,Uint8Array);let{array:t}=U1;for(let e=0,r=$f.length;e 16777215.5 ? vec3(1.0) : packIntToRGB(group), 1.0); +} + +void main(void) { + // get 1D index + int vI = int(gl_FragCoord.x) + int(gl_FragCoord.y) * int(uSize); + + // ignore 1D indices outside of the grid + if(vI >= int(uCount)) discard; + + ivec2 offset = ivec2(int(uSize) - 2, 0); + + int start = 0; + ivec4 starts = ivec4(0); + ivec4 ends = ivec4(0); + int diff = 2; + ivec4 m = ivec4(0); + ivec2 position = ivec2(0); + ivec4 vI4 = ivec4(vI); + + ivec2 relativePosition = ivec2(0); + int end = 0; + ivec2 pos1 = ivec2(0); + ivec2 pos2 = ivec2(0); + ivec2 pos3 = ivec2(0); + ivec2 pos4 = ivec2(0); + ivec3 vI3 = ivec3(vI); + ivec3 mask = ivec3(0); + + // traverse the different levels of the pyramid + for(int i = 1; i < 14; i++) { + if(float(i) >= uLevels) break; + + offset.x -= diff; + diff *= 2; + relativePosition = position + offset; + + end = start + pyramidVoxel(vec2(relativePosition)); + pos1 = ivec2(relativePosition); + starts.x = start; + ends.x = end; + pos2 = ivec2(relativePosition + ivec2(1, 0)); + starts.y = ends.x; + ends.y = ends.x + pyramidVoxel(vec2(pos2)); + pos3 = relativePosition + ivec2(0, 1); + starts.z = ends.y; + ends.z = ends.y + pyramidVoxel(vec2(pos3)); + pos4 = relativePosition + ivec2(1, 1); + starts.w = ends.z; + mask = ivec3(greaterThanEqual(vI3, starts.rgb)) * ivec3(lessThan(vI3, ends.rgb)); + m = ivec4(mask, 1 - int(any(bvec3(mask)))); + + relativePosition = m.x * pos1 + m.y * pos2 + m.z * pos3 + m.w * pos4; + start = idot4(m, starts); + position = 2 * (relativePosition - offset); + } + + end = start + int(baseVoxel(vec2(position)).r * 255.0); + pos1 = position; + starts.x = start; + ends.x = end; + pos2 = position + ivec2(1, 0); + starts.y = ends.x; + ends.y = ends.x + int(baseVoxel(vec2(pos2)).r * 255.0); + pos3 = position + ivec2(0, 1); + starts.z = ends.y; + ends.z = ends.y + int(baseVoxel(vec2(pos3)).r * 255.0); + pos4 = position + ivec2(1, 1); + starts.w = ends.z; + mask = ivec3(greaterThanEqual(vI3, starts.rgb)) * ivec3(lessThan(vI3, ends.rgb)); + m = ivec4(mask, 1 - int(any(bvec3(mask)))); + position = m.x * pos1 + m.y * pos2 + m.z * pos3 + m.w * pos4; + + vec2 coord2d = (vec2(position) / uSize) / uScale; + vec3 coord3d = floor(index3dFrom2d(coord2d) + 0.5); + + float edgeIndex = floor(baseVoxel(vec2(position)).a * 255.0 + 0.5); + + // current vertex for the up to 15 MC cases + int currentVertex = vI - idot4(m, starts); + + // ensure winding-order is the same for negative and positive iso-levels + if (uInvert) { + int v = imod(currentVertex + 1, 3); + if (v == 1) currentVertex += 2; + else if (v == 0) currentVertex -= 2; + } + + // get index into triIndices table + int mcIndex = 16 * int(edgeIndex) + currentVertex; + vec4 mcData = texture2D(tTriIndices, vec2(imod(mcIndex, 64), mcIndex / 64) / 64.); + + // bit mask to avoid conditionals (see comment below) for getting MC case corner + vec4 m0 = vec4(floor(mcData.a * 255.0 + 0.5)); + + // get edge value masks + vec4 m1 = vec4(equal(m0, vec4(0., 1., 2., 3.))); + vec4 m2 = vec4(equal(m0, vec4(4., 5., 6., 7.))); + vec4 m3 = vec4(equal(m0, vec4(8., 9., 10., 11.))); + + // apply bit masks + vec3 b0 = coord3d + + m1.y * c1 + + m1.z * c2 + + m1.w * c3 + + m2.x * c4 + + m2.y * c5 + + m2.z * c6 + + m2.w * c7 + + m3.y * c1 + + m3.z * c2 + + m3.w * c3; + vec3 b1 = coord3d + + m1.x * c1 + + m1.y * c2 + + m1.z * c3 + + m2.x * c5 + + m2.y * c6 + + m2.z * c7 + + m2.w * c4 + + m3.x * c4 + + m3.y * c5 + + m3.z * c6 + + m3.w * c7; + + // the conditionals that are avoided by above bitmasks + // vec3 b0 = coord3d; + // vec3 b1 = coord3d; + // if (mcIndex == 0.0) { + // b1 += c1; + // } else if (mcIndex == 1.0) { + // b0 += c1; b1 += c2; + // } else if (mcIndex == 2.0) { + // b0 += c2; b1 += c3; + // } else if (mcIndex == 3.0) { + // b0 += c3; + // } else if (mcIndex == 4.0) { + // b0 += c4; b1 += c5; + // } else if (mcIndex == 5.0) { + // b0 += c5; b1 += c6; + // } else if (mcIndex == 6.0) { + // b0 += c6; b1 += c7; + // } else if (mcIndex == 7.0) { + // b0 += c7; b1 += c4; + // } else if (mcIndex == 8.0) { + // b1 += c4; + // } else if (mcIndex == 9.0) { + // b0 += c1; b1 += c5; + // } else if (mcIndex == 10.0) { + // b0 += c2; b1 += c6; + // } else if (mcIndex == 11.0) { + // b0 += c3; b1 += c7; + // } + // b0 = floor(b0 + 0.5); + // b1 = floor(b1 + 0.5); + + vec4 d0 = voxel(b0); + vec4 d1 = voxel(b1); + + float v0 = d0.a; + float v1 = d1.a; + + float t = (uIsoValue - v0) / (v0 - v1); + gl_FragData[0].xyz = (uGridTransform * vec4(b0 + t * (b0 - b1), 1.0)).xyz; + + // group id + #if __VERSION__ == 100 || defined(dConstantGroup) + // webgl1 does not support 'flat' interpolation (i.e. no interpolation) + // ensure a constant group id per triangle as needed + #ifdef dPackedGroup + gl_FragData[1] = vec4(voxel(coord3d).rgb, 1.0); + #else + gl_FragData[1] = getGroup(coord3d); + #endif + #else + #ifdef dPackedGroup + gl_FragData[1] = vec4(t < 0.5 ? d0.rgb : d1.rgb, 1.0); + #else + gl_FragData[1] = getGroup(t < 0.5 ? b0 : b1); + #endif + #endif + + // normals from gradients + vec3 n0 = -normalize(vec3( + voxelPadded(b0 - c1).a - voxelPadded(b0 + c1).a, + voxelPadded(b0 - c3).a - voxelPadded(b0 + c3).a, + voxelPadded(b0 - c4).a - voxelPadded(b0 + c4).a + )); + vec3 n1 = -normalize(vec3( + voxelPadded(b1 - c1).a - voxelPadded(b1 + c1).a, + voxelPadded(b1 - c3).a - voxelPadded(b1 + c3).a, + voxelPadded(b1 - c4).a - voxelPadded(b1 + c4).a + )); + gl_FragData[2].xyz = -vec3( + n0.x + t * (n0.x - n1.x), + n0.y + t * (n0.y - n1.y), + n0.z + t * (n0.z - n1.z) + ); + + // ensure normal-direction is the same for negative and positive iso-levels + if (uInvert) { + gl_FragData[2].xyz *= -1.0; + } + + // apply normal matrix + gl_FragData[2].xyz *= transpose3(inverse3(mat3(uGridTransform))); +} +`;var IW=` +precision highp float; +precision highp int; +precision highp sampler2D; + +uniform sampler2D tTriCount; +uniform sampler2D tVolumeData; + +uniform float uIsoValue; +uniform vec3 uGridDim; +uniform vec3 uGridTexDim; +uniform vec2 uScale; + +#include common + +// cube corners (excluding origin) +const vec3 c1 = vec3(1., 0., 0.); +const vec3 c2 = vec3(1., 1., 0.); +const vec3 c3 = vec3(0., 1., 0.); +const vec3 c4 = vec3(0., 0., 1.); +const vec3 c5 = vec3(1., 0., 1.); +const vec3 c6 = vec3(1., 1., 1.); +const vec3 c7 = vec3(0., 1., 1.); + +vec3 index3dFrom2d(vec2 coord) { + vec2 gridTexPos = coord * uGridTexDim.xy; + vec2 columnRow = ivec2Div(gridTexPos, uGridDim.xy); + vec2 posXY = gridTexPos - columnRow * uGridDim.xy; + float posZ = columnRow.y * intDiv(uGridTexDim.x, uGridDim.x) + columnRow.x; + return vec3(posXY, posZ); +} + +vec4 texture3dFrom2dNearest(sampler2D tex, vec3 pos, vec3 gridDim, vec2 texDim) { + float zSlice = floor(pos.z * gridDim.z + 0.5); // round to nearest z-slice + float column = intDiv(intMod(zSlice * gridDim.x, texDim.x), gridDim.x); + float row = intDiv(zSlice * gridDim.x, texDim.x); + vec2 coord = (vec2(column * gridDim.x, row * gridDim.y) + (pos.xy * gridDim.xy)) / (texDim / uScale); + return texture2D(tex, coord); +} + +vec4 voxel(vec3 pos) { + pos = min(max(vec3(0.0), pos), uGridDim - vec3(1.0)); + return texture3dFrom2dNearest(tVolumeData, pos / uGridDim, uGridDim, uGridTexDim.xy); +} + +void main(void) { + vec2 uv = gl_FragCoord.xy / uGridTexDim.xy; + vec3 posXYZ = index3dFrom2d(uv); + + // get MC case as the sum of corners that are below the given iso level + float c = step(voxel(posXYZ).a, uIsoValue) + + 2. * step(voxel(posXYZ + c1).a, uIsoValue) + + 4. * step(voxel(posXYZ + c2).a, uIsoValue) + + 8. * step(voxel(posXYZ + c3).a, uIsoValue) + + 16. * step(voxel(posXYZ + c4).a, uIsoValue) + + 32. * step(voxel(posXYZ + c5).a, uIsoValue) + + 64. * step(voxel(posXYZ + c6).a, uIsoValue) + + 128. * step(voxel(posXYZ + c7).a, uIsoValue); + c *= step(c, 254.); + + // handle out of bounds positions + posXYZ += 1.0; + posXYZ.xy += 1.0; // pixel padding (usually ok even if the texture has no padding) + if (posXYZ.x >= uGridDim.x || posXYZ.y >= uGridDim.y || posXYZ.z >= uGridDim.z) + c = 0.0; + + // get total triangles to generate for calculated MC case from triCount texture + float totalTrianglesToGenerate = texture2D(tTriCount, vec2(intMod(c, 16.), floor(c / 16.)) / 16.).a; + gl_FragColor = vec4(vec3(totalTrianglesToGenerate * 3.0), c / 255.0); +} +`;var R0e=U(w({},Er),{tTriCount:We("image-uint8","alpha","ubyte","nearest"),tVolumeData:We("texture","rgba","ubyte","nearest"),uIsoValue:ee("f"),uGridDim:ee("v3"),uGridTexDim:ee("v3"),uScale:ee("v2")}),Pd="active-voxels";function L0e(t,e,r,n,o,i){if(t.namedComputeRenderables[Pd]){let a=t.namedComputeRenderables[Pd].values;C.update(a.uQuadScale,i),C.update(a.tVolumeData,e),C.updateIfChanged(a.uIsoValue,o),C.update(a.uGridDim,r),C.update(a.uGridTexDim,n),C.update(a.uScale,i),t.namedComputeRenderables[Pd].update()}else t.namedComputeRenderables[Pd]=B0e(t,e,r,n,o,i);return t.namedComputeRenderables[Pd]}function B0e(t,e,r,n,o,i){let a=U(w({},Ir),{tTriCount:C.create(_W()),uQuadScale:C.create(i),tVolumeData:C.create(e),uIsoValue:C.create(o),uGridDim:C.create(r),uGridTexDim:C.create(n),uScale:C.create(i)}),s=w({},R0e),l=Qt("active-voxels",zr,IW),c=dr(t,"triangles",l,s,a);return mr(c,a)}function O0e(t){let{gl:e,state:r}=t;r.disable(e.CULL_FACE),r.disable(e.BLEND),r.disable(e.DEPTH_TEST),r.enable(e.SCISSOR_TEST),r.depthMask(!1),r.colorMask(!0,!0,!0,!0),r.clearColor(0,0,0,0)}function DW(t,e,r,n,o,i){Ee&&t.timer.mark("calcActiveVoxels");let{gl:a,state:s,resources:l}=t,c=e.getWidth(),u=e.getHeight();t.namedFramebuffers[Pd]||(t.namedFramebuffers[Pd]=l.framebuffer());let d=t.namedFramebuffers[Pd];d.bind(),t.namedTextures[Pd]||(t.namedTextures[Pd]=l.texture("image-uint8","rgba","ubyte","nearest"));let m=t.namedTextures[Pd];m.define(c,u);let p=L0e(t,e,r,n,o,i);return t.state.currentRenderItemId=-1,m.attachFramebuffer(d,0),O0e(t),s.viewport(0,0,c,u),s.scissor(0,0,c,u),a.clear(a.COLOR_BUFFER_BIT),s.scissor(0,0,n[0],n[1]),p.render(),a.finish(),Ee&&t.timer.markEnd("calcActiveVoxels"),m}var F0e=U(w({},Er),{tTriIndices:We("image-uint8","alpha","ubyte","nearest"),tActiveVoxelsPyramid:We("texture","rgba","float","nearest"),tActiveVoxelsBase:We("texture","rgba","float","nearest"),tVolumeData:We("texture","rgba","ubyte","nearest"),uIsoValue:ee("f"),uSize:ee("f"),uLevels:ee("f"),uCount:ee("f"),uInvert:ee("b"),uGridDim:ee("v3"),uGridTexDim:ee("v3"),uGridTransform:ee("m4"),uScale:ee("v2"),dPackedGroup:Ye("boolean"),dAxisOrder:Ye("string",["012","021","102","120","201","210"]),dConstantGroup:Ye("boolean")}),Jf="isosurface";function N0e(t,e,r,n,o,i,a,s,l,c,u,d,m,p,h){if(t.namedComputeRenderables[Jf]){let f=t.namedComputeRenderables[Jf].values;C.update(f.tActiveVoxelsPyramid,e),C.update(f.tActiveVoxelsBase,r),C.update(f.tVolumeData,n),C.updateIfChanged(f.uIsoValue,s),C.updateIfChanged(f.uSize,Math.pow(2,l)),C.updateIfChanged(f.uLevels,l),C.updateIfChanged(f.uCount,u),C.updateIfChanged(f.uInvert,d),C.update(f.uGridDim,o),C.update(f.uGridTexDim,i),C.update(f.uGridTransform,a),C.update(f.uScale,c),C.updateIfChanged(f.dPackedGroup,m),C.updateIfChanged(f.dAxisOrder,p.join("")),C.updateIfChanged(f.dConstantGroup,h),t.namedComputeRenderables[Jf].update()}else t.namedComputeRenderables[Jf]=V0e(t,e,r,n,o,i,a,s,l,c,u,d,m,p,h);return t.namedComputeRenderables[Jf]}function V0e(t,e,r,n,o,i,a,s,l,c,u,d,m,p,h){let f=U(w({},Ir),{tTriIndices:C.create(PW()),tActiveVoxelsPyramid:C.create(e),tActiveVoxelsBase:C.create(r),tVolumeData:C.create(n),uIsoValue:C.create(s),uSize:C.create(Math.pow(2,l)),uLevels:C.create(l),uCount:C.create(u),uInvert:C.create(d),uGridDim:C.create(o),uGridTexDim:C.create(i),uGridTransform:C.create(a),uScale:C.create(c),dPackedGroup:C.create(m),dAxisOrder:C.create(p.join("")),dConstantGroup:C.create(h)}),b=w({},F0e),v=Qt("isosurface",zr,EW,{drawBuffers:"required"}),x=dr(t,"triangles",v,b,f);return mr(x,f)}function z0e(t){let{gl:e,state:r}=t;r.disable(e.CULL_FACE),r.disable(e.BLEND),r.disable(e.DEPTH_TEST),r.disable(e.SCISSOR_TEST),r.depthMask(!1),r.colorMask(!0,!0,!0,!0),r.clearColor(0,0,0,0)}function U0e(t,e,r,n,o,i,a,s,l,c,u,d,m,p,h){let{drawBuffers:f}=t.extensions;if(!f)throw new Error("need WebGL draw buffers");Ee&&t.timer.mark("createIsosurfaceBuffers");let{gl:b,state:v,resources:x,extensions:S}=t,{pyramidTex:T,height:E,levels:_,scale:D,count:P}=n,A=T.getWidth();t.namedFramebuffers[Jf]||(t.namedFramebuffers[Jf]=x.framebuffer());let I=t.namedFramebuffers[Jf];ct(b)?(m||(m=x.texture("image-float32","rgba","float","nearest")),p||(p=x.texture("image-uint8","rgba","ubyte","nearest")),h||(h=S.colorBufferHalfFloat&&S.textureHalfFloat?x.texture("image-float16","rgba","fp16","nearest"):x.texture("image-float32","rgba","float","nearest"))):(m||(m=x.texture("image-float32","rgba","float","nearest")),p||(p=x.texture("image-float32","rgba","float","nearest")),h||(h=x.texture("image-float32","rgba","float","nearest"))),m.define(A,E),p.define(A,E),h.define(A,E),m.attachFramebuffer(I,0),p.attachFramebuffer(I,1),h.attachFramebuffer(I,2);let k=N0e(t,T,e,r,o,i,a,s,_,D,P,l,c,u,d);return t.state.currentRenderItemId=-1,I.bind(),f.drawBuffers([f.COLOR_ATTACHMENT0,f.COLOR_ATTACHMENT1,f.COLOR_ATTACHMENT2]),z0e(t),v.viewport(0,0,A,E),b.clear(b.COLOR_BUFFER_BIT),k.render(),b.finish(),Ee&&t.timer.markEnd("createIsosurfaceBuffers"),{vertexTexture:m,groupTexture:p,normalTexture:h,vertexCount:P}}function ey(t,e,r,n,o,i,a,s,l,c,u,d,m,p){Ee&&t.timer.mark("extractIsosurface");let h=DW(t,e,r,n,a,o),f=wW(t,h,o,n),b=U0e(t,h,e,f,r,n,i,a,s,l,c,u,d,m,p);return Ee&&t.timer.markEnd("extractIsosurface"),b}var kW={isoValue:xe.IsoValueParam};function G0e(t){return t.extensions.colorBufferFloat&&t.extensions.textureFloat&&t.extensions.drawBuffers}var j1=1;function V3(t,e){if(t.grid.cells.data.lengthjt(e.grid.cells.data.length,1,1,()=>Lo),getLoci:z3,eachLocation:U3,setUpdateState:(e,r,n,o)=>{xe.IsoValue.areSame(n.isoValue,o.isoValue,r.grid.stats)||(e.createGeometry=!0)},geometryUtils:Be.Utils,mustRecreate:(e,r,n)=>r.tryUseGpu&&!!n&&V3(e.volume,n)},t)}var F3;(function(t){let e="volume-isosurface-texture";t.descriptor=Xc({name:e});function r(n,o){let{resources:i}=o,a=Sn.getGridToCartesianTransform(n.grid),s=y.clone(n.grid.cells.space.dimensions),{width:l,height:c,powerOfTwoSize:u}=uu(s,j1),d=y.create(l,c,0),m=ne.create(l/u,c/u);if(u>o.maxTextureSize/2)throw new Error("volume too large for gpu isosurface extraction");if(!n._propertyData[e]){n._propertyData[e]=i.texture("image-uint8","alpha","ubyte","linear");let p=n._propertyData[e];p.define(u,u),p.load(sw(n,"data",j1),!0),n.customProperties.add(t.descriptor),n.customProperties.assets(t.descriptor,[{dispose:()=>p.destroy()}])}return s[0]+=j1,s[1]+=j1,{texture:n._propertyData[e],transform:a,gridDimension:s,gridTexDim:d,gridTexScale:m}}t.get=r})(F3||(F3={}));function W0e(t,e,r,n,o,i){return N(this,null,function*(){if(!t.webgl)throw new Error("webgl context required to create volume isosurface texture-mesh");if(e.grid.cells.data.length<=1)return Ko.createEmpty(i);let{max:a,min:s}=e.grid.stats,l=a-s,c=xe.IsoValue.toAbsolute(o.isoValue,e.grid.stats).absoluteValue,u=(c-s)/l,{texture:d,gridDimension:m,gridTexDim:p,gridTexScale:h,transform:f}=F3.get(e,t.webgl),b=e.grid.cells.space.axisOrderSlowToFast,v=i?.doubleBuffer.get(),x=ey(t.webgl,d,m,p,h,f,u,c<0,!1,b,!0,v?.vertex,v?.group,v?.normal),S=e.grid.cells.data.length,T=xe.getBoundingSphere(e),E=Ko.create(x.vertexCount,S,x.vertexTexture,x.groupTexture,x.normalTexture,T,i);return E.meta.webgl=t.webgl,E})}function X0e(t){return _d({defaultProps:g.getDefaultValues(G3),createGeometry:W0e,createLocationIterator:e=>jt(e.grid.cells.data.length,1,1,()=>Lo),getLoci:z3,eachLocation:U3,setUpdateState:(e,r,n,o)=>{xe.IsoValue.areSame(n.isoValue,o.isoValue,r.grid.stats)||(e.createGeometry=!0)},geometryUtils:Ko.Utils,mustRecreate:(e,r,n)=>!r.tryUseGpu||!n||!V3(e.volume,n),dispose:e=>{e.vertexTexture.ref.value.destroy(),e.groupTexture.ref.value.destroy(),e.normalTexture.ref.value.destroy(),e.doubleBuffer.destroy()}},t)}function Y0e(t,e,r,n,o,i){return N(this,null,function*(){t.runtime.update({message:"Marching cubes..."});let a=Ri(new Int32Array(e.grid.cells.data.length)),s=yield wv({isoLevel:xe.IsoValue.toAbsolute(o.isoValue,e.grid.stats).absoluteValue,scalarField:e.grid.cells,idField:er.create(e.grid.cells.space,er.Data1(a))},i).runAsChild(t.runtime),l=Sn.getGridToCartesianTransform(e.grid);return Sr.transform(s,l),s.setBoundingSphere(xe.Isosurface.getBoundingSphere(e,o.isoValue)),s})}var MW=U(w(w({},Sr.Params),kW),{quality:U(w({},Sr.Params.quality),{isEssential:!1}),sizeFactor:g.Numeric(3,{min:0,max:10,step:.1})});function Q0e(t){return _d({defaultProps:g.getDefaultValues(MW),createGeometry:Y0e,createLocationIterator:e=>jt(e.grid.cells.data.length,1,1,()=>Lo),getLoci:z3,eachLocation:U3,setUpdateState:(e,r,n,o)=>{xe.IsoValue.areSame(n.isoValue,o.isoValue,r.grid.stats)||(e.createGeometry=!0)},geometryUtils:Sr.Utils},t)}var RW={solid:(t,e)=>Sp("Isosurface mesh",t,e,j0e,AW),wireframe:(t,e)=>Sp("Isosurface wireframe",t,e,Q0e,AW)},LW=U(w(w({},G3),MW),{visuals:g.MultiSelect(["solid"],g.objectToOptions(RW)),bumpFrequency:g.Numeric(1,{min:0,max:10,step:.1},ge.ShadingCategory)});function K0e(t,e){let r=g.clone(LW);return r.isoValue=xe.createIsoValueParam(xe.IsoValue.relative(2),e.grid.stats),r}function $0e(t,e){return rt.createMulti("Isosurface",t,e,rt.StateBuilder,RW)}var BW={name:"isosurface",label:"Isosurface",description:"Displays a triangulated isosurface of volumetric data.",factory:$0e,getParams:K0e,defaultValues:g.getDefaultValues(LW),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"uniform"},isApplicable:t=>!xe.isEmpty(t)&&!xe.Segmentation.get(t)};function Z0e(t,e,r,n,o,i){return N(this,null,function*(){let{dimension:{name:a},isoValue:s}=o,{space:l,data:c}=e.grid.cells,{min:u,max:d}=e.grid.stats,m=xe.IsoValue.toAbsolute(s,e.grid.stats).absoluteValue,p="color"in n.color?n.color.color(Lo,!1):ce(16777215),[h,f,b]=ce.toRgbNormalized(p),{width:v,height:x,x:S,y:T,z:E,x0:_,y0:D,z0:P,nx:A,ny:I,nz:k}=j3(e.grid,o),M=new Float32Array(a==="x"?[S,0,0,S,T,0,S,0,E,S,T,E]:a==="y"?[0,T,0,S,T,0,0,T,E,S,T,E]:[0,0,E,0,T,E,S,0,E,S,T,E]),R=new Uint8Array(v*x*4),B=J0e(e.grid,o),F=0;for(let Q=D;Q=m?255:0,F+=4}let G={width:v,height:x,array:R,flipY:!0},V={width:v,height:x,array:B,flipY:!0},H=Sn.getGridToCartesianTransform(e.grid);return $c(H,M,0,4),fd.create(G,M,V,i)})}function j3(t,e){let{dimension:{name:r,params:n}}=e,{space:o}=t.cells,i,a,s,l,c,u=0,d=0,m=0,[p,h,f]=o.dimensions;return r==="x"?(s=n,l=h-1,c=f-1,i=f,a=h,u=s,p=u+1):r==="y"?(s=p-1,l=n,c=f-1,i=f,a=p,d=l,h=d+1):(s=p-1,l=h-1,c=n,i=p,a=h,m=c,f=m+1),{width:i,height:a,x:s,y:l,z:c,x0:u,y0:d,z0:m,nx:p,ny:h,nz:f}}function J0e(t,e){let{space:r}=t.cells,{width:n,height:o,x0:i,y0:a,z0:s,nx:l,ny:c,nz:u}=j3(t,e),d=new Uint8Array(n*o*4),m=0;for(let p=a;pjt(e.grid.cells.data.length,1,1,()=>Lo),getLoci:tve,eachLocation:rve,setUpdateState:(e,r,n,o,i,a)=>{e.createGeometry=n.dimension.name!==o.dimension.name||n.dimension.params!==o.dimension.params||!xe.IsoValue.areSame(n.isoValue,o.isoValue,r.grid.stats)||!wo.areEqual(i.color,a.color)},geometryUtils:U(w({},fd.Utils),{createRenderableState:e=>{let r=fd.Utils.createRenderableState(e);return OW(r,e),r},updateRenderableState:OW})},t)}function OW(t,e){fd.Utils.updateRenderableState(t,e),t.opaque=!1,t.writeDepth=!0}function ive(t,e){return Sp("Slice",t,e,ove,FW)}var NW={name:"slice",label:"Slice",description:"Slice of volume rendered as image with interpolation.",factory:ive,getParams:nve,defaultValues:g.getDefaultValues(H3),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"uniform"},isApplicable:t=>!xe.isEmpty(t)&&!xe.Segmentation.get(t)};function VW(t,e){let r=qe();return qe.add(r,t),qe.transform(r,r,e),r}function ave(t,e,r,n){let o=r.grid.cells.space.dimensions,{width:i,height:a}=uu(o);if(Math.max(i,a)>e.maxTextureSize/2)throw new Error("volume too large for direct-volume rendering");let s=sw(r,"normals"),l=Sn.getGridToCartesianTransform(r.grid),c=VW(o,l),u=n?n.gridTexture.ref.value:e.resources.texture("image-uint8","rgba","ubyte","linear");u.load(s);let{unitToCartn:d,cellDim:m}=zW(r.grid),p=r.grid.cells.space.axisOrderSlowToFast;return ta.create(c,o,l,d,m,u,r.grid.stats,!1,p,n)}function zW(t){if(t.transform.kind==="matrix")return{unitToCartn:W.mul(W(),t.transform.matrix,W.fromScaling(W(),t.cells.space.dimensions)),cellDim:W.getScaling(y(),t.transform.matrix)};let e=t.transform.fractionalBox,r=qe.size(y(),e);return{unitToCartn:W.mul3(W(),t.transform.cell.fromFractional,W.fromTranslation(W(),e.min),W.fromScaling(W(),r)),cellDim:y.div(y(),t.transform.cell.size,t.cells.space.dimensions)}}function sve(t,e,r,n){let o=r.grid.cells.space.dimensions;if(Math.max(...o)>e.max3dTextureSize/2)throw new Error("volume too large for direct-volume rendering");let i=qq(r),a=Sn.getGridToCartesianTransform(r.grid),s=VW(o,a),l=n?n.gridTexture.ref.value:e.resources.texture("volume-uint8","rgba","ubyte","linear");l.load(i);let{unitToCartn:c,cellDim:u}=zW(r.grid),d=r.grid.cells.space.axisOrderSlowToFast;return ta.create(s,o,a,c,u,l,r.grid.stats,!1,d,n)}function lve(t,e,r,n,o,i){return N(this,null,function*(){let{runtime:a,webgl:s}=t;if(s===void 0)throw new Error("DirectVolumeVisual requires `webgl` in props");return s.isWebGL2?sve(a,s,e,i):ave(a,s,e,i)})}function cve(t,e){return xe.Loci(t)}function uve(t,e,r,n,o){let{objectId:i,groupId:a}=t;return o===i?xe.Cell.Loci(e,Oe.ofSingleton(a)):St}function dve(t,e,r,n,o){return jf(t,e,void 0,o)}var q3=U(w({},ta.Params),{quality:U(w({},ta.Params.quality),{isEssential:!1})});function mve(t,e){let r=g.clone(q3);return r.controlPoints.getVolume=()=>e,r}function pve(t){return _d({defaultProps:g.getDefaultValues(q3),createGeometry:lve,createLocationIterator:e=>jt(e.grid.cells.data.length,1,1,()=>Lo),getLoci:uve,eachLocation:dve,setUpdateState:(e,r,n,o)=>{},geometryUtils:ta.Utils,dispose:e=>{e.gridTexture.ref.value.destroy()}},t)}function fve(t,e){return Sp("Direct Volume",t,e,pve,cve)}var UW={name:"direct-volume",label:"Direct Volume",description:"Direct rendering of volumetric data.",factory:fve,getParams:mve,defaultValues:g.getDefaultValues(q3),defaultColorTheme:{name:"volume-value"},defaultSizeTheme:{name:"uniform"},isApplicable:t=>!xe.isEmpty(t)&&!xe.Segmentation.get(t)};var hve={segments:g.Converted(t=>t.map(e=>`${e}`),t=>t.map(e=>parseInt(e)),g.MultiSelect(["0"],g.arrayToOptions(["0"]),{isEssential:!0}))};function gve(t){return t.extensions.colorBufferFloat&&t.extensions.textureFloat&&t.extensions.drawBuffers}var H1=1;function X3(t,e){if(t.grid.cells.data.length{let n=xe.Segment.Location(e,r);return jt(e.grid.cells.data.length,1,1,()=>n)},getLoci:jW,eachLocation:HW,setUpdateState:(e,r,n,o)=>{},geometryUtils:Be.Utils,mustRecreate:(e,r,n)=>r.tryUseGpu&&!!n&&X3(e.volume,n)},t)}var W3="segment-texture";function Tve(t,e,r){let n=xe.Segmentation.get(t);if(!n)throw new Error("missing volume segmentation");let{resources:o}=r,i=qe.clone(n.bounds[e]);qe.expand(i,i,y.create(2,2,2));let a=GW(t.grid,i),s=qe.size(y(),i),{width:l,height:c,powerOfTwoSize:u}=uu(s,H1),d=y.create(l,c,0),m=ne.create(l/u,c/u);if(u>r.maxTextureSize/2)throw new Error("volume too large for gpu segment extraction");r.namedTextures[W3]||(r.namedTextures[W3]=o.texture("image-uint8","alpha","ubyte","linear"));let p=r.namedTextures[W3];p.define(u,u);let h=Array.from(n.segments.get(e).values());return p.load(Wq(t,h,i,H1),!0),s[0]+=H1,s[1]+=H1,{texture:p,transform:a,gridDimension:s,gridTexDim:d,gridTexScale:m}}function wve(t,e,r,n,o,i){return N(this,null,function*(){if(!t.webgl)throw new Error("webgl context required to create volume segment texture-mesh");if(e.grid.cells.data.length<=1)return Ko.createEmpty(i);let{texture:a,gridDimension:s,gridTexDim:l,gridTexScale:c,transform:u}=Tve(e,r,t.webgl),d=e.grid.cells.space.axisOrderSlowToFast,m=i?.doubleBuffer.get(),p=ey(t.webgl,a,s,l,c,u,.5,!1,!1,d,!0,m?.vertex,m?.group,m?.normal),h=e.grid.cells.data.length;return Ko.create(p.vertexCount,h,p.vertexTexture,p.groupTexture,p.normalTexture,xe.Segment.getBoundingSphere(e,[r]),i)})}function _ve(t){return _d({defaultProps:g.getDefaultValues(Y3),createGeometry:wve,createLocationIterator:(e,r)=>{let n=xe.Segment.Location(e,r);return jt(e.grid.cells.data.length,1,1,()=>n)},getLoci:jW,eachLocation:HW,setUpdateState:(e,r,n,o)=>{},geometryUtils:Ko.Utils,mustRecreate:(e,r,n)=>!r.tryUseGpu||!n||!X3(e.volume,n),dispose:e=>{e.vertexTexture.ref.value.destroy(),e.groupTexture.ref.value.destroy(),e.normalTexture.ref.value.destroy(),e.doubleBuffer.destroy()}},t)}function Pve(t){return tr.ofUnsortedArray(t.segments)}var qW={segment:(t,e)=>Sp("Segment mesh",t,e,vve,bve,Pve)},WW=U(w({},Y3),{visuals:g.MultiSelect(["segment"],g.objectToOptions(qW)),bumpFrequency:g.Numeric(1,{min:0,max:10,step:.1},ge.ShadingCategory)});function Eve(t,e){let r=g.clone(WW),n=xe.Segmentation.get(e);if(n){let o=Array.from(n.segments.keys());r.segments=g.Converted(i=>i.map(a=>`${a}`),i=>i.map(a=>parseInt(a)),g.MultiSelect(o.map(i=>`${i}`),g.arrayToOptions(o.map(i=>`${i}`)),{isEssential:!0}))}return r}function Ive(t,e){return rt.createMulti("Segment",t,e,rt.StateBuilder,qW)}var XW={name:"segment",label:"Segment",description:"Displays a triangulated segment of volumetric data.",factory:Ive,getParams:Eve,defaultValues:g.getDefaultValues(WW),defaultColorTheme:{name:"volume-segment"},defaultSizeTheme:{name:"uniform"},isApplicable:t=>!xe.isEmpty(t)&&!!xe.Segmentation.get(t)};var eh=class t extends fv{constructor(){super(),ro(t.BuiltIn,(e,r)=>{if(e.name!==r)throw new Error(`Fix BuiltInVolumeRepresentations to have matching names. ${e.name} ${r}`);this.add(e)})}};(function(t){t.BuiltIn={isosurface:BW,slice:NW,"direct-volume":UW,segment:XW}})(eh||(eh={}));function YW(t,e,r,n){t.push({source:e==="em"?{name:"em",params:{isoValue:xe.IsoValue.absolute(n||0)}}:{name:"x-ray",params:{}},dataId:r})}var q1=Gi.build({display:{name:"Volume Streaming"},from:X.Molecule.Structure,params(t,e){let r=R8(t&&t.data),n=L8(r,t&&t.data);return{method:g.Select(r,[["em","EM"],["x-ray","X-Ray"]]),entries:g.ObjectList({id:g.Text(n[0]||"")},({id:o})=>o,{defaultValue:n.map(o=>({id:o}))}),defaultView:g.Select(r==="em"?"auto":"selection-box",di.ViewTypeOptions),options:g.Group({serverUrl:g.Text(e.config.get(Wt.VolumeStreaming.DefaultServer)||"https://ds.litemol.org"),behaviorRef:g.Text("",{isHidden:!0}),emContourProvider:g.Select("emdb",[["emdb","EMDB"],["pdbe","PDBe"]],{isHidden:!0}),channelParams:g.Value({},{isHidden:!0})})}},isApplicable:(t,e,r)=>{let n=r.config.get(Wt.VolumeStreaming.CanStream);return n?n(t.data,r):t.data.models.length===1&&Et.probablyHasDensityMap(t.data.models[0])}})(({ref:t,state:e,params:r},n)=>ie.create("Volume Streaming",o=>N(void 0,null,function*(){let i=[];for(let d=0,m=r.entries.length;d0&&(yield n.managers.structure.hierarchy.remove(l?.toArray()));let c=s.cell.obj,u=e.build().to(a.ref).apply(W1,g.getDefaultValues(di.createParams({data:c.data,defaultView:r.defaultView,channelParams:r.options.channelParams})),{ref:r.options.behaviorRef?r.options.behaviorRef:void 0});r.method==="em"?u.apply(Pw,{channel:"em"},{state:{isGhost:!0},tags:"em"}):(u.apply(Pw,{channel:"2fo-fc"},{state:{isGhost:!0},tags:"2fo-fc"}),u.apply(Pw,{channel:"fo-fc(+ve)"},{state:{isGhost:!0},tags:"fo-fc(+ve)"}),u.apply(Pw,{channel:"fo-fc(-ve)"},{state:{isGhost:!0},tags:"fo-fc(-ve)"})),yield e.updateTree(u).runInContext(o)}))),KW=Gi.build({display:{name:"Boxify Volume Streaming",description:"Make the current box permanent."},from:di,isApplicable:t=>t.data.params.entry.params.view.name==="selection-box"})(({a:t,ref:e,state:r},n)=>{let o=t.data.params;if(o.entry.params.view.name!=="selection-box")return;let i=qe.create(y.clone(o.entry.params.view.params.bottomLeft),y.clone(o.entry.params.view.params.topRight)),a=o.entry.params.view.params.radius;qe.expand(i,i,y.create(a,a,a));let s=U(w({},o),{entry:{name:o.entry.name,params:U(w({},o.entry.params),{view:{name:"box",params:{bottomLeft:i.min,topRight:i.max}}})}});return r.updateTree(r.build().to(e).update(s))}),Dve={dataId:g.Text(""),source:g.MappedStatic("x-ray",{em:g.Group({isoValue:xe.createIsoValueParam(xe.IsoValue.relative(1))}),"x-ray":g.Group({})})};var Ave=Je.BuiltIn({name:"create-volume-streaming-info",display:{name:"Volume Streaming Info"},from:X.Molecule.Structure,to:nv,params(t){return{serverUrl:g.Text("https://ds.litemol.org"),entries:g.ObjectList(Dve,({dataId:e})=>e,{defaultValue:[{dataId:"",source:{name:"x-ray",params:{}}}]})}}})({apply:({a:t,params:e},r)=>ie.create("",n=>N(void 0,null,function*(){let o=[];for(let a=0,s=e.entries.length;aa.dataId).join(", ")}`})}))});var W1=Je.BuiltIn({name:"create-volume-streaming-behavior",display:{name:"Volume Streaming Behavior"},from:nv,to:di,params(t){return di.createParams({data:t&&t.data})}})({canAutoUpdate:({oldParams:t,newParams:e})=>t.entry.params.view===e.entry.params.view||e.entry.params.view.name==="selection-box"||e.entry.params.view.name==="camera-target"||e.entry.params.view.name==="off",apply:({a:t,params:e},r)=>ie.create("Volume streaming",n=>N(void 0,null,function*(){let o=new di.Behavior(r,t.data);return yield o.update(e),new di(o,{label:"Volume Streaming",description:o.getDescription()})})),update({a:t,b:e,oldParams:r,newParams:n}){return ie.create("Update Volume Streaming",o=>N(this,null,function*(){if(r.entry.name!==n.entry.name&&"em"in n.entry.params.channels){let{emDefaultContourLevel:a}=e.data.infoMap.get(n.entry.name);a&&(n.entry.params.channels.em.isoValue=a)}let i=(yield e.data.update(n))?Se.UpdateResult.Updated:Se.UpdateResult.Unchanged;return e.description=e.data.getDescription(),i}))}});var Pw=Je.BuiltIn({name:"create-volume-streaming-visual",display:{name:"Volume Streaming Visual"},from:di,to:X.Volume.Representation3D,params:{channel:g.Select("em",di.ChannelTypeOptions,{isHidden:!0})}})({apply:({a:t,params:e,spine:r},n)=>ie.create("Volume Representation",o=>N(void 0,null,function*(){var i,a;let s=t.data.channels[e.channel];if(!s)return Rr.Null;let l=QW(t.data,e.channel),c=eh.BuiltIn.isosurface,u=l.type.params||{},d=c.factory(w({webgl:(i=n.canvas3d)===null||i===void 0?void 0:i.webgl},n.representation.volume.themes),c.getParams);d.setTheme(An.create(n.representation.volume.themes,{volume:s.data},l));let m=(a=r.getAncestorOfType(X.Molecule.Structure))===null||a===void 0?void 0:a.data,p=m?.models.length===0?void 0:LT.get(m?.models[0]);return yield d.createOrUpdate(u,s.data).runInContext(o),p&&d.setState({transform:p}),new X.Volume.Representation3D({repr:d,sourceData:s.data},{label:`${Math.round(s.isoValue.relativeValue*100)/100} \u03C3 [${e.channel}]`})})),update:({a:t,b:e,newParams:r,spine:n},o)=>ie.create("Volume Representation",i=>N(void 0,null,function*(){let a=t.data.channels[r.channel];if(!a)return Se.UpdateResult.Unchanged;let s=e.data.repr.state.visible,l=QW(t.data,r.channel),c=w(w({},e.data.repr.props),l.type.params);return e.data.repr.setTheme(An.create(o.representation.volume.themes,{volume:a.data},l)),yield e.data.repr.createOrUpdate(c,a.data).runInContext(i),e.data.repr.setState({visible:s}),e.data.sourceData=a.data,Se.UpdateResult.Updated}))});function QW(t,e){let r=t.channels[e];return hu.getDefaultParamsStatic(t.plugin,"isosurface",{isoValue:r.isoValue,alpha:r.opacity,visuals:r.wireframe?["wireframe"]:["solid"]},"uniform",{value:r.color})}var As;(function(t){function e(n){return n}t.create=e;function r(n,o){var i,a;if(o.customDurationMs)return o.customDurationMs;let s=(a=(i=o.definition).getDuration)===null||a===void 0?void 0:a.call(i,o.params,n);if(s?.kind==="fixed")return s.durationMs}t.getDuration=r})(As||(As={}));var iR={};ua(iR,{Download:()=>tR,DownloadBlob:()=>rR,ImportJson:()=>qbe,ImportString:()=>Hbe,LazyVolume:()=>Xbe,ParseBlob:()=>Lbe,ParseCcp4:()=>Ube,ParseCif:()=>Bbe,ParseCube:()=>Obe,ParseDsn6:()=>Gbe,ParseDx:()=>jbe,ParseJson:()=>Wbe,ParsePly:()=>zbe,ParsePrmtop:()=>Nbe,ParsePsf:()=>Fbe,ParseTop:()=>Vbe,RawData:()=>nR,ReadFile:()=>oR});var al;(function(t){function e(s){let l=new DataView(s.buffer);return Object.assign(s.subarray(0),{readInt8:c=>l.getInt8(c),readUInt8:c=>l.getUint8(c),writeInt8:(c,u)=>l.setInt8(u,c),writeUInt8:(c,u)=>l.setUint8(u,c),readInt16LE:c=>l.getInt16(c,!0),readInt32LE:c=>l.getInt32(c,!0),readUInt16LE:c=>l.getUint16(c,!0),readUInt32LE:c=>l.getUint32(c,!0),readFloatLE:c=>l.getFloat32(c,!0),readDoubleLE:c=>l.getFloat64(c,!0),writeInt16LE:(c,u)=>l.setInt16(u,c,!0),writeInt32LE:(c,u)=>l.setInt32(u,c,!0),writeUInt16LE:(c,u)=>l.setUint16(u,c,!0),writeUInt32LE:(c,u)=>l.setUint32(u,c,!0),writeFloatLE:(c,u)=>l.setFloat32(u,c,!0),writeDoubleLE:(c,u)=>l.setFloat64(u,c,!0),readInt16BE:c=>l.getInt16(c,!1),readInt32BE:c=>l.getInt32(c,!1),readUInt16BE:c=>l.getUint16(c,!1),readUInt32BE:c=>l.getUint32(c,!1),readFloatBE:c=>l.getFloat32(c,!1),readDoubleBE:c=>l.getFloat64(c,!1),writeInt16BE:(c,u)=>l.setInt16(u,c,!1),writeInt32BE:(c,u)=>l.setInt32(u,c,!1),writeUInt16BE:(c,u)=>l.setUint16(u,c,!1),writeUInt32BE:(c,u)=>l.setUint32(u,c,!1),writeFloatBE:(c,u)=>l.setFloat32(u,c,!1),writeDoubleBE:(c,u)=>l.setFloat64(u,c,!1),copy:(c,u,d,m)=>(u=li(u,0),d=li(d,0),m=li(m,s.length),c.set(s.subarray(d,m),u),m-d)})}t.fromUint8Array=e;function r(s){return e(new Uint8Array(s))}t.fromArrayBuffer=r;function n(s){return s}t.fromBuffer=n,t.IsNativeEndianLittle=new Uint16Array(new Uint8Array([18,52]).buffer)[0]===13330;function o(s,l,c,u,d){for(let m=0,p=c;m>8&255}}t.flipByteOrderInPlace2=i;function a(s,l,c,u,d){t.IsNativeEndianLittle||!c||u<=1||o(s,l,c,u,d)}t.ensureLittleEndian=a})(al||(al={}));var _v;(function(t){function e(r,n){return{name:n,readBuffer:(o,i,a,s)=>{let l,c;if(typeof i=="number"){a=li(a,i);let u=o,d=Math.min(r.length,u+a);l=d-u,c=al.fromUint8Array(new Uint8Array(r.buffer,u,d-u))}else{a=li(a,i.length);let u=o,d=Math.min(r.length,u+a);i.set(r.subarray(u,d),s),l=d-u,c=i}return a!==l&&console.warn(`byteCount ${a} and bytesRead ${l} differ`),Promise.resolve({bytesRead:l,buffer:c})},writeBuffer:(o,i,a)=>(a=li(a,i.length),console.error(".writeBuffer not implemented for FileHandle.fromBuffer"),Promise.resolve(0)),writeBufferSync:(o,i,a)=>(a=li(a,i.length),console.error(".writeSync not implemented for FileHandle.fromBuffer"),0),close:hs}}t.fromBuffer=e})(_v||(_v={}));var Ba=function(t){return t.Float32="float32",t.Int8="int8",t.Int16="int16",t.Uint16="uint16",t}(Ba||{});function Q3(t){return t===Ba.Float32?4:t===Ba.Int16||t===Ba.Uint16?2:1}function kve(t,e,r=0,n){return t===Ba.Float32?new Float32Array(e,r,n):t===Ba.Int16?new Int16Array(e,r,n):t===Ba.Uint16?new Uint16Array(e,r,n):new Int8Array(e,r,n)}function $W(t,e){let r=Q3(e),n=new ArrayBuffer(r*t),o=al.fromArrayBuffer(n),i=al.IsNativeEndianLittle?n:new ArrayBuffer(r*t);return{type:e,elementByteSize:r,readBuffer:o,valuesBuffer:new Uint8Array(i),values:kve(e,i)}}function ZW(t,e,r,n,o,i){return N(this,null,function*(){return yield e.readBuffer(r,t.readBuffer,n,o),t.elementByteSize>1&&(i!==void 0&&i!==al.IsNativeEndianLittle||!al.IsNativeEndianLittle)&&al.flipByteOrder(t.readBuffer,t.valuesBuffer,n,t.elementByteSize,o),t.values})}function Mve(t){return N(this,null,function*(){let{buffer:r}=yield t.readBuffer(0,1024),n=String.fromCharCode(r.readUInt8(52*4),r.readUInt8(52*4+1),r.readUInt8(52*4+2),r.readUInt8(52*4+3));if(n!=="MAP ")throw new Error('ccp4 format error, missing "MAP " string');let o=[r.readUInt8(53*4),r.readUInt8(53*4+1)],i=!1;o[0]===68&&o[1]===65?i=!0:o[0]===17&&o[1]===17?i=!1:r.readInt32LE(12)<=16&&(i=!0);let a=i?c=>r.readInt32LE(c*4):c=>r.readInt32BE(c*4),s=i?c=>r.readFloatLE(c*4):c=>r.readFloatBE(c*4);return{header:{NC:a(0),NR:a(1),NS:a(2),MODE:a(3),NCSTART:a(4),NRSTART:a(5),NSSTART:a(6),NX:a(7),NY:a(8),NZ:a(9),xLength:s(10),yLength:s(11),zLength:s(12),alpha:s(13),beta:s(14),gamma:s(15),MAPC:a(16),MAPR:a(17),MAPS:a(18),AMIN:s(19),AMAX:s(20),AMEAN:s(21),ISPG:a(22),NSYMBT:a(23),LSKFLG:a(24),SKWMAT:[],SKWTRN:[],userFlag1:a(39),userFlag2:a(40),originX:s(49),originY:s(50),originZ:s(51),MAP:n,MACHST:o,ARMS:s(54)},littleEndian:i}})}function Rve(t,e,r,n,o,i){return N(this,null,function*(){if(eX(t)){let a=3*o;yield r.readBuffer(n,e.readBuffer,o,a);let s=new Int8Array(e.valuesBuffer.buffer,a),l=(t.AMAX-t.AMIN)/255,c=.5*(t.AMIN+t.AMAX+l);for(let u=0,d=o;uN(this,null,function*(){try{return xr.success(yield Bve(t,e,r))}catch(n){return xr.error(n)}}))}function tX(t,e){return Ove(_v.fromBuffer(al.fromUint8Array(t),e),t.length)}var $3=512;function Nve(t){return{xStart:parseInt(t.substr(10,5)),yStart:parseInt(t.substr(15,5)),zStart:parseInt(t.substr(20,5)),xExtent:parseInt(t.substr(32,5)),yExtent:parseInt(t.substr(38,5)),zExtent:parseInt(t.substr(42,5)),xRate:parseInt(t.substr(52,5)),yRate:parseInt(t.substr(58,5)),zRate:parseInt(t.substr(62,5)),xlen:parseFloat(t.substr(73,10)),ylen:parseFloat(t.substr(83,10)),zlen:parseFloat(t.substr(93,10)),alpha:parseFloat(t.substr(103,10)),beta:parseFloat(t.substr(113,10)),gamma:parseFloat(t.substr(123,10)),divisor:parseFloat(t.substr(138,12)),summand:parseInt(t.substr(155,8)),sigma:parseFloat(t.substr(170,12))}}function Vve(t,e){let r=e?o=>t.readInt16LE(o*2):o=>t.readInt16BE(o*2),n=1/r(17);return{xStart:r(0),yStart:r(1),zStart:r(2),xExtent:r(3),yExtent:r(4),zExtent:r(5),xRate:r(6),yRate:r(7),zRate:r(8),xlen:r(9)*n,ylen:r(10)*n,zlen:r(11)*n,alpha:r(12)*n,beta:r(13)*n,gamma:r(14)*n,divisor:r(15)/100,summand:r(16),sigma:void 0}}function rX(t){let{xExtent:e,yExtent:r,zExtent:n}=t,o=Math.ceil(e/8),i=Math.ceil(r/8),a=Math.ceil(n/8);return{xBlocks:o,yBlocks:i,zBlocks:a}}function zve(t){return N(this,null,function*(){let{buffer:e}=yield t.readBuffer(0,$3),r=String.fromCharCode.apply(null,e),n=r.startsWith(":-)"),o=n||e.readInt16LE(18*2)===100;return{header:n?Nve(r):Vve(e,o),littleEndian:o}})}function Uve(t,e,r,n){return N(this,null,function*(){n||al.flipByteOrderInPlace2(e.buffer);let{divisor:o,summand:i,xExtent:a,yExtent:s,zExtent:l}=t,{xBlocks:c,yBlocks:u,zBlocks:d}=rX(t),m=0;for(let p=0;pN(this,null,function*(){try{return xr.success(yield jve(t,e,r))}catch(n){return xr.error(n)}}))}function nX(t,e){return Hve(_v.fromBuffer(al.fromUint8Array(t),e),t.length)}var Wve={char:1,uchar:1,short:2,ushort:2,int:4,uint:4,float:4,double:8,int8:1,uint8:1,int16:2,uint16:2,int32:4,uint32:4,float32:4,float64:8},Xve=new Set(Object.keys(Wve));function Ew(t){if(!Xve.has(t))throw new Error(`unknown ply type '${t}'`);return t}function oX(t,e,r){let n=new Map;for(let o=0,i=e.length;on.get(o)}}function Yve(t,e){let r=Fe(t);return{data:t,tokenizer:r,runtimeCtx:e,comments:[],elementSpecs:[],elements:[]}}function Qve(t){let e=t.data.indexOf("end_header",t.position);if(e===-1)throw new Error("no 'end_header' record found");t.tokenStart=t.position,t.tokenEnd=e,t.position=e,Fe.eatLine(t)}function Kve(t){let{tokenizer:e,comments:r,elementSpecs:n}=t;Qve(e);let o=Fe.getTokenString(e).split(/\r?\n/);if(o[0]!=="ply")throw new Error("data not starting with 'ply'");if(o[1]!=="format ascii 1.0")throw new Error("format not 'ascii 1.0'");let i,a,s;function l(){if(i!==void 0&&a!==void 0&&s!==void 0){let c=!1;for(let u=0,d=s.length;uu.get(d)})}function Jve(t,e){let{elements:r,tokenizer:n}=t,{count:o,property:i}=e,a=Ce.create(n.data,o*2*3),s=new Uint32Array(o+1),l=0;for(let d=0,m=o;d{let m=s[d]+1,p=u.value(m-1);for(let h=m,f=m+p;hl.name),s=oX(n,a,i);return xr.success(s)})}function aX(t){return ie.create("Parse PLY",e=>N(this,null,function*(){return yield ebe(t,e)}))}var{readLine:Dw,skipWhitespace:sX,eatValue:lX,eatLine:rbe,markStart:Z3}=Fe,Iw=/\s+/,nbe=/(^\*|REMARK)*/;function obe(t,e){return{tokenizer:t,runtimeCtx:e}}function ibe(t,e){return N(this,null,function*(){let{tokenizer:r}=t,n=Ce.create(r.data,e*2),o=Ce.create(r.data,e*2),i=Ce.create(r.data,e*2),a=Ce.create(r.data,e*2),s=Ce.create(r.data,e*2),l=Ce.create(r.data,e*2),c=Ce.create(r.data,e*2),u=Ce.create(r.data,e*2),{position:d}=r,m=Dw(r).trim();r.position=d;let p=m.split(Iw).length===7,h=p?6:8,{length:f}=r,b=0;return yield om(t.runtimeCtx,1e5,void 0,v=>{let x=Math.min(e-b,v);for(let S=0;Sv.update({message:"Parsing...",current:r.position,max:f})),{count:e,atomId:xt(n)(K.Schema.int),segmentName:p?xt(i)(K.Schema.str):xt(o)(K.Schema.str),residueId:xt(i)(K.Schema.int),residueName:p?xt(i)(K.Schema.str):xt(a)(K.Schema.str),atomName:xt(s)(K.Schema.str),atomType:xt(l)(K.Schema.str),charge:xt(c)(K.Schema.float),mass:xt(u)(K.Schema.float)}})}function abe(t,e){return N(this,null,function*(){let{tokenizer:r}=t,n=Ce.create(r.data,e*2),o=Ce.create(r.data,e*2),{length:i}=r,a=0;return yield om(t.runtimeCtx,10,void 0,s=>{let l=Math.min(e-a,s);for(let c=0;cs.update({message:"Parsing...",current:r.position,max:i})),{count:e,atomIdA:xt(n)(K.Schema.int),atomIdB:xt(o)(K.Schema.int)}})}function sbe(t,e){let r=[];for(let n=0;nN(this,null,function*(){return yield lbe(t,e)}))}var uX=.529177210859;function cbe(t){let e=Fe.readLines(t,6),r=(x,S)=>{let T=+e[x].trim().split(/\s+/g)[S];return Number.isNaN(T)?0:T},n=x=>{let S=r(x+2,0),T=uX;return[Math.abs(S),y.create(r(x+2,1)*T,r(x+2,2)*T,r(x+2,3)*T),S]},o=e[0].trim(),i=e[1].trim(),[a,s,l]=n(0),[c,u]=n(1),[d,m]=n(2),[p,h]=n(3),f=ube(t,a,uX),b=[];if(l>=0){let x=r(2,4);x===0&&(x=1);for(let S=0;S{let c=Math.min(n,a+s);for(let u=a;us.update({current:Math.min(c,n),max:n}))}function dX(t,e){return ie.create("Parse Cube",r=>N(this,null,function*(){yield r.update("Reading header...");let n=Fe(t),{header:o,atoms:i}=cbe(n),a=yield dbe(r,n,o);return xr.success({header:o,atoms:i,values:a,name:e})}))}function mX(t){let e={h:y()},r=0,n=0,o=/\s+/g;for(;;){let i=Fe.readLine(t),a;if(i.startsWith("object 1"))a=i.split(o),e.dim=y.create(parseInt(a[5]),parseInt(a[6]),parseInt(a[7]));else if(i.startsWith("origin"))a=i.split(o),e.min=y.create(parseFloat(a[1]),parseFloat(a[2]),parseFloat(a[3]));else if(i.startsWith("delta"))a=i.split(o),n===0?e.h[0]=parseFloat(a[1]):n===1?e.h[1]=parseFloat(a[2]):n===2&&(e.h[2]=parseFloat(a[3])),n+=1;else if(i.startsWith("object 3")){r+=i.length+1;break}r+=i.length+1}return{header:e,headerByteCount:r}}function mbe(t,e,r){let n=r.dim[0]*r.dim[1]*r.dim[2],o=100*100*100,i=new Float64Array(n),a=0;return om(t,o,i,(s,l)=>{let c=Math.min(n,a+s);for(let u=a;us.update({current:Math.min(c,n),max:n}))}function pbe(t,e,r){return N(this,null,function*(){yield t.update("Reading header...");let n=Fe(e),{header:o}=mX(n);yield t.update("Reading values...");let i=yield mbe(t,n,o);return xr.success({header:o,values:i,name:r})})}function fbe(t,e,r){return N(this,null,function*(){yield t.update("Reading header...");let n=aU(e,0,1e3),o=Fe(n),{header:i,headerByteCount:a}=mX(o);yield t.update("Reading values...");let s=i.dim[0]*i.dim[1]*i.dim[2],l=new DataView(e.buffer,e.byteOffset+a),c=new Float64Array(s);for(let u=0;utypeof t=="string"?pbe(r,t,e):fbe(r,t,e))}var hbe={NATOM:"",NTYPES:"",NBONH:"",MBONA:"",NTHETH:"",MTHETA:"",NPHIH:"",MPHIA:"",NHPARM:"",NPARM:"",NNB:"",NRES:"",NBONA:"",NTHETA:"",NPHIA:"",NUMBND:"",NUMANG:"",NPTRA:"",NATYP:"",NPHB:"",IFPERT:"",NBPER:"",NGPER:"",NDPER:"",MBPER:"",MGPER:"",MDPER:"",IFBOX:"",NMXRS:"",IFCAP:"",NUMEXTRA:"",NCOPY:""},fX=Object.keys(hbe),{readLine:Aw,markLine:hX,trim:gbe}=Fe;function ybe(t,e){return{tokenizer:t,runtimeCtx:e}}function vbe(t){let{tokenizer:e}=t,r=[];for(;e.tokenEnd{r[o]=0});let n=0;for(;e.tokenEnd1e5&&e.shouldUpdate&&(i=r.position,yield e.update({current:r.position,max:r.length}));let a=Aw(n.tokenizer).trim();if(a.startsWith("%VERSION"))o.version=a.substring(8).trim();else if(a.startsWith("%FLAG")){let s=a.substring(5).trim();if(!Aw(n.tokenizer).trim().startsWith("%FORMAT"))throw new Error("expected %FORMAT");if(s==="TITLE")o.title=vbe(n);else if(s==="POINTERS")o.pointers=bbe(n);else if(s==="ATOM_NAME"){let c=th(n,o.pointers.NATOM,20,4);o.atomName=xt(c)(K.Schema.str)}else if(s==="CHARGE"){let c=th(n,o.pointers.NATOM,5,16);o.charge=xt(c)(K.Schema.float)}else if(s==="MASS"){let c=th(n,o.pointers.NATOM,5,16);o.mass=xt(c)(K.Schema.float)}else if(s==="RESIDUE_LABEL"){let c=th(n,o.pointers.NRES,20,4);o.residueLabel=xt(c)(K.Schema.str)}else if(s==="RESIDUE_POINTER"){let c=th(n,o.pointers.NRES,10,8);o.residuePointer=xt(c)(K.Schema.int)}else if(s==="BONDS_INC_HYDROGEN"){let c=th(n,o.pointers.NBONH*3,10,8);o.bondsIncHydrogen=xt(c)(K.Schema.int)}else if(s==="BONDS_WITHOUT_HYDROGEN"){let c=th(n,o.pointers.NBONA*3,10,8);o.bondsWithoutHydrogen=xt(c)(K.Schema.int)}else if(s==="RADII"){let c=th(n,o.pointers.NATOM,5,16);o.radii=xt(c)(K.Schema.float)}else for(;r.tokenEndN(this,null,function*(){return yield xbe(t,e)}))}var Sbe={nr:K.Schema.Int(),type:K.Schema.Str(),resnr:K.Schema.Int(),residu:K.Schema.Str(),atom:K.Schema.Str(),cgnr:K.Schema.Int(),charge:K.Schema.Float(),mass:K.Schema.Float()},Cbe={ai:K.Schema.Int(),aj:K.Schema.Int()},Tbe={compound:K.Schema.Str(),molCount:K.Schema.Int()},{readLine:J3,markLine:rh,skipWhitespace:nh,markStart:kw,eatValue:eR,eatLine:wbe}=Fe;function _be(t,e){return{tokenizer:t,runtimeCtx:e}}var Pbe=/\[ (.+) \]/,Ebe=/\s+/;function Ibe(t){let{tokenizer:e}=t,r;for(;e.tokenEnd=e.length));){let o=e.data[e.position];if(o==="[")break;if(o===";"||o==="*"){rh(e);continue}for(let i=0;i<2;++i)switch(nh(e),kw(e),eR(e),i){case 0:Ce.add(r,e.tokenStart,e.tokenEnd);break;case 1:Ce.add(n,e.tokenStart,e.tokenEnd);break}wbe(e),kw(e)}return Xo.ofColumns(Tbe,{compound:xt(r)(K.Schema.str),molCount:xt(n)(K.Schema.int)})}function Rbe(t,e){return N(this,null,function*(){let r=Fe(t),n=_be(r,e),o=Object.create(null),i=0;o.compounds={};let a={},s="";function l(){s&&a.atoms&&(o.compounds[s]=a,a={},s="")}for(;r.tokenEnd1e5&&e.shouldUpdate&&(i=r.position,yield e.update({current:r.position,max:r.length}));let c=J3(n.tokenizer).trim();if(!(!c||c[0]==="*"||c[0]===";")){if(c.startsWith("#include"))throw new Error("#include statements not allowed");if(c.startsWith("[")){let u=c.match(Pbe);if(u===null)throw new Error("expected field name");let d=u[1];if(d==="moleculetype")l(),s=Ibe(n);else if(d==="atoms")a.atoms=Dbe(n);else if(d==="bonds")a.bonds=Abe(n);else if(d==="system")o.system=kbe(n);else if(d==="molecules")l(),o.molecules=Mbe(n);else for(;r.tokenEndN(this,null,function*(){return yield Rbe(t,e)}))}var tR=Je.BuiltIn({name:"download",display:{name:"Download",description:"Download string or binary data from the specified URL"},from:[X.Root],to:[X.Data.String,X.Data.Binary],params:{url:g.Url("https://www.ebi.ac.uk/pdbe/static/entry/1cbs_updated.cif",{description:"Resource URL. Must be the same domain or support CORS."}),label:g.Optional(g.Text("")),isBinary:g.Optional(g.Boolean(!1,{description:"If true, download data as binary (string otherwise)"}))}})({apply({params:t,cache:e},r){return ie.create("Download",n=>N(this,null,function*(){let o=Wr.getUrlAsset(r.managers.asset,t.url),i=yield r.managers.asset.resolve(o,t.isBinary?"binary":"string").runInContext(n);return e.asset=i,t.isBinary?new X.Data.Binary(i.data,{label:t.label?t.label:o.url}):new X.Data.String(i.data,{label:t.label?t.label:o.url})}))},dispose({cache:t}){var e;(e=t?.asset)===null||e===void 0||e.dispose()},update({oldParams:t,newParams:e,b:r}){return t.url!==e.url||t.isBinary!==e.isBinary?Se.UpdateResult.Recreate:t.label!==e.label?(r.label=e.label||(typeof e.url=="string"?e.url:e.url.url),Se.UpdateResult.Updated):Se.UpdateResult.Unchanged}}),rR=Je.BuiltIn({name:"download-blob",display:{name:"Download Blob",description:"Download multiple string or binary data from the specified URLs."},from:X.Root,to:X.Data.Blob,params:{sources:g.ObjectList({id:g.Text("",{label:"Unique ID"}),url:g.Url("https://www.ebi.ac.uk/pdbe/static/entry/1cbs_updated.cif",{description:"Resource URL. Must be the same domain or support CORS."}),isBinary:g.Optional(g.Boolean(!1,{description:"If true, download data as binary (string otherwise)"})),canFail:g.Optional(g.Boolean(!1,{description:"Indicate whether the download can fail and not be included in the blob as a result."}))},t=>`${t.id}: ${t.url}`),maxConcurrency:g.Optional(g.Numeric(4,{min:1,max:12,step:1},{description:"The maximum number of concurrent downloads."}))}})({apply({params:t,cache:e},r){return ie.create("Download Blob",n=>N(this,null,function*(){let o=[],i=yield PU(n,r.managers.asset,t.sources,t.maxConcurrency||4),a=[];for(let s=0;sN(this,null,function*(){if(typeof t.data=="string")return new X.Data.String(t.data,{label:t.label?t.label:"String"});if(Array.isArray(t.data))return new X.Data.Binary(new Uint8Array(t.data),{label:t.label?t.label:"Binary"});if(t.data instanceof ArrayBuffer)return new X.Data.Binary(new Uint8Array(t.data),{label:t.label?t.label:"Binary"});if(t.data instanceof Uint8Array)return new X.Data.Binary(t.data,{label:t.label?t.label:"Binary"});ur(t.data)}))},update({oldParams:t,newParams:e,b:r}){return t.data!==e.data?Se.UpdateResult.Recreate:t.label!==e.label?(r.label=e.label||r.label,Se.UpdateResult.Updated):Se.UpdateResult.Unchanged},customSerialization:{toJSON(t){if(typeof t.data=="string"||Array.isArray(t.data))return t;if(t.data instanceof ArrayBuffer){let e=new Uint8Array(t.data),r=new Array(e.length);for(let n=0,o=e.length;nN(this,null,function*(){if(t.file===null)return r.log.error("No file(s) selected"),Rr.Null;let o=yield r.managers.asset.resolve(t.file,t.isBinary?"binary":"string").runInContext(n);return e.asset=o,t.isBinary?new X.Data.Binary(o.data,{label:t.label?t.label:t.file.name}):new X.Data.String(o.data,{label:t.label?t.label:t.file.name})}))},dispose({cache:t}){var e;(e=t?.asset)===null||e===void 0||e.dispose()},update({oldParams:t,newParams:e,b:r}){var n;return t.label!==e.label?(r.label=e.label||((n=t.file)===null||n===void 0?void 0:n.name)||"",Se.UpdateResult.Updated):Se.UpdateResult.Unchanged},isSerializable:()=>({isSerializable:!1,reason:"Cannot serialize user loaded files."})}),Lbe=Je.BuiltIn({name:"parse-blob",display:{name:"Parse Blob",description:"Parse multiple data enties"},from:X.Data.Blob,to:X.Format.Blob,params:{formats:g.ObjectList({id:g.Text("",{label:"Unique ID"}),format:g.Select("cif",[["cif","cif"]])},t=>`${t.id}: ${t.format}`)}})({apply({a:t,params:e},r){return ie.create("Parse Blob",n=>N(this,null,function*(){let o=new Map;for(let a of e.formats)o.set(a.id,a.format);let i=[];for(let a of t.data){if(!o.has(a.id))continue;let s=yield(a.kind==="string"?lc.parse(a.data):lc.parseBinary(a.data)).runInContext(n);if(s.isError)throw new Error(`${a.id}: ${s.message}`);i.push({id:a.id,kind:"cif",data:s.result})}return new X.Format.Blob(i,{label:"Format Blob",description:`${i.length} ${i.length===1?"entry":"entries"}`})}))}}),Bbe=Je.BuiltIn({name:"parse-cif",display:{name:"Parse CIF",description:"Parse CIF from String or Binary data"},from:[X.Data.String,X.Data.Binary],to:X.Format.Cif})({apply({a:t}){return ie.create("Parse CIF",e=>N(this,null,function*(){let r=yield(typeof t.data=="string"?lc.parse(t.data):lc.parseBinary(t.data)).runInContext(e);if(r.isError)throw new Error(r.message);return r.result.blocks.length===0?Rr.Null:new X.Format.Cif(r.result)}))}}),Obe=Je.BuiltIn({name:"parse-cube",display:{name:"Parse Cube",description:"Parse Cube from String data"},from:X.Data.String,to:X.Format.Cube})({apply({a:t}){return ie.create("Parse Cube",e=>N(this,null,function*(){let r=yield dX(t.data,t.label).runInContext(e);if(r.isError)throw new Error(r.message);return new X.Format.Cube(r.result)}))}}),Fbe=Je.BuiltIn({name:"parse-psf",display:{name:"Parse PSF",description:"Parse PSF from String data"},from:[X.Data.String],to:X.Format.Psf})({apply({a:t}){return ie.create("Parse PSF",e=>N(this,null,function*(){let r=yield cX(t.data).runInContext(e);if(r.isError)throw new Error(r.message);return new X.Format.Psf(r.result)}))}}),Nbe=Je.BuiltIn({name:"parse-prmtop",display:{name:"Parse PRMTOP",description:"Parse PRMTOP from String data"},from:[X.Data.String],to:X.Format.Prmtop})({apply({a:t}){return ie.create("Parse PRMTOP",e=>N(this,null,function*(){let r=yield gX(t.data).runInContext(e);if(r.isError)throw new Error(r.message);return new X.Format.Prmtop(r.result)}))}}),Vbe=Je.BuiltIn({name:"parse-top",display:{name:"Parse TOP",description:"Parse TOP from String data"},from:[X.Data.String],to:X.Format.Top})({apply({a:t}){return ie.create("Parse TOP",e=>N(this,null,function*(){let r=yield yX(t.data).runInContext(e);if(r.isError)throw new Error(r.message);return new X.Format.Top(r.result)}))}}),zbe=Je.BuiltIn({name:"parse-ply",display:{name:"Parse PLY",description:"Parse PLY from String data"},from:[X.Data.String],to:X.Format.Ply})({apply({a:t}){return ie.create("Parse PLY",e=>N(this,null,function*(){let r=yield aX(t.data).runInContext(e);if(r.isError)throw new Error(r.message);return new X.Format.Ply(r.result,{label:r.result.comments[0]||"PLY Data"})}))}}),Ube=Je.BuiltIn({name:"parse-ccp4",display:{name:"Parse CCP4/MRC/MAP",description:"Parse CCP4/MRC/MAP from Binary data"},from:[X.Data.Binary],to:X.Format.Ccp4})({apply({a:t}){return ie.create("Parse CCP4/MRC/MAP",e=>N(this,null,function*(){let r=yield tX(t.data,t.label).runInContext(e);if(r.isError)throw new Error(r.message);return new X.Format.Ccp4(r.result)}))}}),Gbe=Je.BuiltIn({name:"parse-dsn6",display:{name:"Parse DSN6/BRIX",description:"Parse CCP4/BRIX from Binary data"},from:[X.Data.Binary],to:X.Format.Dsn6})({apply({a:t}){return ie.create("Parse DSN6/BRIX",e=>N(this,null,function*(){let r=yield nX(t.data,t.label).runInContext(e);if(r.isError)throw new Error(r.message);return new X.Format.Dsn6(r.result)}))}}),jbe=Je.BuiltIn({name:"parse-dx",display:{name:"Parse DX",description:"Parse DX from Binary/String data"},from:[X.Data.Binary,X.Data.String],to:X.Format.Dx})({apply({a:t}){return ie.create("Parse DX",e=>N(this,null,function*(){let r=yield pX(t.data,t.label).runInContext(e);if(r.isError)throw new Error(r.message);return new X.Format.Dx(r.result)}))}}),Hbe=Je.BuiltIn({name:"import-string",display:{name:"Import String",description:"Import given data as a string"},from:X.Root,to:X.Data.String,params:{data:g.Value(""),label:g.Optional(g.Text(""))}})({apply({params:{data:t,label:e}}){return new X.Data.String(t,{label:e||""})},update({oldParams:t,newParams:e,b:r}){return t.data!==e.data?Se.UpdateResult.Recreate:t.label!==e.label?(r.label=e.label||"",Se.UpdateResult.Updated):Se.UpdateResult.Unchanged},isSerializable:()=>({isSerializable:!1,reason:"Cannot serialize user imported strings."})}),qbe=Je.BuiltIn({name:"import-json",display:{name:"Import JSON",description:"Import given data as a JSON"},from:X.Root,to:X.Format.Json,params:{data:g.Value({}),label:g.Optional(g.Text(""))}})({apply({params:{data:t,label:e}}){return new X.Format.Json(t,{label:e||""})},update({oldParams:t,newParams:e,b:r}){return t.data!==e.data?Se.UpdateResult.Recreate:t.label!==e.label?(r.label=e.label||"",Se.UpdateResult.Updated):Se.UpdateResult.Unchanged},isSerializable:()=>({isSerializable:!1,reason:"Cannot serialize user imported JSON."})}),Wbe=Je.BuiltIn({name:"parse-json",display:{name:"Parse JSON",description:"Parse JSON from String data"},from:[X.Data.String],to:X.Format.Json})({apply({a:t}){return ie.create("Parse JSON",e=>N(this,null,function*(){let r=yield new Response(t.data).json();return new X.Format.Json(r)}))}}),Xbe=Je.BuiltIn({name:"lazy-volume",display:{name:"Lazy Volume",description:"A placeholder for lazy loaded volume representation"},from:X.Root,to:X.Volume.Lazy,params:{url:g.Url(""),isBinary:g.Boolean(!1),format:g.Text("ccp4"),entryId:g.Value("",{isHidden:!0}),isovalues:g.ObjectList({type:g.Text("relative"),value:g.Numeric(0),color:g.Color(ut.black),alpha:g.Numeric(1,{min:0,max:1,step:.01}),volumeIndex:g.Numeric(0)},t=>`${t.type} ${t.value}`)}})({apply({a:t,params:e}){return ie.create("Lazy Volume",r=>N(this,null,function*(){let n=Array.isArray(e.entryId)?e.entryId.join(", "):e.entryId;return new X.Volume.Lazy(e,{label:`${n||e.url}`,description:"Lazy Volume"})}))}});var aR={};ua(aR,{CreateGroup:()=>Ybe});var Ybe=Je.BuiltIn({name:"create-group",display:{name:"Group"},from:[],to:X.Group,params:{label:g.Text("Group"),description:g.Optional(g.Text(""))}})({apply({params:t}){return new X.Group({},t)},update({oldParams:t,newParams:e,b:r}){return Cg(t,e)?Se.UpdateResult.Unchanged:(r.label=e.label,r.description=e.description,Se.UpdateResult.Updated)}});var OR={};ua(OR,{CoordinatesFromDcd:()=>X1e,CoordinatesFromNctraj:()=>K1e,CoordinatesFromTrr:()=>Q1e,CoordinatesFromXtc:()=>Y1e,CustomModelProperties:()=>LR,CustomStructureProperties:()=>BR,ModelFromTrajectory:()=>RR,MultiStructureSelectionFromExpression:()=>ySe,ShapeFromPly:()=>TSe,StructureComplexElement:()=>SSe,StructureComplexElementTypes:()=>GY,StructureComponent:()=>CSe,StructureFromModel:()=>fSe,StructureFromTrajectory:()=>pSe,StructureSelectionFromBundle:()=>bSe,StructureSelectionFromExpression:()=>gSe,StructureSelectionFromScript:()=>vSe,TopologyFromPrmtop:()=>Z1e,TopologyFromPsf:()=>$1e,TopologyFromTop:()=>J1e,TrajectoryFromBlob:()=>tSe,TrajectoryFromCifCore:()=>uSe,TrajectoryFromCube:()=>cSe,TrajectoryFromGRO:()=>oSe,TrajectoryFromMOL:()=>aSe,TrajectoryFromMOL2:()=>lSe,TrajectoryFromMmCif:()=>rSe,TrajectoryFromModelAndCoordinates:()=>Nw,TrajectoryFromPDB:()=>nSe,TrajectoryFromSDF:()=>sSe,TrajectoryFromXYZ:()=>iSe,TransformStructureConformation:()=>hSe});function Qbe(t){let e=new DataView(t.buffer),r=Object.create(null),n=[],o=0,i=new Int32Array(t.buffer,0,23),a=i[0]!==e.getInt32(0);if(i[0]!==84){let f=t.byteLength;for(let b=0;b0)throw new Error("dcd format with fixed atoms unsupported, aborting");let p=r.NATOM,h=p*4;for(let f=0,b=r.NSET;fN(this,null,function*(){try{let r=Qbe(t);return xr.success(r)}catch(r){return xr.error(r)}}))}function bX(t){return function(e,r,n){return Kbe(t,e,r,n)}}function Kbe(t,e,r,n){let{data:o,indices:i,count:a}=t,{valueType:s}=n,l=s==="str"?c=>{let u=i[2*c]+e,d=i[2*c+1];if(u>=d)return"";let m=u+r;return m>d&&(m=d),vU(o,u,m)}:s==="int"?c=>{let u=i[2*c]+e;return u>i[2*c+1]?0:tp(o,u,u+r)}:c=>{let u=i[2*c]+e;return u>i[2*c+1]?0:Dz(o,u,u+r)};return{schema:n,__array:void 0,isDefined:!0,rowCount:a,value:l,valueKind:c=>0,toArray:c=>Iz.createAndFillArray(a,l,c),areValuesEqual:(c,u)=>l(c)===l(u)}}function $be(){return{title:"",timeInPs:0,hasVelocities:!1,precision:{position:0,velocity:0},box:[0,0,0]}}function Zbe(t,e){return{tokenizer:t,header:$be(),numberOfAtoms:0,runtimeCtx:e}}function Jbe(t){let{tokenizer:e,header:r}=t,n=Fe.readLine(e);n.trim().length===0&&(n=Fe.readLine(e));let o=n.lastIndexOf("t=");o>=0?(r.timeInPs=parseFloat(n.substring(o+2)),r.title=n.substring(0,o).trim(),r.title&&r.title[r.title.length-1]===","&&(r.title=r.title.substring(0,r.title.length-1))):r.title=n}function exe(t){let{tokenizer:e}=t;Fe.markLine(e);let r=Fe.getTokenString(e);t.numberOfAtoms=parseInt(r)}function txe(t){return N(this,null,function*(){let{tokenizer:e,numberOfAtoms:r}=t,n=yield Fe.readLinesAsync(e,r,t.runtimeCtx,1e5),i=e.data.substring(n.indices[0],n.indices[1]).substring(20).match(/\.\d+/g),a=i.length===6;t.header.hasVelocities=a,t.header.precision.position=i[0].length-1,t.header.precision.velocity=a?i[3].length-1:0;let s=20,l=t.header.precision.position+5,c=s+3*l,u=t.header.precision.velocity+4,d=bX(n),m=K.Undefined(t.numberOfAtoms,K.Schema.float);return{count:t.numberOfAtoms,residueNumber:d(0,5,K.Schema.int),residueName:d(5,5,K.Schema.str),atomName:d(10,5,K.Schema.str),atomNumber:d(15,5,K.Schema.int),x:d(s,l,K.Schema.float),y:d(s+l,l,K.Schema.float),z:d(s+2*l,l,K.Schema.float),vx:a?d(c,u,K.Schema.float):m,vy:a?d(c+u,u,K.Schema.float):m,vz:a?d(c+2*u,u,K.Schema.float):m}})}function rxe(t){let{tokenizer:e}=t,r=Fe.readLine(e).trim().split(/\s+/g);t.header.box=[+r[0],+r[1],+r[2]]}function nxe(t,e){return N(this,null,function*(){let r=Fe(t);yield e.update({message:"Parsing...",current:0,max:t.length});let n=[];for(;r.positionN(this,null,function*(){return yield nxe(t,e)}))}function SX(t,e,r=!1){return ie.create("Parse PDB",n=>N(this,null,function*(){return xr.success({lines:yield Fe.readAllLinesAsync(t,n),id:e,isPdbqt:r})}))}function _X(t){let e=t&&t.getElement("vertex"),r=t&&t.getElement("material"),n={group:"",vRed:"",vGreen:"",vBlue:"",mRed:"",mGreen:"",mBlue:""},o=[["",""]],i=[["",""]];if(e){for(let l=0,c=e.propertyNames.length;l{let h=o==="material"?p:c[p];return ce.fromRgb(i.value(h),a.value(h),s.value(h))},()=>1,p=>`${u} ${l[p]}`,m)}function lxe(){let t,e,r,n,o,i;return(s,l,c,u)=>N(this,null,function*(){let d=l.source.getElement("vertex");if(!d)throw new Error("missing vertex element");let m=l.source.getElement("face");if(!m)throw new Error("missing face element");let p=l.source.getElement("material"),h=!1,f=!1;return(!t||t!==t)&&(h=!0),(!e||!g.isParamEqual(CX.grouping,e.grouping,c.grouping))&&(h=!0),(!e||!g.isParamEqual(CX.coloring,e.coloring,c.coloring))&&(f=!0),h?(o=TX(d,p,c),i=sxe(d,c),n=yield axe(s,d,m,i.ids,u&&u.geometry),r=wX(l,n,o,i)):f&&(o=TX(d,p,c),r=wX(l,n,o,i)),t=l,e=$s(c),r})}function PX(t,e){return ie.create("Shape Provider",r=>N(this,null,function*(){return{label:"Mesh",data:{source:t,transforms:e?.transforms},params:_X(t),getShape:lxe(),geometryUtils:Be.Utils}}))}function Cc(){return Cc.empty()}(function(t){function e(o,i){return{size:o,anglesInRadians:i}}t.create=e;function r(){return e(y(),y())}t.empty=r;function n(o,i,a){let s=y.magnitude(o),l=y.magnitude(i),c=y.magnitude(a),u=Math.acos(y.dot(i,a)/(l*c)),d=Math.acos(y.dot(o,a)/(s*c)),m=Math.acos(y.dot(o,i)/(s*l));return s<=0||l<=0||c<=0||u>=Math.PI||d>=Math.PI||m>=Math.PI?r():e(y.create(s,l,c),y.create(u,d,m))}t.fromBasis=n})(Cc||(Cc={}));var cxe=20.45482949774598;function EX(t){return ie.create("Parse DCD",e=>N(this,null,function*(){yield e.update("Converting to coordinates");let{header:r}=t,n=r.DELTA?ma(r.DELTA*cxe,"ps"):ma(1,"step"),o=r.ISTART>=1?ma((r.ISTART-1)*n.value,n.unit):ma(0,n.unit),i=[];for(let a=0,s=t.frames.length;a=-1&&u[1]<=1&&u[3]>=-1&&u[3]<=1&&u[4]>=-1&&u[4]<=1?c.cell=Cc.create(y.create(u[0],u[2],u[5]),y.create(or(90-Math.asin(u[1])*90/Sg),or(90-Math.asin(u[3])*90/Sg),or(90-Math.asin(u[4])*90/Sg))):u[0]<0||u[1]<0||u[2]<0||u[3]<0||u[4]<0||u[5]<0||u[3]>180||u[4]>180||u[5]>180?c.cell=Cc.fromBasis(y.create(u[0],u[1],u[3]),y.create(u[1],u[2],u[4]),y.create(u[3],u[4],u[5])):c.cell=Cc.create(y.create(u[0],u[2],u[5]),y.create(or(bs(u[1],0,1e-6)?90:u[1]),or(bs(u[3],0,1e-6)?90:u[3]),or(bs(u[4],0,1e-6)?90:u[4])))}i.push(c)}return sf.create(i,n,o)}))}function Pv(t,e,r,n){let o=r,i=n-1,a=e.charCodeAt(o);for(;(a===32||a>=48&&a<=57)&&o<=i;)a=e.charCodeAt(++o);for(a=e.charCodeAt(i);(a===32||a>=48&&a<=57)&&i>=o;)a=e.charCodeAt(--i);if(++i,o===i)return Ce.add(t,o,i);if(o+1===i)return Ce.add(t,o,i);if(a=e.charCodeAt(o),o+2===i){let s=e.charCodeAt(o+1);if((a===78||a===110)&&(s===65||s===97)||(a===67||a===99)&&(s===76||s===108)||(a===70||a===102)&&(s===69||s===101)||(a===83||a===115)&&(s===73||s===105)||(a===66||a===98)&&(s===82||s===114)||(a===65||a===97)&&(s===83||s===115))return Ce.add(t,o,o+2)}if(a===67||a===99||a===72||a===104||a===78||a===110||a===79||a===111||a===80||a===112||a===83||a===115)return Ce.add(t,o,o+1);Ce.add(t,o,o)}var uxe=new Set(["NA","CL","FE","SI","BR","AS","LI"]),dxe=new Set(["C","H","N","O","P","S","F","B"]),mxe=/^[\s\d]+|[\s\d]+$/g;function vu(t,e){t=t.replace(mxe,"").toUpperCase();let r=t.length;if(r===0||r===1||uxe.has(t))return t;if(r===3&&e===t){if(t==="SOD")return"NA";if(t==="POT")return"K";if(t==="CES")return"CS";if(t==="CAL")return"CA";if(t==="CLA")return"CL"}return dxe.has(t[0])?t[0]:""}var sR="ABCDEFGHIJKLMNOPQRSTUVWXYZ";function pxe(t){let e=sR.length,r=t,n=0,o=sR[r%e];for(;r>=e;)r=Math.floor(r/e),o+=sR[r%e],n+=1;return n>=5&&console.warn("getChainId overflow"),o}var Tp=Pg(pxe);function fxe(t,e){let r=t.atomName,n=t.residueName,o=new Array(t.count),i=new Array(t.count),a=new Uint32Array(t.count),s=new Uint32Array(t.count),l=new Array(t.count),c=new Oi,u=new Fi(t.residueNumber,t.atomName),d="",m=0,p="",h=0,f=0,b=-1;for(let S=0,T=t.count;SS*10,Float32Array)),Cartn_y:K.ofFloatArray(K.mapToArray(t.y,S=>S*10,Float32Array)),Cartn_z:K.ofFloatArray(K.mapToArray(t.z,S=>S*10,Float32Array)),id:K.ofIntArray(s),label_asym_id:v,label_atom_id:r,label_comp_id:n,label_seq_id:K.ofIntArray(a),label_entity_id:K.ofStringArray(o),occupancy:K.ofConst(1,t.count,K.Schema.float),type_symbol:K.ofStringArray(l),pdbx_PDB_model_num:K.ofConst(e,t.count,K.Schema.int)},t.count);return Bi({entity:c.getEntityTable(),chem_comp:u.getChemCompTable(),atom_site:x})}var lR;(function(t){function e(n){return n?.kind==="gro"}t.is=e;function r(n){return{kind:"gro",name:n.structures[0].header.title,data:n}}t.fromGro=r})(lR||(lR={}));function IX(t){return ie.create("Parse GRO",e=>N(this,null,function*(){let r=lR.fromGro(t),n=[];for(let o=0,i=t.structures.length;o(e.substr(i,a)||"").trim(),n={entry_id:Ge.ofString(t),length_a:Ge.ofString(r(6,9)),length_b:Ge.ofString(r(15,9)),length_c:Ge.ofString(r(24,9)),angle_alpha:Ge.ofString(r(33,7)),angle_beta:Ge.ofString(r(40,7)),angle_gamma:Ge.ofString(r(47,7)),Z_PDB:Ge.ofString(r(66,4)),pdbx_unique_axis:Ge.ofString("?")},o={entry_id:Ge.ofString(t),"space_group_name_H-M":Ge.ofString(r(55,11)),Int_Tables_number:Ge.ofString("?"),cell_setting:Ge.ofString("?"),space_group_name_Hall:Ge.ofString("?")};return[Li.ofFields("cell",n),Li.ofFields("symmetry",o)]}function DX(t,e){return{id:t,details:e,groups:[]}}function kX(t,e,r){let n=[],o,i,a,s=1,l=1,c=f=>t.data.substring(t.indices[2*f],t.indices[2*f+1]);for(let f=e;ff.id)),details:Ge.ofStrings(n.map(f=>f.details))},d=[];for(let f of n)for(let b of f.groups)d.push({assembly_id:f.id,oper_expression:b.operators.map(v=>v.id).join(","),asym_id_list:b.chains.join(",")});let m={assembly_id:Ge.ofStrings(d.map(f=>f.assembly_id)),oper_expression:Ge.ofStrings(d.map(f=>f.oper_expression)),asym_id_list:Ge.ofStrings(d.map(f=>f.asym_id_list))},p=[];for(let f of n)for(let b of f.groups)for(let v of b.operators){let x={id:""+v.id,type:"?",name:"?",symmetry_operation:"?"};for(let S=0;S<3;S++){for(let T=0;T<3;T++)x[`matrix[${S+1}][${T+1}]`]=""+W.getValue(v.matrix,S,T);x[`vector[${S+1}]`]=""+W.getValue(v.matrix,S,3)}p.push(x)}let h={id:Ge.ofStrings(p.map(f=>f.id)),type:Ge.ofStrings(p.map(f=>f.type)),name:Ge.ofStrings(p.map(f=>f.name)),symmetry_operation:Ge.ofStrings(p.map(f=>f.symmetry_operation))};for(let f=0;f<3;f++){for(let v=0;v<3;v++){let x=`matrix[${f+1}][${v+1}]`;h[x]=Ge.ofStrings(p.map(S=>S[x]))}let b=`vector[${f+1}]`;h[b]=Ge.ofStrings(p.map(v=>v[b]))}return[Li.ofFields("pdbx_struct_assembly",u),Li.ofFields("pdbx_struct_assembly_gen",m),Li.ofFields("pdbx_struct_oper_list",h)]}function MX(t,e,r){let n=[],o,i=c=>t.data.substring(t.indices[2*c],t.indices[2*c+1]);for(let c=e;cc.id)),code:Ge.ofStrings(a.map(c=>c.code)),details:Ge.ofStrings(a.map(c=>c.details))};for(let c=0;c<3;c++){for(let d=0;d<3;d++){let m=`matrix[${c+1}][${d+1}]`;l[m]=Ge.ofStrings(a.map(p=>p[m]))}let u=`vector[${c+1}]`;l[u]=Ge.ofStrings(a.map(d=>d[u]))}return[Li.ofFields("struct_ncs_oper",l)]}var hxe={1:"helx_rh_al_p",2:"helx_rh_om_p",3:"helx_rh_pi_p",4:"helx_rh_ga_p",5:"helx_rh_3t_p",6:"helx_lh_al_p",7:"helx_lh_om_p",8:"helx_lh_ga_p",9:"helx_rh_27_p",10:"helx_rh_pp_p"};function gxe(t){return hxe[t]||"helx_p"}function RX(t,e,r){let n=[],o=u=>t.data.substring(t.indices[2*u],t.indices[2*u+1]);for(let u=e;uu.initChainID)),a=Ge.ofStrings(n.map(u=>u.initResName)),s=Ge.ofStrings(n.map(u=>u.endChainID)),l=Ge.ofStrings(n.map(u=>u.endResName)),c={beg_label_asym_id:i,beg_label_comp_id:a,beg_label_seq_id:Ge.ofUndefined(n.length,K.Schema.int),beg_auth_asym_id:i,beg_auth_comp_id:a,beg_auth_seq_id:Ge.ofStrings(n.map(u=>u.initSeqNum)),conf_type_id:Ge.ofStrings(n.map(u=>gxe(u.helixClass))),details:Ge.ofStrings(n.map(u=>u.comment)),end_label_asym_id:s,end_label_comp_id:l,end_label_seq_id:Ge.ofUndefined(n.length,K.Schema.int),end_auth_asym_id:s,end_auth_comp_id:l,end_auth_seq_id:Ge.ofStrings(n.map(u=>u.endSeqNum)),id:Ge.ofStrings(n.map(u=>u.serNum)),pdbx_beg_PDB_ins_code:Ge.ofStrings(n.map(u=>u.initICode)),pdbx_end_PDB_ins_code:Ge.ofStrings(n.map(u=>u.endICode)),pdbx_PDB_helix_class:Ge.ofStrings(n.map(u=>u.helixClass)),pdbx_PDB_helix_length:Ge.ofStrings(n.map(u=>u.length)),pdbx_PDB_helix_id:Ge.ofStrings(n.map(u=>u.helixID))};return Li.ofFields("struct_conf",c)}function LX(t,e,r){let n=[],o=m=>t.data.substring(t.indices[2*m],t.indices[2*m+1]);for(let m=e;mm.initChainID)),a=Ge.ofStrings(n.map(m=>m.initResName)),s=Ge.ofStrings(n.map(m=>m.initSeqNum)),l=Ge.ofStrings(n.map(m=>m.endChainID)),c=Ge.ofStrings(n.map(m=>m.endResName)),u=Ge.ofStrings(n.map(m=>m.endSeqNum)),d={beg_label_asym_id:i,beg_label_comp_id:a,beg_label_seq_id:s,beg_auth_asym_id:i,beg_auth_comp_id:a,beg_auth_seq_id:s,end_label_asym_id:l,end_label_comp_id:l,end_label_seq_id:u,end_auth_asym_id:l,end_auth_comp_id:c,end_auth_seq_id:u,id:Ge.ofStrings(n.map(m=>m.strand)),sheet_id:Ge.ofStrings(n.map(m=>m.sheetID)),pdbx_beg_PDB_ins_code:Ge.ofStrings(n.map(m=>m.initICode)),pdbx_end_PDB_ins_code:Ge.ofStrings(n.map(m=>m.endICode))};return Li.ofFields("struct_sheet_range",d)}var yxe={MOL_ID:"",MOLECULE:"",CHAIN:"",FRAGMENT:"",SYNONYM:"",EC:"",ENGINEERED:"",MUTATION:"",OTHER_DETAILS:""};function BX(t,e,r){let n=l=>t.data.substring(t.indices[2*l],t.indices[2*l+1]),o,i={chains:[],description:""},a=[];for(let l=e;lt.data.substring(t.indices[2*i],t.indices[2*i+1]),o=new Map;for(let i=e;i[],n=()=>Ce.create(t,2*e);return{index:0,group_PDB:n(),id:r(),auth_atom_id:n(),label_alt_id:n(),auth_comp_id:n(),auth_asym_id:n(),auth_seq_id:n(),pdbx_PDB_ins_code:n(),Cartn_x:n(),Cartn_y:n(),Cartn_z:n(),occupancy:n(),B_iso_or_equiv:n(),type_symbol:n(),pdbx_PDB_model_num:r(),label_entity_id:r(),partial_charge:n()}}function NX(t,e,r){let n=Ge.ofStrings(t.pdbx_PDB_model_num),o=Ge.ofTokens(t.auth_asym_id),i=Ge.ofTokens(t.auth_seq_id),a=Ge.ofTokens(t.pdbx_PDB_ins_code),s=Ge.ofTokens(t.auth_atom_id),l=Ge.ofTokens(t.auth_comp_id),c=Ge.ofStrings(t.id),u=n.str(0),d=o.str(0),m=i.int(0),p=a.str(0),h=d,f=m,b=new Map,v=new Map,x=[],S=[],T=[],E=!1;for(let A=0,I=c.rowCount;A=66?Ce.addToken(t.B_iso_or_equiv,Fe.trim(r,n+60,n+66)):Ce.add(t.B_iso_or_equiv,0,0),i&&Ce.addToken(t.partial_charge,Fe.trim(r,n+70,n+76)),s>=78&&!i?(Fe.trim(r,n+76,n+78),r.tokenStart[],n=()=>new Float32Array(e),o=()=>Ce.create(t,2*e);return{index:0,count:e,id:r(),type_symbol:o(),pdbx_label_atom_id:o(),pdbx_label_alt_id:o(),pdbx_label_comp_id:o(),pdbx_label_asym_id:o(),pdbx_label_seq_id:o(),pdbx_PDB_ins_code:o(),"U[1][1]":n(),"U[2][2]":n(),"U[3][3]":n(),"U[1][2]":n(),"U[1][3]":n(),"U[2][3]":n(),pdbx_auth_seq_id:o(),pdbx_auth_comp_id:o(),pdbx_auth_asym_id:o(),pdbx_auth_atom_id:o()}}function zX(t){let e=Ge.ofTokens(t.pdbx_auth_seq_id),r=Ge.ofTokens(t.pdbx_auth_comp_id),n=Ge.ofTokens(t.pdbx_auth_asym_id),o=Ge.ofTokens(t.pdbx_auth_atom_id),i={id:Ge.ofStrings(t.id),type_symbol:Ge.ofTokens(t.type_symbol),pdbx_label_atom_id:o,pdbx_label_alt_id:Ge.ofTokens(t.pdbx_label_alt_id),pdbx_label_comp_id:r,pdbx_label_asym_id:n,pdbx_label_seq_id:e,pdbx_PDB_ins_code:Ge.ofTokens(t.pdbx_PDB_ins_code),pdbx_auth_seq_id:e,pdbx_auth_comp_id:r,pdbx_auth_asym_id:n,pdbx_auth_atom_id:o};return i["U[1][1]"]=Ge.ofNumbers(t["U[1][1]"]),i["U[2][2]"]=Ge.ofNumbers(t["U[2][2]"]),i["U[3][3]"]=Ge.ofNumbers(t["U[3][3]"]),i["U[1][2]"]=Ge.ofNumbers(t["U[1][2]"]),i["U[1][3]"]=Ge.ofNumbers(t["U[1][3]"]),i["U[2][3]"]=Ge.ofNumbers(t["U[2][3]"]),i}function UX(t,e,r,n,o){let{data:i}=r,a=o-n;Fe.trim(r,n+6,n+11),t.id[t.index]=i.substring(r.tokenStart,r.tokenEnd),Ce.addToken(t.pdbx_auth_atom_id,Fe.trim(r,n+12,n+16)),i.charCodeAt(n+16)===32?Ce.add(t.pdbx_label_alt_id,0,0):Ce.add(t.pdbx_label_alt_id,n+16,n+17),Ce.addToken(t.pdbx_auth_comp_id,Fe.trim(r,n+17,n+20)),Ce.add(t.pdbx_auth_asym_id,n+21,n+22),Ce.addToken(t.pdbx_auth_seq_id,Fe.trim(r,n+22,n+26)),i.charCodeAt(n+26)===32?Ce.add(t.pdbx_PDB_ins_code,0,0):Ce.add(t.pdbx_PDB_ins_code,n+26,n+27),t["U[1][1]"][t.index]=tp(i,n+28,n+35)/1e4,t["U[2][2]"][t.index]=tp(i,n+35,n+42)/1e4,t["U[3][3]"][t.index]=tp(i,n+42,n+49)/1e4,t["U[1][2]"][t.index]=tp(i,n+49,n+56)/1e4,t["U[1][3]"][t.index]=tp(i,n+56,n+63)/1e4,t["U[2][3]"][t.index]=tp(i,n+63,n+70)/1e4,a>=78?(Fe.trim(r,n+76,n+78),r.tokenStartt.data.substring(t.indices[2*D],t.indices[2*D+1]),a=[],s=[],l=[],c=[],u=[],d=[],m=[],p=[],h=[],f=[],b=[],v=[],x=[],S=[],T=[11,16,21,26],E=1;for(let D=e;DR||I[R]===void 0&&(a.push(`covale${E}`),s.push("covale"),l.push(n.label_asym_id.str(A)),c.push(n.label_seq_id.int(A)),u.push(n.auth_seq_id.int(A)),d.push(n.label_atom_id.str(A)),m.push(n.label_alt_id.str(A)),p.push(n.pdbx_PDB_ins_code.str(A)),h.push(n.label_asym_id.str(R)),f.push(n.label_seq_id.int(R)),b.push(n.auth_seq_id.int(R)),v.push(n.label_atom_id.str(R)),x.push(n.label_alt_id.str(R)),S.push(n.pdbx_PDB_ins_code.str(R)),E+=1))}}let _={id:Ge.ofStrings(a),conn_type_id:Ge.ofStrings(s),ptnr1_label_asym_id:Ge.ofStrings(l),ptnr1_label_seq_id:Ge.ofNumbers(c),ptnr1_auth_seq_id:Ge.ofNumbers(u),ptnr1_label_atom_id:Ge.ofStrings(d),pdbx_ptnr1_label_alt_id:Ge.ofStrings(m),pdbx_ptnr1_PDB_ins_code:Ge.ofStrings(p),ptnr2_label_asym_id:Ge.ofStrings(h),ptnr2_label_seq_id:Ge.ofNumbers(f),ptnr2_auth_seq_id:Ge.ofNumbers(b),ptnr2_label_atom_id:Ge.ofStrings(v),pdbx_ptnr2_label_alt_id:Ge.ofStrings(x),pdbx_ptnr2_PDB_ins_code:Ge.ofStrings(S)};return Li.ofFields("struct_conn",_)}function jX(t,e,r,n){let o=t.substring(e,r);n.id_code=o.substring(62,66).trim()||void 0,n.dep_date=o.substring(50,59).trim()||void 0,n.classification=o.substring(10,50).trim()||void 0}function HX(t){return N(this,null,function*(){let{lines:e}=t,{data:r,indices:n}=e,o=Fe(r),i=!!t.isPdbqt,a=0,s=0;for(let I=0,k=e.count;IN(this,null,function*(){var r;yield e.update("Converting to mmCIF");let n=yield HX(t),o=op.fromFrame(n,void 0,uR.create(t)),i=Bi(o.data.db,!0),a=yield wl(i,o,e),s=(r=n.categories.atom_site)===null||r===void 0?void 0:r.getField("partial_charge");if(s&&a.frameCount===1){let l=a.representative,c=l.atomicHierarchy.atomSourceIndex,d=K.isIdentity(c)?void 0:c.toArray({array:Int32Array}),m=s.toFloatArray(),p=d?K.ofFloatArray(K.mapToArray(c,h=>m[h],Float32Array)):K.ofFloatArray(m);vp.Provider.set(l,{data:p,type:"GASTEIGER"})}return a}))}function vxe(t){let e=new Array(t.count),r=new Array(t.count),n=new Uint32Array(t.count),o=new Uint32Array(t.count),i=new Array(t.count),a=new Oi,s=new Fi(t.residueId,t.atomName),l="",c=0,u="",d=0,m=t.segmentName.value(0),p=!1,h=0,f=-1;for(let v=0,x=t.count;vN(this,null,function*(){let r=dR.fromPsf(t),n=vxe(t.atoms),{atomIdA:o,atomIdB:i}=t.bonds,a={indexA:K.ofLambda({value:s=>o.value(s)-1,rowCount:o.rowCount,schema:o.schema}),indexB:K.ofLambda({value:s=>i.value(s)-1,rowCount:i.rowCount,schema:i.schema}),order:K.ofConst(1,t.bonds.count,K.Schema.int)};return g0.create(t.id,n,a,r)}))}var Ev={dynamicBonds:g.Optional(g.Boolean(!1,{description:"Ensure bonds are recalculated upon model changes. Also enables calculation of inter-unit bonds in water molecules and ions."}))},vm;(function(t){function e(l,c){let u=l&&rs.Provider.get(l),d=u?u.assemblies.map(v=>[v.id,`${v.id}: ${ic(v.details)}`]):[],m=u?!pa.isZero(u.spacegroup.cell):!0,p=[];if(u){let{operators:v}=u.spacegroup;for(let x=0,S=v.length;x{let x=v.id===v.auth_id?v.id:`${v.id} [auth ${v.auth_id}]`;h.push([v.id,x])});let f={auto:g.Group(Ev),model:g.Group(Ev),assembly:g.Group(w({id:g.Optional(l?g.Select(d.length?d[0][0]:"",d,{label:"Asm Id",description:"Assembly Id"}):g.Text("",{label:"Asm Id",description:"Assembly Id (use empty for the 1st assembly)"}))},Ev),{isFlat:!0}),"symmetry-mates":g.Group(w({radius:g.Numeric(5,{min:0,max:50,step:1})},Ev),{isFlat:!0}),symmetry:g.Group(w({ijkMin:g.Vec3(y.create(-1,-1,-1),{step:1},{label:"Min IJK",fieldLabels:{x:"I",y:"J",z:"K"}}),ijkMax:g.Vec3(y.create(1,1,1),{step:1},{label:"Max IJK",fieldLabels:{x:"I",y:"J",z:"K"}})},Ev),{isFlat:!0}),"symmetry-assembly":g.Group(w({generators:g.ObjectList({operators:g.ObjectList({index:g.Select(0,p),shift:g.Vec3(y(),{step:1},{label:"IJK",fieldLabels:{x:"I",y:"J",z:"K"}})},v=>`${v.index+1}_${v.shift.map(x=>x+5).join("")}`,{defaultValue:[]}),asymIds:g.MultiSelect([],h)},v=>`${v.asymIds.length} asym ids, ${v.operators.length} operators`,{defaultValue:[]})},Ev),{isFlat:!0})},b=[];return c==="auto"&&b.push(["auto","Auto"]),b.push(["model","Model"]),d.length>0&&b.push(["assembly","Assembly"]),m&&(b.push(["symmetry-mates","Symmetry Mates"]),b.push(["symmetry","Symmetry (indices)"]),b.push(["symmetry-assembly","Symmetry (assembly)"])),{type:g.MappedStatic(c||"model",f,{options:b})}}t.getParams=e;function r(l,c){return!(c.name==="symmetry-assembly"||c.name==="symmetry"&&l.name==="symmetry")}t.canAutoUpdate=r;function n(l,c,u,d,m){return N(this,null,function*(){let p,h=rs.Provider.get(u);!d&&h&&h.assemblies.length!==0&&(d=h.assemblies[0].id),!h||h.assemblies.length===0?l.log.warn(`Model '${u.entryId}' has no assembly, returning model structure.`):(p=RT.findAssembly(u,d||""),p||l.log.warn(`Model '${u.entryId}' has no assembly called '${d}', returning model structure.`));let f=ue.ofModel(u,m);if(!p){let x={label:"Model",description:ue.elementDescription(f)};return new X.Molecule.Structure(f,x)}d=p.id;let b=yield jx.buildAssembly(f,d).runInContext(c),v={label:`Assembly ${d}`,description:ue.elementDescription(b)};return new X.Molecule.Structure(b,v)})}function o(l,c,u,d,m){return N(this,null,function*(){let p=ue.ofModel(c,m),h=yield jx.buildSymmetryRange(p,u,d).runInContext(l),f={label:`Symmetry [${u}] to [${d}]`,description:ue.elementDescription(h)};return new X.Molecule.Structure(h,f)})}function i(l,c,u,d){return N(this,null,function*(){let m=ue.ofModel(c,d),p=yield jx.builderSymmetryMates(m,u).runInContext(l),h={label:"Symmetry Mates",description:ue.elementDescription(p)};return new X.Molecule.Structure(p,h)})}function a(l,c,u,d,m){return N(this,null,function*(){let p=ue.ofModel(c,m),h=yield jx.buildSymmetryAssembly(p,u,d).runInContext(l),f={label:"Symmetry Assembly",description:ue.elementDescription(h)};return new X.Molecule.Structure(h,f)})}function s(l,c,u,d){return N(this,null,function*(){let m=d?.params,p=rs.Provider.get(u);if(!p||!d||d.name==="model"){let h=ue.ofModel(u,m);return new X.Molecule.Structure(h,{label:"Model",description:ue.elementDescription(h)})}if(d.name==="auto")if(p.assemblies.length===0){let h=ue.ofModel(u,m);return new X.Molecule.Structure(h,{label:"Model",description:ue.elementDescription(h)})}else return n(l,c,u,void 0,m);if(d.name==="assembly")return n(l,c,u,d.params.id,m);if(d.name==="symmetry")return o(c,u,d.params.ijkMin,d.params.ijkMax,m);if(d.name==="symmetry-mates")return i(c,u,d.params.radius,m);if(d.name==="symmetry-assembly")return a(c,u,d.params.generators,p,m);ur(d)})}t.create=s})(vm||(vm={}));var Oa;(function(t){function e(s,l,c){return s.currentStructure!==c?!1:Jr.is(l)?!!s.script&&Jr.areEqual(s.script,l):s.expression===l}t.isUnchanged=e;function r(s,l){let c=Jr.is(l)?l:void 0,u=Jr.is(l)?Jr.toExpression(l):l,d=hd(u);return{script:c,expression:u,compiled:d,originalStructure:s,currentStructure:s}}t.create=r;function n(s,l){return s.compiled(new fa(l))}t.run=n;function o(s,l){let c=r(s,l);return{entry:c,selection:n(c,s)}}t.createAndRun=o;function i(s,l){return s.currentStructure=l,s.compiled(new fa(l))}t.updateStructure=i;function a(s,l,c){let u=hn.unionStructure(l);s.label=`${c||"Selection"}`,s.description=ue.elementDescription(u),s.data=u}t.updateStructureObject=a})(Oa||(Oa={}));var XX={H:"Hydrogen",HE:"Helium",LI:"Lithium",BE:"Beryllium",B:"Boron",C:"Carbon",N:"Nitrogen",O:"Oxygen",F:"Fluorine",NE:"Neon",NA:"Sodium",MG:"Magnesium",AL:"Aluminum",SI:"Silicon",P:"Phosphorus",S:"Sulfur",CL:"Chlorine",AR:"Argon",K:"Potassium",CA:"Calcium",SC:"Scandium",TI:"Titanium",V:"Vanadium",CR:"Chromium",MN:"Manganese",FE:"Iron",CO:"Cobalt",NI:"Nickel",CU:"Copper",ZN:"Zinc",GA:"Gallium",GE:"Germanium",AS:"Arsenic",SE:"Selenium",BR:"Bromine",KR:"Krypton",RB:"Rubidium",SR:"Strontium",Y:"Yttrium",ZR:"Zirconium",NB:"Niobium",MO:"Molybdenum",TC:"Technetium",RU:"Ruthenium",RH:"Rhodium",PD:"Palladium",AG:"Silver",CD:"Cadmium",IN:"Indium",SN:"Tin",SB:"Antimony",TE:"Tellurium",I:"Iodine",XE:"Xenon",CS:"Cesium",BA:"Barium",LA:"Lanthanum",CE:"Cerium",PR:"Praseodymium",ND:"Neodymium",PM:"Promethium",SM:"Samarium",EU:"Europium",GD:"Gadolinium",TB:"Terbium",DY:"Dysprosium",HO:"Holmium",ER:"Erbium",TM:"Thulium",YB:"Ytterbium",LU:"Lutetium",HF:"Hafnium",TA:"Tantalum",W:"Wolfram",RE:"Rhenium",OS:"Osmium",IR:"Iridium",PT:"Platinum",AU:"Gold",HG:"Mercury",TL:"Thallium",PB:"Lead",BI:"Bismuth",PO:"Polonium",AT:"Astatine",RN:"Radon",FR:"Francium",RA:"Radium",AC:"Actinium",TH:"Thorium",PA:"Protactinium",U:"Uranium",NP:"Neptunium",PU:"Plutonium",AM:"Americium",CM:"Curium",BK:"Berkelium",CF:"Californium",ES:"Einsteinium",FM:"Fermium",MD:"Mendelevium",NO:"Nobelium",LR:"Lawrencium",RF:"Rutherfordium",DB:"Dubnium",SG:"Seaborgium",BH:"Bohrium",HS:"Hassium",MT:"Meitnerium",DS:"Darmstadtium",RG:"Roentgenium",CN:"Copernicium",NH:"Nihonium",FL:"Flerovium",MC:"Moscovium",LV:"Livermorium",TS:"Tennessine",OG:"Oganesson"},bxe=new Set(["LI","NA","K","RB","CS","FR"]);function xxe(t){return bxe.has(t)}var Sxe=new Set(["BE","MG","CA","SR","BA","RA"]);function Cxe(t){return Sxe.has(t)}var Txe=new Set(["ZN","GA","CD","IN","SN","HG","TI","PB","BI","PO","CN"]);function wxe(t){return Txe.has(t)}var _xe=new Set(["F","CL","BR","I","AT"]);function mR(t){return _xe.has(t)}function pR(t){let e=P0(t);return e>=21&&e<=29||e>=39&&e<=47||e>=72&&e<=79||e>=104&&e<=108}function Pxe(t){let e=P0(t);return e>=57&&e<=71}function Exe(t){let e=P0(t);return e>=89&&e<=103}function YX(t){return xxe(t)||Cxe(t)||Pxe(t)||Exe(t)||pR(t)||wxe(t)}var Ur=function(t){return t.Type="Type",t.Structure="Structure Property",t.Atom="Atom Property",t.Bond="Bond Property",t.Residue="Residue Property",t.AminoAcid="Amino Acid",t.NucleicBase="Nucleic Base",t.Manipulate="Manipulate Selection",t.Validation="Validation",t.Misc="Miscellaneous",t.Internal="Internal",t}(Ur||{});function Lr(t,e,r={}){var n;let o;return{label:t,expression:e,description:r.description||"",category:(n=r.category)!==null&&n!==void 0?n:Ur.Misc,isHidden:!!r.isHidden,priority:r.priority||0,referencesCurrent:!!r.referencesCurrent,get query(){return o||(o=hd(e)),o},ensureCustomProperties:r.ensureCustomProperties,getSelection(a,s,l){return N(this,null,function*(){let c=a.managers.structure.selection.getStructure(l),u=c?hn.Sequence(l,[c]):hn.Empty(l);return r.ensureCustomProperties&&(yield r.ensureCustomProperties({runtime:s,assetManager:a.managers.asset},l)),o||(o=hd(e)),o(new fa(l,{currentSelection:u}))})}}}var Ixe=Lr("All",q.struct.generator.all(),{category:"",priority:1e3}),Dxe=Lr("Current Selection",q.internal.generator.current(),{category:"",referencesCurrent:!0}),Axe=Lr("Polymer",q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":q.core.logic.and([q.core.rel.eq([q.ammp("entityType"),"polymer"]),q.core.str.match([q.re("(polypeptide|cyclic-pseudo-peptide|peptide-like|nucleotide|peptide nucleic acid)","i"),q.ammp("entitySubtype")])])})]),{category:Ur.Type}),kxe=Lr("Trace",q.struct.modifier.union([q.struct.combinator.merge([q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":q.core.rel.eq([q.ammp("entityType"),"polymer"]),"chain-test":q.core.set.has([q.set("sphere","gaussian"),q.ammp("objectPrimitive")])})]),q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":q.core.rel.eq([q.ammp("entityType"),"polymer"]),"chain-test":q.core.rel.eq([q.ammp("objectPrimitive"),"atomistic"]),"atom-test":q.core.set.has([q.set("CA","P"),q.ammp("label_atom_id")])})])])]),{category:Ur.Structure}),Iv=q.core.logic.and([q.core.rel.eq([q.ammp("entityType"),"polymer"]),q.core.str.match([q.re("(polypeptide|cyclic-pseudo-peptide|peptide-like)","i"),q.ammp("entitySubtype")])]),Rw=q.core.logic.and([q.core.rel.eq([q.ammp("entityType"),"polymer"]),q.core.str.match([q.re("(nucleotide|peptide nucleic acid)","i"),q.ammp("entitySubtype")])]),ty=q.core.str.match([q.re("non-polymer|(amino|carboxy) terminus|peptide-like","i"),q.ammp("chemCompType")]),Mxe=Lr("Backbone",q.struct.modifier.union([q.struct.combinator.merge([q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":Iv,"chain-test":q.core.rel.eq([q.ammp("objectPrimitive"),"atomistic"]),"residue-test":q.core.logic.not([ty]),"atom-test":q.core.set.has([q.set(...no.toArray(ac)),q.ammp("label_atom_id")])})]),q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":Rw,"chain-test":q.core.rel.eq([q.ammp("objectPrimitive"),"atomistic"]),"residue-test":q.core.logic.not([ty]),"atom-test":q.core.set.has([q.set(...no.toArray(T0)),q.ammp("label_atom_id")])})])])]),{category:Ur.Structure}),Rxe=Lr("Sidechain",q.struct.modifier.union([q.struct.combinator.merge([q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":Iv,"chain-test":q.core.rel.eq([q.ammp("objectPrimitive"),"atomistic"]),"residue-test":q.core.logic.not([ty]),"atom-test":q.core.logic.or([q.core.logic.not([q.core.set.has([q.set(...no.toArray(ac)),q.ammp("label_atom_id")])])])})]),q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":Rw,"chain-test":q.core.rel.eq([q.ammp("objectPrimitive"),"atomistic"]),"residue-test":q.core.logic.not([ty]),"atom-test":q.core.logic.or([q.core.logic.not([q.core.set.has([q.set(...no.toArray(T0)),q.ammp("label_atom_id")])])])})])])]),{category:Ur.Structure}),Lxe=Lr("Sidechain with Trace",q.struct.modifier.union([q.struct.combinator.merge([q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":Iv,"chain-test":q.core.rel.eq([q.ammp("objectPrimitive"),"atomistic"]),"residue-test":q.core.logic.not([ty]),"atom-test":q.core.logic.or([q.core.logic.not([q.core.set.has([q.set(...no.toArray(ac)),q.ammp("label_atom_id")])]),q.core.rel.eq([q.ammp("label_atom_id"),"CA"]),q.core.logic.and([q.core.rel.eq([q.ammp("auth_comp_id"),"PRO"]),q.core.rel.eq([q.ammp("label_atom_id"),"N"])])])})]),q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":Rw,"chain-test":q.core.rel.eq([q.ammp("objectPrimitive"),"atomistic"]),"residue-test":q.core.logic.not([ty]),"atom-test":q.core.logic.or([q.core.logic.not([q.core.set.has([q.set(...no.toArray(T0)),q.ammp("label_atom_id")])]),q.core.rel.eq([q.ammp("label_atom_id"),"P"])])})])])]),{category:Ur.Structure}),Bxe=Lr("Protein",q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":Iv})]),{category:Ur.Type}),Oxe=Lr("Nucleic",q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":Rw})]),{category:Ur.Type}),Fxe=Lr("Helix",q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":Iv,"residue-test":q.core.flags.hasAny([q.ammp("secondaryStructureFlags"),q.core.type.bitflags([2])])})]),{category:Ur.Structure,ensureCustomProperties:(t,e)=>xs.attach(t,e)}),Nxe=Lr("Beta Strand/Sheet",q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":Iv,"residue-test":q.core.flags.hasAny([q.ammp("secondaryStructureFlags"),q.core.type.bitflags([4])])})]),{category:Ur.Structure,ensureCustomProperties:(t,e)=>xs.attach(t,e)}),Vxe=Lr("Water",q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":q.core.rel.eq([q.ammp("entityType"),"water"])})]),{category:Ur.Type}),zxe=Lr("Ion",q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":q.core.rel.eq([q.ammp("entitySubtype"),"ion"])})]),{category:Ur.Type}),Uxe=Lr("Lipid",q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":q.core.rel.eq([q.ammp("entitySubtype"),"lipid"])})]),{category:Ur.Type}),Lw=Lr("Carbohydrate",q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":q.core.logic.or([q.core.rel.eq([q.ammp("entityType"),"branched"]),q.core.logic.and([q.core.rel.eq([q.ammp("entityType"),"non-polymer"]),q.core.str.match([q.re("oligosaccharide","i"),q.ammp("entitySubtype")])])])})]),{category:Ur.Type}),QX=Lr("Carbohydrate with Connected",q.struct.modifier.union([q.struct.modifier.includeConnected({0:Lw.expression,"layer-count":1,"as-whole-residues":!0})]),{category:Ur.Internal,isHidden:!0}),KX=Lr("Connected to Carbohydrate",q.struct.modifier.union([q.struct.modifier.exceptBy({0:QX.expression,by:Lw.expression})]),{category:Ur.Internal,isHidden:!0}),hR=Lr("Ligand",q.struct.modifier.union([q.struct.modifier.exceptBy({0:q.struct.modifier.union([q.struct.combinator.merge([q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":q.core.logic.and([q.core.logic.or([q.core.rel.eq([q.ammp("entityType"),"non-polymer"]),q.core.rel.neq([q.ammp("entityPrdId"),""])]),q.core.logic.not([q.core.str.match([q.re("(oligosaccharide|lipid|ion)","i"),q.ammp("entitySubtype")])])]),"chain-test":q.core.rel.eq([q.ammp("objectPrimitive"),"atomistic"]),"residue-test":q.core.logic.not([q.core.str.match([q.re("saccharide","i"),q.ammp("chemCompType")])])})]),q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":q.core.rel.eq([q.ammp("entityType"),"polymer"]),"chain-test":q.core.rel.eq([q.ammp("objectPrimitive"),"atomistic"]),"residue-test":ty})])])]),by:q.struct.combinator.merge([q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":q.core.rel.eq([q.ammp("entityType"),"polymer"]),"chain-test":q.core.rel.eq([q.ammp("objectPrimitive"),"atomistic"]),"residue-test":q.core.set.has([q.set(...no.toArray(Vx)),q.ammp("label_comp_id")])})]),q.struct.generator.atomGroups({"chain-test":q.core.rel.eq([q.ammp("objectPrimitive"),"atomistic"]),"residue-test":q.core.set.has([q.set(...no.toArray(Qz)),q.ammp("label_comp_id")])})])})]),{category:Ur.Type}),$X=Lr("Ligand with Connected",q.struct.modifier.union([q.struct.modifier.exceptBy({0:q.struct.modifier.union([q.struct.modifier.includeConnected({0:hR.expression,"layer-count":1,"as-whole-residues":!0,"bond-test":q.core.flags.hasAny([q.struct.bondProperty.flags(),q.core.type.bitflags([3])])})]),by:Lw.expression})]),{category:Ur.Internal,isHidden:!0}),ZX=Lr("Connected to Ligand",q.struct.modifier.union([q.struct.modifier.exceptBy({0:$X.expression,by:hR.expression})]),{category:Ur.Internal,isHidden:!0}),Gxe=Lr("Connected to Ligand or Carbohydrate",q.struct.modifier.union([q.struct.combinator.merge([KX.expression,ZX.expression])]),{category:Ur.Internal,isHidden:!0}),jxe=Lr("Disulfide Bridges",q.struct.modifier.union([q.struct.combinator.merge([q.struct.modifier.union([q.struct.modifier.wholeResidues([q.struct.filter.isConnectedTo({0:q.struct.generator.atomGroups({"residue-test":q.core.set.has([q.set("CYS"),q.ammp("auth_comp_id")]),"atom-test":q.core.set.has([q.set("SG"),q.ammp("label_atom_id")])}),target:q.struct.generator.atomGroups({"residue-test":q.core.set.has([q.set("CYS"),q.ammp("auth_comp_id")]),"atom-test":q.core.set.has([q.set("SG"),q.ammp("label_atom_id")])}),"bond-test":!0})])]),q.struct.modifier.union([q.struct.modifier.wholeResidues([q.struct.modifier.union([q.struct.generator.bondedAtomicPairs({0:q.core.flags.hasAny([q.struct.bondProperty.flags(),q.core.type.bitflags([8])])})])])])])]),{category:Ur.Bond}),Hxe=Lr("NOS Bridges",q.struct.modifier.union([q.struct.modifier.wholeResidues([q.struct.filter.isConnectedTo({0:q.struct.generator.atomGroups({"residue-test":q.core.set.has([q.set("CSO","LYS"),q.ammp("auth_comp_id")]),"atom-test":q.core.set.has([q.set("OD","NZ"),q.ammp("label_atom_id")])}),target:q.struct.generator.atomGroups({"residue-test":q.core.set.has([q.set("CSO","LYS"),q.ammp("auth_comp_id")]),"atom-test":q.core.set.has([q.set("OD","NZ"),q.ammp("label_atom_id")])}),"bond-test":!0})])]),{category:Ur.Bond}),qxe=Lr("Non-standard Residues in Polymers",q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":q.core.rel.eq([q.ammp("entityType"),"polymer"]),"chain-test":q.core.rel.eq([q.ammp("objectPrimitive"),"atomistic"]),"residue-test":q.ammp("isNonStandard")})]),{category:Ur.Residue}),Wxe=Lr("Coarse Elements",q.struct.modifier.union([q.struct.generator.atomGroups({"chain-test":q.core.set.has([q.set("sphere","gaussian"),q.ammp("objectPrimitive")])})]),{category:Ur.Type}),Xxe=Lr("Rings in Residues",q.struct.modifier.union([q.struct.generator.rings()]),{category:Ur.Residue}),Yxe=Lr("Aromatic Rings in Residues",q.struct.modifier.union([q.struct.generator.rings({"only-aromatic":!0})]),{category:Ur.Residue}),Qxe=Lr("Surrounding Residues (5 \u212B) of Selection",q.struct.modifier.union([q.struct.modifier.exceptBy({0:q.struct.modifier.includeSurroundings({0:q.internal.generator.current(),radius:5,"as-whole-residues":!0}),by:q.internal.generator.current()})]),{description:"Select residues within 5 \u212B of the current selection.",category:Ur.Manipulate,referencesCurrent:!0}),Kxe=Lr("Surrounding Ligands (5 \u212B) of Selection",q.struct.modifier.union([q.struct.modifier.surroundingLigands({0:q.internal.generator.current(),radius:5,"include-water":!0})]),{description:"Select ligand components within 5 \u212B of the current selection.",category:Ur.Manipulate,referencesCurrent:!0}),$xe=Lr("Surrounding Atoms (5 \u212B) of Selection",q.struct.modifier.union([q.struct.modifier.exceptBy({0:q.struct.modifier.includeSurroundings({0:q.internal.generator.current(),radius:5,"as-whole-residues":!1}),by:q.internal.generator.current()})]),{description:"Select atoms within 5 \u212B of the current selection.",category:Ur.Manipulate,referencesCurrent:!0}),Zxe=Lr("Inverse / Complement of Selection",q.struct.modifier.union([q.struct.modifier.exceptBy({0:q.struct.generator.all(),by:q.internal.generator.current()})]),{description:"Select everything not in the current selection.",category:Ur.Manipulate,referencesCurrent:!0}),Jxe=Lr("Residues Covalently Bonded to Selection",q.struct.modifier.union([q.struct.modifier.includeConnected({0:q.internal.generator.current(),"layer-count":1,"as-whole-residues":!0})]),{description:"Select residues covalently bonded to current selection.",category:Ur.Manipulate,referencesCurrent:!0}),e1e=Lr("Covalently Bonded Component",q.struct.modifier.union([q.struct.modifier.includeConnected({0:q.internal.generator.current(),"fixed-point":!0})]),{description:"Select covalently bonded component based on current selection.",category:Ur.Manipulate,referencesCurrent:!0}),t1e=Lr("Residues with Cov. or Metallic Bond to Selection",q.struct.modifier.union([q.struct.modifier.includeConnected({0:q.internal.generator.current(),"layer-count":1,"as-whole-residues":!0,"bond-test":q.core.flags.hasAny([q.struct.bondProperty.flags(),q.core.type.bitflags([3])])})]),{description:"Select residues with covalent or metallic bond to current selection.",category:Ur.Manipulate,referencesCurrent:!0}),r1e=Lr("Whole Residues of Selection",q.struct.modifier.union([q.struct.modifier.wholeResidues({0:q.internal.generator.current()})]),{description:"Expand current selection to whole residues.",category:Ur.Manipulate,referencesCurrent:!0}),n1e=[[["HIS"],"Histidine"],[["ARG"],"Arginine"],[["LYS"],"Lysine"],[["ILE"],"Isoleucine"],[["PHE"],"Phenylalanine"],[["LEU"],"Leucine"],[["TRP"],"Tryptophan"],[["ALA"],"Alanine"],[["MET"],"Methionine"],[["PRO"],"Proline"],[["CYS"],"Cysteine"],[["ASN"],"Asparagine"],[["VAL"],"Valine"],[["GLY"],"Glycine"],[["SER"],"Serine"],[["GLN"],"Glutamine"],[["TYR"],"Tyrosine"],[["ASP"],"Aspartic Acid"],[["GLU"],"Glutamic Acid"],[["THR"],"Threonine"],[["SEC"],"Selenocysteine"],[["PYL"],"Pyrrolysine"],[["UNK"],"Unknown"]].sort((t,e)=>t[1]e[1]?1:0),o1e=[[["A","DA"],"Adenosine"],[["C","DC"],"Cytidine"],[["T","DT"],"Thymidine"],[["G","DG"],"Guanosine"],[["I","DI"],"Inosine"],[["U","DU"],"Uridine"],[["N","DN"],"Unknown"]].sort((t,e)=>t[1]e[1]?1:0);function fR([t,e],r,n=0){let o=t.length===1&&!JX.has(t[0])?`[${t[0]}] ${e}`:`${e} (${t.join(", ")})`;return Lr(o,q.struct.modifier.union([q.struct.generator.atomGroups({"residue-test":q.core.set.has([q.set(...t),q.ammp("auth_comp_id")])})]),{category:r,priority:n,description:o})}function i1e([t,e],r,n){let o=`${e} (${t.join(", ")})`;return Lr(o,q.struct.modifier.union([q.struct.generator.atomGroups({"atom-test":q.core.set.has([q.set(...t),q.acp("elementSymbol")])})]),{category:r,priority:n,description:o})}function a1e([t,e],r,n){let o=`${e}`;return Lr(`${e}`,q.struct.modifier.union([q.struct.generator.atomGroups({"entity-test":q.core.list.equal([q.list(...t),q.ammp("entityDescription")])})]),{category:r,priority:n,description:o})}var JX=no.unionMany(Xz,Kz,$z,Wz);function eY(t){let e=new Set;for(let n of t)n.uniqueElementSymbols.forEach(o=>e.add(o));let r=[];return e.forEach(n=>{let o=XX[n]||n;r.push(i1e([[n],o],"Element Symbol",0))}),r}function tY(t){let e=new Map,r=new Set;for(let o of t){o.uniqueResidueNames.forEach(i=>r.add(i));for(let i of o.models)o.uniqueResidueNames.forEach(a=>{let s=i.properties.chemicalComponentMap.get(a);s&&e.set(a,s.name)})}let n=[];return no.difference(r,JX).forEach(o=>{let i=e.get(o)||o;n.push(fR([[o],i],"Ligand/Non-standard Residue",200))}),n}function rY(t){let e=new Map,r=z.Location.create();for(let o of t){r.structure=o;for(let i of o.unitSymmetryGroups){r.unit=i.units[0],r.element=i.elements[0];let a=Ne.entity.type(r);if(a==="polymer"||a==="branched"){let s=Ne.entity.pdbx_description(r);e.set(s.join(", "),s)}}}let n=[];return e.forEach((o,i)=>{n.push(a1e([o,i],"Polymer/Carbohydrate Entities",300))}),n}var Qn={all:Ixe,current:Dxe,polymer:Axe,trace:kxe,backbone:Mxe,sidechain:Rxe,sidechainWithTrace:Lxe,protein:Bxe,nucleic:Oxe,helix:Fxe,beta:Nxe,water:Vxe,ion:zxe,lipid:Uxe,branched:Lw,branchedPlusConnected:QX,branchedConnectedOnly:KX,ligand:hR,ligandPlusConnected:$X,ligandConnectedOnly:ZX,connectedOnly:Gxe,disulfideBridges:jxe,nosBridges:Hxe,nonStandardPolymer:qxe,coarse:Wxe,ring:Xxe,aromaticRing:Yxe,surroundings:Qxe,surroundingLigands:Kxe,surroundingAtoms:$xe,complement:Zxe,covalentlyBonded:Jxe,covalentlyOrMetallicBonded:t1e,covalentlyBondedComponent:e1e,wholeResidues:r1e},Mw=class{add(e){this.list.push(e),this.options.push([e,e.label,e.category]),this.version+=1}remove(e){let r=this.list.indexOf(e);r!==-1&&(this.list.splice(r,1),this.options.splice(r,1),this.version+=1)}constructor(){this.list=[],this.options=[],this.version=1,this.list.push(...Object.values(Qn),...n1e.map(e=>fR(e,Ur.AminoAcid)),...o1e.map(e=>fR(e,Ur.NucleicBase))),this.options.push(...this.list.map(e=>[e,e.label,e.category]))}};var nY=()=>({type:g.MappedStatic("static",{static:g.Text("polymer"),expression:g.Value(q.struct.generator.all),bundle:g.Value(z.Bundle.Empty),script:g.Script({language:"mol-script",expression:"(sel.atom.all)"})},{isHidden:!0}),nullIfEmpty:g.Optional(g.Boolean(!0,{isHidden:!0})),label:g.Text("",{isHidden:!0})});function oY(t,e,r){r.source=t;let n=ue.Empty,o;switch(e.type.name){case"static":{let a;switch(e.type.params){case"all":a=Qn.all.query,o="All";break;case"polymer":a=Qn.polymer.query,o="Polymer";break;case"protein":a=Qn.protein.query,o="Protein";break;case"nucleic":a=Qn.nucleic.query,o="Nucleic";break;case"water":a=cn.internal.water(),o="Water";break;case"ion":a=Qn.ion.query,o="Ion";break;case"lipid":a=Qn.lipid.query,o="Lipid";break;case"branched":a=Qn.branchedPlusConnected.query,o="Branched";break;case"ligand":a=Qn.ligandPlusConnected.query,o="Ligand";break;case"non-standard":a=Qn.nonStandardPolymer.query,o="Non-standard";break;case"coarse":a=Qn.coarse.query,o="Coarse";break;default:ur(e.type)}let s=a(new fa(t));n=hn.unionStructure(s);break}case"script":case"expression":{let{selection:a,entry:s}=Oa.createAndRun(t,e.type.params);r.entry=s,n=hn.unionStructure(a);break}case"bundle":{if(e.type.params.hash!==t.hashCode)break;n=z.Bundle.toStructure(e.type.params,t);break}}if(e.nullIfEmpty&&n.elementCount===0)return Rr.Null;let i={label:`${e.label||o||"Component"}`,description:ue.elementDescription(n)};return new X.Molecule.Structure(n,i)}function iY(t,e,r,n,o){if(r.type.name!==n.type.name)return Se.UpdateResult.Recreate;let i=!1;switch(n.type.name){case"static":return r.type.params!==n.type.params?Se.UpdateResult.Recreate:ue.areEquivalent(t,o.source)?e.data.model===t.model?Se.UpdateResult.Unchanged:Et.areHierarchiesEqual(t.model,e.data.model)?(e.data=e.data.remapModel(t.model),Se.UpdateResult.Updated):Se.UpdateResult.Recreate:Se.UpdateResult.Recreate;case"script":if(!Jr.areEqual(r.type.params,n.type.params))return Se.UpdateResult.Recreate;case"expression":{if(r.type.params!==n.type.params)return Se.UpdateResult.Recreate;if(t===o.source)break;let a=o.entry,s=Oa.updateStructure(a,t);o.source=t,e.data=hn.unionStructure(s),Oa.updateStructureObject(e,s,n.label),i=!0;break}case"bundle":{if(t===o.source&&z.Bundle.areEqual(r.type.params,n.type.params))break;o.source=t,n.type.params.hash!==t.hashCode?(i=e.data.elementCount!==0,e.data=e.data.elementCount===0?e.data:ue.Empty):(i=!0,e.data=z.Bundle.toStructure(n.type.params,t));break}}if(i){if(n.nullIfEmpty&&e.data.elementCount===0)return Se.UpdateResult.Null;e.description=ue.elementDescription(e.data)}return r.label!==n.label&&(i=!0,e.label=`${n.label||e.label}`),i?Se.UpdateResult.Updated:Se.UpdateResult.Unchanged}function aY(t){switch(t){case 7:return-3;case 6:return-2;case 5:return-1;case 0:return 0;case 3:return 1;case 2:return 2;case 1:return 3;case 4:return 0;default:return console.error(`Value ${t} is outside the 0-7 range, defaulting to 0.`),0}}function gR(t,e){let r=Ce.create(t.data,e*2),n=Ce.create(t.data,e*2),o=Ce.create(t.data,e*2),i=Ce.create(t.data,e*2),a=Ce.create(t.data,e*2);for(let s=0;sN(this,null,function*(){return l1e(t)}))}function xR(t,e,r){return N(this,null,function*(){let{atoms:n,bonds:o,formalCharges:i}=t,a=K.ofConst("MOL",t.atoms.count,K.Schema.str),s=K.ofConst("A",t.atoms.count,K.Schema.str),l=K.asArrayColumn(n.type_symbol),c=K.ofConst(1,n.count,K.Schema.int),u=new Int32Array(t.atoms.count);if(i.atomIdx.rowCount>0)for(let b=0;b0){let b=K.ofIntArray(K.mapToArray(o.atomIdxA,T=>T-1,Int32Array)),v=K.ofIntArray(K.mapToArray(o.atomIdxB,T=>T-1,Int32Array)),x=K.asArrayColumn(o.order,Int32Array),S=ld.fromData({pairs:{indexA:b,indexB:v,order:x},count:n.count},{maxDistance:1/0});ld.Provider.set(f.representative,S)}return f})}var bR;(function(t){function e(n){return n?.kind==="mol"}t.is=e;function r(n){return{kind:"mol",name:n.title,data:n}}t.create=r})(bR||(bR={}));function lY(t){return ie.create("Parse MOL",e=>xR(t,void 0,e))}function c1e(t){let e=t.it_number.value(0),r=t["name_h-m_full"].value(0).replace("-"," ");return t.it_number.isDefined?(t["name_h-m_full"].isDefined,e):r}function u1e(t){let{cell:e,space_group:r}=t,n=c1e(r),o=pa.create(n,y.create(e.length_a.value(0),e.length_b.value(0),e.length_c.value(0)),y.scale(y(),y.create(e.angle_alpha.value(0),e.angle_beta.value(0),e.angle_gamma.value(0)),Math.PI/180));return{spacegroup:S0.create(o),assemblies:[],isNonStandardCrystalFrame:!1,ncsOperators:[]}}function d1e(t,e,r){return N(this,null,function*(){var n;let o=t.atom_site._rowCount,i=K.ofConst("MOL",o,K.Schema.str),a=K.ofConst("A",o,K.Schema.str),s=K.ofConst(1,o,K.Schema.int),l=u1e(t),c=l.spacegroup.cell.fromFractional,{fract_x:u,fract_y:d,fract_z:m}=t.atom_site,p=new Float32Array(o),h=new Float32Array(o),f=new Float32Array(o),b=y();for(let k=0;k0){let k=I.representative;rs.Provider.set(k,l);let M=t.geom_bond._rowCount;if(M>0){let R={},{label:B}=t.atom_site;for(let Z=0,se=B.rowCount;Zd1e(e.data.db,e,r))}function f1e(t,e){return N(this,null,function*(){let{atoms:r}=t,n=K.ofConst("MOL",t.atoms.count,K.Schema.str),o=K.ofConst("A",t.atoms.count,K.Schema.str),i=K.ofArray({array:K.mapToArray(r.number,d=>qz(d)),schema:K.Schema.Aliased(K.Schema.str)}),a=K.ofConst(1,r.count,K.Schema.int),s=Xo.ofPartialColumns(ha.atom_site,{auth_asym_id:o,auth_atom_id:i,auth_comp_id:n,auth_seq_id:a,Cartn_x:K.asArrayColumn(r.x,Float32Array),Cartn_y:K.asArrayColumn(r.y,Float32Array),Cartn_z:K.asArrayColumn(r.z,Float32Array),id:K.range(0,r.count-1),label_asym_id:o,label_atom_id:i,label_comp_id:n,label_seq_id:a,label_entity_id:K.ofConst("1",r.count,K.Schema.str),occupancy:K.ofConst(1,r.count,K.Schema.float),type_symbol:i,pdbx_PDB_model_num:K.ofConst(1,r.count,K.Schema.int)},r.count),l=new Oi;l.setNames([["MOL","Unknown Entity"]]),l.getEntityId("MOL",0,"A");let c=new Fi(a,i);c.setNames([["MOL","Unknown Molecule"]]),c.add("MOL",0);let u=Bi({entity:l.getEntityTable(),chem_comp:c.getChemCompTable(),atom_site:s});return yield wl(u,SR.create(t),e)})}var SR;(function(t){function e(n){return n?.kind==="cube"}t.is=e;function r(n){return{kind:"cube",name:n.header.comment1,data:n}}t.create=r})(SR||(SR={}));function uY(t){return ie.create("Parse Cube",e=>f1e(t,e))}var{skipWhitespace:CR,eatValue:dY,markLine:bu,getTokenString:xu,readLine:mY}=Fe;function h1e(){return{mol_name:"",num_atoms:0,num_bonds:0,num_subst:0,num_feat:0,num_sets:0,mol_type:"",charge_type:"",status_bits:"",mol_comment:""}}function g1e(t,e){return{tokenizer:t,molecule:h1e(),runtimeCtx:e}}var pY=/\s+/g;function y1e(t){let{tokenizer:e,molecule:r}=t;for(;xu(e)!=="@MOLECULE"&&e.position"))return;r.mol_type=o,bu(e);let i=xu(e);if(i.startsWith("@"))return;r.charge_type=i,bu(e);let a=xu(e);if(a.startsWith("@"))return;r.status_bits=a,bu(e);let s=xu(e);s.startsWith("@")||(r.mol_comment=s)}function v1e(t){return N(this,null,function*(){let{tokenizer:e,molecule:r}=t;for(;xu(e)!=="@ATOM"&&e.position{let A=Math.min(r.num_atoms-_,P);for(let I=0;IP.update({message:"Parsing...",current:e.position,max:E})),{count:r.num_atoms,atom_id:xt(l)(K.Schema.int),atom_name:xt(c)(K.Schema.str),x:xt(u)(K.Schema.float),y:xt(d)(K.Schema.float),z:xt(m)(K.Schema.float),atom_type:s>5?xt(p)(K.Schema.str):T,subst_id:s>6?xt(h)(K.Schema.int):S,subst_name:s>7?xt(f)(K.Schema.str):T,charge:s>8?xt(b)(K.Schema.float):x,status_bit:s>9?xt(v)(K.Schema.str):T}})}function b1e(t){return N(this,null,function*(){let{tokenizer:e,molecule:r}=t;for(;xu(e)!=="@BOND"&&e.position{let v=Math.min(r.num_bonds-h,b);for(let x=0;xb.update({message:"Parsing...",current:e.position,max:p})),{count:r.num_bonds,bond_id:xt(l)(K.Schema.int),origin_atom_id:xt(c)(K.Schema.int),target_atom_id:xt(u)(K.Schema.int),bond_type:xt(d)(K.Schema.str),status_bits:s>4?xt(m)(K.Schema.str):K.Undefined(r.num_bonds,K.Schema.str)}})}function x1e(t){let{tokenizer:e}=t;for(;e.positionMOLECULE")return;if(n==="@CRYSIN")break;bu(e)}if(e.position>=e.data.length)return;bu(e);let r=xu(e).trim().split(pY);return{a:parseFloat(r[0]),b:parseFloat(r[1]),c:parseFloat(r[2]),alpha:parseFloat(r[3]),beta:parseFloat(r[4]),gamma:parseFloat(r[5]),spaceGroup:parseInt(r[6],10),setting:parseInt(r[7],10)}}function S1e(t,e,r){return N(this,null,function*(){let n=Fe(e);t.update({message:"Parsing...",current:0,max:e.length});let o=[];for(;n.positionMOLECULE"&&n.positionN(this,null,function*(){return yield S1e(r,t,e)}))}function C1e(t,e){return N(this,null,function*(){let r=[];for(let n=0,o=t.structures.length;n0){let v=K.ofIntArray(K.mapToArray(s.origin_atom_id,P=>P-1,Int32Array)),x=K.ofIntArray(K.mapToArray(s.target_atom_id,P=>P-1,Int32Array)),S=s.bond_id,T=K.ofIntArray(K.mapToArray(s.bond_type,P=>{switch(P){case"ar":case"am":case"un":return 1;case"du":case"nc":return 0;default:return parseInt(P)}},Int8Array)),E=K.ofIntArray(K.mapToArray(s.bond_type,P=>{switch(P){case"ar":case"am":return 17;case"du":case"nc":return 0;case"un":default:return 1}},Int8Array)),_=ld.fromData({pairs:{key:S,indexA:v,indexB:x,order:T,flag:E},count:a.count},{maxDistance:l?-1:1/0}),D=b.representative;if(ld.Provider.set(D,_),vp.Provider.set(D,{data:a.charge,type:i.charge_type}),l){let P=T1e(l);P&&rs.Provider.set(D,P)}r.push(D)}}return new yf(r)})}function T1e(t){if(t.setting!==1)return;let e=pa.create(t.spaceGroup,y.create(t.a,t.b,t.c),y.scale(y(),y.create(t.alpha,t.beta,t.gamma),Math.PI/180));return{spacegroup:S0.create(e),assemblies:[],isNonStandardCrystalFrame:!1,ncsOperators:[]}}var TR;(function(t){function e(n){return n?.kind==="mol2"}t.is=e;function r(n){return{kind:"mol2",name:n.name,data:n}}t.create=r})(TR||(TR={}));function hY(t){return ie.create("Parse MOL2",e=>C1e(t,e))}var Dv=new Uint32Array([0,0,0,0,0,0,0,0,0,8,10,12,16,20,25,32,40,50,64,80,101,128,161,203,256,322,406,512,645,812,1024,1290,1625,2048,2580,3250,4096,5060,6501,8192,10321,13003,16384,20642,26007,32768,41285,52015,65536,82570,104031,131072,165140,208063,262144,330280,416127,524287,660561,832255,1048576,1321122,1664510,2097152,2642245,3329021,4194304,5284491,6658042,8388607,10568983,13316085,16777216]),wR=9,Nl;(function(t){function e(u){let d=1,m=0;for(;u>=d&&m<32;)m++,d<<=1;return m}t.sizeOfInt=e;let r=new Uint8Array(32);function n(u,d){let m=1,p=0;r[0]=1;for(let f=0;f>=8;for(;v!==0;)r[b++]=v&255,v>>=8;m=b}let h=1;for(m--;r[m]>=h;)p++,h*=2;return p+m*8}t.sizeOfInts=n;let o=new ArrayBuffer(8*3);t.buf=new Int32Array(o);let i=new Uint32Array(o);function a(u,d,m){let p=m,h=(1<=8;)b=b<<8|u[d+v++],x|=b>>f<0&&(f>f&(1<>i[1]&255}let l=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function c(u,d,m,p,h){let f=m,b=0;for(l[0]=0,l[1]=0,l[2]=0,l[3]=0;f>8;)l[b++]=s(u,d),f-=8;f>0&&(l[b++]=a(u,d,f));for(let v=2;v>0;v--){let x=0,S=p[v];for(let T=b-1;T>=0;T--){x=x<<8|l[T];let E=x/S|0;l[T]=E,x=x-E*S}h[v]=x}h[0]=l[0]|l[1]<<8|l[2]<<16|l[3]<<24}t.decodeInts=c})(Nl||(Nl={}));function w1e(){throw new Error("(xdrfile error) Undefined error.")}function _1e(t,e){return N(this,null,function*(){let r=new DataView(e.buffer,e.byteOffset),n={frames:[],boxes:[],times:[],timeOffset:0,deltaTime:0},o=n.frames,i=n.boxes,a=n.times,s=[0,0,0,0,0,0],l=[0,0,0],c=[0,0,0],u=[0,0,0],d=[.1,.1,.1],m=[.1,.1,.1],p=0,h=Nl.buf;for(;;){let f,b=r.getInt32(p+4);p+=12,a.push(r.getFloat32(p)),p+=4;let v=new Float32Array(9);for(let x=0;x<9;++x)v[x]=r.getFloat32(p)*10,p+=4;if(i.push(v),b<=9){f={count:b/3,x:new Float32Array(b/3),y:new Float32Array(b/3),z:new Float32Array(b/3)};for(let x=0;x16777215?(c[0]=Nl.sizeOfInt(l[0]),c[1]=Nl.sizeOfInt(l[1]),c[2]=Nl.sizeOfInt(l[2]),E=0):E=Nl.sizeOfInts(3,l);let _=r.getInt32(p);p+=4;let D=_-1;D=wR>D?wR:D;let P=Dv[D]/2|0,A=Dv[_]/2|0;u[0]=u[1]=u[2]=Dv[_];let I=Math.ceil(r.getInt32(p)/4)*4;p+=4;let k=1/T,M=0,R=0;for(d[0]=d[1]=d[2]=0;R0){d[0]=d[1]=d[2]=0;for(let G=0;GwR?P=Dv[_-1]/2|0:P=0):F>0&&(P=A,A=Dv[_]/2|0),u[0]=u[1]=u[2]=Dv[_],(u[0]===0||u[1]===0||u[2]===0)&&w1e()}p+=I}for(let x=0;x=e.length)break}return a.length>=1&&(n.timeOffset=a[0]),a.length>=2&&(n.deltaTime=a[1]-a[0]),n})}function gY(t){return ie.create("Parse XTC",e=>N(this,null,function*(){try{e.update({canAbort:!0,message:"Parsing trajectory..."});let r=yield _1e(e,t);return xr.success(r)}catch(r){return xr.error(""+r)}}))}function yY(t){return ie.create("Parse XTC",e=>N(this,null,function*(){yield e.update("Converting to coordinates");let r=ma(t.deltaTime,"step"),n=ma(t.timeOffset,r.unit),o=[];for(let i=0,a=t.frames.length;i=t.data.length-1?0:+Fe.readLine(t);isNaN(e)&&(e=0);let r=Fe.readLine(t),n=new Float64Array(e),o=new Float64Array(e),i=new Float64Array(e),a=new Array(e);for(let s=0;sN(this,null,function*(){return E1e(t)}))}function I1e(t,e){let{molecules:r}=t,n=0;for(let S of r)n+=S.count;let o=new Array(n),i=new Int32Array(n),a=new Float32Array(n),s=new Float32Array(n),l=new Float32Array(n),c=new Int32Array(n),u=0;for(let S=0;SI1e(t,e))}function xY(t){return t.trim().endsWith("V3000")}function SY(t){let e=Ce.create(t.data,1),r=Ce.create(t.data,1);return Fe.eatLine(t),_p(t),_p(t),_p(t),wp(t,e),wp(t,r),Fe.eatLine(t),{atomCount:xt(e)(K.Schema.int).value(0),bondCount:xt(r)(K.Schema.int).value(0)}}function CY(t,e){let r=Ce.create(t.data,e*2),n=Ce.create(t.data,e*2),o=Ce.create(t.data,e*2),i=Ce.create(t.data,e*2);for(let a=0;a ")){Ce.add(e,t.tokenStart+2,t.tokenEnd),Fe.markLine(t);let o=t.tokenStart,i=t.tokenEnd,a=!1;for(;t.position ")){Ce.add(r,o,i),a=!0;break}i=t.tokenEnd}a||Ce.add(r,o,i)}}return{dataHeader:xt(e)(K.Schema.str),data:xt(r)(K.Schema.str)}}function A1e(t){return{atomCount:+t.substr(0,3),bondCount:+t.substr(3,3)}}function k1e(t){let e=Fe.readLine(t).trim(),r=Fe.readLine(t).trim(),n=Fe.readLine(t).trim(),o=Fe.readLine(t),i=xY(o),{atomCount:a,bondCount:s}=i?SY(t):A1e(o);if(Number.isNaN(a)||Number.isNaN(s)){for(;t.positionN(this,null,function*(){return M1e(t)}))}var ER;(function(t){function e(n){return n?.kind==="sdf"}t.is=e;function r(n){return{kind:"sdf",name:n.molFile.title,data:n}}t.create=r})(ER||(ER={}));function _Y(t){return ie.create("Parse SDF",e=>xR(t.molFile,ER.create(t),e))}function R1e(t){return N(this,null,function*(){let e=new DataView(t.buffer),r={frames:[],boxes:[],times:[],timeOffset:0,deltaTime:0},n=r.frames,o=r.boxes,i=r.times,a=0;for(;;){a+=8;let s=e.getInt32(a);a+=4,a+=s;let l=e.getInt32(a+8),c=e.getInt32(a+12),u=e.getInt32(a+16),d=e.getInt32(a+28),m=e.getInt32(a+32),p=e.getInt32(a+36),h=e.getInt32(a+40);a+=52;let f=l/9,b=h*3;if(f===8?i.push(e.getFloat64(a)):i.push(e.getFloat32(a)),a+=2*f,l){let v=new Float32Array(9);if(f===8)for(let x=0;x<9;++x)v[x]=e.getFloat64(a)*10,a+=8;else for(let x=0;x<9;++x)v[x]=e.getFloat32(a)*10,a+=4;o.push(v)}if(a+=c,a+=u,d){let v=new Float32Array(h),x=new Float32Array(h),S=new Float32Array(h);if(f===8)for(let T=0;T>8&65280|D>>24&255}let E=new Float32Array(t.buffer,a,b);for(let _=0;_=t.byteLength)break}return i.length>=1&&(r.timeOffset=i[0]),i.length>=2&&(r.deltaTime=i[1]-i[0]),r})}function PY(t){return ie.create("Parse TRR",e=>N(this,null,function*(){try{e.update({canAbort:!0,message:"Parsing trajectory..."});let r=yield R1e(t);return xr.success(r)}catch(r){return xr.error(""+r)}}))}function EY(t){return ie.create("Parse TRR",e=>N(this,null,function*(){yield e.update("Converting to coordinates");let r=ma(t.deltaTime,"step"),n=ma(t.timeOffset,r.unit),o=[];for(let i=0,a=t.frames.length;i>>0:0,i=e.byteLength-o,a=o;e instanceof ArrayBuffer||(e.byteLength!==e.buffer.byteLength&&(a=e.byteOffset+o),e=e.buffer),n?this._lastWrittenByte=i:this._lastWrittenByte=0,this.buffer=e,this.length=i,this.byteLength=i,this.byteOffset=a,this._data=new DataView(this.buffer,a,i)}available(e=1){return this.offset+e<=this.length}isLittleEndian(){return this.littleEndian}setLittleEndian(){return this.littleEndian=!0,this}isBigEndian(){return!this.littleEndian}setBigEndian(){return this.littleEndian=!1,this}skip(e){return e===void 0&&(e=1),this.offset+=e,this}seek(e){return this.offset=e,this}mark(){return this._mark=this.offset,this}reset(){return this.offset=this._mark,this}pushMark(){return this._marks.push(this.offset),this}popMark(){let e=this._marks.pop();if(e===void 0)throw new Error("Mark stack empty");return this.seek(e),this}rewind(){return this.offset=0,this}ensureAvailable(e){if(e===void 0&&(e=1),!this.available(e)){let n=(this.offset+e)*2,o=new Uint8Array(n);o.set(new Uint8Array(this.buffer)),this.buffer=o.buffer,this.length=this.byteLength=n,this._data=new DataView(this.buffer)}return this}readBoolean(){return this.readUint8()!==0}readInt8(){return this._data.getInt8(this.offset++)}readUint8(){return this._data.getUint8(this.offset++)}readByte(){return this.readUint8()}readBytes(e){e===void 0&&(e=1);let r=new Uint8Array(e);for(let n=0;nthis._lastWrittenByte&&(this._lastWrittenByte=this.offset)}};function Su(t,e){if(t)throw new TypeError("Not a valid NetCDF v3.x file: "+e)}function IY(t){t.offset%4!==0&&t.skip(4-t.offset%4)}function DR(t){let e=t.readUint32(),r=t.readChars(e);return IY(t),r}var Go={BYTE:1,CHAR:2,SHORT:3,INT:4,FLOAT:5,DOUBLE:6};function DY(t){switch(Number(t)){case Go.BYTE:return"byte";case Go.CHAR:return"char";case Go.SHORT:return"short";case Go.INT:return"int";case Go.FLOAT:return"float";case Go.DOUBLE:return"double";default:return"undefined"}}function AY(t){switch(Number(t)){case Go.BYTE:return 1;case Go.CHAR:return 1;case Go.SHORT:return 2;case Go.INT:return 4;case Go.FLOAT:return 4;case Go.DOUBLE:return 8;default:return-1}}function kY(t){switch(String(t)){case"byte":return Go.BYTE;case"char":return Go.CHAR;case"short":return Go.SHORT;case"int":return Go.INT;case"float":return Go.FLOAT;case"double":return Go.DOUBLE;default:return-1}}function Ow(t,e){if(t!==1){let r=new Array(t);for(let n=0;n6,"non valid type "+a);let s=t.readUint32(),l=AR(t,a,s);IY(t),e[o]={name:i,type:DY(a),value:l}}}return e}function G1e(t,e,r){let n=t.readUint32(),o=0,i;if(n===Av)return Su(t.readUint32()!==Av,"wrong empty tag for list of variables"),[];{Su(n!==N1e,"wrong tag for list of variables");let a=t.readUint32();i=new Array(a);for(let s=0;s6,"non valid type "+m);let p=t.readUint32(),h=t.readUint32();r===2&&(Su(h>0,"offsets larger than 4GB not supported"),h=t.readUint32()),u[0]===e&&(o+=p),i[s]={name:l,dimensions:u,attributes:d,type:DY(m),size:p,offset:h,record:u[0]===e}}}return{variables:i,recordStep:o}}var Fw=class{constructor(e){let r=new Bw(e);r.setBigEndian(),Su(r.readChars(3)!=="CDF","should start with CDF");let n=r.readByte();Su(n>2,"unknown version"),this.header=z1e(r,n),this.buffer=r}get version(){return this.header.version===1?"classic format":"64-bit offset format"}get recordDimension(){return this.header.recordDimension}get dimensions(){return this.header.dimensions}get globalAttributes(){return this.header.globalAttributes}get variables(){return this.header.variables}hasDataVariable(e){return this.header.variables&&this.header.variables.findIndex(r=>r.name===e)!==-1}getDataVariable(e){var r;let n;if(typeof e=="string"?n=(r=this.header.variables)===null||r===void 0?void 0:r.find(o=>o.name===e):n=e,n===void 0)throw new Error("variable not found");return this.buffer.seek(n.offset),n.record?O1e(this.buffer,n,this.header.recordDimension):B1e(this.buffer,n)}};function j1e(t){return N(this,null,function*(){let e=new Fw(t),r={coordinates:[],time:[],timeOffset:0,deltaTime:1};for(let n of e.getDataVariable("coordinates"))r.coordinates.push(n);if(e.hasDataVariable("velocities")){let n=[];for(let o of e.getDataVariable("velocities"))n.push(o);r.velocities=n}if(e.hasDataVariable("forces")){let n=[];for(let o of e.getDataVariable("forces"))n.push(o);r.forces=n}if(e.hasDataVariable("cell_lengths")){let n=[];for(let o of e.getDataVariable("cell_lengths"))n.push(o);r.cell_lengths=n}if(e.hasDataVariable("cell_angles")){let n=[];for(let o of e.getDataVariable("cell_angles"))n.push(o);r.cell_angles=n}if(e.hasDataVariable("time")){let n=[];for(let o of e.getDataVariable("time"))n.push(o);r.time=n}return r.time&&(r.time.length>=1&&(r.timeOffset=r.time[0]),r.time.length>=2&&(r.deltaTime=r.time[1]-r.time[0])),r})}function RY(t){return ie.create("Parse NCTRAJ",e=>N(this,null,function*(){try{e.update({canAbort:!0,message:"Parsing trajectory..."});let r=yield j1e(t);return xr.success(r)}catch(r){return xr.error(""+r)}}))}function LY(t){return ie.create("Parse NCTRAJ",e=>N(this,null,function*(){yield e.update("Converting to coordinates");let r=ma(t.deltaTime,"step"),n=ma(t.timeOffset,r.unit),o=[];for(let i=0,a=t.coordinates.length;i{let G=n.value(R);for(let V=B,H=F;VN(this,null,function*(){let r=kR.fromPrmtop(t),n=H1e(t),{pointers:{NBONH:o,NBONA:i},bondsIncHydrogen:a,bondsWithoutHydrogen:s}=t,l=o+i,c={indexA:K.ofLambda({value:u=>uuN(this,null,function*(){let r=MR.fromTop(t),n=q1e(t),o=W1e(t);return g0.create(t.system||"TOP",n,o,r)}))}var X1e=Je.BuiltIn({name:"coordinates-from-dcd",display:{name:"Parse DCD",description:"Parse DCD binary data."},from:[X.Data.Binary],to:X.Molecule.Coordinates})({apply({a:t}){return ie.create("Parse DCD",e=>N(this,null,function*(){let r=yield vX(t.data).runInContext(e);if(r.isError)throw new Error(r.message);let n=yield EX(r.result).runInContext(e);return new X.Molecule.Coordinates(n,{label:t.label,description:"Coordinates"})}))}}),Y1e=Je.BuiltIn({name:"coordinates-from-xtc",display:{name:"Parse XTC",description:"Parse XTC binary data."},from:[X.Data.Binary],to:X.Molecule.Coordinates})({apply({a:t}){return ie.create("Parse XTC",e=>N(this,null,function*(){let r=yield gY(t.data).runInContext(e);if(r.isError)throw new Error(r.message);let n=yield yY(r.result).runInContext(e);return new X.Molecule.Coordinates(n,{label:t.label,description:"Coordinates"})}))}}),Q1e=Je.BuiltIn({name:"coordinates-from-trr",display:{name:"Parse TRR",description:"Parse TRR binary data."},from:[X.Data.Binary],to:X.Molecule.Coordinates})({apply({a:t}){return ie.create("Parse TRR",e=>N(this,null,function*(){let r=yield PY(t.data).runInContext(e);if(r.isError)throw new Error(r.message);let n=yield EY(r.result).runInContext(e);return new X.Molecule.Coordinates(n,{label:t.label,description:"Coordinates"})}))}}),K1e=Je.BuiltIn({name:"coordinates-from-nctraj",display:{name:"Parse NCTRAJ",description:"Parse NCTRAJ binary data."},from:[X.Data.Binary],to:X.Molecule.Coordinates})({apply({a:t}){return ie.create("Parse NCTRAJ",e=>N(this,null,function*(){let r=yield RY(t.data).runInContext(e);if(r.isError)throw new Error(r.message);let n=yield LY(r.result).runInContext(e);return new X.Molecule.Coordinates(n,{label:t.label,description:"Coordinates"})}))}}),$1e=Je.BuiltIn({name:"topology-from-psf",display:{name:"PSF Topology",description:"Create topology from PSF."},from:[X.Format.Psf],to:X.Molecule.Topology})({apply({a:t}){return ie.create("Create Topology",e=>N(this,null,function*(){let r=yield WX(t.data).runInContext(e);return new X.Molecule.Topology(r,{label:r.label||t.label,description:"Topology"})}))}}),Z1e=Je.BuiltIn({name:"topology-from-prmtop",display:{name:"PRMTOP Topology",description:"Create topology from PRMTOP."},from:[X.Format.Prmtop],to:X.Molecule.Topology})({apply({a:t}){return ie.create("Create Topology",e=>N(this,null,function*(){let r=yield BY(t.data).runInContext(e);return new X.Molecule.Topology(r,{label:r.label||t.label,description:"Topology"})}))}}),J1e=Je.BuiltIn({name:"topology-from-top",display:{name:"TOP Topology",description:"Create topology from TOP."},from:[X.Format.Top],to:X.Molecule.Topology})({apply({a:t}){return ie.create("Create Topology",e=>N(this,null,function*(){let r=yield OY(t.data).runInContext(e);return new X.Molecule.Topology(r,{label:r.label||t.label,description:"Topology"})}))}});function eSe(t,e,r){return N(this,null,function*(){if(e.type===X.Molecule.Topology.type){let n=e.data;return yield Et.trajectoryFromTopologyAndCoordinates(n,r).runInContext(t)}else if(e.type===X.Molecule.Model.type){let n=e.data;return Et.trajectoryFromModelAndCoordinates(n,r)}throw new Error("no model/topology found")})}var Nw=Je.BuiltIn({name:"trajectory-from-model-and-coordinates",display:{name:"Trajectory from Topology & Coordinates",description:"Create a trajectory from existing model/topology and coordinates."},from:X.Root,to:X.Molecule.Trajectory,params:{modelRef:g.Text("",{isHidden:!0}),coordinatesRef:g.Text("",{isHidden:!0})}})({apply({params:t,dependencies:e}){return ie.create("Create trajectory from model/topology and coordinates",r=>N(this,null,function*(){let n=e[t.coordinatesRef].data,o=yield eSe(r,e[t.modelRef],n),i={label:"Trajectory",description:`${o.frameCount} model${o.frameCount===1?"":"s"}`};return new X.Molecule.Trajectory(o,i)}))}}),tSe=Je.BuiltIn({name:"trajectory-from-blob",display:{name:"Parse Blob",description:"Parse format blob into a single trajectory."},from:X.Format.Blob,to:X.Molecule.Trajectory})({apply({a:t}){return ie.create("Parse Format Blob",e=>N(this,null,function*(){let r=[];for(let o of t.data){if(o.kind!=="cif")continue;let i=o.data.blocks[0],a=yield BT(i).runInContext(e);if(a.frameCount===0)throw new Error("No models found.");for(let s=0;sn.loadAllBlocks===!0})),blockIndex:g.Optional(g.Numeric(0,{min:0,step:1},{description:"Zero-based index of the block to parse. Only applies when Block Header parameter is not specified.",hideIf:n=>n.loadAllBlocks===!0||n.blockHeader}))};let{blocks:e}=t.data,r=e.map(n=>[n.header,n.header]);return r.push(["","[Use Block Index]"]),{loadAllBlocks:g.Optional(g.Boolean(!1,{description:"If True, ignore Block Header and Block Index parameters and parse all data blocks into a single trajectory."})),blockHeader:g.Optional(g.Select(e[0]&&e[0].header,r,{description:"Header of the block to parse. If not specifed, Block Index parameter applies.",hideIf:n=>n.loadAllBlocks===!0})),blockIndex:g.Optional(g.Numeric(0,{min:0,step:1,max:e.length-1},{description:"Zero-based index of the block to parse. Only applies when Block Header parameter is not specified.",hideIf:n=>n.loadAllBlocks===!0||n.blockHeader}))}}})({isApplicable:t=>t.data.blocks.length>0,apply({a:t,params:e}){return ie.create("Parse mmCIF",r=>N(this,null,function*(){var n;let o;if(e.loadAllBlocks){let a=[];for(let s of t.data.blocks){r.shouldUpdate&&(yield r.update(`Parsing ${s.header}...`));let l=yield BT(s).runInContext(r);for(let c=0;cc.header===a);if(!s)throw new Error(`Data block '${[a]}' not found.`);o=s.categoryNames.includes("chem_comp_atom")&&!s.categoryNames.includes("atom_site")&&!s.categoryNames.includes("ihm_sphere_obj_site")&&!s.categoryNames.includes("ihm_gaussian_obj_site")?yield CU(s).runInContext(r):yield BT(s,t.data).runInContext(r)}if(o.frameCount===0)throw new Error("No models found.");let i=Pp(o);return new X.Molecule.Trajectory(o,i)}))}}),nSe=Je.BuiltIn({name:"trajectory-from-pdb",display:{name:"Parse PDB",description:"Parse PDB string and create trajectory."},from:[X.Data.String],to:X.Molecule.Trajectory,params:{isPdbqt:g.Boolean(!1)}})({apply({a:t,params:e}){return ie.create("Parse PDB",r=>N(this,null,function*(){let n=yield SX(t.data,t.label,e.isPdbqt).runInContext(r);if(n.isError)throw new Error(n.message);let o=yield qX(n.result).runInContext(r),i=Pp(o);return new X.Molecule.Trajectory(o,i)}))}}),oSe=Je.BuiltIn({name:"trajectory-from-gro",display:{name:"Parse GRO",description:"Parse GRO string and create trajectory."},from:[X.Data.String],to:X.Molecule.Trajectory})({apply({a:t}){return ie.create("Parse GRO",e=>N(this,null,function*(){let r=yield xX(t.data).runInContext(e);if(r.isError)throw new Error(r.message);let n=yield IX(r.result).runInContext(e),o=Pp(n);return new X.Molecule.Trajectory(n,o)}))}}),iSe=Je.BuiltIn({name:"trajectory-from-xyz",display:{name:"Parse XYZ",description:"Parse XYZ string and create trajectory."},from:[X.Data.String],to:X.Molecule.Trajectory})({apply({a:t}){return ie.create("Parse XYZ",e=>N(this,null,function*(){let r=yield vY(t.data).runInContext(e);if(r.isError)throw new Error(r.message);let n=yield bY(r.result).runInContext(e),o=Pp(n);return new X.Molecule.Trajectory(n,o)}))}}),aSe=Je.BuiltIn({name:"trajectory-from-mol",display:{name:"Parse MOL",description:"Parse MOL string and create trajectory."},from:[X.Data.String],to:X.Molecule.Trajectory})({apply({a:t}){return ie.create("Parse MOL",e=>N(this,null,function*(){let r=yield sY(t.data).runInContext(e);if(r.isError)throw new Error(r.message);let n=yield lY(r.result).runInContext(e),o=Pp(n);return new X.Molecule.Trajectory(n,o)}))}}),sSe=Je.BuiltIn({name:"trajectory-from-sdf",display:{name:"Parse SDF",description:"Parse SDF string and create trajectory."},from:[X.Data.String],to:X.Molecule.Trajectory})({apply({a:t}){return ie.create("Parse SDF",e=>N(this,null,function*(){let r=yield wY(t.data).runInContext(e);if(r.isError)throw new Error(r.message);let n=[];for(let a of r.result.compounds){let s=yield _Y(a).runInContext(e);for(let l=0;lN(this,null,function*(){let r=yield fY(t.data,t.label).runInContext(e);if(r.isError)throw new Error(r.message);let n=yield hY(r.result).runInContext(e),o=Pp(n);return new X.Molecule.Trajectory(n,o)}))}}),cSe=Je.BuiltIn({name:"trajectory-from-cube",display:{name:"Parse Cube",description:"Parse Cube file to create a trajectory."},from:X.Format.Cube,to:X.Molecule.Trajectory})({apply({a:t}){return ie.create("Parse MOL",e=>N(this,null,function*(){let r=yield uY(t.data).runInContext(e),n=Pp(r);return new X.Molecule.Trajectory(r,n)}))}}),uSe=Je.BuiltIn({name:"trajectory-from-cif-core",display:{name:"Parse CIF Core",description:"Identify and create all separate models in the specified CIF data block"},from:X.Format.Cif,to:X.Molecule.Trajectory,params(t){if(!t)return{blockHeader:g.Optional(g.Text(void 0,{description:"Header of the block to parse. If none is specifed, the 1st data block in the file is used."}))};let{blocks:e}=t.data;return{blockHeader:g.Optional(g.Select(e[0]&&e[0].header,e.map(r=>[r.header,r.header]),{description:"Header of the block to parse"}))}}})({apply({a:t,params:e}){return ie.create("Parse CIF Core",r=>N(this,null,function*(){let n=e.blockHeader||t.data.blocks[0].header,o=t.data.blocks.find(s=>s.header===n);if(!o)throw new Error(`Data block '${[n]}' not found.`);let i=yield cY(o).runInContext(r);if(i.frameCount===0)throw new Error("No models found.");let a=Pp(i);return new X.Molecule.Trajectory(i,a)}))}}),dSe=t=>t+1,mSe=t=>t-1,RR=Je.BuiltIn({name:"model-from-trajectory",display:{name:"Molecular Model",description:"Create a molecular model from specified index in a trajectory."},from:X.Molecule.Trajectory,to:X.Molecule.Model,params:t=>t?{modelIndex:g.Converted(dSe,mSe,g.Numeric(1,{min:1,max:t.data.frameCount,step:1},{description:"Model Index",immediateUpdate:!0}))}:{modelIndex:g.Numeric(0,{},{description:"Zero-based index of the model",immediateUpdate:!0})}})({isApplicable:t=>t.data.frameCount>0,apply({a:t,params:e}){return ie.create("Model from Trajectory",r=>N(this,null,function*(){let n=e.modelIndex%t.data.frameCount;n<0&&(n+=t.data.frameCount);let o=yield ie.resolveInContext(t.data.getFrameAtIndex(n),r),i=`Model ${n+1}`,a=t.data.frameCount===1?void 0:`of ${t.data.frameCount}`;return new X.Molecule.Model(o,{label:i,description:a})}))},interpolate(t,e,r){return{modelIndex:r>=1?e.modelIndex:t.modelIndex+Math.floor((e.modelIndex-t.modelIndex+1)*r)}},dispose({b:t}){t?.data.customProperties.dispose()}}),pSe=Je.BuiltIn({name:"structure-from-trajectory",display:{name:"Structure from Trajectory",description:"Create a molecular structure from a trajectory."},from:X.Molecule.Trajectory,to:X.Molecule.Structure})({apply({a:t}){return ie.create("Build Structure",e=>N(this,null,function*(){let r=yield ue.ofTrajectory(t.data,e),n={label:"Ensemble",description:ue.elementDescription(r)};return new X.Molecule.Structure(r,n)}))},dispose({b:t}){t?.data.customPropertyDescriptors.dispose()}}),fSe=Je.BuiltIn({name:"structure-from-model",display:{name:"Structure",description:"Create a molecular structure (model, assembly, or symmetry) from the specified model."},from:X.Molecule.Model,to:X.Molecule.Structure,params(t){return vm.getParams(t&&t.data)}})({canAutoUpdate({oldParams:t,newParams:e}){return vm.canAutoUpdate(t.type,e.type)},apply({a:t,params:e},r){return ie.create("Build Structure",n=>N(this,null,function*(){return vm.create(r,n,t.data,e&&e.type)}))},update:({a:t,b:e,oldParams:r,newParams:n})=>ys(r,n)?e.data.model===t.data?Se.UpdateResult.Unchanged:Et.areHierarchiesEqual(t.data,e.data.model)?(e.data=e.data.remapModel(t.data),Se.UpdateResult.Updated):Se.UpdateResult.Recreate:Se.UpdateResult.Recreate,dispose({b:t}){t?.data.customPropertyDescriptors.dispose()}}),FY=y(),NY=W(),VY=W(),hSe=Je.BuiltIn({name:"transform-structure-conformation",display:{name:"Transform Conformation"},isDecorator:!0,from:X.Molecule.Structure,to:X.Molecule.Structure,params:{transform:g.MappedStatic("components",{components:g.Group({axis:g.Vec3(y.create(1,0,0)),angle:g.Numeric(0,{min:-180,max:180,step:.1}),translation:g.Vec3(y.create(0,0,0))},{isFlat:!0}),matrix:g.Group({data:g.Mat4(W.identity()),transpose:g.Boolean(!1)},{isFlat:!0})},{label:"Kind"})}})({canAutoUpdate({newParams:t}){return t.transform.name!=="matrix"},apply({a:t,params:e}){let r=W();if(e.transform.name==="components"){let{axis:o,angle:i,translation:a}=e.transform.params,s=t.data.boundary.sphere.center;W.fromTranslation(NY,y.negate(FY,s)),W.fromTranslation(VY,y.add(FY,s,a));let l=W.fromRotation(W(),Math.PI/180*i,y.normalize(y(),o));W.mul3(r,VY,l,NY)}else e.transform.name==="matrix"&&(W.copy(r,e.transform.params.data),e.transform.params.transpose&&W.transpose(r,r));let n=ue.transform(t.data,r);return new X.Molecule.Structure(n,{label:t.label,description:`${t.description} [Transformed]`})},dispose({b:t}){t?.data.customPropertyDescriptors.dispose()}}),gSe=Je.BuiltIn({name:"structure-selection-from-expression",display:{name:"Selection",description:"Create a molecular structure from the specified expression."},from:X.Molecule.Structure,to:X.Molecule.Structure,params:()=>({expression:g.Value(q.struct.generator.all,{isHidden:!0}),label:g.Optional(g.Text("",{isHidden:!0}))})})({apply({a:t,params:e,cache:r}){let{selection:n,entry:o}=Oa.createAndRun(t.data,e.expression);if(r.entry=o,hn.isEmpty(n))return Rr.Null;let i=hn.unionStructure(n),a={label:`${e.label||"Selection"}`,description:ue.elementDescription(i)};return new X.Molecule.Structure(i,a)},update:({a:t,b:e,oldParams:r,newParams:n,cache:o})=>{if(r.expression!==n.expression)return Se.UpdateResult.Recreate;let i=o.entry;if(i.currentStructure===t.data)return Se.UpdateResult.Unchanged;let a=Oa.updateStructure(i,t.data);return hn.isEmpty(a)?Se.UpdateResult.Null:(Oa.updateStructureObject(e,a,n.label),Se.UpdateResult.Updated)},dispose({b:t}){t?.data.customPropertyDescriptors.dispose()}}),ySe=Je.BuiltIn({name:"structure-multi-selection-from-expression",display:{name:"Multi-structure Measurement Selection",description:"Create selection object from multiple structures."},from:X.Root,to:X.Molecule.Structure.Selections,params:()=>({selections:g.ObjectList({key:g.Text(void 0,{description:"A unique key."}),ref:g.Text(),groupId:g.Optional(g.Text()),expression:g.Value(q.struct.generator.empty)},t=>t.ref,{isHidden:!0}),isTransitive:g.Optional(g.Boolean(!1,{isHidden:!0,description:"Remap the selections from the original structure if structurally equivalent."})),label:g.Optional(g.Text("",{isHidden:!0}))})})({apply({params:t,cache:e,dependencies:r}){let n=new Map,o=[],i=0;for(let s of t.selections){let{selection:l,entry:c}=Oa.createAndRun(r[s.ref].data,s.expression);n.set(s.key,c);let u=hn.toLociWithSourceUnits(l);o.push({key:s.key,loci:u,groupId:s.groupId}),i+=z.Loci.size(u)}e.entries=n;let a={label:`${t.label||"Multi-selection"}`,description:`${t.selections.length} source(s), ${i} element(s) total`};return new X.Molecule.Structure.Selections(o,a)},update:({b:t,oldParams:e,newParams:r,cache:n,dependencies:o})=>{if(!!e.isTransitive!=!!r.isTransitive)return Se.UpdateResult.Recreate;let i=n.entries,a=new Map,s=new Map;for(let d of t.data)s.set(d.key,d);let l=!1,c=0,u=[];for(let d of r.selections){let m=o[d.ref].data,p=!1;if(i.has(d.key)){let h=i.get(d.key);if(Oa.isUnchanged(h,d.expression,m)&&s.has(d.key)){let f=s.get(d.key);f.groupId!==d.groupId&&(f.groupId=d.groupId,l=!0),a.set(d.key,h),u.push(f),c+=z.Loci.size(f.loci);continue}if(h.expression!==d.expression)p=!0;else{let f=!1;if(r.isTransitive)if(ue.areUnitIdsAndIndicesEqual(h.originalStructure,m)){let b=Oa.run(h,h.originalStructure);h.currentStructure=m,a.set(d.key,h);let v=z.Loci.remap(hn.toLociWithSourceUnits(b),m);u.push({key:d.key,loci:v,groupId:d.groupId}),c+=z.Loci.size(v),l=!0}else f=!0;else f=!0;if(f){l=!0;let b=Oa.updateStructure(h,m);a.set(d.key,h);let v=hn.toLociWithSourceUnits(b);u.push({key:d.key,loci:v,groupId:d.groupId}),c+=z.Loci.size(v)}}}else p=!0;if(p){l=!0;let{selection:h,entry:f}=Oa.createAndRun(m,d.expression);a.set(d.key,f);let b=hn.toLociWithSourceUnits(h);u.push({key:d.key,loci:b}),c+=z.Loci.size(b)}}return l?(n.entries=a,t.data=u,t.label=`${r.label||"Multi-selection"}`,t.description=`${u.length} source(s), ${c} element(s) total`,Se.UpdateResult.Updated):Se.UpdateResult.Unchanged}}),vSe=Je.BuiltIn({name:"structure-selection-from-script",display:{name:"Selection",description:"Create a molecular structure from the specified script."},from:X.Molecule.Structure,to:X.Molecule.Structure,params:()=>({script:g.Script({language:"mol-script",expression:"(sel.atom.atom-groups :residue-test (= atom.resname ALA))"}),label:g.Optional(g.Text(""))})})({apply({a:t,params:e,cache:r}){let{selection:n,entry:o}=Oa.createAndRun(t.data,e.script);r.entry=o;let i=hn.unionStructure(n),a={label:`${e.label||"Selection"}`,description:ue.elementDescription(i)};return new X.Molecule.Structure(i,a)},update:({a:t,b:e,oldParams:r,newParams:n,cache:o})=>{if(!Jr.areEqual(r.script,n.script))return Se.UpdateResult.Recreate;let i=o.entry;if(i.currentStructure===t.data)return Se.UpdateResult.Unchanged;let a=Oa.updateStructure(i,t.data);return Oa.updateStructureObject(e,a,n.label),Se.UpdateResult.Updated},dispose({b:t}){t?.data.customPropertyDescriptors.dispose()}}),bSe=Je.BuiltIn({name:"structure-selection-from-bundle",display:{name:"Selection",description:"Create a molecular structure from the specified structure-element bundle."},from:X.Molecule.Structure,to:X.Molecule.Structure,params:()=>({bundle:g.Value(z.Bundle.Empty,{isHidden:!0}),label:g.Optional(g.Text("",{isHidden:!0}))})})({apply({a:t,params:e,cache:r}){if(e.bundle.hash!==t.data.hashCode)return Rr.Null;r.source=t.data;let n=z.Bundle.toStructure(e.bundle,t.data);if(n.elementCount===0)return Rr.Null;let o={label:`${e.label||"Selection"}`,description:ue.elementDescription(n)};return new X.Molecule.Structure(n,o)},update:({a:t,b:e,oldParams:r,newParams:n,cache:o})=>{if(!z.Bundle.areEqual(r.bundle,n.bundle))return Se.UpdateResult.Recreate;if(n.bundle.hash!==t.data.hashCode)return Se.UpdateResult.Null;if(o.source===t.data)return Se.UpdateResult.Unchanged;o.source=t.data;let i=z.Bundle.toStructure(n.bundle,t.data);return i.elementCount===0?Se.UpdateResult.Null:(e.label=`${n.label||"Selection"}`,e.description=ue.elementDescription(i),e.data=i,Se.UpdateResult.Updated)},dispose({b:t}){t?.data.customPropertyDescriptors.dispose()}}),GY={polymer:"polymer",protein:"protein",nucleic:"nucleic",water:"water",branched:"branched",ligand:"ligand","non-standard":"non-standard",coarse:"coarse","atomic-sequence":"atomic-sequence","atomic-het":"atomic-het",spheres:"spheres"},xSe=g.objectToOptions(GY),SSe=Je.BuiltIn({name:"structure-complex-element",display:{name:"Complex Element",description:"Create a molecular structure from the specified model."},from:X.Molecule.Structure,to:X.Molecule.Structure,params:{type:g.Select("atomic-sequence",xSe,{isHidden:!0})}})({apply({a:t,params:e}){let r,n;switch(e.type){case"polymer":r=Qn.polymer.query,n="Polymer";break;case"protein":r=Qn.protein.query,n="Protein";break;case"nucleic":r=Qn.nucleic.query,n="Nucleic";break;case"water":r=cn.internal.water(),n="Water";break;case"branched":r=Qn.branchedPlusConnected.query,n="Branched";break;case"ligand":r=Qn.ligandPlusConnected.query,n="Ligand";break;case"non-standard":r=Qn.nonStandardPolymer.query,n="Non-standard";break;case"coarse":r=Qn.coarse.query,n="Coarse";break;case"atomic-sequence":r=cn.internal.atomicSequence(),n="Sequence";break;case"atomic-het":r=cn.internal.atomicHet(),n="HET Groups/Ligands";break;case"spheres":r=cn.internal.spheres(),n="Coarse Spheres";break;default:ur(e.type)}let o=r(new fa(t.data)),i=hn.unionStructure(o);return i.elementCount===0?Rr.Null:new X.Molecule.Structure(i,{label:n,description:ue.elementDescription(i)})},dispose({b:t}){t?.data.customPropertyDescriptors.dispose()}}),CSe=Je.BuiltIn({name:"structure-component",display:{name:"Component",description:"A molecular structure component."},from:X.Molecule.Structure,to:X.Molecule.Structure,params:nY})({apply({a:t,params:e,cache:r}){return oY(t.data,e,r)},update:({a:t,b:e,oldParams:r,newParams:n,cache:o})=>iY(t.data,e,r,n,o),dispose({b:t}){t?.data.customPropertyDescriptors.dispose()}}),LR=Je.BuiltIn({name:"custom-model-properties",display:{name:"Custom Model Properties"},isDecorator:!0,from:X.Molecule.Model,to:X.Molecule.Model,params:(t,e)=>e.customModelProperties.getParams(t?.data)})({apply({a:t,params:e},r){return ie.create("Custom Props",n=>N(this,null,function*(){return yield zY(t.data,r,n,e),new X.Molecule.Model(t.data,{label:t.label,description:t.description})}))},update({a:t,b:e,oldParams:r,newParams:n},o){return ie.create("Custom Props",i=>N(this,null,function*(){e.data=t.data,e.label=t.label,e.description=t.description;for(let a of r.autoAttach){let s=o.customModelProperties.get(a);s&&t.data.customProperties.reference(s.descriptor,!1)}return yield zY(t.data,o,i,n),Se.UpdateResult.Updated}))},dispose({b:t}){t?.data.customProperties.dispose()}});function zY(t,e,r,n){return N(this,null,function*(){let o={runtime:r,assetManager:e.managers.asset},{autoAttach:i,properties:a}=n;for(let s of Object.keys(a)){let l=e.customModelProperties.get(s),c=a[s];if(i.includes(s)||l.isHidden)try{yield l.attach(o,t,c,!0)}catch(u){e.log.warn(`Error attaching model prop '${s}': ${u}`)}else l.set(t,c)}})}var BR=Je.BuiltIn({name:"custom-structure-properties",display:{name:"Custom Structure Properties"},isDecorator:!0,from:X.Molecule.Structure,to:X.Molecule.Structure,params:(t,e)=>e.customStructureProperties.getParams(t?.data.root)})({apply({a:t,params:e},r){return ie.create("Custom Props",n=>N(this,null,function*(){return yield UY(t.data.root,r,n,e),new X.Molecule.Structure(t.data,{label:t.label,description:t.description})}))},update({a:t,b:e,oldParams:r,newParams:n},o){return t.data!==e.data?Se.UpdateResult.Recreate:ie.create("Custom Props",i=>N(this,null,function*(){e.data=t.data,e.label=t.label,e.description=t.description;for(let a of r.autoAttach){let s=o.customStructureProperties.get(a);s&&t.data.customPropertyDescriptors.reference(s.descriptor,!1)}return yield UY(t.data.root,o,i,n),Se.UpdateResult.Updated}))},dispose({b:t}){t?.data.customPropertyDescriptors.dispose()}});function UY(t,e,r,n){return N(this,null,function*(){let o={runtime:r,assetManager:e.managers.asset},{autoAttach:i,properties:a}=n;for(let s of Object.keys(a)){let l=e.customStructureProperties.get(s),c=a[s];if(i.includes(s)||l.isHidden)try{yield l.attach(o,t,c,!0)}catch(u){e.log.warn(`Error attaching structure prop '${s}': ${u}`)}else l.set(t,c)}})}var TSe=Je.BuiltIn({name:"shape-from-ply",display:{name:"Shape from PLY",description:"Create Shape from PLY data"},from:X.Format.Ply,to:X.Shape.Provider,params(t){return{transforms:g.Optional(g.Value([],{isHidden:!0})),label:g.Optional(g.Text("",{isHidden:!0}))}}})({apply({a:t,params:e}){return ie.create("Create shape from PLY",r=>N(this,null,function*(){let n=yield PX(t.data,e).runInContext(r),o={label:e.label||"Shape"};return new X.Shape.Provider(n,o)}))}});var UR={};ua(UR,{AssignColorVolume:()=>MSe,VolumeFromCcp4:()=>PSe,VolumeFromCube:()=>ISe,VolumeFromDensityServerCif:()=>ASe,VolumeFromDsn6:()=>ESe,VolumeFromDx:()=>DSe,VolumeFromSegmentationCif:()=>kSe,VolumeTransform:()=>RSe});function wSe(t){return t.originX===0&&t.originY===0&&t.originZ===0?y.create(t.NCSTART,t.NRSTART,t.NSSTART):y.create(t.originX/(t.xLength/t.NX),t.originY/(t.yLength/t.NY),t.originZ/(t.zLength/t.NZ))}function _Se(t){let e=K3(t);switch(e){case Ba.Float32:return Float32Array;case Ba.Int8:return Int8Array;case Ba.Int16:return Int16Array;case Ba.Uint16:return Uint16Array}throw Error(`${e} is not a supported value format.`)}function jY(t,e){return ie.create("Create Volume",r=>N(this,null,function*(){let{header:n,values:o}=t,i=y.create(n.xLength,n.yLength,n.zLength);e&&e.voxelSize&&y.mul(i,i,e.voxelSize);let a=y.create(or(n.alpha),or(n.beta),or(n.gamma)),s=n.ISPG>65536?0:n.ISPG,l=pa.create(s||"P 1",i,a),c=y.create(n.MAPC-1,n.MAPR-1,n.MAPS-1),u=er.convertToCanonicalAxisIndicesFastToSlow(c),d=[n.NX,n.NY,n.NZ],m=u([n.NC,n.NR,n.NS]),p=wSe(n);e?.offset&&y.add(p,p,e.offset);let h=u(p),f=y.create(h[0]/d[0],h[1]/d[1],h[2]/d[2]),b=y.create(m[0]/d[0],m[1]/d[1],m[2]/d[2]),v=er.Space(m,er.invertAxisOrder(c),_Se(n)),x=er.create(v,er.Data1(o)),S=n.AMIN===0&&n.AMAX===0&&n.AMEAN===0&&n.ARMS===0;return{label:e?.label,entryId:e?.entryId,grid:{transform:{kind:"spacegroup",cell:l,fractionalBox:qe.create(f,y.add(y.zero(),f,b))},cells:x,stats:{min:isNaN(n.AMIN)||S?cf(o):n.AMIN,max:isNaN(n.AMAX)||S?Mi(o):n.AMAX,mean:isNaN(n.AMEAN)||S?uf(o):n.AMEAN,sigma:isNaN(n.ARMS)||n.ARMS===0?df(o):n.ARMS}},sourceData:FR.create(t),customProperties:new Tl,_propertyData:Object.create(null)}}))}var FR;(function(t){function e(n){return n?.kind==="ccp4"}t.is=e;function r(n){return{kind:"ccp4",name:n.name,data:n}}t.create=r})(FR||(FR={}));function HY(t,e){return ie.create("Create Volume",r=>N(this,null,function*(){let{header:n,values:o}=t,i=y.create(n.xlen,n.ylen,n.zlen);e&&e.voxelSize&&y.mul(i,i,e.voxelSize);let a=y.create(or(n.alpha),or(n.beta),or(n.gamma)),s=pa.create("P 1",i,a),l=[n.xRate,n.yRate,n.zRate],c=[n.xExtent,n.yExtent,n.zExtent],u=[n.xStart,n.yStart,n.zStart],d=y.create(u[0]/l[0],u[1]/l[1],u[2]/l[2]),m=y.create(c[0]/l[0],c[1]/l[1],c[2]/l[2]),p=er.Space(c,[0,1,2],Float32Array),h=er.create(p,er.Data1(o));return{label:e?.label,entryId:e?.entryId,grid:{transform:{kind:"spacegroup",cell:s,fractionalBox:qe.create(d,y.add(y.zero(),d,m))},cells:h,stats:{min:cf(o),max:Mi(o),mean:uf(o),sigma:n.sigma!==void 0?n.sigma:df(o)}},sourceData:NR.create(t),customProperties:new Tl,_propertyData:Object.create(null)}}))}var NR;(function(t){function e(n){return n?.kind==="dsn6"}t.is=e;function r(n){return{kind:"dsn6",name:n.name,data:n}}t.create=r})(NR||(NR={}));function qY(t,e){return ie.create("Create Volume",()=>N(this,null,function*(){let{header:r,values:n}=t,o=er.Space(r.dim,[0,1,2],Float64Array),i=er.create(o,er.Data1(n)),a=W.fromTranslation(W(),r.min),s=W.fromScaling(W(),r.h);return W.mul(a,a,s),{label:e?.label,entryId:e?.entryId,grid:{transform:{kind:"matrix",matrix:a},cells:i,stats:{min:cf(n),max:Mi(n),mean:uf(n),sigma:df(n)}},sourceData:VR.create(t),customProperties:new Tl,_propertyData:Object.create(null)}}))}var VR;(function(t){function e(n){return n?.kind==="dx"}t.is=e;function r(n){return{kind:"dx",name:n.name,data:n}}t.create=r})(VR||(VR={}));function WY(t,e){return ie.create("Create Segmentation Volume",r=>N(this,null,function*(){var n;let{volume_data_3d_info:o,segmentation_data_3d:i}=t,a=pa.create(o.spacegroup_number.value(0),y.ofArray(o.spacegroup_cell_size.value(0)),y.scale(y(),y.ofArray(o.spacegroup_cell_angles.value(0)),Math.PI/180)),s=o.axis_order.value(0),l=er.convertToCanonicalAxisIndicesFastToSlow(s),c=l(o.sample_count.value(0)),u=er.Space(c,er.invertAxisOrder(s),Float32Array),d=er.create(u,er.Data1(i.values.toArray({array:Float32Array}))),m=y.ofArray(l(o.origin.value(0))),p=y.ofArray(l(o.dimensions.value(0))),h={label:e?.label,entryId:void 0,grid:{transform:{kind:"spacegroup",cell:a,fractionalBox:qe.create(m,y.add(y(),m,p))},cells:d,stats:{min:0,max:1,mean:0,sigma:1}},sourceData:zR.create(t),customProperties:new Tl,_propertyData:{ownerId:e?.ownerId}};xe.PickingGranularity.set(h,"object");let f=new Map,b=new Map,{segment_id:v,set_id:x}=t.segmentation_data_table;for(let B=0,F=v.rowCount;B{B.forEach(G=>{f.has(G)||f.set(G,new Set),f.get(G).add(F)})});let S=[0,0,0],T=d.space.getCoords,E=d.data,[_,D,P]=h.grid.cells.space.dimensions,A=_-1,I=D-1,k=P-1,M={};b.forEach((B,F)=>{M[F]=[A,I,k,-1,-1,-1]});for(let B=0,F=E.length;BV[3]&&(V[3]=S[0]),S[1]>V[4]&&(V[4]=S[1]),S[2]>V[5]&&(V[5]=S[2])}let R={};return f.forEach((B,F)=>{R[F]=qe.create(y.create(A,I,k),y.create(-1,-1,-1))}),ro(M,(B,F)=>{b.get(parseInt(F)).forEach(G=>{let V=R[G];B[0]V.max[0]&&(V.max[0]=B[3]),B[4]>V.max[1]&&(V.max[1]=B[4]),B[5]>V.max[2]&&(V.max[2]=B[5])})}),xe.Segmentation.set(h,{segments:f,sets:b,bounds:R,labels:(n=e?.segmentLabels)!==null&&n!==void 0?n:{}}),h}))}var zR;(function(t){function e(n){return n?.kind==="segcif"}t.is=e;function r(n){return{kind:"segcif",name:n._name,data:n}}t.create=r})(zR||(zR={}));var PSe=Je.BuiltIn({name:"volume-from-ccp4",display:{name:"Volume from CCP4/MRC/MAP",description:"Create Volume from CCP4/MRC/MAP data"},from:X.Format.Ccp4,to:X.Volume.Data,params(t){return{voxelSize:g.Vec3(y.create(1,1,1)),offset:g.Vec3(y.create(0,0,0)),entryId:g.Text("")}}})({apply({a:t,params:e}){return ie.create("Create volume from CCP4/MRC/MAP",r=>N(this,null,function*(){let n=yield jY(t.data,U(w({},e),{label:t.data.name||t.label})).runInContext(r),o={label:n.label||"Volume",description:`Volume ${t.data.header.NX}\xD7${t.data.header.NX}\xD7${t.data.header.NX}`};return new X.Volume.Data(n,o)}))},dispose({b:t}){t?.data.customProperties.dispose()}}),ESe=Je.BuiltIn({name:"volume-from-dsn6",display:{name:"Volume from DSN6/BRIX",description:"Create Volume from DSN6/BRIX data"},from:X.Format.Dsn6,to:X.Volume.Data,params(t){return{voxelSize:g.Vec3(y.create(1,1,1)),entryId:g.Text("")}}})({apply({a:t,params:e}){return ie.create("Create volume from DSN6/BRIX",r=>N(this,null,function*(){let n=yield HY(t.data,U(w({},e),{label:t.data.name||t.label})).runInContext(r),o={label:n.label||"Volume",description:`Volume ${t.data.header.xExtent}\xD7${t.data.header.yExtent}\xD7${t.data.header.zExtent}`};return new X.Volume.Data(n,o)}))},dispose({b:t}){t?.data.customProperties.dispose()}}),ISe=Je.BuiltIn({name:"volume-from-cube",display:{name:"Volume from Cube",description:"Create Volume from Cube data"},from:X.Format.Cube,to:X.Volume.Data,params(t){return{dataIndex:t?g.Select(0,t.data.header.dataSetIds.map((r,n)=>[n,`${r}`])):g.Numeric(0),entryId:g.Text("")}}})({apply({a:t,params:e}){return ie.create("Create volume from Cube",r=>N(this,null,function*(){let n=yield Zj(t.data,U(w({},e),{label:t.data.name||t.label})).runInContext(r),o={label:n.label||"Volume",description:`Volume ${t.data.header.dim[0]}\xD7${t.data.header.dim[1]}\xD7${t.data.header.dim[2]}`};return new X.Volume.Data(n,o)}))},dispose({b:t}){t?.data.customProperties.dispose()}}),DSe=Je.BuiltIn({name:"volume-from-dx",display:{name:"Parse DX",description:"Create volume from DX data."},from:X.Format.Dx,to:X.Volume.Data})({apply({a:t}){return ie.create("Parse DX",e=>N(this,null,function*(){let r=yield qY(t.data,{label:t.data.name||t.label}).runInContext(e),n={label:r.label||"Volume",description:`Volume ${t.data.header.dim[0]}\xD7${t.data.header.dim[1]}\xD7${t.data.header.dim[2]}`};return new X.Volume.Data(r,n)}))},dispose({b:t}){t?.data.customProperties.dispose()}}),ASe=Je.BuiltIn({name:"volume-from-density-server-cif",display:{name:"Volume from density-server CIF",description:"Identify and create all separate models in the specified CIF data block"},from:X.Format.Cif,to:X.Volume.Data,params(t){if(!t)return{blockHeader:g.Optional(g.Text(void 0,{description:"Header of the block to parse. If none is specifed, the 1st data block in the file is used."})),entryId:g.Text("")};let e=t.data.blocks.slice(1);return{blockHeader:g.Optional(g.Select(e[0]&&e[0].header,e.map(r=>[r.header,r.header]),{description:"Header of the block to parse"})),entryId:g.Text("")}}})({isApplicable:t=>t.data.blocks.length>0,apply({a:t,params:e}){return ie.create("Parse density-server CIF",r=>N(this,null,function*(){var n;let o=e.blockHeader||t.data.blocks[1].header,i=t.data.blocks.find(m=>m.header===o);if(!i)throw new Error(`Data block '${[o]}' not found.`);let a=lc.schema.densityServer(i),s=yield e2(a,{entryId:e.entryId}).runInContext(r),[l,c,u]=s.grid.cells.space.dimensions,d={label:(n=e.entryId)!==null&&n!==void 0?n:a.volume_data_3d_info.name.value(0),description:`Volume ${l}\xD7${c}\xD7${u}`};return new X.Volume.Data(s,d)}))},dispose({b:t}){t?.data.customProperties.dispose()}}),kSe=Je.BuiltIn({name:"volume-from-segmentation-cif",display:{name:"Volume from Segmentation CIF"},from:X.Format.Cif,to:X.Volume.Data,params(t){let e=t?.data.blocks.slice(1);return{blockHeader:e?g.Optional(g.Select(e[0]&&e[0].header,e.map(n=>[n.header,n.header]),{description:"Header of the block to parse"})):g.Optional(g.Text(void 0,{description:"Header of the block to parse. If none is specifed, the 1st data block in the file is used."})),segmentLabels:g.ObjectList({id:g.Numeric(-1),label:g.Text("")},n=>`${n.id} = ${n.label}`,{description:"Mapping of segment IDs to segment labels"}),ownerId:g.Text("",{isHidden:!0,description:"Reference to the object which manages this volume"})}}})({isApplicable:t=>t.data.blocks.length>0,apply({a:t,params:e}){return ie.create("Parse segmentation CIF",r=>N(this,null,function*(){let n=e.blockHeader||t.data.blocks[1].header,o=t.data.blocks.find(m=>m.header===n);if(!o)throw new Error(`Data block '${[n]}' not found.`);let i=lc.schema.segmentation(o),a={};for(let m of e.segmentLabels)a[m.id]=m.label;let s=yield WY(i,{segmentLabels:a,ownerId:e.ownerId}).runInContext(r),[l,c,u]=s.grid.cells.space.dimensions,d={label:i.volume_data_3d_info.name.value(0),description:`Segmentation ${l}\xD7${c}\xD7${u}`};return new X.Volume.Data(s,d)}))},dispose({b:t}){t?.data.customProperties.dispose()}}),MSe=Je.BuiltIn({name:"assign-color-volume",display:{name:"Assign Color Volume",description:"Assigns another volume to be available for coloring."},from:X.Volume.Data,to:X.Volume.Data,isDecorator:!0,params(t,e){if(!t)return{ref:g.Text()};let r=e.state.data.select(lt.Generators.root.subtree().ofType(X.Volume.Data).filter(n=>{var o;return!!n.obj&&!(!((o=n.obj)===null||o===void 0)&&o.data.colorVolume)&&n.obj!==t}));return r.length===0?{ref:g.Text("",{isHidden:!0})}:{ref:g.Select(r[0].transform.ref,r.map(n=>[n.transform.ref,n.obj.label]))}}})({apply({a:t,params:e,dependencies:r}){return ie.create("Assign Color Volume",n=>N(this,null,function*(){if(!r||!r[e.ref])throw new Error("Dependency not available.");let o=r[e.ref].data,i=U(w({},t.data),{colorVolume:o}),a={label:t.label,description:"Volume + Colors"};return new X.Volume.Data(i,a)}))}}),RSe=Je.BuiltIn({name:"volume-transform",display:{name:"Transform Volume"},isDecorator:!0,from:X.Volume.Data,to:X.Volume.Data,params:{transform:g.MappedStatic("matrix",{matrix:g.Group({data:g.Mat4(W.identity()),transpose:g.Boolean(!1)},{isFlat:!0})},{label:"Kind"})}})({canAutoUpdate({newParams:t}){return t.transform.name!=="matrix"},apply({a:t,params:e}){let r=W(),n=w({},t.data.grid.transform);W.copy(r,e.transform.params.data),e.transform.params.transpose&&W.transpose(r,r);let o=t.data.grid.transform.kind==="matrix"?t.data.grid.transform.matrix:Sn.getGridToCartesianTransform(t.data.grid);n={kind:"matrix",matrix:W.mul(W(),r,o)};let i=U(w({},t.data),{grid:U(w({},t.data.grid),{transform:n})});return new X.Volume.Data(i,{label:t.label,description:`${t.description} [Transformed]`})}});var de={Data:iR,Misc:aR,Model:OR,Volume:UR,Representation:B3,Shape:M3};var XY=As.create({name:"built-in.animate-assembly-unwind",display:{name:"Unwind Assembly"},isExportable:!0,params:t=>{let e=[["all","All"]],r=t.state.data.select(lt.Generators.rootsOfType(X.Molecule.Structure));for(let n of r)e.push([n.transform.ref,n.obj.data.models[0].label]);return{durationInMs:g.Numeric(3e3,{min:100,max:1e4,step:100}),playOnce:g.Boolean(!1),target:g.Select(e[0][0],e)}},canApply(t){let e=t.state.data,r=kt.RootRef;return{canApply:e.select(lt.Generators.ofType(X.Molecule.Structure.Representation3D,r)).length>0}},getDuration:t=>({kind:"fixed",durationMs:t.durationInMs}),initialState:()=>({t:0}),setup(t,e,r){let n=r.state.data,o=!t.target||t.target==="all"?kt.RootRef:t.target,i=n.select(lt.Generators.ofType(X.Molecule.Structure.Representation3D,o)),a=n.build(),s=!1;for(let l of i)n.select(lt.Generators.ofTransformer(de.Representation.UnwindStructureAssemblyRepresentation3D,l.transform.ref)).length>0||(s=!0,a.to(l).apply(de.Representation.UnwindStructureAssemblyRepresentation3D,{t:0},{tags:"animate-assembly-unwind"}));if(s)return a.commit({doNotUpdateCurrent:!0})},teardown(t,e,r){let n=r.state.data,o=n.select(lt.Generators.ofType(X.Molecule.Structure.Representation3DState).withTag("animate-assembly-unwind"));if(o.length===0)return;let i=n.build();for(let a of o)i.delete(a.transform.ref);return i.commit()},apply(t,e,r){return N(this,null,function*(){let n=r.plugin.state.data,o=!r.params.target||r.params.target==="all"?kt.RootRef:r.params.target,i=n.select(lt.Generators.ofTransformer(de.Representation.UnwindStructureAssemblyRepresentation3D,o));if(i.length===0)return{kind:"finished"};let a=n.build(),s=(e.current-e.lastApplied)/r.params.durationInMs,l=t.t+s,c=!1;r.params.playOnce&&l>=1?(c=!0,l=1):l=l%1;for(let u of i)a.to(u).update({t:l});return yield Re.State.Update(r.plugin,{state:n,tree:a,options:{doNotLogTiming:!0}}),c?{kind:"finished"}:{kind:"next",state:{t:l}}})}});var Vw=y(),YY=y(),QY=xn(),KY=As.create({name:"built-in.animate-camera-spin",display:{name:"Camera Spin",description:"Spin the 3D scene around the x-axis in view space"},isExportable:!0,params:()=>({durationInMs:g.Numeric(4e3,{min:100,max:2e4,step:100}),speed:g.Numeric(1,{min:1,max:10,step:1},{description:"How many times to spin in the specified duration."}),direction:g.Select("cw",[["cw","Clockwise"],["ccw","Counter Clockwise"]],{cycle:!0})}),initialState:(t,e)=>{var r;return{snapshot:(r=e.canvas3d)===null||r===void 0?void 0:r.camera.getSnapshot()}},getDuration:t=>({kind:"fixed",durationMs:t.durationInMs}),teardown:(t,e,r)=>{var n;(n=r.canvas3d)===null||n===void 0||n.requestCameraReset({snapshot:e.snapshot,durationMs:0})},apply(t,e,r){return N(this,null,function*(){var n,o;if(e.current===0)return{kind:"next",state:t};let i=t.snapshot;if(i.radiusMax<1e-4)return{kind:"finished"};let a=e.animation?((n=e.animation)===null||n===void 0?void 0:n.currentFrame)/(e.animation.frameCount+1):Wo(e.current/r.params.durationInMs,0,1),s=2*Math.PI*a*r.params.speed*(r.params.direction==="ccw"?-1:1);y.sub(Vw,i.position,i.target),y.normalize(YY,i.up),xn.setAxisAngle(QY,YY,s),y.transformQuat(Vw,Vw,QY);let l=y.add(y(),i.target,Vw);return(o=r.plugin.canvas3d)===null||o===void 0||o.requestCameraReset({snapshot:U(w({},i),{position:l}),durationMs:0}),a>=.99999?{kind:"finished"}:{kind:"next",state:t}})}});var $Y=As.create({name:"built-in.animate-model-index",display:{name:"Animate Trajectory"},isExportable:!0,params:()=>({mode:g.MappedStatic("loop",{palindrome:g.Group({}),loop:g.Group({direction:g.Select("forward",[["forward","Forward"],["backward","Backward"]])}),once:g.Group({direction:g.Select("forward",[["forward","Forward"],["backward","Backward"]])},{isFlat:!0})},{options:[["palindrome","Palindrome"],["loop","Loop"],["once","Once"]]}),duration:g.MappedStatic("fixed",{fixed:g.Group({durationInS:g.Numeric(5,{min:1,max:120,step:.1},{description:"Duration in seconds"})},{isFlat:!0}),computed:g.Group({targetFps:g.Numeric(30,{min:5,max:250,step:1},{label:"Target FPS"})},{isFlat:!0}),sequential:g.Group({maxFps:g.Numeric(30,{min:5,max:60,step:1})},{isFlat:!0})})}),canApply(t){let e=t.state.data,r=e.select(lt.Generators.ofTransformer(de.Model.ModelFromTrajectory));for(let n of r){let o=lt.findAncestorOfType(e.tree,e.cells,n.transform.ref,X.Molecule.Trajectory);if(o&&o.obj&&o.obj.data.frameCount>1)return{canApply:!0}}return{canApply:!1,reason:"No trajectory to animate"}},getDuration:(t,e)=>{var r;if(((r=t.duration)===null||r===void 0?void 0:r.name)==="fixed")return{kind:"fixed",durationMs:t.duration.params.durationInS*1e3};if(t.duration.name==="computed"){let n=e.state.data,o=n.select(lt.Generators.ofTransformer(de.Model.ModelFromTrajectory)),i=0;for(let a of o){let s=lt.findAncestorOfType(n.tree,n.cells,a.transform.ref,X.Molecule.Trajectory);if(!s||!s.obj)continue;let l=s.obj;i=Math.max(Math.ceil(1e3*l.data.frameCount/t.duration.params.targetFps),i)}return{kind:"fixed",durationMs:i}}return{kind:"unknown"}},initialState:()=>({}),apply(t,e,r){return N(this,null,function*(){if(r.params.duration.name==="sequential"&&e.current>0&&e.current-e.lastApplied<1e3/r.params.duration.params.maxFps)return{kind:"skip"};let n=r.plugin.state.data,o=n.select(lt.Generators.ofTransformer(de.Model.ModelFromTrajectory));if(o.length===0)return{kind:"finished"};let i=n.build(),a=r.params,s=t.palindromeDirections||{},l=!1,c=!0;for(let u of o){let d=lt.findAncestorOfType(n.tree,n.cells,u.transform.ref,X.Molecule.Trajectory);if(!d||!d.obj)continue;let m=d.obj;m.data.frameCount<=1||i.to(u).update(p=>{let h=m.data.frameCount;if(h!==1)c=!1;else return p;if(a.duration.name==="sequential"){let f=1;if(a.mode.name==="once"){if(f=a.mode.params.direction==="backward"?-1:1,f===-1&&p.modelIndex===0||f===1&&p.modelIndex===h-1)return l=!0,p}else a.mode.name==="palindrome"&&(p.modelIndex===0?f=1:p.modelIndex===h-1?f=-1:f=s[u.transform.ref]||1);s[u.transform.ref]=f;let b=(p.modelIndex+f)%h;return b<0&&(b+=h),l=l||f===-1&&b===0||f===1&&b===h-1,{modelIndex:b}}else{let f=a.duration.name==="fixed"?a.duration.params.durationInS*1e3:Math.ceil(1e3*m.data.frameCount/a.duration.params.targetFps);if(a.mode.name==="once"&&e.current>=f)return l=!0,{modelIndex:m.data.frameCount-1};let b=e.current%f/f;return a.mode.name==="loop"&&a.mode.params.direction==="backward"&&(b=1-b),a.mode.name==="palindrome"&&(b=2*b,b>1&&(b=2-b)),{modelIndex:Math.min(Math.floor(m.data.frameCount*b),m.data.frameCount-1)}}})}return c||(yield Re.State.Update(r.plugin,{state:n,tree:i,options:{doNotLogTiming:!0}})),c||a.mode.name==="once"&&l?{kind:"finished"}:a.mode.name==="palindrome"?{kind:"next",state:{palindromeDirections:s}}:{kind:"next",state:{}}})}});function ZY(t,e,r=!1){return N(this,null,function*(){var n,o,i,a;e.snapshot.data&&(yield t.runTask(t.state.data.setSnapshot(e.snapshot.data)),(n=t.canvas3d)===null||n===void 0||n.setProps({trackball:(i=(o=e.snapshot.canvas3d)===null||o===void 0?void 0:o.props)===null||i===void 0?void 0:i.trackball})),e.snapshot.camera&&((a=t.canvas3d)===null||a===void 0||a.requestCameraReset({snapshot:e.snapshot.camera.current,durationMs:r||e.snapshot.camera.transitionStyle==="instant"?0:e.snapshot.camera.transitionDurationInMs}))})}var JY=As.create({name:"built-in.animate-state-snapshots",display:{name:"State Snapshots"},isExportable:!0,params:()=>({}),canApply(t){let e=t.managers.snapshot.state.entries;return e.size<2?{canApply:!1,reason:"At least 2 states required."}:e.some(r=>!!r?.snapshot.startAnimation)?{canApply:!1,reason:"Nested animations not supported."}:{canApply:t.managers.snapshot.state.entries.size>1}},setup(t,e,r){let n=r.managers.snapshot.state.entries.get(0);ZY(r,n,!0)},getDuration:(t,e)=>({kind:"fixed",durationMs:e.managers.snapshot.state.entries.toArray().reduce((r,n)=>{var o;return r+((o=n.snapshot.durationInMs)!==null&&o!==void 0?o:0)},0)}),initialState:(t,e)=>{let r=e.managers.snapshot.state.entries.toArray();return{totalDuration:r.reduce((n,o)=>{var i;return n+((i=o.snapshot.durationInMs)!==null&&i!==void 0?i:0)},0),snapshots:r,currentIndex:0}},apply(t,e,r){return N(this,null,function*(){var n;if(e.current>=t.totalDuration)return{kind:"finished"};let o=0,i=0;for(let a of t.snapshots){if(o+=(n=a.snapshot.durationInMs)!==null&&n!==void 0?n:0,e.current=t.snapshots.length?{kind:"finished"}:i===t.currentIndex?{kind:"skip"}:(yield ZY(r.plugin,t.snapshots[i]),{kind:"next",state:U(w({},t),{currentIndex:i})})})}});var GR={};ua(GR,{ApplyAction:()=>sQ,ClearHighlights:()=>mQ,Highlight:()=>dQ,RemoveObject:()=>lQ,SetCurrentObject:()=>iQ,Snapshots:()=>pQ,SyncBehaviors:()=>oQ,ToggleExpanded:()=>cQ,ToggleVisibility:()=>uQ,Update:()=>aQ,registerDefault:()=>FSe,setSubtreeVisibility:()=>Id});var Ed=class{constructor(){this.subs=void 0}subscribe(e,r){typeof this.subs>"u"&&(this.subs=[]);let n=e.subscribe(r);return this.subs.push(n),{unsubscribe:()=>{n&&this.subs&&nm(this.subs,n)&&(n.unsubscribe(),n=void 0)}}}get ev(){return this._ev||(this._ev=_s.create())}dispose(){if(this._ev&&this._ev.dispose(),this.subs){for(let e of this.subs)e.unsubscribe();this.subs=void 0}}},ji=class extends Ed{updateState(...e){let r=this.state,n=Mz(r,e);return n!==r?(this._state=n,!0):!1}get state(){return this._state}constructor(e){super(),this._state=e}};var Y1="4.3.0",eQ=new Date(typeof __MOLSTAR_DEBUG_TIMESTAMP__<"u"?__MOLSTAR_DEBUG_TIMESTAMP__:1716707835175);function LSe(t,e,r,n=1){t.width=Math.round(window.devicePixelRatio*n*e),t.height=Math.round(window.devicePixelRatio*n*r),Object.assign(t.style,{width:`${e}px`,height:`${r}px`})}function tQ(t,e,r=1){let n=window.innerWidth,o=window.innerHeight;e!==document.body&&(n=e.offsetWidth,o=e.offsetHeight),LSe(t,n,o,r)}function BSe(t,e,r,n){let o=atob(t.toDataURL(r,n).split(",")[1]),i=o.length,a=i>>2,s=new Uint8Array(i),l=new Uint32Array(s.buffer,0,a),c=0;for(let d=0;d{let i=a=>{a?n(a):o("no blob returned")};HTMLCanvasElement.prototype.toBlob?t.toBlob(i,e,r):BSe(t,i,e,r)})})}var oh=(()=>{class t extends ji{getIndex(r){return this.state.entries.indexOf(r)}getEntry(r){if(r)return this.entryMap.get(r)}remove(r){let n=this.entryMap.get(r);n&&(n?.image&&this.plugin.managers.asset.delete(n.image),this.entryMap.delete(r),this.updateState({current:this.state.current===r?void 0:this.state.current,entries:this.state.entries.delete(this.getIndex(n))}),this.events.changed.next(void 0))}add(r){this.entryMap.set(r.snapshot.id,r),this.updateState({current:r.snapshot.id,entries:this.state.entries.push(r)}),this.events.changed.next(void 0)}replace(r,n,o){var i,a,s;let l=this.getEntry(r);if(!l)return;this.defaultSnapshotId=void 0,l?.image&&this.plugin.managers.asset.delete(l.image);let c=this.getIndex(l),u=t.Entry(n,{key:(i=o?.key)!==null&&i!==void 0?i:l.key,name:(a=o?.name)!==null&&a!==void 0?a:l.name,description:(s=o?.description)!==null&&s!==void 0?s:l.description,image:o?.image});this.entryMap.set(n.id,u),this.updateState({current:u.snapshot.id,entries:this.state.entries.set(c,u)}),this.events.changed.next(void 0)}move(r,n){let o=this.state.entries.size;if(o<2)return;let i=this.getEntry(r);if(!i)return;let a=this.getIndex(i),s=(a+n)%o;s<0&&(s+=o);let l=this.state.entries.get(s),c=this.state.entries.asMutable();c.set(s,i),c.set(a,l),this.updateState({current:i.snapshot.id,entries:c.asImmutable()}),this.events.changed.next(void 0)}update(r,n){var o,i,a;let s=this.getIndex(r);if(s<0)return;let l=this.state.entries.set(s,U(w({},r),{key:((o=n.key)===null||o===void 0?void 0:o.trim())||void 0,name:((i=n.name)===null||i===void 0?void 0:i.trim())||void 0,description:((a=n.description)===null||a===void 0?void 0:a.trim())||void 0}));this.updateState({entries:l}),this.entryMap.set(r.snapshot.id,this.state.entries.get(s)),this.events.changed.next(void 0)}clear(){this.state.entries.size!==0&&(this.entryMap.forEach(r=>{r?.image&&this.plugin.managers.asset.delete(r.image)}),this.entryMap.clear(),this.updateState({current:void 0,entries:mm()}),this.events.changed.next(void 0))}applyKey(r){let n=this.state.entries.find(o=>o.key===r);n&&(this.updateState({current:n.snapshot.id}),this.events.changed.next(void 0),this.plugin.state.setSnapshot(n.snapshot))}setCurrent(r){let n=this.getEntry(r);return n&&(this.updateState({current:r}),this.events.changed.next(void 0)),n&&n.snapshot}getNextId(r,n){let o=this.state.entries.size;if(!r){if(o===0)return;let s=n===-1?o-1:0;return this.state.entries.get(s).snapshot.id}let i=this.getEntry(r);if(!i)return;let a=this.getIndex(i);if(!(a<0))return a=(a+n)%o,a<0&&(a+=o),this.state.entries.get(a).snapshot.id}setStateSnapshot(r){return N(this,null,function*(){r.version,Y1,this.clear();let n=mm().asMutable();for(let s of r.entries)this.entryMap.set(s.snapshot.id,s),n.push(s);let o=r.current?r.current:r.entries.length>0?r.entries[0].snapshot.id:void 0;if(this.updateState({current:o,entries:n.asImmutable(),isPlaying:!1,nextSnapshotDelayInMs:r.playback?r.playback.nextSnapshotDelayInMs:t.DefaultNextSnapshotDelayInMs}),this.events.changed.next(void 0),!o)return;let i=this.getEntry(o),a=i&&i.snapshot;if(a)return yield this.plugin.state.setSnapshot(a),r.playback&&r.playback.isPlaying&&this.play(!0),a})}syncCurrent(r){return N(this,null,function*(){var n,o;let i=this.state.entries.size===0,a=this.state.entries.size===1&&this.state.current&&this.state.current===this.defaultSnapshotId;if(!i&&!a)return;let s=this.plugin.state.getSnapshot(r?.params),l=((o=(n=r?.params)===null||n===void 0?void 0:n.image)!==null&&o!==void 0?o:this.plugin.state.snapshotParams.value.image)?yield t.getCanvasImageAsset(this.plugin,`${s.id}-image.png`):void 0;if(i)this.add(t.Entry(s,{name:r?.name,description:r?.description,image:l}));else if(a){let c=this.getEntry(this.state.current);c?.image&&this.plugin.managers.asset.delete(c.image),this.replace(this.state.current,s,{image:l})}this.defaultSnapshotId=s.id})}getStateSnapshot(r){return N(this,null,function*(){return yield this.syncCurrent(r),{timestamp:+new Date,version:Y1,name:r&&r.name,description:r&&r.description,current:this.state.current,playback:{isPlaying:!!(r&&r.playOnLoad),nextSnapshotDelayInMs:this.state.nextSnapshotDelayInMs},entries:this.state.entries.valueSeq().toArray()}})}serialize(r){return N(this,null,function*(){let n=JSON.stringify(yield this.getStateSnapshot({params:r?.params}),null,2);if(!r?.type||r.type==="json"||r.type==="molj")return new Blob([n],{type:"application/json;charset=utf-8"});{let o=new Uint8Array(DA(n));IA(o,0,n);let i={"state.json":o},a=[];for(let{asset:l,file:c}of this.plugin.managers.asset.assets)a.push([l.id,l]),i[`assets/${l.id}`]=new Uint8Array(yield c.arrayBuffer());if(a.length>0){let l=JSON.stringify(a,null,2),c=new Uint8Array(DA(l));IA(c,0,l),i["assets.json"]=c}let s=yield this.plugin.runTask(wU(i));return new Blob([s],{type:"application/zip"})}})}open(r){return N(this,null,function*(){try{let n=r.name.toLowerCase();if(n.endsWith("json")||n.endsWith("molj")){let o=yield this.plugin.runTask(Gx(r,"string")),i=JSON.parse(o);t.isStateSnapshot(i)?yield this.setStateSnapshot(i):t.isStateSnapshot(i.data)?yield this.setStateSnapshot(i.data):yield this.plugin.state.setSnapshot(i)}else{let o=yield this.plugin.runTask(Gx(r,"zip")),i=Object.create(null);ro(o,(c,u)=>{if(u==="state.json"||u==="assets.json")return;let d=u.substring(u.indexOf("/")+1);i[d]=c});let a=new File([o["state.json"]],"state.json"),s=yield this.plugin.runTask(Gx(a,"string"));if(o["assets.json"]){let c=new File([o["assets.json"]],"assets.json"),u=JSON.parse(yield this.plugin.runTask(Gx(c,"string")));for(let[d,m]of u)this.plugin.managers.asset.set(m,new File([i[d]],m.name))}let l=JSON.parse(s);yield this.setStateSnapshot(l)}this.events.opened.next(void 0)}catch(n){console.error(n),this.plugin.log.error("Error reading state")}})}play(r=!1){if(this.updateState({isPlaying:!0}),r){let n=this.getEntry(this.state.current);if(!n){this.next();return}this.events.changed.next(void 0);let o=n.snapshot,i=typeof o.durationInMs<"u"?o.durationInMs:this.state.nextSnapshotDelayInMs;this.timeoutHandle=setTimeout(this.next,i)}else this.next()}stop(){this.updateState({isPlaying:!1}),typeof this.timeoutHandle<"u"&&clearTimeout(this.timeoutHandle),this.timeoutHandle=void 0,this.events.changed.next(void 0)}togglePlay(){this.state.isPlaying?(this.stop(),this.plugin.managers.animation.stop()):this.play()}dispose(){super.dispose(),this.entryMap.clear()}constructor(r){super({current:void 0,entries:mm(),isPlaying:!1,nextSnapshotDelayInMs:t.DefaultNextSnapshotDelayInMs}),this.plugin=r,this.entryMap=new Map,this.defaultSnapshotId=void 0,this.events={changed:this.ev(),opened:this.ev()},this.timeoutHandle=void 0,this.next=()=>N(this,null,function*(){this.timeoutHandle=void 0;let n=this.getNextId(this.state.current,1);if(!n||n===this.state.current){this.stop();return}let o=this.setCurrent(n);yield this.plugin.state.setSnapshot(o);let i=typeof o.durationInMs<"u"?o.durationInMs:this.state.nextSnapshotDelayInMs;this.state.isPlaying&&(this.timeoutHandle=setTimeout(this.next,i))})}}return t.DefaultNextSnapshotDelayInMs=1500,t})();(function(t){function e(o,i){return w({timestamp:+new Date,snapshot:o},i)}t.Entry=e;function r(o){let i=o;return!!i&&!!i.timestamp&&!!i.entries}t.isStateSnapshot=r;function n(o,i){return N(this,null,function*(){if(!o.helpers.viewportScreenshot)return;let a=o.helpers.viewportScreenshot.getPreview(512);if(!a)return;let s=yield Q1(a.canvas,"png"),l=new File([s],i),c={kind:"file",id:vo.create22(),name:i};return o.managers.asset.set(c,l),c})}t.getCanvasImageAsset=n})(oh||(oh={}));function rQ(){let t=new Date,e=t.getFullYear(),r=t.getMonth()+1,n=t.getDate(),o=t.getHours(),i=t.getMinutes(),a=t.getSeconds();return e+"-"+r+"-"+n+"-"+o+"-"+i+"-"+a}function OSe(t){window.open(t,"_blank")||(window.location.href=t)}function nQ(t){try{t.dispatchEvent(new MouseEvent("click"))}catch{let r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(r)}}function zw(t,e="download"){if(t)if("download"in HTMLAnchorElement.prototype){let r=document.createElement("a");r.download=e,r.rel="noopener",typeof t=="string"?(r.href=t,nQ(r)):(r.href=URL.createObjectURL(t),setTimeout(()=>URL.revokeObjectURL(r.href),4e4),setTimeout(()=>nQ(r)))}else if(typeof navigator<"u"&&navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(t,e);else{let r=window.navigator.userAgent,n=/Safari/i.test(r),o=/CriOS\/[\d]+/.test(r),i=a=>{OSe(o?a:a.replace(/^data:[^;]*;/,"data:attachment/file;"))};if((n||o)&&FileReader)if(t instanceof Blob){let a=new FileReader;a.onloadend=()=>i(a.result),a.readAsDataURL(t)}else i(t);else{let a=URL.createObjectURL(typeof t=="string"?new Blob([t]):t);location.href=a,setTimeout(()=>URL.revokeObjectURL(a),4e4)}}}function FSe(t){oQ(t),iQ(t),aQ(t),sQ(t),lQ(t),cQ(t),uQ(t),dQ(t),mQ(t),pQ(t)}function oQ(t){t.state.events.object.created.subscribe(e=>{X.isBehavior(e.obj)&&e.obj.data.register(e.ref)}),t.state.events.object.removed.subscribe(e=>{var r,n,o,i;X.isBehavior(e.obj)&&((n=(r=e.obj.data).unregister)===null||n===void 0||n.call(r),(i=(o=e.obj.data).dispose)===null||i===void 0||i.call(o))}),t.state.events.object.updated.subscribe(e=>{var r,n,o,i;e.action==="recreate"&&(e.oldObj&&X.isBehavior(e.oldObj)&&((n=(r=e.oldObj.data).unregister)===null||n===void 0||n.call(r),(i=(o=e.oldObj.data).dispose)===null||i===void 0||i.call(o)),e.obj&&X.isBehavior(e.obj)&&e.obj.data.register(e.ref))})}function iQ(t){Re.State.SetCurrentObject.subscribe(t,({state:e,ref:r})=>e.setCurrent(r))}function aQ(t){Re.State.Update.subscribe(t,({state:e,tree:r,options:n})=>t.runTask(e.updateTree(r,n)))}function sQ(t){Re.State.ApplyAction.subscribe(t,({state:e,action:r,ref:n})=>t.runTask(e.applyAction(r.action,r.params,n)))}function lQ(t){function e(r,n){let o=r.build().delete(n);return t.runTask(r.updateTree(o))}Re.State.RemoveObject.subscribe(t,({state:r,ref:n,removeParentGhosts:o})=>{if(o){let i=r.tree,a=i.transforms.get(n);if(a.parent===n)return e(r,n);for(;;){let s=i.children.get(a.parent);if(a.parent===a.ref||s.size>1)return e(r,a.ref);let l=i.transforms.get(a.parent);if(!l.state.isGhost)return e(r,a.ref);a=l}}else return e(r,n)})}function cQ(t){Re.State.ToggleExpanded.subscribe(t,({state:e,ref:r})=>e.updateCellState(r,({isCollapsed:n})=>({isCollapsed:!n})))}function uQ(t){Re.State.ToggleVisibility.subscribe(t,({state:e,ref:r})=>Id(e,r,!e.cells.get(r).state.isHidden))}function Id(t,e,r){Nn.doPreOrder(t.tree,t.transforms.get(e),{state:t,value:r},NSe)}function NSe(t,e,r){r.state.updateCellState(t.ref,{isHidden:r.value})}function dQ(t){Re.Interactivity.Object.Highlight.subscribe(t,({state:e,ref:r})=>{if(!t.canvas3d||t.isBusy)return;t.managers.interactivity.lociHighlights.clearHighlights();let n=typeof r=="string"?[r]:r;for(let o of n){let i=e.cells.get(o);if(i){if(X.Molecule.Structure.is(i.obj))t.managers.interactivity.lociHighlights.highlight({loci:ue.Loci(i.obj.data)},!1);else if(i&&X.isRepresentation3D(i.obj)){let{repr:a}=i.obj.data;for(let s of a.getAllLoci())t.managers.interactivity.lociHighlights.highlight({loci:s,repr:a},!1)}else if(X.Molecule.Structure.Selections.is(i.obj))for(let a of i.obj.data)t.managers.interactivity.lociHighlights.highlight({loci:a.loci},!1)}}})}function mQ(t){Re.Interactivity.ClearHighlights.subscribe(t,()=>{t.managers.interactivity.lociHighlights.clearHighlights()})}function pQ(t){t.config.set(Wt.State.CurrentServer,t.config.get(Wt.State.DefaultServer)),Re.State.Snapshots.Clear.subscribe(t,()=>{t.managers.snapshot.clear()}),Re.State.Snapshots.Remove.subscribe(t,({id:e})=>{t.managers.snapshot.remove(e)}),Re.State.Snapshots.Add.subscribe(t,i=>N(this,[i],function*({key:e,name:r,description:n,params:o}){var a;let s=t.state.getSnapshot(o),l=((a=o?.image)!==null&&a!==void 0?a:t.state.snapshotParams.value.image)?yield oh.getCanvasImageAsset(t,`${s.id}-image.png`):void 0,c=oh.Entry(s,{key:e,name:r,description:n,image:l});t.managers.snapshot.add(c)})),Re.State.Snapshots.Replace.subscribe(t,n=>N(this,[n],function*({id:e,params:r}){var o;let i=t.state.getSnapshot(r),a=((o=r?.image)!==null&&o!==void 0?o:t.state.snapshotParams.value.image)?yield oh.getCanvasImageAsset(t,`${i.id}-image.png`):void 0;t.managers.snapshot.replace(e,t.state.getSnapshot(r),{image:a})})),Re.State.Snapshots.Move.subscribe(t,({id:e,dir:r})=>{t.managers.snapshot.move(e,r)}),Re.State.Snapshots.Apply.subscribe(t,({id:e})=>{let r=t.managers.snapshot.setCurrent(e);if(r)return t.state.setSnapshot(r)}),Re.State.Snapshots.Upload.subscribe(t,a=>N(this,[a],function*({name:e,description:r,playOnLoad:n,serverUrl:o,params:i}){return fetch(kf(o,`set?name=${encodeURIComponent(e||"")}&description=${encodeURIComponent(r||"")}`),{method:"POST",mode:"cors",referrer:"no-referrer",headers:{"Content-Type":"application/json; charset=utf-8"},body:JSON.stringify(yield t.managers.snapshot.getStateSnapshot({name:e,description:r,playOnLoad:n}))})})),Re.State.Snapshots.Fetch.subscribe(t,r=>N(this,[r],function*({url:e}){let n=yield t.runTask(t.fetch({url:e,type:"json"}));yield t.managers.snapshot.setStateSnapshot(n.data)})),Re.State.Snapshots.DownloadToFile.subscribe(t,o=>N(this,[o],function*({name:e,type:r,params:n}){let i=`mol-star_state_${e||rQ()}.${r==="json"?"molj":"molx"}`,a=yield t.managers.snapshot.serialize({type:r,params:n});zw(a,`${i}`)})),Re.State.Snapshots.OpenFile.subscribe(t,({file:e})=>t.managers.snapshot.open(e)),Re.State.Snapshots.OpenUrl.subscribe(t,n=>N(this,[n],function*({url:e,type:r}){let o=yield t.runTask(t.fetch({url:e,type:"binary"}));return t.managers.snapshot.open(new File([o],`state.${r}`))}))}var HR={};ua(HR,{SyncRepresentationToCanvas:()=>fQ,SyncStructureRepresentation3DState:()=>hQ,UpdateRepresentationVisibility:()=>gQ,registerDefault:()=>VSe});function VSe(t){fQ(t),hQ(t),gQ(t)}function fQ(t){let e=t.state.data.events;e.object.created.subscribe(r=>{var n;X.isRepresentation3D(r.obj)&&(jR(r.state.cells.get(r.ref),r.obj.data.repr),r.obj.data.repr.setState({syncManually:!0}),(n=t.canvas3d)===null||n===void 0||n.add(r.obj.data.repr))}),e.object.updated.subscribe(r=>{var n,o;r.oldObj&&X.isRepresentation3D(r.oldObj)&&((n=t.canvas3d)===null||n===void 0||n.remove(r.oldObj.data.repr),r.oldObj.data.repr.destroy()),X.isRepresentation3D(r.obj)&&(jR(r.state.cells.get(r.ref),r.obj.data.repr),r.action==="recreate"&&r.obj.data.repr.setState({syncManually:!0}),(o=t.canvas3d)===null||o===void 0||o.add(r.obj.data.repr))}),e.object.removed.subscribe(r=>{var n;X.isRepresentation3D(r.obj)&&((n=t.canvas3d)===null||n===void 0||n.remove(r.obj.data.repr),r.obj.data.repr.destroy())})}function hQ(t){let e=t.state.data.events;e.object.created.subscribe(r=>{var n;if(!X.Molecule.Structure.Representation3DState.is(r.obj))return;let o=r.obj.data;o.repr.setState(o.state),(n=t.canvas3d)===null||n===void 0||n.update(o.repr)}),e.object.updated.subscribe(r=>{var n;if(!X.Molecule.Structure.Representation3DState.is(r.obj))return;let o=r.obj.data;o.repr.setState(o.state),(n=t.canvas3d)===null||n===void 0||n.update(o.repr)}),e.object.removed.subscribe(r=>{var n;if(!X.Molecule.Structure.Representation3DState.is(r.obj))return;let o=r.obj.data;o.repr.setState(o.initialState),(n=t.canvas3d)===null||n===void 0||n.update(o.repr)})}function gQ(t){t.state.data.events.cell.stateUpdated.subscribe(e=>{var r;let n=e.state.cells.get(e.ref);X.isRepresentation3D(n.obj)&&jR(n,n.obj.data.repr)&&((r=t.canvas3d)===null||r===void 0||r.syncVisibility())})}function jR(t,e){return e.state.visible===!!t.state.isHidden?(e.setState({visible:!t.state.isHidden}),!0):!1}var qR={};ua(qR,{Focus:()=>bQ,OrientAxes:()=>xQ,Reset:()=>yQ,ResetAxes:()=>SQ,SetSnapshot:()=>vQ,registerDefault:()=>zSe});function zSe(t){yQ(t),bQ(t),vQ(t),xQ(t),SQ(t)}function yQ(t){Re.Camera.Reset.subscribe(t,e=>{t.managers.camera.reset(e?.snapshot,e?.durationMs)})}function vQ(t){Re.Camera.SetSnapshot.subscribe(t,({snapshot:e,durationMs:r})=>{t.managers.camera.setSnapshot(e,r)})}function bQ(t){Re.Camera.Focus.subscribe(t,({center:e,radius:r,durationMs:n})=>{t.managers.camera.focusSphere({center:e,radius:r},{durationMs:n}),t.events.canvas3d.settingsUpdated.next(void 0)})}function xQ(t){Re.Camera.OrientAxes.subscribe(t,({structures:e,durationMs:r})=>{t.managers.camera.orientAxes(e,r)})}function SQ(t){Re.Camera.ResetAxes.subscribe(t,({durationMs:e})=>{t.managers.camera.resetAxes(e)})}var oL={};ua(oL,{Canvas3DSetSettings:()=>RK,registerDefault:()=>n2e});function _n(){return _n.zero()}(function(t){function e(){return{x:0,y:0,width:0,height:0}}t.zero=e;function r(l,c,u,d){return{x:l,y:c,width:u,height:d}}t.create=r;function n(l){return w({},l)}t.clone=n;function o(l,c){return Object.assign(l,c)}t.copy=o;function i(l,c,u,d,m){return l.x=c,l.y=u,l.width=d,l.height=m,l}t.set=i;function a(l,c){return l[0]=c.x,l[1]=c.y,l[2]=c.width,l[3]=c.height,l}t.toVec4=a;function s(l,c){return l.x===c.x&&l.y===c.y&&l.width===c.width&&l.height===c.height}t.equals=s})(_n||(_n={}));var bm=at();function CQ(t,e,r,n){let{x:o,y:i,width:a,height:s}=r;at.set(bm,e[0],e[1],e[2],1),at.transformMat4(bm,bm,n);let l=bm[3];return l!==0&&(bm[0]/=l,bm[1]/=l,bm[2]/=l),t[0]=(bm[0]+1)*a*.5+o,t[1]=(bm[1]+1)*s*.5+i,t[2]=(bm[2]+1)*.5,t[3]=l===0?0:1/l,t}function kv(t,e,r,n){let{x:o,y:i,width:a,height:s}=r,l=e[0]-o,c=e[1]-i,u=e[2];return t[0]=2*l/a-1,t[1]=2*c/s-1,t[2]=2*u-1,y.transformMat4(t,t,n)}function ih(t){if(typeof t=="object"){if("buttons"in t)return t.buttons;if("which"in t){let e=t.which;if(e===2)return 4;if(e===3)return 2;if(e>0)return 1<=0)return 1<!0,pixelScale:1},na;(function(t){t.None=o();function e(i,a){return i.shift===a.shift&&i.alt===a.alt&&i.control===a.control&&i.meta===a.meta}t.areEqual=e;function r(i){return e(i,t.None)}t.areNone=r;function n(i){if(!i)return 0;let a=0;return i.shift&&a++,i.alt&&a++,i.control&&a++,i.meta&&a++,a}t.size=n;function o(i={}){return{shift:!!i.shift,alt:!!i.alt,control:!!i.control,meta:!!i.meta}}t.create=o})(na||(na={}));var yn;(function(t){t.has=Wc.has,t.create=Wc.create;let e;(function(r){r[r.None=0]="None",r[r.Primary=1]="Primary",r[r.Secondary=2]="Secondary",r[r.Auxilary=4]="Auxilary",r[r.Forth=8]="Forth",r[r.Five=16]="Five"})(e=t.Flag||(t.Flag={}))})(yn||(yn={}));var WR={key:"",code:"",modifiers:na.None,x:-1,y:-1,pageX:-1,pageY:-1,preventDefault:hs},ry=function(t){return t[t.Stopped=0]="Stopped",t[t.Started=1]="Started",t[t.Moving=2]="Moving",t}(ry||{});function wQ(){return{drag:new ln,interactionEnd:new ln,click:new ln,move:new ln,wheel:new ln,pinch:new ln,gesture:new ln,resize:new ln,leave:new ln,enter:new ln,modifiers:new ln,key:new ln,keyUp:new ln,keyDown:new ln,lock:new ln}}var USe=["Backspace","Delete"],Uw;(function(t){function e(n={}){let{noScroll:o,noContextMenu:i}=w(w({},TQ),n);return U(w({noScroll:o,noContextMenu:i,pointerLock:!1,width:0,height:0,pixelRatio:1},wQ()),{setPixelScale:hs,requestPointerLock:hs,exitPointerLock:hs,dispose:hs})}t.create=e;function r(n,o={}){let{noScroll:i,noMiddleClickScroll:a,noContextMenu:s,noPinchZoom:l,noTextSelect:c,mask:u,pixelScale:d,preventGestures:m}=w(w({},TQ),o),p=n.clientWidth*I(),h=n.clientHeight*I(),f=!1,b=_n(),v=0,x=0,S=ne(),T=ne(),E=ne(),_=ne(),D=ne(),P={shift:!1,alt:!1,control:!1,meta:!1},A={x:-1,y:-1,pageX:-1,pageY:-1};function I(){return window.devicePixelRatio*d}function k(){return w({},P)}function M(me){return me.target===document.body||me.target===n}let R=ry.Stopped,B=!1,F=yn.create(yn.Flag.None),G=yn.Flag.None,V=!1,H=!1,Q;typeof window.ResizeObserver<"u"&&(Q=new window.ResizeObserver(go));let L=wQ(),{drag:Y,interactionEnd:j,wheel:O,pinch:J,gesture:$,click:ae,move:Z,leave:se,enter:Me,resize:be,modifiers:_e,key:je,keyUp:gt,keyDown:fr,lock:Nr}=L;Zt();function Zt(){n.addEventListener("contextmenu",Qe,!1),n.addEventListener("wheel",_t,!1),n.addEventListener("mousedown",Bn,!1),window.addEventListener("mousemove",co,!1),window.addEventListener("mouseup",bn,!1),n.addEventListener("touchstart",_r,!1),n.addEventListener("touchmove",Ao,!1),n.addEventListener("touchend",qr,!1),n.addEventListener("gesturechange",On,!1),n.addEventListener("gesturestart",ho,!1),n.addEventListener("gestureend",$a,!1),window.addEventListener("blur",Ke),window.addEventListener("keyup",It,!1),window.addEventListener("keydown",Ve,!1),window.addEventListener("keypress",yt,!1),document.addEventListener("pointerlockchange",De,!1),document.addEventListener("pointerlockerror",Le,!1),Q!=null?Q.observe(n.parentElement):window.addEventListener("resize",go,!1)}function oe(){B||(B=!0,n.removeEventListener("contextmenu",Qe,!1),n.removeEventListener("wheel",_t,!1),n.removeEventListener("mousedown",Bn,!1),window.removeEventListener("mousemove",co,!1),window.removeEventListener("mouseup",bn,!1),n.removeEventListener("touchstart",_r,!1),n.removeEventListener("touchmove",Ao,!1),n.removeEventListener("touchend",qr,!1),n.removeEventListener("gesturechange",On,!1),n.removeEventListener("gesturestart",ho,!1),n.removeEventListener("gestureend",$a,!1),window.removeEventListener("blur",Ke),window.removeEventListener("keyup",It,!1),window.removeEventListener("keydown",Ve,!1),window.removeEventListener("keypress",yt,!1),document.removeEventListener("pointerlockchange",De,!1),document.removeEventListener("pointerlockerror",Le,!1),ea.remove(),Q!=null?(Q.unobserve(n.parentElement),Q.disconnect()):window.removeEventListener("resize",go,!1))}function De(){n.ownerDocument.pointerLockElement===n?f=!0:f=!1,ef(f),Nr.next(f)}function Le(){console.error("Unable to use Pointer Lock API"),f=!1,ef(f),Nr.next(f)}function Qe(me){u(me.clientX,me.clientY)&&s&&me.preventDefault()}function Ue(me){P.alt=me.altKey,P.shift=me.shiftKey,P.control=me.ctrlKey,P.meta=me.metaKey}function Ke(){(F||P.shift||P.alt||P.meta||P.control)&&(F=0,P.shift=P.alt=P.control=P.meta=!1)}function Ve(me){let Ft=!1;!P.alt&&me.altKey&&(Ft=!0,P.alt=!0),!P.shift&&me.shiftKey&&(Ft=!0,P.shift=!0),!P.control&&me.ctrlKey&&(Ft=!0,P.control=!0),!P.meta&&me.metaKey&&(Ft=!0,P.meta=!0),Ft&&V&&_e.next(k()),M(me)&&V&&fr.next(U(w({key:me.key,code:me.code,modifiers:k()},A),{preventDefault:()=>me.preventDefault()}))}function It(me){let Ft=!1;P.alt&&!me.altKey&&(Ft=!0,P.alt=!1),P.shift&&!me.shiftKey&&(Ft=!0,P.shift=!1),P.control&&!me.ctrlKey&&(Ft=!0,P.control=!1),P.meta&&!me.metaKey&&(Ft=!0,P.meta=!1),Ft&&V&&_e.next(k()),USe.includes(me.key)&&yt(me),M(me)&&V&>.next(U(w({key:me.key,code:me.code,modifiers:k()},A),{preventDefault:()=>me.preventDefault()}))}function yt(me){!M(me)||!V||je.next(U(w({key:me.key,code:me.code,modifiers:k()},A),{preventDefault:()=>me.preventDefault()}))}function pe(me){let Ft=me.touches[0],ke=me.touches[1];return{clientX:(Ft.clientX+ke.clientX)/2,clientY:(Ft.clientY+ke.clientY)/2,pageX:(Ft.pageX+ke.pageX)/2,pageY:(Ft.pageY+ke.pageY)/2,target:me.target}}function Ae(me){let Ft=me.touches[0].pageX-me.touches[1].pageX,ke=me.touches[0].pageY-me.touches[1].pageY;return Math.sqrt(Ft*Ft+ke*ke)}let $e=-1,ft,Pt=ne(),yr=ne();function Ze(me){$e<0||(ne.set(yr,me.touches[0].pageX,me.touches[0].pageY),$e+=ne.distance(Pt,yr),ne.copy(Pt,yr))}function _r(me){if(me.preventDefault(),ft=void 0,$e=-1,me.touches.length===1)$e=0,ne.set(Pt,me.touches[0].pageX,me.touches[0].pageY),ft=me.touches[0],F=G=yn.Flag.Primary,Ys(me.touches[0]);else if(me.touches.length===2){F=yn.Flag.Secondary&yn.Flag.Auxilary,G=yn.Flag.Secondary,Ys(pe(me));let Ft=Ae(me);v=Ft,J.next({distance:Ft,fraction:1,fractionDelta:0,delta:0,isStart:!0,buttons:F,button:G,modifiers:k()})}else me.touches.length===3&&(F=G=yn.Flag.Forth,Ys(pe(me)))}function qr(me){if(Ii(),ft&&$e<=4){let Ft=ft;if(!u(Ft.clientX,Ft.clientY))return;od(yr,Ft);let{pageX:ke,pageY:ot}=id(Ft),[Tt,sn]=yr;ae.next({x:Tt,y:sn,pageX:ke,pageY:ot,buttons:F,button:G,modifiers:k()})}ft=void 0}function Ao(me){if(G=yn.Flag.None,l&&(me.preventDefault(),me.stopPropagation(),me.originalEvent&&(me.originalEvent.preventDefault(),me.originalEvent.stopPropagation())),ft=void 0,me.touches.length===1)F=yn.Flag.Primary,ft=me.touches[0],Ze(me),He(me.touches[0]);else if(me.touches.length===2){let Ft=Ae(me),ke=v-Ft;if(Math.abs(ke)<4)F=yn.Flag.Secondary,He(pe(me));else{F=yn.Flag.Auxilary,Ue(me);let ot=v/Ft;J.next({delta:ke,fraction:ot,fractionDelta:x-ot,distance:Ft,isStart:!1,buttons:F,button:G,modifiers:k()}),x=ot}v=Ft}else me.touches.length===3&&(F=yn.Flag.Forth,He(pe(me)))}function Bn(me){Ue(me),F=ih(me),G=ny(me),a&&F===yn.Flag.Auxilary&&me.preventDefault,Ys(me)}function co(me){Ue(me),F=ih(me),G=yn.Flag.None,He(me)}function bn(me){Ue(me),F=ih(me),G=ny(me),Sl(me),Ii()}function Ii(){j.next(void 0)}function Ys(me){u(me.clientX,me.clientY)&&(od(T,me),ne.copy(S,T),Gc(T)&&(R=ry.Started))}function Sl(me){if(R=ry.Stopped,!!u(me.clientX,me.clientY)){if(od(E,me),!H&&ne.distance(E,S)<4){let{pageX:Ft,pageY:ke}=id(me),[ot,Tt]=E;ae.next({x:ot,y:Tt,pageX:Ft,pageY:ke,buttons:F,button:G,modifiers:k()})}H=!1}}function He(me){var Ft;od(E,me);let{pageX:ke,pageY:ot}=id(me),[Tt,sn]=E,{movementX:ca,movementY:fs}=me,Qs=Gc(E)&&u(me.clientX,me.clientY);if(V&&!Qs?se.next(void 0):!V&&Qs&&Me.next(void 0),V=Qs,A.x=Tt,A.y=sn,A.pageX=ke,A.pageY=ot,Z.next({x:Tt,y:sn,pageX:ke,pageY:ot,movementX:ca,movementY:fs,buttons:F,button:G,modifiers:k(),inside:Qs,onElement:me.target===n}),R===ry.Stopped||(c&&((Ft=me.preventDefault)===null||Ft===void 0||Ft.call(me)),ne.div(_,ne.sub(_,E,T),nd(D)),ne.magnitude(_)<1e-6))return;let Ks=R===ry.Started;if(Ks&&!u(me.clientX,me.clientY))return;ne.distance(E,S)>=4&&(H=!0);let[tf,rf]=_;Y.next({x:Tt,y:sn,dx:tf,dy:rf,pageX:ke,pageY:ot,buttons:F,button:G,modifiers:k(),isStart:Ks}),ne.copy(T,E),R=ry.Moving}function _t(me){if(!u(me.clientX,me.clientY))return;od(E,me);let{pageX:Ft,pageY:ke}=id(me),[ot,Tt]=E;i&&me.preventDefault();let sn=GSe(me);F=G=yn.Flag.Auxilary,(sn.dx||sn.dy||sn.dz)&&O.next(U(w({x:ot,y:Tt,pageX:Ft,pageY:ke},sn),{buttons:F,button:G,modifiers:k()}))}function Gt(me){var Ft,ke;m&&(me.preventDefault(),(Ft=me.stopImmediatePropagation)===null||Ft===void 0||Ft.call(me),(ke=me.stopPropagation)===null||ke===void 0||ke.call(me))}let Xt=0,Vr=0;function ho(me){Gt(me),Xt=me.scale,Vr=me.rotation,$.next({scale:me.scale,rotation:me.rotation,deltaRotation:0,deltaScale:0,isStart:!0})}function mt(me,Ft){$.next({scale:me.scale,rotation:me.rotation,deltaRotation:Vr-me.rotation,deltaScale:Xt-me.scale,isEnd:Ft}),Vr=me.rotation,Xt=me.scale}function On(me){Gt(me),mt(me)}function $a(me){Gt(me),mt(me,!0)}function go(){p=n.clientWidth*I(),h=n.clientHeight*I(),be.next({})}function Gc(me){if(n instanceof Window||n instanceof Document||n===document.body)return!0;{let Ft=n.getBoundingClientRect();return me[0]>=0&&me[1]>=0&&me[0]{d=me,p=n.clientWidth*I(),h=n.clientHeight*I()},requestPointerLock:me=>{b=me,f||n.requestPointerLock()},exitPointerLock:()=>{f&&n.ownerDocument.exitPointerLock()},dispose:oe})}t.fromElement=r})(Uw||(Uw={}));function GSe(t){let o=0,i=0,a=0,s=0,l=0;return"detail"in t&&(i=t.detail),"wheelDelta"in t&&(i=-t.wheelDelta/120),"wheelDeltaY"in t&&(i=-t.wheelDeltaY/120),"wheelDeltaX"in t&&(o=-t.wheelDeltaX/120),"axis"in t&&t.axis===t.HORIZONTAL_AXIS&&(o=i,i=0),a=o*10,s=i*10,"deltaY"in t&&(s=t.deltaY),"deltaX"in t&&(a=t.deltaX),"deltaZ"in t&&(l=t.deltaZ),(a||s||l)&&t.deltaMode&&(t.deltaMode===1?(a*=40,s*=40,l*=40):(a*=800,s*=800,l*=800)),a&&!o&&(o=a<1?-1:1),s&&!i&&(i=s<1?-1:1),{spinX:o,spinY:i,dx:a,dy:s,dz:l}}var ah=function(t){return t[t.None=0]="None",t[t.Object=1]="Object",t[t.Instance=2]="Instance",t[t.Group=3]="Group",t}(ah||{}),Gw=function(t){return t[t.None=0]="None",t[t.Depth=1]="Depth",t[t.Mask=2]="Mask",t}(Gw||{}),jw={backgroundColor:g.Color(ce(0),{description:"Background color of the 3D canvas"}),pickingAlphaThreshold:g.Numeric(.5,{min:0,max:1,step:.01},{description:"The minimum opacity value needed for an object to be pickable."}),interiorDarkening:g.Numeric(.5,{min:0,max:1,step:.01}),interiorColorFlag:g.Boolean(!0,{label:"Use Interior Color"}),interiorColor:g.Color(ce.fromNormalizedRgb(.3,.3,.3)),colorMarker:g.Boolean(!0,{description:"Enable color marker"}),highlightColor:g.Color(ce.fromNormalizedRgb(1,.4,.6)),selectColor:g.Color(ce.fromNormalizedRgb(.2,1,.1)),dimColor:g.Color(ce.fromNormalizedRgb(1,1,1)),highlightStrength:g.Numeric(.3,{min:0,max:1,step:.1}),selectStrength:g.Numeric(.3,{min:0,max:1,step:.1}),dimStrength:g.Numeric(0,{min:0,max:1,step:.1}),markerPriority:g.Select(1,[[1,"Highlight"],[2,"Select"]]),xrayEdgeFalloff:g.Numeric(1,{min:0,max:3,step:.1}),exposure:g.Numeric(1,{min:0,max:3,step:.01}),light:g.ObjectList({inclination:g.Numeric(150,{min:0,max:180,step:1}),azimuth:g.Numeric(320,{min:0,max:360,step:1}),color:g.Color(ce.fromNormalizedRgb(1,1,1)),intensity:g.Numeric(.6,{min:0,max:5,step:.01})},t=>ce.toHexString(t.color),{defaultValue:[{inclination:150,azimuth:320,color:ce.fromNormalizedRgb(1,1,1),intensity:.6}]}),ambientColor:g.Color(ce.fromNormalizedRgb(1,1,1)),ambientIntensity:g.Numeric(.4,{min:0,max:2,step:.01})},_Q=y(),XR=y();function PQ(t,e){let r=t.length,{direction:n,color:o}=e||{direction:new Array(r*3).fill(0),color:new Array(r*3).fill(0)};for(let i=0;i{var Qe,Ue,Ke;if(oe.state.disposed||!oe.state.visible||!oe.state.pickable&&De==="pick"||!up.intersectsSphere3D(k,oe.values.boundingSphere.ref.value))return;let[Ve,It]=oe.values.uLod.ref.value;if(Ve!==0||It!==0){let{center:$e,radius:ft}=oe.values.boundingSphere.ref.value,Pt=qn.distanceToPoint(A,$e);if(Pt+ftIt)return}let yt=oe.values.instanceGrid.ref.value.cellSize>1;yt||yt&&oe.values.lodLevels?oe.cull(A,k,p,r.stats):oe.uncull();let pe=!1;oe.values.dLightCount.ref.value!==l.count&&(C.update(oe.values.dLightCount,l.count),pe=!0),oe.values.dColorMarker.ref.value!==s.colorMarker&&(C.update(oe.values.dColorMarker,s.colorMarker),pe=!0),pe&&oe.update();let Ae=oe.getProgram(De);if(i.currentProgramId!==Ae.id&&(F=!0,Ae.use()),F&&(Ae.setUniforms(B),Ae.bindTextures(f,0),F=!1),oe.values.dGeometryType.ref.value==="directVolume"){if(De!=="color")return;i.disable(o.CULL_FACE),i.frontFace(o.CCW),Le===3&&(i.disable(o.DEPTH_TEST),i.depthMask(!1))}else Le===1?(i.enable(o.CULL_FACE),!((Qe=oe.values.dFlipSided)===null||Qe===void 0)&&Qe.ref.value?(i.frontFace(o.CW),i.cullFace(o.FRONT)):(i.frontFace(o.CCW),i.cullFace(o.BACK))):Le===2?(i.enable(o.CULL_FACE),!((Ue=oe.values.dFlipSided)===null||Ue===void 0)&&Ue.ref.value?(i.frontFace(o.CW),i.cullFace(o.BACK)):(i.frontFace(o.CCW),i.cullFace(o.FRONT))):(oe.values.uDoubleSided?oe.values.uDoubleSided.ref.value||oe.values.hasReflection.ref.value?i.disable(o.CULL_FACE):i.enable(o.CULL_FACE):i.disable(o.CULL_FACE),!((Ke=oe.values.dFlipSided)===null||Ke===void 0)&&Ke.ref.value?(i.frontFace(o.CW),i.cullFace(o.FRONT)):(i.frontFace(o.CCW),i.cullFace(o.BACK)));oe.render(De,f.length)},V=(oe,De)=>{C.update(R.uView,oe.view),C.update(R.uInvView,W.invert(v,oe.view)),C.update(R.uProjection,oe.projection),C.update(R.uInvProjection,W.invert(T,oe.projection)),C.updateIfChanged(R.uIsOrtho,oe.state.mode==="orthographic"?1:0),C.update(R.uViewOffset,oe.viewOffset.enabled?ne.set(I,oe.viewOffset.offsetX*16,oe.viewOffset.offsetY*16):ne.set(I,0,0)),C.update(R.uCameraPosition,y.copy(P,oe.state.position)),C.update(R.uCameraDir,y.normalize(D,y.sub(D,oe.state.target,oe.state.position))),C.updateIfChanged(R.uFar,oe.far),C.updateIfChanged(R.uNear,oe.near),C.updateIfChanged(R.uFog,oe.state.fog>0),C.updateIfChanged(R.uFogFar,oe.fogFar),C.updateIfChanged(R.uFogNear,oe.fogNear),C.updateIfChanged(R.uTransparentBackground,m),up.fromProjectionMatrix(k,oe.projectionView),qn.copy(A,k[5]),A.constant-=qn.distanceToPoint(A,P),C.update(R.uCameraPlane,qn.toArray(A,R.uCameraPlane.ref.value,0)),C.updateIfChanged(R.uMarkerAverage,De.markerAverage)},H=(oe,De,Le,Qe,Ue)=>{Bx(f,"tDepth",Le||h),C.update(R.uModel,oe.view),C.update(R.uModelView,W.mul(x,De.view,oe.view)),C.update(R.uInvModelView,W.invert(S,x)),C.update(R.uModelViewProjection,W.mul(E,x,De.projection)),C.update(R.uInvModelViewProjection,W.invert(_,E)),C.updateIfChanged(R.uRenderMask,Qe),C.updateIfChanged(R.uMarkingDepthTest,Ue),i.enable(o.SCISSOR_TEST),i.colorMask(!0,!0,!0,!0);let{x:Ke,y:Ve,width:It,height:yt}=c;i.viewport(Ke,Ve,It,yt),i.scissor(Ke,Ve,It,yt),F=!0,i.currentRenderItemId=-1},Q=function(oe){var De,Le,Qe,Ue;let Ke=Wo(oe.values.alpha.ref.value*oe.state.alphaFactor,0,1),Ve=((De=oe.values.dXrayShaded)===null||De===void 0?void 0:De.ref.value)==="on"||((Le=oe.values.dXrayShaded)===null||Le===void 0?void 0:Le.ref.value)==="inverted";return Ke===1&&oe.values.transparencyAverage.ref.value!==1&&oe.values.dGeometryType.ref.value!=="directVolume"&&((Qe=oe.values.dPointStyle)===null||Qe===void 0?void 0:Qe.ref.value)!=="fuzzy"&&!Ve||((Ue=oe.values.dTransparentBackfaces)===null||Ue===void 0?void 0:Ue.ref.value)==="opaque"},L=function(oe){var De,Le,Qe;let Ue=Wo(oe.values.alpha.ref.value*oe.state.alphaFactor,0,1),Ke=((De=oe.values.dXrayShaded)===null||De===void 0?void 0:De.ref.value)==="on"||((Le=oe.values.dXrayShaded)===null||Le===void 0?void 0:Le.ref.value)==="inverted";return Ue<1&&Ue!==0||oe.values.transparencyAverage.ref.value>0||oe.values.dGeometryType.ref.value==="directVolume"||((Qe=oe.values.dPointStyle)===null||Qe===void 0?void 0:Qe.ref.value)==="fuzzy"||oe.values.dGeometryType.ref.value==="text"||oe.values.dGeometryType.ref.value==="image"||Ke},Y=(oe,De,Le,Qe,Ue)=>{Ee&&r.timer.mark("Renderer.renderPick"),i.disable(o.BLEND),i.enable(o.DEPTH_TEST),i.depthMask(!0),H(oe,De,Qe,0,!1),C.updateIfChanged(R.uPickType,Ue);let{renderables:Ke}=oe;for(let Ve=0,It=Ke.length;Ve{Ee&&r.timer.mark("Renderer.renderDepth"),i.disable(o.BLEND),i.enable(o.DEPTH_TEST),i.depthMask(!0),H(oe,De,Le,0,!1);let{renderables:Qe}=oe;for(let Ue=0,Ke=Qe.length;Ue{Ee&&r.timer.mark("Renderer.renderDepthOpaque"),i.disable(o.BLEND),i.enable(o.DEPTH_TEST),i.depthMask(!0),H(oe,De,Le,1,!1);let{renderables:Qe}=oe;for(let Ue=0,Ke=Qe.length;Ue{Ee&&r.timer.mark("Renderer.renderDepthTransparent"),i.disable(o.BLEND),i.enable(o.DEPTH_TEST),i.depthMask(!0),H(oe,De,Le,2,!1);let{renderables:Qe}=oe;for(let Ue=0,Ke=Qe.length;Ue{Ee&&r.timer.mark("Renderer.renderMarkingDepth"),i.disable(o.BLEND),i.enable(o.DEPTH_TEST),i.depthMask(!0),H(oe,De,Le,0,!1),C.updateIfChanged(R.uMarkingType,Gw.Depth);let{renderables:Qe}=oe;for(let Ue=0,Ke=Qe.length;Ue{Ee&&r.timer.mark("Renderer.renderMarkingMask"),i.disable(o.BLEND),i.enable(o.DEPTH_TEST),i.depthMask(!0),H(oe,De,Le,0,!!Le),C.updateIfChanged(R.uMarkingType,Gw.Mask);let{renderables:Qe}=oe;for(let Ue=0,Ke=Qe.length;Ue0&&G(Qe[Ue],"marking",0);Ee&&r.timer.markEnd("Renderer.renderMarkingMask")},Z=(oe,De,Le)=>{Ee&&r.timer.mark("Renderer.renderEmissive"),i.disable(o.BLEND),i.enable(o.DEPTH_TEST),i.depthMask(!0),H(oe,De,Le,1,!1);let{renderables:Qe}=oe;for(let Ue=0,Ke=Qe.length;Ue{oe.hasOpaque&&Me(oe,De,null),oe.opacityAverage<1&&be(oe,De,null)},Me=(oe,De,Le)=>{Ee&&r.timer.mark("Renderer.renderBlendedOpaque"),i.disable(o.BLEND),i.enable(o.DEPTH_TEST),i.depthMask(!0),H(oe,De,Le,1,!1);let{renderables:Qe}=oe;for(let Ue=0,Ke=Qe.length;Ue{var Qe,Ue;Ee&&r.timer.mark("Renderer.renderBlendedTransparent"),m?i.blendFunc(o.ONE,o.ONE_MINUS_SRC_ALPHA):i.blendFuncSeparate(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA,o.ONE,o.ONE_MINUS_SRC_ALPHA),i.enable(o.BLEND),i.enable(o.DEPTH_TEST),i.depthMask(!1),H(oe,De,Le,2,!1);let{renderables:Ke}=oe;for(let Ve=0,It=Ke.length;Ve{i.enable(o.SCISSOR_TEST),i.enable(o.DEPTH_TEST),i.colorMask(!0,!0,!0,!0),i.depthMask(!0),m&&!De?i.clearColor(0,0,0,0):oe?i.clearColor(d[0],d[1],d[2],1):i.clearColor(1,1,1,1),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT)},clearDepth:(oe=!1)=>{i.enable(o.SCISSOR_TEST),oe?(i.colorMask(!0,!0,!0,!0),i.clearColor(1,1,1,1),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT)):(i.enable(o.DEPTH_TEST),i.depthMask(!0),o.clear(o.DEPTH_BUFFER_BIT))},update:V,renderPick:Y,renderDepth:j,renderDepthOpaque:O,renderDepthTransparent:J,renderMarkingDepth:$,renderMarkingMask:ae,renderEmissive:Z,renderBlended:se,renderBlendedOpaque:Me,renderBlendedTransparent:be,renderBlendedVolume:(oe,De,Le)=>{Ee&&r.timer.mark("Renderer.renderBlendedVolume"),i.blendFunc(o.ONE,o.ONE_MINUS_SRC_ALPHA),i.enable(o.BLEND),i.depthMask(!1),H(oe,De,Le,2,!1);let{renderables:Qe}=oe;for(let Ue=0,Ke=Qe.length;Ue{Ee&&r.timer.mark("Renderer.renderWboitOpaque"),i.disable(o.BLEND),i.enable(o.DEPTH_TEST),i.depthMask(!0),H(oe,De,Le,1,!1);let{renderables:Qe}=oe;for(let Ue=0,Ke=Qe.length;Ue{Ee&&r.timer.mark("Renderer.renderWboitTransparent"),H(oe,De,Le,2,!1);let{renderables:Qe}=oe;for(let Ue=0,Ke=Qe.length;Ue{Ee&&r.timer.mark("Renderer.renderDpoitOpaque"),i.disable(o.BLEND),i.enable(o.DEPTH_TEST),i.depthMask(!0),H(oe,De,Le,1,!1);let{renderables:Qe}=oe;for(let Ue=0,Ke=Qe.length;Ue{Ee&&r.timer.mark("Renderer.renderDpoitTransparent"),i.enable(o.BLEND),Bx(f,"tDpoitDepth",Qe.depth),Bx(f,"tDpoitFrontColor",Qe.frontColor),Bx(f,"tDpoitBackColor",Qe.backColor),H(oe,De,Le,2,!1);let{renderables:Ue}=oe;for(let Ke=0,Ve=Ue.length;Ke{Ee&&r.timer.mark("Renderer.renderDpoitVolume"),i.blendFunc(o.ONE,o.ONE_MINUS_SRC_ALPHA),i.enable(o.BLEND),H(oe,De,Le,2,!1);let{renderables:Qe}=oe;for(let Ue=0,Ke=Qe.length;Ue{oe.backgroundColor!==void 0&&oe.backgroundColor!==s.backgroundColor&&(s.backgroundColor=oe.backgroundColor,ce.toVec3Normalized(d,s.backgroundColor),C.update(R.uFogColor,y.copy(R.uFogColor.ref.value,d))),oe.pickingAlphaThreshold!==void 0&&oe.pickingAlphaThreshold!==s.pickingAlphaThreshold&&(s.pickingAlphaThreshold=oe.pickingAlphaThreshold,C.update(R.uPickingAlphaThreshold,s.pickingAlphaThreshold)),oe.interiorDarkening!==void 0&&oe.interiorDarkening!==s.interiorDarkening&&(s.interiorDarkening=oe.interiorDarkening,C.update(R.uInteriorDarkening,s.interiorDarkening)),oe.interiorColorFlag!==void 0&&oe.interiorColorFlag!==s.interiorColorFlag&&(s.interiorColorFlag=oe.interiorColorFlag,C.update(R.uInteriorColorFlag,s.interiorColorFlag)),oe.interiorColor!==void 0&&oe.interiorColor!==s.interiorColor&&(s.interiorColor=oe.interiorColor,C.update(R.uInteriorColor,ce.toVec3Normalized(R.uInteriorColor.ref.value,s.interiorColor))),oe.colorMarker!==void 0&&oe.colorMarker!==s.colorMarker&&(s.colorMarker=oe.colorMarker),oe.highlightColor!==void 0&&oe.highlightColor!==s.highlightColor&&(s.highlightColor=oe.highlightColor,C.update(R.uHighlightColor,ce.toVec3Normalized(R.uHighlightColor.ref.value,s.highlightColor))),oe.selectColor!==void 0&&oe.selectColor!==s.selectColor&&(s.selectColor=oe.selectColor,C.update(R.uSelectColor,ce.toVec3Normalized(R.uSelectColor.ref.value,s.selectColor))),oe.dimColor!==void 0&&oe.dimColor!==s.dimColor&&(s.dimColor=oe.dimColor,C.update(R.uDimColor,ce.toVec3Normalized(R.uDimColor.ref.value,s.dimColor))),oe.highlightStrength!==void 0&&oe.highlightStrength!==s.highlightStrength&&(s.highlightStrength=oe.highlightStrength,C.update(R.uHighlightStrength,s.highlightStrength)),oe.selectStrength!==void 0&&oe.selectStrength!==s.selectStrength&&(s.selectStrength=oe.selectStrength,C.update(R.uSelectStrength,s.selectStrength)),oe.dimStrength!==void 0&&oe.dimStrength!==s.dimStrength&&(s.dimStrength=oe.dimStrength,C.update(R.uDimStrength,s.dimStrength)),oe.markerPriority!==void 0&&oe.markerPriority!==s.markerPriority&&(s.markerPriority=oe.markerPriority,C.update(R.uMarkerPriority,s.markerPriority)),oe.xrayEdgeFalloff!==void 0&&oe.xrayEdgeFalloff!==s.xrayEdgeFalloff&&(s.xrayEdgeFalloff=oe.xrayEdgeFalloff,C.update(R.uXrayEdgeFalloff,s.xrayEdgeFalloff)),oe.exposure!==void 0&&oe.exposure!==s.exposure&&(s.exposure=oe.exposure,C.update(R.uExposure,s.exposure)),oe.light!==void 0&&!ys(oe.light,s.light)&&(s.light=oe.light,Object.assign(l,PQ(oe.light,l)),C.update(R.uLightDirection,l.direction),C.update(R.uLightColor,l.color)),oe.ambientColor!==void 0&&oe.ambientColor!==s.ambientColor&&(s.ambientColor=oe.ambientColor,y.scale(M,ce.toArrayNormalized(s.ambientColor,M,0),s.ambientIntensity),C.update(R.uAmbientColor,M)),oe.ambientIntensity!==void 0&&oe.ambientIntensity!==s.ambientIntensity&&(s.ambientIntensity=oe.ambientIntensity,y.scale(M,ce.toArrayNormalized(s.ambientColor,M,0),s.ambientIntensity),C.update(R.uAmbientColor,M))},setViewport:(oe,De,Le,Qe)=>{i.viewport(oe,De,Le,Qe),i.scissor(oe,De,Le,Qe),(oe!==c.x||De!==c.y||Le!==c.width||Qe!==c.height)&&(_n.set(c,oe,De,Le,Qe),C.update(R.uViewport,at.set(R.uViewport.ref.value,oe,De,Le,Qe)))},setTransparentBackground:oe=>{m=oe},setDrawingBufferSize:(oe,De)=>{(oe!==u[0]||De!==u[1])&&C.update(R.uDrawingBufferSize,ne.set(u,oe,De))},setPixelRatio:oe=>{C.update(R.uPixelRatio,oe)},setOcclusionTest:oe=>{p=oe},props:s,get stats(){return{programCount:r.stats.resourceCounts.program,shaderCount:r.stats.resourceCounts.shader,attributeCount:r.stats.resourceCounts.attribute,elementsCount:r.stats.resourceCounts.elements,framebufferCount:r.stats.resourceCounts.framebuffer,renderbufferCount:r.stats.resourceCounts.renderbuffer,textureCount:r.stats.resourceCounts.texture,vertexArrayCount:r.stats.resourceCounts.vertexArray,drawCount:a.drawCount,instanceCount:a.instanceCount,instancedDrawCount:a.instancedDrawCount}},get light(){return l},dispose:()=>{}}}t.create=e})(Hw||(Hw={}));function Xe(t,e="",r=""){return Xe.create(t,e,r)}(function(t){function e(u,d="",m=""){return{triggers:u,action:d,description:m}}t.create=e;function r(u){return!!u&&Array.isArray(u.triggers)&&typeof u.action=="string"}t.isBinding=r,t.Empty={triggers:[],action:"",description:""};function n(u){return u.triggers.length===0||u.triggers.every(d=>d.buttons===void 0&&d.modifiers===void 0&&!d.code)}t.isEmpty=n;function o(u,d,m){return u.triggers.some(p=>l.match(p,d,m))}t.match=o;function i(u,d,m,p){return u.triggers.some(h=>l.matchKey(h,d,m,p))}t.matchKey=i;function a(u){return u.triggers.map(l.format).join(" or ")}t.formatTriggers=a;function s(u,d=""){let m=u.description||ic(d);return Cz(m,{triggers:""+a(u)+""})}t.format=s;function l(u,d){return l.create(u,d)}t.Trigger=l;function c(u,d){return l.create(void 0,d,u)}t.TriggerKey=c,function(u){function d(f,b,v){return{buttons:f,modifiers:b,code:v}}u.create=d,u.Empty={};function m(f,b,v){let{buttons:x,modifiers:S}=f;return x!==void 0&&(x===b||yn.has(x,b))&&(!S||na.areEqual(S,v))}u.match=m;function p(f,b,v,x){let{modifiers:S,code:T}=f;return T!==void 0&&(T===b||T.length===1&&b.length===4&&b.startsWith("Key")&&!!x&&x.length===1&&x.toUpperCase()===T.toUpperCase())&&(!S||na.areEqual(S,v))}u.matchKey=p;function h(f){let b=[],v=jSe(f.buttons,f.code);v&&b.push(v);let x=qSe(f.code);x&&b.push(x);let S=HSe(f.modifiers);return S&&b.push(S),b.join(" + ")}u.format=h}(l=t.Trigger||(t.Trigger={}))})(Xe||(Xe={}));var sh=yn;function jSe(t,e){let r=[];return t===void 0&&!e?r.push("any mouse button"):t===0?r.push("mouse hover"):t!==void 0&&(sh.has(t,sh.Flag.Primary)&&r.push("left mouse button"),sh.has(t,sh.Flag.Secondary)&&r.push("right mouse button"),sh.has(t,sh.Flag.Auxilary)&&r.push("wheel/middle mouse button"),sh.has(t,sh.Flag.Forth)&&r.push("three fingers")),r.join(" + ")}function HSe(t,e){let r=[];return t?(t.alt&&r.push("alt key"),t.control&&r.push("control key"),t.meta&&r.push("meta/command key"),t.shift&&r.push("shift key"),e&&r.length===0&&r.push("no key")):e&&r.push("any key"),r.join(" + ")}function qSe(t){return t?.startsWith("Key")&&(t=t.substring(3)),t&&Di(t).toLowerCase()}var lh=yn,Tc=na,ch=Xe.Trigger,Vl=Xe.TriggerKey,EQ={dragRotate:Xe([ch(lh.Flag.Primary,Tc.create())],"Rotate","Drag using ${triggers}"),dragRotateZ:Xe([ch(lh.Flag.Primary,Tc.create({shift:!0,control:!0}))],"Rotate around z-axis (roll)","Drag using ${triggers}"),dragPan:Xe([ch(lh.Flag.Secondary,Tc.create()),ch(lh.Flag.Primary,Tc.create({control:!0}))],"Pan","Drag using ${triggers}"),dragZoom:Xe.Empty,dragFocus:Xe([ch(lh.Flag.Forth,Tc.create())],"Focus","Drag using ${triggers}"),dragFocusZoom:Xe([ch(lh.Flag.Auxilary,Tc.create())],"Focus and zoom","Drag using ${triggers}"),scrollZoom:Xe([ch(lh.Flag.Auxilary,Tc.create())],"Zoom","Scroll using ${triggers}"),scrollFocus:Xe([ch(lh.Flag.Auxilary,Tc.create({shift:!0}))],"Clip","Scroll using ${triggers}"),scrollFocusZoom:Xe.Empty,keyMoveForward:Xe([Vl("KeyW")],"Move forward","Press ${triggers}"),keyMoveBack:Xe([Vl("KeyS")],"Move back","Press ${triggers}"),keyMoveLeft:Xe([Vl("KeyA")],"Move left","Press ${triggers}"),keyMoveRight:Xe([Vl("KeyD")],"Move right","Press ${triggers}"),keyMoveUp:Xe([Vl("KeyR")],"Move up","Press ${triggers}"),keyMoveDown:Xe([Vl("KeyF")],"Move down","Press ${triggers}"),keyRollLeft:Xe([Vl("KeyQ")],"Roll left","Press ${triggers}"),keyRollRight:Xe([Vl("KeyE")],"Roll right","Press ${triggers}"),keyPitchUp:Xe([Vl("ArrowUp",Tc.create({shift:!0}))],"Pitch up","Press ${triggers}"),keyPitchDown:Xe([Vl("ArrowDown",Tc.create({shift:!0}))],"Pitch down","Press ${triggers}"),keyYawLeft:Xe([Vl("ArrowLeft",Tc.create({shift:!0}))],"Yaw left","Press ${triggers}"),keyYawRight:Xe([Vl("ArrowRight",Tc.create({shift:!0}))],"Yaw right","Press ${triggers}"),boostMove:Xe([Vl("ShiftLeft")],"Boost move","Press ${triggers}"),enablePointerLock:Xe([Vl("Space",Tc.create({control:!0}))],"Enable pointer lock","Press ${triggers}")},YR={noScroll:g.Boolean(!0,{isHidden:!0}),rotateSpeed:g.Numeric(5,{min:1,max:10,step:1}),zoomSpeed:g.Numeric(7,{min:1,max:15,step:1}),panSpeed:g.Numeric(1,{min:.1,max:5,step:.1}),moveSpeed:g.Numeric(.75,{min:.1,max:3,step:.1}),boostMoveFactor:g.Numeric(5,{min:.1,max:10,step:.1}),flyMode:g.Boolean(!1),animate:g.MappedStatic("off",{off:g.EmptyGroup(),spin:g.Group({speed:g.Numeric(1,{min:-20,max:20,step:1})},{description:"Spin the 3D scene around the x-axis in view space"}),rock:g.Group({speed:g.Numeric(.3,{min:-5,max:5,step:.1}),angle:g.Numeric(10,{min:0,max:90,step:1},{description:"How many degrees to rotate in each direction."})},{description:"Rock the 3D scene around the x-axis in view space"})}),staticMoving:g.Boolean(!0,{isHidden:!0}),dynamicDampingFactor:g.Numeric(.2,{},{isHidden:!0}),minDistance:g.Numeric(.01,{},{isHidden:!0}),maxDistance:g.Numeric(1e150,{},{isHidden:!0}),gestureScaleFactor:g.Numeric(1,{},{isHidden:!0}),maxWheelDelta:g.Numeric(.02,{},{isHidden:!0}),bindings:g.Value(EQ,{isHidden:!0}),autoAdjustMinMaxDistance:g.MappedStatic("on",{off:g.EmptyGroup(),on:g.Group({minDistanceFactor:g.Numeric(0),minDistancePadding:g.Numeric(5),maxDistanceFactor:g.Numeric(10),maxDistanceMin:g.Numeric(20)})},{isHidden:!0})};var qw;(function(t){function e(r,n,o,i={}){let a=U(w(w({},g.getDefaultValues(YR)),i),{bindings:w(w({},EQ),i.bindings)}),s=a.bindings,l=_n.clone(n.viewport),c=!1,u=r.drag.subscribe(Sl),d=r.interactionEnd.subscribe(He),m=r.wheel.subscribe(_t),p=r.pinch.subscribe(Gt),h=r.gesture.subscribe(Xt),f=r.keyDown.subscribe(ho),b=r.keyUp.subscribe(mt),v=r.move.subscribe(Vr),x=r.lock.subscribe(go),S=r.leave.subscribe(nd),T=!1,E=y(),_=y(),D=ne(),P=ne(),A=y(),I=0,k=ne(),M=ne(),R=0,B=0,F=0,G=ne(),V=ne(),H=ne(),Q=ne(),L=ne(),Y=ne(),j=y.clone(n.target),O=y.clone(n.position),J=y.clone(n.up),$=ne();function ae(ke,ot){return ne.set($,(ke-l.x)/l.width,(ot-l.y)/l.height)}let Z=ne();function se(ke,ot){return ne.set(Z,(ke-l.width*.5-l.x)/(l.width*.5),(l.height+2*(l.y-ot))/l.width)}function Me(){let ke=r.width/r.height||1;return a.rotateSpeed*r.pixelRatio*ke}let be=y(),_e=xn(),je=y(),gt=y(),fr=y(),Nr=y();function Zt(){let ke=P[0]-D[0],ot=P[1]-D[1];y.set(Nr,ke,ot,0);let Tt=y.magnitude(Nr)*Me();Tt?(y.sub(_,n.position,n.target),y.normalize(je,_),y.normalize(gt,n.up),y.normalize(fr,y.cross(fr,gt,je)),y.setMagnitude(gt,gt,ot),y.setMagnitude(fr,fr,ke),y.add(Nr,gt,fr),y.normalize(be,y.cross(be,Nr,_)),xn.setAxisAngle(_e,be,Tt),y.transformQuat(_,_,_e),y.transformQuat(n.up,n.up,_e),y.copy(A,be),I=Tt):!a.staticMoving&&I&&(I*=Math.sqrt(1-a.dynamicDampingFactor),y.sub(_,n.position,n.target),xn.setAxisAngle(_e,A,I),y.transformQuat(_,_,_e),y.transformQuat(n.up,n.up,_e)),ne.copy(D,P)}let oe=xn(),De=y();function Le(){let ke=(Ze.rollRight-Ze.rollLeft)/45,ot=(M[0]-k[0])*-Math.sign(M[1]),Tt=(M[1]-k[1])*-Math.sign(M[0]),sn=-a.rotateSpeed*(-ot+Tt)+ke;sn?(y.normalize(De,_),xn.setAxisAngle(oe,De,sn),y.transformQuat(n.up,n.up,oe),R=sn):!a.staticMoving&&R&&(R*=Math.sqrt(1-a.dynamicDampingFactor),y.normalize(De,_),xn.setAxisAngle(oe,De,R),y.transformQuat(n.up,n.up,oe)),ne.copy(k,M)}let Qe=xn(),Ue=y();function Ke(){let ke=(Ze.pitchUp-Ze.pitchDown)/(a.flyMode?360:90),ot=-a.rotateSpeed*ke;ot?(y.cross(Ue,_,n.up),y.normalize(Ue,Ue),xn.setAxisAngle(Qe,Ue,ot),y.transformQuat(_,_,Qe),y.transformQuat(n.up,n.up,Qe),B=ot):!a.staticMoving&&B&&(B*=Math.sqrt(1-a.dynamicDampingFactor),y.cross(Ue,_,n.up),y.normalize(Ue,Ue),xn.setAxisAngle(Qe,Ue,B),y.transformQuat(_,_,Qe),y.transformQuat(n.up,n.up,Qe))}let Ve=xn(),It=y();function yt(){let ke=(Ze.yawRight-Ze.yawLeft)/(a.flyMode?360:90),ot=-a.rotateSpeed*ke;ot?(y.normalize(It,n.up),xn.setAxisAngle(Ve,It,ot),y.transformQuat(_,_,Ve),y.transformQuat(n.up,n.up,Ve),F=ot):!a.staticMoving&&F&&(F*=Math.sqrt(1-a.dynamicDampingFactor),y.normalize(It,n.up),xn.setAxisAngle(Ve,It,F),y.transformQuat(_,_,Ve),y.transformQuat(n.up,n.up,Ve))}function pe(){let ke=1+(V[1]-G[1])*a.zoomSpeed;ke!==1&&ke>0&&y.scale(_,_,ke),a.staticMoving?ne.copy(G,V):G[1]+=(V[1]-G[1])*a.dynamicDampingFactor}function Ae(){let ke=(Q[1]-H[1])*a.zoomSpeed;if(ke!==0){let ot=Math.max(1,n.state.radius+n.state.radius*ke);n.setState({radius:ot})}a.staticMoving?ne.copy(H,Q):H[1]+=(Q[1]-H[1])*a.dynamicDampingFactor}let $e=ne(),ft=y(),Pt=y();function yr(){if(ne.sub($e,ne.copy($e,Y),L),ne.squaredMagnitude($e)){let ke=r.pixelRatio*a.panSpeed;$e[0]*=1/n.zoom*n.viewport.width*ke,$e[1]*=1/n.zoom*n.viewport.height*ke,y.cross(Pt,y.copy(Pt,_),n.up),y.setMagnitude(Pt,Pt,$e[0]),y.setMagnitude(ft,n.up,$e[1]),y.add(Pt,Pt,ft),y.add(n.position,n.position,Pt),y.add(n.target,n.target,Pt),a.staticMoving?ne.copy(L,Y):(ne.sub($e,Y,L),ne.scale($e,$e,a.dynamicDampingFactor),ne.add(L,L,$e))}}let Ze={moveUp:0,moveDown:0,moveLeft:0,moveRight:0,moveForward:0,moveBack:0,pitchUp:0,pitchDown:0,yawLeft:0,yawRight:0,rollLeft:0,rollRight:0,boostMove:0},_r=y(),qr=y();function Ao(ke){y.sub(qr,n.position,n.target);let ot=Math.max(n.state.minNear,a.minDistance);y.setMagnitude(qr,qr,ot);let Tt=ke*(60/1e3)*a.moveSpeed*(Ze.boostMove===1?a.boostMoveFactor:1);if(Ze.moveForward===1&&(y.normalize(_r,qr),y.scaleAndSub(n.position,n.position,_r,Tt),(a.flyMode||r.pointerLock)&&y.sub(n.target,n.position,qr)),Ze.moveBack===1&&(y.normalize(_r,qr),y.scaleAndAdd(n.position,n.position,_r,Tt),(a.flyMode||r.pointerLock)&&y.sub(n.target,n.position,qr)),Ze.moveLeft===1&&(y.cross(_r,qr,n.up),y.normalize(_r,_r),a.flyMode||r.pointerLock?(y.scaleAndAdd(n.position,n.position,_r,Tt),y.sub(n.target,n.position,qr)):(y.scaleAndSub(n.position,n.position,_r,Tt),y.sub(n.target,n.position,_))),Ze.moveRight===1&&(y.cross(_r,qr,n.up),y.normalize(_r,_r),a.flyMode||r.pointerLock?(y.scaleAndSub(n.position,n.position,_r,Tt),y.sub(n.target,n.position,qr)):(y.scaleAndAdd(n.position,n.position,_r,Tt),y.sub(n.target,n.position,_))),Ze.moveUp===1&&(y.normalize(_r,n.up),a.flyMode||r.pointerLock?(y.scaleAndAdd(n.position,n.position,_r,Tt),y.sub(n.target,n.position,qr)):(y.scaleAndSub(n.position,n.position,_r,Tt),y.sub(n.target,n.position,_))),Ze.moveDown===1&&(y.normalize(_r,n.up),a.flyMode||r.pointerLock?(y.scaleAndSub(n.position,n.position,_r,Tt),y.sub(n.target,n.position,qr)):(y.scaleAndAdd(n.position,n.position,_r,Tt),y.sub(n.target,n.position,_))),a.flyMode||r.pointerLock){let sn=y.distance(n.position,o.boundingSphereVisible.center);n.setState({minFar:sn+o.boundingSphereVisible.radius})}}function Bn(){let ke=Math.min(Math.max(n.state.radiusMax*1e3,.01),a.maxDistance);y.squaredMagnitude(_)>ke*ke&&(y.setMagnitude(_,_,ke),y.add(n.position,n.target,_),ne.copy(G,V),ne.copy(H,Q)),y.squaredMagnitude(_)l.x+l.width||r.height-ot>l.y+l.height||ke0&&(a.animate.name==="spin"?oc(ot):a.animate.name==="rock"&&ef(ot)),y.sub(_,n.position,n.target),Zt(),Le(),Ke(),yt(),pe(),Ae(),yr(),y.add(n.position,n.target,_),Bn(),bn>0&&Ao(Math.min(ot,15*1e3/60)),y.sub(_,n.position,n.target),Bn(),y.squaredDistance(E,n.position)>1e-6&&y.copy(E,n.position),bn=ke}function Ys(){y.copy(n.target,j),y.copy(n.position,O),y.copy(n.up,J),y.sub(_,n.position,n.target),y.copy(E,n.position)}function Sl({x:ke,y:ot,pageX:Tt,pageY:sn,buttons:ca,modifiers:fs,isStart:Qs}){let Ks=co(ke,ot);if(Qs&&Ks||!Qs&&!T)return;T=!0,me();let tf=Xe.match(s.dragRotate,ca,fs),rf=Xe.match(s.dragRotateZ,ca,fs),i0=Xe.match(s.dragPan,ca,fs),a0=Xe.match(s.dragZoom,ca,fs),s0=Xe.match(s.dragFocus,ca,fs),bg=Xe.match(s.dragFocusZoom,ca,fs);se(Tt,sn),ae(Tt,sn);let l0=r.pixelRatio,c0=(ke*l0-l.width/2-l.x)/l.width,u0=-(r.height-ot*l0-l.height/2-l.y)/l.height;if(Qs&&(tf&&(ne.copy(P,Z),ne.copy(D,P)),rf&&(ne.set(M,c0,u0),ne.copy(k,M)),(a0||bg)&&(ne.copy(G,$),ne.copy(V,G)),s0&&(ne.copy(H,$),ne.copy(Q,H)),i0&&(ne.copy(L,$),ne.copy(Y,L))),tf&&ne.copy(P,Z),rf&&ne.set(M,c0,u0),(a0||bg)&&ne.copy(V,$),s0&&ne.copy(Q,$),bg){let xg=y.distance(n.state.position,n.state.target);n.setState({radius:xg/5})}i0&&ne.copy(Y,$)}function He(){T=!1}function _t({x:ke,y:ot,spinX:Tt,spinY:sn,dz:ca,buttons:fs,modifiers:Qs}){if(co(ke,ot))return;let Ks=vz(Tt*.075,sn*.075,ca*1e-4);Ks<-a.maxWheelDelta?Ks=-a.maxWheelDelta:Ks>a.maxWheelDelta&&(Ks=a.maxWheelDelta),Xe.match(s.scrollZoom,fs,Qs)&&(V[1]+=Ks),Xe.match(s.scrollFocus,fs,Qs)&&(Q[1]+=Ks)}function Gt({fractionDelta:ke,buttons:ot,modifiers:Tt}){Xe.match(s.scrollZoom,ot,Tt)&&(T=!0,V[1]+=a.gestureScaleFactor*ke)}function Xt({deltaScale:ke}){T=!0,V[1]+=a.gestureScaleFactor*ke}function Vr({movementX:ke,movementY:ot}){if(!r.pointerLock||ke===void 0||ot===void 0)return;let Tt=l.width*.5-l.x,sn=l.height*.5-l.y;ne.copy(D,se(Tt,sn)),ne.copy(P,se(ke+Tt,ot+sn))}function ho({modifiers:ke,code:ot,key:Tt,x:sn,y:ca}){co(sn,ca)||(Xe.matchKey(s.keyMoveForward,ot,ke,Tt)?Ze.moveForward=1:Xe.matchKey(s.keyMoveBack,ot,ke,Tt)?Ze.moveBack=1:Xe.matchKey(s.keyMoveLeft,ot,ke,Tt)?Ze.moveLeft=1:Xe.matchKey(s.keyMoveRight,ot,ke,Tt)?Ze.moveRight=1:Xe.matchKey(s.keyMoveUp,ot,ke,Tt)?Ze.moveUp=1:Xe.matchKey(s.keyMoveDown,ot,ke,Tt)?Ze.moveDown=1:Xe.matchKey(s.keyRollLeft,ot,ke,Tt)?Ze.rollLeft=1:Xe.matchKey(s.keyRollRight,ot,ke,Tt)?Ze.rollRight=1:Xe.matchKey(s.keyPitchUp,ot,ke,Tt)?Ze.pitchUp=1:Xe.matchKey(s.keyPitchDown,ot,ke,Tt)?Ze.pitchDown=1:Xe.matchKey(s.keyYawLeft,ot,ke,Tt)?Ze.yawLeft=1:Xe.matchKey(s.keyYawRight,ot,ke,Tt)&&(Ze.yawRight=1),Xe.matchKey(s.boostMove,ot,ke,Tt)&&(Ze.boostMove=1),Xe.matchKey(s.enablePointerLock,ot,ke,Tt)&&r.requestPointerLock(l))}function mt({modifiers:ke,code:ot,key:Tt,x:sn,y:ca}){var fs,Qs,Ks,tf,rf,i0,a0,s0,bg,l0,c0,u0;if(co(sn,ca))return;let xg=!1;ot.startsWith("Alt")?(xg=!0,ke.alt=!0):ot.startsWith("Shift")?(xg=!0,ke.shift=!0):ot.startsWith("Control")?(xg=!0,ke.control=!0):ot.startsWith("Meta")&&(xg=!0,ke.meta=!0);let Cl=[];xg?(Ze.moveForward&&Cl.push(((fs=s.keyMoveForward.triggers[0])===null||fs===void 0?void 0:fs.code)||""),Ze.moveBack&&Cl.push(((Qs=s.keyMoveBack.triggers[0])===null||Qs===void 0?void 0:Qs.code)||""),Ze.moveLeft&&Cl.push(((Ks=s.keyMoveLeft.triggers[0])===null||Ks===void 0?void 0:Ks.code)||""),Ze.moveRight&&Cl.push(((tf=s.keyMoveRight.triggers[0])===null||tf===void 0?void 0:tf.code)||""),Ze.moveUp&&Cl.push(((rf=s.keyMoveUp.triggers[0])===null||rf===void 0?void 0:rf.code)||""),Ze.moveDown&&Cl.push(((i0=s.keyMoveDown.triggers[0])===null||i0===void 0?void 0:i0.code)||""),Ze.rollLeft&&Cl.push(((a0=s.keyRollLeft.triggers[0])===null||a0===void 0?void 0:a0.code)||""),Ze.rollRight&&Cl.push(((s0=s.keyRollRight.triggers[0])===null||s0===void 0?void 0:s0.code)||""),Ze.pitchUp&&Cl.push(((bg=s.keyPitchUp.triggers[0])===null||bg===void 0?void 0:bg.code)||""),Ze.pitchDown&&Cl.push(((l0=s.keyPitchDown.triggers[0])===null||l0===void 0?void 0:l0.code)||""),Ze.yawLeft&&Cl.push(((c0=s.keyYawLeft.triggers[0])===null||c0===void 0?void 0:c0.code)||""),Ze.yawRight&&Cl.push(((u0=s.keyYawRight.triggers[0])===null||u0===void 0?void 0:u0.code)||"")):Cl.push(ot);for(let jc of Cl)Xe.matchKey(s.keyMoveForward,jc,ke,Tt)?Ze.moveForward=0:Xe.matchKey(s.keyMoveBack,jc,ke,Tt)?Ze.moveBack=0:Xe.matchKey(s.keyMoveLeft,jc,ke,Tt)?Ze.moveLeft=0:Xe.matchKey(s.keyMoveRight,jc,ke,Tt)?Ze.moveRight=0:Xe.matchKey(s.keyMoveUp,jc,ke,Tt)?Ze.moveUp=0:Xe.matchKey(s.keyMoveDown,jc,ke,Tt)?Ze.moveDown=0:Xe.matchKey(s.keyRollLeft,jc,ke,Tt)?Ze.rollLeft=0:Xe.matchKey(s.keyRollRight,jc,ke,Tt)?Ze.rollRight=0:Xe.matchKey(s.keyPitchUp,jc,ke,Tt)?Ze.pitchUp=0:Xe.matchKey(s.keyPitchDown,jc,ke,Tt)?Ze.pitchDown=0:Xe.matchKey(s.keyYawLeft,jc,ke,Tt)?Ze.yawLeft=0:Xe.matchKey(s.keyYawRight,jc,ke,Tt)&&(Ze.yawRight=0);Xe.matchKey(s.boostMove,ot,ke,Tt)&&(Ze.boostMove=0)}function On(){y.sub(qr,n.position,n.target);let ke=Math.max(n.state.minNear,a.minDistance);y.setMagnitude(qr,qr,ke),y.sub(n.target,n.position,qr);let ot=y.distance(n.position,o.boundingSphereVisible.center);n.setState({minFar:ot+o.boundingSphereVisible.radius})}function $a(){let{center:ke,radius:ot}=o.boundingSphereVisible;if(y.distance(n.position,ke)>ot){let sn=n.getFocus(ke,ot);n.setState(U(w({},sn),{minFar:0}))}else n.setState({minFar:0,radius:o.boundingSphereVisible.radius})}function go(ke){ke?On():$a()}function Gc(){Ze.moveForward=0,Ze.moveBack=0,Ze.moveLeft=0,Ze.moveRight=0,Ze.moveUp=0,Ze.moveDown=0,Ze.rollLeft=0,Ze.rollRight=0,Ze.pitchUp=0,Ze.pitchDown=0,Ze.yawLeft=0,Ze.yawRight=0,Ze.boostMove=0}function nd(){Gc()}function od(){c||(c=!0,u.unsubscribe(),m.unsubscribe(),p.unsubscribe(),h.unsubscribe(),d.unsubscribe(),f.unsubscribe(),b.unsubscribe(),v.unsubscribe(),x.unsubscribe(),S.unsubscribe())}let id=ne.create(.005,0);function oc(ke){if(a.animate.name!=="spin"||a.animate.params.speed===0||T)return;let ot=a.animate.params.speed/1e3;id[0]=60*Math.min(Math.abs(ke),1e3/8)/1e3*ot,ne.add(P,D,id)}let ea=0,vg=ne.create(.005,0);function ef(ke){if(a.animate.name!=="rock"||a.animate.params.speed===0||T)return;let ot=ke/1e3*a.animate.params.speed,Tt=or(a.animate.params.angle)/Me(),sn=Math.sin(ea*Math.PI*2)*Tt,ca=Math.sin((ea+ot)*Math.PI*2)*Tt;vg[0]=ca-sn,ne.add(P,D,vg),ea+=ot,ea>=1&&(ea=0)}function me(){ea=0}function Ft(ke){bn=-1,Ii(ke)}return{viewport:l,get isAnimating(){return a.animate.name!=="off"},get isMoving(){return Ze.moveForward===1||Ze.moveBack===1||Ze.moveLeft===1||Ze.moveRight===1||Ze.moveUp===1||Ze.moveDown===1||Ze.rollLeft===1||Ze.rollRight===1||Ze.pitchUp===1||Ze.pitchDown===1||Ze.yawLeft===1||Ze.yawRight===1},get props(){return a},setProps:ke=>{var ot;((ot=ke.animate)===null||ot===void 0?void 0:ot.name)==="rock"&&a.animate.name!=="rock"&&me(),ke.flyMode!==void 0&&ke.flyMode!==a.flyMode&&(ke.flyMode?On():$a()),Object.assign(a,ke),Object.assign(s,ke.bindings)},start:Ft,update:Ii,reset:Ys,dispose:od}}t.create=e})(qw||(qw={}));var $1;(function(t){function e(){return{view:W.identity(),position:y.create(0,0,0),direction:y.create(0,0,-1),up:y.create(0,1,0)}}t.create=e;let r=y.zero();function n(o){y.add(r,o.position,o.direction),W.lookAt(o.view,o.position,r,o.up)}t.update=n})($1||($1={}));var Ww=class{constructor(){this.removeList=Ox(),this.removeMap=new Map,this.addList=Ox(),this.addMap=new Map}get isEmpty(){return this.removeList.count===0&&this.addList.count===0}get size(){return this.removeMap.size+this.addMap.size}add(e){if(this.removeMap.has(e)){let n=this.removeMap.get(e);this.removeMap.delete(e),this.removeList.remove(n)}if(this.addMap.has(e))return;let r=this.addList.addLast(e);this.addMap.set(e,r)}remove(e){if(this.addMap.has(e)){let n=this.addMap.get(e);this.addMap.delete(e),this.addList.remove(n)}if(this.removeMap.has(e))return;let r=this.removeList.addLast(e);this.removeMap.set(e,r)}tryGetRemove(){let e=this.removeList.removeFirst();return e&&this.removeMap.delete(e),e}tryGetAdd(){let e=this.addList.removeFirst();return e&&this.addMap.delete(e),e}};var Z1=new Zs("98");function IQ(t,e,r){Z1.reset();for(let n=0,o=t.length;nY)return!1}for(;;){let J=R.tryGetAdd();if(!J)break;if(A(J),++O%k===0&&ko()-j>Y)return!1}return i.sort(WSe),m=!0,p=!0,h=!0,f=!0,!0}let R=new Ww,B=-1;function F(){let Y=23;for(let j=0,O=i.length;j0?j/Y:0}function H(){if(l.length===0)return 0;let Y=0,j=0;for(let O=0,J=l.length;O0?j/Y:0}function Q(){var Y,j;if(l.length===0)return 0;let O=0,J=0;for(let $=0,ae=l.length;$0?J/O:0}function L(){var Y;if(l.length===0)return!1;for(let j=0,O=l.length;j{n=Y;for(let j=0,O=i.length;jR.add(Y),remove:Y=>R.remove(Y),commit:(Y=Number.MAX_VALUE)=>M(Y),get commitQueueSize(){return R.size},get needsCommit(){return!R.isEmpty},has:Y=>o.has(Y),clear:()=>{for(let Y=0,j=i.length;Y{o.forEach(Y)},get count(){return i.length},get boundingSphere(){return u&&(IQ(i,a,!1),u=!1),a},get boundingSphereVisible(){return d&&(IQ(i,s,!0),d=!1),s},get markerAverage(){return m&&(b=V(),m=!1),b},get emissiveAverage(){return p&&(v=H(),p=!1),v},get opacityAverage(){return h&&(x=Q(),h=!1),x},get hasOpaque(){return f&&(S=L(),f=!1),S}}}t.create=e})(xm||(xm={}));var Mv=class t{get source(){return this._source}get target(){return this._target}apply(e,r=0,n){if((!this.inTransition||r>0)&&an.copySnapshot(this._source,this.camera.state),this.inTransition||an.copySnapshot(this._target,this.camera.state),an.copySnapshot(this._target,e),this._target.radius>this._target.radiusMax&&(this._target.radius=this._target.radiusMax),this._target.radius<.01&&(this._target.radius=.01),this._target.radiusMax<.01&&(this._target.radiusMax=.01),!this.inTransition&&r<=0||typeof e.mode<"u"&&e.mode!==this.camera.state.mode){this.finish(this._target);return}this.inTransition=!0,this.func=n||t.defaultTransition,(!this.inTransition||r>0)&&(this.start=this.t,this.durationMs=r)}tick(e){this.t=e,this.update()}finish(e){an.copySnapshot(this.camera.state,e),this.inTransition=!1}update(){if(!this.inTransition)return;let e=Math.min((this.t-this.start)/this.durationMs,1);if(e===1){this.finish(this._target);return}this.func(this._current,e,this._source,this._target),an.copySnapshot(this.camera.state,this._current)}constructor(e){this.camera=e,this.t=0,this.func=t.defaultTransition,this.start=0,this.inTransition=!1,this.durationMs=0,this._source=an.createDefaultSnapshot(),this._target=an.createDefaultSnapshot(),this._current=an.createDefaultSnapshot()}};(function(t){let e=xn.identity();function r(n,o,i,a){an.copySnapshot(n,a),xn.slerp(e,xn.Identity,xn.rotationTo(e,i.up,a.up),o),y.transformQuat(n.up,i.up,e),y.lerp(n.target,i.target,a.target,o),y.lerp(n.position,i.position,a.position,o),n.radius=fn(i.radius,a.radius,o),n.radiusMax=fn(i.radiusMax,a.radiusMax,o),n.fov=fn(i.fov,a.fov,o),n.fog=fn(i.fog,a.fog,o)}t.defaultTransition=r})(Mv||(Mv={}));var DQ=y(),AQ=y(),Xw=at(),an=class t{get position(){return this.state.position}set position(e){y.copy(this.state.position,e)}get up(){return this.state.up}set up(e){y.copy(this.state.up,e)}get target(){return this.state.target}set target(e){y.copy(this.state.target,e)}update(){let e=this.state;if(e.radiusMax===0)return!1;let r=2*Math.tan(e.fov/2)*y.distance(e.position,e.target);switch(this.zoom=this.viewport.height/r,QSe(this),this.state.mode){case"orthographic":XSe(this);break;case"perspective":YSe(this);break;default:ur(this.state.mode)}let n=!W.areEqual(this.projection,this.prevProjection,1e-6)||!W.areEqual(this.view,this.prevView,1e-6);if(n){if(W.mul(this.projectionView,this.projection,this.view),!W.tryInvert(this.inverseProjectionView,this.projectionView))return W.copy(this.view,this.prevView),W.copy(this.projection,this.prevProjection),W.mul(this.projectionView,this.projection,this.view),!1;W.copy(this.prevView,this.view),W.copy(this.prevProjection,this.projection)}return n}setState(e,r){this.transition.apply(e,r),this.stateChanged.next(e)}getSnapshot(){return t.copySnapshot(t.createDefaultSnapshot(),this.state)}getTargetDistance(e){return t.targetDistance(e,this.state.mode,this.state.fov,this.viewport.width,this.viewport.height)}getFocus(e,r,n,o,i){var a,s;let l=Math.max(r,.01),c=this.getTargetDistance(l);y.sub(this.deltaDirection,(a=i?.target)!==null&&a!==void 0?a:this.target,(s=i?.position)!==null&&s!==void 0?s:this.position),o&&y.matchDirection(this.deltaDirection,o,this.deltaDirection),y.setMagnitude(this.deltaDirection,this.deltaDirection,c),y.sub(this.newPosition,e,this.deltaDirection);let u=t.copySnapshot(t.createDefaultSnapshot(),this.state);return u.target=y.clone(e),u.radius=l,u.position=y.clone(this.newPosition),n&&y.matchDirection(u.up,n,u.up),u}getCenter(e,r){y.sub(this.deltaDirection,this.target,this.position),y.sub(this.newPosition,e,this.deltaDirection);let n=t.copySnapshot(t.createDefaultSnapshot(),this.state);return n.target=y.clone(e),n.position=y.clone(this.newPosition),r&&(n.radius=Math.max(r,.01)),n}getInvariantFocus(e,r,n,o){let i=Math.max(r,.01),a=this.getTargetDistance(i);y.copy(this.deltaDirection,o),y.setMagnitude(this.deltaDirection,this.deltaDirection,a),y.sub(this.newPosition,e,this.deltaDirection);let s=t.copySnapshot(t.createDefaultSnapshot(),this.state);return s.target=y.clone(e),s.radius=i,s.position=y.clone(this.newPosition),y.copy(s.up,n),s}focus(e,r,n,o,i){r>0&&this.setState(this.getFocus(e,r,o,i),n)}center(e,r){this.setState(this.getCenter(e),r)}project(e,r){return CQ(e,r,this.viewport,this.projectionView)}unproject(e,r){return kv(e,r,this.viewport,this.inverseProjectionView)}getPixelSize(e){return this.project(Xw,e),this.unproject(DQ,Xw),Xw[0]+=1,this.unproject(AQ,Xw),y.distance(DQ,AQ)}constructor(e,r=_n.create(0,0,128,128)){this.view=W.identity(),this.projection=W.identity(),this.projectionView=W.identity(),this.inverseProjectionView=W.identity(),this.state=t.createDefaultSnapshot(),this.viewOffset=t.ViewOffset(),this.near=1,this.far=1e4,this.fogNear=5e3,this.fogFar=1e4,this.zoom=1,this.transition=new Mv(this),this.stateChanged=new da(this.state),this.prevProjection=W.identity(),this.prevView=W.identity(),this.deltaDirection=y(),this.newPosition=y(),this.viewport=r,t.copySnapshot(this.state,e)}};(function(t){function e(){return{enabled:!1,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}}t.ViewOffset=e;function r(l,c,u,d,m,p,h){l.fullWidth=c,l.fullHeight=u,l.offsetX=d,l.offsetY=m,l.width=p,l.height=h}t.setViewOffset=r;function n(l,c){l.enabled=c.enabled,l.fullWidth=c.fullWidth,l.fullHeight=c.fullHeight,l.offsetX=c.offsetX,l.offsetY=c.offsetY,l.width=c.width,l.height=c.height}t.copyViewOffset=n;function o(l,c,u,d,m){let p=Math.max(l,.01),h=d/m,f=m{let i=this.objectsData.get(o),a=Yw(this.scene,n.values.boundingSphere.ref.value,i,ut.tomato,JSe);a&&this.objectsData.set(o,a);let s=this.instancesData.get(o),l=Yw(this.scene,n.values.invariantBoundingSphere.ref.value,s,ut.skyblue,eCe,{aTransform:o.values.aTransform,matrix:o.values.matrix,transform:o.values.transform,extraTransform:o.values.extraTransform,uInstanceCount:o.values.uInstanceCount,instanceCount:o.values.instanceCount,aInstance:o.values.aInstance,hasReflection:o.values.hasReflection,instanceGrid:o.values.instanceGrid});l&&this.instancesData.set(o,l)}),this.objectsData.forEach((n,o)=>{this.parent.has(o)||(this.scene.remove(n.renderObject),this.objectsData.delete(o))}),this.instancesData.forEach((n,o)=>{this.parent.has(o)||(this.scene.remove(n.renderObject),this.instancesData.delete(o))}),this.scene.update(void 0,!1),this.scene.commit()}syncVisibility(){this.sceneData&&(this.sceneData.renderObject.state.visible=this._props.sceneBoundingSpheres),this.visibleSceneData&&(this.visibleSceneData.renderObject.state.visible=this._props.visibleSceneBoundingSpheres),this.parent.forEach((e,r)=>{let n=this.objectsData.get(r);n&&(n.renderObject.state.visible=r.state.visible&&this._props.objectBoundingSpheres);let o=this.instancesData.get(r);o&&(o.renderObject.state.visible=r.state.visible&&this._props.instanceBoundingSpheres)})}clear(){this.sceneData=void 0,this.objectsData.clear(),this.scene.clear()}get isEnabled(){return this._props.sceneBoundingSpheres||this._props.visibleSceneBoundingSpheres||this._props.objectBoundingSpheres||this._props.instanceBoundingSpheres}get props(){return this._props}setProps(e){Object.assign(this._props,e),this.isEnabled&&this.update()}};function Yw(t,e,r,n,o,i){if(!r||!te.equals(r.boundingSphere,e)){let a=KSe(e,r&&r.mesh),s=r?r.renderObject:tCe(a,n,o,i);return r?C.updateIfChanged(s.values.drawCount,eo.getDrawCount(a)):t.add(s),{boundingSphere:te.clone(e),renderObject:s,mesh:a}}}function KSe(t,e){let n=Sd(2),o=Te.createState(n,n/2,e);if(t.radius&&(Jt(o,t.center,t.radius,2),te.hasExtrema(t)))for(let i of t.extrema)Jt(o,i,1,0);return Te.getMesh(o)}var $Se=rl(),ZSe=rl(),JSe=rl(),eCe=rl();function tCe(t,e,r,n){let o=Be.Utils.createValuesSimple(t,{alpha:.1,doubleSided:!1,cellSize:0,batchSize:0},e,1,n);return tu("mesh",o,{disposed:!1,visible:!0,alphaFactor:1,pickable:!1,colorOnly:!1,opaque:!1,writeDepth:!1},r)}var oy=function(t){return t[t.Move=0]="Move",t[t.Click=1]="Click",t[t.Drag=2]="Drag",t}(oy||{}),QR=y(),KR=y(),kQ=y(),$R={maxFps:g.Numeric(30,{min:10,max:60,step:10}),preferAtomPixelPadding:g.Numeric(3,{min:0,max:20,step:1},{description:"Number of extra pixels at which to prefer atoms over bonds."})},Kw=class{setProps(e){Object.assign(this.props,e)}identify(e,r){let n=this.startX!==this.endX||this.startY!==this.endY||this.input.pointerLock&&!this.controls.isMoving;if(e===oy.Drag){n&&!this.outsideViewport(this.startX,this.startY)&&(this.events.drag.next({current:this.prevLoci,buttons:this.buttons,button:this.button,modifiers:this.modifiers,pageStart:ne.create(this.startX,this.startY),pageEnd:ne.create(this.endX,this.endY)}),this.startX=this.endX,this.startY=this.endY);return}if(n){let i=this.canvasIdentify(this.endX,this.endY);this.id=i?.id,this.position=i?.position,this.startX=this.endX,this.startY=this.endY}if(e===oy.Click){let i=this.getLoci(this.id,this.position);this.events.click.next({current:i,buttons:this.buttons,button:this.button,modifiers:this.modifiers,page:ne.create(this.endX,this.endY),position:this.position}),this.prevLoci=i;return}if(!this.inside||this.currentIdentifyT!==r||!n||this.outsideViewport(this.endX,this.endY))return;let o=this.getLoci(this.id,this.position);this.events.hover.next({current:o,buttons:this.buttons,button:this.button,modifiers:this.modifiers,page:ne.create(this.endX,this.endY),position:this.position}),this.prevLoci=o}tick(e){this.inside&&e-this.prevT>1e3/this.props.maxFps&&(this.prevT=e,this.currentIdentifyT=e,this.identify(this.isInteracting?oy.Drag:oy.Move,e))}leave(){this.inside=!1,rt.Loci.isEmpty(this.prevLoci)||(this.prevLoci=rt.Loci.Empty,this.events.hover.next({current:this.prevLoci,buttons:this.buttons,button:this.button,modifiers:this.modifiers}))}move(e,r,n,o,i){this.inside=!0,this.buttons=n,this.button=o,this.modifiers=i,this.endX=e,this.endY=r}click(e,r,n,o,i){this.endX=e,this.endY=r,this.buttons=n,this.button=o,this.modifiers=i,this.identify(oy.Click,0)}drag(e,r,n,o,i){this.endX=e,this.endY=r,this.buttons=n,this.button=o,this.modifiers=i,this.identify(oy.Drag,0)}modify(e){na.areEqual(e,this.modifiers)||(this.modifiers=e,this.events.hover.next({current:this.prevLoci,buttons:this.buttons,button:this.button,modifiers:this.modifiers,page:ne.create(this.endX,this.endY),position:this.position}))}outsideViewport(e,r){let{input:n,camera:{viewport:o}}=this;return e*=n.pixelRatio,r*=n.pixelRatio,e>o.x+o.width||n.height-r>o.y+o.height||e{this.isInteracting=!0,this.drag(s,l,c,u,d)}),n.move.subscribe(({x:s,y:l,inside:c,buttons:u,button:d,modifiers:m,onElement:p})=>{if(!(!c||this.isInteracting)){if(!p){this.leave();return}this.move(s,l,u,d,m)}}),n.leave.subscribe(()=>{this.leave()}),n.click.subscribe(({x:s,y:l,buttons:c,button:u,modifiers:d})=>{this.outsideViewport(s,l)||this.click(s,l,c,u,d)}),n.interactionEnd.subscribe(()=>{this.isInteracting=!1}),n.modifiers.subscribe(s=>{this.modify(s)})}};var MQ=` +precision highp float; +precision highp int; +precision highp sampler2D; + +uniform sampler2D tDepthOpaque; +uniform sampler2D tDepthTransparent; +uniform vec2 uTexSize; + +uniform float uNear; +uniform float uFar; +uniform mat4 uInvProjection; + +uniform float uOutlineThreshold; + +#include common + +float getViewZ(const in float depth) { + #if dOrthographic == 1 + return orthographicDepthToViewZ(depth, uNear, uFar); + #else + return perspectiveDepthToViewZ(depth, uNear, uFar); + #endif +} + +float getDepthOpaque(const in vec2 coords) { + #ifdef depthTextureSupport + return texture2D(tDepthOpaque, coords).r; + #else + return unpackRGBAToDepth(texture2D(tDepthOpaque, coords)); + #endif +} + +float getDepthTransparent(const in vec2 coords) { + #ifdef dTransparentOutline + return unpackRGBAToDepth(texture2D(tDepthTransparent, coords)); + #else + return 1.0; + #endif +} + +bool isBackground(const in float depth) { + return depth == 1.0; +} + +float getPixelSize(const in vec2 coords, const in float depth) { + vec3 viewPos0 = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection); + vec3 viewPos1 = screenSpaceToViewSpace(vec3(coords + vec2(1.0, 0.0) / uTexSize, depth), uInvProjection); + return distance(viewPos0, viewPos1); +} + +void main(void) { + float backgroundViewZ = 2.0 * uFar; + + vec2 coords = gl_FragCoord.xy / uTexSize; + vec2 invTexSize = 1.0 / uTexSize; + + float selfDepthOpaque = getDepthOpaque(coords); + float selfViewZOpaque = isBackground(selfDepthOpaque) ? backgroundViewZ : getViewZ(selfDepthOpaque); + float pixelSizeOpaque = getPixelSize(coords, selfDepthOpaque) * uOutlineThreshold; + + float selfDepthTransparent = getDepthTransparent(coords); + float selfViewZTransparent = isBackground(selfDepthTransparent) ? backgroundViewZ : getViewZ(selfDepthTransparent); + float pixelSizeTransparent = getPixelSize(coords, selfDepthTransparent) * uOutlineThreshold; + + float outline = 1.0; + float bestDepth = 1.0; + float transparentFlag = 0.0; + + for (int y = -1; y <= 1; y++) { + for (int x = -1; x <= 1; x++) { + vec2 sampleCoords = coords + vec2(float(x), float(y)) * invTexSize; + + float sampleDepthOpaque = getDepthOpaque(sampleCoords); + float sampleDepthTransparent = getDepthTransparent(sampleCoords); + + float sampleViewZOpaque = isBackground(sampleDepthOpaque) ? backgroundViewZ : getViewZ(sampleDepthOpaque); + if (abs(selfViewZOpaque - sampleViewZOpaque) > pixelSizeOpaque && selfDepthOpaque > sampleDepthOpaque && sampleDepthOpaque <= bestDepth) { + outline = 0.0; + bestDepth = sampleDepthOpaque; + } + + if (sampleDepthTransparent < sampleDepthOpaque) { + float sampleViewZTransparent = isBackground(sampleDepthTransparent) ? backgroundViewZ : getViewZ(sampleDepthTransparent); + if (abs(selfViewZTransparent - sampleViewZTransparent) > pixelSizeTransparent && selfDepthTransparent > sampleDepthTransparent && sampleDepthTransparent <= bestDepth) { + outline = 0.0; + bestDepth = sampleDepthTransparent; + transparentFlag = 1.0; + } + } + } + } + + gl_FragColor = vec4(outline, packUnitIntervalToRG(bestDepth), transparentFlag); +} +`;var RQ=` +precision highp float; +precision highp int; +precision highp sampler2D; + +#include common + +uniform sampler2D tDepth; +uniform sampler2D tDepthHalf; +uniform sampler2D tDepthQuarter; +uniform vec2 uTexSize; +uniform vec4 uBounds; + +uniform vec3 uSamples[dNSamples]; + +uniform mat4 uProjection; +uniform mat4 uInvProjection; + +#ifdef dMultiScale + uniform float uLevelRadius[dLevels]; + uniform float uLevelBias[dLevels]; + uniform float uNearThreshold; + uniform float uFarThreshold; +#else + uniform float uRadius; +#endif +uniform float uBias; + +float smootherstep(float edge0, float edge1, float x) { + x = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); + return x * x * x * (x * (x * 6.0 - 15.0) + 10.0); +} + +float noise(const in vec2 coords) { + float a = 12.9898; + float b = 78.233; + float c = 43758.5453; + float dt = dot(coords, vec2(a,b)); + float sn = mod(dt, PI); + return abs(fract(sin(sn) * c)); // is abs necessary? +} + +vec2 getNoiseVec2(const in vec2 coords) { + return vec2(noise(coords), noise(coords + vec2(PI, 2.71828))); +} + +bool isBackground(const in float depth) { + return depth == 1.0; +} + +float getDepth(const in vec2 coords) { + vec2 c = vec2(clamp(coords.x, uBounds.x, uBounds.z), clamp(coords.y, uBounds.y, uBounds.w)); + #ifdef depthTextureSupport + return texture2D(tDepth, c).r; + #else + return unpackRGBAToDepth(texture2D(tDepth, c)); + #endif +} + +#define dQuarterThreshold 0.1 +#define dHalfThreshold 0.05 + +float getMappedDepth(const in vec2 coords, const in vec2 selfCoords) { + vec2 c = vec2(clamp(coords.x, uBounds.x, uBounds.z), clamp(coords.y, uBounds.y, uBounds.w)); + float d = distance(coords, selfCoords); + #ifdef depthTextureSupport + if (d > dQuarterThreshold) { + return texture2D(tDepthQuarter, c).r; + } else if (d > dHalfThreshold) { + return texture2D(tDepthHalf, c).r; + } else { + return texture2D(tDepth, c).r; + } + #else + if (d > dQuarterThreshold) { + return unpackRGBAToDepth(texture2D(tDepthQuarter, c)); + } else if (d > dHalfThreshold) { + return unpackRGBAToDepth(texture2D(tDepthHalf, c)); + } else { + return unpackRGBAToDepth(texture2D(tDepth, c)); + } + #endif +} + +// adapted from https://gist.github.com/bgolus/a07ed65602c009d5e2f753826e8078a0 +vec3 viewNormalAtPixelPositionAccurate(vec2 vpos) { + // current pixel's depth + float c = getDepth(vpos); + + // get current pixel's view space position + vec3 viewSpacePos_c = screenSpaceToViewSpace(vec3(vpos, c), uInvProjection); + + // get view space position at 1 pixel offsets in each major direction + vec3 viewSpacePos_l = screenSpaceToViewSpace(vec3(vpos + vec2(-1.0, 0.0) / uTexSize, getDepth(vpos + vec2(-1.0, 0.0) / uTexSize)), uInvProjection); + vec3 viewSpacePos_r = screenSpaceToViewSpace(vec3(vpos + vec2( 1.0, 0.0) / uTexSize, getDepth(vpos + vec2( 1.0, 0.0) / uTexSize)), uInvProjection); + vec3 viewSpacePos_d = screenSpaceToViewSpace(vec3(vpos + vec2( 0.0,-1.0) / uTexSize, getDepth(vpos + vec2( 0.0,-1.0) / uTexSize)), uInvProjection); + vec3 viewSpacePos_u = screenSpaceToViewSpace(vec3(vpos + vec2( 0.0, 1.0) / uTexSize, getDepth(vpos + vec2( 0.0, 1.0) / uTexSize)), uInvProjection); + + // get the difference between the current and each offset position + vec3 l = viewSpacePos_c - viewSpacePos_l; + vec3 r = viewSpacePos_r - viewSpacePos_c; + vec3 d = viewSpacePos_c - viewSpacePos_d; + vec3 u = viewSpacePos_u - viewSpacePos_c; + + // get depth values at 1 & 2 pixels offsets from current along the horizontal axis + vec4 H = vec4( + getDepth(vpos + vec2(-1.0, 0.0) / uTexSize), + getDepth(vpos + vec2( 1.0, 0.0) / uTexSize), + getDepth(vpos + vec2(-2.0, 0.0) / uTexSize), + getDepth(vpos + vec2( 2.0, 0.0) / uTexSize) + ); + + // get depth values at 1 & 2 pixels offsets from current along the vertical axis + vec4 V = vec4( + getDepth(vpos + vec2(0.0,-1.0) / uTexSize), + getDepth(vpos + vec2(0.0, 1.0) / uTexSize), + getDepth(vpos + vec2(0.0,-2.0) / uTexSize), + getDepth(vpos + vec2(0.0, 2.0) / uTexSize) + ); + + // current pixel's depth difference from slope of offset depth samples + // differs from original article because we're using non-linear depth values + // see article's comments + vec2 he = abs((2.0 * H.xy - H.zw) - c); + vec2 ve = abs((2.0 * V.xy - V.zw) - c); + + // pick horizontal and vertical diff with the smallest depth difference from slopes + vec3 hDeriv = he.x < he.y ? l : r; + vec3 vDeriv = ve.x < ve.y ? d : u; + + // get view space normal from the cross product of the best derivatives + vec3 viewNormal = normalize(cross(hDeriv, vDeriv)); + + return viewNormal; +} + +float getPixelSize(const in vec2 coords, const in float depth) { + vec3 viewPos0 = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection); + vec3 viewPos1 = screenSpaceToViewSpace(vec3(coords + vec2(1.0, 0.0) / uTexSize, depth), uInvProjection); + return distance(viewPos0, viewPos1); +} + +// StarCraft II Ambient Occlusion by [Filion and McNaughton 2008] +void main(void) { + vec2 invTexSize = 1.0 / uTexSize; + vec2 selfCoords = gl_FragCoord.xy * invTexSize; + + float selfDepth = getDepth(selfCoords); + vec2 selfPackedDepth = packUnitIntervalToRG(selfDepth); + + if (isBackground(selfDepth)) { + gl_FragColor = vec4(packUnitIntervalToRG(1.0), selfPackedDepth); + return; + } + + vec3 selfViewNormal = viewNormalAtPixelPositionAccurate(selfCoords); + vec3 selfViewPos = screenSpaceToViewSpace(vec3(selfCoords, selfDepth), uInvProjection); + + vec3 randomVec = normalize(vec3(getNoiseVec2(selfCoords) * 2.0 - 1.0, 0.0)); + vec3 tangent = normalize(randomVec - selfViewNormal * dot(randomVec, selfViewNormal)); + vec3 bitangent = cross(selfViewNormal, tangent); + mat3 TBN = mat3(tangent, bitangent, selfViewNormal); + + float occlusion = 0.0; + #ifdef dMultiScale + float pixelSize = getPixelSize(selfCoords, selfDepth); + + for(int l = 0; l < dLevels; l++) { + // TODO: smooth transition + if (pixelSize * uNearThreshold > uLevelRadius[l]) continue; + if (pixelSize * uFarThreshold < uLevelRadius[l]) continue; + + float levelOcclusion = 0.0; + for(int i = 0; i < dNSamples; i++) { + // get sample position: + vec3 sampleViewPos = TBN * uSamples[i]; + sampleViewPos = selfViewPos + sampleViewPos * uLevelRadius[l]; + + // project sample position: + vec4 offset = vec4(sampleViewPos, 1.0); + offset = uProjection * offset; + offset.xyz = (offset.xyz / offset.w) * 0.5 + 0.5; + + // get sample depth: + float sampleDepth = getMappedDepth(offset.xy, selfCoords); + float sampleViewZ = screenSpaceToViewSpace(vec3(offset.xy, sampleDepth), uInvProjection).z; + levelOcclusion += step(sampleViewPos.z + 0.025, sampleViewZ) * smootherstep(0.0, 1.0, uLevelRadius[l] / abs(selfViewPos.z - sampleViewZ)) * uLevelBias[l]; + } + occlusion = max(occlusion, levelOcclusion); + } + #else + for(int i = 0; i < dNSamples; i++) { + vec3 sampleViewPos = TBN * uSamples[i]; + sampleViewPos = selfViewPos + sampleViewPos * uRadius; + + vec4 offset = vec4(sampleViewPos, 1.0); + offset = uProjection * offset; + offset.xyz = (offset.xyz / offset.w) * 0.5 + 0.5; + + float sampleDepth = getMappedDepth(offset.xy, selfCoords); + float sampleViewZ = screenSpaceToViewSpace(vec3(offset.xy, sampleDepth), uInvProjection).z; + + occlusion += step(sampleViewPos.z + 0.025, sampleViewZ) * smootherstep(0.0, 1.0, uRadius / abs(selfViewPos.z - sampleViewZ)); + } + #endif + occlusion = 1.0 - (uBias * occlusion / float(dNSamples)); + + vec2 packedOcclusion = packUnitIntervalToRG(clamp(occlusion, 0.01, 1.0)); + + gl_FragColor = vec4(packedOcclusion, selfPackedDepth); +} +`;var LQ=` +precision highp float; +precision highp int; +precision highp sampler2D; + +uniform sampler2D tSsaoDepth; +uniform vec2 uTexSize; +uniform vec4 uBounds; + +uniform float uKernel[dOcclusionKernelSize]; + +uniform float uBlurDirectionX; +uniform float uBlurDirectionY; + +uniform mat4 uInvProjection; +uniform float uNear; +uniform float uFar; + +#include common + +float getViewZ(const in float depth) { + #if dOrthographic == 1 + return orthographicDepthToViewZ(depth, uNear, uFar); + #else + return perspectiveDepthToViewZ(depth, uNear, uFar); + #endif +} + +bool isBackground(const in float depth) { + return depth == 1.0; +} + +bool outsideBounds(const in vec2 p) { + return p.x < uBounds.x || p.y < uBounds.y || p.x > uBounds.z || p.y > uBounds.w; +} + +float getPixelSize(const in vec2 coords, const in float depth) { + vec3 viewPos0 = screenSpaceToViewSpace(vec3(coords, depth), uInvProjection); + vec3 viewPos1 = screenSpaceToViewSpace(vec3(coords + vec2(1.0, 0.0) / uTexSize, depth), uInvProjection); + return distance(viewPos0, viewPos1); +} + +void main(void) { + vec2 coords = gl_FragCoord.xy / uTexSize; + + vec2 packedDepth = texture2D(tSsaoDepth, coords).zw; + + if (outsideBounds(coords)) { + gl_FragColor = vec4(packUnitIntervalToRG(1.0), packedDepth); + return; + } + + float selfDepth = unpackRGToUnitInterval(packedDepth); + // if background and if second pass + if (isBackground(selfDepth) && uBlurDirectionY != 0.0) { + gl_FragColor = vec4(packUnitIntervalToRG(1.0), packedDepth); + return; + } + + float selfViewZ = getViewZ(selfDepth); + float pixelSize = getPixelSize(coords, selfDepth); + // max diff depth between two pixels + float maxDiffViewZ = 1.0; + + vec2 offset = vec2(uBlurDirectionX, uBlurDirectionY) / uTexSize; + + float sum = 0.0; + float kernelSum = 0.0; + // only if kernelSize is odd + for (int i = -dOcclusionKernelSize / 2; i <= dOcclusionKernelSize / 2; i++) { + if (abs(float(i)) > 1.0 && abs(float(i)) * pixelSize > 0.8) continue; + + vec2 sampleCoords = coords + float(i) * offset; + if (outsideBounds(sampleCoords)) { + continue; + } + + vec4 sampleSsaoDepth = texture2D(tSsaoDepth, sampleCoords); + + float sampleDepth = unpackRGToUnitInterval(sampleSsaoDepth.zw); + if (isBackground(sampleDepth)) { + continue; + } + + float sampleViewZ = getViewZ(sampleDepth); + if (abs(selfViewZ - sampleViewZ) > maxDiffViewZ) { + continue; + } + + float kernel = uKernel[int(abs(float(i)))]; // abs is not defined for int in webgl1 + float sampleValue = unpackRGToUnitInterval(sampleSsaoDepth.xy); + + sum += kernel * sampleValue; + kernelSum += kernel; + } + gl_FragColor = vec4(packUnitIntervalToRG(sum / kernelSum), packedDepth); +} +`;var BQ=` +precision highp float; +precision highp int; +precision highp sampler2D; + +uniform sampler2D tSsaoDepth; +uniform sampler2D tColor; +uniform sampler2D tDepthOpaque; +uniform sampler2D tDepthTransparent; +uniform sampler2D tShadows; +uniform sampler2D tOutlines; +uniform vec2 uTexSize; + +uniform float uNear; +uniform float uFar; +uniform float uFogNear; +uniform float uFogFar; +uniform vec3 uFogColor; +uniform vec3 uOutlineColor; +uniform vec3 uOcclusionColor; +uniform bool uTransparentBackground; +uniform vec2 uOcclusionOffset; + +#include common + +float getViewZ(const in float depth) { + #if dOrthographic == 1 + return orthographicDepthToViewZ(depth, uNear, uFar); + #else + return perspectiveDepthToViewZ(depth, uNear, uFar); + #endif +} + +float getDepthOpaque(const in vec2 coords) { + #ifdef depthTextureSupport + return texture2D(tDepthOpaque, coords).r; + #else + return unpackRGBAToDepth(texture2D(tDepthOpaque, coords)); + #endif +} + +float getDepthTransparent(const in vec2 coords) { + #ifdef dTransparentOutline + return unpackRGBAToDepth(texture2D(tDepthTransparent, coords)); + #else + return 1.0; + #endif +} + +bool isBackground(const in float depth) { + return depth == 1.0; +} + +float getOutline(const in vec2 coords, const in float opaqueDepth, out float closestTexel) { + float backgroundViewZ = 2.0 * uFar; + vec2 invTexSize = 1.0 / uTexSize; + + float transparentDepth = getDepthTransparent(coords); + float opaqueSelfViewZ = isBackground(opaqueDepth) ? backgroundViewZ : getViewZ(opaqueDepth); + float transparentSelfViewZ = isBackground(transparentDepth) ? backgroundViewZ : getViewZ(transparentDepth); + float selfDepth = min(opaqueDepth, transparentDepth); + + float outline = 1.0; + closestTexel = 1.0; + for (int y = -dOutlineScale; y <= dOutlineScale; y++) { + for (int x = -dOutlineScale; x <= dOutlineScale; x++) { + if (x * x + y * y > dOutlineScale * dOutlineScale) { + continue; + } + + vec2 sampleCoords = coords + vec2(float(x), float(y)) * invTexSize; + + vec4 sampleOutlineCombined = texture2D(tOutlines, sampleCoords); + float sampleOutline = sampleOutlineCombined.r; + float sampleOutlineDepth = unpackRGToUnitInterval(sampleOutlineCombined.gb); + float sampleOutlineViewZ = isBackground(sampleOutlineDepth) ? backgroundViewZ : getViewZ(sampleOutlineDepth); + + float selfViewZ = sampleOutlineCombined.a == 0.0 ? opaqueSelfViewZ : transparentSelfViewZ; + if (sampleOutline == 0.0 && sampleOutlineDepth < closestTexel) { + outline = 0.0; + closestTexel = sampleOutlineDepth; + } + } + } + return closestTexel < opaqueDepth ? outline : 1.0; +} + +float getSsao(vec2 coords) { + float rawSsao = unpackRGToUnitInterval(texture2D(tSsaoDepth, coords).xy); + if (rawSsao > 0.999) { + return 1.0; + } else if (rawSsao > 0.001) { + return rawSsao; + } + // treat values close to 0.0 as errors and return no occlusion + return 1.0; +} + +void main(void) { + vec2 coords = gl_FragCoord.xy / uTexSize; + vec4 color = texture2D(tColor, coords); + + float viewDist; + float fogFactor; + float opaqueDepth = getDepthOpaque(coords); + + #ifdef dOcclusionEnable + if (!isBackground(opaqueDepth)) { + viewDist = abs(getViewZ(opaqueDepth)); + fogFactor = smoothstep(uFogNear, uFogFar, viewDist); + float occlusionFactor = getSsao(coords + uOcclusionOffset); + if (!uTransparentBackground) { + color.rgb = mix(mix(uOcclusionColor, uFogColor, fogFactor), color.rgb, occlusionFactor); + } else { + color.rgb = mix(uOcclusionColor * (1.0 - fogFactor), color.rgb, occlusionFactor); + } + } + #endif + + #ifdef dShadowEnable + if (!isBackground(opaqueDepth)) { + viewDist = abs(getViewZ(opaqueDepth)); + fogFactor = smoothstep(uFogNear, uFogFar, viewDist); + vec4 shadow = texture2D(tShadows, coords); + if (!uTransparentBackground) { + color.rgb = mix(mix(vec3(0), uFogColor, fogFactor), color.rgb, shadow.a); + } else { + color.rgb = mix(vec3(0) * (1.0 - fogFactor), color.rgb, shadow.a); + } + } + #endif + + // outline needs to be handled after occlusion and shadow to keep them clean + #ifdef dOutlineEnable + float closestTexel; + float outline = getOutline(coords, opaqueDepth, closestTexel); + if (outline == 0.0) { + viewDist = abs(getViewZ(closestTexel)); + fogFactor = smoothstep(uFogNear, uFogFar, viewDist); + if (!uTransparentBackground) { + color.rgb = mix(uOutlineColor, uFogColor, fogFactor); + } else { + color.a = 1.0 - fogFactor; + color.rgb = mix(uOutlineColor, color.rgb, fogFactor); + } + } + #endif + + gl_FragColor = color; +} +`;var OQ=` +precision highp float; +precision highp int; +precision highp sampler2D; + +uniform sampler2D tColor; +uniform vec2 uTexSizeInv; + +// adapted from https://github.com/kosua20/Rendu +// MIT License Copyright (c) 2017 Simon Rodriguez + +#define QUALITY(q) ((q) < 5 ? 1.0 : ((q) > 5 ? ((q) < 10 ? 2.0 : ((q) < 11 ? 4.0 : 8.0)) : 1.5)) + +float rgb2luma(vec3 rgb){ + return sqrt(dot(rgb, vec3(0.299, 0.587, 0.114))); +} + +float sampleLuma(vec2 uv) { + return rgb2luma(texture2D(tColor, uv).rgb); +} + +float sampleLuma(vec2 uv, float uOffset, float vOffset) { + uv += uTexSizeInv * vec2(uOffset, vOffset); + return sampleLuma(uv); +} + +void main(void) { + vec2 coords = gl_FragCoord.xy * uTexSizeInv; + vec2 inverseScreenSize = uTexSizeInv; + + vec4 colorCenter = texture2D(tColor, coords); + + // Luma at the current fragment + float lumaCenter = rgb2luma(colorCenter.rgb); + + // Luma at the four direct neighbours of the current fragment. + float lumaDown = sampleLuma(coords, 0.0, -1.0); + float lumaUp = sampleLuma(coords, 0.0, 1.0); + float lumaLeft = sampleLuma(coords, -1.0, 0.0); + float lumaRight = sampleLuma(coords, 1.0, 0.0); + + // Find the maximum and minimum luma around the current fragment. + float lumaMin = min(lumaCenter, min(min(lumaDown, lumaUp), min(lumaLeft, lumaRight))); + float lumaMax = max(lumaCenter, max(max(lumaDown, lumaUp), max(lumaLeft, lumaRight))); + + // Compute the delta. + float lumaRange = lumaMax - lumaMin; + + // If the luma variation is lower that a threshold (or if we are in a really dark area), + // we are not on an edge, don't perform any AA. + if (lumaRange < max(dEdgeThresholdMin, lumaMax * dEdgeThresholdMax)) { + gl_FragColor = colorCenter; + return; + } + + // Query the 4 remaining corners lumas. + float lumaDownLeft = sampleLuma(coords, -1.0, -1.0); + float lumaUpRight = sampleLuma(coords, 1.0, 1.0); + float lumaUpLeft = sampleLuma(coords, -1.0, 1.0); + float lumaDownRight = sampleLuma(coords, 1.0, -1.0); + + // Combine the four edges lumas (using intermediary variables for future computations + // with the same values). + float lumaDownUp = lumaDown + lumaUp; + float lumaLeftRight = lumaLeft + lumaRight; + + // Same for corners + float lumaLeftCorners = lumaDownLeft + lumaUpLeft; + float lumaDownCorners = lumaDownLeft + lumaDownRight; + float lumaRightCorners = lumaDownRight + lumaUpRight; + float lumaUpCorners = lumaUpRight + lumaUpLeft; + + // Compute an estimation of the gradient along the horizontal and vertical axis. + float edgeHorizontal = abs(-2.0 * lumaLeft + lumaLeftCorners) + abs(-2.0 * lumaCenter + lumaDownUp) * 2.0 + abs(-2.0 * lumaRight + lumaRightCorners); + float edgeVertical = abs(-2.0 * lumaUp + lumaUpCorners) + abs(-2.0 * lumaCenter + lumaLeftRight) * 2.0 + abs(-2.0 * lumaDown + lumaDownCorners); + + // Is the local edge horizontal or vertical ? + bool isHorizontal = (edgeHorizontal >= edgeVertical); + + // Choose the step size (one pixel) accordingly. + float stepLength = isHorizontal ? inverseScreenSize.y : inverseScreenSize.x; + + // Select the two neighboring texels lumas in the opposite direction to the local edge. + float luma1 = isHorizontal ? lumaDown : lumaLeft; + float luma2 = isHorizontal ? lumaUp : lumaRight; + // Compute gradients in this direction. + float gradient1 = luma1 - lumaCenter; + float gradient2 = luma2 - lumaCenter; + + // Which direction is the steepest ? + bool is1Steepest = abs(gradient1) >= abs(gradient2); + + // Gradient in the corresponding direction, normalized. + float gradientScaled = 0.25 * max(abs(gradient1), abs(gradient2)); + + // Average luma in the correct direction. + float lumaLocalAverage = 0.0; + if(is1Steepest){ + // Switch the direction + stepLength = -stepLength; + lumaLocalAverage = 0.5 * (luma1 + lumaCenter); + } else { + lumaLocalAverage = 0.5 * (luma2 + lumaCenter); + } + + // Shift UV in the correct direction by half a pixel. + vec2 currentUv = coords; + if(isHorizontal){ + currentUv.y += stepLength * 0.5; + } else { + currentUv.x += stepLength * 0.5; + } + + // Compute offset (for each iteration step) in the right direction. + vec2 offset = isHorizontal ? vec2(inverseScreenSize.x, 0.0) : vec2(0.0, inverseScreenSize.y); + // Compute UVs to explore on each side of the edge, orthogonally. + // The QUALITY allows us to step faster. + vec2 uv1 = currentUv - offset * QUALITY(0); + vec2 uv2 = currentUv + offset * QUALITY(0); + + // Read the lumas at both current extremities of the exploration segment, + // and compute the delta wrt to the local average luma. + float lumaEnd1 = sampleLuma(uv1); + float lumaEnd2 = sampleLuma(uv2); + lumaEnd1 -= lumaLocalAverage; + lumaEnd2 -= lumaLocalAverage; + + // If the luma deltas at the current extremities is larger than the local gradient, + // we have reached the side of the edge. + bool reached1 = abs(lumaEnd1) >= gradientScaled; + bool reached2 = abs(lumaEnd2) >= gradientScaled; + bool reachedBoth = reached1 && reached2; + + // If the side is not reached, we continue to explore in this direction. + if(!reached1){ + uv1 -= offset * QUALITY(1); + } + if(!reached2){ + uv2 += offset * QUALITY(1); + } + + // If both sides have not been reached, continue to explore. + if(!reachedBoth){ + for(int i = 2; i < dIterations; i++){ + // If needed, read luma in 1st direction, compute delta. + if(!reached1){ + lumaEnd1 = sampleLuma(uv1); + lumaEnd1 = lumaEnd1 - lumaLocalAverage; + } + // If needed, read luma in opposite direction, compute delta. + if(!reached2){ + lumaEnd2 = sampleLuma(uv2); + lumaEnd2 = lumaEnd2 - lumaLocalAverage; + } + // If the luma deltas at the current extremities is larger than the local gradient, + // we have reached the side of the edge. + reached1 = abs(lumaEnd1) >= gradientScaled; + reached2 = abs(lumaEnd2) >= gradientScaled; + reachedBoth = reached1 && reached2; + + // If the side is not reached, we continue to explore in this direction, + // with a variable quality. + if(!reached1){ + uv1 -= offset * QUALITY(i); + } + if(!reached2){ + uv2 += offset * QUALITY(i); + } + + // If both sides have been reached, stop the exploration. + if(reachedBoth){ + break; + } + } + } + + // Compute the distances to each side edge of the edge (!). + float distance1 = isHorizontal ? (coords.x - uv1.x) : (coords.y - uv1.y); + float distance2 = isHorizontal ? (uv2.x - coords.x) : (uv2.y - coords.y); + + // In which direction is the side of the edge closer ? + bool isDirection1 = distance1 < distance2; + float distanceFinal = min(distance1, distance2); + + // Thickness of the edge. + float edgeThickness = (distance1 + distance2); + + // Is the luma at center smaller than the local average ? + bool isLumaCenterSmaller = lumaCenter < lumaLocalAverage; + + // If the luma at center is smaller than at its neighbour, + // the delta luma at each end should be positive (same variation). + bool correctVariation1 = (lumaEnd1 < 0.0) != isLumaCenterSmaller; + bool correctVariation2 = (lumaEnd2 < 0.0) != isLumaCenterSmaller; + + // Only keep the result in the direction of the closer side of the edge. + bool correctVariation = isDirection1 ? correctVariation1 : correctVariation2; + + // UV offset: read in the direction of the closest side of the edge. + float pixelOffset = - distanceFinal / edgeThickness + 0.5; + + // If the luma variation is incorrect, do not offset. + float finalOffset = correctVariation ? pixelOffset : 0.0; + + // Sub-pixel shifting + // Full weighted average of the luma over the 3x3 neighborhood. + float lumaAverage = (1.0 / 12.0) * (2.0 * (lumaDownUp + lumaLeftRight) + lumaLeftCorners + lumaRightCorners); + // Ratio of the delta between the global average and the center luma, + // over the luma range in the 3x3 neighborhood. + float subPixelOffset1 = clamp(abs(lumaAverage - lumaCenter) / lumaRange, 0.0, 1.0); + float subPixelOffset2 = (-2.0 * subPixelOffset1 + 3.0) * subPixelOffset1 * subPixelOffset1; + // Compute a sub-pixel offset based on this delta. + float subPixelOffsetFinal = subPixelOffset2 * subPixelOffset2 * float(dSubpixelQuality); + + // Pick the biggest of the two offsets. + finalOffset = max(finalOffset, subPixelOffsetFinal); + + // Compute the final UV coordinates. + vec2 finalUv = coords; + if(isHorizontal){ + finalUv.y += finalOffset * stepLength; + } else { + finalUv.x += finalOffset * stepLength; + } + + // Read the color at the new UV coordinates, and use it. + gl_FragColor = texture2D(tColor, finalUv); +} +`;var FQ={edgeThresholdMin:g.Numeric(.0312,{min:.0312,max:.0833,step:1e-4},{description:"Trims the algorithm from processing darks."}),edgeThresholdMax:g.Numeric(.063,{min:.063,max:.333,step:.001},{description:"The minimum amount of local contrast required to apply algorithm."}),iterations:g.Numeric(12,{min:0,max:16,step:1},{description:"Number of edge exploration steps."}),subpixelQuality:g.Numeric(.3,{min:0,max:1,step:.01},{description:"Choose the amount of sub-pixel aliasing removal."})},$w=class{constructor(e,r){this.webgl=e,this.renderable=oCe(e,r)}updateState(e){let{gl:r,state:n}=this.webgl;n.enable(r.SCISSOR_TEST),n.disable(r.BLEND),n.disable(r.DEPTH_TEST),n.depthMask(!1);let{x:o,y:i,width:a,height:s}=e;n.viewport(o,i,a,s),n.scissor(o,i,a,s),n.clearColor(0,0,0,1),r.clear(r.COLOR_BUFFER_BIT)}setSize(e,r){C.update(this.renderable.values.uTexSizeInv,ne.set(this.renderable.values.uTexSizeInv.ref.value,1/e,1/r))}update(e,r){let{values:n}=this.renderable,{edgeThresholdMin:o,edgeThresholdMax:i,iterations:a,subpixelQuality:s}=r,l=!1;n.tColor.ref.value!==e&&(C.update(this.renderable.values.tColor,e),l=!0),n.dEdgeThresholdMin.ref.value!==o&&(l=!0),C.updateIfChanged(n.dEdgeThresholdMin,o),n.dEdgeThresholdMax.ref.value!==i&&(l=!0),C.updateIfChanged(n.dEdgeThresholdMax,i),n.dIterations.ref.value!==a&&(l=!0),C.updateIfChanged(n.dIterations,a),n.dSubpixelQuality.ref.value!==s&&(l=!0),C.updateIfChanged(n.dSubpixelQuality,s),l&&this.renderable.update()}render(e,r){Ee&&this.webgl.timer.mark("FxaaPass.render"),r?r.bind():this.webgl.unbindFramebuffer(),this.updateState(e),this.renderable.render(),Ee&&this.webgl.timer.markEnd("FxaaPass.render")}},rCe=U(w({},Er),{tColor:We("texture","rgba","ubyte","linear"),uTexSizeInv:ee("v2"),dEdgeThresholdMin:Ye("number"),dEdgeThresholdMax:Ye("number"),dIterations:Ye("number"),dSubpixelQuality:Ye("number")}),nCe=Qt("fxaa",zr,OQ);function oCe(t,e){let r=e.getWidth(),n=e.getHeight(),o=U(w({},Ir),{tColor:C.create(e),uTexSizeInv:C.create(ne.create(1/r,1/n)),dEdgeThresholdMin:C.create(.0312),dEdgeThresholdMax:C.create(.125),dIterations:C.create(12),dSubpixelQuality:C.create(.3)}),i=w({},rCe),a=dr(t,"triangles",nCe,i,o);return mr(a,o)}var NQ=` +precision highp float; + +attribute vec2 aPosition; +uniform vec2 uQuadScale; + +uniform vec2 uTexSizeInv; +uniform vec4 uViewport; + +varying vec2 vUv; +varying vec4 vOffset[2]; + +void SMAANeighborhoodBlendingVS(vec2 texCoord) { + vOffset[0] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-1.0, 0.0, 0.0, 1.0); // WebGL port note: Changed sign in W component + vOffset[1] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(1.0, 0.0, 0.0, -1.0); // WebGL port note: Changed sign in W component +} + +void main() { + vec2 scale = uViewport.zw * uTexSizeInv; + vec2 shift = uViewport.xy * uTexSizeInv; + vUv = (aPosition + 1.0) * 0.5 * scale + shift; + SMAANeighborhoodBlendingVS(vUv); + vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale; + gl_Position = vec4(position, 0.0, 1.0); +} +`;var VQ=` +precision highp float; +precision highp int; +precision highp sampler2D; + +uniform sampler2D tWeights; +uniform sampler2D tColor; +uniform vec2 uTexSizeInv; + +varying vec2 vUv; +varying vec4 vOffset[2]; + +vec4 SMAANeighborhoodBlendingPS(vec2 texCoord, vec4 offset[2], sampler2D colorTex, sampler2D blendTex) { + // Fetch the blending weights for current pixel: + vec4 a; + a.xz = texture2D(blendTex, texCoord).xz; + a.y = texture2D(blendTex, offset[1].zw).g; + a.w = texture2D(blendTex, offset[1].xy).a; + + // Is there any blending weight with a value greater than 0.0? + if (dot(a, vec4(1.0, 1.0, 1.0, 1.0)) < 1e-5) { + return texture2D(colorTex, texCoord, 0.0); + } else { + // Up to 4 lines can be crossing a pixel (one through each edge). We + // favor blending by choosing the line with the maximum weight for each + // direction: + vec2 offset; + offset.x = a.a > a.b ? a.a : -a.b; // left vs. right + offset.y = a.g > a.r ? -a.g : a.r; // top vs. bottom // WebGL port note: Changed signs + + // Then we go in the direction that has the maximum weight: + if (abs(offset.x) > abs(offset.y)) { // horizontal vs. vertical + offset.y = 0.0; + } else { + offset.x = 0.0; + } + + // Fetch the opposite color and lerp by hand: + vec4 C = texture2D(colorTex, texCoord, 0.0); + texCoord += sign(offset) * uTexSizeInv; + vec4 Cop = texture2D(colorTex, texCoord, 0.0); + float s = abs(offset.x) > abs(offset.y) ? abs(offset.x) : abs(offset.y); + + // WebGL port note: Added gamma correction + C.xyz = pow(C.xyz, vec3(2.2)); + Cop.xyz = pow(Cop.xyz, vec3(2.2)); + vec4 mixed = mix(C, Cop, s); + mixed.xyz = pow(mixed.xyz, vec3(1.0 / 2.2)); + + return mixed; + } +} + +void main() { + gl_FragColor = SMAANeighborhoodBlendingPS(vUv, vOffset, tColor, tWeights); +} +`;var zQ=` +precision highp float; + +attribute vec2 aPosition; +uniform vec2 uQuadScale; + +uniform vec2 uTexSizeInv; +uniform vec4 uViewport; + +varying vec2 vUv; +varying vec4 vOffset[3]; +varying vec2 vPixCoord; + +void SMAABlendingWeightCalculationVS(vec2 texCoord) { + vPixCoord = texCoord / uTexSizeInv; + + // We will use these offsets for the searches later on (see @PSEUDO_GATHER4): + vOffset[0] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-0.25, 0.125, 1.25, 0.125); // WebGL port note: Changed sign in Y and W components + vOffset[1] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-0.125, 0.25, -0.125, -1.25); // WebGL port note: Changed sign in Y and W components + + // And these for the searches, they indicate the ends of the loops: + vOffset[2] = vec4(vOffset[0].xz, vOffset[1].yw) + vec4(-2.0, 2.0, -2.0, 2.0) * uTexSizeInv.xxyy * float(dMaxSearchSteps); +} + +void main() { + vec2 scale = uViewport.zw * uTexSizeInv; + vec2 shift = uViewport.xy * uTexSizeInv; + vUv = (aPosition + 1.0) * 0.5 * scale + shift; + SMAABlendingWeightCalculationVS(vUv); + vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale; + gl_Position = vec4(position, 0.0, 1.0); +} +`;var UQ=` +precision highp float; +precision highp int; +precision highp sampler2D; + +#define SMAASampleLevelZeroOffset(tex, coord, offset) texture2D(tex, coord + float(offset) * uTexSizeInv, 0.0) + +#define SMAA_AREATEX_MAX_DISTANCE 16 +#define SMAA_AREATEX_PIXEL_SIZE (1.0 / vec2(160.0, 560.0)) +#define SMAA_AREATEX_SUBTEX_SIZE (1.0 / 7.0) + +uniform sampler2D tEdges; +uniform sampler2D tArea; +uniform sampler2D tSearch; +uniform vec2 uTexSizeInv; + +varying vec2 vUv; +varying vec4 vOffset[3]; +varying vec2 vPixCoord; + +#if __VERSION__ == 100 + vec2 round(vec2 x) { + return sign(x) * floor(abs(x) + 0.5); + } +#endif + +float SMAASearchLength(sampler2D searchTex, vec2 e, float bias, float scale) { + // Not required if searchTex accesses are set to point: + // float2 SEARCH_TEX_PIXEL_SIZE = 1.0 / float2(66.0, 33.0); + // e = float2(bias, 0.0) + 0.5 * SEARCH_TEX_PIXEL_SIZE + + // e * float2(scale, 1.0) * float2(64.0, 32.0) * SEARCH_TEX_PIXEL_SIZE; + e.r = bias + e.r * scale; + return 255.0 * texture2D(searchTex, e, 0.0).r; +} + +float SMAASearchXLeft(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) { + /** + * @PSEUDO_GATHER4 + * This texCoord has been offset by (-0.25, -0.125) in the vertex shader to + * sample between edge, thus fetching four edges in a row. + * Sampling with different offsets in each direction allows to disambiguate + * which edges are active from the four fetched ones. + */ + vec2 e = vec2(0.0, 1.0); + + for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for + e = texture2D( edgesTex, texCoord, 0.0).rg; + texCoord -= vec2(2.0, 0.0) * uTexSizeInv; + if (!(texCoord.x > end && e.g > 0.8281 && e.r == 0.0)) break; + } + + // We correct the previous (-0.25, -0.125) offset we applied: + texCoord.x += 0.25 * uTexSizeInv.x; + + // The searches are bias by 1, so adjust the coords accordingly: + texCoord.x += uTexSizeInv.x; + + // Disambiguate the length added by the last step: + texCoord.x += 2.0 * uTexSizeInv.x; // Undo last step + texCoord.x -= uTexSizeInv.x * SMAASearchLength(searchTex, e, 0.0, 0.5); + + return texCoord.x; +} + +float SMAASearchXRight(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) { + vec2 e = vec2( 0.0, 1.0 ); + + for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for + e = texture2D(edgesTex, texCoord, 0.0).rg; + texCoord += vec2(2.0, 0.0) * uTexSizeInv; + if (!(texCoord.x < end && e.g > 0.8281 && e.r == 0.0)) break; + } + + texCoord.x -= 0.25 * uTexSizeInv.x; + texCoord.x -= uTexSizeInv.x; + texCoord.x -= 2.0 * uTexSizeInv.x; + texCoord.x += uTexSizeInv.x * SMAASearchLength( searchTex, e, 0.5, 0.5 ); + + return texCoord.x; +} + +float SMAASearchYUp(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) { + vec2 e = vec2( 1.0, 0.0 ); + + for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for + e = texture2D(edgesTex, texCoord, 0.0).rg; + texCoord += vec2(0.0, 2.0) * uTexSizeInv; // WebGL port note: Changed sign + if (!(texCoord.y > end && e.r > 0.8281 && e.g == 0.0)) break; + } + + texCoord.y -= 0.25 * uTexSizeInv.y; // WebGL port note: Changed sign + texCoord.y -= uTexSizeInv.y; // WebGL port note: Changed sign + texCoord.y -= 2.0 * uTexSizeInv.y; // WebGL port note: Changed sign + texCoord.y += uTexSizeInv.y * SMAASearchLength(searchTex, e.gr, 0.0, 0.5); // WebGL port note: Changed sign + + return texCoord.y; +} + +float SMAASearchYDown(sampler2D edgesTex, sampler2D searchTex, vec2 texCoord, float end) { + vec2 e = vec2( 1.0, 0.0 ); + + for (int i = 0; i < dMaxSearchSteps; i++) { // WebGL port note: Changed while to for + e = texture2D(edgesTex, texCoord, 0.0).rg; + texCoord -= vec2( 0.0, 2.0 ) * uTexSizeInv; // WebGL port note: Changed sign + if (!(texCoord.y < end && e.r > 0.8281 && e.g == 0.0)) break; + } + + texCoord.y += 0.25 * uTexSizeInv.y; // WebGL port note: Changed sign + texCoord.y += uTexSizeInv.y; // WebGL port note: Changed sign + texCoord.y += 2.0 * uTexSizeInv.y; // WebGL port note: Changed sign + texCoord.y -= uTexSizeInv.y * SMAASearchLength(searchTex, e.gr, 0.5, 0.5); // WebGL port note: Changed sign + + return texCoord.y; +} + +vec2 SMAAArea(sampler2D areaTex, vec2 dist, float e1, float e2, float offset) { + // Rounding prevents precision errors of bilinear filtering: + vec2 texCoord = float(SMAA_AREATEX_MAX_DISTANCE) * round(4.0 * vec2(e1, e2)) + dist; + + // We do a scale and bias for mapping to texel space: + texCoord = SMAA_AREATEX_PIXEL_SIZE * texCoord + (0.5 * SMAA_AREATEX_PIXEL_SIZE); + + // Move to proper place, according to the subpixel offset: + texCoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset; + + return texture2D(areaTex, texCoord, 0.0).rg; +} + +vec4 SMAABlendingWeightCalculationPS(vec2 texCoord, vec2 pixCoord, vec4 offset[3], sampler2D edgesTex, sampler2D areaTex, sampler2D searchTex, ivec4 subsampleIndices) { + vec4 weights = vec4(0.0, 0.0, 0.0, 0.0); + + vec2 e = texture2D(edgesTex, texCoord).rg; + + if (e.g > 0.0) { // Edge at north + vec2 d; + + // Find the distance to the left: + vec2 coords; + coords.x = SMAASearchXLeft(edgesTex, searchTex, offset[0].xy, offset[2].x ); + coords.y = offset[1].y; // offset[1].y = texCoord.y - 0.25 * uTexSizeInv.y (@CROSSING_OFFSET) + d.x = coords.x; + + // Now fetch the left crossing edges, two at a time using bilinear + // filtering. Sampling at -0.25 (see @CROSSING_OFFSET) enables to + // discern what value each edge has: + float e1 = texture2D(edgesTex, coords, 0.0).r; + + // Find the distance to the right: + coords.x = SMAASearchXRight(edgesTex, searchTex, offset[0].zw, offset[2].y); + d.y = coords.x; + + // We want the distances to be in pixel units (doing this here allow to + // better interleave arithmetic and memory accesses): + d = d / uTexSizeInv.x - pixCoord.x; + + // SMAAArea below needs a sqrt, as the areas texture is compressed + // quadratically: + vec2 sqrt_d = sqrt(abs(d)); + + // Fetch the right crossing edges: + coords.y -= 1.0 * uTexSizeInv.y; // WebGL port note: Added + float e2 = SMAASampleLevelZeroOffset(edgesTex, coords, ivec2(1, 0)).r; + + // Ok, we know how this pattern looks like, now it is time for getting + // the actual area: + weights.rg = SMAAArea(areaTex, sqrt_d, e1, e2, float(subsampleIndices.y)); + } + + if (e.r > 0.0) { // Edge at west + vec2 d; + + // Find the distance to the top: + vec2 coords; + + coords.y = SMAASearchYUp(edgesTex, searchTex, offset[1].xy, offset[2].z ); + coords.x = offset[0].x; // offset[1].x = texCoord.x - 0.25 * uTexSizeInv.x; + d.x = coords.y; + + // Fetch the top crossing edges: + float e1 = texture2D(edgesTex, coords, 0.0).g; + + // Find the distance to the bottom: + coords.y = SMAASearchYDown(edgesTex, searchTex, offset[1].zw, offset[2].w); + d.y = coords.y; + + // We want the distances to be in pixel units: + d = d / uTexSizeInv.y - pixCoord.y; + + // SMAAArea below needs a sqrt, as the areas texture is compressed + // quadratically: + vec2 sqrt_d = sqrt(abs(d)); + + // Fetch the bottom crossing edges: + coords.y -= 1.0 * uTexSizeInv.y; // WebGL port note: Added + float e2 = SMAASampleLevelZeroOffset(edgesTex, coords, ivec2(0, 1)).g; + + // Get the area for this direction: + weights.ba = SMAAArea(areaTex, sqrt_d, e1, e2, float(subsampleIndices.x)); + } + + return weights; +} + +void main() { + gl_FragColor = SMAABlendingWeightCalculationPS(vUv, vPixCoord, vOffset, tEdges, tArea, tSearch, ivec4(0.0)); +} +`;var GQ=` +precision highp float; + +attribute vec2 aPosition; +uniform vec2 uQuadScale; + +uniform vec2 uTexSizeInv; +uniform vec4 uViewport; + +varying vec2 vUv; +varying vec4 vOffset[3]; + +void SMAAEdgeDetectionVS(vec2 texCoord) { + vOffset[0] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-1.0, 0.0, 0.0, 1.0); // WebGL port note: Changed sign in W component + vOffset[1] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(1.0, 0.0, 0.0, -1.0); // WebGL port note: Changed sign in W component + vOffset[2] = texCoord.xyxy + uTexSizeInv.xyxy * vec4(-2.0, 0.0, 0.0, 2.0); // WebGL port note: Changed sign in W component +} + +void main() { + vec2 scale = uViewport.zw * uTexSizeInv; + vec2 shift = uViewport.xy * uTexSizeInv; + vUv = (aPosition + 1.0) * 0.5 * scale + shift; + SMAAEdgeDetectionVS(vUv); + vec2 position = aPosition * uQuadScale - vec2(1.0, 1.0) + uQuadScale; + gl_Position = vec4(position, 0.0, 1.0); +} +`;var jQ=` +precision highp float; +precision highp int; +precision highp sampler2D; + +uniform sampler2D tColor; +uniform vec2 uTexSizeInv; + +varying vec2 vUv; +varying vec4 vOffset[3]; + +vec4 SMAAColorEdgeDetectionPS(vec2 texcoord, vec4 offset[3], sampler2D colorTex) { + vec2 threshold = vec2(dEdgeThreshold, dEdgeThreshold); + + // Calculate color deltas: + vec4 delta; + vec3 C = texture2D(colorTex, texcoord).rgb; + + vec3 Cleft = texture2D(colorTex, offset[0].xy).rgb; + vec3 t = abs(C - Cleft); + delta.x = max(max(t.r, t.g), t.b); + + vec3 Ctop = texture2D(colorTex, offset[0].zw).rgb; + t = abs(C - Ctop); + delta.y = max(max(t.r, t.g), t.b); + + // We do the usual threshold: + vec2 edges = step(threshold, delta.xy); + + // Then discard if there is no edge: + if (dot(edges, vec2(1.0, 1.0 )) == 0.0) + discard; + + // Calculate right and bottom deltas: + vec3 Cright = texture2D(colorTex, offset[1].xy).rgb; + t = abs( C - Cright ); + delta.z = max(max(t.r, t.g), t.b); + + vec3 Cbottom = texture2D(colorTex, offset[1].zw).rgb; + t = abs(C - Cbottom); + delta.w = max(max(t.r, t.g), t.b); + + // Calculate the maximum delta in the direct neighborhood: + float maxDelta = max(max(max(delta.x, delta.y), delta.z), delta.w ); + + // Calculate left-left and top-top deltas: + vec3 Cleftleft = texture2D(colorTex, offset[2].xy).rgb; + t = abs( C - Cleftleft ); + delta.z = max(max(t.r, t.g), t.b); + + vec3 Ctoptop = texture2D(colorTex, offset[2].zw).rgb; + t = abs(C - Ctoptop); + delta.w = max(max(t.r, t.g), t.b); + + // Calculate the final maximum delta: + maxDelta = max(max(maxDelta, delta.z), delta.w); + + // Local contrast adaptation in action: + edges.xy *= step(0.5 * maxDelta, delta.xy); + + return vec4(edges, 0.0, 0.0); +} + +void main() { + gl_FragColor = SMAAColorEdgeDetectionPS(vUv, vOffset, tColor); +} +`;var HQ={edgeThreshold:g.Numeric(.1,{min:.05,max:.15,step:.01}),maxSearchSteps:g.Numeric(16,{min:0,max:32,step:1})},Zw=class{get supported(){return this._supported}constructor(e,r){if(this.webgl=e,this._supported=!1,typeof HTMLImageElement>"u"){ht&&console.log('Missing "HTMLImageElement" required for "SMAA"');return}let n=r.getWidth(),o=r.getHeight();this.edgesTarget=e.createRenderTarget(n,o,!1,"uint8","linear"),this.weightsTarget=e.createRenderTarget(n,o,!1,"uint8","linear"),this.edgesRenderable=sCe(e,r),this.weightsRenderable=uCe(e,this.edgesTarget.texture),this.blendRenderable=pCe(e,r,this.weightsTarget.texture),this._supported=!0}updateState(e){let{gl:r,state:n}=this.webgl;n.enable(r.SCISSOR_TEST),n.disable(r.BLEND),n.disable(r.DEPTH_TEST),n.depthMask(!1);let{x:o,y:i,width:a,height:s}=e;n.viewport(o,i,a,s),n.scissor(o,i,a,s),n.colorMask(!0,!0,!0,!0),n.clearColor(0,0,0,1),r.clear(r.COLOR_BUFFER_BIT),C.update(this.edgesRenderable.values.uViewport,_n.toVec4(this.edgesRenderable.values.uViewport.ref.value,e)),C.update(this.weightsRenderable.values.uViewport,_n.toVec4(this.weightsRenderable.values.uViewport.ref.value,e)),C.update(this.blendRenderable.values.uViewport,_n.toVec4(this.blendRenderable.values.uViewport.ref.value,e))}setSize(e,r){let n=this.edgesTarget.getWidth(),o=this.edgesTarget.getHeight();(e!==n||r!==o)&&(this.edgesTarget.setSize(e,r),this.weightsTarget.setSize(e,r),C.update(this.edgesRenderable.values.uTexSizeInv,ne.set(this.edgesRenderable.values.uTexSizeInv.ref.value,1/e,1/r)),C.update(this.weightsRenderable.values.uTexSizeInv,ne.set(this.weightsRenderable.values.uTexSizeInv.ref.value,1/e,1/r)),C.update(this.blendRenderable.values.uTexSizeInv,ne.set(this.blendRenderable.values.uTexSizeInv.ref.value,1/e,1/r)))}update(e,r){let n=!1;this.edgesRenderable.values.tColor.ref.value!==e&&(C.update(this.edgesRenderable.values.tColor,e),n=!0),this.edgesRenderable.values.dEdgeThreshold.ref.value!==r.edgeThreshold&&(C.update(this.edgesRenderable.values.dEdgeThreshold,r.edgeThreshold),n=!0),n&&this.edgesRenderable.update(),this.weightsRenderable.values.dMaxSearchSteps.ref.value!==r.maxSearchSteps&&(C.update(this.weightsRenderable.values.dMaxSearchSteps,r.maxSearchSteps),this.weightsRenderable.update()),this.blendRenderable.values.tColor.ref.value!==e&&(C.update(this.blendRenderable.values.tColor,e),this.blendRenderable.update())}render(e,r){Ee&&this.webgl.timer.mark("SmaaPass.render"),this.edgesTarget.bind(),this.updateState(e),this.edgesRenderable.render(),this.weightsTarget.bind(),this.updateState(e),this.weightsRenderable.render(),r?r.bind():this.webgl.unbindFramebuffer(),this.updateState(e),this.blendRenderable.render(),Ee&&this.webgl.timer.markEnd("SmaaPass.render")}},iCe=U(w({},Er),{tColor:We("texture","rgba","ubyte","linear"),uTexSizeInv:ee("v2"),uViewport:ee("v4"),dEdgeThreshold:Ye("number")}),aCe=Qt("smaa-edges",GQ,jQ);function sCe(t,e){let r=e.getWidth(),n=e.getHeight(),o=U(w({},Ir),{tColor:C.create(e),uTexSizeInv:C.create(ne.create(1/r,1/n)),uViewport:C.create(at()),dEdgeThreshold:C.create(.1)}),i=w({},iCe),a=dr(t,"triangles",aCe,i,o);return mr(a,o)}var lCe=U(w({},Er),{tEdges:We("texture","rgba","ubyte","linear"),tArea:We("texture","rgb","ubyte","linear"),tSearch:We("texture","rgba","ubyte","nearest"),uTexSizeInv:ee("v2"),uViewport:ee("v4"),dMaxSearchSteps:Ye("number")}),cCe=Qt("smaa-weights",zQ,UQ);function uCe(t,e){let r=e.getWidth(),n=e.getHeight(),o=t.resources.texture("image-uint8","rgb","ubyte","linear"),i=t.resources.texture("image-uint8","rgba","ubyte","nearest"),a=U(w({},Ir),{tEdges:C.create(e),tArea:C.create(o),tSearch:C.create(i),uTexSizeInv:C.create(ne.create(1/r,1/n)),uViewport:C.create(at()),dMaxSearchSteps:C.create(16)});jA(fCe(),a.tArea,o),jA(hCe(),a.tSearch,i);let s=w({},lCe),l=dr(t,"triangles",cCe,s,a);return mr(l,a)}var dCe=U(w({},Er),{tColor:We("texture","rgba","ubyte","linear"),tWeights:We("texture","rgba","ubyte","linear"),uTexSizeInv:ee("v2"),uViewport:ee("v4")}),mCe=Qt("smaa-blend",NQ,VQ);function pCe(t,e,r){let n=e.getWidth(),o=e.getHeight(),i=U(w({},Ir),{tColor:C.create(e),tWeights:C.create(r),uTexSizeInv:C.create(ne.create(1/n,1/o)),uViewport:C.create(at())}),a=w({},dCe),s=dr(t,"triangles",mCe,a,i);return mr(s,i)}function fCe(){return"data:image/png;base64,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"}function hCe(){return"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAhCAAAAABIXyLAAAAAOElEQVRIx2NgGAWjYBSMglEwEICREYRgFBZBqDCSLA2MGPUIVQETE9iNUAqLR5gIeoQKRgwXjwAAGn4AtaFeYLEAAAAASUVORK5CYII="}var qQ=` +precision mediump float; +precision mediump samplerCube; +precision mediump sampler2D; + +#if defined(dVariant_skybox) + uniform samplerCube tSkybox; + uniform mat4 uViewDirectionProjectionInverse; + uniform float uBlur; + uniform float uOpacity; + uniform float uSaturation; + uniform float uLightness; + uniform mat3 uRotation; +#elif defined(dVariant_image) + uniform sampler2D tImage; + uniform vec2 uImageScale; + uniform vec2 uImageOffset; + uniform float uBlur; + uniform float uOpacity; + uniform float uSaturation; + uniform float uLightness; +#elif defined(dVariant_horizontalGradient) || defined(dVariant_radialGradient) + uniform vec3 uGradientColorA; + uniform vec3 uGradientColorB; + uniform float uGradientRatio; +#endif + +uniform vec2 uTexSize; +uniform vec4 uViewport; +uniform bool uViewportAdjusted; +varying vec4 vPosition; + +// TODO: add as general pp option to remove banding? +// Iestyn's RGB dither from http://alex.vlachos.com/graphics/Alex_Vlachos_Advanced_VR_Rendering_GDC2015.pdf +vec3 ScreenSpaceDither(vec2 vScreenPos) { + vec3 vDither = vec3(dot(vec2(171.0, 231.0), vScreenPos.xy)); + vDither.rgb = fract(vDither.rgb / vec3(103.0, 71.0, 97.0)); + return vDither.rgb / 255.0; +} + +vec3 saturateColor(vec3 c, float amount) { + // https://www.w3.org/TR/WCAG21/#dfn-relative-luminance + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + vec3 intensity = vec3(dot(c, W)); + return mix(intensity, c, 1.0 + amount); +} + +vec3 lightenColor(vec3 c, float amount) { + return c + amount; +} + +void main() { + #if defined(dVariant_skybox) + vec4 t = uViewDirectionProjectionInverse * vPosition; + #ifdef enabledShaderTextureLod + gl_FragColor = textureCubeLodEXT(tSkybox, uRotation * normalize(t.xyz / t.w), uBlur * 8.0); + #else + gl_FragColor = textureCube(tSkybox, uRotation * normalize(t.xyz / t.w)); + #endif + gl_FragColor.a = uOpacity; + gl_FragColor.rgb = lightenColor(saturateColor(gl_FragColor.rgb, uSaturation), uLightness); + #elif defined(dVariant_image) + vec2 coords; + if (uViewportAdjusted) { + coords = ((gl_FragCoord.xy - uViewport.xy) * (uTexSize / uViewport.zw) / uImageScale) + uImageOffset; + } else { + coords = (gl_FragCoord.xy / uImageScale) + uImageOffset; + } + #ifdef enabledShaderTextureLod + gl_FragColor = texture2DLodEXT(tImage, vec2(coords.x, 1.0 - coords.y), uBlur * 8.0); + #else + gl_FragColor = texture2D(tImage, vec2(coords.x, 1.0 - coords.y)); + #endif + gl_FragColor.a = uOpacity; + gl_FragColor.rgb = lightenColor(saturateColor(gl_FragColor.rgb, uSaturation), uLightness); + #elif defined(dVariant_horizontalGradient) + float d; + if (uViewportAdjusted) { + d = ((gl_FragCoord.y - uViewport.y) * (uTexSize.y / uViewport.w) / uTexSize.y) + 1.0 - (uGradientRatio * 2.0); + } else { + d = (gl_FragCoord.y / uTexSize.y) + 1.0 - (uGradientRatio * 2.0); + } + gl_FragColor = vec4(mix(uGradientColorB, uGradientColorA, clamp(d, 0.0, 1.0)), 1.0); + gl_FragColor.rgb += ScreenSpaceDither(gl_FragCoord.xy); + #elif defined(dVariant_radialGradient) + float d; + if (uViewportAdjusted) { + d = distance(vec2(0.5), (gl_FragCoord.xy - uViewport.xy) * (uTexSize / uViewport.zw) / uTexSize) + uGradientRatio - 0.5; + } else { + d = distance(vec2(0.5), gl_FragCoord.xy / uTexSize) + uGradientRatio - 0.5; + } + gl_FragColor = vec4(mix(uGradientColorB, uGradientColorA, 1.0 - clamp(d, 0.0, 1.0)), 1.0); + gl_FragColor.rgb += ScreenSpaceDither(gl_FragCoord.xy); + #endif +} +`;var WQ=` +precision mediump float; + +attribute vec2 aPosition; + +varying vec4 vPosition; + +void main() { + vPosition = vec4(aPosition, 1.0, 1.0); + gl_Position = vec4(aPosition, 1.0, 1.0); +} +`;function eS(){return eS.zero()}(function(t){function e(){let p=[.1,0,0];return p[0]=0,p}t.zero=e;function r(p,h,f){let b=e();return b[0]=p,b[1]=h,b[2]=f,b}t.create=r;function n(p,h,f,b){return p[0]=h,p[0]=f,p[0]=b,p}t.set=n;function o(p){let h=e();return h[0]=p[0],h[1]=p[1],h[2]=p[2],h}t.clone=o;function i(p,h){return p[0]=h[0],p[1]=h[1],p[2]=h[2],p}t.copy=i;function a(p,h,f){let b=h[0],v=h[4],x=h[8],S=h[1],T=h[5],E=h[9],_=h[2],D=h[6],P=h[10];switch(f){case"XYZ":p[1]=Math.asin(Wo(x,-1,1)),Math.abs(x)<.9999999?(p[0]=Math.atan2(-E,P),p[2]=Math.atan2(-v,b)):(p[0]=Math.atan2(D,T),p[2]=0);break;case"YXZ":p[0]=Math.asin(-Wo(E,-1,1)),Math.abs(E)<.9999999?(p[1]=Math.atan2(x,P),p[2]=Math.atan2(S,T)):(p[1]=Math.atan2(-_,b),p[2]=0);break;case"ZXY":p[0]=Math.asin(Wo(D,-1,1)),Math.abs(D)<.9999999?(p[1]=Math.atan2(-_,P),p[2]=Math.atan2(-v,T)):(p[1]=0,p[2]=Math.atan2(S,b));break;case"ZYX":p[1]=Math.asin(-Wo(_,-1,1)),Math.abs(_)<.9999999?(p[0]=Math.atan2(D,P),p[2]=Math.atan2(S,b)):(p[0]=0,p[2]=Math.atan2(-v,T));break;case"YZX":p[2]=Math.asin(Wo(S,-1,1)),Math.abs(S)<.9999999?(p[0]=Math.atan2(-E,T),p[1]=Math.atan2(-_,b)):(p[0]=0,p[1]=Math.atan2(x,P));break;case"XZY":p[2]=Math.asin(-Wo(v,-1,1)),Math.abs(v)<.9999999?(p[0]=Math.atan2(D,T),p[1]=Math.atan2(x,b)):(p[0]=Math.atan2(-E,P),p[1]=0);break;default:ur(f)}return p}t.fromMat4=a;let s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function l(p,h,f){return W.fromQuat(s,h),a(p,s,f)}t.fromQuat=l;function c(p,h){return n(p,h[0],h[1],h[2])}t.fromVec3=c;function u(p,h){return p[0]===h[0]&&p[1]===h[1]&&p[2]===h[2]}t.exactEquals=u;function d(p,h,f){return p[0]=h[f+0],p[1]=h[f+1],p[2]=h[f+2],p}t.fromArray=d;function m(p,h,f){return h[f+0]=p[0],h[f+1]=p[1],h[f+2]=p[2],h}t.toArray=m})(eS||(eS={}));var $Q={opacity:g.Numeric(1,{min:0,max:1,step:.01}),saturation:g.Numeric(0,{min:-1,max:1,step:.01}),lightness:g.Numeric(0,{min:-1,max:1,step:.01})},gCe=w({faces:g.MappedStatic("urls",{urls:g.Group({nx:g.Text("",{label:"Negative X / Left"}),ny:g.Text("",{label:"Negative Y / Bottom"}),nz:g.Text("",{label:"Negative Z / Back"}),px:g.Text("",{label:"Positive X / Right"}),py:g.Text("",{label:"Positive Y / Top"}),pz:g.Text("",{label:"Positive Z / Front"})},{isExpanded:!0,label:"URLs"}),files:g.Group({nx:g.File({label:"Negative X / Left",accept:"image/*"}),ny:g.File({label:"Negative Y / Bottom",accept:"image/*"}),nz:g.File({label:"Negative Z / Back",accept:"image/*"}),px:g.File({label:"Positive X / Right",accept:"image/*"}),py:g.File({label:"Positive Y / Top",accept:"image/*"}),pz:g.File({label:"Positive Z / Front",accept:"image/*"})},{isExpanded:!0,label:"Files"})}),blur:g.Numeric(0,{min:0,max:1,step:.01},{description:'Note, this only works in WebGL2 or when "EXT_shader_texture_lod" is available.'}),rotation:g.Group({x:g.Numeric(0,{min:0,max:360,step:1},{immediateUpdate:!0}),y:g.Numeric(0,{min:0,max:360,step:1},{immediateUpdate:!0}),z:g.Numeric(0,{min:0,max:360,step:1},{immediateUpdate:!0})})},$Q),yCe=U(w({source:g.MappedStatic("url",{url:g.Text(""),file:g.File({accept:"image/*"})}),blur:g.Numeric(0,{min:0,max:1,step:.01},{description:'Note, this only works in WebGL2 or with power-of-two images and when "EXT_shader_texture_lod" is available.'})},$Q),{coverage:g.Select("viewport",g.arrayToOptions(["viewport","canvas"]))}),vCe={topColor:g.Color(ce(14540253)),bottomColor:g.Color(ce(15658734)),ratio:g.Numeric(.5,{min:0,max:1,step:.01}),coverage:g.Select("viewport",g.arrayToOptions(["viewport","canvas"]))},bCe={centerColor:g.Color(ce(14540253)),edgeColor:g.Color(ce(15658734)),ratio:g.Numeric(.5,{min:0,max:1,step:.01}),coverage:g.Select("viewport",g.arrayToOptions(["viewport","canvas"]))},ZQ={variant:g.MappedStatic("off",{off:g.EmptyGroup(),skybox:g.Group(gCe,{isExpanded:!0}),image:g.Group(yCe,{isExpanded:!0}),horizontalGradient:g.Group(vCe,{isExpanded:!0}),radialGradient:g.Group(bCe,{isExpanded:!0})},{label:"Environment"})},Jw=class{constructor(e,r,n,o){this.webgl=e,this.assetManager=r,this.camera=new an,this.target=y(),this.position=y(),this.dir=y(),this.renderable=ICe(e,n,o)}setSize(e,r){let[n,o]=this.renderable.values.uTexSize.ref.value;(e!==n||r!==o)&&C.update(this.renderable.values.uTexSize,ne.set(this.renderable.values.uTexSize.ref.value,e,r))}clearSkybox(){this.skybox!==void 0&&(this.skybox.texture.destroy(),this.skybox.assets.forEach(e=>this.assetManager.release(e)),this.skybox=void 0)}updateSkybox(e,r,n){var o;let i=(o=this.skybox)===null||o===void 0?void 0:o.props.faces,a=r.faces.params;if(!a.nx||!a.ny||!a.nz||!a.px||!a.py||!a.pz){this.clearSkybox(),n?.(!1);return}if(!this.skybox||!i||!CCe(r.faces,this.skybox.props.faces)){this.clearSkybox();let{texture:u,assets:d}=TCe(this.webgl,this.assetManager,r.faces,m=>{this.skybox&&(this.skybox.loaded=!m),n?.(!0)});this.skybox={texture:u,props:w({},r),assets:d,loaded:!1},C.update(this.renderable.values.tSkybox,u),this.renderable.update()}else n?.(!1);if(!this.skybox)return;let s=e;e.state.mode==="orthographic"&&(this.camera.setState(U(w({},e.state),{mode:"perspective"})),this.camera.update(),s=this.camera);let l=this.renderable.values.uViewDirectionProjectionInverse.ref.value;y.sub(this.dir,s.state.position,s.state.target),y.setMagnitude(this.dir,this.dir,.1),y.copy(this.position,this.dir),W.lookAt(l,this.position,this.target,s.state.up),W.mul(l,s.projection,l),W.invert(l,l),C.update(this.renderable.values.uViewDirectionProjectionInverse,l);let c=this.renderable.values.uRotation.ref.value;Dt.fromEuler(c,eS.create(or(r.rotation.x),or(r.rotation.y),or(r.rotation.z)),"XYZ"),C.update(this.renderable.values.uRotation,c),C.updateIfChanged(this.renderable.values.uBlur,r.blur),C.updateIfChanged(this.renderable.values.uOpacity,r.opacity),C.updateIfChanged(this.renderable.values.uSaturation,r.saturation),C.updateIfChanged(this.renderable.values.uLightness,r.lightness),C.updateIfChanged(this.renderable.values.dVariant,"skybox"),this.renderable.update()}clearImage(){this.image!==void 0&&(this.image.texture.destroy(),this.assetManager.release(this.image.asset),this.image=void 0)}updateImage(e,r){if(!e.source.params){this.clearImage(),r?.(!1);return}if(!this.image||!this.image.props.source.params||!wCe(e.source,this.image.props.source)){this.clearImage();let{texture:n,asset:o}=_Ce(this.webgl,this.assetManager,e.source,i=>{this.image&&(this.image.loaded=!i),r?.(!0)});this.image={texture:n,props:w({},e),asset:o,loaded:!1},C.update(this.renderable.values.tImage,n),this.renderable.update()}else r?.(!1);this.image&&(C.updateIfChanged(this.renderable.values.uBlur,e.blur),C.updateIfChanged(this.renderable.values.uOpacity,e.opacity),C.updateIfChanged(this.renderable.values.uSaturation,e.saturation),C.updateIfChanged(this.renderable.values.uLightness,e.lightness),C.updateIfChanged(this.renderable.values.uViewportAdjusted,e.coverage==="viewport"),C.updateIfChanged(this.renderable.values.dVariant,"image"),this.renderable.update())}updateImageScaling(){var e,r;let n=this.renderable.values,[o,i]=n.uTexSize.ref.value,a=((e=this.image)===null||e===void 0?void 0:e.texture.getWidth())||0,s=((r=this.image)===null||r===void 0?void 0:r.texture.getHeight())||0,l=o/i,c=a/s;ll?C.update(n.uImageOffset,ne.set(n.uImageOffset.ref.value,(1-l/m)/2,0)):C.update(n.uImageOffset,ne.set(n.uImageOffset.ref.value,0,(1-m/l)/2))}updateGradient(e,r,n,o,i){C.update(this.renderable.values.uGradientColorA,ce.toVec3Normalized(this.renderable.values.uGradientColorA.ref.value,e)),C.update(this.renderable.values.uGradientColorB,ce.toVec3Normalized(this.renderable.values.uGradientColorB.ref.value,r)),C.updateIfChanged(this.renderable.values.uGradientRatio,n),C.updateIfChanged(this.renderable.values.uViewportAdjusted,i),C.updateIfChanged(this.renderable.values.dVariant,o),this.renderable.update()}update(e,r,n){if(r.variant.name==="off"){this.clearSkybox(),this.clearImage(),n?.(!1);return}else r.variant.name==="skybox"?(this.clearImage(),this.updateSkybox(e,r.variant.params,n)):r.variant.name==="image"?(this.clearSkybox(),this.updateImage(r.variant.params,n)):r.variant.name==="horizontalGradient"?(this.clearSkybox(),this.clearImage(),this.updateGradient(r.variant.params.topColor,r.variant.params.bottomColor,r.variant.params.ratio,r.variant.name,r.variant.params.coverage==="viewport"),n?.(!1)):r.variant.name==="radialGradient"&&(this.clearSkybox(),this.clearImage(),this.updateGradient(r.variant.params.centerColor,r.variant.params.edgeColor,r.variant.params.ratio,r.variant.name,r.variant.params.coverage==="viewport"),n?.(!1));let{x:o,y:i,width:a,height:s}=e.viewport;C.update(this.renderable.values.uViewport,at.set(this.renderable.values.uViewport.ref.value,o,i,a,s))}isEnabled(e){return!!(this.skybox&&this.skybox.loaded||this.image&&this.image.loaded||e.variant.name==="horizontalGradient"||e.variant.name==="radialGradient")}isReady(){return!!(this.skybox&&this.skybox.loaded||this.image&&this.image.loaded||this.renderable.values.dVariant.ref.value==="horizontalGradient"||this.renderable.values.dVariant.ref.value==="radialGradient")}render(){this.isReady()&&(this.renderable.values.dVariant.ref.value==="image"&&this.updateImageScaling(),Ee&&this.webgl.timer.mark("BackgroundPass.render"),this.renderable.render(),Ee&&this.webgl.timer.markEnd("BackgroundPass.render"))}dispose(){this.clearSkybox(),this.clearImage()}},XQ="background-skybox";function xCe(t,e){return e.name==="urls"?{nx:Wr.getUrlAsset(t,e.params.nx),ny:Wr.getUrlAsset(t,e.params.ny),nz:Wr.getUrlAsset(t,e.params.nz),px:Wr.getUrlAsset(t,e.params.px),py:Wr.getUrlAsset(t,e.params.py),pz:Wr.getUrlAsset(t,e.params.pz)}:{nx:e.params.nx,ny:e.params.ny,nz:e.params.nz,px:e.params.px,py:e.params.py,pz:e.params.pz}}function SCe(t,e){let r=n=>t.resolve(n,"binary").run().then(o=>new Blob([o.data]));return{nx:r(e.nx),ny:r(e.ny),nz:r(e.nz),px:r(e.px),py:r(e.py),pz:r(e.pz)}}function YQ(t){var e,r,n,o,i,a;return t.name==="urls"?`${XQ}_${t.params.nx}|${t.params.ny}|${t.params.nz}|${t.params.px}|${t.params.py}|${t.params.pz}`:`${XQ}_${(e=t.params.nx)===null||e===void 0?void 0:e.id}|${(r=t.params.ny)===null||r===void 0?void 0:r.id}|${(n=t.params.nz)===null||n===void 0?void 0:n.id}|${(o=t.params.px)===null||o===void 0?void 0:o.id}|${(i=t.params.py)===null||i===void 0?void 0:i.id}|${(a=t.params.pz)===null||a===void 0?void 0:a.id}`}function CCe(t,e){return YQ(t)===YQ(e)}function TCe(t,e,r,n){let o=xCe(e,r),i=SCe(e,o),a=[o.nx,o.ny,o.nz,o.px,o.py,o.pz];return typeof HTMLImageElement>"u"?(console.error('Missing "HTMLImageElement" required for background skybox'),n?.(!0),{texture:un(),assets:a}):{texture:t.resources.cubeTexture(i,!0,n),assets:a}}var QQ="background-image";function KQ(t){var e;return t.name==="url"?`${QQ}_${t.params}`:`${QQ}_${(e=t.params)===null||e===void 0?void 0:e.id}`}function wCe(t,e){return KQ(t)===KQ(e)}function _Ce(t,e,r,n){let o=r.name==="url"?Wr.getUrlAsset(e,r.params):r.params;if(typeof HTMLImageElement>"u")return console.error('Missing "HTMLImageElement" required for background image'),n?.(!0),{texture:un(),asset:o};let i=t.resources.texture("image-uint8","rgba","ubyte","linear"),a=new Image;return a.onload=()=>{i.load(a),(t.isWebGL2||nf(a.width)&&nf(a.height))&&i.mipmap(),n?.()},a.onerror=()=>{n?.(!0)},e.resolve(o,"binary").run().then(s=>{let l=new Blob([s.data]);a.src=URL.createObjectURL(l)}),{texture:i,asset:o}}var PCe={drawCount:Mr("number"),instanceCount:Mr("number"),aPosition:hr("float32",2,0),tSkybox:We("texture","rgba","ubyte","linear"),tImage:We("texture","rgba","ubyte","linear"),uImageScale:ee("v2"),uImageOffset:ee("v2"),uTexSize:ee("v2"),uViewport:ee("v4"),uViewportAdjusted:ee("b"),uViewDirectionProjectionInverse:ee("m4"),uGradientColorA:ee("v3"),uGradientColorB:ee("v3"),uGradientRatio:ee("f"),uBlur:ee("f"),uOpacity:ee("f"),uSaturation:ee("f"),uLightness:ee("f"),uRotation:ee("m3"),dVariant:Ye("string",["skybox","image","verticalGradient","horizontalGradient","radialGradient"])},ECe=Qt("background",WQ,qQ,{shaderTextureLod:"optional"});function ICe(t,e,r){let n={drawCount:C.create(6),instanceCount:C.create(1),aPosition:C.create(Jx),tSkybox:C.create(un()),tImage:C.create(un()),uImageScale:C.create(ne()),uImageOffset:C.create(ne()),uTexSize:C.create(ne.create(e,r)),uViewport:C.create(at()),uViewportAdjusted:C.create(!0),uViewDirectionProjectionInverse:C.create(W()),uGradientColorA:C.create(y()),uGradientColorB:C.create(y()),uGradientRatio:C.create(.5),uBlur:C.create(0),uOpacity:C.create(1),uSaturation:C.create(0),uLightness:C.create(0),uRotation:C.create(Dt.identity()),dVariant:C.create("skybox")},o=w({},PCe),i=dr(t,"triangles",ECe,o,n);return mr(i,n)}var JQ=` +precision highp float; +precision highp int; +precision highp sampler2D; + +#include common + +uniform sampler2D tDepth; +uniform vec2 uTexSize; +uniform vec4 uBounds; + +uniform float uNear; +uniform float uFar; + +#if dLightCount != 0 + uniform vec3 uLightDirection[dLightCount]; + uniform vec3 uLightColor[dLightCount]; +#endif + +uniform mat4 uProjection; +uniform mat4 uInvProjection; + +uniform float uMaxDistance; +uniform float uTolerance; +uniform float uBias; + +bool isBackground(const in float depth) { + return depth == 1.0; +} + +bool outsideBounds(const in vec2 p) { + return p.x < uBounds.x || p.y < uBounds.y || p.x > uBounds.z || p.y > uBounds.w; +} + +float getViewZ(const in float depth) { + #if dOrthographic == 1 + return orthographicDepthToViewZ(depth, uNear, uFar); + #else + return perspectiveDepthToViewZ(depth, uNear, uFar); + #endif +} + +float getDepth(const in vec2 coords) { + #ifdef depthTextureSupport + return texture2D(tDepth, coords).r; + #else + return unpackRGBAToDepth(texture2D(tDepth, coords)); + #endif +} + +float screenFade(const in vec2 coords) { + vec2 c = (coords - uBounds.xy) / (uBounds.zw - uBounds.xy); + vec2 fade = max(12.0 * abs(c - 0.5) - 5.0, vec2(0.0)); + return saturate(1.0 - dot(fade, fade)); +} + +// based on https://panoskarabelas.com/posts/screen_space_shadows/ +float screenSpaceShadow(const in vec3 position, const in vec3 lightDirection, const in float stepLength) { + // Ray position and direction (in view-space) + vec3 rayPos = position; + vec3 rayDir = -lightDirection; + + // Compute ray step + vec3 rayStep = rayDir * stepLength; + + // Ray march towards the light + float occlusion = 0.0; + vec4 rayCoords = vec4(0.0); + for (int i = 0; i < dSteps; ++i) { + // Step the ray + rayPos += rayStep; + + rayCoords = uProjection * vec4(rayPos, 1.0); + rayCoords.xyz = (rayCoords.xyz / rayCoords.w) * 0.5 + 0.5; + + if (outsideBounds(rayCoords.xy)) + return 1.0; + + // Compute the difference between the ray's and the camera's depth + float depth = getDepth(rayCoords.xy); + float viewZ = getViewZ(depth); + float zDelta = rayPos.z - viewZ; + + if (zDelta < uTolerance) { + occlusion = 1.0; + + // Fade out as we approach the edges of the screen + occlusion *= screenFade(rayCoords.xy); + + break; + } + } + + return 1.0 - (uBias * occlusion); +} + +void main(void) { + vec2 invTexSize = 1.0 / uTexSize; + vec2 selfCoords = gl_FragCoord.xy * invTexSize; + + float selfDepth = getDepth(selfCoords); + + if (isBackground(selfDepth)) { + gl_FragColor = vec4(0.0); + return; + } + + vec3 selfViewPos = screenSpaceToViewSpace(vec3(selfCoords, selfDepth), uInvProjection); + float stepLength = uMaxDistance / float(dSteps); + + float o = 1.0; + #if dLightCount != 0 + float sh[dLightCount]; + #pragma unroll_loop_start + for (int i = 0; i < dLightCount; ++i) { + sh[i] = screenSpaceShadow(selfViewPos, uLightDirection[i], stepLength); + o = min(o, sh[i]); + } + #pragma unroll_loop_end + #endif + + gl_FragColor = vec4(o); +} +`;var eK=` +precision mediump float; +precision mediump sampler2D; + +uniform sampler2D tColor; +uniform vec2 uTexSizeInv; + +uniform float uSharpness; + +// adapted from https://www.shadertoy.com/view/stXSWB + +/* +* FidelityFX Super Resolution scales up a low resolution +* image, while adding fine detail. +* +* MIT Open License +* +* https://gpuopen.com/fsr +* +* Left: FSR processed +* Right: Original texture, bilinear interpolation +* +* Mouse at top: Sharpness 0 stops (maximum) +* Mouse at bottom: Sharpness 2 stops (minimum) +* +* It works in two passes- +* EASU upsamples the image with a clamped Lanczos kernel. +* RCAS sharpens the image at the target resolution. +* +* I needed to make a few changes to improve readability and +* WebGL compatibility in an algorithm I don't fully understand. +* Expect bugs. +* +* Shader not currently running for WebGL1 targets (eg. mobile Safari) +* +* There is kind of no point to using FSR in Shadertoy, as it renders buffers +* at full target resolution. But this might be useful for WebGL based demos +* running smaller-than-target render buffers. +* +* For sharpening with a full resolution render buffer, +* FidelityFX CAS is a better option. +* https://www.shadertoy.com/view/ftsXzM +* +* For readability and compatibility, these optimisations have been removed: +* * Fast approximate inverse and inversesqrt +* * textureGather fetches (not WebGL compatible) +* * Multiplying by reciprocal instead of division +* +* Apologies to AMD for the numerous slowdowns and errors I have introduced. +* +*/ + +/***** RCAS *****/ +#define FSR_RCAS_LIMIT (0.25-(1.0/16.0)) + +// Input callback prototypes that need to be implemented by calling shader +vec4 FsrRcasLoadF(vec2 p); +//------------------------------------------------------------------------------------------------------------------------------ +void FsrRcasCon( + out float con, + // The scale is {0.0 := maximum, to N>0, where N is the number of stops (halving) of the reduction of sharpness}. + float sharpness +) { + // Transform from stops to linear value. + con = exp2(-sharpness); +} + +vec3 FsrRcasF( + vec2 ip, // Integer pixel position in output. + float con +) { + // Constant generated by RcasSetup(). + // Algorithm uses minimal 3x3 pixel neighborhood. + // b + // d e f + // h + vec2 sp = vec2(ip); + vec3 b = FsrRcasLoadF(sp + vec2( 0,-1)).rgb; + vec3 d = FsrRcasLoadF(sp + vec2(-1, 0)).rgb; + vec3 e = FsrRcasLoadF(sp).rgb; + vec3 f = FsrRcasLoadF(sp + vec2( 1, 0)).rgb; + vec3 h = FsrRcasLoadF(sp + vec2( 0, 1)).rgb; + + // Luma times 2. + float bL = b.g + .5 * (b.b + b.r); + float dL = d.g + .5 * (d.b + d.r); + float eL = e.g + .5 * (e.b + e.r); + float fL = f.g + .5 * (f.b + f.r); + float hL = h.g + .5 * (h.b + h.r); + + // Noise detection. + #ifdef dDenoise + float nz = .25 * (bL + dL + fL + hL) - eL; + nz=clamp( + abs(nz) + /( + max(max(bL,dL),max(eL,max(fL,hL))) + -min(min(bL,dL),min(eL,min(fL,hL))) + ), + 0., 1. + ); + nz=1.-.5*nz; + #endif + + // Min and max of ring. + vec3 mn4 = min(b, min(f, h)); + vec3 mx4 = max(b, max(f, h)); + + // Immediate constants for peak range. + vec2 peakC = vec2(1., -4.); + + // Limiters, these need to be high precision RCPs. + vec3 hitMin = mn4 / (4. * mx4); + vec3 hitMax = (peakC.x - mx4) / (4.* mn4 + peakC.y); + vec3 lobeRGB = max(-hitMin, hitMax); + float lobe = max( + -FSR_RCAS_LIMIT, + min(max(lobeRGB.r, max(lobeRGB.g, lobeRGB.b)), 0.) + )*con; + + // Apply noise removal. + #ifdef dDenoise + lobe *= nz; + #endif + + // Resolve, which needs the medium precision rcp approximation to avoid visible tonality changes. + return (lobe * (b + d + h + f) + e) / (4. * lobe + 1.); +} + + +vec4 FsrRcasLoadF(vec2 p) { + return texture2D(tColor, p * uTexSizeInv); +} + +void main() { + // Set up constants + float con; + FsrRcasCon(con, uSharpness); + + // Perform RCAS pass + vec3 col = FsrRcasF(gl_FragCoord.xy, con); + + gl_FragColor = vec4(col, FsrRcasLoadF(gl_FragCoord.xy).a); +} +`;var tK={sharpness:g.Numeric(.5,{min:0,max:1,step:.05}),denoise:g.Boolean(!0)},e_=class{constructor(e,r){this.webgl=e,this.renderable=kCe(e,r)}updateState(e){let{gl:r,state:n}=this.webgl;n.enable(r.SCISSOR_TEST),n.disable(r.BLEND),n.disable(r.DEPTH_TEST),n.depthMask(!1);let{x:o,y:i,width:a,height:s}=e;n.viewport(o,i,a,s),n.scissor(o,i,a,s),n.clearColor(0,0,0,1),r.clear(r.COLOR_BUFFER_BIT)}setSize(e,r){C.update(this.renderable.values.uTexSizeInv,ne.set(this.renderable.values.uTexSizeInv.ref.value,1/e,1/r))}update(e,r){let{values:n}=this.renderable,{sharpness:o,denoise:i}=r,a=!1;n.tColor.ref.value!==e&&(C.update(this.renderable.values.tColor,e),a=!0),C.updateIfChanged(n.uSharpness,2-2*Math.pow(o,.25)),n.dDenoise.ref.value!==i&&(a=!0),C.updateIfChanged(n.dDenoise,i),a&&this.renderable.update()}render(e,r){Ee&&this.webgl.timer.mark("CasPass.render"),r?r.bind():this.webgl.unbindFramebuffer(),this.updateState(e),this.renderable.render(),Ee&&this.webgl.timer.markEnd("CasPass.render")}},DCe=U(w({},Er),{tColor:We("texture","rgba","ubyte","linear"),uTexSizeInv:ee("v2"),uSharpness:ee("f"),dDenoise:Ye("boolean")}),ACe=Qt("cas",zr,eK);function kCe(t,e){let r=e.getWidth(),n=e.getHeight(),o=U(w({},Ir),{tColor:C.create(e),uTexSizeInv:C.create(ne.create(1/r,1/n)),uSharpness:C.create(.5),dDenoise:C.create(!0)}),i=w({},DCe),a=dr(t,"triangles",ACe,i,o);return mr(a,o)}var rK=` +precision highp float; +precision highp int; +precision highp sampler2D; + +#include common + +uniform sampler2D tColor; +uniform sampler2D tDepthOpaque; +uniform sampler2D tDepthTransparent; + +uniform vec2 uTexSize; +uniform vec4 uBounds; + +uniform float uBlurSpread; +uniform float uInFocus; +uniform float uPPM; + +uniform float uNear; // Near plane +uniform float uFar; // Far plane + +uniform mat4 uInvProjection; // Inverse projection +uniform mat4 uProjection; // projection + +uniform int uMode; // 0-planar, 1-spherical +uniform vec3 uCenter; // Center of focus sphere in view space + +// Function to convert depth value from depth buffer to view space Z +float getViewZ(const in float depth) { + #if dOrthographic == 1 + return orthographicDepthToViewZ(depth, uNear, uFar); + #else + return perspectiveDepthToViewZ(depth, uNear, uFar); + #endif +} + +// Retrieve depth from opaque depth texture +float getDepthOpaque(const in vec2 coords) { + #ifdef depthTextureSupport + return texture2D(tDepthOpaque, coords).r; + #else + return unpackRGBAToDepth(texture2D(tDepthOpaque, coords)); + #endif +} + +// Retrieve depth from transparent depth texture +float getDepthTransparent(const in vec2 coords) { + return unpackRGBAToDepth(texture2D(tDepthTransparent, coords)); +} + +bool isBackground(const in float depth) { + return depth == 1.0; +} + +float getDepth(const in vec2 coords) { + return min(getDepthOpaque(coords), getDepthTransparent(coords)); +} + +float getCOC(vec2 uv) { + float depth = getDepth(uv); + float viewDist = getViewZ(depth); + vec3 aposition = screenSpaceToViewSpace(vec3(uv.xy, depth), uInvProjection); + float focusDist = length(aposition - uCenter); + float coc = 0.0; // Circle of Confusion + if (uMode == 0) { // planar Depth of field + coc = (abs(viewDist) - uInFocus) / uPPM; //focus distance, focus range + } else if(uMode == 1) { // spherical Depth of field + coc = focusDist / uPPM ; + } + coc = clamp(coc, -1.0, 1.0); + return coc; +} + +// Simple box blur for blurring the image +vec3 getBlurredImage(vec2 coords) { + vec4 blurColor = vec4(0); + vec2 texelSize = vec2(1.0 / uTexSize.x, 1.0 / uTexSize.y); + float count = 0.0; + for (int x = 0; x < int(dBlurSize); x++) { + for (int y = 0; y < int(dBlurSize); y++) { + vec2 offset = vec2(float(x) - float(dBlurSize) / 2.0, float(y) - float(dBlurSize) / 2.0); + vec2 uvPixel = coords.xy + offset * texelSize * uBlurSpread; + float coc = getCOC(uvPixel); + coc = smoothstep(0.0, 1.0, abs(coc)); + // mix blurColor with new color with weight coc + blurColor.rgb = blurColor.rgb + texture2D(tColor, uvPixel).xyz * coc; + count+=coc; + } + } + blurColor = blurColor / count; + return blurColor.rgb; +} + +// simplification from https://catlikecoding.com/unity/tutorials/advanced-rendering/depth-of-field/ +void main() { + vec2 uv = gl_FragCoord.xy / uTexSize; + vec4 color = texture2D(tColor, uv); + float depth = getDepth(uv); + + float viewDist = getViewZ(depth); + + vec3 aposition = screenSpaceToViewSpace(vec3(uv.xy, depth), uInvProjection); + float focusDist = length(aposition - uCenter); + vec3 blurColor = getBlurredImage(uv); + + float coc = getCOC(uv); // Circle of Confusion + + // for debugging the coc + // color.rgb = (coc < 0.0) ? (1.0 - abs(coc)) * vec3(1.0,0.0,0.0) : vec3(0.0, 1.0 - coc, 0.0) ;//mix(color.rgb, blurColor.rgb, abs(coc)); + color.rgb = mix(color.rgb, blurColor, smoothstep(0.0, 1.0, abs(coc))); // Smooth blending based on CoC + gl_FragColor = color; +} +`;var nK={blurSize:g.Numeric(9,{min:1,max:32,step:1}),blurSpread:g.Numeric(1,{min:0,max:10,step:.1}),inFocus:g.Numeric(0,{min:-5e3,max:5e3,step:1},{description:"Distance from the scene center that will be in focus"}),PPM:g.Numeric(20,{min:0,max:5e3,step:.1},{description:"Size of the area that will be in focus"}),center:g.Select("camera-target",g.arrayToOptions(["scene-center","camera-target"])),mode:g.Select("plane",g.arrayToOptions(["plane","sphere"]))},Sm=class{static isEnabled(e){return e.dof.name!=="off"}constructor(e,r,n){this.webgl=e,this.target=e.createRenderTarget(r,n,!1);let o=un();this.renderable=LCe(e,o,o,o)}updateState(e){let{gl:r,state:n}=this.webgl;n.enable(r.SCISSOR_TEST),n.disable(r.BLEND),n.disable(r.DEPTH_TEST),n.depthMask(!1);let{x:o,y:i,width:a,height:s}=e;n.viewport(o,i,a,s),n.scissor(o,i,a,s),n.clearColor(0,0,0,1),r.clear(r.COLOR_BUFFER_BIT)}setSize(e,r){let n=this.target.texture.getWidth(),o=this.target.texture.getHeight();(e!==n||r!==o)&&(this.target.setSize(e,r),C.update(this.renderable.values.uTexSize,ne.set(this.renderable.values.uTexSize.ref.value,e,r)))}update(e,r,n,o,i,a){let s=!1;this.renderable.values.tColor.ref.value!==r&&(C.update(this.renderable.values.tColor,r),s=!0),this.renderable.values.tDepthOpaque.ref.value!==n&&(C.update(this.renderable.values.tDepthOpaque,n),s=!0),this.renderable.values.tDepthTransparent.ref.value!==o&&(C.update(this.renderable.values.tDepthTransparent,o),s=!0);let l=e.state.mode==="orthographic"?1:0,c=this.renderable.values.uInvProjection.ref.value;W.invert(c,e.projection);let[u,d]=this.renderable.values.uTexSize.ref.value,m=e.viewport;C.update(this.renderable.values.uProjection,e.projection),C.update(this.renderable.values.uInvProjection,c),C.update(this.renderable.values.uMode,i.mode==="sphere"?1:0),at.set(this.renderable.values.uBounds.ref.value,m.x/u,m.y/d,(m.x+m.width)/u,(m.y+m.height)/d),C.update(this.renderable.values.uBounds,this.renderable.values.uBounds.ref.value),C.updateIfChanged(this.renderable.values.uNear,e.near),C.updateIfChanged(this.renderable.values.uFar,e.far),C.updateIfChanged(this.renderable.values.dOrthographic,l),this.renderable.values.dBlurSize.ref.value!==i.blurSize&&(C.update(this.renderable.values.dBlurSize,i.blurSize),s=!0);let p=i.center==="scene-center"?a.center:e.state.target,f=y.distance(e.state.position,p)+i.inFocus;C.updateIfChanged(this.renderable.values.uInFocus,f);let b=this.renderable.values.uCenter.ref.value;y.transformMat4(b,p,e.view),C.update(this.renderable.values.uCenter,b),C.updateIfChanged(this.renderable.values.uBlurSpread,i.blurSpread),C.updateIfChanged(this.renderable.values.uPPM,i.PPM),s&&this.renderable.update()}render(e,r){Ee&&this.webgl.timer.mark("DofPass.render"),r?r.bind():this.webgl.unbindFramebuffer(),this.updateState(e),this.renderable.render(),Ee&&this.webgl.timer.markEnd("DofPass.render")}},MCe=U(w({},Er),{tDepthOpaque:We("texture","rgba","ubyte","nearest"),tDepthTransparent:We("texture","rgba","ubyte","nearest"),tColor:We("texture","rgba","ubyte","nearest"),uTexSize:ee("v2"),uProjection:ee("m4"),uInvProjection:ee("m4"),uBounds:ee("v4"),uCenter:ee("v3"),uMode:ee("i"),dOrthographic:Ye("number"),uNear:ee("f"),uFar:ee("f"),dBlurSize:Ye("number"),uBlurSpread:ee("f"),uInFocus:ee("f"),uPPM:ee("f")}),RCe=Qt("dof",zr,rK);function LCe(t,e,r,n){let o=e.getWidth(),i=e.getHeight(),a=U(w({},Ir),{tDepthOpaque:C.create(r),tDepthTransparent:C.create(n),tColor:C.create(e),uTexSize:C.create(ne.create(o,i)),uProjection:C.create(W.identity()),uInvProjection:C.create(W.identity()),uBounds:C.create(at()),uCenter:C.create(y()),uMode:C.create(0),dOrthographic:C.create(0),uNear:C.create(1),uFar:C.create(1e4),dBlurSize:C.create(5),uBlurSpread:C.create(300),uInFocus:C.create(20),uPPM:C.create(20)}),s=w({},MCe),l=dr(t,"triangles",RCe,s,a);return mr(l,a)}var oK=` +precision highp float; +precision highp int; +precision highp sampler2D; + +uniform vec2 uTexSizeInv; + +uniform sampler2D tBlur1; +uniform sampler2D tBlur2; +uniform sampler2D tBlur3; +uniform sampler2D tBlur4; +uniform sampler2D tBlur5; +uniform float uBloomStrength; +uniform float uBloomRadius; +uniform float uBloomFactors[5]; +uniform vec3 uBloomTints[5]; + +float lerpBloomFactor(const in float factor) { + float mirrorFactor = 1.2 - factor; + return mix(factor, mirrorFactor, uBloomRadius); +} + +void main(void) { + vec2 coords = gl_FragCoord.xy * uTexSizeInv; + + gl_FragColor = uBloomStrength * ( + lerpBloomFactor(uBloomFactors[0]) * vec4(uBloomTints[0], 1.0) * texture2D(tBlur1, coords) + + lerpBloomFactor(uBloomFactors[1]) * vec4(uBloomTints[1], 1.0) * texture2D(tBlur2, coords) + + lerpBloomFactor(uBloomFactors[2]) * vec4(uBloomTints[2], 1.0) * texture2D(tBlur3, coords) + + lerpBloomFactor(uBloomFactors[3]) * vec4(uBloomTints[3], 1.0) * texture2D(tBlur4, coords) + + lerpBloomFactor(uBloomFactors[4]) * vec4(uBloomTints[4], 1.0) * texture2D(tBlur5, coords) + ); +} +`;var iK=` +precision highp float; +precision highp int; +precision highp sampler2D; + +uniform sampler2D tColor; +uniform sampler2D tEmissive; +uniform sampler2D tDepth; +uniform vec2 uTexSizeInv; + +uniform vec3 uDefaultColor; +uniform float uDefaultOpacity; +uniform float uLuminosityThreshold; +uniform float uSmoothWidth; + +#include common + +float getDepth(const in vec2 coords) { + #ifdef depthTextureSupport + return texture2D(tDepth, coords).r; + #else + return unpackRGBAToDepth(texture2D(tDepth, coords)); + #endif +} + +bool isBackground(const in float depth) { + return depth == 1.0; +} + +void main(void) { + vec2 coords = gl_FragCoord.xy * uTexSizeInv; + vec4 texel = texture2D(tColor, coords); + float emissive = texture2D(tEmissive, coords).a; + float depth = getDepth(coords); + + if (isBackground(depth)) { + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + return; + } + + vec4 outputColor = vec4(uDefaultColor.rgb, uDefaultOpacity); + + #if defined(dMode_luminosity) + vec3 luma = vec3(0.299, 0.587, 0.114); + float v = dot(texel.xyz, luma); + float alpha = smoothstep(uLuminosityThreshold, uLuminosityThreshold + uSmoothWidth, v); + + gl_FragColor = mix(outputColor, texel, alpha); + #elif defined(dMode_emissive) + gl_FragColor = mix(outputColor, texel, emissive); + #endif +} +`;var aK=` +precision highp float; +precision highp int; +precision highp sampler2D; + +uniform sampler2D tInput; +uniform vec2 uTexSizeInv; + +uniform vec2 uDirection; +uniform float uGaussianCoefficients[dKernelRadius]; + +void main(void) { + vec2 coords = gl_FragCoord.xy * uTexSizeInv; + float weightSum = uGaussianCoefficients[0]; + vec4 diffuseSum = texture2D(tInput, coords) * weightSum; + + for(int i = 1; i < dKernelRadius; ++i) { + float x = float(i); + float w = uGaussianCoefficients[i]; + vec2 offset = uDirection * uTexSizeInv * x; + vec4 sample1 = texture2D(tInput, coords + offset); + vec4 sample2 = texture2D(tInput, coords - offset); + diffuseSum += (sample1 + sample2) * w; + weightSum += 2.0 * w; + } + + gl_FragColor = diffuseSum / weightSum; +} +`;var ZR=5,sK={strength:g.Numeric(1,{min:0,max:3,step:.1}),radius:g.Numeric(0,{min:0,max:1,step:.01}),threshold:g.Numeric(0,{min:0,max:1,step:.01},{description:"Luminosity threshold",hideIf:t=>t.mode==="emissive"}),mode:g.Select("emissive",[["luminosity","Luminosity"],["emissive","Emissive"]])},t_=class{static isEnabled(e){return e.bloom.name==="on"}constructor(e,r,n){this.webgl=e,this.horizontalBlurTargets=[],this.verticalBlurTargets=[],this.emissiveTarget=e.createRenderTarget(r,n,!0,"uint8","linear","rgba"),this.luminosityTarget=e.createRenderTarget(r,n,!1,"uint8","linear"),this.compositeTarget=e.createRenderTarget(r,n,!1,"uint8","linear");let o=Math.round(r/2),i=Math.round(n/2);for(let s=0;s`${t.radius}, ${t.bias}`,{defaultValue:[{radius:2,bias:1},{radius:5,bias:1},{radius:8,bias:1},{radius:11,bias:1}]}),nearThreshold:g.Numeric(10,{min:0,max:50,step:1}),farThreshold:g.Numeric(1500,{min:0,max:1e4,step:100})}),off:g.Group({})},{cycle:!0}),radius:g.Numeric(5,{min:0,max:20,step:.1},{description:"Final occlusion radius is 2^x",hideIf:t=>t?.multiScale.name==="on"}),bias:g.Numeric(.8,{min:0,max:3,step:.1}),blurKernelSize:g.Numeric(15,{min:1,max:25,step:2}),resolutionScale:g.Numeric(1,{min:.1,max:1,step:.05},{description:"Adjust resolution of occlusion calculation"}),color:g.Color(ce(0))}),off:g.Group({})},{cycle:!0,description:"Darken occluded crevices with the ambient occlusion effect"}),shadow:g.MappedStatic("off",{on:g.Group({steps:g.Numeric(1,{min:1,max:64,step:1}),bias:g.Numeric(.6,{min:0,max:1,step:.01}),maxDistance:g.Numeric(3,{min:0,max:256,step:1}),tolerance:g.Numeric(1,{min:0,max:10,step:.1})}),off:g.Group({})},{cycle:!0,description:"Simplistic shadows"}),outline:g.MappedStatic("off",{on:g.Group({scale:g.Numeric(1,{min:1,max:5,step:1}),threshold:g.Numeric(.33,{min:.01,max:1,step:.01}),color:g.Color(ce(0)),includeTransparent:g.Boolean(!0,{description:"Whether to show outline for transparent objects"})}),off:g.Group({})},{cycle:!0,description:"Draw outline around 3D objects"}),dof:g.MappedStatic("off",{on:g.Group(nK),off:g.Group({})},{cycle:!0,description:"DOF"}),antialiasing:g.MappedStatic("smaa",{fxaa:g.Group(FQ),smaa:g.Group(HQ),off:g.Group({})},{options:[["fxaa","FXAA"],["smaa","SMAA"],["off","Off"]],description:"Smooth pixel edges"}),sharpening:g.MappedStatic("off",{on:g.Group(tK),off:g.Group({})},{cycle:!0,description:"Contrast Adaptive Sharpening"}),background:g.Group(ZQ,{isFlat:!0}),bloom:g.MappedStatic("on",{on:g.Group(sK),off:g.Group({})},{cycle:!0,description:"Bloom"})};function nTe(t,e){let r=t.length,{radius:n,bias:o}=e||{radius:new Array(r*3).fill(0),bias:new Array(r*3).fill(0)};t=t.slice().sort((i,a)=>i.radius-a.radius);for(let i=0;i=p.length)return-2;let{x:h,y:f,width:b,height:v}=i.viewport,x=1/p.length;if(e===-1)c.render(r,n,!1),C.update(a.values.uWeight,1),C.update(a.values.tColor,c.getColorTarget(n.postprocessing).texture),a.update(),l.bind(),m.disable(d.BLEND),m.disable(d.DEPTH_TEST),m.depthMask(!1),m.viewport(h,f,b,v),m.scissor(h,f,b,v),a.render(),e+=1;else{i.viewOffset.enabled=!0,C.update(a.values.tColor,c.getColorTarget(n.postprocessing).texture),C.update(a.values.uWeight,x),a.update();let T=Math.pow(2,Math.max(0,n.multiSample.sampleLevel-2));for(let E=0;E=p.length)break}}c.postprocessing.setOcclusionOffset(0,0),this.bindOutputTarget(o),m.viewport(h,f,b,v),m.scissor(h,f,b,v);let S=e*x;return S>0&&(C.update(a.values.uWeight,1),C.update(a.values.tColor,s.texture),a.update(),m.disable(d.BLEND),a.render()),S<1&&(C.update(a.values.uWeight,1-S),C.update(a.values.tColor,l.texture),a.update(),S===0?m.disable(d.BLEND):m.enable(d.BLEND),a.render()),i.viewOffset.enabled=!1,i.update(),Ee&&u.timer.markEnd("MultiSamplePass.renderTemporalMultiSample"),e>=p.length?-2:e}},eL=[[[0,0]],[[0,0],[-4,-4]],[[0,0],[6,-2],[-6,2],[2,6]],[[0,0],[-1,3],[5,1],[-3,-5],[-5,5],[-7,-1],[3,7],[7,-7]],[[0,0],[-1,-3],[-3,2],[4,-1],[-5,-2],[2,5],[5,3],[3,-5],[-2,6],[0,-7],[-4,-6],[-6,4],[-8,0],[7,-4],[6,7],[-7,-8]],[[0,0],[-7,-5],[-3,-5],[-5,-4],[-1,-4],[-2,-2],[-6,-1],[-4,0],[-7,1],[-1,2],[-6,3],[-3,3],[-7,6],[-3,6],[-5,7],[-1,7],[5,-7],[1,-6],[6,-5],[4,-4],[2,-3],[7,-2],[1,-1],[4,-1],[2,1],[6,2],[0,4],[4,4],[2,5],[7,5],[5,6],[3,7]]];eL.forEach(t=>{t.forEach(e=>{e[0]*=.0625,e[1]*=.0625})});var Lv=class{update(e,r){return e&&(this.sampleIndex=-1),r.mode==="temporal"?this.sampleIndex!==-2:!1}render(e,r,n,o){return this.sampleIndex=this.multiSamplePass.render(this.sampleIndex,e,r,n,!!o),this.sampleIndex<0}constructor(e){this.multiSamplePass=e,this.sampleIndex=-2}};var tL={eyeSeparation:g.Numeric(.062,{min:.02,max:.1,step:.001},{description:"Distance between left and right camera."}),focus:g.Numeric(10,{min:1,max:20,step:.1},{description:"Apparent object distance."})},sTe=g.getDefaultValues(tL);var Dd=class{get viewport(){return this.parent.viewport}get viewOffset(){return this.parent.viewOffset}constructor(e,r={}){this.parent=e,this.left=new o_,this.right=new o_,this.props=w(w({},sTe),r)}setProps(e){Object.assign(this.props,e)}update(){this.parent.update(),lTe(this.parent,this.props,this.left,this.right)}};(function(t){function e(r){return"left"in r&&"right"in r}t.is=e})(Dd||(Dd={}));var o_=class{constructor(){this.viewport=_n.create(0,0,0,0),this.view=W(),this.projection=W(),this.projectionView=W(),this.inverseProjectionView=W(),this.state=an.createDefaultSnapshot(),this.viewOffset=an.ViewOffset(),this.far=0,this.near=0,this.fogFar=0,this.fogNear=0}},mK=W.identity(),pK=W.identity();function lTe(t,e,r,n){_n.copy(r.viewport,t.viewport),W.copy(r.view,t.view),W.copy(r.projection,t.projection),an.copySnapshot(r.state,t.state),an.copyViewOffset(r.viewOffset,t.viewOffset),r.far=t.far,r.near=t.near,r.fogFar=t.fogFar,r.fogNear=t.fogNear,_n.copy(n.viewport,t.viewport),W.copy(n.view,t.view),W.copy(n.projection,t.projection),an.copySnapshot(n.state,t.state),an.copyViewOffset(n.viewOffset,t.viewOffset),n.far=t.far,n.near=t.near,n.fogFar=t.fogFar,n.fogNear=t.fogNear;let o=Math.floor(t.viewport.width/2),i=o/t.viewport.height;r.viewport.width=o,n.viewport.x+=o,n.viewport.width-=o;let a=e.eyeSeparation/2,s=a*t.near/e.focus,l=t.near*Math.tan(t.state.fov*.5),c,u;mK[12]=-a,pK[12]=a,c=-l*i+s,u=l*i+s,r.projection[0]=2*t.near/(u-c),r.projection[8]=(u+c)/(u-c),W.mul(r.view,r.view,mK),W.mul(r.projectionView,r.projection,r.view),W.invert(r.inverseProjectionView,r.projectionView),c=-l*i-s,u=l*i-s,n.projection[0]=2*t.near/(u-c),n.projection[8]=(u+c)/(u-c),W.mul(n.view,n.view,pK),W.mul(n.projectionView,n.projection,n.view),W.invert(n.inverseProjectionView,n.projectionView)}var rL=Math.pow(2,24)-2,i_=class{constructor(e,r,n){this.webgl=e,this.drawPass=r,this.pickScale=n;let o=n/e.pixelRatio;this.pickWidth=Math.ceil(r.colorTarget.getWidth()*o),this.pickHeight=Math.ceil(r.colorTarget.getHeight()*o);let{resources:i,extensions:{drawBuffers:a},gl:s}=e;a?(this.objectPickTexture=i.texture("image-uint8","rgba","ubyte","nearest"),this.objectPickTexture.define(this.pickWidth,this.pickHeight),this.instancePickTexture=i.texture("image-uint8","rgba","ubyte","nearest"),this.instancePickTexture.define(this.pickWidth,this.pickHeight),this.groupPickTexture=i.texture("image-uint8","rgba","ubyte","nearest"),this.groupPickTexture.define(this.pickWidth,this.pickHeight),this.depthPickTexture=i.texture("image-uint8","rgba","ubyte","nearest"),this.depthPickTexture.define(this.pickWidth,this.pickHeight),this.framebuffer=i.framebuffer(),this.objectPickFramebuffer=i.framebuffer(),this.instancePickFramebuffer=i.framebuffer(),this.groupPickFramebuffer=i.framebuffer(),this.depthPickFramebuffer=i.framebuffer(),this.framebuffer.bind(),a.drawBuffers([a.COLOR_ATTACHMENT0,a.COLOR_ATTACHMENT1,a.COLOR_ATTACHMENT2,a.COLOR_ATTACHMENT3]),this.objectPickTexture.attachFramebuffer(this.framebuffer,"color0"),this.instancePickTexture.attachFramebuffer(this.framebuffer,"color1"),this.groupPickTexture.attachFramebuffer(this.framebuffer,"color2"),this.depthPickTexture.attachFramebuffer(this.framebuffer,"color3"),this.depthRenderbuffer=ct(s)?i.renderbuffer("depth32f","depth",this.pickWidth,this.pickHeight):i.renderbuffer("depth16","depth",this.pickWidth,this.pickHeight),this.depthRenderbuffer.attachFramebuffer(this.framebuffer),this.objectPickTexture.attachFramebuffer(this.objectPickFramebuffer,"color0"),this.instancePickTexture.attachFramebuffer(this.instancePickFramebuffer,"color0"),this.groupPickTexture.attachFramebuffer(this.groupPickFramebuffer,"color0"),this.depthPickTexture.attachFramebuffer(this.depthPickFramebuffer,"color0")):(this.objectPickTarget=e.createRenderTarget(this.pickWidth,this.pickHeight),this.instancePickTarget=e.createRenderTarget(this.pickWidth,this.pickHeight),this.groupPickTarget=e.createRenderTarget(this.pickWidth,this.pickHeight),this.depthPickTarget=e.createRenderTarget(this.pickWidth,this.pickHeight))}get pickRatio(){return this.pickScale/this.webgl.pixelRatio}setPickScale(e){this.pickScale=e,this.syncSize()}bindObject(){this.webgl.extensions.drawBuffers?this.objectPickFramebuffer.bind():this.objectPickTarget.bind()}bindInstance(){this.webgl.extensions.drawBuffers?this.instancePickFramebuffer.bind():this.instancePickTarget.bind()}bindGroup(){this.webgl.extensions.drawBuffers?this.groupPickFramebuffer.bind():this.groupPickTarget.bind()}bindDepth(){this.webgl.extensions.drawBuffers?this.depthPickFramebuffer.bind():this.depthPickTarget.bind()}get drawingBufferHeight(){return this.drawPass.colorTarget.getHeight()}syncSize(){let e=this.pickScale/this.webgl.pixelRatio,r=Math.ceil(this.drawPass.colorTarget.getWidth()*e),n=Math.ceil(this.drawPass.colorTarget.getHeight()*e);(r!==this.pickWidth||n!==this.pickHeight)&&(this.pickWidth=r,this.pickHeight=n,this.webgl.extensions.drawBuffers?(this.objectPickTexture.define(this.pickWidth,this.pickHeight),this.instancePickTexture.define(this.pickWidth,this.pickHeight),this.groupPickTexture.define(this.pickWidth,this.pickHeight),this.depthPickTexture.define(this.pickWidth,this.pickHeight),this.depthRenderbuffer.setSize(this.pickWidth,this.pickHeight)):(this.objectPickTarget.setSize(this.pickWidth,this.pickHeight),this.instancePickTarget.setSize(this.pickWidth,this.pickHeight),this.groupPickTarget.setSize(this.pickWidth,this.pickHeight),this.depthPickTarget.setSize(this.pickWidth,this.pickHeight)))}renderVariant(e,r,n,o,i,a){e.clear(!1),e.update(r,n),e.renderPick(n.primitives,r,i,null,a),o.handle.isEnabled&&e.renderPick(o.handle.scene,r,i,null,a),o.camera.isEnabled&&(o.camera.update(r),e.update(o.camera.camera,o.camera.scene),e.renderPick(o.camera.scene,o.camera.camera,i,null,a))}render(e,r,n,o){this.webgl.extensions.drawBuffers?(this.framebuffer.bind(),this.renderVariant(e,r,n,o,"pick",ah.None)):(this.objectPickTarget.bind(),this.renderVariant(e,r,n,o,"pick",ah.Object),this.instancePickTarget.bind(),this.renderVariant(e,r,n,o,"pick",ah.Instance),this.groupPickTarget.bind(),this.renderVariant(e,r,n,o,"pick",ah.Group),this.depthPickTarget.bind(),this.renderVariant(e,r,n,o,"depth",ah.None))}},a_=class{setupBuffers(){let e=this.pickWidth*this.pickHeight*4;(!this.objectBuffer||this.objectBuffer.length!==e)&&(this.objectBuffer=new Uint8Array(e),this.instanceBuffer=new Uint8Array(e),this.groupBuffer=new Uint8Array(e),this.depthBuffer=new Uint8Array(e))}setViewport(e,r,n,o){_n.set(this.viewport,e,r,n,o),this.pickRatio=this.pickPass.pickRatio,this.pickX=Math.ceil(e*this.pickRatio),this.pickY=Math.ceil(r*this.pickRatio);let i=Math.floor(n*this.pickRatio),a=Math.floor(o*this.pickRatio);(i!==this.pickWidth||a!==this.pickHeight)&&(this.pickWidth=i,this.pickHeight=a,this.halfPickWidth=Math.floor(this.pickWidth/2),this.setupBuffers()),this.spiral=bz(Math.round(this.pickRatio*this.pickPadding))}syncBuffers(){Ee&&this.webgl.timer.mark("PickHelper.syncBuffers");let{pickX:e,pickY:r,pickWidth:n,pickHeight:o}=this;this.pickPass.bindObject(),this.webgl.readPixels(e,r,n,o,this.objectBuffer),this.pickPass.bindInstance(),this.webgl.readPixels(e,r,n,o,this.instanceBuffer),this.pickPass.bindGroup(),this.webgl.readPixels(e,r,n,o,this.groupBuffer),this.pickPass.bindDepth(),this.webgl.readPixels(e,r,n,o,this.depthBuffer),Ee&&this.webgl.timer.markEnd("PickHelper.syncBuffers")}getBufferIdx(e,r){return(r*this.pickWidth+e)*4}getDepth(e,r){let n=this.getBufferIdx(e,r),o=this.depthBuffer;return Vj(o[n],o[n+1],o[n+2],o[n+3])}getId(e,r,n){let o=this.getBufferIdx(e,r);return Ig(n[o],n[o+1],n[o+2])}render(e){Ee&&this.webgl.timer.mark("PickHelper.render",!0);let{pickX:r,pickY:n,pickWidth:o,pickHeight:i,halfPickWidth:a}=this,{renderer:s,scene:l,helper:c}=this;s.setTransparentBackground(!1),s.setDrawingBufferSize(o,i),s.setPixelRatio(this.pickRatio),Dd.is(e)?(s.setViewport(r,n,a,i),this.pickPass.render(s,e.left,l,c),s.setViewport(r+a,n,o-a,i),this.pickPass.render(s,e.right,l,c)):(s.setViewport(r,n,o,i),this.pickPass.render(s,e,l,c)),this.dirty=!1,Ee&&this.webgl.timer.markEnd("PickHelper.render")}identifyInternal(e,r,n){let{webgl:o,pickRatio:i}=this;if(o.isContextLost)return;e*=o.pixelRatio,r*=o.pixelRatio,r=this.pickPass.drawingBufferHeight-r;let{viewport:a}=this;if(ea.x+a.width||r>a.y+a.height)return;this.dirty&&(Ee&&this.webgl.timer.mark("PickHelper.identify"),this.render(n),this.syncBuffers(),Ee&&this.webgl.timer.markEnd("PickHelper.identify"));let s=e-a.x,l=r-a.y,c=Math.floor(s*i),u=Math.floor(l*i),d=this.getId(c,u,this.objectBuffer);if(d===-1||d===rL)return;let m=this.getId(c,u,this.instanceBuffer);if(m===-1||m===rL)return;let p=this.getId(c,u,this.groupBuffer);if(p===-1||p===rL)return;let h=this.getDepth(c,u),f=y.create(e,r,h);if(Dd.is(n)){let b=Math.floor(a.width/2);e>a.x+b?(f[0]=a.x+(s-b)*2,kv(f,f,a,n.right.inverseProjectionView)):(f[0]=a.x+s*2,kv(f,f,a,n.left.inverseProjectionView))}else kv(f,f,a,n.inverseProjectionView);return{id:{objectId:d,instanceId:m,groupId:p},position:f}}identify(e,r,n){for(let o of this.spiral){let i=this.identifyInternal(e+o[0],r+o[1],n);if(i)return i}}constructor(e,r,n,o,i,a,s=1){this.webgl=e,this.renderer=r,this.scene=n,this.helper=o,this.pickPass=i,this.pickPadding=s,this.dirty=!0,this.viewport=_n(),this.setViewport(a.x,a.y,a.width,a.height)}};var fK=` +precision highp float; + +uniform sampler2D tWboitA; +uniform sampler2D tWboitB; +uniform vec2 uTexSize; + +void main() { + vec2 coords = gl_FragCoord.xy / uTexSize; + + vec4 accum = texture2D(tWboitA, coords); + float r = 1.0 - accum.a; + + accum.a = texture2D(tWboitB, coords).r; + // divisor needs to allow very small values for nice fading + gl_FragColor = vec4(accum.rgb / clamp(accum.a, 0.00000001, 50000.0), r); +} +`;var cTe=U(w({},Er),{tWboitA:We("texture","rgba","float","nearest"),tWboitB:We("texture","rgba","float","nearest"),uTexSize:ee("v2")}),uTe=Qt("evaluate-wboit",zr,fK);function dTe(t,e,r){let n=U(w({},Ir),{tWboitA:C.create(e),tWboitB:C.create(r),uTexSize:C.create(ne.create(e.getWidth(),e.getHeight()))}),o=w({},cTe),i=dr(t,"triangles",uTe,o,n);return mr(i,n)}var s_=class t{get supported(){return this._supported}bind(){let{state:e,gl:r}=this.webgl;this.framebuffer.bind(),e.clearColor(0,0,0,1),r.clear(r.COLOR_BUFFER_BIT),e.disable(r.DEPTH_TEST),e.blendFuncSeparate(r.ONE,r.ONE,r.ZERO,r.ONE_MINUS_SRC_ALPHA),e.enable(r.BLEND)}render(){Ee&&this.webgl.timer.mark("WboitPass.render");let{state:e,gl:r}=this.webgl;e.blendFuncSeparate(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA),e.enable(r.BLEND),this.renderable.update(),this.renderable.render(),Ee&&this.webgl.timer.markEnd("WboitPass.render")}setSize(e,r){let[n,o]=this.renderable.values.uTexSize.ref.value;(e!==n||r!==o)&&(this.textureA.define(e,r),this.textureB.define(e,r),this.depthRenderbuffer.setSize(e,r),C.update(this.renderable.values.uTexSize,ne.set(this.renderable.values.uTexSize.ref.value,e,r)))}reset(){this._supported&&this._init()}_init(){let{extensions:{drawBuffers:e}}=this.webgl;this.framebuffer.bind(),e.drawBuffers([e.COLOR_ATTACHMENT0,e.COLOR_ATTACHMENT1]),this.textureA.attachFramebuffer(this.framebuffer,"color0"),this.textureB.attachFramebuffer(this.framebuffer,"color1"),this.depthRenderbuffer.attachFramebuffer(this.framebuffer)}static isSupported(e){let{extensions:{drawBuffers:r,textureFloat:n,colorBufferFloat:o,depthTexture:i}}=e;if(!n||!o||!i||!r){if(ht){let a=[];n||a.push("textureFloat"),o||a.push("colorBufferFloat"),i||a.push("depthTexture"),r||a.push("drawBuffers"),console.log(`Missing "${a.join('", "')}" extensions required for "wboit"`)}return!1}else return!0}constructor(e,r,n){if(this.webgl=e,this._supported=!1,!t.isSupported(e))return;let{resources:o,gl:i}=e;this.textureA=o.texture("image-float32","rgba","float","nearest"),this.textureA.define(r,n),this.textureB=o.texture("image-float32","rgba","float","nearest"),this.textureB.define(r,n),this.depthRenderbuffer=ct(i)?o.renderbuffer("depth32f","depth",r,n):o.renderbuffer("depth16","depth",r,n),this.renderable=dTe(e,this.textureA,this.textureB),this.framebuffer=o.framebuffer(),this._supported=!0,this._init()}};var hK=` +precision highp float; + +uniform sampler2D tDpoitFrontColor; +uniform vec2 uTexSize; + +void main() { + vec2 coords = gl_FragCoord.xy / uTexSize; + gl_FragColor = texture2D(tDpoitFrontColor, coords); +} +`;var gK=` + precision highp float; + + uniform sampler2D tDpoitBackColor; + uniform vec2 uTexSize; + + void main() { + vec2 coords = gl_FragCoord.xy / uTexSize; + gl_FragColor = texture2D(tDpoitBackColor, coords); + if (gl_FragColor.a == 0.0) { + discard; + } + } +`;var mTe=U(w({},Er),{tDpoitBackColor:We("texture","rgba","float","nearest"),uTexSize:ee("v2")}),pTe=Qt("blend-back-dpoit",zr,gK);function fTe(t,e){let r=U(w({},Ir),{tDpoitBackColor:C.create(e),uTexSize:C.create(ne.create(e.getWidth(),e.getHeight()))}),n=w({},mTe),o=dr(t,"triangles",pTe,n,r);return mr(o,r)}var hTe=U(w({},Er),{tDpoitFrontColor:We("texture","rgba","float","nearest"),uTexSize:ee("v2")}),gTe=Qt("evaluate-dpoit",zr,hK);function yTe(t,e){let r=U(w({},Ir),{tDpoitFrontColor:C.create(e),uTexSize:C.create(ne.create(e.getWidth(),e.getHeight()))}),n=w({},hTe),o=dr(t,"triangles",gTe,n,r);return mr(o,r)}var l_=class t{get supported(){return this._supported}bind(){let{state:e,gl:r,extensions:{blendMinMax:n}}=this.webgl;return this.passCount=0,this.depthFramebuffers[0].bind(),e.clearColor(this.DEPTH_CLEAR_VALUE,this.DEPTH_CLEAR_VALUE,0,0),r.clear(r.COLOR_BUFFER_BIT),this.depthFramebuffers[1].bind(),e.clearColor(-this.MIN_DEPTH,this.MAX_DEPTH,0,0),r.clear(r.COLOR_BUFFER_BIT),this.colorFramebuffers[0].bind(),e.clearColor(0,0,0,0),r.clear(r.COLOR_BUFFER_BIT),this.colorFramebuffers[1].bind(),e.clearColor(0,0,0,0),r.clear(r.COLOR_BUFFER_BIT),this.depthFramebuffers[0].bind(),e.blendEquation(n.MAX),e.depthMask(!1),{depth:this.depthTextures[1],frontColor:this.colorFrontTextures[1],backColor:this.colorBackTextures[1]}}bindDualDepthPeeling(){let{state:e,gl:r,extensions:{blendMinMax:n}}=this.webgl;return this.readId=this.passCount%2,this.writeId=1-this.readId,this.passCount+=1,this.depthFramebuffers[this.writeId].bind(),e.clearColor(this.DEPTH_CLEAR_VALUE,this.DEPTH_CLEAR_VALUE,0,0),r.clear(r.COLOR_BUFFER_BIT),this.colorFramebuffers[this.writeId].bind(),e.clearColor(0,0,0,0),r.clear(r.COLOR_BUFFER_BIT),this.depthFramebuffers[this.writeId].bind(),e.blendEquation(n.MAX),e.depthMask(!1),{depth:this.depthTextures[this.readId],frontColor:this.colorFrontTextures[this.readId],backColor:this.colorBackTextures[this.readId]}}renderBlendBack(){Ee&&this.webgl.timer.mark("DpoitPass.renderBlendBack");let{state:e,gl:r}=this.webgl;e.blendEquation(r.FUNC_ADD),e.blendFuncSeparate(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA),C.update(this.blendBackRenderable.values.tDpoitBackColor,this.colorBackTextures[this.writeId]),this.blendBackRenderable.update(),this.blendBackRenderable.render(),Ee&&this.webgl.timer.markEnd("DpoitPass.renderBlendBack")}render(){Ee&&this.webgl.timer.mark("DpoitPass.render");let{state:e,gl:r}=this.webgl;e.blendFunc(r.ONE,r.ONE_MINUS_SRC_ALPHA),C.update(this.renderable.values.tDpoitFrontColor,this.colorFrontTextures[this.writeId]),this.renderable.update(),this.renderable.render(),Ee&&this.webgl.timer.markEnd("DpoitPass.render")}setSize(e,r){let[n,o]=this.renderable.values.uTexSize.ref.value;if(e!==n||r!==o){for(let i=0;i<2;i++)this.depthTextures[i].define(e,r),this.colorFrontTextures[i].define(e,r),this.colorBackTextures[i].define(e,r);C.update(this.renderable.values.uTexSize,ne.set(this.renderable.values.uTexSize.ref.value,e,r)),C.update(this.blendBackRenderable.values.uTexSize,ne.set(this.blendBackRenderable.values.uTexSize.ref.value,e,r))}}reset(){this._supported&&this._init()}_init(){let{extensions:{drawBuffers:e}}=this.webgl;for(let r=0;r<2;r++)this.depthFramebuffers[r].bind(),e.drawBuffers([e.COLOR_ATTACHMENT0,e.COLOR_ATTACHMENT1,e.COLOR_ATTACHMENT2]),this.colorFrontTextures[r].attachFramebuffer(this.depthFramebuffers[r],"color0"),this.colorBackTextures[r].attachFramebuffer(this.depthFramebuffers[r],"color1"),this.depthTextures[r].attachFramebuffer(this.depthFramebuffers[r],"color2"),this.colorFramebuffers[r].bind(),e.drawBuffers([e.COLOR_ATTACHMENT0,e.COLOR_ATTACHMENT1]),this.colorFrontTextures[r].attachFramebuffer(this.colorFramebuffers[r],"color0"),this.colorBackTextures[r].attachFramebuffer(this.colorFramebuffers[r],"color1")}static isSupported(e){let{extensions:{drawBuffers:r,textureFloat:n,colorBufferFloat:o,depthTexture:i,blendMinMax:a}}=e;if(!n||!o||!i||!r||!a){if(ht){let s=[];n||s.push("textureFloat"),o||s.push("colorBufferFloat"),i||s.push("depthTexture"),r||s.push("drawBuffers"),a||s.push("blendMinMax"),console.log(`Missing "${s.join('", "')}" extensions required for "dpoit"`)}return!1}else return!0}constructor(e,r,n){if(this.webgl=e,this.DEPTH_CLEAR_VALUE=-99999,this.MAX_DEPTH=1,this.MIN_DEPTH=0,this.passCount=0,this._supported=!1,!t.isSupported(e))return;let{resources:o,extensions:{colorBufferHalfFloat:i,textureHalfFloat:a}}=e;ct(e.gl)?(this.depthTextures=[o.texture("image-float32","rg","float","nearest"),o.texture("image-float32","rg","float","nearest")],this.colorFrontTextures=i&&a?[o.texture("image-float16","rgba","fp16","nearest"),o.texture("image-float16","rgba","fp16","nearest")]:[o.texture("image-float32","rgba","float","nearest"),o.texture("image-float32","rgba","float","nearest")],this.colorBackTextures=i&&a?[o.texture("image-float16","rgba","fp16","nearest"),o.texture("image-float16","rgba","fp16","nearest")]:[o.texture("image-float32","rgba","float","nearest"),o.texture("image-float32","rgba","float","nearest")]):(this.depthTextures=[o.texture("image-float32","rgba","float","nearest"),o.texture("image-float32","rgba","float","nearest")],this.colorFrontTextures=[o.texture("image-float32","rgba","float","nearest"),o.texture("image-float32","rgba","float","nearest")],this.colorBackTextures=[o.texture("image-float32","rgba","float","nearest"),o.texture("image-float32","rgba","float","nearest")]),this.depthTextures[0].define(r,n),this.depthTextures[1].define(r,n),this.colorFrontTextures[0].define(r,n),this.colorFrontTextures[1].define(r,n),this.colorBackTextures[0].define(r,n),this.colorBackTextures[1].define(r,n),this.depthFramebuffers=[o.framebuffer(),o.framebuffer()],this.colorFramebuffers=[o.framebuffer(),o.framebuffer()],this.blendBackRenderable=fTe(e,this.colorBackTextures[0]),this.renderable=yTe(e,this.colorFrontTextures[0]),this._supported=!0,this._init()}};var yK=` +precision highp float; +precision highp sampler2D; + +uniform vec2 uTexSizeInv; +uniform sampler2D tEdgeTexture; +uniform vec3 uHighlightEdgeColor; +uniform vec3 uSelectEdgeColor; +uniform float uHighlightEdgeStrength; +uniform float uSelectEdgeStrength; +uniform float uGhostEdgeStrength; +uniform float uInnerEdgeFactor; + +void main() { + vec2 coords = gl_FragCoord.xy * uTexSizeInv; + vec4 edgeValue = texture2D(tEdgeTexture, coords); + if (edgeValue.a > 0.0) { + vec3 edgeColor = edgeValue.b == 1.0 ? uHighlightEdgeColor : uSelectEdgeColor; + gl_FragColor.rgb = edgeValue.g > 0.0 ? edgeColor : edgeColor * uInnerEdgeFactor; + gl_FragColor.a = (edgeValue.r == 1.0 ? uGhostEdgeStrength : 1.0) * edgeValue.a; + float edgeStrength = edgeValue.b == 1.0 ? uHighlightEdgeStrength : uSelectEdgeStrength; + gl_FragColor.a *= edgeStrength; + } else { + gl_FragColor = vec4(0.0); + } +} +`;var vK=` +precision highp float; +precision highp sampler2D; + +uniform sampler2D tMaskTexture; +uniform vec2 uTexSizeInv; + +void main() { + vec2 coords = gl_FragCoord.xy * uTexSizeInv; + vec4 offset = vec4(float(dEdgeScale), 0.0, 0.0, float(dEdgeScale)) * vec4(uTexSizeInv, uTexSizeInv); + vec4 c0 = texture2D(tMaskTexture, coords); + vec4 c1 = texture2D(tMaskTexture, coords + offset.xy); + vec4 c2 = texture2D(tMaskTexture, coords - offset.xy); + vec4 c3 = texture2D(tMaskTexture, coords + offset.yw); + vec4 c4 = texture2D(tMaskTexture, coords - offset.yw); + float diff1 = (c1.r - c2.r) * 0.5; + float diff2 = (c3.r - c4.r) * 0.5; + float d = length(vec2(diff1, diff2)); + if (d <= 0.0) + discard; + float a1 = min(c1.g, c2.g); + float a2 = min(c3.g, c4.g); + float visibility = min(a1, a2) > 0.001 ? 1.0 : 0.0; + float mask = c0.r; + float marker = min(c1.b, min(c2.b, min(c3.b, c4.b))); + float fogAlpha = min(c1.a, min(c2.a, min(c3.a, c4.a))); + gl_FragColor = vec4(visibility, mask, marker, fogAlpha); +} +`;var c_={enabled:g.Boolean(!0),highlightEdgeColor:g.Color(ce.darken(ce.fromNormalizedRgb(1,.4,.6),1)),selectEdgeColor:g.Color(ce.darken(ce.fromNormalizedRgb(.2,1,.1),1)),edgeScale:g.Numeric(1,{min:1,max:3,step:1},{description:"Thickness of the edge."}),highlightEdgeStrength:g.Numeric(1,{min:0,max:1,step:.1}),selectEdgeStrength:g.Numeric(1,{min:0,max:1,step:.1}),ghostEdgeStrength:g.Numeric(.3,{min:0,max:1,step:.1},{description:"Opacity of the hidden edges that are covered by other geometry. When set to 1, one less geometry render pass is done."}),innerEdgeFactor:g.Numeric(1.5,{min:0,max:3,step:.1},{description:"Factor to multiply the inner edge color with - for added contrast."})},tS=class{static isEnabled(e){return e.enabled}constructor(e,r,n){this.webgl=e,this.depthTarget=e.createRenderTarget(r,n),this.maskTarget=e.createRenderTarget(r,n),this.edgesTarget=e.createRenderTarget(r,n),this.edge=xTe(e,this.maskTarget.texture),this.overlay=TTe(e,this.edgesTarget.texture)}setEdgeState(e){let{gl:r,state:n}=this.webgl;n.enable(r.SCISSOR_TEST),n.enable(r.BLEND),n.blendFunc(r.ONE,r.ONE),n.blendEquation(r.FUNC_ADD),n.disable(r.DEPTH_TEST),n.depthMask(!1);let{x:o,y:i,width:a,height:s}=e;n.viewport(o,i,a,s),n.scissor(o,i,a,s),n.clearColor(0,0,0,0),r.clear(r.COLOR_BUFFER_BIT)}setOverlayState(e){let{gl:r,state:n}=this.webgl;n.enable(r.SCISSOR_TEST),n.enable(r.BLEND),n.blendFunc(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA),n.blendEquation(r.FUNC_ADD),n.disable(r.DEPTH_TEST),n.depthMask(!1);let{x:o,y:i,width:a,height:s}=e;n.viewport(o,i,a,s),n.scissor(o,i,a,s)}setSize(e,r){let n=this.depthTarget.getWidth(),o=this.depthTarget.getHeight();(e!==n||r!==o)&&(this.depthTarget.setSize(e,r),this.maskTarget.setSize(e,r),this.edgesTarget.setSize(e,r),C.update(this.edge.values.uTexSizeInv,ne.set(this.edge.values.uTexSizeInv.ref.value,1/e,1/r)),C.update(this.overlay.values.uTexSizeInv,ne.set(this.overlay.values.uTexSizeInv.ref.value,1/e,1/r)))}update(e){let{highlightEdgeColor:r,selectEdgeColor:n,edgeScale:o,innerEdgeFactor:i,ghostEdgeStrength:a,highlightEdgeStrength:s,selectEdgeStrength:l}=e,{values:c}=this.edge,u=Math.max(1,Math.round(o*this.webgl.pixelRatio));c.dEdgeScale.ref.value!==u&&(C.update(c.dEdgeScale,u),this.edge.update());let{values:d}=this.overlay;C.update(d.uHighlightEdgeColor,ce.toVec3Normalized(d.uHighlightEdgeColor.ref.value,r)),C.update(d.uSelectEdgeColor,ce.toVec3Normalized(d.uSelectEdgeColor.ref.value,n)),C.updateIfChanged(d.uInnerEdgeFactor,i),C.updateIfChanged(d.uGhostEdgeStrength,a),C.updateIfChanged(d.uHighlightEdgeStrength,s),C.updateIfChanged(d.uSelectEdgeStrength,l)}render(e,r){Ee&&this.webgl.timer.mark("MarkingPass.render"),this.edgesTarget.bind(),this.setEdgeState(e),this.edge.render(),r?r.bind():this.webgl.unbindFramebuffer(),this.setOverlayState(e),this.overlay.render(),Ee&&this.webgl.timer.markEnd("MarkingPass.render")}},vTe=U(w({},Er),{tMaskTexture:We("texture","rgba","ubyte","linear"),uTexSizeInv:ee("v2"),dEdgeScale:Ye("number")}),bTe=Qt("edge",zr,vK);function xTe(t,e){let r=e.getWidth(),n=e.getHeight(),o=U(w({},Ir),{tMaskTexture:C.create(e),uTexSizeInv:C.create(ne.create(1/r,1/n)),dEdgeScale:C.create(1)}),i=w({},vTe),a=dr(t,"triangles",bTe,i,o);return mr(a,o)}var STe=U(w({},Er),{tEdgeTexture:We("texture","rgba","ubyte","linear"),uTexSizeInv:ee("v2"),uHighlightEdgeColor:ee("v3"),uSelectEdgeColor:ee("v3"),uHighlightEdgeStrength:ee("f"),uSelectEdgeStrength:ee("f"),uGhostEdgeStrength:ee("f"),uInnerEdgeFactor:ee("f")}),CTe=Qt("overlay",zr,yK);function TTe(t,e){let r=e.getWidth(),n=e.getHeight(),o=U(w({},Ir),{tEdgeTexture:C.create(e),uTexSizeInv:C.create(ne.create(1/r,1/n)),uHighlightEdgeColor:C.create(y()),uSelectEdgeColor:C.create(y()),uHighlightEdgeStrength:C.create(1),uSelectEdgeStrength:C.create(1),uGhostEdgeStrength:C.create(0),uInnerEdgeFactor:C.create(0)}),i=w({},STe),a=dr(t,"triangles",CTe,i,o);return mr(a,o)}var Bv=class{setTransparency(e){e==="wboit"?(this.transparencyMode=this.wboit.supported?"wboit":"blended",ht&&!this.wboit.supported&&console.log('Missing "wboit" support, falling back to "blended".')):e==="dpoit"?(this.transparencyMode=this.dpoit.supported?"dpoit":"blended",ht&&!this.dpoit.supported&&console.log('Missing "dpoit" support, falling back to "blended".')):this.transparencyMode="blended",this.depthTextureOpaque.detachFramebuffer(this.postprocessing.target.framebuffer,"depth")}get transparency(){return this.transparencyMode}constructor(e,r,n,o,i){this.webgl=e,this.transparencyMode="blended";let{extensions:a,resources:s,isWebGL2:l}=e;this.drawTarget=XG(e.gl),this.colorTarget=e.createRenderTarget(n,o,!0,"uint8","linear"),this.packedDepth=!a.depthTexture,this.depthTargetTransparent=e.createRenderTarget(n,o),this.depthTextureTransparent=this.depthTargetTransparent.texture,this.depthTargetOpaque=this.packedDepth?e.createRenderTarget(n,o):null,this.depthTextureOpaque=this.depthTargetOpaque?this.depthTargetOpaque.texture:s.texture("image-depth","depth",l?"float":"ushort","nearest"),this.packedDepth||this.depthTextureOpaque.define(n,o),this.wboit=new s_(e,n,o),this.dpoit=new l_(e,n,o),this.marking=new tS(e,n,o),this.postprocessing=new ls(e,r,this),this.antialiasing=new uh(e,n,o),this.bloom=new t_(e,n,o),this.dof=new Sm(e,n,o),this.copyFboTarget=dp(e,this.colorTarget.texture),this.copyFboPostprocessing=dp(e,this.postprocessing.target.texture),this.setTransparency(i)}reset(){this.wboit.reset(),this.dpoit.reset()}setSize(e,r){let n=this.colorTarget.getWidth(),o=this.colorTarget.getHeight();(e!==n||r!==o)&&(this.colorTarget.setSize(e,r),this.depthTargetTransparent.setSize(e,r),this.depthTargetOpaque?this.depthTargetOpaque.setSize(e,r):this.depthTextureOpaque.define(e,r),C.update(this.copyFboTarget.values.uTexSize,ne.set(this.copyFboTarget.values.uTexSize.ref.value,e,r)),C.update(this.copyFboPostprocessing.values.uTexSize,ne.set(this.copyFboPostprocessing.values.uTexSize.ref.value,e,r))),this.wboit.supported&&this.wboit.setSize(e,r),this.dpoit.supported&&this.dpoit.setSize(e,r),this.marking.setSize(e,r),this.postprocessing.setSize(e,r),this.antialiasing.setSize(e,r),this.dof.setSize(e,r),this.bloom.setSize(e,r)}_renderDpoit(e,r,n,o,i,a){if(!this.dpoit.supported)throw new Error("expected dpoit to be supported");if(this.depthTextureOpaque.attachFramebuffer(this.colorTarget.framebuffer,"depth"),e.clear(!0),n.hasOpaque&&e.renderDpoitOpaque(n.primitives,r,null),ls.isEnabled(a)&&((ls.isTransparentOutlineEnabled(a)||Sm.isEnabled(a))&&(this.depthTargetTransparent.bind(),e.clearDepth(!0),n.opacityAverage<1&&e.renderDepthTransparent(n.primitives,r,this.depthTextureOpaque)),this.postprocessing.render(r,!1,i,e.props.backgroundColor,a,e.light)),this.depthTextureOpaque.detachFramebuffer(this.colorTarget.framebuffer,"depth"),n.opacityAverage<1){let s=ls.isEnabled(a)?this.postprocessing.target:this.colorTarget,l=this.dpoit.bind();e.renderDpoitTransparent(n.primitives,r,this.depthTextureOpaque,l);for(let c=0;c0&&e.renderDpoitVolume(n.volumes,r,this.depthTextureOpaque)}_renderWboit(e,r,n,o,i){if(!this.wboit.supported)throw new Error("expected wboit to be supported");this.depthTextureOpaque.attachFramebuffer(this.colorTarget.framebuffer,"depth"),e.clear(!0),n.hasOpaque&&e.renderWboitOpaque(n.primitives,r,null),ls.isEnabled(i)&&((ls.isTransparentOutlineEnabled(i)||Sm.isEnabled(i))&&(this.depthTargetTransparent.bind(),e.clearDepth(!0),n.opacityAverage<1&&e.renderDepthTransparent(n.primitives,r,this.depthTextureOpaque)),this.postprocessing.render(r,!1,o,e.props.backgroundColor,i,e.light)),(n.opacityAverage<1||n.volumes.renderables.length>0)&&(this.wboit.bind(),n.opacityAverage<1&&e.renderWboitTransparent(n.primitives,r,this.depthTextureOpaque),n.volumes.renderables.length>0&&e.renderWboitTransparent(n.volumes,r,this.depthTextureOpaque),ls.isEnabled(i)?this.postprocessing.target.bind():this.colorTarget.bind(),this.wboit.render())}_renderBlended(e,r,n,o,i,a){var s,l,c,u;if(o?this.drawTarget.bind():this.packedDepth?this.colorTarget.bind():this.depthTextureOpaque.attachFramebuffer(this.colorTarget.framebuffer,"depth"),e.clear(!0),n.hasOpaque&&e.renderBlendedOpaque(n.primitives,r,null),!o&&(this.depthTargetOpaque&&(this.depthTargetOpaque.bind(),e.clearDepth(!0),e.renderDepthOpaque(n.primitives,r,null),this.colorTarget.bind()),ls.isEnabled(a)&&(this.packedDepth?(s=this.colorTarget.depthRenderbuffer)===null||s===void 0||s.detachFramebuffer(this.postprocessing.target.framebuffer):this.depthTextureOpaque.detachFramebuffer(this.postprocessing.target.framebuffer,"depth"),(ls.isTransparentOutlineEnabled(a)||Sm.isEnabled(a))&&(this.depthTargetTransparent.bind(),e.clearDepth(!0),n.opacityAverage<1&&e.renderDepthTransparent(n.primitives,r,this.depthTextureOpaque)),this.postprocessing.render(r,!1,i,e.props.backgroundColor,a,e.light),this.packedDepth?(l=this.colorTarget.depthRenderbuffer)===null||l===void 0||l.attachFramebuffer(this.postprocessing.target.framebuffer):this.depthTextureOpaque.attachFramebuffer(this.postprocessing.target.framebuffer,"depth")),n.volumes.renderables.length>0)){let d=ls.isEnabled(a)?this.postprocessing.target:this.colorTarget;this.packedDepth?(c=this.colorTarget.depthRenderbuffer)===null||c===void 0||c.detachFramebuffer(d.framebuffer):this.depthTextureOpaque.detachFramebuffer(d.framebuffer,"depth"),d.bind(),e.renderBlendedVolume(n.volumes,r,this.depthTextureOpaque),this.packedDepth?(u=this.colorTarget.depthRenderbuffer)===null||u===void 0||u.attachFramebuffer(d.framebuffer):this.depthTextureOpaque.attachFramebuffer(d.framebuffer,"depth"),d.bind()}n.opacityAverage<1&&e.renderBlendedTransparent(n.primitives,r,null)}_render(e,r,n,o,i,a,s){var l,c;let u=n.volumes.renderables.length>0,d=ls.isEnabled(s.postprocessing),m=uh.isEnabled(s.postprocessing),p=tS.isEnabled(s.marking),h=Sm.isEnabled(s.postprocessing),{x:f,y:b,width:v,height:x}=r.viewport;e.setViewport(f,b,v,x),e.update(r,n),a&&!m&&i&&(this.drawTarget.bind(),e.clear(!1));let S=!1;this.transparencyMode==="wboit"&&this.wboit.supported?(this._renderWboit(e,r,n,a,s.postprocessing),S=!0):this.transparencyMode==="dpoit"&&this.dpoit.supported?(this._renderDpoit(e,r,n,s.dpoitIterations,a,s.postprocessing),S=!0):this._renderBlended(e,r,n,!u&&!d&&!m&&i,a,s.postprocessing);let T=d?this.postprocessing.target:!i||u||S?this.colorTarget:this.drawTarget;if(p&&n.markerAverage>0){let _=s.marking.ghostEdgeStrength<1;_&&n.markerAverage!==1&&(this.marking.depthTarget.bind(),e.clear(!1,!0),e.renderMarkingDepth(n.primitives,r,null)),this.marking.maskTarget.bind(),e.clear(!1,!0),e.renderMarkingMask(n.primitives,r,_?this.marking.depthTarget.texture:null),this.marking.update(s.marking),this.marking.render(r.viewport,T)}else T.bind();o.debug.isEnabled&&(o.debug.syncVisibility(),e.renderBlended(o.debug.scene,r)),o.handle.isEnabled&&e.renderBlended(o.handle.scene,r),o.camera.isEnabled&&(o.camera.update(r),e.update(o.camera.camera,o.camera.scene),e.renderBlended(o.camera.scene,o.camera.camera));let E=!1;if(m){let _=ls.isEnabled(s.postprocessing)?this.postprocessing.target.texture:this.colorTarget.texture;this.antialiasing.render(r,_,i&&!h,s.postprocessing)}else i&&!Sm.isEnabled(s.postprocessing)&&(E=!0);if(s.postprocessing.dof.name==="on"){let _=uh.isEnabled(s.postprocessing)?this.antialiasing.target.texture:ls.isEnabled(s.postprocessing)?this.postprocessing.target.texture:this.colorTarget.texture;this.dof.update(r,_,((l=this.depthTargetOpaque)===null||l===void 0?void 0:l.texture)||this.depthTextureOpaque,this.depthTextureTransparent,s.postprocessing.dof.params,n.boundingSphereVisible),this.dof.render(r.viewport,i?void 0:this.getColorTarget(s.postprocessing))}else i&&!uh.isEnabled(s.postprocessing)&&(E=!0);if(E&&(this.drawTarget.bind(),this.webgl.state.disable(this.webgl.gl.DEPTH_TEST),d?this.copyFboPostprocessing.render():(u||S)&&this.copyFboTarget.render()),s.postprocessing.bloom.name==="on"){let _=s.postprocessing.bloom.params.mode==="emissive";_&&n.emissiveAverage>0&&(this.bloom.emissiveTarget.bind(),e.clear(!1,!0),e.update(r,n),e.renderEmissive(n.primitives,r,null)),(!_||n.emissiveAverage>0)&&(this.bloom.update(this.colorTarget.texture,this.bloom.emissiveTarget.texture,((c=this.depthTargetOpaque)===null||c===void 0?void 0:c.texture)||this.depthTextureOpaque,s.postprocessing.bloom.params),this.bloom.render(r.viewport,i?void 0:this.getColorTarget(s.postprocessing)))}this.webgl.gl.flush()}render(e,r,n){Ee&&this.webgl.timer.mark("DrawPass.render");let{renderer:o,camera:i,scene:a,helper:s}=e;this.postprocessing.setTransparentBackground(r.transparentBackground);let l=r.transparentBackground||this.postprocessing.background.isEnabled(r.postprocessing.background);o.setTransparentBackground(l),o.setDrawingBufferSize(this.colorTarget.getWidth(),this.colorTarget.getHeight()),o.setPixelRatio(this.webgl.pixelRatio),Dd.is(i)?(Ee&&this.webgl.timer.mark("StereoCamera.left"),this._render(o,i.left,a,s,n,l,r),Ee&&this.webgl.timer.markEnd("StereoCamera.left"),Ee&&this.webgl.timer.mark("StereoCamera.right"),this._render(o,i.right,a,s,n,l,r),Ee&&this.webgl.timer.markEnd("StereoCamera.right")):this._render(o,i,a,s,n,l,r),Ee&&this.webgl.timer.markEnd("DrawPass.render")}getColorTarget(e){return Sm.isEnabled(e)?this.dof.target:uh.isEnabled(e)?this.antialiasing.target:ls.isEnabled(e)?this.postprocessing.target:this.colorTarget}};var wTe={alpha:g.Numeric(.51,{min:0,max:1,step:.01},{isEssential:!0,label:"Opacity"}),colorX:g.Color(ut.red,{isEssential:!0}),colorY:g.Color(ut.green,{isEssential:!0}),colorZ:g.Color(ut.blue,{isEssential:!0}),scale:g.Numeric(.33,{min:.1,max:2,step:.1},{isEssential:!0}),location:g.Select("bottom-left",g.arrayToOptions(["bottom-left","bottom-right","top-left","top-right"])),locationOffsetX:g.Numeric(0),locationOffsetY:g.Numeric(0),originColor:g.Color(ut.grey),radiusScale:g.Numeric(.075,{min:.01,max:.3,step:.001}),showPlanes:g.Boolean(!0),planeColorXY:g.Color(ut.grey,{label:"Plane Color XY"}),planeColorXZ:g.Color(ut.grey,{label:"Plane Color XZ"}),planeColorYZ:g.Color(ut.grey,{label:"Plane Color YZ"}),showLabels:g.Boolean(!1),labelX:g.Text("X"),labelY:g.Text("Y"),labelZ:g.Text("Z"),labelColorX:g.Color(ut.grey),labelColorY:g.Color(ut.grey),labelColorZ:g.Color(ut.grey),labelOpacity:g.Numeric(1,{min:0,max:1,step:.01}),labelScale:g.Numeric(.25,{min:.1,max:1,step:.01})},dh={axes:g.MappedStatic("on",{on:g.Group(wTe),off:g.Group({})},{cycle:!0,description:"Show camera orientation axes"})},Ov=class{constructor(e,r={}){this.webgl=e,this.props={axes:{name:"off",params:{}}},this.pixelRatio=1,this.eachGroup=(n,o)=>{if(!u_(n))return!1;let i=!1;if(this.meshRenderObject){let a=this.meshRenderObject.values.uGroupCount.ref.value;for(let{groupId:s,instanceId:l}of n.elements){let c=l*a+s;o(Oe.ofSingleton(c))&&(i=!0)}}if(this.textRenderObject){let a=this.textRenderObject.values.uGroupCount.ref.value;for(let{groupId:s,instanceId:l}of n.elements){let c=l*a+s;o(Oe.ofSingleton(c))&&(i=!0)}}return i},this.scene=xm.create(e,"blended"),this.camera=new an,y.set(this.camera.up,0,1,0),y.set(this.camera.target,0,0,0),this.setProps(r)}setProps(e){this.props=ss(this.props,r=>{if(e.axes!==void 0&&(r.axes.name=e.axes.name,e.axes.name==="on")){this.scene.clear(),this.pixelRatio=this.webgl.pixelRatio;let n=U(w({},e.axes.params),{scale:e.axes.params.scale*this.pixelRatio,labelScale:e.axes.params.labelScale*this.pixelRatio});this.meshRenderObject=ATe(n),this.scene.add(this.meshRenderObject),e.axes.params.showLabels?(this.textRenderObject=RTe(n),this.scene.add(this.textRenderObject)):this.textRenderObject=void 0,this.scene.commit(),y.set(this.camera.position,0,0,n.scale*200),W.lookAt(this.camera.view,this.camera.position,this.camera.target,this.camera.up),r.axes.params=w({},e.axes.params)}})}get isEnabled(){return this.props.axes.name==="on"}getLoci(e){let{objectId:r,groupId:n,instanceId:o}=e;return(!this.meshRenderObject||r!==this.meshRenderObject.id)&&(!this.textRenderObject||r!==this.textRenderObject.id)||n===Yr.None?St:PTe(this,n,o)}mark(e,r){return!kn.is(kn.Highlighting,r)||!So(e)&&(!u_(e)||e.data!==this)?!1:Vt.mark(this.meshRenderObject,e,r,this.eachGroup)||Vt.mark(this.textRenderObject,e,r,this.eachGroup)}update(e){if(!this.meshRenderObject||this.props.axes.name==="off")return;this.pixelRatio!==this.webgl.pixelRatio&&this.setProps(this.props),ETe(this.camera,e.viewport,e.viewOffset),W.extractRotation(this.scene.view,e.view);let r=this.textRenderObject?this.textRenderObject.values.boundingSphere.ref.value.radius:this.meshRenderObject.values.boundingSphere.ref.value.radius,n=this.props.axes.params.location,o=this.props.axes.params.locationOffsetX*this.pixelRatio,i=this.props.axes.params.locationOffsetY*this.pixelRatio;n==="bottom-left"?W.setTranslation(this.scene.view,y.create(-e.viewport.width/2+r+o,-e.viewport.height/2+r+i,0)):n==="bottom-right"?W.setTranslation(this.scene.view,y.create(e.viewport.width/2-r-o,-e.viewport.height/2+r+i,0)):n==="top-left"?W.setTranslation(this.scene.view,y.create(-e.viewport.width/2+r+o,e.viewport.height/2-r-i,0)):n==="top-right"?W.setTranslation(this.scene.view,y.create(e.viewport.width/2-r-o,e.viewport.height/2-r-i,0)):ur(n)}},Yr=function(t){return t[t.None=0]="None",t[t.X=1]="X",t[t.Y=2]="Y",t[t.Z=3]="Z",t[t.XY=4]="XY",t[t.XZ=5]="XZ",t[t.YZ=6]="YZ",t[t.Origin=7]="Origin",t}(Yr||{});function _Te(t,e){let r=e.props.axes,n=r.name==="on"?r.params.labelX:"X",o=r.name==="on"?r.params.labelY:"Y",i=r.name==="on"?r.params.labelZ:"Z";switch(t){case Yr.X:return`${n} Axis`;case Yr.Y:return`${o} Axis`;case Yr.Z:return`${i} Axis`;case Yr.XY:return`${n}${o} Plane`;case Yr.XZ:return`${n}${i} Plane`;case Yr.YZ:return`${o}${i} Plane`;case Yr.Origin:return"Origin";default:return"Axes"}}function PTe(t,e,r){return Sf("camera-axes",t,[{groupId:e,instanceId:r}],void 0,()=>_Te(e,t))}function u_(t){return t.kind==="data-loci"&&t.tag==="camera-axes"}function ETe(t,e,r){let{near:n,far:o}=t,i=-e.width/2,a=e.width/2,s=e.height/2,l=-e.height/2,c=(a-i)/2,u=(s-l)/2,d=(a+i)/2,m=(s+l)/2,p=d-c,h=d+c,f=m+u,b=m-u;if(r.enabled){let v=(a-i)/r.width,x=(s-l)/r.height;p+=v*r.offsetX,h=p+v*r.width,f-=x*r.offsetY,b=f-x*r.height}W.ortho(t.projection,p,h,f,b,n,o)}function ITe(t,e){let r=Te.createState(512,256,e),n=100*t.scale,o=t.radiusScale*n,i=t.showLabels?100*t.labelScale/3:0,a=y.scale(y(),y.unitX,n-i),s=y.scale(y(),y.unitY,n-i),l=y.scale(y(),y.unitZ,n-i),c={radiusTop:o,radiusBottom:o,radialSegments:32};if(r.currentGroup=Yr.Origin,Jt(r,y.origin,o,2),r.currentGroup=Yr.X,Jt(r,a,o,2),nr(r,y.origin,a,1,c),r.currentGroup=Yr.Y,Jt(r,s,o,2),nr(r,y.origin,s,1,c),r.currentGroup=Yr.Z,Jt(r,l,o,2),nr(r,y.origin,l,1,c),t.showPlanes){y.scale(a,a,.5),y.scale(s,s,.5),y.scale(l,l,.5),r.currentGroup=Yr.XY,Te.addTriangle(r,y.origin,a,s),Te.addTriangle(r,y.origin,s,a);let u=y.add(y(),a,s);Te.addTriangle(r,u,a,s),Te.addTriangle(r,u,s,a),r.currentGroup=Yr.XZ,Te.addTriangle(r,y.origin,a,l),Te.addTriangle(r,y.origin,l,a);let d=y.add(y(),a,l);Te.addTriangle(r,d,a,l),Te.addTriangle(r,d,l,a),r.currentGroup=Yr.YZ,Te.addTriangle(r,y.origin,s,l),Te.addTriangle(r,y.origin,l,s);let m=y.add(y(),s,l);Te.addTriangle(r,m,s,l),Te.addTriangle(r,m,l,s)}return Te.getMesh(r)}function DTe(t,e){let r=100*t.scale,n=ITe(t,e?.geometry);n.setBoundingSphere(te.create(y.create(r/2,r/2,r/2),r+r/4));let o=i=>{switch(i){case Yr.X:return t.colorX;case Yr.Y:return t.colorY;case Yr.Z:return t.colorZ;case Yr.XY:return t.planeColorXY;case Yr.XZ:return t.planeColorXZ;case Yr.YZ:return t.planeColorYZ;case Yr.Origin:return t.originColor;default:return ut.grey}};return Yt.create("axes-mesh",{},n,o,()=>1,()=>"")}function ATe(t){let e=DTe(t);return Yt.createRenderObject(e,U(w(w({},g.getDefaultValues(Be.Params)),t),{ignoreLight:!0,cellSize:0}))}function kTe(t,e){let r=Is.create(t,8,8,e),n=100*t.scale,o=y.scale(y(),y.unitX,n),i=y.scale(y(),y.unitY,n),a=y.scale(y(),y.unitZ,n),s=100*t.labelScale;return r.add(t.labelX,o[0],o[1],o[2],0,s,Yr.X),r.add(t.labelY,i[0],i[1],i[2],0,s,Yr.Y),r.add(t.labelZ,a[0],a[1],a[2],0,s,Yr.Z),r.getText()}function MTe(t,e){let r=100*t.scale,n=kTe(t,e?.geometry);n.setBoundingSphere(te.create(y.create(r/2,r/2,r/2),r));let o=i=>{switch(i){case Yr.X:return t.labelColorX;case Yr.Y:return t.labelColorY;case Yr.Z:return t.labelColorZ;default:return ut.grey}};return Yt.create("axes-text",{},n,o,()=>1,()=>"")}function RTe(t){let e=MTe(t);return Yt.createRenderObject(e,U(w(w({},g.getDefaultValues(Bo.Params)),t),{alpha:t.labelOpacity,cellSize:0}))}var LTe={transparentBackground:g.Boolean(!1),dpoitIterations:g.Numeric(2,{min:1,max:10,step:1}),multiSample:g.Group(n_),postprocessing:g.Group(Rv),marking:g.Group(c_),cameraHelper:g.Group(dh)},d_=class{get colorTarget(){return this._colorTarget}get width(){return this._width}get height(){return this._height}constructor(e,r,n,o,i,a,s,l){this.webgl=e,this.renderer=n,this.scene=o,this.camera=i,this._width=0,this._height=0,this._camera=new an,this.props=w(w({},g.getDefaultValues(LTe)),l),this.drawPass=new Bv(e,r,128,128,s),this.multiSamplePass=new Ep(e,this.drawPass),this.multiSampleHelper=new Lv(this.multiSamplePass),this.helper={camera:new Ov(e,this.props.cameraHelper),debug:a.debug,handle:a.handle},this.setSize(1024,768)}updateBackground(){return new Promise(e=>{this.drawPass.postprocessing.background.update(this.camera,this.props.postprocessing.background,()=>{e()})})}setSize(e,r){e===this._width&&r===this._height||(this._width=e,this._height=r,this.drawPass.setSize(e,r),this.multiSamplePass.syncSize())}setProps(e={}){Object.assign(this.props,e),e.cameraHelper&&this.helper.camera.setProps(e.cameraHelper)}render(){an.copySnapshot(this._camera.state,this.camera.state),_n.set(this._camera.viewport,0,0,this._width,this._height),this._camera.update();let e={renderer:this.renderer,camera:this._camera,scene:this.scene,helper:this.helper};Ep.isEnabled(this.props.multiSample)?(this.multiSampleHelper.render(e,this.props,!1),this._colorTarget=this.multiSamplePass.colorTarget):(this.drawPass.render(e,this.props,!1),this._colorTarget=this.drawPass.getColorTarget(this.props.postprocessing))}getImageData(e,r,n){var o,i;this.setSize(e,r),this.render(),this.colorTarget.bind();let a=(o=n?.width)!==null&&o!==void 0?o:e,s=(i=n?.height)!==null&&i!==void 0?i:r,l=new Uint8Array(a*s*4);n?this.webgl.readPixels(n.x,r-n.y-n.height,a,s,l):this.webgl.readPixels(0,0,a,s,l);let c=ip.create(l,a,s);return ip.flipY(c),ip.divideByAlpha(c),new ImageData(new Uint8ClampedArray(l),a,s)}};var BTe=U(w({},Be.Params),{alpha:U(w({},Be.Params.alpha),{defaultValue:1}),ignoreLight:U(w({},Be.Params.ignoreLight),{defaultValue:!0}),colorX:g.Color(ut.red,{isEssential:!0}),colorY:g.Color(ut.green,{isEssential:!0}),colorZ:g.Color(ut.blue,{isEssential:!0}),scale:g.Numeric(.33,{min:.1,max:2,step:.1},{isEssential:!0})}),p_={handle:g.MappedStatic("off",{on:g.Group(BTe),off:g.Group({})},{cycle:!0,description:"Show handle tool"})},m_=class{getBoundingSphere(e,r){return this.renderObject&&(te.copy(e,this.renderObject.values.invariantBoundingSphere.ref.value),W.fromArray(this._transform,this.renderObject.values.aTransform.ref.value,r*16),te.transform(e,e,this._transform)),e}setProps(e){this.props=ss(this.props,r=>{if(e.handle!==void 0&&(r.handle.name=e.handle.name,e.handle.name==="on")){this.scene.clear(),this.pixelRatio=this.webgl.pixelRatio;let n=U(w({},e.handle.params),{scale:e.handle.params.scale*this.webgl.pixelRatio,cellSize:0});this.renderObject=VTe(n),this.scene.add(this.renderObject),this.scene.commit(),r.handle.params=w({},e.handle.params)}})}get isEnabled(){return this.props.handle.name==="on"}update(e,r,n){this.renderObject&&(this.pixelRatio!==this.webgl.pixelRatio&&this.setProps(this.props),W.setTranslation(this.renderObject.values.aTransform.ref.value,r),W.fromMat3(this.renderObject.values.aTransform.ref.value,n),C.update(this.renderObject.values.aTransform,this.renderObject.values.aTransform.ref.value),this.scene.update([this.renderObject],!0))}getLoci(e){let{objectId:r,groupId:n,instanceId:o}=e;return!this.renderObject||r!==this.renderObject.id?St:FTe(this,n,o)}mark(e,r){return!kn.is(kn.Highlighting,r)||!So(e)&&(!bK(e)||e.data!==this)?!1:Vt.mark(this.renderObject,e,r,this.eachGroup)}constructor(e,r={}){this.webgl=e,this.props={handle:{name:"off",params:{}}},this.pixelRatio=1,this._transform=W(),this.eachGroup=(n,o)=>{if(!this.renderObject||!bK(n))return!1;let i=!1,a=this.renderObject.values.uGroupCount.ref.value,{elements:s}=n;for(let{groupId:l,instanceId:c}of s){let u=c*a+l;o(Oe.ofSingleton(u))&&(i=!0)}return i},this.scene=xm.create(e,"blended"),this.setProps(r)}};function OTe(t,e){let r=Te.createState(512,256,e),n=.05*t,o=y.scale(y(),y.unitX,t),i=y.scale(y(),y.unitY,t),a=y.scale(y(),y.unitZ,t),s={radiusTop:n,radiusBottom:n,radialSegments:32};return r.currentGroup=iy.TranslateScreenXY,Jt(r,y.origin,n*3,2),r.currentGroup=iy.TranslateObjectX,Jt(r,o,n,2),nr(r,y.origin,o,1,s),r.currentGroup=iy.TranslateObjectY,Jt(r,i,n,2),nr(r,y.origin,i,1,s),r.currentGroup=iy.TranslateObjectZ,Jt(r,a,n,2),nr(r,y.origin,a,1,s),Te.getMesh(r)}var iy={None:0,TranslateScreenXY:1,TranslateObjectX:3,TranslateObjectY:4,TranslateObjectZ:5};function FTe(t,e,r){return Sf("handle",t,[{groupId:e,instanceId:r}],n=>t.getBoundingSphere(n,r),()=>`Handle Helper | Group Id ${e} | Instance Id ${r}`)}function bK(t){return t.kind==="data-loci"&&t.tag==="handle"}function NTe(t,e){let r=10*t.scale,n=OTe(r,e?.geometry);n.setBoundingSphere(te.create(y.create(r/2,r/2,r/2),r+r/4));let o=i=>{switch(i){case iy.TranslateObjectX:return t.colorX;case iy.TranslateObjectY:return t.colorY;case iy.TranslateObjectZ:return t.colorZ;default:return ut.grey}};return Yt.create("handle",{},n,o,()=>1,()=>"")}function VTe(t){let e=NTe(t);return Yt.createRenderObject(e,t)}var zTe={debug:g.Group(J1),camera:g.Group({helper:g.Group(dh)}),handle:g.Group(p_)},UTe=g.getDefaultValues(zTe),f_=class{constructor(e,r,n={}){let o=w(w({},UTe),n);this.debug=new Qw(e,r,o.debug),this.camera=new Ov(e,o.camera.helper),this.handle=new m_(e,o.handle)}};var h_=class{constructor(e,r,n={}){this.webgl=e;let{gl:o}=e;this.draw=new Bv(e,r,o.drawingBufferWidth,o.drawingBufferHeight,n.transparency||"blended"),this.pick=new i_(e,this.draw,n.pickScale||.25),this.multiSample=new Ep(e,this.draw)}setPickScale(e){this.pick.setPickScale(e)}setTransparency(e){this.draw.setTransparency(e)}updateSize(){let{gl:e}=this.webgl,r=Math.max(e.drawingBufferWidth,2),n=Math.max(e.drawingBufferHeight,2);this.draw.setSize(r,n),this.pick.syncSize(),this.multiSample.syncSize()}};var xK=` +precision highp float; +precision highp sampler2D; + +uniform sampler2D tPreviousLevel; +uniform vec2 uInvSize; +uniform vec2 uOffset; + +void main(void) { + vec2 position = gl_FragCoord.xy * uInvSize + uOffset; + + float x = texture(tPreviousLevel, position).r; + float y = textureOffset(tPreviousLevel, position, ivec2(-1, 0)).r; + float z = textureOffset(tPreviousLevel, position, ivec2(-1, -1)).r; + float w = textureOffset(tPreviousLevel, position, ivec2(0, -1)).r; + + gl_FragColor = vec4(max(max(x, y), max(z, w))); +} +`;var GTe=U(w({},Er),{tPreviousLevel:We("texture","alpha","float","nearest"),uInvSize:ee("v2"),uOffset:ee("v2")}),jTe=Qt("hi-z",zr,xK);function SK(t,e){let r=U(w({},Ir),{tPreviousLevel:C.create(e),uInvSize:C.create(ne()),uOffset:C.create(ne())}),n=w({},GTe),o=dr(t,"triangles",jTe,n,r);return mr(o,r)}var CK=new ArrayBuffer(4),x_t=new Int32Array(CK),S_t=new Float32Array(CK);var TK=new ArrayBuffer(4),HTe=new Int32Array(TK),qTe=new Float32Array(TK);function WTe(t){let e=t<-126?-126:t;return HTe[0]=(1<<23)*(e+126.94269504),qTe[0]}function wK(t){return WTe(1.44269504*t)}var _K=new ArrayBuffer(8),C_t=new Int32Array(_K),T_t=new Float32Array(_K);var PK=new ArrayBuffer(4),XTe=new Int32Array(PK),YTe=new Float32Array(PK);function EK(t){return YTe[0]=t,XTe[0]*11920928955078125e-23-126.94269504}var w_t=Math.PI/2,__t=2*Math.PI,P_t=1/(2*Math.PI),E_t=2/Math.PI,I_t=4/Math.PI,D_t=4/(Math.PI*Math.PI),A_t=Math.PI/2-2*Math.PI;var IK=new ArrayBuffer(16),k_t=new Int32Array(IK),M_t=new Float32Array(IK);var DK=new ArrayBuffer(8),R_t=new Int32Array(DK),L_t=new Float32Array(DK);var AK=new ArrayBuffer(4),B_t=new Int32Array(AK),O_t=new Float32Array(AK);var F_t=Math.PI/4;var QTe=y.transformMat4,kK=at.set,KTe=EK;function $Te(t,e,r){return e*r/((r-e)*t-r)}function ZTe(t,e,r){return t*(e-r)-e}function g_(t,e,r,n){return n[11]===-1?$Te(t,e,r):ZTe(t,e,r)}function JTe(t,e,r,n){let o=e[0]*r,i=e[1]*r,a=e[2]*r,s=e[2]*e[2]-r*r,l=Math.sqrt(e[0]*e[0]+s),c=(l*e[0]-a)/(l*e[2]+o)*n[0],u=(l*e[0]+a)/(l*e[2]-o)*n[0],d=Math.sqrt(e[1]*e[1]+s),m=(d*e[1]-a)/(d*e[2]+i)*n[5],p=(d*e[1]+a)/(d*e[2]-i)*n[5];return kK(t,u*-.5+.5,m*.5+.5,c*-.5+.5,p*.5+.5)}function e2e(t,e,r,n){let o=n[0],i=n[5],a=(e[0]+r)*o,s=(e[0]-r)*o,l=(e[1]+r)*i,c=(e[1]-r)*i;return kK(t,s*.5+.5,l*-.5+.5,a*.5+.5,c*-.5+.5)}function t2e(t,e,r,n){return n[11]===-1?JTe(t,e,r,n):e2e(t,e,r,n)}var nL={enabled:g.Boolean(!1,{description:"Hierarchical Z-buffer occlusion culling. Only available for WebGL2."}),maxFrameLag:g.Numeric(10,{min:1,max:30,step:1},{description:"Maximum number of frames to wait for Z-buffer data."}),minLevel:g.Numeric(3,{min:1,max:10,step:1})},y_=class{clear(){if(!this.supported)return;let{gl:e}=this.webgl;ct(e)&&(this.sync!==null&&(e.deleteSync(this.sync),this.sync=null),this.frameLag=0,this.ready=!1,this.debug&&(this.debug.rect.style.display="none",this.debug.container.style.display="none"))}render(e){if(!this.supported||!this.props.enabled)return;let{gl:r,state:n}=this.webgl;if(!ct(r)||this.sync!==null)return;this.nextNear=e.near,this.nextFar=e.far,W.copy(this.nextView,e.view),W.copy(this.nextProjection,e.projection),Ee&&this.webgl.timer.mark("hi-Z"),n.disable(r.CULL_FACE),n.disable(r.BLEND),n.disable(r.DEPTH_TEST),n.disable(r.SCISSOR_TEST),n.depthMask(!1),n.colorMask(!0,!0,!0,!0),n.clearColor(0,0,0,0);let o=this.renderable.values,i=Math.pow(2,Math.ceil(Math.log(Math.max(r.drawingBufferWidth,r.drawingBufferHeight))/Math.log(2))-1);for(let l=0,c=this.levelData.length;l0?(C.update(o.uInvSize,u.invSize),C.update(o.uOffset,ne.set(o.uOffset.ref.value,0,0)),C.update(o.tPreviousLevel,this.levelData[l-1].texture)):(C.update(o.uInvSize,ne.set(o.uInvSize.ref.value,1/i,1/i)),C.update(o.uOffset,ne.set(o.uOffset.ref.value,this.viewport.x/r.drawingBufferWidth,this.viewport.y/r.drawingBufferHeight)),C.update(o.tPreviousLevel,this.drawPass.depthTextureOpaque)),n.currentRenderItemId=-1,n.viewport(0,0,u.size[0],u.size[1]),r.clear(r.COLOR_BUFFER_BIT),this.renderable.update(),this.renderable.render(),l>=this.props.minLevel&&(this.tex.bind(0),r.copyTexSubImage2D(r.TEXTURE_2D,0,u.offset,0,0,0,u.size[0],u.size[1]),this.tex.unbind(0))}this.tex.attachFramebuffer(this.fb,0);let a=this.tex.getWidth(),s=this.tex.getHeight();r.bindBuffer(r.PIXEL_PACK_BUFFER,this.buf),r.bufferData(r.PIXEL_PACK_BUFFER,this.buffer.byteLength,r.STREAM_READ),r.readPixels(0,0,a,s,r.RED,r.FLOAT,0),r.bindBuffer(r.PIXEL_PACK_BUFFER,null),this.sync=r.fenceSync(r.SYNC_GPU_COMMANDS_COMPLETE,0),r.flush(),Ee&&this.webgl.timer.markEnd("hi-Z")}tick(){if(!this.supported||!this.props.enabled||this.sync===null)return;let{gl:e}=this.webgl;if(!ct(e))return;let r=e.clientWaitSync(this.sync,0,0);r===e.WAIT_FAILED||this.frameLag>=this.props.maxFrameLag?(e.deleteSync(this.sync),this.sync=null,this.frameLag=0,this.ready=!1):r===e.TIMEOUT_EXPIRED?this.frameLag+=1:(e.bindBuffer(e.PIXEL_PACK_BUFFER,this.buf),e.getBufferSubData(e.PIXEL_PACK_BUFFER,0,this.buffer),e.bindBuffer(e.PIXEL_PACK_BUFFER,null),e.deleteSync(this.sync),this.sync=null,this.frameLag=0,this.ready=!0,this.near=this.nextNear,this.far=this.nextFar,W.copy(this.view,this.nextView),W.copy(this.projection,this.nextProjection))}transform(e){let{view:r,vp:n}=this;QTe(n,e.center,r);let o=e.radius*1.2+1.52;return{vp:n,r:o}}project(e,r){let{projection:n,aabb:o,viewport:i}=this;t2e(o,e,r,n);let a=o[2]-o[0],s=o[3]-o[1],l=Math.max(a*i.width,s*i.height),c=Math.ceil(KTe(l/2));return{aabb:o,w:a,h:s,pr:l,lod:c}}setViewport(e,r,n,o){if(!this.supported)return;n=Math.max(n,2),o=Math.max(o,2),_n.set(this.viewport,e,r,n,o);let i=Math.ceil(Math.log(Math.max(n,o))/Math.log(2));if(i===this.levelData.length)return;let{minLevel:a}=this.props;this.buffer=new Float32Array(Math.pow(2,i-a)*Math.pow(2,i-1-a)),this.tex.define(Math.pow(2,i-a),Math.pow(2,i-1-a));for(let l of this.levelData)l.framebuffer.destroy(),l.texture.destroy();this.levelData.length=0;for(let l=0;l=a&&(this.levelData[l].offset=s,s+=u.size[0])}this.clear()}setProps(e){if(this.supported)if(this.props.minLevel!==e.minLevel){Object.assign(this.props,e);let{x:r,y:n,width:o,height:i}=this.viewport;this.setViewport(r,n,o,i)}else Object.assign(this.props,e),this.props.enabled||this.clear()}initDebug(e){if(!e.parentElement)return;let r=document.createElement("div");Object.assign(r.style,{display:"block",position:"absolute",pointerEvents:"none"}),e.parentElement.appendChild(r);let n=document.createElement("canvas"),o=n.getContext("2d");if(!o)throw new Error("Could not create canvas 2d context");Object.assign(n.style,{width:"100%",height:"100%",imageRendering:"pixelated",position:"relative",pointerEvents:"none"}),r.appendChild(n);let i=document.createElement("div");Object.assign(i.style,{display:"none",position:"absolute",pointerEvents:"none"}),e.parentElement.appendChild(i),this.debug={container:r,canvas:n,ctx:o,rect:i}}canDebug(e){return this.supported&&this.props.enabled&&this.ready&&!!this.debug}showRect(e,r){if(!this.canDebug(this.debug))return;let{gl:{drawingBufferHeight:n},pixelRatio:o}=this.webgl,{viewport:{x:i,y:a,width:s,height:l}}=this,c=(e[0]*s+i)/o,u=(e[1]*l-a)/o,d=(e[2]*s+i)/o,m=(e[3]*l-a)/o,p=(n-l)/o;Object.assign(this.debug.rect.style,{border:r?"solid red":"solid green",display:"block",left:`${c}px`,top:`${u+p}px`,width:`${d-c}px`,height:`${m-u}px`})}showBuffer(e){if(!this.canDebug(this.debug))return;if(e>=this.levelData.length||e{if(!this.supported||!this.props.enabled||!this.ready)return!1;let{vp:u,r:d}=this.transform(c),{near:m,far:p,projection:h}=this,f=u[2]+d;if(-f=this.levelData.length||S=P||M+1>=P)return!1;let B=(P-M-1)*R+k+T;if(f>g_(this.buffer[B],m,p,h)||f>g_(this.buffer[B+1],m,p,h))return!1;let F=(P-M+1-1)*R+k+T;return!(f>g_(this.buffer[F],m,p,h)||f>g_(this.buffer[F+1],m,p,h))};let{gl:i,extensions:a}=e;if(!ct(i)||!a.colorBufferFloat){ht&&console.log('Missing webgl2 and/or colorBufferFloat support required for "Hi-Z"'),this.supported=!1;return}this.fb=e.resources.framebuffer(),this.tex=e.resources.texture("image-float32","alpha","float","nearest"),this.tex.attachFramebuffer(this.fb,0);let s=i.getParameter(i.IMPLEMENTATION_COLOR_READ_FORMAT),l=i.getParameter(i.IMPLEMENTATION_COLOR_READ_TYPE);if(s!==i.RED||l!==i.FLOAT){ht&&console.log('Missing red/float reading support required for "Hi-Z"'),this.supported=!1;return}this.supported=!0,this.props=w(w({},g.getDefaultValues(nL)),o),this.buf=UT(i),this.renderable=SK(e,this.drawPass.depthTextureOpaque),ht&&n&&this.initDebug(n)}};var Fa={camera:g.Group({mode:g.Select("perspective",g.arrayToOptions(["perspective","orthographic"]),{label:"Camera"}),helper:g.Group(dh,{isFlat:!0}),stereo:g.MappedStatic("off",{on:g.Group(tL),off:g.Group({})},{cycle:!0,hideIf:t=>t?.mode!=="perspective"}),fov:g.Numeric(45,{min:10,max:130,step:1},{label:"Field of View"}),manualReset:g.Boolean(!1,{isHidden:!0})},{pivot:"mode"}),cameraFog:g.MappedStatic("on",{on:g.Group({intensity:g.Numeric(15,{min:1,max:100,step:1})}),off:g.Group({})},{cycle:!0,description:"Show fog in the distance"}),cameraClipping:g.Group({radius:g.Numeric(100,{min:0,max:99,step:1},{label:"Clipping",description:"How much of the scene to show."}),far:g.Boolean(!0,{description:"Hide scene in the distance"}),minNear:g.Numeric(5,{min:.1,max:100,step:.1},{description:"Note, may cause performance issues rendering impostors when set too small and cause issues with outline rendering when too close to 0."})},{pivot:"radius"}),viewport:g.MappedStatic("canvas",{canvas:g.Group({}),"static-frame":g.Group({x:g.Numeric(0),y:g.Numeric(0),width:g.Numeric(128),height:g.Numeric(128)}),"relative-frame":g.Group({x:g.Numeric(.33,{min:0,max:1,step:.01}),y:g.Numeric(.33,{min:0,max:1,step:.01}),width:g.Numeric(.5,{min:.01,max:1,step:.01}),height:g.Numeric(.5,{min:.01,max:1,step:.01})})}),cameraResetDurationMs:g.Numeric(250,{min:0,max:1e3,step:1},{description:"The time it takes to reset the camera."}),sceneRadiusFactor:g.Numeric(1,{min:1,max:10,step:.1}),transparentBackground:g.Boolean(!1),dpoitIterations:g.Numeric(2,{min:1,max:10,step:1}),pickPadding:g.Numeric(3,{min:0,max:10,step:1},{description:"extra pixels to around target to check in case target is empty"}),multiSample:g.Group(n_),postprocessing:g.Group(Rv),marking:g.Group(c_),hiZ:g.Group(nL),renderer:g.Group(jw),trackball:g.Group(YR),interaction:g.Group($R),debug:g.Group(J1),handle:g.Group(p_)},rS=g.getDefaultValues(Fa);var Ad;(function(t){t.DefaultAttribs={powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,antialias:!0,preserveDrawingBuffer:!0,preferWebGl1:!1,handleResize:()=>{}},t.Params={pixelScale:g.Numeric(1,{min:.1,max:2,step:.05}),pickScale:g.Numeric(.25,{min:.1,max:1,step:.05}),transparency:g.Select("wboit",[["blended","Blended"],["wboit","Weighted, Blended"],["dpoit","Depth Peeling"]])},t.DefaultProps=g.getDefaultValues(t.Params);function e(r,n,o={},i={}){let a=w(w({},t.DefaultAttribs),o),s=w(w({},t.DefaultProps),i),{powerPreference:l,failIfMajorPerformanceCaveat:c,antialias:u,preserveDrawingBuffer:d,preferWebGl1:m}=a,p=KG(r,{powerPreference:l,failIfMajorPerformanceCaveat:c,antialias:u,preserveDrawingBuffer:d,alpha:!0,depth:!0,premultipliedAlpha:!0,preferWebGl1:m});if(p===null)throw new Error("Could not create a WebGL rendering context");let{pixelScale:h,pickScale:f,transparency:b}=s,v=Uw.fromElement(r,{pixelScale:h,preventGestures:!0}),x=tj(p,{pixelScale:h}),S=new h_(x,n,{pickScale:f,transparency:b});if(ht){let P=p.getExtension("WEBGL_lose_context");P&&r.addEventListener("mousedown",A=>{x.isContextLost||!A.shiftKey||!A.ctrlKey||!A.altKey||(ht&&console.log("lose context"),P.loseContext(),setTimeout(()=>{x.isContextLost&&(ht&&console.log("restore context"),P.restoreContext())},1e3))},!1)}let T=new da(0),E=P=>{x.setContextLost(),P.preventDefault(),ht&&console.log("context lost"),T.next(ko())},_=()=>{x.isContextLost&&(x.handleContextRestored(()=>{S.draw.reset()}),ht&&console.log("context restored"))};r.addEventListener("webglcontextlost",E,!1),r.addEventListener("webglcontextrestored",_,!1);let D=new da(void 0);return{canvas:r,webgl:x,input:v,passes:S,attribs:a,get props(){return w({},s)},contextLost:T,contextRestored:x.contextRestored,assetManager:n,changed:D,setProps:P=>{if(!P)return;let A=!1;P.pixelScale!==void 0&&P.pixelScale!==s.pixelScale&&(s.pixelScale=P.pixelScale,v.setPixelScale(P.pixelScale),x.setPixelScale(P.pixelScale),a.handleResize(),A=!0),P.pickScale!==void 0&&P.pickScale!==s.pickScale&&(s.pickScale=P.pickScale,S.setPickScale(P.pickScale),A=!0),P.transparency!==void 0&&P.transparency!==s.transparency&&(s.transparency=P.transparency,S.setTransparency(P.transparency),A=!0),A&&D.next(void 0)},dispose:P=>{v.dispose(),r.removeEventListener("webglcontextlost",E,!1),r.removeEventListener("webglcontextrestored",_,!1),x.destroy(P)}}}t.fromCanvas=e})(Ad||(Ad={}));var r2e=typeof window<"u"?window.requestAnimationFrame:t=>setImmediate(()=>t(Date.now())),MK=typeof window<"u"?window.cancelAnimationFrame:t=>clearImmediate(t),v_;(function(t){function e(r,n={}){var o;let{webgl:i,input:a,passes:s,assetManager:l,canvas:c}=r,u=w(w({},$s(rS)),$s(n)),d=new Map,m=new Map,p=new da(0),h=ko(),f=new da(0),b=new da(0),v=new da(0),{gl:x,contextRestored:S}=i,T=0,E=0,_=128,D=128,P=!1,A=0;Ys();let I=xm.create(i,s.draw.transparency);function k(){return I.boundingSphere.radius*u.sceneRadiusFactor}let M=new an({position:y.create(0,0,100),mode:u.camera.mode,fog:u.cameraFog.name==="on"?u.cameraFog.params.intensity:0,clipFar:u.cameraClipping.far,minNear:u.cameraClipping.minNear,fov:or(u.camera.fov)},{x:T,y:E,width:_,height:D}),R=new Dd(M,u.camera.stereo.params),B=qw.create(a,M,I,u.trackball),F=new f_(i,I,u),G=new y_(i,s.draw,c,u.hiZ),V=Hw.create(i,u.renderer);V.setOcclusionTest(G.isOccluded);let H=new a_(i,V,I,F,s.pick,{x:T,y:E,width:_,height:D},u.pickPadding),Q=new Kw(Ke,ae,a,M,B,u.interaction),L=new Lv(s.multiSample);s.draw.postprocessing.background.update(M,u.postprocessing.background,He=>{He&&Nr()});let Y=!1,j,O,J=!1,$=!0;function ae(He){let _t=St,Gt=rt.Empty;if(He){let Xt=F.camera.getLoci(He);if(Xt!==St)return{loci:Xt,repr:Gt};_t=F.handle.getLoci(He),d.forEach((Vr,ho)=>{let mt=ho.getLoci(He);Wn(mt)||(Wn(_t)||console.warn("found another loci, this should not happen"),_t=mt,Gt=ho)})}return{loci:_t,repr:Gt}}let Z=[];function se(He,_t){Z.push([He,_t])}function Me(){let He=!1;for(let[_t,Gt]of Z)He=be(_t,Gt)||He;return Z=[],He&&(I.update(void 0,!0),F.handle.scene.update(void 0,!0),F.camera.scene.update(void 0,!0)),He}function be(He,_t){let{repr:Gt,loci:Xt}=He,Vr=!1;return Gt?Vr=Gt.mark(Xt,_t)||Vr:d.forEach((ho,mt)=>{Vr=mt.mark(Xt,_t)||Vr}),Vr=F.handle.mark(Xt,_t)||Vr,Vr=F.camera.mark(Xt,_t)||Vr,Vr}function _e(He){if(i.isContextLost)return!1;let _t=!1;if(J&&(bn(!1),J=!1,_t=!0),T>x.drawingBufferWidth||T+_<0||E>x.drawingBufferHeight||E+D<0)return!1;let Gt=Me()&&(V.props.colorMarker||u.marking.enabled),Xt=!1;B.update(A);let Vr=M.update(),ho=He||Vr||_t||P;P=!1;let mt=L.update(Gt||ho,u.multiSample);if(ho||mt||Gt){let On=M;u.camera.stereo.name==="on"&&(R.update(),On=R),Ee&&i.timer.mark("Canvas3D.render",!0);let $a={renderer:V,camera:On,scene:I,helper:F};if(Ep.isEnabled(u.multiSample)){let go=u.multiSample.reduceFlicker&&!Vr&&Gt&&!B.isAnimating;L.render($a,u,!0,go)}else s.draw.render($a,u,!0);G.render(M),Ee&&i.timer.markEnd("Canvas3D.render"),H.dirty=H.dirty||ho,Xt=!0}return Xt}let je=!1,gt=!1;function fr(He){gt||_e(!!He?.force)&&$&&f.next(ko()-h)}function Nr(){P=!0}let Zt=0;function oe(He,_t){A=He,Ve(_t?.isSynchronous),_t?.updateControls&&B.update(A),M.transition.tick(A),G.tick(),!_t?.manualDraw&&(fr(),!M.transition.inTransition&&!i.isContextLost&&Q.tick(A))}function De(){oe(ko()),Zt=r2e(De)}function Le(He){h=He,B.start(He)}function Qe(){gt=!1,B.start(ko()),Zt===0&&De()}function Ue(He=!1){gt=He,MK(Zt),Zt=0}function Ke(He,_t){let Gt=u.camera.stereo.name==="on"?R:M;return i.isContextLost?void 0:H.identify(He,_t,Gt)}function Ve(He=!1){ft(He)&&(It(),je&&(F.debug.isEnabled&&F.debug.update(),fr({force:!0}),je=!1),b.next(ko()))}function It(){if(!Y)return;let He=I.boundingSphereVisible,{center:_t,radius:Gt}=He,Xt=B.props.autoAdjustMinMaxDistance;if(Xt.name==="on"){let Vr=Xt.params.minDistanceFactor*Gt+Xt.params.minDistancePadding,ho=Math.max(Xt.params.maxDistanceFactor*Gt,Xt.params.maxDistanceMin);B.setProps({minDistance:Vr,maxDistance:ho})}if(Gt>0){let Vr=j===void 0?u.cameraResetDurationMs:j,ho=M.getFocus(_t,Gt),mt=typeof O=="function"?O(I,M):O,On=mt?w(w({},ho),mt):ho;M.setState(U(w({},On),{radiusMax:k()}),Vr)}j=void 0,O=void 0,Y=!1}let yt=te(),pe=te();function Ae(){if(M.state.radiusMax===0)return!0;if(M.transition.inTransition||O)return!1;let He=!0,_t=!0;te.set(pe,M.state.target,M.state.radius);for(let Gt of I.renderables){if(!Gt.state.visible)continue;let Xt=Gt.values.boundingSphere.ref.value;if(!Xt.radius)continue;_t=!1;let Vr=y.distance(pe.center,Xt.center);if((Vr>pe.radius||Vr>Xt.radius||Xt.radius>M.state.radiusMax)&&!te.includes(yt,Xt))return!0;te.overlaps(pe,Xt)&&(He=!1)}return He||!_t&&pe.radius<=.1}let $e=250;function ft(He){return I.needsCommit?(te.copy(yt,I.boundingSphereVisible),G.clear(),I.commit(He?void 0:$e)?(v.next(0),F.debug.isEnabled&&F.debug.update(),!u.camera.manualReset&&(p.value===0||Ae())&&(Y=!0),yt.radius===0&&(j=0),u.camera.manualReset||M.setState({radiusMax:k()},0),p.next(d.size),ht&&Pt(),!0):(v.next(I.commitQueueSize),!1)):!0}function Pt(){let He=I.renderables.map(Vr=>({drawCount:Vr.values.drawCount.ref.value,instanceCount:Vr.values.instanceCount.ref.value,materialId:Vr.materialId,renderItemId:Vr.id}));console.groupCollapsed(`${He.length} RenderItems`),He.length<50?console.table(He):console.log(He),console.log(JSON.stringify(i.stats,void 0,4));let{texture:_t,attribute:Gt,elements:Xt}=i.resources.getByteCounts();console.log(JSON.stringify({texture:`${(_t/1024/1024).toFixed(3)} MiB`,attribute:`${(Gt/1024/1024).toFixed(3)} MiB`,elements:`${(Xt/1024/1024).toFixed(3)} MiB`},void 0,4)),console.log(JSON.stringify(i.timer.formatedStats(),void 0,4)),console.groupEnd()}function yr(He){_r(He);let _t=d.get(He),Gt=new Set;He.renderObjects.forEach(Xt=>Gt.add(Xt)),_t?no.areEqual(Gt,_t)||(Gt.forEach(Xt=>{_t.has(Xt)||I.add(Xt)}),_t.forEach(Xt=>{Gt.has(Xt)||I.remove(Xt)})):He.renderObjects.forEach(Xt=>I.add(Xt)),d.set(He,Gt),I.update(He.renderObjects,!1),je=!0,ht&&Pt()}function Ze(He){qr(He);let _t=d.get(He);_t&&(_t.forEach(Gt=>I.remove(Gt)),d.delete(He),je=!0,ht&&Pt())}function _r(He){m.has(He)||m.set(He,He.updated.subscribe(_t=>{He.state.syncManually||yr(He)}))}function qr(He){let _t=m.get(He);_t&&(_t.unsubscribe(),m.delete(He))}function Ao(){let He=I.boundingSphere.radius>0?100-Math.round(M.transition.target.radius/k()*100):0;return{camera:{mode:M.state.mode,helper:w({},F.camera.props),stereo:w({},u.camera.stereo),fov:Math.round(Jd(M.state.fov)),manualReset:!!u.camera.manualReset},cameraFog:M.state.fog>0?{name:"on",params:{intensity:M.state.fog}}:{name:"off",params:{}},cameraClipping:{far:M.state.clipFar,radius:He,minNear:M.state.minNear},cameraResetDurationMs:u.cameraResetDurationMs,sceneRadiusFactor:u.sceneRadiusFactor,transparentBackground:u.transparentBackground,dpoitIterations:u.dpoitIterations,pickPadding:u.pickPadding,viewport:u.viewport,postprocessing:w({},u.postprocessing),marking:w({},u.marking),multiSample:w({},u.multiSample),hiZ:w({},G.props),renderer:w({},V.props),trackball:w({},B.props),interaction:w({},Q.props),debug:w({},F.debug.props),handle:w({},F.handle.props)}}let Bn=S.subscribe(()=>{H.dirty=!0,fr({force:!0}),fr({force:!0})}),co=new da(0);function bn(He=!0){s.updateSize(),Ys(),Sl(),He&&Nr(),co.next(+new Date)}Lz(Pt);let Ii=(o=r.changed)===null||o===void 0?void 0:o.subscribe(()=>{I.setTransparency(s.draw.transparency),Nr()});if(ht&&c){let He,_t=Gt=>{let Xt=Gt&&st.getBoundingSphere(st.normalize(Gt,"residue"));G.debugOcclusion(Xt)};a.click.subscribe(Gt=>{if(!Gt.modifiers.control||Gt.button!==2)return;let Xt=Ke(Gt.x,Gt.y);if(!Xt){He=void 0,_t(He);return}He=ae(Xt.id).loci,_t(He)}),f.subscribe(()=>{setTimeout(()=>{_t(He)},100)})}return{webgl:i,add:yr,remove:Ze,commit:Ve,update:(He,_t)=>{if(He){if(!d.has(He))return;I.update(He.renderObjects,!!_t)}else I.update(void 0,!!_t);je=!0},clear:()=>{m.forEach(He=>He.unsubscribe()),m.clear(),d.clear(),I.clear(),F.debug.clear(),Nr(),p.next(d.size)},syncVisibility:()=>{M.state.radiusMax===0&&(Y=!0,j=0),I.syncVisibility()&&F.debug.isEnabled&&F.debug.update(),Nr()},requestDraw:Nr,tick:oe,animate:Qe,resetTime:Le,pause:Ue,resume:()=>{gt=!1},identify:Ke,mark:se,getLoci:ae,handleResize:bn,requestResize:()=>{J=!0},requestCameraReset:He=>{j=He?.durationMs,O=He?.snapshot,Y=!0},camera:M,boundingSphere:I.boundingSphere,boundingSphereVisible:I.boundingSphereVisible,get notifyDidDraw(){return $},set notifyDidDraw(He){$=He},didDraw:f,commited:b,commitQueueSize:v,reprCount:p,resized:co,setProps:(He,_t=!1)=>{var Gt,Xt,Vr,ho;let mt=typeof He=="function"?ss(Ao(),He):He;mt.sceneRadiusFactor!==void 0&&(u.sceneRadiusFactor=mt.sceneRadiusFactor,M.setState({radiusMax:k()},0));let On=Object.create(null);mt.camera&&mt.camera.mode!==void 0&&mt.camera.mode!==M.state.mode&&(On.mode=mt.camera.mode);let $a=Math.round(Jd(M.state.fov));if(mt.camera&&mt.camera.fov!==void 0&&mt.camera.fov!==$a&&(On.fov=or(mt.camera.fov)),mt.cameraFog!==void 0&&mt.cameraFog.params){let go=mt.cameraFog.name==="on"?mt.cameraFog.params.intensity:0;go!==M.state.fog&&(On.fog=go)}if(mt.cameraClipping!==void 0&&(mt.cameraClipping.far!==void 0&&mt.cameraClipping.far!==M.state.clipFar&&(On.clipFar=mt.cameraClipping.far),mt.cameraClipping.minNear!==void 0&&mt.cameraClipping.minNear!==M.state.minNear&&(On.minNear=mt.cameraClipping.minNear),mt.cameraClipping.radius!==void 0)){let go=k()/100*(100-mt.cameraClipping.radius);go>0&&go!==On.radius&&(On.radius=Math.max(go,.01))}Object.keys(On).length>0&&M.setState(On),!((Gt=mt.camera)===null||Gt===void 0)&&Gt.helper&&F.camera.setProps(mt.camera.helper),((Xt=mt.camera)===null||Xt===void 0?void 0:Xt.manualReset)!==void 0&&(u.camera.manualReset=mt.camera.manualReset),((Vr=mt.camera)===null||Vr===void 0?void 0:Vr.stereo)!==void 0&&(Object.assign(u.camera.stereo,mt.camera.stereo),R.setProps(u.camera.stereo.params)),mt.cameraResetDurationMs!==void 0&&(u.cameraResetDurationMs=mt.cameraResetDurationMs),mt.transparentBackground!==void 0&&(u.transparentBackground=mt.transparentBackground),mt.dpoitIterations!==void 0&&(u.dpoitIterations=mt.dpoitIterations),mt.pickPadding!==void 0&&(u.pickPadding=mt.pickPadding),mt.viewport!==void 0&&(u.viewport===mt.viewport||u.viewport.name===mt.viewport.name&&ep(u.viewport.params,mt.viewport.params)||(u.viewport=mt.viewport,Ys(),Sl())),!((ho=mt.postprocessing)===null||ho===void 0)&&ho.background&&(Object.assign(u.postprocessing.background,mt.postprocessing.background),s.draw.postprocessing.background.update(M,u.postprocessing.background,go=>{go&&!_t&&Nr()})),mt.postprocessing&&Object.assign(u.postprocessing,mt.postprocessing),mt.marking&&Object.assign(u.marking,mt.marking),mt.multiSample&&Object.assign(u.multiSample,mt.multiSample),mt.hiZ&&G.setProps(mt.hiZ),mt.renderer&&V.setProps(mt.renderer),mt.trackball&&B.setProps(mt.trackball),mt.interaction&&Q.setProps(mt.interaction),mt.debug&&F.debug.setProps(mt.debug),mt.handle&&F.handle.setProps(mt.handle),On.mode==="orthographic"&&(u.camera.stereo.name="off"),_t||Nr()},getImagePass:(He={})=>new d_(i,l,V,I,M,F,s.draw.transparency,He),getRenderObjects(){let He=[];return I.forEach((_t,Gt)=>He.push(Gt)),He},get props(){return Ao()},get input(){return a},get stats(){return V.stats},get interaction(){return Q.events},dispose:()=>{Bn.unsubscribe(),Ii?.unsubscribe(),MK(Zt),Z=[],I.clear(),F.debug.clear(),B.dispose(),V.dispose(),Q.dispose(),G.dispose(),Bz(Pt)}};function Ys(){let He=T,_t=E,Gt=_,Xt=D;u.viewport.name==="canvas"?(T=0,E=0,_=x.drawingBufferWidth,D=x.drawingBufferHeight):u.viewport.name==="static-frame"?(T=u.viewport.params.x*i.pixelRatio,D=u.viewport.params.height*i.pixelRatio,E=x.drawingBufferHeight-D-u.viewport.params.y*i.pixelRatio,_=u.viewport.params.width*i.pixelRatio):u.viewport.name==="relative-frame"&&(T=Math.round(u.viewport.params.x*x.drawingBufferWidth),D=Math.round(u.viewport.params.height*x.drawingBufferHeight),E=Math.round(x.drawingBufferHeight-D-u.viewport.params.y*x.drawingBufferHeight),_=Math.round(u.viewport.params.width*x.drawingBufferWidth)),(He!==T||_t!==E||Gt!==_||Xt!==D)&&(P=!0)}function Sl(){H.setViewport(T,E,_,D),V.setViewport(T,E,_,D),_n.set(M.viewport,T,E,_,D),_n.set(B.viewport,T,E,_,D),G.setViewport(T,E,_,D)}}t.create=e})(v_||(v_={}));function n2e(t){RK(t)}function RK(t){Re.Canvas3D.ResetSettings.subscribe(t,()=>{var e;(e=t.canvas3d)===null||e===void 0||e.setProps(rS),t.events.canvas3d.settingsUpdated.next(void 0)}),Re.Canvas3D.SetSettings.subscribe(t,e=>{var r;t.canvas3d&&((r=t.canvas3d)===null||r===void 0||r.setProps(e.settings),t.events.canvas3d.settingsUpdated.next(void 0))})}var aL={};ua(aL,{DefaultFocusLociBindings:()=>BK,DefaultLociLabelProvider:()=>l2e,DefaultSelectLociBindings:()=>LK,FocusLoci:()=>ly,HighlightLoci:()=>a2e,SelectLoci:()=>iL});var ay=yn,mh=na,sy=Xe.Trigger,o2e={hoverHighlightOnly:Xe([sy(ay.Flag.None)],"Highlight","Hover element using ${triggers}"),hoverHighlightOnlyExtend:Xe([sy(ay.Flag.None,mh.create({shift:!0}))],"Extend highlight","From selected to hovered element along polymer using ${triggers}")},i2e={bindings:g.Value(o2e,{isHidden:!0}),ignore:g.Value([],{isHidden:!0}),preferAtoms:g.Boolean(!1,{description:"Always prefer atoms over bonds"}),mark:g.Boolean(!0)},a2e=rr.create({name:"representation-highlight-loci",category:"interaction",ctor:class extends rr.Handler{constructor(){super(...arguments),this.lociMarkProvider=(t,e)=>{!this.ctx.canvas3d||!this.params.mark||this.ctx.canvas3d.mark(t,e)}}getLoci(t){return this.params.preferAtoms&&ze.isLoci(t)&&t.bonds.length===2?ze.toFirstStructureElementLoci(t):t}register(){this.subscribeObservable(this.ctx.behaviors.interaction.hover,({current:t,buttons:e,modifiers:r})=>{if(!this.ctx.canvas3d||this.ctx.isBusy)return;let n=this.getLoci(t.loci);if(this.params.ignore.includes(n.kind)){this.ctx.managers.interactivity.lociHighlights.highlightOnly({repr:t.repr,loci:St});return}let o=!1;Xe.match(this.params.bindings.hoverHighlightOnly,e,r)&&(this.ctx.managers.interactivity.lociHighlights.highlightOnly({loci:n}),o=!0),Xe.match(this.params.bindings.hoverHighlightOnlyExtend,e,r)&&(this.ctx.managers.interactivity.lociHighlights.highlightOnlyExtend({loci:n}),o=!0),o||this.ctx.managers.interactivity.lociHighlights.highlightOnly({repr:t.repr,loci:St})}),this.ctx.managers.interactivity.lociHighlights.addProvider(this.lociMarkProvider)}unregister(){this.ctx.managers.interactivity.lociHighlights.removeProvider(this.lociMarkProvider)}},params:()=>i2e,display:{name:"Highlight Loci on Canvas"}}),LK={clickSelect:Xe.Empty,clickToggleExtend:Xe([sy(ay.Flag.Primary,mh.create({shift:!0}))],"Toggle extended selection","Click on element using ${triggers} to extend selection along polymer"),clickSelectOnly:Xe.Empty,clickToggle:Xe([sy(ay.Flag.Primary,mh.create())],"Toggle selection","Click on element using ${triggers}"),clickDeselect:Xe.Empty,clickDeselectAllOnEmpty:Xe([sy(ay.Flag.Primary,mh.create())],"Deselect all","Click on nothing using ${triggers}")},s2e={bindings:g.Value(LK,{isHidden:!0}),ignore:g.Value([],{isHidden:!0}),preferAtoms:g.Boolean(!1,{description:"Always prefer atoms over bonds"}),mark:g.Boolean(!0)},iL=rr.create({name:"representation-select-loci",category:"interaction",ctor:class extends rr.Handler{getLoci(t){return this.params.preferAtoms&&ze.isLoci(t)&&t.bonds.length===2?ze.toFirstStructureElementLoci(t):t}applySelectMark(t,e){let r=this.ctx.state.data.cells.get(t);if(r&&X.isRepresentation3D(r.obj)){this.spine.current=r;let n=this.spine.getRootOfType(X.Molecule.Structure);if(n){e&&this.lociMarkProvider({loci:ue.Loci(n.data)},tt.Deselect);let o=this.ctx.managers.structure.selection.getLoci(n.data);this.lociMarkProvider({loci:o},tt.Select)}}}register(){let t=n=>st.isEmpty(n),e=n=>!st.isEmpty(n),r=[["clickSelect",n=>this.ctx.managers.interactivity.lociSelects.select(n),e],["clickToggle",n=>this.ctx.managers.interactivity.lociSelects.toggle(n),e],["clickToggleExtend",n=>this.ctx.managers.interactivity.lociSelects.toggleExtend(n),e],["clickSelectOnly",n=>this.ctx.managers.interactivity.lociSelects.selectOnly(n),e],["clickDeselect",n=>this.ctx.managers.interactivity.lociSelects.deselect(n),e],["clickDeselectAllOnEmpty",()=>this.ctx.managers.interactivity.lociSelects.deselectAll(),t]];r.sort((n,o)=>{let i=this.params.bindings[n[0]],a=this.params.bindings[o[0]],s=i.triggers.length===0?0:Mi(i.triggers.map(c=>mh.size(c.modifiers)));return(a.triggers.length===0?0:Mi(a.triggers.map(c=>mh.size(c.modifiers))))-s}),this.subscribeObservable(this.ctx.behaviors.interaction.click,({current:n,button:o,modifiers:i})=>{if(!this.ctx.canvas3d||this.ctx.isBusy||!this.ctx.selectionMode)return;let a=this.getLoci(n.loci);if(!this.params.ignore.includes(a.kind)){for(let[s,l,c]of r)if(Xe.match(this.params.bindings[s],o,i)&&(!c||c(a))){l({repr:n.repr,loci:a});break}}}),this.ctx.managers.interactivity.lociSelects.addProvider(this.lociMarkProvider),this.subscribeObservable(this.ctx.state.events.object.created,({ref:n})=>this.applySelectMark(n)),this.subscribeObservable(this.ctx.state.events.object.updated,({ref:n,obj:o,oldObj:i,oldData:a,action:s})=>{let l=this.ctx.state.data.cells.get(n);if(l&&X.Molecule.Structure.is(l.obj)){let c=o.data,u=s==="recreate"?i?.data:s==="in-place"?a:void 0;if(u&&ue.areEquivalent(c,u)&&ue.areHierarchiesEqual(c,u))return;let d=this.ctx.state.data.select(lt.children(n).ofType(X.Molecule.Structure.Representation3D));for(let m of d)this.applySelectMark(m.transform.ref,!0)}})}unregister(){this.ctx.managers.interactivity.lociSelects.removeProvider(this.lociMarkProvider)}constructor(t,e){super(t,e),this.lociMarkProvider=(r,n)=>{!this.ctx.canvas3d||!this.params.mark||this.ctx.canvas3d.mark({loci:r.loci},n)},this.spine=new Af.Impl(t.state.data.cells)}},params:()=>s2e,display:{name:"Select Loci on Canvas"}}),l2e=rr.create({name:"default-loci-label-provider",category:"interaction",ctor:class{register(){this.ctx.managers.lociLabels.addProvider(this.f)}unregister(){this.ctx.managers.lociLabels.removeProvider(this.f)}constructor(t){this.ctx=t,this.f={label:e=>{let r=[];if(z.Loci.is(e)){let n=new Set;for(let{unit:o}of e.elements){let i=z.Location.create(e.structure,o,o.elements[0]),a=Ne.entity.pdbx_description(i).join(", ");n.add(a)}n.size===1&&n.forEach(o=>r.push(o))}return r.push(fu(e)),r.filter(n=>!!n).join("
")},group:e=>e.toString().replace(/Model [0-9]+/g,"Models"),priority:100}}},display:{name:"Provide Default Loci Label"}}),BK={clickFocus:Xe([sy(ay.Flag.Primary,mh.create())],"Representation Focus","Click element using ${triggers}"),clickFocusAdd:Xe([sy(ay.Flag.Primary,mh.create({shift:!0}))],"Representation Focus Add","Click element using ${triggers}"),clickFocusSelectMode:Xe([],"Representation Focus","Click element using ${triggers}"),clickFocusAddSelectMode:Xe([],"Representation Focus Add","Click element using ${triggers}")},c2e={bindings:g.Value(BK,{isHidden:!0})},ly=rr.create({name:"representation-focus-loci",category:"interaction",ctor:class extends rr.Handler{register(){this.subscribeObservable(this.ctx.behaviors.interaction.click,({current:t,button:e,modifiers:r})=>{var n,o,i,a,s;let{clickFocus:l,clickFocusAdd:c,clickFocusSelectMode:u,clickFocusAddSelectMode:d}=this.params.bindings,m=this.ctx.selectionMode?u:l,p=Xe.match(m,e,r),h=(a=(i=(o=(n=t.repr)===null||n===void 0?void 0:n.props)===null||o===void 0?void 0:o.snapshotKey)===null||i===void 0?void 0:i.trim())!==null&&a!==void 0?a:"";if(!this.ctx.selectionMode&&p&&h){this.ctx.managers.snapshot.applyKey(h);return}let{granularity:f}=this.ctx.managers.interactivity.props;if(f!=="residue"&&f!=="element")return;let b=this.ctx.selectionMode?d:c,v=Xe.match(b,e,r);if(!p&&!v)return;let x=st.normalize(t.loci,"residue"),S=this.ctx.managers.structure.focus.current;if(S&&st.areEqual(S.loci,x))this.ctx.managers.structure.focus.clear();else if(p)this.ctx.managers.structure.focus.setFromLoci(x);else{this.ctx.managers.structure.focus.addFromLoci(x);let T=(s=this.ctx.managers.structure.focus.current)===null||s===void 0?void 0:s.loci;T&&this.ctx.managers.camera.focusLoci(T)}})}},params:()=>c2e,display:{name:"Representation Focus Loci on Canvas"}});var cL={};ua(cL,{CameraAxisHelper:()=>m2e,CameraControls:()=>f2e,DefaultClickResetCameraOnEmpty:()=>sL,DefaultClickResetCameraOnEmptySelectMode:()=>lL,DefaultFocusLociBindings:()=>OK,FocusLoci:()=>d2e});var Cm=yn,kd=na,Tm=Xe.Trigger,b_=Xe.TriggerKey,sL=Xe([Tm(Cm.Flag.Primary,kd.create()),Tm(Cm.Flag.Secondary,kd.create()),Tm(Cm.Flag.Primary,kd.create({control:!0}))],"Reset camera focus","Click on nothing using ${triggers}"),lL=Xe([Tm(Cm.Flag.Secondary,kd.create()),Tm(Cm.Flag.Primary,kd.create({control:!0}))],"Reset camera focus","Click on nothing using ${triggers}"),OK={clickCenterFocus:Xe([Tm(Cm.Flag.Primary,kd.create()),Tm(Cm.Flag.Secondary,kd.create()),Tm(Cm.Flag.Primary,kd.create({control:!0}))],"Camera center and focus","Click element using ${triggers}"),clickCenterFocusSelectMode:Xe([Tm(Cm.Flag.Secondary,kd.create()),Tm(Cm.Flag.Primary,kd.create({control:!0}))],"Camera center and focus","Click element using ${triggers}"),clickResetCameraOnEmpty:sL,clickResetCameraOnEmptySelectMode:lL},u2e={minRadius:g.Numeric(8,{min:1,max:50,step:1}),extraRadius:g.Numeric(4,{min:1,max:50,step:1},{description:"Value added to the bounding-sphere radius of the Loci"}),durationMs:g.Numeric(250,{min:0,max:1e3,step:1},{description:"Camera transition duration"}),bindings:g.Value(OK,{isHidden:!0})},d2e=rr.create({name:"camera-focus-loci",category:"interaction",ctor:class extends rr.Handler{register(){this.subscribeObservable(this.ctx.behaviors.interaction.click,({current:t,button:e,modifiers:r})=>{var n,o;if(!this.ctx.canvas3d)return;let i=this.ctx.selectionMode?this.params.bindings.clickCenterFocusSelectMode:this.params.bindings.clickCenterFocus,a=this.ctx.selectionMode?(n=this.params.bindings.clickResetCameraOnEmptySelectMode)!==null&&n!==void 0?n:lL:(o=this.params.bindings.clickResetCameraOnEmpty)!==null&&o!==void 0?o:sL;if(st.isEmpty(t.loci)&&Xe.match(a,e,r)){Re.Camera.Reset(this.ctx,{});return}if(Xe.match(i,e,r)){let s=st.normalize(t.loci,this.ctx.managers.interactivity.props.granularity);this.ctx.managers.camera.focusLoci(s,this.params)}})}},params:()=>u2e,display:{name:"Camera Focus Loci on Canvas"}}),m2e=rr.create({name:"camera-axis-helper",category:"interaction",ctor:class extends rr.Handler{register(){let t=Yr.None,e=0;this.subscribeObservable(this.ctx.behaviors.interaction.click,({current:r})=>{if(!this.ctx.canvas3d||!u_(r.loci))return;let n=r.loci.elements[0].groupId;if(n===Yr.None){t=Yr.None,e=0;return}let{camera:o}=this.ctx.canvas3d,i,a;if(n>=Yr.X&&n<=Yr.Z){t=Yr.None,e=0;let s=y.sub(y(),o.target,o.position),l=y.cross(y(),s,o.up);a=y(),a[n-1]=1,i=y.cross(y(),a,l),y.magnitude(i)===0&&(i=s)}else t===n?e=(e+1)%2:(t=n,e=0),n===Yr.XY?(a=e?y.unitX:y.unitY,i=y.negUnitZ):n===Yr.XZ?(a=e?y.unitX:y.unitZ,i=y.negUnitY):(a=e?y.unitY:y.unitZ,i=y.negUnitX);this.ctx.canvas3d.requestCameraReset({snapshot:(s,l)=>l.getInvariantFocus(s.boundingSphereVisible.center,s.boundingSphereVisible.radius,a,i)})})}},params:()=>({}),display:{name:"Camera Axis Helper"}}),FK={keySpinAnimation:Xe([b_("I")],"Spin Animation","Press ${triggers}"),keyRockAnimation:Xe([b_("O")],"Rock Animation","Press ${triggers}"),keyToggleFlyMode:Xe([b_("Space",kd.create({shift:!0}))],"Toggle Fly Mode","Press ${triggers}"),keyResetView:Xe([b_("T")],"Reset View","Press ${triggers}")},p2e={bindings:g.Value(FK,{isHidden:!0})},f2e=rr.create({name:"camera-controls",category:"interaction",ctor:class extends rr.Handler{register(){this.subscribeObservable(this.ctx.behaviors.interaction.key,({code:t,key:e,modifiers:r})=>{var n;if(!this.ctx.canvas3d)return;let o=w(w({},FK),this.params.bindings),i=this.ctx.canvas3d.props.trackball;if(Xe.matchKey(o.keySpinAnimation,t,r,e)){let a=i.animate.name!=="spin"?"spin":"off";a==="off"?this.ctx.canvas3d.setProps({trackball:{animate:{name:a,params:{}}}}):this.ctx.canvas3d.setProps({trackball:{animate:{name:a,params:{speed:1}}}})}if(Xe.matchKey(o.keyRockAnimation,t,r,e)){let a=i.animate.name!=="rock"?"rock":"off";a==="off"?this.ctx.canvas3d.setProps({trackball:{animate:{name:a,params:{}}}}):this.ctx.canvas3d.setProps({trackball:{animate:{name:a,params:{speed:.3,angle:10}}}})}if(Xe.matchKey(o.keyToggleFlyMode,t,r,e)){let a=!i.flyMode;this.ctx.canvas3d.setProps({trackball:{flyMode:a}}),!((n=this.ctx.canvas3dContext)===null||n===void 0)&&n.canvas&&(this.ctx.canvas3dContext.canvas.style.cursor=a?"crosshair":"unset")}Xe.matchKey(o.keyResetView,t,r,e)&&Re.Camera.Reset(this.ctx,{})})}},params:()=>p2e,display:{name:"Camera Controls on Canvas"}});var XL={};ua(XL,{AccessibleSurfaceArea:()=>XK,BestDatabaseSequenceMapping:()=>kZ,CrossLinkRestraint:()=>VZ,Interactions:()=>PZ,SecondaryStructure:()=>EZ,StructureInfo:()=>NK,ValenceModel:()=>IZ});var NK=rr.create({name:"structure-info-prop",category:"custom-props",display:{name:"Structure Info"},ctor:class extends rr.Handler{get maxModelIndex(){var t,e;let r=-1,n=this.ctx.state.data.select(lt.Generators.rootsOfType(X.Molecule.Model));for(let o of n){let i=((t=o.obj)===null||t===void 0?void 0:t.data)&&Et.Index.get((e=o.obj)===null||e===void 0?void 0:e.data).value;i!==void 0&&i>r&&(r=i)}return r}get maxStructureIndex(){var t,e;let r=-1,n=this.ctx.state.data.select(lt.Generators.rootsOfType(X.Molecule.Structure));for(let o of n){let i=((t=o.obj)===null||t===void 0?void 0:t.data)&&ue.Index.get((e=o.obj)===null||e===void 0?void 0:e.data).value;i!==void 0&&i>r&&(r=i)}return r}get asymIdOffset(){var t;let e=0,r=0,n=this.ctx.state.data.select(lt.Generators.rootsOfType(X.Molecule.Model));for(let o of n){let i=(t=o.obj)===null||t===void 0?void 0:t.data;if(i){let a=Et.AsymIdCount.get(i),s=Et.AsymIdOffset.get(i).value;a!==void 0&&s!==void 0&&(e=Math.max(e,s.auth+a.auth),r=Math.max(r,s.label+a.label))}}return{auth:e,label:r}}setModelMaxIndex(){var t;let e=this.maxModelIndex,r=this.ctx.state.data.select(lt.Generators.rootsOfType(X.Molecule.Model));for(let n of r){let o=(t=n.obj)===null||t===void 0?void 0:t.data;o&&Et.MaxIndex.get(o).value!==e&&Et.MaxIndex.set(o,{value:e},e)}}setStructureMaxIndex(){var t;let e=this.maxModelIndex,r=this.ctx.state.data.select(lt.Generators.rootsOfType(X.Molecule.Structure));for(let n of r){let o=(t=n.obj)===null||t===void 0?void 0:t.data;o&&ue.MaxIndex.get(o).value!==e&&ue.MaxIndex.set(o,{value:e},e)}}handleModel(t,e){if(Et.Index.get(t).value===void 0){let r=e&&Et.Index.get(e).value,n=r??this.maxModelIndex+1;Et.Index.set(t,{value:n},n)}if(Et.AsymIdOffset.get(t).value===void 0){let r=e&&Et.AsymIdOffset.get(e).value,n=r??w({},this.asymIdOffset);Et.AsymIdOffset.set(t,{value:n},n)}}handleStructure(t,e){if(t.parent!==void 0||ue.Index.get(t).value!==void 0)return;let r=e&&ue.Index.get(e).value,n=r??this.maxStructureIndex+1;ue.Index.set(t,{value:n},n)}handle(t,e,r){X.Molecule.Structure.is(e)?!this.ctx.state.data.tree.transforms.get(t).transformer.definition.isDecorator&&e.data.parent===void 0&&this.handleStructure(e.data,r?.data):X.Molecule.Model.is(e)&&(this.ctx.state.data.tree.transforms.get(t).transformer.definition.isDecorator||this.handleModel(e.data,r?.data))}register(){this.ctx.customModelProperties.register(Et.AsymIdOffset,!0),this.ctx.customModelProperties.register(Et.Index,!0),this.ctx.customModelProperties.register(Et.MaxIndex,!0),this.ctx.customStructureProperties.register(ue.Index,!0),this.ctx.customStructureProperties.register(ue.MaxIndex,!0),this.subscribeObservable(this.ctx.state.data.events.object.created,t=>{this.handle(t.ref,t.obj),this.setModelMaxIndex(),this.setStructureMaxIndex()}),this.subscribeObservable(this.ctx.state.data.events.object.updated,t=>{this.handle(t.ref,t.obj,t.oldObj)})}unregister(){this.ctx.customModelProperties.unregister(Et.AsymIdOffset.descriptor.name),this.ctx.customModelProperties.unregister(Et.Index.descriptor.name),this.ctx.customModelProperties.unregister(Et.MaxIndex.descriptor.name),this.ctx.customStructureProperties.unregister(ue.Index.descriptor.name),this.ctx.customStructureProperties.unregister(ue.MaxIndex.descriptor.name)}}});var Md=[-1,1.76,1.87,1.65,1.5,1.4,1.85,1.8,1.6,1.4],x_={ALA:121,ARG:265,ASN:187,ASP:187,CYS:148,GLU:214,GLN:214,GLY:97,HIS:216,ILE:195,LEU:191,LYS:230,MET:203,PHE:228,PRO:154,SER:143,THR:163,TRP:264,TYR:255,VAL:165},VK=121;function zK(t){let{key:e}=Ne.residue,{type_symbol:r,label_atom_id:n,label_comp_id:o}=Ne.atom,{structure:i,atomRadiusType:a,serialResidueIndex:s}=t,l=z.Location.create(i),c=0,u=0,d=-1;l.structure=i;for(let m=0,p=0,h=i.units.length;mV[0]-H[0]);let G=0;e:for(let V=0;Vj)continue e}++G}a[i[x]]+=l*G*R*R}}var dL={numberOfSpherePoints:g.Numeric(92,{min:12,max:360,step:1},{description:"Number of sphere points to sample per atom: 92 (original paper), 960 (BioJava), 3000 (EPPIC) - see Shrake A, Rupley JA: Environment and exposure to solvent of protein atoms. Lysozyme and insulin. J Mol Biol 1973."}),probeSize:g.Numeric(1.4,{min:.1,max:4,step:.01},{description:"Corresponds to the size of a water molecule: 1.4 (original paper), 1.5 (occassionally used)"}),nonPolymer:g.Boolean(!1,{description:"Include non-polymer atoms as occluders."}),traceOnly:g.Boolean(!1,{description:"Compute only using alpha-carbons, if true increase probeSize accordingly (e.g., 4 A). Considers only canonical amino acids."})};var ph;(function(t){function e(c,u={}){let d=w(w({},g.getDefaultValues(dL)),u);return ie.create("Compute Accessible Surface Area",m=>N(this,null,function*(){return yield r(m,c,d)}))}t.compute=e;function r(c,u,d){return N(this,null,function*(){let m=n(u,d);zK(m),yield GK(c,m);let{area:p,serialResidueIndex:h}=m;return{area:p,serialResidueIndex:h}})}function n(c,u){let{elementCount:d,atomicResidueCount:m}=c,{probeSize:p,nonPolymer:h,traceOnly:f,numberOfSpherePoints:b}=u;return{structure:c,probeSize:p,nonPolymer:h,traceOnly:f,spherePoints:o(b),scalingConstant:4*Math.PI/b,maxLookupRadius:2*u.probeSize+2*Md[2],atomRadiusType:new Int8Array(d),serialResidueIndex:new Int32Array(d),area:new Float32Array(m)}}function o(c){let u=[],d=Math.PI*(3-Math.sqrt(5)),m=2/c;for(let p=0;p{if(!Pe.isAtomic(t.element.unit))return!1;let e=zl.get(t.element.structure).value;return e?ph.getFlag(t.element,e)===1:!1}),isAccessible:Tf.Dynamic(EA("computed","accessible-surface-area.is-accessible",cd.Bool),t=>{if(!Pe.isAtomic(t.element.unit))return!1;let e=zl.get(t.element.structure).value;return e?ph.getFlag(t.element,e)===2:!1})},zl=gf.createProvider({label:"Accessible Surface Area",descriptor:Xc({name:"molstar_accessible_surface_area",symbols:S_}),type:"root",defaultParams:mL,getParams:t=>mL,isApplicable:t=>!0,obtain:(t,e,r)=>N(void 0,null,function*(){let n=w(w({},g.getDefaultValues(mL)),r);return{value:yield ph.compute(e,n).runInContext(t.runtime)}})});var pL=ce(16448250),v2e="Assigns a color based on the relative accessible surface area of a residue.",jK={list:g.ColorList("rainbow",{presetKind:"scale"})};function b2e(t){return jK}function HK(t,e){let r,n=ki.create({listOrName:e.list.colors,minLabel:"buried",maxLabel:"exposed",domain:[0,1]}),o=t.structure&&zl.get(t.structure),i=o?f0(o.id,o.version):-1;if(o?.value&&t.structure){let a=z.Location.create(t.structure),s=o.value,l=c=>{let u=ph.getNormalizedValue(c,s);return u===-1?pL:n.color(u)};r=c=>z.Location.is(c)&&Pe.isAtomic(c.unit)?l(c):ze.isLocation(c)?(a.unit=c.aUnit,a.element=c.aUnit.elements[c.aIndex],l(a)):pL}else r=()=>pL;return{factory:HK,granularity:"group",preferSmoothing:!0,color:r,props:e,contextHash:i,description:v2e,legend:n?n.legend:void 0}}var fL={name:"accessible-surface-area",label:"Accessible Surface Area",category:wo.Category.Residue,factory:HK,getParams:b2e,defaultValues:g.getDefaultValues(jK),isApplicable:t=>!!t.structure,ensureCustomProperties:{attach:(t,e)=>e.structure?zl.attach(t,e.structure,void 0,!0):Promise.resolve(),detach:t=>t.structure&&zl.ref(t.structure,!1)}};var XK=rr.create({name:"computed-accessible-surface-area-prop",category:"custom-props",display:{name:"Accessible Surface Area"},ctor:class extends rr.Handler{constructor(){super(...arguments),this.provider=zl,this.labelProvider={label:t=>{if(this.params.showTooltip)return x2e(t)}}}update(t){let e=this.params.autoAttach!==t.autoAttach||this.params.showTooltip!==t.showTooltip;return this.params.autoAttach=t.autoAttach,this.params.showTooltip=t.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),e}register(){N0.addCustomProp(this.provider.descriptor),this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach),this.ctx.representation.structure.themes.colorThemeRegistry.add(fL),this.ctx.managers.lociLabels.addProvider(this.labelProvider),this.ctx.query.structure.registry.add(qK),this.ctx.query.structure.registry.add(WK)}unregister(){N0.removeCustomProp(this.provider.descriptor),this.ctx.customStructureProperties.unregister(this.provider.descriptor.name),this.ctx.representation.structure.themes.colorThemeRegistry.remove(fL),this.ctx.managers.lociLabels.removeProvider(this.labelProvider),this.ctx.query.structure.registry.remove(qK),this.ctx.query.structure.registry.remove(WK)}},params:()=>({autoAttach:g.Boolean(!1),showTooltip:g.Boolean(!0)})});function x2e(t){if(t.kind==="element-loci"){if(t.elements.length===0)return;let e=zl.get(t.structure).value;if(!e||t.structure.customPropertyDescriptors.hasReference(zl.descriptor))return;let{getSerialIndex:r}=t.structure.root.serialMapping,{area:n,serialResidueIndex:o}=e,i=new Set,a=0;for(let{indices:l,unit:c}of t.elements){let{elements:u}=c;we.forEach(l,d=>{let m=o[r(c,u[d])];m!==-1&&!i.has(m)&&(a+=n[m],i.add(m))})}return i.size===0?void 0:`Accessible Surface Area ${`(${i.size} ${i.size>1?"Residues sum":"Residue"})`}: ${a.toFixed(2)} \u212B2`}else if(t.kind==="structure-loci"){let e=zl.get(t.structure).value;return!e||t.structure.customPropertyDescriptors.hasReference(zl.descriptor)?void 0:`Accessible Surface Area (Whole Structure): ${Rz(e.area).toFixed(2)} \u212B2`}}var qK=Lr("Buried Protein Residues",q.struct.modifier.union([q.struct.modifier.wholeResidues([q.struct.modifier.union([q.struct.generator.atomGroups({"chain-test":q.core.rel.eq([q.ammp("objectPrimitive"),"atomistic"]),"residue-test":S_.isBuried.symbol()})])])]),{description:"Select buried protein residues.",category:Ur.Residue,ensureCustomProperties:(t,e)=>zl.attach(t,e)}),WK=Lr("Accessible Protein Residues",q.struct.modifier.union([q.struct.modifier.wholeResidues([q.struct.modifier.union([q.struct.generator.atomGroups({"chain-test":q.core.rel.eq([q.ammp("objectPrimitive"),"atomistic"]),"residue-test":S_.isAccessible.symbol()})])])]),{description:"Select accessible protein residues.",category:Ur.Residue,ensureCustomProperties:(t,e)=>zl.attach(t,e)});function lr(t,e){return t.model.atomicHierarchy.atoms.type_symbol.value(t.elements[e])}function C_(t,e){return t.model.atomicHierarchy.atoms.pdbx_formal_charge.value(t.elements[e])}function fh(t,e){return t.model.atomicHierarchy.atoms.label_atom_id.value(t.elements[e])}function nS(t,e){return t.model.atomicHierarchy.atoms.label_alt_id.value(t.elements[e])}function oS(t,e){return t.model.atomicHierarchy.atoms.label_comp_id.value(t.elements[e])}function S2e(t,e,r){let n=0,o=t.interUnitBonds.getEdgeIndices(r,e.id);for(let i=0,a=o.length;i{lr(i,a)===n&&(o+=1)}),o}function T2e(t,e,r){let{offset:n,b:o,edgeProps:{flags:i}}=t.bonds;Pr.is;for(let a=n[e],s=n[e+1];a{lr(a,s)!=="H"&&(a.conformation.position(a.elements[s],Fv),y.sub(__,Fv,cy),i.push(y.angle(w_,__)))}),i}function gL(t,e,r,n,o){e.conformation.position(e.elements[r],cy),n.conformation.position(n.elements[o],P_),y.sub(w_,P_,cy);let i=[y(),y()],a=0,s,l;if(Si(t,e,r,(c,u)=>{a>1||lr(c,u)!=="H"&&(s=c,l=u,c.conformation.position(c.elements[u],Fv),y.sub(i[a++],Fv,cy))}),a===1&&s&&l&&Si(t,s,l,(c,u)=>{a>1||c===e&&u===r||lr(c,u)!=="H"&&(c.conformation.position(c.elements[u],Fv),y.sub(i[a++],Fv,cy))}),a===2)return y.cross(__,i[0],i[1]),Math.abs(Math.PI/2-y.angle(__,w_))}var yL=new ze.ElementBondIterator,vL=new ze.ElementBondIterator;function P2e(t,e,r){let n=lr(e,r),o=n==="O"||n==="N";if(o&&Ul(t,e,r)===4)return!1;for(yL.setElement(t,e,r);yL.hasNext;){let i=yL.move();if(i.order>1)return!0;if(o){let a=lr(i.otherUnit,i.otherIndex);for(vL.setElement(t,i.otherUnit,i.otherIndex);vL.hasNext;){let s=vL.move();if(s.order>1){if((a==="P"||a==="S")&&lr(s.otherUnit,s.otherIndex)==="O")continue;return!0}}}}return!1}function E2e(t,e,r){let n=0,{offset:o,edgeProps:{flags:i,order:a}}=e.bonds;for(let s=o[r],l=o[r+1];s{let l=t.interUnitBonds.edges[s];Pr.isCovalent(l.props.flag)&&(n+=l.props.order)}),n}var Vv=new ze.ElementBondIterator,bL=new ze.ElementBondIterator;function I2e(t,e,r,n){let o=Na(t,e,r,"H"),i=lr(e,r),a=C_(e,r),s=n.assignCharge==="always"||n.assignCharge==="auto"&&a===0,l=n.assignH==="always"||n.assignH==="auto"&&o===0,c=Ul(t,e,r),u=E2e(t,e,r),d=P2e(t,e,r),m=u-c>0,p=0,h=Un.Unknown;switch(i){case"H":s&&(c===0?(a=1,h=Un.Spherical):c===1&&(a=0,h=Un.Terminal));break;case"C":s&&(a=0),l&&(p=Math.max(0,4-u-Math.abs(a))),h=uy(c+p+Math.max(0,-a));break;case"N":if(s)if(!l)a=u-3;else if(d&&u<4)c-o===1&&u-o===2?a=1:a=0;else for(Vv.setElement(t,e,r);Vv.hasNext;){let f=Vv.move(),b=lr(f.otherUnit,f.otherIndex);if(b==="S"||YX(b)){a=0;break}else a=1}l&&(p=Math.max(0,3-u+a)),d&&!m?h=uy(c+p-a):h=uy(c+p+1-a);break;case"O":if(s&&(l||(a=u-2),u===1)){Vv.setElement(t,e,r);e:for(;Vv.hasNext;){let f=Vv.move();for(bL.setElement(t,f.otherUnit,f.otherIndex);bL.hasNext;){let b=bL.move();if(!(b.otherUnit===e&&b.otherIndex===r)&&lr(b.otherUnit,b.otherIndex)==="O"&&b.order===2){a=-1;break e}}}}l&&(p=Math.max(0,2-u+a)),d&&!m?h=uy(c+p-a+1):h=uy(c+p-a+2);break;case"S":s&&(l||(u<=3&&Na(t,e,r,"O")===0?a=u-2:a=0)),l&&u<2&&(p=Math.max(0,2-u+a)),u<=3&&(h=uy(c+p-a+2));break;case"F":case"CL":case"BR":case"I":case"AT":s&&(a=u-1);break;case"LI":case"NA":case"K":case"RB":case"CS":case"FR":s&&(a=1-u);break;case"BE":case"MG":case"CA":case"SR":case"BA":case"RA":s&&(a=2-u);break;default:ht&&console.warn("Requested charge, protonation for an unhandled element",i)}return[a,p,p+o,h]}function D2e(t,e,r){let n=e.elements.length,o=new Int8Array(n),i=new Int8Array(n),a=new Int8Array(n),s=new Int8Array(n),l=!!t.parent,c;if(l){let u=t.root.unitMap.get(e.id);if(c=tr.indicesOf(u.elements,e.elements),c.length!==e.elements.length)throw new Error("expected to find an index for every element");e=u,t=t.root}for(let u=0;uSL,isApplicable:t=>!0,obtain:(t,e,r)=>N(void 0,null,function*(){let n=w(w({},g.getDefaultValues(SL)),r);return{value:yield KK(t.runtime,e,n)}})});var tn;(function(t){function e(d,m,p,h){return y.set(d,h.x[p],h.y[p],h.z[p]),y.transformMat4(d,d,m.conformation.operator.matrix),d}t.setPosition=e;function r(d,m){let p=new Int32Array(m+1),h=new Int32Array(m),f=new Int32Array(m),{members:b,count:v,offsets:x}=d;for(let E=0,_=x[v];E<_;++E)++f[b[E]];let S=0;for(let E=0;Eo(m,f)})}t.create=n;function o(d,m){let p,{count:h,types:f}=d,b=[];for(let x=0;x{m.x=0,m.y=0,m.z=0,m.offset=d.elementCount,m.count=0},pushMember:(p,h,f,b)=>{he.add(d,b),m.x+=p,m.y+=h,m.z+=f,m.count+=1},finishState:(p,h)=>{let{count:f}=m;f!==0&&(he.add(l,p),he.add(c,h),he.add(i,m.x/f),he.add(a,m.y/f),he.add(s,m.z/f),he.add(u,m.offset))},add:(p,h,f,b,v,x)=>{he.add(l,p),he.add(c,h),he.add(i,f),he.add(a,b),he.add(s,v),he.add(u,d.elementCount),he.add(d,x)},getFeatures:p=>{he.add(u,d.elementCount);let h=he.compact(i,!0),f=he.compact(a,!0),b=he.compact(s,!0),v=i.elementCount;return tn.create(p,{x:h,y:f,z:b,count:v,types:he.compact(l,!0),groups:he.compact(c,!0),offsets:he.compact(u,!0),members:he.compact(d,!0)})}}}t.create=e})(E_||(E_={}));var I_;(function(t){function e(r,n,o){let i=new Int32Array(o+1),a=new Int32Array(o),s=new Int32Array(o),{members:l,offsets:c}=n;for(let m=0,p=r.edgeCount*2;mf)){for(let b=c[h],v=c[h+1];bf)){for(let b=c[h],v=c[h+1];bd||(d=I_.createElementsIndex(u,r,n))})}}}t.create=e})(A_||(A_={}));var k_;(function(t){function e(){let r=new kT.Builder;return{startUnitPair(n,o){r.startUnitPair(n.id,o.id)},finishUnitPair(){r.finishUnitPair()},add(n,o,i){r.add(n,o,{type:i,flag:Gl.None})},getContacts(n){return new D_(r.getMap(),n)}}}t.create=e})(k_||(k_={}));var t$={lineOfSightDistFactor:g.Numeric(1,{min:0,max:3,step:.1})},A2e=3;function r$(t,e,r){let n=e.members[e.offsets[e.feature]],o=r.members[r.offsets[r.feature]];if(n===o&&e.unit===r.unit)return!1;let i=nS(e.unit,n),a=nS(r.unit,o);return!(i&&a&&i!==a||e.unit===r.unit&&e.unit.model.atomicHierarchy.residueAtomSegments.count>1&&e.unit.residueIndex[e.unit.elements[n]]===r.unit.residueIndex[r.unit.elements[o]]||YK(t,e.unit,n,r.unit,o))}function JK(t,e,r,n){let o=nS(t,e),i=nS(r,n);return o&&i&&o!==i}function e$(t,e){let{feature:r,offsets:n,members:o}=e;for(let i=n[r],a=n[r+1];iD.maxDistance)),{center:v,radius:x}=m.boundary.sphere,S=(x+b)*(x+b),T=s.lineOfSightDistFactor,E=tn.Info(t,e,r),_=tn.Info(t,n,o);i.startUnitPair(e,n);for(let D=0;DS)continue;let{indices:P,count:A,squaredDistances:I}=m.find(f[0],f[1],f[2],b);if(A!==0){E.feature=D;for(let k=0;k{N2e.includes(lr(d,m))&&(u=!0)}),u&&r.add(7,Br.None,o[n[s]],i[n[s]],a[n[s]],s)}}}function z2e(t,e){return t===7&&e===6||t===6&&e===7}var U2e=or(180),G2e=or(120);function j2e(t){return{angleMax:or(t.angleMax)}}function H2e(t,e,r,n){let o=e.types[e.feature],i=r.types[r.feature];if(!z2e(o,i))return;let[a,s]=o===6?[e,r]:[r,e],l=a.members[a.offsets[a.feature]],c=s.members[s.offsets[s.feature]],u=Nv(t,a.unit,l,s.unit,c);if(u.length!==1||U2e-u[0]>n.angleMax)return;let d=Nv(t,s.unit,c,a.unit,l);if(d.length!==0&&!d.some(m=>G2e-m>n.angleMax))return $t.HalogenBond}var a$=tn.Provider([6],O2e),s$=tn.Provider([7],V2e),l$={name:"halogen-bonds",params:L2e,createTester:t=>{let e=j2e(t);return{maxDistance:t.distanceMax,requiredFeatures:new Set([6,7]),getType:(r,n,o)=>H2e(r,n,o,e)}}};var m$={distanceMax:g.Numeric(3.5,{min:1,max:5,step:.1}),backbone:g.Boolean(!0,{description:"Include backbone-to-backbone hydrogen bonds"}),accAngleDevMax:g.Numeric(45,{min:0,max:180,step:1},{description:"Max deviation from ideal acceptor angle"}),donAngleDevMax:g.Numeric(45,{min:0,max:180,step:1},{description:"Max deviation from ideal donor angle"}),accOutOfPlaneAngleMax:g.Numeric(90,{min:0,max:180,step:1}),donOutOfPlaneAngleMax:g.Numeric(45,{min:0,max:180,step:1})},q2e=U(w({},m$),{water:g.Boolean(!1,{description:"Include water-to-water hydrogen bonds"}),sulfurDistanceMax:g.Numeric(4.1,{min:1,max:5,step:.1})}),W2e=w({},m$);function _L(t,e){let r=wm.get(t).value;if(!r)throw Error("expected valence model to be available");let n=r.get(e.id);if(!n)throw Error("expected valence model for unit to be available");return n}function X2e(t,e,r){let{totalH:n}=_L(t,e),{elements:o}=e,{x:i,y:a,z:s}=e.model.atomicConformation;for(let l=0,c=o.length;l0&&(u==="N"||u==="O"||u==="S"))&&r.add(4,Br.None,i[o[l]],a[o[l]],s[o[l]],l)}}function Y2e(t,e,r){let{totalH:n}=_L(t,e),{elements:o}=e,{x:i,y:a,z:s}=e.model.atomicConformation;for(let l=0,c=o.length;l0&&(Na(t,e,l,"N")>0||Na(t,e,l,"O")>0||Q2e(e,l))&&r.add(9,Br.None,i[o[l]],a[o[l]],s[o[l]],l)}function Q2e(t,e){let{elementAromaticRingIndices:r,all:n}=t.rings,o=r.get(e);if(o===void 0)return!1;for(let i=0,a=o.length;i{r.add(5,Br.None,s[a[d]],l[a[d]],c[a[d]],d)};for(let d=0,m=a.length;dMath.abs(s-u)>n.maxDonAngleDev))return;if(e.idealGeometry[o]===Un.Trigonal){let u=gL(t,e.unit,o,r.unit,i);if(u!==void 0&&u>n.maxDonOutOfPlaneAngle)return}let l=Nv(t,r.unit,i,e.unit,o),c=hL.get(r.idealGeometry[i])||d$;if(!l.some(u=>c-u>n.maxAccAngleDev)){if(r.idealGeometry[i]===Un.Trigonal){let u=gL(t,r.unit,i,e.unit,o);if(u!==void 0&&u>n.maxAccOutOfPlaneAngle)return}return!0}}function nwe(t,e,r,n,o){let i=e.types[e.feature],a=r.types[r.feature];if(!ewe(i,a))return;let[s,l]=a===5?[e,r]:[r,e],c=s.members[s.offsets[s.feature]],u=l.members[l.offsets[l.feature]],d=lr(s.unit,c)==="S"||lr(l.unit,u)==="S"?o.maxSulfurDistSq:o.maxDistSq;if(!(n>d)&&!(!o.includeWater&&J2e(s.unit,c,l.unit,u))&&h$(t,s,l,o))return $t.HydrogenBond}function owe(t,e,r,n,o){let i=e.types[e.feature],a=r.types[r.feature];if(!twe(i,a))return;let[s,l]=a===5?[e,r]:[r,e];if(h$(t,s,l,o))return $t.WeakHydrogenBond}var g$=tn.Provider([4],X2e),y$=tn.Provider([9],Y2e),v$=tn.Provider([5],K2e),b$={name:"hydrogen-bonds",params:q2e,createTester:t=>{let e=Math.max(t.distanceMax,t.sulfurDistanceMax),r=rwe(t);return{maxDistance:e,requiredFeatures:new Set([4,5]),getType:(n,o,i,a)=>nwe(n,o,i,a,r)}}},x$={name:"weak-hydrogen-bonds",params:W2e,createTester:t=>{let e=f$(t);return{maxDistance:t.distanceMax,requiredFeatures:new Set([9,5]),getType:(r,n,o,i)=>owe(r,n,o,i,e)}}};function S$(t,e,r){return lr(e,r)==="S"&&Na(t,e,r,"O")===3}function C$(t,e,r){return lr(e,r)==="S"&&Na(t,e,r,"O")===4}function PL(t,e,r){return lr(e,r)==="P"&&Na(t,e,r,"O")===Ul(t,e,r)}function T$(t,e,r){let n=0;return lr(e,r)==="C"&&Na(t,e,r,"O")===2&&Na(t,e,r,"C")===1&&Si(t,e,r,(o,i)=>{lr(o,i)==="O"&&Ul(t,o,i)-Na(t,o,i,"H")===1&&(n+=1)}),n===2}function w$(t,e,r){let n=0;return lr(e,r)==="C"&&Ul(t,e,r)===3&&Na(t,e,r,"N")===3&&Si(t,e,r,(o,i)=>{Ul(t,o,i)-Na(t,o,i,"H")===1&&(n+=1)}),n===2}function _$(t,e,r){let n=0;return lr(e,r)==="C"&&Ul(t,e,r)===3&&Na(t,e,r,"N")===2&&Na(t,e,r,"C")===1&&Si(t,e,r,(o,i)=>{Ul(t,o,i)-Na(t,o,i,"H")===1&&(n+=1)}),n===2}var iwe=new Set(["N","O","S","F","CL","BR","I"]);function awe(t){return iwe.has(t)}function P$(t,e,r){let n=!1;return Si(t,e,r,(o,i)=>{awe(lr(o,i))&&(n=!0)}),n}var swe={distanceMax:g.Numeric(5,{min:0,max:8,step:.1})},lwe={distanceMax:g.Numeric(5.5,{min:1,max:8,step:.1}),offsetMax:g.Numeric(2,{min:0,max:4,step:.1}),angleDevMax:g.Numeric(30,{min:0,max:180,step:1})},cwe={distanceMax:g.Numeric(6,{min:1,max:8,step:.1}),offsetMax:g.Numeric(2,{min:0,max:4,step:.1})},uwe=["ARG","HIS","LYS"],dwe=["GLU","ASP"];function A$(t,e){let r=wm.get(t).value;if(!r)throw Error("expected valence model to be available");let n=r.get(e.id);if(!n)throw Error("expected valence model for unit to be available");return n}function mwe(t,e,r){let{charge:n}=A$(t,e),{elements:o}=e,{x:i,y:a,z:s}=e.model.atomicConformation,l=new Set,{label_comp_id:c}=e.model.atomicHierarchy.atoms,u=$r.transientSegments(e.model.atomicHierarchy.residueAtomSegments,o);for(;u.hasNext;){let{index:d,start:m,end:p}=u.move(),h=c.value(e.model.atomicHierarchy.residueAtomSegments.offsets[d]);if(uwe.includes(h)){r.startState();for(let f=m;f{lr(e,x)==="N"&&(l.add(x),r.pushMember(i[o[x]],a[o[x]],s[o[x]],x))}),r.finishState(1,b))}for(let f=m;f0&&!l.has(f)&&r.add(1,Br.None,i[o[f]],a[o[f]],s[o[f]],f)}}}function pwe(t,e,r){let{charge:n}=A$(t,e),{elements:o}=e,{x:i,y:a,z:s}=e.model.atomicConformation,l=new Set,{label_comp_id:c}=e.model.atomicHierarchy.atoms,u=$r.transientSegments(e.model.atomicHierarchy.residueAtomSegments,o);for(;u.hasNext;){let{index:d,start:m,end:p}=u.move(),h=c.value(e.model.atomicHierarchy.residueAtomSegments.offsets[d]);if(dwe.includes(h)){r.startState();for(let f=m;f{lr(e,v)==="O"&&r.pushMember(i[o[v]],a[o[v]],s[o[v]],v)}),r.finishState(2,Br.Phosphate));else if(!Vx.has(h)){for(let f=m;f{lr(e,x)==="O"&&(l.add(x),r.pushMember(i[o[x]],a[o[x]],s[o[x]],x))}),r.finishState(2,b))}for(let f=m;f=Cwe-o.angleDevMax)return $t.PiStacking;if(s<=o.angleDevMax+D$&&s>=D$-o.angleDevMax)return $t.PiStacking}}}function _we(t,e,r,n,o){let i=e.types[e.feature],a=r.types[r.feature];if(ywe(i,a)){let[s,l]=i===3?[e,r]:[r,e];if(IL(iS,s),DL(l,s,iS)<=o.offsetMax)return $t.CationPi}}var k$=tn.Provider([2],pwe),M$=tn.Provider([1],mwe),R$=tn.Provider([3],fwe),L$={name:"ionic",params:swe,createTester:t=>{let e=bwe(t);return{maxDistance:t.distanceMax,requiredFeatures:new Set([2,1]),getType:(r,n,o,i)=>Twe(r,n,o,i,e)}}},B$={name:"pi-stacking",params:lwe,createTester:t=>{let e=xwe(t);return{maxDistance:t.distanceMax,requiredFeatures:new Set([3]),getType:(r,n,o,i)=>wwe(r,n,o,i,e)}}},O$={name:"cation-pi",params:cwe,createTester:t=>{let e=Swe(t);return{maxDistance:t.distanceMax,requiredFeatures:new Set([3,1]),getType:(r,n,o,i)=>_we(r,n,o,i,e)}}};var Pwe={distanceMax:g.Numeric(4,{min:1,max:5,step:.1})};function Ewe(t,e,r){let{elements:n}=e,{x:o,y:i,z:a}=e.model.atomicConformation;for(let s=0,l=n.length;s{let p=lr(d,m);p!=="C"&&p!=="H"&&(u=!1)})):c==="F"&&(u=!0),u&&r.add(8,Br.None,o[n[s]],i[n[s]],a[n[s]],s)}}function Iwe(t,e){return t===8&&e===8}function Dwe(t,e,r,n){let o=e.types[e.feature],i=r.types[r.feature];if(!Iwe(o,i))return;let a=e.members[e.offsets[e.feature]],s=r.members[r.offsets[r.feature]];if(!(lr(e.unit,a)==="F"&&lr(r.unit,s)==="F"))return $t.Hydrophobic}var F$=tn.Provider([8],Ewe),N$={name:"hydrophobic",params:Pwe,createTester:t=>({maxDistance:t.distanceMax,requiredFeatures:new Set([8]),getType:(e,r,n,o)=>Dwe(e,r,n,o)})};var Awe={distanceMax:g.Numeric(3,{min:1,max:5,step:.1})},kwe=["LI","NA","K","RB","CS","MG","CA","SR","BA","AL","GA","IN","TL","SC","SN","PB","BI","SB","HG"];function Mwe(t,e,r){let{elements:n}=e,{x:o,y:i,z:a}=e.model.atomicConformation;for(let s=0,l=n.length;s({maxDistance:t.distanceMax,requiredFeatures:new Set([13,12,10,11]),getType:(e,r,n,o)=>Owe(e,r,n,o)})};function H$(t,e){let{contacts:r,unitsContacts:n,unitsFeatures:o}=e,i=[Fwe(t,e),Nwe(t,e),Vwe(t,e),zwe(t,e),Uwe(t,e)];for(let s=0,l=r.edgeCount;sr.edges[c].props.flag=Gl.Filtered,s,l;return{isApplicable:c=>c===$t.Hydrophobic,handleInterContact:(c,u,d)=>{o(c,u,d,i,a)},startUnit:(c,u,d)=>{s=new Map,l=m=>u.edgeProps.flag[m]=Gl.Filtered},handleIntraContact:(c,u,d)=>{o(c,u,d,s,l)}}}function Nwe(t,e){let{contacts:r}=e,n=(o,i)=>{let a=o.types[o.feature]===9?i:o,s=a.members[a.offsets[a.feature]],{edgeProps:{type:l},elementsIndex:{offsets:c,indices:u}}=e.unitsContacts.get(a.unit.id);for(let m=c[s],p=c[s+1];mo===$t.WeakHydrogenBond,handleInterContact:(o,i,a)=>{n(i,a)&&(r.edges[o].props.flag=Gl.Filtered)},startUnit:()=>{},handleIntraContact:(o,i,a)=>{if(n(i,a)){let{flag:s}=e.unitsContacts.get(i.unit.id).edgeProps;s[o]=Gl.Filtered}}}}function AL(t,e,r,n,o){let{offsets:i,feature:a}=r,{offsets:s,feature:l}=n;for(let c=i[a],u=i[a+1];cn===$t.Ionic,handleInterContact:(n,o,i)=>{AL([$t.HydrogenBond,$t.WeakHydrogenBond],n,o,i,r)},startUnit:()=>{},handleIntraContact:(n,o,i)=>{kL([$t.HydrogenBond,$t.WeakHydrogenBond],n,o,i,e.unitsContacts.get(o.unit.id))}}}function zwe(t,e){let{contacts:r}=e;return{isApplicable:n=>n===$t.Hydrophobic||n===$t.CationPi,handleInterContact:(n,o,i)=>{AL([$t.PiStacking],n,o,i,r)},startUnit:()=>{},handleIntraContact:(n,o,i)=>{kL([$t.PiStacking],n,o,i,e.unitsContacts.get(o.unit.id))}}}function Uwe(t,e){let{contacts:r}=e;return{isApplicable:n=>n===$t.Ionic,handleInterContact:(n,o,i)=>{AL([$t.MetalCoordination],n,o,i,r)},startUnit:()=>{},handleIntraContact:(n,o,i)=>{kL([$t.MetalCoordination],n,o,i,e.unitsContacts.get(o.unit.id))}}}var Cu;(function(t){function e(u,d,m,p,h,f){return NT("interactions",{structure:d,interactions:u},{unitA:m,indexA:p,unitB:h,indexB:f})}t.Location=e;function r(u){return!!u&&u.kind==="data-location"&&u.tag==="interactions"}t.isLocation=r;function n(u,d){return u.data.structure===d.data.structure&&u.data.interactions===d.data.interactions&&u.element.indexA===d.element.indexA&&u.element.indexB===d.element.indexB&&u.element.unitA===d.element.unitA&&u.element.unitB===d.element.unitB}t.areLocationsEqual=n;function o(u,d){let{unitA:m,indexA:p,unitB:h,indexB:f}=d,{contacts:b,unitsContacts:v}=u;if(m===h){let x=v.get(m.id),S=x.getDirectedEdgeIndex(p,f);return CL(x.edgeProps.type[S])}else{let x=b.getEdgeIndex(p,m.id,f,h.id);return CL(b.edges[x].props.type)}}function i(u){return o(u.data.interactions,u.element)}t.locationLabel=i;function a(u,d,m){return Sf("interactions",{structure:u,interactions:d},m,p=>l(d,m,p),()=>c(u,d,m))}t.Loci=a;function s(u){return!!u&&u.kind==="data-loci"&&u.tag==="interactions"}t.isLoci=s;function l(u,d,m){let{unitsFeatures:p}=u;return np.fromPairProvider(d.length,(h,f,b)=>{let v=d[h];tn.setPosition(f,v.unitA,v.indexA,p.get(v.unitA.id)),tn.setPosition(b,v.unitB,v.indexB,p.get(v.unitB.id))},m)}t.getBoundingSphere=l;function c(u,d,m){let p=m[0];if(p===void 0)return"";let{unitA:h,indexA:f,unitB:b,indexB:v}=p,{unitsFeatures:x}=d,{members:S,offsets:T}=x.get(h.id),{members:E,offsets:_}=x.get(b.id),D={granularity:"element"};return(T[f+1]-T[f]>1||_[v+1]-_[v]>1)&&(D.granularity="residue"),[o(d,p),F1(ze.Location(u,h,S[T[f]],u,b,E[_[v]]),D)].join("
")}t.getLabel=c})(Cu||(Cu={}));var Gwe=[g$,y$,v$,k$,M$,R$,a$,s$,F$,U$,G$],B_={ionic:L$,"pi-stacking":B$,"cation-pi":O$,"halogen-bonds":l$,"hydrogen-bonds":b$,"weak-hydrogen-bonds":x$,hydrophobic:N$,"metal-coordination":j$};function jwe(t=[]){let e=Object.create(null);return Object.keys(B_).forEach(r=>{e[r]=g.MappedStatic(t.includes(r)?"on":"off",{on:g.Group(B_[r].params),off:g.Group({})},{cycle:!0})}),e}var Hwe=jwe(["cation-pi","pi-stacking","hydrogen-bonds","halogen-bonds","metal-coordination"]),ML={providers:g.Group(Hwe,{isFlat:!0}),contacts:g.Group(t$,{label:"Advanced Options"})};function q$(t,e,r){return N(this,null,function*(){let n=w(w({},g.getDefaultValues(ML)),r);yield wm.attach(t,e);let o=[];Tg(B_).forEach(d=>{let{name:m,params:p}=n.providers[d];m==="on"&&o.push(B_[d].createTester(p))});let i=new Set;o.forEach(d=>no.add(i,d.requiredFeatures));let a=Gwe.filter(d=>no.areIntersecting(i,d.types)),s=h0.Mutable(),l=h0.Mutable();for(let d=0,m=e.unitSymmetryGroups.length;d{let s=e.get(i.id),l=e.get(a.id);i$(t,i,s,a,l,o,r,n)},{maxRadius:Math.max(...r.map(i=>i.maxDistance)),validUnit:i=>Pe.isAtomic(i),validUnitPair:(i,a)=>ue.validUnitPair(t,i,a)}),o.getContacts(e)}var RL=w({},ML),Mn=gf.createProvider({label:"Interactions",descriptor:Xc({name:"molstar_computed_interactions"}),type:"local",defaultParams:RL,getParams:t=>RL,isApplicable:t=>!t.isCoarseGrained,obtain:(t,e,r)=>N(void 0,null,function*(){let n=w(w({},g.getDefaultValues(RL)),r);return{value:yield q$(t,e,n)}})});var LL=ce(13421772),Ywe="Assigns colors according the interaction type of a link.",ks={HydrogenBond:2851770,Hydrophobic:8421504,HalogenBond:4259775,Ionic:15779860,MetalCoordination:9191577,CationPi:16744448,PiStacking:9220966,WeakHydrogenBond:12967404},Qwe=[["Hydrogen Bond",ks.HydrogenBond],["Hydrophobic",ks.Hydrophobic],["Halogen Bond",ks.HalogenBond],["Ionic",ks.Ionic],["Metal Coordination",ks.MetalCoordination],["Cation Pi",ks.CationPi],["Pi Stacking",ks.PiStacking],["Weak HydrogenBond",ks.WeakHydrogenBond]];function W$(t){switch(t){case $t.HydrogenBond:return ks.HydrogenBond;case $t.Hydrophobic:return ks.Hydrophobic;case $t.HalogenBond:return ks.HalogenBond;case $t.Ionic:return ks.Ionic;case $t.MetalCoordination:return ks.MetalCoordination;case $t.CationPi:return ks.CationPi;case $t.PiStacking:return ks.PiStacking;case $t.WeakHydrogenBond:return ks.WeakHydrogenBond;case $t.Unknown:return LL}}var X$={};function Kwe(t){return X$}function Y$(t,e){let r,n=t.structure?Mn.get(t.structure):void 0,o=n?f0(n.id,n.version):-1;return n&&n.value?r=i=>{if(Cu.isLocation(i)){let{unitsContacts:a,contacts:s}=i.data.interactions,{unitA:l,unitB:c,indexA:u,indexB:d}=i.element;if(l===c){let m=a.get(l.id),p=m.getDirectedEdgeIndex(u,d);return W$(m.edgeProps.type[p])}else{let m=s.getEdgeIndex(u,l.id,d,c.id);return W$(s.edges[m].props.type)}}return LL}:r=()=>LL,{factory:Y$,granularity:"group",color:r,props:e,contextHash:o,description:Ywe,legend:vs(Qwe)}}var aS={name:"interaction-type",label:"Interaction Type",category:wo.Category.Misc,factory:Y$,getParams:Kwe,defaultValues:g.getDefaultValues(X$),isApplicable:t=>!!t.structure,ensureCustomProperties:{attach:(t,e)=>e.structure?Mn.attach(t,e.structure,void 0,!0):Promise.resolve(),detach:t=>t.structure&&Mn.ref(t.structure,!1)}};function _o(t,e,r,n){let o=0,{webgl:i}=e,a=new ln,s=new rt.GeometryState,l=rl(),c=[],u=Qr.create(),d,m,p,h,f=An.createEmpty();function b(P={},A){return A&&A!==m&&(p=r(e,A),m=A,h||(h=g.getDefaultValues(p))),h=Object.assign({},h,P),ie.create("Creating or updating ComplexRepresentation",I=>N(this,null,function*(){var k;let M=!1;d?!((k=d.mustRecreate)===null||k===void 0)&&k.call(d,m,h,i)&&(d.destroy(),d=n(l,m,h,i),M=!0):(d=n(l,m,h,i),M=!0);let R=d.createOrUpdate({webgl:i,runtime:I},f,h,A);R&&(yield R),M&&E(u),c.length=0,d&&d.renderObject&&(c.push(d.renderObject),s.add(d.renderObject.id,d.geometryVersion)),s.snapshot(),o+=1,a.next(o)}))}function v(P){return d?d.getLoci(P):St}function x(){var P;return[ue.Loci((P=m.child)!==null&&P!==void 0?P:m)]}function S(P){d?.eachLocation(P)}function T(P,A){if(!m||!kn.is(u.markerActions,A))return!1;if(ue.isLoci(P)||z.Loci.is(P)||ze.isLoci(P)){if(!ue.areRootsEquivalent(P.structure,m))return!1;P=st.remap(P,m),(ue.isLoci(P)||z.Loci.is(P)&&z.Loci.isWholeStructure(P))&&(P=xf)}else if(!So(P)&&!Ag(P))return!1;return st.isEmpty(P)?!1:d?d.mark(P,A):!1}function E(P){if(Qr.update(u,P),P.visible!==void 0&&d&&d.setVisibility(P.visible&&(u.unitTransforms===null||u.unitTransforms.isIdentity)),P.alphaFactor!==void 0&&d&&d.setAlphaFactor(P.alphaFactor),P.pickable!==void 0&&d&&d.setPickable(P.pickable),P.overpaint!==void 0&&d){let A=io.remap(P.overpaint,m);d.setOverpaint(A,i)}if(P.transparency!==void 0&&d){let A=Jo.remap(P.transparency,m);d.setTransparency(A,i)}if(P.emissive!==void 0&&d){let A=ti.remap(P.emissive,m);d.setEmissive(A,i)}if(P.substance!==void 0&&d){let A=ei.remap(P.substance,m);d.setSubstance(A,i)}if(P.clipping!==void 0&&d){let A=Xr.remap(P.clipping,m);d.setClipping(A)}P.themeStrength!==void 0&&d&&d.setThemeStrength(P.themeStrength),P.transform!==void 0&&d&&d.setTransform(P.transform),P.unitTransforms!==void 0&&d&&d.setVisibility(u.visible&&(P.unitTransforms===null||P.unitTransforms.isIdentity))}function _(P){f=P}function D(){d&&d.destroy()}return{label:t,get groupCount(){return d?d.groupCount:0},get props(){return h},get params(){return p},get state(){return u},get theme(){return f},get geometryVersion(){return s.version},renderObjects:c,updated:a,createOrUpdate:b,setState:E,setTheme:_,getLoci:v,getAllLoci:x,eachLocation:S,mark:T,destroy:D}}var $we=W.toArray;function O_(t,e,r){let{elements:n,model:o}=e;if(we.indexOf(n,r)!==-1){let{index:i,offsets:a}=o.atomicHierarchy.residueAtomSegments,s=i[r],l=[];for(let u=a[s],d=a[s+1];ua.unitMap.has(d.id)):t.group.units,l=s.length,c=l*16,u=i&&i.aTransform.ref.value.length>=c?i.aTransform.ref.value:new Float32Array(c);for(let d=0;dl-s);let o=Math.floor(Math.cbrt(r)*Math.cbrt(r)),i=n[0]*n[1],a=Math.ceil(i/(e*e));return{area:i,areaCells:a,maxAreaCells:o}}function _m(t,e,r=Z$){let{area:n,areaCells:o,maxAreaCells:i}=OL(t,e.resolution,r),a=o>i?Math.sqrt(n/i):e.resolution;return U(w({},e),{resolution:a})}function Jwe(t){switch(t.kind){case 0:return t.model.atomicConformation;case 1:return t.model.coarseConformation.spheres;case 2:return t.model.coarseConformation.gaussians}}var dy={ignoreHydrogens:g.Boolean(!1,{description:"Whether or not to include hydrogen atoms in the surface calculation."}),ignoreHydrogensVariant:g.Select("all",g.arrayToOptions(["all","non-polar"])),traceOnly:g.Boolean(!1,{description:"Whether or not to only use trace atoms in the surface calculation."}),includeParent:g.Boolean(!1,{description:"Include elements of the parent structure in surface calculation to get a surface patch of the current structure."})},ukt=g.getDefaultValues(dy),e_e=y();function J$(t,e,r,n){return y.squaredDistance(y.set(e_e,t,e,r),n)}function t_e(t,e,r){let n=0,o=e.length;for(let i=0,a=r.length;iv||(P.push(M),A.push(I))}x=tr.ofSortedArray(P),S=A}else x=p,S=Ri(new Int32Array(x.length));s&&l!==e&&t_e(S,e.elements,x);let T={indices:x,x:u,y:d,z:m,id:S},E=c?_0(T):e.boundary,_=z.Location.create(t,l);return{position:T,boundary:E,radius:P=>(_.element=P,r.size(_))}}function Gv(t,e,r){let{ignoreHydrogens:n,ignoreHydrogensVariant:o,traceOnly:i,includeParent:a}=r,s=a&&!!t.parent,l=z.Location.create(t.root),{center:c,radius:u}=t.boundary.sphere,d=(4+1.5)*2,m=(u+d)*(u+d),p,h,f,b,v,x;if(n||i||s){let{getSerialIndex:_}=t.serialMapping,D=s?t.root.units:t.units,P=[],A=[],I=[],k=[],M=[];for(let R=0,B=D.length;Rm||(P.push(j),A.push(O),I.push(J),l.element=Y,k.push(e.size(l)),s?(H?tr.indexOf(H.elements,Y):-1)===-1?M.push(-2):M.push(_(H,Y)):M.push(_(F,Y)))}}p=P,h=A,f=I,b=k,v=M,x=we.ofRange(0,v.length)}else{let{elementCount:_}=t,D=new Float32Array(_),P=new Float32Array(_),A=new Float32Array(_),I=new Float32Array(_);for(let k=0,M=0,R=t.units.length;kb[_]}}var eZ=xU.H;function sl(t,e,r,n){if(Pe.isCoarse(e)||e.model.atomicHierarchy.derived.atom.atomicNumber[r]!==eZ)return!1;if(n==="all")return!0;let o=P$(t,e,tr.indexOf(e.elements,r));return!!(o&&n==="polar"||!o&&n==="non-polar")}function tZ(t,e){return t[e]===eZ}function F_(t,e){if(Pe.isCoarse(t))return!0;let r=t.model.atomicHierarchy.atoms.label_atom_id.value(e);return r==="CA"||r==="BB"||r==="P"}function Ip(t){return g.MultiSelect(t,K$,{description:"For which kinds of units/chains to show the representation visuals."})}var cs={unitKinds:Ip(["atomic","spheres"]),includeParent:g.Boolean(!1,{isHidden:!0})},N_=w({},Be.Params),V_=w({},Ni.Params),z_=w({},xo.Params),rZ=w({},Il.Params),U_=w({},Sr.Params),G_=w({},Bo.Params),j_=w({},ta.Params),H_=w({},Ko.Params);function r_e(t,e,r,n,o,i){let{createValues:a,createRenderableState:s}=eo.getUtils(e),l=I0(),c=a(e,l,r,n,o),u=s(o);return tu(e.kind,c,u,i)}function yh(t,e){let{defaultProps:r,createGeometry:n,createLocationIterator:o,getLoci:i,eachLocation:a,setUpdateState:s,mustRecreate:l,processValues:c,dispose:u}=t,{updateValues:d,updateBoundingSphere:m,updateRenderableState:p,createPositionIterator:h}=t.geometryUtils,f=Bl.create(),b={loci:St,action:tt.None,status:-1},v,x,S,T,E=Object.assign({},r),_=An.createEmpty(),D,P,A=-1,I,k;function M(H,Q,L){if(!L&&!D)throw new Error("missing structure");if(x=Object.assign({},E,Q),S=H,T=L,Bl.reset(f),!v||!D){f.createNew=!0,f.createGeometry=!0;return}s(f,x,E,S,_,T,D),ue.areEquivalent(T,D)||(f.createGeometry=!0),ue.areHierarchiesEqual(T,D)||(f.updateTransform=!0,f.createGeometry=!0),wo.areEqual(H.color,_.color)||(f.updateColor=!0),ys(x.unitKinds,E.unitKinds)||(f.createGeometry=!0),D.child!==T.child&&(f.createGeometry=!0),x.instanceGranularity!==E.instanceGranularity&&(f.updateTransform=!0),f.updateSize&&!("uSize"in v.values)&&(f.createGeometry=!0),f.createGeometry&&(f.updateColor=!0,f.updateSize=!0)}function R(H){if(f.createNew)if(I=o(T,x),H)v=r_e(T,H,I,S,x,e),k=h(H,v.values);else throw new Error("expected geometry to be given");else{if(!v)throw new Error("expected renderObject to be available");if(f.updateTransform){I=o(T,x);let{instanceCount:Q,groupCount:L}=I;x.instanceGranularity?jr(Q,"instance",v.values):jr(Q*L,"groupInstance",v.values)}if(f.createGeometry)if(H)C.updateIfChanged(v.values.drawCount,eo.getDrawCount(H)),C.updateIfChanged(v.values.uVertexCount,eo.getVertexCount(H)),C.updateIfChanged(v.values.uGroupCount,eo.getGroupCount(H));else throw new Error("expected geometry to be given");(f.updateTransform||f.createGeometry)&&(m(v.values,H||P),k=h(P,v.values)),f.updateSize&&"uSize"in v.values&&Sa(I,S.size,v.values),f.updateColor&&uo(I,k,S.color,v.values),d(v.values,x),p(v.state,x)}E=x,_=S,D=T,H&&(P=H,A+=1)}function B(H){return!!(So(H)||ue.isLoci(H)&&ue.areRootsEquivalent(H.structure,D)||z.Loci.is(H)&&ue.areRootsEquivalent(H.structure,D)&&z.Loci.isWholeStructure(H))}function F(H,Q,L){let Y=!1;return!z.Loci.is(H)&&!ze.isLoci(H)||!ue.areEquivalent(H.structure,Q)?!1:(L(Oe.ofSingleton(0))&&(Y=!0),Y)}function G(H,Q,L){return B(H)?E.instanceGranularity?Q(Oe.ofBounds(0,I.instanceCount)):Q(Oe.ofBounds(0,I.groupCount*I.instanceCount)):E.instanceGranularity?F(H,D,Q):a(H,D,Q,L)}function V(H){v&&c?.(v.values,P,E,_,H.webgl)}return{get groupCount(){return I?I.count:0},get renderObject(){return I&&I.count?v:void 0},get geometryVersion(){return A},createOrUpdate(H,Q,L={},Y){if(M(Q,L,Y||D),f.createGeometry){let j=n(H,T,S,x,P);if(af(j))return j.then(O=>{R(O),V(H)});R(j)}else R();V(H)},getLoci(H){return v?i(H,D,v.id):St},eachLocation(H){for(I.reset();I.hasNext;){let{location:Q,isSecondary:L}=I.move();H(Q,L)}},mark(H,Q){return Vt.mark(v,H,Q,G,b)},setVisibility(H){Vt.setVisibility(v,H)},setAlphaFactor(H){Vt.setAlphaFactor(v,H)},setPickable(H){Vt.setPickable(v,H)},setColorOnly(H){Vt.setColorOnly(v,H)},setTransform(H,Q){Vt.setTransform(v,H,Q)},setOverpaint(H,Q){let L={geometry:P,props:E,webgl:Q};Vt.setOverpaint(v,H,G,!0,L)},setTransparency(H,Q){let L={geometry:P,props:E,webgl:Q};Vt.setTransparency(v,H,G,!0,L)},setEmissive(H,Q){let L={geometry:P,props:E,webgl:Q};Vt.setEmissive(v,H,G,!0,L)},setSubstance(H,Q){let L={geometry:P,props:E,webgl:Q};Vt.setSubstance(v,H,G,!0,L)},setClipping(H){Vt.setClipping(v,H,G,!0)},setThemeStrength(H){Vt.setThemeStrength(v,H)},destroy(){u?.(P),v&&(v.state.disposed=!0,v=void 0)},mustRecreate:l}}var Tu=w(w({},N_),cs);function Va(t,e){return yh(U(w({},t),{setUpdateState:(r,n,o,i,a,s,l)=>{t.setUpdateState(r,n,o,i,a,s,l),so.areEqual(i.size,a.size)||(r.createGeometry=!0)},geometryUtils:Be.Utils}),e)}var nZ=w(w({},V_),cs);function oZ(t,e){return yh(U(w({},t),{setUpdateState:(r,n,o,i,a,s,l)=>{t.setUpdateState(r,n,o,i,a,s,l),so.areEqual(i.size,a.size)||(r.updateSize=!0)},geometryUtils:Ni.Utils}),e)}var iZ=w(w({},z_),cs);function aZ(t,e){return yh(U(w({},t),{setUpdateState:(r,n,o,i,a,s,l)=>{t.setUpdateState(r,n,o,i,a,s,l),so.areEqual(i.size,a.size)||(r.updateSize=!0)},geometryUtils:xo.Utils}),e)}var sZ=w(w({},U_),cs);function lZ(t,e){return yh(U(w({},t),{setUpdateState:(r,n,o,i,a,s,l)=>{t.setUpdateState(r,n,o,i,a,s,l),so.areEqual(i.size,a.size)||(r.updateSize=!0)},geometryUtils:Sr.Utils}),e)}var cZ=w(w({},G_),cs);function uZ(t,e){return yh(U(w({},t),{setUpdateState:(r,n,o,i,a,s,l)=>{t.setUpdateState(r,n,o,i,a,s,l),so.areEqual(i.size,a.size)||(r.updateSize=!0),n.background!==o.background&&(r.createGeometry=!0),n.backgroundMargin!==o.backgroundMargin&&(r.createGeometry=!0),n.tether!==o.tether&&(r.createGeometry=!0),n.tetherLength!==o.tetherLength&&(r.createGeometry=!0),n.tetherBaseWidth!==o.tetherBaseWidth&&(r.createGeometry=!0),n.attachment!==o.attachment&&(r.createGeometry=!0),n.fontFamily!==o.fontFamily&&(r.createGeometry=!0),n.fontQuality!==o.fontQuality&&(r.createGeometry=!0),n.fontStyle!==o.fontStyle&&(r.createGeometry=!0),n.fontVariant!==o.fontVariant&&(r.createGeometry=!0),n.fontWeight!==o.fontWeight&&(r.createGeometry=!0)},geometryUtils:Bo.Utils}),e)}var dZ=w(w({},j_),cs);function mZ(t,e){return yh(U(w({},t),{setUpdateState:(r,n,o,i,a,s,l)=>{t.setUpdateState(r,n,o,i,a,s,l),so.areEqual(i.size,a.size)||(r.createGeometry=!0)},geometryUtils:ta.Utils}),e)}var pZ=w(w({},H_),cs);function fZ(t,e){return yh(U(w({},t),{setUpdateState:(r,n,o,i,a,s,l)=>{t.setUpdateState(r,n,o,i,a,s,l),so.areEqual(i.size,a.size)||(r.createGeometry=!0)},geometryUtils:Ko.Utils}),e)}function Dr(t,e,r,n){let o=0,{webgl:i}=e,a=new ln,s=rl(),l=[],c=new rt.GeometryState,u=Qr.create(),d=new Map,m,p,h,f,b=An.createEmpty();function v(I={},k){return k&&k!==m&&(h=r(e,k),f||(f=g.getDefaultValues(h))),f=Object.assign({},f,I),ie.create("Creating or updating UnitsRepresentation",M=>N(this,null,function*(){var R,B,F;if(!m&&!k)throw new Error("missing structure");if(k&&!m){p=k.unitSymmetryGroups;for(let G=0;G{V.destroy()})}else if(k&&k!==m&&ue.areUnitIdsAndIndicesEqual(k,m)){p=k.unitSymmetryGroups;for(let G=0;GG.push(V));for(let V=0,H=G.length;V{G.renderObject&&(l.push(G.renderObject),c.add(G.renderObject.id,G.geometryVersion))}),c.snapshot(),k&&(m=k),a.next(o++)}))}function x(I){let k=St;return d.forEach(({visual:M})=>{let R=M.getLoci(I);Wn(R)||(k=R)}),k}function S(I){d.forEach(({visual:k})=>{k.eachLocation(I)})}function T(){var I;return[ue.Loci((I=m.child)!==null&&I!==void 0?I:m)]}function E(I,k){if(!m||!kn.is(u.markerActions,k))return!1;if(ue.isLoci(I)||z.Loci.is(I)||ze.isLoci(I)){if(!ue.areRootsEquivalent(I.structure,m))return!1;I=st.remap(I,m),(ue.isLoci(I)||z.Loci.is(I)&&z.Loci.isWholeStructure(I))&&(I=xf)}else if(!So(I)&&!Ag(I))return!1;if(st.isEmpty(I))return!1;let M=!1;return d.forEach(({visual:R})=>{M=R.mark(I,k)||M}),M}function _(I,k,M){let{visible:R,alphaFactor:B,pickable:F,overpaint:G,transparency:V,emissive:H,substance:Q,clipping:L,themeStrength:Y,transform:j,unitTransforms:O}=M;R!==void 0&&I.setVisibility(R),B!==void 0&&I.setAlphaFactor(B),F!==void 0&&I.setPickable(F),G!==void 0&&I.setOverpaint(G,i),V!==void 0&&I.setTransparency(V,i),H!==void 0&&I.setEmissive(H,i),Q!==void 0&&I.setSubstance(Q,i),L!==void 0&&I.setClipping(L),Y!==void 0&&I.setThemeStrength(Y),j!==void 0&&(j!==u.transform||!W.areEqual(j,u.transform,1e-6))&&I.setTransform(j),O!==void 0&&(O?I.setTransform(void 0,O.getSymmetryGroupTransforms(k)):O!==u.unitTransforms&&I.setTransform(void 0,null))}function D(I){let{visible:k,alphaFactor:M,pickable:R,overpaint:B,transparency:F,emissive:G,substance:V,clipping:H,themeStrength:Q,transform:L,unitTransforms:Y,syncManually:j,markerActions:O}=I,J={};k!==void 0&&(J.visible=k),M!==void 0&&(J.alphaFactor=M),R!==void 0&&(J.pickable=R),B!==void 0&&m&&(J.overpaint=io.remap(B,m)),F!==void 0&&m&&(J.transparency=Jo.remap(F,m)),G!==void 0&&m&&(J.emissive=ti.remap(G,m)),V!==void 0&&m&&(J.substance=ei.remap(V,m)),H!==void 0&&m&&(J.clipping=Xr.remap(H,m)),Q!==void 0&&(J.themeStrength=Q),L!==void 0&&!W.areEqual(L,u.transform,1e-6)&&(J.transform=L),(Y!==u.unitTransforms||Y?.version!==u.unitTransformsVersion)&&(J.unitTransforms=Y,u.unitTransformsVersion=Y?Y?.version:-1),j!==void 0&&(J.syncManually=j),O!==void 0&&(J.markerActions=O),d.forEach(({visual:$,group:ae})=>_($,ae,J)),Qr.update(u,J)}function P(I){b=I}function A(){d.forEach(({visual:I})=>I.destroy()),d.clear()}return{label:t,get groupCount(){let I=0;return d.forEach(({visual:k})=>{k.renderObject&&(I+=k.groupCount)}),I},get geometryVersion(){return c.version},get props(){return f},get params(){return h},get state(){return u},get theme(){return b},renderObjects:l,updated:a,createOrUpdate:v,setState:D,setTheme:P,getLoci:x,getAllLoci:T,eachLocation:S,mark:E,destroy:A}}function n_e(t,e,r,n,o,i){let{createValues:a,createRenderableState:s}=eo.getUtils(e),l=BL(t,o.includeParent,e.boundingSphere,o.cellSize,o.batchSize),c=a(e,l,r,n,o),u=s(o);return tu(e.kind,c,u,i)}function vh(t,e){let{defaultProps:r,createGeometry:n,createLocationIterator:o,getLoci:i,eachLocation:a,setUpdateState:s,mustRecreate:l,processValues:c,dispose:u}=t,{createEmpty:d,updateValues:m,updateBoundingSphere:p,updateRenderableState:h,createPositionIterator:f}=t.geometryUtils,b=Bl.create(),v={loci:St,action:tt.None,status:-1},x,S=Object.assign({},r),T=An.createEmpty(),E,_,D,P,A,I=-1,k,M;function R(L,Y,j){if(!j&&!P)throw new Error("missing structureGroup");if(S=Y,T=L,E=j,Bl.reset(b),!x||!P){b.createNew=!0,b.createGeometry=!0;return}s(b,S,_,T,D,E,P),ue.areHierarchiesEqual(P.structure,E.structure)||(b.updateTransform=!0,b.updateColor=!0,b.updateSize=!0),wo.areEqual(T.color,D.color)||(b.updateColor=!0),P.structure.child!==E.structure.child&&(b.createGeometry=!0),(S.instanceGranularity!==_.instanceGranularity||S.cellSize!==_.cellSize||S.batchSize!==_.batchSize)&&(b.updateTransform=!0),ys(S.unitKinds,_.unitKinds)||(b.createGeometry=!0),E.group.transformHash!==P.group.transformHash&&(E.group.units.length!==P.group.units.length||b.updateColor?b.updateTransform=!0:b.updateMatrix=!0);let O=E.group.units[0],J=P.group.units[0];Pe.areOperatorsEqual(O,J)||(b.updateTransform=!0),Pe.areConformationsEqual(O,J)||(b.createGeometry=!0),b.updateTransform&&(b.updateMatrix=!0),b.updateSize&&!("uSize"in x.values)&&(b.createGeometry=!0),(b.createGeometry||b.updateTransform)&&(P.structure.hashCode!==E.structure.hashCode&&(b.updateColor=!0,b.updateSize=!0),(T.color.granularity.startsWith("vertex")||x.values.dColorType.ref.value.startsWith("vertex")||T.color.granularity.startsWith("volume")||x.values.dColorType.ref.value.startsWith("volume"))&&(b.updateColor=!0))}function B(L){if(b.createNew)if(k=o(E,S),L)x=n_e(E,L,k,T,S,e),M=f(L,x.values);else throw new Error("expected geometry to be given");else{if(!x)throw new Error("expected renderObject to be available");if(b.updateTransform){k=o(E,S);let{instanceCount:Y,groupCount:j}=k;S.instanceGranularity?jr(Y,"instance",x.values):jr(Y*j,"groupInstance",x.values)}if(b.updateMatrix&&(BL(E,S.includeParent,x.values.invariantBoundingSphere.ref.value,S.cellSize,S.batchSize,x.values),"lodLevels"in x.values&&C.update(x.values.lodLevels,x.values.lodLevels.ref.value)),b.createGeometry)if(L)C.updateIfChanged(x.values.drawCount,eo.getDrawCount(L)),C.updateIfChanged(x.values.uVertexCount,eo.getVertexCount(L)),C.updateIfChanged(x.values.uGroupCount,eo.getGroupCount(L));else throw new Error("expected geometry to be given");(b.updateTransform||b.createGeometry)&&(p(x.values,L||A),M=f(L||A,x.values)),b.updateSize&&"uSize"in x.values&&Sa(k,T.size,x.values),b.updateColor&&uo(k,M,T.color,x.values),m(x.values,S),h(x.state,S)}_=S,D=T,P=E,L&&(A=L,I+=1)}function F(L,Y,j,O,J,$){return $$(J.unitKinds,Y)?n(L,Y,j,O,J,$):d($)}function G(L){return!!(So(L)||ue.isLoci(L)&&ue.areRootsEquivalent(L.structure,P.structure)||z.Loci.is(L)&&ue.areRootsEquivalent(L.structure,P.structure)&&z.Loci.isWholeStructure(L))}function V(L,Y,j){let O=!1;if(ze.isLoci(L)){let{structure:J,group:$}=Y;if(!ue.areEquivalent(L.structure,J))return!1;for(let ae of L.bonds){if(ae.aUnit!==ae.bUnit)continue;let Z=$.unitIndexMap.get(ae.aUnit.id);Z!==void 0&&j(Oe.ofSingleton(Z))&&(O=!0)}}else if(z.Loci.is(L)){let{structure:J,group:$}=Y;if(!ue.areEquivalent(L.structure,J))return!1;for(let ae of L.elements){let Z=$.unitIndexMap.get(ae.unit.id);Z!==void 0&&j(Oe.ofSingleton(Z))&&(O=!0)}}return O}function H(L,Y,j){return G(L)?_.instanceGranularity?Y(Oe.ofBounds(0,k.instanceCount)):Y(Oe.ofBounds(0,k.groupCount*k.instanceCount)):_.instanceGranularity?V(L,P,Y):a(L,P,Y,j)}function Q(L){x&&c?.(x.values,A,_,D,L.webgl)}return{get groupCount(){return k?k.count:0},get renderObject(){return k&&k.count?x:void 0},get geometryVersion(){return I},createOrUpdate(L,Y,j,O){if(R(Y,j,O||P),b.createGeometry){let J=F(L,E.group.units[0],E.structure,T,S,A);if(af(J))return J.then($=>{B($),Q(L)});B(J)}else B();Q(L)},getLoci(L){return x?i(L,P,x.id):St},eachLocation(L){for(k.reset();k.hasNext;){let{location:Y,isSecondary:j}=k.move();L(Y,j)}},mark(L,Y){let j=!0;if(z.Loci.is(L)){j=!1;let{invariantId:O}=P.group.units[0];for(let J of L.elements)if(J.unit.invariantId===O){j=!0;break}}return j?Vt.mark(x,L,Y,H,v):!1},setVisibility(L){Vt.setVisibility(x,L)},setAlphaFactor(L){Vt.setAlphaFactor(x,L)},setPickable(L){Vt.setPickable(x,L)},setColorOnly(L){Vt.setColorOnly(x,L)},setTransform(L,Y){Vt.setTransform(x,L,Y)},setOverpaint(L,Y){let j={geometry:A,props:_,webgl:Y};Vt.setOverpaint(x,L,H,!0,j)},setTransparency(L,Y){let j={geometry:A,props:_,webgl:Y};Vt.setTransparency(x,L,H,!0,j)},setEmissive(L,Y){let j={geometry:A,props:_,webgl:Y};Vt.setEmissive(x,L,H,!0,j)},setSubstance(L,Y){let j={geometry:A,props:_,webgl:Y};Vt.setSubstance(x,L,H,!0,j)},setClipping(L){Vt.setClipping(x,L,H,!0)},setThemeStrength(L){Vt.setThemeStrength(x,L)},destroy(){u?.(A),x&&(x.state.disposed=!0,x=void 0)},mustRecreate:l}}var Gr=w(w({},N_),cs);function rn(t,e){return vh(U(w({},t),{setUpdateState:(r,n,o,i,a,s,l)=>{t.setUpdateState(r,n,o,i,a,s,l),so.areEqual(i.size,a.size)||(r.createGeometry=!0)},geometryUtils:Be.Utils}),e)}var jv=w(w({},V_),cs);function Hv(t,e){return vh(U(w({},t),{setUpdateState:(r,n,o,i,a,s,l)=>{t.setUpdateState(r,n,o,i,a,s,l),so.areEqual(i.size,a.size)||(r.updateSize=!0)},geometryUtils:Ni.Utils}),e)}var qv=w(w({},z_),cs);function Wv(t,e){return vh(U(w({},t),{setUpdateState:(r,n,o,i,a,s,l)=>{t.setUpdateState(r,n,o,i,a,s,l),so.areEqual(i.size,a.size)||(r.updateSize=!0)},geometryUtils:xo.Utils}),e)}var hZ=w(w({},rZ),cs);function gZ(t,e){return vh(U(w({},t),{setUpdateState:(r,n,o,i,a,s,l)=>{t.setUpdateState(r,n,o,i,a,s,l),so.areEqual(i.size,a.size)||(r.updateSize=!0)},geometryUtils:Il.Utils}),e)}var bh=w(w({},U_),cs);function xh(t,e){return vh(U(w({},t),{setUpdateState:(r,n,o,i,a,s,l)=>{t.setUpdateState(r,n,o,i,a,s,l),so.areEqual(i.size,a.size)||(r.updateSize=!0)},geometryUtils:Sr.Utils}),e)}var jMt=w(w({},G_),cs);var yZ=w(w({},j_),cs);function vZ(t,e){return vh(U(w({},t),{setUpdateState:(r,n,o,i,a,s,l)=>{t.setUpdateState(r,n,o,i,a,s,l),so.areEqual(i.size,a.size)||(r.createGeometry=!0)},geometryUtils:ta.Utils}),e)}var bZ=w(w({},H_),cs);function xZ(t,e){return vh(U(w({},t),{setUpdateState:(r,n,o,i,a,s,l)=>{t.setUpdateState(r,n,o,i,a,s,l),so.areEqual(i.size,a.size)||(r.createGeometry=!0)},geometryUtils:Ko.Utils}),e)}var Qr={create:()=>U(w({},rt.createState()),{unitTransforms:null,unitTransformsVersion:-1}),update:(t,e)=>{rt.updateState(t,e),e.unitTransforms!==void 0&&(t.unitTransforms=e.unitTransforms)}};var Dp=y(),Xv=y(),sS=y(),q_=he.add,SZ=he.add3,Sh;(function(t){function e(r=2048,n=1024,o){let i=he.create(Float32Array,1,n,o?o.groupBuffer.ref.value:r),a=he.create(Float32Array,3,n,o?o.startBuffer.ref.value:r),s=he.create(Float32Array,3,n,o?o.endBuffer.ref.value:r),l=he.create(Float32Array,1,n,o?o.scaleBuffer.ref.value:r),c=he.create(Float32Array,1,n,o?o.capBuffer.ref.value:r),u=he.create(Float32Array,1,n,o?o.colorModeBuffer.ref.value:r),d=(p,h,f,b,v,x,S,T,E,_,D)=>{for(let P=0;P<6;++P)SZ(a,p,h,f),SZ(s,b,v,x),q_(i,D),q_(l,S),q_(c,(T?1:0)+(E?2:0)),q_(u,_)},m=(p,h,f,b,v,x,S,T,E)=>{let _=y.distance(p,h),D=f%2!==0,P=Math.floor((f+1)/2),A=_/(f+.5),I=2;y.setMagnitude(sS,y.sub(sS,h,p),A),y.copy(Dp,p);for(let k=0;k{let E=y.distance(p,h);m(p,h,E/f,b,v,x,!0,S,T)},getCylinders:()=>{let p=i.elementCount/6,h=he.compact(i,!0),f=he.compact(a,!0),b=he.compact(s,!0),v=he.compact(l,!0),x=he.compact(c,!0),S=he.compact(u,!0),T=o&&p<=o.cylinderCount?o.mappingBuffer.ref.value:new Float32Array(p*18),E=o&&p<=o.cylinderCount?o.indexBuffer.ref.value:new Uint32Array(p*12);return(!o||p>o.cylinderCount)&&o_e(p,T,E),xo.create(T,E,h,f,b,v,x,S,p,o)}}}t.create=e})(Sh||(Sh={}));function o_e(t,e,r){for(let n=0;n0,Q=l(G),L=s?s(G):0,Y=E&&(u?u(G):!1),[j,O]=H?[Y,h]:[h,Y];if(D.currentGroup=G,L===0)R.radiusTop=R.radiusBottom=Q,R.topCap=j,R.bottomCap=O,nr(D,P,A,.5,R);else if(L===1)R.radiusTop=R.radiusBottom=Q*S,R.topCap=R.bottomCap=T,Xg(D,P,A,.5,x,Y,R);else if(L===2||L===3||L===4||L===5||L===7||L===8){let J=L===2||L===3?2:L===4||L===5?3:1.5,$=Q*(d/(.5*J)),ae=(Q-$)*m;if(NL(I,P,A,i?i(G):null),R.topCap=j,R.bottomCap=O,L===7||L===8){R.radiusTop=R.radiusBottom=Q,nr(D,P,A,.5,R);let Z=Q+f*Q+f*Q*b;za(dn,ri(dn,A,P),Q*.5),lo(P,P,dn),ri(A,A,dn),R.radiusTop=R.radiusBottom=Q*f,R.topCap=R.bottomCap=T,za(I,I,Z),ri(P,P,I),ri(A,A,I),Xg(D,P,A,.5,v,Y,R),L===8&&(za(I,I,Z*2),lo(P,P,I),lo(A,A,I),Xg(D,P,A,.5,v,Y,R))}else if(L===3||L===5){let Z=Q+$+d*Q*m;za(I,I,Z),R.radiusTop=R.radiusBottom=Q,nr(D,P,A,.5,R),Rd(dn,dn,m*d*.2),lo(P,P,dn),ri(A,A,dn),R.radiusTop=R.radiusBottom=$,R.topCap=H?Y:T,R.bottomCap=H?T:Y,za(I,I,Z),ri(P,P,I),ri(A,A,I),nr(D,P,A,.5,R),J===3&&(za(I,I,Z*2),lo(P,P,I),lo(A,A,I),nr(D,P,A,.5,R))}else za(I,I,ae),R.radiusTop=R.radiusBottom=$,J===3&&nr(D,P,A,.5,R),k7(D,P,A,.5,I,R)}else L===6&&(Rd(dn,dn,.475),lo(P,P,dn),ri(A,A,dn),R.radiusTop=R.radiusBottom=Q,R.topCap=j,R.bottomCap=O,nr(D,P,A,.5,R))}let B=n?te.clone(n.boundingSphere):void 0,F=Te.getMesh(D);return M===0?{mesh:F}:(y.scale(k,k,1/M),B&&y.distance(k,B.center)/B.radius<.1?{mesh:F,boundingSphere:B}:{mesh:F})}function W_(t,e,r,n){let{linkCount:o,referencePosition:i,position:a,style:s,radius:l,ignore:c,stub:u}=e;if(!o)return{cylinders:xo.createEmpty(n)};let{linkScale:d,linkSpacing:m,linkCap:p,aromaticScale:h,aromaticSpacing:f,aromaticDashCount:b,dashCount:v,dashScale:x,dashCap:S,stubCap:T,colorMode:E}=r,_=E==="interpolate",D=_===!0?3:2,P=o*2,A=Sh.create(P,P/4,n),I=y(),k=y(),M=y(),R=y(),B=y(),F=0;for(let H=0,Q=o;H{let Y=E[L];if((!D||P!=="all")&&(Y===$t.HydrogenBond||Y===$t.WeakHydrogenBond)){let j=f[b[x[L]]],O=f[b[S[L]]];k.invariantPosition(I[j],R),k.invariantPosition(I[O],B);let J=y.distance(R,B),$=J;y.copy(H,R),y.copy(Q,B),T_(e,j,(ae,Z)=>{if(sl(r,e,I[Z],"polar")){k.invariantPosition(I[Z],M);let se=y.distance(M,B);se{if(sl(r,e,I[Z],"polar")){k.invariantPosition(I[Z],M);let se=y.distance(M,R);se<$&&($=se,y.copy(Q,M))}})}else y.set(H,m[x[L]],p[x[L]],h[x[L]]),y.set(Q,m[S[L]],p[S[L]],h[S[L]])},style:H=>1,radius:H=>{l.element=I[f[b[x[H]]]];let Q=n.size.size(l);l.element=I[f[b[S[H]]]];let L=n.size.size(l);return Math.min(Q,L)*_},ignore:H=>{if(T[H]===Gl.Filtered)return!0;if(s)if(A==="stub"){let Q=x[H];for(let L=b[Q],Y=b[Q+1];L0){let H=te.expand(te(),(s??e).boundary.sphere,1*_);G.setBoundingSphere(H)}return G})}var zL=w(w(w({},Gr),wc),Y_);function CZ(t){return rn({defaultProps:g.getDefaultValues(zL),createGeometry:s_e,createLocationIterator:u_e,getLoci:l_e,eachLocation:c_e,setUpdateState:(e,r,n,o,i,a,s)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.dashCount!==n.dashCount||r.dashScale!==n.dashScale||r.dashCap!==n.dashCap||r.radialSegments!==n.radialSegments||r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant||r.parentDisplay!==n.parentDisplay;let l=Mn.get(a.structure).version;e.info.interactionsHash!==l&&(e.createGeometry=!0,e.updateTransform=!0,e.updateColor=!0,e.info.interactionsHash=l)}},t)}function l_e(t,e,r){let{objectId:n,instanceId:o,groupId:i}=t;if(r===n){let{structure:a,group:s}=e,l=a.unitMap.get(s.units[o].id),c=Mn.get(a).value,{a:u,b:d}=c.unitsContacts.get(l.id);return Cu.Loci(a,c,[{unitA:l,indexA:u[i],unitB:l,indexB:d[i]},{unitA:l,indexA:d[i],unitB:l,indexB:u[i]}])}return St}var VL=new Set;function c_e(t,e,r,n){let o=!1;if(Cu.isLoci(t)){let{structure:i,group:a}=e;if(!ue.areEquivalent(t.data.structure,i))return!1;let s=Mn.get(i).value;if(t.data.interactions!==s)return!1;let l=a.units[0],c=s.unitsContacts.get(l.id),u=c.edgeCount*2;for(let d of t.elements){if(d.unitA!==d.unitB)continue;let m=a.unitIndexMap.get(d.unitA.id);if(m!==void 0){let p=c.getDirectedEdgeIndex(d.indexA,d.indexB);p!==-1&&r(Oe.ofSingleton(m*u+p))&&(o=!0)}}}else if(z.Loci.is(t)){let{structure:i,group:a}=e;if(!ue.areEquivalent(t.structure,i))return!1;let s=Mn.get(i).value;if(!s)return!1;let l=a.units[0],c=s.unitsContacts.get(l.id),u=s.unitsFeatures.get(l.id),d=c.edgeCount*2,{offset:m}=c,{offsets:p,indices:h}=u.elementsIndex,{members:f,offsets:b}=u;for(let v of t.elements){let x=a.unitIndexMap.get(v.unit.id);x!==void 0&&(we.forEach(v.indices,S=>{for(let T=p[S],E=p[S+1];T{if(n){let T=c.a[S];for(let _=b[T],D=b[T+1];_{let p=r.units[m];return c.unitA=p,c.indexA=i.a[d],c.unitB=p,c.indexB=i.b[d],l})}function d_e(t,e,r,n,o){if(!e.hasAtomic)return Be.createEmpty(o);let i=z.Location.create(e),a=Mn.get(e).value,{contacts:s,unitsFeatures:l}=a,{edgeCount:c,edges:u}=s,{sizeFactor:d,ignoreHydrogens:m,ignoreHydrogensVariant:p,parentDisplay:h}=n;if(!c)return Be.createEmpty(o);let{child:f}=e,b=y(),v=y(),x=y(),S={linkCount:c,position:(_,D,P)=>{let{unitA:A,indexA:I,unitB:k,indexB:M,props:{type:R}}=u[P],B=l.get(A),F=l.get(k),G=e.unitMap.get(A),V=e.unitMap.get(k);if((!m||p!=="all")&&(R===$t.HydrogenBond||R===$t.WeakHydrogenBond)){let H=B.members[B.offsets[I]],Q=F.members[F.offsets[M]];G.conformation.position(G.elements[H],v),V.conformation.position(V.elements[Q],x);let L=y.distance(v,x),Y=L;y.copy(_,v),y.copy(D,x),Si(e,G,H,(j,O)=>{let J=j.elements[O];if(sl(e,j,J,"polar")){j.conformation.position(J,b);let $=y.distance(b,x);${let J=j.elements[O];if(sl(e,j,J,"polar")){j.conformation.position(J,b);let $=y.distance(b,v);$1,radius:_=>{let D=u[_],P=l.get(D.unitA);i.unit=e.unitMap.get(D.unitA),i.element=i.unit.elements[P.members[P.offsets[D.indexA]]];let A=r.size.size(i),I=l.get(D.unitB);i.unit=e.unitMap.get(D.unitB),i.element=i.unit.elements[I.members[I.offsets[D.indexB]]];let k=r.size.size(i);return Math.min(A,k)*d},ignore:_=>{if(u[_].props.flag===Gl.Filtered)return!0;if(f){let D=u[_];if(h==="stub"){let P=f.unitMap.get(D.unitA);if(!P)return!0;let A=e.unitMap.get(D.unitA),{offsets:I,members:k}=l.get(D.unitA);for(let M=I[D.indexA],R=I[D.indexA+1];M0){let{child:_}=e,D=te.expand(te(),(_??e).boundary.sphere,1*d);T.setBoundingSphere(D)}return T}var GL=w(w(w({},Tu),wc),Y_);function TZ(t){return Va({defaultProps:g.getDefaultValues(GL),createGeometry:d_e,createLocationIterator:f_e,getLoci:m_e,eachLocation:p_e,setUpdateState:(e,r,n,o,i,a,s)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.dashCount!==n.dashCount||r.dashScale!==n.dashScale||r.dashCap!==n.dashCap||r.radialSegments!==n.radialSegments||r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant||r.parentDisplay!==n.parentDisplay;let l=Mn.get(a).version;e.info.interactionsHash!==l&&(e.createGeometry=!0,e.updateTransform=!0,e.updateColor=!0,e.info.interactionsHash=l)}},t)}function m_e(t,e,r){let{objectId:n,groupId:o}=t;if(r===n){let i=Mn.get(e).value,a=i.contacts.edges[o],s=e.unitMap.get(a.unitA),l=e.unitMap.get(a.unitB);return Cu.Loci(e,i,[{unitA:s,indexA:a.indexA,unitB:l,indexB:a.indexB},{unitA:l,indexA:a.indexB,unitB:s,indexB:a.indexA}])}return St}var Q_=new Map,UL=new Set;function p_e(t,e,r,n){let o=!1;if(Cu.isLoci(t)){if(!ue.areEquivalent(t.data.structure,e))return!1;let i=Mn.get(e).value;if(t.data.interactions!==i)return!1;let{contacts:a}=i;for(let s of t.elements){let l=a.getEdgeIndex(s.indexA,s.unitA.id,s.indexB,s.unitB.id);l!==-1&&r(Oe.ofSingleton(l))&&(o=!0)}}else if(z.Loci.is(t)){if(!ue.areEquivalent(t.structure,e)||n&&t.elements.length===1)return!1;let i=Mn.get(e).value;if(!i)return!1;let{contacts:a,unitsFeatures:s}=i;for(let l of t.elements)Q_.set(l.unit.id,l.indices);for(let l of t.elements){let{unit:c}=l;Pe.isAtomic(c)&&we.forEach(l.indices,u=>{for(let d of a.getContactIndicesForElement(u,c))UL.add(d)})}UL.forEach(l=>{if(n){let{indexA:c,unitA:u,indexB:d,unitB:m}=a.edges[l],p=Q_.get(u),h=Q_.get(m);if(!p||!h)return;let{offsets:f,members:b}=s.get(u);for(let S=f[c],T=f[c+1];S{let c=r.edges[l];return a.unitA=t.unitMap.get(c.unitA),a.indexA=c.indexA,a.unitB=t.unitMap.get(c.unitB),a.indexB=c.indexB,i},!0)}var wZ={"intra-unit":(t,e)=>Dr("Intra-unit interactions cylinder",t,e,CZ),"inter-unit":(t,e)=>_o("Inter-unit interactions cylinder",t,e,TZ)},_Z=U(w(w({},zL),GL),{unitKinds:Ip(["atomic"]),sizeFactor:g.Numeric(.2,{min:.01,max:1,step:.01}),visuals:g.MultiSelect(["intra-unit","inter-unit"],g.objectToOptions(wZ))});function h_e(t,e){return g.clone(_Z)}function g_e(t,e){return rt.createMulti("Interactions",t,e,Qr,wZ)}var Yv={name:"interactions",label:"Non-covalent Interactions",description:"Displays non-covalent interactions as dashed cylinders.",factory:g_e,getParams:h_e,defaultValues:g.getDefaultValues(_Z),defaultColorTheme:{name:"interaction-type"},defaultSizeTheme:{name:"uniform"},isApplicable:t=>t.elementCount>0&&Mn.isApplicable(t),ensureCustomProperties:{attach:(t,e)=>Mn.attach(t,e,void 0,!0),detach:t=>Mn.ref(t,!1)},getData:(t,e)=>e.includeParent?t.asParent():t,mustRecreate:(t,e)=>t.includeParent!==e.includeParent};var PZ=rr.create({name:"computed-interactions-prop",category:"custom-props",display:{name:"Interactions"},ctor:class extends rr.Handler{constructor(){super(...arguments),this.provider=Mn,this.labelProvider={label:t=>{if(this.params.showTooltip)switch(t.kind){case"element-loci":if(t.elements.length===0)return;let e=[],r=this.getStructures(t.structure);for(let n of r){let o=this.provider.get(n).value;if(!o)continue;let i=z.Loci.remap(t,n);if(i.elements.length!==1)continue;let a=i.elements[0];if(we.size(a.indices)!==1)continue;let s=o.unitsFeatures.get(a.unit.id);if(!s)continue;let l=[],c=[],u=[],d=we.start(a.indices),{types:m,groups:p,elementsIndex:{indices:h,offsets:f}}=s;for(let b=f[d],v=f[d+1];bTypes ${l.join(", ")}`),c.length&&u.push(`Groups ${c.join(", ")}`),u.length&&e.push(`Interaction Feature: ${u.join(" | ")}`)}return e.length?e.join("
"):void 0;default:return}}}}getStructures(t){let e=[],r=this.ctx.helpers.substructureParent.get(t);if(r){let o=this.ctx.state.data.select(lt.Generators.ofType(X.Molecule.Structure,r.transform.ref));for(let i of o)i.obj&&Mo(e,i.obj.data)}return e}update(t){let e=this.params.autoAttach!==t.autoAttach||this.params.showTooltip!==t.showTooltip;return this.params.autoAttach=t.autoAttach,this.params.showTooltip=t.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),e}register(){this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach),this.ctx.representation.structure.themes.colorThemeRegistry.add(aS),this.ctx.managers.lociLabels.addProvider(this.labelProvider),this.ctx.representation.structure.registry.add(Yv)}unregister(){this.ctx.customStructureProperties.unregister(this.provider.descriptor.name),this.ctx.representation.structure.themes.colorThemeRegistry.remove(aS),this.ctx.managers.lociLabels.removeProvider(this.labelProvider),this.ctx.representation.structure.registry.remove(Yv)}},params:()=>({autoAttach:g.Boolean(!1),showTooltip:g.Boolean(!0)})});var EZ=rr.create({name:"computed-secondary-structure-prop",category:"custom-props",display:{name:"Secondary Structure"},ctor:class extends rr.Handler{constructor(){super(...arguments),this.provider=xs}update(t){let e=this.params.autoAttach!==t.autoAttach;return this.params.autoAttach=t.autoAttach,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),e}register(){this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach)}unregister(){this.ctx.customStructureProperties.unregister(this.provider.descriptor.name)}},params:()=>({autoAttach:g.Boolean(!1)})});var IZ=rr.create({name:"computed-valence-model-prop",category:"custom-props",display:{name:"Valence Model"},ctor:class extends rr.Handler{constructor(){super(...arguments),this.provider=wm,this.labelProvider={label:t=>{if(this.params.showTooltip)switch(t.kind){case"element-loci":if(t.elements.length===0)return;let e=[],r=this.getStructures(t.structure);for(let n of r){let o=this.provider.get(n).value;if(!o)continue;let i=z.Loci.remap(t,n);if(i.elements.length!==1)continue;let a=i.elements[0];if(we.size(a.indices)!==1)continue;let s=o.get(a.unit.id);if(!s)continue;let l=we.start(a.indices),c=s.charge[l],u=s.idealGeometry[l],d=s.implicitH[l],m=s.totalH[l];e.push(`Valence Model: Charge ${c} | Ideal Geometry ${QK(u)} | Implicit H ${d} | Total H ${m}`)}return e.length?e.join("
"):void 0;default:return}}}}getStructures(t){let e=[],r=this.ctx.helpers.substructureParent.get(t);if(r){let o=this.ctx.state.data.select(lt.Generators.ofType(X.Molecule.Structure,r.transform.ref));for(let i of o)i.obj&&Mo(e,i.obj.data)}return e}update(t){let e=this.params.autoAttach!==t.autoAttach||this.params.showTooltip!==t.showTooltip;return this.params.autoAttach=t.autoAttach,this.params.showTooltip=t.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),e}register(){this.ctx.customStructureProperties.register(this.provider,this.params.autoAttach),this.ctx.managers.lociLabels.addProvider(this.labelProvider)}unregister(){this.ctx.customStructureProperties.unregister(this.provider.descriptor.name),this.ctx.managers.lociLabels.removeProvider(this.labelProvider)}},params:()=>({autoAttach:g.Boolean(!1),showTooltip:g.Boolean(!0)})});var jL=ce(16448250),y_e="Assigns a color based on SIFTS mapping.",lS=new Map,DZ=w({},Dn({type:"colors",colorList:"set-1"}));function v_e(t){return DZ}function AZ(t,e){let r;if(t.structure){for(let s of t.structure.models){let l=cc.Provider.get(s).value;if(l)for(let c of l.accession)!c||lS.has(c)||lS.set(c,lS.size)}let n=z.Location.create(t.structure),o=zn(lS.size+1,e,{valueLabel:s=>`${s}`}),i=new Map,a=s=>{let l=cc.getKey(s);if(!l)return jL;if(i.has(l))return i.get(l);let c=o.color(lS.get(l));return i.set(l,c),c};r=s=>z.Location.is(s)&&Pe.isAtomic(s.unit)?a(s):ze.isLocation(s)?(n.unit=s.aUnit,n.element=s.aUnit.elements[s.aIndex],a(n)):jL}else r=()=>jL;return{factory:AZ,granularity:"group",preferSmoothing:!0,color:r,props:e,description:y_e}}var HL={name:"sifts-mapping",label:"SIFTS Mapping",category:wo.Category.Residue,factory:AZ,getParams:v_e,defaultValues:g.getDefaultValues(DZ),isApplicable:t=>{var e;return!!(!((e=t.structure)===null||e===void 0)&&e.models.some(r=>cc.Provider.isApplicable(r)))},ensureCustomProperties:{attach:(t,e)=>N(void 0,null,function*(){if(e.structure)for(let r of e.structure.models)yield cc.Provider.attach(t,r,void 0,!0)}),detach:t=>{if(t.structure)for(let e of t.structure.models)cc.Provider.ref(e,!1)}}};var kZ=rr.create({name:"sifts-mapping-prop",category:"custom-props",display:{name:"SIFTS Mapping"},ctor:class extends rr.Handler{constructor(){super(...arguments),this.provider=cc.Provider,this.labelProvider={label:t=>{if(this.params.showTooltip)return b_e(t)}}}update(t){let e=this.params.autoAttach!==t.autoAttach||this.params.showTooltip!==t.showTooltip;return this.params.autoAttach=t.autoAttach,this.params.showTooltip=t.showTooltip,this.ctx.customStructureProperties.setDefaultAutoAttach(this.provider.descriptor.name,this.params.autoAttach),e}register(){this.ctx.customModelProperties.register(this.provider,this.params.autoAttach),this.ctx.representation.structure.themes.colorThemeRegistry.add(HL),this.ctx.managers.lociLabels.addProvider(this.labelProvider)}unregister(){this.ctx.customModelProperties.unregister(this.provider.descriptor.name),this.ctx.representation.structure.themes.colorThemeRegistry.remove(HL),this.ctx.managers.lociLabels.removeProvider(this.labelProvider)}},params:()=>({autoAttach:g.Boolean(!0),showTooltip:g.Boolean(!0)})});function b_e(t){if(t.kind==="element-loci"){if(t.elements.length===0)return;let e=t.elements[0],r=e.unit,n=z.Location.create(t.structure,r,r.elements[we.getAt(e.indices,0)]);return cc.getLabel(n)}}var Ld;(function(t){t.Descriptor={name:"ihm_cross_link_restraint"},t.Provider=PT.create(t.Descriptor);function e(r,n){let o={entity_id:r.entity_id_1,asym_id:r.asym_id_1,seq_id:r.seq_id_1,atom_id:r.atom_id_1},i={entity_id:r.entity_id_2,asym_id:r.asym_id_2,seq_id:r.seq_id_2,atom_id:r.atom_id_2};function a(p,h,f){let b=p.get(h);b?b.push(f):p.set(h,[f])}function s(p,h){let f=h.entity_id.value(p),b=h.asym_id.value(p),v=h.seq_id.value(p);if(r.model_granularity.value(p)==="by-atom"){let x=n.atomicHierarchy.index.findAtom({auth_seq_id:v,label_asym_id:b,label_atom_id:h.atom_id.value(p),label_entity_id:f});x>=0&&a(c,x,p)}else if(n.coarseHierarchy.isDefined){let x=n.coarseHierarchy.spheres.findSequenceKey(f,b,v);if(x>=0)a(u,x,p);else{let S=n.coarseHierarchy.gaussians.findSequenceKey(f,b,v);S>=0&&a(d,S,p)}}}function l(p){switch(p){case 0:return c;case 1:return u;case 2:return d}}let c=new Map,u=new Map,d=new Map,m=[];for(let p=0;p{let b=l(h).get(p);return b!==void 0?b:m},data:r}}t.fromTable=e})(Ld||(Ld={}));var x_e=[];function MZ(t,e,r,n){return`${t}|${e.id}|${r}|${n.id}`}var cS=class{getPairIndices(e,r,n,o){let i=MZ(e,r,n,o);return this.pairKeyIndices.get(i)||x_e}getPairs(e,r,n,o){return this.getPairIndices(e,r,n,o).map(a=>this.pairs[a])}constructor(e){this.pairs=e;let r=new Map;this.pairs.forEach((n,o)=>{let i=MZ(n.indexA,n.unitA,n.indexB,n.unitB),a=r.get(i);a?a.push(o):r.set(i,[o])}),this.count=e.length,this.pairKeyIndices=r}};var Bd=gf.createProvider({label:"Cross Link Restraint",descriptor:Xc({name:"integrative-cross-link-restraint"}),type:"local",defaultParams:{},getParams:t=>({}),isApplicable:t=>t.models.some(e=>!!Ld.Provider.get(e)),obtain:(t,e,r)=>N(void 0,null,function*(){return{value:T_e(e)}})});var _c;(function(t){let e;(function(f){f.CrossLinkRestraint="cross-link-restraint"})(e=t.Tag||(t.Tag={}));function r(f){return f.models.some(b=>!!Ld.Provider.get(b))}t.isApplicable=r;let n=y(),o=y();function i(f){return f.unitA.conformation.position(f.unitA.elements[f.indexA],n),f.unitB.conformation.position(f.unitB.elements[f.indexB],o),y.distance(n,o)}t.distance=i;function a(f,b,v){return NT("cross-link-restraints",{structure:b,crossLinkRestraints:f},v)}t.Location=a;function s(f){return!!f&&f.kind==="data-location"&&f.tag==="cross-link-restraints"}t.isLocation=s;function l(f,b){return f.data.structure===b.data.structure&&f.data.crossLinkRestraints===b.data.crossLinkRestraints&&f.element===b.element}t.areLocationsEqual=l;function c(f,b){let v=f.pairs[b];return`Cross Link Restraint | Type: ${v.restraintType} | Threshold: ${v.distanceThreshold} \u212B | Psi: ${v.psi} | Sigma 1: ${v.sigma1} | Sigma 2: ${v.sigma2} | Distance: ${i(v).toFixed(2)} \u212B`}function u(f){return c(f.data.crossLinkRestraints,f.element)}t.locationLabel=u;function d(f,b,v){return Sf("cross-link-restraints",{structure:f,crossLinkRestraints:b},v,x=>p(b,v,x),()=>h(f,b,v))}t.Loci=d;function m(f){return!!f&&f.kind==="data-loci"&&f.tag==="interactions"}t.isLoci=m;function p(f,b,v){return np.fromPairProvider(b.length,(x,S,T)=>{let E=f.pairs[b[x]];E.unitA.conformation.position(E.unitA.elements[E.indexA],S),E.unitB.conformation.position(E.unitB.elements[E.indexB],T)},v)}t.getBoundingSphere=p;function h(f,b,v){let x=v[0];if(x===void 0)return"";let S=b.pairs[x];return[c(b,x),F1(ze.Location(f,S.unitA,S.indexA,f,S.unitB,S.indexB))].join("
")}t.getLabel=h})(_c||(_c={}));function RZ(t,e,r){let{elements:n}=e,o=n.length,i=e.kind;for(let a=0;at.set(l,a))}}function S_e(t,e,r){if(e.model!==r.model||e.model.sourceData.kind!=="mmCIF")return;let n=Ld.Provider.get(e.model);if(!n)return;let o=new Map,i=new Map;RZ(o,e,n),RZ(i,r,n),o.forEach((a,s)=>{let l=i.get(s);l!==void 0&&t.push(K_(e,a,r,l,n,s),K_(r,l,e,a,n,s))})}function C_e(t,e){if(e.model.sourceData.kind!=="mmCIF")return;let r=Ld.Provider.get(e.model);if(!r)return;let{elements:n}=e,o=n.length,i=e.kind,a=new Map;for(let s=0;s{let u=a.get(c);u?u.push(s):a.set(c,[s])})}a.forEach((s,l)=>{if(s.length<2)return;let[c,u]=s;t.push(K_(e,c,e,u,r,l),K_(e,u,e,c,r,l))})}function K_(t,e,r,n,o,i){return{unitA:t,indexA:e,unitB:r,indexB:n,restraintType:o.data.restraint_type.value(i),distanceThreshold:o.data.distance_threshold.value(i),psi:o.data.psi.value(i),sigma1:o.data.sigma_1.value(i),sigma2:o.data.sigma_2.value(i)}}function T_e(t){let e=[];if(!t.models.some(n=>Ld.Provider.get(n)))return new cS(e);let r=t.units.length;for(let n=0;n{let h=i.pairs[p],f=h.unitA,b=h.unitB;f.conformation.position(f.elements[h.indexA],d),b.conformation.position(b.elements[h.indexB],m)},radius:d=>{let m=i.pairs[d];return s.unit=m.unitA,s.element=m.unitA.elements[m.indexA],r.size.size(s)*a}},{mesh:c,boundingSphere:u}=jl(t,l,n,o);if(u)c.setBoundingSphere(u);else if(c.triangleCount>0){let d=te.expand(te(),e.boundary.sphere,1*a);c.setBoundingSphere(d)}return c}var LZ=U(w(w({},Tu),wc),{sizeFactor:g.Numeric(.5,{min:0,max:10,step:.1})});function __e(t){return Va({defaultProps:g.getDefaultValues(LZ),createGeometry:w_e,createLocationIterator:P_e,getLoci:E_e,eachLocation:I_e,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.radialSegments!==n.radialSegments||r.linkCap!==n.linkCap}},t)}function P_e(t){let e=Bd.get(t).value,{pairs:r}=e,n=r.length,o=1,i=_c.Location(e,t);return jt(n,o,1,s=>(i.element=s,i),!0)}function E_e(t,e,r){let{objectId:n,groupId:o}=t;if(r===n){let i=Bd.get(e).value;if(i.pairs[o])return _c.Loci(e,i,[o])}return St}function I_e(t,e,r){let n=!1;if(_c.isLoci(t)){if(!ue.areEquivalent(t.data.structure,e))return!1;let o=Bd.get(e).value;if(t.data.crossLinkRestraints!==o)return!1;for(let i of t.elements)r(Oe.ofSingleton(i))&&(n=!0)}return n}var D_e={"cross-link-restraint":(t,e)=>_o("Cross-link restraint",t,e,__e)},BZ=w({},LZ);function A_e(t,e){return g.clone(BZ)}function k_e(t,e){return rt.createMulti("CrossLinkRestraint",t,e,Qr,D_e)}var qL={name:_c.Tag.CrossLinkRestraint,label:"Cross Link Restraint",description:"Displays cross-link restraints.",factory:k_e,getParams:A_e,defaultValues:g.getDefaultValues(BZ),defaultColorTheme:{name:_c.Tag.CrossLinkRestraint},defaultSizeTheme:{name:"uniform"},isApplicable:t=>_c.isApplicable(t),ensureCustomProperties:{attach:(t,e)=>Bd.attach(t,e,void 0,!0),detach:t=>Bd.ref(t,!1)}};var OZ=ce(13421772),M_e="Colors cross-links by the deviation of the observed distance versus the modeled distance (e.g. modeled / `ihm_cross_link_restraint.distance_threshold`).",FZ={domain:g.Interval([.5,1.5],{step:.01}),list:g.ColorList("red-grey",{presetKind:"scale"})};function R_e(t){return FZ}function NZ(t,e){let r,n,o=t.structure&&Bd.get(t.structure).value;if(o){n=ki.create({domain:e.domain,listOrName:e.list.colors});let i=n.color;r=a=>{if(_c.isLocation(a)){let s=o.pairs[a.element];if(s)return i(_c.distance(s)/s.distanceThreshold)}return OZ}}else r=()=>OZ;return{factory:NZ,granularity:"group",color:r,props:e,description:M_e,legend:n?n.legend:void 0}}var WL={name:"cross-link",label:"Cross Link",category:wo.Category.Misc,factory:NZ,getParams:R_e,defaultValues:g.getDefaultValues(FZ),isApplicable:t=>!!t.structure&&_c.isApplicable(t.structure),ensureCustomProperties:{attach:(t,e)=>e.structure?Bd.attach(t,e.structure,void 0,!0):Promise.resolve(),detach:t=>t.structure&&Bd.ref(t.structure,!1)}};var VZ=rr.create({name:"integrative-cross-link-restraint",category:"custom-props",display:{name:"Cross Link Restraint"},ctor:class extends rr.Handler{constructor(){super(...arguments),this.provider=Ld.Provider}register(){this.provider.formatRegistry.add("mmCIF",L_e),this.ctx.representation.structure.themes.colorThemeRegistry.add(WL),this.ctx.representation.structure.registry.add(qL)}unregister(){this.provider.formatRegistry.remove("mmCIF"),this.ctx.representation.structure.themes.colorThemeRegistry.remove(WL),this.ctx.representation.structure.registry.remove(qL)}}});function L_e(t){if(!op.is(t.sourceData))return;let{ihm_cross_link_restraint:e}=t.sourceData.data.db;if(e._rowCount!==0)return Ld.fromTable(e,t)}var uS={State:GR,Representation:HR,Camera:qR,Misc:oL},cl={Representation:aL,Camera:cL,CustomProps:XL};function Qv(t,e,r={}){let n=r;return typeof n.type=="string"||typeof n.color=="string"||typeof n.size=="string"?B_e(t,e||ue.Empty,r):UZ(t,e||ue.Empty,r)}function zZ(t,e){let{themes:r}=t.representation.structure;return e?r.colorThemeRegistry.getApplicableTypes({structure:e}):r.colorThemeRegistry.types}function dS(t,e,r,n,o){let{registry:i,themes:a}=t.representation.structure,s=i.get(r||i.default.name),l=a.colorThemeRegistry.get(n||s.defaultColorTheme.name),c=g.getDefaultValues(l.getParams({structure:e||ue.Empty}));return l.name===s.defaultColorTheme.name&&Object.assign(c,s.defaultColorTheme.props),{name:l.name,params:Object.assign(c,o)}}function YL(t,e,r,n,o){let{registry:i,themes:a}=t.representation.structure,s=i.get(r||i.default.name),l=a.sizeThemeRegistry.get(n||s.defaultSizeTheme.name),c=g.getDefaultValues(l.getParams({structure:e||ue.Empty}));return l.name===s.defaultSizeTheme.name&&Object.assign(c,s.defaultSizeTheme.props),{name:l.name,params:Object.assign(c,o)}}function B_e(t,e,r){let n=r.type&&t.representation.structure.registry.get(r.type)||t.representation.structure.registry.default.provider,o=r.color&&t.representation.structure.themes.colorThemeRegistry.get(r.color)||t.representation.structure.themes.colorThemeRegistry.get(n.defaultColorTheme.name),i=r.size&&t.representation.structure.themes.sizeThemeRegistry.get(r.size)||t.representation.structure.themes.sizeThemeRegistry.get(n.defaultSizeTheme.name);return UZ(t,e,{type:n,typeParams:r.typeParams,color:o,colorParams:r.colorParams,size:i,sizeParams:r.sizeParams})}function UZ(t,e,r={}){let{themes:n}=t.representation.structure,o={structure:e},i=r.type||t.representation.structure.registry.default.provider,a=g.getDefaultValues(i.getParams(n,e)),s=Object.assign(a,r.typeParams),l=r.color||n.colorThemeRegistry.get(i.defaultColorTheme.name),c=g.getDefaultValues(l.getParams(o));l.name===i.defaultColorTheme.name&&Object.assign(c,i.defaultColorTheme.props);let u=Object.assign(c,r.colorParams),d=r.size||n.sizeThemeRegistry.get(i.defaultSizeTheme.name),m=g.getDefaultValues(d.getParams(o));d.name===i.defaultSizeTheme.name&&Object.assign(m,i.defaultSizeTheme.props);let p=Object.assign(m,r.sizeParams);return{type:{name:i.name,params:s},colorTheme:{name:l.name,params:u},sizeTheme:{name:d.name,params:p}}}var O_e=t=>{let e=de.Representation.StructureRepresentation3D.definition.params(void 0,t);return{expandRadius:g.Numeric(5,{min:1,max:10,step:1}),targetParams:g.Group(e,{label:"Target",customDefault:Qv(t,void 0,{type:"ball-and-stick",size:"physical",typeParams:{sizeFactor:.22,sizeAspectRatio:.73,adjustCylinderLength:!0,xrayShaded:!0,aromaticBonds:!1,multipleBonds:"off",excludeTypes:["hydrogen-bond","metal-coordination"]}})}),surroundingsParams:g.Group(e,{label:"Surroundings",customDefault:Qv(t,void 0,{type:"ball-and-stick",size:"physical",typeParams:{sizeFactor:.16,excludeTypes:["hydrogen-bond","metal-coordination"]}})}),nciParams:g.Group(e,{label:"Non-covalent Int.",customDefault:Qv(t,void 0,{type:Yv,color:aS,size:so.BuiltIn.uniform})}),components:g.MultiSelect(GZ,g.arrayToOptions(GZ)),excludeTargetFromSurroundings:g.Boolean(!1,{label:"Exclude Target",description:'Exclude the focus "target" from the surroudings component.'}),ignoreHydrogens:g.Boolean(!1),ignoreHydrogensVariant:g.Select("all",g.arrayToOptions(["all","non-polar"])),ignoreLight:g.Boolean(!1),material:Qo.getParam(),clip:g.Group(dd.Params)}},GZ=["target","surroundings","interactions"],Rn=function(t){return t.TargetSel="structure-focus-target-sel",t.TargetRepr="structure-focus-target-repr",t.SurrSel="structure-focus-surr-sel",t.SurrRepr="structure-focus-surr-repr",t.SurrNciRepr="structure-focus-surr-nci-repr",t}(Rn||{}),F_e=new Set([Rn.TargetSel,Rn.TargetRepr,Rn.SurrSel,Rn.SurrRepr,Rn.SurrNciRepr]),QL=class extends rr.WithSubscribers{constructor(){super(...arguments),this.currentSource=void 0}get surrLabel(){return`[Focus] Surroundings (${this.params.expandRadius} \xC5)`}getReprParams(e){return U(w({},e),{type:{name:e.type.name,params:U(w({},e.type.params),{ignoreHydrogens:this.params.ignoreHydrogens,ignoreHydrogensVariant:this.params.ignoreHydrogensVariant,ignoreLight:this.params.ignoreLight,material:this.params.material,clip:this.params.clip})}})}ensureShape(e){var r;let n=this.plugin.state.data,o=n.tree,i=n.build(),a=lt.findUniqueTagsInSubtree(o,e.transform.ref,F_e);a[Rn.TargetSel]||(a[Rn.TargetSel]=i.to(e).apply(de.Model.StructureSelectionFromBundle,{bundle:z.Bundle.Empty,label:"[Focus] Target"},{tags:Rn.TargetSel}).ref),a[Rn.SurrSel]||(a[Rn.SurrSel]=i.to(e).apply(de.Model.StructureSelectionFromExpression,{expression:q.struct.generator.empty(),label:this.surrLabel},{tags:Rn.SurrSel}).ref);let s=this.params.components;return s.indexOf("target")>=0&&!a[Rn.TargetRepr]&&(a[Rn.TargetRepr]=i.to(a[Rn.TargetSel]).apply(de.Representation.StructureRepresentation3D,this.getReprParams(this.params.targetParams),{tags:Rn.TargetRepr}).ref),s.indexOf("surroundings")>=0&&!a[Rn.SurrRepr]&&(a[Rn.SurrRepr]=i.to(a[Rn.SurrSel]).apply(de.Representation.StructureRepresentation3D,this.getReprParams(this.params.surroundingsParams),{tags:Rn.SurrRepr}).ref),s.indexOf("interactions")>=0&&!a[Rn.SurrNciRepr]&&e.obj&&Yv.isApplicable((r=e.obj)===null||r===void 0?void 0:r.data)&&(a[Rn.SurrNciRepr]=i.to(a[Rn.SurrSel]).apply(de.Representation.StructureRepresentation3D,this.getReprParams(this.params.nciParams),{tags:Rn.SurrNciRepr}).ref),{state:n,builder:i,refs:a}}clear(e){let r=this.plugin.state.data;this.currentSource=void 0;let n=r.select(lt.Generators.byRef(e).subtree().withTag(Rn.TargetSel)),o=r.select(lt.Generators.byRef(e).subtree().withTag(Rn.SurrSel));if(n.length===0&&o.length===0)return;let i=r.build(),a=z.Bundle.Empty;for(let l of n)i.to(l).update(de.Model.StructureSelectionFromBundle,c=>U(w({},c),{bundle:a}));let s=q.struct.generator.empty();for(let l of o)i.to(l).update(de.Model.StructureSelectionFromExpression,c=>U(w({},c),{expression:s}));return Re.State.Update(this.plugin,{state:r,tree:i,options:{doNotLogTiming:!0,doNotUpdateCurrent:!0}})}focus(e){return N(this,null,function*(){let r=this.plugin.helpers.substructureParent.get(e.structure);if(!r||!r.obj)return;this.currentSource=e;let n=z.Loci.remap(e,r.obj.data),o=z.Loci.extendToWholeResidues(n),i=z.Bundle.fromLoci(o),a=z.Bundle.toExpression(i),s=q.struct.modifier.includeSurroundings({0:a,radius:this.params.expandRadius,"as-whole-residues":!0});this.params.excludeTargetFromSurroundings&&(s=q.struct.modifier.exceptBy({0:s,by:a}));let{state:l,builder:c,refs:u}=this.ensureShape(r);c.to(u[Rn.TargetSel]).update(de.Model.StructureSelectionFromBundle,d=>U(w({},d),{bundle:i})),c.to(u[Rn.SurrSel]).update(de.Model.StructureSelectionFromExpression,d=>U(w({},d),{expression:s,label:this.surrLabel})),yield Re.State.Update(this.plugin,{state:l,tree:c,options:{doNotLogTiming:!0,doNotUpdateCurrent:!0}})})}register(e){this.subscribeObservable(this.plugin.managers.structure.focus.behaviors.current,r=>{r?this.focus(r.loci):this.clear(kt.RootRef)})}update(e){return N(this,null,function*(){let r=this.params;if(this.params=e,r.excludeTargetFromSurroundings!==e.excludeTargetFromSurroundings)return this.currentSource&&this.focus(this.currentSource),!0;let n=this.plugin.state.data,o=n.build(),i=lt.Generators.root.subtree(),a=this.params.components,s=a.indexOf("target")>=0;for(let l of n.select(i.withTag(Rn.TargetRepr)))s?o.to(l).update(this.getReprParams(this.params.targetParams)):o.delete(l.transform.ref);s=a.indexOf("surroundings")>=0;for(let l of n.select(i.withTag(Rn.SurrRepr)))s?o.to(l).update(this.getReprParams(this.params.surroundingsParams)):o.delete(l.transform.ref);s=a.indexOf("interactions")>=0;for(let l of n.select(i.withTag(Rn.SurrNciRepr)))s?o.to(l).update(this.getReprParams(this.params.nciParams)):o.delete(l.transform.ref);return yield Re.State.Update(this.plugin,{state:n,tree:o,options:{doNotLogTiming:!0,doNotUpdateCurrent:!0}}),e.expandRadius!==r.expandRadius&&this.currentSource&&this.focus(this.currentSource),!0})}},my=rr.create({name:"create-structure-focus-representation",display:{name:"Structure Focus Representation"},category:"interaction",ctor:QL,params:(t,e)=>O_e(e)});var $L={};ua($L,{AddTrajectory:()=>pPe,DownloadStructure:()=>sPe,EnableModelCustomProps:()=>dPe,EnableStructureCustomProps:()=>mPe,LoadTrajectory:()=>fPe,PdbDownloadProvider:()=>KZ,UpdateTrajectory:()=>pS});function oa(t){return t}(function(t){t.CommonParams={ignoreHydrogens:g.Optional(g.Boolean(!1)),ignoreHydrogensVariant:g.Optional(g.Select("all",g.arrayToOptions(["all","non-polar"]))),ignoreLight:g.Optional(g.Boolean(!1)),quality:g.Optional(g.Select("auto",Qx)),theme:g.Optional(g.Group({globalName:g.Optional(g.Text("")),globalColorParams:g.Optional(g.Value({},{isHidden:!0})),carbonColor:g.Optional(g.Select("chain-id",g.arrayToOptions(["chain-id","operator-name","element-symbol"]))),symmetryColor:g.Optional(g.Text("")),symmetryColorParams:g.Optional(g.Value({},{isHidden:!0})),focus:g.Optional(g.Group({name:g.Optional(g.Text("")),params:g.Optional(g.Value({}))}))}))};function e(i){return i==="chain-id"?{name:i,params:W2.defaultValues}:i==="operator-name"?{name:i,params:av.defaultValues}:{name:i,params:{}}}function r(i){return i.units.some(a=>!a.conformation.operator.assembly&&a.conformation.operator.spgrOp>=0)}function n(i,a,s){var l,c,u,d,m,p,h,f,b,v,x,S,T,E;let _=i.state.data.build(),D=i.builders.structure.representation,P=i.managers.structure.component.state.options.hydrogens,A={quality:i.managers.structure.component.state.options.visualQuality,ignoreHydrogens:P!=="all",ignoreHydrogensVariant:P==="only-polar"?"non-polar":"all",ignoreLight:i.managers.structure.component.state.options.ignoreLight};a.quality&&a.quality!=="auto"&&(A.quality=a.quality),a.ignoreHydrogens!==void 0&&(A.ignoreHydrogens=!!a.ignoreHydrogens),a.ignoreHydrogensVariant!==void 0&&(A.ignoreHydrogensVariant=a.ignoreHydrogensVariant),a.ignoreLight!==void 0&&(A.ignoreLight=!!a.ignoreLight);let I=!((l=a.theme)===null||l===void 0)&&l.globalName?(c=a.theme)===null||c===void 0?void 0:c.globalName:void 0,k=((u=a.theme)===null||u===void 0?void 0:u.carbonColor)!==void 0?w({carbonColor:e((d=a.theme)===null||d===void 0?void 0:d.carbonColor)},(m=a.theme)===null||m===void 0?void 0:m.globalColorParams):w({},(p=a.theme)===null||p===void 0?void 0:p.globalColorParams),M=s&&(!((h=a.theme)===null||h===void 0)&&h.symmetryColor)&&r(s)?(f=a.theme)===null||f===void 0?void 0:f.symmetryColor:I,R=!((b=a.theme)===null||b===void 0)&&b.symmetryColorParams?w(w({},(v=a.theme)===null||v===void 0?void 0:v.globalColorParams),(x=a.theme)===null||x===void 0?void 0:x.symmetryColorParams):w({},(S=a.theme)===null||S===void 0?void 0:S.globalColorParams),B=!((T=a.theme)===null||T===void 0)&&T.globalColorParams?w({},(E=a.theme)===null||E===void 0?void 0:E.globalColorParams):void 0;return{update:_,builder:D,color:I,symmetryColor:M,symmetryColorParams:R,globalColorParams:B,typeParams:A,ballAndStickColor:k}}t.reprBuilder=n;function o(i,a,s,l){if(i.state.hasBehavior(my))return i.state.updateBehavior(my,c=>{let u=dS(i,a,"ball-and-stick",s||"element-symbol",l);c.surroundingsParams.colorTheme=u,c.targetParams.colorTheme=u})}t.updateFocusRepr=o})(oa||(oa={}));var Th=oa.CommonParams,py=oa.reprBuilder,fy=oa.updateFocusRepr,N_e=oa({id:"preset-structure-representation-auto",display:{name:"Automatic",description:"Show representations based on the size of the structure. Smaller structures are shown with more detail than larger ones, ranging from atomistic display to coarse surfaces."},params:()=>Th,apply(t,e,r){var n,o;let i=(o=(n=Fn.resolveAndCheck(r.state.data,t))===null||n===void 0?void 0:n.obj)===null||o===void 0?void 0:o.data;if(!i)return{};let a=r.config.get(Wt.Structure.SizeThresholds)||ue.DefaultSizeThresholds,s=ue.getSize(i,a),l=i.polymerResidueCount/i.polymerGapCount;switch(s){case ue.Size.Gigantic:case ue.Size.Huge:return qZ.apply(t,e,r);case ue.Size.Large:return WZ.apply(t,e,r);case ue.Size.Medium:if(l>3)return HZ.apply(t,e,r);case ue.Size.Small:return XZ.apply(t,U(w({},e),{showCarbohydrateSymbol:!0}),r);default:ur(s)}}}),V_e=oa({id:"preset-structure-representation-empty",display:{name:"Empty",description:"Removes all existing representations."},apply(t,e,r){return N(this,null,function*(){return{}})}}),mS="Basic",HZ=oa({id:"preset-structure-representation-polymer-and-ligand",display:{name:"Polymer & Ligand",group:mS,description:"Shows polymers as Cartoon, ligands as Ball & Stick, carbohydrates as 3D-SNFG and water molecules semi-transparent."},params:()=>Th,apply(t,e,r){return N(this,null,function*(){var n,o,i,a,s,l,c,u,d,m;let p=Fn.resolveAndCheck(r.state.data,t);if(!p)return{};let h={polymer:yield ul(r,p,"polymer"),ligand:yield ul(r,p,"ligand"),nonStandard:yield ul(r,p,"non-standard"),branched:yield ul(r,p,"branched",{label:"Carbohydrate"}),water:yield ul(r,p,"water"),ion:yield ul(r,p,"ion"),lipid:yield ul(r,p,"lipid"),coarse:yield ul(r,p,"coarse")},f=p.obj.data,b={sizeFactor:f.isCoarseGrained?.8:.2},v=(((i=(o=(n=h.water)===null||n===void 0?void 0:n.obj)===null||o===void 0?void 0:o.data)===null||i===void 0?void 0:i.elementCount)||0)>5e4?"line":"ball-and-stick",x=(((l=(s=(a=h.lipid)===null||a===void 0?void 0:a.obj)===null||s===void 0?void 0:s.data)===null||l===void 0?void 0:l.elementCount)||0)>2e4?"line":"ball-and-stick",{update:S,builder:T,typeParams:E,color:_,symmetryColor:D,symmetryColorParams:P,globalColorParams:A,ballAndStickColor:I}=py(r,e,f),k={polymer:T.buildRepresentation(S,h.polymer,{type:"cartoon",typeParams:w(w({},E),b),color:D,colorParams:P},{tag:"polymer"}),ligand:T.buildRepresentation(S,h.ligand,{type:"ball-and-stick",typeParams:E,color:_,colorParams:I},{tag:"ligand"}),nonStandard:T.buildRepresentation(S,h.nonStandard,{type:"ball-and-stick",typeParams:E,color:_,colorParams:I},{tag:"non-standard"}),branchedBallAndStick:T.buildRepresentation(S,h.branched,{type:"ball-and-stick",typeParams:U(w({},E),{alpha:.3}),color:_,colorParams:I},{tag:"branched-ball-and-stick"}),branchedSnfg3d:T.buildRepresentation(S,h.branched,{type:"carbohydrate",typeParams:E,color:_,colorParams:A},{tag:"branched-snfg-3d"}),water:T.buildRepresentation(S,h.water,{type:v,typeParams:U(w({},E),{alpha:.6,visuals:v==="line"?["intra-bond","element-point"]:void 0}),color:_,colorParams:w({carbonColor:{name:"element-symbol",params:{}}},A)},{tag:"water"}),ion:T.buildRepresentation(S,h.ion,{type:"ball-and-stick",typeParams:E,color:_,colorParams:w({carbonColor:{name:"element-symbol",params:{}}},A)},{tag:"ion"}),lipid:T.buildRepresentation(S,h.lipid,{type:x,typeParams:U(w({},E),{alpha:.6,visuals:x==="line"?["intra-bond"]:void 0}),color:_,colorParams:w({carbonColor:{name:"element-symbol",params:{}}},A)},{tag:"lipid"}),coarse:T.buildRepresentation(S,h.coarse,{type:"spacefill",typeParams:E,color:_||"chain-id",colorParams:A},{tag:"coarse"})};return yield S.commit({revertOnError:!1}),yield fy(r,f,(u=(c=e.theme)===null||c===void 0?void 0:c.focus)===null||u===void 0?void 0:u.name,(m=(d=e.theme)===null||d===void 0?void 0:d.focus)===null||m===void 0?void 0:m.params),{components:h,representations:k}})}}),z_e=oa({id:"preset-structure-representation-protein-and-nucleic",display:{name:"Protein & Nucleic",group:mS,description:"Shows proteins as Cartoon and RNA/DNA as Gaussian Surface."},params:()=>Th,apply(t,e,r){return N(this,null,function*(){var n,o,i,a;let s=Fn.resolveAndCheck(r.state.data,t);if(!s)return{};let l={protein:yield jZ(r,s,"protein"),nucleic:yield jZ(r,s,"nucleic")},c=s.obj.data,u={sizeFactor:c.isCoarseGrained?.8:.2},d={radiusOffset:c.isCoarseGrained?2:0,smoothness:c.isCoarseGrained?1:1.5},{update:m,builder:p,typeParams:h,symmetryColor:f,symmetryColorParams:b}=py(r,e,c),v={protein:p.buildRepresentation(m,l.protein,{type:"cartoon",typeParams:w(w({},h),u),color:f,colorParams:b},{tag:"protein"}),nucleic:p.buildRepresentation(m,l.nucleic,{type:"gaussian-surface",typeParams:w(w({},h),d),color:f,colorParams:b},{tag:"nucleic"})};return yield m.commit({revertOnError:!0}),yield fy(r,c,(o=(n=e.theme)===null||n===void 0?void 0:n.focus)===null||o===void 0?void 0:o.name,(a=(i=e.theme)===null||i===void 0?void 0:i.focus)===null||a===void 0?void 0:a.params),{components:l,representations:v}})}}),qZ=oa({id:"preset-structure-representation-coarse-surface",display:{name:"Coarse Surface",group:mS,description:"Shows polymers and lipids as coarse Gaussian Surface."},params:()=>Th,apply(t,e,r){return N(this,null,function*(){var n,o,i,a;let s=Fn.resolveAndCheck(r.state.data,t);if(!s)return{};let l={polymer:yield ul(r,s,"polymer"),lipid:yield ul(r,s,"lipid")},c=s.obj.data,u=r.config.get(Wt.Structure.SizeThresholds)||ue.DefaultSizeThresholds,d=ue.getSize(c,u),m=Object.create(null);d===ue.Size.Gigantic?Object.assign(m,{traceOnly:!c.isCoarseGrained,radiusOffset:2,smoothness:1,visuals:["structure-gaussian-surface-mesh"]}):d===ue.Size.Huge?Object.assign(m,{radiusOffset:c.isCoarseGrained?2:0,smoothness:1}):c.isCoarseGrained&&Object.assign(m,{radiusOffset:2,smoothness:1});let{update:p,builder:h,typeParams:f,symmetryColor:b,symmetryColorParams:v}=py(r,e,c),x={polymer:h.buildRepresentation(p,l.polymer,{type:"gaussian-surface",typeParams:w(w({},f),m),color:b,colorParams:v},{tag:"polymer"}),lipid:h.buildRepresentation(p,l.lipid,{type:"gaussian-surface",typeParams:w(w({},f),m),color:b,colorParams:v},{tag:"lipid"})};return yield p.commit({revertOnError:!0}),yield fy(r,c,(o=(n=e.theme)===null||n===void 0?void 0:n.focus)===null||o===void 0?void 0:o.name,(a=(i=e.theme)===null||i===void 0?void 0:i.focus)===null||a===void 0?void 0:a.params),{components:l,representations:x}})}}),WZ=oa({id:"preset-structure-representation-polymer-cartoon",display:{name:"Polymer Cartoon",group:mS,description:"Shows polymers as Cartoon."},params:()=>Th,apply(t,e,r){return N(this,null,function*(){var n,o,i,a;let s=Fn.resolveAndCheck(r.state.data,t);if(!s)return{};let l={polymer:yield ul(r,s,"polymer")},c=s.obj.data,u={sizeFactor:c.isCoarseGrained?.8:.2},{update:d,builder:m,typeParams:p,symmetryColor:h,symmetryColorParams:f}=py(r,e,c),b={polymer:m.buildRepresentation(d,l.polymer,{type:"cartoon",typeParams:w(w({},p),u),color:h,colorParams:f},{tag:"polymer"})};return yield d.commit({revertOnError:!0}),yield fy(r,c,(o=(n=e.theme)===null||n===void 0?void 0:n.focus)===null||o===void 0?void 0:o.name,(a=(i=e.theme)===null||i===void 0?void 0:i.focus)===null||a===void 0?void 0:a.params),{components:l,representations:b}})}}),XZ=oa({id:"preset-structure-representation-atomic-detail",display:{name:"Atomic Detail",group:mS,description:"Shows everything in atomic detail with Ball & Stick."},params:()=>U(w({},Th),{showCarbohydrateSymbol:g.Boolean(!1)}),apply(t,e,r){return N(this,null,function*(){var n,o,i,a,s,l;let c=Fn.resolveAndCheck(r.state.data,t);if(!c)return{};let u={all:yield ul(r,c,"all"),branched:void 0},d=c.obj.data,m=d.elementCount>1e5,p=d.atomicResidueCount&&d.elementCount>1e3&&d.atomicResidueCount/d.elementCount<3,h=d.models[0],f=!!ld.Provider.get(h)||sU.isExhaustive(h),b="ball-and-stick";d.isCoarseGrained?b=d.elementCount>1e6?"point":"spacefill":p&&!f?b="spacefill":m&&(b="line");let v=e.showCarbohydrateSymbol&&!m&&!p;v&&Object.assign(u,{branched:yield ul(r,c,"branched",{label:"Carbohydrate"})});let{update:x,builder:S,typeParams:T,color:E,ballAndStickColor:_,globalColorParams:D}=py(r,e,d),P=p&&!f?w({carbonColor:{name:"element-symbol",params:{}}},D):_,A={all:S.buildRepresentation(x,u.all,{type:b,typeParams:T,color:E,colorParams:P},{tag:"all"})};return v&&Object.assign(A,{snfg3d:S.buildRepresentation(x,u.branched,{type:"carbohydrate",typeParams:U(w({},T),{alpha:.4,visuals:["carbohydrate-symbol"]}),color:E,colorParams:D},{tag:"snfg-3d"})}),yield x.commit({revertOnError:!0}),yield fy(r,d,(i=(o=(n=e.theme)===null||n===void 0?void 0:n.focus)===null||o===void 0?void 0:o.name)!==null&&i!==void 0?i:E,(l=(s=(a=e.theme)===null||a===void 0?void 0:a.focus)===null||s===void 0?void 0:s.params)!==null&&l!==void 0?l:P),{components:u,representations:A}})}}),U_e=oa({id:"preset-structure-representation-illustrative",display:{name:"Illustrative",group:"Miscellaneous",description:"..."},params:()=>U(w({},Th),{showCarbohydrateSymbol:g.Boolean(!1)}),apply(t,e,r){return N(this,null,function*(){var n,o,i,a,s;let l=Fn.resolveAndCheck(r.state.data,t);if(!l)return{};let c={all:yield ul(r,l,"all"),branched:void 0},u=l.obj.data,{update:d,builder:m,typeParams:p,color:h}=py(r,e,u),f={all:m.buildRepresentation(d,c.all,{type:"spacefill",typeParams:U(w({},p),{ignoreLight:!0}),color:"illustrative"},{tag:"all"})};return yield d.commit({revertOnError:!0}),yield fy(r,u,(i=(o=(n=e.theme)===null||n===void 0?void 0:n.focus)===null||o===void 0?void 0:o.name)!==null&&i!==void 0?i:h,(s=(a=e.theme)===null||a===void 0?void 0:a.focus)===null||s===void 0?void 0:s.params),{components:c,representations:f}})}}),G_e=oa({id:"preset-structure-representation-auto-lod",display:{name:"Automatic Detail",group:"Miscellaneous",description:"Shows more (or less) detailed representations automatically based on camera distance."},params:()=>Th,apply(t,e,r){return N(this,null,function*(){var n,o,i,a;let s=Fn.resolveAndCheck(r.state.data,t);if(!s)return{};let l={all:yield ul(r,s,"all")},c=s.obj.data,u={sizeFactor:c.isCoarseGrained?.8:.2},{update:d,builder:m,typeParams:p,color:h,symmetryColor:f,symmetryColorParams:b,ballAndStickColor:v}=py(r,e,c),x={gaussianSurface:m.buildRepresentation(d,l.all,{type:"gaussian-surface",typeParams:U(w({},p),{lod:y.create(30,1e7,100)}),color:f,colorParams:b},{tag:"gaussian-surface"}),cartoon:m.buildRepresentation(d,l.all,{type:"cartoon",typeParams:U(w(w({},p),u),{lod:y.create(-20,300,100)}),color:f,colorParams:b},{tag:"cartoon"}),ballAndStick:m.buildRepresentation(d,l.all,{type:"ball-and-stick",typeParams:U(w({},p),{lod:y.create(-20,40,20)}),color:h,colorParams:v},{tag:"ball-and-stick"})};return yield d.commit({revertOnError:!1}),yield fy(r,c,(o=(n=e.theme)===null||n===void 0?void 0:n.focus)===null||o===void 0?void 0:o.name,(a=(i=e.theme)===null||i===void 0?void 0:i.focus)===null||a===void 0?void 0:a.params),{components:l,representations:x}})}});function ul(t,e,r,n){return t.builders.structure.tryCreateComponentStatic(e,r,n)}function jZ(t,e,r,n){return t.builders.structure.tryCreateComponentFromSelection(e,Qn[r],`selection-${r}`,n)}var Ms={empty:V_e,auto:N_e,"atomic-detail":XZ,"polymer-cartoon":WZ,"polymer-and-ligand":HZ,"protein-and-nucleic":z_e,"coarse-surface":qZ,illustrative:U_e,"auto-lod":G_e};function Kv(t,e){if(t.ext==="bcif")try{let{encoder:r}=bU(e);if(r.startsWith("VolumeServer"))return"dscif";if(r.startsWith("volseg-volume-server"))return"segcif"}catch(r){console.error(r)}else if(t.ext==="cif"){let r=e;if(r.startsWith(`data_SERVER +# +_density_server_result`))return"dscif";if(r.startsWith(`data_SERVER +# +data_SEGMENTATION_DATA`))return"segcif";if(r.includes("atom_site_fract_x")||r.includes("atom_site.fract_x"))return"coreCif"}return-1}var _u="Trajectory";function Ap(t,e){return t.builders.structure.hierarchy.applyPreset(e.trajectory,"default")}var j_e={label:"mmCIF",description:"mmCIF",category:_u,stringExtensions:["cif","mmcif","mcif"],binaryExtensions:["bcif"],isApplicable:(t,e)=>t.ext==="mmcif"||t.ext==="mcif"?!0:t.ext==="cif"||t.ext==="bcif"?Kv(t,e)===-1:!1,parse:(t,e,r)=>N(void 0,null,function*(){var n,o;let a=t.state.data.build().to(e).apply(de.Data.ParseCif,void 0,{state:{isGhost:!0}}),s=yield a.apply(de.Model.TrajectoryFromMmCif,void 0,{tags:r?.trajectoryTags}).commit({revertOnError:!0});return(((o=(n=a.selector.cell)===null||n===void 0?void 0:n.obj)===null||o===void 0?void 0:o.data.blocks.length)||0)>1&&t.state.data.updateCellState(a.ref,{isGhost:!1}),{trajectory:s}}),visuals:Ap},H_e={label:"cifCore",description:"CIF Core",category:_u,stringExtensions:["cif"],isApplicable:(t,e)=>t.ext==="cif"?Kv(t,e)==="coreCif":!1,parse:(t,e,r)=>N(void 0,null,function*(){var n,o;let a=t.state.data.build().to(e).apply(de.Data.ParseCif,void 0,{state:{isGhost:!0}}),s=yield a.apply(de.Model.TrajectoryFromCifCore,void 0,{tags:r?.trajectoryTags}).commit({revertOnError:!0});return(((o=(n=a.selector.cell)===null||n===void 0?void 0:n.obj)===null||o===void 0?void 0:o.data.blocks.length)||0)>1&&t.state.data.updateCellState(a.ref,{isGhost:!1}),{trajectory:s}}),visuals:Ap};function hy(t,e){return(r,n,o)=>N(this,null,function*(){return{trajectory:yield r.state.data.build().to(n).apply(t,e,{tags:o?.trajectoryTags}).commit({revertOnError:!0})}})}var q_e={label:"PDB",description:"PDB",category:_u,stringExtensions:["pdb","ent"],parse:hy(de.Model.TrajectoryFromPDB),visuals:Ap},W_e={label:"PDBQT",description:"PDBQT",category:_u,stringExtensions:["pdbqt"],parse:hy(de.Model.TrajectoryFromPDB,{isPdbqt:!0}),visuals:Ap},X_e={label:"XYZ",description:"XYZ",category:_u,stringExtensions:["xyz"],parse:hy(de.Model.TrajectoryFromXYZ),visuals:Ap},Y_e={label:"GRO",description:"GRO",category:_u,stringExtensions:["gro"],binaryExtensions:[],parse:hy(de.Model.TrajectoryFromGRO),visuals:Ap},Q_e={label:"MOL",description:"MOL",category:_u,stringExtensions:["mol"],parse:hy(de.Model.TrajectoryFromMOL),visuals:Ap},K_e={label:"SDF",description:"SDF",category:_u,stringExtensions:["sdf","sd"],parse:hy(de.Model.TrajectoryFromSDF),visuals:Ap},$_e={label:"MOL2",description:"MOL2",category:_u,stringExtensions:["mol2"],parse:hy(de.Model.TrajectoryFromMOL2),visuals:Ap},$_=[["mmcif",j_e],["cifCore",H_e],["pdb",q_e],["pdbqt",W_e],["gro",Y_e],["xyz",X_e],["mol",Q_e],["sdf",K_e],["mol2",$_e]];var Z_e=["gz","zip"];function kp(t){let e=t,r="",n=e.lastIndexOf("?"),o=n!==-1?e.substring(n):"";e=e.substring(0,n===-1?e.length:n);let i=e.replace(/^.*[\\/]/,""),a=i.substring(0,i.lastIndexOf(".")),s=i.split("."),l=s.length>1?(s.pop()||"").toLowerCase():"",c=e.match(/^(.+):\/\/(.+)$/);c&&(r=c[1].toLowerCase(),e=c[2]||"");let u=e.substring(0,e.lastIndexOf("/")+1);if(Z_e.includes(l)){let d=e.length-l.length-1;l=(e.substr(0,d).split(".").pop()||"").toLowerCase();let m=a.length-l.length-1;a=a.substr(0,m)}return{path:e,name:i,ext:l,base:a,dir:u,protocol:r,query:o}}var $v="Topology";var J_e={label:"PSF",description:"PSF",category:$v,stringExtensions:["psf"],parse:(t,e)=>N(void 0,null,function*(){let r=t.state.data.build().to(e).apply(de.Data.ParsePsf,{},{state:{isGhost:!0}}),n=r.apply(de.Model.TopologyFromPsf);return yield r.commit(),{format:r.selector,topology:n.selector}})};var ePe={label:"PRMTOP",description:"PRMTOP",category:$v,stringExtensions:["prmtop","parm7"],parse:(t,e)=>N(void 0,null,function*(){let r=t.state.data.build().to(e).apply(de.Data.ParsePrmtop,{},{state:{isGhost:!0}}),n=r.apply(de.Model.TopologyFromPrmtop);return yield r.commit(),{format:r.selector,topology:n.selector}})};var tPe={label:"TOP",description:"TOP",category:$v,stringExtensions:["top"],parse:(t,e)=>N(void 0,null,function*(){let r=t.state.data.build().to(e).apply(de.Data.ParseTop,{},{state:{isGhost:!0}}),n=r.apply(de.Model.TopologyFromTop);return yield r.commit(),{format:r.selector,topology:n.selector}})},YZ=[["psf",J_e],["prmtop",ePe],["top",tPe]];var gy="Coordinates";var rPe={label:"DCD",description:"DCD",category:gy,binaryExtensions:["dcd"],parse:(t,e)=>t.state.data.build().to(e).apply(de.Model.CoordinatesFromDcd).commit()};var nPe={label:"XTC",description:"XTC",category:gy,binaryExtensions:["xtc"],parse:(t,e)=>t.state.data.build().to(e).apply(de.Model.CoordinatesFromXtc).commit()};var oPe={label:"TRR",description:"TRR",category:gy,binaryExtensions:["trr"],parse:(t,e)=>t.state.data.build().to(e).apply(de.Model.CoordinatesFromTrr).commit()};var iPe={label:"NCTRAJ",description:"NCTRAJ",category:gy,binaryExtensions:["nc","nctraj"],parse:(t,e)=>t.state.data.build().to(e).apply(de.Model.CoordinatesFromNctraj).commit()},QZ=[["dcd",rPe],["xtc",nPe],["trr",oPe],["nctraj",iPe]];var aPe=t=>{let e=t.config.get(Wt.Structure.DefaultRepresentationPreset)||Ms.auto.id;return g.Group({type:vm.getParams(void 0,"auto").type,representation:g.Select(e,t.builders.structure.representation.getPresets().map(r=>[r.id,r.display.name,r.display.group]),{description:"Which representation preset to use."}),representationParams:g.Group(oa.CommonParams,{isHidden:!0}),asTrajectory:g.Optional(g.Boolean(!1,{description:"Load all entries into a single trajectory."}))},{isExpanded:!1})},KZ={rcsb:g.Group({encoding:g.Select("bcif",g.arrayToOptions(["cif","bcif"]))},{label:"RCSB PDB",isFlat:!0}),pdbe:g.Group({variant:g.Select("updated-bcif",[["updated-bcif","Updated (bcif)"],["updated","Updated"],["archival","Archival"]])},{label:"PDBe",isFlat:!0}),pdbj:g.EmptyGroup({label:"PDBj"})};var sPe=Gi.build({from:X.Root,display:{name:"Download Structure",description:"Load a structure from the provided source and create its representation."},params:(t,e)=>{let r=aPe(e),n=e.config.get(Wt.Download.DefaultPdbProvider)||"pdbe";return{source:g.MappedStatic("pdb",{pdb:g.Group({provider:g.Group({id:g.Text("1tqn",{label:"PDB Id(s)",description:"One or more comma/space separated PDB ids."}),server:g.MappedStatic(n,KZ)},{pivot:"id"}),options:r},{isFlat:!0,label:"PDB"}),"pdb-dev":g.Group({provider:g.Group({id:g.Text("PDBDEV_00000001",{label:"PDB-Dev Id(s)",description:"One or more comma/space separated ids."}),encoding:g.Select("bcif",g.arrayToOptions(["cif","bcif"]))},{pivot:"id"}),options:r},{isFlat:!0,label:"PDB-Dev"}),swissmodel:g.Group({id:g.Text("Q9Y2I8",{label:"UniProtKB AC(s)",description:"One or more comma/space separated ACs."}),options:r},{isFlat:!0,label:"SWISS-MODEL",description:"Loads the best homology model or experimental structure"}),alphafolddb:g.Group({id:g.Text("Q8W3K0",{label:"UniProtKB AC(s)",description:"One or more comma/space separated ACs."}),options:r},{isFlat:!0,label:"AlphaFold DB",description:"Loads the predicted model if available"}),modelarchive:g.Group({id:g.Text("ma-bak-cepc-0003",{label:"Accession Code(s)",description:"One or more comma/space separated ACs."}),options:r},{isFlat:!0,label:"Model Archive"}),pubchem:g.Group({id:g.Text("2244,2245",{label:"PubChem ID",description:"One or more comma/space separated IDs."}),options:r},{isFlat:!0,label:"PubChem",description:"Loads 3D conformer from PubChem."}),url:g.Group({url:g.Url(""),format:g.Select("mmcif",g.arrayToOptions($_.map(o=>o[0]),o=>o)),isBinary:g.Boolean(!1),label:g.Optional(g.Text("")),options:r},{isFlat:!0,label:"URL"})})}}})(({params:t,state:e},r)=>ie.create("Download Structure",n=>N(void 0,null,function*(){r.behaviors.layout.leftPanelTabName.next("data");let o=t.source,i,a=!1,s="mmcif";switch(o.name){case"url":i=[{url:o.params.url,isBinary:o.params.isBinary,label:o.params.label||void 0}],s=o.params.format;break;case"pdb":i=yield o.params.provider.server.name==="pdbe"?lPe(o):o.params.provider.server.name==="pdbj"?cPe(o):o.params.provider.server.name==="rcsb"?uPe(o):ur(o),a=!!o.params.options.asTrajectory;break;case"pdb-dev":i=yield Od(o.params.provider.id,d=>{let m=d.toUpperCase().startsWith("PDBDEV_")?d:`PDBDEV_${d.padStart(8,"0")}`;return o.params.provider.encoding==="bcif"?`https://pdb-dev.wwpdb.org/bcif/${m.toUpperCase()}.bcif`:`https://pdb-dev.wwpdb.org/cif/${m.toUpperCase()}.cif`},d=>d.toUpperCase().startsWith("PDBDEV_")?d:`PDBDEV_${d.padStart(8,"0")}`,o.params.provider.encoding==="bcif"),a=!!o.params.options.asTrajectory;break;case"swissmodel":i=yield Od(o.params.id,d=>`https://swissmodel.expasy.org/repository/uniprot/${d.toUpperCase()}.pdb`,d=>`SWISS-MODEL: ${d}`,!1),a=!!o.params.options.asTrajectory,s="pdb";break;case"alphafolddb":i=yield Od(o.params.id,d=>N(void 0,null,function*(){let m=`https://www.alphafold.ebi.ac.uk/api/prediction/${d.toUpperCase()}`,p=yield r.runTask(r.fetch({url:m,type:"json"}));if(Array.isArray(p)&&p.length>0)return p[0].cifUrl;throw new Error(`No AlphaFold DB entry for '${d}'`)}),d=>`AlphaFold DB: ${d}`,!1),a=!!o.params.options.asTrajectory,s="mmcif";break;case"modelarchive":i=yield Od(o.params.id,d=>`https://www.modelarchive.org/doi/10.5452/${d.toLowerCase()}.cif`,d=>`Model Archive: ${d}`,!1),a=!!o.params.options.asTrajectory,s="mmcif";break;case"pubchem":i=yield Od(o.params.id,d=>`https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/CID/${d.trim()}/record/SDF/?record_type=3d`,d=>`PubChem: ${d}`,!1),a=!!o.params.options.asTrajectory,s="mol";break;default:ur(o)}let l=t.source.params.options.representation||r.config.get(Wt.Structure.DefaultRepresentationPreset)||Ms.auto.id,c=l!==Ms.empty.id,u=o.params.options.type.name==="auto"?void 0:o.params.options.type;yield e.transaction(()=>N(void 0,null,function*(){if(i.length>0&&a){let d=yield r.builders.data.downloadBlob({sources:i.map((p,h)=>({id:""+h,url:p.url,isBinary:p.isBinary})),maxConcurrency:6},{state:{isGhost:!0}}),m=yield r.builders.structure.parseTrajectory(d,{formats:i.map((p,h)=>({id:""+h,format:"cif"}))});yield r.builders.structure.hierarchy.applyPreset(m,"default",{structure:u,showUnitcell:c,representationPreset:l,representationPresetParams:t.source.params.options.representationParams})}else for(let d of i){let m=yield r.builders.data.download(d,{state:{isGhost:!0}}),p=r.dataFormats.get(s);if(!p)throw new Error("unknown file format");let h=yield r.builders.structure.parseTrajectory(m,p);yield r.builders.structure.hierarchy.applyPreset(h,"default",{structure:u,showUnitcell:c,representationPreset:l,representationPresetParams:t.source.params.options.representationParams})}})).runInContext(n)})));function Od(t,e,r,n){return N(this,null,function*(){let o=t.split(/[,\s]/).map(a=>a.trim()).filter(a=>!!a&&(a.length>=4||/^[1-9][0-9]*$/.test(a))),i=[];for(let a of o)i.push({url:Wr.Url(yield e(a)),isBinary:n,label:r(a)});return i})}function lPe(t){return N(this,null,function*(){if(t.name!=="pdb"||t.params.provider.server.name!=="pdbe")throw new Error("expected pdbe");return t.params.provider.server.params.variant==="updated"?Od(t.params.provider.id,e=>`https://www.ebi.ac.uk/pdbe/static/entry/${e.toLowerCase()}_updated.cif`,e=>`PDBe: ${e} (updated cif)`,!1):t.params.provider.server.params.variant==="updated-bcif"?Od(t.params.provider.id,e=>`https://www.ebi.ac.uk/pdbe/entry-files/download/${e.toLowerCase()}.bcif`,e=>`PDBe: ${e} (updated cif)`,!0):Od(t.params.provider.id,e=>`https://www.ebi.ac.uk/pdbe/static/entry/${e.toLowerCase()}.cif`,e=>`PDBe: ${e} (cif)`,!1)})}function cPe(t){return N(this,null,function*(){if(t.name!=="pdb"||t.params.provider.server.name!=="pdbj")throw new Error("expected pdbj");return Od(t.params.provider.id,e=>`https://data.pdbjbk1.pdbj.org/pub/pdb/data/structures/divided/mmCIF/${e.toLowerCase().substring(1,3)}/${e.toLowerCase()}.cif`,e=>`PDBj: ${e} (cif)`,!1)})}function uPe(t){return N(this,null,function*(){if(t.name!=="pdb"||t.params.provider.server.name!=="rcsb")throw new Error("expected rcsb");return t.params.provider.server.params.encoding==="cif"?Od(t.params.provider.id,e=>`https://files.rcsb.org/download/${e.toUpperCase()}.cif`,e=>`RCSB PDB: ${e} (cif)`,!1):Od(t.params.provider.id,e=>`https://models.rcsb.org/${e.toUpperCase()}.bcif`,e=>`RCSB PDB: ${e} (bcif)`,!0)})}var pS=Gi.build({display:{name:"Update Trajectory"},params:{action:g.Select("advance",g.arrayToOptions(["advance","reset"])),by:g.Optional(g.Numeric(1,{min:-1,max:1,step:1}))}})(({params:t,state:e})=>{let r=e.selectQ(o=>o.ofTransformer(de.Model.ModelFromTrajectory)),n=e.build();if(t.action==="reset")for(let o of r)n.to(o).update({modelIndex:0});else for(let o of r){let i=lt.findAncestorOfType(e.tree,e.cells,o.transform.ref,X.Molecule.Trajectory);if(!i||!i.obj)continue;let a=i.obj;n.to(o).update(s=>{let l=(s.modelIndex+t.by)%a.data.frameCount;return l<0&&(l+=a.data.frameCount),{modelIndex:l}})}return e.updateTree(n)}),dPe=Gi.build({display:{name:"Custom Model Properties",description:"Enable parameters for custom properties of the model."},from:X.Molecule.Model,params(t,e){return e.customModelProperties.getParams(t?.data)},isApplicable(t,e,r){return e.transformer!==LR}})(({ref:t,params:e},r)=>r.builders.structure.insertModelProperties(t,e)),mPe=Gi.build({display:{name:"Custom Structure Properties",description:"Enable parameters for custom properties of the structure."},from:X.Molecule.Structure,params(t,e){return e.customStructureProperties.getParams(t?.data)},isApplicable(t,e,r){return e.transformer!==BR}})(({ref:t,params:e},r)=>r.builders.structure.insertStructureProperties(t,e)),pPe=Gi.build({display:{name:"Add Trajectory",description:"Add trajectory from existing model/topology and coordinates."},from:X.Root,params(t,e){let r=e.state.data,o=[...r.selectQ(s=>s.rootsOfType(X.Molecule.Model)),...r.selectQ(s=>s.rootsOfType(X.Molecule.Topology))].map(s=>[s.transform.ref,s.obj.label]),a=r.selectQ(s=>s.rootsOfType(X.Molecule.Coordinates)).map(s=>[s.transform.ref,s.obj.label]);return{model:g.Select(o.length?o[0][0]:"",o),coordinates:g.Select(a.length?a[0][0]:"",a)}}})(({params:t,state:e},r)=>ie.create("Add Trajectory",n=>e.transaction(()=>N(void 0,null,function*(){let o=[t.model,t.coordinates],i=e.build().toRoot().apply(Nw,{modelRef:t.model,coordinatesRef:t.coordinates},{dependsOn:o}).apply(de.Model.ModelFromTrajectory,{modelIndex:0});yield e.updateTree(i).runInContext(n);let a=yield r.builders.structure.createStructure(i.selector);yield r.builders.structure.representation.applyPreset(a,"auto")})).runInContext(n))),fPe=Gi.build({display:{name:"Load Trajectory",description:"Load trajectory of model/topology and coordinates from URL or file."},from:X.Root,params(t,e){let{options:r}=e.dataFormats,n=r.filter(s=>s[2]===_u||s[2]===$v),o=r.filter(s=>s[2]===gy),i=[],a=[];for(let{provider:s}of e.dataFormats.list)s.category===_u||s.category===$v?(s.binaryExtensions&&i.push(...s.binaryExtensions),s.stringExtensions&&i.push(...s.stringExtensions)):s.category===gy&&(s.binaryExtensions&&a.push(...s.binaryExtensions),s.stringExtensions&&a.push(...s.stringExtensions));return{source:g.MappedStatic("file",{url:g.Group({model:g.Group({url:g.Url(""),format:g.Select(n[0][0],n),isBinary:g.Boolean(!1)},{isExpanded:!0}),coordinates:g.Group({url:g.Url(""),format:g.Select(o[0][0],o)},{isExpanded:!0})},{isFlat:!0}),file:g.Group({model:g.File({accept:i.map(s=>`.${s}`).join(","),label:"Model"}),coordinates:g.File({accept:a.map(s=>`.${s}`).join(","),label:"Coordinates"})},{isFlat:!0})},{options:[["url","URL"],["file","File"]]})}}})(({params:t,state:e},r)=>ie.create("Load Trajectory",n=>e.transaction(()=>N(void 0,null,function*(){let o=t.source;if(o.name==="file"&&(o.params.model===null||o.params.coordinates===null)){r.log.error("No file(s) selected");return}if(o.name==="url"&&(!o.params.model||!o.params.coordinates)){r.log.error("No URL(s) given");return}let i=(s,l,c)=>N(void 0,null,function*(){let u=yield r.builders.data.download({url:s,isBinary:c}),d=r.dataFormats.get(l);if(!d){r.log.warn(`LoadTrajectory: could not find data provider for '${l}'`);return}return d.parse(r,u)}),a=s=>N(void 0,null,function*(){var l,c,u;if(!s)throw new Error("No file selected");let d=kp((c=(l=s.file)===null||l===void 0?void 0:l.name)!==null&&c!==void 0?c:""),m=r.dataFormats.binaryExtensions.has(d.ext),{data:p}=yield r.builders.data.readFile({file:s,isBinary:m}),h=r.dataFormats.auto(d,(u=p.cell)===null||u===void 0?void 0:u.obj);if(!h){r.log.warn(`LoadTrajectory: could not find data provider for '${d.ext}'`),yield r.state.data.build().delete(p).commit();return}return h.parse(r,p)});try{let s=o.name==="url"?yield i(o.params.model.url,o.params.model.format,o.params.model.isBinary):yield a(o.params.model),l;"trajectory"in s?l=yield e.build().to(s.trajectory).apply(RR,{modelIndex:0}).commit():l=s.topology;let c=o.name==="url"?yield i(o.params.coordinates.url,o.params.coordinates.format,!0):yield a(o.params.coordinates),u=[l.ref,c.ref],d=e.build().toRoot().apply(Nw,{modelRef:l.ref,coordinatesRef:c.ref},{dependsOn:u}).apply(de.Model.ModelFromTrajectory,{modelIndex:0});yield e.updateTree(d).runInContext(n);let m=yield r.builders.structure.createStructure(d.selector);yield r.builders.structure.representation.applyPreset(m,"auto")}catch(s){console.error(s),r.log.error("Error loading trajectory")}})).runInContext(n)));var JL={};ua(JL,{AssignColorVolume:()=>ZL,DownloadDensity:()=>hPe});var hPe=Gi.build({from:X.Root,display:{name:"Download Density",description:"Load a density from the provided source and create its default visual."},params:(t,e)=>{let{options:r}=e.dataFormats;return{source:g.MappedStatic("pdb-xray",{"pdb-xray":g.Group({provider:g.Group({id:g.Text("1tqn",{label:"Id"}),server:g.Select("rcsb",[["pdbe","PDBe"],["rcsb","RCSB PDB"]])},{pivot:"id"}),type:g.Select("2fofc",[["2fofc","2Fo-Fc"],["fofc","Fo-Fc"]])},{isFlat:!0}),"pdb-xray-ds":g.Group({provider:g.Group({id:g.Text("1tqn",{label:"Id"}),server:g.Select("pdbe",[["pdbe","PDBe"],["rcsb","RCSB PDB"]])},{pivot:"id"}),detail:g.Numeric(3,{min:0,max:6,step:1},{label:"Detail"})},{isFlat:!0}),"pdb-emd-ds":g.Group({provider:g.Group({id:g.Text("emd-8004",{label:"Id"}),server:g.Select("pdbe",[["pdbe","PDBe"],["rcsb","RCSB PDB"]])},{pivot:"id"}),detail:g.Numeric(3,{min:0,max:6,step:1},{label:"Detail"})},{isFlat:!0}),url:g.Group({url:g.Url(""),isBinary:g.Boolean(!1),format:g.Select("auto",r)},{isFlat:!0})},{options:[["pdb-xray","PDB X-ray maps"],["pdb-emd-ds","PDB EMD Density Server"],["pdb-xray-ds","PDB X-ray Density Server"],["url","URL"]]})}}})(({params:t},e)=>ie.create("Download Density",r=>N(void 0,null,function*(){var n,o;let i=t.source,a,s;switch(i.name){case"url":a=i.params;break;case"pdb-xray":a=i.params.provider.server==="pdbe"?{url:Wr.Url(i.params.type==="2fofc"?`https://www.ebi.ac.uk/pdbe/coordinates/files/${i.params.provider.id.toLowerCase()}.ccp4`:`https://www.ebi.ac.uk/pdbe/coordinates/files/${i.params.provider.id.toLowerCase()}_diff.ccp4`),isBinary:!0,label:`PDBe X-ray map: ${i.params.provider.id}`}:{url:Wr.Url(i.params.type==="2fofc"?`https://edmaps.rcsb.org/maps/${i.params.provider.id.toLowerCase()}_2fofc.dsn6`:`https://edmaps.rcsb.org/maps/${i.params.provider.id.toLowerCase()}_fofc.dsn6`),isBinary:!0,label:`RCSB X-ray map: ${i.params.provider.id}`};break;case"pdb-emd-ds":a=i.params.provider.server==="pdbe"?{url:Wr.Url(`https://www.ebi.ac.uk/pdbe/densities/emd/${i.params.provider.id.toLowerCase()}/cell?detail=${i.params.detail}`),isBinary:!0,label:`PDBe EMD Density Server: ${i.params.provider.id}`}:{url:Wr.Url(`https://maps.rcsb.org/em/${i.params.provider.id.toLowerCase()}/cell?detail=${i.params.detail}`),isBinary:!0,label:`RCSB PDB EMD Density Server: ${i.params.provider.id}`};break;case"pdb-xray-ds":a=i.params.provider.server==="pdbe"?{url:Wr.Url(`https://www.ebi.ac.uk/pdbe/densities/x-ray/${i.params.provider.id.toLowerCase()}/cell?detail=${i.params.detail}`),isBinary:!0,label:`PDBe X-ray Density Server: ${i.params.provider.id}`}:{url:Wr.Url(`https://maps.rcsb.org/x-ray/${i.params.provider.id.toLowerCase()}/cell?detail=${i.params.detail}`),isBinary:!0,label:`RCSB PDB X-ray Density Server: ${i.params.provider.id}`};break;default:ur(i)}let l=yield e.builders.data.download(a),c;switch(i.name){case"url":a=i.params,s=i.params.format==="auto"?e.dataFormats.auto(kp(Wr.getUrl(a.url)),(n=l.cell)===null||n===void 0?void 0:n.obj):e.dataFormats.get(i.params.format);break;case"pdb-xray":c=i.params.provider.id,s=i.params.provider.server==="pdbe"?e.dataFormats.get("ccp4"):e.dataFormats.get("dsn6");break;case"pdb-emd-ds":case"pdb-xray-ds":c=i.params.provider.id,s=e.dataFormats.get("dscif");break;default:ur(i)}if(!s){e.log.warn("DownloadDensity: Format provider not found.");return}let u=yield s.parse(e,l,{entryId:c});yield(o=s.visuals)===null||o===void 0?void 0:o.call(s,e,u)}))),ZL=Gi.build({display:{name:"Assign Volume Colors",description:"Assigns another volume to be available for coloring."},from:X.Volume.Data,isApplicable(t){return!t.data.colorVolume},params(t,e){let r=e.state.data.select(lt.Generators.root.subtree().ofType(X.Volume.Data).filter(n=>{var o;return!!n.obj&&!(!((o=n.obj)===null||o===void 0)&&o.data.colorVolume)&&n.obj!==t}));return r.length===0?{ref:g.Text("",{isHidden:!0,label:"Volume"})}:{ref:g.Select(r[0].transform.ref,r.map(n=>[n.transform.ref,n.obj.label]),{label:"Volume"})}}})(({ref:t,params:e,state:r},n)=>n.build().to(t).apply(de.Volume.AssignColorVolume,{ref:e.ref},{dependsOn:[e.ref]}).commit());var eB={};ua(eB,{DownloadFile:()=>gPe,OpenFiles:()=>fS});function Z_(t,e,r,n){return N(this,null,function*(){var o,i,a,s;let l=kp((i=(o=t.file)===null||o===void 0?void 0:o.name)!==null&&i!==void 0?i:""),c=e.dataFormats.binaryExtensions.has(l.ext),{data:u}=yield e.builders.data.readFile({file:t,isBinary:c}),d=r==="auto"?e.dataFormats.auto(l,(a=u.cell)===null||a===void 0?void 0:a.obj):e.dataFormats.get(r);if(!d){e.log.warn(`OpenFiles: could not find data provider for '${l.ext}'`),yield e.state.data.build().delete(u).commit();return}let m=yield d.parse(e,u);n&&(yield(s=d.visuals)===null||s===void 0?void 0:s.call(d,e,m))})}var fS=Gi.build({display:{name:"Open Files",description:"Load one or more files and optionally create default visuals"},from:X.Root,params:(t,e)=>{let{extensions:r,options:n}=e.dataFormats;return{files:g.FileList({accept:Array.from(r.values()).map(o=>`.${o}`).join(",")+",.gz,.zip",multiple:!0}),format:g.MappedStatic("auto",{auto:g.EmptyGroup(),specific:g.Select(n[0][0],n)}),visuals:g.Boolean(!0,{description:"Add default visuals"})}}})(({params:t,state:e},r)=>ie.create("Open Files",n=>N(void 0,null,function*(){r.behaviors.layout.leftPanelTabName.next("data"),yield e.transaction(()=>N(void 0,null,function*(){if(t.files===null){r.log.error("No file(s) selected");return}for(let o of t.files)try{if(o.file&&o.name.toLowerCase().endsWith(".zip")){let i=yield AA(n,yield o.file.arrayBuffer());for(let[a,s]of Object.entries(i)){if(!(s instanceof Uint8Array)||s.length===0)continue;let l=Wr.File(new File([s],a));yield Z_(l,r,"auto",t.visuals)}}else{let i=t.format.name==="auto"?"auto":t.format.params;yield Z_(o,r,i,t.visuals)}}catch(i){console.error(i),r.log.error(`Error opening file '${o.name}'`)}})).runInContext(n)}))),gPe=Gi.build({display:{name:"Download File",description:"Load one or more file from an URL"},from:X.Root,params:(t,e)=>{let r=[...e.dataFormats.options,["zip","Zip"],["gzip","Gzip"]];return{url:g.Url(""),format:g.Select(r[0][0],r),isBinary:g.Boolean(!1),visuals:g.Boolean(!0,{description:"Add default visuals"})}}})(({params:t,state:e},r)=>ie.create("Open Files",n=>N(void 0,null,function*(){r.behaviors.layout.leftPanelTabName.next("data"),yield e.transaction(()=>N(void 0,null,function*(){var o,i,a;try{if(t.format==="zip"||t.format==="gzip"){let s=yield r.builders.data.download({url:t.url,isBinary:!0});if(t.format==="zip"){let l=yield AA(n,((o=s.obj)===null||o===void 0?void 0:o.data).buffer);for(let[c,u]of Object.entries(l)){if(!(u instanceof Uint8Array)||u.length===0)continue;let d=Wr.File(new File([u],c));yield Z_(d,r,"auto",t.visuals)}}else{let l=Wr.getUrl(t.url),c=kp(l).name;yield Z_(Wr.File(new File([(i=s.obj)===null||i===void 0?void 0:i.data],c)),r,"auto",t.visuals)}}else{let s=r.dataFormats.get(t.format);if(!s){r.log.warn(`DownloadFile: could not find data provider for '${t.format}'`);return}let l=yield r.builders.data.download({url:t.url,isBinary:t.isBinary}),c=yield s.parse(r,l);t.visuals&&(yield(a=s.visuals)===null||a===void 0?void 0:a.call(s,r,c))}}catch(s){console.error(s),r.log.error(`Error downloading '${typeof t.url=="string"?t.url:t.url.url}'`)}})).runInContext(n)})));var wh={Structure:$L,Volume:JL,DataFormat:eB};var $Z=As.create({name:"built-in.animate-state-interpolation",display:{name:"Animate State (experimental)"},params:()=>({transtionDurationInMs:g.Numeric(2e3,{min:100,max:3e4,step:10})}),canApply(t){return{canApply:t.managers.snapshot.state.entries.size>1}},initialState:()=>({}),apply(t,e,r){return N(this,null,function*(){let n=r.plugin.managers.snapshot.state.entries;if(n.size<2)return{kind:"finished"};let o=e.current%r.params.transtionDurationInMs/r.params.transtionDurationInMs,i=Math.floor(e.current/r.params.transtionDurationInMs)%n.size,a=Math.ceil(e.current/r.params.transtionDurationInMs);a===i&&a++,a=a%n.size;let s=n.get(i).snapshot,l=n.get(a).snapshot;if(!s.data||!l.data)return{kind:"skip"};let c=s.data.tree.transforms,u=l.data.tree.transforms,d=r.plugin.state.data,m=d.build();for(let p of c)for(let h of u){if(h.ref!==p.ref||h.version===p.version)continue;let f=kt.fromJSON(p),b=kt.fromJSON(h),v=d.cells.get(p.ref);if(!v)continue;let x;f.transformer.definition.interpolate?x=f.transformer.definition.interpolate(f.params,b.params,o,r.plugin):x=o<=.5?f.params:b.params,ep(v,x)||m.to(p.ref).update(x)}return yield Re.State.Update(r.plugin,{state:d,tree:m,options:{doNotLogTiming:!0}}),{kind:"next",state:{}}})}});var ZZ=As.create({name:"built-in.animate-structure-spin",display:{name:"Spin Structure"},isExportable:!0,params:()=>({durationInMs:g.Numeric(3e3,{min:100,max:1e4,step:100})}),initialState:()=>({t:0}),getDuration:t=>({kind:"fixed",durationMs:t.durationInMs}),setup(t,e,r){return N(this,null,function*(){let n=r.state.data,o=n.select(lt.Generators.ofType(X.Molecule.Structure.Representation3D)),i=n.build(),a=!1;for(let s of o)n.select(lt.Generators.ofTransformer(de.Representation.SpinStructureRepresentation3D,s.transform.ref)).length>0||(a=!0,i.to(s.transform.ref).apply(de.Representation.SpinStructureRepresentation3D,{t:0},{tags:"animate-structure-spin"}));if(a)return i.commit({doNotUpdateCurrent:!0})})},teardown(t,e,r){let n=r.state.data,o=n.select(lt.Generators.ofType(X.Molecule.Structure.Representation3DState).withTag("animate-structure-spin"));if(o.length===0)return;let i=n.build();for(let a of o)i.delete(a.transform.ref);return i.commit()},apply(t,e,r){return N(this,null,function*(){var n;let o=r.plugin.state.data,i=o.select(lt.Generators.ofTransformer(de.Representation.SpinStructureRepresentation3D));if(i.length===0)return{kind:"finished"};let a=o.build(),s=(e.current-e.lastApplied)/r.params.durationInMs,l=(t.t+s)%1;for(let c of i)a.to(c).update(U(w({},(n=c.params)===null||n===void 0?void 0:n.values),{t:l}));return yield Re.State.Update(r.plugin,{state:o,tree:a,options:{doNotLogTiming:!0}}),{kind:"next",state:{t:l}}})}});var J_=y(),JZ=y(),eJ=xn(),tJ=As.create({name:"built-in.animate-camera-rock",display:{name:"Camera Rock",description:"Rock the 3D scene around the x-axis in view space"},isExportable:!0,params:()=>({durationInMs:g.Numeric(4e3,{min:100,max:2e4,step:100}),speed:g.Numeric(1,{min:1,max:10,step:1},{description:"How many times to rock from side to side."}),angle:g.Numeric(10,{min:0,max:180,step:1},{description:"How many degrees to rotate in each direction."})}),initialState:(t,e)=>({snapshot:e.canvas3d.camera.getSnapshot()}),getDuration:t=>({kind:"fixed",durationMs:t.durationInMs}),teardown:(t,e,r)=>{var n;(n=r.canvas3d)===null||n===void 0||n.requestCameraReset({snapshot:e.snapshot,durationMs:0})},apply(t,e,r){return N(this,null,function*(){var n,o;if(e.current===0)return{kind:"next",state:t};let i=t.snapshot;if(i.radiusMax<1e-4)return{kind:"finished"};let a=e.animation?((n=e.animation)===null||n===void 0?void 0:n.currentFrame)/(e.animation.frameCount+1):Wo(e.current/r.params.durationInMs,0,1),s=Math.sin(a*r.params.speed*Math.PI*2)*or(r.params.angle);y.sub(J_,i.position,i.target),y.normalize(JZ,i.up),xn.setAxisAngle(eJ,JZ,s),y.transformQuat(J_,J_,eJ);let l=y.add(y(),i.target,J_);return(o=r.plugin.canvas3d)===null||o===void 0||o.requestCameraReset({snapshot:U(w({},i),{position:l}),durationMs:0}),a>=.99999?{kind:"finished"}:{kind:"next",state:t}})}});var Ht;(function(t){function e(n,o){return{action:n,customControl:o&&o.customControl,autoUpdate:o&&o.autoUpdate}}t.Action=e;function r(n,o={}){return{transformer:n,defaultParams:o}}t.Behavior=r})(Ht||(Ht={}));var rJ=()=>({actions:[Ht.Action(wh.Structure.DownloadStructure),Ht.Action(wh.Volume.DownloadDensity),Ht.Action(wh.DataFormat.DownloadFile),Ht.Action(wh.DataFormat.OpenFiles),Ht.Action(wh.Structure.LoadTrajectory),Ht.Action(wh.Structure.EnableModelCustomProps),Ht.Action(wh.Structure.EnableStructureCustomProps),Ht.Action(q1),Ht.Action(KW),Ht.Action(W1),Ht.Action(de.Data.Download),Ht.Action(de.Data.ParseCif),Ht.Action(de.Data.ParseCcp4),Ht.Action(de.Data.ParseDsn6),Ht.Action(de.Model.TrajectoryFromMmCif),Ht.Action(de.Model.TrajectoryFromCifCore),Ht.Action(de.Model.TrajectoryFromPDB),Ht.Action(de.Model.TransformStructureConformation),Ht.Action(de.Model.StructureFromModel),Ht.Action(de.Model.StructureFromTrajectory),Ht.Action(de.Model.ModelFromTrajectory),Ht.Action(de.Model.StructureSelectionFromScript),Ht.Action(de.Representation.StructureRepresentation3D),Ht.Action(de.Representation.StructureSelectionsDistance3D),Ht.Action(de.Representation.StructureSelectionsAngle3D),Ht.Action(de.Representation.StructureSelectionsDihedral3D),Ht.Action(de.Representation.StructureSelectionsLabel3D),Ht.Action(de.Representation.StructureSelectionsOrientation3D),Ht.Action(de.Representation.ModelUnitcell3D),Ht.Action(de.Representation.StructureBoundingBox3D),Ht.Action(de.Representation.ExplodeStructureRepresentation3D),Ht.Action(de.Representation.SpinStructureRepresentation3D),Ht.Action(de.Representation.UnwindStructureAssemblyRepresentation3D),Ht.Action(de.Representation.OverpaintStructureRepresentation3DFromScript),Ht.Action(de.Representation.TransparencyStructureRepresentation3DFromScript),Ht.Action(de.Representation.ClippingStructureRepresentation3DFromScript),Ht.Action(de.Representation.SubstanceStructureRepresentation3DFromScript),Ht.Action(de.Representation.ThemeStrengthRepresentation3D),Ht.Action(ZL),Ht.Action(de.Volume.VolumeFromCcp4),Ht.Action(de.Volume.VolumeFromDsn6),Ht.Action(de.Volume.VolumeFromCube),Ht.Action(de.Volume.VolumeFromDx),Ht.Action(de.Representation.VolumeRepresentation3D)],behaviors:[Ht.Behavior(cl.Representation.HighlightLoci),Ht.Behavior(cl.Representation.SelectLoci),Ht.Behavior(cl.Representation.DefaultLociLabelProvider),Ht.Behavior(cl.Representation.FocusLoci),Ht.Behavior(cl.Camera.FocusLoci),Ht.Behavior(cl.Camera.CameraAxisHelper),Ht.Behavior(cl.Camera.CameraControls),Ht.Behavior(my),Ht.Behavior(cl.CustomProps.StructureInfo),Ht.Behavior(cl.CustomProps.AccessibleSurfaceArea),Ht.Behavior(cl.CustomProps.BestDatabaseSequenceMapping),Ht.Behavior(cl.CustomProps.Interactions),Ht.Behavior(cl.CustomProps.SecondaryStructure),Ht.Behavior(cl.CustomProps.ValenceModel),Ht.Behavior(cl.CustomProps.CrossLinkRestraint)],animations:[$Y,KY,tJ,JY,XY,ZZ,$Z]});var Os=Ot(Or());var vy=Ot(Or()),Jv=Ot(Po());var Kr=Ot(Or()),Rp=Ot(Po());var ye=Ot(Or());function pr(t){return t.svg?(0,ye.jsx)("span",{className:`msp-icon msp-material-icon${t.inline?" msp-icon-inline":""}`,title:t.title,style:t.style,children:(0,ye.jsx)(t.svg,{})}):null}var oP=(0,ye.jsx)("circle",{r:"6px",id:"circle-left",cy:"12px",cx:"8px",strokeWidth:"1px"}),iP=(0,ye.jsx)("circle",{r:"6px",id:"circle-right",cy:"12px",cx:"16px",strokeWidth:"1px"}),NPe=(0,ye.jsxs)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:[(0,ye.jsxs)("defs",{children:[oP,iP]}),(0,ye.jsxs)("g",{children:[(0,ye.jsx)("use",{href:"#circle-left",className:"msp-shape-filled"}),(0,ye.jsx)("use",{href:"#circle-right",className:"msp-shape-filled"}),(0,ye.jsx)("use",{href:"#circle-left",className:"msp-shape-empty"})]})]});function gS(){return NPe}var VPe=(0,ye.jsxs)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:[(0,ye.jsxs)("defs",{children:[oP,iP,(0,ye.jsxs)("mask",{id:"mask-left",children:[(0,ye.jsx)("use",{href:"#circle-left",fill:"white",stroke:"white"}),(0,ye.jsx)("use",{href:"#circle-right",fill:"black",strokeWidth:"0px",stroke:"white"})]})]}),(0,ye.jsxs)("g",{children:[(0,ye.jsx)("use",{href:"#circle-left",className:"msp-shape-filled",mask:"url(#mask-left)"}),(0,ye.jsx)("use",{href:"#circle-right",className:"msp-shape-empty"})]})]});function yS(){return VPe}var zPe=(0,ye.jsxs)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:[(0,ye.jsxs)("defs",{children:[oP,iP,(0,ye.jsx)("clipPath",{id:"clip-left",children:(0,ye.jsx)("use",{href:"#circle-right"})})]}),(0,ye.jsxs)("g",{children:[(0,ye.jsx)("use",{href:"#circle-left",className:"msp-shape-filled",clipPath:"url(#clip-left)"}),(0,ye.jsx)("use",{href:"#circle-left",className:"msp-shape-empty"}),(0,ye.jsx)("use",{href:"#circle-right",className:"msp-shape-empty"})]})]});function vS(){return zPe}var UPe=(0,ye.jsxs)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:[(0,ye.jsxs)("defs",{children:[oP,iP]}),(0,ye.jsxs)("g",{children:[(0,ye.jsx)("use",{href:"#circle-left",className:"msp-shape-empty"}),(0,ye.jsx)("use",{href:"#circle-right",className:"msp-shape-filled"})]})]});function yy(){return UPe}var GPe=(0,ye.jsx)("svg",{width:"17px",height:"17px",viewBox:"0 0 299.463 299.463",strokeWidth:"6px",children:(0,ye.jsx)("g",{children:(0,ye.jsx)("path",{d:"M256.851,173.832v-48.201c22.916-4.918,34.151-30.668,22.556-50.771c-11.547-20.004-39.486-23.251-55.242-5.844 l-41.746-24.106C189.618,22.603,172.861,0,149.734,0c-23.132,0-39.881,22.609-32.685,44.911L75.305,69.016 C59.522,51.586,31.597,54.88,20.061,74.863c-11.63,20.163-0.298,45.862,22.557,50.769v48.2 c-22.821,4.898-34.195,30.591-22.556,50.771c11.529,19.972,39.454,23.285,55.242,5.845l41.746,24.106 c-7.199,22.308,9.559,44.911,32.685,44.911c23.132,0,39.88-22.609,32.685-44.911l41.745-24.106 c15.817,17.469,43.73,14.099,55.242-5.844c0,0,0-0.001,0.001-0.002c4.587-7.953,5.805-17.213,3.431-26.076 C279.392,185.657,269.129,176.461,256.851,173.832z M249.62,72.088c20.568,0,27.428,27.191,10.008,37.239 c-0.003,0.002-0.006,0.003-0.009,0.005c-10.04,5.81-22.85,1.762-27.877-8.475C225.206,87.548,234.938,72.088,249.62,72.088z M149.734,14.4c11.005,0,19.958,8.954,19.958,19.959c0,11.127-9.077,19.958-19.958,19.958c-10.95,0-19.958-8.9-19.958-19.958 C129.776,23.354,138.729,14.4,149.734,14.4z M39.84,109.328c-17.451-10.067-10.534-37.24,10.01-37.24 c15.311,0,24.922,16.653,17.251,29.942C61.681,111.397,49.517,114.925,39.84,109.328z M59.802,224.702 c-9.535,5.503-21.768,2.229-27.268-7.298c-7.639-13.242,1.887-29.945,17.236-29.945c0.013,0,0.027,0,0.04,0 C70.07,187.48,77.49,214.469,59.802,224.702z M149.734,285.062c-11.005,0-19.958-8.954-19.958-19.958 c0-11.127,9.077-19.958,19.958-19.958c10.954,0,19.958,8.903,19.958,19.958C169.693,276.109,160.74,285.062,149.734,285.062z M216.953,217.982l-41.727,24.095c-13.778-15.22-37.459-14.94-50.983,0l-41.728-24.096c6.196-19.289-5.541-39.835-25.498-44.149 V125.63c19.752-4.268,31.762-24.65,25.498-44.149l41.727-24.095c13.629,15.055,37.32,15.093,50.983,0l41.728,24.096 c-6.196,19.29,5.534,39.835,25.498,44.149v48.202C222.61,178.123,210.721,198.581,216.953,217.982z M266.935,217.404 c-5.501,9.528-17.732,12.802-27.261,7.302c-17.682-10.23-10.301-37.247,10.032-37.247 C264.984,187.459,274.602,204.112,266.935,217.404z"})})});function bJ(){return GPe}var jPe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,ye.jsx)("path",{d:"M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z"})});function bS(){return jPe}var gFt=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,ye.jsx)("path",{d:"M17,22V20H20V17H22V20.5C22,20.89 21.84,21.24 21.54,21.54C21.24,21.84 20.89,22 20.5,22H17M7,22H3.5C3.11,22 2.76,21.84 2.46,21.54C2.16,21.24 2,20.89 2,20.5V17H4V20H7V22M17,2H20.5C20.89,2 21.24,2.16 21.54,2.46C21.84,2.76 22,3.11 22,3.5V7H20V4H17V2M7,2V4H4V7H2V3.5C2,3.11 2.16,2.76 2.46,2.46C2.76,2.16 3.11,2 3.5,2H7M13,17.25L17,14.95V10.36L13,12.66V17.25M12,10.92L16,8.63L12,6.28L8,8.63L12,10.92M7,14.95L11,17.25V12.66L7,10.36V14.95M18.23,7.59C18.73,7.91 19,8.34 19,8.91V15.23C19,15.8 18.73,16.23 18.23,16.55L12.75,19.73C12.25,20.05 11.75,20.05 11.25,19.73L5.77,16.55C5.27,16.23 5,15.8 5,15.23V8.91C5,8.34 5.27,7.91 5.77,7.59L11.25,4.41C11.5,4.28 11.75,4.22 12,4.22C12.25,4.22 12.5,4.28 12.75,4.41L18.23,7.59Z"})});var yFt=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,ye.jsx)("path",{d:"M16,4L9,8.04V15.96L16,20L23,15.96V8.04M16,6.31L19.8,8.5L16,10.69L12.21,8.5M0,7V9H7V7M11,10.11L15,12.42V17.11L11,14.81M21,10.11V14.81L17,17.11V12.42M2,11V13H7V11M4,15V17H7V15"})});var HPe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M10.07,14.27C10.57,14.03 11.16,14.25 11.4,14.75L13.7,19.74L15.5,18.89L13.19,13.91C12.95,13.41 13.17,12.81 13.67,12.58L13.95,12.5L16.25,12.05L8,5.12V15.9L9.82,14.43L10.07,14.27M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z"})});function qPe(){return HPe}var vFt=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,ye.jsx)("path",{fill:"currentColor",d:"M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z"})});var bFt=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,ye.jsx)("path",{fill:"currentColor",d:"M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M11,18H13V15.87C14.73,15.43 16,13.86 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13.86 9.27,15.43 11,15.87V18Z"})});var WPe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{fill:"currentColor",d:"M7.5,5.6L5,7L6.4,4.5L5,2L7.5,3.4L10,2L8.6,4.5L10,7L7.5,5.6M19.5,15.4L22,14L20.6,16.5L22,19L19.5,17.6L17,19L18.4,16.5L17,14L19.5,15.4M22,2L20.6,4.5L22,7L19.5,5.6L17,7L18.4,4.5L17,2L19.5,3.4L22,2M13.34,12.78L15.78,10.34L13.66,8.22L11.22,10.66L13.34,12.78M14.37,7.29L16.71,9.63C17.1,10 17.1,10.65 16.71,11.04L5.04,22.71C4.65,23.1 4,23.1 3.63,22.71L1.29,20.37C0.9,20 0.9,19.35 1.29,18.96L12.96,7.29C13.35,6.9 14,6.9 14.37,7.29Z"})});function xJ(){return WPe}var XPe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,ye.jsx)("path",{d:"M3 17.25V21H6.75L17.81 9.93L14.06 6.18L3 17.25M22.61 18.36L18.36 22.61L13.16 17.41L14.93 15.64L15.93 16.64L18.4 14.16L19.82 15.58L18.36 17L19.42 18L20.84 16.6L22.61 18.36M6.61 10.83L1.39 5.64L5.64 1.39L7.4 3.16L4.93 5.64L6 6.7L8.46 4.22L9.88 5.64L8.46 7.05L9.46 8.05L6.61 10.83M20.71 7C21.1 6.61 21.1 6 20.71 5.59L18.37 3.29C18 2.9 17.35 2.9 16.96 3.29L15.12 5.12L18.87 8.87L20.71 7Z"})});function SJ(){return XPe}var YPe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M22 11V3h-7v3H9V3H2v8h7V8h2v10h4v3h7v-8h-7v3h-2V8h2v3h7zM7 9H4V5h3v4zm10 6h3v4h-3v-4zm0-10h3v4h-3V5z"})});function aB(){return YPe}var QPe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})});function Fd(){return QPe}var KPe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z"})});function _h(){return KPe}var $Pe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M7 10l5 5 5-5z"})});function Rs(){return $Pe}var ZPe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M10 17l5-5-5-5v10z"})});function Ls(){return ZPe}var JPe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z"})});function Ph(){return JPe}var eEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M12 6v3l4-4-4-4v3c-4.42 0-8 3.58-8 8 0 1.57.46 3.03 1.24 4.26L6.7 14.8c-.45-.83-.7-1.79-.7-2.8 0-3.31 2.69-6 6-6zm6.76 1.74L17.3 9.2c.44.84.7 1.79.7 2.8 0 3.31-2.69 6-6 6v-3l-4 4 4 4v-3c4.42 0 8-3.58 8-8 0-1.57-.46-3.03-1.24-4.26z"})});function CJ(){return eEe}var tEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M6 13c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-8c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm-3 .5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zM6 5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm15 5.5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zM14 7c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0-3.5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zm-11 10c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm7 7c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm0-17c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zM10 7c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0 5.5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm8 .5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-8c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm3 8.5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zM14 17c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 3.5c-.28 0-.5.22-.5.5s.22.5.5.5.5-.22.5-.5-.22-.5-.5-.5zm-4-12c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0 8.5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm4-4.5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0-4c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z"})});function sB(){return tEe}var rEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M15 7v12.97l-4.21-1.81-.79-.34-.79.34L5 19.97V7h10m4-6H8.99C7.89 1 7 1.9 7 3h10c1.1 0 2 .9 2 2v13l2 1V3c0-1.1-.9-2-2-2zm-4 4H5c-1.1 0-2 .9-2 2v16l7-3 7 3V7c0-1.1-.9-2-2-2z"})});function Mp(){return rEe}var nEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M7 14c-1.66 0-3 1.34-3 3 0 1.31-1.16 2-2 2 .92 1.22 2.49 2 4 2 2.21 0 4-1.79 4-4 0-1.66-1.34-3-3-3zm13.71-9.37l-1.34-1.34a.9959.9959 0 00-1.41 0L9 12.25 11.75 15l8.96-8.96c.39-.39.39-1.02 0-1.41z"})});function aP(){return nEe}var oEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M22.61 18.99l-9.08-9.08c.93-2.34.45-5.1-1.44-7C9.79.61 6.21.4 3.66 2.26L7.5 6.11 6.08 7.52 2.25 3.69C.39 6.23.6 9.82 2.9 12.11c1.86 1.86 4.57 2.35 6.89 1.48l9.11 9.11c.39.39 1.02.39 1.41 0l2.3-2.3c.4-.38.4-1.01 0-1.41zm-3 1.6l-9.46-9.46c-.61.45-1.29.72-2 .82-1.36.2-2.79-.21-3.83-1.25C3.37 9.76 2.93 8.5 3 7.26l3.09 3.09 4.24-4.24-3.09-3.09c1.24-.07 2.49.37 3.44 1.31 1.08 1.08 1.49 2.57 1.24 3.96-.12.71-.42 1.37-.88 1.96l9.45 9.45-.88.89z"})});function TJ(){return oEe}var iEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M22.7 19l-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C.4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c.5-.4.5-1.1.1-1.4z"})});function wJ(){return iEe}var aEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M14.25 2.26l-.08-.04-.01.02C13.46 2.09 12.74 2 12 2 6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10c0-4.75-3.31-8.72-7.75-9.74zM19.41 9h-7.99l2.71-4.7c2.4.66 4.35 2.42 5.28 4.7zM13.1 4.08L10.27 9l-1.15 2L6.4 6.3C7.84 4.88 9.82 4 12 4c.37 0 .74.03 1.1.08zM5.7 7.09L8.54 12l1.15 2H4.26C4.1 13.36 4 12.69 4 12c0-1.85.64-3.55 1.7-4.91zM4.59 15h7.98l-2.71 4.7c-2.4-.67-4.34-2.42-5.27-4.7zm6.31 4.91L14.89 13l2.72 4.7C16.16 19.12 14.18 20 12 20c-.38 0-.74-.04-1.1-.09zm7.4-3l-4-6.91h5.43c.17.64.27 1.31.27 2 0 1.85-.64 3.55-1.7 4.91z"})});function _J(){return aEe}var sEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M9.4 10.5l4.77-8.26C13.47 2.09 12.75 2 12 2c-2.4 0-4.6.85-6.32 2.25l3.66 6.35.06-.1zM21.54 9c-.92-2.92-3.15-5.26-6-6.34L11.88 9h9.66zm.26 1h-7.49l.29.5 4.76 8.25C21 16.97 22 14.61 22 12c0-.69-.07-1.35-.2-2zM8.54 12l-3.9-6.75C3.01 7.03 2 9.39 2 12c0 .69.07 1.35.2 2h7.49l-1.15-2zm-6.08 3c.92 2.92 3.15 5.26 6 6.34L12.12 15H2.46zm11.27 0l-3.9 6.76c.7.15 1.42.24 2.17.24 2.4 0 4.6-.85 6.32-2.25l-3.66-6.35-.93 1.6z"})});function PJ(){return sEe}var lEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3.59-13L12 10.59 8.41 7 7 8.41 10.59 12 7 15.59 8.41 17 12 13.41 15.59 17 17 15.59 13.41 12 17 8.41z"})});function xS(){return lEe}var cEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"})});function sP(){return cEe}var uEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm-7 7H3v4c0 1.1.9 2 2 2h4v-2H5v-4zM5 5h4V3H5c-1.1 0-2 .9-2 2v4h2V5zm14-2h-4v2h4v4h2V5c0-1.1-.9-2-2-2zm0 16h-4v2h4c1.1 0 2-.9 2-2v-4h-2v4z"})});function EJ(){return uEe}var dEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})});function Pc(){return dEe}var mEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})});function lB(){return mEe}var pEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})});function ml(){return pEe}var fEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"})});function IJ(){return fEe}var hEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"})});function DJ(){return hEe}var gEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4H8c-1.1 0-1.99.9-1.99 2L6 21c0 1.1.89 2 1.99 2H19c1.1 0 2-.9 2-2V11l-6-6zM8 21V7h6v5h5v9H8z"})});function AJ(){return gEe}var yEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M17 15h2V7c0-1.1-.9-2-2-2H9v2h8v8zM7 17V1H5v4H1v2h4v10c0 1.1.9 2 2 2h10v4h2v-4h4v-2H7z"})});function kJ(){return yEe}var vEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M3 5v4h2V5h4V3H5c-1.1 0-2 .9-2 2zm2 10H3v4c0 1.1.9 2 2 2h4v-2H5v-4zm14 4h-4v2h4c1.1 0 2-.9 2-2v-4h-2v4zm0-16h-4v2h4v4h2V5c0-1.1-.9-2-2-2z"})});function MJ(){return vEe}var bEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zm-5.04-6.71l-2.75 3.54-1.96-2.36L6.5 17h11l-3.54-4.71z"})});function RJ(){return bEe}var xEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M16 9v10H8V9h8m-1.5-6h-5l-1 1H5v2h14V4h-3.5l-1-1zM18 7H6v12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7z"})});function Hi(){return xEe}var xFt=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"})});var SEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"})});function cB(){return SEe}var SFt=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"})});var CEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,ye.jsx)("path",{d:"M3 13h2v-2H3v2zm0 4h2v-2H3v2zm2 4v-2H3c0 1.1.89 2 2 2zM3 9h2V7H3v2zm12 12h2v-2h-2v2zm4-18H9c-1.11 0-2 .9-2 2v10c0 1.1.89 2 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 12H9V5h10v10zm-8 6h2v-2h-2v2zm-4 0h2v-2H7v2z"})});function TEe(){return CEe}var wEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"})});function LJ(){return wEe}var _Ee=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"})});function SS(){return _Ee}var PEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z"})});function Bs(){return PEe}var EEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M12 5.69l5 4.5V18h-2v-6H9v6H7v-7.81l5-4.5M12 3L2 12h3v8h6v-6h2v6h6v-8h3L12 3z"})});function CS(){return EEe}var CFt=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"})});var IEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M19.5 9.5c-1.03 0-1.9.62-2.29 1.5h-2.92c-.39-.88-1.26-1.5-2.29-1.5s-1.9.62-2.29 1.5H6.79c-.39-.88-1.26-1.5-2.29-1.5C3.12 9.5 2 10.62 2 12s1.12 2.5 2.5 2.5c1.03 0 1.9-.62 2.29-1.5h2.92c.39.88 1.26 1.5 2.29 1.5s1.9-.62 2.29-1.5h2.92c.39.88 1.26 1.5 2.29 1.5 1.38 0 2.5-1.12 2.5-2.5s-1.12-2.5-2.5-2.5z"})});function DEe(){return IEe}var AEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})});function Pu(){return AEe}var kEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"})});function uB(){return kEe}var MEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})});function dB(){return MEe}var REe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h4v-2H5V8h14v10h-4v2h4c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2zm-7 6l-4 4h3v6h2v-6h3l-4-4z"})});function BJ(){return REe}var LEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M8 5v14l11-7z"})});function lP(){return LEe}var BEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"})});function TS(){return BEe}var OEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M19 13H5v-2h14v2z"})});function wS(){return OEe}var FEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"})});function _S(){return FEe}var NEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",strokeWidth:"0.1px",children:(0,ye.jsx)("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z"})});function cP(){return NEe}var VEe=(0,ye.jsxs)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:[(0,ye.jsx)("circle",{cx:"7",cy:"14",r:"3"}),(0,ye.jsx)("circle",{cx:"11",cy:"6",r:"3"}),(0,ye.jsx)("circle",{cx:"16.6",cy:"17.6",r:"3"})]});function zEe(){return VEe}var TFt=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"})});var UEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M6 6h2v12H6zm3.5 6l8.5 6V6z"})});function OJ(){return UEe}var GEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M6 6h12v12H6z"})});function mB(){return GEe}var jEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M4 6h16v2H4zm2-4h12v2H6zm14 8H4c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2zm0 10H4v-8h16v8zm-10-7.27v6.53L16 16z"})});function FJ(){return jEe}var HEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M6.99 11L3 15l3.99 4v-3H14v-2H6.99v-3zM21 9l-3.99-4v3H10v2h7.01v3L21 9z"})});function NJ(){return HEe}var qEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6-4h2V7h4V5h-4V3h-2v6z"})});function pl(){return qEe}var WEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M12 6c3.79 0 7.17 2.13 8.82 5.5-.59 1.22-1.42 2.27-2.41 3.12l1.41 1.41c1.39-1.23 2.49-2.77 3.18-4.53C21.27 7.11 17 4 12 4c-1.27 0-2.49.2-3.64.57l1.65 1.65C10.66 6.09 11.32 6 12 6zm-1.07 1.14L13 9.21c.57.25 1.03.71 1.28 1.28l2.07 2.07c.08-.34.14-.7.14-1.07C16.5 9.01 14.48 7 12 7c-.37 0-.72.05-1.07.14zM2.01 3.87l2.68 2.68C3.06 7.83 1.77 9.53 1 11.5 2.73 15.89 7 19 12 19c1.52 0 2.98-.29 4.32-.82l3.42 3.42 1.41-1.41L3.42 2.45 2.01 3.87zm7.5 7.5l2.61 2.61c-.04.01-.08.02-.12.02-1.38 0-2.5-1.12-2.5-2.5 0-.05.01-.08.01-.13zm-3.4-3.4l1.75 1.75c-.23.55-.36 1.15-.36 1.78 0 2.48 2.02 4.5 4.5 4.5.63 0 1.23-.13 1.77-.36l.98.98c-.88.24-1.8.38-2.75.38-3.79 0-7.17-2.13-8.82-5.5.7-1.43 1.72-2.61 2.93-3.53z"})});function Ec(){return WEe}var XEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M12 6c3.79 0 7.17 2.13 8.82 5.5C19.17 14.87 15.79 17 12 17s-7.17-2.13-8.82-5.5C4.83 8.13 8.21 6 12 6m0-2C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4zm0 5c1.38 0 2.5 1.12 2.5 2.5S13.38 14 12 14s-2.5-1.12-2.5-2.5S10.62 9 12 9m0-2c-2.48 0-4.5 2.02-4.5 4.5S9.52 16 12 16s4.5-2.02 4.5-4.5S14.48 7 12 7z"})});function Ic(){return XEe}var YEe=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"})});function uP(){return YEe}var wFt=(0,ye.jsx)("svg",{width:"24px",height:"24px",viewBox:"0 0 24 24",children:(0,ye.jsx)("path",{d:"M 9.64 7.64 c 0.23 -0.5 0.36 -1.05 0.36 -1.64 c 0 -2.21 -1.79 -4 -4 -4 S 2 3.79 2 6 s 1.79 4 4 4 c 0.59 0 1.14 -0.13 1.64 -0.36 L 10 12 l -2.36 2.36 C 7.14 14.13 6.59 14 6 14 c -2.21 0 -4 1.79 -4 4 s 1.79 4 4 4 s 4 -1.79 4 -4 c 0 -0.59 -0.13 -1.14 -0.36 -1.64 L 12 14 l 7 7 h 3 v -1 L 9.64 7.64 Z M 6 8 c -1.1 0 -2 -0.89 -2 -2 s 0.9 -2 2 -2 s 2 0.89 2 2 s -0.9 2 -2 2 Z m 0 12 c -1.1 0 -2 -0.89 -2 -2 s 0.9 -2 2 -2 s 2 0.89 2 2 s -0.9 2 -2 2 Z m 6 -7.5 c -0.28 0 -0.5 -0.22 -0.5 -0.5 s 0.22 -0.5 0.5 -0.5 s 0.5 0.22 0.5 0.5 s -0.22 0.5 -0.5 0.5 Z M 19 3 l -6 6 l 2 2 l 7 -7 V 3 Z"})});var VJ=qPe,zJ=zEe,pB=DEe,UJ=TEe;var Ua=class extends Rp.Component{constructor(){super(...arguments),this.state={isExpanded:!!this.props.initialExpanded},this.headerClicked=()=>{this.props.onHeaderClick?this.props.onHeaderClick():this.setState({isExpanded:!this.state.isExpanded})}}render(){let e=this.props.hideOffset?"msp-control-group-children":"msp-control-group-children msp-control-offset";return this.props.childrenClassName&&(e+=" "+this.props.childrenClassName),(0,Kr.jsxs)("div",{className:"msp-control-group-wrapper",style:{position:"relative",marginTop:this.props.noTopMargin?0:void 0},children:[(0,Kr.jsx)("div",{className:"msp-control-group-header",style:{marginLeft:this.props.headerLeftMargin},title:this.props.title,children:(0,Kr.jsxs)(vt,{onClick:this.headerClicked,children:[!this.props.hideExpander&&(0,Kr.jsx)(pr,{svg:this.state.isExpanded?Ls:Rs}),this.props.topRightIcon&&(0,Kr.jsx)(pr,{svg:this.props.topRightIcon,style:{position:"absolute",right:"2px",top:0}}),(0,Kr.jsx)("b",{children:this.props.header})]})}),this.state.isExpanded&&(0,Kr.jsx)("div",{className:e,style:{display:this.state.isExpanded?"block":"none",maxHeight:this.props.maxHeight,overflow:"hidden",overflowY:"auto"},children:this.props.children})]})}};function GJ(t){return t}var fl=class extends Rp.PureComponent{constructor(){super(...arguments),this.input=Rp.createRef(),this.delayHandle=void 0,this.pendingValue=void 0,this.state={originalValue:"",value:""},this.onBlur=()=>{this.setState({value:""+this.state.originalValue}),this.props.onBlur&&this.props.onBlur()},this.raiseOnChange=()=>{this.pendingValue!==void 0&&(this.props.onChange(this.pendingValue),this.pendingValue=void 0)},this.onChange=e=>{let r=e.target.value;if(this.props.isValid&&!this.props.isValid(r)||this.props.numeric&&Number.isNaN(+r)){this.clearTimeout(),this.setState({value:r});return}if(this.props.numeric)this.setState({value:r},()=>this.triggerChanged(r,+r));else{let o=(this.props.toValue||GJ)(r),i=(this.props.fromValue||GJ)(o);this.setState({value:i},()=>this.triggerChanged(i,o))}},this.onKeyUp=e=>{(e.charCode===27||e.keyCode===27||e.key==="Escape")&&this.props.blurOnEscape&&this.input.current&&this.input.current.blur()},this.onKeyPress=e=>{(e.keyCode===13||e.charCode===13||e.key==="Enter")&&(this.isPending&&(this.clearTimeout(),this.raiseOnChange()),this.props.blurOnEnter&&this.input.current&&this.input.current.blur(),this.props.onEnter&&this.props.onEnter()),e.stopPropagation()}}get isPending(){return typeof this.delayHandle<"u"}clearTimeout(){this.isPending&&(clearTimeout(this.delayHandle),this.delayHandle=void 0)}triggerChanged(e,r){this.clearTimeout(),e!==this.state.originalValue&&(this.props.delayMs?(this.pendingValue=r,this.delayHandle=setTimeout(this.raiseOnChange,this.props.delayMs)):this.props.onChange(r))}static getDerivedStateFromProps(e,r){let n=e.fromValue?e.fromValue(e.value):e.value;return n===r.originalValue?null:{originalValue:n,value:n}}render(){return(0,Kr.jsx)("input",{type:"text",className:this.props.className,style:this.props.style,ref:this.input,onBlur:this.onBlur,value:this.state.value,placeholder:this.props.placeholder,onChange:this.onChange,onKeyPress:this.props.onEnter||this.props.blurOnEnter||this.props.blurOnEscape?this.onKeyPress:void 0,onKeyDown:this.props.blurOnEscape?this.onKeyUp:void 0,disabled:!!this.props.isDisabled})}},dP=class extends Rp.Component{constructor(){super(...arguments),this.state={isExpanded:!1},this.toggleExpanded=()=>this.setState({isExpanded:!this.state.isExpanded})}render(){let{label:e,pivot:r,controls:n}=this.props;return(0,Kr.jsxs)(Kr.Fragment,{children:[(0,Kr.jsx)(Ga,{label:(0,Kr.jsxs)(Kr.Fragment,{children:[e,(0,Kr.jsx)("button",{className:"msp-btn-link msp-btn-icon msp-control-group-expander",onClick:this.toggleExpanded,title:`${this.state.isExpanded?"Less":"More"} options`,style:{background:"transparent",textAlign:"left",padding:"0"},children:(0,Kr.jsx)(pr,{svg:this.state.isExpanded?wS:Fd,style:{display:"inline-block"}})})]}),control:r,children:this.props.colorStripe&&(0,Kr.jsx)("div",{className:"msp-expandable-group-color-stripe",style:{backgroundColor:ce.toStyle(this.props.colorStripe)}})}),this.state.isExpanded&&(0,Kr.jsx)("div",{className:"msp-control-offset",children:n})]})}};function Nd(t){return(0,Kr.jsxs)("div",{className:`msp-section-header${t.accent?" msp-transform-header-brand-"+t.accent:""}`,children:[t.icon&&(0,Kr.jsx)(pr,{svg:t.icon}),t.title," ",(0,Kr.jsx)("small",{children:t.desc})]})}function vt(t){let e="msp-btn";t.inline||(e+=" msp-btn-block"),t.noOverflow&&(e+=" msp-no-overflow"),t.flex&&(e+=" msp-flex-item"),(t.commit==="on"||t.commit)&&(e+=" msp-btn-commit msp-btn-commit-on"),t.commit==="off"&&(e+=" msp-btn-commit msp-btn-commit-off"),t.children||(e+=" msp-btn-childless"),t.className&&(e+=" "+t.className);let r;return t.flex&&(typeof t.flex=="number"?r={flex:`0 0 ${t.flex}px`,padding:0,maxWidth:`${t.flex}px`}:typeof t.flex=="string"&&(r={flex:`0 0 ${t.flex}`,padding:0,maxWidth:t.flex})),t.style&&(r?Object.assign(r,t.style):r=t.style),(0,Kr.jsxs)("button",{onClick:t.onClick,title:t.title,disabled:t.disabled,style:r,className:e,"data-id":t["data-id"],"data-color":t["data-color"],onContextMenu:t.onContextMenu,onMouseEnter:t.onMouseEnter,onMouseLeave:t.onMouseLeave,children:[t.icon&&(0,Kr.jsx)(pr,{svg:t.icon}),t.children]})}function pt(t){let e=`msp-btn msp-btn-icon${t.small?"-small":""}${t.className?" "+t.className:""}`;typeof t.toggleState<"u"&&(e+=` msp-btn-link-toggle-${t.toggleState?"on":"off"}`),t.transparent&&(e+=" msp-transparent-bg");let r;return t.flex&&(typeof t.flex=="boolean"?r={flex:"0 0 32px",padding:0}:typeof t.flex=="number"?r={flex:`0 0 ${t.flex}px`,padding:0,maxWidth:`${t.flex}px`}:r={flex:`0 0 ${t.flex}`,padding:0,maxWidth:t.flex}),t.style&&(r?Object.assign(r,t.style):r=t.style),(0,Kr.jsxs)("button",{className:e,onClick:t.onClick,title:t.title,disabled:t.disabled,"data-id":t["data-id"],style:r,children:[t.svg&&(0,Kr.jsx)(pr,{svg:t.svg}),t.extraContent]})}var Gn=class extends Rp.PureComponent{constructor(){super(...arguments),this.onClick=e=>{e.currentTarget.blur(),this.props.toggle()}}render(){let e=this.props,r=e.label,n=e.isSelected?`${e.className||""} msp-control-current`:e.className;return(0,Kr.jsx)(vt,{icon:this.props.icon,onClick:this.onClick,title:this.props.title,inline:this.props.inline,disabled:e.disabled,style:e.style,className:n,children:r&&this.props.isSelected?(0,Kr.jsx)("b",{children:r}):r})}},Ci=class extends Rp.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!!this.props.initiallyExpanded},this.toggleExpanded=()=>this.setState({isExpanded:!this.state.isExpanded})}render(){return(0,Kr.jsxs)(Kr.Fragment,{children:[(0,Kr.jsx)("div",{className:"msp-control-group-header",style:{marginTop:this.props.marginTop!==void 0?this.props.marginTop:"1px",marginLeft:this.props.headerLeftMargin},children:(0,Kr.jsxs)("button",{className:"msp-btn msp-form-control msp-btn-block",onClick:this.toggleExpanded,style:this.props.headerStyle,children:[(0,Kr.jsx)(pr,{svg:this.state.isExpanded?Rs:Ls}),this.props.header]})}),this.state.isExpanded&&(this.props.noOffset?this.props.children:(0,Kr.jsx)("div",{className:this.props.accent?"msp-accent-offset":"msp-control-offset",children:this.props.children}))]})}};function Ga(t){let e="msp-control-row";return t.className&&(e+=" "+t.className),(0,Kr.jsxs)("div",{className:e,children:[(0,Kr.jsx)("span",{className:"msp-control-row-label",title:t.title,children:t.label}),(0,Kr.jsx)("div",{className:"msp-control-row-ctrl",children:t.control}),t.children]})}var Hl=Jv.createContext(void 0),Mt=(()=>{class t extends Jv.Component{subscribe(r,n){typeof this.subs>"u"&&(this.subs=[]),this.subs.push(r.subscribe(n))}componentWillUnmount(){if(this.subs){for(let r of this.subs)r.unsubscribe();this.subs=void 0}}constructor(r,n){super(r),this.subs=void 0,this.plugin=n,this.init&&this.init()}}return t.contextType=Hl,t})(),Kn=(()=>{class t extends Jv.PureComponent{subscribe(r,n){typeof this.subs>"u"&&(this.subs=[]),this.subs.push(r.subscribe(n))}componentWillUnmount(){if(this.subs){for(let r of this.subs)r.unsubscribe();this.subs=void 0}}constructor(r,n){super(r,n),this.subs=void 0,this.plugin=n,this.init&&this.init()}}return t.contextType=Hl,t})(),hl=class extends Mt{componentDidUpdate(e){this.props.initiallyCollapsed!==void 0&&e.initiallyCollapsed!==this.props.initiallyCollapsed&&this.setState({isCollapsed:this.props.initiallyCollapsed})}render(){var e;if(this.state.isHidden)return null;let r=this.state.isCollapsed?"msp-transform-wrapper msp-transform-wrapper-collapsed":"msp-transform-wrapper";return(0,vy.jsxs)("div",{className:r,children:[(0,vy.jsx)("div",{className:"msp-transform-header",children:(0,vy.jsxs)(vt,{icon:this.state.brand?void 0:this.state.isCollapsed?Ls:Rs,noOverflow:!0,onClick:this.toggleCollapsed,className:this.state.brand?`msp-transform-header-brand msp-transform-header-brand-${this.state.brand.accent}`:void 0,title:`Click to ${this.state.isCollapsed?"expand":"collapse"}`,children:[(0,vy.jsx)(pr,{svg:(e=this.state.brand)===null||e===void 0?void 0:e.svg,inline:!0}),this.state.header,(0,vy.jsx)("small",{style:{margin:"0 6px"},children:this.state.isCollapsed?"":this.state.description})]})}),!this.state.isCollapsed&&this.renderControls()]})}constructor(e,r){super(e,r),this.toggleCollapsed=()=>{this.setState({isCollapsed:!this.state.isCollapsed})};let n=this.defaultState();e.initiallyCollapsed!==void 0&&(n.isCollapsed=e.initiallyCollapsed),e.header!==void 0&&(n.header=e.header),this.state=n}};var ve=Ot(Or()),$n=Ot(Po());var mi=Ot(Or()),yB=Ot(Po());var wt=class extends yB.PureComponent{constructor(){super(...arguments),this.hide=()=>this.props.onSelect(void 0)}render(){let e=this.props,r=(0,mi.jsx)(hB,{items:e.items,onSelect:e.onSelect,current:e.current,multiselect:this.props.multiselect,noOffset:this.props.noOffset,noAccent:this.props.noAccent});return(0,mi.jsxs)("div",{className:`msp-action-menu-options${e.header?"":" msp-action-menu-options-no-header"}`,children:[e.header&&(0,mi.jsx)(Ua,{header:e.header,title:e.title,initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:this.hide,topRightIcon:ml,children:r}),!e.header&&r]})}};(function(t){function e(c,u){return u?w({kind:"header",label:c},u):{kind:"header",label:c}}t.Header=e;function r(c,u,d){return w({kind:"item",label:c,value:u},d)}t.Item=r;function n(c,u){let{label:d,value:m,category:p,selected:h,icon:f,addOn:b,description:v}=u||{},x,S=[];for(let T=0;Tc[0],label:c=>c[1],category:c=>c[2]};function i(c,u){return n(c,u?w(w({},o),u):o)}t.createItemsFromSelectOptions=i;function a(c){if(Lp(c))return!1;if(eb(c))return!!c.selected;for(let u of c)if(a(u))return!0;return!1}t.hasSelectedItem=a;function s(c,u){if(!Lp(c)){if(eb(c))return c.value===u?c:void 0;for(let d of c){let m=s(d,u);if(m)return m}}}t.findItem=s;function l(c){if(!Lp(c)){if(eb(c))return c;for(let u of c){let d=l(u);if(d)return d}}}t.getFirstItem=l})(wt||(wt={}));var hB=class t extends yB.PureComponent{constructor(){super(...arguments),this.state=t.createState(this.props),this.toggleExpanded=e=>{this.setState({isExpanded:!this.state.isExpanded}),e.currentTarget.blur()},this.selectAll=()=>{let e=gB(this.props.items,[]).filter(r=>!r.selected);this.props.onSelect(e)},this.selectNone=()=>{let e=gB(this.props.items,[]).filter(r=>!!r.selected);this.props.onSelect(e)}}static createState(e,r){let n=fB(e.items)&&Lp(e.items[0])?e.items[0]:void 0,o=n?.isIndependent?!1:e.multiselect?wt.hasSelectedItem(e.items):!!e.current&&!!wt.findItem(e.items,e.current.value)||wt.hasSelectedItem(e.items);return{header:n,hasCurrent:o,isExpanded:o||(r??!!n?.initiallyExpanded)}}componentDidUpdate(e){if(this.props.items!==e.items||this.props.current!==e.current){let r=fB(this.props.items)&&fB(e.items)&&Lp(this.props.items[0])&&Lp(e.items[0])&&this.props.items[0].label===e.items[0].label?this.state.isExpanded:void 0;this.setState(t.createState(this.props,r))}}get multiselectHeader(){let{header:e,hasCurrent:r}=this.state;return(0,mi.jsxs)("div",{className:"msp-flex-row msp-control-group-header",children:[(0,mi.jsx)(vt,{icon:this.state.isExpanded?Rs:Ls,flex:!0,noOverflow:!0,onClick:this.toggleExpanded,title:`Click to ${this.state.isExpanded?"collapse":"expand"}.${e?.description?` ${e?.description}`:""}`,children:r?(0,mi.jsx)("b",{children:e?.label}):e?.label}),(0,mi.jsx)(vt,{icon:Pc,flex:!0,onClick:this.selectAll,style:{flex:"0 0 50px",textAlign:"right"},children:"All"}),(0,mi.jsx)(vt,{icon:ml,flex:!0,onClick:this.selectNone,style:{flex:"0 0 50px",textAlign:"right"},children:"None"})]})}get basicHeader(){let{header:e,hasCurrent:r}=this.state;return(0,mi.jsx)("div",{className:"msp-control-group-header",style:{marginTop:"1px"},children:(0,mi.jsx)(vt,{noOverflow:!0,icon:this.state.isExpanded?Rs:Ls,onClick:this.toggleExpanded,title:`Click to ${this.state.isExpanded?"collapse":"expand"}. ${e?.description?e?.description:""}`,children:r?(0,mi.jsx)("b",{children:e?.label}):e?.label})})}render(){let{items:e,onSelect:r,current:n}=this.props;if(Lp(e))return null;if(eb(e))return(0,mi.jsx)(jJ,{item:e,onSelect:r,current:n,multiselect:this.props.multiselect});let{header:o}=this.state;return(0,mi.jsxs)(mi.Fragment,{children:[o&&(this.props.multiselect&&this.state.isExpanded?this.multiselectHeader:this.basicHeader),(0,mi.jsx)("div",{className:this.props.noOffset?void 0:this.props.noAccent?"msp-control-offset":"msp-accent-offset",children:(!o||this.state.isExpanded)&&e.map((i,a)=>Lp(i)?null:eb(i)?(0,mi.jsx)(jJ,{item:i,onSelect:r,current:n,multiselect:this.props.multiselect},a):(0,mi.jsx)(t,{items:i,onSelect:r,current:n,multiselect:this.props.multiselect,noAccent:!0},a))})]})}},jJ=({item:t,onSelect:e,current:r,multiselect:n})=>{let o=r===t,i=t.addOn?{position:"relative"}:void 0;return(0,mi.jsxs)(vt,{icon:t.icon,noOverflow:!0,className:"msp-action-menu-button",onClick:a=>e(n?[t]:t,a),disabled:t.disabled,style:i,title:t.description,children:[o||t.selected?(0,mi.jsx)("b",{children:t.label}):t.label,t.addOn]})};function fB(t){return!!t&&Array.isArray(t)}function eb(t){let e=t;return e&&e.kind==="item"}function Lp(t){let e=t;return e&&e.kind==="header"}function gB(t,e){if(Lp(t))return e;if(eb(t))return e.push(t),e;for(let r of t)gB(r,e);return e}var Ti=Ot(Or());var HJ=Ot(Po());var vB=[["black",0],["gray",8421504],["white",16777215],["red",13840661],["orange",14840576],["yellow",16565248],["green",6863872],["cyan",1484197],["blue",40160],["purple",8086783],["magenta",16394495],["violet",8200583]];var tb=class extends HJ.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!!this.props.param.isExpanded||!!this.props.hideNameRow,lightness:0},this.toggleExpanded=e=>{this.setState({isExpanded:!this.state.isExpanded}),e.currentTarget.blur()},this.onClickSwatch=e=>{let r=ce.fromHexString(e.currentTarget.getAttribute("data-color")||"0");r!==this.props.value&&(this.props.param.isExpanded||this.setState({isExpanded:!1}),this.update(r))},this.onR=e=>{let[,r,n]=ce.toRgb(this.props.value),o=ce.fromRgb(e,r,n);o!==this.props.value&&this.update(o)},this.onG=e=>{let[r,,n]=ce.toRgb(this.props.value),o=ce.fromRgb(r,e,n);o!==this.props.value&&this.update(o)},this.onB=e=>{let[r,n]=ce.toRgb(this.props.value),o=ce.fromRgb(r,n,e);o!==this.props.value&&this.update(o)},this.onRGB=e=>{let r=ce.fromHexStyle(e.currentTarget.value||"0");r!==this.props.value&&this.update(r)},this.onLighten=()=>{this.update(ce.lighten(this.props.value,.1))},this.onDarken=()=>{this.update(ce.darken(this.props.value,.1))}}update(e){this.props.onChange({param:this.props.param,name:this.props.name,value:e})}swatch(){return(0,Ti.jsx)("div",{className:"msp-combined-color-swatch",children:vB.map(e=>(0,Ti.jsx)(vt,{inline:!0,"data-color":e[1],onClick:this.onClickSwatch,style:{background:ce.toStyle(e[1])}},e[1]))})}render(){let e=this.props.param.label||Di(this.props.name),[r,n,o]=ce.toRgb(this.props.value),i=(0,Ti.jsxs)(Ti.Fragment,{children:[this.swatch(),(0,Ti.jsx)(Ga,{label:"RGB",className:"msp-control-label-short",control:(0,Ti.jsxs)("div",{style:{display:"flex",textAlignLast:"center",left:"80px"},children:[(0,Ti.jsx)(fl,{onChange:this.onR,numeric:!0,value:r,delayMs:250,style:{order:1,flex:"1 1 auto",minWidth:0},className:"msp-form-control",onEnter:this.props.onEnter,blurOnEnter:!0,blurOnEscape:!0}),(0,Ti.jsx)(fl,{onChange:this.onG,numeric:!0,value:n,delayMs:250,style:{order:2,flex:"1 1 auto",minWidth:0},className:"msp-form-control",onEnter:this.props.onEnter,blurOnEnter:!0,blurOnEscape:!0}),(0,Ti.jsx)(fl,{onChange:this.onB,numeric:!0,value:o,delayMs:250,style:{order:3,flex:"1 1 auto",minWidth:0},className:"msp-form-control",onEnter:this.props.onEnter,blurOnEnter:!0,blurOnEscape:!0}),(0,Ti.jsx)("input",{onInput:this.onRGB,type:"color",value:ce.toHexStyle(this.props.value),style:{order:4,flex:"1 1 auto",minWidth:"32px",width:"32px",height:"32px",padding:"0 2px 0 2px",background:"none",border:"none",cursor:"pointer"}})]})}),(0,Ti.jsxs)("div",{style:{display:"flex",textAlignLast:"center"},children:[(0,Ti.jsx)(vt,{onClick:this.onLighten,style:{order:1,flex:"1 1 auto",minWidth:0},className:"msp-form-control",children:"Lighten"}),(0,Ti.jsx)(vt,{onClick:this.onDarken,style:{order:1,flex:"1 1 auto",minWidth:0},className:"msp-form-control",children:"Darken"})]})]});return this.props.hideNameRow?i:(0,Ti.jsxs)(Ti.Fragment,{children:[(0,Ti.jsx)(Ga,{title:this.props.param.description,label:e,control:(0,Ti.jsx)(vt,{onClick:this.toggleExpanded,inline:!0,className:"msp-combined-color-button",style:{background:ce.toStyle(this.props.value)}})}),this.state.isExpanded&&(0,Ti.jsx)("div",{className:"msp-control-offset",children:i})]})}};var jFt=function(){let t=new Map;for(let e of vB)t.set(e[1],e[0]);return t}();var Pm=Ot(Or());var SB=Ot(Po());function qJ(t){switch(t.kind){case"scale-legend":return bB;case"table-legend":return xB;default:console.warn(`${t} has no associated UI component`);return}}var bB=class extends SB.PureComponent{render(){let{legend:e}=this.props,r=e.colors.map(n=>Array.isArray(n)?`${ce.toStyle(n[0])} ${100*n[1]}%`:ce.toStyle(n)).join(", ");return(0,Pm.jsx)("div",{className:"msp-scale-legend",children:(0,Pm.jsxs)("div",{style:{background:`linear-gradient(to right, ${r})`},children:[(0,Pm.jsx)("span",{style:{float:"left"},children:e.minLabel}),(0,Pm.jsx)("span",{style:{float:"right"},children:e.maxLabel})]})})}},xB=class extends SB.PureComponent{render(){let{legend:e}=this.props;return(0,Pm.jsx)("div",{className:"msp-table-legend",children:e.table.map((r,n)=>{let[o,i]=r;return(0,Pm.jsxs)("div",{children:[(0,Pm.jsx)("div",{className:"msp-table-legend-color",style:{backgroundColor:ce.toStyle(i)}}),(0,Pm.jsx)("div",{className:"msp-table-legend-text",children:o})]},n)})})}};var Em=Ot(Or());var WJ=Ot(Or()),XJ=Ot(Po());var mP=class extends XJ.Component{constructor(e){super(e),this.state={show:!1},this.handleHover=this.handleHover.bind(this),this.handleHoverOff=this.handleHoverOff.bind(this),this.deletePoint=this.deletePoint.bind(this)}handleHover(){this.setState({show:!0});let e=ne.create(this.props.nX,this.props.nY);this.props.onmouseover(e)}handleHoverOff(){this.setState({show:!1}),this.props.onmouseover(void 0)}deletePoint(){this.props.delete(this.props.id)}render(){return[(0,WJ.jsx)("circle",{r:"10",id:`${this.props.id}`,cx:this.props.x,cy:this.props.y,onClick:this.props.onclick,onDoubleClick:this.props.delete(this.props.id),onMouseEnter:this.handleHover,onMouseLeave:this.handleHoverOff,onMouseDown:this.props.onmousedown,fill:"black"},`${this.props.id}circle`)]}};var fP=Ot(Po());var pP=class extends fP.Component{constructor(e){super(e),this.handleKeyDown=r=>{},this.handleKeyUp=r=>{},this.handleClick=r=>n=>{},this.handleMouseDown=r=>n=>{if(r===0||r===this.state.points.length-1||this.state.canSelectMultiple)return;let o=this.normalizePoint(ne.create(this.state.points[r][0],this.state.points[r][1]));this.ghostPoints.push(document.createElementNS(this.namespace,"circle")),this.ghostPoints[0].setAttribute("r","10"),this.ghostPoints[0].setAttribute("fill","orange"),this.ghostPoints[0].setAttribute("cx",`${o[0]}`),this.ghostPoints[0].setAttribute("cy",`${o[1]}`),this.ghostPoints[0].setAttribute("style","display: none"),this.gElement.appendChild(this.ghostPoints[0]),this.updatedX=o[0],this.updatedY=o[1],this.selected=[r]},this.deletePoint=r=>n=>{if(r===0||r===this.state.points.length-1)return;let o=this.state.points.filter((i,a)=>a!==r);o.sort((i,a)=>i[0]===a[0]?i[0]===0?i[1]-a[1]:i[1]===1?a[1]-i[1]:i[1]-a[1]:i[0]-a[0]),this.setState({points:o}),this.change(o),n.stopPropagation()},this.myRef=fP.createRef(),this.state={points:[ne.create(0,0),ne.create(1,0)],copyPoint:void 0,canSelectMultiple:!1},this.height=400,this.width=600,this.padding=70,this.selected=void 0,this.ghostPoints=[],this.namespace="http://www.w3.org/2000/svg";for(let r of this.props.data)this.state.points.push(r);this.state.points.sort((r,n)=>r[0]===n[0]?r[0]===0?r[1]-n[1]:r[1]===1?n[1]-r[1]:r[1]-n[1]:r[0]-n[0]),this.handleDrag=this.handleDrag.bind(this),this.handleMultipleDrag=this.handleMultipleDrag.bind(this),this.handleDoubleClick=this.handleDoubleClick.bind(this),this.refCallBack=this.refCallBack.bind(this),this.handlePointUpdate=this.handlePointUpdate.bind(this),this.change=this.change.bind(this),this.handleKeyUp=this.handleKeyUp.bind(this),this.handleLeave=this.handleLeave.bind(this),this.handleEnter=this.handleEnter.bind(this)}render(){let e=this.renderPoints(),r=this.renderLines(),n=this.renderHistogram();return[(0,Em.jsx)("div",{children:(0,Em.jsxs)("svg",{className:"msp-canvas",ref:this.refCallBack,viewBox:`0 0 ${this.width+this.padding} ${this.height+this.padding}`,onMouseMove:this.handleDrag,onMouseUp:this.handlePointUpdate,onMouseLeave:this.handleLeave,onMouseEnter:this.handleEnter,tabIndex:0,onKeyDown:this.handleKeyDown,onKeyUp:this.handleKeyUp,onDoubleClick:this.handleDoubleClick,children:[(0,Em.jsxs)("g",{stroke:"black",fill:"black",children:[n,r,e]}),(0,Em.jsx)("g",{className:"ghost-points",stroke:"black",fill:"black"})]})},"LineGraph"),(0,Em.jsx)("div",{id:"modal-root"},"modal")]}componentDidMount(){this.gElement=document.getElementsByClassName("ghost-points")[0]}change(e){let r=e.slice();r.shift(),r.pop(),this.props.onChange(r)}handleDrag(e){if(this.selected===void 0)return;let r=this.myRef.createSVGPoint(),n,o=this.padding/2;r.x=e.clientX,r.y=e.clientY;let i=r.matrixTransform(this.myRef.getScreenCTM().inverse());n=ne.create(i.x,i.y),(i.xthis.width+o)&&(i.y>this.height+o||i.ythis.width+o?n=ne.create(this.width+o,i.y):i.y>this.height+o?n=ne.create(i.x,this.height+o):i.ya!==r[0]);o.push(n),o.sort((i,a)=>i[0]===a[0]?i[0]===0?i[1]-a[1]:i[1]===1?a[1]-i[1]:i[1]-a[1]:i[0]-a[0]),this.setState({points:o}),this.change(o),this.gElement.innerHTML="",this.ghostPoints=[],document.removeEventListener("mousemove",this.handleDrag,!0),document.removeEventListener("mouseup",this.handlePointUpdate,!0)}handleDoubleClick(e){let r=this.myRef.createSVGPoint();r.x=e.clientX,r.y=e.clientY;let n=r.matrixTransform(this.myRef.getScreenCTM().inverse()),o=this.state.points,i=this.padding/2;if(n.xthis.width+i||n.y>this.height+i||n.ys[0]===l[0]?s[0]===0?s[1]-l[1]:s[1]===1?l[1]-s[1]:s[1]-l[1]:s[0]-l[0]),this.setState({points:o}),this.change(o)}handleLeave(){this.selected!==void 0&&(document.addEventListener("mousemove",this.handleDrag,!0),document.addEventListener("mouseup",this.handlePointUpdate,!0))}handleEnter(){document.removeEventListener("mousemove",this.handleDrag,!0),document.removeEventListener("mouseup",this.handlePointUpdate,!0)}normalizePoint(e){let r=this.padding/2,n=this.width+r,o=this.height+r,i=e[0]*(n-r)+r,a=e[1]*(o-r)+r,s=this.height+this.padding-a;return ne.create(i,s)}unNormalizePoint(e){let r=this.padding/2,n=this.width+r,o=this.height+r,i=(e[0]-r)/(n-r),a=(this.height+this.padding-e[1]-r)/(o-r);return ne.create(i,a)}refCallBack(e){e&&(this.myRef=e)}renderHistogram(){if(!this.props.volume)return null;let e=Sn.getHistogram(this.props.volume.grid,40),r=[],n=e.counts.length,o=this.width/n,i=this.padding/2,a=Mi(e.counts)||1;for(let s=0;s{this.setState({isChanging:!0})},this.end=e=>{this.setState({isChanging:!1}),this.props.onChange(e)},this.updateCurrent=e=>{var r,n;this.setState({current:e}),(n=(r=this.props).onChangeImmediate)===null||n===void 0||n.call(r,e)},this.updateManually=e=>{this.setState({isChanging:!0});let r=e;this.props.step===1&&(r=Math.round(r)),rthis.props.max&&(r=this.props.max),this.setState({current:r,isChanging:!0})},this.onManualBlur=()=>{this.setState({isChanging:!1}),this.props.onChange(this.state.current)}}static getDerivedStateFromProps(e,r){return r.isChanging||e.value===r.current?null:{current:e.value}}render(){let e=this.props.step;return e===void 0&&(e=1),(0,ja.jsxs)("div",{className:"msp-slider",children:[(0,ja.jsx)("div",{children:(0,ja.jsx)(PS,{min:this.props.min,max:this.props.max,step:e,value:this.state.current,disabled:this.props.disabled,onBeforeChange:this.begin,onChange:this.updateCurrent,onAfterChange:this.end})}),(0,ja.jsx)("div",{children:(0,ja.jsx)(fl,{numeric:!0,delayMs:50,value:this.state.current,blurOnEnter:!0,onBlur:this.onManualBlur,isDisabled:this.props.disabled,onChange:this.updateManually})})]})}},hP=class extends Im.Component{constructor(){super(...arguments),this.state={isChanging:!1,current:[0,1]},this.begin=()=>{this.setState({isChanging:!0})},this.end=e=>{this.setState({isChanging:!1}),this.props.onChange(e)},this.updateCurrent=e=>{this.setState({current:e})},this.updateMax=e=>{let r=e;this.props.step===1&&(r=Math.round(r)),rthis.props.max&&(r=this.props.max),this.props.onChange([this.state.current[0],r])},this.updateMin=e=>{let r=e;this.props.step===1&&(r=Math.round(r)),rthis.state.current[1]?r=this.state.current[1]:r>this.props.max&&(r=this.props.max),this.props.onChange([r,this.state.current[1]])}}static getDerivedStateFromProps(e,r){return r.isChanging||e.value[0]===r.current[0]&&e.value[1]===r.current[1]?null:{current:e.value}}render(){let e=this.props.step;return e===void 0&&(e=1),(0,ja.jsxs)("div",{className:"msp-slider2",children:[(0,ja.jsx)("div",{children:(0,ja.jsx)(fl,{numeric:!0,delayMs:50,value:this.state.current[0],onEnter:this.props.onEnter,blurOnEnter:!0,isDisabled:this.props.disabled,onChange:this.updateMin})}),(0,ja.jsx)("div",{children:(0,ja.jsx)(PS,{min:this.props.min,max:this.props.max,step:e,value:this.state.current,disabled:this.props.disabled,onBeforeChange:this.begin,onChange:this.updateCurrent,onAfterChange:this.end,range:!0,allowCross:!0})}),(0,ja.jsx)("div",{children:(0,ja.jsx)(fl,{numeric:!0,delayMs:50,value:this.state.current[1],onEnter:this.props.onEnter,blurOnEnter:!0,isDisabled:this.props.disabled,onChange:this.updateMax})})]})}};function TB(t){let e=[],r={}.hasOwnProperty;for(let n=0;n1||t.type.toLowerCase()==="touchend"&&t.touches.length>0}function QJ(t,e){return t?e.touches[0].clientY:e.touches[0].pageX}function KJ(t,e){return t?e.clientY:e.pageX}function $J(t,e){let r=e.getBoundingClientRect();return t?r.top+r.height*.5:r.left+r.width*.5}function CB(t){t.stopPropagation(),t.preventDefault()}var wB=class extends Im.Component{render(){let{className:e,tipFormatter:r,vertical:n,offset:o,value:i,index:a}=this.props,s=n?{bottom:`${o}%`}:{left:`${o}%`};return(0,ja.jsx)("div",{className:e,style:s,title:r(i,a)})}},PS=class extends Im.Component{constructor(e){super(e),this.sliderElement=Im.createRef(),this.handleElements=[],this.dragOffset=0,this.startPosition=0,this.startValue=0,this._getPointsCache=void 0,this.onMouseDown=u=>{if(u.button!==0)return;let d=KJ(this.props.vertical,u);if(!this.isEventFromHandle(u))this.dragOffset=0;else{let m=$J(this.props.vertical,u.target);this.dragOffset=d-m,d=m}this.onStart(d),this.addDocumentEvents("mouse"),CB(u)},this.onTouchMove=u=>{if(YJ(u)){this.end("touch");return}let d=QJ(this.props.vertical,u);this.onMove(u,d-this.dragOffset)},this.onTouchStart=u=>{if(YJ(u))return;let d=QJ(this.props.vertical,u);if(!this.isEventFromHandle(u))this.dragOffset=0;else{let m=$J(this.props.vertical,u.target);this.dragOffset=d-m,d=m}this.onStart(d),this.addDocumentEvents("touch"),CB(u)},this.eventHandlers={touchmove:u=>this.onTouchMove(u),touchend:u=>this.end("touch"),mousemove:u=>this.onMouseMove(u),mouseup:u=>this.end("mouse")},this.calcOffset=u=>{let{min:d,max:m}=this.props;return(u-d)/(m-d)*100};let{range:r,min:n,max:o}=e,i=r?Array.apply(null,Array(+r+1)).map(()=>n):n,a="defaultValue"in e?e.defaultValue:i,s=e.value!==void 0?e.value:a,l=(r?s:[n,s]).map(u=>this.trimAlignValue(u)),c;r&&l[0]===l[l.length-1]&&l[0]===o?c=0:c=l.length-1,this.state={handle:null,recent:c,bounds:l}}componentDidUpdate(e){if(!("value"in this.props||"min"in this.props||"max"in this.props))return;let{bounds:r}=this.state;if(e.range){let o=(this.props.value||r).map(i=>this.trimAlignValue(i,this.props));if(o.every((i,a)=>i===r[a]))return;this.setState({bounds:o}),r.some(i=>this.isValueOutOfBounds(i,this.props))&&this.props.onChange(o)}else{let n=this.props.value!==void 0?this.props.value:r[1],o=this.trimAlignValue(n,this.props);if(o===r[1]&&r[0]===e.min)return;this.setState({bounds:[e.min,o]}),this.isValueOutOfBounds(r[1],this.props)&&this.props.onChange(o)}}onChange(e){let r=this.props;!("value"in r)?this.setState(e):e.handle!==void 0&&this.setState({handle:e.handle});let o=w(w({},this.state),e),i=r.range?o.bounds:o.bounds[1];r.onChange(i)}onMouseMove(e){let r=KJ(this.props.vertical,e);this.onMove(e,r-this.dragOffset)}onMove(e,r){CB(e);let n=this.props,o=this.state,i=r-this.startPosition;i=this.props.vertical?-i:i;let a=i/this.getSliderLength()*(n.max-n.min),s=this.trimAlignValue(this.startValue+a),l=o.bounds[o.handle];if(s===l)return;let c=[...o.bounds];c[o.handle]=s;let u=o.handle;if(n.pushable){let d=o.bounds[u];this.pushSurroundingHandles(c,u,d)}else n.allowCross&&(c.sort((d,m)=>d-m),u=c.indexOf(s));this.onChange({handle:u,bounds:c})}onStart(e){this.props.onBeforeChange(this.getValue());let n=this.calcValueByPos(e);this.startValue=n,this.startPosition=e;let o=this.state,{bounds:i}=o,a=1;if(this.props.range){let c=0;for(let d=1;di[d]&&(c=d);Math.abs(i[c+1]-n)l-c),this._getPointsCache={marks:e,step:r,points:s}}return this._getPointsCache.points}getPrecision(e){let r=e.toString(),n=0;return r.indexOf(".")>=0&&(n=r.length-r.indexOf(".")-1),n}getSliderLength(){let e=this.sliderElement.current;return e?this.props.vertical?e.clientHeight:e.clientWidth:0}getSliderStart(){let r=this.sliderElement.current.getBoundingClientRect();return this.props.vertical?r.top:r.left}getValue(){let{bounds:e}=this.state;return this.props.range?e:e[1]}addDocumentEvents(e){e==="touch"?(document.addEventListener("touchmove",this.eventHandlers.touchmove),document.addEventListener("touchend",this.eventHandlers.touchend)):e==="mouse"&&(document.addEventListener("mousemove",this.eventHandlers.mousemove),document.addEventListener("mouseup",this.eventHandlers.mouseup))}calcValue(e){let{vertical:r,min:n,max:o}=this.props,i=Math.abs(e/this.getSliderLength());return r?(1-i)*(o-n)+n:i*(o-n)+n}calcValueByPos(e){let r=e-this.getSliderStart();return this.trimAlignValue(this.calcValue(r))}end(e){this.removeEvents(e),this.props.onAfterChange(this.getValue()),this.setState({handle:null})}isEventFromHandle(e){for(let r of this.handleElements)if(r.current===e.target)return!0;return!1}isValueOutOfBounds(e,r){return er.max}pushHandle(e,r,n,o){let i=e[r],a=e[r];for(;n*(a-i)=o.length||a<0)return!1;let s=r+n,l=o[a],{pushable:c}=this.props,u=n*(e[s]-l);return this.pushHandle(e,s,n,+c-u)?(e[r]=l,!0):!1}pushSurroundingHandles(e,r,n){let{pushable:o}=this.props,i=e[r],a=0;if(e[r+1]-i<+o?a=1:i-e[r-1]<+o&&(a=-1),a===0)return;let s=r+a,l=a*(e[s]-i);this.pushHandle(e,s,a,+o-l)||(e[r]=n)}removeEvents(e){e==="touch"?(document.removeEventListener("touchmove",this.eventHandlers.touchmove),document.removeEventListener("touchend",this.eventHandlers.touchend)):e==="mouse"&&(document.removeEventListener("mousemove",this.eventHandlers.mousemove),document.removeEventListener("mouseup",this.eventHandlers.mouseup))}trimAlignValue(e,r){let{handle:n,bounds:o}=this.state||{},{marks:i,step:a,min:s,max:l,allowCross:c}=w(w({},this.props),r||{}),u=e;u<=s&&(u=s),u>=l&&(u=l),!c&&n!=null&&n>0&&u<=o[n-1]&&(u=o[n-1]),!c&&n!=null&&n=o[n+1]&&(u=o[n+1]);let d=Object.keys(i).map(parseFloat);if(a!==null){let h=Math.round((u-s)/a)*a+s;d.push(h)}let m=d.map(h=>Math.abs(u-h)),p=d[m.indexOf(Math.min.apply(Math,m))];return a!==null?parseFloat(p.toFixed(this.getPrecision(a))):p}render(){let{handle:e,bounds:r}=this.state,{className:n,prefixCls:o,disabled:i,vertical:a,range:s,step:l,marks:c,tipFormatter:u}=this.props,d=this.props.handle,m=r.map(this.calcOffset),p=`${o}-handle`,h=r.map((S,T)=>TB({[p]:!0,[`${p}-${T+1}`]:!0,[`${p}-lower`]:T===0,[`${p}-upper`]:T===r.length-1})),b={prefixCls:o,noTip:l===null||u===null,tipFormatter:u,vertical:a};if(this.handleElements.length!==r.length){this.handleElements=[];for(let S=0;SIm.cloneElement(d,U(w({},b),{className:h[T],value:S,offset:m[T],dragging:e===T,index:T,key:T,ref:this.handleElements[T]})));s||v.shift();let x=TB({[o]:!0,[`${o}-with-marks`]:Object.keys(c).length,[`${o}-disabled`]:i,[`${o}-vertical`]:this.props.vertical,[n]:!!n});return(0,ja.jsxs)("div",{ref:this.sliderElement,className:x,onTouchStart:i?hs:this.onTouchStart,onMouseDown:i?hs:this.onMouseDown,children:[(0,ja.jsx)("div",{className:`${o}-rail`}),v]})}};PS.defaultProps={prefixCls:"msp-slider-base",className:"",min:0,max:100,step:1,marks:{},handle:(0,ja.jsx)(wB,{className:"",vertical:!1,offset:0,tipFormatter:t=>t,value:0,index:0}),onBeforeChange:hs,onChange:hs,onAfterChange:hs,tipFormatter:(t,e)=>t,disabled:!1,range:!1,vertical:!1,allowCross:!0,pushable:!1};var Hr=class extends $n.PureComponent{constructor(){super(...arguments),this.onChange=e=>{var r,n;if((n=(r=this.props).onChange)===null||n===void 0||n.call(r,e,this.props.values),this.props.onChangeValues){let o=U(w({},this.props.values),{[e.name]:e.value});this.props.onChangeValues(o,this.props.values)}},this.paramGroups=Js(e=>QEe(e))}renderGroup(e){var r;if(e.length===0)return null;let n=this.props.values,o=null,i;for(let[a,s,l]of e)!((r=s.hideIf)===null||r===void 0)&&r.call(s,n)||(o||(o=[]),i=s.category,o.push((0,ve.jsx)(l,{param:s,onChange:this.onChange,onEnter:this.props.onEnter,isDisabled:this.props.isDisabled,name:a,value:n[a]},a)));return o?i?[(0,ve.jsx)(Ci,{header:i,children:o},i)]:o:null}renderPart(e){let r=null;for(let n of e){let o=this.renderGroup(n);if(o){r||(r=[]);for(let i of o)r.push(i)}}return r}render(){let e=this.paramGroups(this.props.params),r=this.renderPart(e.essentials),n=this.renderPart(e.advanced);return r&&n?(0,ve.jsxs)(ve.Fragment,{children:[r,(0,ve.jsx)(Ci,{header:"Advanced Options",children:n})]}):r||n}},yP=class extends Mt{constructor(){super(...arguments),this.state={isDisabled:!1},this.setSettings=(e,r)=>{let n=U(w({},r),{[e.name]:e.value}),o=this.props.mapping.update(n,this.plugin);this.props.mapping.apply(o,this.plugin)}}componentDidMount(){this.subscribe(this.plugin.state.data.behaviors.isUpdating,e=>{this.setState({isDisabled:e})})}render(){let e=this.props.mapping.getTarget(this.plugin),r=this.props.mapping.getValues(e,this.plugin),n=this.props.mapping.params(this.plugin);return(0,ve.jsx)(Hr,{params:n,values:r,onChange:this.setSettings,isDisabled:this.state.isDisabled})}};function QEe(t){function e(a,s,l){let c=kS(s);if(c)if(!s.category)l.params[0].push([a,s,c]);else{l.map||(l.map=new Map);let u=l.map.get(s.category);u||(u=[],l.map.set(s.category,u),l.params.push(u)),u.push([a,s,c])}}function r(a,s){let l=a[0],c=s[0];return!l||!l[1].category?-1:!c||!c[1].category?1:l[1].categorythis.setState({showHelp:!this.state.showHelp})}update(e){this.props.onChange({param:this.props.param,name:this.props.name,value:e})}renderAddOn(){return null}render(){return xy({props:this.props,state:this.state,control:this.renderControl(),toggleHelp:this.toggleHelp,addOn:this.renderAddOn()})}},DS=class extends by{constructor(){super(...arguments),this.onClick=e=>{this.update(!this.props.value),e.currentTarget.blur()}}renderControl(){return(0,ve.jsxs)("button",{onClick:this.onClick,disabled:this.props.isDisabled,children:[(0,ve.jsx)(pr,{svg:this.props.value?Pc:lB}),this.props.value?"On":"Off"]})}},_B=class extends $n.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!1,isOverPoint:!1,message:`${this.props.param.defaultValue.length} points`},this.onHover=e=>{this.setState({isOverPoint:!this.state.isOverPoint}),e?this.setState({message:this.pointToLabel(e)}):this.setState({message:`${this.props.value.length} points`})},this.onDrag=e=>{this.setState({message:this.pointToLabel(e)})},this.onChange=e=>{this.props.onChange({name:this.props.name,param:this.props.param,value:e})},this.toggleExpanded=e=>{this.setState({isExpanded:!this.state.isExpanded}),e.currentTarget.blur()}}pointToLabel(e){var r,n;if(!e)return"";let o=(n=(r=this.props.param).getVolume)===null||n===void 0?void 0:n.call(r);if(o){let{min:i,max:a,mean:s,sigma:l}=o.grid.stats,c=i+(a-i)*e[0],u=(c-s)/l;return`(${c.toFixed(2)} | ${u.toFixed(2)}\u03C3, ${e[1].toFixed(2)})`}else return`(${e[0].toFixed(2)}, ${e[1].toFixed(2)})`}render(){var e,r;let n=this.props.param.label||Di(this.props.name);return(0,ve.jsxs)(ve.Fragment,{children:[(0,ve.jsx)(Ga,{label:n,control:(0,ve.jsx)("button",{onClick:this.toggleExpanded,disabled:this.props.isDisabled,children:`${this.state.message}`})}),(0,ve.jsx)("div",{className:"msp-control-offset",style:{display:this.state.isExpanded?"block":"none",marginTop:1},children:(0,ve.jsx)(pP,{data:this.props.value,volume:(r=(e=this.props.param).getVolume)===null||r===void 0?void 0:r.call(e),onChange:this.onChange,onHover:this.onHover,onDrag:this.onDrag})})]})}},PB=class extends $n.PureComponent{constructor(){super(...arguments),this.state={value:"0"},this.update=e=>{let r=zx(this.props.param.step||.01);e=parseFloat(e.toFixed(r)),this.props.onChange({param:this.props.param,name:this.props.name,value:e})}}render(){let e=this.props.param.label||Di(this.props.name),r=this.props.param.label||Di(this.props.name),n=zx(this.props.param.step||.01);return(0,ve.jsx)(Ga,{title:this.props.param.description,label:r,control:(0,ve.jsx)(fl,{numeric:!0,value:parseFloat(this.props.value.toFixed(n)),onEnter:this.props.onEnter,placeholder:e,isDisabled:this.props.isDisabled,onChange:this.update})})}},EB=class extends by{constructor(){super(...arguments),this.onChange=e=>{this.update(e)}}renderControl(){let e=typeof this.props.value>"u"?this.props.param.defaultValue:this.props.value;return(0,ve.jsx)(rb,{value:e,min:this.props.param.min,max:this.props.param.max,step:this.props.param.step,onChange:this.onChange,onChangeImmediate:this.props.param.immediateUpdate?this.onChange:void 0,disabled:this.props.isDisabled,onEnter:this.props.onEnter})}},vP=class extends by{constructor(){super(...arguments),this.updateValue=e=>{e!==this.props.value&&this.update(e)}}renderControl(){let e=this.props.param.placeholder||this.props.param.label||Di(this.props.name);return(0,ve.jsx)(KEe,{props:this.props,placeholder:e,update:this.updateValue})}};function KEe({props:t,placeholder:e,update:r}){let[n,o]=$n.useState(t.value);return $n.useEffect(()=>o(t.value),[t.value]),t.param.multiline?(0,ve.jsx)("div",{className:"msp-control-text-area-wrapper",children:(0,ve.jsx)("textarea",{value:t.param.disableInteractiveUpdates?n||"":t.value,placeholder:e,onChange:i=>{t.param.disableInteractiveUpdates?o(i.target.value):r(i.target.value)},onBlur:i=>{t.param.disableInteractiveUpdates&&r(i.target.value)},onKeyDown:i=>{i.key==="Enter"&&(i.shiftKey||i.ctrlKey||i.metaKey)&&i.currentTarget.blur()},disabled:t.isDisabled})}):(0,ve.jsx)("input",{type:"text",value:t.param.disableInteractiveUpdates?n||"":t.value,placeholder:e,onChange:i=>{t.param.disableInteractiveUpdates?o(i.target.value):r(i.target.value)},onBlur:i=>{t.param.disableInteractiveUpdates&&r(i.target.value)},disabled:t.isDisabled,onKeyDown:i=>{i.key==="Enter"&&(t.onEnter?(i.stopPropagation(),t.onEnter()):i.key==="Enter"&&(i.shiftKey||i.ctrlKey||i.metaKey)?i.currentTarget.blur():t.param.disableInteractiveUpdates&&r(n))}})}var Dm=class extends $n.PureComponent{constructor(){super(...arguments),this.onChange=e=>{typeof this.props.param.defaultValue=="number"?this.update(parseInt(e.target.value,10)):this.update(e.target.value)}}update(e){this.props.onChange({param:this.props.param,name:this.props.name,value:e})}render(){let e=this.props.value!==void 0&&!this.props.param.options.some(r=>r[0]===this.props.value);return(0,ve.jsxs)("select",{className:"msp-form-control",title:this.props.title,value:this.props.value!==void 0?this.props.value:this.props.param.defaultValue,onChange:this.onChange,disabled:this.props.isDisabled,children:[e&&(0,ve.jsx)("option",{value:this.props.value,children:`[Invalid] ${this.props.value}`},this.props.value),this.props.param.options.map(([r,n])=>(0,ve.jsx)("option",{value:r,children:n},r))]})}},nb=class extends $n.PureComponent{constructor(){super(...arguments),this.state={showHelp:!1,showOptions:!1},this.onSelect=e=>{!e||e.value===this.props.value?this.setState({showOptions:!1}):this.setState({showOptions:!1},()=>{this.props.onChange({param:this.props.param,name:this.props.name,value:e.value})})},this.toggle=()=>this.setState({showOptions:!this.state.showOptions}),this.cycle=()=>{let{options:e}=this.props.param,r=e.findIndex(o=>o[0]===this.props.value),n=r===e.length-1?0:r+1;this.props.onChange({param:this.props.param,name:this.props.name,value:e[n][0]})},this.items=Js(e=>wt.createItemsFromSelectOptions(e.options)),this.toggleHelp=()=>this.setState({showHelp:!this.state.showHelp})}renderControl(){var e;let r=this.items(this.props.param),n=this.props.value!==void 0?wt.findItem(r,this.props.value):void 0,o=n?n.label:typeof this.props.value>"u"?`${((e=wt.getFirstItem(r))===null||e===void 0?void 0:e.label)||""} [Default]`:`[Invalid] ${this.props.value}`,i=this.props.param.cycle?this.cycle:this.toggle,a=this.props.param.cycle?"center":"left",s=this.props.param.cycle?this.props.value==="on"?Pc:this.props.value==="off"?lB:void 0:void 0;return(0,ve.jsx)(Gn,{disabled:this.props.isDisabled,style:{textAlign:a,overflow:"hidden",textOverflow:"ellipsis"},label:o,title:o,icon:s,toggle:i,isSelected:this.state.showOptions})}renderAddOn(){if(!this.state.showOptions)return null;let e=this.items(this.props.param),r=wt.findItem(e,this.props.value);return(0,ve.jsx)(wt,{items:e,current:r,onSelect:this.onSelect})}render(){return xy({props:this.props,state:this.state,control:this.renderControl(),toggleHelp:this.toggleHelp,addOn:this.renderAddOn()})}},$Ee=(()=>{class t extends $n.PureComponent{constructor(){super(...arguments),this.state={showHelp:!1,showOptions:!1},this.onSelect=r=>{!r||r.value===this.props.value?this.setState({showOptions:!1}):this.setState({showOptions:!1},()=>{this.props.onChange({param:this.props.param,name:this.props.name,value:{ref:r.value}})})},this.toggle=()=>this.setState({showOptions:!this.state.showOptions}),this.toggleHelp=()=>this.setState({showHelp:!this.state.showHelp})}get items(){return wt.createItemsFromSelectOptions(this.props.param.getOptions(this.context))}renderControl(){var r;let n=this.items,o=this.props.value.ref?wt.findItem(n,this.props.value.ref):void 0,i=o?o.label:`[Ref] ${(r=this.props.value.ref)!==null&&r!==void 0?r:""}`;return(0,ve.jsx)(Gn,{disabled:this.props.isDisabled,style:{textAlign:"left",overflow:"hidden",textOverflow:"ellipsis"},label:i,title:i,toggle:this.toggle,isSelected:this.state.showOptions})}renderAddOn(){if(!this.state.showOptions)return null;let r=this.items,n=wt.findItem(r,this.props.value.ref);return(0,ve.jsx)(wt,{items:r,current:n,onSelect:this.onSelect})}render(){return xy({props:this.props,state:this.state,control:this.renderControl(),toggleHelp:this.toggleHelp,addOn:this.renderAddOn()})}}return t.contextType=Hl,t})(),IB=class extends $n.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!1},this.components={0:g.Numeric(0,{step:this.props.param.step},{label:"Min"}),1:g.Numeric(0,{step:this.props.param.step},{label:"Max"})},this.componentChange=({name:e,value:r})=>{let n=[...this.props.value];n[+e]=r,this.change(n)},this.toggleExpanded=e=>{this.setState({isExpanded:!this.state.isExpanded}),e.currentTarget.blur()}}change(e){this.props.onChange({name:this.props.name,param:this.props.param,value:e})}render(){let e=this.props.value,r=this.props.param.label||Di(this.props.name),n=zx(this.props.param.step||.01),o=`[${e[0].toFixed(n)}, ${e[1].toFixed(n)}]`;return(0,ve.jsxs)(ve.Fragment,{children:[(0,ve.jsx)(Ga,{label:r,control:(0,ve.jsx)("button",{onClick:this.toggleExpanded,disabled:this.props.isDisabled,children:o})}),this.state.isExpanded&&(0,ve.jsx)("div",{className:"msp-control-offset",children:(0,ve.jsx)(Hr,{params:this.components,values:e,onChange:this.componentChange,onEnter:this.props.onEnter})})]})}},DB=class extends by{constructor(){super(...arguments),this.onChange=e=>{this.update(e)}}renderControl(){return(0,ve.jsx)(hP,{value:this.props.value,min:this.props.param.min,max:this.props.param.max,step:this.props.param.step,onChange:this.onChange,disabled:this.props.isDisabled,onEnter:this.props.onEnter})}};function ES(t,e=!1){return Array.isArray(t)?e?`${ce.toStyle(t[0])} ${(100*t[1]).toFixed(2)}%`:ce.toStyle(t[0]):ce.toStyle(t)}var ZEe=Pg(t=>`linear-gradient(to right, ${t.map(r=>ES(r,!0)).join(", ")})`),JEe=Pg(t=>{let e=t.length,r=[`${ES(t[0])} ${100*(1/e)}%`];for(let n=1,o=e-1;n{let r=Za(e[0]);return(0,ve.jsx)("div",{style:HB({kind:r.type!=="qualitative"?"interpolate":"set",colors:r.list})})};return{ColorPresets:{all:wt.createItemsFromSelectOptions(Tz,{addOn:t}),scale:wt.createItemsFromSelectOptions(wz,{addOn:t}),set:wt.createItemsFromSelectOptions(_z,{addOn:t})},ColorsParam:g.ObjectList({color:g.Color(0)},({color:e})=>ce.toHexString(e).toUpperCase()),OffsetColorsParam:g.ObjectList({color:g.Color(0),offset:g.Numeric(0,{min:0,max:1,step:.01})},({color:e,offset:r})=>`${ce.toHexString(e).toUpperCase()} [${r.toFixed(2)}]`),IsInterpolatedParam:g.Boolean(!1,{label:"Interpolated"})}}var gP;function ZJ(){return gP||(gP=tIe(),gP)}var AB=class extends $n.PureComponent{constructor(){super(...arguments),this.state={showHelp:!1,show:void 0},this.toggleEdit=()=>this.setState({show:this.state.show==="edit"?void 0:"edit"}),this.togglePresets=()=>this.setState({show:this.state.show==="presets"?void 0:"presets"}),this.selectPreset=e=>{if(!e)return;this.setState({show:void 0});let r=Za(e.value);this.update({kind:r.type!=="qualitative"?"interpolate":"set",colors:r.list})},this.colorsChanged=({value:e})=>{this.update({kind:this.props.value.kind,colors:e.map(r=>r.color)})},this.isInterpolatedChanged=({value:e})=>{this.update({kind:e?"interpolate":"set",colors:this.props.value.colors})},this.toggleHelp=()=>this.setState({showHelp:!this.state.showHelp})}update(e){this.props.onChange({param:this.props.param,name:this.props.name,value:e})}renderControl(){let{value:e}=this.props;return(0,ve.jsxs)(ve.Fragment,{children:[(0,ve.jsxs)("button",{onClick:this.toggleEdit,style:{position:"relative",paddingRight:"33px"},children:[e.colors.length===1?"1 color":`${e.colors.length} colors`,(0,ve.jsx)("div",{style:HB(e,"33px")})]}),(0,ve.jsx)(pt,{svg:Mp,onClick:this.togglePresets,toggleState:this.state.show==="presets",title:"Color Presets",style:{padding:0,position:"absolute",right:0,top:0,width:"32px"}})]})}renderColors(){if(!this.state.show)return null;let{ColorPresets:e,ColorsParam:r,IsInterpolatedParam:n}=ZJ(),o=e[this.props.param.presetKind];if(this.state.show==="presets")return(0,ve.jsx)(wt,{items:o,onSelect:this.selectPreset});let i=this.props.value.colors.map(a=>({color:a}));return(0,ve.jsxs)("div",{className:"msp-control-offset",children:[(0,ve.jsx)(AS,{name:"colors",param:r,value:i,onChange:this.colorsChanged,isDisabled:this.props.isDisabled,onEnter:this.props.onEnter}),(0,ve.jsx)(DS,{name:"isInterpolated",param:n,value:this.props.value.kind==="interpolate",onChange:this.isInterpolatedChanged,isDisabled:this.props.isDisabled,onEnter:this.props.onEnter})]})}render(){return xy({props:this.props,state:this.state,control:this.renderControl(),toggleHelp:this.toggleHelp,addOn:this.renderColors()})}},kB=class extends $n.PureComponent{constructor(){super(...arguments),this.state={showHelp:!1,show:void 0},this.toggleEdit=()=>this.setState({show:this.state.show==="edit"?void 0:"edit"}),this.togglePresets=()=>this.setState({show:this.state.show==="presets"?void 0:"presets"}),this.selectPreset=e=>{if(!e)return;this.setState({show:void 0});let r=Za(e.value);this.update({kind:r.type!=="qualitative"?"interpolate":"set",colors:r.list})},this.colorsChanged=({value:e})=>{let r=e.map(n=>[n.color,n.offset]);r.sort((n,o)=>n[1]-o[1]),this.update({kind:this.props.value.kind,colors:r})},this.isInterpolatedChanged=({value:e})=>{this.update({kind:e?"interpolate":"set",colors:this.props.value.colors})},this.toggleHelp=()=>this.setState({showHelp:!this.state.showHelp})}update(e){this.props.onChange({param:this.props.param,name:this.props.name,value:e})}renderControl(){let{value:e}=this.props;return(0,ve.jsxs)(ve.Fragment,{children:[(0,ve.jsxs)("button",{onClick:this.toggleEdit,style:{position:"relative",paddingRight:"33px"},children:[e.colors.length===1?"1 color":`${e.colors.length} colors`,(0,ve.jsx)("div",{style:HB(e,"33px")})]}),(0,ve.jsx)(pt,{svg:Mp,onClick:this.togglePresets,toggleState:this.state.show==="presets",title:"Color Presets",style:{padding:0,position:"absolute",right:0,top:0,width:"32px"}})]})}renderColors(){if(!this.state.show)return null;let{ColorPresets:e,OffsetColorsParam:r,IsInterpolatedParam:n}=ZJ(),o=e[this.props.param.presetKind];if(this.state.show==="presets")return(0,ve.jsx)(wt,{items:o,onSelect:this.selectPreset});let i=this.props.value.colors,a=i.map((s,l)=>Array.isArray(s)?{color:s[0],offset:s[1]}:{color:s,offset:l/i.length});return a.sort((s,l)=>s.offset-l.offset),(0,ve.jsxs)("div",{className:"msp-control-offset",children:[(0,ve.jsx)(AS,{name:"colors",param:r,value:a,onChange:this.colorsChanged,isDisabled:this.props.isDisabled,onEnter:this.props.onEnter}),(0,ve.jsx)(DS,{name:"isInterpolated",param:n,value:this.props.value.kind==="interpolate",onChange:this.isInterpolatedChanged,isDisabled:this.props.isDisabled,onEnter:this.props.onEnter})]})}render(){return xy({props:this.props,state:this.state,control:this.renderControl(),toggleHelp:this.toggleHelp,addOn:this.renderColors()})}},MB=class extends $n.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!1},this.components={0:g.Numeric(0,{step:this.props.param.step},{label:this.props.param.fieldLabels&&this.props.param.fieldLabels.x||"X"}),1:g.Numeric(0,{step:this.props.param.step},{label:this.props.param.fieldLabels&&this.props.param.fieldLabels.y||"Y"}),2:g.Numeric(0,{step:this.props.param.step},{label:this.props.param.fieldLabels&&this.props.param.fieldLabels.z||"Z"})},this.componentChange=({name:e,value:r})=>{let n=y.copy(y.zero(),this.props.value);n[+e]=r,this.change(n)},this.toggleExpanded=e=>{this.setState({isExpanded:!this.state.isExpanded}),e.currentTarget.blur()}}change(e){this.props.onChange({name:this.props.name,param:this.props.param,value:e})}render(){let e=this.props.value,r=this.props.param.label||Di(this.props.name),n=zx(this.props.param.step||.01),o=`[${e[0].toFixed(n)}, ${e[1].toFixed(n)}, ${e[2].toFixed(n)}]`;return(0,ve.jsxs)(ve.Fragment,{children:[(0,ve.jsx)(Ga,{label:r,control:(0,ve.jsx)("button",{onClick:this.toggleExpanded,disabled:this.props.isDisabled,children:o})}),this.state.isExpanded&&(0,ve.jsx)("div",{className:"msp-control-offset",children:(0,ve.jsx)(Hr,{params:this.components,values:e,onChange:this.componentChange,onEnter:this.props.onEnter})})]})}},RB=class extends $n.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!1},this.components={json:g.Text(JSON.stringify(W()),{description:"JSON array with 4x4 matrix in a column major (j * 4 + i indexing) format"})},this.componentChange=({name:e,value:r})=>{let n=W.copy(W(),this.props.value);e==="json"?W.copy(n,JSON.parse(r)):n[+e]=r,this.change(n)},this.toggleExpanded=e=>{this.setState({isExpanded:!this.state.isExpanded}),e.currentTarget.blur()}}change(e){this.props.onChange({name:this.props.name,param:this.props.param,value:e})}changeValue(e){return r=>{let n=W.copy(W(),this.props.value);n[e]=r,this.change(n)}}get grid(){let e=this.props.value,r=[];for(let n=0;n<4;n++){let o=[];for(let i=0;i<4;i++)o.push((0,ve.jsx)(fl,{numeric:!0,delayMs:50,value:W.getValue(e,n,i),onChange:this.changeValue(4*i+n),className:"msp-form-control",blurOnEnter:!0,isDisabled:this.props.isDisabled},i));r.push((0,ve.jsx)("div",{className:"msp-flex-row",children:o},n))}return(0,ve.jsx)("div",{className:"msp-parameter-matrix",children:r})}render(){let e={json:JSON.stringify(this.props.value)},r=this.props.param.label||Di(this.props.name);return(0,ve.jsxs)(ve.Fragment,{children:[(0,ve.jsx)(Ga,{label:r,control:(0,ve.jsx)("button",{onClick:this.toggleExpanded,disabled:this.props.isDisabled,children:"4\xD74 Matrix"})}),this.state.isExpanded&&(0,ve.jsxs)("div",{className:"msp-control-offset",children:[this.grid,(0,ve.jsx)(Hr,{params:this.components,values:e,onChange:this.componentChange,onEnter:this.props.onEnter})]})]})}},LB=class extends by{constructor(){super(...arguments),this.onChange=e=>{let r=e.target.value;r!==Wr.getUrl(this.props.value||"")&&this.update(Wr.Url(r))},this.onKeyPress=e=>{(e.keyCode===13||e.charCode===13||e.key==="Enter")&&this.props.onEnter&&this.props.onEnter(),e.stopPropagation()}}renderControl(){let e=this.props.param.label||Di(this.props.name);return(0,ve.jsx)("input",{type:"text",value:Wr.getUrl(this.props.value||""),placeholder:e,onChange:this.onChange,onKeyPress:this.props.onEnter?this.onKeyPress:void 0,disabled:this.props.isDisabled})}},BB=class extends $n.PureComponent{constructor(){super(...arguments),this.state={showHelp:!1},this.onChangeFile=e=>{this.change(e.target.files[0])},this.toggleHelp=()=>this.setState({showHelp:!this.state.showHelp})}change(e){this.props.onChange({name:this.props.name,param:this.props.param,value:Wr.File(e)})}renderControl(){let e=this.props.value;return(0,ve.jsxs)("div",{className:"msp-btn msp-btn-block msp-btn-action msp-loader-msp-btn-file",style:{marginTop:"1px"},children:[e?e.name:"Select a file..."," ",(0,ve.jsx)("input",{disabled:this.props.isDisabled,onChange:this.onChangeFile,type:"file",multiple:!1,accept:this.props.param.accept})]})}render(){return this.props.param.label?xy({props:this.props,state:this.state,control:this.renderControl(),toggleHelp:this.toggleHelp,addOn:null}):this.renderControl()}},OB=class extends $n.PureComponent{constructor(){super(...arguments),this.state={showHelp:!1},this.onChangeFileList=e=>{this.change(e.target.files)},this.toggleHelp=()=>this.setState({showHelp:!this.state.showHelp})}change(e){let r=[];if(e)for(let n=0,o=e.length;n{this.setState({isExpanded:!this.state.isExpanded}),e.currentTarget.blur()}}change(e){this.props.onChange({name:this.props.name,param:this.props.param,value:e})}toggle(e){return r=>{this.props.value.indexOf(e)<0?this.change(this.props.value.concat(e)):this.change(this.props.value.filter(n=>n!==e)),r.currentTarget.blur()}}render(){let e=this.props.value,r=this.props.param.emptyValue,n=this.props.param.label||Di(this.props.name);return(0,ve.jsxs)(ve.Fragment,{children:[(0,ve.jsx)(Ga,{label:n,control:(0,ve.jsx)("button",{onClick:this.toggleExpanded,disabled:this.props.isDisabled,children:e.length===0&&r?r:`${e.length} of ${this.props.param.options.length}`})}),this.state.isExpanded&&(0,ve.jsx)("div",{className:"msp-control-offset",children:this.props.param.options.map(([o,i])=>{let a=e.indexOf(o)>=0;return(0,ve.jsx)(vt,{onClick:this.toggle(o),disabled:this.props.isDisabled,style:{marginTop:"1px"},children:(0,ve.jsx)("span",{style:{float:a?"left":"right"},children:a?`\u2713 ${i}`:`${i} \u2717`})},o)})})]})}},bP=class extends $n.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!!this.props.param.isExpanded,showPresets:!1,showHelp:!1},this.onChangeParam=e=>{this.change(U(w({},this.props.value),{[e.name]:e.value}))},this.toggleExpanded=()=>this.setState({isExpanded:!this.state.isExpanded}),this.toggleShowPresets=()=>this.setState({showPresets:!this.state.showPresets}),this.presetItems=Js(e=>{var r;return wt.createItemsFromSelectOptions((r=e.presets)!==null&&r!==void 0?r:[])}),this.onSelectPreset=e=>{this.setState({showPresets:!1}),this.change(e?.value)}}change(e){this.props.onChange({name:this.props.name,param:this.props.param,value:e})}pivotedPresets(){if(!this.props.param.presets)return null;let e=this.props.param.label||Di(this.props.name);return(0,ve.jsxs)("div",{className:"msp-control-group-wrapper",children:[(0,ve.jsx)("div",{className:"msp-control-group-header",children:(0,ve.jsxs)("button",{className:"msp-btn msp-form-control msp-btn-block",onClick:this.toggleShowPresets,children:[(0,ve.jsx)(pr,{svg:Mp}),e," Presets"]})}),this.state.showPresets&&(0,ve.jsx)(wt,{items:this.presetItems(this.props.param),onSelect:this.onSelectPreset})]})}presets(){return this.props.param.presets?(0,ve.jsxs)(ve.Fragment,{children:[(0,ve.jsx)("div",{className:"msp-control-group-presets-wrapper",children:(0,ve.jsx)("div",{className:"msp-control-group-header",children:(0,ve.jsxs)("button",{className:"msp-btn msp-form-control msp-btn-block",onClick:this.toggleShowPresets,children:[(0,ve.jsx)(pr,{svg:Mp}),"Presets"]})})}),this.state.showPresets&&(0,ve.jsx)(wt,{items:this.presetItems(this.props.param),onSelect:this.onSelectPreset})]}):null}pivoted(){let e=this.props.param.pivot,r=this.props.param.params,n=r[e],o=kS(n),i=(0,ve.jsx)(o,{name:e,param:n,value:this.props.value[e],onChange:this.onChangeParam,onEnter:this.props.onEnter,isDisabled:this.props.isDisabled});if(!this.state.isExpanded)return(0,ve.jsxs)("div",{className:"msp-mapped-parameter-group",children:[i,(0,ve.jsx)(pt,{svg:Pu,onClick:this.toggleExpanded,toggleState:this.state.isExpanded,title:"More Options"})]});let a=Object.create(null);for(let s of Object.keys(r))s!==e&&(a[s]=r[s]);return(0,ve.jsxs)("div",{className:"msp-mapped-parameter-group",children:[i,(0,ve.jsx)(pt,{svg:Pu,onClick:this.toggleExpanded,toggleState:this.state.isExpanded,title:"More Options"}),(0,ve.jsxs)("div",{className:"msp-control-offset",children:[this.pivotedPresets(),(0,ve.jsx)(Hr,{params:a,onEnter:this.props.onEnter,values:this.props.value,onChange:this.onChangeParam,isDisabled:this.props.isDisabled})]})]})}render(){let e=this.props.param.params;if(Object.keys(e).length===0)return null;if(this.props.param.pivot)return this.pivoted();let r=this.props.param.label||Di(this.props.name),n=(0,ve.jsx)(Hr,{params:e,onChange:this.onChangeParam,values:this.props.value,onEnter:this.props.onEnter,isDisabled:this.props.isDisabled});return this.props.inMapped?(0,ve.jsx)("div",{className:"msp-control-offset",children:n}):this.props.param.isFlat?n:(0,ve.jsxs)("div",{className:"msp-control-group-wrapper",style:{position:"relative"},children:[(0,ve.jsx)("div",{className:"msp-control-group-header",children:(0,ve.jsxs)("button",{className:"msp-btn msp-form-control msp-btn-block",onClick:this.toggleExpanded,children:[(0,ve.jsx)(pr,{svg:this.state.isExpanded?Rs:Ls}),r]})}),this.presets(),this.state.isExpanded&&(0,ve.jsx)("div",{className:"msp-control-offset",children:n})]})}},NB=class extends $n.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!1},this.valuesCache={},this.onChangeName=e=>{this.change({name:e.value,params:this.getValues(e.value)})},this.onChangeParam=e=>{this.setValues(this.props.value.name,e.value),this.change({name:this.props.value.name,params:e.value})},this.toggleExpanded=()=>this.setState({isExpanded:!this.state.isExpanded})}setValues(e,r){this.valuesCache[e]=r}getValues(e){return e in this.valuesCache?this.valuesCache[e]:this.props.param.map(e).defaultValue}change(e){this.props.onChange({name:this.props.name,param:this.props.param,value:e})}areParamsEmpty(e){for(let r of Object.keys(e))if(!e[r].isHidden)return!1;return!0}render(){let e=this.props.value||this.props.param.defaultValue,r=this.props.param.map(e.name),n=this.props.param.label||Di(this.props.name),o=kS(r),i=this.props.param.help,a=i?U(w({},this.props.param.select),{help:l=>i({name:l,params:this.getValues(l)})}):this.props.param.select,s=(0,ve.jsx)(nb,{param:a,isDisabled:this.props.isDisabled,onChange:this.onChangeName,onEnter:this.props.onEnter,name:n,value:e.name});return o?r.type==="group"&&!r.isFlat?this.areParamsEmpty(r.params)?s:(0,ve.jsxs)("div",{className:"msp-mapped-parameter-group",children:[s,(0,ve.jsx)(pt,{svg:Pu,onClick:this.toggleExpanded,toggleState:this.state.isExpanded,title:`${n} Properties`}),this.state.isExpanded&&(0,ve.jsx)(bP,{inMapped:!0,param:r,value:e.params,name:e.name,onChange:this.onChangeParam,onEnter:this.props.onEnter,isDisabled:this.props.isDisabled})]}):(0,ve.jsxs)(ve.Fragment,{children:[s,(0,ve.jsx)(o,{param:r,value:e.params,name:e.name,onChange:this.onChangeParam,onEnter:this.props.onEnter,isDisabled:this.props.isDisabled})]}):s}},xP=class extends $n.PureComponent{constructor(){super(...arguments),this.state={current:this.props.value},this.onChangeParam=e=>{this.setState({current:U(w({},this.state.current),{[e.name]:e.value})})},this.apply=()=>{this.props.apply(this.state.current)}}componentDidUpdate(e){(this.props.params!==e.params||this.props.value!==e.value)&&this.setState({current:this.props.value})}render(){return(0,ve.jsxs)(ve.Fragment,{children:[(0,ve.jsx)(Hr,{params:this.props.params,onChange:this.onChangeParam,values:this.state.current,onEnter:this.apply,isDisabled:this.props.isDisabled}),(0,ve.jsx)("button",{className:"msp-btn msp-btn-block msp-form-control msp-control-top-offset",onClick:this.apply,disabled:this.props.isDisabled,children:this.props.isUpdate?"Update":"Add"})]})}},VB=class extends $n.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!1},this.update=e=>{this.props.actions.update(e,this.props.index)},this.moveUp=()=>{this.props.actions.move(this.props.index,-1)},this.moveDown=()=>{this.props.actions.move(this.props.index,1)},this.remove=()=>{this.setState({isExpanded:!1}),this.props.actions.remove(this.props.index)},this.toggleExpanded=e=>{this.setState({isExpanded:!this.state.isExpanded}),e.currentTarget.blur()}}render(){return(0,ve.jsxs)(ve.Fragment,{children:[(0,ve.jsxs)("div",{className:"msp-param-object-list-item",children:[(0,ve.jsxs)("button",{className:"msp-btn msp-btn-block msp-form-control",onClick:this.toggleExpanded,children:[(0,ve.jsx)("span",{children:`${this.props.index+1}: `}),this.props.param.getLabel(this.props.value)]}),(0,ve.jsxs)("div",{children:[(0,ve.jsx)(pt,{svg:_h,title:"Move Up",onClick:this.moveUp,small:!0}),(0,ve.jsx)(pt,{svg:Ph,title:"Move Down",onClick:this.moveDown,small:!0}),(0,ve.jsx)(pt,{svg:Hi,title:"Remove",onClick:this.remove,small:!0})]})]}),this.state.isExpanded&&(0,ve.jsx)("div",{className:"msp-control-offset",children:(0,ve.jsx)(xP,{params:this.props.param.element,apply:this.update,value:this.props.value,isUpdate:!0,isDisabled:this.props.isDisabled})})]})}},AS=class extends $n.PureComponent{constructor(){super(...arguments),this.state={isExpanded:!1},this.add=e=>{this.change([...this.props.value,e])},this.actions={update:(e,r)=>{let n=this.props.value.slice(0);n[r]=e,this.change(n)},move:(e,r)=>{let n=this.props.value;if(n.length===1)return;let o=(e+r)%n.length;o<0&&(o+=n.length),n=n.slice(0);let i=n[e];n[e]=n[o],n[o]=i,this.change(n)},remove:e=>{let r=this.props.value,n=[];for(let o=0;o{this.setState({isExpanded:!this.state.isExpanded}),e.currentTarget.blur()}}change(e){this.props.onChange({name:this.props.name,param:this.props.param,value:e})}render(){let e=this.props.value,r=this.props.param.label||Di(this.props.name),n=`${e.length} item${e.length!==1?"s":""}`;return(0,ve.jsxs)(ve.Fragment,{children:[(0,ve.jsx)(Ga,{label:r,control:(0,ve.jsx)("button",{onClick:this.toggleExpanded,disabled:this.props.isDisabled,children:n})}),this.state.isExpanded&&(0,ve.jsxs)("div",{className:"msp-control-offset",children:[this.props.value.map((o,i)=>(0,ve.jsx)(VB,{param:this.props.param,value:o,index:i,actions:this.actions,isDisabled:this.props.isDisabled},i)),(0,ve.jsx)(Ua,{header:"New Item",children:(0,ve.jsx)(xP,{params:this.props.param.element,apply:this.add,value:this.props.param.ctor(),isDisabled:this.props.isDisabled})})]})]})}},zB=class extends $n.PureComponent{constructor(){super(...arguments),this.onChangeCondition=e=>{this.change(this.props.param.conditionedValue(this.props.value,e.value))},this.onChangeParam=e=>{this.change(e.value)}}change(e){this.props.onChange({name:this.props.name,param:this.props.param,value:e})}render(){let e=this.props.value,r=this.props.param.conditionForValue(e),n=this.props.param.conditionParams[r],o=this.props.param.label||Di(this.props.name),i=kS(n),a=(0,ve.jsx)(nb,{param:this.props.param.select,isDisabled:this.props.isDisabled,onChange:this.onChangeCondition,onEnter:this.props.onEnter,name:`${o} Kind`,value:r});return i?(0,ve.jsxs)(ve.Fragment,{children:[a,(0,ve.jsx)(i,{param:n,value:e,name:o,onChange:this.onChangeParam,onEnter:this.props.onEnter,isDisabled:this.props.isDisabled})]}):a}},UB=class extends $n.PureComponent{constructor(){super(...arguments),this.onChange=e=>{this.props.onChange({name:this.props.name,param:this.props.param,value:this.props.param.toValue(e.value)})}}render(){let e=this.props.param.fromValue(this.props.value),r=kS(this.props.param.converted);return r?(0,ve.jsx)(r,{param:this.props.param.converted,value:e,name:this.props.name,onChange:this.onChange,onEnter:this.props.onEnter,isDisabled:this.props.isDisabled}):null}},GB=class extends $n.PureComponent{constructor(){super(...arguments),this.onChange=({name:e,value:r})=>{let n=e;r!==this.props.value[n]&&this.props.onChange({param:this.props.param,name:this.props.name,value:U(w({},this.props.value),{[n]:r})})}}render(){let e={defaultValue:this.props.value.language,options:g.objectToOptions(Jr.Info),type:"select"},r=(0,ve.jsx)(nb,{param:e,isDisabled:this.props.isDisabled,onChange:this.onChange,onEnter:this.props.onEnter,name:"language",value:this.props.value.language}),n={defaultValue:this.props.value.language,type:"text"},o=(0,ve.jsx)(vP,{param:n,isDisabled:this.props.isDisabled,onChange:this.onChange,name:"expression",value:this.props.value.expression});return(0,ve.jsxs)(ve.Fragment,{children:[r,this.props.value.language!=="mol-script"&&(0,ve.jsxs)("div",{className:"msp-help-text",style:{padding:"10px"},children:[(0,ve.jsx)(pr,{svg:uP})," Support for PyMOL, VMD, and Jmol selections is an experimental feature and may not always work as intended."]}),o]})}};var rIe={color:g.Color(ut.black,{description:"Display color of the volume."}),wireframe:g.Boolean(!1,{description:"Control display of the volume as a wireframe."}),opacity:g.Numeric(.3,{min:0,max:1,step:.01},{description:"Opacity of the volume."})},nIe=new Map([["em",[-5,5]],["2fo-fc",[0,3]],["fo-fc(+ve)",[1,5]],["fo-fc(-ve)",[-5,-1]]]),ob=class extends Mt{constructor(){super(...arguments),this.ref=lt.findTagInSubtree(this.plugin.state.data.tree,this.props.bCell.transform.ref,this.props.name),this.getVisible=()=>{let e=this.plugin.state.data,r=this.ref;return r?!e.cells.get(r).state.isHidden:!1},this.toggleVisible=()=>{let e=this.plugin.state.data,r=this.ref;r&&Id(e,r,!e.cells.get(r).state.isHidden)}}componentDidUpdate(){this.ref=lt.findTagInSubtree(this.plugin.state.data.tree,this.props.bCell.transform.ref,this.props.name)}componentDidMount(){this.subscribe(this.plugin.state.data.events.cell.stateUpdated,e=>{this.ref===e.ref&&this.forceUpdate()})}render(){let e=this.props,{isRelative:r,stats:n}=e,o=e.channels[e.name],{min:i,max:a,mean:s,sigma:l}=n,c=Math.round(100*(o.isoValue.kind==="relative"?o.isoValue.relativeValue:o.isoValue.absoluteValue))/100,u=(i-s)/l,d=(a-s)/l;if(!this.props.isUnbounded){let v=nIe.get(this.props.name);this.props.name==="em"?(u=Math.max(v[0],u),d=Math.min(v[1],d)):(u=v[0],d=v[1])}let m=s+l*u,p=s+l*d,h=Ux(r?Math.round((p-m)/l)/100:l/100,2),f=r?u:m,b=r?d:p;return(0,Os.jsx)(dP,{label:e.label+(e.isRelative?" \u03C3":""),colorStripe:o.color,pivot:(0,Os.jsxs)("div",{className:"msp-volume-channel-inline-controls",children:[(0,Os.jsx)(rb,{value:c,min:f,max:b,step:h,onChange:v=>e.changeIso(e.name,v,r),onChangeImmediate:v=>e.changeIso(e.name,v,r),disabled:e.params.isDisabled,onEnter:e.params.events.onEnter}),(0,Os.jsx)(pt,{svg:this.getVisible()?Ic:Ec,onClick:this.toggleVisible,toggleState:!1,disabled:e.params.isDisabled})]}),controls:(0,Os.jsx)(Hr,{onChange:({name:v,value:x})=>e.changeParams(e.name,v,x),params:rIe,values:o,onEnter:e.params.events.onEnter,isDisabled:e.params.isDisabled})})}},SP=class extends Mt{constructor(){super(...arguments),this.changeIso=(e,r,n)=>{let o=this.props.params;this.newParams(U(w({},o),{entry:{name:o.entry.name,params:U(w({},o.entry.params),{channels:U(w({},o.entry.params.channels),{[e]:U(w({},o.entry.params.channels[e]),{isoValue:n?xe.IsoValue.relative(r):xe.IsoValue.absolute(r)})})})}}))},this.changeParams=(e,r,n)=>{let o=this.props.params;this.newParams(U(w({},o),{entry:{name:o.entry.name,params:U(w({},o.entry.params),{channels:U(w({},o.entry.params.channels),{[e]:U(w({},o.entry.params.channels[e]),{[r]:n})})})}}))},this.changeOption=({name:e,value:r})=>{let n=this.props.params;if(e==="entry")this.newParams(U(w({},n),{entry:{name:r,params:n.entry.params}}));else{let o=this.props.b.data,i=o.info.kind==="em",a=r.params.isRelative,s=o.info.header.sampling[0],l=n.entry.params.channels,c=n.entry.params.view.name===r.name?n.entry.params.view.params:this.props.info.params.entry.map(n.entry.name).params.view.map(r.name).defaultValue,u=w({},c);r.name==="selection-box"?u.radius=r.params.radius:r.name==="camera-target"?(u.radius=r.params.radius,u.dynamicDetailLevel=r.params.dynamicDetailLevel):r.name==="box"?(u.bottomLeft=r.params.bottomLeft,u.topRight=r.params.topRight):r.name==="auto"&&(u.radius=r.params.radius,u.selectionDetailLevel=r.params.selectionDetailLevel),u.isUnbounded=!!r.params.isUnbounded,this.newParams(U(w({},n),{entry:{name:n.entry.name,params:U(w({},n.entry.params),{view:{name:r.name,params:u},detailLevel:r.params.detailLevel,channels:i?{em:this.convert(l.em,s.valuesInfo[0],a)}:{"2fo-fc":this.convert(l["2fo-fc"],s.valuesInfo[0],a),"fo-fc(+ve)":this.convert(l["fo-fc(+ve)"],s.valuesInfo[1],a),"fo-fc(-ve)":this.convert(l["fo-fc(-ve)"],s.valuesInfo[1],a)}})}}))}}}areInitial(e){return g.areEqual(this.props.info.params,e,this.props.info.initialValues)}newParams(e){this.props.events.onChange(e,this.areInitial(e))}convert(e,r,n){return U(w({},e),{isoValue:n?xe.IsoValue.toRelative(e.isoValue,r):xe.IsoValue.toAbsolute(e.isoValue,r)})}render(){if(!this.props.b)return null;let e=this.props.b.data,r=e.info.kind==="em",n=r?"em":"2fo-fc",o=this.props.params,i=this.props.info.params.entry.map(o.entry.name),a=i.params.detailLevel,s=U(w({},a),{label:"Dynamic Detail",defaultValue:i.params.view.map("camera-target").params.dynamicDetailLevel.defaultValue}),l=U(w({},a),{label:"Selection Detail",defaultValue:i.params.view.map("auto").params.selectionDetailLevel.defaultValue}),c=e.info.header.sampling[0],u=o.entry.params.channels[n].isoValue.kind==="relative",d=g.Boolean(u,{description:"Use normalized or absolute isocontour scale.",label:"Normalized"}),m=!!o.entry.params.view.params.isUnbounded,p=g.Boolean(m,{description:"Show full/limited range of iso-values for more fine-grained control.",label:"Unbounded"}),h=o.entry.params.view.name==="off",f={entry:g.Select(o.entry.name,e.data.entries.map(v=>[v.dataId,v.dataId]),{isHidden:h,description:"Which entry with volume data to display."}),view:g.MappedStatic(o.entry.params.view.name,{off:g.Group({isRelative:g.Boolean(u,{isHidden:!0}),isUnbounded:g.Boolean(m,{isHidden:!0})},{description:"Display off."}),box:g.Group({bottomLeft:g.Vec3(y.zero()),topRight:g.Vec3(y.zero()),detailLevel:a,isRelative:d,isUnbounded:p},{description:"Static box defined by cartesian coords."}),"selection-box":g.Group({radius:g.Numeric(5,{min:0,max:50,step:.5},{description:"Radius in \u212B within which the volume is shown."}),detailLevel:a,isRelative:d,isUnbounded:p},{description:"Box around focused element."}),"camera-target":g.Group({radius:g.Numeric(.5,{min:0,max:1,step:.05},{description:"Radius within which the volume is shown (relative to the field of view)."}),detailLevel:U(w({},a),{isHidden:!0}),dynamicDetailLevel:s,isRelative:d,isUnbounded:p},{description:"Box around camera target."}),cell:g.Group({detailLevel:a,isRelative:d,isUnbounded:p},{description:"Box around the structure's bounding box."}),auto:g.Group({radius:g.Numeric(5,{min:0,max:50,step:.5},{description:"Radius in \u212B within which the volume is shown."}),detailLevel:a,selectionDetailLevel:l,isRelative:d,isUnbounded:p},{description:"Box around focused element."})},{options:di.ViewTypeOptions,description:'Controls what of the volume is displayed. "Off" hides the volume alltogether. "Bounded box" shows the volume inside the given box. "Around Focus" shows the volume around the element/atom last interacted with. "Around Camera" shows the volume around the point the camera is targeting. "Whole Structure" shows the volume for the whole structure.'})},b={entry:o.entry.name,view:{name:o.entry.params.view.name,params:{detailLevel:o.entry.params.detailLevel,radius:o.entry.params.view.params.radius,bottomLeft:o.entry.params.view.params.bottomLeft,topRight:o.entry.params.view.params.topRight,selectionDetailLevel:o.entry.params.view.params.selectionDetailLevel,dynamicDetailLevel:o.entry.params.view.params.dynamicDetailLevel,isRelative:u,isUnbounded:m}}};return h?(0,Os.jsx)(Hr,{onChange:this.changeOption,params:f,values:b,onEnter:this.props.events.onEnter,isDisabled:this.props.isDisabled}):(0,Os.jsxs)(Os.Fragment,{children:[!r&&(0,Os.jsx)(ob,{label:"2Fo-Fc",name:"2fo-fc",bCell:this.props.bCell,channels:o.entry.params.channels,changeIso:this.changeIso,changeParams:this.changeParams,isRelative:u,params:this.props,stats:c.valuesInfo[0],isUnbounded:m}),!r&&(0,Os.jsx)(ob,{label:"Fo-Fc(+ve)",name:"fo-fc(+ve)",bCell:this.props.bCell,channels:o.entry.params.channels,changeIso:this.changeIso,changeParams:this.changeParams,isRelative:u,params:this.props,stats:c.valuesInfo[1],isUnbounded:m}),!r&&(0,Os.jsx)(ob,{label:"Fo-Fc(-ve)",name:"fo-fc(-ve)",bCell:this.props.bCell,channels:o.entry.params.channels,changeIso:this.changeIso,changeParams:this.changeParams,isRelative:u,params:this.props,stats:c.valuesInfo[1],isUnbounded:m}),r&&(0,Os.jsx)(ob,{label:"EM",name:"em",bCell:this.props.bCell,channels:o.entry.params.channels,changeIso:this.changeIso,changeParams:this.changeParams,isRelative:u,params:this.props,stats:c.valuesInfo[0],isUnbounded:m}),(0,Os.jsx)(Hr,{onChange:this.changeOption,params:f,values:b,onEnter:this.props.events.onEnter,isDisabled:this.props.isDisabled})]})}};var qB=()=>U(w({},rJ()),{customParamEditors:[[W1,SP]]});var MS;(function(t){class e{constructor(){this.providers=Ui().asMutable(),this.defaultAutoAttachValues=new Map}getParams(n){let o={},i=[],a=[];if(n){let s=this.providers.values();for(;;){let l=s.next();if(l.done)break;let c=l.value;c.isApplicable(n)&&(c.isHidden||(i.push([c.descriptor.name,c.label]),this.defaultAutoAttachValues.get(c.descriptor.name)&&a.push(c.descriptor.name)),o[c.descriptor.name]=g.Group(w({},c.getParams(n)),{label:c.label,isHidden:c.isHidden}))}}return{autoAttach:g.MultiSelect(a,i),properties:g.Group(o,{isFlat:!0})}}setDefaultAutoAttach(n,o){this.defaultAutoAttachValues.set(n,o)}get(n){if(!this.providers.get(n))throw new Error(`Custom property '${n}' is not registered.`);return this.providers.get(n)}register(n,o){this.providers.set(n.descriptor.name,n),this.defaultAutoAttachValues.set(n.descriptor.name,o)}unregister(n){this.providers.delete(n),this.defaultAutoAttachValues.delete(n)}}t.Registry=e})(MS||(MS={}));var CP=class{get dataState(){return this.plugin.state.data}rawData(e,r){return this.dataState.build().toRoot().apply(nR,e,r).commit({revertOnError:!0})}download(e,r){return this.dataState.build().toRoot().apply(tR,e,r).commit({revertOnError:!0})}downloadBlob(e,r){return this.dataState.build().toRoot().apply(rR,e,r).commit({revertOnError:!0})}readFile(e,r){return N(this,null,function*(){var n,o,i;let a=yield this.dataState.build().toRoot().apply(oR,e,r).commit({revertOnError:!0}),s=kp((i=(o=(n=e.file)===null||n===void 0?void 0:n.file)===null||o===void 0?void 0:o.name)!==null&&i!==void 0?i:"");return{data:a,fileInfo:s}})}constructor(e){this.plugin=e}};var TP=class{get dataState(){return this.plugin.state.data}resolveProvider(e){var r;return typeof e=="string"?(r=Ms[e])!==null&&r!==void 0?r:_T(this._providers,n=>n.id===e):e}hasPreset(e){for(let r of this._providers)if(!r.isApplicable||r.isApplicable(e,this.plugin))return!0;return!1}get providers(){return this._providers}getPresets(e){if(!e)return this.providers;let r=[];for(let n of this._providers)n.isApplicable&&!n.isApplicable(e,this.plugin)||r.push(n);return r}getPresetSelect(e){let r=[];for(let n of this._providers)e&&n.isApplicable&&!n.isApplicable(e,this.plugin)||r.push([n.id,n.display.name,n.display.group]);return g.Select("auto",r)}getPresetsWithOptions(e){let r=[],n=Object.create(null);for(let o of this._providers)o.isApplicable&&!o.isApplicable(e,this.plugin)||(r.push([o.id,o.display.name]),n[o.id]=o.params?g.Group(o.params(e,this.plugin)):g.EmptyGroup());return r.length===0?g.MappedStatic("",{"":g.EmptyGroup()}):g.MappedStatic(r[0][0],n,{options:r})}registerPreset(e){if(this.providerMap.has(e.id))throw new Error(`Representation provider with id '${e.id}' already registered.`);this._providers.push(e),this.providerMap.set(e.id,e)}unregisterPreset(e){this.providerMap.delete(e.id),rp(this._providers,e)}applyPreset(e,r,n){var o;let i=this.resolveProvider(r);if(!i)return;let a=this.plugin.state.data,s=Fn.resolveAndCheck(a,e);if(!s){x0||console.warn("Applying structure repr. provider to bad cell.");return}let l=((o=i.params)===null||o===void 0?void 0:o.call(i,s.obj,this.plugin))||{},c=n||(i.params?g.getDefaultValues(l):{}),u=this.plugin.config.get(Wt.Structure.DefaultRepresentationPresetParams);c=g.merge(l,u,c);let d=ie.create(`${i.display.name}`,()=>i.apply(s,c,this.plugin));return this.plugin.runTask(d)}addRepresentation(e,r,n){return N(this,null,function*(){let o=this.dataState.build(),i=this.buildRepresentation(o,e,r,n);if(i)return yield o.commit(),i})}buildRepresentation(e,r,n,o){var i,a;if(!r)return;let s=(a=(i=Fn.resolveAndCheck(this.dataState,r))===null||i===void 0?void 0:i.obj)===null||a===void 0?void 0:a.data;if(!s)return;let l=Qv(this.plugin,s,n);return o?.tag?e.to(r).applyOrUpdateTagged(o.tag,Tv,l,{state:o?.initialState}).selector:e.to(r).apply(Tv,l,{state:o?.initialState}).selector}constructor(e){this.plugin=e,this._providers=[],this.providerMap=new Map,this.defaultProvider=Ms.auto,ro(Ms,r=>this.registerPreset(r))}};function Eh(t){return t}(function(t){t.CommonParams=(e,r)=>({modelProperties:g.Optional(g.Group(Se.getParamDefinition(de.Model.CustomModelProperties,void 0,r))),structureProperties:g.Optional(g.Group(Se.getParamDefinition(de.Model.CustomStructureProperties,void 0,r))),representationPreset:g.Optional(g.Text("auto"))})})(Eh||(Eh={}));var wP=Eh.CommonParams,oIe=(t,e)=>w({model:g.Optional(g.Group(Se.getParamDefinition(de.Model.ModelFromTrajectory,t,e))),showUnitcell:g.Optional(g.Boolean(!1)),structure:g.Optional(vm.getParams(void 0,"assembly").type),representationPresetParams:g.Optional(g.Group(oa.CommonParams))},wP(t,e)),JJ=Eh({id:"preset-trajectory-default",display:{name:"Default (Assembly)",group:"Preset",description:"Shows the first assembly or, if that is unavailable, the first model."},isApplicable:t=>!0,params:oIe,apply(t,e,r){return N(this,null,function*(){let n=r.builders.structure,o=yield n.createModel(t,e.model),i=yield n.insertModelProperties(o,e.modelProperties),a=yield n.createStructure(i||o,e.structure),s=yield n.insertStructureProperties(a,e.structureProperties),l=e.showUnitcell===void 0||e.showUnitcell?yield n.tryCreateUnitcell(i,void 0,{isHidden:!0}):void 0,c=e.representationPreset||r.config.get(Wt.Structure.DefaultRepresentationPreset)||Ms.auto.id,u=yield r.builders.structure.representation.applyPreset(s,c,e.representationPresetParams);return{model:o,modelProperties:i,unitcell:l,structure:a,structureProperties:s,representation:u}})}}),iIe=(t,e)=>w({useDefaultIfSingleModel:g.Optional(g.Boolean(!1)),representationPresetParams:g.Optional(g.Group(oa.CommonParams))},wP(t,e)),aIe=Eh({id:"preset-trajectory-all-models",display:{name:"All Models",group:"Preset",description:"Shows all models; colored by trajectory-index."},isApplicable:t=>t.data.frameCount>1,params:iIe,apply(t,e,r){return N(this,null,function*(){var n,o;let i=(o=(n=Fn.resolveAndCheck(r.state.data,t))===null||n===void 0?void 0:n.obj)===null||o===void 0?void 0:o.data;if(!i)return{};if(i.frameCount===1&&e.useDefaultIfSingleModel)return JJ.apply(t,e,r);let a=r.builders.structure,s=[],l=[];for(let c=0;cw({model:g.Optional(g.Group(Se.getParamDefinition(de.Model.ModelFromTrajectory,t,e)))},wP(t,e));function tee(t,e,r,n){return N(this,null,function*(){let o=n.builders.structure,i=yield o.createModel(e,r.model),a=yield o.insertModelProperties(i,r.modelProperties),s=yield o.createStructure(a||i,{name:"symmetry",params:t}),l=yield o.insertStructureProperties(s,r.structureProperties),c=yield o.tryCreateUnitcell(a,void 0,{isHidden:!1}),u=r.representationPreset||n.config.get(Wt.Structure.DefaultRepresentationPreset)||Ms.auto.id,d=yield n.builders.structure.representation.applyPreset(l,u,{theme:{globalName:t.theme}});return{model:i,modelProperties:a,unitcell:c,structure:s,structureProperties:l,representation:d}})}var sIe=Eh({id:"preset-trajectory-unitcell",display:{name:"Unit Cell",group:"Preset",description:"Shows the fully populated unit cell."},isApplicable:t=>Et.hasCrystalSymmetry(t.data.representative),params:eee,apply(t,e,r){return N(this,null,function*(){return yield tee({ijkMin:y.create(0,0,0),ijkMax:y.create(0,0,0)},t,e,r)})}}),lIe=Eh({id:"preset-trajectory-supercell",display:{name:"Super Cell",group:"Preset",description:"Shows the super cell, i.e. the central unit cell and all adjacent unit cells."},isApplicable:t=>Et.hasCrystalSymmetry(t.data.representative),params:eee,apply(t,e,r){return N(this,null,function*(){return yield tee({ijkMin:y.create(-1,-1,-1),ijkMax:y.create(1,1,1),theme:"operator-hkl"},t,e,r)})}}),cIe=(t,e)=>w({model:g.Optional(g.Group(Se.getParamDefinition(de.Model.ModelFromTrajectory,t,e)))},wP(t,e)),uIe=Eh({id:"preset-trajectory-crystal-contacts",display:{name:"Crystal Contacts",group:"Preset",description:"Showsasymetric unit and chains from neighbours within 5 \u212B, i.e., symmetry mates."},isApplicable:t=>Et.hasCrystalSymmetry(t.data.representative),params:cIe,apply(t,e,r){return N(this,null,function*(){let n=r.builders.structure,o=yield n.createModel(t,e.model),i=yield n.insertModelProperties(o,e.modelProperties),a=yield n.createStructure(i||o,{name:"symmetry-mates",params:{radius:5}}),s=yield n.insertStructureProperties(a,e.structureProperties),l=yield n.tryCreateUnitcell(i,void 0,{isHidden:!0}),c=e.representationPreset||r.config.get(Wt.Structure.DefaultRepresentationPreset)||Ms.auto.id,u=yield r.builders.structure.representation.applyPreset(s,c,{theme:{globalName:"operator-name",carbonColor:"operator-name",focus:{name:"element-symbol",params:{carbonColor:{name:"operator-name",params:av.defaultValues}}}}});return{model:o,modelProperties:i,unitcell:l,structure:a,structureProperties:s,representation:u}})}}),_P={default:JJ,"all-models":aIe,unitcell:sIe,supercell:lIe,crystalContacts:uIe};var PP=class{resolveProvider(e){var r;return typeof e=="string"?(r=_P[e])!==null&&r!==void 0?r:_T(this._providers,n=>n.id===e):e}hasPreset(e){for(let r of this._providers)if(!r.isApplicable||r.isApplicable(e,this.plugin))return!0;return!1}get providers(){return this._providers}getPresets(e){if(!e)return this.providers;let r=[];for(let n of this._providers)n.isApplicable&&!n.isApplicable(e,this.plugin)||r.push(n);return r}getPresetSelect(e){let r=[];for(let n of this._providers)e&&n.isApplicable&&!n.isApplicable(e,this.plugin)||r.push([n.id,n.display.name]);return g.Select("auto",r)}getPresetsWithOptions(e){let r=[],n=Object.create(null);for(let o of this._providers)o.isApplicable&&!o.isApplicable(e,this.plugin)||(r.push([o.id,o.display.name]),n[o.id]=o.params?g.Group(o.params(e,this.plugin)):g.EmptyGroup());return r.length===0?g.MappedStatic("",{"":g.EmptyGroup()}):g.MappedStatic(r[0][0],n,{options:r})}registerPreset(e){if(this.providerMap.has(e.id))throw new Error(`Hierarchy provider with id '${e.id}' already registered.`);this._providers.push(e),this.providerMap.set(e.id,e)}unregisterPreset(e){this.providerMap.delete(e.id),rp(this._providers,e)}applyPreset(e,r,n){let o=this.resolveProvider(r);if(!o)return;let i=this.plugin.state.data,a=Fn.resolveAndCheck(i,e);if(!a){x0||console.warn("Applying hierarchy preset provider to bad cell.");return}let s=n||(o.params?g.getDefaultValues(o.params(a.obj,this.plugin)):{}),l=ie.create(`${o.display.name}`,()=>o.apply(a,s,this.plugin));return this.plugin.runTask(l)}constructor(e){this.plugin=e,this._providers=[],this.providerMap=new Map,this.defaultProvider=_P.default,ro(_P,r=>this.registerPreset(r))}};var EP=class{get dataState(){return this.plugin.state.data}parseTrajectoryData(e,r){return N(this,null,function*(){let n=typeof r=="string"?this.plugin.dataFormats.get(r):r;if(!n)throw new Error(`'${r}' is not a supported data format.`);let{trajectory:o}=yield n.parse(this.plugin,e);return o})}parseTrajectoryBlob(e,r){return this.dataState.build().to(e).apply(de.Data.ParseBlob,r,{state:{isGhost:!0}}).apply(de.Model.TrajectoryFromBlob,void 0).commit({revertOnError:!0})}parseTrajectory(e,r){let n=Fn.resolveAndCheck(this.dataState,e);if(!n)throw new Error("Invalid data cell.");return X.Data.Blob.is(n.obj)?this.parseTrajectoryBlob(e,r):this.parseTrajectoryData(e,r)}createModel(e,r,n){return this.dataState.build().to(e).apply(de.Model.ModelFromTrajectory,r||{modelIndex:0},{state:n}).commit({revertOnError:!0})}insertModelProperties(e,r,n){return this.dataState.build().to(e).apply(de.Model.CustomModelProperties,r,{state:n}).commit({revertOnError:!0})}tryCreateUnitcell(e,r,n){var o,i,a;let s=this.dataState,l=(i=(o=Fn.resolveAndCheck(s,e))===null||o===void 0?void 0:o.obj)===null||i===void 0?void 0:i.data;if(!l)return;let c=(a=rs.Provider.get(l))===null||a===void 0?void 0:a.spacegroup.cell;return pa.isZero(c)?void 0:s.build().to(e).apply(de.Representation.ModelUnitcell3D,r,{state:n}).commit({revertOnError:!0})}createStructure(e,r,n,o){var i;let a=this.dataState;if(!r){let l=Fn.resolveAndCheck(a,e);if(l){let c=rs.Provider.get((i=l.obj)===null||i===void 0?void 0:i.data);(!c||c?.assemblies.length===0)&&(r={name:"model",params:{}})}}return a.build().to(e).apply(de.Model.StructureFromModel,{type:r||{name:"assembly",params:{}}},{state:n,tags:o}).commit({revertOnError:!0})}insertStructureProperties(e,r){return this.dataState.build().to(e).apply(de.Model.CustomStructureProperties,r).commit({revertOnError:!0})}isComponentTransform(e){return e.transform.transformer===de.Model.StructureComponent}tryCreateComponent(e,r,n,o){return N(this,null,function*(){var i,a;let s=this.dataState,l=s.build().to(e),c=`structure-component-${n}`,u=l.applyOrUpdateTagged(c,de.Model.StructureComponent,r,{tags:o?[...o,c]:[c]});yield u.commit();let d=u.selector;if(!d.isOk||((a=(i=d.cell)===null||i===void 0?void 0:i.obj)===null||a===void 0?void 0:a.data.elementCount)===0){yield s.build().delete(d.ref).commit();return}return d})}tryCreateComponentFromExpression(e,r,n,o){return this.tryCreateComponent(e,{type:{name:"expression",params:r},nullIfEmpty:!0,label:(o?.label||"").trim()},n,o?.tags)}tryCreateComponentStatic(e,r,n){return this.tryCreateComponent(e,{type:{name:"static",params:r},nullIfEmpty:!0,label:(n?.label||"").trim()},`static-${r}`,n?.tags)}tryCreateComponentFromSelection(e,r,n,o){return this.plugin.runTask(ie.create("Query Component",i=>N(this,null,function*(){var a,s;let{label:l,tags:c}=o||{};l=(l||"").trim();let u=(s=(a=Fn.resolveAndCheck(this.dataState,e))===null||a===void 0?void 0:a.obj)===null||s===void 0?void 0:s.data;if(!u)return;let d=r.referencesCurrent?{type:{name:"bundle",params:z.Bundle.fromSelection(yield r.getSelection(this.plugin,i,u))},nullIfEmpty:!0,label:l||r.label}:{type:{name:"expression",params:r.expression},nullIfEmpty:!0,label:l||r.label};return r.ensureCustomProperties&&(yield r.ensureCustomProperties({runtime:i,assetManager:this.plugin.managers.asset},u)),this.tryCreateComponent(e,d,n,c)})))}constructor(e){this.plugin=e,this.hierarchy=new PP(this.plugin),this.representation=new TP(this.plugin)}};function Bp(t,e,r={}){let n=r;return typeof n.type=="string"||typeof n.color=="string"||typeof n.size=="string"?dIe(t,e||xe.One,r):ree(t,e||xe.One,r)}function dIe(t,e,r){let n=r.type&&t.representation.volume.registry.get(r.type)||t.representation.volume.registry.default.provider,o=r.color&&t.representation.volume.themes.colorThemeRegistry.get(r.color)||t.representation.volume.themes.colorThemeRegistry.get(n.defaultColorTheme.name),i=r.size&&t.representation.volume.themes.sizeThemeRegistry.get(r.size)||t.representation.volume.themes.sizeThemeRegistry.get(n.defaultSizeTheme.name);return ree(t,e,{type:n,typeParams:r.typeParams,color:o,colorParams:r.colorParams,size:i,sizeParams:r.sizeParams})}function ree(t,e,r={}){let{themes:n}=t.representation.volume,o={volume:e},i=r.type||t.representation.volume.registry.default.provider,a=g.getDefaultValues(i.getParams(n,e)),s=Object.assign(a,r.typeParams),l=r.color||n.colorThemeRegistry.get(i.defaultColorTheme.name),c=g.getDefaultValues(l.getParams(o));l.name===i.defaultColorTheme.name&&Object.assign(c,i.defaultColorTheme.props);let u=Object.assign(c,r.colorParams),d=r.size||n.sizeThemeRegistry.get(i.defaultSizeTheme.name),m=g.getDefaultValues(d.getParams(o));d.name===i.defaultSizeTheme.name&&Object.assign(m,i.defaultSizeTheme.props);let p=Object.assign(m,r.sizeParams);return{type:{name:i.name,params:s},colorTheme:{name:l.name,params:u},sizeTheme:{name:d.name,params:p}}}var WB;(function(t){function e(r){let{name:n}=r;return{descriptor:r,get(o){return o._propertyData[n]},set(o,i){o.customProperties.add(r),o._propertyData[n]=i}}}t.create=e})(WB||(WB={}));var RS;(function(t){t.Descriptor={name:"recommended_iso_value"},t.Provider=WB.create(t.Descriptor)})(RS||(RS={}));var ib="Volume";function LS(t,e){return N(this,null,function*(){if(!e)return;let{entryId:r}=e;if(!(!r||!r.toLowerCase().startsWith("emd")))return t.runTask(ie.create("Try Set Recommended IsoValue",n=>N(this,null,function*(){try{let o=yield VM(t,n,r);RS.Provider.set(e,xe.IsoValue.absolute(o))}catch(o){console.warn(o)}})))})}function nee(t){let e=RS.Provider.get(t);if(e)return e.kind==="relative"?e:xe.adjustedIsoValue(t,e.absoluteValue,"absolute")}function XB(t,e){return N(this,null,function*(){let r={},n=e.volume.data&&nee(e.volume.data);return n&&(r.isoValue=n),[yield t.build().to(e.volume).apply(de.Representation.VolumeRepresentation3D,Bp(t,e.volume.data,{type:"isosurface",typeParams:r})).commit()]})}var mIe={label:"CCP4/MRC/MAP",description:"CCP4/MRC/MAP",category:ib,binaryExtensions:["ccp4","mrc","map"],parse:(t,e,r)=>N(void 0,null,function*(){let n=t.build().to(e).apply(de.Data.ParseCcp4,{},{state:{isGhost:!0}}),o=n.apply(de.Volume.VolumeFromCcp4,{entryId:r?.entryId});return yield n.commit({revertOnError:!0}),yield LS(t,o.selector.data),{format:n.selector,volume:o.selector}}),visuals:XB},pIe={label:"DSN6/BRIX",description:"DSN6/BRIX",category:ib,binaryExtensions:["dsn6","brix"],parse:(t,e,r)=>N(void 0,null,function*(){let n=t.build().to(e).apply(de.Data.ParseDsn6,{},{state:{isGhost:!0}}),o=n.apply(de.Volume.VolumeFromDsn6,{entryId:r?.entryId});return yield n.commit({revertOnError:!0}),yield LS(t,o.selector.data),{format:n.selector,volume:o.selector}}),visuals:XB},fIe={label:"DX",description:"DX",category:ib,stringExtensions:["dx"],binaryExtensions:["dxbin"],parse:(t,e,r)=>N(void 0,null,function*(){let o=t.build().to(e).apply(de.Data.ParseDx,{},{state:{isGhost:!0}}).apply(de.Volume.VolumeFromDx,{entryId:r?.entryId});return yield o.commit({revertOnError:!0}),yield LS(t,o.selector.data),{volume:o.selector}}),visuals:XB},hIe={label:"Cube",description:"Cube",category:ib,stringExtensions:["cub","cube"],parse:(t,e,r)=>N(void 0,null,function*(){let n=t.build().to(e).apply(de.Data.ParseCube,{},{state:{isGhost:!0}}),o=n.apply(de.Volume.VolumeFromCube,{entryId:r?.entryId}),i=n.apply(de.Model.TrajectoryFromCube,void 0,{state:{isGhost:!0}}).apply(de.Model.ModelFromTrajectory).apply(de.Model.StructureFromModel);return yield n.commit({revertOnError:!0}),yield LS(t,o.selector.data),{format:n.selector,volume:o.selector,structure:i.selector}}),visuals:(t,e)=>N(void 0,null,function*(){var r,n;let o=t.build(),i=[],a=(n=(r=e.volume.cell)===null||r===void 0?void 0:r.obj)===null||n===void 0?void 0:n.data;if(a&&xe.isOrbitals(a)){let c=o.to(e.volume).apply(de.Representation.VolumeRepresentation3D,Bp(t,a,{type:"isosurface",typeParams:{isoValue:xe.IsoValue.relative(1),alpha:.4},color:"uniform",colorParams:{value:ut.blue}})),u=o.to(e.volume).apply(de.Representation.VolumeRepresentation3D,Bp(t,a,{type:"isosurface",typeParams:{isoValue:xe.IsoValue.relative(-1),alpha:.4},color:"uniform",colorParams:{value:ut.red}}));i.push(c.selector,u.selector)}else{let c=o.to(e.volume).apply(de.Representation.VolumeRepresentation3D,Bp(t,a,{type:"isosurface",typeParams:{isoValue:xe.IsoValue.relative(2),alpha:.4},color:"uniform",colorParams:{value:ut.grey}}));i.push(c.selector)}let s=yield t.builders.structure.representation.applyPreset(e.structure,"auto");yield o.commit();let l=[];return ro(s?.representations,c=>{c&&l.push(c)}),[...i,...l]})},gIe={label:"DensityServer CIF",description:"DensityServer CIF",category:ib,stringExtensions:["cif"],binaryExtensions:["bcif"],isApplicable:(t,e)=>Kv(t,e)==="dscif",parse:(t,e,r)=>N(void 0,null,function*(){var n;let o=yield t.build().to(e).apply(de.Data.ParseCif).commit(),i=t.build().to(o),a=o.obj.data.blocks;if(a.length===0)throw new Error("no data blocks");let s=[],l=0;for(let c of a){if(c.header.toUpperCase()==="SERVER")continue;let u=Array.isArray(r?.entryId)?r?.entryId[l]:r?.entryId;((n=c.categories.volume_data_3d_info)===null||n===void 0?void 0:n.rowCount)>0&&(s.push(i.apply(de.Volume.VolumeFromDensityServerCif,{blockHeader:c.header,entryId:u}).selector),l++)}yield i.commit();for(let c of s)yield LS(t,c.data);return{volumes:s}}),visuals:(t,e)=>N(void 0,null,function*(){let{volumes:r}=e,n=t.build(),o=[];if(r.length>0){let i=r[0].data&&nee(r[0].data)||xe.IsoValue.relative(1.5);o[0]=n.to(r[0]).apply(de.Representation.VolumeRepresentation3D,hu.getDefaultParamsStatic(t,"isosurface",{isoValue:i,alpha:1},"uniform",{value:ut.teal})).selector}if(r.length>1){let i=hu.getDefaultParamsStatic(t,"isosurface",{isoValue:xe.IsoValue.relative(3),alpha:.3},"uniform",{value:ut.green}),a=hu.getDefaultParamsStatic(t,"isosurface",{isoValue:xe.IsoValue.relative(-3),alpha:.3},"uniform",{value:ut.red});o[o.length]=n.to(r[1]).apply(de.Representation.VolumeRepresentation3D,i).selector,o[o.length]=n.to(r[1]).apply(de.Representation.VolumeRepresentation3D,a).selector}return yield n.commit(),o})},yIe={label:"Segmentation CIF",description:"Segmentation CIF",category:ib,stringExtensions:["cif"],binaryExtensions:["bcif"],isApplicable:(t,e)=>Kv(t,e)==="segcif",parse:(t,e)=>N(void 0,null,function*(){var r;let n=yield t.build().to(e).apply(de.Data.ParseCif).commit(),o=t.build().to(n),i=n.obj.data.blocks;if(i.length===0)throw new Error("no data blocks");let a=[];for(let s of i)s.header.toUpperCase()!=="SERVER"&&((r=s.categories.volume_data_3d_info)===null||r===void 0?void 0:r.rowCount)>0&&a.push(o.apply(de.Volume.VolumeFromSegmentationCif,{blockHeader:s.header}).selector);return yield o.commit(),{volumes:a}}),visuals:(t,e)=>N(void 0,null,function*(){let{volumes:r}=e,n=t.build(),o=[];return r.length>0&&xe.Segmentation.get(r[0].data)&&(o[o.length]=n.to(r[0]).apply(de.Representation.VolumeRepresentation3D,hu.getDefaultParams(t,"segment",r[0].data,{alpha:1,instanceGranularity:!0},"volume-segment",{})).selector),yield n.commit(),o})},oee=[["ccp4",mIe],["dsn6",pIe],["cube",hIe],["dx",fIe],["dscif",gIe],["segcif",yIe]];var vIe="Shape",bIe={label:"PLY",description:"PLY",category:vIe,stringExtensions:["ply"],parse:(t,e)=>N(void 0,null,function*(){let r=t.state.data.build().to(e).apply(de.Data.ParsePly,{},{state:{isGhost:!0}}),n=r.apply(de.Model.ShapeFromPly);return yield r.commit(),{format:r.selector,shape:n.selector}}),visuals(t,e){return t.state.data.build().to(e.shape).apply(de.Representation.ShapeRepresentation3D).commit()}},iee=[["ply",bIe]];var IP=class{get types(){return this._list.map(e=>[e.name,e.provider.label])}get extensions(){if(this._extensions)return this._extensions;let e=new Set;return this._list.forEach(({provider:r})=>{var n,o;(n=r.stringExtensions)===null||n===void 0||n.forEach(i=>e.add(i)),(o=r.binaryExtensions)===null||o===void 0||o.forEach(i=>e.add(i))}),this._extensions=e,e}get binaryExtensions(){if(this._binaryExtensions)return this._binaryExtensions;let e=new Set;return this._list.forEach(({provider:r})=>{var n;return(n=r.binaryExtensions)===null||n===void 0?void 0:n.forEach(o=>e.add(o))}),this._binaryExtensions=e,e}get options(){if(this._options)return this._options;let e=[];return this._list.forEach(({name:r,provider:n})=>e.push([r,n.label,n.category||""])),this._options=e,e}constructor(){this._list=[],this._map=new Map,this._extensions=void 0,this._binaryExtensions=void 0,this._options=void 0;for(let[e,r]of oee)this.add(e,r);for(let[e,r]of YZ)this.add(e,r);for(let[e,r]of QZ)this.add(e,r);for(let[e,r]of iee)this.add(e,r);for(let[e,r]of $_)this.add(e,r)}_clear(){this._extensions=void 0,this._binaryExtensions=void 0,this._options=void 0}add(e,r){this._clear(),this._list.push({name:e,provider:r}),this._map.set(e,r)}remove(e){this._clear(),this._list.splice(this._list.findIndex(r=>r.name===e),1),this._map.delete(e)}auto(e,r){var n,o;for(let i=0,a=this.list.length;i[e.name,e.display.name]),{label:"Animation"})}),this._params}updateParams(e){if(this.isEmpty)return;this.updateState({params:w(w({},this.state.params),e)});let r=this.map.get(this.state.params.current),n=r.params(this.context);this._current={anim:r,params:n,paramValues:g.getDefaultValues(n),state:{},startedTime:-1,lastTime:0},this.triggerUpdate()}updateCurrentParams(e){this.isEmpty||(this._current.paramValues=w(w({},this._current.paramValues),e),this.triggerUpdate())}register(e){if(this.map.has(e.name)){this.context.log.error(`Animation '${e.name}' is already registered.`);return}this._params=void 0,this.map.set(e.name,e),this._animations.push(e),this._animations.length===1?this.updateParams({current:e.name}):this.triggerUpdate()}play(e,r){return N(this,null,function*(){yield this.stop(),this.map.has(e.name)||this.register(e),this.updateParams({current:e.name}),this.updateCurrentParams(r),yield this.start()})}tick(e,r,n){return N(this,null,function*(){this.currentTime=e,!this.isStopped&&(r||n?yield this.applyFrame(n):this.applyAsync())})}start(){return N(this,null,function*(){this.updateState({animationState:"playing"}),this.context.behaviors.state.isAnimating.value||this.context.behaviors.state.isAnimating.next(!0),this.triggerUpdate();let e=this._current.anim,r=this._current.anim.initialState(this._current.paramValues,this.context);if(e.setup){let n=yield e.setup(this._current.paramValues,r,this.context);n&&(r=n)}this._current.lastTime=0,this._current.startedTime=-1,this._current.state=r,this.isStopped=!1})}stop(){return N(this,null,function*(){if(this.isStopped=!0,this.state.animationState!=="stopped"){let e=this._current.anim;e.teardown&&(yield e.teardown(this._current.paramValues,this._current.state,this.context)),this.updateState({animationState:"stopped"}),this.triggerUpdate()}this.context.behaviors.state.isAnimating.value&&this.context.behaviors.state.isAnimating.next(!1)})}get isAnimating(){return this.state.animationState==="playing"}applyAsync(){return N(this,null,function*(){if(!this.isApplying){this.isApplying=!0;try{yield this.applyFrame()}finally{this.isApplying=!1}}})}applyFrame(e){return N(this,null,function*(){let r=this.currentTime;this._current.startedTime<0&&(this._current.startedTime=r);let n=yield this._current.anim.apply(this._current.state,{lastApplied:this._current.lastTime,current:r-this._current.startedTime,animation:e},{params:this._current.paramValues,plugin:this.context});n.kind==="finished"?this.stop():n.kind==="next"&&(this._current.state=n.state,this._current.lastTime=r-this._current.startedTime),this.triggerApply()})}getSnapshot(){return this.current?{state:this.state,current:{paramValues:this._current.paramValues,state:this._current.anim.stateSerialization?this._current.anim.stateSerialization.toJSON(this._current.state):this._current.state}}:{state:this.state}}setSnapshot(e){this.isEmpty||(this.updateState({animationState:e.state.animationState}),this.updateParams(e.state.params),e.current&&(this.current.paramValues=e.current.paramValues,this.current.state=this._current.anim.stateSerialization?this._current.anim.stateSerialization.fromJSON(e.current.state):e.current.state,this.triggerUpdate(),this.state.animationState==="playing"&&this.resume()))}resume(){return N(this,null,function*(){this._current.lastTime=0,this._current.startedTime=-1;let e=this._current.anim;this.context.behaviors.state.isAnimating.value||this.context.behaviors.state.isAnimating.next(!0),e.setup&&(yield e.setup(this._current.paramValues,this._current.state,this.context)),this.isStopped=!1})}constructor(e){super({params:{current:""},animationState:"stopped"}),this.context=e,this.map=new Map,this._animations=[],this.currentTime=0,this._params=void 0,this.events={updated:this.ev(),applied:this.ev()},this.isStopped=!0,this.isApplying=!1}};function aee(t,e,r){let n=r[0],o=r[1],i=r[2],a=-n*e[0]-o*e[1]-i*e[2],s=t[0],l=t[1],c=t[2];return(n*s+o*l+i*c+a)/Math.sqrt(n*n+o*o+i*i)}function xIe(t,e,r,n){let o=aee(t,e,n);return{aroundX:aee(t,e,r)<0,aroundY:o<0}}function see(t,e,r){if(!t.canvas3d)return;let{origin:n,dirA:o,dirB:i,dirC:a}=r.principalAxes.boxAxes,s=y.clone(o),l=y.clone(a);if(r.positionToFlip){let{aroundX:u,aroundY:d}=xIe(r.positionToFlip,n,s,i);u&&(y.negate(l,l),y.negate(s,s)),d&&y.negate(l,l)}let c=y.scale(y(),n,-100);return y.dot(c,s)<=0&&y.negate(l,l),y.dot(y.unitY,l)<=0&&y.negate(s,s),t.canvas3d.camera.getFocus(n,e,s,l,an.createDefaultSnapshot())}var SIe=3,Am={identity:Dt.create(1,0,0,0,1,0,0,0,1),rotX90:Dt.create(1,0,0,0,0,1,0,-1,0),rotY90:Dt.create(0,0,-1,0,1,0,1,0,0),rotZ90:Dt.create(0,1,0,-1,0,0,0,0,1),rotX270:Dt.create(1,0,0,0,0,-1,0,1,0),rotY270:Dt.create(0,0,1,0,1,0,-1,0,0),rotZ270:Dt.create(0,-1,0,1,0,0,0,0,1),rotX180:Dt.create(1,0,0,0,-1,0,0,0,-1),rotY180:Dt.create(-1,0,0,0,1,0,0,0,-1),rotZ180:Dt.create(-1,0,0,0,-1,0,0,0,1)};function lee(t,e){let r=TIe(t,SIe);return CIe(r,e)}function CIe(t,e){if(t.length===0)return console.warn("Skipping PCA, no atoms"),{rotation:Am.identity,origin:y.zero()};let r=ET.calculateMomentsAxes(t),n=ET.calculateNormalizedAxes(r),o=EIe(n.dirA,n.dirB,n.dirC);IIe(o);let i=e?wIe(o,e):_Ie(t,o,r.origin);return Dt.mul(o,i,o),{rotation:o,origin:n.origin}}function TIe(t,e){let r;return r=YB(t,{onlyTrace:!0}),r.length>=3*e||(r=YB(t,{skipHydrogens:!0,skipWater:!0}),r.length>=3*e)||(r=YB(t,{})),r}function YB(t,e){let{onlyTrace:r,skipHydrogens:n,skipWater:o}=e,{x:i,y:a,z:s,type_symbol:l,label_comp_id:c}=Ne.atom,u=[];for(let d of t){let m=z.Location.create(d);for(let p of d.units){m.unit=p;let h=r?p.polymerElements:p.elements;for(let f=0;fn&&(r=i,n=a)}return r}function _Ie(t,e,r){let n=y.create(Dt.getValue(e,0,0),Dt.getValue(e,0,1),Dt.getValue(e,0,2)),o=y.create(Dt.getValue(e,1,0),Dt.getValue(e,1,1),Dt.getValue(e,1,2)),i=y.create(Dt.getValue(e,2,0),Dt.getValue(e,2,1),Dt.getValue(e,2,2)),a=Math.floor(t.length/3),s=y(),l=0,c=0,u=0;for(let p=0;po,r)}focusLoci(e,r){let n;if(Array.isArray(e)&&e.length>1){let o=[];for(let i of e){let a=st.getBoundingSphere(this.transformedLoci(i));a&&o.push(a)}if(o.length===0)return;this.boundaryHelper.reset();for(let i of o)this.boundaryHelper.includeSphere(i);this.boundaryHelper.finishedIncludeStep();for(let i of o)this.boundaryHelper.radiusSphere(i);n=this.boundaryHelper.getSphere()}else if(Array.isArray(e)){if(e.length===0)return;n=st.getBoundingSphere(this.transformedLoci(e[0]))}else n=st.getBoundingSphere(this.transformedLoci(e));n&&this.focusSphere(n,r)}focusSpheres(e,r,n){let o=[];for(let i of e){let a=r(i);a&&o.push(a)}if(o.length!==0){if(o.length===1)return this.focusSphere(o[0],n);this.boundaryHelper.reset();for(let i of o)this.boundaryHelper.includeSphere(i);this.boundaryHelper.finishedIncludeStep();for(let i of o)this.boundaryHelper.radiusSphere(i);this.focusSphere(this.boundaryHelper.getSphere(),n)}}focusSphere(e,r){var n;let{canvas3d:o}=this.plugin;if(!o)return;let{extraRadius:i,minRadius:a,durationMs:s}=w(w({},DIe),r),l=Math.max(e.radius+i,a);if(r?.principalAxes){let c=see(this.plugin,l,r);(n=this.plugin.canvas3d)===null||n===void 0||n.requestCameraReset({durationMs:s,snapshot:c})}else{let c=o.camera.getFocus(e.center,l);o.requestCameraReset({durationMs:s,snapshot:c})}}orientAxes(e,r){if(!this.plugin.canvas3d)return;e||(e=this.plugin.state.data.selectQ(s=>s.ofType(X.Molecule.Structure)).filter(s=>s.obj&&!s.transform.transformer.definition.isDecorator&&!s.obj.data.parent).map(s=>{var l;return(l=s.obj)===null||l===void 0?void 0:l.data}).filter(s=>!!s));let{rotation:n}=lee(e),o=QB(this.plugin.canvas3d.camera.getSnapshot(),n);this.setSnapshot(o,r)}resetAxes(e){if(!this.plugin.canvas3d)return;let r=QB(this.plugin.canvas3d.camera.getSnapshot(),Dt.Identity);this.setSnapshot(r,e)}setSnapshot(e,r){var n;(n=this.plugin.canvas3d)===null||n===void 0||n.requestCameraReset({snapshot:e,durationMs:r})}reset(e,r){var n;(n=this.plugin.canvas3d)===null||n===void 0||n.requestCameraReset({snapshot:e,durationMs:r})}constructor(e){this.plugin=e,this.boundaryHelper=new Zs("98")}};var Ih=class t extends ji{get props(){return w({},this.state.props)}setProps(e){let r=this.props,n=w(w({},this.state.props),e);lf(r,n)||(this.updateState({props:n}),this.lociSelects.setProps(n),this.lociHighlights.setProps(n),this.events.propsUpdated.next(void 0))}dispose(){super.dispose(),this.lociSelects.dispose(),this.lociHighlights.dispose()}constructor(e,r={}){super({props:w(w({},g.getDefaultValues(t.Params)),r)}),this.plugin=e,this._props=g.getDefaultValues(t.Params),this.events={propsUpdated:this.ev()},this.lociSelects=new t.LociSelectManager(e,this._props),this.lociHighlights=new t.LociHighlightManager(e,this._props)}};(function(t){t.Params={granularity:g.Select("residue",st.GranularityOptions,{label:"Picking Level",description:"Controls if selections are expanded upon picking to whole residues, chains, structures, instances, or left as atoms and coarse elements"})};class e{setProps(i){Object.assign(this.props,i)}addProvider(i){this.providers.push(i)}removeProvider(i){this.providers=this.providers.filter(a=>a!==i)}normalizedLoci(i,a,s=!1){let{loci:l,repr:c}=i,u=a?this.props.granularity:void 0;return{loci:st.normalize(l,u,s),repr:c}}mark(i,a,s=!1){if(!st.isEmpty(i.loci))for(let l of this.providers)l(i,a,s)}dispose(){this.providers.length=0,this.sel.dispose()}constructor(i,a={}){this.ctx=i,this.providers=[],this.props=g.getDefaultValues(t.Params),this.sel=i.managers.structure.selection,this.setProps(a)}}t.LociMarkManager=e;class r extends e{constructor(){super(...arguments),this.prev=[],this.clearHighlights=(i=!1)=>{for(let a of this.prev)this.mark(a,tt.RemoveHighlight,i);this.prev.length=0}}isHighlighted(i){for(let a of this.prev)if(rt.Loci.areEqual(a,i))return!0;return!1}addHighlight(i){this.mark(i,tt.Highlight),this.prev.push(i)}highlight(i,a=!0){let s=this.normalizedLoci(i,a);this.isHighlighted(s)||this.addHighlight(s)}highlightOnly(i,a=!0){let s=this.normalizedLoci(i,a);this.isHighlighted(s)||(st.isEmpty(s.loci)?this.clearHighlights():(this.clearHighlights(!0),this.addHighlight(s)))}highlightOnlyExtend(i,a=!0){let s=this.normalizedLoci(i,a);if(z.Loci.is(s.loci)){let l={loci:this.sel.tryGetRange(s.loci)||s.loci,repr:s.repr};this.isHighlighted(l)||(st.isEmpty(l.loci)?this.clearHighlights():(this.clearHighlights(!0),this.addHighlight(l)))}}dispose(){super.dispose(),this.prev.length=0}}t.LociHighlightManager=r;class n extends e{toggle(i,a=!0){if(st.isEmpty(i.loci))return;let s=this.normalizedLoci(i,a,!0);z.Loci.is(s.loci)?this.toggleSel(s):super.mark(s,tt.Toggle)}toggleExtend(i,a=!0){if(st.isEmpty(i.loci))return;let s=this.normalizedLoci(i,a,!0);if(z.Loci.is(s.loci)){let l=this.sel.tryGetRange(s.loci)||s.loci;this.toggleSel({loci:l,repr:s.repr})}}select(i,a=!0){let s=this.normalizedLoci(i,a,!0);z.Loci.is(s.loci)&&this.sel.modify("add",s.loci),this.mark(s,tt.Select)}selectJoin(i,a=!0){let s=this.normalizedLoci(i,a,!0);z.Loci.is(s.loci)&&this.sel.modify("intersect",s.loci),this.mark(s,tt.Select)}selectOnly(i,a=!0){let s=this.normalizedLoci(i,a,!0);z.Loci.is(s.loci)&&(this.mark({loci:ue.Loci(s.loci.structure),repr:s.repr},tt.Deselect),this.sel.modify("set",s.loci)),this.mark(s,tt.Select)}deselect(i,a=!0){let s=this.normalizedLoci(i,a,!0);z.Loci.is(s.loci)&&this.sel.modify("remove",s.loci),this.mark(s,tt.Deselect)}deselectAll(){this.sel.clear(),this.mark({loci:xf},tt.Deselect)}deselectAllOnEmpty(i){Wn(i.loci)&&this.deselectAll()}mark(i,a){let{loci:s}=i;if(!st.isEmpty(s))if(z.Loci.is(s)){let l=this.sel.getLoci(s.structure);super.mark({loci:ue.Loci(s.structure)},tt.Deselect,!st.isEmpty(l)),super.mark({loci:l},tt.Select)}else super.mark(i,a)}toggleSel(i){this.sel.has(i.loci)?(this.sel.modify("remove",i.loci),this.mark(i,tt.Deselect)):(this.sel.modify("add",i.loci),this.mark(i,tt.Select))}}t.LociSelectManager=n})(Ih||(Ih={}));var kP=class{clearProviders(){this.providers=[],this.isDirty=!0,this.showLabels()}addProvider(e){this.providers.push(e),this.providers.sort((r,n)=>(n.priority||0)-(r.priority||0)),this.isDirty=!0,this.showLabels()}removeProvider(e){this.providers=this.providers.filter(r=>r!==e),this.isDirty=!0,this.showLabels()}mark(e,r){let n=this.locis.findIndex(o=>rt.Loci.areEqual(e,o));n===-1&&r===tt.Highlight?(this.locis.push(e),this.isDirty=!0):n!==-1&&r===tt.RemoveHighlight&&(wg(this.locis,n),this.isDirty=!0)}showLabels(){this.ctx.behaviors.labels.highlight.next({labels:this.getLabels()})}getLabels(){if(this.isDirty){this.groupedLabels.clear(),this.labels.length=0;for(let e of this.providers)for(let r of this.locis){if(st.isEmpty(r.loci))continue;let n=e.label(r.loci,r.repr);if(n){let o=e.group?e.group(n):n.toString(),i=this.groupedLabels.get(o);i?i.push(n):this.groupedLabels.set(o,[n])}}this.labels.length=0,this.groupedLabels.forEach((e,r)=>{let n=e.length,o=n>1&&e[0]!==e[1]?r:e[0];this.labels.push(n===1?o:`${o} || \xD7 ${n}`)}),this.isDirty=!1}return this.labels}constructor(e){this.ctx=e,this.providers=[],this.locis=[],this.isDirty=!1,this.labels=[],this.groupedLabels=new Map,e.managers.interactivity.lociHighlights.addProvider((r,n,o)=>{this.providers.length!==0&&(this.mark(r,n),o||this.showLabels())})}};var uee="overpaint-controls";function KB(t,e,r,n,o){return N(this,null,function*(){yield AIe(t,e,(i,a,s)=>N(this,null,function*(){if(o&&o.length>0&&!o.includes(a.params.values.type.name))return;let l=a.obj.data.sourceData,c=yield n(l.root);if(st.isEmpty(c)||Wn(c))return;let u={bundle:z.Bundle.fromLoci(c),color:r===-1?ce(0):r,clear:r===-1};if(s){let d=[...s.params.values.layers,u],m=cee(d,l);i.to(s).update(io.toBundle(m))}else{let d=cee([u],l);i.to(a.transform.ref).apply(de.Representation.OverpaintStructureRepresentation3DFromBundle,io.toBundle(d),{tags:uee})}}))})}function AIe(t,e,r){return N(this,null,function*(){let n=t.state.data,o=n.build();for(let i of e)for(let a of i.representations){let s=n.select(lt.Generators.ofTransformer(de.Representation.OverpaintStructureRepresentation3DFromBundle,a.cell.transform.ref).withTag(uee));yield r(o,a.cell,s[0])}return o.commit({doNotUpdateCurrent:!0})})}function cee(t,e){let r=io.ofBundle(t,e.root),n=io.merge(r);return io.filter(n,e)}var mee="clipping-controls";function pee(t,e,r,n,o){return N(this,null,function*(){yield kIe(t,e,(i,a,s)=>N(this,null,function*(){if(o&&o.length>0&&!o.includes(a.params.values.type.name))return;let l=a.obj.data.sourceData,c=yield n(l.root);if(st.isEmpty(c)||Wn(c))return;let u={bundle:z.Bundle.fromLoci(c),groups:r};if(s){let d=[...s.params.values.layers,u],m=dee(d,l);i.to(s).update(Xr.toBundle(m))}else{let d=dee([u],l);i.to(a.transform.ref).apply(de.Representation.ClippingStructureRepresentation3DFromBundle,Xr.toBundle(d),{tags:mee})}}))})}function kIe(t,e,r){return N(this,null,function*(){let n=t.state.data,o=n.build();for(let i of e)for(let a of i.representations){let s=n.select(lt.Generators.ofTransformer(de.Representation.ClippingStructureRepresentation3DFromBundle,a.cell.transform.ref).withTag(mee));yield r(o,a.cell,s[0])}return o.commit({doNotUpdateCurrent:!0})})}function dee(t,e){let r=Xr.ofBundle(t,e.root),n=Xr.merge(r);return Xr.filter(n,e)}var hee="transparency-controls";function gee(t,e,r,n,o){return N(this,null,function*(){yield MIe(t,e,(i,a,s)=>N(this,null,function*(){if(o&&o.length>0&&!o.includes(a.params.values.type.name))return;let l=a.obj.data.sourceData,c=yield n(l.root);if(st.isEmpty(c)||Wn(c))return;let u={bundle:z.Bundle.fromLoci(c),value:r};if(s){let d=[...s.params.values.layers,u],m=fee(d,l);i.to(s).update(Jo.toBundle(m))}else{let d=fee([u],l);i.to(a.transform.ref).apply(de.Representation.TransparencyStructureRepresentation3DFromBundle,Jo.toBundle(d),{tags:hee})}}))})}function MIe(t,e,r){return N(this,null,function*(){let n=t.state.data,o=n.build();for(let i of e)for(let a of i.representations){let s=n.select(lt.Generators.ofTransformer(de.Representation.TransparencyStructureRepresentation3DFromBundle,a.cell.transform.ref).withTag(hee));yield r(o,a.cell,s[0])}return o.commit({doNotUpdateCurrent:!0})})}function fee(t,e){let r=Jo.ofBundle(t,e.root),n=Jo.merge(r);return Jo.filter(n,e)}var vee="substance-controls";function $B(t,e,r,n,o){return N(this,null,function*(){yield RIe(t,e,(i,a,s)=>N(this,null,function*(){if(o&&o.length>0&&!o.includes(a.params.values.type.name))return;let l=a.obj.data.sourceData,c=yield n(l.root);if(st.isEmpty(c)||Wn(c))return;let u={bundle:z.Bundle.fromLoci(c),material:r??Qo(),clear:!r};if(s){let d=[...s.params.values.layers,u],m=yee(d,l);i.to(s).update(ei.toBundle(m))}else{let d=yee([u],l);i.to(a.transform.ref).apply(de.Representation.SubstanceStructureRepresentation3DFromBundle,ei.toBundle(d),{tags:vee})}}))})}function RIe(t,e,r){return N(this,null,function*(){let n=t.state.data,o=n.build();for(let i of e)for(let a of i.representations){let s=n.select(lt.Generators.ofTransformer(de.Representation.SubstanceStructureRepresentation3DFromBundle,a.cell.transform.ref).withTag(vee));yield r(o,a.cell,s[0])}return o.commit({doNotUpdateCurrent:!0})})}function yee(t,e){let r=ei.ofBundle(t,e.root),n=ei.merge(r);return ei.filter(n,e)}var xee="emissive-controls";function See(t,e,r,n,o){return N(this,null,function*(){yield LIe(t,e,(i,a,s)=>N(this,null,function*(){if(o&&o.length>0&&!o.includes(a.params.values.type.name))return;let l=a.obj.data.sourceData,c=yield n(l.root);if(st.isEmpty(c)||Wn(c))return;let u={bundle:z.Bundle.fromLoci(c),value:r};if(s){let d=[...s.params.values.layers,u],m=bee(d,l);i.to(s).update(ti.toBundle(m))}else{let d=bee([u],l);i.to(a.transform.ref).apply(de.Representation.EmissiveStructureRepresentation3DFromBundle,ti.toBundle(d),{tags:xee})}}))})}function LIe(t,e,r){return N(this,null,function*(){let n=t.state.data,o=n.build();for(let i of e)for(let a of i.representations){let s=n.select(lt.Generators.ofTransformer(de.Representation.EmissiveStructureRepresentation3DFromBundle,a.cell.transform.ref).withTag(xee));yield r(o,a.cell,s[0])}return o.commit({doNotUpdateCurrent:!0})})}function bee(t,e){let r=ti.ofBundle(t,e.root),n=ti.merge(r);return ti.filter(n,e)}var ql=class t extends ji{get currentStructures(){return this.plugin.managers.structure.hierarchy.selection.structures}get pivotStructure(){return this.currentStructures[0]}_setSnapshotState(e){this.updateState({options:e}),this.events.optionsUpdated.next(void 0)}setOptions(e){return N(this,null,function*(){let r=e.interactions!==this.state.options.interactions;this.updateState({options:e}),this.events.optionsUpdated.next(void 0);let n=this.dataState.build();for(let o of this.currentStructures)for(let i of o.components)this.updateReprParams(n,i);return this.plugin.dataTransaction(()=>N(this,null,function*(){yield n.commit(),yield this.plugin.state.updateBehavior(my,o=>{o.ignoreHydrogens=e.hydrogens!=="all",o.ignoreHydrogensVariant=e.hydrogens==="only-polar"?"non-polar":"all",o.ignoreLight=e.ignoreLight,o.material=e.materialStyle,o.clip=e.clipObjects}),r&&(yield this.updateInterationProps())}))})}updateReprParams(e,r){let{hydrogens:n,visualQuality:o,ignoreLight:i,materialStyle:a,clipObjects:s}=this.state.options,l=n!=="all",c=n==="only-polar"?"non-polar":"all";for(let u of r.representations){if(u.cell.transform.transformer!==Tv)continue;let d=u.cell.transform.params;(!!d.type.params.ignoreHydrogens!==l||d.type.params.ignoreHydrogensVariant!==c||d.type.params.quality!==o||d.type.params.ignoreLight!==i||!ep(d.type.params.material,a)||!g.areEqual(dd.Params,d.type.params.clip,s))&&e.to(u.cell).update(m=>{m.type.params.ignoreHydrogens=l,m.type.params.ignoreHydrogensVariant=c,m.type.params.quality=o,m.type.params.ignoreLight=i,m.type.params.material=a,m.type.params.clip=s})}}updateInterationProps(){return N(this,null,function*(){var e,r,n;for(let o of this.currentStructures){let i=Mn.getParams((e=o.cell.obj)===null||e===void 0?void 0:e.data);if(o.properties){let a=(r=o.properties.cell.transform.params)===null||r===void 0?void 0:r.properties[Mn.descriptor.name];if(g.areEqual(i,a,this.state.options.interactions))continue;yield this.dataState.build().to(o.properties.cell).update(s=>{s.properties[Mn.descriptor.name]=this.state.options.interactions}).commit()}else{let a=this.plugin.customStructureProperties.getParams((n=o.cell.obj)===null||n===void 0?void 0:n.data),s=g.getDefaultValues(a);if(g.areEqual(i,s.properties[Mn.descriptor.name],this.state.options.interactions))continue;s.properties[Mn.descriptor.name]=this.state.options.interactions,yield this.plugin.builders.structure.insertStructureProperties(o.cell,s)}}})}applyPreset(e,r,n){return this.plugin.dataTransaction(()=>N(this,null,function*(){for(let o of e){let i=yield this.plugin.builders.structure.representation.applyPreset(o.cell,r,n);yield this.syncPreset(o,i)}}),{canUndo:"Preset"})}syncPreset(e,r){if(!r||!r.components)return this.clearComponents([e]);let n=new Set;if(ro(r.components,s=>{s&&n.add(s.ref)}),r.representations&&ro(r.representations,s=>{s&&n.add(s.ref)}),n.size===0)return this.clearComponents([e]);let o=!1,i=this.dataState.build(),a=s=>{n.has(s.cell.transform.ref)||(o=!0,i.delete(s.cell))};for(let s of e.components){a(s);for(let l of s.representations)a(l);if(s.genericRepresentations)for(let l of s.genericRepresentations)a(l)}if(e.genericRepresentations)for(let s of e.genericRepresentations)a(s);if(o)return i.commit()}clear(e){return this.clearComponents(e)}selectThis(e){var r;let n=this.plugin.managers.structure.selection;n.clear();for(let o of e){let i=ue.toSubStructureElementLoci(o.structure.cell.obj.data,(r=o.cell.obj)===null||r===void 0?void 0:r.data);n.fromLoci("set",i)}}canBeModified(e){return this.plugin.builders.structure.isComponentTransform(e.cell)}modifyByCurrentSelection(e,r){return this.plugin.runTask(ie.create("Modify Component",n=>N(this,null,function*(){let o=this.dataState.build();for(let i of e){if(!this.canBeModified(i))continue;let a=this.plugin.managers.structure.selection.getStructure(i.structure.cell.obj.data);!a||a.elementCount===0||this.modifyComponent(o,i,a,r)}yield this.dataState.updateTree(o,{canUndo:"Modify Selection"}).runInContext(n)})))}toggleVisibility(e,r){if(e.length!==0)if(r){let n=e[0].representations.indexOf(r),o=!r.cell.state.isHidden;for(let i of e){let a=i.representations[n];a&&Id(this.dataState,a.cell.transform.ref,o)}}else{let n=!e[0].cell.state.isHidden;for(let o of e)Id(this.dataState,o.cell.transform.ref,n)}}removeRepresentations(e,r){if(e.length===0)return;let n=[];if(r){let o=e[0].representations.indexOf(r);if(o<0)return;for(let i of e)i.representations[o]&&n.push(i.representations[o])}else for(let o of e)for(let i of o.representations)n.push(i);return this.plugin.managers.structure.hierarchy.remove(n,!0)}updateRepresentations(e,r,n){if(e.length===0)return Promise.resolve();let o=e[0].representations.indexOf(r);if(o<0)return Promise.resolve();let i=this.dataState.build();for(let a of e){let s=a.representations[o];s&&s.cell.transform.transformer===r.cell.transform.transformer&&i.to(s.cell).update(n)}return i.commit({canUndo:"Update Representation"})}updateRepresentationsTheme(e,r){var n,o,i,a;if(e.length===0)return;let s=this.dataState.build();for(let l of e)for(let c of l.representations){let u=c.cell.transform.params,d=typeof r=="function"?r(l,c):r,m=d.color==="default"?dS(this.plugin,(n=l.structure.cell.obj)===null||n===void 0?void 0:n.data,u?.type.name):d.color?dS(this.plugin,(o=l.structure.cell.obj)===null||o===void 0?void 0:o.data,u?.type.name,d.color,d.colorParams):void 0,p=d.size==="default"?YL(this.plugin,(i=l.structure.cell.obj)===null||i===void 0?void 0:i.data,u?.type.name):d.color?YL(this.plugin,(a=l.structure.cell.obj)===null||a===void 0?void 0:a.data,u?.type.name,d.size,d.sizeParams):void 0;(m||p)&&s.to(c.cell).update(h=>{m&&(h.colorTheme=m),p&&(h.sizeTheme=p)})}return s.commit({canUndo:"Update Theme"})}addRepresentation(e,r){if(e.length===0)return;let{hydrogens:n,visualQuality:o,ignoreLight:i,materialStyle:a,clipObjects:s}=this.state.options,u={ignoreHydrogens:n!=="all",ignoreHydrogensVariant:n==="only-polar"?"non-polar":"all",quality:o,ignoreLight:i,material:a,clip:s};return this.plugin.dataTransaction(()=>N(this,null,function*(){for(let d of e)yield this.plugin.builders.structure.representation.addRepresentation(d.cell,{type:this.plugin.representation.structure.registry.get(r),typeParams:u})}),{canUndo:"Add Representation"})}tryFindComponent(e,r){if(e.components.length!==0)return this.plugin.runTask(ie.create("Find Component",n=>N(this,null,function*(){var o,i;let a=(o=e.cell.obj)===null||o===void 0?void 0:o.data;if(!a)return;let s=hn.unionStructure(yield r.getSelection(this.plugin,n,a));for(let l of e.components){let c=(i=l.cell.obj)===null||i===void 0?void 0:i.data;if(!(!c||!l.cell.parent)&&dU(s,c))return l.cell}})))}add(e,r){return N(this,null,function*(){return this.plugin.dataTransaction(()=>N(this,null,function*(){let n=r||this.currentStructures;if(n.length===0)return;let{hydrogens:o,visualQuality:i,ignoreLight:a,materialStyle:s,clipObjects:l}=this.state.options,d={ignoreHydrogens:o!=="all",ignoreHydrogensVariant:o==="only-polar"?"non-polar":"all",quality:i,ignoreLight:a,material:s,clip:l},m=vo.create22();for(let p of n){let h;e.options.checkExisting&&(h=yield this.tryFindComponent(p,e.selection)),h||(h=yield this.plugin.builders.structure.tryCreateComponentFromSelection(p.cell,e.selection,m,{label:e.options.label||(e.selection===Qn.current?"Custom Selection":"")})),!(e.representation==="none"||!h)&&(yield this.plugin.builders.structure.representation.addRepresentation(h,{type:this.plugin.representation.structure.registry.get(e.representation),typeParams:d}))}}),{canUndo:"Add Selection"})})}applyTheme(e,r){return N(this,null,function*(){return this.plugin.dataTransaction(n=>N(this,null,function*(){let o=r||this.currentStructures;if(o.length===0)return;let i=a=>N(this,null,function*(){return hn.toLociWithSourceUnits(yield e.selection.getSelection(this.plugin,n,a))});for(let a of o)if(e.action.name==="color"){let s=e.action.params;yield KB(this.plugin,a.components,s.color,i,e.representations)}else if(e.action.name==="resetColor")yield KB(this.plugin,a.components,-1,i,e.representations);else if(e.action.name==="transparency"){let s=e.action.params;yield gee(this.plugin,a.components,s.value,i,e.representations)}else if(e.action.name==="emissive"){let s=e.action.params;yield See(this.plugin,a.components,s.value,i,e.representations)}else if(e.action.name==="material"){let s=e.action.params;yield $B(this.plugin,a.components,s.material,i,e.representations)}else if(e.action.name==="resetMaterial")yield $B(this.plugin,a.components,void 0,i,e.representations);else if(e.action.name==="clipping"){let s=e.action.params;yield pee(this.plugin,a.components,Xr.Groups.fromNames(s.excludeGroups),i,e.representations)}}),{canUndo:"Apply Theme"})})}modifyComponent(e,r,n,o){var i,a,s;let l=(i=r.cell.obj)===null||i===void 0?void 0:i.data;if(!l||(o==="subtract"||o==="intersect")&&!mU(l,n))return;let c=(a=r.structure.cell.obj)===null||a===void 0?void 0:a.data,u=o==="union"?uU(c,[l,n]):o==="intersect"?pU(l,n):fU(l,n);if(u.elementCount===0)e.delete(r.cell.transform.ref);else{let m={type:{name:"bundle",params:z.Bundle.fromSubStructure(c,u)},nullIfEmpty:!0,label:(s=r.cell.obj)===null||s===void 0?void 0:s.label};e.to(r.cell).update(m)}}updateLabel(e,r){var n,o;let i={type:(n=e.cell.params)===null||n===void 0?void 0:n.values.type,nullIfEmpty:(o=e.cell.params)===null||o===void 0?void 0:o.values.nullIfEmpty,label:r};this.dataState.build().to(e.cell).update(i).commit()}get dataState(){return this.plugin.state.data}clearComponents(e){let r=this.dataState.build();for(let n of e)for(let o of n.components)r.delete(o.cell.transform.ref);return r.commit({canUndo:"Clear Selections"})}constructor(e){super({options:g.getDefaultValues(t.OptionsParams)}),this.plugin=e,this.events={optionsUpdated:this.ev()}}};(function(t){t.OptionsParams={hydrogens:g.Select("all",[["all","Show All"],["hide-all","Hide All"],["only-polar","Only Polar"]],{description:"Determine display of hydrogen atoms in representations"}),visualQuality:g.Select("auto",Qx,{description:"Control the visual/rendering quality of representations"}),ignoreLight:g.Boolean(!1,{description:"Ignore light for stylized rendering of representations"}),materialStyle:Qo.getParam(),clipObjects:g.Group(dd.Params),interactions:g.Group(Mn.defaultParams,{label:"Non-covalent Interactions"})};function e(i,a){let{options:s}=i.query.structure.registry;return a=w({pivot:i.managers.structure.component.pivotStructure,allowNone:!0,hideSelection:!1,checkExisting:!1},a),{selection:g.Select(s[1][0],s,{isHidden:a?.hideSelection}),representation:o(i,a?.pivot,a?.allowNone?[["none","< Create Later >"]]:[]),options:g.Group({label:g.Text(""),checkExisting:g.Boolean(!!a?.checkExisting,{help:()=>({description:"Checks if a selection with the specifield elements already exists to avoid creating duplicate components."})})})}}t.getAddParams=e;function r(i,a){let{options:s}=i.query.structure.registry;return{selection:g.Select(s[1][0],s,{isHidden:!1}),action:g.MappedStatic("color",{color:g.Group({color:g.Color(ut.blue,{isExpanded:!0})},{isFlat:!0}),resetColor:g.EmptyGroup({label:"Reset Color"}),transparency:g.Group({value:g.Numeric(.5,{min:0,max:1,step:.01})},{isFlat:!0}),emissive:g.Group({value:g.Numeric(.5,{min:0,max:1,step:.01})},{isFlat:!0}),material:g.Group({material:Qo.getParam({isFlat:!0})},{isFlat:!0}),resetMaterial:g.EmptyGroup({label:"Reset Material"}),clipping:g.Group({excludeGroups:g.MultiSelect([],g.objectToOptions(Xr.Groups.Names))},{isFlat:!0})}),representations:g.MultiSelect([],n(i,a),{emptyValue:"All"})}}t.getThemeParams=r;function n(i,a){var s,l;return!((s=a?.cell.obj)===null||s===void 0)&&s.data?i.representation.structure.registry.getApplicableTypes((l=a.cell.obj)===null||l===void 0?void 0:l.data):i.representation.structure.registry.types}t.getRepresentationTypes=n;function o(i,a,s,l){let c=[...s,...n(i,a)];return g.Select(c[0][0],c,{label:l})}})(ql||(ql={}));var BIe=8,MP=class extends ji{get current(){return this.state.current}get history(){return this.state.history}tryAddHistory(e){if(z.Loci.isEmpty(e.loci))return;let r=0,n;for(let o of this.state.history){if(z.Loci.areEqual(o.loci,e.loci)){n=o;break}r++}if(n){wg(this.state.history,r),this.state.history.unshift(e),this.events.historyUpdated.next(void 0);return}this.state.history.unshift(e),this.state.history.length>BIe&&this.state.history.pop(),this.events.historyUpdated.next(void 0)}set(e){this.tryAddHistory(e),(!this.state.current||!z.Loci.areEqual(this.state.current.loci,e.loci))&&(this.state.current=e,this.behaviors.current.next(e))}setFromLoci(e){let r=st.normalize(e);if(!z.Loci.is(r)||z.Loci.isEmpty(r)){this.clear();return}this.set({loci:r,label:fu(r,{reverse:!0,hidePrefix:!0,htmlStyling:!1})})}addFromLoci(e){let r=this.state.current&&z.Loci.is(e)&&e.structure===this.state.current.loci.structure?z.Loci.union(e,this.state.current.loci):e;this.setFromLoci(r)}clear(){this.state.current&&(this.state.current=void 0,this.behaviors.current.next(void 0))}getSnapshot(){if(!this.current)return{};let e=this.plugin.helpers.substructureParent.get(this.current.loci.structure),r=e?.transform.ref;return r?{current:{label:this.current.label,ref:r,bundle:z.Bundle.fromLoci(this.current.loci),category:this.current.category}}:{}}setSnapshot(e){var r,n;if(!e.current){this.clear();return}let{label:o,ref:i,bundle:a,category:s}=e.current,l=(n=(r=this.plugin.state.data.select(lt.Generators.byRef(i))[0])===null||r===void 0?void 0:r.obj)===null||n===void 0?void 0:n.data;if(!l)return;let c=z.Bundle.toLoci(a,l);this.set({label:o,loci:c,category:s})}constructor(e){super({history:[]}),this.plugin=e,this.events={historyUpdated:this.ev()},this.behaviors={current:this.ev.behavior(void 0)},e.state.data.events.object.removed.subscribe(({obj:n})=>{var o;if(!X.Molecule.Structure.is(n))return;((o=this.current)===null||o===void 0?void 0:o.loci.structure)===n.data&&this.clear();let i=[];for(let a of this.history)a.loci.structure===n.data&&i.push(a);i.length!==this.history.length&&(this.history.length=0,this.history.push(...i),this.events.historyUpdated.next(void 0))});let r=te();e.state.data.events.object.updated.subscribe(({oldData:n,obj:o,action:i})=>{var a;if(X.Molecule.Structure.is(o)&&n!==o.data&&i==="in-place"){let s=this.state.current,l=o.data;if(s&&s.loci.structure===n){let c=z.Loci.remap(s.loci,l);this.state.current=U(w({},s),{loci:c}),this.behaviors.current.next(this.state.current),st.getBoundingSphere(c,r);let u=(a=this.plugin.canvas3d)===null||a===void 0?void 0:a.camera,d=u.getTargetDistance(r.radius+4);(y.distance(u.target,r.center)>r.radius||d>u.viewport.height/u.zoom)&&this.plugin.managers.camera.focusSphere(r,{durationMs:0})}}})}};function Pee(t,e){let r=WIe(t,e||LP());return KIe(t.tree,r),e&&e.refs.forEach(YIe,r),{hierarchy:r.hierarchy,added:r.added,changed:r.changed}}function LP(){return{trajectories:[],models:[],structures:[],refs:new Map}}function OIe(t){return{kind:"trajectory",cell:t,version:t.transform.version,models:[]}}function Cee(t,e){return{kind:"model",cell:t,version:t.transform.version,trajectory:e,structures:[]}}function FIe(t,e){return{kind:"model-properties",cell:t,version:t.transform.version,model:e}}function NIe(t,e){return{kind:"model-unitcell",cell:t,version:t.transform.version,model:e}}function Tee(t,e){return{kind:"structure",cell:t,version:t.transform.version,model:e,components:[]}}function VIe(t,e){return{kind:"structure-properties",cell:t,version:t.transform.version,structure:e}}function zIe(t,e){return{kind:"structure-transform",cell:t,version:t.transform.version,structure:e}}function UIe(t,e){return{kind:"structure-volume-streaming",cell:t,version:t.transform.version,structure:e}}function GIe(t){return t.transform.tags?[...t.transform.tags].sort().join():t.transform.ref}function jIe(t,e){return{kind:"structure-component",cell:t,version:t.transform.version,structure:e,key:GIe(t),representations:[]}}function HIe(t,e){return{kind:"structure-representation",cell:t,version:t.transform.version,component:e}}function qIe(t,e){return{kind:"generic-representation",cell:t,version:t.transform.version,parent:e}}function WIe(t,e){return{state:t,oldHierarchy:e,hierarchy:LP(),changed:!1,added:new Set}}function ab(t,e,r,n,...o){let i=n(...o);r.push(i),t.hierarchy.refs.set(e.transform.ref,i);let a=t.oldHierarchy.refs.get(e.transform.ref);return a?a.version!==e.transform.version&&(t.changed=!0):(t.added.add(i.cell.transform.ref),t.changed=!0),i}function Sy(t,e,r,...n){let o=r(...n);t.hierarchy.refs.set(e.transform.ref,o);let i=t.oldHierarchy.refs.get(e.transform.ref);return i?i.version!==e.transform.version&&(t.changed=!0):(t.added.add(o.cell.transform.ref),t.changed=!0),o}function wee(t){return e=>t.is(e.obj)}function _ee(t,e){return(r,n)=>!e(n)&&t.is(r.obj)}function RP(t){return e=>e.transform.transformer===t}function Cy(){}var XIe=[[wee(X.Molecule.Trajectory),(t,e)=>{t.currentTrajectory=ab(t,e,t.hierarchy.trajectories,OIe,e)},t=>t.currentTrajectory=void 0],[_ee(X.Molecule.Model,t=>t.currentModel),(t,e)=>{t.currentTrajectory?t.currentModel=ab(t,e,t.currentTrajectory.models,Cee,e,t.currentTrajectory):t.currentModel=Sy(t,e,Cee,e),t.hierarchy.models.push(t.currentModel)},t=>t.currentModel=void 0],[RP(de.Model.CustomModelProperties),(t,e)=>{if(!t.currentModel)return!1;t.currentModel.properties=Sy(t,e,FIe,e,t.currentModel)},Cy],[RP(de.Representation.ModelUnitcell3D),(t,e)=>{if(!t.currentModel)return!1;t.currentModel.unitcell=Sy(t,e,NIe,e,t.currentModel)},Cy],[_ee(X.Molecule.Structure,t=>t.currentStructure),(t,e)=>{t.currentModel?t.currentStructure=ab(t,e,t.currentModel.structures,Tee,e,t.currentModel):t.currentStructure=Sy(t,e,Tee,e),t.hierarchy.structures.push(t.currentStructure)},t=>t.currentStructure=void 0],[RP(de.Model.CustomStructureProperties),(t,e)=>{if(!t.currentStructure)return!1;t.currentStructure.properties=Sy(t,e,VIe,e,t.currentStructure)},Cy],[RP(de.Model.TransformStructureConformation),(t,e)=>{if(!t.currentStructure)return!1;t.currentStructure.transform=Sy(t,e,zIe,e,t.currentStructure)},Cy],[wee(di),(t,e)=>(t.currentStructure&&(t.currentStructure.volumeStreaming=Sy(t,e,UIe,e,t.currentStructure)),!1),Cy],[(t,e)=>e.currentComponent||!e.currentStructure||t.transform.transformer.definition.isDecorator?!1:X.Molecule.Structure.is(t.obj),(t,e)=>{t.currentStructure&&(t.currentComponent=ab(t,e,t.currentStructure.components,jIe,e,t.currentStructure))},t=>t.currentComponent=void 0],[(t,e)=>!t.state.isGhost&&!!e.currentComponent&&X.Molecule.Structure.Representation3D.is(t.obj),(t,e)=>(t.currentComponent&&ab(t,e,t.currentComponent.representations,HIe,e,t.currentComponent),!1),Cy],[t=>!t.state.isGhost&&X.isRepresentation3D(t.obj),(t,e)=>{let r=t.currentComponent||t.currentStructure||t.currentModel;r&&(r.genericRepresentations||(r.genericRepresentations=[]),ab(t,e,r.genericRepresentations,qIe,e,r))},Cy]];function Eee(t){if(!t||!t?.parent||!t.parent.cells.has(t.transform.ref))return!1;let{obj:e}=t;return!(!e||e===Rr.Null||t.status!=="ok"&&t.status!=="error")}function YIe(t){let{cell:e}=t;Eee(e)||(this.changed=!0)}function QIe(t){Iee(this,this.tree.transforms.get(t))}function Iee(t,e){let{state:r}=t,n=r.state.cells.get(e.ref);if(!Eee(n))return;let o,i=!1;for(let[s,l,c]of XIe)if(s(n,r)){if(l(r,n)===!1){i=!0;break}o=c;break}if(i)return;let a=t.tree.children.get(e.ref);a&&a.size&&a.forEach(QIe,t),o&&o(r)}function KIe(t,e){let r={tree:t,state:e};return Iee(r,t.root),r.state}var km=class t extends Ed{get dataState(){return this.plugin.state.data}get currentComponentGroups(){return this._currentComponentGroups?this._currentComponentGroups:(this._currentComponentGroups=t.getComponentGroups(this.selection.structures),this._currentComponentGroups)}get seletionSet(){if(this._currentSelectionSet)return this._currentSelectionSet;this._currentSelectionSet=new Set;for(let e of this.selection.trajectories)this._currentSelectionSet.add(e.cell.transform.ref);for(let e of this.selection.models)this._currentSelectionSet.add(e.cell.transform.ref);for(let e of this.selection.structures)this._currentSelectionSet.add(e.cell.transform.ref);return this._currentSelectionSet}get current(){return this.sync(!1),this.state.hierarchy}get selection(){return this.sync(!1),this.state.selection}getStructuresWithSelection(){let e=this.plugin.managers.structure.hierarchy.current.structures,r=[];for(let n of e)this.plugin.managers.structure.selection.structureHasSelection(n)&&r.push(n);return r}findStructure(e){if(!e)return;let r=this.plugin.helpers.substructureParent.get(e);if(!r)return;let n=this.plugin.state.data.selectQ(o=>o.byValue(r).rootOfType(X.Molecule.Structure))[0];if(n)return this.behaviors.selection.value.structures.find(o=>o.cell===n)}syncCurrent(e,r){let n=this.seletionSet,o=[];for(let i of e){let a=i.cell.transform.ref;(n.has(a)||r.has(a))&&o.push(i)}return o.length===0?e.length>0?[e[0]]:[]:o}sync(e){if(!e&&this.dataState.inUpdate)return;if(this.state.syncedTree===this.dataState.tree){e&&!this.state.notified&&(this.state.notified=!0,this.behaviors.selection.next(w({hierarchy:this.state.hierarchy},this.state.selection)));return}this.state.syncedTree=this.dataState.tree;let r=Pee(this.plugin.state.data,this.current);if(!r.changed)return;let{hierarchy:n}=r,o=this.syncCurrent(n.trajectories,r.added),i=this.syncCurrent(n.models,r.added),a=this.syncCurrent(n.structures,r.added);this._currentComponentGroups=void 0,this._currentSelectionSet=void 0,this.state.hierarchy=n,this.state.selection.trajectories=o,this.state.selection.models=i,this.state.selection.structures=a,e?(this.state.notified=!0,this.behaviors.selection.next({hierarchy:n,trajectories:o,models:i,structures:a})):this.state.notified=!1}updateCurrent(e,r){let n=this.current,o=r==="add"?no.union(this.seletionSet,new Set(e.map(l=>l.cell.transform.ref))):no.difference(this.seletionSet,new Set(e.map(l=>l.cell.transform.ref))),i=[],a=[],s=[];for(let l of n.trajectories)o.has(l.cell.transform.ref)&&i.push(l);for(let l of n.models)o.has(l.cell.transform.ref)&&a.push(l);for(let l of n.structures)o.has(l.cell.transform.ref)&&s.push(l);this._currentComponentGroups=void 0,this._currentSelectionSet=void 0,this.state.selection.trajectories=i,this.state.selection.models=a,this.state.selection.structures=s,this.behaviors.selection.next({hierarchy:n,trajectories:i,models:a,structures:s})}remove(e,r){if(e.length===0)return;let n=this.plugin.state.data.build();for(let o of e)n.delete(typeof o=="string"?o:o.cell.transform.ref);return n.commit({canUndo:r?"Remove":!1})}toggleVisibility(e,r){if(e.length===0)return;let n=r!==void 0?r!=="show":!e[0].cell.state.isHidden;for(let o of e)Id(this.dataState,o.cell.transform.ref,n)}applyPreset(e,r,n){return this.plugin.dataTransaction(()=>N(this,null,function*(){for(let o of e)o.models.length>0&&(yield this.clearTrajectory(o)),yield this.plugin.builders.structure.hierarchy.applyPreset(o.cell,r,n)}))}updateStructure(e,r){return N(this,null,function*(){yield this.plugin.dataTransaction(()=>N(this,null,function*(){let n=Nn.getDecoratorRoot(this.dataState.tree,e.cell.transform.ref),o=this.dataState.tree.children.get(n).toArray();yield this.remove(o,!1),yield this.plugin.state.updateTransform(this.plugin.state.data,e.cell.transform.ref,r,"Structure Type"),yield this.plugin.builders.structure.representation.applyPreset(e.cell.transform.ref,"auto")}),{canUndo:"Structure Type"}),Re.Camera.Reset(this.plugin)})}clearTrajectory(e){let r=this.dataState.build();for(let n of e.models)r.delete(n.cell);return r.commit()}constructor(e){super(),this.plugin=e,this.state={syncedTree:this.dataState.tree,notified:!1,hierarchy:LP(),selection:{trajectories:[],models:[],structures:[]}},this.behaviors={selection:this.ev.behavior({hierarchy:this.current,trajectories:this.selection.trajectories,models:this.selection.models,structures:this.selection.structures})},this._currentComponentGroups=void 0,this._currentSelectionSet=void 0,this.subscribe(e.state.data.events.changed,r=>{r.inTransaction||e.behaviors.state.isAnimating.value||this.sync(!0)}),this.subscribe(e.behaviors.state.isAnimating,r=>{!r&&!e.behaviors.state.isUpdating.value&&this.sync(!0)})}};(function(t){function e(n){if(!n.length)return[];if(n.length===1)return n[0].components.map(a=>[a]);let o=[],i=new Map;for(let a of n)for(let s of a.components){let l=s.key;if(!l)continue;let c=i.get(l);c||(c=[],i.set(l,c),o.push(c)),c.push(s)}return o}t.getComponentGroups=e;function r(n){var o,i,a,s,l,c,u,d,m;let{structures:p}=n.managers.structure.hierarchy.selection;if(p.length===0)return"";if(p.length===1){let v=p[0],x=(o=v.cell.obj)===null||o===void 0?void 0:o.data;if(!x)return((i=v.cell.obj)===null||i===void 0?void 0:i.label)||"Structure";let S=x.models[0]||x.representativeModel||x.masterModel;if(!S)return((a=v.cell.obj)===null||a===void 0?void 0:a.label)||"Structure";let T=S.entryId;return!((l=(s=v.model)===null||s===void 0?void 0:s.trajectory)===null||l===void 0)&&l.models&&v.model.trajectory.models.length===1?T:v.model?`${(c=v.model.cell.obj)===null||c===void 0?void 0:c.label} | ${T}`:T}let h=p[0],f=(u=h?.model)===null||u===void 0?void 0:u.trajectory,b=!0;for(let v of p)if(((d=v?.model)===null||d===void 0?void 0:d.trajectory)!==f){b=!1;break}return b&&f?`${(m=f.cell.obj)===null||m===void 0?void 0:m.label} | ${p.length} structures`:`${p.length} structures`}t.getSelectedStructuresDescription=r})(km||(km={}));var ZB="measurement-group",BP="measurement-order-label",JB={distanceUnitLabel:g.Text("\u212B",{isEssential:!0}),textColor:v3.textColor},$Ie=g.getDefaultValues(JB),OP=class extends ji{stateUpdated(){this.behaviors.state.next(this.state)}getGroup(){let e=this.plugin.state.data,r=lt.findTagInSubtree(e.tree,kt.RootRef,ZB),n=this.plugin.state.data.build();return r?n.to(r):n.toRoot().group(de.Misc.CreateGroup,{label:"Measurements"},{tags:ZB})}setOptions(e){return N(this,null,function*(){this.updateState({options:e})&&this.stateUpdated();let r=this.plugin.state.data.build();for(let n of this.state.distances)r.to(n).update(o=>{o.unitLabel=e.distanceUnitLabel,o.textColor=e.textColor});for(let n of this.state.labels)r.to(n).update(o=>{o.textColor=e.textColor});for(let n of this.state.angles)r.to(n).update(o=>{o.textColor=e.textColor});for(let n of this.state.dihedrals)r.to(n).update(o=>{o.textColor=e.textColor});r.editInfo.count!==0&&(yield Re.State.Update(this.plugin,{state:this.plugin.state.data,tree:r,options:{doNotLogTiming:!0}}))})}addDistance(e,r,n){return N(this,null,function*(){let o=this.plugin.helpers.substructureParent.get(e.structure),i=this.plugin.helpers.substructureParent.get(r.structure);if(!o||!i)return;let a=[o.transform.ref];Mo(a,i.transform.ref);let l=this.getGroup().apply(de.Model.MultiStructureSelectionFromExpression,{selections:[{key:"a",groupId:"a",ref:o.transform.ref,expression:z.Loci.toExpression(e)},{key:"b",groupId:"b",ref:i.transform.ref,expression:z.Loci.toExpression(r)}],isTransitive:!0,label:"Distance"},{dependsOn:a,tags:n?.selectionTags}),c=l.apply(de.Representation.StructureSelectionsDistance3D,w(w(w({customText:n?.customText||"",unitLabel:this.state.options.distanceUnitLabel,textColor:this.state.options.textColor},n?.lineParams),n?.labelParams),n?.visualParams),{tags:n?.reprTags}),u=this.plugin.state.data;return yield Re.State.Update(this.plugin,{state:u,tree:c,options:{doNotLogTiming:!0}}),{selection:l.selector,representation:c.selector}})}addAngle(e,r,n,o){return N(this,null,function*(){let i=this.plugin.helpers.substructureParent.get(e.structure),a=this.plugin.helpers.substructureParent.get(r.structure),s=this.plugin.helpers.substructureParent.get(n.structure);if(!i||!a||!s)return;let l=[i.transform.ref];Mo(l,a.transform.ref),Mo(l,s.transform.ref);let u=this.getGroup().apply(de.Model.MultiStructureSelectionFromExpression,{selections:[{key:"a",ref:i.transform.ref,expression:z.Loci.toExpression(e)},{key:"b",ref:a.transform.ref,expression:z.Loci.toExpression(r)},{key:"c",ref:s.transform.ref,expression:z.Loci.toExpression(n)}],isTransitive:!0,label:"Angle"},{dependsOn:l,tags:o?.selectionTags}),d=u.apply(de.Representation.StructureSelectionsAngle3D,w(w(w({customText:o?.customText||"",textColor:this.state.options.textColor},o?.lineParams),o?.labelParams),o?.visualParams),{tags:o?.reprTags}),m=this.plugin.state.data;return yield Re.State.Update(this.plugin,{state:m,tree:d,options:{doNotLogTiming:!0}}),{selection:u.selector,representation:d.selector}})}addDihedral(e,r,n,o,i){return N(this,null,function*(){let a=this.plugin.helpers.substructureParent.get(e.structure),s=this.plugin.helpers.substructureParent.get(r.structure),l=this.plugin.helpers.substructureParent.get(n.structure),c=this.plugin.helpers.substructureParent.get(o.structure);if(!a||!s||!l||!c)return;let u=[a.transform.ref];Mo(u,s.transform.ref),Mo(u,l.transform.ref),Mo(u,c.transform.ref);let m=this.getGroup().apply(de.Model.MultiStructureSelectionFromExpression,{selections:[{key:"a",ref:a.transform.ref,expression:z.Loci.toExpression(e)},{key:"b",ref:s.transform.ref,expression:z.Loci.toExpression(r)},{key:"c",ref:l.transform.ref,expression:z.Loci.toExpression(n)},{key:"d",ref:c.transform.ref,expression:z.Loci.toExpression(o)}],isTransitive:!0,label:"Dihedral"},{dependsOn:u,tags:i?.selectionTags}),p=m.apply(de.Representation.StructureSelectionsDihedral3D,w(w(w({customText:i?.customText||"",textColor:this.state.options.textColor},i?.lineParams),i?.labelParams),i?.visualParams),{tags:i?.reprTags}),h=this.plugin.state.data;return yield Re.State.Update(this.plugin,{state:h,tree:p,options:{doNotLogTiming:!0}}),{selection:m.selector,representation:p.selector}})}addLabel(e,r){return N(this,null,function*(){let n=this.plugin.helpers.substructureParent.get(e.structure);if(!n)return;let o=[n.transform.ref],a=this.getGroup().apply(de.Model.MultiStructureSelectionFromExpression,{selections:[{key:"a",ref:n.transform.ref,expression:z.Loci.toExpression(e)}],isTransitive:!0,label:"Label"},{dependsOn:o,tags:r?.selectionTags}),s=a.apply(de.Representation.StructureSelectionsLabel3D,w(w({textColor:this.state.options.textColor},r?.labelParams),r?.visualParams),{tags:r?.reprTags}),l=this.plugin.state.data;return yield Re.State.Update(this.plugin,{state:l,tree:s,options:{doNotLogTiming:!0}}),{selection:a.selector,representation:s.selector}})}addOrientation(e){return N(this,null,function*(){let r=[],n=[];for(let l=0,c=e.length;l{r.inTransaction||e.behaviors.state.isAnimating.value||this.sync()}),e.behaviors.state.isAnimating.subscribe(r=>{!r&&!e.behaviors.state.isUpdating.value&&this.sync()})}};var BS=new Zs("98"),ZIe=24,FP=class extends ji{get entries(){return this.state.entries}get additionsHistory(){return this.state.additionsHistory}get stats(){return this.state.stats?this.state.stats:(this.state.stats=this.calcStats(),this.state.stats)}getEntry(e){let r=this.plugin.helpers.substructureParent.get(e,!0);if(!r)return;let n=r.transform.ref;if(!this.entries.has(n)){let o=new OS(z.Loci(e,[]));return this.entries.set(n,o),o}return this.entries.get(n)}calcStats(){let e=0,r=0,n=z.Stats.create();this.entries.forEach(i=>{let{elements:a}=i.selection;if(a.length){e+=1;for(let s=0,l=a.length;sZIe&&this.additionsHistory.pop(),this.events.additionsHistoryUpdated.next(void 0)}clearHistory(){this.state.additionsHistory.length!==0&&(this.state.additionsHistory=[],this.events.additionsHistoryUpdated.next(void 0))}clearHistoryForStructure(e){let r=[];for(let n of this.state.additionsHistory)n.loci.structure.root===e.root&&r.push(n);for(let n of r)this.modifyHistory(n,"remove");r.length!==0&&this.events.additionsHistoryUpdated.next(void 0)}onRemove(e,r){var n;this.entries.has(e)&&(this.entries.delete(e),r?.data&&this.clearHistoryForStructure(r.data),((n=this.referenceLoci)===null||n===void 0?void 0:n.structure)===r?.data&&(this.referenceLoci=void 0),this.state.stats=void 0,this.events.changed.next(void 0))}onUpdate(e,r,n){var o,i,a,s;if(r===n||r?.data===n.data)return;let l=this.plugin.helpers.substructureParent.get(n.data,!0);if(!l||e!==l.transform.ref||!this.entries.has(e))return;let c=(i=(o=this.plugin.helpers.substructureParent.get(n.data))===null||o===void 0?void 0:o.obj)===null||i===void 0?void 0:i.data;if(c)if(!r?.data||ue.areUnitIdsAndIndicesEqual(r.data,n.data)){this.entries.set(e,eDe(this.entries.get(e),c)),((a=this.referenceLoci)===null||a===void 0?void 0:a.structure.root)===c.root&&(this.referenceLoci=z.Loci.remap(this.referenceLoci,c));let u=!1;for(let d of this.state.additionsHistory)d.loci.structure.root===c.root&&(d.loci=z.Loci.remap(d.loci,c),u=!0);u&&this.events.additionsHistoryUpdated.next(void 0)}else this.entries.set(e,new OS(z.Loci(c,[]))),((s=this.referenceLoci)===null||s===void 0?void 0:s.structure.root)===c.root&&(this.referenceLoci=void 0),this.clearHistoryForStructure(c),this.state.stats=void 0,this.events.changed.next(void 0)}clear(){let e=this.entries.keys(),r=[];for(;;){let n=e.next();if(n.done)break;let o=this.entries.get(n.value);z.Loci.isEmpty(o.selection)||r.push(o.selection),o.selection=z.Loci(o.selection.structure,[])}return this.referenceLoci=void 0,this.state.stats=void 0,this.events.changed.next(void 0),this.events.loci.clear.next(void 0),this.clearHistory(),r}getLoci(e){let r=this.getEntry(e);return r?r.selection:St}getStructure(e){let r=this.getEntry(e);if(r)return r.structure}structureHasSelection(e){var r,n;let o=(n=(r=e.cell)===null||r===void 0?void 0:r.obj)===null||n===void 0?void 0:n.data;if(!o)return!1;let i=this.getEntry(o);return!!i&&!z.Loci.isEmpty(i.selection)}has(e){if(z.Loci.is(e)){let r=this.getEntry(e.structure);if(r)return z.Loci.isSubset(r.selection,e)}return!1}tryGetRange(e){if(!z.Loci.is(e)||e.elements.length!==1||!this.getEntry(e.structure))return;let n=e.elements[0];if(!n)return;let o=this.referenceLoci;if(!o||!z.Loci.is(o)||o.structure!==e.structure)return;let i;for(let a of o.elements)if(n.unit===a.unit){i=a;break}if(i&&n.unit===i.unit)return tDe(e.structure,i,n)}elementCount(){let e=0;return this.entries.forEach(r=>{e+=z.Loci.size(r.selection)}),e}getBoundary(){let e=y.create(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),r=y.create(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);BS.reset();let n=[];this.entries.forEach(o=>{let i=o.selection;z.Loci.isEmpty(i)||n.push(z.Loci.getBoundary(i))});for(let o=0,i=n.length;or.selection))}modify(e,r){let n=!1;switch(e){case"add":n=this.add(r);break;case"remove":n=this.remove(r);break;case"intersect":n=this.intersect(r);break;case"set":n=this.set(r);break}n&&(this.state.stats=void 0,this.events.changed.next(void 0))}get applicableStructures(){return this.plugin.managers.structure.hierarchy.selection.structures.filter(e=>!!e.cell.obj).map(e=>e.cell.obj.data)}triggerInteraction(e,r,n=!0){switch(e){case"add":this.plugin.managers.interactivity.lociSelects.select({loci:r},n);break;case"remove":this.plugin.managers.interactivity.lociSelects.deselect({loci:r},n);break;case"intersect":this.plugin.managers.interactivity.lociSelects.selectJoin({loci:r},n);break;case"set":this.plugin.managers.interactivity.lociSelects.selectOnly({loci:r},n);break}}fromLoci(e,r,n=!0){this.triggerInteraction(e,r,n)}fromCompiledQuery(e,r,n=!0){for(let o of this.applicableStructures){let i=r(new fa(o));this.triggerInteraction(e,hn.toLociWithSourceUnits(i),n)}}fromSelectionQuery(e,r,n=!0){this.plugin.runTask(ie.create("Structure Selection",o=>N(this,null,function*(){for(let i of this.applicableStructures){let a=yield r.getSelection(this.plugin,o,i);this.triggerInteraction(e,hn.toLociWithSourceUnits(a),n)}})))}fromSelections(e){var r;let n=Fn.resolveAndCheck(this.plugin.state.data,e);if(!(!n||!n.obj)){if(!X.Molecule.Structure.Selections.is(n.obj)){console.warn("fromSelections applied to wrong object type.",n.obj);return}this.clear();for(let o of(r=n.obj)===null||r===void 0?void 0:r.data)this.fromLoci("set",o.loci)}}getSnapshot(){let e=[];return this.entries.forEach((r,n)=>{e.push({ref:n,bundle:z.Bundle.fromLoci(r.selection)})}),{entries:e}}setSnapshot(e){var r,n;this.entries.clear();for(let{ref:o,bundle:i}of e.entries){let a=(n=(r=this.plugin.state.data.select(lt.Generators.byRef(o))[0])===null||r===void 0?void 0:r.obj)===null||n===void 0?void 0:n.data;if(!a)continue;let s=z.Bundle.toLoci(i,a);this.fromLoci("set",s,!1)}}constructor(e){super({entries:new Map,additionsHistory:[],stats:JIe()}),this.plugin=e,this.events={changed:this.ev(),additionsHistoryUpdated:this.ev(),loci:{add:this.ev(),remove:this.ev(),clear:this.ev()}},e.helpers.substructureParent.events.removed.subscribe(r=>this.onRemove(r.ref,r.obj)),e.helpers.substructureParent.events.updated.subscribe(r=>this.onUpdate(r.ref,r.oldObj,r.obj))}};function JIe(){return{structureCount:0,elementCount:0,label:"Nothing Selected"}}var OS=class{get selection(){return this._selection}set selection(e){this._selection=e,this._structure=void 0}get structure(){return this._structure?this._structure:(st.isEmpty(this._selection)?this._structure=void 0:this._structure=z.Loci.toStructure(this._selection),this._structure)}constructor(e){this._structure=void 0,this._selection=e}};function eDe(t,e){return new OS(z.Loci.remap(t.selection,e))}function tDe(t,e,r){let n=Math.min(we.min(e.indices),we.min(r.indices)),o=Math.max(we.max(e.indices),we.max(r.indices));return z.Loci(t,[{unit:e.unit,indices:we.ofRange(n,o)}])}function Aee(t,e){let r=iDe(t,e||NP());return uDe(t.tree,r),e&&e.refs.forEach(lDe,r),{hierarchy:r.hierarchy,added:r.added,changed:r.changed}}function NP(){return{volumes:[],lazyVolumes:[],refs:new Map}}function rDe(t){return{kind:"volume",cell:t,version:t.transform.version,representations:[]}}function nDe(t){return{kind:"lazy-volume",cell:t,version:t.transform.version}}function oDe(t,e){return{kind:"volume-representation",cell:t,version:t.transform.version,volume:e}}function iDe(t,e){return{state:t,oldHierarchy:e,hierarchy:NP(),changed:!1,added:new Set}}function eO(t,e,r,n,...o){let i=n(...o);r.push(i),t.hierarchy.refs.set(e.transform.ref,i);let a=t.oldHierarchy.refs.get(e.transform.ref);return a?a.version!==e.transform.version&&(t.changed=!0):(t.added.add(i.cell.transform.ref),t.changed=!0),i}function aDe(t,e){return(r,n)=>!e(n)&&t.is(r.obj)}function Dee(){}var sDe=[[aDe(X.Volume.Data,t=>t.currentVolume),(t,e)=>{t.currentVolume=eO(t,e,t.hierarchy.volumes,rDe,e)},t=>t.currentVolume=void 0],[t=>X.Volume.Lazy.is(t.obj),(t,e)=>{eO(t,e,t.hierarchy.lazyVolumes,nDe,e)},Dee],[(t,e)=>!t.state.isGhost&&!!e.currentVolume&&X.Volume.Representation3D.is(t.obj),(t,e)=>(t.currentVolume&&eO(t,e,t.currentVolume.representations,oDe,e,t.currentVolume),!1),Dee]];function kee(t){if(!t||!t?.parent||!t.parent.cells.has(t.transform.ref))return!1;let{obj:e}=t;return!(!e||e===Rr.Null||t.status!=="ok"&&t.status!=="error")}function lDe(t){let{cell:e}=t;kee(e)||(this.changed=!0)}function cDe(t){Mee(this,this.tree.transforms.get(t))}function Mee(t,e){let{state:r}=t,n=r.state.cells.get(e.ref);if(!kee(n))return;let o,i=!1;for(let[s,l,c]of sDe)if(s(n,r)){if(l(r,n)===!1){i=!0;break}o=c;break}if(i)return;let a=t.tree.children.get(e.ref);a&&a.size&&a.forEach(cDe,t),o&&o(r)}function uDe(t,e){let r={tree:t,state:e};return Mee(r,t.root),r.state}var Dh=class extends Ed{get dataState(){return this.plugin.state.data}get current(){return this.sync(!1),this.state.hierarchy}get selection(){return this.sync(!1),this.state.selection}sync(e){if(!e&&this.dataState.inUpdate)return;if(this.state.syncedTree===this.dataState.tree){e&&!this.state.notified&&(this.state.notified=!0,this.behaviors.selection.next({hierarchy:this.state.hierarchy,volume:this.state.selection}));return}this.state.syncedTree=this.dataState.tree;let r=Aee(this.plugin.state.data,this.current);if(!r.changed)return;let{hierarchy:n}=r;this.state.hierarchy=n,this.state.selection?this.state.selection=n.refs.has(this.state.selection.cell.transform.ref)?n.refs.get(this.state.selection.cell.transform.ref):n.volumes[0]:this.state.selection=n.volumes[0],e?(this.state.notified=!0,this.behaviors.selection.next({hierarchy:n,volume:this.state.selection})):this.state.notified=!1}setCurrent(e){this.state.selection=e||this.state.hierarchy.volumes[0],this.behaviors.selection.next({hierarchy:this.state.hierarchy,volume:e||this.state.hierarchy.volumes[0]})}remove(e,r){if(e.length===0)return;let n=this.plugin.state.data.build();for(let o of e)n.delete(typeof o=="string"?o:o.cell.transform.ref);return n.commit({canUndo:r?"Remove":!1})}toggleVisibility(e,r){if(e.length===0)return;let n=r!==void 0?r!=="show":!e[0].cell.state.isHidden;for(let o of e)Id(this.dataState,o.cell.transform.ref,n)}addRepresentation(e,r){var n;return this.dataState.build().to(e.cell).apply(de.Representation.VolumeRepresentation3D,Bp(this.plugin,(n=e.cell.obj)===null||n===void 0?void 0:n.data,{type:r})).commit({canUndo:"Add Representation"})}constructor(e){super(),this.plugin=e,this.state={syncedTree:this.dataState.tree,notified:!1,hierarchy:NP(),selection:void 0},this.behaviors={selection:this.ev.behavior({hierarchy:this.current,volume:this.selection})},this.subscribe(e.state.data.events.changed,r=>{r.inTransaction||e.behaviors.state.isAnimating.value||this.sync(!0)}),this.subscribe(e.behaviors.state.isAnimating,r=>{!r&&!e.behaviors.state.isUpdating.value&&this.sync(!0)})}};(function(t){function e(r,n){var o,i;return!((o=n?.cell.obj)===null||o===void 0)&&o.data?r.representation.volume.registry.getApplicableTypes((i=n.cell.obj)===null||i===void 0?void 0:i.data):r.representation.volume.registry.types}t.getRepresentationTypes=e})(Dh||(Dh={}));var dDe=[["full","Full"],["collapsed","Collapsed"],["hidden","Hidden"]],tO=[["full","Full"],["hidden","Hidden"]],mDe={isExpanded:g.Boolean(!1),showControls:g.Boolean(!0),regionState:g.Group({left:g.Select("full",dDe),top:g.Select("full",tO),right:g.Select("full",tO),bottom:g.Select("full",tO)}),controlsDisplay:g.Value("outside",{isHidden:!0})},VP=class extends ji{updateProps(e){let r=!!this.state.isExpanded;this.updateState(e),this.root&&typeof e.isExpanded=="boolean"&&e.isExpanded!==r&&this.handleExpand(),this.events.updated.next(void 0)}setProps(e){this.updateState(e)}setRoot(e){this.root=e,this.state.isExpanded&&this.handleExpand()}getScrollElement(){return document.scrollingElement?document.scrollingElement:document.documentElement?document.documentElement:document.body}handleExpand(){try{let e=document.getElementsByTagName("body")[0],r=document.getElementsByTagName("head")[0];if(!e||!r||!this.root)return;if(this.state.isExpanded){let n=r.children,o=[],i=!1;for(let u=0;uthis.updateProps(r.state)),typeof document<"u"&&(this.expandedViewport=document.createElement("meta"),this.expandedViewport.name="viewport",this.expandedViewport.content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0")}};var nO={includeTypes:g.MultiSelect(Tg(Pr.Names),g.objectToOptions(Pr.Names)),excludeTypes:g.MultiSelect([],g.objectToOptions(Pr.Names)),ignoreHydrogens:g.Boolean(!1),ignoreHydrogensVariant:g.Select("all",g.arrayToOptions(["all","non-polar"])),aromaticBonds:g.Boolean(!0,{description:"Display aromatic bonds with dashes"}),multipleBonds:g.Select("symmetric",g.arrayToOptions(["off","symmetric","offset"]))},E5t=g.getDefaultValues(nO),FS=U(w(w({},wc),nO),{adjustCylinderLength:g.Boolean(!1,{description:"Shorten cylinders to reduce overlap with spheres. Useful for for transparent bonds. Not working well with aromatic bonds."})}),I5t=g.getDefaultValues(FS),NS=w(w({},FL),nO),D5t=g.getDefaultValues(NS);function sb(t,e,r){return!Pr.is(t,r)||Pr.is(e,r)}function zP(t,e,r){let n=e.elements,o=e.bonds,{a:i,b:a,edgeProps:s}=o,{flags:l}=s,{ignoreHydrogens:c,ignoreHydrogensVariant:u,includeTypes:d,excludeTypes:m}=r,p=Pr.fromNames(d),h=Pr.fromNames(m),f=Pr.isAll(p)&&h===0,{child:b}=t,v=b?.unitMap.get(e.id);if(b&&!v)throw new Error("expected childUnit to exist if child exists");if(!(f&&!c&&!b))return x=>{let S=i[x],T=a[x];return v&&!tr.has(v.elements,n[S])||!f&&sb(p,h,l[x])?!0:c?!!(sl(t,e,n[S],u)||sl(t,e,n[T],u)):!1}}function UP(t,e){let r=t.interUnitBonds,{edges:n}=r,{ignoreHydrogens:o,ignoreHydrogensVariant:i,includeTypes:a,excludeTypes:s}=e,l=Pr.fromNames(a),c=Pr.fromNames(s),u=Pr.isAll(l)&&c===0,{child:d}=t;if(!(u&&!o&&!d))return m=>{if(d){let p=n[m],h=d.unitMap.get(p.unitA);if(!h)return!0;let b=t.unitMap.get(p.unitA).elements[p.indexA];if(!tr.has(h.elements,b))return!0}if(o){let p=n[m],h=t.unitMap.get(p.unitA),f=t.unitMap.get(p.unitB);if(sl(t,h,h.elements[p.indexA],i)||sl(t,f,f.elements[p.indexB],i))return!0}return!!(!u&&sb(l,c,n[m].props.flag))}}var Eu;(function(t){function e(n,o){let{group:i,structure:a}=n,s=i.units[0],l=Pe.isAtomic(s)?s.bonds.edgeCount*2:0,c=i.units.length,u=ze.Location(a,void 0,void 0,a,void 0,void 0),d=(m,p)=>{let h=i.units[p];return u.aUnit=h,u.bUnit=h,u.aIndex=h.bonds.a[m],u.bIndex=h.bonds.b[m],u};if(o?.includeLocation2){let m=ze.Location(a,void 0,void 0,a,void 0,void 0);return jt(l,c,1,d,!1,()=>!1,(h,f)=>{let b=i.units[f];return m.aUnit=b,m.bUnit=b,m.aIndex=b.bonds.b[h],m.bIndex=b.bonds.a[h],m})}return jt(l,c,1,d)}t.fromGroup=e;function r(n,o){let i=n.interUnitBonds.edgeCount,a=1,s=ze.Location(n,void 0,void 0,n,void 0,void 0),l=c=>{let u=n.interUnitBonds.edges[c];return s.aUnit=n.unitMap.get(u.unitA),s.aIndex=u.indexA,s.bUnit=n.unitMap.get(u.unitB),s.bIndex=u.indexB,s};if(o?.includeLocation2){let c=ze.Location(n,void 0,void 0,n,void 0,void 0);return jt(i,a,1,l,!0,()=>!1,d=>{let m=n.interUnitBonds.edges[d];return c.aUnit=n.unitMap.get(m.unitB),c.aIndex=m.indexB,c.bUnit=n.unitMap.get(m.unitA),c.bIndex=m.indexA,c})}return jt(i,a,1,l,!0)}t.fromStructure=r})(Eu||(Eu={}));function VS(t,e,r){let{objectId:n,instanceId:o,groupId:i}=t;if(r===n){let{structure:a,group:s}=e,l=s.units[o];if(Pe.isAtomic(l)){let{target:c}=a,u=l.bonds.a[i],d=l.bonds.b[i];return ze.Loci(c,[ze.Location(c,l,u,c,l,d),ze.Location(c,l,d,c,l,u)])}}return St}function zS(t,e,r,n){let o=!1;if(ze.isLoci(t)){let{structure:i,group:a}=e;if(!ue.areEquivalent(t.structure,i))return!1;let s=a.units[0];if(!Pe.isAtomic(s))return!1;let l=s.bonds.edgeCount*2;for(let c of t.bonds){if(c.aUnit!==c.bUnit)continue;let u=a.unitIndexMap.get(c.aUnit.id);if(u!==void 0){let d=s.bonds.getDirectedEdgeIndex(c.aIndex,c.bIndex);d!==-1&&r(Oe.ofSingleton(u*l+d))&&(o=!0)}}}else if(z.Loci.is(t)){let{structure:i,group:a}=e;if(!ue.areEquivalent(t.structure,i))return!1;let s=a.units[0];if(!Pe.isAtomic(s))return!1;let l=s.bonds.edgeCount*2;for(let c of t.elements){let u=a.unitIndexMap.get(c.unit.id);if(u!==void 0){let{offset:d,b:m}=s.bonds;we.forEach(c.indices,p=>{for(let h=d[p],f=d[p+1];h{let l=rO.get(s.unitB);(!n||l)&&we.forEach(i.indices,c=>{s.connectedIndices.includes(c)&&s.getEdges(c).forEach(u=>{if(!n||l&&we.has(l,u.indexB)){let d=e.interUnitBonds.getEdgeIndex(c,a.id,u.indexB,s.unitB);r(Oe.ofSingleton(d))&&(o=!0)}})})})}rO.clear()}return o}var oO=Pr.is;function Ree(t,e,r,n){let o=t.elements,i=t.bonds,{edgeCount:a,a:s,b:l,edgeProps:c,offset:u}=i,{order:d,flags:m}=c,{sizeFactor:p,sizeAspectRatio:h,adjustCylinderLength:f,aromaticBonds:b,includeTypes:v,excludeTypes:x,multipleBonds:S}=n,T=S==="off",E=S==="symmetric",_=Pr.fromNames(v),D=Pr.fromNames(x),P=sb(_,D,32),A=y(),I=y(),k=t.conformation,M,R=z.Location.create(e,t),B=ze.Location(e,t,void 0,e,t,void 0),{child:F}=e;if(n.includeParent&&F){let j=F.unitMap.get(t.id);if(!j)throw new Error("expected childUnit to exist");M=O=>{let J=o[s[O]],$=o[l[O]];return tr.has(j.elements,J)&&!tr.has(j.elements,$)}}let G=j=>(B.aIndex=s[j],B.bIndex=l[j],r.size.size(B)*p),V=j=>(R.element=o[s[j]],r.size.size(R)*p),H=j=>(R.element=o[l[j]],r.size.size(R)*p),{elementRingIndices:Q,elementAromaticRingIndices:L}=t.rings,Y=b?t.resonance.delocalizedTriplets:void 0;return{linkCount:a*2,referencePosition:j=>{let O=s[j],J=l[j],$=Y?.getThirdElement(O,J);if($!==void 0)return k.invariantPosition(o[$],A);O>J&&([O,J]=[J,O]),u[O+1]-u[O]===1&&([O,J]=[J,O]);let ae=L.get(O)||Q.get(O),Z=0;for(let se=u[O],Me=u[O+1];seZ&&(Z=je,k.invariantPosition(o[be],A))}else return k.invariantPosition(o[be],A)}return Z>0?A:null},position:(j,O,J)=>{if(k.invariantPosition(o[s[J]],j),k.invariantPosition(o[l[J]],O),f){let $=V(J),ae=H(J),Z=Math.min($,ae)*h,se=Math.sqrt(Math.max(0,$*$-Z*Z))-.05,Me=Math.sqrt(Math.max(0,ae*ae-Z*Z))-.05;if(se<=.01&&Me<=.01)return;y.normalize(I,y.sub(I,O,j)),y.scaleAndAdd(j,j,I,se),y.scaleAndAdd(O,O,I,-Me)}},style:j=>{let O=d[j],J=m[j];if(oO(J,2)||oO(J,4))return 1;if(O===3)return T?0:E?4:5;if(b){let $=s[j],ae=l[j],Z=L.get($),se=L.get(ae),Me=Z&&se?y0(Z,se):0;if(oO(J,16)||Me&&!P)return Me===2?8:7}return O!==2||T?0:E?2:3},radius:j=>G(j)*h,ignore:zP(e,t,n),stub:M}}function pDe(t,e,r,n,o,i){if(!Pe.isAtomic(e))return xo.createEmpty(i);if(!e.bonds.edgeCount)return xo.createEmpty(i);let{child:a}=r,s=a?.unitMap.get(e.id);if(a&&!s)return xo.createEmpty(i);let l=Ree(e,r,n,o),{cylinders:c,boundingSphere:u}=W_(t,l,o,i);if(u)c.setBoundingSphere(u);else if(c.cylinderCount>0){let d=te.expand(te(),(s??e).boundary.sphere,1*o.sizeFactor);c.setBoundingSphere(d)}return c}function fDe(t,e,r,n,o,i){if(!Pe.isAtomic(e))return Be.createEmpty(i);if(!e.bonds.edgeCount)return Be.createEmpty(i);let{child:a}=r,s=a?.unitMap.get(e.id);if(a&&!s)return Be.createEmpty(i);let l=Ree(e,r,n,o),{mesh:c,boundingSphere:u}=jl(t,l,o,i);if(u)c.setBoundingSphere(u);else if(c.triangleCount>0){let d=te.expand(te(),(s??e).boundary.sphere,1*o.sizeFactor);c.setBoundingSphere(d)}return c}var lb=U(w(w(w({},Gr),qv),FS),{sizeFactor:g.Numeric(.3,{min:0,max:10,step:.01}),sizeAspectRatio:g.Numeric(2/3,{min:0,max:3,step:.01}),tryUseImpostor:g.Boolean(!0),includeParent:g.Boolean(!1)});function GP(t,e,r,n){return r.tryUseImpostor&&n&&n.extensions.fragDepth?hDe(t):gDe(t)}function hDe(t){return Wv({defaultProps:g.getDefaultValues(lb),createGeometry:pDe,createLocationIterator:(e,r)=>Eu.fromGroup(e,{includeLocation2:r.colorMode==="interpolate"}),getLoci:VS,eachLocation:zS,setUpdateState:(e,r,n,o,i,a,s)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.sizeAspectRatio!==n.sizeAspectRatio||r.linkScale!==n.linkScale||r.linkSpacing!==n.linkSpacing||r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant||r.linkCap!==n.linkCap||r.aromaticScale!==n.aromaticScale||r.aromaticSpacing!==n.aromaticSpacing||r.aromaticDashCount!==n.aromaticDashCount||r.dashCount!==n.dashCount||r.dashScale!==n.dashScale||r.dashCap!==n.dashCap||r.stubCap!==n.stubCap||!gs(r.includeTypes,n.includeTypes)||!gs(r.excludeTypes,n.excludeTypes)||r.adjustCylinderLength!==n.adjustCylinderLength||r.aromaticBonds!==n.aromaticBonds||r.multipleBonds!==n.multipleBonds,r.colorMode!==n.colorMode&&(e.createGeometry=!0,e.updateTransform=!0,e.updateColor=!0);let l=a.group.units[0],c=s.group.units[0];Pe.isAtomic(l)&&Pe.isAtomic(c)&&(_g.areEqual(l.bonds,c.bonds)||(e.createGeometry=!0,e.updateTransform=!0,e.updateColor=!0,e.updateSize=!0))},mustRecreate:(e,r,n)=>!r.tryUseImpostor||!n},t)}function gDe(t){return rn({defaultProps:g.getDefaultValues(lb),createGeometry:fDe,createLocationIterator:e=>Eu.fromGroup(e),getLoci:VS,eachLocation:zS,setUpdateState:(e,r,n,o,i,a,s)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.sizeAspectRatio!==n.sizeAspectRatio||r.radialSegments!==n.radialSegments||r.linkScale!==n.linkScale||r.linkSpacing!==n.linkSpacing||r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant||r.linkCap!==n.linkCap||r.aromaticScale!==n.aromaticScale||r.aromaticSpacing!==n.aromaticSpacing||r.aromaticDashCount!==n.aromaticDashCount||r.dashCount!==n.dashCount||r.dashScale!==n.dashScale||r.dashCap!==n.dashCap||r.stubCap!==n.stubCap||!gs(r.includeTypes,n.includeTypes)||!gs(r.excludeTypes,n.excludeTypes)||r.adjustCylinderLength!==n.adjustCylinderLength||r.aromaticBonds!==n.aromaticBonds||r.multipleBonds!==n.multipleBonds;let l=a.group.units[0],c=s.group.units[0];Pe.isAtomic(l)&&Pe.isAtomic(c)&&(_g.areEqual(l.bonds,c.bonds)||(e.createGeometry=!0,e.updateTransform=!0,e.updateColor=!0,e.updateSize=!0))},mustRecreate:(e,r,n)=>r.tryUseImpostor&&!!n},t)}var iO=new ze.ElementBondIterator;function Lee(t,e,r,n){for(iO.setElement(e,r,n);iO.hasNext;){let o=iO.move();return o.otherUnit.conformation.position(o.otherUnit.elements[o.otherIndex],t),t}return null}var Bee=y();function Oee(t,e,r){let n=z.Location.create(t),o=ze.Location(t,void 0,void 0,t,void 0,void 0),i=t.interUnitBonds,{edgeCount:a,edges:s}=i,{sizeFactor:l,sizeAspectRatio:c,adjustCylinderLength:u,aromaticBonds:d,multipleBonds:m}=r,p=m==="off",h=m==="symmetric",f=y(),b,{child:v}=t;r.includeParent&&v&&(b=E=>{let _=s[E],D=v.unitMap.get(_.unitA),P=v.unitMap.get(_.unitB),I=t.unitMap.get(_.unitA).elements[_.indexA],M=t.unitMap.get(_.unitB).elements[_.indexB];return D&&tr.has(D.elements,I)&&(!P||!tr.has(P.elements,M))});let x=E=>{let _=s[E];return o.aUnit=t.unitMap.get(_.unitA),o.aIndex=_.indexA,o.bUnit=t.unitMap.get(_.unitB),o.bIndex=_.indexB,e.size.size(o)*l},S=E=>{let _=s[E];return n.unit=t.unitMap.get(_.unitA),n.element=n.unit.elements[_.indexA],e.size.size(n)*l},T=E=>{let _=s[E];return n.unit=t.unitMap.get(_.unitB),n.element=n.unit.elements[_.indexB],e.size.size(n)*l};return{linkCount:a,referencePosition:E=>{let _=s[E],D,P,A,I;if(_.unitA<_.unitB)D=t.unitMap.get(_.unitA),P=t.unitMap.get(_.unitB),A=_.indexA,I=_.indexB;else if(_.unitA>_.unitB)D=t.unitMap.get(_.unitB),P=t.unitMap.get(_.unitA),A=_.indexB,I=_.indexA;else throw new Error("same units in createInterUnitBondCylinderMesh");return Lee(Bee,t,D,A)||Lee(Bee,t,P,I)},position:(E,_,D)=>{let P=s[D],A=t.unitMap.get(P.unitA),I=t.unitMap.get(P.unitB);if(A.conformation.position(A.elements[P.indexA],E),I.conformation.position(I.elements[P.indexB],_),u){let k=S(D),M=T(D),R=Math.min(k,M)*c,B=Math.sqrt(Math.max(0,k*k-R*R))-.05,F=Math.sqrt(Math.max(0,M*M-R*R))-.05;if(B<=.01&&F<=.01)return;y.normalize(f,y.sub(f,_,E)),y.scaleAndAdd(E,E,f,B),y.scaleAndAdd(_,_,f,-F)}},style:E=>{let _=s[E].props.order,D=Wc.create(s[E].props.flag);return Pr.is(D,2)||Pr.is(D,4)?1:_===3?p?0:h?4:5:d&&Pr.is(D,16)?7:_!==2||p?0:h?2:3},radius:E=>x(E)*c,ignore:UP(t,r),stub:b}}function yDe(t,e,r,n,o){if(!e.interUnitBonds.edgeCount)return xo.createEmpty(o);let i=Oee(e,r,n),{cylinders:a,boundingSphere:s}=W_(t,i,n,o);if(s)a.setBoundingSphere(s);else if(a.cylinderCount>0){let{child:l}=e,c=te.expand(te(),(l??e).boundary.sphere,1*n.sizeFactor);a.setBoundingSphere(c)}return a}function vDe(t,e,r,n,o){if(!e.interUnitBonds.edgeCount)return Be.createEmpty(o);let i=Oee(e,r,n),{mesh:a,boundingSphere:s}=jl(t,i,n,o);if(s)a.setBoundingSphere(s);else if(a.triangleCount>0){let{child:l}=e,c=te.expand(te(),(l??e).boundary.sphere,1*n.sizeFactor);a.setBoundingSphere(c)}return a}var cb=U(w(w(w({},Tu),iZ),FS),{sizeFactor:g.Numeric(.3,{min:0,max:10,step:.01}),sizeAspectRatio:g.Numeric(2/3,{min:0,max:3,step:.01}),tryUseImpostor:g.Boolean(!0),includeParent:g.Boolean(!1)});function jP(t,e,r,n){return r.tryUseImpostor&&n&&n.extensions.fragDepth?bDe(t):xDe(t)}function bDe(t){return aZ({defaultProps:g.getDefaultValues(cb),createGeometry:yDe,createLocationIterator:(e,r)=>Eu.fromStructure(e,{includeLocation2:r.colorMode==="interpolate"}),getLoci:US,eachLocation:GS,setUpdateState:(e,r,n,o,i,a,s)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.sizeAspectRatio!==n.sizeAspectRatio||r.linkScale!==n.linkScale||r.linkSpacing!==n.linkSpacing||r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant||r.linkCap!==n.linkCap||r.aromaticScale!==n.aromaticScale||r.aromaticSpacing!==n.aromaticSpacing||r.aromaticDashCount!==n.aromaticDashCount||r.dashCount!==n.dashCount||r.dashScale!==n.dashScale||r.dashCap!==n.dashCap||r.stubCap!==n.stubCap||!gs(r.includeTypes,n.includeTypes)||!gs(r.excludeTypes,n.excludeTypes)||r.adjustCylinderLength!==n.adjustCylinderLength||r.multipleBonds!==n.multipleBonds,r.colorMode!==n.colorMode&&(e.createGeometry=!0,e.updateTransform=!0,e.updateColor=!0),a.interUnitBonds!==s.interUnitBonds&&(e.createGeometry=!0,e.updateTransform=!0,e.updateColor=!0,e.updateSize=!0)},mustRecreate:(e,r,n)=>!r.tryUseImpostor||!n},t)}function xDe(t){return Va({defaultProps:g.getDefaultValues(cb),createGeometry:vDe,createLocationIterator:e=>Eu.fromStructure(e),getLoci:US,eachLocation:GS,setUpdateState:(e,r,n,o,i,a,s)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.sizeAspectRatio!==n.sizeAspectRatio||r.radialSegments!==n.radialSegments||r.linkScale!==n.linkScale||r.linkSpacing!==n.linkSpacing||r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant||r.linkCap!==n.linkCap||r.aromaticScale!==n.aromaticScale||r.aromaticSpacing!==n.aromaticSpacing||r.aromaticDashCount!==n.aromaticDashCount||r.dashCount!==n.dashCount||r.dashScale!==n.dashScale||r.dashCap!==n.dashCap||r.stubCap!==n.stubCap||!gs(r.includeTypes,n.includeTypes)||!gs(r.excludeTypes,n.excludeTypes)||r.adjustCylinderLength!==n.adjustCylinderLength||r.multipleBonds!==n.multipleBonds,a.interUnitBonds!==s.interUnitBonds&&(e.createGeometry=!0,e.updateTransform=!0,e.updateColor=!0,e.updateSize=!0)},mustRecreate:(e,r,n)=>r.tryUseImpostor&&!!n},t)}var SDe=he.add3,CDe=he.add,Op;(function(t){function e(r=2048,n=1024,o){let i=he.create(Float32Array,3,n,o?o.centerBuffer.ref.value:r),a=he.create(Float32Array,1,n,o?o.groupBuffer.ref.value:r);return{add:(s,l,c,u)=>{SDe(i,s,l,c),CDe(a,u)},getSpheres:()=>{let s=he.compact(i,!0),l=he.compact(a,!0);return Ni.create(s,l,i.elementCount,o)}}}t.create=e})(Op||(Op={}));var ub=y.add;function Mm(t,e,r){let{ignoreHydrogens:n,ignoreHydrogensVariant:o,traceOnly:i}=r,a=Pe.isCoarse(e),{child:s}=t,l=s?.unitMap.get(e.id);if(s&&!l)throw new Error("expected childUnit to exist if child exists");if(!(!s&&!n&&!i))return c=>!!l&&!tr.has(l.elements,c)||!a&&n&&sl(t,e,c,o)||i&&!F_(e,c)}function Fee(t,e,r,n,o,i){let{child:a}=r,s=a?.unitMap.get(e.id);if(a&&!s)return Be.createEmpty(i);let{detail:l,sizeFactor:c,stride:u}=o,{elements:d,conformation:m}=e,p=d.length,h=p*Sd(l),f=Te.createState(h,h/2,i),b=y(),v=Mm(r,e,o),x=z.Location.create(r,e),S=n.size.size,T=y(),E=0,_=0;for(let I=0;IE&&(E=k),f.currentGroup=I,Jt(f,b,k*c,l)}let D=i?te.clone(i.boundingSphere):void 0,P=Te.getMesh(f);if(_===0)return P;let A;return y.scale(T,T,1/_),D&&y.distance(T,D.center)/D.radius<.1?A=D:A=te.expand(te(),(s??e).boundary.sphere,E*c+.05),P.setBoundingSphere(A),P}function Nee(t,e,r,n,o,i){let{child:a}=r,s=a?.unitMap.get(e.id);if(a&&!s)return Ni.createEmpty(i);let{sizeFactor:l,stride:c}=o,{elements:u,conformation:d}=e,m=u.length,p=Op.create(m,m/2,i),h=y(),f=Mm(r,e,o),b=z.Location.create(r,e),v=n.size.size,x=y(),S=0,T=0;if(c&&c>1||f||n.size.granularity!=="uniform")for(let P=0;PS&&(S=A)}else{for(let P=0;Pf&&(f=B),m.currentGroup=c(T,R),Jt(m,A,B*s,a)}}let v=o?te.clone(o.boundingSphere):void 0,x=Te.getMesh(m);if(b===0)return x;let S;return y.scale(h,h,1/b),v&&y.distance(h,v.center)/v.radius<1?S=v:S=te.expand(te(),(i??e).boundary.sphere,f*s+.05),x.setBoundingSphere(S),x}function zee(t,e,r,n,o){let{child:i}=e,{sizeFactor:a,stride:s}=n,{getSerialIndex:l}=e.serialMapping,c=e.elementCount,u=Op.create(c,c/2,o),d=r.size.size,m=y(),p=0,h=0;for(let x of e.units){let S=i?.unitMap.get(x.id);if(i&&!S)return Ni.createEmpty(o);let{elements:T,conformation:E}=x,_=T.length,D=y(),P=Mm(e,x,n),A=z.Location.create(e,x);if(s&&s>1||P||r.size.granularity!=="uniform")for(let I=0;I<_;I++){let k=T[I];if(s&&I%s!==0||P&&P(k))continue;E.position(k,D),u.add(D[0],D[1],D[2],l(x,k)),ub(m,m,D),h+=1,A.element=k;let M=d(A);M>p&&(p=M)}else{for(let I=0;I<_;I++){let k=T[I];E.position(k,D),u.add(D[0],D[1],D[2],l(x,k)),ub(m,m,D)}h+=_,p=d(A)}}let f=o?te.clone(o.boundingSphere):void 0,b=u.getSpheres();if(h===0)return b;let v;return y.scale(m,m,1/h),f&&y.distance(m,f.center)/f.radius<1?v=f:v=te.expand(te(),(i??e).boundary.sphere,p*a+.05),b.setBoundingSphere(v),b}function Iu(t,e,r){let n=!1;if(!z.Loci.is(t)||!ue.areEquivalent(t.structure,e))return!1;let{cumulativeUnitElementCount:o}=e.serialMapping;for(let i of t.elements){let a=e.unitIndexMap.get(i.unit.id);if(a!==void 0)if(Oe.is(i.indices)){let s=o[a]+Oe.start(i.indices),l=o[a]+Oe.end(i.indices);r(Oe.ofBounds(s,l))&&(n=!0)}else for(let s=0,l=i.indices.length;s{let m=o.units[d];return l.unit=m,l.element=m.elements[u],l})}t.fromGroup=e;function r(n){let{units:o,elementCount:i}=n,a=i,s=1,{unitIndices:l,elementIndices:c}=n.serialMapping,u=z.Location.create(n);return jt(a,s,1,m=>(u.unit=o[l[m]],u.element=c[m],u),!0)}t.fromStructure=r})(jn||(jn={}));var Uee={sizeFactor:g.Numeric(1,{min:0,max:10,step:.1}),detail:g.Numeric(0,{min:0,max:3,step:1},ge.CustomQualityParamInfo),ignoreHydrogens:g.Boolean(!1),ignoreHydrogensVariant:g.Select("all",g.arrayToOptions(["all","non-polar"])),traceOnly:g.Boolean(!1),tryUseImpostor:g.Boolean(!0),stride:g.Numeric(1,{min:1,max:100,step:1})},db=w(w(w({},Gr),jv),Uee);function HP(t,e,r,n){return r.tryUseImpostor&&n&&n.extensions.fragDepth&&n.extensions.textureFloat?TDe(t):wDe(t)}function TDe(t){return Hv({defaultProps:g.getDefaultValues(db),createGeometry:Nee,createLocationIterator:jn.fromGroup,getLoci:Wi,eachLocation:qi,setUpdateState:(e,r,n)=>{e.createGeometry=r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant||r.traceOnly!==n.traceOnly||r.stride!==n.stride},mustRecreate:(e,r,n)=>!r.tryUseImpostor||!n},t)}function wDe(t){return rn({defaultProps:g.getDefaultValues(db),createGeometry:Fee,createLocationIterator:jn.fromGroup,getLoci:Wi,eachLocation:qi,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.detail!==n.detail||r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant||r.traceOnly!==n.traceOnly||r.stride!==n.stride},mustRecreate:(e,r,n)=>r.tryUseImpostor&&!!n},t)}var Gee=w(w(w({},Tu),nZ),Uee);function jee(t,e,r,n){return r.tryUseImpostor&&n&&n.extensions.fragDepth&&n.extensions.textureFloat?_De(t):PDe(t)}function _De(t){return oZ({defaultProps:g.getDefaultValues(Gee),createGeometry:zee,createLocationIterator:jn.fromStructure,getLoci:Du,eachLocation:Iu,setUpdateState:(e,r,n)=>{e.createGeometry=r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant||r.traceOnly!==n.traceOnly||r.stride!==n.stride},mustRecreate:(e,r,n)=>!r.tryUseImpostor||!n},t)}function PDe(t){return Va({defaultProps:g.getDefaultValues(Gee),createGeometry:Vee,createLocationIterator:jn.fromStructure,getLoci:Du,eachLocation:Iu,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.detail!==n.detail||r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant||r.traceOnly!==n.traceOnly||r.stride!==n.stride},mustRecreate:(e,r,n)=>r.tryUseImpostor&&!!n},t)}var Hee={"element-sphere":(t,e)=>Dr("Element sphere",t,e,HP),"intra-bond":(t,e)=>Dr("Intra-unit bond cylinder",t,e,GP),"inter-bond":(t,e)=>_o("Inter-unit bond cylinder",t,e,jP)},aO=U(w(w(U(w({},db),{traceOnly:g.Boolean(!1,{isHidden:!0})}),lb),cb),{includeParent:g.Boolean(!1),unitKinds:Ip(["atomic"]),sizeFactor:g.Numeric(.15,{min:.01,max:10,step:.01}),sizeAspectRatio:g.Numeric(2/3,{min:.01,max:3,step:.01}),visuals:g.MultiSelect(["element-sphere","intra-bond","inter-bond"],g.objectToOptions(Hee)),bumpFrequency:g.Numeric(0,{min:0,max:10,step:.1},ge.ShadingCategory)});function EDe(t,e){if(ue.getSize(e)>=ue.Size.Huge){let n=g.clone(aO);return n.visuals.defaultValue=["element-sphere","intra-bond"],n}else return aO}function IDe(t,e){return rt.createMulti("Ball & Stick",t,e,Qr,Hee)}var qee={name:"ball-and-stick",label:"Ball & Stick",description:"Displays atoms as spheres and bonds as cylinders.",factory:IDe,getParams:EDe,defaultValues:g.getDefaultValues(aO),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"physical"},isApplicable:t=>t.elementCount>0,getData:(t,e)=>e.includeParent?t.asParent():t,mustRecreate:(t,e)=>t.includeParent!==e.includeParent};function DDe(t,e,r,n,o){let{links:i,elements:a}=e.carbohydrates,{linkSizeFactor:s}=n,l=z.Location.create(e),c={linkCount:i.length,position:(m,p,h)=>{let f=i[h];y.copy(m,a[f.carbohydrateIndexA].geometry.center),y.copy(p,a[f.carbohydrateIndexB].geometry.center)},radius:m=>{let p=i[m],h=a[p.carbohydrateIndexA],f=h.unit.rings.all[h.ringIndex];return l.unit=h.unit,l.element=h.unit.elements[f[0]],r.size.size(l)*s}},{mesh:u,boundingSphere:d}=jl(t,c,n,o);if(d)u.setBoundingSphere(d);else if(u.triangleCount>0){let m=te.expand(te(),e.boundary.sphere,1*s);u.setBoundingSphere(m)}return u}var lO=U(w(w({},Gr),wc),{linkSizeFactor:g.Numeric(.3,{min:0,max:3,step:.01})});function Wee(t){return Va({defaultProps:g.getDefaultValues(lO),createGeometry:DDe,createLocationIterator:ADe,getLoci:kDe,eachLocation:MDe,setUpdateState:(e,r,n)=>{e.createGeometry=r.linkSizeFactor!==n.linkSizeFactor||r.radialSegments!==n.radialSegments||r.linkCap!==n.linkCap}},t)}function ADe(t){let{elements:e,links:r}=t.carbohydrates,n=r.length,o=1,i=z.Location.create(t);return jt(n,o,1,s=>{let l=r[s],c=e[l.carbohydrateIndexA],u=c.unit.rings.all[c.ringIndex];return i.unit=c.unit,i.element=c.unit.elements[u[0]],i},!0)}function kDe(t,e,r){let{objectId:n,groupId:o}=t;if(r===n){let{links:i,elements:a}=e.carbohydrates,s=i[o],l=a[s.carbohydrateIndexA],c=a[s.carbohydrateIndexB];return z.Loci.union(gh(e,l.unit,l.residueIndex,l.altId),gh(e,c.unit,c.residueIndex,c.altId))}return St}var sO=new Set;function MDe(t,e,r){let n=!1;if(!z.Loci.is(t)||!ue.areEquivalent(t.structure,e))return!1;let{getLinkIndices:o}=e.carbohydrates;for(let{unit:i,indices:a}of t.elements)Pe.isAtomic(i)&&(sO.clear(),we.forEach(a,s=>{let l=o(i,i.elements[s]);for(let c=0,u=l.length;c{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.detail!==n.detail}},t)}function QDe(t){let e=t.carbohydrates.elements,r=e.length*2,n=1,o=z.Location.create(t);function i(s,l){let c=e[Math.floor(s/2)],u=c.unit.rings.all[c.ringIndex];return o.unit=c.unit,o.element=c.unit.elements[u[0]],o}function a(s,l){return s%2===1}return jt(r,n,1,i,!0,a)}function KDe(t,e,r){let{objectId:n,groupId:o}=t;if(r===n){let i=e.carbohydrates.elements[Math.floor(o/2)];return gh(e,i.unit,i.residueIndex,i.altId)}return St}var vO=new Set;function $De(t,e,r){let{getElementIndices:n}=e.carbohydrates,o=!1;if(!z.Loci.is(t)||!ue.areEquivalent(t.structure,e))return!1;for(let{unit:i,indices:a}of t.elements)Pe.isAtomic(i)&&(vO.clear(),we.forEach(a,s=>{let l=n(i,i.elements[s]);for(let c=0,u=l.length;c{let f=i[h];f.fromCarbohydrate?(y.copy(m,a[f.carbohydrateIndex].geometry.center),f.elementUnit.conformation.position(f.elementUnit.elements[f.elementIndex],p)):(f.elementUnit.conformation.position(f.elementUnit.elements[f.elementIndex],m),y.copy(p,a[f.carbohydrateIndex].geometry.center))},radius:m=>{let p=i[m];if(p.fromCarbohydrate){let h=a[p.carbohydrateIndex],f=h.unit.rings.all[h.ringIndex];l.unit=h.unit,l.element=h.unit.elements[f[0]]}else l.unit=p.elementUnit,l.element=p.elementUnit.elements[p.elementIndex];return r.size.size(l)*s},style:m=>{let p=i[m],h=p.elementUnit.elements[p.elementIndex],f=MT(p.elementUnit.model.atomicHierarchy.atoms.type_symbol.value(h));return tU.has(f)?1:0}},{mesh:u,boundingSphere:d}=jl(t,c,n,o);if(d)u.setBoundingSphere(d);else if(u.triangleCount>0){let m=te.expand(te(),e.boundary.sphere,1*s);u.setBoundingSphere(m)}return u}var SO=U(w(w({},Gr),wc),{terminalLinkSizeFactor:g.Numeric(.2,{min:0,max:3,step:.01})});function ate(t){return Va({defaultProps:g.getDefaultValues(SO),createGeometry:ZDe,createLocationIterator:JDe,getLoci:eAe,eachLocation:tAe,setUpdateState:(e,r,n)=>{e.createGeometry=r.terminalLinkSizeFactor!==n.terminalLinkSizeFactor||r.radialSegments!==n.radialSegments||r.linkCap!==n.linkCap}},t)}function JDe(t){let{elements:e,terminalLinks:r}=t.carbohydrates,n=r.length,o=1,i=z.Location.create(t);return jt(n,o,1,s=>{let l=r[s];if(l.fromCarbohydrate){let c=e[l.carbohydrateIndex],u=c.unit.rings.all[c.ringIndex];i.unit=c.unit,i.element=c.unit.elements[u[0]]}else i.unit=l.elementUnit,i.element=l.elementUnit.elements[l.elementIndex];return i},!0)}function eAe(t,e,r){let{objectId:n,groupId:o}=t;if(r===n){let{terminalLinks:i,elements:a}=e.carbohydrates,s=i[o],l=a[s.carbohydrateIndex];return z.Loci.union(gh(e,l.unit,l.residueIndex,l.altId),Q$(e,s.elementUnit,s.elementUnit.elements[s.elementIndex]))}return St}var xO=new Set;function tAe(t,e,r){let n=!1;if(!z.Loci.is(t)||!ue.areEquivalent(t.structure,e))return!1;let{getTerminalLinkIndices:o}=e.carbohydrates;for(let{unit:i,indices:a}of t.elements)Pe.isAtomic(i)&&(xO.clear(),we.forEach(a,s=>{let l=o(i,i.elements[s]);for(let c=0,u=l.length;c_o("Carbohydrate symbol mesh",t,e,ite),"carbohydrate-link":(t,e)=>_o("Carbohydrate link cylinder",t,e,Wee),"carbohydrate-terminal-link":(t,e)=>_o("Carbohydrate terminal link cylinder",t,e,ate)},lte=U(w(w(w({},bO),lO),SO),{visuals:g.MultiSelect(["carbohydrate-symbol","carbohydrate-link","carbohydrate-terminal-link"],g.objectToOptions(ste)),bumpFrequency:g.Numeric(0,{min:0,max:10,step:.1},ge.ShadingCategory)});function rAe(t,e){return lte}function nAe(t,e){return rt.createMulti("Carbohydrate",t,e,Qr,ste)}var cte={name:"carbohydrate",label:"Carbohydrate",description:"Displays carbohydrate symbols (3D SNFG).",factory:nAe,getParams:rAe,defaultValues:g.getDefaultValues(lte),defaultColorTheme:{name:"carbohydrate-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:t=>t.models.some(e=>Et.hasCarbohydrate(e))};function CO(t,e){switch(t.kind){case 0:return oAe(t,e);case 1:case 2:return iAe(t,e)}}function oAe(t,e){let r=t.model.atomicRanges.cyclicPolymerMap,n=sc.transientSegments(Ty(t),t.elements),o=$r.transientSegments(t.model.atomicHierarchy.residueAtomSegments,t.elements),i=t.model.atomicHierarchy.derived.residue.traceElementIndex,{moleculeType:a}=t.model.atomicHierarchy.derived.residue,s=-1,l=-1,c=!0,u=-1,d=0;for(;n.hasNext;){for(c=!0,u=d,o.setSegment(n.move());o.hasNext;){if(c){let p=o.move().index;if(++d,!o.hasNext)continue;c=!1,l=p}let m=o.move().index;s=l,l=m,e(i[s],i[l],d-1,d,a[s]),++d}r.has(l)&&(s=l,l=r.get(s),e(i[s],i[l],d-1,u,a[s]))}}function iAe(t,e){let r=sc.transientSegments(Ty(t),t.elements),{elements:n}=t,o=!0,i=0;for(;r.hasNext;){o=!0;let a=r.move(),s=a.start,l=a.end;for(let c=s,u=l;cu)continue;o=!1}e(n[c-1],n[c],i-1,i,0),++i}}}function TO(t,e){switch(t.kind){case 0:return aAe(t,e);case 1:case 2:return sAe(t,e)}}function aAe(t,e){let r=sc.transientSegments(Ty(t),t.elements),n=$r.transientSegments(t.model.atomicHierarchy.residueAtomSegments,t.elements),o=t.model.atomicHierarchy.derived.residue.traceElementIndex,i=0;for(;r.hasNext;)for(n.setSegment(r.move());n.hasNext;){let a=n.move().index;e(o[a],i),++i}}function sAe(t,e){let r=sc.transientSegments(Ty(t),t.elements),{elements:n}=t,o=0;for(;r.hasNext;){let i=r.move(),a=i.start,s=i.end;for(let l=a,c=s;l({}),isApplicable:t=>!0,obtain:(t,e)=>N(void 0,null,function*(){return{value:mte(e)}})});function Vd(t){return ts.is(t,2)}function lAe(t){return ts.is(t,4)}function mb(t,e,r={}){switch(t.kind){case 0:return new EO(t,e,r);case 1:case 2:return new IO(t,e)}}var YP=ts.create(536870912);function pte(t,e){return{center:z.Location.create(t,e),centerPrev:z.Location.create(t,e),centerNext:z.Location.create(t,e),first:!1,last:!1,initial:!1,final:!1,secStrucFirst:!1,secStrucLast:!1,secStrucType:YP,moleculeType:0,coarseBackboneFirst:!1,coarseBackboneLast:!1,isCoarseBackbone:!1,p0:y(),p1:y(),p2:y(),p3:y(),p4:y(),d12:y(),d23:y()}}var Ut=y(),WP=y(),XP=y(),EO=class{atomicPos(e,r){r!==-1&&(e[0]=this.atomicConformation.x[r],e[1]=this.atomicConformation.y[r],e[2]=this.atomicConformation.z[r])}pos(e,r,n){let o=this.traceElementIndex[r];this.helixOrientationCenters&&Vd(n)?y.fromArray(e,this.helixOrientationCenters,r*3):this.atomicPos(e,o)}updateResidueSegmentRange(e){let{index:r}=this.residueAtomSegments;this.residueSegmentMin=r[this.polymerRanges[e.index*2]],this.residueSegmentMax=r[this.polymerRanges[e.index*2+1]]}getResidueIndex(e){if(ethis.residueSegmentMax){let r=this.cyclicPolymerMap.get(this.residueSegmentMax);r!==void 0?e=r+(e-this.residueSegmentMax-1):e=this.residueSegmentMax}return e}getSecStruc(e){if(this.secondaryStructure){let{type:r,getIndex:n}=this.secondaryStructure,o=r[n(e)];return Vd(o)?2:o}else return YP}setControlPoint(e,r,n,o,i){lAe(i)||this.helixOrientationCenters&&Vd(i)?y.scale(e,y.add(e,r,y.add(e,o,y.add(e,n,n))),1/4):y.copy(e,n)}setFromToVector(e,r,n){this.value.isCoarseBackbone||this.helixOrientationCenters&&Vd(n)?y.set(e,1,0,0):(this.atomicPos(WP,this.directionFromElementIndex[r]),this.atomicPos(XP,this.directionToElementIndex[r]),y.sub(e,XP,WP))}setDirection(e,r,n,o){y.matchDirection(WP,r,n),y.matchDirection(XP,o,n),y.scale(e,y.add(e,WP,y.add(e,XP,y.add(e,n,n))),1/4)}move(){let{residueIt:e,polymerIt:r,value:n}=this;if(this.state===0){for(;r.hasNext;)if(this.polymerSegment=r.move(),e.setSegment(this.polymerSegment),this.updateResidueSegmentRange(this.polymerSegment),e.hasNext){this.state=1;let o=this.residueAtomSegments.index[this.unit.elements[this.polymerSegment.start]],i=this.getResidueIndex(o-1);this.currSecStrucType=o===i?YP:this.getSecStruc(i),this.nextSecStrucType=this.getSecStruc(o),this.currCoarseBackbone=this.directionFromElementIndex[i]===-1||this.directionToElementIndex[i]===-1,this.nextCoarseBackbone=this.directionFromElementIndex[o]===-1||this.directionToElementIndex[o]===-1;break}}if(this.state===1){let{index:o}=e.move(),i=this.getResidueIndex(o-3),a=this.getResidueIndex(o-2),s=this.getResidueIndex(o-1),l=this.getResidueIndex(o+1),c=this.getResidueIndex(o+2),u=this.getResidueIndex(o+3);this.prevSecStrucType=this.getSecStruc(s),this.currSecStrucType=this.getSecStruc(o),this.nextSecStrucType=o===l?YP:this.getSecStruc(l),this.prevCoarseBackbone=this.currCoarseBackbone,this.currCoarseBackbone=this.nextCoarseBackbone,this.nextCoarseBackbone=this.directionFromElementIndex[l]===-1||this.directionToElementIndex[l]===-1,n.secStrucType=this.currSecStrucType,n.secStrucFirst=this.prevSecStrucType!==this.currSecStrucType,n.secStrucLast=this.currSecStrucType!==this.nextSecStrucType,n.isCoarseBackbone=this.currCoarseBackbone,n.coarseBackboneFirst=this.prevCoarseBackbone!==this.currCoarseBackbone,n.coarseBackboneLast=this.currCoarseBackbone!==this.nextCoarseBackbone,n.first=o===this.residueSegmentMin,n.last=o===this.residueSegmentMax,n.moleculeType=this.moleculeType[o],n.initial=o===s,n.final=o===l,n.centerPrev.element=this.traceElementIndex[s],n.center.element=this.traceElementIndex[o],n.centerNext.element=this.traceElementIndex[l];let d=this.getSecStruc(i),m=this.getSecStruc(a),p=this.getSecStruc(s),h=this.getSecStruc(o),f=this.getSecStruc(l),b=this.getSecStruc(c),v=this.getSecStruc(u);this.pos(this.p0,i,d),this.pos(this.p1,a,m),this.pos(this.p2,s,p),this.pos(this.p3,o,h),this.pos(this.p4,l,f),this.pos(this.p5,c,b),this.pos(this.p6,u,v);let x=Vd(d),S=Vd(m),T=Vd(p),E=Vd(h),_=Vd(f),D=Vd(b),P=Vd(v);this.helixOrientationCenters&&(E!==T?E?(y.copy(this.p0,this.p3),y.copy(this.p1,this.p3),y.copy(this.p2,this.p3)):T&&(y.scale(Ut,y.sub(Ut,this.p2,this.p3),2),y.add(this.p2,this.p3,Ut),y.add(this.p1,this.p2,Ut),y.add(this.p0,this.p1,Ut)):E!==S?E?(y.copy(this.p0,this.p2),y.copy(this.p1,this.p2)):S&&(y.scale(Ut,y.sub(Ut,this.p1,this.p2),2),y.add(this.p1,this.p2,Ut),y.add(this.p0,this.p1,Ut)):E!==x&&(E?y.copy(this.p0,this.p1):x&&(y.scale(Ut,y.sub(Ut,this.p0,this.p1),2),y.add(this.p0,this.p1,Ut))),E!==_?E?(y.copy(this.p4,this.p3),y.copy(this.p5,this.p3),y.copy(this.p6,this.p3)):_&&(y.scale(Ut,y.sub(Ut,this.p4,this.p3),2),y.add(this.p4,this.p3,Ut),y.add(this.p5,this.p4,Ut),y.add(this.p6,this.p5,Ut)):E!==D?E?(y.copy(this.p5,this.p4),y.copy(this.p6,this.p4)):D&&(y.scale(Ut,y.sub(Ut,this.p5,this.p4),2),y.add(this.p5,this.p4,Ut),y.add(this.p6,this.p5,Ut)):E!==P&&(E?y.copy(this.p6,this.p5):P&&(y.scale(Ut,y.sub(Ut,this.p6,this.p5),2),y.add(this.p6,this.p5,Ut)))),this.setFromToVector(this.d01,s,p),this.setFromToVector(this.d12,o,h),this.setFromToVector(this.d23,l,f),this.setFromToVector(this.d34,c,b);let A=E&&this.helixOrientationCenters,I=1.5;o===s||h!==p&&A?(y.setMagnitude(Ut,y.sub(Ut,this.p3,this.p4),I),y.add(this.p2,this.p3,Ut),y.add(this.p1,this.p2,Ut),y.add(this.p0,this.p1,Ut)):s===a||h!==m&&A?(y.setMagnitude(Ut,y.sub(Ut,this.p2,this.p3),I),y.add(this.p1,this.p2,Ut),y.add(this.p0,this.p1,Ut)):(a===i||h!==d&&A)&&(y.setMagnitude(Ut,y.sub(Ut,this.p1,this.p2),I),y.add(this.p0,this.p1,Ut)),o===l||h!==f&&A?(y.setMagnitude(Ut,y.sub(Ut,this.p3,this.p2),I),y.add(this.p4,this.p3,Ut),y.add(this.p5,this.p4,Ut),y.add(this.p6,this.p5,Ut)):l===c||h!==b&&A?(y.setMagnitude(Ut,y.sub(Ut,this.p4,this.p3),I),y.add(this.p5,this.p4,Ut),y.add(this.p6,this.p5,Ut)):(c===u||h!==v&&A)&&(y.setMagnitude(Ut,y.sub(Ut,this.p5,this.p4),I),y.add(this.p6,this.p5,Ut)),this.setControlPoint(n.p0,this.p0,this.p1,this.p2,m),this.setControlPoint(n.p1,this.p1,this.p2,this.p3,p),this.setControlPoint(n.p2,this.p2,this.p3,this.p4,h),this.setControlPoint(n.p3,this.p3,this.p4,this.p5,f),this.setControlPoint(n.p4,this.p4,this.p5,this.p6,b),this.setDirection(n.d12,this.d01,this.d12,this.d23),this.setDirection(n.d23,this.d12,this.d23,this.d34),e.hasNext||(this.state=0)}return this.hasNext=e.hasNext||r.hasNext,this.value}constructor(e,r,n={}){var o;if(this.unit=e,this.state=0,this.p0=y(),this.p1=y(),this.p2=y(),this.p3=y(),this.p4=y(),this.p5=y(),this.p6=y(),this.d01=y(),this.d12=y(),this.d23=y(),this.d34=y(),this.hasNext=!1,this.atomicConformation=e.model.atomicConformation,this.residueAtomSegments=e.model.atomicHierarchy.residueAtomSegments,this.polymerRanges=e.model.atomicRanges.polymerRanges,this.traceElementIndex=e.model.atomicHierarchy.derived.residue.traceElementIndex,this.directionFromElementIndex=e.model.atomicHierarchy.derived.residue.directionFromElementIndex,this.directionToElementIndex=e.model.atomicHierarchy.derived.residue.directionToElementIndex,this.moleculeType=e.model.atomicHierarchy.derived.residue.moleculeType,this.cyclicPolymerMap=e.model.atomicRanges.cyclicPolymerMap,this.polymerIt=sc.transientSegments(this.polymerRanges,e.elements),this.residueIt=$r.transientSegments(this.residueAtomSegments,e.elements),this.value=pte(r,e),this.hasNext=this.residueIt.hasNext&&this.polymerIt.hasNext,n.ignoreSecondaryStructure||(this.secondaryStructure=(o=xs.get(r).value)===null||o===void 0?void 0:o.get(e.invariantId)),n.useHelixOrientation){let i=HS.get(e.model).value;if(!i)throw new Error("missing helix-orientation");this.helixOrientationCenters=i.centers}}},IO=class{getElementIndex(e){return Math.min(Math.max(this.polymerSegment.start,e),this.polymerSegment.end-1)}pos(e,r){let n=this.unit.elements[r];e[0]=this.conformation.x[n],e[1]=this.conformation.y[n],e[2]=this.conformation.z[n]}move(){if(this.state===0){for(;this.polymerIt.hasNext;)if(this.polymerSegment=this.polymerIt.move(),this.elementIndex=this.polymerSegment.start,this.elementIndex=this.polymerSegment.end&&(this.state=0)}return this.hasNext=this.elementIndex+1{let f=o.units[h];return c.unit=f,c.element=a[p],c},d=!!n?.asSecondary;function m(p,h){return d}return jt(s,l,1,u,!1,m)}t.fromGroup=e})(Wl||(Wl={}));var KP;(function(t){function e(r){let{group:n,structure:o}=r,i=n.units[0].gapElements,a=i.length,s=n.units.length,l=z.Location.create(o);return jt(a,s,1,(u,d)=>{let m=n.units[d];return l.unit=m,l.element=i[u],l})}t.fromGroup=e})(KP||(KP={}));function Au(t,e,r){let{objectId:n,instanceId:o,groupId:i}=t;if(r===n){let{structure:a,group:s}=e,l=s.units[o];if(Pe.isAtomic(l))return O_(a,l,l.polymerElements[i]);{let{elements:c}=l,u=l.polymerElements[i],d=we.indexOf(c,u);if(d!==-1){let m=we.ofSingleton(d);return z.Loci(a,[{unit:l,indices:m}])}}}return St}function xte(t,e,r,n,o,i){let a=-1,s=-1;for(let c=o;c<=i;c++){let u=r[c];if(!(u<0)&&(a=we.indexOf(e,u),a>=0)){s=c;break}}if(a<0)return!1;let l=a;for(let c=i;c>s;c--){let u=r[c];if(u<0)continue;let d=we.indexOf(e,u);if(d>=0){l=d;break}}return n(Oe.ofRange(t+a,t+l))}function BO(t,e,r,n,o){let i=!1,{elements:a}=o.unit,{traceElementIndex:s}=o.unit.model.atomicHierarchy.derived.residue,{index:l}=o.unit.model.atomicHierarchy.residueAtomSegments,c=r(o.unit);if(Oe.is(o.indices))if(Oe.start(o.indices)===0&&Oe.end(o.indices)===o.unit.elements.length)i=n(Oe.ofBounds(t,t+e))||i;else{let u=l[a[Oe.min(o.indices)]],d=l[a[Oe.max(o.indices)]];i=xte(t,c,s,n,u,d)||i}else{let{indices:u}=o;for(let d=0,m=u.length;d1)break;h=b,f++}d=f-1,i=xte(t,c,s,n,p,h)||i}}return i}function gAe(t){return t.polymerElements}function ku(t,e,r){let n=!1;if(!z.Loci.is(t))return!1;let{structure:o,group:i}=e;if(!ue.areEquivalent(t.structure,o))return!1;let a=i.units[0].polymerElements.length;for(let s of t.elements){if(!i.unitIndexMap.has(s.unit.id))continue;let l=i.unitIndexMap.get(s.unit.id)*a;if(Pe.isAtomic(s.unit))n=BO(l,a,gAe,r,s)||n;else if(Oe.is(s.indices)){let c=l+Oe.start(s.indices),u=l+Oe.end(s.indices);n=r(Oe.ofBounds(c,u))||n}else for(let c=0,u=s.indices.length;c{let u=we.indexOf(s.unit.gapElements,s.unit.elements[c]);u!==-1&&r(Oe.ofSingleton(l*a+u))&&(n=!0)})}}return n}var Xl;(function(t){function e(r){let{group:n,structure:o}=r,i=n.units[0],a=Pe.isAtomic(i)?i.nucleotideElements:[],s=a.length,l=n.units.length,c=z.Location.create(o);return jt(s,l,1,(d,m)=>{let p=n.units[m];return c.unit=p,c.element=a[d],c})}t.fromGroup=e})(Xl||(Xl={}));function Mu(t,e,r){let{objectId:n,instanceId:o,groupId:i}=t;if(r===n){let{structure:a,group:s}=e,l=s.units[o];if(Pe.isAtomic(l))return O_(a,l,l.nucleotideElements[i])}return St}function yAe(t){return t.nucleotideElements}function Ru(t,e,r){let n=!1;if(!z.Loci.is(t))return!1;let{structure:o,group:i}=e;if(!ue.areEquivalent(t.structure,o))return!1;let a=i.units[0];if(!Pe.isAtomic(a))return!1;let{nucleotideElements:s}=a,l=s.length;for(let c of t.elements){if(!Pe.isAtomic(c.unit)||!i.unitIndexMap.has(c.unit.id))continue;let u=i.unitIndexMap.get(c.unit.id)*l;Pe.isAtomic(c.unit)&&(n=BO(u,l,yAe,r,c)||n)}return n}var vAe=y(),bAe=y();function Lu(t,e){let{model:r,conformation:n}=t,{residueAtomSegments:o,atoms:i,index:a}=r.atomicHierarchy,{label_comp_id:s}=i,l=s.value(o.offsets[e]),c=Zz(l),u=Jz(l);if(!c&&!u){let d=a.findAtomOnResidue(e,"C4"),m=a.findAtomOnResidue(e,"N9");d!==-1&&m!==-1&&y.distance(n.invariantPosition(d,vAe),n.invariantPosition(m,bAe))<1.6?c=!0:u=!0}return{isPurine:c,isPyrimidine:u}}function Bu(){return{trace:-1,N1:-1,C2:-1,N3:-1,C4:-1,C5:-1,C6:-1,N7:-1,C8:-1,N9:-1,C1_1:-1,C2_1:-1,C3_1:-1,C4_1:-1,O4_1:-1}}function Ou(t,e,r){let n=e.model.atomicHierarchy.index,{traceElementIndex:o}=e.model.atomicHierarchy.derived.residue;return t.trace=o[r],t.N1=n.findAtomOnResidue(r,"N1"),t.C2=n.findAtomOnResidue(r,"C2"),t.N3=n.findAtomOnResidue(r,"N3"),t.C4=n.findAtomOnResidue(r,"C4"),t.C5=n.findAtomOnResidue(r,"C5"),t.C5===-1&&(t.C5=n.findAtomOnResidue(r,"N5")),t.C6=n.findAtomOnResidue(r,"C6"),t.N7=n.findAtomOnResidue(r,"N7"),t.N7===-1&&(t.N7=n.findAtomOnResidue(r,"C7")),t.C8=n.findAtomOnResidue(r,"C8"),t.N9=n.findAtomOnResidue(r,"N9"),t}function Rm(t){return t.trace!==-1&&t.N1!==-1&&t.C2!==-1&&t.N3!==-1&&t.C4!==-1&&t.C5!==-1&&t.C6!==-1&&t.N7!==-1&&t.C8!==-1&&t.N9!==-1}function Fu(t,e,r){let n=e.model.atomicHierarchy.index,{traceElementIndex:o}=e.model.atomicHierarchy.derived.residue;return t.trace=o[r],t.N1=n.findAtomOnResidue(r,"N1"),t.N1===-1&&(t.N1=n.findAtomOnResidue(r,"C1")),t.C2=n.findAtomOnResidue(r,"C2"),t.N3=n.findAtomOnResidue(r,"N3"),t.C4=n.findAtomOnResidue(r,"C4"),t.C5=n.findAtomOnResidue(r,"C5"),t.C6=n.findAtomOnResidue(r,"C6"),t}function Lm(t){return t.trace!==-1&&t.N1!==-1&&t.C2!==-1&&t.N3!==-1&&t.C4!==-1&&t.C5!==-1&&t.C6!==-1}function Rh(t,e,r){let n=e.model.atomicHierarchy.index,{traceElementIndex:o}=e.model.atomicHierarchy.derived.residue;return t.trace=o[r],t.C1_1=n.findAtomOnResidue(r,"C1'"),t.C2_1=n.findAtomOnResidue(r,"C2'"),t.C3_1=n.findAtomOnResidue(r,"C3'"),t.C4_1=n.findAtomOnResidue(r,"C4'"),t.O4_1=n.findAtomOnResidue(r,"O4'"),t}function Lh(t){return t.trace!==-1&&t.C1_1!==-1&&t.C2_1!==-1&&t.C3_1!==-1&&t.C4_1!==-1&&t.O4_1!==-1}var ZP=y(),OO=y(),wte=y(),_te=y(),Pte=y(),Ete=y(),JP=y(),FO=y(),NO=y(),Ite=y(),XS=W.identity(),xAe=y(),Dte=M0(),Ate={sizeFactor:g.Numeric(.2,{min:0,max:10,step:.01}),thicknessFactor:g.Numeric(1,{min:0,max:2,step:.01}),radialSegments:g.Numeric(16,{min:2,max:56,step:2},ge.CustomQualityParamInfo)},p6t=g.getDefaultValues(Ate);function SAe(t,e,r,n,o,i){if(!Pe.isAtomic(e))return Be.createEmpty(i);let a=e.nucleotideElements.length;if(!a)return Be.createEmpty(i);let{sizeFactor:s,thicknessFactor:l,radialSegments:c}=o,u=a*(Dte.vertices.length/3+c*2),d=Te.createState(u,u/4,i),{elements:m,model:p,conformation:h}=e,{chainAtomSegments:f,residueAtomSegments:b}=p.atomicHierarchy,{moleculeType:v}=p.atomicHierarchy.derived.residue,x=$r.transientSegments(f,m),S=$r.transientSegments(b,m),T=1*s,E=4.5,_=l*s*2,D={radiusTop:T,radiusBottom:T,radialSegments:c,bottomCap:!0},P=0;for(;x.hasNext;)for(S.setSegment(x.move());S.hasNext;){let{index:k}=S.move();if(Yo(v[k])){let M=Bu(),R=-1,B=-1,F=-1,G=-1,V=-1,H=4.5,{isPurine:Q,isPyrimidine:L}=Lu(e,k);Q?(H=4.5,Ou(M,e,k),R=M.N1,B=M.C4,F=M.C6,G=M.C2,V=M.N9):L&&(H=3,Fu(M,e,k),R=M.N3,B=M.C6,F=M.C4,G=M.C2,V=M.N1),V!==-1&&M.trace!==-1&&(h.invariantPosition(V,Pte),h.invariantPosition(M.trace,Ete),d.currentGroup=P,nr(d,Pte,Ete,1,D),R!==-1&&B!==-1&&F!==-1&&G!==-1&&(h.invariantPosition(R,ZP),h.invariantPosition(B,OO),h.invariantPosition(F,wte),h.invariantPosition(G,_te),y.normalize(JP,y.sub(JP,OO,ZP)),y.normalize(FO,y.sub(FO,_te,wte)),y.normalize(NO,y.cross(NO,JP,FO)),W.targetTo(XS,ZP,OO,NO),y.scaleAndAdd(Ite,ZP,JP,H/2-.2),W.scale(XS,XS,y.set(xAe,E,_,H)),W.setTranslation(XS,Ite),Te.addPrimitive(d,XS,Dte))),++P}}let A=Te.getMesh(d),I=te.expand(te(),e.boundary.sphere,T);return A.setBoundingSphere(I),A}var VO=w(w({},Gr),Ate);function kte(t){return rn({defaultProps:g.getDefaultValues(VO),createGeometry:SAe,createLocationIterator:Xl.fromGroup,getLoci:Mu,eachLocation:Ru,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.thicknessFactor!==n.thicknessFactor||r.radialSegments!==n.radialSegments}},t)}var eE=y(),Bh=y(),tE=y(),rE=y(),bb=y(),xb=y(),nE=y(),Mte=y(),Rte=y(),oE=y(),Oh=y(),Ote={sizeFactor:g.Numeric(.2,{min:0,max:10,step:.01}),thicknessFactor:g.Numeric(1,{min:0,max:2,step:.01}),radialSegments:g.Numeric(16,{min:2,max:56,step:2},ge.CustomQualityParamInfo),detail:g.Numeric(0,{min:0,max:3,step:1},ge.CustomQualityParamInfo)},D6t=g.getDefaultValues(Ote),iE=new Float32Array(2*9*3),CAe=new Uint32Array([0,1,2,3,4,5,6,7,16,17,14,15,12,13,8,9,10,11,0,1]),TAe=new Uint32Array([8,12,14,16,6,4,2,0,10]),wAe=new Uint32Array([9,11,1,3,5,7,17,15,13]),aE=new Float32Array(2*6*3),_Ae=new Uint32Array([0,1,2,3,4,5,6,7,8,9,10,11,0,1]),PAe=new Uint32Array([0,10,8,6,4,2]),EAe=new Uint32Array([1,3,5,7,9,11]),Lte=y();function Bte(t,e,...r){for(let n=0,o=r.length;n{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.thicknessFactor!==n.thicknessFactor||r.radialSegments!==n.radialSegments}},t)}var Sb=y(),sE=y(),lE=y(),Cb=y(),Tb=y(),cE=y(),Nte=y(),Vte=y(),zte=y(),uE=y(),UO=y(),dE=y(),mE=y(),GO=y(),wb=y(),Ha=y(),_b=y(),Gte={sizeFactor:g.Numeric(.2,{min:0,max:10,step:.01}),thicknessFactor:g.Numeric(1,{min:0,max:2,step:.01})},G6t=g.getDefaultValues(Gte),pE=new Float32Array(2*9*3),DAe=new Uint32Array([0,1,2,3,4,5,6,7,16,17,14,15,12,13,8,9,10,11,0,1]),AAe=new Uint32Array([8,12,14,16,6,4,2,0,10]),kAe=new Uint32Array([9,11,1,3,5,7,17,15,13]),fE=new Float32Array(2*6*3),MAe=new Uint32Array([2,3,4,5,6,7,8,9,10,11,2,3]),RAe=new Uint32Array([0,10,8,6,4,2,10]),LAe=new Uint32Array([1,3,5,7,9,11,3]),hE=new Float32Array(2*6*3),BAe=new Uint32Array([0,1,2,3,4,5,6,7,8,9,10,11,0,1]),OAe=new Uint32Array([0,10,8,6,4,2]),FAe=new Uint32Array([1,3,5,7,9,11]),Ute=y();function jO(t,e,...r){for(let n=0,o=r.length;n{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.thicknessFactor!==n.thicknessFactor}},t)}var qa=y(),Pn=y(),Xi=y(),Yi=y(),jo=y(),Ho=y(),Qi=y(),Bm=y(),Om=y(),pi=y(),fi=y(),Fm=y(),Yl=y(),Nm=y(),Vm=y(),gE=U(w(w({},Gr),qv),{sizeFactor:g.Numeric(.3,{min:0,max:10,step:.01}),radialSegments:g.Numeric(16,{min:2,max:56,step:2},ge.CustomQualityParamInfo),tryUseImpostor:g.Boolean(!0)});function Hte(t,e,r,n){return r.tryUseImpostor&&n&&n.extensions.fragDepth?zAe(t):GAe(t)}function VAe(t,e,r,n,o,i){if(!Pe.isAtomic(e))return xo.createEmpty(i);let a=e.nucleotideElements.length;if(!a)return xo.createEmpty(i);let s=a*15,l=Sh.create(s,s/4,i),{elements:c,model:u,conformation:d}=e,{chainAtomSegments:m,residueAtomSegments:p}=u.atomicHierarchy,{moleculeType:h}=u.atomicHierarchy.derived.residue,f=$r.transientSegments(m,c),b=$r.transientSegments(p,c),v=0,x=2;for(;f.hasNext;)for(b.setSegment(f.move());b.hasNext;){let{index:E}=b.move();if(Yo(h[E])){let _=Bu();Rh(_,e,E),Lh(_)&&(d.invariantPosition(_.C1_1,fi),d.invariantPosition(_.C2_1,Fm),d.invariantPosition(_.C3_1,Yl),d.invariantPosition(_.C4_1,Nm),d.invariantPosition(_.O4_1,Vm),d.invariantPosition(_.trace,qa),l.add(Yl[0],Yl[1],Yl[2],qa[0],qa[1],qa[2],1,!0,!0,x,v),l.add(Yl[0],Yl[1],Yl[2],Nm[0],Nm[1],Nm[2],1,!0,!0,x,v),l.add(Nm[0],Nm[1],Nm[2],Vm[0],Vm[1],Vm[2],1,!0,!0,x,v),l.add(Vm[0],Vm[1],Vm[2],fi[0],fi[1],fi[2],1,!0,!0,x,v),l.add(fi[0],fi[1],fi[2],Fm[0],Fm[1],Fm[2],1,!0,!0,x,v),l.add(Fm[0],Fm[1],Fm[2],Yl[0],Yl[1],Yl[2],1,!0,!0,x,v));let{isPurine:D,isPyrimidine:P}=Lu(e,E);D?(Ou(_,e,E),_.C1_1!==-1&&_.N9!==-1?(d.invariantPosition(_.C1_1,fi),d.invariantPosition(_.N9,pi),l.add(pi[0],pi[1],pi[2],fi[0],fi[1],fi[2],1,!0,!0,x,v)):_.N9!==-1&&_.trace!==-1&&(d.invariantPosition(_.N9,pi),d.invariantPosition(_.trace,qa),l.add(pi[0],pi[1],pi[2],qa[0],qa[1],qa[2],1,!0,!0,x,v)),Rm(_)&&(d.invariantPosition(_.N1,Pn),d.invariantPosition(_.C2,Xi),d.invariantPosition(_.N3,Yi),d.invariantPosition(_.C4,jo),d.invariantPosition(_.C5,Ho),d.invariantPosition(_.C6,Qi),d.invariantPosition(_.N7,Bm),d.invariantPosition(_.C8,Om),d.invariantPosition(_.N9,pi),l.add(pi[0],pi[1],pi[2],Om[0],Om[1],Om[2],1,!0,!0,x,v),l.add(Om[0],Om[1],Om[2],Bm[0],Bm[1],Bm[2],1,!0,!0,x,v),l.add(Bm[0],Bm[1],Bm[2],Ho[0],Ho[1],Ho[2],1,!0,!0,x,v),l.add(Ho[0],Ho[1],Ho[2],Qi[0],Qi[1],Qi[2],1,!0,!0,x,v),l.add(Qi[0],Qi[1],Qi[2],Pn[0],Pn[1],Pn[2],1,!0,!0,x,v),l.add(Pn[0],Pn[1],Pn[2],Xi[0],Xi[1],Xi[2],1,!0,!0,x,v),l.add(Xi[0],Xi[1],Xi[2],Yi[0],Yi[1],Yi[2],1,!0,!0,x,v),l.add(Yi[0],Yi[1],Yi[2],jo[0],jo[1],jo[2],1,!0,!0,x,v),l.add(jo[0],jo[1],jo[2],Ho[0],Ho[1],Ho[2],1,!0,!0,x,v),l.add(jo[0],jo[1],jo[2],pi[0],pi[1],pi[2],1,!0,!0,x,v))):P&&(Fu(_,e,E),_.C1_1!==-1&&_.N1!==-1?(d.invariantPosition(_.N1,Pn),d.invariantPosition(_.C1_1,fi),l.add(Pn[0],Pn[1],Pn[2],fi[0],fi[1],fi[2],1,!0,!0,x,v)):_.N1!==-1&&_.trace!==-1&&(d.invariantPosition(_.N1,Pn),d.invariantPosition(_.trace,qa),l.add(Pn[0],Pn[1],Pn[2],qa[0],qa[1],qa[2],1,!0,!0,x,v)),Lm(_)&&(d.invariantPosition(_.N1,Pn),d.invariantPosition(_.C2,Xi),d.invariantPosition(_.N3,Yi),d.invariantPosition(_.C4,jo),d.invariantPosition(_.C5,Ho),d.invariantPosition(_.C6,Qi),l.add(Pn[0],Pn[1],Pn[2],Qi[0],Qi[1],Qi[2],1,!0,!0,x,v),l.add(Qi[0],Qi[1],Qi[2],Ho[0],Ho[1],Ho[2],1,!0,!0,x,v),l.add(Ho[0],Ho[1],Ho[2],jo[0],jo[1],jo[2],1,!0,!0,x,v),l.add(jo[0],jo[1],jo[2],Yi[0],Yi[1],Yi[2],1,!0,!0,x,v),l.add(Yi[0],Yi[1],Yi[2],Xi[0],Xi[1],Xi[2],1,!0,!0,x,v),l.add(Xi[0],Xi[1],Xi[2],Pn[0],Pn[1],Pn[2],1,!0,!0,x,v))),++v}}let S=l.getCylinders(),T=te.expand(te(),e.boundary.sphere,1*o.sizeFactor);return S.setBoundingSphere(T),S}function zAe(t){return Wv({defaultProps:g.getDefaultValues(gE),createGeometry:VAe,createLocationIterator:Xl.fromGroup,getLoci:Mu,eachLocation:Ru,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor},mustRecreate:(e,r,n)=>!r.tryUseImpostor||!n},t)}function UAe(t,e,r,n,o,i){if(!Pe.isAtomic(e))return Be.createEmpty(i);let a=e.nucleotideElements.length;if(!a)return Be.createEmpty(i);let{sizeFactor:s,radialSegments:l}=o,c=a*(l*15),u=Te.createState(c,c/4,i),{elements:d,model:m,conformation:p}=e,{chainAtomSegments:h,residueAtomSegments:f}=m.atomicHierarchy,{moleculeType:b}=m.atomicHierarchy.derived.residue,v=$r.transientSegments(h,d),x=$r.transientSegments(f,d),S={radiusTop:1*s,radiusBottom:1*s,radialSegments:l},T=0;for(;v.hasNext;)for(x.setSegment(v.move());x.hasNext;){let{index:D}=x.move();if(Yo(b[D])){let P=Bu();u.currentGroup=T,Rh(P,e,D),Lh(P)&&(p.invariantPosition(P.C1_1,fi),p.invariantPosition(P.C2_1,Fm),p.invariantPosition(P.C3_1,Yl),p.invariantPosition(P.C4_1,Nm),p.invariantPosition(P.O4_1,Vm),p.invariantPosition(P.trace,qa),nr(u,Yl,qa,1,S),nr(u,Yl,Nm,1,S),nr(u,Nm,Vm,1,S),nr(u,Vm,fi,1,S),nr(u,fi,Fm,1,S),nr(u,Fm,Yl,1,S));let{isPurine:A,isPyrimidine:I}=Lu(e,D);A?(Ou(P,e,D),P.C1_1!==-1&&P.N9!==-1?(p.invariantPosition(P.C1_1,fi),p.invariantPosition(P.N9,pi),nr(u,pi,fi,1,S)):P.N9!==-1&&P.trace!==-1&&(p.invariantPosition(P.N9,pi),p.invariantPosition(P.trace,qa),nr(u,pi,qa,1,S)),Rm(P)&&(p.invariantPosition(P.N1,Pn),p.invariantPosition(P.C2,Xi),p.invariantPosition(P.N3,Yi),p.invariantPosition(P.C4,jo),p.invariantPosition(P.C5,Ho),p.invariantPosition(P.C6,Qi),p.invariantPosition(P.N7,Bm),p.invariantPosition(P.C8,Om),p.invariantPosition(P.N9,pi),nr(u,pi,Om,1,S),nr(u,Om,Bm,1,S),nr(u,Bm,Ho,1,S),nr(u,Ho,Qi,1,S),nr(u,Qi,Pn,1,S),nr(u,Pn,Xi,1,S),nr(u,Xi,Yi,1,S),nr(u,Yi,jo,1,S),nr(u,jo,Ho,1,S),nr(u,jo,pi,1,S))):I&&(Fu(P,e,D),P.C1_1!==-1&&P.N1!==-1?(p.invariantPosition(P.N1,Pn),p.invariantPosition(P.C1_1,fi),nr(u,Pn,fi,1,S)):P.N1!==-1&&P.trace!==-1&&(p.invariantPosition(P.N1,Pn),p.invariantPosition(P.trace,qa),nr(u,Pn,qa,1,S)),Lm(P)&&(p.invariantPosition(P.N1,Pn),p.invariantPosition(P.C2,Xi),p.invariantPosition(P.N3,Yi),p.invariantPosition(P.C4,jo),p.invariantPosition(P.C5,Ho),p.invariantPosition(P.C6,Qi),nr(u,Pn,Qi,1,S),nr(u,Qi,Ho,1,S),nr(u,Ho,jo,1,S),nr(u,jo,Yi,1,S),nr(u,Yi,Xi,1,S),nr(u,Xi,Pn,1,S))),++T}}let E=Te.getMesh(u),_=te.expand(te(),e.boundary.sphere,1*o.sizeFactor);return E.setBoundingSphere(_),E}function GAe(t){return rn({defaultProps:g.getDefaultValues(gE),createGeometry:UAe,createLocationIterator:Xl.fromGroup,getLoci:Mu,eachLocation:Ru,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.radialSegments!==n.radialSegments},mustRecreate:(e,r,n)=>r.tryUseImpostor&&!!n},t)}var Pb=y(),Nu=y(),Vu=y(),zu=y(),Uu=y(),Dc=y(),Gu=y(),Eb=y(),Ib=y(),Db=y(),Ab=y(),kb=y(),Mb=y(),Rb=y(),Lb=y(),yE=U(w(w({},Gr),jv),{sizeFactor:g.Numeric(.3,{min:0,max:10,step:.01}),detail:g.Numeric(0,{min:0,max:3,step:1},ge.CustomQualityParamInfo),tryUseImpostor:g.Boolean(!0)});function qte(t,e,r,n){return r.tryUseImpostor&&n&&n.extensions.fragDepth?HAe(t):WAe(t)}function jAe(t,e,r,n,o,i){if(!Pe.isAtomic(e))return Ni.createEmpty(i);let a=e.nucleotideElements.length;if(!a)return Ni.createEmpty(i);let s=a*15,l=Op.create(s,s/4,i),{elements:c,model:u,conformation:d}=e,{chainAtomSegments:m,residueAtomSegments:p}=u.atomicHierarchy,{moleculeType:h}=u.atomicHierarchy.derived.residue,f=$r.transientSegments(m,c),b=$r.transientSegments(p,c),v=0;for(;f.hasNext;)for(b.setSegment(f.move());b.hasNext;){let{index:T}=b.move();if(Yo(h[T])){let E=Bu();Rh(E,e,T),Lh(E)&&(d.invariantPosition(E.C1_1,Ab),d.invariantPosition(E.C2_1,kb),d.invariantPosition(E.C3_1,Mb),d.invariantPosition(E.C4_1,Rb),d.invariantPosition(E.O4_1,Lb),d.invariantPosition(E.trace,Pb),l.add(Pb[0],Pb[1],Pb[2],v),l.add(Mb[0],Mb[1],Mb[2],v),l.add(Rb[0],Rb[1],Rb[2],v),l.add(Lb[0],Lb[1],Lb[2],v),l.add(Ab[0],Ab[1],Ab[2],v),l.add(kb[0],kb[1],kb[2],v));let{isPurine:_,isPyrimidine:D}=Lu(e,T);_?(Ou(E,e,T),Rm(E)&&(d.invariantPosition(E.N1,Nu),d.invariantPosition(E.C2,Vu),d.invariantPosition(E.N3,zu),d.invariantPosition(E.C4,Uu),d.invariantPosition(E.C5,Dc),d.invariantPosition(E.C6,Gu),d.invariantPosition(E.N7,Eb),d.invariantPosition(E.C8,Ib),d.invariantPosition(E.N9,Db),l.add(Db[0],Db[1],Db[2],v),l.add(Ib[0],Ib[1],Ib[2],v),l.add(Eb[0],Eb[1],Eb[2],v),l.add(Dc[0],Dc[1],Dc[2],v),l.add(Gu[0],Gu[1],Gu[2],v),l.add(Nu[0],Nu[1],Nu[2],v),l.add(Vu[0],Vu[1],Vu[2],v),l.add(zu[0],zu[1],zu[2],v),l.add(Uu[0],Uu[1],Uu[2],v))):D&&(Fu(E,e,T),Lm(E)&&(d.invariantPosition(E.N1,Nu),d.invariantPosition(E.C2,Vu),d.invariantPosition(E.N3,zu),d.invariantPosition(E.C4,Uu),d.invariantPosition(E.C5,Dc),d.invariantPosition(E.C6,Gu),l.add(Nu[0],Nu[1],Nu[2],v),l.add(Gu[0],Gu[1],Gu[2],v),l.add(Dc[0],Dc[1],Dc[2],v),l.add(Uu[0],Uu[1],Uu[2],v),l.add(zu[0],zu[1],zu[2],v),l.add(Vu[0],Vu[1],Vu[2],v))),++v}}let x=l.getSpheres(),S=te.expand(te(),e.boundary.sphere,1*o.sizeFactor);return x.setBoundingSphere(S),x}function HAe(t){return Hv({defaultProps:g.getDefaultValues(yE),createGeometry:jAe,createLocationIterator:Xl.fromGroup,getLoci:Mu,eachLocation:Ru,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor},mustRecreate:(e,r,n)=>!r.tryUseImpostor||!n},t)}function qAe(t,e,r,n,o,i){if(!Pe.isAtomic(e))return Be.createEmpty(i);let a=e.nucleotideElements.length;if(!a)return Be.createEmpty(i);let{sizeFactor:s,detail:l}=o,c=a*Sd(l),u=Te.createState(c,c/2,i),{elements:d,model:m,conformation:p}=e,{chainAtomSegments:h,residueAtomSegments:f}=m.atomicHierarchy,{moleculeType:b}=m.atomicHierarchy.derived.residue,v=$r.transientSegments(h,d),x=$r.transientSegments(f,d),S=1*s,T=0;for(;v.hasNext;)for(x.setSegment(v.move());x.hasNext;){let{index:D}=x.move();if(Yo(b[D])){let P=Bu();u.currentGroup=T,Rh(P,e,D),Lh(P)&&(p.invariantPosition(P.C1_1,Ab),p.invariantPosition(P.C2_1,kb),p.invariantPosition(P.C3_1,Mb),p.invariantPosition(P.C4_1,Rb),p.invariantPosition(P.O4_1,Lb),p.invariantPosition(P.trace,Pb),Jt(u,Pb,S,l),Jt(u,Rb,S,l),Jt(u,Lb,S,l),Jt(u,Ab,S,l),Jt(u,kb,S,l),Jt(u,Mb,S,l));let{isPurine:A,isPyrimidine:I}=Lu(e,D);A?(Ou(P,e,D),Rm(P)&&(p.invariantPosition(P.N1,Nu),p.invariantPosition(P.C2,Vu),p.invariantPosition(P.N3,zu),p.invariantPosition(P.C4,Uu),p.invariantPosition(P.C5,Dc),p.invariantPosition(P.C6,Gu),p.invariantPosition(P.N7,Eb),p.invariantPosition(P.C8,Ib),p.invariantPosition(P.N9,Db),Jt(u,Ib,S,l),Jt(u,Eb,S,l),Jt(u,Dc,S,l),Jt(u,Gu,S,l),Jt(u,Nu,S,l),Jt(u,Vu,S,l),Jt(u,zu,S,l),Jt(u,Uu,S,l),Jt(u,Dc,S,l),Jt(u,Db,S,l))):I&&(Fu(P,e,D),Lm(P)&&(p.invariantPosition(P.N1,Nu),p.invariantPosition(P.C2,Vu),p.invariantPosition(P.N3,zu),p.invariantPosition(P.C4,Uu),p.invariantPosition(P.C5,Dc),p.invariantPosition(P.C6,Gu),Jt(u,Gu,S,l),Jt(u,Dc,S,l),Jt(u,Uu,S,l),Jt(u,zu,S,l),Jt(u,Vu,S,l),Jt(u,Nu,S,l))),++T}}let E=Te.getMesh(u),_=te.expand(te(),e.boundary.sphere,1*o.sizeFactor);return E.setBoundingSphere(_),E}function WAe(t){return rn({defaultProps:g.getDefaultValues(yE),createGeometry:qAe,createLocationIterator:Xl.fromGroup,getLoci:Mu,eachLocation:Ru,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.detail!==n.detail},mustRecreate:(e,r,n)=>r.tryUseImpostor&&!!n},t)}var Ey=y.zero(),Bb=y.zero(),Iy=y.zero(),Wte=y.zero(),Ki=tl(3,!1);function XAe(){let t=pd(8);for(let e=0;e<3;++e){let r=(e+1)%3;y.set(Ey,Ki[e*3],Ki[e*3+1],-.5),y.set(Bb,Ki[r*3],Ki[r*3+1],-.5),y.set(Iy,Ki[r*3],Ki[r*3+1],.5),y.set(Wte,Ki[e*3],Ki[e*3+1],.5),t.add(Ey,Bb,Iy),t.add(Iy,Wte,Ey)}return y.set(Ey,Ki[0],Ki[1],-.5),y.set(Bb,Ki[3],Ki[4],-.5),y.set(Iy,Ki[6],Ki[7],-.5),t.add(Iy,Bb,Ey),y.set(Ey,Ki[0],Ki[1],.5),y.set(Bb,Ki[3],Ki[4],.5),y.set(Iy,Ki[6],Ki[7],.5),t.add(Ey,Bb,Iy),t.getPrimitive()}var qO;function Xte(){return qO||(qO=XAe()),qO}var Dy=W.identity(),YAe=y.zero(),Yte=y.zero(),Qte=y.zero(),WO=y.zero(),QAe=4,KAe=4,$Ae=6,ZAe=Xte(),Kte={sizeFactor:g.Numeric(.2,{min:0,max:10,step:.01})},V8t=g.getDefaultValues(Kte);function JAe(t,e,r,n,o,i){let a=e.polymerElements.length;if(!a)return Be.createEmpty(i);let{sizeFactor:s}=o,l=a*24,c=Te.createState(l,l/10,i),d=gb(1),{normalVectors:m,binormalVectors:p}=d,h=0,f=mb(e,r);for(;f.hasNext;){let x=f.move();c.currentGroup=h;let S=Yo(x.moleculeType),T=ts.is(x.secStrucType,4);if(yb(d,x,S||T?.5:.9,S?.3:.5),T&&!x.secStrucLast||!T){let D=n.size.size(x.center)*s,P=QAe*D,A=KAe*D,I=$Ae*D,k=S?p:m;y.fromArray(Yte,k,0),y.fromArray(Qte,k,3),y.normalize(WO,y.add(WO,Yte,Qte)),W.targetTo(Dy,x.p3,x.p1,WO),W.mul(Dy,Dy,W.rotY90Z180),W.scale(Dy,Dy,y.set(YAe,I,A,P)),W.setTranslation(Dy,x.p2),Te.addPrimitive(c,Dy,ZAe)}++h}let b=Te.getMesh(c),v=te.expand(te(),e.boundary.sphere,1*o.sizeFactor);return b.setBoundingSphere(v),b}var XO=w(w({},Gr),Kte);function $te(t){return rn({defaultProps:g.getDefaultValues(XO),createGeometry:JAe,createLocationIterator:e=>Wl.fromGroup(e),getLoci:Au,eachLocation:ku,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor}},t)}var YO=10,Zte={sizeFactor:g.Numeric(.2,{min:0,max:10,step:.01}),radialSegments:g.Numeric(16,{min:2,max:56,step:2},ge.CustomQualityParamInfo)},$8t=g.getDefaultValues(Zte);function eke(t,e,r,n,o,i){let a=e.gapElements.length;if(!a)return Be.createEmpty(i);let{sizeFactor:s,radialSegments:l}=o,c=YO*l*2*a*2,u=Te.createState(c,c/10,i),d=y(),m=y(),p={radiusTop:1,radiusBottom:1,topCap:!0,bottomCap:!0,radialSegments:l},h=0,f=ute(r,e);for(;f.hasNext;){let{centerA:x,centerB:S}=f.move();x.element===S.element||(e.conformation.invariantPosition(x.element,d),e.conformation.invariantPosition(S.element,m),p.radiusTop=p.radiusBottom=n.size.size(x)*s,u.currentGroup=h,Xg(u,d,m,.5,YO,!1,p),p.radiusTop=p.radiusBottom=n.size.size(S)*s,u.currentGroup=h+1,Xg(u,m,d,.5,YO,!1,p)),h+=2}let b=Te.getMesh(u),v=te.expand(te(),e.boundary.sphere,1*o.sizeFactor);return b.setBoundingSphere(v),b}var Ay=w(w({},Gr),Zte);function Ob(t){return rn({defaultProps:g.getDefaultValues(Ay),createGeometry:eke,createLocationIterator:KP.fromGroup,getLoci:Cte,eachLocation:Tte,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.radialSegments!==n.radialSegments}},t)}var kr=y(),nn=y(),tke=y(),Ac=y(),zm=y(),vE=y(),bE=y(),YS=y(),Ud=y(),Um=y(),QO=y(),Fh=y(),Nh=y(),Vh=y(),zh=y(),ju=y.fromArray,Fb=y.scale,Hu=y.add,Np=y.sub,rke=y.magnitude,Jte=y.negate,KO=y.copy,ere=y.cross,nke=y.set,mn=he.add3,oke=he.add;function xE(t,e,r,n,o,i,a,s,l){let{vertices:c,normals:u,indices:d}=e,m=c.elementCount;if(ju(kr,n,t),Fb(bE,kr,a),Fb(vE,kr,s),ju(nn,o,t),Fb(Ac,nn,i),ere(Um,nn,kr),ju(Ud,r,t),Hu(Fh,Hu(Fh,Ud,Ac),vE),Np(Nh,Hu(Nh,Ud,Ac),bE),Np(Vh,Np(Vh,Ud,Ac),bE),Hu(zh,Np(zh,Ud,Ac),vE),a0?(ju(kr,e,0),ju(nn,e,o*3),b=s/rke(Np(tke,nn,kr))):nke(YS,0,0,0);for(let x=0;x<=o;++x){let S=i[x],T=a[x],E=s===0?T:s*(1-x/o),_=x*3;ju(zm,r,_),Fb(zm,zm,E),ju(Ac,n,_),Fb(Ac,Ac,S),s>0&&(ju(kr,r,_),ju(nn,n,_),Fb(YS,ere(YS,kr,nn),b)),ju(Ud,e,_),ju(Um,r,_),ju(QO,n,_),Hu(kr,Hu(kr,Ud,Ac),zm),Hu(nn,Um,YS),mn(d,kr[0],kr[1],kr[2]),mn(m,nn[0],nn[1],nn[2]),Hu(kr,Np(kr,Ud,Ac),zm),mn(d,kr[0],kr[1],kr[2]),mn(m,nn[0],nn[1],nn[2]),Jte(nn,QO),mn(d,kr[0],kr[1],kr[2]),mn(m,nn[0],nn[1],nn[2]),Np(kr,Np(kr,Ud,Ac),zm),mn(d,kr[0],kr[1],kr[2]),mn(m,nn[0],nn[1],nn[2]),Hu(nn,Jte(nn,Um),YS),mn(d,kr[0],kr[1],kr[2]),mn(m,nn[0],nn[1],nn[2]),Np(kr,Hu(kr,Ud,Ac),zm),mn(d,kr[0],kr[1],kr[2]),mn(m,nn[0],nn[1],nn[2]),KO(nn,QO),mn(d,kr[0],kr[1],kr[2]),mn(m,nn[0],nn[1],nn[2]),Hu(kr,Hu(kr,Ud,Ac),zm),mn(d,kr[0],kr[1],kr[2]),mn(m,nn[0],nn[1],nn[2])}for(let x=0;x0){let x=i[0],S=a[0];xE(0,t,e,r,n,x,s,-S,!1),xE(0,t,e,r,n,x,-s,S,!1)}if(c&&s===0){let x=i[o],S=a[o];xE(o*3,t,e,r,n,x,S,S,!0)}let v=(o+1)*8+(l?4:s>0?8:0)+(c&&s===0?4:0);for(let x=0,S=v;xA;for(let M=0;M=T?I-A:-I+A:M>=S&&MA;k&&(I-=A),b=m.elementCount;for(let M=0;M=T?I:-I)):Vb(wi,Wa,Fs,gl,I*v[M],A*x[M]),Ns(m,wi[0],wi[1],wi[2]),Ns(p,ni[0],ni[1],ni[2]),Ns(h,b+(M+1)%i,b+M,P)}if(c){let D=o*3,P=m.elementCount;Vp(Wa,r,D),Vp(Fs,n,D),Vp(gl,e,D),tre(ni,Wa,Fs),Ns(m,gl[0],gl[1],gl[2]),Ns(p,ni[0],ni[1],ni[2]);let A=a[o],I=s[o],k=u==="rounded"&&I>A;k&&(I-=A),b=m.elementCount;for(let M=0;M=T?I:-I)):Vb(wi,Wa,Fs,gl,I*v[M],A*x[M]),Ns(m,wi[0],wi[1],wi[2]),Ns(p,ni[0],ni[1],ni[2]),Ns(h,b+M,b+(M+1)%i,P)}let _=(o+1)*i+(l?i+1:0)+(c?i+1:0);he.addRepeat(f,_,d)}var zp=y.fromArray,cke=y.magnitude,JO=y.sub,rre=y.add,eF=y.scale,uke=y.negate,dke=y.copy,mke=y.cross,qu=he.add3,pke=he.add,$i=y(),Xa=y(),fke=y(),tF=y(),ky=y(),nre=y(),KS=y(),hke=y(),rF=y();function zb(t,e,r,n,o,i,a,s){let{currentGroup:l,vertices:c,normals:u,indices:d,groups:m}=t,p=c.elementCount,h=0;s>0&&(zp($i,e,0),zp(Xa,e,o*3),h=s/cke(JO(fke,Xa,$i)));for(let b=0;b<=o;++b){let v=i[b],x=a[b],S=s===0?x:s*(1-b/o),T=b*3;zp(ky,r,T),eF(ky,ky,S),zp(tF,n,T),eF(tF,tF,v),s>0&&(zp($i,r,T),zp(Xa,n,T),eF(nre,mke(nre,$i,Xa),h)),zp(KS,e,T),zp(hke,r,T),zp(rF,n,T),rre($i,KS,ky),uke(Xa,rF),qu(c,$i[0],$i[1],$i[2]),qu(u,Xa[0],Xa[1],Xa[2]),JO($i,KS,ky),qu(c,$i[0],$i[1],$i[2]),qu(u,Xa[0],Xa[1],Xa[2]),rre($i,KS,ky),dke(Xa,rF),qu(c,$i[0],$i[1],$i[2]),qu(u,Xa[0],Xa[1],Xa[2]),JO($i,KS,ky),qu(c,$i[0],$i[1],$i[2]),qu(u,Xa[0],Xa[1],Xa[2])}for(let b=0;bWl.fromGroup(e,{asSecondary:!0}),getLoci:Au,eachLocation:ku,setUpdateState:(e,r,n,o,i,a,s)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.tubularHelices!==n.tubularHelices||r.detail!==n.detail||r.linearSegments!==n.linearSegments||r.radialSegments!==n.radialSegments||r.aspectRatio!==n.aspectRatio||r.arrowFactor!==n.arrowFactor||r.helixProfile!==n.helixProfile||r.nucleicProfile!==n.nucleicProfile;let l=xs.get(a.structure).version;e.info.secondaryStructureHash!==l&&(e.info.secondaryStructureHash!==void 0&&(e.createGeometry=!0),e.info.secondaryStructureHash=l)}},t)}var are={"polymer-trace":(t,e)=>Dr("Polymer trace mesh",t,e,ire),"polymer-gap":(t,e)=>Dr("Polymer gap cylinder",t,e,Ob),"nucleotide-block":(t,e)=>Dr("Nucleotide block mesh",t,e,kte),"nucleotide-ring":(t,e)=>Dr("Nucleotide ring mesh",t,e,Fte),"nucleotide-atomic-ring-fill":(t,e)=>Dr("Nucleotide atomic ring fill",t,e,jte),"nucleotide-atomic-bond":(t,e)=>Dr("Nucleotide atomic bond",t,e,Hte),"nucleotide-atomic-element":(t,e)=>Dr("Nucleotide atomic element",t,e,qte),"direction-wedge":(t,e)=>Dr("Polymer direction wedge",t,e,$te)},sre=U(w(w(w(w(w(w(w(w({},nF),Ay),VO),zO),gE),yE),HO),XO),{sizeFactor:g.Numeric(.2,{min:0,max:10,step:.01}),visuals:g.MultiSelect(["polymer-trace","polymer-gap","nucleotide-ring","nucleotide-atomic-ring-fill","nucleotide-atomic-bond","nucleotide-atomic-element"],g.objectToOptions(are)),bumpFrequency:g.Numeric(2,{min:0,max:10,step:.1},ge.ShadingCategory),colorMode:g.Select("default",g.arrayToOptions(["default","interpolate"]),U(w({},ge.ShadingCategory),{isHidden:!0}))});function yke(t,e){let r=g.clone(sre),n=!1,o=!1;return e.units.forEach(i=>{!n&&Pe.isAtomic(i)&&i.nucleotideElements.length&&(n=!0),!o&&i.gapElements.length&&(o=!0)}),r.visuals.defaultValue=["polymer-trace"],n&&r.visuals.defaultValue.push("nucleotide-ring"),o&&r.visuals.defaultValue.push("polymer-gap"),r}function vke(t,e){return rt.createMulti("Cartoon",t,e,Qr,are)}var lre={name:"cartoon",label:"Cartoon",description:"Displays ribbons, planks, tubes smoothly following the trace atoms of polymers.",factory:vke,getParams:yke,defaultValues:g.getDefaultValues(sre),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uniform"},isApplicable:t=>t.polymerResidueCount>0,ensureCustomProperties:{attach:(t,e)=>N(void 0,null,function*(){yield xs.attach(t,e,void 0,!0);for(let r of e.models)yield HS.attach(t,r,void 0,!0)}),detach:t=>{xs.ref(t,!1);for(let e of t.models)HS.ref(e,!1)}}};var oF=U(w({},Gr),{sizeFactor:g.Numeric(1,{min:0,max:10,step:.1}),detail:g.Numeric(0,{min:0,max:3,step:1},ge.CustomQualityParamInfo),ignoreHydrogens:g.Boolean(!1)});function cre(t){return rn({defaultProps:g.getDefaultValues(oF),createGeometry:bke,createLocationIterator:jn.fromGroup,getLoci:Wi,eachLocation:qi,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.detail!==n.detail||r.ignoreHydrogens!==n.ignoreHydrogens}},t)}function bke(t,e,r,n,o,i){let{child:a}=r,s=a?.unitMap.get(e.id);if(a&&!s)return Be.createEmpty(i);let{detail:l,sizeFactor:c,ignoreHydrogens:u}=o,{elements:d,model:m}=e,{atomicNumber:p}=e.model.atomicHierarchy.derived.atom,h=d.length,f=h*Sd(l),b=Te.createState(f,f/2,i),v=hf.Provider.get(m);if(!v)return Be.createEmpty(i);let x=y(),S=Dt(),T=y(),E=y(),_=y(),{elementToAnsiotrop:D,data:P}=v,{U:A}=P,I=P._schema.U.space,k=e.conformation,M=z.Location.create(r);M.unit=e;for(let F=0;FDr("Ellipsoid Mesh",t,e,cre),"intra-bond":(t,e)=>Dr("Intra-unit bond cylinder",t,e,GP),"inter-bond":(t,e)=>_o("Inter-unit bond cylinder",t,e,jP)},dre=U(w(w(w({},oF),lb),cb),{includeParent:g.Boolean(!1),adjustCylinderLength:g.Boolean(!1,{isHidden:!0}),unitKinds:Ip(["atomic"]),sizeFactor:g.Numeric(1,{min:.01,max:10,step:.01}),sizeAspectRatio:g.Numeric(.1,{min:.01,max:3,step:.01}),linkCap:g.Boolean(!0),visuals:g.MultiSelect(["ellipsoid-mesh","intra-bond","inter-bond"],g.objectToOptions(ure)),bumpFrequency:g.Numeric(0,{min:0,max:10,step:.1},ge.ShadingCategory)});function xke(t,e){return dre}function Ske(t,e){return rt.createMulti("Ellipsoid",t,e,Qr,ure)}var mre={name:"ellipsoid",label:"Ellipsoid",description:"Displays anisotropic displacement ellipsoids of atomic elements plus bonds as cylinders.",factory:Ske,getParams:xke,defaultValues:g.getDefaultValues(dre),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:t=>t.elementCount>0&&t.models.some(e=>hf.Provider.isApplicable(e)),getData:(t,e)=>e.includeParent?t.asParent():t,mustRecreate:(t,e)=>t.includeParent!==e.includeParent};var pre=` +precision highp float; + +attribute vec3 aPosition; +attribute float aRadius; + +varying vec3 vPosition; +varying float vRadiusSqInv; + +#if defined(dCalcType_groupId) + attribute float aGroup; + varying float vGroup; +#endif + +uniform vec3 uBboxSize; +uniform vec3 uBboxMin; +uniform float uResolution; + +void main() { + vRadiusSqInv = 1.0 / (aRadius * aRadius); + #if defined(dCalcType_groupId) + vGroup = aGroup; + #endif + gl_PointSize = ceil(((aRadius * 3.0) / uResolution) + uResolution); + vPosition = (aPosition - uBboxMin) / uResolution; + gl_Position = vec4(((aPosition - uBboxMin) / uBboxSize) * 2.0 - 1.0, 1.0); +} +`;var fre=` +precision highp float; + +varying vec3 vPosition; +varying float vRadiusSqInv; +#if defined(dCalcType_groupId) + #if defined(dGridTexType_2d) + precision highp sampler2D; + uniform sampler2D tMinDistanceTex; + uniform vec3 uGridTexDim; + #elif defined(dGridTexType_3d) + precision highp sampler3D; + uniform sampler3D tMinDistanceTex; + #endif + varying float vGroup; +#endif + +#include common + +uniform vec3 uGridDim; +uniform vec2 uGridTexScale; +uniform float uCurrentSlice; +uniform float uCurrentX; +uniform float uCurrentY; +uniform float uAlpha; +uniform float uResolution; +uniform float uRadiusFactorInv; + +void main() { + vec2 v = gl_FragCoord.xy - vec2(uCurrentX, uCurrentY) - 0.5; + vec3 fragPos = vec3(v.x, v.y, uCurrentSlice); + float dist = distance(fragPos, vPosition) * uResolution; + + #if defined(dCalcType_density) + float density = exp(-uAlpha * ((dist * dist) * vRadiusSqInv)); + gl_FragColor.a = density * uRadiusFactorInv; + #elif defined(dCalcType_minDistance) + gl_FragColor.a = 1.0 - dist * uRadiusFactorInv; + #elif defined(dCalcType_groupId) + #if defined(dGridTexType_2d) + float minDistance = 1.0 - texture2D(tMinDistanceTex, (gl_FragCoord.xy) / (uGridTexDim.xy / uGridTexScale)).a; + #elif defined(dGridTexType_3d) + float minDistance = 1.0 - texelFetch(tMinDistanceTex, ivec3(gl_FragCoord.xy, uCurrentSlice), 0).a; + #endif + if (dist * uRadiusFactorInv > minDistance + uResolution * 0.05) + discard; + gl_FragColor.rgb = packIntToRGB(vGroup); + #endif +} +`;var Cke={drawCount:Mr("number"),instanceCount:Mr("number"),aRadius:hr("float32",1,0),aPosition:hr("float32",3,0),aGroup:hr("float32",1,0),uCurrentSlice:ee("f"),uCurrentX:ee("f"),uCurrentY:ee("f"),uBboxMin:ee("v3","material"),uBboxSize:ee("v3","material"),uGridDim:ee("v3","material"),uGridTexDim:ee("v3","material"),uGridTexScale:ee("v2","material"),uAlpha:ee("f","material"),uResolution:ee("f","material"),uRadiusFactorInv:ee("f","material"),tMinDistanceTex:We("texture","rgba","float","nearest","material"),dGridTexType:Ye("string",["2d","3d"]),dCalcType:Ye("string",["density","minDistance","groupId"])},Gm="gaussian-density";function hre(t){return t.namedFramebuffers[Gm]||(t.namedFramebuffers[Gm]=t.resources.framebuffer()),t.namedFramebuffers[Gm]}function gre(t,e,r,n,o,i){let a=`${Gm}-${t}`;return e.namedTextures[a]||(e.namedTextures[a]=e.resources.texture(r,n,o,i)),e.namedTextures[a]}function iF(t,e,r,n,o,i){return t.isWebGL2?Tke(t,e,r,n,o,i):CE(t,e,r,n,!1,o,i)}function CE(t,e,r,n,o,i,a){Ee&&t.timer.mark("GaussianDensityTexture2d");let s=_ke(t,e,r,n,o,i,a);return Ee&&t.timer.markEnd("GaussianDensityTexture2d"),yre(s)}function Tke(t,e,r,n,o,i){Ee&&t.timer.mark("GaussianDensityTexture3d");let a=Pke(t,e,r,n,o,i);return Ee&&t.timer.markEnd("GaussianDensityTexture3d"),yre(a)}function yre({texture:t,scale:e,bbox:r,gridDim:n,gridTexDim:o,gridTexScale:i,radiusFactor:a,resolution:s,maxRadius:l}){return{transform:wke(e,r),texture:t,bbox:r,gridDim:n,gridTexDim:o,gridTexScale:i,radiusFactor:a,resolution:s,maxRadius:l}}function wke(t,e){let r=W.identity();return W.fromScaling(r,t),W.setTranslation(r,e.min),r}function _ke(t,e,r,n,o,i,a){let{gl:s,resources:l,state:c,extensions:{colorBufferFloat:u,textureFloat:d,colorBufferHalfFloat:m,textureHalfFloat:p,blendMinMax:h}}=t,{smoothness:f,resolution:b}=i,{drawCount:v,positions:x,radii:S,groups:T,scale:E,expandedBox:_,dim:D,maxRadius:P}=vre(e,r,n,i),[A,I,k]=D,{texDimX:M,texDimY:R,texCols:B,powerOfTwoSize:F}=Ike(D),G=y.create(M,R,0),V=ne.create(M/F,R/F),H=P*2,Q=o?F:M,L=o?F:R,Y=gre("min-dist-2d",t,"image-uint8","rgba","ubyte","nearest");Y.define(Q,L);let j=bre(t,v,x,S,T,Y,_,D,G,V,f,b,H),{uCurrentSlice:O,uCurrentX:J,uCurrentY:$}=j.values,ae=hre(t);ae.bind(),xre(t),a||(a=m&&p?l.texture("image-float16","rgba","fp16","linear"):u&&d?l.texture("image-float32","rgba","float","linear"):l.texture("image-uint8","rgba","ubyte","linear")),a.define(Q,L);function Z(se,Me){c.currentRenderItemId=-1,se.attachFramebuffer(ae,0),Me&&(c.viewport(0,0,Q,L),c.scissor(0,0,Q,L),s.clear(s.COLOR_BUFFER_BIT)),C.update($,0);let be=0,_e=0,je=0;for(let gt=0;gt=B&&(be-=B,_e+=I,je=0,C.update($,_e)),C.update(J,je),C.update(O,gt),c.viewport(je,_e,A,I),c.scissor(je,_e,A,I),j.render(),++be,je+=A;s.flush()}return Cre(t,j),Z(a,!0),h&&(Sre(t,j),Z(Y,!0),Tre(t,j),Z(a,!1)),{texture:a,scale:E,bbox:_,gridDim:D,gridTexDim:G,gridTexScale:V,radiusFactor:H,resolution:b,maxRadius:P}}function Pke(t,e,r,n,o,i){let{gl:a,resources:s,state:l,extensions:{colorBufferFloat:c,textureFloat:u,colorBufferHalfFloat:d,textureHalfFloat:m}}=t,{smoothness:p,resolution:h}=o,{drawCount:f,positions:b,radii:v,groups:x,scale:S,expandedBox:T,dim:E,maxRadius:_}=vre(e,r,n,o),[D,P,A]=E,I=gre("min-dist-3d",t,"volume-uint8","rgba","ubyte","nearest");I.define(D,P,A);let k=ne.create(1,1),M=_*2,R=bre(t,f,b,v,x,I,T,E,E,k,p,h,M),{uCurrentSlice:B}=R.values,F=hre(t);F.bind(),xre(t),l.viewport(0,0,D,P),l.scissor(0,0,D,P),i||(i=d&&m?s.texture("volume-float16","rgba","fp16","linear"):c&&u?s.texture("volume-float32","rgba","float","linear"):s.texture("volume-uint8","rgba","ubyte","linear")),i.define(D,P,A);function G(V,H){l.currentRenderItemId=-1;for(let Q=0;Q0?"3d":"2d"),C.updateIfChanged(h.dCalcType,"density"),t.namedComputeRenderables[Gm].update()}else t.namedComputeRenderables[Gm]=Eke(t,e,r,n,o,i,a,s,l,c,u,d,m);return t.namedComputeRenderables[Gm]}function Eke(t,e,r,n,o,i,a,s,l,c,u,d,m){let p=y.sub(y(),a.max,a.min),h={drawCount:C.create(e),instanceCount:C.create(1),aRadius:C.create(n),aPosition:C.create(r),aGroup:C.create(o),uCurrentSlice:C.create(0),uCurrentX:C.create(0),uCurrentY:C.create(0),uBboxMin:C.create(a.min),uBboxSize:C.create(p),uGridDim:C.create(s),uGridTexDim:C.create(l),uGridTexScale:C.create(c),uAlpha:C.create(u),uResolution:C.create(d),uRadiusFactorInv:C.create(1/m),tMinDistanceTex:C.create(i),dGridTexType:C.create(i.getDepth()>0?"3d":"2d"),dCalcType:C.create("density")},f=w({},Cke),b=Qt(Gm,pre,fre),v=dr(t,"points",b,f,h);return mr(v,h)}function xre(t){let{gl:e,state:r}=t;r.disable(e.CULL_FACE),r.enable(e.BLEND),r.disable(e.DEPTH_TEST),r.enable(e.SCISSOR_TEST),r.depthMask(!1),r.clearColor(0,0,0,0)}function Sre(t,e){let{gl:r,state:n}=t;if(C.update(e.values.dCalcType,"minDistance"),e.update(),n.colorMask(!1,!1,!1,!0),n.blendFunc(r.ONE,r.ONE),!t.extensions.blendMinMax)throw new Error("GPU gaussian surface calculation requires EXT_blend_minmax");n.blendEquation(t.extensions.blendMinMax.MAX)}function Cre(t,e){let{gl:r,state:n}=t;C.update(e.values.dCalcType,"density"),e.update(),n.colorMask(!1,!1,!1,!0),n.blendFunc(r.ONE,r.ONE),n.blendEquation(r.FUNC_ADD)}function Tre(t,e){let{gl:r,state:n}=t;C.update(e.values.dCalcType,"groupId"),e.update(),n.colorMask(!0,!0,!0,!1),n.blendFunc(r.ONE,r.ZERO),n.blendEquation(r.FUNC_ADD)}function Ike(t){let e=t[0]*t[1]*t[2],r=Math.sqrt(e),n=Math.pow(2,Math.ceil(Math.log(r)/Math.log(2))),o=0,i=t[1],a=1,s=t[2];return nL[Ii]&&(L[Ii]=bn,A[Ii]=p?p[se]:se)}}}}}}function J(){return N(this,null,function*(){for(let ae=0;aeN(this,null,function*(){return yield aF(l,o,i.box,a,s)}))}function _re(t,e,r,n,o,i){let{position:a,boundary:s,radius:l}=Uv(t,e,r,n),c=_m(s.box,n,wre(o,t));return ie.create("Gaussian Density",u=>N(this,null,function*(){return iF(o,a,s.box,l,c,i)}))}function Pre(t,e,r,n,o,i,a){let{position:s,boundary:l,radius:c}=Uv(t,e,r,o),u=_m(l.box,o,wre(i,t));return ie.create("Gaussian Density",d=>N(this,null,function*(){return CE(i,s,l.box,c,n,u,a)}))}function Ere(t,e,r){let{position:n,boundary:o,radius:i}=Gv(t,e,r),a=_m(o.box,r);return ie.create("Gaussian Density",s=>N(this,null,function*(){return yield aF(s,n,o.box,i,a)}))}function Ire(t,e,r,n,o){let{position:i,boundary:a,radius:s}=Gv(t,e,r),l=_m(a.box,r);return ie.create("Gaussian Density",c=>N(this,null,function*(){return iF(n,i,a.box,s,l,o)}))}function Dre(t,e,r,n,o,i){let{box:a}=t.lookup3d.boundary,{position:s,boundary:l,radius:c}=Gv(t,e,n),u=_m(l.box,n);return ie.create("Gaussian Density",d=>N(this,null,function*(){return CE(o,s,a,c,r,u,i)}))}var Are=U(w(w({},Uh),YT),{ignoreHydrogens:g.Boolean(!1),ignoreHydrogensVariant:g.Select("all",g.arrayToOptions(["all","non-polar"])),tryUseGpu:g.Boolean(!0),includeParent:g.Boolean(!1,{isHidden:!0})}),wE=w(w(w({},Gr),bZ),Are),kre=w(w(w({},Tu),pZ),Are);function Mre(t){return t.extensions.colorBufferFloat&&t.extensions.textureFloat&&t.extensions.textureFloatLinear&&t.extensions.blendMinMax&&t.extensions.drawBuffers}function Gb(t,e,r){if(e.resolution>1)return!1;let n=r.maxTextureSize/3,{areaCells:o,maxAreaCells:i}=OL(t.boundary.box,e.resolution,n*n);return o{r.resolution!==n.resolution&&(e.createGeometry=!0),r.radiusOffset!==n.radiusOffset&&(e.createGeometry=!0),r.smoothness!==n.smoothness&&(e.createGeometry=!0),r.ignoreHydrogens!==n.ignoreHydrogens&&(e.createGeometry=!0),r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant&&(e.createGeometry=!0),r.traceOnly!==n.traceOnly&&(e.createGeometry=!0),r.includeParent!==n.includeParent&&(e.createGeometry=!0),r.smoothColors.name!==n.smoothColors.name?e.updateColor=!0:r.smoothColors.name==="on"&&n.smoothColors.name==="on"&&(r.smoothColors.params.resolutionFactor!==n.smoothColors.params.resolutionFactor&&(e.updateColor=!0),r.smoothColors.params.sampleStride!==n.smoothColors.params.sampleStride&&(e.updateColor=!0))},mustRecreate:(e,r,n)=>r.tryUseGpu&&!!n&&Gb(e.structure,r,n),processValues:(e,r,n,o,i)=>{let{resolution:a,colorTexture:s}=r.meta,l=os(n.smoothColors,o.color.preferSmoothing,a);l&&(dv(e,l.resolution,l.stride,i,s),r.meta.colorTexture=e.tColorGrid.ref.value)},dispose:e=>{var r;(r=e.meta.colorTexture)===null||r===void 0||r.destroy()}},t)}function kke(t,e,r,n,o){return N(this,null,function*(){let{smoothness:i}=n,{transform:a,field:s,idField:l,radiusFactor:c,resolution:u,maxRadius:d}=yield Ere(e,r.size,n).runInContext(t.runtime),m={isoLevel:Math.exp(-i)/c,scalarField:s,idField:l},p=yield ym(m,o).runAsChild(t.runtime);p.meta.resolution=u,Be.transform(p,a),t.webgl&&!t.webgl.isWebGL2?(Be.uniformTriangleGroup(p),C.updateIfChanged(p.varyingGroup,!1)):C.updateIfChanged(p.varyingGroup,!0);let h=te.expand(te(),e.boundary.sphere,d);return p.setBoundingSphere(h),p})}function Mke(t){return Va({defaultProps:g.getDefaultValues(kre),createGeometry:kke,createLocationIterator:jn.fromStructure,getLoci:Du,eachLocation:Iu,setUpdateState:(e,r,n)=>{r.resolution!==n.resolution&&(e.createGeometry=!0),r.radiusOffset!==n.radiusOffset&&(e.createGeometry=!0),r.smoothness!==n.smoothness&&(e.createGeometry=!0),r.ignoreHydrogens!==n.ignoreHydrogens&&(e.createGeometry=!0),r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant&&(e.createGeometry=!0),r.traceOnly!==n.traceOnly&&(e.createGeometry=!0),r.smoothColors.name!==n.smoothColors.name?e.updateColor=!0:r.smoothColors.name==="on"&&n.smoothColors.name==="on"&&(r.smoothColors.params.resolutionFactor!==n.smoothColors.params.resolutionFactor&&(e.updateColor=!0),r.smoothColors.params.sampleStride!==n.smoothColors.params.sampleStride&&(e.updateColor=!0))},mustRecreate:(e,r,n)=>r.tryUseGpu&&!!n&&Gb(e,r,n),processValues:(e,r,n,o,i)=>{let{resolution:a,colorTexture:s}=r.meta,l=os(n.smoothColors,o.color.preferSmoothing,a);l&&(dv(e,l.resolution,l.stride,i,s),r.meta.colorTexture=e.tColorGrid.ref.value)},dispose:e=>{var r;(r=e.meta.colorTexture)===null||r===void 0||r.destroy()}},t)}var Ub="gaussian-surface";function Rke(t,e,r,n,o,i){return N(this,null,function*(){if(!t.webgl)throw new Error("webgl context required to create gaussian surface texture-mesh");Ee&&t.webgl.timer.mark("createGaussianSurfaceTextureMesh");let{namedTextures:a,resources:s,extensions:{colorBufferFloat:l,textureFloat:c,colorBufferHalfFloat:u,textureHalfFloat:d}}=t.webgl;a[Ub]||(a[Ub]=u&&d?s.texture("image-float16","rgba","fp16","linear"):l&&c?s.texture("image-float32","rgba","float","linear"):s.texture("image-uint8","rgba","ubyte","linear"));let m=yield Pre(r,e,n.size,!0,o,t.webgl,a[Ub]).runInContext(t.runtime),p=Math.exp(-o.smoothness)/m.radiusFactor,h=y.create(0,1,2),f=i?.doubleBuffer.get(),b=ey(t.webgl,m.texture,m.gridDim,m.gridTexDim,m.gridTexScale,m.transform,p,!1,!0,h,!0,f?.vertex,f?.group,f?.normal);Ee&&t.webgl.timer.markEnd("createGaussianSurfaceTextureMesh");let v=e.elements.length,x=te.expand(te(),e.boundary.sphere,m.maxRadius),S=Ko.create(b.vertexCount,v,b.vertexTexture,b.groupTexture,b.normalTexture,x,i);return S.meta.resolution=m.resolution,S.meta.webgl=t.webgl,S})}function Lke(t){return xZ({defaultProps:g.getDefaultValues(wE),createGeometry:Rke,createLocationIterator:jn.fromGroup,getLoci:Wi,eachLocation:qi,setUpdateState:(e,r,n)=>{r.resolution!==n.resolution&&(e.createGeometry=!0),r.radiusOffset!==n.radiusOffset&&(e.createGeometry=!0),r.smoothness!==n.smoothness&&(e.createGeometry=!0),r.ignoreHydrogens!==n.ignoreHydrogens&&(e.createGeometry=!0),r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant&&(e.createGeometry=!0),r.traceOnly!==n.traceOnly&&(e.createGeometry=!0),r.includeParent!==n.includeParent&&(e.createGeometry=!0),r.smoothColors.name!==n.smoothColors.name?e.updateColor=!0:r.smoothColors.name==="on"&&n.smoothColors.name==="on"&&(r.smoothColors.params.resolutionFactor!==n.smoothColors.params.resolutionFactor&&(e.updateColor=!0),r.smoothColors.params.sampleStride!==n.smoothColors.params.sampleStride&&(e.updateColor=!0))},mustRecreate:(e,r,n)=>!r.tryUseGpu||!n||!Gb(e.structure,r,n),processValues:(e,r,n,o,i)=>{let{resolution:a,colorTexture:s}=r.meta,l=os(n.smoothColors,o.color.preferSmoothing,a);l&&i&&(n3(e,l.resolution,l.stride,i,s),r.meta.colorTexture=e.tColorGrid.ref.value)},dispose:e=>{var r;e.vertexTexture.ref.value.destroy(),e.groupTexture.ref.value.destroy(),e.normalTexture.ref.value.destroy(),e.doubleBuffer.destroy(),(r=e.meta.colorTexture)===null||r===void 0||r.destroy()}},t)}function Bke(t,e,r,n,o){return N(this,null,function*(){if(!t.webgl)throw new Error("webgl context required to create structure gaussian surface texture-mesh");Ee&&t.webgl.timer.mark("createStructureGaussianSurfaceTextureMesh");let{namedTextures:i,resources:a,extensions:{colorBufferFloat:s,textureFloat:l,colorBufferHalfFloat:c,textureHalfFloat:u}}=t.webgl;i[Ub]||(i[Ub]=c&&u?a.texture("image-float16","rgba","fp16","linear"):s&&l?a.texture("image-float32","rgba","float","linear"):a.texture("image-uint8","rgba","ubyte","linear"));let d=yield Dre(e,r.size,!0,n,t.webgl,i[Ub]).runInContext(t.runtime),m=Math.exp(-n.smoothness)/d.radiusFactor,p=y.create(0,1,2),h=o?.doubleBuffer.get(),f=ey(t.webgl,d.texture,d.gridDim,d.gridTexDim,d.gridTexScale,d.transform,m,!1,!0,p,!0,h?.vertex,h?.group,h?.normal);Ee&&t.webgl.timer.markEnd("createStructureGaussianSurfaceTextureMesh");let b=e.elementCount,v=te.expand(te(),e.boundary.sphere,d.maxRadius),x=Ko.create(f.vertexCount,b,f.vertexTexture,f.groupTexture,f.normalTexture,v,o);return x.meta.resolution=d.resolution,x.meta.webgl=t.webgl,x})}function Oke(t){return fZ({defaultProps:g.getDefaultValues(kre),createGeometry:Bke,createLocationIterator:jn.fromStructure,getLoci:Du,eachLocation:Iu,setUpdateState:(e,r,n)=>{r.resolution!==n.resolution&&(e.createGeometry=!0),r.radiusOffset!==n.radiusOffset&&(e.createGeometry=!0),r.smoothness!==n.smoothness&&(e.createGeometry=!0),r.ignoreHydrogens!==n.ignoreHydrogens&&(e.createGeometry=!0),r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant&&(e.createGeometry=!0),r.traceOnly!==n.traceOnly&&(e.createGeometry=!0),r.includeParent!==n.includeParent&&(e.createGeometry=!0),r.smoothColors.name!==n.smoothColors.name?e.updateColor=!0:r.smoothColors.name==="on"&&n.smoothColors.name==="on"&&(r.smoothColors.params.resolutionFactor!==n.smoothColors.params.resolutionFactor&&(e.updateColor=!0),r.smoothColors.params.sampleStride!==n.smoothColors.params.sampleStride&&(e.updateColor=!0))},mustRecreate:(e,r,n)=>!r.tryUseGpu||!n||!Gb(e,r,n),processValues:(e,r,n,o,i)=>{let{resolution:a,colorTexture:s}=r.meta,l=os(n.smoothColors,o.color.preferSmoothing,a);l&&i&&(n3(e,l.resolution,l.stride,i,s),r.meta.colorTexture=e.tColorGrid.ref.value)},dispose:e=>{var r;e.vertexTexture.ref.value.destroy(),e.groupTexture.ref.value.destroy(),e.normalTexture.ref.value.destroy(),e.doubleBuffer.destroy(),(r=e.meta.colorTexture)===null||r===void 0||r.destroy()}},t)}function Fke(t,e,r,n,o,i){return N(this,null,function*(){let{smoothness:a}=o,{transform:s,field:l,idField:c,maxRadius:u}=yield TE(r,e,n.size,o).runInContext(t.runtime),d={isoLevel:Math.exp(-a),scalarField:l,idField:c},m=yield wv(d,i).runAsChild(t.runtime);Sr.transform(m,s);let p=te.expand(te(),e.boundary.sphere,u);return m.setBoundingSphere(p),m})}var sF=U(w(w({},bh),Uh),{sizeFactor:g.Numeric(3,{min:0,max:10,step:.1}),lineSizeAttenuation:g.Boolean(!1),ignoreHydrogens:g.Boolean(!1),ignoreHydrogensVariant:g.Select("all",g.arrayToOptions(["all","non-polar"])),includeParent:g.Boolean(!1,{isHidden:!0})});function Bre(t){return xh({defaultProps:g.getDefaultValues(sF),createGeometry:Fke,createLocationIterator:jn.fromGroup,getLoci:Wi,eachLocation:qi,setUpdateState:(e,r,n)=>{r.resolution!==n.resolution&&(e.createGeometry=!0),r.radiusOffset!==n.radiusOffset&&(e.createGeometry=!0),r.smoothness!==n.smoothness&&(e.createGeometry=!0),r.ignoreHydrogens!==n.ignoreHydrogens&&(e.createGeometry=!0),r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant&&(e.createGeometry=!0),r.traceOnly!==n.traceOnly&&(e.createGeometry=!0),r.includeParent!==n.includeParent&&(e.createGeometry=!0)}},t)}var Ore={"gaussian-surface-mesh":(t,e)=>Dr("Gaussian surface mesh",t,e,Rre),"structure-gaussian-surface-mesh":(t,e)=>_o("Structure-Gaussian surface mesh",t,e,Lre),"gaussian-surface-wireframe":(t,e)=>Dr("Gaussian surface wireframe",t,e,Bre)},Fre=U(w(w({},wE),sF),{visuals:g.MultiSelect(["gaussian-surface-mesh"],g.objectToOptions(Ore)),bumpFrequency:g.Numeric(1,{min:0,max:10,step:.1},ge.ShadingCategory)});function Nke(t,e){return Fre}function Vke(t,e){return rt.createMulti("Gaussian Surface",t,e,Qr,Ore)}var Nre={name:"gaussian-surface",label:"Gaussian Surface",description:"Displays a gaussian molecular surface.",factory:Vke,getParams:Nke,defaultValues:g.getDefaultValues(Fre),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"physical"},isApplicable:t=>t.elementCount>0};var lF=U(w({},cZ),{background:g.Boolean(!1),backgroundMargin:g.Numeric(0,{min:0,max:1,step:.01}),backgroundColor:g.Color(ut.black),backgroundOpacity:g.Numeric(.5,{min:0,max:1,step:.01}),borderWidth:g.Numeric(.25,{min:0,max:.5,step:.01}),level:g.Select("residue",[["chain","Chain"],["residue","Residue"],["element","Element"]],{isEssential:!0}),ignoreHydrogens:g.Boolean(!1),ignoreHydrogensVariant:g.Select("all",g.arrayToOptions(["all","non-polar"])),chainScale:g.Numeric(10,{min:0,max:20,step:.1}),residueScale:g.Numeric(1,{min:0,max:20,step:.1}),elementScale:g.Numeric(.5,{min:0,max:20,step:.1})});function Vre(t){return uZ({defaultProps:g.getDefaultValues(lF),createGeometry:zke,createLocationIterator:jn.fromStructure,getLoci:Du,eachLocation:Iu,setUpdateState:(e,r,n)=>{e.createGeometry=r.level!==n.level||r.level==="chain"&&r.chainScale!==n.chainScale||r.level==="residue"&&r.residueScale!==n.residueScale||r.level==="element"&&r.elementScale!==n.elementScale||r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant}},t)}function zke(t,e,r,n,o){switch(n.level){case"chain":return Uke(t,e,r,n,o);case"residue":return Gke(t,e,r,n,o);case"element":return jke(t,e,r,n,o)}}var Wu=y(),$S=new Zs("98");function Uke(t,e,r,n,o){let i=z.Location.create(e),{units:a,serialMapping:s}=e,{auth_asym_id:l,label_asym_id:c}=Ne.chain,{cumulativeUnitElementCount:u}=s,d=a.length,{chainScale:m}=n,p=Is.create(n,d,d/2,o);for(let h=0,f=a.length;h_o("Label text",t,e,Vre)},Ure=U(w({},lF),{visuals:g.MultiSelect(["label-text"],g.objectToOptions(zre))});function Hke(t,e){return Ure}function qke(t,e){let r=rt.createMulti("Label",t,e,Qr,zre);return r.setState({pickable:!1,markerActions:tt.None}),r}var Gre={name:"label",label:"Label",description:"Displays labels.",factory:qke,getParams:Hke,defaultValues:g.getDefaultValues(Ure),defaultColorTheme:{name:"uniform"},defaultSizeTheme:{name:"physical"},isApplicable:t=>t.elementCount>0};function Wke(t,e){return t[0]=t[1]=t[2]=1,e[0]!==0?t[0]=(e[1]+e[2])/-e[0]:e[1]!==0?t[1]=(e[0]+e[2])/-e[1]:e[2]!==0&&(t[2]=(e[0]+e[1])/-e[2]),t}function Xke(t){let e=0,r=2*Math.PI/t,n=new Float32Array(t),o=new Float32Array(t);for(let i=0;i0&&vgN(this,null,function*(){return yield qre(l,o,i,a,i.box,s)}))}function Qke(t,e,r){let{probeRadius:n}=r,{position:o,boundary:i,radius:a}=Gv(t,e,r),{indices:s}=o,l=we.size(s),c=new Float32Array(we.end(s)),u=0;for(let d=0;dN(this,null,function*(){return yield qre(s,n,o,i,o.box,a)}))}function qre(t,e,r,n,o,i){return N(this,null,function*(){return jre(t,e,r,n,o,i)})}var PE=w(w(w(w({},Gr),ZS),dy),YT);function Kke(t,e,r,n,o,i){return N(this,null,function*(){let{transform:a,field:s,idField:l,resolution:c,maxRadius:u}=yield _E(r,e,n.size,o).runInContext(t.runtime),d={isoLevel:o.probeRadius,scalarField:s,idField:l},m=yield ym(d,i).runAsChild(t.runtime);if(o.includeParent){let h=Math.ceil(2/o.resolution);Be.smoothEdges(m,{iterations:h,maxNewEdgeLength:Math.sqrt(2)})}Be.transform(m,a),t.webgl&&!t.webgl.isWebGL2?(Be.uniformTriangleGroup(m),C.updateIfChanged(m.varyingGroup,!1)):C.updateIfChanged(m.varyingGroup,!0);let p=te.expand(te(),e.boundary.sphere,u);return m.setBoundingSphere(p),m.meta.resolution=c,m})}function Wre(t){return rn({defaultProps:g.getDefaultValues(PE),createGeometry:Kke,createLocationIterator:jn.fromGroup,getLoci:Wi,eachLocation:qi,setUpdateState:(e,r,n)=>{r.resolution!==n.resolution&&(e.createGeometry=!0),r.probeRadius!==n.probeRadius&&(e.createGeometry=!0),r.probePositions!==n.probePositions&&(e.createGeometry=!0),r.ignoreHydrogens!==n.ignoreHydrogens&&(e.createGeometry=!0),r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant&&(e.createGeometry=!0),r.traceOnly!==n.traceOnly&&(e.createGeometry=!0),r.includeParent!==n.includeParent&&(e.createGeometry=!0),r.smoothColors.name!==n.smoothColors.name?e.updateColor=!0:r.smoothColors.name==="on"&&n.smoothColors.name==="on"&&(r.smoothColors.params.resolutionFactor!==n.smoothColors.params.resolutionFactor&&(e.updateColor=!0),r.smoothColors.params.sampleStride!==n.smoothColors.params.sampleStride&&(e.updateColor=!0))},processValues:(e,r,n,o,i)=>{let{resolution:a,colorTexture:s}=r.meta,l=os(n.smoothColors,o.color.preferSmoothing,a);l&&(dv(e,l.resolution,l.stride,i,s),r.meta.colorTexture=e.tColorGrid.ref.value)},dispose:e=>{var r;(r=e.meta.colorTexture)===null||r===void 0||r.destroy()}},t)}function $ke(t,e,r,n,o){return N(this,null,function*(){let{transform:i,field:a,idField:s,resolution:l,maxRadius:c}=yield Hre(e,r.size,n).runInContext(t.runtime),u={isoLevel:n.probeRadius,scalarField:a,idField:s},d=yield ym(u,o).runAsChild(t.runtime);if(n.includeParent){let p=Math.ceil(2/n.resolution);Be.smoothEdges(d,{iterations:p,maxNewEdgeLength:Math.sqrt(2)})}Be.transform(d,i),t.webgl&&!t.webgl.isWebGL2?(Be.uniformTriangleGroup(d),C.updateIfChanged(d.varyingGroup,!1)):C.updateIfChanged(d.varyingGroup,!0);let m=te.expand(te(),e.boundary.sphere,c);return d.setBoundingSphere(m),d.meta.resolution=l,d})}function Xre(t){return Va({defaultProps:g.getDefaultValues(PE),createGeometry:$ke,createLocationIterator:jn.fromStructure,getLoci:Du,eachLocation:Iu,setUpdateState:(e,r,n)=>{r.resolution!==n.resolution&&(e.createGeometry=!0),r.probeRadius!==n.probeRadius&&(e.createGeometry=!0),r.probePositions!==n.probePositions&&(e.createGeometry=!0),r.ignoreHydrogens!==n.ignoreHydrogens&&(e.createGeometry=!0),r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant&&(e.createGeometry=!0),r.traceOnly!==n.traceOnly&&(e.createGeometry=!0),r.includeParent!==n.includeParent&&(e.createGeometry=!0),r.smoothColors.name!==n.smoothColors.name?e.updateColor=!0:r.smoothColors.name==="on"&&n.smoothColors.name==="on"&&(r.smoothColors.params.resolutionFactor!==n.smoothColors.params.resolutionFactor&&(e.updateColor=!0),r.smoothColors.params.sampleStride!==n.smoothColors.params.sampleStride&&(e.updateColor=!0))},processValues:(e,r,n,o,i)=>{let{resolution:a,colorTexture:s}=r.meta,l=os(n.smoothColors,o.color.preferSmoothing,a);l&&(dv(e,l.resolution,l.stride,i,s),r.meta.colorTexture=e.tColorGrid.ref.value)},dispose:e=>{var r;(r=e.meta.colorTexture)===null||r===void 0||r.destroy()}},t)}var cF=U(w(w(w({},bh),ZS),dy),{sizeFactor:g.Numeric(1.5,{min:0,max:10,step:.1})});function Zke(t,e,r,n,o,i){return N(this,null,function*(){let{transform:a,field:s,idField:l,maxRadius:c}=yield _E(r,e,n.size,o).runInContext(t.runtime),u={isoLevel:o.probeRadius,scalarField:s,idField:l},d=yield wv(u,i).runAsChild(t.runtime);Sr.transform(d,a);let m=te.expand(te(),e.boundary.sphere,c);return d.setBoundingSphere(m),d})}function Yre(t){return xh({defaultProps:g.getDefaultValues(cF),createGeometry:Zke,createLocationIterator:jn.fromGroup,getLoci:Wi,eachLocation:qi,setUpdateState:(e,r,n)=>{r.resolution!==n.resolution&&(e.createGeometry=!0),r.probeRadius!==n.probeRadius&&(e.createGeometry=!0),r.probePositions!==n.probePositions&&(e.createGeometry=!0),r.ignoreHydrogens!==n.ignoreHydrogens&&(e.createGeometry=!0),r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant&&(e.createGeometry=!0),r.includeParent!==n.includeParent&&(e.createGeometry=!0)}},t)}var Qre={"molecular-surface-mesh":(t,e)=>Dr("Molecular surface mesh",t,e,Wre),"structure-molecular-surface-mesh":(t,e)=>_o("Structure Molecular surface mesh",t,e,Xre),"molecular-surface-wireframe":(t,e)=>Dr("Molecular surface wireframe",t,e,Yre)},Kre=U(w(w({},PE),cF),{visuals:g.MultiSelect(["molecular-surface-mesh"],g.objectToOptions(Qre)),bumpFrequency:g.Numeric(1,{min:0,max:10,step:.1},ge.ShadingCategory)});function Jke(t,e){return Kre}function eMe(t,e){return rt.createMulti("Molecular Surface",t,e,Qr,Qre)}var $re={name:"molecular-surface",label:"Molecular Surface",description:"Displays a molecular surface.",factory:eMe,getParams:Jke,defaultValues:g.getDefaultValues(Kre),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"physical"},isApplicable:t=>t.elementCount>0};var uF=U(w({},Gr),{sizeFactor:g.Numeric(1,{min:0,max:2,step:.1}),detail:g.Numeric(0,{min:0,max:3,step:1},ge.CustomQualityParamInfo)});function Zre(t){return rn({defaultProps:g.getDefaultValues(uF),createGeometry:rMe,createLocationIterator:nMe,getLoci:oMe,eachLocation:iMe,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.detail!==n.detail}},t)}function tMe(t){if(Pe.Traits.is(t.traits,Pe.Trait.MultiChain)||Pe.Traits.is(t.traits,Pe.Trait.Partitioned))return!1;if(Pe.isCoarse(t))return!0;if(t.elements.length===0)return!1;t.model.atomicHierarchy.derived.residue.moleculeType;let e=t.residueIndex[t.elements[0]],r=t.model.atomicHierarchy.derived.residue.moleculeType[e];return!(r===3||r===2)}function rMe(t,e,r,n,o,i){if(!tMe(e))return Be.createEmpty(i);let{detail:a,sizeFactor:s}=o,l=256,c=Te.createState(l,l/2,i),u=e.principalAxes.boxAxes,{origin:d,dirA:m,dirB:p}=u,h=Yc.size(y(),u);y.scale(h,h,s/2);let f=y.create(h[2],h[1],h[0]);c.currentGroup=0,Cv(c,d,m,p,f,a+1);let b=Te.getMesh(c),v=te.expand(te(),e.boundary.sphere,1*o.sizeFactor);return b.setBoundingSphere(v),b}function nMe(t){let{group:e,structure:r}=t,n=1,o=e.units.length,i=z.Location.create(r);return jt(n,o,1,(s,l)=>{let c=e.units[l];return i.unit=c,i.element=c.elements[s],i})}function oMe(t,e,r){let{objectId:n,instanceId:o}=t;if(r===n){let{structure:i,group:a}=e,s=a.units[o],l=we.ofBounds(0,s.elements.length);return z.Loci(i,[{unit:s,indices:l}])}return St}function iMe(t,e,r){let n=!1;if(!z.Loci.is(t))return!1;let{structure:o,group:i}=e;if(!ue.areEquivalent(t.structure,o))return!1;let a=i.elements.length;for(let s of t.elements){let l=i.unitIndexMap.get(s.unit.id);l!==void 0&&we.size(s.indices)===a&&r(Oe.ofSingleton(l))&&(n=!0)}return n}var Jre={"orientation-ellipsoid-mesh":(t,e)=>Dr("Orientation ellipsoid mesh",t,e,Zre)},ene=U(w({},uF),{visuals:g.MultiSelect(["orientation-ellipsoid-mesh"],g.objectToOptions(Jre)),bumpFrequency:g.Numeric(1,{min:0,max:10,step:.1},ge.ShadingCategory)});function aMe(t,e){return ene}function sMe(t,e){return rt.createMulti("Orientation",t,e,Qr,Jre)}var tne={name:"orientation",label:"Orientation",description:"Displays orientation ellipsoids for polymer chains.",factory:sMe,getParams:aMe,defaultValues:g.getDefaultValues(ene),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uniform"},isApplicable:t=>t.elementCount>0};var lMe=he.add3,cMe=he.add,EE;(function(t){function e(r=2048,n=1024,o){let i=he.create(Float32Array,3,n,o?o.centerBuffer.ref.value:r),a=he.create(Float32Array,1,n,o?o.groupBuffer.ref.value:r);return{add:(s,l,c,u)=>{lMe(i,s,l,c),cMe(a,u)},getPoints:()=>{let s=he.compact(i,!0),l=he.compact(a,!0);return Il.create(s,l,i.elementCount,o)}}}t.create=e})(EE||(EE={}));var rne=y.add,JS=U(w({},hZ),{pointSizeAttenuation:g.Boolean(!1),ignoreHydrogens:g.Boolean(!1),ignoreHydrogensVariant:g.Select("all",g.arrayToOptions(["all","non-polar"])),traceOnly:g.Boolean(!1),stride:g.Numeric(1,{min:1,max:100,step:1})});function uMe(t,e,r,n,o,i){let{child:a}=r;if(a&&!a.unitMap.get(e.id))return Il.createEmpty(i);let s=e.elements,l=s.length,c=EE.create(l,l/10,i),u=y(),d=e.conformation,m=Mm(r,e,o),p=y(),h=0;if(m)for(let x=0;x{e.createGeometry=r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant||r.traceOnly!==n.traceOnly||r.stride!==n.stride}},t)}var dMe={"element-point":(t,e)=>Dr("Points",t,e,IE)},nne=w({},JS);function mMe(t,e){return nne}function pMe(t,e){return rt.createMulti("Point",t,e,Qr,dMe)}var one={name:"point",label:"Point",description:"Displays elements (atoms, coarse spheres) as points.",factory:pMe,getParams:mMe,defaultValues:g.getDefaultValues(nne),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:t=>t.elementCount>0};var ine={sizeFactor:g.Numeric(.2,{min:0,max:10,step:.01}),detail:g.Numeric(0,{min:0,max:3,step:1},ge.CustomQualityParamInfo),linearSegments:g.Numeric(8,{min:1,max:48,step:1},ge.CustomQualityParamInfo),radialSegments:g.Numeric(16,{min:2,max:56,step:2},ge.CustomQualityParamInfo)},YXt=g.getDefaultValues(ine),Kl=y();function fMe(t,e,r,n,o,i){let a=e.polymerElements.length;if(!a)return Be.createEmpty(i);let{sizeFactor:s,detail:l,linearSegments:c,radialSegments:u}=o,d=c*u*a+(u+1)*a*2,m=Te.createState(d,d/10,i),p=gb(c),{curvePoints:h,normalVectors:f,binormalVectors:b,widthValues:v,heightValues:x}=p,S=0,T=mb(e,r,{ignoreSecondaryStructure:!0});for(;T.hasNext;){let D=T.move();m.currentGroup=S;let A=Yo(D.moleculeType)?Py:_y;yb(p,D,$P,A);let I=D.coarseBackboneFirst||D.first,k=D.coarseBackboneLast||D.last,M=n.size.size(D.centerPrev)*s,R=n.size.size(D.center)*s,B=n.size.size(D.centerNext)*s;WS(p,M,R,B,M,R,B,A);let F=c;if(D.initial){F=Math.max(Math.round(c*A),1);let G=c-F;h.copyWithin(0,G*3),b.copyWithin(0,G*3),f.copyWithin(0,G*3),v.copyWithin(0,G*3),x.copyWithin(0,G*3),y.fromArray(Kl,h,3),y.normalize(Kl,y.sub(Kl,D.p2,Kl)),y.scaleAndAdd(Kl,D.p2,Kl,R*vb),y.toArray(Kl,h,0)}else D.final&&(F=Math.max(Math.round(c*(1-A)),1),y.fromArray(Kl,h,F*3-3),y.normalize(Kl,y.sub(Kl,D.p2,Kl)),y.scaleAndAdd(Kl,D.p2,Kl,R*vb),y.toArray(Kl,h,F*3));D.initial===!0&&D.final===!0?Jt(m,D.p2,R*2,l):u===2?zb(m,h,f,b,F,v,x,0):u===4?Nb(m,h,f,b,F,v,x,0,I,k):QS(m,h,f,b,F,u,v,x,I,k,"elliptical"),++S}let E=Te.getMesh(m),_=te.expand(te(),e.boundary.sphere,1*o.sizeFactor);return E.setBoundingSphere(_),E}var dF=w(w({},Gr),ine);function ane(t){return rn({defaultProps:g.getDefaultValues(dF),createGeometry:fMe,createLocationIterator:e=>Wl.fromGroup(e,{asSecondary:!0}),getLoci:Au,eachLocation:ku,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.detail!==n.detail||r.linearSegments!==n.linearSegments||r.radialSegments!==n.radialSegments}},t)}var sne={"polymer-tube":(t,e)=>Dr("Polymer tube mesh",t,e,ane),"polymer-gap":(t,e)=>Dr("Polymer gap cylinder",t,e,Ob)},lne=U(w(w({},dF),Ay),{sizeFactor:g.Numeric(.2,{min:0,max:10,step:.01}),visuals:g.MultiSelect(["polymer-tube","polymer-gap"],g.objectToOptions(sne)),bumpFrequency:g.Numeric(2,{min:0,max:10,step:.1},ge.ShadingCategory)});function hMe(t,e){let r=g.clone(lne),n=!1,o=!1;return e.units.forEach(i=>{!n&&Pe.isAtomic(i)&&i.nucleotideElements.length&&(n=!0),!o&&i.gapElements.length&&(o=!0)}),r.visuals.defaultValue=["polymer-tube"],o&&r.visuals.defaultValue.push("polymer-gap"),r}function gMe(t,e){return rt.createMulti("Putty",t,e,Qr,sne)}var cne={name:"putty",label:"Putty",description:"Displays a tube smoothly following the trace atoms of polymers.",factory:gMe,getParams:hMe,defaultValues:g.getDefaultValues(lne),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uncertainty"},isApplicable:t=>t.polymerResidueCount>0};var une={"element-sphere":(t,e)=>Dr("Sphere mesh/impostor",t,e,HP),"structure-element-sphere":(t,e)=>_o("Structure sphere mesh/impostor",t,e,jee)},mF=U(w({},db),{bumpFrequency:g.Numeric(1,{min:0,max:10,step:.1},ge.ShadingCategory),visuals:g.MultiSelect(["element-sphere"],g.objectToOptions(une))}),DE;function yMe(t,e){return e.isCoarseGrained?(DE||(DE=g.clone(mF),DE.sizeFactor.defaultValue=2),DE):mF}function vMe(t,e){return rt.createMulti("Spacefill",t,e,Qr,une)}var dne={name:"spacefill",label:"Spacefill",description:"Displays atomic/coarse elements as spheres.",factory:vMe,getParams:yMe,defaultValues:g.getDefaultValues(mF),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"physical"},isApplicable:t=>t.elementCount>0};var pF=Pr.is;function bMe(t,e,r,n,o,i){if(!Pe.isAtomic(e))return Sr.createEmpty(i);let{child:a}=r,s=a?.unitMap.get(e.id);if(a&&!s)return Sr.createEmpty(i);let l=z.Location.create(r,e),c=e.elements,u=e.bonds,{edgeCount:d,a:m,b:p,edgeProps:h,offset:f}=u;if(!d)return Sr.createEmpty(i);let{order:b,flags:v}=h,{sizeFactor:x,aromaticBonds:S,includeTypes:T,excludeTypes:E,multipleBonds:_}=o,D=_==="off",P=_==="symmetric",A=Pr.fromNames(T),I=Pr.fromNames(E),k=sb(A,I,32),M=y(),R=e.conformation,{elementRingIndices:B,elementAromaticRingIndices:F}=e.rings,G=S?e.resonance.delocalizedTriplets:void 0,V={linkCount:d*2,referencePosition:L=>{let Y=m[L],j=p[L],O=G?.getThirdElement(Y,j);if(O!==void 0)return R.invariantPosition(c[O],M);Y>j&&([Y,j]=[j,Y]),f[Y+1]-f[Y]===1&&([Y,j]=[j,Y]);let J=F.get(Y)||B.get(Y),$=0;for(let ae=f[Y],Z=f[Y+1];ae$&&($=be,R.invariantPosition(c[se],M))}else return R.invariantPosition(c[se],M)}return $>0?M:null},position:(L,Y,j)=>{R.invariantPosition(c[m[j]],L),R.invariantPosition(c[p[j]],Y)},style:L=>{let Y=b[L],j=v[L];if(pF(j,2)||pF(j,4))return 1;if(Y===3)return D?0:P?4:5;if(S){let O=m[L],J=p[L],$=F.get(O),ae=F.get(J),Z=$&&ae?y0($,ae):0;if(pF(j,16)||Z&&!k)return Z===2?8:7}return Y!==2||D?0:P?2:3},radius:L=>{l.element=c[m[L]];let Y=n.size.size(l);l.element=c[p[L]];let j=n.size.size(l);return Math.min(Y,j)*x},ignore:zP(r,e,o)},{lines:H,boundingSphere:Q}=X_(t,V,o,i);if(Q)H.setBoundingSphere(Q);else if(H.lineCount>0){let L=te.expand(te(),(s??e).boundary.sphere,1*x);H.setBoundingSphere(L)}return H}var fF=U(w(w({},bh),NS),{includeParent:g.Boolean(!1)});function mne(t){return xh({defaultProps:g.getDefaultValues(fF),createGeometry:bMe,createLocationIterator:e=>Eu.fromGroup(e),getLoci:VS,eachLocation:zS,setUpdateState:(e,r,n,o,i,a,s)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.linkScale!==n.linkScale||r.linkSpacing!==n.linkSpacing||r.aromaticDashCount!==n.aromaticDashCount||r.dashCount!==n.dashCount||r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant||!gs(r.includeTypes,n.includeTypes)||!gs(r.excludeTypes,n.excludeTypes)||r.aromaticBonds!==n.aromaticBonds||r.multipleBonds!==n.multipleBonds;let l=a.group.units[0],c=s.group.units[0];Pe.isAtomic(l)&&Pe.isAtomic(c)&&(_g.areEqual(l.bonds,c.bonds)||(e.createGeometry=!0,e.updateTransform=!0,e.updateColor=!0,e.updateSize=!0))}},t)}var hF=new ze.ElementBondIterator;function pne(t,e,r,n){for(hF.setElement(e,r,n);hF.hasNext;){let o=hF.move();return o.otherUnit.conformation.position(o.otherUnit.elements[o.otherIndex],t),t}return null}function xMe(t,e,r,n,o){let i=e.interUnitBonds,{edgeCount:a,edges:s}=i;if(!a)return Sr.createEmpty(o);let{sizeFactor:l,aromaticBonds:c,multipleBonds:u}=n,d=u==="off",m=u==="symmetric",p=y(),h=z.Location.create(),f={linkCount:a,referencePosition:x=>{let S=s[x],T,E,_,D;if(S.unitAS.unitB)T=e.unitMap.get(S.unitB),E=e.unitMap.get(S.unitA),_=S.indexB,D=S.indexA;else throw new Error("same units in createInterUnitBondLines");return pne(p,e,T,_)||pne(p,e,E,D)},position:(x,S,T)=>{let E=s[T],_=e.unitMap.get(E.unitA),D=e.unitMap.get(E.unitB);_.conformation.position(_.elements[E.indexA],x),D.conformation.position(D.elements[E.indexB],S)},style:x=>{let S=s[x].props.order,T=Wc.create(s[x].props.flag);return Pr.is(T,2)||Pr.is(T,4)?1:S===3?d?0:m?4:5:c&&Pr.is(T,16)?7:S!==2||d?0:m?2:3},radius:x=>{let S=s[x];h.structure=e,h.unit=e.unitMap.get(S.unitA),h.element=h.unit.elements[S.indexA];let T=r.size.size(h);h.unit=e.unitMap.get(S.unitB),h.element=h.unit.elements[S.indexB];let E=r.size.size(h);return Math.min(T,E)*l},ignore:UP(e,n)},{lines:b,boundingSphere:v}=X_(t,f,n,o);if(v)b.setBoundingSphere(v);else if(b.lineCount>0){let{child:x}=e,S=te.expand(te(),(x??e).boundary.sphere,1*l);b.setBoundingSphere(S)}return b}var gF=U(w(w({},sZ),NS),{includeParent:g.Boolean(!1)});function fne(t){return lZ({defaultProps:g.getDefaultValues(gF),createGeometry:xMe,createLocationIterator:e=>Eu.fromStructure(e),getLoci:US,eachLocation:GS,setUpdateState:(e,r,n,o,i,a,s)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.linkScale!==n.linkScale||r.linkSpacing!==n.linkSpacing||r.aromaticDashCount!==n.aromaticDashCount||r.dashCount!==n.dashCount||r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant||!gs(r.includeTypes,n.includeTypes)||!gs(r.excludeTypes,n.excludeTypes)||r.multipleBonds!==n.multipleBonds,a.interUnitBonds!==s.interUnitBonds&&(e.createGeometry=!0,e.updateTransform=!0,e.updateColor=!0,e.updateSize=!0)}},t)}var jb=y.scaleAndAdd,hne=y.unitX,gne=y.unitY,yne=y.unitZ,yF=U(w({},bh),{lineSizeAttenuation:g.Boolean(!1),ignoreHydrogens:g.Boolean(!1),ignoreHydrogensVariant:g.Select("all",g.arrayToOptions(["all","non-polar"])),traceOnly:g.Boolean(!1),crosses:g.Select("lone",g.arrayToOptions(["lone","all"])),crossSize:g.Numeric(.35,{min:0,max:2,step:.01})});function SMe(t,e,r,n,o,i){let{child:a}=r;if(a&&!a.unitMap.get(e.id))return Sr.createEmpty(i);let s=e.elements,l=s.length,c=vi.create(l,l/10,i),u=y(),d=y(),m=y(),p=e.conformation,h=Mm(r,e,o),f=o.crossSize/2,b=o.crosses==="lone";for(let S=0;S{e.createGeometry=r.ignoreHydrogens!==n.ignoreHydrogens||r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant||r.traceOnly!==n.traceOnly||r.crosses!==n.crosses||r.crossSize!==n.crossSize}},t)}var bne={"intra-bond":(t,e)=>Dr("Intra-unit bond line",t,e,mne),"inter-bond":(t,e)=>_o("Inter-unit bond line",t,e,fne),"element-point":(t,e)=>Dr("Points",t,e,IE),"element-cross":(t,e)=>Dr("Crosses",t,e,vne)},vF=U(w(w(w(w({},fF),gF),JS),yF),{pointStyle:g.Select("circle",g.objectToOptions(Il.StyleTypes)),multipleBonds:g.Select("offset",g.arrayToOptions(["off","symmetric","offset"])),includeParent:g.Boolean(!1),sizeFactor:g.Numeric(2,{min:.01,max:10,step:.01}),unitKinds:Ip(["atomic"]),visuals:g.MultiSelect(["intra-bond","inter-bond","element-point","element-cross"],g.objectToOptions(bne))});function CMe(t,e){if(ue.getSize(e)>=ue.Size.Huge){let n=g.clone(vF);return n.visuals.defaultValue=["intra-bond","element-point","element-cross"],n}else return vF}function TMe(t,e){return rt.createMulti("Line",t,e,Qr,bne)}var xne={name:"line",label:"Line",description:"Displays bonds as lines and atoms as points or croses.",factory:TMe,getParams:CMe,defaultValues:g.getDefaultValues(vF),defaultColorTheme:{name:"element-symbol"},defaultSizeTheme:{name:"uniform"},isApplicable:t=>t.elementCount>0,getData:(t,e)=>e.includeParent?t.asParent():t,mustRecreate:(t,e)=>t.includeParent!==e.includeParent};function wMe(t,e,r,n,o){return N(this,null,function*(){let{runtime:i,webgl:a}=t;if(!a||!a.extensions.blendMinMax)throw new Error("GaussianDensityVolume requires `webgl` and `blendMinMax` extension");let s=o?o.gridTexture.ref.value:void 0,l=yield Ire(e,r.size,n,a,s).runInContext(i),{transform:c,texture:u,bbox:d,gridDim:m}=l,p={min:0,max:1,mean:.04,sigma:.01},h=W.mul(W(),c,W.fromScaling(W(),m)),f=W.getScaling(y(),c),b=y.create(0,1,2),v=ta.create(d,m,c,h,f,u,p,!0,b,o),x=te.expand(te(),e.boundary.sphere,l.maxRadius);return v.setBoundingSphere(x),v})}var bF=U(w(w({},dZ),Uh),{ignoreHydrogens:g.Boolean(!1),ignoreHydrogensVariant:g.Select("all",g.arrayToOptions(["all","non-polar"])),includeParent:g.Boolean(!1,{isHidden:!0})});function Sne(t){return mZ({defaultProps:g.getDefaultValues(bF),createGeometry:wMe,createLocationIterator:jn.fromStructure,getLoci:Du,eachLocation:Iu,setUpdateState:(e,r,n)=>{r.resolution!==n.resolution&&(e.createGeometry=!0),r.radiusOffset!==n.radiusOffset&&(e.createGeometry=!0),r.smoothness!==n.smoothness&&(e.createGeometry=!0),r.ignoreHydrogens!==n.ignoreHydrogens&&(e.createGeometry=!0),r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant&&(e.createGeometry=!0),r.traceOnly!==n.traceOnly&&(e.createGeometry=!0),r.includeParent!==n.includeParent&&(e.createGeometry=!0)},dispose:e=>{e.gridTexture.ref.value.destroy()}},t)}function _Me(t,e,r,n,o,i){return N(this,null,function*(){let{runtime:a,webgl:s}=t;if(!s)throw new Error("GaussianDensityVolume requires `webgl`");let l=i?i.gridTexture.ref.value:void 0,c=yield _re(r,e,n.size,o,s,l).runInContext(a),{transform:u,texture:d,bbox:m,gridDim:p}=c,h={min:0,max:1,mean:.04,sigma:.01},f=W.mul(W(),u,W.fromScaling(W(),p)),b=W.getScaling(y(),u),v=y.create(0,1,2),x=ta.create(m,p,u,f,b,d,h,!0,v,i),S=te.expand(te(),e.boundary.sphere,c.maxRadius);return x.setBoundingSphere(S),x})}var PMe=U(w(w({},yZ),Uh),{ignoreHydrogens:g.Boolean(!1),ignoreHydrogensVariant:g.Select("all",g.arrayToOptions(["all","non-polar"])),includeParent:g.Boolean(!1,{isHidden:!0})});function Cne(t){return vZ({defaultProps:g.getDefaultValues(PMe),createGeometry:_Me,createLocationIterator:jn.fromGroup,getLoci:Wi,eachLocation:qi,setUpdateState:(e,r,n)=>{r.resolution!==n.resolution&&(e.createGeometry=!0),r.radiusOffset!==n.radiusOffset&&(e.createGeometry=!0),r.smoothness!==n.smoothness&&(e.createGeometry=!0),r.ignoreHydrogens!==n.ignoreHydrogens&&(e.createGeometry=!0),r.ignoreHydrogensVariant!==n.ignoreHydrogensVariant&&(e.createGeometry=!0),r.traceOnly!==n.traceOnly&&(e.createGeometry=!0),r.includeParent!==n.includeParent&&(e.createGeometry=!0)},dispose:e=>{e.gridTexture.ref.value.destroy()}},t)}var Tne={"gaussian-volume":(t,e)=>_o("Gaussian volume",t,e,Sne),"units-gaussian-volume":(t,e)=>Dr("Units-Gaussian volume",t,e,Cne)},wne=U(w({},bF),{jumpLength:g.Numeric(4,{min:0,max:20,step:.1}),visuals:g.MultiSelect(["gaussian-volume"],g.objectToOptions(Tne))});function EMe(t,e){return wne}function IMe(t,e){return rt.createMulti("Gaussian Volume",t,e,Qr,Tne)}var _ne={name:"gaussian-volume",label:"Gaussian Volume",description:"Displays a gaussian molecular density using direct volume rendering.",factory:IMe,getParams:EMe,defaultValues:g.getDefaultValues(wne),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"physical"},isApplicable:t=>t.elementCount>0};var DMe=y.scale,AMe=y.add,kMe=y.sub,AE=U(w(w({},Gr),qv),{sizeFactor:g.Numeric(.3,{min:0,max:10,step:.01}),radialSegments:g.Numeric(16,{min:2,max:56,step:2},ge.CustomQualityParamInfo),tryUseImpostor:g.Boolean(!0)});function Pne(t,e,r,n){return r.tryUseImpostor&&n&&n.extensions.fragDepth?RMe(t):BMe(t)}function MMe(t,e,r,n,o,i){let a=e.polymerElements.length;if(!a)return xo.createEmpty(i);let s=a*2,l=Sh.create(s,s/4,i),c=e.conformation,u=y(),d=y(),m=y();CO(e,function(b,v,x,S,T){c.invariantPosition(b,u),c.invariantPosition(v,d);let _=Yo(T)?Py:_y;AMe(m,u,DMe(m,kMe(m,d,u),_)),l.add(u[0],u[1],u[2],m[0],m[1],m[2],1,!1,!1,2,x),l.add(m[0],m[1],m[2],d[0],d[1],d[2],1,!1,!1,2,S)});let h=l.getCylinders(),f=te.expand(te(),e.boundary.sphere,1*o.sizeFactor);return h.setBoundingSphere(f),h}function RMe(t){return Wv({defaultProps:g.getDefaultValues(AE),createGeometry:MMe,createLocationIterator:e=>Wl.fromGroup(e),getLoci:Au,eachLocation:ku,setUpdateState:(e,r,n)=>{},mustRecreate:(e,r,n)=>!r.tryUseImpostor||!n},t)}function LMe(t,e,r,n,o,i){let a=e.polymerElements.length;if(!a)return Be.createEmpty(i);let{radialSegments:s,sizeFactor:l}=o,c=s*2*a*2,u=Te.createState(c,c/10,i),d=e.conformation,m=y(),p=y(),h={radiusTop:1,radiusBottom:1,radialSegments:s},f=z.Location.create(r,e),b=z.Location.create(r,e);CO(e,function(T,E,_,D,P){f.element=T,b.element=E,d.invariantPosition(f.element,m),d.invariantPosition(b.element,p);let I=Yo(P)?Py:_y;h.radiusTop=h.radiusBottom=n.size.size(f)*l,u.currentGroup=_,nr(u,m,p,I,h),h.radiusTop=h.radiusBottom=n.size.size(b)*l,u.currentGroup=D,nr(u,p,m,1-I,h)});let x=Te.getMesh(u),S=te.expand(te(),e.boundary.sphere,1*o.sizeFactor);return x.setBoundingSphere(S),x}function BMe(t){return rn({defaultProps:g.getDefaultValues(AE),createGeometry:LMe,createLocationIterator:e=>Wl.fromGroup(e),getLoci:Au,eachLocation:ku,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.radialSegments!==n.radialSegments},mustRecreate:(e,r,n)=>r.tryUseImpostor&&!!n},t)}var kE=U(w(w({},Gr),jv),{sizeFactor:g.Numeric(.3,{min:0,max:10,step:.01}),detail:g.Numeric(0,{min:0,max:3,step:1},ge.CustomQualityParamInfo),tryUseImpostor:g.Boolean(!0)});function Ene(t,e,r,n){return r.tryUseImpostor&&n&&n.extensions.fragDepth&&n.extensions.textureFloat?FMe(t):VMe(t)}function OMe(t,e,r,n,o,i){let a=e.polymerElements.length;if(!a)return Ni.createEmpty(i);let s=Op.create(a,a/2,i),l=e.conformation,c=y();TO(e,(p,h)=>{l.invariantPosition(p,c),s.add(c[0],c[1],c[2],h)});let d=s.getSpheres(),m=te.expand(te(),e.boundary.sphere,1*o.sizeFactor);return d.setBoundingSphere(m),d}function FMe(t){return Hv({defaultProps:g.getDefaultValues(kE),createGeometry:OMe,createLocationIterator:e=>Wl.fromGroup(e),getLoci:Au,eachLocation:ku,setUpdateState:(e,r,n)=>{},mustRecreate:(e,r,n)=>!r.tryUseImpostor||!n},t)}function NMe(t,e,r,n,o,i){let a=e.polymerElements.length;if(!a)return Be.createEmpty(i);let{detail:s,sizeFactor:l}=o,c=a*Sd(s),u=Te.createState(c,c/2,i),d=e.conformation,m=y(),p=z.Location.create(r,e);TO(e,(v,x)=>{p.element=v,d.invariantPosition(p.element,m),u.currentGroup=x,Jt(u,m,n.size.size(p)*l,s)});let f=Te.getMesh(u),b=te.expand(te(),e.boundary.sphere,1*o.sizeFactor);return f.setBoundingSphere(b),f}function VMe(t){return rn({defaultProps:g.getDefaultValues(kE),createGeometry:NMe,createLocationIterator:e=>Wl.fromGroup(e),getLoci:Au,eachLocation:ku,setUpdateState:(e,r,n)=>{e.createGeometry=r.sizeFactor!==n.sizeFactor||r.detail!==n.detail},mustRecreate:(e,r,n)=>r.tryUseImpostor&&!!n},t)}var Ine={"polymer-backbone-cylinder":(t,e)=>Dr("Polymer backbone cylinder",t,e,Pne),"polymer-backbone-sphere":(t,e)=>Dr("Polymer backbone sphere",t,e,Ene),"polymer-gap":(t,e)=>Dr("Polymer gap cylinder",t,e,Ob)},Dne=U(w(w(w({},kE),AE),Ay),{sizeAspectRatio:g.Numeric(1,{min:.1,max:3,step:.1}),visuals:g.MultiSelect(["polymer-backbone-cylinder","polymer-backbone-sphere","polymer-gap"],g.objectToOptions(Ine)),bumpFrequency:g.Numeric(0,{min:0,max:10,step:.1},ge.ShadingCategory),colorMode:g.Select("default",g.arrayToOptions(["default","interpolate"]),U(w({},ge.ShadingCategory),{isHidden:!0}))});function zMe(t,e){let r=g.clone(Dne),n=!1;return e.units.forEach(o=>{!n&&o.gapElements.length&&(n=!0)}),r.visuals.defaultValue=["polymer-backbone-cylinder","polymer-backbone-sphere"],n&&r.visuals.defaultValue.push("polymer-gap"),r}function UMe(t,e){return rt.createMulti("Backbone",t,e,Qr,Ine)}var Ane={name:"backbone",label:"Backbone",description:"Displays polymer backbone with cylinders and spheres.",factory:UMe,getParams:zMe,defaultValues:g.getDefaultValues(Dne),defaultColorTheme:{name:"chain-id"},defaultSizeTheme:{name:"uniform"},isApplicable:t=>t.polymerResidueCount>0};var Hb=class t extends fv{constructor(){super(),ro(t.BuiltIn,(e,r)=>{if(e.name!==r)throw new Error(`Fix BuiltInStructureRepresentations to have matching names. ${e.name} ${r}`);this.add(e)})}};(function(t){t.BuiltIn={cartoon:lre,backbone:Ane,"ball-and-stick":qee,carbohydrate:cte,ellipsoid:mre,"gaussian-surface":Nre,"gaussian-volume":_ne,label:Gre,line:xne,"molecular-surface":$re,orientation:tne,point:one,putty:cne,spacefill:dne}})(Hb||(Hb={}));var ME=class{get isAnimating(){return this._isAnimating}tick(e,r){return N(this,null,function*(){var n,o;if(yield this.plugin.managers.animation.tick(e,r?.isSynchronous,r?.animation),(n=this.plugin.canvas3d)===null||n===void 0||n.tick(e,r),Ee){let i=(o=this.plugin.canvas3d)===null||o===void 0?void 0:o.webgl.timer.resolve();if(i)for(let a of i)FA([a])}})}resetTime(e=ko()){var r;(r=this.plugin.canvas3d)===null||r===void 0||r.resetTime(e)}start(e){var r;(r=this.plugin.canvas3d)===null||r===void 0||r.resume(),this._isAnimating=!0,this.resetTime(),e?.immediate?this.frame():this.currentFrame=requestAnimationFrame(this.frame)}stop(e){var r;this._isAnimating=!1,this.currentFrame!==void 0&&(cancelAnimationFrame(this.currentFrame),this.currentFrame=void 0),e?.noDraw&&((r=this.plugin.canvas3d)===null||r===void 0||r.pause(e?.noDraw))}constructor(e){this.plugin=e,this.currentFrame=void 0,this._isAnimating=!1,this.frame=()=>{this.tick(ko()),this._isAnimating&&(this.currentFrame=requestAnimationFrame(this.frame))}}};var Gh=class t extends Ed{get animation(){return this.plugin.managers.animation}getSnapshot(e){var r,n,o;let i=w(w({},this.snapshotParams.value),e);return{id:vo.create22(),data:i.data?this.data.getSnapshot():void 0,behaviour:i.behavior?this.behaviors.getSnapshot():void 0,animation:i.animation?this.animation.getSnapshot():void 0,startAnimation:i.startAnimation?!!i.startAnimation:void 0,camera:i.camera?{current:this.plugin.canvas3d.camera.getSnapshot(),transitionStyle:i.cameraTransition.name,transitionDurationInMs:((r=i?.cameraTransition)===null||r===void 0?void 0:r.name)==="animate"?i.cameraTransition.params.durationInMs:void 0}:void 0,canvas3dContext:i.canvas3dContext?{props:(n=this.plugin.canvas3dContext)===null||n===void 0?void 0:n.props}:void 0,canvas3d:i.canvas3d?{props:(o=this.plugin.canvas3d)===null||o===void 0?void 0:o.props}:void 0,interactivity:i.interactivity?{props:this.plugin.managers.interactivity.props}:void 0,structureFocus:this.plugin.managers.structure.focus.getSnapshot(),structureSelection:i.structureSelection?this.plugin.managers.structure.selection.getSnapshot():void 0,structureComponentManager:i.componentManager?{options:this.plugin.managers.structure.component.state.options}:void 0,durationInMs:i?.durationInMs}}setSnapshot(e){return N(this,null,function*(){var r,n,o,i,a;if(yield this.animation.stop(),!((r=e.structureComponentManager)===null||r===void 0)&&r.options&&this.plugin.managers.structure.component._setSnapshotState((n=e.structureComponentManager)===null||n===void 0?void 0:n.options),e.behaviour&&(yield this.plugin.runTask(this.behaviors.setSnapshot(e.behaviour))),e.data&&(yield this.plugin.runTask(this.data.setSnapshot(e.data))),!((o=e.canvas3d)===null||o===void 0)&&o.props){let s=g.normalizeParams(Fa,e.canvas3d.props,"children");yield Re.Canvas3D.SetSettings(this.plugin,{settings:s})}if(!((i=e.canvas3dContext)===null||i===void 0)&&i.props){let s=g.normalizeParams(Ad.Params,e.canvas3dContext.props,"children");(a=this.plugin.canvas3dContext)===null||a===void 0||a.setProps(s)}e.interactivity&&e.interactivity.props&&this.plugin.managers.interactivity.setProps(e.interactivity.props),e.structureFocus&&this.plugin.managers.structure.focus.setSnapshot(e.structureFocus),e.structureSelection&&this.plugin.managers.structure.selection.setSnapshot(e.structureSelection),e.animation&&this.animation.setSnapshot(e.animation),e.camera&&Re.Camera.Reset(this.plugin,{snapshot:e.camera.current,durationMs:e.camera.transitionStyle==="animate"?e.camera.transitionDurationInMs:void 0}),e.startAnimation&&this.animation.start()})}updateTransform(e,r,n,o){let i=e.build().to(r).update(n);return Re.State.Update(this.plugin,{state:e,tree:i,options:{canUndo:o}})}hasBehavior(e){return this.behaviors.tree.transforms.has(e.id)}updateBehavior(e,r){let n=this.behaviors.build();if(this.behaviors.tree.transforms.has(e.id))n.to(e.id).update(r);else{let o=e.createDefaultParams(void 0,this.plugin);n.to(rr.getCategoryId(e)).apply(e,ss(o,r),{ref:e.id})}return this.plugin.runTask(this.behaviors.updateTree(n))}dispose(){this.behaviors.cells.forEach(e=>{var r,n,o,i;rr.Behavior.is(e.obj)&&((n=(r=e.obj.data).unregister)===null||n===void 0||n.call(r),(i=(o=e.obj.data).dispose)===null||i===void 0||i.call(o))}),super.dispose(),this.data.dispose(),this.behaviors.dispose(),this.animation.dispose()}constructor(e){super(),this.plugin=e,this.data=Ll.create(new X.Root({}),{runTask:this.plugin.runTask,globalContext:this.plugin,historyCapacity:this.plugin.config.get(Wt.State.HistoryCapacity)}),this.behaviors=Ll.create(new rr.Root({}),{runTask:this.plugin.runTask,globalContext:this.plugin,rootState:{isLocked:!0}}),this.events={cell:{stateUpdated:ad(this.data.events.cell.stateUpdated,this.behaviors.events.cell.stateUpdated),created:ad(this.data.events.cell.created,this.behaviors.events.cell.created),removed:ad(this.data.events.cell.removed,this.behaviors.events.cell.removed)},object:{created:ad(this.data.events.object.created,this.behaviors.events.object.created),removed:ad(this.data.events.object.removed,this.behaviors.events.object.removed),updated:ad(this.data.events.object.updated,this.behaviors.events.object.updated)}},this.snapshotParams=this.ev.behavior(t.DefaultSnapshotParams),this.setSnapshotParams=r=>{this.snapshotParams.next(w(w({},t.DefaultSnapshotParams),r))}}};(function(t){t.SnapshotParams={durationInMs:g.Numeric(1500,{min:100,max:15e3,step:100},{label:"Duration in ms"}),data:g.Boolean(!0),behavior:g.Boolean(!1),structureSelection:g.Boolean(!1),componentManager:g.Boolean(!0),animation:g.Boolean(!0),startAnimation:g.Boolean(!1),canvas3d:g.Boolean(!0),canvas3dContext:g.Boolean(!0),interactivity:g.Boolean(!0),camera:g.Boolean(!0),cameraTransition:g.MappedStatic("animate",{animate:g.Group({durationInMs:g.Numeric(250,{min:100,max:5e3,step:500},{label:"Duration in ms"})}),instant:g.Group({})},{options:[["animate","Animate"],["instant","Instant"]]}),image:g.Boolean(!1)},t.DefaultSnapshotParams=g.getDefaultValues(t.SnapshotParams)})(Gh||(Gh={}));var RE=class{getDecorator(e){let r=this.plugin.state.data.tree,n=r.children.get(e);if(n.size!==1)return e;let o=n.first();return r.transforms.get(o).transformer.definition.isDecorator?this.getDecorator(o):e}get(e,r=!1){let n=this.root.get(e);if(n)return r?this.plugin.state.data.cells.get(n.ref):this.plugin.state.data.cells.get(this.getDecorator(n.ref))}addMapping(e,r,n){if(!X.Molecule.Structure.is(n))return!1;if(this.tracked.set(r,n.data),this.root.has(n.data)){let o=this.root.get(n.data);o.count++}else{let o=e.select(lt.Generators.byRef(r).rootOfType([X.Molecule.Structure]))[0];o?this.root.set(n.data,{ref:o.transform.ref,count:1}):this.root.set(n.data,{ref:r,count:1})}return!0}removeMapping(e){if(!this.tracked.has(e))return!1;let r=this.tracked.get(e);this.tracked.delete(e);let n=this.root.get(r);return n.count>1?n.count--:this.root.delete(r),!0}updateMapping(e,r,n,o){return X.Molecule.Structure.is(o)?(this.removeMapping(r),this.addMapping(e,r,o),!0):!1}dispose(){this.ev.dispose()}constructor(e){this.plugin=e,this.ev=_s.create(),this.events={updated:this.ev(),removed:this.ev()},this.root=new Map,this.tracked=new Map,e.state.data.events.object.created.subscribe(r=>{this.addMapping(r.state,r.ref,r.obj)}),e.state.data.events.object.removed.subscribe(r=>{this.removeMapping(r.ref)&&this.events.removed.next({ref:r.ref,obj:r.obj})}),e.state.data.events.object.updated.subscribe(r=>{this.updateMapping(r.state,r.ref,r.oldObj,r.obj)&&this.events.updated.next({ref:r.ref,oldObj:r.oldObj,obj:r.obj})})}};var qb=class{constructor(){this.ev=_s.create(),this.id=0,this.runningTasks=new Set,this.abortRequests=new Map,this.options=new Map,this.currentContext=[],this.events={progress:this.ev(),finished:this.ev()}}tryGetAbortTaskId(e){if(this.abortRequests.has(e.progress.taskId))return e.progress.taskId;for(let r of e.children){let n=this.tryGetAbortTaskId(r);if(n!==void 0)return n}}track(e,r){return n=>{var o;if(n.canAbort&&n.requestAbort){let a=this.tryGetAbortTaskId(n.root);a!==void 0&&n.requestAbort(this.abortRequests.get(a))}let i=ko()-n.root.progress.startedTime;this.events.progress.next({id:e,useOverlay:(o=this.options.get(r))===null||o===void 0?void 0:o.useOverlay,level:i<250?"none":"background",progress:n})}}run(e,r){return N(this,null,function*(){let n=this.id++,o;r?.createNewContext||this.currentContext.length===0?o={ctx:Oz(e,this.track(n,e.id),100),refCount:1}:(o=this.currentContext[this.currentContext.length-1],o.refCount++);try{return this.options.set(e.id,{useOverlay:!!r?.useOverlay}),this.runningTasks.add(e.id),yield Fz(o.ctx,e)}finally{this.options.delete(e.id),this.runningTasks.delete(e.id),this.events.finished.next({id:n}),this.abortRequests.delete(e.id),o.refCount--,o.refCount===0&&rp(this.currentContext,o)}})}requestAbortAll(e){this.runningTasks.forEach(r=>this.abortRequests.set(r,e))}requestAbort(e,r){let n=typeof e=="number"?e:e.root.progress.taskId;this.abortRequests.set(n,r)}dispose(){this.ev.dispose()}};(function(t){function e(n){return new Promise(o=>setTimeout(o,n))}function r(n){return ie.create("Test",o=>N(this,null,function*(){let i=0;for(;i!!r&&r.key===e)}show(e){let r=this.state.entries,n,o=++this.serialId,i;e.key&&(n=this.findByKey(e.key))?(n.timeout!==void 0&&clearTimeout(n.timeout),i=n.serialNumber,r=r.remove(n.id)):i=++this.serialNumber,n={id:o,serialNumber:i,key:e.key,title:e.title,message:e.message,timeout:this.timeout(o,e.timeoutMs),hide:()=>this.hideId(o)},this.updateState({entries:r.set(o,n)})&&this.events.changed.next(void 0)}timeout(e,r){if(r!==void 0)return r<0&&(r=500),setTimeout(()=>{let n=this.state.entries.get(e);n.timeout=void 0,this.hide(n)},r)}hideId(e){this.hide(this.state.entries.get(e))}hide(e){e&&(e.timeout!==void 0&&clearTimeout(e.timeout),e.hide=void 0,this.updateState({entries:this.state.entries.delete(e.id)})&&this.events.changed.next(void 0))}constructor(e){super({entries:Ui()}),this.events={changed:this.ev()},this.serialNumber=0,this.serialId=0,Re.Toast.Show.subscribe(e,r=>this.show(r)),Re.Toast.Hide.subscribe(e,r=>this.hide(this.findByKey(r.key)))}};var BE=class extends Ed{createParams(){let e=Math.min(this.plugin.canvas3d?this.plugin.canvas3d.webgl.maxRenderbufferSize:4096,4096);return{resolution:g.MappedStatic("viewport",{viewport:g.Group({}),hd:g.Group({}),"full-hd":g.Group({}),"ultra-hd":g.Group({}),custom:g.Group({width:g.Numeric(1920,{min:128,max:e,step:1}),height:g.Numeric(1080,{min:128,max:e,step:1})},{isFlat:!0})},{options:[["viewport","Viewport"],["hd","HD (1280 x 720)"],["full-hd","Full HD (1920 x 1080)"],["ultra-hd","Ultra HD (3840 x 2160)"],["custom","Custom"]]}),transparent:g.Boolean(!1),axes:dh.axes}}get params(){return this._params?this._params:this._params=this.createParams()}get values(){return this.behaviors.values.value}get cropParams(){return this.behaviors.cropParams.value}get relativeCrop(){return this.behaviors.relativeCrop.value}getCanvasSize(){var e,r;return{width:((e=this.plugin.canvas3d)===null||e===void 0?void 0:e.webgl.gl.drawingBufferWidth)||0,height:((r=this.plugin.canvas3d)===null||r===void 0?void 0:r.webgl.gl.drawingBufferHeight)||0}}getSize(){let e=this.values;switch(e.resolution.name){case"viewport":return this.getCanvasSize();case"hd":return{width:1280,height:720};case"full-hd":return{width:1920,height:1080};case"ultra-hd":return{width:3840,height:2160};default:return{width:e.resolution.params.width,height:e.resolution.params.height}}}createPass(e){let r=this.plugin.canvas3d,{colorBufferFloat:n,textureFloat:o}=r.webgl.extensions,i=r.props.postprocessing.occlusion;return r.getImagePass({transparentBackground:this.values.transparent,cameraHelper:{axes:this.values.axes},multiSample:U(w({},r.props.multiSample),{mode:e?"on":"off",sampleLevel:n&&o?4:2}),postprocessing:U(w({},r.props.postprocessing),{occlusion:i.name==="on"?{name:"on",params:U(w({},i.params),{samples:128,resolutionScale:r.webgl.pixelRatio})}:i}),marking:w({},r.props.marking)})}get previewPass(){return this._previewPass||(this._previewPass=this.createPass(!1))}get imagePass(){if(this._imagePass){let e=this.plugin.canvas3d,r=e.props.postprocessing.occlusion;return this._imagePass.setProps({cameraHelper:{axes:this.values.axes},transparentBackground:this.values.transparent,postprocessing:U(w({},e.props.postprocessing),{occlusion:r.name==="on"?{name:"on",params:U(w({},r.params),{samples:128,resolutionScale:e.webgl.pixelRatio})}:r}),marking:w({},e.props.marking)}),this._imagePass}return this._imagePass=this.createPass(!0)}getFilename(e=".png"){let r=this.plugin.state.data.select(lt.Generators.rootsOfType(X.Molecule.Model)).map(i=>i.obj.data),n=new Set;return r.forEach(i=>n.add(i.entryId.toUpperCase())),`${no.toArray(n).join("-")||"molstar-image"}${e}`}resetCrop(){this.behaviors.relativeCrop.next({x:0,y:0,width:1,height:1})}toggleAutocrop(){this.cropParams.auto?(this.behaviors.cropParams.next(U(w({},this.cropParams),{auto:!1})),this.resetCrop()):this.behaviors.cropParams.next(U(w({},this.cropParams),{auto:!0}))}get isFullFrame(){let e=this.relativeCrop;return bs(e.x,0,1e-5)&&bs(e.y,0,1e-5)&&bs(e.width,1,1e-5)&&bs(e.height,1,1e-5)}autocrop(e=this.cropParams.relativePadding){let{data:r,width:n,height:o}=this.previewData.image,i=this.previewData.transparent,a=i?this.previewData.background:4278190080|this.previewData.background,s=n,l=0,c=o,u=0;for(let h=0;hl&&(l=b),hu&&(u=h)}}if(s>l){let h=s;s=l,l=h}if(c>u){let h=c;c=u,u=h}let d=l-s+1,m=u-c+1;s-=e*d,l+=e*d,c-=e*m,u+=e*m;let p={x:Math.max(0,s/n),y:Math.max(0,c/o),width:Math.min(1,(l-s+1)/n),height:Math.min(1,(u-c+1)/o)};this.behaviors.relativeCrop.next(p)}getPreview(e=320){let{width:r,height:n}=this.getSize();if(r<=0||n<=0)return;let o=r/n,i=0,a=0;o>1?(i=e,a=Math.round(e/o)):(a=e,i=Math.round(e*o));let s=this.plugin.canvas3d.props;this.previewPass.setProps({cameraHelper:{axes:this.values.axes},transparentBackground:this.values.transparent,postprocessing:s.postprocessing,marking:s.marking});let l=this.previewPass.getImageData(i,a),c=this.previewCanvas;c.width=l.width,c.height=l.height,this.previewData.image=l,this.previewData.background=s.renderer.backgroundColor,this.previewData.transparent=this.values.transparent;let u=c.getContext("2d");if(!u)throw new Error("Could not create canvas 2d context");return u.putImageData(l,0,0),this.cropParams.auto&&this.autocrop(),this.events.previewed.next(void 0),{canvas:c,width:i,height:a}}getSizeAndViewport(){let{width:e,height:r}=this.getSize(),n=this.relativeCrop,o={x:Math.floor(n.x*e),y:Math.floor(n.y*r),width:Math.ceil(n.width*e),height:Math.ceil(n.height*r)};return o.width+o.x>e&&(o.width=e-o.x),o.height+o.y>r&&(o.height=r-o.y),{width:e,height:r,viewport:o}}draw(e){return N(this,null,function*(){let{width:r,height:n,viewport:o}=this.getSizeAndViewport();if(r<=0||n<=0)return;yield e.update("Rendering image...");let i=this.imagePass;yield i.updateBackground();let a=i.getImageData(r,n,o);yield e.update("Encoding image...");let s=this.canvas;s.width=a.width,s.height=a.height;let l=s.getContext("2d");if(!l)throw new Error("Could not create canvas 2d context");l.putImageData(a,0,0)})}copyToClipboardTask(){let e=navigator.clipboard;if(!e?.write){this.plugin.log.error("clipboard.write not supported!");return}return ie.create("Copy Image",r=>N(this,null,function*(){yield this.draw(r),yield r.update("Converting image...");let n=yield Q1(this.canvas,"png"),o=new ClipboardItem({"image/png":n});yield e.write([o]),this.plugin.log.message("Image copied to clipboard.")}))}getImageDataUri(){return this.plugin.runTask(ie.create("Generate Image",e=>N(this,null,function*(){return yield this.draw(e),yield e.update("Converting image..."),this.canvas.toDataURL("png")})))}copyToClipboard(){let e=this.copyToClipboardTask();if(e)return this.plugin.runTask(e)}downloadTask(e){return ie.create("Download Image",r=>N(this,null,function*(){yield this.draw(r),yield r.update("Downloading image...");let n=yield Q1(this.canvas,"png");zw(n,e??this.getFilename())}))}download(e){this.plugin.runTask(this.downloadTask(e))}constructor(e){super(),this.plugin=e,this._params=void 0,this.behaviors={values:this.ev.behavior({transparent:this.params.transparent.defaultValue,axes:{name:"off",params:{}},resolution:this.params.resolution.defaultValue}),cropParams:this.ev.behavior({auto:!0,relativePadding:.1}),relativeCrop:this.ev.behavior({x:0,y:0,width:1,height:1})},this.events={previewed:this.ev()},this.canvas=function(){return document.createElement("canvas")}(),this.previewCanvas=function(){return document.createElement("canvas")}(),this.previewData={image:{data:new Uint8ClampedArray(1),width:1,height:0},background:ce(0),transparent:!1}}};var OE=class{addHandler(e,r){let n=this.handlers.findIndex(o=>o[0]===e);n<0?this.handlers.push([e,r]):this.handlers[n][1]=r}removeHandler(e){let r=this.handlers.findIndex(n=>n[0]===e);r>=0&&this.handlers.splice(r,1)}handle(e){return N(this,null,function*(){for(let r=this.handlers.length-1;r>=0;r--){let n=this.handlers[r][1];if(yield n(e,this.plugin))return}GMe(this.plugin,e)})}dispose(){this.handlers.length=0}constructor(e){this.plugin=e,this.handlers=[]}};function GMe(t,e){let r=e.filter(n=>{let o=n.name.toLowerCase();return o.endsWith(".molx")||o.endsWith(".molj")});r.length>0?Re.State.Snapshots.OpenFile(t,{file:r[0]}):t.runTask(t.state.data.applyAction(fS,{files:e.map(n=>Wr.File(n)),format:{name:"auto",params:{}},visuals:!0}))}var FE=class{get isInitialized(){return this._isInitialized}build(){return this.state.data.build()}initContainer(e){var r;if(this.canvasContainer)return!0;let n=document.createElement("div");Object.assign(n.style,{position:"absolute",left:0,top:0,right:0,bottom:0,"-webkit-user-select":"none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","-webkit-touch-callout":"none","touch-action":"manipulation"});let o=(r=e?.canvas3dContext)===null||r===void 0?void 0:r.canvas;return o||(o=document.createElement("canvas"),e?.checkeredCanvasBackground&&Object.assign(o.style,{"background-image":"linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%, lightgrey), linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%, lightgrey)","background-size":"60px 60px","background-position":"0 0, 30px 30px"}),n.appendChild(o)),this.initViewer(o,n,e?.canvas3dContext)?(this.canvasContainer=n,!0):!1}mount(e,r){var n;if(this.disposed)throw new Error("Cannot mount a disposed context");return this.initContainer(r)?(this.canvasContainer.parentElement!==e&&((n=this.canvasContainer.parentElement)===null||n===void 0||n.removeChild(this.canvasContainer)),e.appendChild(this.canvasContainer),this.handleResize(),!0):!1}unmount(){var e,r;(r=(e=this.canvasContainer)===null||e===void 0?void 0:e.parentElement)===null||r===void 0||r.removeChild(this.canvasContainer)}initViewer(e,r,n){var o,i,a,s,l,c;try{this.layout.setRoot(r),this.spec.layout&&this.spec.layout.initial&&this.layout.setProps(this.spec.layout.initial),n||(n=Ad.fromCanvas(e,this.managers.asset,{antialias:!((o=this.config.get(Wt.General.DisableAntialiasing))!==null&&o!==void 0&&o),preserveDrawingBuffer:!((i=this.config.get(Wt.General.DisablePreserveDrawingBuffer))!==null&&i!==void 0&&i),preferWebGl1:this.config.get(Wt.General.PreferWebGl1)||!1,failIfMajorPerformanceCaveat:!((a=this.config.get(Wt.General.AllowMajorPerformanceCaveat))!==null&&a!==void 0&&a),powerPreference:this.config.get(Wt.General.PowerPreference)||"high-performance",handleResize:this.handleResize},{pixelScale:this.config.get(Wt.General.PixelScale)||1,pickScale:this.config.get(Wt.General.PickScale)||.25,transparency:this.config.get(Wt.General.Transparency)||"wboit"})),this.canvas3dContext=n,this.canvas3d=v_.create(this.canvas3dContext),this.canvas3dInit.next(!0);let u=this.spec.canvas3d,d=ce(16579577);return u?(((l=u.renderer)===null||l===void 0?void 0:l.backgroundColor)===void 0&&(u=ss(u,m=>{m.renderer?m.renderer.backgroundColor=d:m.renderer={backgroundColor:d}})),(c=this.canvas3d)===null||c===void 0||c.setProps(u)):(s=this.canvas3d)===null||s===void 0||s.setProps({renderer:{backgroundColor:d}}),this.animationLoop.start(),this.helpers.viewportScreenshot=new BE(this),this.subs.push(this.canvas3d.interaction.click.subscribe(m=>this.behaviors.interaction.click.next(m))),this.subs.push(this.canvas3d.interaction.drag.subscribe(m=>this.behaviors.interaction.drag.next(m))),this.subs.push(this.canvas3d.interaction.hover.subscribe(m=>this.behaviors.interaction.hover.next(m))),this.subs.push(this.canvas3d.input.resize.pipe(bT(50),qc(100,void 0,{leading:!1,trailing:!0})).subscribe(()=>this.handleResize())),this.subs.push(this.canvas3d.input.keyDown.subscribe(m=>this.behaviors.interaction.key.next(m))),this.subs.push(this.canvas3d.input.keyUp.subscribe(m=>this.behaviors.interaction.keyReleased.next(m))),this.subs.push(this.layout.events.updated.subscribe(()=>requestAnimationFrame(()=>this.handleResize()))),this.handleResize(),b0.setImmediate(()=>this.initCanvas3dPromiseCallbacks[0]()),!0}catch(u){return this.log.error(""+u),console.error(u),b0.setImmediate(()=>this.initCanvas3dPromiseCallbacks[1](u)),!1}}get isBusy(){return this.behaviors.state.isAnimating.value||this.behaviors.state.isUpdating.value}get selectionMode(){return this.behaviors.interaction.selectionMode.value}set selectionMode(e){this.behaviors.interaction.selectionMode.next(e)}dataTransaction(e,r){return this.runTask(this.state.data.transaction(e,r))}clear(e=!1){var r;return e&&((r=this.canvas3d)===null||r===void 0||r.setProps(rS)),Re.State.RemoveObject(this,{state:this.state.data,ref:kt.RootRef})}dispose(e){var r,n;if(!this.disposed){for(let o of this.subs)o.unsubscribe();this.subs=[],this.animationLoop.stop(),this.commands.dispose(),(r=this.canvas3d)===null||r===void 0||r.dispose(),(n=this.canvas3dContext)===null||n===void 0||n.dispose(e),this.ev.dispose(),this.state.dispose(),this.helpers.substructureParent.dispose(),ro(this.managers,o=>{var i;return(i=o?.dispose)===null||i===void 0?void 0:i.call(o)}),ro(this.managers.structure,o=>{var i;return(i=o?.dispose)===null||i===void 0?void 0:i.call(o)}),ro(this.managers.volume,o=>{var i;return(i=o?.dispose)===null||i===void 0?void 0:i.call(o)}),this.unmount(),this.canvasContainer=void 0,this.customState={},this.disposed=!0}}initBehaviorEvents(){this.subs.push(ad(this.state.data.behaviors.isUpdating,this.state.behaviors.behaviors.isUpdating).subscribe(a=>{this.behaviors.state.isUpdating.value!==a&&this.behaviors.state.isUpdating.next(a)}));let e=this.config.get(Wt.General.IsBusyTimeoutMs)||750,r=this.behaviors.state.isBusy,n,o=()=>{r.value||r.next(!0)},i=()=>{n!==void 0&&clearTimeout(n),n=void 0};this.subs.push(ad(this.behaviors.state.isUpdating,this.behaviors.state.isAnimating).subscribe(a=>{let s=this.behaviors.state.isUpdating.value,l=this.behaviors.state.isAnimating.value;s||l?r.value||(i(),n=setTimeout(o,e)):(i(),r.next(!1))})),this.subs.push(this.behaviors.interaction.selectionMode.subscribe(a=>{var s;a||(s=this.managers.interactivity)===null||s===void 0||s.lociSelects.deselectAll()}))}initBuiltInBehavior(){uS.State.registerDefault(this),uS.Representation.registerDefault(this),uS.Camera.registerDefault(this),uS.Misc.registerDefault(this),this.subs.push(ad(this.state.data.events.log,this.state.behaviors.events.log).subscribe(e=>this.events.log.next(e)))}initBehaviors(){return N(this,null,function*(){let e=this.state.behaviors.build();for(let r of Object.keys(rr.Categories))e.toRoot().apply(rr.CreateCategory,{label:rr.Categories[r]},{ref:r,state:{isLocked:!0}});for(let r of this.spec.behaviors)rr.getCategoryId(r.transformer)==="custom-props"&&e.to(rr.getCategoryId(r.transformer)).apply(r.transformer,r.defaultParams,{ref:r.transformer.id});yield this.runTask(this.state.behaviors.updateTree(e,{doNotUpdateCurrent:!0,doNotLogTiming:!0})),e=this.state.behaviors.build();for(let r of this.spec.behaviors)rr.getCategoryId(r.transformer)!=="custom-props"&&e.to(rr.getCategoryId(r.transformer)).apply(r.transformer,r.defaultParams,{ref:r.transformer.id});yield this.runTask(this.state.behaviors.updateTree(e,{doNotUpdateCurrent:!0,doNotLogTiming:!0}))})}initCustomFormats(){if(this.spec.customFormats)for(let e of this.spec.customFormats)this.dataFormats.add(e[0],e[1])}initAnimations(){if(this.spec.animations)for(let e of this.spec.animations)this.managers.animation.register(e)}initDataActions(){if(this.spec.actions)for(let e of this.spec.actions)this.state.data.actions.add(e.action)}init(){return N(this,null,function*(){try{this.subs.push(this.events.log.subscribe(e=>this.log.entries=this.log.entries.push(e))),this.initCustomFormats(),this.initBehaviorEvents(),this.initBuiltInBehavior(),this.managers.interactivity=new Ih(this),this.managers.lociLabels=new kP(this),this.builders.structure=new EP(this),this.initAnimations(),this.initDataActions(),yield this.initBehaviors(),this.log.message(`Mol* Plugin ${Y1} [${eQ.toLocaleString()}]`),x0||this.log.message("Development mode enabled"),ht&&this.log.message("Debug mode enabled"),this._isInitialized=!0,this.initializedPromiseCallbacks[0]()}catch(e){throw this.initializedPromiseCallbacks[1](e),e}})}constructor(e){var r;this.spec=e,this.runTask=(n,o)=>this.managers.task.run(n,o),this.resolveTask=n=>{if(n)return ie.is(n)?this.runTask(n):n},this.subs=[],this.initCanvas3dPromiseCallbacks=[()=>{},()=>{}],this._isInitialized=!1,this.initializedPromiseCallbacks=[()=>{},()=>{}],this.disposed=!1,this.canvasContainer=void 0,this.ev=_s.create(),this.config=new G2(this.spec.config),this.state=new Gh(this),this.commands=new j2,this.canvas3dInit=this.ev.behavior(!1),this.behaviors={state:{isAnimating:this.ev.behavior(!1),isUpdating:this.ev.behavior(!1),isBusy:this.ev.behavior(!1)},interaction:{hover:this.ev.behavior({current:rt.Loci.Empty,modifiers:na.None,buttons:0,button:0}),click:this.ev.behavior({current:rt.Loci.Empty,modifiers:na.None,buttons:0,button:0}),drag:this.ev.behavior({current:rt.Loci.Empty,modifiers:na.None,buttons:0,button:0,pageStart:ne(),pageEnd:ne()}),key:this.ev.behavior(WR),keyReleased:this.ev.behavior(WR),selectionMode:this.ev.behavior(!1)},labels:{highlight:this.ev.behavior({labels:[]})},layout:{leftPanelTabName:this.ev.behavior("root")},canvas3d:{initialized:this.canvas3dInit.pipe(d0(n=>!!n),gz(1))}},this.canvas3dInitialized=new Promise((n,o)=>{this.initCanvas3dPromiseCallbacks=[n,o]}),this.initialized=new Promise((n,o)=>{this.initializedPromiseCallbacks=[n,o]}),this.layout=new VP(this),this.animationLoop=new ME(this),this.representation={structure:{registry:new Hb,themes:{colorThemeRegistry:wo.createRegistry(),sizeThemeRegistry:so.createRegistry()}},volume:{registry:new eh,themes:{colorThemeRegistry:wo.createRegistry(),sizeThemeRegistry:so.createRegistry()}}},this.query={structure:{registry:new Mw}},this.dataFormats=new IP,this.builders={data:new CP(this),structure:void 0},this.helpers={substructureParent:new RE(this),viewportScreenshot:void 0},this.managers={structure:{hierarchy:new km(this),component:new ql(this),measurement:new OP(this),selection:new FP(this),focus:new MP(this)},volume:{hierarchy:new Dh(this)},interactivity:void 0,camera:new AP(this),animation:new DP(this),snapshot:new oh(this),lociLabels:void 0,toast:new LE(this),asset:new EU,task:new qb,dragAndDrop:new OE(this)},this.events={log:this.ev(),task:this.managers.task.events,canvas3d:{settingsUpdated:this.ev()}},this.customModelProperties=new MS.Registry,this.customStructureProperties=new MS.Registry,this.customStructureControls=new Map,this.customImportControls=new Map,this.genericRepresentationControls=new Map,this.customState=Object.create(null),this.handleResize=()=>{var n,o;let i=(n=this.canvas3dContext)===null||n===void 0?void 0:n.canvas,a=this.layout.root;a&&i&&(tQ(i,a,this.canvas3dContext.props.pixelScale),(o=this.canvas3d)===null||o===void 0||o.requestResize())},this.log={entries:mm(),entry:n=>this.events.log.next(n),error:n=>this.events.log.next(cu.error(n)),message:n=>this.events.log.next(cu.message(n)),info:n=>this.events.log.next(cu.info(n)),warn:n=>this.events.log.next(cu.warning(n))},this.fetch=_U,w8(!1),jz((r=this.config.get(Wt.Structure.SaccharideCompIdMapType))!==null&&r!==void 0?r:"default")}};var eC=class extends FE{initCustomParamEditors(){if(this.spec.customParamEditors)for(let[e,r]of this.spec.customParamEditors)this.customParamEditors.set(e.id,r)}dispose(e){super.dispose(e),this.layout.dispose()}constructor(e){super(e),this.spec=e,this.customParamEditors=new Map,this.initCustomParamEditors()}};var Zae=Ot($ae());function qRe(t,e){(0,Zae.createRoot)(e).render(t)}var _ce=Ot(Po());var Fr=Ot(Or()),o0=Ot(Po());var br=Ot(Or()),t0=Ot(Po());function Jae(t,e){let r=e||{};return(t[t.length-1]===""?[...t,""]:t).join((r.padRight?" ":"")+","+(r.padLeft===!1?"":" ")).trim()}var WRe=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,XRe=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,YRe={};function nD(t,e){return((e||YRe).jsx?XRe:WRe).test(t)}var QRe=/[ \t\n\f\r]/g;function L4(t){return typeof t=="object"?t.type==="text"?ese(t.value):!1:ese(t)}function ese(t){return t.replace(QRe,"")===""}var $p=class{constructor(e,r,n){this.property=e,this.normal=r,n&&(this.space=n)}};$p.prototype.property={};$p.prototype.normal={};$p.prototype.space=null;function B4(t,e){let r={},n={},o=-1;for(;++oTr,booleanish:()=>gi,commaOrSpaceSeparated:()=>rc,commaSeparated:()=>ug,number:()=>nt,overloadedBoolean:()=>O4,spaceSeparated:()=>Jn});var KRe=0,Tr=Xy(),gi=Xy(),O4=Xy(),nt=Xy(),Jn=Xy(),ug=Xy(),rc=Xy();function Xy(){return 2**++KRe}var F4=Object.keys(XC),Yy=class extends Hs{constructor(e,r,n,o){let i=-1;if(super(e,r),tse(this,"space",o),typeof n=="number")for(;++i4&&r.slice(0,4)==="data"&&ZRe.test(e)){if(e.charAt(4)==="-"){let i=e.slice(5).replace(ose,tLe);n="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{let i=e.slice(4);if(!ose.test(i)){let a=i.replace(JRe,eLe);a.charAt(0)!=="-"&&(a="-"+a),e="data"+a}}o=Yy}return new o(n,e)}function eLe(t){return"-"+t.toLowerCase()}function tLe(t){return t.charAt(1).toUpperCase()}var j4={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"};var ise=B4([V4,N4,z4,U4,rse],"html"),aD=B4([V4,N4,z4,U4,nse],"svg");function ase(t){return t.join(" ").trim()}var H4=Ot(pse(),1),fse=H4.default.default||H4.default;var sD=hse("end"),Sx=hse("start");function hse(t){return e;function e(r){let n=r&&r.position&&r.position[t]||{};if(typeof n.line=="number"&&n.line>0&&typeof n.column=="number"&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset=="number"&&n.offset>-1?n.offset:void 0}}}function q4(t){let e=Sx(t),r=sD(t);if(e&&r)return{start:e,end:r}}function dg(t){return!t||typeof t!="object"?"":"position"in t||"type"in t?gse(t.position):"start"in t||"end"in t?gse(t):"line"in t||"column"in t?W4(t):""}function W4(t){return yse(t&&t.line)+":"+yse(t&&t.column)}function gse(t){return W4(t&&t.start)+"-"+W4(t&&t.end)}function yse(t){return t&&typeof t=="number"?t:1}var Pi=class extends Error{constructor(e,r,n){super(),typeof r=="string"&&(n=r,r=void 0);let o="",i={},a=!1;if(r&&("line"in r&&"column"in r?i={place:r}:"start"in r&&"end"in r?i={place:r}:"type"in r?i={ancestors:[r],place:r.position}:i=w({},r)),typeof e=="string"?o=e:!i.cause&&e&&(a=!0,o=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof n=="string"){let l=n.indexOf(":");l===-1?i.ruleId=n:(i.source=n.slice(0,l),i.ruleId=n.slice(l+1))}if(!i.place&&i.ancestors&&i.ancestors){let l=i.ancestors[i.ancestors.length-1];l&&(i.place=l.position)}let s=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=s?s.column:void 0,this.fatal=void 0,this.file,this.message=o,this.line=s?s.line:void 0,this.name=dg(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual,this.expected,this.note,this.url}};Pi.prototype.file="";Pi.prototype.name="";Pi.prototype.reason="";Pi.prototype.message="";Pi.prototype.stack="";Pi.prototype.column=void 0;Pi.prototype.line=void 0;Pi.prototype.ancestors=void 0;Pi.prototype.cause=void 0;Pi.prototype.fatal=void 0;Pi.prototype.place=void 0;Pi.prototype.ruleId=void 0;Pi.prototype.source=void 0;var X4={}.hasOwnProperty,hLe=new Map,gLe=/[A-Z]/g,yLe=/-([a-z])/g,vLe=new Set(["table","tbody","thead","tfoot","tr"]),bLe=new Set(["td","th"]),vse="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function Y4(t,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");let r=e.filePath||void 0,n;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");n=ELe(r,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");n=PLe(r,e.jsx,e.jsxs)}let o={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:n,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?aD:ise,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},i=bse(o,t,void 0);return i&&typeof i!="string"?i:o.create(t,o.Fragment,{children:i||void 0},void 0)}function bse(t,e,r){if(e.type==="element")return xLe(t,e,r);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return SLe(t,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return TLe(t,e,r);if(e.type==="mdxjsEsm")return CLe(t,e);if(e.type==="root")return wLe(t,e,r);if(e.type==="text")return _Le(t,e)}function xLe(t,e,r){let n=t.schema,o=n;e.tagName.toLowerCase()==="svg"&&n.space==="html"&&(o=aD,t.schema=o),t.ancestors.push(e);let i=Sse(t,e.tagName,!1),a=ILe(t,e),s=K4(t,e);return vLe.has(e.tagName)&&(s=s.filter(function(l){return typeof l=="string"?!L4(l):!0})),xse(t,a,i,e),Q4(a,s),t.ancestors.pop(),t.schema=n,t.create(e,i,a,r)}function SLe(t,e){if(e.data&&e.data.estree&&t.evaluater){let n=e.data.estree.body[0];return n.type,t.evaluater.evaluateExpression(n.expression)}QC(t,e.position)}function CLe(t,e){if(e.data&&e.data.estree&&t.evaluater)return t.evaluater.evaluateProgram(e.data.estree);QC(t,e.position)}function TLe(t,e,r){let n=t.schema,o=n;e.name==="svg"&&n.space==="html"&&(o=aD,t.schema=o),t.ancestors.push(e);let i=e.name===null?t.Fragment:Sse(t,e.name,!0),a=DLe(t,e),s=K4(t,e);return xse(t,a,i,e),Q4(a,s),t.ancestors.pop(),t.schema=n,t.create(e,i,a,r)}function wLe(t,e,r){let n={};return Q4(n,K4(t,e)),t.create(e,t.Fragment,n,r)}function _Le(t,e){return e.value}function xse(t,e,r,n){typeof r!="string"&&r!==t.Fragment&&t.passNode&&(e.node=n)}function Q4(t,e){if(e.length>0){let r=e.length>1?e:e[0];r&&(t.children=r)}}function PLe(t,e,r){return n;function n(o,i,a,s){let c=Array.isArray(a.children)?r:e;return s?c(i,a,s):c(i,a)}}function ELe(t,e){return r;function r(n,o,i,a){let s=Array.isArray(i.children),l=Sx(n);return e(o,i,a,s,{columnNumber:l?l.column-1:void 0,fileName:t,lineNumber:l?l.line:void 0},void 0)}}function ILe(t,e){let r={},n,o;for(o in e.properties)if(o!=="children"&&X4.call(e.properties,o)){let i=ALe(t,o,e.properties[o]);if(i){let[a,s]=i;t.tableCellAlignToStyle&&a==="align"&&typeof s=="string"&&bLe.has(e.tagName)?n=s:r[a]=s}}if(n){let i=r.style||(r.style={});i[t.stylePropertyNameCase==="css"?"text-align":"textAlign"]=n}return r}function DLe(t,e){let r={};for(let n of e.attributes)if(n.type==="mdxJsxExpressionAttribute")if(n.data&&n.data.estree&&t.evaluater){let i=n.data.estree.body[0];i.type;let a=i.expression;a.type;let s=a.properties[0];s.type,Object.assign(r,t.evaluater.evaluateExpression(s.argument))}else QC(t,e.position);else{let o=n.name,i;if(n.value&&typeof n.value=="object")if(n.value.data&&n.value.data.estree&&t.evaluater){let s=n.value.data.estree.body[0];s.type,i=t.evaluater.evaluateExpression(s.expression)}else QC(t,e.position);else i=n.value===null?!0:n.value;r[o]=i}return r}function K4(t,e){let r=[],n=-1,o=t.passKeys?new Map:hLe;for(;++no?0:o+e:e=e>o?o:e,r=r>0?r:0,n.length<1e4)a=Array.from(n),a.unshift(e,r),t.splice(...a);else for(r&&t.splice(e,r);i0?(qs(t,t.length,0,e),t):e}var _se={}.hasOwnProperty;function Pse(t){let e={},r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"\uFFFD":String.fromCodePoint(r)}function Zp(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var Fc=mg(/[A-Za-z]/),Ka=mg(/[\dA-Za-z]/),Ese=mg(/[#-'*+\--9=?A-Z^-~]/);function $C(t){return t!==null&&(t<32||t===127)}var ZC=mg(/\d/),Ise=mg(/[\dA-Fa-f]/),Dse=mg(/[!-/:-@[-`{-~]/);function Lt(t){return t!==null&&t<-2}function Ei(t){return t!==null&&(t<0||t===32)}function wr(t){return t===-2||t===-1||t===32}var Ase=mg(new RegExp("\\p{P}|\\p{S}","u")),kse=mg(/\s/);function mg(t){return e;function e(r){return r!==null&&r>-1&&t.test(String.fromCharCode(r))}}function td(t){let e=[],r=-1,n=0,o=0;for(;++r55295&&i<57344){let s=t.charCodeAt(r+1);i<56320&&s>56319&&s<57344?(a=String.fromCharCode(i,s),o=1):a="\uFFFD"}else a=String.fromCharCode(i);a&&(e.push(t.slice(n,r),encodeURIComponent(a)),n=r+o+1,a=""),o&&(r+=o,o=0)}return e.join("")+t.slice(n)}function Ar(t,e,r,n){let o=n?n-1:Number.POSITIVE_INFINITY,i=0;return a;function a(l){return wr(l)?(t.enter(r),s(l)):e(l)}function s(l){return wr(l)&&i++a))return;let D=e.events.length,P=D,A,I;for(;P--;)if(e.events[P][0]==="exit"&&e.events[P][1].type==="chunkFlow"){if(A){I=e.events[P][1].end;break}A=!0}for(v(n),_=D;_S;){let E=r[T];e.containerState=E[1],E[0].exit.call(e,t)}r.length=S}function x(){o.write([null]),i=void 0,o=void 0,e.containerState._closeFlow=void 0}}function GLe(t,e,r){return Ar(t,t.attempt(this.parser.constructs.document,e,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Z4(t){if(t===null||Ei(t)||kse(t))return 1;if(Ase(t))return 2}function Tx(t,e,r){let n=[],o=-1;for(;++o1&&t[r][1].end.offset-t[r][1].start.offset>1?2:1;let d=Object.assign({},t[n][1].end),m=Object.assign({},t[r][1].start);Bse(d,-l),Bse(m,l),a={type:l>1?"strongSequence":"emphasisSequence",start:d,end:Object.assign({},t[n][1].end)},s={type:l>1?"strongSequence":"emphasisSequence",start:Object.assign({},t[r][1].start),end:m},i={type:l>1?"strongText":"emphasisText",start:Object.assign({},t[n][1].end),end:Object.assign({},t[r][1].start)},o={type:l>1?"strong":"emphasis",start:Object.assign({},a.start),end:Object.assign({},s.end)},t[n][1].end=Object.assign({},a.start),t[r][1].start=Object.assign({},s.end),c=[],t[n][1].end.offset-t[n][1].start.offset&&(c=xl(c,[["enter",t[n][1],e],["exit",t[n][1],e]])),c=xl(c,[["enter",o,e],["enter",a,e],["exit",a,e],["enter",i,e]]),c=xl(c,Tx(e.parser.constructs.insideSpan.null,t.slice(n+1,r),e)),c=xl(c,[["exit",i,e],["enter",s,e],["exit",s,e],["exit",o,e]]),t[r][1].end.offset-t[r][1].start.offset?(u=2,c=xl(c,[["enter",t[r][1],e],["exit",t[r][1],e]])):u=0,qs(t,n-1,r-n+3,c),r=n+c.length-u-2;break}}for(r=-1;++r0&&wr(_)?Ar(t,x,"linePrefix",i+1)(_):x(_)}function x(_){return _===null||Lt(_)?t.check(Ose,f,T)(_):(t.enter("codeFlowValue"),S(_))}function S(_){return _===null||Lt(_)?(t.exit("codeFlowValue"),x(_)):(t.consume(_),S)}function T(_){return t.exit("codeFenced"),e(_)}function E(_,D,P){let A=0;return I;function I(F){return _.enter("lineEnding"),_.consume(F),_.exit("lineEnding"),k}function k(F){return _.enter("codeFencedFence"),wr(F)?Ar(_,M,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(F):M(F)}function M(F){return F===s?(_.enter("codeFencedFenceSequence"),R(F)):P(F)}function R(F){return F===s?(A++,_.consume(F),R):A>=a?(_.exit("codeFencedFenceSequence"),wr(F)?Ar(_,B,"whitespace")(F):B(F)):P(F)}function B(F){return F===null||Lt(F)?(_.exit("codeFencedFence"),D(F)):P(F)}}}function JLe(t,e,r){let n=this;return o;function o(a){return a===null?r(a):(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i)}function i(a){return n.parser.lazy[n.now().line]?r(a):e(a)}}var eT={name:"codeIndented",tokenize:tBe},eBe={tokenize:rBe,partial:!0};function tBe(t,e,r){let n=this;return o;function o(c){return t.enter("codeIndented"),Ar(t,i,"linePrefix",5)(c)}function i(c){let u=n.events[n.events.length-1];return u&&u[1].type==="linePrefix"&&u[2].sliceSerialize(u[1],!0).length>=4?a(c):r(c)}function a(c){return c===null?l(c):Lt(c)?t.attempt(eBe,a,l)(c):(t.enter("codeFlowValue"),s(c))}function s(c){return c===null||Lt(c)?(t.exit("codeFlowValue"),a(c)):(t.consume(c),s)}function l(c){return t.exit("codeIndented"),e(c)}}function rBe(t,e,r){let n=this;return o;function o(a){return n.parser.lazy[n.now().line]?r(a):Lt(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),o):Ar(t,i,"linePrefix",5)(a)}function i(a){let s=n.events[n.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?e(a):Lt(a)?o(a):r(a)}}var eV={name:"codeText",tokenize:iBe,resolve:nBe,previous:oBe};function nBe(t){let e=t.length-4,r=3,n,o;if((t[r][1].type==="lineEnding"||t[r][1].type==="space")&&(t[e][1].type==="lineEnding"||t[e][1].type==="space")){for(n=r;++n=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,r,n){let o=r||0;this.setCursor(Math.trunc(e));let i=this.right.splice(this.right.length-o,Number.POSITIVE_INFINITY);return n&&tT(this.left,n),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),tT(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),tT(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e=4?e(a):t.interrupt(n.parser.constructs.flow,r,e)(a)}}function hD(t,e,r,n,o,i,a,s,l){let c=l||Number.POSITIVE_INFINITY,u=0;return d;function d(v){return v===60?(t.enter(n),t.enter(o),t.enter(i),t.consume(v),t.exit(i),m):v===null||v===32||v===41||$C(v)?r(v):(t.enter(n),t.enter(a),t.enter(s),t.enter("chunkString",{contentType:"string"}),f(v))}function m(v){return v===62?(t.enter(i),t.consume(v),t.exit(i),t.exit(o),t.exit(n),e):(t.enter(s),t.enter("chunkString",{contentType:"string"}),p(v))}function p(v){return v===62?(t.exit("chunkString"),t.exit(s),m(v)):v===null||v===60||Lt(v)?r(v):(t.consume(v),v===92?h:p)}function h(v){return v===60||v===62||v===92?(t.consume(v),p):p(v)}function f(v){return!u&&(v===null||v===41||Ei(v))?(t.exit("chunkString"),t.exit(s),t.exit(a),t.exit(n),e(v)):u999||p===null||p===91||p===93&&!l||p===94&&!s&&"_hiddenFootnoteSupport"in a.parser.constructs?r(p):p===93?(t.exit(i),t.enter(o),t.consume(p),t.exit(o),t.exit(n),e):Lt(p)?(t.enter("lineEnding"),t.consume(p),t.exit("lineEnding"),u):(t.enter("chunkString",{contentType:"string"}),d(p))}function d(p){return p===null||p===91||p===93||Lt(p)||s++>999?(t.exit("chunkString"),u(p)):(t.consume(p),l||(l=!wr(p)),p===92?m:d)}function m(p){return p===91||p===92||p===93?(t.consume(p),s++,d):d(p)}}function yD(t,e,r,n,o,i){let a;return s;function s(m){return m===34||m===39||m===40?(t.enter(n),t.enter(o),t.consume(m),t.exit(o),a=m===40?41:m,l):r(m)}function l(m){return m===a?(t.enter(o),t.consume(m),t.exit(o),t.exit(n),e):(t.enter(i),c(m))}function c(m){return m===a?(t.exit(i),l(a)):m===null?r(m):Lt(m)?(t.enter("lineEnding"),t.consume(m),t.exit("lineEnding"),Ar(t,c,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),u(m))}function u(m){return m===a||m===null||Lt(m)?(t.exit("chunkString"),c(m)):(t.consume(m),m===92?d:u)}function d(m){return m===a||m===92?(t.consume(m),u):u(m)}}function Ky(t,e){let r;return n;function n(o){return Lt(o)?(t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),r=!0,n):wr(o)?Ar(t,n,r?"linePrefix":"lineSuffix")(o):e(o)}}var rV={name:"definition",tokenize:mBe},dBe={tokenize:pBe,partial:!0};function mBe(t,e,r){let n=this,o;return i;function i(p){return t.enter("definition"),a(p)}function a(p){return gD.call(n,t,s,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function s(p){return o=Zp(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),p===58?(t.enter("definitionMarker"),t.consume(p),t.exit("definitionMarker"),l):r(p)}function l(p){return Ei(p)?Ky(t,c)(p):c(p)}function c(p){return hD(t,u,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function u(p){return t.attempt(dBe,d,d)(p)}function d(p){return wr(p)?Ar(t,m,"whitespace")(p):m(p)}function m(p){return p===null||Lt(p)?(t.exit("definition"),n.parser.defined.push(o),e(p)):r(p)}}function pBe(t,e,r){return n;function n(s){return Ei(s)?Ky(t,o)(s):r(s)}function o(s){return yD(t,i,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(s)}function i(s){return wr(s)?Ar(t,a,"whitespace")(s):a(s)}function a(s){return s===null||Lt(s)?e(s):r(s)}}var nV={name:"hardBreakEscape",tokenize:fBe};function fBe(t,e,r){return n;function n(i){return t.enter("hardBreakEscape"),t.consume(i),o}function o(i){return Lt(i)?(t.exit("hardBreakEscape"),e(i)):r(i)}}var oV={name:"headingAtx",tokenize:gBe,resolve:hBe};function hBe(t,e){let r=t.length-2,n=3,o,i;return t[n][1].type==="whitespace"&&(n+=2),r-2>n&&t[r][1].type==="whitespace"&&(r-=2),t[r][1].type==="atxHeadingSequence"&&(n===r-1||r-4>n&&t[r-2][1].type==="whitespace")&&(r-=n+1===r?2:4),r>n&&(o={type:"atxHeadingText",start:t[n][1].start,end:t[r][1].end},i={type:"chunkText",start:t[n][1].start,end:t[r][1].end,contentType:"text"},qs(t,n,r-n+1,[["enter",o,e],["enter",i,e],["exit",i,e],["exit",o,e]])),t}function gBe(t,e,r){let n=0;return o;function o(u){return t.enter("atxHeading"),i(u)}function i(u){return t.enter("atxHeadingSequence"),a(u)}function a(u){return u===35&&n++<6?(t.consume(u),a):u===null||Ei(u)?(t.exit("atxHeadingSequence"),s(u)):r(u)}function s(u){return u===35?(t.enter("atxHeadingSequence"),l(u)):u===null||Lt(u)?(t.exit("atxHeading"),e(u)):wr(u)?Ar(t,s,"whitespace")(u):(t.enter("atxHeadingText"),c(u))}function l(u){return u===35?(t.consume(u),l):(t.exit("atxHeadingSequence"),s(u))}function c(u){return u===null||u===35||Ei(u)?(t.exit("atxHeadingText"),s(u)):(t.consume(u),c)}}var Fse=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],iV=["pre","script","style","textarea"];var aV={name:"htmlFlow",tokenize:xBe,resolveTo:bBe,concrete:!0},yBe={tokenize:CBe,partial:!0},vBe={tokenize:SBe,partial:!0};function bBe(t){let e=t.length;for(;e--&&!(t[e][0]==="enter"&&t[e][1].type==="htmlFlow"););return e>1&&t[e-2][1].type==="linePrefix"&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2)),t}function xBe(t,e,r){let n=this,o,i,a,s,l;return c;function c(O){return u(O)}function u(O){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(O),d}function d(O){return O===33?(t.consume(O),m):O===47?(t.consume(O),i=!0,f):O===63?(t.consume(O),o=3,n.interrupt?e:L):Fc(O)?(t.consume(O),a=String.fromCharCode(O),b):r(O)}function m(O){return O===45?(t.consume(O),o=2,p):O===91?(t.consume(O),o=5,s=0,h):Fc(O)?(t.consume(O),o=4,n.interrupt?e:L):r(O)}function p(O){return O===45?(t.consume(O),n.interrupt?e:L):r(O)}function h(O){let J="CDATA[";return O===J.charCodeAt(s++)?(t.consume(O),s===J.length?n.interrupt?e:M:h):r(O)}function f(O){return Fc(O)?(t.consume(O),a=String.fromCharCode(O),b):r(O)}function b(O){if(O===null||O===47||O===62||Ei(O)){let J=O===47,$=a.toLowerCase();return!J&&!i&&iV.includes($)?(o=1,n.interrupt?e(O):M(O)):Fse.includes(a.toLowerCase())?(o=6,J?(t.consume(O),v):n.interrupt?e(O):M(O)):(o=7,n.interrupt&&!n.parser.lazy[n.now().line]?r(O):i?x(O):S(O))}return O===45||Ka(O)?(t.consume(O),a+=String.fromCharCode(O),b):r(O)}function v(O){return O===62?(t.consume(O),n.interrupt?e:M):r(O)}function x(O){return wr(O)?(t.consume(O),x):I(O)}function S(O){return O===47?(t.consume(O),I):O===58||O===95||Fc(O)?(t.consume(O),T):wr(O)?(t.consume(O),S):I(O)}function T(O){return O===45||O===46||O===58||O===95||Ka(O)?(t.consume(O),T):E(O)}function E(O){return O===61?(t.consume(O),_):wr(O)?(t.consume(O),E):S(O)}function _(O){return O===null||O===60||O===61||O===62||O===96?r(O):O===34||O===39?(t.consume(O),l=O,D):wr(O)?(t.consume(O),_):P(O)}function D(O){return O===l?(t.consume(O),l=null,A):O===null||Lt(O)?r(O):(t.consume(O),D)}function P(O){return O===null||O===34||O===39||O===47||O===60||O===61||O===62||O===96||Ei(O)?E(O):(t.consume(O),P)}function A(O){return O===47||O===62||wr(O)?S(O):r(O)}function I(O){return O===62?(t.consume(O),k):r(O)}function k(O){return O===null||Lt(O)?M(O):wr(O)?(t.consume(O),k):r(O)}function M(O){return O===45&&o===2?(t.consume(O),G):O===60&&o===1?(t.consume(O),V):O===62&&o===4?(t.consume(O),Y):O===63&&o===3?(t.consume(O),L):O===93&&o===5?(t.consume(O),Q):Lt(O)&&(o===6||o===7)?(t.exit("htmlFlowData"),t.check(yBe,j,R)(O)):O===null||Lt(O)?(t.exit("htmlFlowData"),R(O)):(t.consume(O),M)}function R(O){return t.check(vBe,B,j)(O)}function B(O){return t.enter("lineEnding"),t.consume(O),t.exit("lineEnding"),F}function F(O){return O===null||Lt(O)?R(O):(t.enter("htmlFlowData"),M(O))}function G(O){return O===45?(t.consume(O),L):M(O)}function V(O){return O===47?(t.consume(O),a="",H):M(O)}function H(O){if(O===62){let J=a.toLowerCase();return iV.includes(J)?(t.consume(O),Y):M(O)}return Fc(O)&&a.length<8?(t.consume(O),a+=String.fromCharCode(O),H):M(O)}function Q(O){return O===93?(t.consume(O),L):M(O)}function L(O){return O===62?(t.consume(O),Y):O===45&&o===2?(t.consume(O),L):M(O)}function Y(O){return O===null||Lt(O)?(t.exit("htmlFlowData"),j(O)):(t.consume(O),Y)}function j(O){return t.exit("htmlFlow"),e(O)}}function SBe(t,e,r){let n=this;return o;function o(a){return Lt(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i):r(a)}function i(a){return n.parser.lazy[n.now().line]?r(a):e(a)}}function CBe(t,e,r){return n;function n(o){return t.enter("lineEnding"),t.consume(o),t.exit("lineEnding"),t.attempt(pg,e,r)}}var sV={name:"htmlText",tokenize:TBe};function TBe(t,e,r){let n=this,o,i,a;return s;function s(L){return t.enter("htmlText"),t.enter("htmlTextData"),t.consume(L),l}function l(L){return L===33?(t.consume(L),c):L===47?(t.consume(L),E):L===63?(t.consume(L),S):Fc(L)?(t.consume(L),P):r(L)}function c(L){return L===45?(t.consume(L),u):L===91?(t.consume(L),i=0,h):Fc(L)?(t.consume(L),x):r(L)}function u(L){return L===45?(t.consume(L),p):r(L)}function d(L){return L===null?r(L):L===45?(t.consume(L),m):Lt(L)?(a=d,V(L)):(t.consume(L),d)}function m(L){return L===45?(t.consume(L),p):d(L)}function p(L){return L===62?G(L):L===45?m(L):d(L)}function h(L){let Y="CDATA[";return L===Y.charCodeAt(i++)?(t.consume(L),i===Y.length?f:h):r(L)}function f(L){return L===null?r(L):L===93?(t.consume(L),b):Lt(L)?(a=f,V(L)):(t.consume(L),f)}function b(L){return L===93?(t.consume(L),v):f(L)}function v(L){return L===62?G(L):L===93?(t.consume(L),v):f(L)}function x(L){return L===null||L===62?G(L):Lt(L)?(a=x,V(L)):(t.consume(L),x)}function S(L){return L===null?r(L):L===63?(t.consume(L),T):Lt(L)?(a=S,V(L)):(t.consume(L),S)}function T(L){return L===62?G(L):S(L)}function E(L){return Fc(L)?(t.consume(L),_):r(L)}function _(L){return L===45||Ka(L)?(t.consume(L),_):D(L)}function D(L){return Lt(L)?(a=D,V(L)):wr(L)?(t.consume(L),D):G(L)}function P(L){return L===45||Ka(L)?(t.consume(L),P):L===47||L===62||Ei(L)?A(L):r(L)}function A(L){return L===47?(t.consume(L),G):L===58||L===95||Fc(L)?(t.consume(L),I):Lt(L)?(a=A,V(L)):wr(L)?(t.consume(L),A):G(L)}function I(L){return L===45||L===46||L===58||L===95||Ka(L)?(t.consume(L),I):k(L)}function k(L){return L===61?(t.consume(L),M):Lt(L)?(a=k,V(L)):wr(L)?(t.consume(L),k):A(L)}function M(L){return L===null||L===60||L===61||L===62||L===96?r(L):L===34||L===39?(t.consume(L),o=L,R):Lt(L)?(a=M,V(L)):wr(L)?(t.consume(L),M):(t.consume(L),B)}function R(L){return L===o?(t.consume(L),o=void 0,F):L===null?r(L):Lt(L)?(a=R,V(L)):(t.consume(L),R)}function B(L){return L===null||L===34||L===39||L===60||L===61||L===96?r(L):L===47||L===62||Ei(L)?A(L):(t.consume(L),B)}function F(L){return L===47||L===62||Ei(L)?A(L):r(L)}function G(L){return L===62?(t.consume(L),t.exit("htmlTextData"),t.exit("htmlText"),e):r(L)}function V(L){return t.exit("htmlTextData"),t.enter("lineEnding"),t.consume(L),t.exit("lineEnding"),H}function H(L){return wr(L)?Ar(t,Q,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(L):Q(L)}function Q(L){return t.enter("htmlTextData"),a(L)}}var $y={name:"labelEnd",tokenize:DBe,resolveTo:IBe,resolveAll:EBe},wBe={tokenize:ABe},_Be={tokenize:kBe},PBe={tokenize:MBe};function EBe(t){let e=-1;for(;++e=3&&(c===null||Lt(c))?(t.exit("thematicBreak"),e(c)):r(c)}function l(c){return c===o?(t.consume(c),n++,l):(t.exit("thematicBreakSequence"),wr(c)?Ar(t,s,"whitespace")(c):s(c))}}var Ws={name:"list",tokenize:VBe,continuation:{tokenize:zBe},exit:GBe},FBe={tokenize:jBe,partial:!0},NBe={tokenize:UBe,partial:!0};function VBe(t,e,r){let n=this,o=n.events[n.events.length-1],i=o&&o[1].type==="linePrefix"?o[2].sliceSerialize(o[1],!0).length:0,a=0;return s;function s(p){let h=n.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(h==="listUnordered"?!n.containerState.marker||p===n.containerState.marker:ZC(p)){if(n.containerState.type||(n.containerState.type=h,t.enter(h,{_container:!0})),h==="listUnordered")return t.enter("listItemPrefix"),p===42||p===45?t.check(Zy,r,c)(p):c(p);if(!n.interrupt||p===49)return t.enter("listItemPrefix"),t.enter("listItemValue"),l(p)}return r(p)}function l(p){return ZC(p)&&++a<10?(t.consume(p),l):(!n.interrupt||a<2)&&(n.containerState.marker?p===n.containerState.marker:p===41||p===46)?(t.exit("listItemValue"),c(p)):r(p)}function c(p){return t.enter("listItemMarker"),t.consume(p),t.exit("listItemMarker"),n.containerState.marker=n.containerState.marker||p,t.check(pg,n.interrupt?r:u,t.attempt(FBe,m,d))}function u(p){return n.containerState.initialBlankLine=!0,i++,m(p)}function d(p){return wr(p)?(t.enter("listItemPrefixWhitespace"),t.consume(p),t.exit("listItemPrefixWhitespace"),m):r(p)}function m(p){return n.containerState.size=i+n.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(p)}}function zBe(t,e,r){let n=this;return n.containerState._closeFlow=void 0,t.check(pg,o,i);function o(s){return n.containerState.furtherBlankLines=n.containerState.furtherBlankLines||n.containerState.initialBlankLine,Ar(t,e,"listItemIndent",n.containerState.size+1)(s)}function i(s){return n.containerState.furtherBlankLines||!wr(s)?(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,a(s)):(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,t.attempt(NBe,e,a)(s))}function a(s){return n.containerState._closeFlow=!0,n.interrupt=void 0,Ar(t,t.attempt(Ws,e,r),"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s)}}function UBe(t,e,r){let n=this;return Ar(t,o,"listItemIndent",n.containerState.size+1);function o(i){let a=n.events[n.events.length-1];return a&&a[1].type==="listItemIndent"&&a[2].sliceSerialize(a[1],!0).length===n.containerState.size?e(i):r(i)}}function GBe(t){t.exit(this.containerState.type)}function jBe(t,e,r){let n=this;return Ar(t,o,"listItemPrefixWhitespace",n.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function o(i){let a=n.events[n.events.length-1];return!wr(i)&&a&&a[1].type==="listItemPrefixWhitespace"?e(i):r(i)}}var vD={name:"setextUnderline",tokenize:qBe,resolveTo:HBe};function HBe(t,e){let r=t.length,n,o,i;for(;r--;)if(t[r][0]==="enter"){if(t[r][1].type==="content"){n=r;break}t[r][1].type==="paragraph"&&(o=r)}else t[r][1].type==="content"&&t.splice(r,1),!i&&t[r][1].type==="definition"&&(i=r);let a={type:"setextHeading",start:Object.assign({},t[o][1].start),end:Object.assign({},t[t.length-1][1].end)};return t[o][1].type="setextHeadingText",i?(t.splice(o,0,["enter",a,e]),t.splice(i+1,0,["exit",t[n][1],e]),t[n][1].end=Object.assign({},t[i][1].end)):t[n][1]=a,t.push(["exit",a,e]),t}function qBe(t,e,r){let n=this,o;return i;function i(c){let u=n.events.length,d;for(;u--;)if(n.events[u][1].type!=="lineEnding"&&n.events[u][1].type!=="linePrefix"&&n.events[u][1].type!=="content"){d=n.events[u][1].type==="paragraph";break}return!n.parser.lazy[n.now().line]&&(n.interrupt||d)?(t.enter("setextHeadingLine"),o=c,a(c)):r(c)}function a(c){return t.enter("setextHeadingLineSequence"),s(c)}function s(c){return c===o?(t.consume(c),s):(t.exit("setextHeadingLineSequence"),wr(c)?Ar(t,l,"lineSuffix")(c):l(c))}function l(c){return c===null||Lt(c)?(t.exit("setextHeadingLine"),e(c)):r(c)}}var Nse={tokenize:WBe};function WBe(t){let e=this,r=t.attempt(pg,n,t.attempt(this.parser.constructs.flowInitial,o,Ar(t,t.attempt(this.parser.constructs.flow,o,t.attempt(tV,o)),"linePrefix")));return r;function n(i){if(i===null){t.consume(i);return}return t.enter("lineEndingBlank"),t.consume(i),t.exit("lineEndingBlank"),e.currentConstruct=void 0,r}function o(i){if(i===null){t.consume(i);return}return t.enter("lineEnding"),t.consume(i),t.exit("lineEnding"),e.currentConstruct=void 0,r}}var Vse={resolveAll:jse()},zse=Gse("string"),Use=Gse("text");function Gse(t){return{tokenize:e,resolveAll:jse(t==="text"?XBe:void 0)};function e(r){let n=this,o=this.parser.constructs[t],i=r.attempt(o,a,s);return a;function a(u){return c(u)?i(u):s(u)}function s(u){if(u===null){r.consume(u);return}return r.enter("data"),r.consume(u),l}function l(u){return c(u)?(r.exit("data"),i(u)):(r.consume(u),l)}function c(u){if(u===null)return!0;let d=o[u],m=-1;if(d)for(;++m-1){let s=a[0];typeof s=="string"?a[0]=s.slice(n):a.shift()}i>0&&a.push(t[o].slice(0,i))}return a}function QBe(t,e){let r=-1,n=[],o;for(;++rnOe,contentInitial:()=>$Be,disable:()=>oOe,document:()=>KBe,flow:()=>JBe,flowInitial:()=>ZBe,insideSpan:()=>rOe,string:()=>eOe,text:()=>tOe});var KBe={42:Ws,43:Ws,45:Ws,48:Ws,49:Ws,50:Ws,51:Ws,52:Ws,53:Ws,54:Ws,55:Ws,56:Ws,57:Ws,62:cD},$Be={91:rV},ZBe={[-2]:eT,[-1]:eT,32:eT},JBe={35:oV,42:Zy,45:[vD,Zy],60:aV,61:vD,95:Zy,96:mD,126:mD},eOe={38:dD,92:uD},tOe={[-5]:rT,[-4]:rT,[-3]:rT,33:lV,38:dD,42:JC,60:[J4,sV],91:cV,92:[nV,uD],93:$y,95:JC,96:eV},rOe={null:[JC,Vse]},nOe={null:[42,95]},oOe={null:[]};function dV(t){let r=Pse([uV,...(t||{}).extensions||[]]),n={defined:[],lazy:{},constructs:r,content:o(Mse),document:o(Lse),flow:o(Nse),string:o(zse),text:o(Use)};return n;function o(i){return a;function a(s){return Hse(n,i,s)}}}function mV(t){for(;!fD(t););return t}var qse=/[\0\t\n\r]/g;function pV(){let t=1,e="",r=!0,n;return o;function o(i,a,s){let l=[],c,u,d,m,p;for(i=e+(typeof i=="string"?i.toString():new TextDecoder(a||void 0).decode(i)),d=0,e="",r&&(i.charCodeAt(0)===65279&&d++,r=void 0);d0){let yr=$e.tokenStack[$e.tokenStack.length-1];(yr[1]||Xse).call($e,void 0,yr[0])}for(Ae.position={start:fg(pe.length>0?pe[0][1].start:{line:1,column:1,offset:0}),end:fg(pe.length>0?pe[pe.length-2][1].end:{line:1,column:1,offset:0})},Pt=-1;++Pt1?"-"+s:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(a)}]};t.patch(e,l);let c={type:"element",tagName:"sup",properties:{},children:[l]};return t.patch(e,c),t.applyData(e,c)}function rle(t,e){let r={type:"element",tagName:"h"+e.depth,properties:{},children:t.all(e)};return t.patch(e,r),t.applyData(e,r)}function nle(t,e){if(t.options.allowDangerousHtml){let r={type:"raw",value:e.value};return t.patch(e,r),t.applyData(e,r)}}function xD(t,e){let r=e.referenceType,n="]";if(r==="collapsed"?n+="[]":r==="full"&&(n+="["+(e.label||e.identifier)+"]"),e.type==="imageReference")return[{type:"text",value:"!["+e.alt+n}];let o=t.all(e),i=o[0];i&&i.type==="text"?i.value="["+i.value:o.unshift({type:"text",value:"["});let a=o[o.length-1];return a&&a.type==="text"?a.value+=n:o.push({type:"text",value:n}),o}function ole(t,e){let r=String(e.identifier).toUpperCase(),n=t.definitionById.get(r);if(!n)return xD(t,e);let o={src:td(n.url||""),alt:e.alt};n.title!==null&&n.title!==void 0&&(o.title=n.title);let i={type:"element",tagName:"img",properties:o,children:[]};return t.patch(e,i),t.applyData(e,i)}function ile(t,e){let r={src:td(e.url)};e.alt!==null&&e.alt!==void 0&&(r.alt=e.alt),e.title!==null&&e.title!==void 0&&(r.title=e.title);let n={type:"element",tagName:"img",properties:r,children:[]};return t.patch(e,n),t.applyData(e,n)}function ale(t,e){let r={type:"text",value:e.value.replace(/\r?\n|\r/g," ")};t.patch(e,r);let n={type:"element",tagName:"code",properties:{},children:[r]};return t.patch(e,n),t.applyData(e,n)}function sle(t,e){let r=String(e.identifier).toUpperCase(),n=t.definitionById.get(r);if(!n)return xD(t,e);let o={href:td(n.url||"")};n.title!==null&&n.title!==void 0&&(o.title=n.title);let i={type:"element",tagName:"a",properties:o,children:t.all(e)};return t.patch(e,i),t.applyData(e,i)}function lle(t,e){let r={href:td(e.url)};e.title!==null&&e.title!==void 0&&(r.title=e.title);let n={type:"element",tagName:"a",properties:r,children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function cle(t,e,r){let n=t.all(e),o=r?cOe(r):ule(e),i={},a=[];if(typeof e.checked=="boolean"){let u=n[0],d;u&&u.type==="element"&&u.tagName==="p"?d=u:(d={type:"element",tagName:"p",properties:{},children:[]},n.unshift(d)),d.children.length>0&&d.children.unshift({type:"text",value:" "}),d.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:e.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let s=-1;for(;++s1}function dle(t,e){let r={},n=t.all(e),o=-1;for(typeof e.start=="number"&&e.start!==1&&(r.start=e.start);++o0){let a={type:"element",tagName:"tbody",properties:{},children:t.wrap(r,!0)},s=Sx(e.children[1]),l=sD(e.children[e.children.length-1]);s&&l&&(a.position={start:s,end:l}),o.push(a)}let i={type:"element",tagName:"table",properties:{},children:t.wrap(o,!0)};return t.patch(e,i),t.applyData(e,i)}function gle(t,e,r){let n=r?r.children:void 0,i=(n?n.indexOf(e):1)===0?"th":"td",a=r&&r.type==="table"?r.align:void 0,s=a?a.length:e.children.length,l=-1,c=[];for(;++l0,!0),n[0]),o=n.index+n[0].length,n=r.exec(e);return i.push(vle(e.slice(o),o>0,!1)),i.join("")}function vle(t,e,r){let n=0,o=t.length;if(e){let i=t.codePointAt(n);for(;i===9||i===32;)n++,i=t.codePointAt(n)}if(r){let i=t.codePointAt(o-1);for(;i===9||i===32;)o--,i=t.codePointAt(o-1)}return o>n?t.slice(n,o):""}function xle(t,e){let r={type:"text",value:ble(String(e.value))};return t.patch(e,r),t.applyData(e,r)}function Sle(t,e){let r={type:"element",tagName:"hr",properties:{},children:[]};return t.patch(e,r),t.applyData(e,r)}var Cle={blockquote:Kse,break:$se,code:Zse,delete:Jse,emphasis:ele,footnoteReference:tle,heading:rle,html:nle,imageReference:ole,image:ile,inlineCode:ale,linkReference:sle,link:lle,listItem:cle,list:dle,paragraph:mle,root:ple,strong:fle,table:hle,tableCell:yle,tableRow:gle,text:xle,thematicBreak:Sle,toml:SD,yaml:SD,definition:SD,footnoteDefinition:SD};function SD(){}var Tle=typeof self=="object"?self:globalThis,uOe=(t,e)=>{let r=(o,i)=>(t.set(i,o),o),n=o=>{if(t.has(o))return t.get(o);let[i,a]=e[o];switch(i){case 0:case-1:return r(a,o);case 1:{let s=r([],o);for(let l of a)s.push(n(l));return s}case 2:{let s=r({},o);for(let[l,c]of a)s[n(l)]=n(c);return s}case 3:return r(new Date(a),o);case 4:{let{source:s,flags:l}=a;return r(new RegExp(s,l),o)}case 5:{let s=r(new Map,o);for(let[l,c]of a)s.set(n(l),n(c));return s}case 6:{let s=r(new Set,o);for(let l of a)s.add(n(l));return s}case 7:{let{name:s,message:l}=a;return r(new Tle[s](l),o)}case 8:return r(BigInt(a),o);case"BigInt":return r(Object(BigInt(a)),o)}return r(new Tle[i](a),o)};return n},vV=t=>uOe(new Map,t)(0);var wx="",{toString:dOe}={},{keys:mOe}=Object,aT=t=>{let e=typeof t;if(e!=="object"||!t)return[0,e];let r=dOe.call(t).slice(8,-1);switch(r){case"Array":return[1,wx];case"Object":return[2,wx];case"Date":return[3,wx];case"RegExp":return[4,wx];case"Map":return[5,wx];case"Set":return[6,wx]}return r.includes("Array")?[1,r]:r.includes("Error")?[7,r]:[2,r]},PD=([t,e])=>t===0&&(e==="function"||e==="symbol"),pOe=(t,e,r,n)=>{let o=(a,s)=>{let l=n.push(a)-1;return r.set(s,l),l},i=a=>{if(r.has(a))return r.get(a);let[s,l]=aT(a);switch(s){case 0:{let u=a;switch(l){case"bigint":s=8,u=a.toString();break;case"function":case"symbol":if(t)throw new TypeError("unable to serialize "+l);u=null;break;case"undefined":return o([-1],a)}return o([s,u],a)}case 1:{if(l)return o([l,[...a]],a);let u=[],d=o([s,u],a);for(let m of a)u.push(i(m));return d}case 2:{if(l)switch(l){case"BigInt":return o([l,a.toString()],a);case"Boolean":case"Number":case"String":return o([l,a.valueOf()],a)}if(e&&"toJSON"in a)return i(a.toJSON());let u=[],d=o([s,u],a);for(let m of mOe(a))(t||!PD(aT(a[m])))&&u.push([i(m),i(a[m])]);return d}case 3:return o([s,a.toISOString()],a);case 4:{let{source:u,flags:d}=a;return o([s,{source:u,flags:d}],a)}case 5:{let u=[],d=o([s,u],a);for(let[m,p]of a)(t||!(PD(aT(m))||PD(aT(p))))&&u.push([i(m),i(p)]);return d}case 6:{let u=[],d=o([s,u],a);for(let m of a)(t||!PD(aT(m)))&&u.push(i(m));return d}}let{message:c}=a;return o([s,{name:l,message:c}],a)};return i},bV=(t,{json:e,lossy:r}={})=>{let n=[];return pOe(!(e||r),!!e,new Map,n)(t),n};var _x=typeof structuredClone=="function"?(t,e)=>e&&("json"in e||"lossy"in e)?vV(bV(t,e)):structuredClone(t):(t,e)=>vV(bV(t,e));function fOe(t,e){let r=[{type:"text",value:"\u21A9"}];return e>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(e)}]}),r}function hOe(t,e){return"Back to reference "+(t+1)+(e>1?"-"+e:"")}function wle(t){let e=typeof t.options.clobberPrefix=="string"?t.options.clobberPrefix:"user-content-",r=t.options.footnoteBackContent||fOe,n=t.options.footnoteBackLabel||hOe,o=t.options.footnoteLabel||"Footnotes",i=t.options.footnoteLabelTagName||"h2",a=t.options.footnoteLabelProperties||{className:["sr-only"]},s=[],l=-1;for(;++l0&&h.push({type:"text",value:" "});let x=typeof r=="string"?r:r(l,p);typeof x=="string"&&(x={type:"text",value:x}),h.push({type:"element",tagName:"a",properties:{href:"#"+e+"fnref-"+m+(p>1?"-"+p:""),dataFootnoteBackref:"",ariaLabel:typeof n=="string"?n:n(l,p),className:["data-footnote-backref"]},children:Array.isArray(x)?x:[x]})}let b=u[u.length-1];if(b&&b.type==="element"&&b.tagName==="p"){let x=b.children[b.children.length-1];x&&x.type==="text"?x.value+=" ":b.children.push({type:"text",value:" "}),b.children.push(...h)}else u.push(...h);let v={type:"element",tagName:"li",properties:{id:e+"fn-"+m},children:t.wrap(u,!0)};t.patch(c,v),s.push(v)}if(s.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:i,properties:U(w({},_x(a)),{id:"footnote-label"}),children:[{type:"text",value:o}]},{type:"text",value:` +`},{type:"element",tagName:"ol",properties:{},children:t.wrap(s,!0)},{type:"text",value:` +`}]}}var ED=function(t){if(t==null)return bOe;if(typeof t=="function")return ID(t);if(typeof t=="object")return Array.isArray(t)?gOe(t):yOe(t);if(typeof t=="string")return vOe(t);throw new Error("Expected function, string, or object as test")};function gOe(t){let e=[],r=-1;for(;++r":""))+")"})}return m;function m(){let p=_le,h,f,b;if((!e||i(l,c,u[u.length-1]||void 0))&&(p=SOe(r(l,u)),p[0]===DD))return p;if("children"in l&&l.children){let v=l;if(v.children&&p[0]!==SV)for(f=(n?v.children.length:-1)+a,b=u.concat(v);f>-1&&f0&&r.push({type:"text",value:` +`}),r}function Ple(t){let e=0,r=t.charCodeAt(e);for(;r===9||r===32;)e++,r=t.charCodeAt(e);return t.slice(e)}function AD(t,e){let r=Ele(t,e),n=r.one(t,void 0),o=wle(r),i=Array.isArray(n)?{type:"root",children:n}:n||{type:"root",children:[]};return o&&("children"in i,i.children.push({type:"text",value:` +`},o)),i}function kD(t,e){return t&&"run"in t?function(r,n){return N(this,null,function*(){let o=AD(r,w({file:n},e));yield t.run(o,n)})}:function(r,n){return AD(r,w({file:n},e||t))}}function wV(t){if(t)throw t}var LD=Ot(Ole(),1);function lT(t){if(typeof t!="object"||t===null)return!1;let e=Object.getPrototypeOf(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)}function _V(){let t=[],e={run:r,use:n};return e;function r(...o){let i=-1,a=o.pop();if(typeof a!="function")throw new TypeError("Expected function as last argument, not "+a);s(null,...o);function s(l,...c){let u=t[++i],d=-1;if(l){a(l);return}for(;++da.length,l;s&&a.push(o);try{l=t.apply(this,a)}catch(c){let u=c;if(s&&r)throw u;return o(u)}s||(l&&l.then&&typeof l.then=="function"?l.then(i,o):l instanceof Error?o(l):i(l))}function o(a,...s){r||(r=!0,e(a,...s))}function i(a){o(null,a)}}var Kd={basename:EOe,dirname:IOe,extname:DOe,join:AOe,sep:"/"};function EOe(t,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');cT(t);let r=0,n=-1,o=t.length,i;if(e===void 0||e.length===0||e.length>t.length){for(;o--;)if(t.codePointAt(o)===47){if(i){r=o+1;break}}else n<0&&(i=!0,n=o+1);return n<0?"":t.slice(r,n)}if(e===t)return"";let a=-1,s=e.length-1;for(;o--;)if(t.codePointAt(o)===47){if(i){r=o+1;break}}else a<0&&(i=!0,a=o+1),s>-1&&(t.codePointAt(o)===e.codePointAt(s--)?s<0&&(n=o):(s=-1,n=a));return r===n?n=a:n<0&&(n=t.length),t.slice(r,n)}function IOe(t){if(cT(t),t.length===0)return".";let e=-1,r=t.length,n;for(;--r;)if(t.codePointAt(r)===47){if(n){e=r;break}}else n||(n=!0);return e<0?t.codePointAt(0)===47?"/":".":e===1&&t.codePointAt(0)===47?"//":t.slice(0,e)}function DOe(t){cT(t);let e=t.length,r=-1,n=0,o=-1,i=0,a;for(;e--;){let s=t.codePointAt(e);if(s===47){if(a){n=e+1;break}continue}r<0&&(a=!0,r=e+1),s===46?o<0?o=e:i!==1&&(i=1):o>-1&&(i=-1)}return o<0||r<0||i===0||i===1&&o===r-1&&o===n+1?"":t.slice(o,r)}function AOe(...t){let e=-1,r;for(;++e0&&t.codePointAt(t.length-1)===47&&(r+="/"),e?"/"+r:r}function MOe(t,e){let r="",n=0,o=-1,i=0,a=-1,s,l;for(;++a<=t.length;){if(a2){if(l=r.lastIndexOf("/"),l!==r.length-1){l<0?(r="",n=0):(r=r.slice(0,l),n=r.length-1-r.lastIndexOf("/")),o=a,i=0;continue}}else if(r.length>0){r="",n=0,o=a,i=0;continue}}e&&(r=r.length>0?r+"/..":"..",n=2)}else r.length>0?r+="/"+t.slice(o+1,a):r=t.slice(o+1,a),n=a-o-1;o=a,i=0}else s===46&&i>-1?i++:i=-1}return r}function cT(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}var Nle={cwd:ROe};function ROe(){return"/"}function Px(t){return!!(t!==null&&typeof t=="object"&&"href"in t&&t.href&&"protocol"in t&&t.protocol&&t.auth===void 0)}function Vle(t){if(typeof t=="string")t=new URL(t);else if(!Px(t)){let e=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+t+"`");throw e.code="ERR_INVALID_ARG_TYPE",e}if(t.protocol!=="file:"){let e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return LOe(t)}function LOe(t){if(t.hostname!==""){let n=new TypeError('File URL host must be "localhost" or empty on darwin');throw n.code="ERR_INVALID_FILE_URL_HOST",n}let e=t.pathname,r=-1;for(;++r0){let[p,...h]=u,f=n[m][1];lT(f)&&lT(p)&&(p=(0,LD.default)(!0,f,p)),n[m]=[c,p,...h]}}}},RV=new MV().freeze();function DV(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `parser`")}function AV(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `compiler`")}function kV(t,e){if(e)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Gle(t){if(!lT(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function jle(t,e,r){if(!r)throw new Error("`"+t+"` finished async. Use `"+e+"` instead")}function RD(t){return FOe(t)?t:new Jy(t)}function FOe(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function NOe(t){return typeof t=="string"||VOe(t)}function VOe(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}var zOe="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",Hle=[],qle={allowDangerousHtml:!0},UOe=/^(https?|ircs?|mailto|xmpp)$/i,GOe=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function BD(t){let e=t.allowedElements,r=t.allowElement,n=t.children||"",o=t.className,i=t.components,a=t.disallowedElements,s=t.rehypePlugins||Hle,l=t.remarkPlugins||Hle,c=t.remarkRehypeOptions?w(w({},t.remarkRehypeOptions),qle):qle,u=t.skipHtml,d=t.unwrapDisallowed,m=t.urlTransform||Wle,p=RV().use(bD).use(l).use(kD,c).use(s),h=new Jy;typeof n=="string"?h.value=n:(""+n,void 0),e&&a&&void 0;for(let x of GOe)Object.hasOwn(t,x.from)&&(""+x.from+(x.to?"use `"+x.to+"` instead":"remove it")+zOe+x.id,void 0);let f=p.parse(h),b=p.runSync(f,h);return o&&(b={type:"element",tagName:"div",properties:{className:o},children:b.type==="root"?b.children:[b]}),sT(b,v),Y4(b,{Fragment:Ex.Fragment,components:i,ignoreInvalidStyle:!0,jsx:Ex.jsx,jsxs:Ex.jsxs,passKeys:!0,passNode:!0});function v(x,S,T){if(x.type==="raw"&&T&&typeof S=="number")return u?T.children.splice(S,1):T.children[S]={type:"text",value:x.value},S;if(x.type==="element"){let E;for(E in KC)if(Object.hasOwn(KC,E)&&Object.hasOwn(x.properties,E)){let _=x.properties[E],D=KC[E];(D===null||D.includes(x.tagName))&&(x.properties[E]=m(String(_||""),E,x))}}if(x.type==="element"){let E=e?!e.includes(x.tagName):a?a.includes(x.tagName):!1;if(!E&&r&&typeof S=="number"&&(E=!r(x,S,T)),E&&T&&typeof S=="number")return d&&x.children?T.children.splice(S,1,...x.children):T.children.splice(S,1),S}}}function Wle(t){let e=t.indexOf(":"),r=t.indexOf("?"),n=t.indexOf("#"),o=t.indexOf("/");return e<0||o>-1&&e>o||r>-1&&e>r||n>-1&&e>n||UOe.test(t.slice(0,e))?t:""}var Jp=Ot(Or());var OD=class extends Mt{constructor(){super(...arguments),this.updateParams=e=>{this.plugin.managers.animation.updateParams({[e.name]:e.value})},this.updateCurrentParams=e=>{this.plugin.managers.animation.updateCurrentParams({[e.name]:e.value})},this.startOrStop=()=>{let e=this.plugin.managers.animation;e.state.animationState==="playing"?e.stop():(this.props.onStart&&this.props.onStart(),e.start())}}componentDidMount(){this.subscribe(this.plugin.managers.animation.events.updated,()=>this.forceUpdate())}render(){var e,r;let n=this.plugin.managers.animation;if(n.isEmpty)return null;let o=n.state.animationState==="playing",i=(r=(e=n.current.anim).canApply)===null||r===void 0?void 0:r.call(e,this.plugin);return(0,Jp.jsxs)(Jp.Fragment,{children:[(0,Jp.jsx)(Hr,{params:n.getParams(),values:n.state.params,onChange:this.updateParams,isDisabled:o}),(0,Jp.jsx)(Hr,{params:n.current.params,values:n.current.paramValues,onChange:this.updateCurrentParams,isDisabled:o}),(0,Jp.jsx)("div",{className:"msp-flex-row",children:(0,Jp.jsx)(vt,{icon:n.state.animationState!=="playing"?void 0:lP,onClick:this.startOrStop,disabled:i!==void 0&&i.canApply===!1,children:n.state.animationState==="playing"?"Stop":i===void 0||i.canApply?"Start":i.reason||"Start"})})]})}};var cr=Ot(Or());var jOe=Ot(Or());var yi=Ot(Or());var $d=class extends Kn{constructor(){super(...arguments),this.onChange=({name:e,value:r})=>{let n=U(w({},this.props.params),{[e]:r});this.props.events.onChange(n,this.areInitial(n),this.validate(n))}}validate(e){}areInitial(e){return g.areEqual(this.props.info.params,e,this.props.info.initialValues)}render(){return(0,yi.jsx)(Hr,{params:this.props.info.params,values:this.props.params,onChange:this.onChange,onEnter:this.props.events.onEnter,isDisabled:this.props.isDisabled})}};(function(t){function e(o){let i=Object.keys(o);for(let a of i)if(!o[a].isHidden)return!1;return!0}function r(o,i,a,s){let l=i.cells.get(s).obj,c=a.definition.params?a.definition.params(l,o):{};return{initialValues:g.getDefaultValues(c),params:c,isEmpty:e(c)}}t.infoFromAction=r;function n(o,i,a){let s=i.cells.get(a.ref),l=s.params&&s.params.definition||{};return{initialValues:s.params&&s.params.values||{},params:l,isEmpty:e(l)}}t.infoFromTransform=n})($d||($d={}));var Ix=class extends Kn{constructor(){super(...arguments),this.busy=new da(!1),this.onEnter=()=>{this.state.error||this.apply()},this.autoApplyHandle=void 0,this.events={onEnter:this.onEnter,onChange:(e,r,n)=>{this.clearAutoApply(),this.setState({params:e,isInitial:r,error:n&&n[0]},()=>{!r&&!this.state.error&&this.canAutoApply(e)&&(this.clearAutoApply(),this.autoApplyHandle=setTimeout(this.apply,50))})}},this.apply=()=>N(this,null,function*(){var e,r;this.clearAutoApply(),this.setState({busy:!0});try{yield this.applyAction()}catch(n){console.error(n)}finally{(r=(e=this.props).onApply)===null||r===void 0||r.call(e),this.busy.next(!1)}}),this.refresh=()=>{this.setState({params:this.getInfo().initialValues,isInitial:!0,error:void 0})},this.setDefault=()=>{let e=this.getInfo(),r=g.getDefaultValues(e.params);this.setState({params:r,isInitial:g.areEqual(e.params,r,e.initialValues),error:void 0})},this.toggleExpanded=()=>{this.setState({isCollapsed:!this.state.isCollapsed})}}clearAutoApply(){this.autoApplyHandle!==void 0&&(clearTimeout(this.autoApplyHandle),this.autoApplyHandle=void 0)}componentDidMount(){this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.busy.value!==e&&this.busy.next(e)}),this.subscribe(this.busy.pipe(xT(1)),e=>{this.setState({busy:e})})}renderApply(){let e=this.canApply();return this.props.autoHideApply&&(!e||this.canAutoApply(this.state.params))?null:(0,yi.jsxs)("div",{className:"msp-transform-apply-wrap",children:[(0,yi.jsx)(pt,{svg:TS,className:"msp-transform-default-params",onClick:this.setDefault,disabled:this.state.busy,title:"Set default params"}),(0,yi.jsx)("div",{className:"msp-transform-apply-wider",children:(0,yi.jsx)(vt,{icon:e?Pc:void 0,className:`msp-btn-commit msp-btn-commit-${e?"on":"off"}`,onClick:this.apply,disabled:!e,children:this.props.applyLabel||this.applyText()})})]})}renderDefault(){let e=this.getInfo(),r=e.isEmpty&&this.isUpdate(),n=this.getHeader(),o=this.getTransformerId(),i=this.plugin.customParamEditors.has(o)?this.plugin.customParamEditors.get(o):$d,a=this.state.isCollapsed?"msp-transform-wrapper msp-transform-wrapper-collapsed":"msp-transform-wrapper",s=null;if(!r&&!this.state.isCollapsed){let{a:c,b:u,bCell:d}=this.getSourceAndTarget(),m=this.renderApply();s=(0,yi.jsxs)(yi.Fragment,{children:[(0,yi.jsx)(i,{info:e,a:c,b:u,bCell:d,events:this.events,params:this.state.params,isDisabled:this.state.busy}),m]})}let l=(0,yi.jsxs)("div",{className:a,style:{marginBottom:this.props.noMargin?0:void 0},children:[n!=="none"&&!this.props.wrapInExpander&&(0,yi.jsx)("div",{className:"msp-transform-header",children:(0,yi.jsxs)(vt,{onClick:this.toggleExpanded,title:n.description,children:[!r&&(0,yi.jsx)(pr,{svg:this.state.isCollapsed?Ls:Rs}),n.name]})}),s]});return r||!this.props.wrapInExpander?l:(0,yi.jsx)(Ci,{header:this.isUpdate()?`Update ${n==="none"?"":n.name}`:`Apply ${n==="none"?"":n.name}`,headerLeftMargin:this.props.expanderHeaderLeftMargin,children:l})}renderSimple(){var e,r,n;let o=this.getInfo(),i=this.canApply(),a=(0,yi.jsxs)("div",{className:"msp-flex-row",children:[(0,yi.jsx)(vt,{icon:(e=this.props.simpleApply)===null||e===void 0?void 0:e.icon,title:(r=this.props.simpleApply)===null||r===void 0?void 0:r.title,disabled:this.state.busy||!i,onClick:this.apply,className:"msp-btn-apply-simple",children:(n=this.props.simpleApply)===null||n===void 0?void 0:n.header}),!o.isEmpty&&(0,yi.jsx)(Gn,{icon:pl,label:"",title:"Options",toggle:this.toggleExpanded,isSelected:!this.state.isCollapsed,disabled:this.state.busy,style:{flex:"0 0 40px",padding:0}})]});if(this.state.isCollapsed)return a;let s=this.getTransformerId(),l=this.plugin.customParamEditors.has(s)?this.plugin.customParamEditors.get(s):$d,{a:c,b:u,bCell:d}=this.getSourceAndTarget();return(0,yi.jsxs)(yi.Fragment,{children:[a,(0,yi.jsx)(l,{info:o,a:c,b:u,bCell:d,events:this.events,params:this.state.params,isDisabled:this.state.busy})]})}render(){return this.props.simpleApply?this.renderSimple():this.renderDefault()}};var Xs=class extends Ix{constructor(){super(...arguments),this._getInfo=Js(e=>$d.infoFromTransform(this.plugin,this.props.state,e)),this.state={error:void 0,isInitial:!0,params:this.getInfo().initialValues,busy:!1,isCollapsed:this.props.initiallyCollapsed}}applyAction(){return this.props.customUpdate?this.props.customUpdate(this.state.params):this.plugin.state.updateTransform(this.props.state,this.props.transform.ref,this.state.params)}getInfo(){return this._getInfo(this.props.transform)}getTransformerId(){return this.props.transform.transformer.id}getHeader(){return this.props.customHeader||this.props.transform.transformer.definition.display}canApply(){let{state:e}=this.props,r=e.cells.get(this.props.transform.ref);if(!r)return!1;if(r.status==="error"){let n=e.cells.get(this.props.transform.parent);return n?n.status==="ok":!1}return!this.state.error&&!this.state.busy&&!this.state.isInitial}applyText(){return this.canApply()?"Update":"Nothing to Update"}isUpdate(){return!0}getSourceAndTarget(){let e=this.props.state.cells.get(this.props.transform.ref);return{a:this.props.state.cells.get(this.props.transform.parent).obj,b:e?.obj,bCell:e}}canAutoApply(e){let r=this.props.transform.transformer.definition.canAutoUpdate;if(!r)return!1;let{state:n}=this.props,o=n.cells.get(this.props.transform.ref);if(!o||!o.sourceRef||o.status!=="ok")return!1;let i=n.cells.get(o.sourceRef);return r({a:i.obj,b:o.obj,oldParams:this.getInfo().initialValues,newParams:e},this.plugin)}componentDidMount(){super.componentDidMount(),this.props.toggleCollapsed&&this.subscribe(this.props.toggleCollapsed,()=>this.setState({isCollapsed:!this.state.isCollapsed})),this.subscribe(this.plugin.state.events.object.updated,({ref:e,state:r})=>{this.props.transform.ref!==e||this.props.state!==r||this.state.params!==this.props.transform.params&&(this._getInfo=Js(n=>$d.infoFromTransform(this.plugin,this.props.state,n)),this.setState({params:this.props.transform.params,isInitial:!0}))})}componentDidUpdate(e){var r;if(this.props.transform!==e.transform){let n=this.props.state.cells.get(this.props.transform.ref);this.setState({params:((r=n.params)===null||r===void 0?void 0:r.values)||{},isInitial:!0,error:void 0,simpleOnly:this.state.simpleOnly})}}};var Ji=Ot(Or());var FD=class extends Kn{get current(){return this.plugin.managers.structure.hierarchy.behaviors.selection}componentDidMount(){this.subscribe(this.current,()=>this.forceUpdate())}get unitcell(){var e;let{selection:r}=this.plugin.managers.structure.hierarchy;if(r.structures.length===0)return null;let n=[];for(let o of r.structures){let i=o.model;i?.unitcell&&(!((e=i.unitcell)===null||e===void 0)&&e.cell.obj)&&n.push(i.unitcell)}return n.length===0?null:(0,Ji.jsx)(ND,{refs:n,labelMultiple:"Unit Cells"})}get customControls(){let e=[];return this.plugin.genericRepresentationControls.forEach((r,n)=>{let[o,i]=r(this.plugin.managers.structure.hierarchy.selection);o.length>0&&e.push((0,Ji.jsx)("div",{children:(0,Ji.jsx)(ND,{refs:o,labelMultiple:i})},n))}),e.length>0?e:null}render(){return(0,Ji.jsx)(Ji.Fragment,{children:(0,Ji.jsxs)("div",{style:{marginTop:"6px"},children:[this.unitcell,this.customControls]})})}},ND=class extends Kn{constructor(){super(...arguments),this.state={showOptions:!1},this.toggleVisibility=e=>{e.preventDefault(),this.plugin.managers.structure.hierarchy.toggleVisibility(this.props.refs),e.currentTarget.blur()},this.highlight=e=>{e.preventDefault(),this.pivot.cell.parent&&Re.Interactivity.Object.Highlight(this.plugin,{state:this.pivot.cell.parent,ref:this.props.refs.map(r=>r.cell.transform.ref)})},this.clearHighlight=e=>{e.preventDefault(),Re.Interactivity.ClearHighlights(this.plugin)},this.focus=e=>{var r;e.preventDefault();let n=!0;for(let i of this.props.refs)if(!i.cell.state.isHidden){n=!1;break}n&&this.plugin.managers.structure.hierarchy.toggleVisibility(this.props.refs,"show");let o=[];for(let i of this.props.refs){if(i.cell.state.isHidden)continue;let a=(r=i.cell.obj)===null||r===void 0?void 0:r.data.repr.getLoci();a&&o.push(a)}this.plugin.managers.camera.focusLoci(o)},this.toggleOptions=()=>this.setState({showOptions:!this.state.showOptions})}componentDidMount(){this.subscribe(this.plugin.state.events.cell.stateUpdated,e=>{var r;Ll.ObjectEvent.isCell(e,(r=this.pivot)===null||r===void 0?void 0:r.cell)&&this.forceUpdate()})}get pivot(){return this.props.refs[0]}render(){let{refs:e,labelMultiple:r}=this.props;if(e.length===0)return null;let n=e[0],o,i;if(e.length===1){let{obj:a}=n.cell;if(!a)return null;o=a?.label,i=a?.description}else o=`${e.length} ${r||"Objects"}`;return(0,Ji.jsxs)(Ji.Fragment,{children:[(0,Ji.jsxs)("div",{className:"msp-flex-row",children:[(0,Ji.jsxs)("button",{className:"msp-form-control msp-control-button-label",title:`${o}. Click to focus.`,onClick:this.focus,onMouseEnter:this.highlight,onMouseLeave:this.clearHighlight,style:{textAlign:"left"},children:[o," ",(0,Ji.jsx)("small",{children:i})]}),(0,Ji.jsx)(pt,{svg:n.cell.state.isHidden?Ec:Ic,toggleState:!1,className:"msp-form-control",onClick:this.toggleVisibility,title:`${n.cell.state.isHidden?"Show":"Hide"}`,small:!0,flex:!0}),e.length===1&&(0,Ji.jsx)(pt,{svg:Pu,className:"msp-form-control",onClick:this.toggleOptions,title:"Options",toggleState:this.state.showOptions,flex:!0})]}),e.length===1&&this.state.showOptions&&n.cell.parent&&(0,Ji.jsx)(Ji.Fragment,{children:(0,Ji.jsx)("div",{className:"msp-control-offset",children:(0,Ji.jsx)(Xs,{state:n.cell.parent,transform:n.cell.transform,customHeader:"none",autoHideApply:!0})})})]})}};var VD=class extends hl{defaultState(){return{header:"Components",isCollapsed:!1,isDisabled:!1,brand:{accent:"blue",svg:bS}}}componentDidMount(){this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,e=>this.setState({description:km.getSelectedStructuresDescription(this.plugin)}))}renderControls(){return(0,cr.jsxs)(cr.Fragment,{children:[(0,cr.jsx)(LV,{}),(0,cr.jsx)(OV,{}),(0,cr.jsx)(FD,{})]})}},LV=class extends Kn{constructor(){super(...arguments),this.state={isEmpty:!0,isBusy:!1,canUndo:!1},this.togglePreset=this.toggleAction("preset"),this.toggleAdd=this.toggleAction("add"),this.toggleOptions=this.toggleAction("options"),this.hideAction=()=>this.setState({action:void 0}),this.applyPreset=e=>{if(this.hideAction(),!e)return;let r=this.plugin.managers.structure,{structures:n}=r.hierarchy.selection;e.value===null?r.component.clear(n):r.component.applyPreset(n,e.value)},this.undo=()=>{let e=this.plugin.state.data.undo();e&&this.plugin.runTask(e)}}get isDisabled(){return this.state.isBusy||this.state.isEmpty}componentDidMount(){this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,e=>this.setState({action:this.state.action!=="options"||e.structures.length===0?void 0:"options",isEmpty:e.structures.length===0})),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e,action:this.state.action!=="options"?void 0:"options"})}),this.subscribe(this.plugin.state.data.events.historyUpdated,({state:e})=>{this.setState({canUndo:e.canUndo})})}toggleAction(e){return()=>this.setState({action:this.state.action===e?void 0:e})}get presetControls(){return(0,cr.jsx)(wt,{items:this.presetActions,onSelect:this.applyPreset})}get presetActions(){let e=this.plugin.managers.structure.component.pivotStructure,r=this.plugin.builders.structure.representation.getPresets(e?.cell.obj);return wt.createItems(r,{label:n=>n.display.name,category:n=>n.display.group,description:n=>n.display.description})}render(){let e=this.state.canUndo?`Undo ${this.plugin.state.data.latestUndoLabel}`:"Some mistakes of the past can be undone.";return(0,cr.jsxs)(cr.Fragment,{children:[(0,cr.jsxs)("div",{className:"msp-flex-row",children:[(0,cr.jsx)(Gn,{icon:Mp,label:"Preset",title:"Apply a representation preset for the current structure(s).",toggle:this.togglePreset,isSelected:this.state.action==="preset",disabled:this.isDisabled}),(0,cr.jsx)(Gn,{icon:Fd,label:"Add",title:"Add a new representation component for a selection.",toggle:this.toggleAdd,isSelected:this.state.action==="add",disabled:this.isDisabled}),(0,cr.jsx)(Gn,{icon:pl,label:"",title:"Options that are applied to all applicable representations.",style:{flex:"0 0 40px",padding:0},toggle:this.toggleOptions,isSelected:this.state.action==="options",disabled:this.isDisabled}),(0,cr.jsx)(pt,{svg:_S,className:"msp-flex-item",flex:"40px",onClick:this.undo,disabled:!this.state.canUndo||this.isDisabled,title:e})]}),this.state.action==="preset"&&this.presetControls,this.state.action==="add"&&(0,cr.jsx)("div",{className:"msp-control-offset",children:(0,cr.jsx)(uT,{onApply:this.hideAction})}),this.state.action==="options"&&(0,cr.jsx)("div",{className:"msp-control-offset",children:(0,cr.jsx)(BV,{isDisabled:this.isDisabled})})]})}},uT=class extends Kn{constructor(){super(...arguments),this.state=this.createState(),this.apply=()=>{let e=this.props.forSelection?this.currentStructures:this.selectedStructures;this.props.onApply(),this.plugin.managers.structure.component.add(this.state.values,e)},this.paramsChanged=e=>this.setState({values:e})}createState(){let e=ql.getAddParams(this.plugin);return{params:e,values:g.getDefaultValues(e)}}get selectedStructures(){return this.plugin.managers.structure.component.currentStructures}get currentStructures(){return this.plugin.managers.structure.hierarchy.current.structures}render(){return(0,cr.jsxs)(cr.Fragment,{children:[(0,cr.jsx)(Hr,{params:this.state.params,values:this.state.values,onChangeValues:this.paramsChanged}),(0,cr.jsx)(vt,{icon:Fd,title:"Use Selection and optional Representation to create a new Component.",className:"msp-btn-commit msp-btn-commit-on",onClick:this.apply,style:{marginTop:"1px"},children:"Create Component"})]})}},BV=class extends Kn{constructor(){super(...arguments),this.update=e=>this.plugin.managers.structure.component.setOptions(e)}componentDidMount(){this.subscribe(this.plugin.managers.structure.component.events.optionsUpdated,()=>this.forceUpdate())}render(){return(0,cr.jsx)(Hr,{params:ql.OptionsParams,values:this.plugin.managers.structure.component.state.options,onChangeValues:this.update,isDisabled:this.props.isDisabled})}},OV=class extends Kn{componentDidMount(){this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,()=>{this.forceUpdate()})}render(){let e=this.plugin.managers.structure.hierarchy.currentComponentGroups;return e.length===0?null:(0,cr.jsx)("div",{style:{marginTop:"6px"},children:e.map(r=>(0,cr.jsx)(FV,{group:r},r[0].cell.transform.ref))})}},FV=class extends Kn{constructor(){super(...arguments),this.state={action:void 0},this.toggleVisible=e=>{e.preventDefault(),e.currentTarget.blur(),this.plugin.managers.structure.component.toggleVisibility(this.props.group)},this.selectAction=e=>{e&&(0,e?.value)()},this.remove=()=>this.plugin.managers.structure.hierarchy.remove(this.props.group,!0),this.toggleAction=()=>this.setState({action:this.state.action==="action"?void 0:"action"}),this.toggleLabel=()=>this.setState({action:this.state.action==="label"?void 0:"label"}),this.highlight=e=>{e.preventDefault(),this.props.group[0].cell.parent&&Re.Interactivity.Object.Highlight(this.plugin,{state:this.props.group[0].cell.parent,ref:this.props.group.map(r=>r.cell.transform.ref)})},this.clearHighlight=e=>{e.preventDefault(),Re.Interactivity.ClearHighlights(this.plugin)},this.focus=()=>{let e=!0;for(let r of this.props.group)if(!r.cell.state.isHidden){e=!1;break}e&&this.plugin.managers.structure.hierarchy.toggleVisibility(this.props.group,"show"),this.plugin.managers.camera.focusSpheres(this.props.group,r=>{var n;if(!r.cell.state.isHidden)return(n=r.cell.obj)===null||n===void 0?void 0:n.data.boundary.sphere})},this.updateLabel=e=>{this.plugin.managers.structure.component.updateLabel(this.pivot,e)}}get pivot(){return this.props.group[0]}componentDidMount(){this.subscribe(this.plugin.state.events.cell.stateUpdated,e=>{Ll.ObjectEvent.isCell(e,this.pivot.cell)&&this.forceUpdate()})}get colorByActions(){var e,r;let n=this.plugin.managers.structure.component,i=(e=this.pivot.representations[0].cell.transform.params)===null||e===void 0?void 0:e.colorTheme.name,a=zZ(this.plugin,(r=this.pivot.cell.obj)===null||r===void 0?void 0:r.data);return wt.createItemsFromSelectOptions(a,{value:s=>()=>n.updateRepresentationsTheme(this.props.group,{color:s[0]}),selected:s=>s[0]===i})}get actions(){let e=this.plugin.managers.structure.component,r=[[wt.Header("Add Representation"),...ql.getRepresentationTypes(this.plugin,this.props.group[0]).map(n=>wt.Item(n[1],()=>e.addRepresentation(this.props.group,n[0])))]];return this.pivot.representations.length>0&&r.push([wt.Header("Set Coloring",{isIndependent:!0}),...this.colorByActions]),e.canBeModified(this.props.group[0])&&r.push([wt.Header("Modify by Selection"),wt.Item("Include",()=>e.modifyByCurrentSelection(this.props.group,"union"),{icon:gS}),wt.Item("Subtract",()=>e.modifyByCurrentSelection(this.props.group,"subtract"),{icon:yS}),wt.Item("Intersect",()=>e.modifyByCurrentSelection(this.props.group,"intersect"),{icon:vS})]),r.push(wt.Item("Select This",()=>e.selectThis(this.props.group),{icon:yy})),e.canBeModified(this.props.group[0])&&r.push(wt.Item("Edit Label",this.toggleLabel)),r}get reprLabel(){var e;let r=this.pivot;return r.representations.length===0?"No repr.":r.representations.length===1?(e=r.representations[0].cell.obj)===null||e===void 0?void 0:e.label:`${r.representations.length} reprs`}render(){var e;let r=this.pivot,n=r.cell,o=(e=n.obj)===null||e===void 0?void 0:e.label,i=this.reprLabel;return(0,cr.jsxs)(cr.Fragment,{children:[(0,cr.jsxs)("div",{className:"msp-flex-row",children:[(0,cr.jsxs)(vt,{noOverflow:!0,className:"msp-control-button-label",title:`${o}. Click to focus.`,onClick:this.focus,onMouseEnter:this.highlight,onMouseLeave:this.clearHighlight,style:{textAlign:"left"},children:[o,(0,cr.jsx)("small",{className:"msp-25-lower-contrast-text",style:{float:"right"},children:i})]}),(0,cr.jsx)(pt,{svg:n.state.isHidden?Ec:Ic,toggleState:!1,onClick:this.toggleVisible,title:`${n.state.isHidden?"Show":"Hide"} component`,small:!0,className:"msp-form-control",flex:!0}),(0,cr.jsx)(pt,{svg:Hi,toggleState:!1,onClick:this.remove,title:"Remove",small:!0,className:"msp-form-control",flex:!0}),(0,cr.jsx)(pt,{svg:Pu,onClick:this.toggleAction,title:"Actions",toggleState:this.state.action==="action",className:"msp-form-control",flex:!0})]}),this.state.action==="label"&&(0,cr.jsx)("div",{className:"msp-control-offset",style:{marginBottom:"6px"},children:(0,cr.jsx)(Ga,{label:"Label",control:(0,cr.jsxs)("div",{style:{display:"flex",textAlignLast:"center"},children:[(0,cr.jsx)(fl,{onChange:this.updateLabel,value:o,style:{flex:"1 1 auto",minWidth:0},className:"msp-form-control",blurOnEnter:!0,blurOnEscape:!0}),(0,cr.jsx)(pt,{svg:Pc,onClick:this.toggleLabel,className:"msp-form-control msp-control-button-label",flex:!0})]})})}),this.state.action==="action"&&(0,cr.jsxs)("div",{className:"msp-accent-offset",children:[(0,cr.jsx)("div",{style:{marginBottom:"6px"},children:(0,cr.jsx)(wt,{items:this.actions,onSelect:this.selectAction,noOffset:!0})}),(0,cr.jsx)("div",{style:{marginBottom:"6px"},children:r.representations.map(a=>(0,cr.jsx)(NV,{group:this.props.group,representation:a},a.cell.transform.ref))})]})]})}},NV=class extends Kn{constructor(){super(...arguments),this.remove=()=>this.plugin.managers.structure.component.removeRepresentations(this.props.group,this.props.representation),this.toggleVisible=e=>{e.preventDefault(),e.currentTarget.blur(),this.plugin.managers.structure.component.toggleVisibility(this.props.group,this.props.representation)},this.update=e=>this.plugin.managers.structure.component.updateRepresentations(this.props.group,this.props.representation,e)}componentDidMount(){this.subscribe(this.plugin.state.events.cell.stateUpdated,e=>{Ll.ObjectEvent.isCell(e,this.props.representation.cell)&&this.forceUpdate()})}render(){var e;let r=this.props.representation.cell;return(0,cr.jsxs)("div",{className:"msp-representation-entry",children:[r.parent&&(0,cr.jsx)(Ci,{header:`${((e=r.obj)===null||e===void 0?void 0:e.label)||""} Representation`,noOffset:!0,children:(0,cr.jsx)(Xs,{state:r.parent,transform:r.transform,customHeader:"none",customUpdate:this.update,noMargin:!0})}),(0,cr.jsx)(pt,{svg:Hi,onClick:this.remove,title:"Remove",small:!0,className:"msp-default-bg",toggleState:!1,style:{position:"absolute",top:0,right:"32px",lineHeight:"24px",height:"24px",textAlign:"right",width:"44px",paddingRight:"6px",background:"none"}}),(0,cr.jsx)(pt,{svg:this.props.representation.cell.state.isHidden?Ec:Ic,toggleState:!1,onClick:this.toggleVisible,title:"Toggle Visibility",small:!0,className:"msp-default-bg",style:{position:"absolute",top:0,right:0,lineHeight:"24px",height:"24px",textAlign:"right",width:"32px",paddingRight:"6px",background:"none"}})]})}};var gr=Ot(Or());var qt=Ot(Or()),Yle=Ot(Po());function HOe(t,e){var r;let n=[],o=e==="auth"?"auth_asym_id":"label_asym_id",i=e==="auth"?"auth_seq_id":"label_seq_id";for(let s of t)if(s.kind==="range")n.push(q.struct.generator.atomGroups({"chain-test":q.core.rel.eq([q.ammp(o),s.asym_id]),"residue-test":q.core.rel.inRange([q.ammp(i),s.seq_id_beg,s.seq_id_end])}));else{let l=((r=s.ins_code)!==null&&r!==void 0?r:"").trim();n.push(q.struct.generator.atomGroups({"chain-test":q.core.rel.eq([q.ammp(o),s.asym_id]),"residue-test":q.core.logic.and([q.core.rel.eq([q.ammp(i),s.seq_id]),q.core.rel.eq([q.ammp("pdbx_PDB_ins_code"),l])])}))}let a=q.struct.combinator.merge(n);return hd(a)}function qOe(t){let e=Qc.create();for(let[n,o]of t)for(let i=n;i<=o;i++)Qc.add(e,i,i);let r=q.struct.generator.atomGroups({"atom-test":q.core.set.has([q.set(...e.array),q.ammp("id")])});return hd(r)}function WOe(t,e,r){if(!(!t||e.length===0||Number.isNaN(+e[0])))return Number.isNaN(r)?{kind:"single",asym_id:t,seq_id:+e[0],ins_code:e[1]}:{kind:"range",asym_id:t,seq_id_beg:+e[0],seq_id_end:r}}function XOe(t){return t?t.split(":"):[]}function YOe(t){return t.split(",").map(e=>e.trim().split(/\s+|[-]/g).filter(r=>!!r)).map(e=>WOe(e[0],XOe(e[1]),+e[2])).filter(e=>!!e)}function QOe(t){return t.split(",").map(e=>e.trim().split(/\s+|[-]/g).filter(r=>!!r)).filter(e=>e.length===1||e.length===2).map(e=>e.length===1?[+e[0],+e[0]]:[+e[0],+e[1]])}function Xle(t,e){if(e==="atom-id"){let r=QOe(t);return qOe(r)}else{let r=YOe(t);return HOe(r,e)}}var Bt=Ot(Or()),UD=Ot(Po());function KOe(t){return Object.keys(t).map(e=>[e,t[e]]).filter(e=>Xe.isBinding(e[1]))}var Dx=class extends UD.PureComponent{getBindingComponents(){let e=KOe(this.props.bindings);return(0,Bt.jsx)(Bt.Fragment,{children:e.map(r=>{let[n,o]=r;return Xe.isEmpty(o)?null:(0,Bt.jsxs)("div",{style:{marginBottom:"6px"},children:[(0,Bt.jsx)("b",{children:o.action}),(0,Bt.jsx)("br",{}),(0,Bt.jsx)("span",{dangerouslySetInnerHTML:{__html:Xe.format(o,n)}})]},n)})})}render(){return(0,Bt.jsx)(Nc,{children:this.getBindingComponents()})}},Nc=class extends UD.PureComponent{render(){return(0,Bt.jsx)("div",{className:"msp-help-text",children:(0,Bt.jsx)("div",{children:this.props.children})})}},Vc=class extends UD.PureComponent{constructor(){super(...arguments),this.state={header:this.props.header,isExpanded:!!this.props.initiallyExpanded},this.toggleExpanded=()=>this.setState({isExpanded:!this.state.isExpanded})}render(){return(0,Bt.jsxs)("div",{className:"msp-control-group-wrapper",children:[(0,Bt.jsx)("div",{className:"msp-control-group-header",children:(0,Bt.jsxs)(vt,{onClick:this.toggleExpanded,children:[(0,Bt.jsx)(pr,{svg:this.state.isExpanded?Rs:Ls}),this.props.header]})}),this.state.isExpanded&&(0,Bt.jsx)("div",{className:"msp-control-offset",style:{display:this.state.isExpanded?"block":"none"},children:this.props.children})]})}};function VV(t){return(0,Bt.jsx)("div",{className:"msp-simple-help-section",children:t.header})}var e0=class extends Mt{constructor(){super(...arguments),this.getInteractionBindings=Js(e=>{let r;return e.forEach(n=>{var o;let i=(o=n.params)===null||o===void 0?void 0:o.values;i?.bindings&&Object.keys(i.bindings).length>0&&(r||(r={}),Object.assign(r,i.bindings))}),r})}componentDidMount(){this.subscribe(this.plugin.events.canvas3d.settingsUpdated,()=>this.forceUpdate())}render(){let e=this.getInteractionBindings(this.plugin.state.behaviors.cells);return(0,Bt.jsxs)(Bt.Fragment,{children:[!this.props.selectOnly&&this.plugin.canvas3d&&(0,Bt.jsx)(Vc,{header:"Moving in 3D",children:(0,Bt.jsx)(Dx,{bindings:this.plugin.canvas3d.props.trackball.bindings})},"trackball"),!!e&&(0,Bt.jsx)(Vc,{header:"Mouse & Key Controls",children:(0,Bt.jsx)(Dx,{bindings:e})},"interactions")]})}},zD=class extends Mt{componentDidMount(){this.subscribe(this.plugin.events.canvas3d.settingsUpdated,()=>this.forceUpdate())}formatTriggers(e){return e.triggers.map(r=>Xe.Trigger.format(r)).join(" or ")}getTriggerFor(e,r){let o=this.plugin.state.behaviors.select(lt.Generators.ofTransformer(e)),i=o.length===1?o[0].params:void 0,a=i?i.values.bindings:{},s=r in a?a[r]:Xe.Empty;return this.formatTriggers(s)}render(){let e=this.getTriggerFor(iL,"clickSelectToggle"),r=this.getTriggerFor(ly,"clickFocus");return(0,Bt.jsxs)("div",{children:[(0,Bt.jsx)(VV,{header:"Interface Controls"}),(0,Bt.jsxs)(Vc,{header:"Inline Help",children:[(0,Bt.jsx)(Nc,{children:"Many user interface elements show a little questionmark icon when hovered over. Clicking the icon toggles the display of an inline help text."}),(0,Bt.jsx)(Nc,{children:"Tooltips may provide additional information on a user interface element and are shown when hovering over it with the mouse."})]}),(0,Bt.jsx)(Vc,{header:"Selections",children:(0,Bt.jsxs)(Nc,{children:["The viewer allows changing colors and representations for selections of atoms, residues or chains. Selections can be created by",(0,Bt.jsxs)("ul",{style:{paddingLeft:"20px"},children:[(0,Bt.jsxs)("li",{children:["picking elements on the 3D canvas or the sequence view using the mouse, e.g. toggle selection using ",e," (for more see help section on ",(0,Bt.jsx)("i",{children:"Mouse Controls"}),")"]}),(0,Bt.jsxs)("li",{children:["using the ",(0,Bt.jsx)("i",{children:"Add"}),", ",(0,Bt.jsx)("i",{children:"Remove"})," and ",(0,Bt.jsx)("i",{children:"Only"})," dropdown buttons in the ",(0,Bt.jsx)("i",{children:"Manage Selection"})," panel which allow modifing the current selection by predefined sets"]})]})]})}),(0,Bt.jsx)(Vc,{header:"Coloring",children:(0,Bt.jsxs)(Nc,{children:["There are two ways to color structures. Every representation (e.g. cartoon or spacefill) has a color theme which can be changed using the dropdown for each representation in the ",(0,Bt.jsx)("i",{children:"Structure Settings"})," panel. Additionally any selection atoms, residues or chains can by given a custom color. For that, first select the parts of the structure to be colored (see help section on ",(0,Bt.jsx)("i",{children:"Selections"}),") and, second, choose a color from the color dropdown botton in the ",(0,Bt.jsx)("i",{children:"Selection"})," row of the ",(0,Bt.jsx)("i",{children:"Change Representation"})," panel. The theme color can be seen as a base color that is overpainted by the custom color. Custom colors can be removed for a selection with the 'Clear' option in the color dropdown."]})}),(0,Bt.jsx)(Vc,{header:"Representations",children:(0,Bt.jsxs)(Nc,{children:["Structures can be shown with many different representations (e.g. cartoon or spacefill). The ",(0,Bt.jsx)("i",{children:"Change Representation"})," panel offers a collection of predefined styles which can be applied using the ",(0,Bt.jsx)("i",{children:"Preset"})," dropdown button. Additionally any selection atoms, residues or chains can by shown with a custom representation. For that, first select the parts of the structure to be mofified (see help section on ",(0,Bt.jsx)("i",{children:"Selections"}),") and, second, choose a representation to hide or show from the ",(0,Bt.jsx)("i",{children:"Show"})," and ",(0,Bt.jsx)("i",{children:"Hide"})," dropdown bottons in the ",(0,Bt.jsx)("i",{children:"Selection"})," row of the ",(0,Bt.jsx)("i",{children:"Change Representation"})," panel. The ",(0,Bt.jsx)("i",{children:"Everything"})," row applies the action to the whole structure instead of the current selection."]})}),(0,Bt.jsx)(Vc,{header:"Surroundings",children:(0,Bt.jsxs)(Nc,{children:["To show the surroundings of a residue or ligand, click it in the 3D scene or in the sequence widget using ",r,"."]})}),(0,Bt.jsx)(VV,{header:"How-to Guides"}),(0,Bt.jsx)(Vc,{header:"Create an Image",children:(0,Bt.jsxs)(Nc,{children:[(0,Bt.jsxs)("p",{children:["Use the ",(0,Bt.jsx)(pr,{svg:PJ})," icon in the viewport to bring up the screenshot controls."]}),(0,Bt.jsxs)("p",{children:["To adjust the size of the image, use the ",(0,Bt.jsx)("i",{children:"Resolution"})," dropdown."]})]})}),(0,Bt.jsx)(VV,{header:"Mouse Controls"}),(0,Bt.jsx)(e0,{})]})}};var hg=class extends Kn{constructor(){super(...arguments),this._toggleSelMode=()=>{this.plugin.selectionMode=!this.plugin.selectionMode}}componentDidMount(){this.subscribe(this.plugin.events.canvas3d.settingsUpdated,()=>this.forceUpdate()),this.subscribe(this.plugin.layout.events.updated,()=>this.forceUpdate()),this.subscribe(this.plugin.behaviors.interaction.selectionMode,()=>this.forceUpdate())}render(){let e=this.props.inline?{background:"transparent",width:"auto",height:"auto",lineHeight:"unset"}:{background:"transparent"};return(0,qt.jsx)(pt,{svg:VJ,onClick:this._toggleSelMode,title:"Toggle Selection Mode",style:e,toggleState:this.plugin.selectionMode})}},$Oe={granularity:Ih.Params.granularity},Ax=new Map([["add","Add/Union Selection"],["remove","Remove/Subtract Selection"],["intersect","Intersect Selection"],["set","Set Selection"]]),GD=class extends Mt{constructor(){super(...arguments),this.state={action:void 0,helper:void 0,isEmpty:!0,isBusy:!1,canUndo:!1},this.set=(e,r)=>{this.plugin.managers.structure.selection.fromSelectionQuery(e,r,!1)},this.selectQuery=(e,r)=>{if(!e||!this.state.action){this.setState({action:void 0});return}let n=this.state.action;r?.shiftKey?this.set(n,e.value):this.setState({action:void 0},()=>{this.set(n,e.value)})},this.selectHelper=(e,r)=>{if(console.log(e),!e||!this.state.action){this.setState({action:void 0,helper:void 0});return}this.setState({helper:e.value.kind})},this.queriesItems=[],this.queriesVersion=-1,this.helpersItems=void 0,this.toggleAdd=this.showAction("add"),this.toggleRemove=this.showAction("remove"),this.toggleIntersect=this.showAction("intersect"),this.toggleSet=this.showAction("set"),this.toggleTheme=this.showAction("theme"),this.toggleAddComponent=this.showAction("add-component"),this.toggleHelp=this.showAction("help"),this.setGranuality=({value:e})=>{this.plugin.managers.interactivity.setProps({granularity:e})},this.turnOff=()=>this.plugin.selectionMode=!1,this.undo=()=>{let e=this.plugin.state.data.undo();e&&this.plugin.runTask(e)},this.subtract=()=>{let e=this.plugin.managers.structure.hierarchy.getStructuresWithSelection(),r=[];for(let n of e)r.push(...n.components);r.length!==0&&this.plugin.managers.structure.component.modifyByCurrentSelection(r,"subtract")}}componentDidMount(){this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,e=>{let r=e.hierarchy.structures.length===0;this.state.isEmpty!==r&&this.setState({isEmpty:r}),this.queriesVersion=-1,this.forceUpdate()}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e,action:void 0})}),this.subscribe(this.plugin.managers.interactivity.events.propsUpdated,()=>{this.forceUpdate()}),this.subscribe(this.plugin.state.data.events.historyUpdated,({state:e})=>{this.setState({canUndo:e.canUndo})})}get isDisabled(){return this.state.isBusy||this.state.isEmpty}get structures(){var e;let r=[];for(let n of this.plugin.managers.structure.hierarchy.selection.structures){let o=(e=n.cell.obj)===null||e===void 0?void 0:e.data;o&&r.push(o)}return r}get queries(){let{registry:e}=this.plugin.query.structure;if(e.version!==this.queriesVersion){let r=this.structures,n=[...e.list,...rY(r),...tY(r),...eY(r)].sort((o,i)=>i.priority-o.priority);this.queriesItems=wt.createItems(n,{filter:o=>o!==Qn.current&&!o.isHidden,label:o=>o.label,category:o=>o.category,description:o=>o.description}),this.queriesVersion=e.version}return this.queriesItems}get helpers(){if(this.helpersItems)return this.helpersItems;let e=[{kind:"residue-list",category:"Helpers",label:"Atom/Residue Identifier List",description:"Create a selection from a list of atom/residue ranges."}];return this.helpersItems=wt.createItems(e,{label:r=>r.label,category:r=>r.category,description:r=>r.description}),this.helpersItems}showAction(e){return()=>this.setState({action:this.state.action===e?void 0:e,helper:void 0})}render(){let e=this.plugin.managers.interactivity.props.granularity,r=this.state.canUndo?`Undo ${this.plugin.state.data.latestUndoLabel}`:"Some mistakes of the past can be undone.",n;if(this.state.action&&!this.state.helper)n=(0,qt.jsxs)(qt.Fragment,{children:[this.state.action&&this.state.action!=="theme"&&this.state.action!=="add-component"&&this.state.action!=="help"&&(0,qt.jsxs)("div",{className:"msp-selection-viewport-controls-actions",children:[(0,qt.jsx)(wt,{header:Ax.get(this.state.action),title:"Click to close.",items:this.queries,onSelect:this.selectQuery,noOffset:!0}),(0,qt.jsx)(wt,{items:this.helpers,onSelect:this.selectHelper,noOffset:!0})]}),this.state.action==="theme"&&(0,qt.jsx)("div",{className:"msp-selection-viewport-controls-actions",children:(0,qt.jsx)(Ua,{header:"Theme",title:"Click to close.",initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:this.toggleTheme,topRightIcon:ml,children:(0,qt.jsx)(zV,{onApply:this.toggleTheme})})}),this.state.action==="add-component"&&(0,qt.jsx)("div",{className:"msp-selection-viewport-controls-actions",children:(0,qt.jsx)(Ua,{header:"Add Component",title:"Click to close.",initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:this.toggleAddComponent,topRightIcon:ml,children:(0,qt.jsx)(uT,{onApply:this.toggleAddComponent,forSelection:!0})})}),this.state.action==="help"&&(0,qt.jsx)("div",{className:"msp-selection-viewport-controls-actions",children:(0,qt.jsxs)(Ua,{header:"Help",title:"Click to close.",initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:this.toggleHelp,topRightIcon:ml,maxHeight:"300px",children:[(0,qt.jsx)(Vc,{header:"Selection Operations",children:(0,qt.jsxs)(Nc,{children:["Use ",(0,qt.jsx)(pr,{svg:gS,inline:!0})," ",(0,qt.jsx)(pr,{svg:yS,inline:!0})," ",(0,qt.jsx)(pr,{svg:vS,inline:!0})," ",(0,qt.jsx)(pr,{svg:yy,inline:!0})," to modify the selection."]})}),(0,qt.jsx)(Vc,{header:"Representation Operations",children:(0,qt.jsxs)(Nc,{children:["Use ",(0,qt.jsx)(pr,{svg:aP,inline:!0})," ",(0,qt.jsx)(pr,{svg:bS,inline:!0})," ",(0,qt.jsx)(pr,{svg:wS,inline:!0})," ",(0,qt.jsx)(pr,{svg:_S,inline:!0})," to color, create components, remove from components, or undo actions."]})}),(0,qt.jsx)(e0,{selectOnly:!0})]})})]});else if(Ax.has(this.state.action)&&this.state.helper==="residue-list"){let o=()=>this.setState({action:void 0,helper:void 0});n=(0,qt.jsx)("div",{className:"msp-selection-viewport-controls-actions",children:(0,qt.jsx)(Ua,{header:"Atom/Residue Identifier List",title:"Click to close.",initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:o,topRightIcon:ml,children:(0,qt.jsx)(JOe,{modifier:this.state.action,plugin:this.plugin,close:o})})})}return(0,qt.jsxs)(qt.Fragment,{children:[(0,qt.jsxs)("div",{className:"msp-flex-row",style:{background:"none"},children:[(0,qt.jsx)(Dm,{title:"Picking Level for selecting and highlighting",param:$Oe.granularity,name:"granularity",value:e,onChange:this.setGranuality,isDisabled:this.isDisabled}),(0,qt.jsx)(Gn,{icon:gS,title:`${Ax.get("add")}. Hold shift key to keep menu open.`,toggle:this.toggleAdd,isSelected:this.state.action==="add",disabled:this.isDisabled}),(0,qt.jsx)(Gn,{icon:yS,title:`${Ax.get("remove")}. Hold shift key to keep menu open.`,toggle:this.toggleRemove,isSelected:this.state.action==="remove",disabled:this.isDisabled}),(0,qt.jsx)(Gn,{icon:vS,title:`${Ax.get("intersect")}. Hold shift key to keep menu open.`,toggle:this.toggleIntersect,isSelected:this.state.action==="intersect",disabled:this.isDisabled}),(0,qt.jsx)(Gn,{icon:yy,title:`${Ax.get("set")}. Hold shift key to keep menu open.`,toggle:this.toggleSet,isSelected:this.state.action==="set",disabled:this.isDisabled}),(0,qt.jsx)(Gn,{icon:aP,title:"Apply Theme to Selection",toggle:this.toggleTheme,isSelected:this.state.action==="theme",disabled:this.isDisabled,style:{marginLeft:"10px"}}),(0,qt.jsx)(Gn,{icon:bS,title:"Create Component of Selection with Representation",toggle:this.toggleAddComponent,isSelected:this.state.action==="add-component",disabled:this.isDisabled}),(0,qt.jsx)(pt,{svg:wS,title:"Remove/subtract Selection from all Components",onClick:this.subtract,disabled:this.isDisabled}),(0,qt.jsx)(pt,{svg:_S,onClick:this.undo,disabled:!this.state.canUndo||this.isDisabled,title:r}),(0,qt.jsx)(Gn,{icon:Bs,title:"Show/hide help",toggle:this.toggleHelp,style:{marginLeft:"10px"},isSelected:this.state.action==="help"}),this.plugin.config.get(Wt.Viewport.ShowSelectionMode)&&(0,qt.jsx)(pt,{svg:xS,title:"Turn selection mode off",onClick:this.turnOff})]}),n]})}},jD=class extends Mt{constructor(){super(...arguments),this.state={isEmpty:!0,isBusy:!1},this.clear=()=>this.plugin.managers.interactivity.lociSelects.deselectAll(),this.focus=()=>{if(this.plugin.managers.structure.selection.stats.elementCount===0)return;let{sphere:e}=this.plugin.managers.structure.selection.getBoundary();this.plugin.managers.camera.focusSphere(e)},this.highlight=e=>{this.plugin.managers.interactivity.lociHighlights.clearHighlights(),this.plugin.managers.structure.selection.entries.forEach(r=>{this.plugin.managers.interactivity.lociHighlights.highlight({loci:r.selection},!1)})},this.clearHighlight=()=>{this.plugin.managers.interactivity.lociHighlights.clearHighlights()}}componentDidMount(){this.subscribe(this.plugin.managers.structure.selection.events.changed,()=>{this.forceUpdate()}),this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,e=>{let r=e.structures.length===0;this.state.isEmpty!==r&&this.setState({isEmpty:r})}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e})})}get isDisabled(){return this.state.isBusy||this.state.isEmpty}get stats(){let e=this.plugin.managers.structure.selection.stats;return e.structureCount===0||e.elementCount===0?"Nothing Selected":`${sd(e.label)} Selected`}render(){let e=this.plugin.managers.structure.selection.stats,r=e.structureCount===0||e.elementCount===0;return r&&this.props.hideOnEmpty?null:(0,qt.jsx)(qt.Fragment,{children:(0,qt.jsxs)("div",{className:"msp-flex-row",children:[(0,qt.jsx)(vt,{noOverflow:!0,onClick:this.focus,title:"Click to Focus Selection",disabled:r,onMouseEnter:this.highlight,onMouseLeave:this.clearHighlight,style:{textAlignLast:r?void 0:"left"},children:this.stats}),!r&&(0,qt.jsx)(pt,{svg:xS,onClick:this.clear,title:"Clear",className:"msp-form-control",flex:!0})]})})}},zV=class extends Kn{constructor(){super(...arguments),this._params=Js(e=>ql.getThemeParams(this.plugin,e)),this.state={values:g.getDefaultValues(this.params)},this.apply=()=>{var e,r;this.plugin.managers.structure.component.applyTheme(this.state.values,this.plugin.managers.structure.hierarchy.current.structures),(r=(e=this.props).onApply)===null||r===void 0||r.call(e)},this.paramsChanged=e=>this.setState({values:e})}get params(){return this._params(this.plugin.managers.structure.component.pivotStructure)}render(){return(0,qt.jsxs)(qt.Fragment,{children:[(0,qt.jsx)(Hr,{params:this.params,values:this.state.values,onChangeValues:this.paramsChanged}),(0,qt.jsx)(vt,{icon:aP,className:"msp-btn-commit msp-btn-commit-on",onClick:this.apply,style:{marginTop:"1px"},children:"Apply Theme"})]})}},Qle={idType:g.Select("auth",g.arrayToOptions(["auth","label","atom-id"])),identifiers:g.Text("",{description:"A comma separated list of atom identifiers (e.g. 10, 15-25) or residue ranges in given chain (e.g. A 10-15, B 25, C 30:i)"})},ZOe=g.getDefaultValues(Qle);function JOe({modifier:t,plugin:e,close:r}){let[n,o]=Yle.useState(ZOe),i=()=>{if(n.identifiers.trim().length!==0)try{r();let a=Xle(n.identifiers,n.idType);e.managers.structure.selection.fromCompiledQuery(t,a,!1)}catch(a){console.error(a),e.log.error("Failed to create selection")}};return(0,qt.jsxs)(qt.Fragment,{children:[(0,qt.jsx)(Hr,{params:Qle,values:n,onChangeValues:o,onEnter:i}),(0,qt.jsxs)(vt,{className:"msp-btn-commit msp-btn-commit-on",disabled:n.identifiers.trim().length===0,onClick:i,style:{marginTop:"1px"},children:[m0(t)," Selection"]})]})}var HD=class extends hl{defaultState(){return{isCollapsed:!1,header:"Measurements",brand:{accent:"gray",svg:SJ}}}renderControls(){return(0,gr.jsxs)(gr.Fragment,{children:[(0,gr.jsx)(GV,{}),(0,gr.jsx)(UV,{})]})}},UV=class extends Kn{componentDidMount(){this.subscribe(this.plugin.managers.structure.measurement.behaviors.state,()=>{this.forceUpdate()})}renderGroup(e,r){let n=[];for(let o of e)o.obj&&n.push((0,gr.jsx)(HV,{cell:o},o.obj.id));return n.length?(0,gr.jsx)(Ci,{header:r,initiallyExpanded:!0,children:n}):null}render(){let e=this.plugin.managers.structure.measurement.state;return(0,gr.jsxs)("div",{style:{marginTop:"6px"},children:[this.renderGroup(e.labels,"Labels"),this.renderGroup(e.distances,"Distances"),this.renderGroup(e.angles,"Angles"),this.renderGroup(e.dihedrals,"Dihedrals"),this.renderGroup(e.orientations,"Orientations"),this.renderGroup(e.planes,"Planes")]})}},GV=class extends Kn{constructor(){super(...arguments),this.state={isBusy:!1,action:void 0},this.measureDistance=()=>{let e=this.plugin.managers.structure.selection.additionsHistory;this.plugin.managers.structure.measurement.addDistance(e[0].loci,e[1].loci)},this.measureAngle=()=>{let e=this.plugin.managers.structure.selection.additionsHistory;this.plugin.managers.structure.measurement.addAngle(e[0].loci,e[1].loci,e[2].loci)},this.measureDihedral=()=>{let e=this.plugin.managers.structure.selection.additionsHistory;this.plugin.managers.structure.measurement.addDihedral(e[0].loci,e[1].loci,e[2].loci,e[3].loci)},this.addLabel=()=>{let e=this.plugin.managers.structure.selection.additionsHistory;this.plugin.managers.structure.measurement.addLabel(e[0].loci)},this.addOrientation=()=>{let e=[];this.plugin.managers.structure.selection.entries.forEach(r=>{e.push(r.selection)}),this.plugin.managers.structure.measurement.addOrientation(e)},this.addPlane=()=>{let e=[];this.plugin.managers.structure.selection.entries.forEach(r=>{e.push(r.selection)}),this.plugin.managers.structure.measurement.addPlane(e)},this.selectAction=e=>{this.toggleAdd(),e&&(0,e?.value)()},this.toggleAdd=()=>this.setState({action:this.state.action==="add"?void 0:"add"}),this.toggleOptions=()=>this.setState({action:this.state.action==="options"?void 0:"options"})}componentDidMount(){this.subscribe(this.selection.events.additionsHistoryUpdated,()=>{this.forceUpdate(),this.updateOrderLabels()}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e})})}componentWillUnmount(){this.clearOrderLabels(),super.componentWillUnmount()}componentDidUpdate(e,r){this.state.action!==r.action&&this.updateOrderLabels()}clearOrderLabels(){this.plugin.managers.structure.measurement.addOrderLabels([])}updateOrderLabels(){if(this.state.action!=="add"){this.clearOrderLabels();return}let e=[],r=this.selection.additionsHistory;for(let n=0;nthis.highlight(e.loci),onMouseLeave:()=>this.plugin.managers.interactivity.lociHighlights.clearHighlights(),children:[(0,gr.jsxs)(vt,{noOverflow:!0,title:"Click to focus. Hover to highlight.",onClick:()=>this.focusLoci(e.loci),style:{width:"auto",textAlign:"left"},children:[r,". ",(0,gr.jsx)("span",{dangerouslySetInnerHTML:{__html:e.label}})]}),n.length>1&&(0,gr.jsx)(pt,{svg:Ph,small:!0,className:"msp-form-control",onClick:()=>this.moveHistory(e,"up"),flex:"20px",title:"Move up"}),n.length>1&&(0,gr.jsx)(pt,{svg:_h,small:!0,className:"msp-form-control",onClick:()=>this.moveHistory(e,"down"),flex:"20px",title:"Move down"}),(0,gr.jsx)(pt,{svg:Hi,small:!0,className:"msp-form-control",onClick:()=>this.plugin.managers.structure.selection.modifyHistory(e,"remove"),flex:!0,title:"Remove"})]},e.id)}add(){let e=this.plugin.managers.structure.selection.additionsHistory,r=[];for(let i=0,a=Math.min(e.length,4);i0&&(0,gr.jsx)("div",{className:"msp-control-offset",children:r}),r.length===0&&(0,gr.jsx)("div",{className:"msp-control-offset msp-help-text",children:(0,gr.jsxs)("div",{className:"msp-help-description",children:[(0,gr.jsx)(pr,{svg:Bs,inline:!0}),"Add one or more selections",o]})})]})}render(){return(0,gr.jsxs)(gr.Fragment,{children:[(0,gr.jsxs)("div",{className:"msp-flex-row",children:[(0,gr.jsx)(Gn,{icon:Fd,label:"Add",toggle:this.toggleAdd,isSelected:this.state.action==="add",disabled:this.state.isBusy,className:"msp-btn-apply-simple"}),(0,gr.jsx)(Gn,{icon:pl,label:"",title:"Options",toggle:this.toggleOptions,isSelected:this.state.action==="options",disabled:this.state.isBusy,style:{flex:"0 0 40px",padding:0}})]}),this.state.action==="add"&&this.add(),this.state.action==="options"&&(0,gr.jsx)(jV,{})]})}},jV=class extends Kn{constructor(){super(...arguments),this.state={isDisabled:!1},this.changed=e=>{this.plugin.managers.structure.measurement.setOptions(e)}}componentDidMount(){this.subscribe(this.plugin.managers.structure.measurement.behaviors.state,()=>{this.forceUpdate()}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isDisabled:e})})}render(){let e=this.plugin.managers.structure.measurement.state;return(0,gr.jsx)("div",{className:"msp-control-offset",children:(0,gr.jsx)(Hr,{params:JB,values:e.options,onChangeValues:this.changed,isDisabled:this.state.isDisabled})})}},HV=class extends Kn{constructor(){super(...arguments),this.state={showUpdate:!1},this.delete=()=>{Re.State.RemoveObject(this.plugin,{state:this.props.cell.parent,ref:this.props.cell.transform.parent,removeParentGhosts:!0})},this.toggleVisibility=e=>{e.preventDefault(),Re.State.ToggleVisibility(this.plugin,{state:this.props.cell.parent,ref:this.props.cell.transform.parent}),e.currentTarget.blur()},this.highlight=()=>{var e;if(!this.selections)return;this.plugin.managers.interactivity.lociHighlights.clearHighlights();for(let o of this.lociArray)this.plugin.managers.interactivity.lociHighlights.highlight({loci:o},!1);let n=(e=this.props.cell.obj)===null||e===void 0?void 0:e.data.repr.getAllLoci();if(n)for(let o of n)this.plugin.managers.interactivity.lociHighlights.highlight({loci:o},!1)},this.clearHighlight=()=>{this.plugin.managers.interactivity.lociHighlights.clearHighlights()},this.toggleUpdate=()=>this.setState({showUpdate:!this.state.showUpdate}),this.focus=()=>{if(!this.selections)return;let r=st.getBundleBoundingSphere({loci:this.lociArray});r&&this.plugin.managers.camera.focusSphere(r)},this.selectAction=e=>{e&&(this.setState({showUpdate:!1}),(0,e?.value)())}}componentDidMount(){this.subscribe(this.plugin.state.events.cell.stateUpdated,e=>{this.forceUpdate()})}get selections(){var e;return(e=this.props.cell.obj)===null||e===void 0?void 0:e.data.sourceData}get lociArray(){let e=this.selections;return e?e.infos?[e.infos[0].loci]:e.pairs?e.pairs[0].loci:e.triples?e.triples[0].loci:e.quads?e.quads[0].loci:e.locis?e.locis:[]:[]}get label(){let e=this.selections;return e?e.infos?fu(e.infos[0].loci,{condensed:!0}):e.pairs?bv(e.pairs[0],{condensed:!0,unitLabel:this.plugin.managers.structure.measurement.state.options.distanceUnitLabel}):e.triples?xv(e.triples[0],{condensed:!0}):e.quads?Sv(e.quads[0],{condensed:!0}):e.locis?qf(e.locis,{countsOnly:!0}):"":""}get actions(){return this.props.cell.sourceRef,[wt.Item("Select This",()=>this.plugin.managers.structure.selection.fromSelections(this.props.cell.sourceRef),{icon:yy})]}render(){let{cell:e}=this.props,{obj:r}=e;return r?(0,gr.jsxs)(gr.Fragment,{children:[(0,gr.jsxs)("div",{className:"msp-flex-row",onMouseEnter:this.highlight,onMouseLeave:this.clearHighlight,children:[(0,gr.jsx)("button",{className:"msp-form-control msp-control-button-label msp-no-overflow",title:"Click to focus. Hover to highlight.",onClick:this.focus,style:{width:"auto",textAlign:"left"},children:(0,gr.jsx)("span",{dangerouslySetInnerHTML:{__html:this.label}})}),(0,gr.jsx)(pt,{svg:e.state.isHidden?Ec:Ic,toggleState:!1,small:!0,className:"msp-form-control",onClick:this.toggleVisibility,flex:!0,title:e.state.isHidden?"Show":"Hide"}),(0,gr.jsx)(pt,{svg:Hi,small:!0,className:"msp-form-control",onClick:this.delete,flex:!0,title:"Delete",toggleState:!1}),(0,gr.jsx)(pt,{svg:Pu,className:"msp-form-control",onClick:this.toggleUpdate,flex:!0,title:"Actions",toggleState:this.state.showUpdate})]},r.id),this.state.showUpdate&&e.parent&&(0,gr.jsx)(gr.Fragment,{children:(0,gr.jsxs)("div",{className:"msp-accent-offset",children:[(0,gr.jsx)(wt,{items:this.actions,onSelect:this.selectAction,noOffset:!0}),(0,gr.jsx)(Ci,{header:"Options",noOffset:!0,children:(0,gr.jsx)(Xs,{state:e.parent,transform:e.transform,customHeader:"none",autoHideApply:!0})})]})})]}):null}};var ps=Ot(Or());var Qm=Ot(Or());function qV(t,e,r,n){let o=tr.indexOf(e.unit.elements,e.element),i=z.Loci(e.structure,[{unit:e.unit,indices:we.ofSingleton(o)}]),a=n==="residue"?z.Loci.extendToWholeResidues(i):z.Loci.extendToWholeChains(i),s=Ne.entity.pdbx_description(e).join(", ");for(let l of r.units){let c=z.Loci(a.structure,[{unit:l,indices:a.elements[0].indices}]),u=fu(c,{reverse:!0,hidePrefix:!0,htmlStyling:!1,granularity:n});u||(u=fu(c,{hidePrefix:!1,htmlStyling:!1})),r.units.length>1&&(u+=` | ${c.elements[0].unit.conformation.operator.name}`);let d={label:u,category:s,loci:c};t.has(s)?t.get(s).push(d):t.set(s,[d])}}function eFe(t){let e=new Map,r=z.Location.create(t);for(let o of t.unitSymmetryGroups){if(!Pe.isAtomic(o.units[0]))continue;r.unit=o.units[0],r.element=o.elements[0];let i=Pe.Traits.is(r.unit.traits,Pe.Trait.MultiChain),a=Ne.entity.type(r),s=a==="non-polymer",l=a==="branched";if(!!Ne.entity.prd_id(r))qV(e,r,o,"chain");else if(s&&!i)qV(e,r,o,"residue");else if(l||s&&i){let u=r.unit,{index:d}=u.model.atomicHierarchy.residueAtomSegments,m=-1;for(let p=0,h=u.elements.length;p{o.length===1?n.push({label:`${i}: ${o[0].label}`,loci:o[0].loci}):o.length<2e3&&n.push(...o)}),n}var qD=class extends Mt{constructor(){super(...arguments),this.state={isBusy:!1,showAction:!1},this.getSelectionItems=Js(e=>{var r;let n=[];for(let o of e){let i=(r=o.cell.obj)===null||r===void 0?void 0:r.data;if(i){let a=eFe(i);a.length>0&&n.push([wt.Header(i.label,{description:i.label}),...wt.createItems(a,{label:s=>s.label,category:s=>s.category,description:s=>s.label})])}}return n}),this.selectAction=(e,r)=>{if(!e||!this.state.showAction){this.setState({showAction:!1});return}let n=e.value;r?.shiftKey?this.plugin.managers.structure.focus.addFromLoci(n.loci):this.plugin.managers.structure.focus.set(n),this.focusCamera()},this.toggleAction=()=>this.setState({showAction:!this.state.showAction}),this.focusCamera=()=>{let{current:e}=this.plugin.managers.structure.focus;e&&this.plugin.managers.camera.focusLoci(e.loci)},this.clear=()=>{this.plugin.managers.structure.focus.clear(),this.plugin.managers.camera.reset()},this.highlightCurrent=()=>{let{current:e}=this.plugin.managers.structure.focus;e&&this.plugin.managers.interactivity.lociHighlights.highlightOnly({loci:e.loci},!1)},this.clearHighlights=()=>{this.plugin.managers.interactivity.lociHighlights.clearHighlights()}}componentDidMount(){this.subscribe(this.plugin.managers.structure.focus.behaviors.current,e=>{this.getSelectionItems([]),this.forceUpdate()}),this.subscribe(this.plugin.managers.structure.focus.events.historyUpdated,e=>{this.forceUpdate()}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e,showAction:!1})})}get isDisabled(){return this.state.isBusy||this.plugin.managers.structure.hierarchy.selection.structures.length===0}get actionItems(){let e=[],{history:r}=this.plugin.managers.structure.focus;r.length>0&&e.push([wt.Header("History",{description:"Previously focused on items."}),...wt.createItems(r,{label:i=>i.label,description:i=>i.category&&i.label!==i.category?`${i.category} | ${i.label}`:i.label})]);let n=this.getSelectionItems(this.plugin.managers.structure.hierarchy.selection.structures);if(n.length===1){let a=n[0][0];a.initiallyExpanded=!0}let o=[];return n.length>0&&o.push(...n),e.length>0&&o.push(...e),o}getToggleBindingLabel(){var e;let r=this.plugin.state.behaviors.transforms.get(ly.id);if(!r)return"";let n=(e=r.params)===null||e===void 0?void 0:e.bindings.clickFocus;return!n||Xe.isEmpty(n)?"":Xe.formatTriggers(n)}render(){let{current:e}=this.plugin.managers.structure.focus,r=e?.label||"Nothing Focused",n="Click to Center Camera";if(!e){n="Select focus using the menu";let o=this.getToggleBindingLabel();o&&(n+=` +or use '${o}' on element`)}return(0,Qm.jsxs)(Qm.Fragment,{children:[(0,Qm.jsxs)("div",{className:"msp-flex-row",children:[(0,Qm.jsx)(vt,{noOverflow:!0,onClick:this.focusCamera,title:n,onMouseEnter:this.highlightCurrent,onMouseLeave:this.clearHighlights,disabled:this.isDisabled||!e,style:{textAlignLast:e?"left":void 0},children:r}),e&&(0,Qm.jsx)(pt,{svg:xS,onClick:this.clear,title:"Clear",className:"msp-form-control",flex:!0,disabled:this.isDisabled}),(0,Qm.jsx)(Gn,{icon:EJ,title:"Select a focus target to center on an show its surroundings. Hold shift to focus on multiple targets.",toggle:this.toggleAction,isSelected:this.state.showAction,disabled:this.isDisabled,style:{flex:"0 0 40px",padding:0}})]}),this.state.showAction&&(0,Qm.jsx)(wt,{items:this.actionItems,onSelect:this.selectAction})]})}};var WD=class extends hl{constructor(){super(...arguments),this.item=e=>{var r,n,o,i,a,s,l,c,u;let d=this.plugin.managers.structure.hierarchy.seletionSet,m;switch(e.kind){case"model":{let h=(r=e.cell.obj)===null||r===void 0?void 0:r.data;h&&Et.TrajectoryInfo.get(h).size>1&&(m=`${(n=e.cell.obj)===null||n===void 0?void 0:n.data.entryId} | Model ${Et.TrajectoryInfo.get(h).index+1} of ${Et.TrajectoryInfo.get(h).size}`),m=`${(o=e.cell.obj)===null||o===void 0?void 0:o.data.entryId} | ${(i=e.cell.obj)===null||i===void 0?void 0:i.label}`;break}case"structure":{let h=(a=e.cell.obj)===null||a===void 0?void 0:a.data.models[0];if(h&&Et.TrajectoryInfo.get(h).size>1){m=`${h.entryId} | ${(s=e.cell.obj)===null||s===void 0?void 0:s.label} (Model ${Et.TrajectoryInfo.get(h).index+1} of ${Et.TrajectoryInfo.get(h).size})`;break}else if(h){m=`${h.entryId} | ${(l=e.cell.obj)===null||l===void 0?void 0:l.label}`;break}else{m=`${(c=e.cell.obj)===null||c===void 0?void 0:c.label}`;break}}default:m=(u=e.cell.obj)===null||u===void 0?void 0:u.label;break}return{kind:"item",label:m||e.kind,selected:d.has(e.cell.transform.ref),value:[e]}},this.getTrajectoryItems=e=>{var r;return e.models.length===0?this.item(e):[wt.Header((r=e.cell.obj)===null||r===void 0?void 0:r.label),...e.models.map(this.getModelItems)]},this.getModelItems=e=>{var r,n,o;if(e.structures.length===0)return this.item(e);if(e.structures.length===1){let i=this.plugin.managers.structure.hierarchy.seletionSet,a=e.structures[0];return{label:`${(r=e.cell.obj)===null||r===void 0?void 0:r.label} | ${(n=a.cell.obj)===null||n===void 0?void 0:n.label}`,selected:i.has(a.cell.transform.ref),value:[e,a]}}return[wt.Header((o=e.cell.obj)===null||o===void 0?void 0:o.label),...e.structures.map(this.item)]},this.selectHierarchy=e=>{if(!e||e.length===0)return;let r=[];for(let n of e)for(let o of n.value)r.push(o);this.plugin.managers.structure.hierarchy.updateCurrent(r,e[0].selected?"remove":"add")},this.toggleHierarchy=()=>this.setState({show:this.state.show!=="hierarchy"?"hierarchy":void 0}),this.togglePreset=()=>this.setState({show:this.state.show!=="presets"?"presets":void 0}),this.applyPreset=e=>{if(this.setState({show:void 0}),!e)return;let r=this.plugin.managers.structure,{trajectories:n}=r.hierarchy.selection;r.hierarchy.applyPreset(n,e.value)},this.updateModelQueueParams=void 0,this.isUpdatingModel=!1,this.updateStructureModel=e=>{this.updateModelQueueParams=e,this._updateStructureModel()},this.updateStructure=e=>{let{selection:r}=this.plugin.managers.structure.hierarchy,n=r.structures[0];return this.plugin.managers.structure.hierarchy.updateStructure(n,e)}}defaultState(){return{header:"Structure",isCollapsed:!1,isBusy:!1,brand:{accent:"purple",svg:bJ}}}componentDidMount(){this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,()=>this.forceUpdate()),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e})})}get hierarchyItems(){let e=this.plugin.managers.structure.hierarchy,{current:r}=e,n=[];return r.trajectories.length>1&&n.push([wt.Header("Trajectories"),...r.trajectories.map(this.item)]),(r.models.length>1||r.trajectories.length>1)&&n.push([wt.Header("Models"),...r.models.map(this.item)]),r.trajectories.length===1&&r.models.length===1?n.push(...r.structures.map(this.item)):r.structures.length>0&&n.push([wt.Header("Structures"),...r.structures.map(this.item)]),n}get isEmpty(){let{structures:e,models:r,trajectories:n}=this.plugin.managers.structure.hierarchy.current;return n.length===0&&r.length===0&&e.length===0}get label(){var e,r,n,o,i,a,s,l,c,u,d,m,p,h;let{structures:f,models:b,trajectories:v}=this.plugin.managers.structure.hierarchy.selection;if(f.length===1){let x=f[0];return!((r=(e=x.model)===null||e===void 0?void 0:e.trajectory)===null||r===void 0)&&r.models&&x.model.trajectory.models.length===1?(n=x.cell.obj)===null||n===void 0?void 0:n.data.label:x.model?`${(o=x.model.cell.obj)===null||o===void 0?void 0:o.label} | ${(i=x.cell.obj)===null||i===void 0?void 0:i.data.label}`:(a=x.cell.obj)===null||a===void 0?void 0:a.data.label}if(f.length>1){let x=f[0],S=(s=x?.model)===null||s===void 0?void 0:s.trajectory,T=!0;for(let E of f)if(((l=E?.model)===null||l===void 0?void 0:l.trajectory)!==S){T=!1;break}return T&&S?`${(c=S.cell.obj)===null||c===void 0?void 0:c.label} | ${f.length} structures`:`${f.length} structures`}if(b.length>0){let x=b[0].trajectory;if(b.length===1){let T=(u=b[0].cell.obj)===null||u===void 0?void 0:u.data;return T&&Et.TrajectoryInfo.get(T).size>1?`${(d=x?.cell.obj)===null||d===void 0?void 0:d.label} | Model ${Et.TrajectoryInfo.get(T).index+1} of ${Et.TrajectoryInfo.get(T).size}`:`${(m=x?.cell.obj)===null||m===void 0?void 0:m.label} | Model`}let S=!0;for(let T of b)if(T.trajectory!==x){S=!1;break}return S?`${(p=x?.cell.obj)===null||p===void 0?void 0:p.label} | ${b.length} models`:`${b.length} models`}return v.length>0?v.length===1?`${(h=v[0].cell.obj)===null||h===void 0?void 0:h.label} trajectory`:`${v.length} trajectories`:v.length===0&&b.length===0&&f.length===0?"Nothing Loaded":"Nothing Selected"}get presetActions(){let e=[],{trajectories:r}=this.plugin.managers.structure.hierarchy.selection;if(r.length===0)return e;let n=this.plugin.builders.structure.hierarchy.getPresets(r[0].cell.obj);if(r.length>1){let o=new Set(n);for(let i=1;io.has(i))}for(let o of n)e.push(wt.Item(o.display.name,o,{description:o.display.description}));return e}_updateStructureModel(){return N(this,null,function*(){if(!this.updateModelQueueParams||this.isUpdatingModel)return;let e=this.updateModelQueueParams;this.updateModelQueueParams=void 0;try{this.isUpdatingModel=!0;let{selection:r}=this.plugin.managers.structure.hierarchy,n=r.structures[0].model;yield this.plugin.state.updateTransform(this.plugin.state.data,n.cell.transform.ref,e,"Model Index")}finally{this.isUpdatingModel=!1,this._updateStructureModel()}})}get modelIndex(){var e,r;let{selection:n}=this.plugin.managers.structure.hierarchy;if(n.structures.length!==1)return null;let o=n.structures[0].model;if(!o||o.cell.transform.transformer!==de.Model.ModelFromTrajectory||!o.cell.obj||Et.TrajectoryInfo.get(o.cell.obj.data).size<=1)return null;let i=(e=o.cell.params)===null||e===void 0?void 0:e.definition;return i?(0,ps.jsx)(Hr,{params:i,values:(r=o.cell.params)===null||r===void 0?void 0:r.values,onChangeValues:this.updateStructureModel,isDisabled:this.state.isBusy}):null}get structureType(){var e;let{selection:r}=this.plugin.managers.structure.hierarchy;if(r.structures.length!==1)return null;let n=r.structures[0];return!((e=n.cell.params)===null||e===void 0?void 0:e.definition)||!n.cell.parent?null:(0,ps.jsx)(Xs,{state:n.cell.parent,transform:n.cell.transform,customHeader:"none",customUpdate:this.updateStructure,noMargin:!0,autoHideApply:!0})}get transform(){let{selection:e}=this.plugin.managers.structure.hierarchy;if(e.structures.length!==1)return null;let r=e.structures[0];if(!r.cell.parent)return null;let n=lt.tryFindDecorator(this.plugin.state.data,r.cell.transform.ref,de.Model.TransformStructureConformation);if(n)return(0,ps.jsx)(Ci,{header:"Conformation Transform",children:(0,ps.jsx)(Xs,{state:n.parent,transform:n.transform,customHeader:"none",noMargin:!0,autoHideApply:!0})})}renderControls(){let e=this.state.isBusy||this.isEmpty,r=this.presetActions,n=this.label;return(0,ps.jsxs)(ps.Fragment,{children:[(0,ps.jsxs)("div",{className:"msp-flex-row",style:{marginTop:"1px"},children:[(0,ps.jsx)(vt,{noOverflow:!0,flex:!0,onClick:this.toggleHierarchy,disabled:e,title:n,children:n}),r.length>0&&(0,ps.jsx)(pt,{svg:Mp,className:"msp-form-control",flex:"40px",onClick:this.togglePreset,title:"Apply a structure presets to the current hierarchy.",toggleState:this.state.show==="presets",disabled:e})]}),this.state.show==="hierarchy"&&(0,ps.jsx)(wt,{items:this.hierarchyItems,onSelect:this.selectHierarchy,multiselect:!0}),this.state.show==="presets"&&(0,ps.jsx)(wt,{items:r,onSelect:this.applyPreset}),this.modelIndex,this.structureType,this.transform,(0,ps.jsxs)("div",{style:{marginTop:"6px"},children:[(0,ps.jsx)(qD,{}),(0,ps.jsx)(jD,{hideOnEmpty:!0})]})]})}};var En=Ot(Or());var gg=class extends Ix{constructor(){super(...arguments),this._getInfo=Js((e,r,n)=>$d.infoFromAction(this.plugin,this.props.state,this.props.action,this.props.nodeRef)),this.state={plugin:this.plugin,ref:this.props.nodeRef,version:this.props.state.transforms.get(this.props.nodeRef).version,error:void 0,isInitial:!0,params:this.getInfo().initialValues,busy:!1,isCollapsed:this.props.initiallyCollapsed}}applyAction(){return Re.State.ApplyAction(this.plugin,{state:this.props.state,action:this.props.action.create(this.state.params),ref:this.props.nodeRef})}getInfo(){var e;return this._getInfo(this.props.nodeRef,this.props.state.transforms.get(this.props.nodeRef).version,(e=this.state)===null||e===void 0?void 0:e.isCollapsed)}getTransformerId(){return this.props.state.transforms.get(this.props.nodeRef).transformer.id}getHeader(){return this.props.hideHeader?"none":this.props.action.definition.display}canApply(){return!this.state.error&&!this.state.busy}canAutoApply(){return!1}applyText(){return"Apply"}isUpdate(){return!1}getSourceAndTarget(){return{a:this.props.state.cells.get(this.props.nodeRef).obj}}static getDerivedStateFromProps(e,r){let n=e.state.transforms.get(e.nodeRef).version;if(e.nodeRef===r.ref&&n===r.version)return null;let o=e.state.cells.get(e.nodeRef).obj,i=e.action.definition.params?g.getDefaultValues(e.action.definition.params(o,r.plugin)):{};return{plugin:r.plugin,ref:e.nodeRef,version:n,params:i,isInitial:!0,error:void 0}}};var XD=class extends hl{defaultState(){return{header:"Volume Streaming",isCollapsed:!1,isBusy:!1,isHidden:!0,brand:{accent:"cyan",svg:sB}}}componentDidMount(){this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,()=>{this.setState({isHidden:!this.canEnable(),description:km.getSelectedStructuresDescription(this.plugin)})}),this.subscribe(this.plugin.state.events.cell.stateUpdated,e=>{kt.hasTag(e.cell.transform,di.RootTag)&&this.forceUpdate()}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e})})}get pivot(){return this.plugin.managers.structure.hierarchy.selection.structures[0]}canEnable(){var e,r;let{selection:n}=this.plugin.managers.structure.hierarchy;if(n.structures.length!==1)return!1;let o=this.pivot.cell;return o.obj?!!(!((r=(e=q1.definition).isApplicable)===null||r===void 0)&&r.call(e,o.obj,o.transform,this.plugin)):!1}renderEnable(){var e,r;let n=this.pivot;if(!n.cell.parent)return null;let o=lt.findTagInSubtree(n.cell.parent.tree,this.pivot.cell.transform.ref,di.RootTag),i=o&&n.cell.parent.cells.get(o),a=i&&i.status==="error"?{header:i.errorText&&(!((e=i.errorText)===null||e===void 0)&&e.includes("404"))?"No Density Data Available":"Error Enabling",icon:cB,title:i.errorText}:i&&((r=i.obj)===null||r===void 0?void 0:r.data.entries.length)===0?{header:"Error Enabling",icon:cB,title:"No Entry for Streaming Found"}:{header:"Enable",icon:Pc,title:"Enable"};return(0,En.jsx)(gg,{state:n.cell.parent,action:q1,initiallyCollapsed:!0,nodeRef:n.cell.transform.ref,simpleApply:a})}renderParams(){var e,r,n,o,i;let a=this.pivot;if(!a.cell.parent)return null;let s=((r=(e=a.volumeStreaming)===null||e===void 0?void 0:e.cell.transform.params)===null||r===void 0?void 0:r.entry.params.view.name)==="selection-box"&&((i=(o=(n=this.plugin.state.behaviors.cells.get(ly.id))===null||n===void 0?void 0:n.params)===null||o===void 0?void 0:o.values)===null||i===void 0?void 0:i.bindings);return(0,En.jsxs)(En.Fragment,{children:[(0,En.jsx)(Xs,{state:a.cell.parent,transform:a.volumeStreaming.cell.transform,customHeader:"none",noMargin:!0}),s&&(0,En.jsx)(Ci,{header:"Controls Help",children:(0,En.jsx)(Dx,{bindings:s})})]})}renderControls(){let e=this.pivot;return e?e.volumeStreaming?this.renderParams():this.renderEnable():null}},YD=class extends hl{constructor(){super(...arguments),this.item=e=>{var r;let n=this.plugin.managers.volume.hierarchy.selection,o=((r=e.cell.obj)===null||r===void 0?void 0:r.label)||"Volume";return{kind:"item",label:(e.kind==="lazy-volume"?"Load ":"")+(o||e.kind),selected:n===e,value:e}},this.selectCurrent=e=>{if(this.toggleHierarchy(),!e)return;let r=e.value;r.kind==="volume"?this.plugin.managers.volume.hierarchy.setCurrent(r):this.lazyLoad(r.cell)},this.selectAdd=e=>{e&&(this.setState({show:void 0}),e.value())},this.toggleHierarchy=()=>this.setState({show:this.state.show!=="hierarchy"?"hierarchy":void 0}),this.toggleAddRepr=()=>this.setState({show:this.state.show!=="add-repr"?"add-repr":void 0})}defaultState(){return{header:"Volume",isCollapsed:!1,isBusy:!1,isHidden:!0,brand:{accent:"purple",svg:sB}}}componentDidMount(){this.subscribe(this.plugin.managers.volume.hierarchy.behaviors.selection,e=>{this.setState({isHidden:e.hierarchy.volumes.length===0&&e.hierarchy.lazyVolumes.length===0})}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e})})}get hierarchyItems(){let e=this.plugin.managers.volume.hierarchy,{current:r}=e,n=[];for(let o of r.volumes)n.push(this.item(o));for(let o of r.lazyVolumes)n.push(this.item(o));return n}get addActions(){let e=this.plugin.managers.volume.hierarchy,r=e.selection;return[...Dh.getRepresentationTypes(this.plugin,r).map(o=>wt.Item(o[1],()=>e.addRepresentation(r,o[0])))]}get isEmpty(){let{volumes:e,lazyVolumes:r}=this.plugin.managers.volume.hierarchy.current;return e.length===0&&r.length===0}get label(){var e;if(this.state.loadingLabel)return`Loading ${this.state.loadingLabel}...`;let r=this.plugin.managers.volume.hierarchy.selection;return r?((e=r?.cell.obj)===null||e===void 0?void 0:e.label)||"Volume":"Nothing Selected"}lazyLoad(e){return N(this,null,function*(){let{url:r,isBinary:n,format:o,entryId:i,isovalues:a}=e.obj.data;this.setState({isBusy:!0,loadingLabel:e.obj.label});try{let s=this.plugin;yield s.dataTransaction(()=>N(this,null,function*(){var l,c,u,d;let m=yield s.builders.data.download({url:r,isBinary:n},{state:{isGhost:!0}}),p=yield s.dataFormats.get(o).parse(s,m,{entryId:i}),h=p.volume||p.volumes[0];if(!h?.isOk)throw new Error("Failed to parse any volume.");let f=s.build();for(let b of a)f.to((u=(l=p.volumes)===null||l===void 0?void 0:l[(c=b.volumeIndex)!==null&&c!==void 0?c:0])!==null&&u!==void 0?u:p.volume).apply(de.Representation.VolumeRepresentation3D,Bp(this.plugin,h.data,{type:"isosurface",typeParams:{alpha:(d=b.alpha)!==null&&d!==void 0?d:1,isoValue:b.type==="absolute"?{kind:"absolute",absoluteValue:b.value}:{kind:"relative",relativeValue:b.value}},color:"uniform",colorParams:{value:b.color}}));yield f.commit(),yield s.build().delete(e).commit()}))}finally{this.setState({isBusy:!1,loadingLabel:void 0})}})}renderControls(){let e=this.state.isBusy||this.isEmpty,r=this.label,n=this.plugin.managers.volume.hierarchy.selection;return(0,En.jsxs)(En.Fragment,{children:[(0,En.jsxs)("div",{className:"msp-flex-row",style:{marginTop:"1px"},children:[(0,En.jsx)(vt,{noOverflow:!0,flex:!0,onClick:this.toggleHierarchy,disabled:e,title:r,children:r}),!this.isEmpty&&n&&(0,En.jsx)(pt,{svg:Fd,onClick:this.toggleAddRepr,title:"Apply a structure presets to the current hierarchy.",toggleState:this.state.show==="add-repr",disabled:e})]}),this.state.show==="hierarchy"&&(0,En.jsx)(wt,{items:this.hierarchyItems,onSelect:this.selectCurrent}),this.state.show==="add-repr"&&(0,En.jsx)(wt,{items:this.addActions,onSelect:this.selectAdd}),n&&n.representations.length>0&&(0,En.jsx)("div",{style:{marginTop:"6px"},children:n.representations.map(o=>(0,En.jsx)(WV,{representation:o},o.cell.transform.ref))})]})}},WV=class extends Kn{constructor(){super(...arguments),this.state={action:void 0},this.remove=()=>this.plugin.managers.volume.hierarchy.remove([this.props.representation],!0),this.toggleVisible=e=>{e.preventDefault(),e.currentTarget.blur(),this.plugin.managers.volume.hierarchy.toggleVisibility([this.props.representation])},this.toggleColor=()=>{this.setState({action:this.state.action==="select-color"?void 0:"select-color"})},this.toggleUpdate=()=>this.setState({action:this.state.action==="update"?void 0:"update"}),this.highlight=e=>{e.preventDefault(),this.props.representation.cell.parent&&Re.Interactivity.Object.Highlight(this.plugin,{state:this.props.representation.cell.parent,ref:this.props.representation.cell.transform.ref})},this.clearHighlight=e=>{e.preventDefault(),Re.Interactivity.ClearHighlights(this.plugin)},this.focus=()=>{var e;let r=this.props.representation,n=(e=r.cell.obj)===null||e===void 0?void 0:e.data.repr.getAllLoci();r.cell.state.isHidden&&this.plugin.managers.volume.hierarchy.toggleVisibility([this.props.representation],"show"),n&&this.plugin.managers.camera.focusLoci(n,{extraRadius:1})},this.updateColor=({value:e})=>{let r=this.props.representation.cell.transform;return this.plugin.build().to(r.ref).update(U(w({},r.params),{colorTheme:{name:"uniform",params:{value:e}}})).commit()}}componentDidMount(){this.subscribe(this.plugin.state.events.cell.stateUpdated,e=>{Ll.ObjectEvent.isCell(e,this.props.representation.cell)&&this.forceUpdate()})}get color(){var e,r;let n=this.props.representation.cell;if(((e=n.transform.params)===null||e===void 0?void 0:e.colorTheme.name)==="uniform")return(r=n.transform.params)===null||r===void 0?void 0:r.colorTheme.params.value}render(){var e,r,n;let o=this.props.representation.cell,i=this.color;return(0,En.jsxs)(En.Fragment,{children:[(0,En.jsxs)("div",{className:"msp-flex-row",children:[i!==void 0&&(0,En.jsx)(vt,{style:{backgroundColor:ce.toStyle(i),minWidth:32,width:32},onClick:this.toggleColor}),(0,En.jsxs)(vt,{noOverflow:!0,className:"msp-control-button-label",title:`${(e=o.obj)===null||e===void 0?void 0:e.label}. Click to focus.`,onClick:this.focus,onMouseEnter:this.highlight,onMouseLeave:this.clearHighlight,style:{textAlign:"left"},children:[(r=o.obj)===null||r===void 0?void 0:r.label,(0,En.jsx)("small",{className:"msp-25-lower-contrast-text",style:{float:"right"},children:(n=o.obj)===null||n===void 0?void 0:n.description})]}),(0,En.jsx)(pt,{svg:o.state.isHidden?Ec:Ic,toggleState:!1,onClick:this.toggleVisible,title:`${o.state.isHidden?"Show":"Hide"} component`,small:!0,className:"msp-form-control",flex:!0}),(0,En.jsx)(pt,{svg:Hi,onClick:this.remove,title:"Remove",small:!0}),(0,En.jsx)(pt,{svg:Pu,onClick:this.toggleUpdate,title:"Actions",toggleState:this.state.action==="update"})]}),this.state.action==="update"&&!!o.parent&&(0,En.jsx)("div",{style:{marginBottom:"6px"},className:"msp-accent-offset",children:(0,En.jsx)(Xs,{state:o.parent,transform:o.transform,customHeader:"none",noMargin:!0})}),this.state.action==="select-color"&&i!==void 0&&(0,En.jsx)("div",{style:{marginBottom:"6px",marginTop:1},className:"msp-accent-offset",children:(0,En.jsx)(Ua,{header:"Select Color",initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:this.toggleColor,topRightIcon:ml,noTopMargin:!0,childrenClassName:"msp-viewport-controls-panel-controls",children:(0,En.jsx)(tb,{param:tFe,value:this.color,onChange:this.updateColor,name:"color",hideNameRow:!0})})})]})}},tFe=g.Color(ce(1184274));var vr=Ot(Or());var dT;(function(t){function e(n){return{size:n,matrix:Ro.create(n,n),eigenValues:new Float64Array(n),D:new Float64Array(n),E:new Float64Array(n)}}t.createCache=e;function r(n){rFe(n.size,n.matrix.data,n.eigenValues,n.D,n.E)}t.compute=r})(dT||(dT={}));function rFe(t,e,r,n,o){for(let a=0;a0;o--){let i=0,a=0;for(let s=0;s0&&(l=-l),r[o]=i*l,a=a-s*l,e[o-1]=s-l;for(let u=0;ul){let u=0;do{u=u+1;let d=e[l],m=(e[l+1]-d)/(2*r[l]),p=Kle(m,1);m<0&&(p=-p),e[l]=r[l]/(m+p),e[l+1]=r[l]*(m+p);let h=e[l+1],f=d-e[l];for(let _=l+2;_=l;_--){x=v,v=b,E=T,d=b*r[_],f=b*m,p=Kle(m,r[_]),r[_+1]=T*p,T=r[_]/p,b=m/p,m=b*e[_]-T*d,e[_+1]=f+T*(b*d+T*e[_]);for(let D=0;D=1e3)throw new Error("SVD: Not converging.")}while(Math.abs(r[l])>s*a)}e[l]=e[l]+i,r[l]=0}for(let l=0;lMath.abs(e)){let r=e/t;return Math.abs(t)*Math.sqrt(1+r*r)}if(e!==0){let r=t/e;return Math.abs(e)*Math.sqrt(1+r*r)}return 0}var Zd;(function(t){let e;(function(n){function o(i){return{x:new Float64Array(i),y:new Float64Array(i),z:new Float64Array(i)}}n.empty=o})(e=t.Positions||(t.Positions={}));function r(n,o){return typeof o>"u"&&(o={bTransform:W.zero(),rmsd:0}),sFe(new XV(n,o)),o}t.compute=r})(Zd||(Zd={}));var XV=class{constructor(e,r){this.evdCache=dT.createCache(4),this.translateB=W.identity(),this.rotateB=W.identity(),this.tempMatrix=W.identity(),this.a=e.a,this.b=e.b,e.centerA?this.centerA=e.centerA:this.centerA=e.centerA=np.fromArrays(e.a,te()).center,e.centerB?this.centerB=e.centerB:this.centerB=e.centerB=np.fromArrays(e.b,te()).center,this.result=r}};function iFe(t){let e=t.evdCache.matrix;Ro.makeZero(e);let r=t.a.x,n=t.a.y,o=t.a.z,i=t.b.x,a=t.b.y,s=t.b.z,l=t.centerA,c=t.centerB,u=0,d=Math.min(t.a.x.length,t.b.x.length);for(let m=0;m{r=0;let a={};i.forEach(s=>a[t[r++]]=s),o[t[n++]]=a}),o}var Zle={blosum62:$le(cFe,dFe),blosum62x:$le(lFe,uFe)};var mFe={gapPenalty:-11,gapExtensionPenalty:-1,substMatrix:"default"};function Jle(t,e,r={}){let n=w(w({},mFe),r),o=new YV(t,e,n);return o.calculate(),o.trace()}var YV=class{constructor(e,r,n){this.seqA=e,this.seqB=r,this.S=[],this.V=[],this.H=[],this.gapPenalty=n.gapPenalty,this.gapExtensionPenalty=n.gapExtensionPenalty,this.substMatrix=n.substMatrix==="default"?void 0:Zle[n.substMatrix],this.n=this.seqA.length,this.m=this.seqB.length}initMatrices(){let{n:e,m:r,gapPenalty:n,S:o,V:i,H:a}=this;for(let s=0;s<=e;++s){o[s]=[],i[s]=[],a[s]=[];for(let l=0;l<=r;++l)o[s][l]=0,i[s][l]=0,a[s][l]=0}for(let s=0;s<=e;++s)o[s][0]=n,a[s][0]=-1/0;for(let s=0;s<=r;++s)o[0][s]=n,i[0][s]=-1/0;o[0][0]=0}makeScoreFn(){let{seqA:e,seqB:r,substMatrix:n}=this;return n?function(i,a){var s,l;let c=e[i],u=r[a];return(l=(s=n[c])===null||s===void 0?void 0:s[u])!==null&&l!==void 0?l:-4}:function(i,a){let s=e[i],l=r[a];return s===l?5:-3}}calculate(){this.initMatrices();let e=this.makeScoreFn(),{V:r,H:n,S:o,n:i,m:a,gapExtensionPenalty:s,gapPenalty:l}=this,c,u,d,m,p;for(let h=1;h<=i;++h){u=o[h-1],c=r[h-1],d=r[h],m=n[h],p=o[h];for(let f=1;f<=a;++f)d[f]=Math.max(u[f]+l,c[f]+s),m[f]=Math.max(p[f-1]+l,m[f-1]+s),p[f]=Math.max(u[f-1]+e(h-1,f-1),d[f],m[f])}}trace(){let e=this.makeScoreFn(),{V:r,H:n,S:o,seqA:i,seqB:a,gapExtensionPenalty:s,gapPenalty:l}=this,c=this.n,u=this.m,d,m,p="",h="";for(o[c][u]>=r[c][u]?(d="S",m=o[c][u]):r[c][u]>=n[c][u]?(d="V",m=r[c][u]):(d="H",m=n[c][u]);c>0&&u>0;)d==="S"?o[c][u]===o[c-1][u-1]+e(c-1,u-1)?(p=i[c-1]+p,h=a[u-1]+h,--c,--u,d="S"):o[c][u]===r[c][u]?d="V":o[c][u]===n[c][u]?d="H":(--c,--u):d==="V"?r[c][u]===r[c-1][u]+s?(p=i[c-1]+p,h="-"+h,--c,d="V"):r[c][u]===o[c-1][u]+l?(p=i[c-1]+p,h="-"+h,--c,d="S"):--c:d==="H"&&(n[c][u]===n[c][u-1]+s?(p="-"+p,h=a[u-1]+h,--u,d="H"):n[c][u]===o[c][u-1]+l?(p="-"+p,h=a[u-1]+h,--u,d="S"):--u);for(;c>0;)p=i[c-1]+p,h="-"+h,--c;for(;u>0;)p="-"+p,h=a[u-1]+h,--u;return{aliA:p,aliB:h,score:m}}};var QD;(function(t){function e(n){let o=new Map;if(Pe.isAtomic(n.unit)){let{label_seq_id:i}=n.unit.model.atomicHierarchy.residues,{residueIndex:a}=n.unit;for(let s=0,l=we.size(n.indices);s=e)break}if(n>=e)break}return r}function hFe(t){if(t.length===0)return 0;let e=z.Loci.size(t[0]);for(let r=1;r=0?S:T,!o(i,x,T,E))continue;let _=`${u[x]}-${d[x]}-${m[x]}`;if(!e.has(_))e.set(_,{key:_,pivots:{[r]:[a,T,E]}});else{let D=e.get(_);D.pivots[r]||(D.pivots[r]=[a,T,E])}}}}}var KD=class extends hl{defaultState(){return{isCollapsed:!1,header:"Superposition",brand:{accent:"gray",svg:UJ},isHidden:!0}}componentDidMount(){this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,e=>{this.setState({isHidden:e.structures.length<2})})}renderControls(){return(0,vr.jsx)(vr.Fragment,{children:(0,vr.jsx)(KV,{})})}},nce={alignSequences:g.Boolean(!0,{isEssential:!0,description:"For Chain-based 3D superposition, perform a sequence alignment and use the aligned residue pairs to guide the 3D superposition."}),traceOnly:g.Boolean(!0,{description:"For Chain- and Uniprot-based 3D superposition, base superposition only on CA (and equivalent) atoms."})},xFe=g.getDefaultValues(nce),SFe="SuperpositionTransform",KV=class extends Kn{constructor(){super(...arguments),this.state={isBusy:!1,canUseDb:!1,action:void 0,options:xFe},this.superposeChains=()=>N(this,null,function*(){var e,r,n;let{query:o}=this.state.options.traceOnly?Qn.trace:Qn.polymer,i=this.chainEntries,a=i.map(d=>{let m=z.Loci.toStructure(d.loci),p=hn.toLociWithSourceUnits(o(new fa(m)));return z.Loci.remap(p,this.getRootStructure(d.loci.structure))}),s=this.plugin.managers.structure.hierarchy.findStructure((e=a[0])===null||e===void 0?void 0:e.structure),l=(n=(r=s?.transform)===null||r===void 0?void 0:r.cell.obj)===null||n===void 0?void 0:n.data.coordinateSystem,c=this.state.options.alignSequences?tce(a):QV(a),u=i[0];for(let d=1,m=a.length;dN(this,null,function*(){var e,r,n;let o=this.atomEntries,i=o.map(u=>z.Loci.remap(u.loci,this.getRootStructure(u.loci.structure))),a=QV(i),s=this.plugin.managers.structure.hierarchy.findStructure((e=i[0])===null||e===void 0?void 0:e.structure),l=(n=(r=s?.transform)===null||r===void 0?void 0:r.cell.obj)===null||n===void 0?void 0:n.data.coordinateSystem,c=o[0];for(let u=1,d=i.length;uN(this,null,function*(){var e,r,n;let o=this.plugin.managers.structure.hierarchy.behaviors.selection.value.structures,i=this.state.options.traceOnly,a=o.map(p=>{var h;return(h=p.cell.obj)===null||h===void 0?void 0:h.data}),{entries:s,failedPairs:l,zeroOverlapPairs:c}=rce(a,{traceOnly:i}),u=(n=(r=(e=o[0])===null||e===void 0?void 0:e.transform)===null||r===void 0?void 0:r.cell.obj)===null||n===void 0?void 0:n.data.coordinateSystem,d=0;for(let p of s)yield this.transform(o[p.other].cell,p.transform.bTransform,u),d+=p.transform.rmsd;d/=Math.max(s.length-1,1);let m=p=>`[${p.map(([h,f])=>`(${a[h].models[0].entryId}, ${a[f].models[0].entryId})`).join(", ")}]`;c.length&&this.plugin.log.warn(`Superposition: No UNIPROT mapping overlap between structures ${m(c)}.`),l.length&&this.plugin.log.error(`Superposition: Failed to superpose structures ${m(l)}.`),s.length&&(this.plugin.log.info(`Superposed ${s.length+1} structures with avg. RMSD ${d.toFixed(2)} \xC5.`),yield this.cameraReset())}),this.toggleByChains=()=>this.setState({action:this.state.action==="byChains"?void 0:"byChains"}),this.toggleByAtoms=()=>this.setState({action:this.state.action==="byAtoms"?void 0:"byAtoms"}),this.toggleOptions=()=>this.setState({action:this.state.action==="options"?void 0:"options"}),this.setOptions=e=>{this.setState({options:e})}}componentDidMount(){this.subscribe(this.selection.events.changed,()=>{this.forceUpdate()}),this.subscribe(this.selection.events.additionsHistoryUpdated,()=>{this.forceUpdate()}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{this.setState({isBusy:e})}),this.subscribe(this.plugin.managers.structure.hierarchy.behaviors.selection,e=>{this.setState({canUseDb:e.structures.every(r=>{var n;return!!(!((n=r.cell.obj)===null||n===void 0)&&n.data)&&r.cell.obj.data.models.some(o=>cc.Provider.isApplicable(o))})})})}get selection(){return this.plugin.managers.structure.selection}transform(e,r,n){return N(this,null,function*(){let o=Fn.resolveAndCheck(this.plugin.state.data,e);if(!o)return;let i=this.plugin.state.data.selectQ(c=>c.byRef(o.transform.ref).subtree().withTransformer(de.Model.TransformStructureConformation))[0],s={transform:{name:"matrix",params:{data:n&&!W.isIdentity(n.matrix)?W.mul(W(),n.matrix,r):r,transpose:!1}}},l=i?this.plugin.state.data.build().to(i).update(s):this.plugin.state.data.build().to(e).insert(de.Model.TransformStructureConformation,s,{tags:SFe});yield this.plugin.runTask(this.plugin.state.data.updateTree(l))})}getRootStructure(e){var r;let n=this.plugin.helpers.substructureParent.get(e);return(r=this.plugin.state.data.selectQ(o=>o.byValue(n).rootOfType(X.Molecule.Structure))[0].obj)===null||r===void 0?void 0:r.data}cameraReset(){return N(this,null,function*(){yield new Promise(e=>requestAnimationFrame(e)),Re.Camera.Reset(this.plugin)})}highlight(e){this.plugin.managers.interactivity.lociHighlights.highlightOnly({loci:e},!1)}moveHistory(e,r){this.plugin.managers.structure.selection.modifyHistory(e,r,void 0,!0)}focusLoci(e){this.plugin.managers.camera.focusLoci(e)}lociEntry(e,r){return(0,vr.jsx)("div",{className:"msp-flex-row",children:(0,vr.jsx)(vt,{noOverflow:!0,title:"Click to focus. Hover to highlight.",onClick:()=>this.focusLoci(e.loci),style:{width:"auto",textAlign:"left"},onMouseEnter:()=>this.highlight(e.loci),onMouseLeave:()=>this.plugin.managers.interactivity.lociHighlights.clearHighlights(),children:(0,vr.jsx)("span",{dangerouslySetInnerHTML:{__html:e.label}})})},r)}historyEntry(e,r){let n=this.plugin.managers.structure.selection.additionsHistory;return(0,vr.jsxs)("div",{className:"msp-flex-row",children:[(0,vr.jsxs)(vt,{noOverflow:!0,title:"Click to focus. Hover to highlight.",onClick:()=>this.focusLoci(e.loci),style:{width:"auto",textAlign:"left"},onMouseEnter:()=>this.highlight(e.loci),onMouseLeave:()=>this.plugin.managers.interactivity.lociHighlights.clearHighlights(),children:[r,". ",(0,vr.jsx)("span",{dangerouslySetInnerHTML:{__html:e.label}})]}),n.length>1&&(0,vr.jsx)(pt,{svg:Ph,small:!0,className:"msp-form-control",onClick:()=>this.moveHistory(e,"up"),flex:"20px",title:"Move up"}),n.length>1&&(0,vr.jsx)(pt,{svg:_h,small:!0,className:"msp-form-control",onClick:()=>this.moveHistory(e,"down"),flex:"20px",title:"Move down"}),(0,vr.jsx)(pt,{svg:Hi,small:!0,className:"msp-form-control",onClick:()=>this.plugin.managers.structure.selection.modifyHistory(e,"remove"),flex:!0,title:"Remove"})]},e.id)}atomsLociEntry(e,r){return(0,vr.jsxs)("div",{children:[(0,vr.jsx)("div",{className:"msp-control-group-header",children:(0,vr.jsx)("div",{className:"msp-no-overflow",title:e.label,children:e.label})}),(0,vr.jsx)("div",{className:"msp-control-offset",children:e.atoms.map((n,o)=>this.historyEntry(n,o))})]},r)}get chainEntries(){let e=z.Location.create(),r=[];return this.plugin.managers.structure.selection.entries.forEach(({selection:n},o)=>{let i=Fn.resolveAndCheck(this.plugin.state.data,o);if(!i||z.Loci.isEmpty(n))return;let a=z.Loci.getFirstLocation(n,e);if(n.elements.length>1||Ne.entity.type(a)!=="polymer")return;let s=z.Stats.ofLoci(n),l=Qg(s,{countsOnly:!0}),c=Sc(a,{reverse:!0,granularity:"chain"}).split("|"),u=`${l} | ${c[0]} | ${c[c.length-1]}`;r.push({loci:n,label:u,cell:i})}),r}get atomEntries(){let e=new Map,r=this.plugin.managers.structure.selection.additionsHistory;for(let o=0,i=r.length;o{let a=this.plugin.helpers.substructureParent.get(i),s=[];for(let u=0,d=o.length;u0&&(0,vr.jsx)("div",{className:"msp-control-offset",children:e.map((r,n)=>this.lociEntry(r,n))}),e.length<2&&(0,vr.jsx)("div",{className:"msp-control-offset msp-help-text",children:(0,vr.jsxs)("div",{className:"msp-help-description",children:[(0,vr.jsx)(pr,{svg:Bs,inline:!0}),"Add 2 or more selections",this.toggleHint()," from separate structures. Selections must be limited to single polymer chains or residues therein."]})}),e.length>1&&(0,vr.jsx)(vt,{title:"Superpose structures by selected chains.",className:"msp-btn-commit msp-btn-commit-on",onClick:this.superposeChains,style:{marginTop:"1px"},children:"Superpose"})]})}addByAtoms(){let e=this.atomEntries;return(0,vr.jsxs)(vr.Fragment,{children:[e.length>0&&(0,vr.jsx)("div",{className:"msp-control-offset",children:e.map((r,n)=>this.atomsLociEntry(r,n))}),e.length<2&&(0,vr.jsx)("div",{className:"msp-control-offset msp-help-text",children:(0,vr.jsxs)("div",{className:"msp-help-description",children:[(0,vr.jsx)(pr,{svg:Bs,inline:!0}),"Add 1 or more selections",this.toggleHint()," from separate structures. Selections must be limited to single atoms."]})}),e.length>1&&(0,vr.jsx)(vt,{title:"Superpose structures by selected atoms.",className:"msp-btn-commit msp-btn-commit-on",onClick:this.superposeAtoms,style:{marginTop:"1px"},children:"Superpose"})]})}superposeByDbMapping(){return(0,vr.jsx)(vr.Fragment,{children:(0,vr.jsx)(vt,{icon:pB,title:"Superpose structures using intersection of residues from SIFTS UNIPROT mapping.",className:"msp-btn msp-btn-block",onClick:this.superposeDb,style:{marginTop:"1px"},disabled:this.state.isBusy,children:"Uniprot"})})}render(){return(0,vr.jsxs)(vr.Fragment,{children:[(0,vr.jsxs)("div",{className:"msp-flex-row",children:[(0,vr.jsx)(Gn,{icon:pB,label:"Chains",toggle:this.toggleByChains,isSelected:this.state.action==="byChains",disabled:this.state.isBusy}),(0,vr.jsx)(Gn,{icon:zJ,label:"Atoms",toggle:this.toggleByAtoms,isSelected:this.state.action==="byAtoms",disabled:this.state.isBusy}),this.state.canUseDb&&this.superposeByDbMapping(),(0,vr.jsx)(Gn,{icon:pl,label:"",title:"Options",toggle:this.toggleOptions,isSelected:this.state.action==="options",disabled:this.state.isBusy,style:{flex:"0 0 40px",padding:0}})]}),this.state.action==="byChains"&&this.addByChains(),this.state.action==="byAtoms"&&this.addByAtoms(),this.state.action==="options"&&(0,vr.jsx)("div",{className:"msp-control-offset",children:(0,vr.jsx)(Hr,{params:nce,values:this.state.options,onChangeValues:this.setOptions,isDisabled:this.state.isBusy})})]})}};var Km=Ot(Or());var $D=class extends hl{defaultState(){return{isCollapsed:!1,header:"Quick Styles",brand:{accent:"gray",svg:xJ}}}renderControls(){return(0,Km.jsx)(Km.Fragment,{children:(0,Km.jsx)($V,{})})}},$V=class extends Kn{default(){return N(this,null,function*(){let{structures:e}=this.plugin.managers.structure.hierarchy.selection,r=this.plugin.config.get(Wt.Structure.DefaultRepresentationPreset)||Ms.auto.id,n=this.plugin.builders.structure.representation.resolveProvider(r);if(yield this.plugin.managers.structure.component.applyPreset(e,n),this.plugin.managers.structure.component.setOptions(g.getDefaultValues(ql.OptionsParams)),this.plugin.canvas3d){let o=g.getDefaultValues(Rv);this.plugin.canvas3d.setProps({postprocessing:{outline:o.outline,occlusion:o.occlusion}})}})}illustrative(){return N(this,null,function*(){let{structures:e}=this.plugin.managers.structure.hierarchy.selection;yield this.plugin.managers.structure.component.applyPreset(e,Ms.illustrative),this.plugin.canvas3d&&this.plugin.canvas3d.setProps({postprocessing:{outline:{name:"on",params:{scale:1,color:ce(0),threshold:.25,includeTransparent:!0}},occlusion:{name:"on",params:{multiScale:{name:"off",params:{}},radius:5,bias:.8,blurKernelSize:15,samples:32,resolutionScale:1,color:ce(0)}},shadow:{name:"off",params:{}}}})})}stylized(){return N(this,null,function*(){if(this.plugin.managers.structure.component.setOptions(U(w({},this.plugin.managers.structure.component.state.options),{ignoreLight:!0})),this.plugin.canvas3d){let e=this.plugin.canvas3d.props.postprocessing;this.plugin.canvas3d.setProps({postprocessing:{outline:{name:"on",params:e.outline.name==="on"?e.outline.params:{scale:1,color:ce(0),threshold:.33,includeTransparent:!0}},occlusion:{name:"on",params:e.occlusion.name==="on"?e.occlusion.params:{multiScale:{name:"off",params:{}},radius:5,bias:.8,blurKernelSize:15,samples:32,resolutionScale:1,color:ce(0)}},shadow:{name:"off",params:{}}}})}})}render(){return(0,Km.jsxs)("div",{className:"msp-flex-row",children:[(0,Km.jsx)(vt,{noOverflow:!0,title:"Applies default representation preset. Set outline and occlusion effects to defaults.",onClick:()=>this.default(),style:{width:"auto"},children:"Default"}),(0,Km.jsx)(vt,{noOverflow:!0,title:"Applies no representation preset. Enables outline and occlusion effects. Enables ignore-light representation parameter.",onClick:()=>this.stylized(),style:{width:"auto"},children:"Stylized"}),(0,Km.jsx)(vt,{noOverflow:!0,title:"Applies illustrative representation preset. Enables outline and occlusion effects. Enables ignore-light parameter.",onClick:()=>this.illustrative(),style:{width:"auto"},children:"Illustrative"})]})}};var ZD=class extends Mt{constructor(){super(...arguments),this.state={show:!1,label:""},this.update=()=>{let e=this.plugin.state.data,r=e.selectQ(a=>a.ofTransformer(de.Model.ModelFromTrajectory));if(r.length===0){this.setState({show:!1});return}let n="",o=0,i=new Set;for(let a of r){if(!a.sourceRef)continue;let s=e.cells.get(a.sourceRef).obj;if(s&&s.data.frameCount>1){if(i.has(a.sourceRef)){this.setState({show:!1});return}i.add(a.sourceRef),o++,n||(n=`Model ${a.transform.params.modelIndex+1} / ${s.data.frameCount}`)}}o>1&&(n=""),this.setState({show:o>0,label:n})},this.reset=()=>Re.State.ApplyAction(this.plugin,{state:this.plugin.state.data,action:pS.create({action:"reset"})}),this.prev=()=>Re.State.ApplyAction(this.plugin,{state:this.plugin.state.data,action:pS.create({action:"advance",by:-1})}),this.next=()=>Re.State.ApplyAction(this.plugin,{state:this.plugin.state.data,action:pS.create({action:"advance",by:1})})}componentDidMount(){this.subscribe(this.plugin.state.data.events.changed,this.update),this.subscribe(this.plugin.behaviors.state.isAnimating,this.update)}render(){let e=this.plugin.behaviors.state.isAnimating.value;return!this.state.show||e&&!this.state.label||!this.plugin.config.get(Wt.Viewport.ShowTrajectoryControls)?null:(0,br.jsxs)("div",{className:"msp-traj-controls",children:[!e&&(0,br.jsx)(pt,{svg:OJ,title:"First Model",onClick:this.reset,disabled:e}),!e&&(0,br.jsx)(pt,{svg:uB,title:"Previous Model",onClick:this.prev,disabled:e}),!e&&(0,br.jsx)(pt,{svg:dB,title:"Next Model",onClick:this.next,disabled:e}),!!this.state.label&&(0,br.jsx)("span",{children:this.state.label})]})}},JD=class extends Mt{constructor(){super(...arguments),this.state={isBusy:!1,show:!0},this.keyUp=e=>{if(!e.ctrlKey||this.state.isBusy||e.target!==document.body)return;let r=this.plugin.managers.snapshot;if(e.keyCode===37||e.key==="ArrowLeft")r.state.isPlaying&&r.stop(),this.prev();else if(e.keyCode===38||e.key==="ArrowUp"){if(r.state.isPlaying&&r.stop(),r.state.entries.size===0)return;let n=r.state.entries.get(0);this.update(n.snapshot.id)}else if(e.keyCode===39||e.key==="ArrowRight")r.state.isPlaying&&r.stop(),this.next();else if(e.keyCode===40||e.key==="ArrowDown"){if(r.state.isPlaying&&r.stop(),r.state.entries.size===0)return;let n=r.state.entries.get(r.state.entries.size-1);this.update(n.snapshot.id)}},this.change=e=>{e.target.value!=="none"&&this.update(e.target.value)},this.prev=()=>{let e=this.plugin.managers.snapshot,r=e.getNextId(e.state.current,-1);r&&this.update(r)},this.next=()=>{let e=this.plugin.managers.snapshot,r=e.getNextId(e.state.current,1);r&&this.update(r)},this.togglePlay=()=>{this.plugin.managers.snapshot.togglePlay()}}componentDidMount(){this.subscribe(this.plugin.managers.snapshot.events.changed,()=>this.forceUpdate()),this.subscribe(this.plugin.behaviors.state.isBusy,e=>this.setState({isBusy:e})),this.subscribe(this.plugin.behaviors.state.isAnimating,e=>this.setState({isBusy:e})),window.addEventListener("keyup",this.keyUp,!1)}componentWillUnmount(){super.componentWillUnmount(),window.removeEventListener("keyup",this.keyUp,!1)}update(e){return N(this,null,function*(){this.setState({isBusy:!0}),yield Re.State.Snapshots.Apply(this.plugin,{id:e}),this.setState({isBusy:!1})})}render(){let e=this.plugin.managers.snapshot,r=e.state.entries.size;if(r<2||!this.state.show)return null;let n=e.state.current,o=e.state.isPlaying;return(0,br.jsxs)("div",{className:"msp-state-snapshot-viewport-controls",children:[(0,br.jsxs)("select",{className:"msp-form-control",value:n||"none",onChange:this.change,disabled:this.state.isBusy||o,children:[!n&&(0,br.jsx)("option",{value:"none"},"none"),e.state.entries.valueSeq().map((i,a)=>(0,br.jsxs)("option",{value:i.snapshot.id,children:[`[${a+1}/${r}]`," ",i.name||new Date(i.timestamp).toLocaleString()]},i.snapshot.id))]}),(0,br.jsx)(pt,{svg:o?mB:lP,title:o?"Pause":"Cycle States",onClick:this.togglePlay,disabled:o?!1:this.state.isBusy}),!o&&(0,br.jsxs)(br.Fragment,{children:[(0,br.jsx)(pt,{svg:uB,title:"Previous State",onClick:this.prev,disabled:this.state.isBusy||o}),(0,br.jsx)(pt,{svg:dB,title:"Next State",onClick:this.next,disabled:this.state.isBusy||o})]})]})}};function oce(){var t;let e=t0.useContext(Hl),[r,n]=t0.useState(0);t0.useEffect(()=>{let a=e.managers.snapshot.events.changed.subscribe(()=>n(s=>s+1));return()=>a.unsubscribe()},[e]);let o=e.managers.snapshot.state.current;if(!o)return null;let i=e.managers.snapshot.getEntry(o);return!((t=i?.description)===null||t===void 0)&&t.trim()?(0,br.jsx)("div",{className:"msp-snapshot-description-wrapper",children:(0,br.jsx)(BD,{skipHtml:!0,components:{a:CFe},children:i.description})}):null}function CFe({href:t,children:e,element:r}){let n=t0.useContext(Hl);return t&&t[0]==="#"?(0,br.jsx)("a",{href:"#",onClick:o=>{o.preventDefault(),n.managers.snapshot.applyKey(t.substring(1))},children:e}):r}var eA=class extends Mt{constructor(){super(...arguments),this.state={isEmpty:!0,isExpanded:!1,isBusy:!1,isAnimating:!1,isPlaying:!1},this.toggleExpanded=()=>this.setState({isExpanded:!this.state.isExpanded}),this.stop=()=>{this.plugin.managers.animation.stop(),this.plugin.managers.snapshot.stop()}}componentDidMount(){this.subscribe(this.plugin.managers.snapshot.events.changed,()=>{this.plugin.managers.snapshot.state.isPlaying?this.setState({isPlaying:!0,isExpanded:!1}):this.setState({isPlaying:!1})}),this.subscribe(this.plugin.behaviors.state.isBusy,e=>{e?this.setState({isBusy:!0,isExpanded:!1,isEmpty:this.plugin.state.data.tree.transforms.size<2}):this.setState({isBusy:!1,isEmpty:this.plugin.state.data.tree.transforms.size<2})}),this.subscribe(this.plugin.behaviors.state.isAnimating,e=>{e?this.setState({isAnimating:!0,isExpanded:!1}):this.setState({isAnimating:!1})})}render(){let e=this.plugin.managers.snapshot.state.isPlaying;if(e||this.state.isEmpty||this.plugin.managers.animation.isEmpty||!this.plugin.config.get(Wt.Viewport.ShowAnimation))return null;let r=this.state.isAnimating;return(0,br.jsxs)("div",{className:"msp-animation-viewport-controls",children:[(0,br.jsxs)("div",{children:[(0,br.jsx)("div",{className:"msp-semi-transparent-background"}),(0,br.jsx)(pt,{svg:r||e?mB:FJ,transparent:!0,title:r?"Stop":"Select Animation",onClick:r||e?this.stop:this.toggleExpanded,toggleState:this.state.isExpanded,disabled:r||e?!1:this.state.isBusy||this.state.isPlaying||this.state.isEmpty})]}),this.state.isExpanded&&!this.state.isBusy&&(0,br.jsx)("div",{className:"msp-animation-viewport-controls-select",children:(0,br.jsx)(OD,{onStart:this.toggleExpanded})})]})}},tA=class extends Mt{componentDidMount(){this.subscribe(this.plugin.behaviors.interaction.selectionMode,()=>this.forceUpdate())}render(){return this.plugin.selectionMode?(0,br.jsx)("div",{className:"msp-selection-viewport-controls",children:(0,br.jsx)(GD,{})}):null}},rA=class extends Mt{constructor(){super(...arguments),this.state={labels:[]}}componentDidMount(){this.subscribe(this.plugin.behaviors.labels.highlight,e=>this.setState({labels:e.labels}))}render(){return this.state.labels.length===0?null:(0,br.jsx)("div",{className:"msp-highlight-info",children:this.state.labels.map((e,r)=>e.indexOf(` +`)>0?(0,br.jsx)("div",{className:"msp-highlight-markdown-row",children:(0,br.jsx)(BD,{skipHtml:!0,children:e})},""+r):(0,br.jsx)("div",{className:"msp-highlight-simple-row",dangerouslySetInnerHTML:{__html:e}},""+r))})}},ZV=class extends Mt{componentDidMount(){this.subscribe(this.plugin.state.behaviors.events.changed,()=>this.forceUpdate())}render(){let e=[];return this.plugin.customStructureControls.forEach((r,n)=>{e.push((0,br.jsx)(r,{initiallyCollapsed:this.props.initiallyCollapsed},n))}),e.length>0?(0,br.jsx)(br.Fragment,{children:e}):null}},nA=class extends Mt{render(){return(0,br.jsxs)(br.Fragment,{children:[(0,br.jsxs)("div",{className:"msp-section-header",children:[(0,br.jsx)(pr,{svg:wJ}),"Structure Tools"]}),(0,br.jsx)(WD,{}),(0,br.jsx)(HD,{}),(0,br.jsx)(KD,{}),(0,br.jsx)($D,{}),(0,br.jsx)(VD,{}),this.plugin.config.get(Wt.VolumeStreaming.Enabled)&&(0,br.jsx)(XD,{}),(0,br.jsx)(YD,{}),(0,br.jsx)(ZV,{})]})}};var ar=Ot(Or());var kx=Ot(Or());var oA=class extends Mt{get current(){return this.props.state.behaviors.currentObject.value}componentDidMount(){this.subscribe(this.plugin.state.events.object.updated,({ref:e,state:r})=>{let n=this.current;n.ref!==e||n.state!==r||this.forceUpdate()}),this.subscribe(this.plugin.state.data.actions.events.added,()=>this.forceUpdate()),this.subscribe(this.plugin.state.data.actions.events.removed,()=>this.forceUpdate())}render(){let{state:e,nodeRef:r}=this.props,n=e.cells.get(r),o=e.actions.fromCell(n,this.plugin);if(o.length===0)return null;let i=n.transform.transformer.definition,a=n.obj?n.obj.label:i.display&&i.display.name||i.name;return(0,kx.jsxs)("div",{className:"msp-state-actions",children:[!this.props.hideHeader&&(0,kx.jsxs)("div",{className:"msp-section-header",children:[(0,kx.jsx)(pr,{svg:DJ})," ",`Actions (${a})`]}),o.map((s,l)=>(0,kx.jsx)(gg,{state:e,action:s,nodeRef:r,initiallyCollapsed:l===0?!this.props.alwaysExpandFirst&&this.props.initiallyCollapsed:this.props.initiallyCollapsed},`${s.id}`))]})}};var dt=Ot(Or());var r0=Ot(Po());var iA=class extends Mt{render(){var e;return(0,dt.jsxs)("div",{children:[(0,dt.jsx)(Nd,{icon:cP,title:"Plugin State"}),(0,dt.jsx)("div",{style:{marginBottom:"10px"},children:(0,dt.jsx)(Ci,{header:"Save Options",initiallyExpanded:!1,children:(0,dt.jsx)(fT,{})})}),(0,dt.jsx)(aA,{}),(0,dt.jsx)(JV,{}),(0,dt.jsx)(Nd,{title:"Save as File",accent:"blue"}),(0,dt.jsx)(pT,{}),((e=this.plugin.spec.components)===null||e===void 0?void 0:e.remoteState)!=="none"&&(0,dt.jsx)(hT,{})]})}},pT=class extends Mt{constructor(){super(...arguments),this.downloadToFileJson=()=>{var e,r;(r=(e=this.props).onAction)===null||r===void 0||r.call(e),Re.State.Snapshots.DownloadToFile(this.plugin,{type:"json"})},this.downloadToFileZip=()=>{var e,r;(r=(e=this.props).onAction)===null||r===void 0||r.call(e),Re.State.Snapshots.DownloadToFile(this.plugin,{type:"zip"})},this.open=e=>{var r,n;if(!e.target.files||!e.target.files[0]){this.plugin.log.error("No state file selected");return}(n=(r=this.props).onAction)===null||n===void 0||n.call(r),Re.State.Snapshots.OpenFile(this.plugin,{file:e.target.files[0]})}}render(){return(0,dt.jsxs)(dt.Fragment,{children:[(0,dt.jsxs)("div",{className:"msp-flex-row",children:[(0,dt.jsx)(vt,{icon:SS,onClick:this.downloadToFileJson,title:"Save the state description. Input data are loaded using the provided sources. Does not work if local files are used as input.",children:"State"}),(0,dt.jsx)(vt,{icon:SS,onClick:this.downloadToFileZip,title:"Save the state including the input data.",children:"Session"}),(0,dt.jsxs)("div",{className:"msp-btn msp-btn-block msp-btn-action msp-loader-msp-btn-file",children:[(0,dt.jsx)(pr,{svg:BJ,inline:!0})," Open ",(0,dt.jsx)("input",{onChange:this.open,type:"file",multiple:!1,accept:".molx,.molj"})]})]}),(0,dt.jsxs)("div",{className:"msp-help-text",style:{padding:"10px"},children:[(0,dt.jsx)(pr,{svg:uP})," This is an experimental feature and stored states/sessions might not be openable in a future version."]})]})}},fT=class extends Mt{componentDidMount(){this.subscribe(this.plugin.state.snapshotParams,()=>this.forceUpdate())}render(){return(0,dt.jsx)(Hr,{params:Gh.SnapshotParams,values:this.plugin.state.snapshotParams.value,onChangeValues:this.plugin.state.setSnapshotParams})}},aA=class t extends Mt{constructor(){super(...arguments),this.state={params:g.getDefaultValues(t.Params)},this.add=()=>{Re.State.Snapshots.Add(this.plugin,{name:this.state.params.name,description:this.state.params.description})},this.updateParams=e=>this.setState({params:e}),this.clear=()=>{Re.State.Snapshots.Clear(this.plugin,{})}}shouldComponentUpdate(e,r){return!Cg(this.props,e)||!Cg(this.state,r)}render(){return(0,dt.jsx)("div",{children:(0,dt.jsx)(TFe,{parent:this})})}};aA.Params={name:g.Text(),description:g.Text()};function ice(t,e,r){return e?t.managers.snapshot.state.entries.some(n=>(!r||n.snapshot.id!==r)&&n.key===e):!1}function TFe({parent:t}){let[e,r]=r0.useState({key:"",name:"",description:""}),n=()=>{Re.State.Snapshots.Add(t.plugin,{key:e.key,name:e.name,description:e.description}),r({key:"",name:"",description:""})},o=ice(t.plugin,e.key);return(0,dt.jsxs)(dt.Fragment,{children:[(0,dt.jsx)(ace,{state:e,setState:r,apply:n}),(0,dt.jsxs)("div",{className:"msp-flex-row",children:[(0,dt.jsx)(pt,{onClick:t.clear,svg:Hi,title:"Remove All"}),(0,dt.jsx)(vt,{onClick:n,icon:o?void 0:Fd,style:{textAlign:"right"},commit:o?"off":"on",disabled:o,children:o?"Key must be unique":"Add"})]})]})}var JV=class extends Mt{constructor(){super(...arguments),this.state={editingId:void 0},this.edit=e=>{let r=e.currentTarget.getAttribute("data-id");if(!r)return;let n=this.state.editingId;this.setState({editingId:r===n?void 0:r})},this.doneEdit=()=>this.setState({editingId:void 0}),this.apply=e=>{let r=e.currentTarget.getAttribute("data-id");r&&Re.State.Snapshots.Apply(this.plugin,{id:r})},this.remove=e=>{let r=e.currentTarget.getAttribute("data-id");r&&Re.State.Snapshots.Remove(this.plugin,{id:r})},this.moveUp=e=>{let r=e.currentTarget.getAttribute("data-id");r&&Re.State.Snapshots.Move(this.plugin,{id:r,dir:-1})},this.moveDown=e=>{let r=e.currentTarget.getAttribute("data-id");r&&Re.State.Snapshots.Move(this.plugin,{id:r,dir:1})},this.replace=e=>{let r=e.currentTarget.getAttribute("data-id");r&&Re.State.Snapshots.Replace(this.plugin,{id:r})}}componentDidMount(){this.subscribe(this.plugin.managers.snapshot.events.changed,()=>this.forceUpdate())}render(){let e=this.plugin.managers.snapshot.state.current,r=[];return this.plugin.managers.snapshot.state.entries.forEach(n=>{var o;r.push((0,dt.jsxs)("li",{className:"msp-flex-row",children:[(0,dt.jsxs)(vt,{"data-id":n.snapshot.id,onClick:this.apply,className:"msp-no-overflow",children:[(0,dt.jsxs)("span",{style:{fontWeight:n.snapshot.id===e?"bold":void 0},children:[!!n.key&&`[${n.key}] `,n.name||new Date(n.timestamp).toLocaleString()]})," ",(0,dt.jsx)("small",{children:`${n.snapshot.durationInMs?p0(n.snapshot.durationInMs,!1):""}`})]}),(0,dt.jsx)(pt,{svg:pl,"data-id":n.snapshot.id,title:"Edit",onClick:this.edit,flex:"28px"}),(0,dt.jsx)(pt,{svg:Ph,"data-id":n.snapshot.id,title:"Move Up",onClick:this.moveUp,flex:"20px"}),(0,dt.jsx)(pt,{svg:_h,"data-id":n.snapshot.id,title:"Move Down",onClick:this.moveDown,flex:"20px"}),(0,dt.jsx)(pt,{svg:NJ,"data-id":n.snapshot.id,title:"Replace",onClick:this.replace,flex:"20px"}),(0,dt.jsx)(pt,{svg:Hi,"data-id":n.snapshot.id,title:"Remove",onClick:this.remove,flex:"20px"})]},n.snapshot.id)),this.state.editingId===n.snapshot.id&&r.push((0,dt.jsx)(wFe,{entry:n,plugin:this.plugin,done:this.doneEdit},`${n.snapshot.id}-edit`));let i=n.image&&((o=this.plugin.managers.asset.get(n.image))===null||o===void 0?void 0:o.file);i&&r.push((0,dt.jsx)("li",{className:"msp-state-image-row",children:(0,dt.jsx)(vt,{"data-id":n.snapshot.id,onClick:this.apply,children:(0,dt.jsx)("img",{draggable:!1,src:URL.createObjectURL(i)})})},`${n.snapshot.id}-image`))}),(0,dt.jsx)(dt.Fragment,{children:(0,dt.jsx)("ul",{style:{listStyle:"none",marginTop:"10px"},className:"msp-state-list",children:r})})}};function ace({state:t,setState:e,apply:r}){let n=r0.useRef(),o=r0.useRef(),[i,a]=r0.useState(!1);return(0,dt.jsxs)(dt.Fragment,{children:[(0,dt.jsx)(Ga,{label:"Name",control:(0,dt.jsx)("input",{type:"text",value:t.name,placeholder:"Name",onChange:s=>e(U(w({},t),{name:s.target.value})),onKeyUp:s=>{var l;s.key==="Enter"&&((l=n.current)===null||l===void 0||l.focus())}})}),(0,dt.jsx)(Ga,{label:(0,dt.jsxs)(dt.Fragment,{children:["Key",(0,dt.jsx)(jB,{show:i,toggle:()=>a(s=>!s)})]}),control:(0,dt.jsx)("input",{type:"text",ref:n,value:t.key,placeholder:"Key (optional)",onChange:s=>e(U(w({},t),{key:s.target.value})),onKeyUp:s=>{var l;s.key==="Enter"&&((l=o.current)===null||l===void 0||l.focus())}})}),i&&(0,dt.jsx)("div",{className:"msp-control-offset",children:(0,dt.jsx)(IS,{description:"Optional snapshot key used to activate snapshots from descriptions, labels, etc."})}),(0,dt.jsx)("div",{className:"msp-flex-row msp-text-area-wrapper",style:{marginBottom:1},children:(0,dt.jsx)("textarea",{ref:o,placeholder:`Markdown Description + +- Use [title](#key) to link to a snapshot`,className:"msp-form-control",value:t.description,onChange:s=>e(U(w({},t),{description:s.target.value})),onKeyUp:s=>{s.key==="Enter"&&s.ctrlKey&&r(t)}})})]})}function wFe({entry:t,plugin:e,done:r}){var n,o,i;let[a,s]=r0.useState({key:(n=t.key)!==null&&n!==void 0?n:"",name:(o=t.name)!==null&&o!==void 0?o:"",description:(i=t.description)!==null&&i!==void 0?i:""}),l=()=>{e.managers.snapshot.update(t,a),r()},c=ice(e,a.key,t.snapshot.id);return(0,dt.jsxs)(dt.Fragment,{children:[(0,dt.jsx)(ace,{state:a,setState:s,apply:l}),(0,dt.jsx)("div",{className:"msp-flex-row",style:{marginBottom:1},children:(0,dt.jsx)(vt,{onClick:l,icon:c?void 0:Pc,style:{textAlign:"right"},commit:c?"off":"on",disabled:c,children:c?"Key must be unique":"Apply"})})]})}var hT=class extends Mt{constructor(){super(...arguments),this.Params={name:g.Text(),options:g.Group({description:g.Text(),playOnLoad:g.Boolean(!1),serverUrl:g.Text(this.plugin.config.get(Wt.State.CurrentServer))})},this.state={params:g.getDefaultValues(this.Params),entries:Ui(),isBusy:!1},this.ListOnlyParams={options:g.Group({serverUrl:g.Text(this.plugin.config.get(Wt.State.CurrentServer))},{isFlat:!0})},this._mounted=!1,this.refresh=()=>N(this,null,function*(){try{this.setState({isBusy:!0}),this.plugin.config.set(Wt.State.CurrentServer,this.state.params.options.serverUrl);let e=(yield this.plugin.runTask(this.plugin.fetch({url:this.serverUrl("list"),type:"json"})))||[];e.sort((n,o)=>n.isSticky===o.isSticky?n.timestamp-o.timestamp:n.isSticky?-1:1);let r=Ui().asMutable();for(let n of e)r.set(n.id,U(w({},n),{url:this.serverUrl(`get/${n.id}`),removeUrl:this.serverUrl(`remove/${n.id}`)}));this._mounted&&this.setState({entries:r.asImmutable(),isBusy:!1})}catch(e){console.error(e),this.plugin.log.error("Error fetching remote snapshots"),this._mounted&&this.setState({entries:Ui(),isBusy:!1})}}),this.upload=()=>N(this,null,function*(){this.setState({isBusy:!0}),this.plugin.config.set(Wt.State.CurrentServer,this.state.params.options.serverUrl),yield Re.State.Snapshots.Upload(this.plugin,{name:this.state.params.name,description:this.state.params.options.description,playOnLoad:this.state.params.options.playOnLoad,serverUrl:this.state.params.options.serverUrl}),this.plugin.log.message("Snapshot uploaded."),this._mounted&&(this.setState({isBusy:!1}),this.refresh())}),this.fetch=e=>N(this,null,function*(){let r=e.currentTarget.getAttribute("data-id");if(!r)return;let n=this.state.entries.get(r);if(n){this.setState({isBusy:!0});try{yield Re.State.Snapshots.Fetch(this.plugin,{url:n.url})}finally{this._mounted&&this.setState({isBusy:!1})}}}),this.remove=e=>N(this,null,function*(){let r=e.currentTarget.getAttribute("data-id");if(!r)return;let n=this.state.entries.get(r);if(n){this.setState({entries:this.state.entries.remove(r)});try{yield fetch(n.removeUrl)}catch(o){console.error(o)}}})}componentDidMount(){this.refresh(),this._mounted=!0}componentWillUnmount(){super.componentWillUnmount(),this._mounted=!1}serverUrl(e){return e?kf(this.state.params.options.serverUrl,e):this.state.params.options.serverUrl}render(){return(0,dt.jsxs)(dt.Fragment,{children:[(0,dt.jsx)(Nd,{title:"Remote States",accent:"blue"}),!this.props.listOnly&&(0,dt.jsxs)(dt.Fragment,{children:[(0,dt.jsx)(Hr,{params:this.Params,values:this.state.params,onEnter:this.upload,onChange:e=>{this.setState({params:U(w({},this.state.params),{[e.name]:e.value})})},isDisabled:this.state.isBusy}),(0,dt.jsxs)("div",{className:"msp-flex-row",children:[(0,dt.jsx)(pt,{onClick:this.refresh,disabled:this.state.isBusy,svg:TS}),(0,dt.jsx)(vt,{icon:IJ,onClick:this.upload,disabled:this.state.isBusy,commit:!0,children:"Upload"})]})]}),(0,dt.jsx)(ez,{entries:this.state.entries,isBusy:this.state.isBusy,serverUrl:this.state.params.options.serverUrl,fetch:this.fetch,remove:this.props.listOnly?void 0:this.remove}),this.props.listOnly&&(0,dt.jsxs)("div",{style:{marginTop:"10px"},children:[(0,dt.jsx)(Hr,{params:this.ListOnlyParams,values:this.state.params,onEnter:this.upload,onChange:e=>{this.setState({params:U(w({},this.state.params),{[e.name]:e.value})})},isDisabled:this.state.isBusy}),(0,dt.jsx)("div",{className:"msp-flex-row",children:(0,dt.jsx)(vt,{onClick:this.refresh,disabled:this.state.isBusy,icon:TS,children:"Refresh"})})]})]})}},ez=class extends Kn{constructor(){super(...arguments),this.open=e=>N(this,null,function*(){let r=e.currentTarget.getAttribute("data-id");if(!r)return;let n=this.props.entries.get(r);if(!n)return;e.preventDefault();let o=`${window.location}`,i=o.indexOf("?");i>0&&(o=o.substr(0,i)),window.open(`${o}?snapshot-url=${encodeURIComponent(n.url)}`,"_blank")})}render(){return(0,dt.jsx)("ul",{style:{listStyle:"none",marginTop:"10px"},className:"msp-state-list",children:this.props.entries.valueSeq().map(e=>(0,dt.jsxs)("li",{className:"msp-flex-row",children:[(0,dt.jsxs)(vt,{"data-id":e.id,onClick:this.props.fetch,disabled:this.props.isBusy,onContextMenu:this.open,title:"Click to download, right-click to open in a new tab.",children:[e.name||new Date(e.timestamp).toLocaleString()," ",(0,dt.jsx)("small",{children:e.description})]}),!e.isSticky&&this.props.remove&&(0,dt.jsx)(pt,{svg:Hi,"data-id":e.id,title:"Remove",onClick:this.props.remove,disabled:this.props.isBusy,small:!0})]},e.id))})}};var pn=Ot(Or());var gT=class extends Mt{constructor(){super(...arguments),this.state={showActions:!0}}componentDidMount(){this.subscribe(this.plugin.state.events.cell.created,e=>{e.cell.transform.parent===kt.RootRef&&this.forceUpdate()}),this.subscribe(this.plugin.state.events.cell.removed,e=>{e.parent===kt.RootRef&&this.forceUpdate()})}static getDerivedStateFromProps(e,r){let n=e.state.tree.root.ref,i=e.state.tree.children.get(n).size===0;return r.showActions===i?null:{showActions:i}}render(){let e=this.props.state.tree.root.ref;return this.state.showActions?(0,pn.jsxs)("div",{style:{margin:"10px",cursor:"default"},children:[(0,pn.jsx)("p",{children:"Nothing to see here yet."}),(0,pn.jsxs)("p",{children:["Structures and Volumes can be loaded from the ",(0,pn.jsx)(pr,{svg:CS})," tab."]})]}):(0,pn.jsx)(tz,{cell:this.props.state.cells.get(e),depth:0})}},tz=class t extends Mt{constructor(){super(...arguments),this.state={isCollapsed:!!this.props.cell.state.isCollapsed,isNull:t.isNull(this.props.cell),showLabel:t.showLabel(this.props.cell)}}is(e){return e.ref===this.ref&&e.state===this.props.cell.parent}get ref(){return this.props.cell.transform.ref}componentDidMount(){this.subscribe(this.plugin.state.events.cell.stateUpdated,e=>{this.props.cell===e.cell&&this.is(e)&&e.state.cells.has(this.ref)&&(this.state.isCollapsed!==!!e.cell.state.isCollapsed||this.state.isNull!==t.isNull(e.cell)||this.state.showLabel!==t.showLabel(e.cell))&&this.forceUpdate()}),this.subscribe(this.plugin.state.events.cell.created,e=>{this.props.cell.parent===e.state&&this.ref===e.cell.transform.parent&&this.forceUpdate()}),this.subscribe(this.plugin.state.events.cell.removed,e=>{this.props.cell.parent===e.state&&this.ref===e.parent&&this.forceUpdate()})}static getDerivedStateFromProps(e,r){let n=t.isNull(e.cell),o=t.showLabel(e.cell);return!!e.cell.state.isCollapsed===r.isCollapsed&&r.isNull===n&&r.showLabel===o?null:{isCollapsed:!!e.cell.state.isCollapsed,isNull:n,showLabel:o}}static hasDecorator(e){var r;let n=e.parent.tree.children.get(e.transform.ref);return n.size!==1?!1:!!(!((r=e.parent)===null||r===void 0)&&r.tree.transforms.get(n.first()).transformer.definition.isDecorator)}static isNull(e){return!e||!e.parent||e.obj===Rr.Null||!e.parent.tree.transforms.has(e.transform.ref)}static showLabel(e){return e.transform.ref!==kt.RootRef&&(e.status!=="ok"||!e.state.isGhost&&!t.hasDecorator(e))}render(){if(this.state.isNull)return null;let e=this.props.cell,r=e.parent.tree.children.get(this.ref);if(!this.state.showLabel)return r.size===0?null:(0,pn.jsx)(pn.Fragment,{children:r.map(o=>(0,pn.jsx)(t,{cell:e.parent.cells.get(o),depth:this.props.depth},o))});let n=this.props.depth+1;return(0,pn.jsxs)(pn.Fragment,{children:[(0,pn.jsx)(rz,{cell:e,depth:this.props.depth}),r.size===0?void 0:(0,pn.jsx)("div",{style:{display:this.state.isCollapsed?"none":"block"},children:r.map(o=>(0,pn.jsx)(t,{cell:e.parent.cells.get(o),depth:n},o))})]})}},rz=class extends Mt{constructor(){super(...arguments),this.state={isCurrent:this.props.cell.parent.current===this.ref,isCollapsed:!!this.props.cell.state.isCollapsed,action:void 0,currentAction:void 0},this.setCurrent=e=>{e?.preventDefault(),e?.currentTarget.blur(),Re.State.SetCurrentObject(this.plugin,{state:this.props.cell.parent,ref:this.ref})},this.setCurrentRoot=e=>{e?.preventDefault(),e?.currentTarget.blur(),Re.State.SetCurrentObject(this.plugin,{state:this.props.cell.parent,ref:kt.RootRef})},this.remove=e=>{e?.preventDefault(),Re.State.RemoveObject(this.plugin,{state:this.props.cell.parent,ref:this.ref,removeParentGhosts:!0})},this.toggleVisible=e=>{e.preventDefault(),Re.State.ToggleVisibility(this.plugin,{state:this.props.cell.parent,ref:this.ref}),e.currentTarget.blur()},this.toggleExpanded=e=>{e.preventDefault(),Re.State.ToggleExpanded(this.plugin,{state:this.props.cell.parent,ref:this.ref}),e.currentTarget.blur()},this.highlight=e=>{e.preventDefault(),Re.Interactivity.Object.Highlight(this.plugin,{state:this.props.cell.parent,ref:this.ref}),e.currentTarget.blur()},this.clearHighlight=e=>{e.preventDefault(),Re.Interactivity.ClearHighlights(this.plugin),e.currentTarget.blur()},this.hideApply=()=>{this.setCurrentRoot()},this.selectAction=e=>{e&&(0,e?.value)()}}is(e){return e.ref===this.ref&&e.state===this.props.cell.parent}get ref(){return this.props.cell.transform.ref}componentDidMount(){this.subscribe(this.plugin.state.events.cell.stateUpdated.pipe(d0(e=>this.is(e)),bT(33)),e=>{this.forceUpdate()}),this.subscribe(this.props.cell.parent.behaviors.currentObject,e=>{if(!this.is(e)){this.state.isCurrent&&e.state.transforms.has(this.ref)&&this._setCurrent(this.props.cell.parent.current===this.ref,this.state.isCollapsed);return}e.state.transforms.has(this.ref)&&this._setCurrent(this.props.cell.parent.current===this.ref,!!this.props.cell.state.isCollapsed)})}_setCurrent(e,r){e?this.setState({isCurrent:e,action:"options",currentAction:void 0,isCollapsed:r}):this.setState({isCurrent:e,action:void 0,currentAction:void 0,isCollapsed:r})}static getDerivedStateFromProps(e,r){let n=e.cell.parent.current===e.cell.transform.ref,o=!!e.cell.state.isCollapsed;return r.isCollapsed===o&&r.isCurrent===n?null:{isCurrent:n,isCollapsed:o,action:void 0,currentAction:void 0}}get actions(){let e=this.props.cell,r=[...e.parent.actions.fromCell(e,this.plugin)];if(r.length!==0)return r.sort((n,o)=>n.definition.display.namewt.Item(n.definition.display.name,()=>this.setState({action:"apply",currentAction:n})))]}updates(e){let r=this.props.cell,n=Af.getDecoratorChain(r.parent,r.transform.ref),o=[];for(let i=n.length-1;i>=0;i--){let a=n[i];o.push((0,pn.jsx)(Xs,{state:r.parent,transform:a.transform,noMargin:!0,wrapInExpander:!0,expanderHeaderLeftMargin:e},`${a.transform.transformer.id}-${i}`))}return(0,pn.jsx)("div",{className:"msp-tree-updates-wrapper",children:o})}render(){let e=this.props.cell,r=e.transform;if(!e)return null;let n=this.is(e.parent.behaviors.currentObject.value),o=e.status!=="error"&&e.status!=="ok",i;if(e.status==="error"||!e.obj){let p=e.status==="error"?e.errorText:r.transformer.definition.display.name;i=(0,pn.jsxs)(vt,{className:"msp-btn-tree-label msp-no-hover-outline",noOverflow:!0,title:p,onClick:this.state.isCurrent?this.setCurrentRoot:this.setCurrent,disabled:o,children:[e.status==="error"&&(0,pn.jsxs)("b",{children:["[",e.status,"]"]})," ",(0,pn.jsx)("span",{children:p})]})}else{let p=e.obj,h=`${p.label} ${p.description?p.description:""}`;i=(0,pn.jsxs)(vt,{className:`msp-btn-tree-label msp-type-class-${p.type.typeClass}`,noOverflow:!0,disabled:o,title:h,onClick:this.state.isCurrent?this.setCurrentRoot:this.setCurrent,children:[(0,pn.jsx)("span",{children:p.label})," ",p.description?(0,pn.jsx)("small",{children:p.description}):void 0]})}let a=e.parent.tree.children.get(this.ref),s=e.state,l=(0,pn.jsx)(pt,{svg:s.isCollapsed?Ls:Rs,flex:"20px",disabled:o,onClick:this.toggleExpanded,transparent:!0,className:"msp-no-hover-outline",style:{visibility:a.size>0?"visible":"hidden"}}),c=e.state.isLocked?void 0:(0,pn.jsx)(pt,{svg:Hi,onClick:this.remove,disabled:o,small:!0,toggleState:!1}),u=(0,pn.jsx)(pt,{svg:s.isHidden?Ec:Ic,toggleState:!1,disabled:o,small:!0,onClick:this.toggleVisible}),d={marginLeft:`${this.props.depth*8}px`},m=(0,pn.jsxs)("div",{className:`msp-flex-row msp-tree-row${n?" msp-tree-row-current":""}`,onMouseEnter:this.highlight,onMouseLeave:this.clearHighlight,style:d,children:[l,i,c,u]});if(!n)return m;if(this.state.action==="apply"&&this.state.currentAction)return(0,pn.jsxs)("div",{style:{marginBottom:"1px"},children:[m,(0,pn.jsx)(Ua,{header:`Apply ${this.state.currentAction.definition.display.name}`,initialExpanded:!0,hideExpander:!0,hideOffset:!1,onHeaderClick:this.hideApply,topRightIcon:ml,headerLeftMargin:`${this.props.depth*8+21}px`,children:(0,pn.jsx)(gg,{onApply:this.hideApply,state:this.props.cell.parent,action:this.state.currentAction,nodeRef:this.props.cell.transform.ref,hideHeader:!0,noMargin:!0})})]});if(this.state.action==="options"){let p=this.actions,h=this.updates(`${this.props.depth*8+21}px`);return(0,pn.jsxs)("div",{style:{marginBottom:"1px"},children:[m,h,p&&(0,pn.jsx)("div",{style:{marginLeft:`${this.props.depth*8+21}px`,marginTop:"-1px"},children:(0,pn.jsx)(wt,{items:p,onSelect:this.selectAction})})]})}return m}};var nz=class extends Mt{componentDidMount(){this.subscribe(this.plugin.state.behaviors.events.changed,()=>this.forceUpdate())}render(){let e=[];return this.plugin.customImportControls.forEach((r,n)=>{e.push((0,ar.jsx)(r,{initiallyCollapsed:this.props.initiallyCollapsed},n))}),e.length>0?(0,ar.jsx)(ar.Fragment,{children:e}):null}},sA=class extends Mt{constructor(){var e;super(...arguments),this.state={tab:this.plugin.behaviors.layout.leftPanelTabName.value},this.set=r=>{if(this.state.tab===r){this.setState({tab:"none"},()=>this.plugin.behaviors.layout.leftPanelTabName.next("none")),Re.Layout.Update(this.plugin,{state:{regionState:U(w({},this.plugin.layout.state.regionState),{left:"collapsed"})}});return}this.setState({tab:r},()=>this.plugin.behaviors.layout.leftPanelTabName.next(r)),this.plugin.layout.state.regionState.left!=="full"&&Re.Layout.Update(this.plugin,{state:{regionState:U(w({},this.plugin.layout.state.regionState),{left:"full"})}})},this.tabs={none:(0,ar.jsx)(ar.Fragment,{}),root:(0,ar.jsxs)(ar.Fragment,{children:[(0,ar.jsx)(Nd,{icon:CS,title:"Home"}),(0,ar.jsx)(oA,{state:this.plugin.state.data,nodeRef:kt.RootRef,hideHeader:!0,initiallyCollapsed:!0,alwaysExpandFirst:!0}),(0,ar.jsx)(nz,{}),((e=this.plugin.spec.components)===null||e===void 0?void 0:e.remoteState)!=="none"&&(0,ar.jsx)(hT,{listOnly:!0})]}),data:(0,ar.jsxs)(ar.Fragment,{children:[(0,ar.jsx)(Nd,{icon:aB,title:(0,ar.jsxs)(ar.Fragment,{children:[(0,ar.jsx)(az,{})," State Tree"]})}),(0,ar.jsx)(gT,{state:this.plugin.state.data})]}),states:(0,ar.jsx)(iA,{}),settings:(0,ar.jsxs)(ar.Fragment,{children:[(0,ar.jsx)(Nd,{icon:pl,title:"Plugin Settings"}),(0,ar.jsx)(iz,{})]}),help:(0,ar.jsxs)(ar.Fragment,{children:[(0,ar.jsx)(Nd,{icon:Bs,title:"Help"}),(0,ar.jsx)(zD,{})]})}}componentDidMount(){this.subscribe(this.plugin.behaviors.layout.leftPanelTabName,e=>{this.state.tab!==e&&this.setState({tab:e}),e==="none"&&this.plugin.layout.state.regionState.left!=="collapsed"&&Re.Layout.Update(this.plugin,{state:{regionState:U(w({},this.plugin.layout.state.regionState),{left:"collapsed"})}})}),this.subscribe(this.plugin.state.data.events.changed,({state:e})=>{this.state.tab==="data"&&e.cells.size===1&&this.set("root")})}render(){let e=this.state.tab;return(0,ar.jsxs)("div",{className:"msp-left-panel-controls",children:[(0,ar.jsxs)("div",{className:"msp-left-panel-controls-buttons",children:[(0,ar.jsx)(pt,{svg:CS,toggleState:e==="root",transparent:!0,onClick:()=>this.set("root"),title:"Home"}),(0,ar.jsx)(oz,{set:this.set}),(0,ar.jsx)(pt,{svg:cP,toggleState:e==="states",transparent:!0,onClick:()=>this.set("states"),title:"Plugin State"}),(0,ar.jsx)(pt,{svg:Bs,toggleState:e==="help",transparent:!0,onClick:()=>this.set("help"),title:"Help"}),(0,ar.jsx)("div",{className:"msp-left-panel-controls-buttons-bottom",children:(0,ar.jsx)(pt,{svg:pl,toggleState:e==="settings",transparent:!0,onClick:()=>this.set("settings"),title:"Settings"})})]}),(0,ar.jsx)("div",{className:"msp-scrollable-container",children:this.tabs[e]})]})}},oz=class extends Mt{constructor(){super(...arguments),this.state={changed:!1}}get tab(){return this.plugin.behaviors.layout.leftPanelTabName.value}componentDidMount(){this.subscribe(this.plugin.behaviors.layout.leftPanelTabName,e=>{this.tab==="data"?this.setState({changed:!1}):this.forceUpdate()}),this.subscribe(this.plugin.state.data.events.changed,e=>{this.tab!=="data"&&this.setState({changed:!0})})}render(){return(0,ar.jsx)(pt,{svg:aB,toggleState:this.tab==="data",transparent:!0,onClick:()=>this.props.set("data"),title:"State Tree",style:{position:"relative"},extraContent:this.state.changed?(0,ar.jsx)("div",{className:"msp-left-panel-controls-button-data-dirty"}):void 0})}},iz=class extends Mt{constructor(){super(...arguments),this.setSettings=e=>{Re.Canvas3D.SetSettings(this.plugin,{settings:{[e.name]:e.value}})},this.setCanvas3DContextProps=e=>{var r;(r=this.plugin.canvas3dContext)===null||r===void 0||r.setProps({[e.name]:e.value}),this.plugin.events.canvas3d.settingsUpdated.next(void 0)}}componentDidMount(){this.subscribe(this.plugin.events.canvas3d.settingsUpdated,()=>this.forceUpdate()),this.subscribe(this.plugin.layout.events.updated,()=>this.forceUpdate()),this.plugin.canvas3d&&this.subscribe(this.plugin.canvas3d.camera.stateChanged.pipe(qc(500,void 0,{leading:!0,trailing:!0})),e=>{(e.radiusMax!==void 0||e.radius!==void 0)&&this.forceUpdate()})}render(){return(0,ar.jsxs)(ar.Fragment,{children:[this.plugin.canvas3d&&this.plugin.canvas3dContext&&(0,ar.jsxs)(ar.Fragment,{children:[(0,ar.jsx)(Nd,{title:"Viewport"}),(0,ar.jsx)(Hr,{params:Fa,values:this.plugin.canvas3d.props,onChange:this.setSettings}),(0,ar.jsx)(Hr,{params:Ad.Params,values:this.plugin.canvas3dContext.props,onChange:this.setCanvas3DContextProps})]}),(0,ar.jsx)(Nd,{title:"Behavior"}),(0,ar.jsx)(gT,{state:this.plugin.state.behaviors})]})}},az=class extends Mt{constructor(){super(...arguments),this.remove=e=>{e.preventDefault(),Re.State.RemoveObject(this.plugin,{state:this.plugin.state.data,ref:kt.RootRef})}}componentDidMount(){this.subscribe(this.plugin.state.events.cell.created,e=>{e.cell.transform.parent===kt.RootRef&&this.forceUpdate()}),this.subscribe(this.plugin.state.events.cell.removed,e=>{e.parent===kt.RootRef&&this.forceUpdate()})}render(){return this.plugin.state.data.tree.children.get(kt.RootRef).size===0?null:(0,ar.jsx)(pt,{svg:Hi,onClick:this.remove,title:"Remove All",style:{display:"inline-block"},small:!0,className:"msp-no-hover-outline",transparent:!0})}};var Do=Ot(Or()),mce=Ot(Po());var lA=Ot(Or()),lce=Ot(Po());var sce=5,cA=class extends Mt{constructor(){super(...arguments),this.parentDiv=lce.createRef(),this.lastMouseOverSeqIdx=-1,this.highlightQueue=new ln,this.lociHighlightProvider=(e,r)=>{this.props.sequenceWrapper.markResidue(e.loci,r)&&this.updateMarker()},this.lociSelectionProvider=(e,r)=>{this.props.sequenceWrapper.markResidue(e.loci,r)&&this.updateMarker()},this.contextMenu=e=>{e.preventDefault()},this.mouseDownLoci=void 0,this.mouseDown=e=>{e.stopPropagation();let r=this.getSeqIdx(e),n=this.getLoci(r),o=ih(e.nativeEvent),i=ny(e.nativeEvent),a=K1(e.nativeEvent);this.click(n,o,i,a),this.mouseDownLoci=n},this.mouseUp=e=>{if(e.stopPropagation(),this.mouseDownLoci===void 0)return;let r=this.getSeqIdx(e),n=this.getLoci(r);if(n&&!z.Loci.areEqual(this.mouseDownLoci,n)){let o=ih(e.nativeEvent),i=ny(e.nativeEvent),a=K1(e.nativeEvent),s=this.mouseDownLoci.elements[0],l=n.elements[0],c=Math.min(we.min(s.indices),we.min(l.indices)),u=Math.max(we.max(s.indices),we.max(l.indices)),d=z.Loci(n.structure,[{unit:s.unit,indices:we.ofRange(c,u)}]);this.click(z.Loci.subtract(d,this.mouseDownLoci),o,i,a)}this.mouseDownLoci=void 0},this.location=z.Location.create(void 0),this.mouseMove=e=>{e.stopPropagation();let r=ih(e.nativeEvent),n=ny(e.nativeEvent),o=K1(e.nativeEvent),i=e.target;if(!i||!i.getAttribute){if(this.lastMouseOverSeqIdx===-1)return;this.lastMouseOverSeqIdx=-1,this.highlightQueue.next({seqIdx:-1,buttons:r,button:n,modifiers:o});return}let a=i.hasAttribute("data-seqid")?+i.getAttribute("data-seqid"):-1;if(this.lastMouseOverSeqIdx!==a)if(this.lastMouseOverSeqIdx=a,this.mouseDownLoci!==void 0){let s=this.getLoci(a);this.hover(s,yn.Flag.None,yn.Flag.None,U(w({},o),{shift:!0}))}else this.highlightQueue.next({seqIdx:a,buttons:r,button:n,modifiers:o})},this.mouseLeave=e=>{if(e.stopPropagation(),this.mouseDownLoci=void 0,this.lastMouseOverSeqIdx===-1)return;this.lastMouseOverSeqIdx=-1;let r=ih(e.nativeEvent),n=ny(e.nativeEvent),o=K1(e.nativeEvent);this.highlightQueue.next({seqIdx:-1,buttons:r,button:n,modifiers:o})}}get sequenceNumberPeriod(){return this.props.sequenceNumberPeriod!==void 0?this.props.sequenceNumberPeriod:this.props.sequenceWrapper.length>10?10:this.getSequenceNumber(this.props.sequenceWrapper.length-1).length>1?5:1}componentDidMount(){this.plugin.managers.interactivity.lociHighlights.addProvider(this.lociHighlightProvider),this.plugin.managers.interactivity.lociSelects.addProvider(this.lociSelectionProvider),this.subscribe(this.highlightQueue.pipe(qc(3*16.666,void 0,{leading:!0,trailing:!0})),e=>{let r=this.getLoci(e.seqIdx<0?void 0:e.seqIdx);this.hover(r,e.buttons,e.button,e.modifiers)})}componentWillUnmount(){super.componentWillUnmount(),this.plugin.managers.interactivity.lociHighlights.removeProvider(this.lociHighlightProvider),this.plugin.managers.interactivity.lociSelects.removeProvider(this.lociSelectionProvider)}getLoci(e){if(e!==void 0){let r=this.props.sequenceWrapper.getLoci(e);if(!z.Loci.isEmpty(r))return r}}getSeqIdx(e){let r,n=e.target;return n&&n.getAttribute&&(r=n.hasAttribute("data-seqid")?+n.getAttribute("data-seqid"):void 0),r}hover(e,r,n,o){let i={current:rt.Loci.Empty,buttons:r,button:n,modifiers:o};e!==void 0&&!z.Loci.isEmpty(e)&&(i.current={loci:e}),this.plugin.behaviors.interaction.hover.next(i)}click(e,r,n,o){let i={current:rt.Loci.Empty,buttons:r,button:n,modifiers:o};e!==void 0&&!z.Loci.isEmpty(e)&&(i.current={loci:e}),this.plugin.behaviors.interaction.click.next(i)}getBackgroundColor(e){return typeof e>"u"&&console.error("unexpected marker value"),e===0?"":e%2===0?"rgb(51, 255, 25)":"rgb(255, 102, 153)"}getResidueClass(e,r){return r.length>1?this.props.sequenceWrapper.residueClass(e)+(e===0?" msp-sequence-residue-long-begin":" msp-sequence-residue-long"):this.props.sequenceWrapper.residueClass(e)}residue(e,r,n){return(0,lA.jsx)("span",{"data-seqid":e,style:{backgroundColor:this.getBackgroundColor(n)},className:this.getResidueClass(e,r),children:`\u200B${r}\u200B`},e)}getSequenceNumberClass(e,r,n){let o=["msp-sequence-number"];return r.startsWith("-")?n.length>1&&e>0?o.push("msp-sequence-number-long-negative"):o.push("msp-sequence-number-negative"):n.length>1&&e>0&&o.push("msp-sequence-number-long"),o.join(" ")}getSequenceNumber(e){let r="",n=this.props.sequenceWrapper.getLoci(e),o=z.Loci.getFirstLocation(n,this.location);if(o)if(Pe.isAtomic(o.unit)){let i=Ne.residue.auth_seq_id(o),a=Ne.residue.pdbx_PDB_ins_code(o);r=`${i}${a||""}`}else Pe.isCoarse(o.unit)&&(r=`${e+1}`);return r}padSeqNum(e){return e.lengththis.sequence.index(a);if(z.Loci.is(e)){if(!ue.areRootsEquivalent(e.structure,o))return!1;e=z.Loci.remap(e,o);for(let a of e.elements)this.unitMap.has(a.unit.id)&&(Pe.isAtomic(a.unit)?n=PFe(a,r,this.markerArray,i)||n:n=EFe(a,r,this.markerArray,i)||n)}else if(ue.isLoci(e)){if(!ue.areRootsEquivalent(e.structure,o))return!1;ka(this.markerArray,this.observed,r)&&(n=!0)}return n}getLoci(e){let r=_Fe(this.data.units[0].chainGroupId,this.data.units[0].conformation.operator.name,this.seqId(e));return hn.toLociWithSourceUnits(yU.run(r,this.data.structure))}constructor(e){let r=z.Location.create(e.structure,e.units[0],e.units[0].elements[0]),n=e.units[0].model.sequence.byEntityKey[Ne.entity.key(r)],o=n.sequence.length,i=new Uint8Array(o);super(e,i,o),this.unitMap=new Map;for(let s of e.units)this.unitMap.set(s.id,s);this.sequence=n.sequence,this.missing=e.units[0].model.properties.missingResidues,this.modelNum=e.units[0].model.modelNum,this.asymId=Pe.isAtomic(e.units[0])?Ne.chain.label_asym_id(r):Ne.coarse.asym_id(r);let a=[];for(let s=0;sNe.unit.chainGroupId(n.element)===t&&Ne.unit.operator_name(n.element)===e,residueTest:n=>n.element.unit.kind===0?Ne.residue.label_seq_id(n.element)===r:Ne.coarse.seq_id_begin(n.element)<=r&&Ne.coarse.seq_id_end(n.element)>=r})}function PFe(t,e,r,n){let{model:o,elements:i}=t.unit,{index:a}=o.atomicHierarchy.residueAtomSegments,{label_seq_id:s}=o.atomicHierarchy.residues;return we.forEachSegment(t.indices,l=>a[i[l]],l=>{let c=s.value(l);uv(r,n(c),e)}),!0}function EFe(t,e,r,n){let{model:o,elements:i}=t.unit,a=Pe.isSpheres(t.unit)?o.coarseHierarchy.spheres.seq_id_begin:o.coarseHierarchy.gaussians.seq_id_begin,s=Pe.isSpheres(t.unit)?o.coarseHierarchy.spheres.seq_id_end:o.coarseHierarchy.gaussians.seq_id_end;return we.forEach(t.indices,l=>{let c=i[l];for(let u=n(a.value(c)),d=n(s.value(c));u<=d;u++)uv(r,u,e)}),!0}var dA=class extends $m{residueLabel(e){return this.sequence[e]}residueColor(e){return ut.black}residueClass(e){return"msp-sequence-present"}mark(e,r){let n=!1,{structure:o}=this.data;if(z.Loci.is(e)){if(!ue.areRootsEquivalent(e.structure,o))return!1;e=z.Loci.remap(e,o);for(let i of e.elements){let a=this.unitMap.get(i.unit.id);if(a){let{index:s}=i.unit.model.atomicHierarchy.residueAtomSegments;we.forEach(i.indices,l=>{let c=this.sequenceIndices.get(s[a.elements[l]]);c!==void 0&&ka(this.markerArray,Oe.ofSingleton(c),r)&&(n=!0)})}}}else if(ue.isLoci(e)){if(!ue.areRootsEquivalent(e.structure,o))return!1;ka(this.markerArray,Oe.ofBounds(0,this.length),r)&&(n=!0)}return n}getLoci(e){let r=[],n=this.residueIndices.get(e);if(n!==void 0){let o=this.seqToUnit.get(e),{offsets:i}=o.model.atomicHierarchy.residueAtomSegments,a=tr.findPredecessorIndex(o.elements,i[n]),s=tr.findPredecessorIndex(o.elements,i[n+1]);r.push({unit:o,indices:Oe.ofBounds(a,s)})}return z.Loci(this.data.structure,r)}constructor(e){let r=[],n=new Map,o=new Map,i=new Map;for(let l=0,c=e.units.length;l0&&o.push(`${r} residues`),o.push(`${n} elements`);let l=1,c=new Uint8Array(l);super(e,c,l),this.label=`Whole Chain (${o.join(", ")})`,this.unitIndices=a,this.loci=z.Loci(this.data.structure,s)}};var mA=class extends $m{residueLabel(e){return"X"}residueColor(e){return ut.black}residueClass(e){return"msp-sequence-present"}mark(e,r){let n=!1,{structure:o,units:i}=this.data;if(z.Loci.is(e)){if(!ue.areRootsEquivalent(e.structure,o))return!1;e=z.Loci.remap(e,o);for(let a of e.elements){let s=this.unitIndices.get(a.unit.id);s&&we.isSubset(s,a.indices)&&ka(this.markerArray,a.indices,r)&&(n=!0)}}else if(ue.isLoci(e)){if(!ue.areRootsEquivalent(e.structure,o))return!1;for(let a=0,s=i.length;a0){let u={structure:r,units:c},d=c[0],m;if(d.polymerElements.length){let p=z.Location.create(r,d,d.elements[0]),h=d.model.sequence.byEntityKey[Ne.entity.key(p)];if(h&&h.sequence.length<=sz)m=new uA(u);else{let f=c.reduce((b,v)=>b+v.polymerElements.length,0);Pe.isAtomic(d)||f>sz?m=new Mx(u):m=new mA(u)}}else Pe.isAtomic(d)?c.reduce((h,f)=>h+f.residueCount,0)>sz?m=new Mx(u):m=new dA(u):(console.warn("should not happen, expecting coarse units to be polymeric"),m=new Mx(u));return m.markResidue(e.getLoci(r),tt.Select),m}else return"No sequence available"}function pA(t,e=!1){let r=[],n=z.Location.create(t),o=new Set;for(let i of t.units){z.Location.set(n,t,i,i.elements[0]);let a=Ne.entity.id(n),s=t.getModelIndex(i.model),l=`${s}|${a}`;if(o.has(l)||e&&Ne.entity.type(n)!=="polymer")continue;let c=Ne.entity.pdbx_description(n).join(", ");t.models.length&&(t.representativeModel?c+=` (Model ${t.models[s].modelNum})`:c.startsWith("Polymer ")&&(c+=` (${t.models[s].entry})`));let u=`${a}: ${c}`;if(r.push([l,u]),o.add(l),r.length>lz)return[["","Too many entities"]]}return r.length===0&&r.push(["","No entities"]),r}function yT(t,e){let r=[],n=z.Location.create(t),o=new Set,[i,a]=cz(e);for(let s of t.units){if(z.Location.set(n,t,s,s.elements[0]),t.getModelIndex(s.model)!==i||Ne.entity.id(n)!==a)continue;let l=s.chainGroupId;if(o.has(l))continue;let c=Sc(n,{granularity:"chain",hidePrefix:!0,htmlStyling:!1});if(r.push([l,c]),o.add(l),r.length>lz)return[[-1,"Too many chains"]]}return r.length===0&&r.push([-1,"No chains"]),r}function Rx(t,e,r){let n=[],o=z.Location.create(t),i=new Set,[a,s]=cz(e);for(let l of t.units){if(z.Location.set(o,t,l,l.elements[0]),t.getModelIndex(l.model)!==a||Ne.entity.id(o)!==s||l.chainGroupId!==r)continue;let c=pce(o);if(i.has(c))continue;let u=l.conformation.operator.name;if(n.push([c,u]),i.add(c),n.length>lz)return[["","Too many operators"]]}return n.length===0&&n.push(["","No operators"]),n}function uce(t){var e;let r=[],n=[],o=t.select(lt.Generators.rootsOfType(X.Molecule.Structure));for(let i of o)!((e=i.obj)===null||e===void 0)&&e.data&&(n.push(i.obj.data),r.push([i.transform.ref,i.obj.data.label]));return r.length===0&&r.push(["","No structure"]),{options:r,all:n}}var dce=g.Select("single",[["single","Chain"],["polymers","Polymers"],["all","Everything"]]),fA=class extends Mt{constructor(){super(...arguments),this.state={structureOptions:{options:[],all:[]},structure:ue.Empty,structureRef:"",modelEntityId:"",chainGroupId:-1,operatorKey:"",mode:"single"},this.setParamProps=e=>{let r=w({},this.state);switch(e.name){case"mode":if(r.mode=e.value,this.state.mode===r.mode)return;if(r.mode==="all"||r.mode==="polymers")break;case"structure":e.name==="structure"&&(r.structureRef=e.value),r.structure=this.getStructure(r.structureRef),r.modelEntityId=pA(r.structure)[0][0],r.chainGroupId=yT(r.structure,r.modelEntityId)[0][0],r.operatorKey=Rx(r.structure,r.modelEntityId,r.chainGroupId)[0][0];break;case"entity":r.modelEntityId=e.value,r.chainGroupId=yT(r.structure,r.modelEntityId)[0][0],r.operatorKey=Rx(r.structure,r.modelEntityId,r.chainGroupId)[0][0];break;case"chain":r.chainGroupId=e.value,r.operatorKey=Rx(r.structure,r.modelEntityId,r.chainGroupId)[0][0];break;case"operator":r.operatorKey=e.value;break}this.setState(r)}}componentDidMount(){this.plugin.state.data.select(lt.Generators.rootsOfType(X.Molecule.Structure)).length>0&&this.setState(this.getInitialState()),this.subscribe(this.plugin.state.events.object.updated,({ref:e,obj:r})=>{e===this.state.structureRef&&r&&r.type===X.Molecule.Structure.type&&r.data!==this.state.structure&&this.sync()}),this.subscribe(this.plugin.state.events.object.created,({obj:e})=>{e&&e.type===X.Molecule.Structure.type&&this.sync()}),this.subscribe(this.plugin.state.events.object.removed,({obj:e})=>{e&&e.type===X.Molecule.Structure.type&&e.data===this.state.structure&&this.sync()})}sync(){let e=uce(this.plugin.state.data);v0(e.all,this.state.structureOptions.all)||this.setState(this.getInitialState())}getStructure(e){let n=this.plugin.state.data.select(e)[0];return!e||!n||!n.obj?ue.Empty:n.obj.data}getSequenceWrapper(e){return{wrapper:cce(this.state,this.plugin.managers.structure.selection),label:`${g.optionLabel(e.chain,this.state.chainGroupId)} | ${g.optionLabel(e.entity,this.state.modelEntityId)}`}}getSequenceWrappers(e){if(this.state.mode==="single")return[this.getSequenceWrapper(e)];let r=this.getStructure(this.state.structureRef),n=[];for(let[o,i]of pA(r,this.state.mode==="polymers"))for(let[a,s]of yT(r,o))for(let[l]of Rx(r,o,a))if(n.push({wrapper:cce({structure:r,modelEntityId:o,chainGroupId:a,operatorKey:l},this.plugin.managers.structure.selection),label:`${s} | ${i}`}),n.length>IFe)return[];return n}getInitialState(){var e;let r=uce(this.plugin.state.data),n=r.options[0][0],o=this.getStructure(n),i=pA(o)[0][0],a=yT(o,i)[0][0],s=Rx(o,i,a)[0][0];return this.state.structure&&this.state.structure===o&&(i=this.state.modelEntityId,a=this.state.chainGroupId,s=this.state.operatorKey),{structureOptions:r,structure:o,structureRef:n,modelEntityId:i,chainGroupId:a,operatorKey:s,mode:(e=this.props.defaultMode)!==null&&e!==void 0?e:"single"}}get params(){let{structureOptions:e,structure:r,modelEntityId:n,chainGroupId:o}=this.state,i=pA(r),a=yT(r,n),s=Rx(r,n,o);return{structure:g.Select(e.options[0][0],e.options,{shortLabel:!0}),entity:g.Select(i[0][0],i,{shortLabel:!0}),chain:g.Select(a[0][0],a,{shortLabel:!0,twoColumns:!0,label:"Chain"}),operator:g.Select(s[0][0],s,{shortLabel:!0,twoColumns:!0}),mode:dce}}get values(){return{structure:this.state.structureRef,entity:this.state.modelEntityId,chain:this.state.chainGroupId,operator:this.state.operatorKey,mode:this.state.mode}}render(){if(this.getStructure(this.state.structureRef)===ue.Empty)return(0,Do.jsx)("div",{className:"msp-sequence",children:(0,Do.jsxs)("div",{className:"msp-sequence-select",children:[(0,Do.jsx)(pr,{svg:Bs,style:{cursor:"help",position:"absolute",right:0,top:0},title:"Shows a sequence of one or more chains. Use the controls to alter selection."}),(0,Do.jsx)("span",{children:"Sequence"}),(0,Do.jsx)("span",{style:{fontWeight:"normal"},children:"No structure available"})]})});let e=this.params,r=this.values,n=this.getSequenceWrappers(e);return(0,Do.jsxs)("div",{className:"msp-sequence",children:[(0,Do.jsxs)("div",{className:"msp-sequence-select",children:[(0,Do.jsx)(pr,{svg:Bs,style:{cursor:"help",position:"absolute",right:0,top:0},title:"This shows a single sequence. Use the controls to show a different sequence."}),(0,Do.jsx)("span",{children:"Sequence of"}),(0,Do.jsx)(Dm,{title:`[Structure] ${g.optionLabel(e.structure,r.structure)}`,param:e.structure,name:"structure",value:r.structure,onChange:this.setParamProps}),(0,Do.jsx)(Dm,{title:"[Mode]",param:dce,name:"mode",value:r.mode,onChange:this.setParamProps}),r.mode==="single"&&(0,Do.jsx)(Dm,{title:`[Entity] ${g.optionLabel(e.entity,r.entity)}`,param:e.entity,name:"entity",value:r.entity,onChange:this.setParamProps}),r.mode==="single"&&(0,Do.jsx)(Dm,{title:`[Chain] ${g.optionLabel(e.chain,r.chain)}`,param:e.chain,name:"chain",value:r.chain,onChange:this.setParamProps}),e.operator.options.length>1&&(0,Do.jsx)(Do.Fragment,{children:(0,Do.jsx)(Dm,{title:`[Instance] ${g.optionLabel(e.operator,r.operator)}`,param:e.operator,name:"operator",value:r.operator,onChange:this.setParamProps})})]}),(0,Do.jsx)(DFe,{children:n.map((o,i)=>{let a=typeof o.wrapper=="string"?(0,Do.jsx)("div",{className:"msp-sequence-wrapper",children:o.wrapper},i):(0,Do.jsx)(cA,{sequenceWrapper:o.wrapper},i);return r.mode==="single"?a:(0,Do.jsxs)(mce.Fragment,{children:[(0,Do.jsx)("div",{className:"msp-sequence-chain-label",children:o.label}),a]},i)})})]})}};function DFe({children:t}){return(0,Do.jsx)("div",{className:"msp-sequence-wrapper-non-empty",children:t})}var sa=Ot(Or());var Zm=Ot(Po());var yg=Ot(Po());function AFe(t){let[,e]=yg.default.useState({}),r=yg.default.useRef();return r.current=t?.value,yg.default.useEffect(()=>{if(!t)return;let n=t.subscribe(o=>{r.current!==o&&e({})});return()=>n.unsubscribe()},[t]),t?.value}function kFe(t){return yg.default.useSyncExternalStore(yg.default.useCallback(e=>{let r=t?.pipe(xT(1)).subscribe(e);return()=>r?.unsubscribe()},[t]),yg.default.useCallback(()=>t?.value,[t]))}var MFe=yg.default.useSyncExternalStore?kFe:AFe;function zc(t){return MFe(t)}function fce(){let t=(0,Zm.useContext)(Hl),[e,r]=(0,Zm.useState)(Ui());return(0,Zm.useEffect)(()=>{let n=t.events.task.progress.subscribe(i=>{var a;let s=!!(!((a=t.spec.components)===null||a===void 0)&&a.hideTaskOverlay);i.level==="background"&&(s||!i.useOverlay)&&r(l=>l.set(i.id,i))}),o=t.events.task.finished.subscribe(({id:i})=>{r(a=>a.delete(i))});return()=>{n.unsubscribe(),o.unsubscribe()}},[t]),(0,sa.jsxs)("div",{className:"msp-background-tasks",children:[e.valueSeq().map(n=>(0,sa.jsx)(hA,{event:n},n.id)),(0,sa.jsx)(RFe,{})]})}function RFe(){var t;let e=(0,Zm.useContext)(Hl),r=zc((t=e.canvas3d)===null||t===void 0?void 0:t.commitQueueSize);return r?(0,sa.jsx)("div",{className:"msp-task-state",children:(0,sa.jsx)("div",{children:(0,sa.jsxs)("div",{children:["Commiting renderables... ",r," remaining"]})})}):null}var hA=class extends Mt{constructor(){super(...arguments),this.abort=()=>{this.plugin.managers.task.requestAbort(this.props.event.progress.root.progress.taskId,"User Request")}}render(){let e=this.props.event.progress.root,r=hce(this.props.event.progress.root)-1,n=e.progress.isIndeterminate?void 0:(0,sa.jsxs)(sa.Fragment,{children:["[",e.progress.current,"/",e.progress.max,"]"]}),o=r>0?(0,sa.jsxs)(sa.Fragment,{children:["[",r," subtask(s)]"]}):void 0;return(0,sa.jsx)("div",{className:"msp-task-state",children:(0,sa.jsxs)("div",{children:[e.progress.canAbort&&(0,sa.jsx)(pt,{svg:sP,onClick:this.abort,title:"Abort"}),(0,sa.jsxs)("div",{children:[e.progress.message," ",n," ",o]})]})})}};function hce(t){if(t.children.length===0)return 1;let e=0;for(let r of t.children)e+=hce(r);return e}function gce(){let t=(0,Zm.useContext)(Hl),[e,r]=(0,Zm.useState)(Ui());return(0,Zm.useEffect)(()=>{let n=t.events.task.progress.subscribe(i=>{i.useOverlay&&r(a=>a.set(i.id,i))}),o=t.events.task.finished.subscribe(({id:i})=>{r(a=>a.delete(i))});return()=>{n.unsubscribe(),o.unsubscribe()}},[t]),e.size===0?null:(0,sa.jsx)("div",{className:"msp-overlay-tasks",children:e.valueSeq().map(n=>(0,sa.jsx)(hA,{event:n},n.id))})}var Uc=Ot(Or());var uz=class extends Mt{constructor(){super(...arguments),this.hide=()=>{(this.props.entry.hide||function(){}).call(null)}}render(){let e=this.props.entry,r=typeof e.message=="string"?(0,Uc.jsx)("div",{dangerouslySetInnerHTML:{__html:e.message}}):(0,Uc.jsx)("div",{children:(0,Uc.jsx)(e.message,{})});return(0,Uc.jsxs)("div",{className:"msp-toast-entry",children:[(0,Uc.jsx)("div",{className:"msp-toast-title",onClick:()=>this.hide(),children:e.title}),(0,Uc.jsx)("div",{className:"msp-toast-message",children:r}),(0,Uc.jsx)("div",{className:"msp-toast-clear"}),(0,Uc.jsx)("div",{className:"msp-toast-hide",children:(0,Uc.jsx)(pt,{svg:sP,onClick:this.hide,title:"Hide",className:"msp-no-hover-outline"})})]})}},gA=class extends Mt{componentDidMount(){this.subscribe(this.plugin.managers.toast.events.changed,()=>this.forceUpdate())}render(){let e=this.plugin.managers.toast.state;if(!e.entries.count())return null;let r=[];return e.entries.forEach((n,o)=>r.push(n)),r.sort(function(n,o){return n.serialNumber-o.serialNumber}),(0,Uc.jsx)("div",{className:"msp-toast-container",children:r.map(n=>(0,Uc.jsx)(uz,{entry:n},n.serialNumber))})}};var Ln=Ot(Or());var rd=Ot(Or()),yce=Ot(Po());var yA=class extends Mt{constructor(){super(...arguments),this.container=yce.createRef(),this.state={noWebGl:!1,showLogo:!0},this.handleLogo=()=>{var e;this.setState({showLogo:!(!((e=this.plugin.canvas3d)===null||e===void 0)&&e.reprCount.value)})}}componentDidMount(){if(!this.container.current||!this.plugin.mount(this.container.current,{checkeredCanvasBackground:!0})){this.setState({noWebGl:!0});return}this.handleLogo(),this.subscribe(this.plugin.canvas3d.reprCount,this.handleLogo)}componentWillUnmount(){super.componentWillUnmount(),this.plugin.unmount()}renderMissing(){if(this.props.noWebGl){let e=this.props.noWebGl;return(0,rd.jsx)(e,{})}return(0,rd.jsx)("div",{className:"msp-no-webgl",children:(0,rd.jsxs)("div",{children:[(0,rd.jsx)("p",{children:(0,rd.jsx)("b",{children:"WebGL does not seem to be available."})}),(0,rd.jsx)("p",{children:"This can be caused by an outdated browser, graphics card driver issue, or bad weather. Sometimes, just restarting the browser helps. Also, make sure hardware acceleration is enabled in your browser."}),(0,rd.jsxs)("p",{children:["For a list of supported browsers, refer to ",(0,rd.jsx)("a",{href:"http://caniuse.com/#feat=webgl",target:"_blank",children:"http://caniuse.com/#feat=webgl"}),"."]})]})})}render(){if(this.state.noWebGl)return this.renderMissing();let e=this.props.logo;return(0,rd.jsx)("div",{className:this.props.parentClassName||"msp-viewport",style:this.props.parentStyle,ref:this.container,children:this.state.showLogo&&e&&(0,rd.jsx)(e,{})})}};var si=Ot(Or());var la=Ot(Or()),vA=Ot(Po()),nc=Ot(Po());var LFe=t=>{let{plugin:e,cropFrameColor:r}=t,n=e.helpers.viewportScreenshot,[o,i]=(0,nc.useState)(null),a=(0,nc.useRef)(null),s=(0,nc.useRef)(t);return(0,nc.useEffect)(()=>{s.current=t},Object.values(t)),(0,nc.useEffect)(()=>{o!==a.current&&i(a.current)}),(0,nc.useEffect)(()=>{var l;let c=!1,u=[];function d(b,v){b&&u.push(b.subscribe(v))}function m(){let b=s.current;!b.suspend&&a.current&&vce(n,a.current,b.customBackground,b.borderColor,b.borderWidth),a.current||(c=!0)}let p=setInterval(()=>{c&&(c=!1,m())},1e3/8);d(e.events.canvas3d.settingsUpdated,()=>c=!0),d((l=e.canvas3d)===null||l===void 0?void 0:l.didDraw,()=>c=!0),d(e.state.data.behaviors.isUpdating,b=>{b||(c=!0)}),d(n?.behaviors.values,()=>c=!0),d(n?.behaviors.cropParams,()=>c=!0);let h;typeof ResizeObserver<"u"&&(h=new ResizeObserver(()=>c=!0));let f=a.current;return h?.observe(f),m(),()=>{clearInterval(p),u.forEach(b=>b.unsubscribe()),h?.unobserve(f)}},[n]),(0,nc.useLayoutEffect)(()=>{a.current&&vce(n,a.current,t.customBackground,t.borderColor,t.borderWidth)},[...Object.values(t)]),(0,la.jsx)(la.Fragment,{children:(0,la.jsxs)("div",{style:{position:"relative",width:"100%",height:"100%"},children:[(0,la.jsx)("canvas",{ref:a,onContextMenu:l=>{l.preventDefault(),l.stopPropagation()},style:{display:"block",width:"100%",height:"100%"}}),(0,la.jsx)(BFe,{plugin:e,canvas:o,color:r})]})})},xce=vA.memo(LFe,(t,e)=>lf(t,e));function vce(t,e,r,n,o){if(!t)return;let{canvas:i,width:a,height:s}=t.getPreview(),l=e.getContext("2d");if(!l)return;let c=e.clientWidth,u=e.clientHeight;e.width=c,e.height=u,l.clearRect(0,0,c,u);let d=Sce(a,s,c,u);if(r)l.fillStyle=r,l.fillRect(d.x,d.y,d.width,d.height);else if(t.values.transparent)for(let p=0;pd.width?d.width-p:13,x=h+13>d.height?d.height-h:13;l.fillRect(f,b,v,x)}if(l.drawImage(i,d.x,d.y,d.width,d.height),n&&o){let m=o;l.rect(d.x,d.y,d.width,d.height),l.rect(d.x+m,d.y+m,d.width-2*m,d.height-2*m),l.fillStyle=n,l.fill("evenodd")}}function BFe({plugin:t,canvas:e,color:r="rgba(255, 87, 45, 0.75)"}){var n;let o=t.helpers.viewportScreenshot,i=zc(o?.behaviors.values),a=zc(o?.behaviors.cropParams),s=zc(o?.behaviors.relativeCrop),l=(0,nc.useRef)({x:0,y:0,width:0,height:0});zc(i?.resolution.name==="viewport"?(n=t.canvas3d)===null||n===void 0?void 0:n.resized:void 0);let[c,u]=vA.useState(""),[d,m]=(0,nc.useState)([0,0]),[p,h]=(0,nc.useState)([0,0]);if(!o||!e||!s)return null;let{width:f,height:b}=o.getSizeAndViewport(),v=Sce(f,b,e.clientWidth,e.clientHeight),x={x:v.x+Math.floor(v.width*s.x),y:v.y+Math.floor(v.height*s.y),width:Math.ceil(v.width*s.width),height:Math.ceil(v.height*s.height)},S=bce(x),T=bce(v);if(c==="move"?(S.l+=p[0]-d[0],S.r+=p[0]-d[0],S.t+=p[1]-d[1],S.b+=p[1]-d[1]):c&&(c.indexOf("left")>=0?S.l+=p[0]-d[0]:c.indexOf("right")>=0&&(S.r+=p[0]-d[0]),c.indexOf("top")>=0?S.t+=p[1]-d[1]:c.indexOf("bottom")>=0&&(S.b+=p[1]-d[1])),S.l>S.r){let V=S.l;S.l=S.r,S.r=V}if(S.t>S.b){let V=S.t;S.t=S.b,S.b=V}let E=40;S.l=Math.min(T.r-E,Math.max(T.l,S.l)),S.r=Math.max(T.l+E,Math.min(T.r,S.r)),S.t=Math.min(T.b-E,Math.max(T.t,S.t)),S.b=Math.max(T.t+E,Math.min(T.b,S.b)),x.x=S.l,x.y=S.t,x.width=S.r-S.l+1,x.height=S.b-S.t+1,l.current=x;let _=V=>{V.preventDefault(),h([V.pageX,V.pageY])},D=V=>{V.preventDefault();let H=V.touches[0];h([H.pageX,H.pageY])},P=V=>{V.preventDefault(),u(V.currentTarget.getAttribute("data-drag"));let H=V.touches[0],Q=[H.pageX,H.pageY];m(Q),h(Q),window.addEventListener("touchend",k),window.addEventListener("touchmove",D)},A=V=>{V.preventDefault(),u(V.currentTarget.getAttribute("data-drag"));let H=[V.pageX,V.pageY];m(H),h(H),window.addEventListener("mouseup",I),window.addEventListener("mousemove",_)},I=()=>{window.removeEventListener("mouseup",I),window.removeEventListener("mousemove",_),M()},k=()=>{window.removeEventListener("touchend",k),window.removeEventListener("touchmove",D),M()};function M(){let V=l.current;a?.auto&&o?.behaviors.cropParams.next(U(w({},a),{auto:!1})),o?.behaviors.relativeCrop.next({x:(V.x-v.x)/v.width,y:(V.y-v.y)/v.height,width:V.width/v.width,height:V.height/v.height}),u("");let H=[0,0];m(H),h(H)}let R=V=>{V.preventDefault(),V.stopPropagation()},B=4,F=`3px solid ${r}`,G="transparent";return(0,la.jsxs)(la.Fragment,{children:[(0,la.jsx)("div",{"data-drag":"move",style:{position:"absolute",left:x.x,top:x.y,width:x.width,height:x.height,border:F,cursor:"move"},onMouseDown:A,onTouchStart:P,draggable:!1,onContextMenu:R}),(0,la.jsx)("div",{"data-drag":"left",style:{position:"absolute",left:x.x-B,top:x.y+B,width:4*B,height:x.height-B,background:G,cursor:"w-resize"},onMouseDown:A,onTouchStart:P,draggable:!1,onContextMenu:R}),(0,la.jsx)("div",{"data-drag":"right",style:{position:"absolute",left:S.r-2*B,top:x.y,width:4*B,height:x.height-B,background:G,cursor:"w-resize"},onMouseDown:A,onTouchStart:P,draggable:!1,onContextMenu:R}),(0,la.jsx)("div",{"data-drag":"top",style:{position:"absolute",left:x.x-B,top:x.y-B,width:x.width+2*B,height:4*B,background:G,cursor:"n-resize"},onMouseDown:A,onTouchStart:P,draggable:!1,onContextMenu:R}),(0,la.jsx)("div",{"data-drag":"bottom",style:{position:"absolute",left:x.x-B,top:S.b-2*B,width:x.width+2*B,height:4*B,background:G,cursor:"n-resize"},onMouseDown:A,onTouchStart:P,draggable:!1,onContextMenu:R}),(0,la.jsx)("div",{"data-drag":"top, left",style:{position:"absolute",left:S.l-B,top:S.t-B,width:4*B,height:4*B,background:G,cursor:"nw-resize"},onMouseDown:A,onTouchStart:P,draggable:!1,onContextMenu:R}),(0,la.jsx)("div",{"data-drag":"bottom, right",style:{position:"absolute",left:S.r-2*B,top:S.b-2*B,width:4*B,height:4*B,background:G,cursor:"nw-resize"},onMouseDown:A,onTouchStart:P,draggable:!1,onContextMenu:R}),(0,la.jsx)("div",{"data-drag":"top, right",style:{position:"absolute",left:S.r-2*B,top:S.t-B,width:4*B,height:4*B,background:G,cursor:"ne-resize"},onMouseDown:A,onTouchStart:P,draggable:!1,onContextMenu:R}),(0,la.jsx)("div",{"data-drag":"bottom, left",style:{position:"absolute",left:S.l-B,top:S.b-2*B,width:4*B,height:4*B,background:G,cursor:"ne-resize"},onMouseDown:A,onTouchStart:P,draggable:!1,onContextMenu:R})]})}function bce(t){return{l:t.x,t:t.y,r:t.x+t.width-1,b:t.y+t.height-1}}function Sce(t,e,r,n){let o=t/e,i=r/n;if(o<=i){let a=n*o;return{x:Math.round((r-a)/2),y:0,width:Math.round(a),height:n}}else{let a=r/o;return{x:0,y:Math.round((n-a)/2),width:r,height:Math.round(a)}}}var bA=class extends Mt{constructor(){super(...arguments),this.state={showPreview:!0,isDisabled:!1},this.download=()=>{var e;(e=this.plugin.helpers.viewportScreenshot)===null||e===void 0||e.download(),this.props.close()},this.copy=()=>N(this,null,function*(){var e;try{yield(e=this.plugin.helpers.viewportScreenshot)===null||e===void 0?void 0:e.copyToClipboard(),Re.Toast.Show(this.plugin,{message:"Copied to clipboard.",title:"Screenshot",timeoutMs:1500})}catch{return this.copyImg()}}),this.copyImg=()=>N(this,null,function*(){var e;let r=yield(e=this.plugin.helpers.viewportScreenshot)===null||e===void 0?void 0:e.getImageDataUri();this.setState({imageData:r})}),this.open=e=>{!e.target.files||!e.target.files[0]||Re.State.Snapshots.OpenFile(this.plugin,{file:e.target.files[0]})}}componentDidMount(){this.subscribe(this.plugin.state.data.behaviors.isUpdating,e=>{this.setState({isDisabled:e})})}componentWillUnmount(){super.componentWillUnmount(),this.setState({imageData:void 0})}render(){var e;let r=!!(!((e=navigator.clipboard)===null||e===void 0)&&e.write);return(0,si.jsxs)("div",{children:[this.state.showPreview&&(0,si.jsxs)("div",{className:"msp-image-preview",children:[(0,si.jsx)(xce,{plugin:this.plugin}),(0,si.jsx)(FFe,{plugin:this.plugin})]}),(0,si.jsxs)("div",{className:"msp-flex-row",children:[!this.state.imageData&&(0,si.jsx)(vt,{icon:AJ,onClick:r?this.copy:this.copyImg,disabled:this.state.isDisabled,children:"Copy"}),this.state.imageData&&(0,si.jsx)(vt,{onClick:()=>this.setState({imageData:void 0}),disabled:this.state.isDisabled,children:"Clear"}),(0,si.jsx)(vt,{icon:SS,onClick:this.download,disabled:this.state.isDisabled,children:"Download"})]}),this.state.imageData&&(0,si.jsxs)("div",{className:"msp-row msp-copy-image-wrapper",children:[(0,si.jsx)("div",{children:"Right click below + Copy Image"}),(0,si.jsx)("img",{src:this.state.imageData,style:{width:"100%",height:32,display:"block"}})]}),(0,si.jsx)(OFe,{plugin:this.plugin,isDisabled:this.state.isDisabled}),(0,si.jsxs)(Ci,{header:"State",children:[(0,si.jsx)(pT,{onAction:this.props.close}),(0,si.jsx)(Ci,{header:"Save Options",initiallyExpanded:!1,noOffset:!0,children:(0,si.jsx)(fT,{})})]})]})}};function OFe({plugin:t,isDisabled:e}){let r=t.helpers.viewportScreenshot,n=zc(r?.behaviors.values);return r?(0,si.jsx)(Hr,{params:r.params,values:n,onChangeValues:o=>r.behaviors.values.next(o),isDisabled:e}):null}function FFe({plugin:t}){let e=t.helpers.viewportScreenshot,r=zc(e?.behaviors.cropParams);return zc(e?.behaviors.relativeCrop),!e||!r?null:(0,si.jsxs)("div",{style:{width:"100%",height:"24px",marginTop:"8px"},children:[(0,si.jsx)(Gn,{icon:RJ,title:"Auto-crop",inline:!0,isSelected:r.auto,style:{background:"transparent",float:"left",width:"auto",height:"24px",lineHeight:"24px"},toggle:()=>e.toggleAutocrop(),label:"Auto-crop "+(r.auto?"On":"Off")}),!r.auto&&(0,si.jsx)(vt,{icon:kJ,title:"Crop",style:{background:"transparent",float:"right",height:"24px",lineHeight:"24px",width:"24px",padding:"0"},onClick:()=>e.autocrop()}),!r.auto&&!e.isFullFrame&&(0,si.jsx)(vt,{icon:MJ,title:"Reset Crop",style:{background:"transparent",float:"right",height:"24px",lineHeight:"24px",width:"24px",padding:"0"},onClick:()=>e.resetCrop()})]})}var n0=Ot(Or());function Cce(t){return({values:e,update:r,apply:n})=>({params:typeof t.params=="function"?t.params:o=>t.params,getTarget:t.target,getValues:e,update(o,i){let a=t.target(i);return ss(a,s=>r(o,s,i))},apply:n||(()=>{})})}var xA=class extends Mt{componentDidMount(){this.plugin.canvas3d&&(this.subscribe(this.plugin.events.canvas3d.settingsUpdated,()=>this.forceUpdate()),this.subscribe(this.plugin.canvas3d.camera.stateChanged.pipe(qc(500,void 0,{leading:!0,trailing:!0})),e=>{(e.radiusMax!==void 0||e.radius!==void 0)&&this.forceUpdate()}))}render(){return this.plugin.canvas3d?(0,n0.jsxs)(n0.Fragment,{children:[(0,n0.jsx)(yP,{mapping:VFe}),(0,n0.jsx)(e0,{})]}):null}},vT={sequence:"Sequence",log:"Log",left:"Left Panel",right:"Right Panel"},NFe={animate:Fa.trackball.params.animate,camera:Fa.camera,background:g.Group({color:g.Color(ce(16579577),{label:"Background",description:"Custom background color"}),transparent:g.Boolean(!1),style:Fa.postprocessing.params.background},{pivot:"color"}),lighting:g.Group({occlusion:Fa.postprocessing.params.occlusion,shadow:Fa.postprocessing.params.shadow,outline:Fa.postprocessing.params.outline,dof:Fa.postprocessing.params.dof,fog:Fa.cameraFog},{isFlat:!0}),clipping:g.Group(w({},Fa.cameraClipping.params),{pivot:"radius"}),layout:g.MultiSelect([],g.objectToOptions(vT)),advanced:g.Group({multiSample:Fa.multiSample,hiZ:Fa.hiZ,sharpening:Fa.postprocessing.params.sharpening,pixelScale:Ad.Params.pixelScale,transparency:Ad.Params.transparency})},VFe=Cce({params:t=>{var e;let r=g.clone(NFe),n=(e=t.spec.components)===null||e===void 0?void 0:e.controls;if(n){let i=[];n.top!=="none"&&i.push(["sequence",vT.sequence]),n.bottom!=="none"&&i.push(["log",vT.log]),n.left!=="none"&&i.push(["left",vT.left]),n.right!=="none"&&i.push(["right",vT.right]),r.layout.options=i}let o=t.config.get(Wt.Background.Styles)||[];return o.length>0&&Object.assign(r.background.params.style,{presets:$s(o),isFlat:!1}),r},target(t){var e,r,n;let o=(e=t.spec.components)===null||e===void 0?void 0:e.controls,i=t.layout.state.regionState,a=[];i.top!=="hidden"&&(!o||o.top!=="none")&&a.push("sequence"),i.bottom!=="hidden"&&(!o||o.bottom!=="none")&&a.push("log"),i.left!=="hidden"&&(!o||o.left!=="none")&&a.push("left"),i.right!=="hidden"&&(!o||o.right!=="none")&&a.push("right");let{pixelScale:s,transparency:l}=(r=t.canvas3dContext)===null||r===void 0?void 0:r.props;return{canvas:(n=t.canvas3d)===null||n===void 0?void 0:n.props,layout:a,pixelScale:s,transparency:l}}})({values(t,e){let{canvas:r}=t,n=r.renderer;return{layout:t.layout,animate:r.trackball.animate,camera:r.camera,background:{color:n.backgroundColor,transparent:r.transparentBackground,style:r.postprocessing.background},lighting:{occlusion:r.postprocessing.occlusion,shadow:r.postprocessing.shadow,outline:r.postprocessing.outline,dof:r.postprocessing.dof,fog:r.cameraFog},clipping:w({},r.cameraClipping),advanced:{multiSample:r.multiSample,hiZ:r.hiZ,sharpening:r.postprocessing.sharpening,pixelScale:t.pixelScale,transparency:t.transparency}}},update(t,e){let r=e.canvas;r.trackball.animate=t.animate,r.camera=t.camera,r.transparentBackground=t.background.transparent,r.renderer.backgroundColor=t.background.color,r.postprocessing.occlusion=t.lighting.occlusion,r.postprocessing.shadow=t.lighting.shadow,r.postprocessing.outline=t.lighting.outline,r.postprocessing.background=t.background.style,r.cameraFog=t.lighting.fog,r.cameraClipping={radius:t.clipping.radius,far:t.clipping.far,minNear:t.clipping.minNear},r.multiSample=t.advanced.multiSample,r.hiZ=t.advanced.hiZ,r.postprocessing.sharpening=t.advanced.sharpening,r.postprocessing.dof=t.lighting.dof,e.layout=t.layout,e.pixelScale=t.advanced.pixelScale,e.transparency=t.advanced.transparency},apply(t,e){return N(this,null,function*(){var r;yield Re.Canvas3D.SetSettings(e,{settings:t.canvas});let n=t.layout.indexOf("left")<0,o=ss(e.layout.state,i=>{i.regionState.top=t.layout.indexOf("sequence")>=0?"full":"hidden",i.regionState.bottom=t.layout.indexOf("log")>=0?"full":"hidden",i.regionState.left=n?"hidden":e.behaviors.layout.leftPanelTabName.value==="none"?"collapsed":"full",i.regionState.right=t.layout.indexOf("right")>=0?"full":"hidden"});yield Re.Layout.Update(e,{state:o}),n&&Re.State.SetCurrentObject(e,{state:e.state.data,ref:kt.RootRef}),(r=e.canvas3dContext)===null||r===void 0||r.setProps({pixelScale:t.pixelScale,transparency:t.transparency})})}});var SA=class extends Mt{constructor(){super(...arguments),this.allCollapsedState={isSettingsExpanded:!1,isScreenshotExpanded:!1},this.state=U(w({},this.allCollapsedState),{isCameraResetEnabled:!0}),this.resetCamera=()=>{Re.Camera.Reset(this.plugin,{})},this.toggleSettingsExpanded=this.toggle("isSettingsExpanded"),this.toggleScreenshotExpanded=this.toggle("isScreenshotExpanded"),this.toggleControls=()=>{Re.Layout.Update(this.plugin,{state:{showControls:!this.plugin.layout.state.showControls}})},this.toggleExpanded=()=>{Re.Layout.Update(this.plugin,{state:{isExpanded:!this.plugin.layout.state.isExpanded}})},this.setSettings=e=>{Re.Canvas3D.SetSettings(this.plugin,{settings:{[e.name]:e.value}})},this.setLayout=e=>{Re.Layout.Update(this.plugin,{state:{[e.name]:e.value}})},this.screenshot=()=>{var e;(e=this.plugin.helpers.viewportScreenshot)===null||e===void 0||e.download()},this.enableCameraReset=e=>{this.setState(r=>U(w({},r),{isCameraResetEnabled:e}))}}toggle(e){return r=>{this.setState(n=>U(w(w({},n),this.allCollapsedState),{[e]:!this.state[e]})),r?.currentTarget.blur()}}componentDidMount(){this.subscribe(this.plugin.events.canvas3d.settingsUpdated,()=>this.forceUpdate()),this.subscribe(this.plugin.layout.events.updated,()=>this.forceUpdate()),this.plugin.canvas3d&&this.subscribe(this.plugin.canvas3d.camera.stateChanged.pipe(qc(500,void 0,{leading:!0,trailing:!0})),e=>this.enableCameraReset(e.radius!==0&&e.radiusMax!==0))}icon(e,r,n,o=!0){return(0,Ln.jsx)(pt,{svg:e,toggleState:o,onClick:r,title:n,style:{background:"transparent"}})}render(){return(0,Ln.jsxs)("div",{className:"msp-viewport-controls",children:[(0,Ln.jsxs)("div",{className:"msp-viewport-controls-buttons",children:[(0,Ln.jsxs)("div",{className:"msp-hover-box-wrapper",children:[(0,Ln.jsx)("div",{className:"msp-semi-transparent-background"}),this.icon(CJ,this.resetCamera,"Reset Zoom"),(0,Ln.jsx)("div",{className:"msp-hover-box-body",children:(0,Ln.jsxs)("div",{className:"msp-flex-column",children:[(0,Ln.jsx)("div",{className:"msp-flex-row",children:(0,Ln.jsx)(vt,{onClick:()=>this.resetCamera(),disabled:!this.state.isCameraResetEnabled,title:"Set camera zoom to fit the visible scene into view",children:"Reset Zoom"})}),(0,Ln.jsx)("div",{className:"msp-flex-row",children:(0,Ln.jsx)(vt,{onClick:()=>Re.Camera.OrientAxes(this.plugin),disabled:!this.state.isCameraResetEnabled,title:"Align principal component axes of the loaded structures to the screen axes (\u201Clay flat\u201D)",children:"Orient Axes"})}),(0,Ln.jsx)("div",{className:"msp-flex-row",children:(0,Ln.jsx)(vt,{onClick:()=>Re.Camera.ResetAxes(this.plugin),disabled:!this.state.isCameraResetEnabled,title:"Align Cartesian axes to the screen axes",children:"Reset Axes"})})]})}),(0,Ln.jsx)("div",{className:"msp-hover-box-spacer"})]}),(0,Ln.jsxs)("div",{children:[(0,Ln.jsx)("div",{className:"msp-semi-transparent-background"}),this.icon(_J,this.toggleScreenshotExpanded,"Screenshot / State Snapshot",this.state.isScreenshotExpanded)]}),(0,Ln.jsxs)("div",{children:[(0,Ln.jsx)("div",{className:"msp-semi-transparent-background"}),this.plugin.config.get(Wt.Viewport.ShowControls)&&this.icon(TJ,this.toggleControls,"Toggle Controls Panel",this.plugin.layout.state.showControls),this.plugin.config.get(Wt.Viewport.ShowExpand)&&this.icon(LJ,this.toggleExpanded,"Toggle Expanded Viewport",this.plugin.layout.state.isExpanded),this.plugin.config.get(Wt.Viewport.ShowSettings)&&this.icon(pl,this.toggleSettingsExpanded,"Settings / Controls Info",this.state.isSettingsExpanded)]}),this.plugin.config.get(Wt.Viewport.ShowSelectionMode)&&(0,Ln.jsxs)("div",{children:[(0,Ln.jsx)("div",{className:"msp-semi-transparent-background"}),(0,Ln.jsx)(hg,{})]})]}),this.state.isScreenshotExpanded&&(0,Ln.jsx)("div",{className:"msp-viewport-controls-panel",children:(0,Ln.jsx)(Ua,{header:"Screenshot / State",title:"Click to close.",initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:this.toggleScreenshotExpanded,topRightIcon:ml,noTopMargin:!0,childrenClassName:"msp-viewport-controls-panel-controls",children:(0,Ln.jsx)(bA,{close:this.toggleScreenshotExpanded})})}),this.state.isSettingsExpanded&&(0,Ln.jsx)("div",{className:"msp-viewport-controls-panel",children:(0,Ln.jsx)(Ua,{header:"Settings / Controls Info",title:"Click to close.",initialExpanded:!0,hideExpander:!0,hideOffset:!0,onHeaderClick:this.toggleSettingsExpanded,topRightIcon:ml,noTopMargin:!0,childrenClassName:"msp-viewport-controls-panel-controls",children:(0,Ln.jsx)(xA,{})})})]})}},zFe=()=>(0,Ln.jsx)("a",{className:"msp-logo",href:"https://molstar.org",target:"_blank"}),Tce=()=>(0,Ln.jsx)(yA,{logo:zFe});function wce({plugin:t}){return t.isInitialized?(0,Fr.jsx)(Hl.Provider,{value:t,children:(0,Fr.jsx)(CA,{})}):(0,Fr.jsx)(UFe,{plugin:t})}function UFe({plugin:t}){let[e,r]=o0.useState({kind:"pending"});return o0.useEffect(()=>{r({kind:"pending"});let n=!0;return t.initialized.then(()=>{n&&r({kind:"initialized"})}).catch(o=>{n&&r({kind:"error",message:`${o}`})}),()=>{n=!1}},[t]),e.kind==="pending"?null:e.kind==="error"?(0,Fr.jsx)("div",{className:"msp-plugin",children:(0,Fr.jsxs)("div",{className:"msp-plugin-init-error",children:["Initialization error: ",e.message]})}):(0,Fr.jsx)(Hl.Provider,{value:t,children:(0,Fr.jsx)(CA,{})})}var CA=class extends Mt{constructor(){super(...arguments),this.onDrop=e=>{e.preventDefault();let r=[];if(e.dataTransfer.items)for(let o=0;o{let i=o.name.toLowerCase();return i.endsWith(".molx")||i.endsWith(".molj")});n.length>0?Re.State.Snapshots.OpenFile(this.plugin,{file:n[0]}):this.plugin.runTask(this.plugin.state.data.applyAction(fS,{files:r.map(o=>Wr.File(o)),format:{name:"auto",params:{}},visuals:!0}))},this.onDragOver=e=>{e.preventDefault()},this.showDragOverlay=new da(!1),this.onDragEnter=e=>{let r=!1;if(e.dataTransfer.items&&e.dataTransfer.items.length>0){for(let n=0;nthis.forceUpdate())}region(e,r){return(0,Fr.jsx)("div",{className:`msp-layout-region msp-layout-${e}`,children:(0,Fr.jsx)("div",{className:"msp-layout-static",children:r?(0,Fr.jsx)(r,{}):null})})}get layoutVisibilityClassName(){var e,r;let n=this.plugin.layout.state,o=(r=(e=this.plugin.spec.components)===null||e===void 0?void 0:e.controls)!==null&&r!==void 0?r:{},i=[];return(o.top==="none"||!n.showControls||n.regionState.top==="hidden")&&i.push("msp-layout-hide-top"),o.left==="none"||!n.showControls||n.regionState.left==="hidden"?i.push("msp-layout-hide-left"):n.regionState.left==="collapsed"&&i.push("msp-layout-collapse-left"),(o.right==="none"||!n.showControls||n.regionState.right==="hidden")&&i.push("msp-layout-hide-right"),(o.bottom==="none"||!n.showControls||n.regionState.bottom==="hidden")&&i.push("msp-layout-hide-bottom"),i.join(" ")}get layoutClassName(){let e=this.plugin.layout.state,r=["msp-plugin-content"];return e.isExpanded?r.push("msp-layout-expanded"):r.push("msp-layout-standard",`msp-layout-standard-${e.controlsDisplay}`),r.join(" ")}render(){var e,r,n,o,i,a,s;let l=this.plugin.layout.state,c=((e=this.plugin.spec.components)===null||e===void 0?void 0:e.controls)||{},u=((n=(r=this.plugin.spec.components)===null||r===void 0?void 0:r.viewport)===null||n===void 0?void 0:n.view)||mz,d=((i=(o=this.plugin.spec.components)===null||o===void 0?void 0:o.sequenceViewer)===null||i===void 0?void 0:i.view)||fA;return(0,Fr.jsx)("div",{className:"msp-plugin",children:(0,Fr.jsxs)("div",{className:this.layoutClassName,onDragEnter:this.onDragEnter,children:[(0,Fr.jsxs)("div",{className:this.layoutVisibilityClassName,children:[this.region("main",u),l.showControls&&c.top!=="none"&&this.region("top",c.top||d),l.showControls&&c.left!=="none"&&this.region("left",c.left||sA),l.showControls&&c.right!=="none"&&this.region("right",c.right||dz),l.showControls&&c.bottom!=="none"&&this.region("bottom",c.bottom||pz)]}),!(!((a=this.plugin.spec.components)===null||a===void 0)&&a.hideTaskOverlay)&&(0,Fr.jsx)(gce,{}),!(!((s=this.plugin.spec.components)===null||s===void 0)&&s.disableDragOverlay)&&(0,Fr.jsx)(jFe,{plugin:this.plugin,showDragOverlay:this.showDragOverlay})]})})}};function GFe(t,e,r){t.preventDefault(),t.stopPropagation(),r.next(!1);let n=[];if(t.dataTransfer.items)for(let o=0;o{o.dataTransfer.dropEffect="copy",o.preventDefault(),o.stopPropagation()};return(0,Fr.jsx)("div",{className:"msp-drag-drop-overlay",style:{display:r?"flex":"none"},onDragEnter:n,onDragOver:n,onDragLeave:()=>e.next(!1),onDrop:o=>GFe(o,t,e),children:"Load File(s)"})}var dz=class extends Mt{render(){var e;let r=((e=this.plugin.spec.components)===null||e===void 0?void 0:e.structureTools)||nA;return(0,Fr.jsx)("div",{className:"msp-scrollable-container",children:(0,Fr.jsx)(r,{})})}},mz=class extends Mt{render(){var e,r;let n=((r=(e=this.plugin.spec.components)===null||e===void 0?void 0:e.viewport)===null||r===void 0?void 0:r.controls)||SA;return(0,Fr.jsxs)(Fr.Fragment,{children:[(0,Fr.jsx)(Tce,{}),(0,Fr.jsxs)("div",{className:"msp-viewport-top-left-controls",children:[(0,Fr.jsx)(eA,{}),(0,Fr.jsx)(ZD,{}),(0,Fr.jsx)(JD,{}),(0,Fr.jsx)(oce,{})]}),(0,Fr.jsx)(tA,{}),(0,Fr.jsx)(n,{}),(0,Fr.jsx)(fce,{}),(0,Fr.jsxs)("div",{className:"msp-highlight-toast-wrapper",children:[(0,Fr.jsx)(rA,{}),(0,Fr.jsx)(gA,{})]})]})}},pz=class extends Mt{constructor(){super(...arguments),this.wrapper=o0.createRef(),this.state={entries:this.plugin.log.entries}}componentDidMount(){this.subscribe(this.plugin.events.log,()=>this.setState({entries:this.plugin.log.entries}))}componentDidUpdate(){this.scrollToBottom()}scrollToBottom(){let e=this.wrapper.current;e&&(e.scrollTop=e.scrollHeight-e.clientHeight-1)}render(){let r=this.state.entries,n=r.size,o=[];for(let i=Math.max(0,n-10),a=0;i!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Nh(t){if(!(mi(t)&&!t.dirty)&&!(!t.dirty&&t.lastCleanEpoch===hi)){if(!t.producerMustRecompute(t)&&!pi(t)){t.dirty=!1,t.lastCleanEpoch=hi;return}t.producerRecomputeValue(t),t.dirty=!1,t.lastCleanEpoch=hi}}function Wu(t){return t&&(t.nextProducerIndex=0),R(t)}function Zu(t,e){if(R(e),!(!t||t.producerNode===void 0||t.producerIndexOfThis===void 0||t.producerLastReadVersion===void 0)){if(mi(t))for(let r=t.nextProducerIndex;rt.nextProducerIndex;)t.producerNode.pop(),t.producerLastReadVersion.pop(),t.producerIndexOfThis.pop()}}function pi(t){wr(t);for(let e=0;e0}function wr(t){t.producerNode??=[],t.producerIndexOfThis??=[],t.producerLastReadVersion??=[]}function Ah(t){t.liveConsumerNode??=[],t.liveConsumerIndexOfThis??=[]}function Rh(){throw new Error}var _h=Rh;function Yu(t){_h=t}var Lc="https://g.co/ng/security#xss",y=class extends Error{constructor(e,r){super(Kr(e,r)),this.code=e}};function Kr(t,e){return`${`NG0${Math.abs(t)}`}${e?": "+e:""}`}function Gt(t){return{toString:t}.toString()}var Rt="__annotations__",_t="__parameters__",Ku="__prop__metadata__";function xh(t,e,r,n,o){return Gt(()=>{let i=jc(e);function s(...a){if(this instanceof s)return i.call(this,...a),this;let u=new s(...a);return function(l){return o&&o(l,...a),(l.hasOwnProperty(Rt)?l[Rt]:Object.defineProperty(l,Rt,{value:[]})[Rt]).push(u),n&&n(l),l}}return r&&(s.prototype=Object.create(r.prototype)),s.prototype.ngMetadataName=t,s.annotationCls=s,s})}function jc(t){return function(...r){if(t){let n=t(...r);for(let o in n)this[o]=n[o]}}}function Wt(t,e,r){return Gt(()=>{let n=jc(e);function o(...i){if(this instanceof o)return n.apply(this,i),this;let s=new o(...i);return a.annotation=s,a;function a(u,c,l){let d=u.hasOwnProperty(_t)?u[_t]:Object.defineProperty(u,_t,{value:[]})[_t];for(;d.length<=l;)d.push(null);return(d[l]=d[l]||[]).push(s),u}}return r&&(o.prototype=Object.create(r.prototype)),o.prototype.ngMetadataName=t,o.annotationCls=o,o})}var ke=globalThis;function P(t){for(let e in t)if(t[e]===P)return e;throw Error("Could not find renamed property on target object.")}function X(t){if(typeof t=="string")return t;if(Array.isArray(t))return"["+t.map(X).join(", ")+"]";if(t==null)return""+t;if(t.overriddenName)return`${t.overriddenName}`;if(t.name)return`${t.name}`;let e=t.toString();if(e==null)return""+e;let r=e.indexOf(` +`);return r===-1?e:e.substring(0,r)}function Fi(t,e){return t==null||t===""?e===null?"":e:e==null||e===""?t:t+" "+e}var Oh=P({__forward_ref__:P});function Vc(t){return t.__forward_ref__=Vc,t.toString=function(){return X(this())},t}function G(t){return $c(t)?t():t}function $c(t){return typeof t=="function"&&t.hasOwnProperty(Oh)&&t.__forward_ref__===Vc}function v(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function et(t){return{providers:t.providers||[],imports:t.imports||[]}}function Xr(t){return Xu(t,Rr)||Xu(t,Bc)}function Uc(t){return Xr(t)!==null}function Xu(t,e){return t.hasOwnProperty(e)?t[e]:null}function Ph(t){let e=t&&(t[Rr]||t[Bc]);return e||null}function Ju(t){return t&&(t.hasOwnProperty(ec)||t.hasOwnProperty(Fh))?t[ec]:null}var Rr=P({\u0275prov:P}),ec=P({\u0275inj:P}),Bc=P({ngInjectableDef:P}),Fh=P({ngInjectorDef:P}),E=class{constructor(e,r){this._desc=e,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,typeof r=="number"?this.__NG_ELEMENT_ID__=r:r!==void 0&&(this.\u0275prov=v({token:this,providedIn:r.providedIn||"root",factory:r.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function Hc(t){return t&&!!t.\u0275providers}var kh=P({\u0275cmp:P}),Lh=P({\u0275dir:P}),jh=P({\u0275pipe:P}),Vh=P({\u0275mod:P}),jt=P({\u0275fac:P}),In=P({__NG_ELEMENT_ID__:P}),tc=P({__NG_ENV_ID__:P});function Jr(t){return typeof t=="string"?t:t==null?"":String(t)}function $h(t){return typeof t=="function"?t.name||t.toString():typeof t=="object"&&t!=null&&typeof t.type=="function"?t.type.name||t.type.toString():Jr(t)}function Uh(t,e){let r=e?`. Dependency path: ${e.join(" > ")} > ${t}`:"";throw new y(-200,t)}function ks(t,e){throw new y(-201,!1)}var A=function(t){return t[t.Default=0]="Default",t[t.Host=1]="Host",t[t.Self=2]="Self",t[t.SkipSelf=4]="SkipSelf",t[t.Optional=8]="Optional",t}(A||{}),ki;function zc(){return ki}function ne(t){let e=ki;return ki=t,e}function qc(t,e,r){let n=Xr(t);if(n&&n.providedIn=="root")return n.value===void 0?n.value=n.factory():n.value;if(r&A.Optional)return null;if(e!==void 0)return e;ks(t,"Injector")}var Bh={},Cn=Bh,Li="__NG_DI_FLAG__",_r="ngTempTokenPath",Hh="ngTokenPath",zh=/\n/gm,qh="\u0275",nc="__source",kt;function Gh(){return kt}function Ze(t){let e=kt;return kt=t,e}function Wh(t,e=A.Default){if(kt===void 0)throw new y(-203,!1);return kt===null?qc(t,void 0,e):kt.get(t,e&A.Optional?null:void 0,e)}function D(t,e=A.Default){return(zc()||Wh)(G(t),e)}function Zh(t){throw new y(202,!1)}function p(t,e=A.Default){return D(t,eo(e))}function eo(t){return typeof t>"u"||typeof t=="number"?t:0|(t.optional&&8)|(t.host&&1)|(t.self&&2)|(t.skipSelf&&4)}function ji(t){let e=[];for(let r=0;r ");else if(typeof e=="object"){let i=[];for(let s in e)if(e.hasOwnProperty(s)){let a=e[s];i.push(s+":"+(typeof a=="string"?JSON.stringify(a):X(a)))}o=`{${i.join(", ")}}`}return`${r}${n?"("+n+")":""}[${o}]: ${t.replace(zh,` + `)}`}var Xh=kn(Wt("Inject",t=>({token:t})),-1),Ln=kn(Wt("Optional"),8),Jh=kn(Wt("Self"),2),to=kn(Wt("SkipSelf"),4),ep=kn(Wt("Host"),1);function gt(t,e){let r=t.hasOwnProperty(jt);return r?t[jt]:null}function tp(t,e,r){if(t.length!==e.length)return!1;for(let n=0;nArray.isArray(r)?Ls(r,e):e(r))}function Gc(t,e,r){e>=t.length?t.push(r):t.splice(e,0,r)}function xr(t,e){return e>=t.length-1?t.pop():t.splice(e,1)[0]}function vi(t,e){let r=[];for(let n=0;ne;){let i=o-2;t[o]=t[i],o--}t[e]=r,t[e+1]=n}}function js(t,e,r){let n=jn(t,e);return n>=0?t[n|1]=r:(n=~n,rp(t,n,e,r)),n}function yi(t,e){let r=jn(t,e);if(r>=0)return t[r|1]}function jn(t,e){return op(t,e,1)}function op(t,e,r){let n=0,o=t.length>>r;for(;o!==n;){let i=n+(o-n>>1),s=t[i<e?o=i:n=i+1}return~(o<e){s=i-1;break}}}for(;i-1){let i;for(;++oi?d="":d=o[l+1].toLowerCase(),n&2&&c!==d){if(he(n))return!1;s=!0}}}}return he(n)||s}function he(t){return(t&1)===0}function lp(t,e,r,n){if(e===null)return-1;let o=0;if(n||!r){let i=!1;for(;o-1)for(r++;r0?'="'+a+'"':"")+"]"}else n&8?o+="."+s:n&4&&(o+=" "+s);else o!==""&&!he(s)&&(e+=oc(i,o),o=""),n=s,i=i||!he(n);r++}return o!==""&&(e+=oc(i,o)),e}function gp(t){return t.map(pp).join(",")}function mp(t){let e=[],r=[],n=1,o=2;for(;n{let e=rl(t),r=j(m({},e),{decls:t.decls,vars:t.vars,template:t.template,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,onPush:t.changeDetection===Qc.OnPush,directiveDefs:null,pipeDefs:null,dependencies:e.standalone&&t.dependencies||null,getStandaloneInjector:null,signals:t.signals??!1,data:t.data||{},encapsulation:t.encapsulation||Me.Emulated,styles:t.styles||se,_:null,schemas:t.schemas||null,tView:null,id:""});ol(r);let n=t.dependencies;return r.directiveDefs=sc(n,!1),r.pipeDefs=sc(n,!0),r.id=Dp(r),r})}function vp(t){return Ye(t)||Jc(t)}function yp(t){return t!==null}function Et(t){return Gt(()=>({type:t.type,bootstrap:t.bootstrap||se,declarations:t.declarations||se,imports:t.imports||se,exports:t.exports||se,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}))}function ic(t,e){if(t==null)return En;let r={};for(let n in t)if(t.hasOwnProperty(n)){let o=t[n],i,s,a=me.None;Array.isArray(o)?(a=o[0],i=o[1],s=o[2]??i):(i=o,s=o),e?(r[i]=a!==me.None?[n,a]:n,e[i]=s):r[i]=n}return r}function Ve(t){return Gt(()=>{let e=rl(t);return ol(e),e})}function no(t){return{type:t.type,name:t.name,factory:null,pure:t.pure!==!1,standalone:t.standalone===!0,onDestroy:t.type.prototype.ngOnDestroy||null}}function Ye(t){return t[kh]||null}function Jc(t){return t[Lh]||null}function el(t){return t[jh]||null}function tl(t){let e=Ye(t)||Jc(t)||el(t);return e!==null?e.standalone:!1}function nl(t,e){let r=t[Vh]||null;if(!r&&e===!0)throw new Error(`Type ${X(t)} does not have '\u0275mod' property.`);return r}function rl(t){let e={};return{type:t.type,providersResolver:null,factory:null,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:e,inputTransforms:null,inputConfig:t.inputs||En,exportAs:t.exportAs||null,standalone:t.standalone===!0,signals:t.signals===!0,selectors:t.selectors||se,viewQuery:t.viewQuery||null,features:t.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:ic(t.inputs,e),outputs:ic(t.outputs),debugInfo:null}}function ol(t){t.features?.forEach(e=>e(t))}function sc(t,e){if(!t)return null;let r=e?el:vp;return()=>(typeof t=="function"?t():t).map(n=>r(n)).filter(yp)}function Dp(t){let e=0,r=[t.selectors,t.ngContentSelectors,t.hostVars,t.hostAttrs,t.consts,t.vars,t.decls,t.encapsulation,t.standalone,t.signals,t.exportAs,JSON.stringify(t.inputs),JSON.stringify(t.outputs),Object.getOwnPropertyNames(t.type.prototype),!!t.contentQueries,!!t.viewQuery].join("|");for(let o of r)e=Math.imul(31,e)+o.charCodeAt(0)<<0;return e+=2147483648,"c"+e}function Zt(t){return{\u0275providers:t}}function wp(...t){return{\u0275providers:il(!0,t),\u0275fromNgModule:!0}}function il(t,...e){let r=[],n=new Set,o,i=s=>{r.push(s)};return Ls(e,s=>{let a=s;$i(a,i,[],n)&&(o||=[],o.push(a))}),o!==void 0&&sl(o,i),r}function sl(t,e){for(let r=0;r{e(i,n)})}}function $i(t,e,r,n){if(t=G(t),!t)return!1;let o=null,i=Ju(t),s=!i&&Ye(t);if(!i&&!s){let u=t.ngModule;if(i=Ju(u),i)o=u;else return!1}else{if(s&&!s.standalone)return!1;o=t}let a=n.has(o);if(s){if(a)return!1;if(n.add(o),s.dependencies){let u=typeof s.dependencies=="function"?s.dependencies():s.dependencies;for(let c of u)$i(c,e,r,n)}}else if(i){if(i.imports!=null&&!a){n.add(o);let c;try{Ls(i.imports,l=>{$i(l,e,r,n)&&(c||=[],c.push(l))})}finally{}c!==void 0&&sl(c,e)}if(!a){let c=gt(o)||(()=>new o);e({provide:o,useFactory:c,deps:se},o),e({provide:Zc,useValue:o,multi:!0},o),e({provide:Vt,useValue:()=>D(o),multi:!0},o)}let u=i.providers;if(u!=null&&!a){let c=t;Us(u,l=>{e(l,c)})}}else return!1;return o!==t&&t.providers!==void 0}function Us(t,e){for(let r of t)Hc(r)&&(r=r.\u0275providers),Array.isArray(r)?Us(r,e):e(r)}var Ip=P({provide:String,useValue:P});function al(t){return t!==null&&typeof t=="object"&&Ip in t}function Cp(t){return!!(t&&t.useExisting)}function Ep(t){return!!(t&&t.useFactory)}function $t(t){return typeof t=="function"}function Mp(t){return!!t.useClass}var ro=new E(""),Mr={},bp={},Di;function Bs(){return Di===void 0&&(Di=new Or),Di}var Q=class{},Mn=class extends Q{get destroyed(){return this._destroyed}constructor(e,r,n,o){super(),this.parent=r,this.source=n,this.scopes=o,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,Bi(e,s=>this.processProvider(s)),this.records.set(Wc,xt(void 0,this)),o.has("environment")&&this.records.set(Q,xt(void 0,this));let i=this.records.get(ro);i!=null&&typeof i.value=="string"&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(Zc,se,A.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;let e=R(null);try{for(let n of this._ngOnDestroyHooks)n.ngOnDestroy();let r=this._onDestroyHooks;this._onDestroyHooks=[];for(let n of r)n()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),R(e)}}onDestroy(e){return this.assertNotDestroyed(),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){this.assertNotDestroyed();let r=Ze(this),n=ne(void 0),o;try{return e()}finally{Ze(r),ne(n)}}get(e,r=Cn,n=A.Default){if(this.assertNotDestroyed(),e.hasOwnProperty(tc))return e[tc](this);n=eo(n);let o,i=Ze(this),s=ne(void 0);try{if(!(n&A.SkipSelf)){let u=this.records.get(e);if(u===void 0){let c=Rp(e)&&Xr(e);c&&this.injectableDefInScope(c)?u=xt(Ui(e),Mr):u=null,this.records.set(e,u)}if(u!=null)return this.hydrate(e,u)}let a=n&A.Self?Bs():this.parent;return r=n&A.Optional&&r===Cn?null:r,a.get(e,r)}catch(a){if(a.name==="NullInjectorError"){if((a[_r]=a[_r]||[]).unshift(X(e)),i)throw a;return Yh(a,e,"R3InjectorError",this.source)}else throw a}finally{ne(s),Ze(i)}}resolveInjectorInitializers(){let e=R(null),r=Ze(this),n=ne(void 0),o;try{let i=this.get(Vt,se,A.Self);for(let s of i)s()}finally{Ze(r),ne(n),R(e)}}toString(){let e=[],r=this.records;for(let n of r.keys())e.push(X(n));return`R3Injector[${e.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new y(205,!1)}processProvider(e){e=G(e);let r=$t(e)?e:G(e&&e.provide),n=Sp(e);if(!$t(e)&&e.multi===!0){let o=this.records.get(r);o||(o=xt(void 0,Mr,!0),o.factory=()=>ji(o.multi),this.records.set(r,o)),r=e,o.multi.push(e)}this.records.set(r,n)}hydrate(e,r){let n=R(null);try{return r.value===Mr&&(r.value=bp,r.value=r.factory()),typeof r.value=="object"&&r.value&&Ap(r.value)&&this._ngOnDestroyHooks.add(r.value),r.value}finally{R(n)}}injectableDefInScope(e){if(!e.providedIn)return!1;let r=G(e.providedIn);return typeof r=="string"?r==="any"||this.scopes.has(r):this.injectorDefTypes.has(r)}removeOnDestroy(e){let r=this._onDestroyHooks.indexOf(e);r!==-1&&this._onDestroyHooks.splice(r,1)}};function Ui(t){let e=Xr(t),r=e!==null?e.factory:gt(t);if(r!==null)return r;if(t instanceof E)throw new y(204,!1);if(t instanceof Function)return Tp(t);throw new y(204,!1)}function Tp(t){if(t.length>0)throw new y(204,!1);let r=Ph(t);return r!==null?()=>r.factory(t):()=>new t}function Sp(t){if(al(t))return xt(void 0,t.useValue);{let e=ul(t);return xt(e,Mr)}}function ul(t,e,r){let n;if($t(t)){let o=G(t);return gt(o)||Ui(o)}else if(al(t))n=()=>G(t.useValue);else if(Ep(t))n=()=>t.useFactory(...ji(t.deps||[]));else if(Cp(t))n=()=>D(G(t.useExisting));else{let o=G(t&&(t.useClass||t.provide));if(Np(t))n=()=>new o(...ji(t.deps));else return gt(o)||Ui(o)}return n}function xt(t,e,r=!1){return{factory:t,value:e,multi:r?[]:void 0}}function Np(t){return!!t.deps}function Ap(t){return t!==null&&typeof t=="object"&&typeof t.ngOnDestroy=="function"}function Rp(t){return typeof t=="function"||typeof t=="object"&&t instanceof E}function Bi(t,e){for(let r of t)Array.isArray(r)?Bi(r,e):r&&Hc(r)?Bi(r.\u0275providers,e):e(r)}function De(t,e){t instanceof Mn&&t.assertNotDestroyed();let r,n=Ze(t),o=ne(void 0);try{return e()}finally{Ze(n),ne(o)}}function cl(){return zc()!==void 0||Gh()!=null}function _p(t){if(!cl())throw new y(-203,!1)}function ac(t){let e=ke.ng;if(e&&e.\u0275compilerFacade)return e.\u0275compilerFacade;throw new Error("JIT compiler unavailable")}var uc={\u0275\u0275defineInjectable:v,\u0275\u0275defineInjector:et,\u0275\u0275inject:D,\u0275\u0275invalidFactoryDep:Zh,resolveForwardRef:G},xp=Function;function wn(t){return typeof t=="function"}var Op=/^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*(arguments|(?:[^()]+\(\[\],)?[^()]+\(arguments\).*)\)/,Pp=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/,Fp=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/,kp=/^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{[^}]*super\(\.\.\.arguments\)/;function Lp(t){return Op.test(t)||kp.test(t)||Pp.test(t)&&!Fp.test(t)}var Hi=class{constructor(e){this._reflect=e||ke.Reflect}factory(e){return(...r)=>new e(...r)}_zipTypesAndAnnotations(e,r){let n;typeof e>"u"?n=vi(r.length):n=vi(e.length);for(let o=0;o"u"?n[o]=[]:e[o]&&e[o]!=Object?n[o]=[e[o]]:n[o]=[],r&&r[o]!=null&&(n[o]=n[o].concat(r[o]));return n}_ownParameters(e,r){let n=e.toString();if(Lp(n))return null;if(e.parameters&&e.parameters!==r.parameters)return e.parameters;let o=e.ctorParameters;if(o&&o!==r.ctorParameters){let a=typeof o=="function"?o():o,u=a.map(l=>l&&l.type),c=a.map(l=>l&&wi(l.decorators));return this._zipTypesAndAnnotations(u,c)}let i=e.hasOwnProperty(_t)&&e[_t],s=this._reflect&&this._reflect.getOwnMetadata&&this._reflect.getOwnMetadata("design:paramtypes",e);return s||i?this._zipTypesAndAnnotations(s,i):vi(e.length)}parameters(e){if(!wn(e))return[];let r=Ir(e),n=this._ownParameters(e,r);return!n&&r!==Object&&(n=this.parameters(r)),n||[]}_ownAnnotations(e,r){if(e.annotations&&e.annotations!==r.annotations){let n=e.annotations;return typeof n=="function"&&n.annotations&&(n=n.annotations),n}return e.decorators&&e.decorators!==r.decorators?wi(e.decorators):e.hasOwnProperty(Rt)?e[Rt]:null}annotations(e){if(!wn(e))return[];let r=Ir(e),n=this._ownAnnotations(e,r)||[];return(r!==Object?this.annotations(r):[]).concat(n)}_ownPropMetadata(e,r){if(e.propMetadata&&e.propMetadata!==r.propMetadata){let n=e.propMetadata;return typeof n=="function"&&n.propMetadata&&(n=n.propMetadata),n}if(e.propDecorators&&e.propDecorators!==r.propDecorators){let n=e.propDecorators,o={};return Object.keys(n).forEach(i=>{o[i]=wi(n[i])}),o}return e.hasOwnProperty(Ku)?e[Ku]:null}propMetadata(e){if(!wn(e))return{};let r=Ir(e),n={};if(r!==Object){let i=this.propMetadata(r);Object.keys(i).forEach(s=>{n[s]=i[s]})}let o=this._ownPropMetadata(e,r);return o&&Object.keys(o).forEach(i=>{let s=[];n.hasOwnProperty(i)&&s.push(...n[i]),s.push(...o[i]),n[i]=s}),n}ownPropMetadata(e){return wn(e)?this._ownPropMetadata(e,Ir(e))||{}:{}}hasLifecycleHook(e,r){return e instanceof xp&&r in e.prototype}};function wi(t){return t?t.map(e=>{let n=e.type.annotationCls,o=e.args?e.args:[];return new n(...o)}):[]}function Ir(t){let e=t.prototype?Object.getPrototypeOf(t.prototype):null;return(e?e.constructor:null)||Object}var $e=0,b=1,C=2,z=3,ge=4,we=5,bn=6,Tn=7,W=8,Ut=9,ve=10,V=11,Sn=12,cc=13,Qt=14,ye=15,Vn=16,Ot=17,Le=18,oo=19,ll=20,Qe=21,Ii=22,mt=23,J=25,dl=1;var vt=7,Pr=8,Bt=9,Z=10,Hs=function(t){return t[t.None=0]="None",t[t.HasTransplantedViews=2]="HasTransplantedViews",t}(Hs||{});function ht(t){return Array.isArray(t)&&typeof t[dl]=="object"}function Ue(t){return Array.isArray(t)&&t[dl]===!0}function zs(t){return(t.flags&4)!==0}function io(t){return t.componentOffset>-1}function so(t){return(t.flags&1)===1}function Yt(t){return!!t.template}function jp(t){return(t[C]&512)!==0}var zi=class{constructor(e,r,n){this.previousValue=e,this.currentValue=r,this.firstChange=n}isFirstChange(){return this.firstChange}};function fl(t,e,r,n){e!==null?e.applyValueToInputSignal(e,n):t[r]=n}function Kt(){return hl}function hl(t){return t.type.prototype.ngOnChanges&&(t.setInput=$p),Vp}Kt.ngInherit=!0;function Vp(){let t=gl(this),e=t?.current;if(e){let r=t.previous;if(r===En)t.previous=e;else for(let n in e)r[n]=e[n];t.current=null,this.ngOnChanges(e)}}function $p(t,e,r,n,o){let i=this.declaredInputs[n],s=gl(t)||Up(t,{previous:En,current:null}),a=s.current||(s.current={}),u=s.previous,c=u[i];a[i]=new zi(c&&c.currentValue,r,u===En),fl(t,e,o,r)}var pl="__ngSimpleChanges__";function gl(t){return t[pl]||null}function Up(t,e){return t[pl]=e}var lc=null;var Ce=function(t,e,r){lc?.(t,e,r)},Bp="svg",Hp="math",zp=!1;function qp(){return zp}function be(t){for(;Array.isArray(t);)t=t[$e];return t}function ml(t,e){return be(e[t])}function de(t,e){return be(e[t.index])}function qs(t,e){return t.data[e]}function vl(t,e){return t[e]}function tt(t,e){let r=e[t];return ht(r)?r:r[$e]}function Gp(t){return(t[C]&4)===4}function Gs(t){return(t[C]&128)===128}function Wp(t){return Ue(t[z])}function Ht(t,e){return e==null?null:t[e]}function yl(t){t[Ot]=0}function Zp(t){t[C]&1024||(t[C]|=1024,Gs(t)&&Nn(t))}function Qp(t,e){for(;t>0;)e=e[Qt],t--;return e}function Ws(t){return!!(t[C]&9216||t[mt]?.dirty)}function qi(t){t[ve].changeDetectionScheduler?.notify(1),Ws(t)?Nn(t):t[C]&64&&(qp()?(t[C]|=1024,Nn(t)):t[ve].changeDetectionScheduler?.notify())}function Nn(t){t[ve].changeDetectionScheduler?.notify();let e=An(t);for(;e!==null&&!(e[C]&8192||(e[C]|=8192,!Gs(e)));)e=An(e)}function Dl(t,e){if((t[C]&256)===256)throw new y(911,!1);t[Qe]===null&&(t[Qe]=[]),t[Qe].push(e)}function Yp(t,e){if(t[Qe]===null)return;let r=t[Qe].indexOf(e);r!==-1&&t[Qe].splice(r,1)}function An(t){let e=t[z];return Ue(e)?e[z]:e}var N={lFrame:Sl(null),bindingsEnabled:!0,skipHydrationRootTNode:null};function Kp(){return N.lFrame.elementDepthCount}function Xp(){N.lFrame.elementDepthCount++}function Jp(){N.lFrame.elementDepthCount--}function wl(){return N.bindingsEnabled}function eg(){return N.skipHydrationRootTNode!==null}function tg(t){return N.skipHydrationRootTNode===t}function ng(){N.skipHydrationRootTNode=null}function _(){return N.lFrame.lView}function $(){return N.lFrame.tView}function FC(t){return N.lFrame.contextLView=t,t[W]}function kC(t){return N.lFrame.contextLView=null,t}function ee(){let t=Il();for(;t!==null&&t.type===64;)t=t.parent;return t}function Il(){return N.lFrame.currentTNode}function rg(){let t=N.lFrame,e=t.currentTNode;return t.isParent?e:e.parent}function Mt(t,e){let r=N.lFrame;r.currentTNode=t,r.isParent=e}function Zs(){return N.lFrame.isParent}function Cl(){N.lFrame.isParent=!1}function og(){return N.lFrame.contextLView}function ao(){let t=N.lFrame,e=t.bindingRootIndex;return e===-1&&(e=t.bindingRootIndex=t.tView.bindingStartIndex),e}function ig(t){return N.lFrame.bindingIndex=t}function $n(){return N.lFrame.bindingIndex++}function El(t){let e=N.lFrame,r=e.bindingIndex;return e.bindingIndex=e.bindingIndex+t,r}function sg(){return N.lFrame.inI18n}function ag(t,e){let r=N.lFrame;r.bindingIndex=r.bindingRootIndex=t,Gi(e)}function ug(){return N.lFrame.currentDirectiveIndex}function Gi(t){N.lFrame.currentDirectiveIndex=t}function cg(t){let e=N.lFrame.currentDirectiveIndex;return e===-1?null:t[e]}function Ml(){return N.lFrame.currentQueryIndex}function Qs(t){N.lFrame.currentQueryIndex=t}function lg(t){let e=t[b];return e.type===2?e.declTNode:e.type===1?t[we]:null}function bl(t,e,r){if(r&A.SkipSelf){let o=e,i=t;for(;o=o.parent,o===null&&!(r&A.Host);)if(o=lg(i),o===null||(i=i[Qt],o.type&10))break;if(o===null)return!1;e=o,t=i}let n=N.lFrame=Tl();return n.currentTNode=e,n.lView=t,!0}function Ys(t){let e=Tl(),r=t[b];N.lFrame=e,e.currentTNode=r.firstChild,e.lView=t,e.tView=r,e.contextLView=t,e.bindingIndex=r.bindingStartIndex,e.inI18n=!1}function Tl(){let t=N.lFrame,e=t===null?null:t.child;return e===null?Sl(t):e}function Sl(t){let e={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:t,child:null,inI18n:!1};return t!==null&&(t.child=e),e}function Nl(){let t=N.lFrame;return N.lFrame=t.parent,t.currentTNode=null,t.lView=null,t}var Al=Nl;function Ks(){let t=Nl();t.isParent=!0,t.tView=null,t.selectedIndex=-1,t.contextLView=null,t.elementDepthCount=0,t.currentDirectiveIndex=-1,t.currentNamespace=null,t.bindingRootIndex=-1,t.bindingIndex=-1,t.currentQueryIndex=0}function dg(t){return(N.lFrame.contextLView=Qp(t,N.lFrame.contextLView))[W]}function nt(){return N.lFrame.selectedIndex}function yt(t){N.lFrame.selectedIndex=t}function Rl(){let t=N.lFrame;return qs(t.tView,t.selectedIndex)}function fg(){return N.lFrame.currentNamespace}var _l=!0;function uo(){return _l}function co(t){_l=t}function hg(t,e,r){let{ngOnChanges:n,ngOnInit:o,ngDoCheck:i}=e.type.prototype;if(n){let s=hl(e);(r.preOrderHooks??=[]).push(t,s),(r.preOrderCheckHooks??=[]).push(t,s)}o&&(r.preOrderHooks??=[]).push(0-t,o),i&&((r.preOrderHooks??=[]).push(t,i),(r.preOrderCheckHooks??=[]).push(t,i))}function lo(t,e){for(let r=e.directiveStart,n=e.directiveEnd;r=n)break}else e[u]<0&&(t[Ot]+=65536),(a>14>16&&(t[C]&3)===e&&(t[C]+=16384,dc(a,i)):dc(a,i)}var Lt=-1,Dt=class{constructor(e,r,n){this.factory=e,this.resolving=!1,this.canSeeViewProviders=r,this.injectImpl=n}};function gg(t){return t instanceof Dt}function mg(t){return(t.flags&8)!==0}function vg(t){return(t.flags&16)!==0}function Ol(t){return t!==Lt}function Fr(t){return t&32767}function yg(t){return t>>16}function kr(t,e){let r=yg(t),n=e;for(;r>0;)n=n[Qt],r--;return n}var Wi=!0;function Lr(t){let e=Wi;return Wi=t,e}var Dg=256,Pl=Dg-1,Fl=5,wg=0,Ee={};function Ig(t,e,r){let n;typeof r=="string"?n=r.charCodeAt(0)||0:r.hasOwnProperty(In)&&(n=r[In]),n==null&&(n=r[In]=wg++);let o=n&Pl,i=1<>Fl)]|=i}function jr(t,e){let r=kl(t,e);if(r!==-1)return r;let n=e[b];n.firstCreatePass&&(t.injectorIndex=e.length,Ei(n.data,t),Ei(e,null),Ei(n.blueprint,null));let o=Xs(t,e),i=t.injectorIndex;if(Ol(o)){let s=Fr(o),a=kr(o,e),u=a[b].data;for(let c=0;c<8;c++)e[i+c]=a[s+c]|u[s+c]}return e[i+8]=o,i}function Ei(t,e){t.push(0,0,0,0,0,0,0,0,e)}function kl(t,e){return t.injectorIndex===-1||t.parent&&t.parent.injectorIndex===t.injectorIndex||e[t.injectorIndex+8]===null?-1:t.injectorIndex}function Xs(t,e){if(t.parent&&t.parent.injectorIndex!==-1)return t.parent.injectorIndex;let r=0,n=null,o=e;for(;o!==null;){if(n=Ul(o),n===null)return Lt;if(r++,o=o[Qt],n.injectorIndex!==-1)return n.injectorIndex|r<<16}return Lt}function Zi(t,e,r){Ig(t,e,r)}function Cg(t,e){if(e==="class")return t.classes;if(e==="style")return t.styles;let r=t.attrs;if(r){let n=r.length,o=0;for(;o>20,d=n?a:a+l,f=o?a+l:c;for(let h=d;h=u&&g.type===r)return h}if(o){let h=s[u];if(h&&Yt(h)&&h.type===r)return u}return null}function wt(t,e,r,n){let o=t[r],i=e.data;if(gg(o)){let s=o;s.resolving&&Uh($h(i[r]));let a=Lr(s.canSeeViewProviders);s.resolving=!0;let u,c=s.injectImpl?ne(s.injectImpl):null,l=bl(t,n,A.Default);try{o=t[r]=s.factory(void 0,i,t,n),e.firstCreatePass&&r>=n.directiveStart&&hg(r,i[r],e)}finally{c!==null&&ne(c),Lr(a),s.resolving=!1,Al()}}return o}function Mg(t){if(typeof t=="string")return t.charCodeAt(0)||0;let e=t.hasOwnProperty(In)?t[In]:void 0;return typeof e=="number"?e>=0?e&Pl:bg:e}function fc(t,e,r){let n=1<>Fl)]&n)}function hc(t,e){return!(t&A.Self)&&!(t&A.Host&&e)}var pt=class{constructor(e,r){this._tNode=e,this._lView=r}get(e,r,n){return Vl(this._tNode,this._lView,e,eo(n),r)}};function bg(){return new pt(ee(),_())}function Js(t){return Gt(()=>{let e=t.prototype.constructor,r=e[jt]||Qi(e),n=Object.prototype,o=Object.getPrototypeOf(t.prototype).constructor;for(;o&&o!==n;){let i=o[jt]||Qi(o);if(i&&i!==r)return i;o=Object.getPrototypeOf(o)}return i=>new i})}function Qi(t){return $c(t)?()=>{let e=Qi(G(t));return e&&e()}:gt(t)}function Tg(t,e,r,n,o){let i=t,s=e;for(;i!==null&&s!==null&&s[C]&2048&&!(s[C]&512);){let a=$l(i,s,r,n|A.Self,Ee);if(a!==Ee)return a;let u=i.parent;if(!u){let c=s[ll];if(c){let l=c.get(r,Ee,n);if(l!==Ee)return l}u=Ul(s),s=s[Qt]}i=u}return o}function Ul(t){let e=t[b],r=e.type;return r===2?e.declTNode:r===1?t[we]:null}function fo(t){return Cg(ee(),t)}var Sg=Wt("Attribute",t=>({attributeName:t,__NG_ELEMENT_ID__:()=>fo(t)})),pc=null;function Ng(){return pc=pc||new Hi}function Ag(t){return Bl(Ng().parameters(t))}function Bl(t){return t.map(e=>Rg(e))}function Rg(t){let e={token:null,attribute:null,host:!1,optional:!1,self:!1,skipSelf:!1};if(Array.isArray(t)&&t.length>0)for(let r=0;r(r===null&&(r=ac({usage:0,kind:"injectable",type:t}).compileInjectable(uc,`ng:///${t.name}/\u0275prov.js`,Fg(t,e))),r)}),t.hasOwnProperty(jt)||Object.defineProperty(t,jt,{get:()=>{if(n===null){let o=ac({usage:0,kind:"injectable",type:t});n=o.compileFactory(uc,`ng:///${t.name}/\u0275fac.js`,{name:t.name,type:t,typeArgumentCount:0,deps:Ag(t),target:o.FactoryTarget.Injectable})}return n},configurable:!0})}var xg=P({provide:String,useValue:P});function gc(t){return t.useClass!==void 0}function Og(t){return xg in t}function mc(t){return t.useFactory!==void 0}function Pg(t){return t.useExisting!==void 0}function Fg(t,e){let r=e||{providedIn:null},n={name:t.name,type:t,typeArgumentCount:0,providedIn:r.providedIn};return(gc(r)||mc(r))&&r.deps!==void 0&&(n.deps=Bl(r.deps)),gc(r)?n.useClass=r.useClass:Og(r)?n.useValue=r.useValue:mc(r)?n.useFactory=r.useFactory:Pg(r)&&(n.useExisting=r.useExisting),n}var LC=xh("Injectable",void 0,void 0,void 0,(t,e)=>_g(t,e));function vc(t,e=null,r=null,n){let o=Hl(t,e,r,n);return o.resolveInjectorInitializers(),o}function Hl(t,e=null,r=null,n,o=new Set){let i=[r||se,wp(t)];return n=n||(typeof t=="object"?void 0:X(t)),new Mn(i,e||Bs(),n||null,o)}var rt=(()=>{let e=class e{static create(n,o){if(Array.isArray(n))return vc({name:""},o,n,"");{let i=n.name??"";return vc({name:i},n.parent,n.providers,i)}}};e.THROW_IF_NOT_FOUND=Cn,e.NULL=new Or,e.\u0275prov=v({token:e,providedIn:"any",factory:()=>D(Wc)}),e.__NG_ELEMENT_ID__=-1;let t=e;return t})();var kg="ngOriginalError";function Mi(t){return t[kg]}var Te=class{constructor(){this._console=console}handleError(e){let r=this._findOriginalError(e);this._console.error("ERROR",e),r&&this._console.error("ORIGINAL ERROR",r)}_findOriginalError(e){let r=e&&Mi(e);for(;r&&Mi(r);)r=Mi(r);return r||null}},zl=new E("",{providedIn:"root",factory:()=>p(Te).handleError.bind(void 0)}),ea=(()=>{let e=class e{};e.__NG_ELEMENT_ID__=Lg,e.__NG_ENV_ID__=n=>n;let t=e;return t})(),Yi=class extends ea{constructor(e){super(),this._lView=e}onDestroy(e){return Dl(this._lView,e),()=>Yp(this._lView,e)}};function Lg(){return new Yi(_())}function jg(){return Xt(ee(),_())}function Xt(t,e){return new ot(de(t,e))}var ot=(()=>{let e=class e{constructor(n){this.nativeElement=n}};e.__NG_ELEMENT_ID__=jg;let t=e;return t})();function Vg(t){return t instanceof ot?t.nativeElement:t}var Ki=class extends ce{constructor(e=!1){super(),this.destroyRef=void 0,this.__isAsync=e,cl()&&(this.destroyRef=p(ea,{optional:!0})??void 0)}emit(e){let r=R(null);try{super.next(e)}finally{R(r)}}subscribe(e,r,n){let o=e,i=r||(()=>null),s=n;if(e&&typeof e=="object"){let u=e;o=u.next?.bind(u),i=u.error?.bind(u),s=u.complete?.bind(u)}this.__isAsync&&(i=bi(i),o&&(o=bi(o)),s&&(s=bi(s)));let a=super.subscribe({next:o,error:i,complete:s});return e instanceof yn&&e.add(a),a}};function bi(t){return e=>{setTimeout(t,void 0,e)}}var le=Ki;function $g(){return this._results[Symbol.iterator]()}var Xi=class t{get changes(){return this._changes??=new le}constructor(e=!1){this._emitDistinctChangesOnly=e,this.dirty=!0,this._onDirty=void 0,this._results=[],this._changesDetected=!1,this._changes=void 0,this.length=0,this.first=void 0,this.last=void 0;let r=t.prototype;r[Symbol.iterator]||(r[Symbol.iterator]=$g)}get(e){return this._results[e]}map(e){return this._results.map(e)}filter(e){return this._results.filter(e)}find(e){return this._results.find(e)}reduce(e,r){return this._results.reduce(e,r)}forEach(e){this._results.forEach(e)}some(e){return this._results.some(e)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(e,r){this.dirty=!1;let n=np(e);(this._changesDetected=!tp(this._results,n,r))&&(this._results=n,this.length=n.length,this.last=n[this.length-1],this.first=n[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.emit(this)}onDirty(e){this._onDirty=e}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}};function ql(t){return(t.flags&128)===128}var Gl=new Map,Ug=0;function Bg(){return Ug++}function Hg(t){Gl.set(t[oo],t)}function zg(t){Gl.delete(t[oo])}var yc="__ngContext__";function Ke(t,e){ht(e)?(t[yc]=e[oo],Hg(e)):t[yc]=e}function Wl(t){return Ql(t[Sn])}function Zl(t){return Ql(t[ge])}function Ql(t){for(;t!==null&&!Ue(t);)t=t[ge];return t}var Ji;function Yl(t){Ji=t}function qg(){if(Ji!==void 0)return Ji;if(typeof document<"u")return document;throw new y(210,!1)}var ta=new E("",{providedIn:"root",factory:()=>Gg}),Gg="ng",na=new E(""),Ne=new E("",{providedIn:"platform",factory:()=>"unknown"});var ra=new E("",{providedIn:"root",factory:()=>qg().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});var Wg="h",Zg="b";var Qg=()=>null;function oa(t,e,r=!1){return Qg(t,e,r)}var Kl=!1,Yg=new E("",{providedIn:"root",factory:()=>Kl});var Cr;function Kg(){if(Cr===void 0&&(Cr=null,ke.trustedTypes))try{Cr=ke.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return Cr}function Dc(t){return Kg()?.createScriptURL(t)||t}var Vr=class{constructor(e){this.changingThisBreaksApplicationSecurity=e}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${Lc})`}};function Jt(t){return t instanceof Vr?t.changingThisBreaksApplicationSecurity:t}function ia(t,e){let r=Xg(t);if(r!=null&&r!==e){if(r==="ResourceURL"&&e==="URL")return!0;throw new Error(`Required a safe ${e}, got a ${r} (see ${Lc})`)}return r===e}function Xg(t){return t instanceof Vr&&t.getTypeName()||null}var Jg=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Xl(t){return t=String(t),t.match(Jg)?t:"unsafe:"+t}var ho=function(t){return t[t.NONE=0]="NONE",t[t.HTML=1]="HTML",t[t.STYLE=2]="STYLE",t[t.SCRIPT=3]="SCRIPT",t[t.URL=4]="URL",t[t.RESOURCE_URL=5]="RESOURCE_URL",t}(ho||{});function em(t){let e=ed();return e?e.sanitize(ho.URL,t)||"":ia(t,"URL")?Jt(t):Xl(Jr(t))}function tm(t){let e=ed();if(e)return Dc(e.sanitize(ho.RESOURCE_URL,t)||"");if(ia(t,"ResourceURL"))return Dc(Jt(t));throw new y(904,!1)}function nm(t,e){return e==="src"&&(t==="embed"||t==="frame"||t==="iframe"||t==="media"||t==="script")||e==="href"&&(t==="base"||t==="link")?tm:em}function Jl(t,e,r){return nm(e,r)(t)}function ed(){let t=_();return t&&t[ve].sanitizer}var rm=/^>|^->||--!>|)/g,im="\u200B$1\u200B";function sm(t){return t.replace(rm,e=>e.replace(om,im))}function jC(t){return t.ownerDocument.defaultView}function td(t){return t instanceof Function?t():t}function am(t){return(t??p(rt)).get(Ne)==="browser"}var je=function(t){return t[t.Important=1]="Important",t[t.DashCase=2]="DashCase",t}(je||{}),um;function sa(t,e){return um(t,e)}function Pt(t,e,r,n,o){if(n!=null){let i,s=!1;Ue(n)?i=n:ht(n)&&(s=!0,n=n[$e]);let a=be(n);t===0&&r!==null?o==null?id(e,r,a):$r(e,r,a,o||null,!0):t===1&&r!==null?$r(e,r,a,o||null,!0):t===2?Tm(e,a,s):t===3&&e.destroyNode(a),i!=null&&Nm(e,t,i,r,o)}}function cm(t,e){return t.createText(e)}function lm(t,e,r){t.setValue(e,r)}function dm(t,e){return t.createComment(sm(e))}function nd(t,e,r){return t.createElement(e,r)}function fm(t,e){rd(t,e),e[$e]=null,e[we]=null}function hm(t,e,r,n,o,i){n[$e]=o,n[we]=e,mo(t,n,r,1,o,i)}function rd(t,e){e[ve].changeDetectionScheduler?.notify(1),mo(t,e,e[V],2,null,null)}function pm(t){let e=t[Sn];if(!e)return Ti(t[b],t);for(;e;){let r=null;if(ht(e))r=e[Sn];else{let n=e[Z];n&&(r=n)}if(!r){for(;e&&!e[ge]&&e!==t;)ht(e)&&Ti(e[b],e),e=e[z];e===null&&(e=t),ht(e)&&Ti(e[b],e),r=e&&e[ge]}e=r}}function gm(t,e,r,n){let o=Z+n,i=r.length;n>0&&(r[o-1][ge]=e),n0&&(t[r-1][ge]=n[ge]);let i=xr(t,Z+e);fm(n[b],n);let s=i[Le];s!==null&&s.detachView(i[b]),n[z]=null,n[ge]=null,n[C]&=-129}return n}function po(t,e){if(!(e[C]&256)){let r=e[V];r.destroyNode&&mo(t,e,r,3,null,null),pm(e)}}function Ti(t,e){if(e[C]&256)return;let r=R(null);try{e[C]&=-129,e[C]|=256,e[mt]&&Qu(e[mt]),ym(t,e),vm(t,e),e[b].type===1&&e[V].destroy();let n=e[Vn];if(n!==null&&Ue(e[z])){n!==e[z]&&od(n,e);let o=e[Le];o!==null&&o.detachView(t)}zg(e)}finally{R(r)}}function vm(t,e){let r=t.cleanup,n=e[Tn];if(r!==null)for(let i=0;i=0?n[s]():n[-s].unsubscribe(),i+=2}else{let s=n[r[i+1]];r[i].call(s)}n!==null&&(e[Tn]=null);let o=e[Qe];if(o!==null){e[Qe]=null;for(let i=0;i-1){let{encapsulation:i}=t.data[n.directiveStart+o];if(i===Me.None||i===Me.Emulated)return null}return de(n,r)}}function $r(t,e,r,n,o){t.insertBefore(e,r,n,o)}function id(t,e,r){t.appendChild(e,r)}function wc(t,e,r,n,o){n!==null?$r(t,e,r,n,o):id(t,e,r)}function Im(t,e,r,n){t.removeChild(e,r,n)}function aa(t,e){return t.parentNode(e)}function Cm(t,e){return t.nextSibling(e)}function Em(t,e,r){return bm(t,e,r)}function Mm(t,e,r){return t.type&40?de(t,r):null}var bm=Mm,Ic;function go(t,e,r,n){let o=Dm(t,n,e),i=e[V],s=n.parent||e[we],a=Em(s,n,e);if(o!=null)if(Array.isArray(r))for(let u=0;uJ&&cd(t,e,J,!1),Ce(s?2:0,o),r(n,o)}finally{yt(i),Ce(s?3:1,o)}}function ca(t,e,r){if(zs(e)){let n=R(null);try{let o=e.directiveStart,i=e.directiveEnd;for(let s=o;snull;function Lm(t,e,r,n){let o=Dd(e);o.push(r),t.firstCreatePass&&wd(t).push(n,o.length-1)}function jm(t,e,r,n,o,i){let s=e?e.injectorIndex:-1,a=0;return eg()&&(a|=128),{type:r,index:n,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,propertyBindings:null,flags:a,providerIndexes:0,value:o,attrs:i,mergedAttrs:null,localNames:null,initialInputs:void 0,inputs:null,outputs:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:e,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function Cc(t,e,r,n,o){for(let i in e){if(!e.hasOwnProperty(i))continue;let s=e[i];if(s===void 0)continue;n??={};let a,u=me.None;Array.isArray(s)?(a=s[0],u=s[1]):a=s;let c=i;if(o!==null){if(!o.hasOwnProperty(i))continue;c=o[i]}t===0?Ec(n,r,c,a,u):Ec(n,r,c,a)}return n}function Ec(t,e,r,n,o){let i;t.hasOwnProperty(r)?(i=t[r]).push(e,n):i=t[r]=[e,n],o!==void 0&&i.push(o)}function Vm(t,e,r){let n=e.directiveStart,o=e.directiveEnd,i=t.data,s=e.attrs,a=[],u=null,c=null;for(let l=n;l0;){let r=t[--e];if(typeof r=="number"&&r<0)return r}return 0}function qm(t,e,r,n){let o=r.directiveStart,i=r.directiveEnd;io(r)&&Xm(e,r,t.data[o+r.componentOffset]),t.firstCreatePass||jr(r,e),Ke(n,e);let s=r.initialInputs;for(let a=o;a{Nn(t.lView)},consumerOnSignalRead(){this.lView[mt]=this}}),bd=100;function Td(t,e=!0,r=0){let n=t[ve],o=n.rendererFactory,i=!1;i||o.begin?.();try{fv(t,r)}catch(s){throw e&&Id(t,s),s}finally{i||(o.end?.(),n.inlineEffectRunner?.flush())}}function fv(t,e){rs(t,e);let r=0;for(;Ws(t);){if(r===bd)throw new y(103,!1);r++,rs(t,1)}}function hv(t,e,r,n){let o=e[C];if((o&256)===256)return;let i=!1;!i&&e[ve].inlineEffectRunner?.flush(),Ys(e);let s=null,a=null;!i&&pv(t)&&(a=uv(e),s=Wu(a));try{yl(e),ig(t.bindingStartIndex),r!==null&&hd(t,e,r,2,n);let u=(o&3)===3;if(!i)if(u){let d=t.preOrderCheckHooks;d!==null&&br(e,d,null)}else{let d=t.preOrderHooks;d!==null&&Tr(e,d,0,null),Ci(e,0)}if(gv(e),Sd(e,0),t.contentQueries!==null&&yd(t,e),!i)if(u){let d=t.contentCheckHooks;d!==null&&br(e,d)}else{let d=t.contentHooks;d!==null&&Tr(e,d,1),Ci(e,1)}_m(t,e);let c=t.components;c!==null&&Ad(e,c,0);let l=t.viewQuery;if(l!==null&&ns(2,l,n),!i)if(u){let d=t.viewCheckHooks;d!==null&&br(e,d)}else{let d=t.viewHooks;d!==null&&Tr(e,d,2),Ci(e,2)}if(t.firstUpdatePass===!0&&(t.firstUpdatePass=!1),e[Ii]){for(let d of e[Ii])d();e[Ii]=null}i||(e[C]&=-73)}catch(u){throw Nn(e),u}finally{a!==null&&(Zu(a,s),lv(a)),Ks()}}function pv(t){return t.type!==2}function Sd(t,e){for(let r=Wl(t);r!==null;r=Zl(r))for(let n=Z;n-1&&(Rn(e,n),xr(r,n))}this._attachedToViewContainer=!1}po(this._lView[b],this._lView)}onDestroy(e){Dl(this._lView,e)}markForCheck(){ma(this._cdRefInjectingView||this._lView)}detach(){this._lView[C]&=-129}reattach(){qi(this._lView),this._lView[C]|=128}detectChanges(){this._lView[C]|=1024,Td(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new y(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,rd(this._lView[b],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new y(902,!1);this._appRef=e,qi(this._lView)}},Xe=(()=>{let e=class e{};e.__NG_ELEMENT_ID__=Dv;let t=e;return t})(),vv=Xe,yv=class extends vv{constructor(e,r,n){super(),this._declarationLView=e,this._declarationTContainer=r,this.elementRef=n}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,r){return this.createEmbeddedViewImpl(e,r)}createEmbeddedViewImpl(e,r,n){let o=Do(this._declarationLView,this._declarationTContainer,e,{embeddedViewInjector:r,dehydratedView:n});return new It(o)}};function Dv(){return Io(ee(),_())}function Io(t,e){return t.type&4?new yv(e,t,Xt(t,e)):null}var UC=new RegExp(`^(\\d+)*(${Zg}|${Wg})*(.*)`);var wv=()=>null;function xn(t,e){return wv(t,e)}var Br=class{},os=class{},Hr=class{};function Iv(t){let e=Error(`No component factory found for ${X(t)}.`);return e[Cv]=t,e}var Cv="ngComponent";var is=class{resolveComponentFactory(e){throw Iv(e)}},Co=(()=>{let e=class e{};e.NULL=new is;let t=e;return t})(),On=class{},Eo=(()=>{let e=class e{constructor(){this.destroyNode=null}};e.__NG_ELEMENT_ID__=()=>Ev();let t=e;return t})();function Ev(){let t=_(),e=ee(),r=tt(e.index,t);return(ht(r)?r:t)[V]}var Mv=(()=>{let e=class e{};e.\u0275prov=v({token:e,providedIn:"root",factory:()=>null});let t=e;return t})(),Si={};var Mc=new Set;function en(t){Mc.has(t)||(Mc.add(t),performance?.mark?.("mark_feature_usage",{detail:{feature:t}}))}function bc(...t){}function bv(){let t=typeof ke.requestAnimationFrame=="function",e=ke[t?"requestAnimationFrame":"setTimeout"],r=ke[t?"cancelAnimationFrame":"clearTimeout"];if(typeof Zone<"u"&&e&&r){let n=e[Zone.__symbol__("OriginalDelegate")];n&&(e=n);let o=r[Zone.__symbol__("OriginalDelegate")];o&&(r=o)}return{nativeRequestAnimationFrame:e,nativeCancelAnimationFrame:r}}var k=class t{constructor({enableLongStackTrace:e=!1,shouldCoalesceEventChangeDetection:r=!1,shouldCoalesceRunChangeDetection:n=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new le(!1),this.onMicrotaskEmpty=new le(!1),this.onStable=new le(!1),this.onError=new le(!1),typeof Zone>"u")throw new y(908,!1);Zone.assertZonePatched();let o=this;o._nesting=0,o._outer=o._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(o._inner=o._inner.fork(new Zone.TaskTrackingZoneSpec)),e&&Zone.longStackTraceZoneSpec&&(o._inner=o._inner.fork(Zone.longStackTraceZoneSpec)),o.shouldCoalesceEventChangeDetection=!n&&r,o.shouldCoalesceRunChangeDetection=n,o.lastRequestAnimationFrameId=-1,o.nativeRequestAnimationFrame=bv().nativeRequestAnimationFrame,Nv(o)}static isInAngularZone(){return typeof Zone<"u"&&Zone.current.get("isAngularZone")===!0}static assertInAngularZone(){if(!t.isInAngularZone())throw new y(909,!1)}static assertNotInAngularZone(){if(t.isInAngularZone())throw new y(909,!1)}run(e,r,n){return this._inner.run(e,r,n)}runTask(e,r,n,o){let i=this._inner,s=i.scheduleEventTask("NgZoneEvent: "+o,e,Tv,bc,bc);try{return i.runTask(s,r,n)}finally{i.cancelTask(s)}}runGuarded(e,r,n){return this._inner.runGuarded(e,r,n)}runOutsideAngular(e){return this._outer.run(e)}},Tv={};function va(t){if(t._nesting==0&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function Sv(t){t.isCheckStableRunning||t.lastRequestAnimationFrameId!==-1||(t.lastRequestAnimationFrameId=t.nativeRequestAnimationFrame.call(ke,()=>{t.fakeTopEventTask||(t.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{t.lastRequestAnimationFrameId=-1,ss(t),t.isCheckStableRunning=!0,va(t),t.isCheckStableRunning=!1},void 0,()=>{},()=>{})),t.fakeTopEventTask.invoke()}),ss(t))}function Nv(t){let e=()=>{Sv(t)};t._inner=t._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(r,n,o,i,s,a)=>{if(Av(a))return r.invokeTask(o,i,s,a);try{return Tc(t),r.invokeTask(o,i,s,a)}finally{(t.shouldCoalesceEventChangeDetection&&i.type==="eventTask"||t.shouldCoalesceRunChangeDetection)&&e(),Sc(t)}},onInvoke:(r,n,o,i,s,a,u)=>{try{return Tc(t),r.invoke(o,i,s,a,u)}finally{t.shouldCoalesceRunChangeDetection&&e(),Sc(t)}},onHasTask:(r,n,o,i)=>{r.hasTask(o,i),n===o&&(i.change=="microTask"?(t._hasPendingMicrotasks=i.microTask,ss(t),va(t)):i.change=="macroTask"&&(t.hasPendingMacrotasks=i.macroTask))},onHandleError:(r,n,o,i)=>(r.handleError(o,i),t.runOutsideAngular(()=>t.onError.emit(i)),!1)})}function ss(t){t._hasPendingMicrotasks||(t.shouldCoalesceEventChangeDetection||t.shouldCoalesceRunChangeDetection)&&t.lastRequestAnimationFrameId!==-1?t.hasPendingMicrotasks=!0:t.hasPendingMicrotasks=!1}function Tc(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function Sc(t){t._nesting--,va(t)}function Av(t){return!Array.isArray(t)||t.length!==1?!1:t[0].data?.__ignore_ng_zone__===!0}var Ft=function(t){return t[t.EarlyRead=0]="EarlyRead",t[t.Write=1]="Write",t[t.MixedReadWrite=2]="MixedReadWrite",t[t.Read=3]="Read",t}(Ft||{}),Rv={destroy(){}};function Mo(t,e){!e&&_p(Mo);let r=e?.injector??p(rt);if(!am(r))return Rv;en("NgAfterNextRender");let n=r.get(ya),o=n.handler??=new us,i=e?.phase??Ft.MixedReadWrite,s=()=>{o.unregister(u),a()},a=r.get(ea).onDestroy(s),u=De(r,()=>new as(i,()=>{s(),t()}));return o.register(u),{destroy:s}}var as=class{constructor(e,r){this.phase=e,this.callbackFn=r,this.zone=p(k),this.errorHandler=p(Te,{optional:!0}),p(Br,{optional:!0})?.notify(1)}invoke(){try{this.zone.runOutsideAngular(this.callbackFn)}catch(e){this.errorHandler?.handleError(e)}}},us=class{constructor(){this.executingCallbacks=!1,this.buckets={[Ft.EarlyRead]:new Set,[Ft.Write]:new Set,[Ft.MixedReadWrite]:new Set,[Ft.Read]:new Set},this.deferredCallbacks=new Set}register(e){(this.executingCallbacks?this.deferredCallbacks:this.buckets[e.phase]).add(e)}unregister(e){this.buckets[e.phase].delete(e),this.deferredCallbacks.delete(e)}execute(){this.executingCallbacks=!0;for(let e of Object.values(this.buckets))for(let r of e)r.invoke();this.executingCallbacks=!1;for(let e of this.deferredCallbacks)this.buckets[e.phase].add(e);this.deferredCallbacks.clear()}destroy(){for(let e of Object.values(this.buckets))e.clear();this.deferredCallbacks.clear()}},ya=(()=>{let e=class e{constructor(){this.handler=null,this.internalCallbacks=[]}execute(){this.executeInternalCallbacks(),this.handler?.execute()}executeInternalCallbacks(){let n=[...this.internalCallbacks];this.internalCallbacks.length=0;for(let o of n)o()}ngOnDestroy(){this.handler?.destroy(),this.handler=null,this.internalCallbacks.length=0}};e.\u0275prov=v({token:e,providedIn:"root",factory:()=>new e});let t=e;return t})();function zr(t,e,r){let n=r?t.styles:null,o=r?t.classes:null,i=0;if(e!==null)for(let s=0;s0&&ad(t,r,i.join(" "))}}function Lv(t,e,r){let n=t.projection=[];for(let o=0;o{let e=class e{};e.__NG_ELEMENT_ID__=Vv;let t=e;return t})();function Vv(){let t=ee();return _d(t,_())}var $v=Re,Rd=class extends $v{constructor(e,r,n){super(),this._lContainer=e,this._hostTNode=r,this._hostLView=n}get element(){return Xt(this._hostTNode,this._hostLView)}get injector(){return new pt(this._hostTNode,this._hostLView)}get parentInjector(){let e=Xs(this._hostTNode,this._hostLView);if(Ol(e)){let r=kr(e,this._hostLView),n=Fr(e),o=r[b].data[n+8];return new pt(o,r)}else return new pt(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(e){let r=Ac(this._lContainer);return r!==null&&r[e]||null}get length(){return this._lContainer.length-Z}createEmbeddedView(e,r,n){let o,i;typeof n=="number"?o=n:n!=null&&(o=n.index,i=n.injector);let s=xn(this._lContainer,e.ssrId),a=e.createEmbeddedViewImpl(r||{},i,s);return this.insertImpl(a,o,_n(this._hostTNode,s)),a}createComponent(e,r,n,o,i){let s=e&&!wn(e),a;if(s)a=r;else{let g=r||{};a=g.index,n=g.injector,o=g.projectableNodes,i=g.environmentInjector||g.ngModuleRef}let u=s?e:new zt(Ye(e)),c=n||this.parentInjector;if(!i&&u.ngModule==null){let S=(s?c:this.parentInjector).get(Q,null);S&&(i=S)}let l=Ye(u.componentType??{}),d=xn(this._lContainer,l?.id??null),f=d?.firstChild??null,h=u.create(c,o,f,i);return this.insertImpl(h.hostView,a,_n(this._hostTNode,d)),h}insert(e,r){return this.insertImpl(e,r,!0)}insertImpl(e,r,n){let o=e._lView;if(Wp(o)){let a=this.indexOf(e);if(a!==-1)this.detach(a);else{let u=o[z],c=new Rd(u,u[we],u[z]);c.detach(c.indexOf(e))}}let i=this._adjustIndex(r),s=this._lContainer;return wo(s,o,i,n),e.attachToViewContainerRef(),Gc(Ni(s),i,e),e}move(e,r){return this.insert(e,r)}indexOf(e){let r=Ac(this._lContainer);return r!==null?r.indexOf(e):-1}remove(e){let r=this._adjustIndex(e,-1),n=Rn(this._lContainer,r);n&&(xr(Ni(this._lContainer),r),po(n[b],n))}detach(e){let r=this._adjustIndex(e,-1),n=Rn(this._lContainer,r);return n&&xr(Ni(this._lContainer),r)!=null?new It(n):null}_adjustIndex(e,r=0){return e??this.length+r}};function Ac(t){return t[Pr]}function Ni(t){return t[Pr]||(t[Pr]=[])}function _d(t,e){let r,n=e[t.index];return Ue(n)?r=n:(r=vd(n,e,null,t),e[t.index]=r,yo(e,r)),Bv(r,e,t,n),new Rd(r,t,e)}function Uv(t,e){let r=t[V],n=r.createComment(""),o=de(e,t),i=aa(r,o);return $r(r,i,n,Cm(r,o),!1),n}var Bv=qv,Hv=()=>!1;function zv(t,e,r){return Hv(t,e,r)}function qv(t,e,r,n){if(t[vt])return;let o;r.type&8?o=be(n):o=Uv(e,r),t[vt]=o}var ds=class t{constructor(e){this.queryList=e,this.matches=null}clone(){return new t(this.queryList)}setDirty(){this.queryList.setDirty()}},fs=class t{constructor(e=[]){this.queries=e}createEmbeddedView(e){let r=e.queries;if(r!==null){let n=e.contentQueries!==null?e.contentQueries[0]:r.length,o=[];for(let i=0;i0)n.push(s[a/2]);else{let c=i[a+1],l=e[-u];for(let d=Z;de.trim())}function Pd(t,e,r){t.queries===null&&(t.queries=new hs),t.queries.track(new ps(e,r))}function ey(t,e){let r=t.contentQueries||(t.contentQueries=[]),n=r.length?r[r.length-1]:-1;e!==n&&r.push(t.queries.length-1,e)}function Da(t,e){return t.queries.getByIndex(e)}function ty(t,e){let r=t[b],n=Da(r,e);return n.crossesNgTemplate?gs(r,t,e,[]):xd(r,t,n,e)}function wa(t){let e=t.inputConfig,r={};for(let n in e)if(e.hasOwnProperty(n)){let o=e[n];Array.isArray(o)&&o[3]&&(r[n]=o[3])}t.inputTransforms=r}var Je=class{},Pn=class{};var ms=class extends Je{constructor(e,r,n){super(),this._parent=r,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new qr(this);let o=nl(e);this._bootstrapComponents=td(o.bootstrap),this._r3Injector=Hl(e,r,[{provide:Je,useValue:this},{provide:Co,useValue:this.componentFactoryResolver},...n],X(e),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(e)}get injector(){return this._r3Injector}destroy(){let e=this._r3Injector;!e.destroyed&&e.destroy(),this.destroyCbs.forEach(r=>r()),this.destroyCbs=null}onDestroy(e){this.destroyCbs.push(e)}},vs=class extends Pn{constructor(e){super(),this.moduleType=e}create(e){return new ms(this.moduleType,e,[])}};var Wr=class extends Je{constructor(e){super(),this.componentFactoryResolver=new qr(this),this.instance=null;let r=new Mn([...e.providers,{provide:Je,useValue:this},{provide:Co,useValue:this.componentFactoryResolver}],e.parent||Bs(),e.debugName,new Set(["environment"]));this.injector=r,e.runEnvironmentInitializers&&r.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function bo(t,e,r=null){return new Wr({providers:t,parent:e,debugName:r,runEnvironmentInitializers:!0}).injector}var bt=(()=>{let e=class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new te(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);let n=this.taskId++;return this.pendingTasks.add(n),n}remove(n){this.pendingTasks.delete(n),this.pendingTasks.size===0&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function Fd(t){return t!==null&&(typeof t=="function"||typeof t=="object")}function Ia(t,e,r){return t[e]=r}function ny(t,e){return t[e]}function Se(t,e,r){let n=t[e];return Object.is(n,r)?!1:(t[e]=r,!0)}function ry(t,e,r,n){let o=Se(t,e,r);return Se(t,e+1,n)||o}function oy(t){return(t.flags&32)===32}function iy(t,e,r,n,o,i,s,a,u){let c=e.consts,l=Un(e,t,4,s||null,Ht(c,a));ha(e,r,l,Ht(c,u)),lo(e,l);let d=l.tView=fa(2,l,n,o,i,e.directiveRegistry,e.pipeRegistry,null,e.schemas,c,null);return e.queries!==null&&(e.queries.template(e,l),d.queries=e.queries.embeddedTView(l)),l}function ys(t,e,r,n,o,i,s,a){let u=_(),c=$(),l=t+J,d=c.firstCreatePass?iy(l,c,u,e,r,n,o,i,s):c.data[l];Mt(d,!1);let f=sy(c,u,d,t);uo()&&go(c,u,f,d),Ke(f,u);let h=vd(f,u,f,d);return u[l]=h,yo(u,h),zv(h,d,u),so(d)&&la(c,u,d),s!=null&&da(u,d,a),ys}var sy=ay;function ay(t,e,r,n){return co(!0),e[V].createComment("")}function Ca(t,e,r,n){let o=_(),i=$n();if(Se(o,i,e)){let s=$(),a=Rl();Jm(a,o,t,e,r,n)}return Ca}function uy(t,e,r,n){return Se(t,$n(),r)?e+Jr(r)+n:Ae}function Er(t,e){return t<<17|e<<2}function Ct(t){return t>>17&32767}function cy(t){return(t&2)==2}function ly(t,e){return t&131071|e<<17}function Ds(t){return t|2}function qt(t){return(t&131068)>>2}function Ai(t,e){return t&-131069|e<<2}function dy(t){return(t&1)===1}function ws(t){return t|1}function fy(t,e,r,n,o,i){let s=i?e.classBindings:e.styleBindings,a=Ct(s),u=qt(s);t[n]=r;let c=!1,l;if(Array.isArray(r)){let d=r;l=d[1],(l===null||jn(d,l)>0)&&(c=!0)}else l=r;if(o)if(u!==0){let f=Ct(t[a+1]);t[n+1]=Er(f,a),f!==0&&(t[f+1]=Ai(t[f+1],n)),t[a+1]=ly(t[a+1],n)}else t[n+1]=Er(a,0),a!==0&&(t[a+1]=Ai(t[a+1],n)),a=n;else t[n+1]=Er(u,0),a===0?a=n:t[u+1]=Ai(t[u+1],n),u=n;c&&(t[n+1]=Ds(t[n+1])),Rc(t,l,n,!0),Rc(t,l,n,!1),hy(e,l,t,n,i),s=Er(a,u),i?e.classBindings=s:e.styleBindings=s}function hy(t,e,r,n,o){let i=o?t.residualClasses:t.residualStyles;i!=null&&typeof e=="string"&&jn(i,e)>=0&&(r[n+1]=ws(r[n+1]))}function Rc(t,e,r,n){let o=t[r+1],i=e===null,s=n?Ct(o):qt(o),a=!1;for(;s!==0&&(a===!1||i);){let u=t[s],c=t[s+1];py(u,e)&&(a=!0,t[s+1]=n?ws(c):Ds(c)),s=n?Ct(c):qt(c)}a&&(t[r+1]=n?Ds(o):ws(o))}function py(t,e){return t===null||e==null||(Array.isArray(t)?t[1]:t)===e?!0:Array.isArray(t)&&typeof e=="string"?jn(t,e)>=0:!1}var pe={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function gy(t){return t.substring(pe.key,pe.keyEnd)}function my(t){return vy(t),kd(t,Ld(t,0,pe.textEnd))}function kd(t,e){let r=pe.textEnd;return r===e?-1:(e=pe.keyEnd=yy(t,pe.key=e,r),Ld(t,e,r))}function vy(t){pe.key=0,pe.keyEnd=0,pe.value=0,pe.valueEnd=0,pe.textEnd=t.length}function Ld(t,e,r){for(;e32;)e++;return e}function Dy(t,e,r){let n=_(),o=$n();if(Se(n,o,e)){let i=$(),s=Rl();Um(i,s,n,t,e,n[V],r,!1)}return Dy}function Is(t,e,r,n,o){let i=e.inputs,s=o?"class":"style";pa(t,r,i[s],s,n)}function jd(t,e,r){return Vd(t,e,r,!1),jd}function wy(t,e){return Vd(t,e,null,!0),wy}function HC(t){Cy(Ny,Iy,t,!0)}function Iy(t,e){for(let r=my(e);r>=0;r=kd(e,r))js(t,gy(e),!0)}function Vd(t,e,r,n){let o=_(),i=$(),s=El(2);if(i.firstUpdatePass&&Ud(i,t,s,n),e!==Ae&&Se(o,s,e)){let a=i.data[nt()];Bd(i,a,o,o[V],t,o[s+1]=Ry(e,r),n,s)}}function Cy(t,e,r,n){let o=$(),i=El(2);o.firstUpdatePass&&Ud(o,null,i,n);let s=_();if(r!==Ae&&Se(s,i,r)){let a=o.data[nt()];if(Hd(a,n)&&!$d(o,i)){let u=n?a.classesWithoutHost:a.stylesWithoutHost;u!==null&&(r=Fi(u,r||"")),Is(o,a,s,r,n)}else Ay(o,a,s,s[V],s[i+1],s[i+1]=Sy(t,e,r),n,i)}}function $d(t,e){return e>=t.expandoStartIndex}function Ud(t,e,r,n){let o=t.data;if(o[r+1]===null){let i=o[nt()],s=$d(t,r);Hd(i,n)&&e===null&&!s&&(e=!1),e=Ey(o,i,e,n),fy(o,i,e,r,s,n)}}function Ey(t,e,r,n){let o=cg(t),i=n?e.residualClasses:e.residualStyles;if(o===null)(n?e.classBindings:e.styleBindings)===0&&(r=Ri(null,t,e,r,n),r=Fn(r,e.attrs,n),i=null);else{let s=e.directiveStylingLast;if(s===-1||t[s]!==o)if(r=Ri(o,t,e,r,n),i===null){let u=My(t,e,n);u!==void 0&&Array.isArray(u)&&(u=Ri(null,t,e,u[1],n),u=Fn(u,e.attrs,n),by(t,e,n,u))}else i=Ty(t,e,n)}return i!==void 0&&(n?e.residualClasses=i:e.residualStyles=i),r}function My(t,e,r){let n=r?e.classBindings:e.styleBindings;if(qt(n)!==0)return t[Ct(n)]}function by(t,e,r,n){let o=r?e.classBindings:e.styleBindings;t[Ct(o)]=n}function Ty(t,e,r){let n,o=e.directiveEnd;for(let i=1+e.directiveStylingLast;i0;){let u=t[o],c=Array.isArray(u),l=c?u[1]:u,d=l===null,f=r[o+1];f===Ae&&(f=d?se:void 0);let h=d?yi(f,n):l===n?f:void 0;if(c&&!Zr(h)&&(h=yi(u,n)),Zr(h)&&(a=h,s))return a;let g=t[o+1];o=s?Ct(g):qt(g)}if(e!==null){let u=i?e.residualClasses:e.residualStyles;u!=null&&(a=yi(u,n))}return a}function Zr(t){return t!==void 0}function Ry(t,e){return t==null||t===""||(typeof e=="string"?t=t+e:typeof t=="object"&&(t=X(Jt(t)))),t}function Hd(t,e){return(t.flags&(e?8:16))!==0}var Cs=class{destroy(e){}updateValue(e,r){}swap(e,r){let n=Math.min(e,r),o=Math.max(e,r),i=this.detach(o);if(o-n>1){let s=this.detach(n);this.attach(n,i),this.attach(o,s)}else this.attach(n,i)}move(e,r){this.attach(r,this.detach(e))}};function _i(t,e,r,n,o){return t===r&&Object.is(e,n)?1:Object.is(o(t,e),o(r,n))?-1:0}function _y(t,e,r){let n,o,i=0,s=t.length-1;if(Array.isArray(e)){let a=e.length-1;for(;i<=s&&i<=a;){let u=t.at(i),c=e[i],l=_i(i,u,i,c,r);if(l!==0){l<0&&t.updateValue(i,c),i++;continue}let d=t.at(s),f=e[a],h=_i(s,d,a,f,r);if(h!==0){h<0&&t.updateValue(s,f),s--,a--;continue}let g=r(i,u),S=r(s,d),I=r(i,c);if(Object.is(I,S)){let M=r(a,f);Object.is(M,g)?(t.swap(i,s),t.updateValue(s,f),a--,s--):t.move(s,i),t.updateValue(i,c),i++;continue}if(n??=new Qr,o??=Oc(t,i,s,r),Es(t,n,i,I))t.updateValue(i,c),i++,s++;else if(o.has(I))n.set(g,t.detach(i)),s--;else{let M=t.create(i,e[i]);t.attach(i,M),i++,s++}}for(;i<=a;)xc(t,n,r,i,e[i]),i++}else if(e!=null){let a=e[Symbol.iterator](),u=a.next();for(;!u.done&&i<=s;){let c=t.at(i),l=u.value,d=_i(i,c,i,l,r);if(d!==0)d<0&&t.updateValue(i,l),i++,u=a.next();else{n??=new Qr,o??=Oc(t,i,s,r);let f=r(i,l);if(Es(t,n,i,f))t.updateValue(i,l),i++,s++,u=a.next();else if(!o.has(f))t.attach(i,t.create(i,l)),i++,s++,u=a.next();else{let h=r(i,c);n.set(h,t.detach(i)),s--}}}for(;!u.done;)xc(t,n,r,t.length,u.value),u=a.next()}for(;i<=s;)t.destroy(t.detach(s--));n?.forEach(a=>{t.destroy(a)})}function Es(t,e,r,n){return e!==void 0&&e.has(n)?(t.attach(r,e.get(n)),e.delete(n),!0):!1}function xc(t,e,r,n,o){if(Es(t,e,n,r(n,o)))t.updateValue(n,o);else{let i=t.create(n,o);t.attach(n,i)}}function Oc(t,e,r,n){let o=new Set;for(let i=e;i<=r;i++)o.add(n(i,t.at(i)));return o}var Qr=class{constructor(){this.kvMap=new Map,this._vMap=void 0}has(e){return this.kvMap.has(e)}delete(e){if(!this.has(e))return!1;let r=this.kvMap.get(e);return this._vMap!==void 0&&this._vMap.has(r)?(this.kvMap.set(e,this._vMap.get(r)),this._vMap.delete(r)):this.kvMap.delete(e),!0}get(e){return this.kvMap.get(e)}set(e,r){if(this.kvMap.has(e)){let n=this.kvMap.get(e);this._vMap===void 0&&(this._vMap=new Map);let o=this._vMap;for(;o.has(n);)n=o.get(n);o.set(n,r)}else this.kvMap.set(e,r)}forEach(e){for(let[r,n]of this.kvMap)if(e(n,r),this._vMap!==void 0){let o=this._vMap;for(;o.has(n);)n=o.get(n),e(n,r)}}};function zC(t,e,r){en("NgControlFlow");let n=_(),o=$n(),i=Ss(n,J+t),s=0;if(Se(n,o,e)){let a=R(null);try{if(Ed(i,s),e!==-1){let u=Ns(n[b],J+e),c=xn(i,u.tView.ssrId),l=Do(n,u,r,{dehydratedView:c});wo(i,l,s,_n(u,c))}}finally{R(a)}}else{let a=Cd(i,s);a!==void 0&&(a[W]=r)}}var Ms=class{constructor(e,r,n){this.lContainer=e,this.$implicit=r,this.$index=n}get $count(){return this.lContainer.length-Z}};function qC(t){return t}var bs=class{constructor(e,r,n){this.hasEmptyBlock=e,this.trackByFn=r,this.liveCollection=n}};function GC(t,e,r,n,o,i,s,a,u,c,l,d,f){en("NgControlFlow");let h=u!==void 0,g=_(),S=a?s.bind(g[ye][W]):s,I=new bs(h,S);g[J+t]=I,ys(t+1,e,r,n,o,i),h&&ys(t+2,u,c,l,d,f)}var Ts=class extends Cs{constructor(e,r,n){super(),this.lContainer=e,this.hostLView=r,this.templateTNode=n,this.needsIndexUpdate=!1}get length(){return this.lContainer.length-Z}at(e){return this.getLView(e)[W].$implicit}attach(e,r){let n=r[bn];this.needsIndexUpdate||=e!==this.length,wo(this.lContainer,r,e,_n(this.templateTNode,n))}detach(e){return this.needsIndexUpdate||=e!==this.length-1,xy(this.lContainer,e)}create(e,r){let n=xn(this.lContainer,this.templateTNode.tView.ssrId);return Do(this.hostLView,this.templateTNode,new Ms(this.lContainer,r,e),{dehydratedView:n})}destroy(e){po(e[b],e)}updateValue(e,r){this.getLView(e)[W].$implicit=r}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let e=0;e(co(!0),nd(n,o,fg()));function ky(t,e,r,n,o){let i=e.consts,s=Ht(i,n),a=Un(e,t,8,"ng-container",s);s!==null&&zr(a,s,!0);let u=Ht(i,o);return ha(e,r,a,u),e.queries!==null&&e.queries.elementStart(e,a),a}function Gd(t,e,r){let n=_(),o=$(),i=t+J,s=o.firstCreatePass?ky(i,o,n,e,r):o.data[i];Mt(s,!0);let a=jy(o,n,s,t);return n[i]=a,uo()&&go(o,n,a,s),Ke(a,n),so(s)&&(la(o,n,s),ca(o,s,n)),r!=null&&da(n,s),Gd}function Wd(){let t=ee(),e=$();return Zs()?Cl():(t=t.parent,Mt(t,!1)),e.firstCreatePass&&(lo(e,t),zs(t)&&e.queries.elementEnd(t)),Wd}function Ly(t,e,r){return Gd(t,e,r),Wd(),Ly}var jy=(t,e,r,n)=>(co(!0),dm(e[V],""));function ZC(){return _()}var Yr="en-US";var Vy=Yr;function $y(t){typeof t=="string"&&(Vy=t.toLowerCase().replace(/_/g,"-"))}function Ma(t,e,r,n){let o=_(),i=$(),s=ee();return By(i,o,o[V],s,t,e,n),Ma}function Uy(t,e,r,n){let o=t.cleanup;if(o!=null)for(let i=0;iu?a[u]:null}typeof s=="string"&&(i+=2)}return null}function By(t,e,r,n,o,i,s){let a=so(n),c=t.firstCreatePass&&wd(t),l=e[W],d=Dd(e),f=!0;if(n.type&3||s){let S=de(n,e),I=s?s(S):S,M=d.length,q=s?F=>s(be(F[n.index])):n.index,B=null;if(!s&&a&&(B=Uy(t,e,o,n.index)),B!==null){let F=B.__ngLastListenerFn__||B;F.__ngNextListenerFn__=i,B.__ngLastListenerFn__=i,f=!1}else{i=Fc(n,e,l,i,!1);let F=r.listen(I,o,i);d.push(i,F),c&&c.push(o,q,M,M+1)}}else i=Fc(n,e,l,i,!1);let h=n.outputs,g;if(f&&h!==null&&(g=h[o])){let S=g.length;if(S)for(let I=0;I-1?tt(t.index,e):e;ma(a);let u=Pc(e,r,n,s),c=i.__ngNextListenerFn__;for(;c;)u=Pc(e,r,c,s)&&u,c=c.__ngNextListenerFn__;return o&&u===!1&&s.preventDefault(),u}}function QC(t=1){return dg(t)}function Hy(t,e,r,n){Xv(t,e,r,n)}function YC(t,e,r){Kv(t,e,r)}function zy(t){let e=_(),r=$(),n=Ml();Qs(n+1);let o=Da(r,n);if(t.dirty&&Gp(e)===((o.metadata.flags&2)===2)){if(o.matches===null)t.reset([]);else{let i=ty(e,n);t.reset(i,Vg),t.notifyOnChanges()}return!0}return!1}function qy(){return Yv(_(),Ml())}function Gy(t,e,r,n){r>=t.data.length&&(t.data[r]=null,t.blueprint[r]=null),e[r]=n}function KC(t){let e=og();return vl(e,J+t)}function XC(t,e=""){let r=_(),n=$(),o=t+J,i=n.firstCreatePass?Un(n,o,1,e,null):n.data[o],s=Wy(n,r,i,e,t);r[o]=s,uo()&&go(n,r,s,i),Mt(i,!1)}var Wy=(t,e,r,n,o)=>(co(!0),cm(e[V],n));function Zy(t){return Zd("",t,""),Zy}function Zd(t,e,r){let n=_(),o=uy(n,t,e,r);return o!==Ae&&rv(n,nt(),o),Zd}function Qy(t,e,r){let n=$();if(n.firstCreatePass){let o=Yt(t);As(r,n.data,n.blueprint,o,!0),As(e,n.data,n.blueprint,o,!1)}}function As(t,e,r,n,o){if(t=G(t),Array.isArray(t))for(let i=0;i>20;if($t(t)||!t.multi){let h=new Dt(c,o,L),g=Oi(u,e,o?l:l+f,d);g===-1?(Zi(jr(a,s),i,u),xi(i,t,e.length),e.push(u),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),r.push(h),s.push(h)):(r[g]=h,s[g]=h)}else{let h=Oi(u,e,l+f,d),g=Oi(u,e,l,l+f),S=h>=0&&r[h],I=g>=0&&r[g];if(o&&!I||!o&&!S){Zi(jr(a,s),i,u);let M=Xy(o?Ky:Yy,r.length,o,n,c);!o&&I&&(r[g].providerFactory=M),xi(i,t,e.length,0),e.push(u),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),r.push(M),s.push(M)}else{let M=Qd(r[o?g:h],c,!o&&n);xi(i,t,h>-1?h:g,M)}!o&&n&&I&&r[g].componentProviders++}}}function xi(t,e,r,n){let o=$t(e),i=Mp(e);if(o||i){let u=(i?G(e.useClass):e).prototype.ngOnDestroy;if(u){let c=t.destroyHooks||(t.destroyHooks=[]);if(!o&&e.multi){let l=c.indexOf(r);l===-1?c.push(r,[n,u]):c[l+1].push(n,u)}else c.push(r,u)}}}function Qd(t,e,r){return r&&t.componentProviders++,t.multi.push(e)-1}function Oi(t,e,r,n){for(let o=r;o{r.providersResolver=(n,o)=>Qy(n,o?o(t):t,e)}}var Jy=(()=>{let e=class e{constructor(n){this._injector=n,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){let o=il(!1,n.type),i=o.length>0?bo([o],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n,i)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&&n.destroy()}finally{this.cachedInjectors.clear()}}};e.\u0275prov=v({token:e,providedIn:"environment",factory:()=>new e(D(Q))});let t=e;return t})();function Yd(t){en("NgStandalone"),t.getStandaloneInjector=e=>e.get(Jy).getOrCreateStandaloneInjector(t)}function eE(t,e,r){let n=ao()+t,o=_();return o[n]===Ae?Ia(o,n,r?e.call(r):e()):ny(o,n)}function tE(t,e,r,n){return Xd(_(),ao(),t,e,r,n)}function nE(t,e,r,n,o){return eD(_(),ao(),t,e,r,n,o)}function Kd(t,e){let r=t[e];return r===Ae?void 0:r}function Xd(t,e,r,n,o,i){let s=e+r;return Se(t,s,o)?Ia(t,s+1,i?n.call(i,o):n(o)):Kd(t,s+1)}function eD(t,e,r,n,o,i,s){let a=e+r;return ry(t,a,o,i)?Ia(t,a+2,s?n.call(s,o,i):n(o,i)):Kd(t,a+2)}function rE(t,e){let r=$(),n,o=t+J;r.firstCreatePass?(n=tD(e,r.pipeRegistry),r.data[o]=n,n.onDestroy&&(r.destroyHooks??=[]).push(o,n.onDestroy)):n=r.data[o];let i=n.factory||(n.factory=gt(n.type,!0)),s,a=ne(L);try{let u=Lr(!1),c=i();return Lr(u),Gy(r,_(),o,c),c}finally{ne(a)}}function tD(t,e){if(e)for(let r=e.length-1;r>=0;r--){let n=e[r];if(t===n.name)return n}}function oE(t,e,r){let n=t+J,o=_(),i=vl(o,n);return nD(o,n)?Xd(o,ao(),e,i.transform,r,i):i.transform(r)}function nD(t,e){return t[b].data[e].pure}function iE(t,e){return Io(t,e)}var To=(()=>{let e=class e{log(n){console.log(n)}warn(n){console.warn(n)}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"platform"});let t=e;return t})();var Jd=new E("");function tn(t){return!!t&&typeof t.then=="function"}function ba(t){return!!t&&typeof t.subscribe=="function"}var So=new E(""),ef=(()=>{let e=class e{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((n,o)=>{this.resolve=n,this.reject=o}),this.appInits=p(So,{optional:!0})??[]}runInitializers(){if(this.initialized)return;let n=[];for(let i of this.appInits){let s=i();if(tn(s))n.push(s);else if(ba(s)){let a=new Promise((u,c)=>{s.subscribe({complete:u,error:c})});n.push(a)}}let o=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{o()}).catch(i=>{this.reject(i)}),n.length===0&&o(),this.initialized=!0}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),Bn=new E("");function rD(){Yu(()=>{throw new y(600,!1)})}function oD(t){return t.isBoundToModule}function iD(t,e,r){try{let n=r();return tn(n)?n.catch(o=>{throw e.runOutsideAngular(()=>t.handleError(o)),o}):n}catch(n){throw e.runOutsideAngular(()=>t.handleError(n)),n}}var nn=(()=>{let e=class e{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=p(zl),this.afterRenderEffectManager=p(ya),this.externalTestViews=new Set,this.beforeRender=new ce,this.afterTick=new ce,this.componentTypes=[],this.components=[],this.isStable=p(bt).hasPendingTasks.pipe(x(n=>!n)),this._injector=p(Q)}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(n,o){let i=n instanceof Hr;if(!this._injector.get(ef).done){let h=!i&&tl(n),g=!1;throw new y(405,g)}let a;i?a=n:a=this._injector.get(Co).resolveComponentFactory(n),this.componentTypes.push(a.componentType);let u=oD(a)?void 0:this._injector.get(Je),c=o||a.selector,l=a.create(rt.NULL,[],c,u),d=l.location.nativeElement,f=l.injector.get(Jd,null);return f?.registerApplication(d),l.onDestroy(()=>{this.detachView(l.hostView),Pi(this.components,l),f?.unregisterApplication(d)}),this._loadComponent(l),l}tick(){this._tick(!0)}_tick(n){if(this._runningTick)throw new y(101,!1);let o=R(null);try{this._runningTick=!0,this.detectChangesInAttachedViews(n)}catch(i){this.internalErrorHandler(i)}finally{this.afterTick.next(),this._runningTick=!1,R(o)}}detectChangesInAttachedViews(n){let o=0,i=this.afterRenderEffectManager;for(;;){if(o===bd)throw new y(103,!1);if(n){let s=o===0;this.beforeRender.next(s);for(let{_lView:a,notifyErrorHandler:u}of this._views)sD(a,s,u)}if(o++,i.executeInternalCallbacks(),![...this.externalTestViews.keys(),...this._views].some(({_lView:s})=>_s(s))&&(i.execute(),![...this.externalTestViews.keys(),...this._views].some(({_lView:s})=>_s(s))))break}}attachView(n){let o=n;this._views.push(o),o.attachToAppRef(this)}detachView(n){let o=n;Pi(this._views,o),o.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n);let o=this._injector.get(Bn,[]);[...this._bootstrapListeners,...o].forEach(i=>i(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>Pi(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new y(406,!1);let n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function Pi(t,e){let r=t.indexOf(e);r>-1&&t.splice(r,1)}function sD(t,e,r){!e&&!_s(t)||aD(t,r,e)}function _s(t){return Ws(t)}function aD(t,e,r){let n;r?(n=0,t[C]|=1024):t[C]&64?n=0:n=1,Td(t,e,n)}var xs=class{constructor(e,r){this.ngModuleFactory=e,this.componentFactories=r}},No=(()=>{let e=class e{compileModuleSync(n){return new vs(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}compileModuleAndAllComponentsSync(n){let o=this.compileModuleSync(n),i=nl(n),s=td(i.declarations).reduce((a,u)=>{let c=Ye(u);return c&&a.push(new zt(c)),a},[]);return new xs(o,s)}compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.compileModuleAndAllComponentsSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var uD=(()=>{let e=class e{constructor(){this.zone=p(k),this.applicationRef=p(nn)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function cD(t){return[{provide:k,useFactory:t},{provide:Vt,multi:!0,useFactory:()=>{let e=p(uD,{optional:!0});return()=>e.initialize()}},{provide:Vt,multi:!0,useFactory:()=>{let e=p(hD);return()=>{e.initialize()}}},{provide:zl,useFactory:lD}]}function lD(){let t=p(k),e=p(Te);return r=>t.runOutsideAngular(()=>e.handleError(r))}function dD(t){let e=cD(()=>new k(fD(t)));return Zt([[],e])}function fD(t){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:t?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:t?.runCoalescing??!1}}var hD=(()=>{let e=class e{constructor(){this.subscription=new yn,this.initialized=!1,this.zone=p(k),this.pendingTasks=p(bt)}initialize(){if(this.initialized)return;this.initialized=!0;let n=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(n=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{k.assertNotInAngularZone(),queueMicrotask(()=>{n!==null&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(n),n=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{k.assertInAngularZone(),n??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function pD(){return typeof $localize<"u"&&$localize.locale||Yr}var Ta=new E("",{providedIn:"root",factory:()=>p(Ta,A.Optional|A.SkipSelf)||pD()});var tf=new E("");var Ar=null;function gD(t=[],e){return rt.create({name:e,providers:[{provide:ro,useValue:"platform"},{provide:tf,useValue:new Set([()=>Ar=null])},...t]})}function mD(t=[]){if(Ar)return Ar;let e=gD(t);return Ar=e,rD(),vD(e),e}function vD(t){t.get(na,null)?.forEach(r=>r())}var rn=(()=>{let e=class e{};e.__NG_ELEMENT_ID__=yD;let t=e;return t})();function yD(t){return DD(ee(),_(),(t&16)===16)}function DD(t,e,r){if(io(t)&&!r){let n=tt(t.index,e);return new It(n,n)}else if(t.type&47){let n=e[ye];return new It(n,e)}return null}var Os=class{constructor(){}supports(e){return e instanceof Map||Fd(e)}create(){return new Ps}},Ps=class{constructor(){this._records=new Map,this._mapHead=null,this._appendAfter=null,this._previousMapHead=null,this._changesHead=null,this._changesTail=null,this._additionsHead=null,this._additionsTail=null,this._removalsHead=null,this._removalsTail=null}get isDirty(){return this._additionsHead!==null||this._changesHead!==null||this._removalsHead!==null}forEachItem(e){let r;for(r=this._mapHead;r!==null;r=r._next)e(r)}forEachPreviousItem(e){let r;for(r=this._previousMapHead;r!==null;r=r._nextPrevious)e(r)}forEachChangedItem(e){let r;for(r=this._changesHead;r!==null;r=r._nextChanged)e(r)}forEachAddedItem(e){let r;for(r=this._additionsHead;r!==null;r=r._nextAdded)e(r)}forEachRemovedItem(e){let r;for(r=this._removalsHead;r!==null;r=r._nextRemoved)e(r)}diff(e){if(!e)e=new Map;else if(!(e instanceof Map||Fd(e)))throw new y(900,!1);return this.check(e)?this:null}onDestroy(){}check(e){this._reset();let r=this._mapHead;if(this._appendAfter=null,this._forEach(e,(n,o)=>{if(r&&r.key===o)this._maybeAddToChanges(r,n),this._appendAfter=r,r=r._next;else{let i=this._getOrCreateRecordForKey(o,n);r=this._insertBeforeOrAppend(r,i)}}),r){r._prev&&(r._prev._next=null),this._removalsHead=r;for(let n=r;n!==null;n=n._nextRemoved)n===this._mapHead&&(this._mapHead=null),this._records.delete(n.key),n._nextRemoved=n._next,n.previousValue=n.currentValue,n.currentValue=null,n._prev=null,n._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(e,r){if(e){let n=e._prev;return r._next=e,r._prev=n,e._prev=r,n&&(n._next=r),e===this._mapHead&&(this._mapHead=r),this._appendAfter=e,e}return this._appendAfter?(this._appendAfter._next=r,r._prev=this._appendAfter):this._mapHead=r,this._appendAfter=r,null}_getOrCreateRecordForKey(e,r){if(this._records.has(e)){let o=this._records.get(e);this._maybeAddToChanges(o,r);let i=o._prev,s=o._next;return i&&(i._next=s),s&&(s._prev=i),o._next=null,o._prev=null,o}let n=new Fs(e);return this._records.set(e,n),n.currentValue=r,this._addToAdditions(n),n}_reset(){if(this.isDirty){let e;for(this._previousMapHead=this._mapHead,e=this._previousMapHead;e!==null;e=e._next)e._nextPrevious=e._next;for(e=this._changesHead;e!==null;e=e._nextChanged)e.previousValue=e.currentValue;for(e=this._additionsHead;e!=null;e=e._nextAdded)e.previousValue=e.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(e,r){Object.is(r,e.currentValue)||(e.previousValue=e.currentValue,e.currentValue=r,this._addToChanges(e))}_addToAdditions(e){this._additionsHead===null?this._additionsHead=this._additionsTail=e:(this._additionsTail._nextAdded=e,this._additionsTail=e)}_addToChanges(e){this._changesHead===null?this._changesHead=this._changesTail=e:(this._changesTail._nextChanged=e,this._changesTail=e)}_forEach(e,r){e instanceof Map?e.forEach(r):Object.keys(e).forEach(n=>r(e[n],n))}},Fs=class{constructor(e){this.key=e,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}};function kc(){return new Sa([new Os])}var Sa=(()=>{let e=class e{constructor(n){this.factories=n}static create(n,o){if(o){let i=o.factories.slice();n=n.concat(i)}return new e(n)}static extend(n){return{provide:e,useFactory:o=>e.create(n,o||kc()),deps:[[e,new to,new Ln]]}}find(n){let o=this.factories.find(i=>i.supports(n));if(o)return o;throw new y(901,!1)}};e.\u0275prov=v({token:e,providedIn:"root",factory:kc});let t=e;return t})();function nf(t){try{let{rootComponent:e,appProviders:r,platformProviders:n}=t,o=mD(n),i=[dD(),...r||[]],a=new Wr({providers:i,parent:o,debugName:"",runEnvironmentInitializers:!1}).injector,u=a.get(k);return u.run(()=>{a.resolveInjectorInitializers();let c=a.get(Te,null),l;u.runOutsideAngular(()=>{l=u.onError.subscribe({next:h=>{c.handleError(h)}})});let d=()=>a.destroy(),f=o.get(tf);return f.add(d),a.onDestroy(()=>{l.unsubscribe(),f.delete(d)}),iD(c,u,()=>{let h=a.get(ef);return h.runInitializers(),h.donePromise.then(()=>{let g=a.get(Ta,Yr);$y(g||Yr);let S=a.get(nn);return e!==void 0&&S.bootstrap(e),S})})})}catch(e){return Promise.reject(e)}}function Hn(t){return typeof t=="boolean"?t:t!=null&&t!=="false"}function Na(t){let e=R(null);try{return t()}finally{R(e)}}function rf(t){let e=Ye(t);if(!e)return null;let r=new zt(e);return{get selector(){return r.selector},get type(){return r.componentType},get inputs(){return r.inputs},get outputs(){return r.outputs},get ngContentSelectors(){return r.ngContentSelectors},get isStandalone(){return e.standalone},get isSignal(){return e.signals}}}var lf=null;function on(){return lf}function df(t){lf??=t}var Ro=class{};var Y=new E(""),Pa=(()=>{let e=class e{historyGo(n){throw new Error("")}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:()=>p(wD),providedIn:"platform"});let t=e;return t})(),ff=new E(""),wD=(()=>{let e=class e extends Pa{constructor(){super(),this._doc=p(Y),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return on().getBaseHref(this._doc)}onPopState(n){let o=on().getGlobalEventTarget(this._doc,"window");return o.addEventListener("popstate",n,!1),()=>o.removeEventListener("popstate",n)}onHashChange(n){let o=on().getGlobalEventTarget(this._doc,"window");return o.addEventListener("hashchange",n,!1),()=>o.removeEventListener("hashchange",n)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(n){this._location.pathname=n}pushState(n,o,i){this._history.pushState(n,o,i)}replaceState(n,o,i){this._history.replaceState(n,o,i)}forward(){this._history.forward()}back(){this._history.back()}historyGo(n=0){this._history.go(n)}getState(){return this._history.state}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:()=>new e,providedIn:"platform"});let t=e;return t})();function Fa(t,e){if(t.length==0)return e;if(e.length==0)return t;let r=0;return t.endsWith("/")&&r++,e.startsWith("/")&&r++,r==2?t+e.substring(1):r==1?t+e:t+"/"+e}function of(t){let e=t.match(/#|\?|$/),r=e&&e.index||t.length,n=r-(t[r-1]==="/"?1:0);return t.slice(0,n)+t.slice(r)}function Be(t){return t&&t[0]!=="?"?"?"+t:t}var He=(()=>{let e=class e{historyGo(n){throw new Error("")}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:()=>p(ka),providedIn:"root"});let t=e;return t})(),hf=new E(""),ka=(()=>{let e=class e extends He{constructor(n,o){super(),this._platformLocation=n,this._removeListenerFns=[],this._baseHref=o??this._platformLocation.getBaseHrefFromDOM()??p(Y).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}prepareExternalUrl(n){return Fa(this._baseHref,n)}path(n=!1){let o=this._platformLocation.pathname+Be(this._platformLocation.search),i=this._platformLocation.hash;return i&&n?`${o}${i}`:o}pushState(n,o,i,s){let a=this.prepareExternalUrl(i+Be(s));this._platformLocation.pushState(n,o,a)}replaceState(n,o,i,s){let a=this.prepareExternalUrl(i+Be(s));this._platformLocation.replaceState(n,o,a)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}};e.\u0275fac=function(o){return new(o||e)(D(Pa),D(hf,8))},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),pf=(()=>{let e=class e extends He{constructor(n,o){super(),this._platformLocation=n,this._baseHref="",this._removeListenerFns=[],o!=null&&(this._baseHref=o)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}path(n=!1){let o=this._platformLocation.hash??"#";return o.length>0?o.substring(1):o}prepareExternalUrl(n){let o=Fa(this._baseHref,n);return o.length>0?"#"+o:o}pushState(n,o,i,s){let a=this.prepareExternalUrl(i+Be(s));a.length==0&&(a=this._platformLocation.pathname),this._platformLocation.pushState(n,o,a)}replaceState(n,o,i,s){let a=this.prepareExternalUrl(i+Be(s));a.length==0&&(a=this._platformLocation.pathname),this._platformLocation.replaceState(n,o,a)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}};e.\u0275fac=function(o){return new(o||e)(D(Pa),D(hf,8))},e.\u0275prov=v({token:e,factory:e.\u0275fac});let t=e;return t})(),an=(()=>{let e=class e{constructor(n){this._subject=new le,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=n;let o=this._locationStrategy.getBaseHref();this._basePath=ED(of(sf(o))),this._locationStrategy.onPopState(i=>{this._subject.emit({url:this.path(!0),pop:!0,state:i.state,type:i.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(n=!1){return this.normalize(this._locationStrategy.path(n))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(n,o=""){return this.path()==this.normalize(n+Be(o))}normalize(n){return e.stripTrailingSlash(CD(this._basePath,sf(n)))}prepareExternalUrl(n){return n&&n[0]!=="/"&&(n="/"+n),this._locationStrategy.prepareExternalUrl(n)}go(n,o="",i=null){this._locationStrategy.pushState(i,"",n,o),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+Be(o)),i)}replaceState(n,o="",i=null){this._locationStrategy.replaceState(i,"",n,o),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+Be(o)),i)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(n=0){this._locationStrategy.historyGo?.(n)}onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChangeSubscription??=this.subscribe(o=>{this._notifyUrlChangeListeners(o.url,o.state)}),()=>{let o=this._urlChangeListeners.indexOf(n);this._urlChangeListeners.splice(o,1),this._urlChangeListeners.length===0&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(n="",o){this._urlChangeListeners.forEach(i=>i(n,o))}subscribe(n,o,i){return this._subject.subscribe({next:n,error:o,complete:i})}};e.normalizeQueryParams=Be,e.joinWithSlash=Fa,e.stripTrailingSlash=of,e.\u0275fac=function(o){return new(o||e)(D(He))},e.\u0275prov=v({token:e,factory:()=>ID(),providedIn:"root"});let t=e;return t})();function ID(){return new an(D(He))}function CD(t,e){if(!t||!e.startsWith(t))return e;let r=e.substring(t.length);return r===""||["/",";","?","#"].includes(r[0])?r:e}function sf(t){return t.replace(/\/index.html$/,"")}function ED(t){if(new RegExp("^(https?:)?//").test(t)){let[,r]=t.split(/\/\/[^\/]+/);return r}return t}function xo(t,e){e=encodeURIComponent(e);for(let r of t.split(";")){let n=r.indexOf("="),[o,i]=n==-1?[r,""]:[r.slice(0,n),r.slice(n+1)];if(o.trim()===e)return decodeURIComponent(i)}return null}var NE=(()=>{let e=class e{constructor(n,o){this._viewContainer=n,this._context=new Aa,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=o}set ngIf(n){this._context.$implicit=this._context.ngIf=n,this._updateView()}set ngIfThen(n){af("ngIfThen",n),this._thenTemplateRef=n,this._thenViewRef=null,this._updateView()}set ngIfElse(n){af("ngIfElse",n),this._elseTemplateRef=n,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(n,o){return!0}};e.\u0275fac=function(o){return new(o||e)(L(Re),L(Xe))},e.\u0275dir=Ve({type:e,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0});let t=e;return t})(),Aa=class{constructor(){this.$implicit=null,this.ngIf=null}};function af(t,e){if(!!!(!e||e.createEmbeddedView))throw new Error(`${t} must be a TemplateRef, but received '${X(e)}'.`)}var MD=!0,_o=class{constructor(e,r){this._viewContainerRef=e,this._templateRef=r,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(e){e&&!this._created?this.create():!e&&this._created&&this.destroy()}},gf=(()=>{let e=class e{constructor(){this._defaultViews=[],this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(n){this._ngSwitch=n,this._caseCount===0&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(n){this._defaultViews.push(n)}_matchCase(n){let o=MD?n===this._ngSwitch:n==this._ngSwitch;return this._lastCasesMatched||=o,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),o}_updateDefaultCases(n){if(this._defaultViews.length>0&&n!==this._defaultUsed){this._defaultUsed=n;for(let o of this._defaultViews)o.enforceState(n)}}};e.\u0275fac=function(o){return new(o||e)},e.\u0275dir=Ve({type:e,selectors:[["","ngSwitch",""]],inputs:{ngSwitch:"ngSwitch"},standalone:!0});let t=e;return t})(),AE=(()=>{let e=class e{constructor(n,o,i){this.ngSwitch=i,i._addCase(),this._view=new _o(n,o)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}};e.\u0275fac=function(o){return new(o||e)(L(Re),L(Xe),L(gf,9))},e.\u0275dir=Ve({type:e,selectors:[["","ngSwitchCase",""]],inputs:{ngSwitchCase:"ngSwitchCase"},standalone:!0});let t=e;return t})(),RE=(()=>{let e=class e{constructor(n,o,i){i._addDefault(new _o(n,o))}};e.\u0275fac=function(o){return new(o||e)(L(Re),L(Xe),L(gf,9))},e.\u0275dir=Ve({type:e,selectors:[["","ngSwitchDefault",""]],standalone:!0});let t=e;return t})();var _E=(()=>{let e=class e{constructor(n){this._viewContainerRef=n,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(n){if(this._shouldRecreateView(n)){let o=this._viewContainerRef;if(this._viewRef&&o.remove(o.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let i=this._createContextForwardProxy();this._viewRef=o.createEmbeddedView(this.ngTemplateOutlet,i,{injector:this.ngTemplateOutletInjector??void 0})}}_shouldRecreateView(n){return!!n.ngTemplateOutlet||!!n.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(n,o,i)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,o,i):!1,get:(n,o,i)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,o,i)}})}};e.\u0275fac=function(o){return new(o||e)(L(Re))},e.\u0275dir=Ve({type:e,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[Kt]});let t=e;return t})();function bD(t,e){return new y(2100,!1)}var Ra=class{createSubscription(e,r){return Na(()=>e.subscribe({next:r,error:n=>{throw n}}))}dispose(e){Na(()=>e.unsubscribe())}},_a=class{createSubscription(e,r){return e.then(r,n=>{throw n})}dispose(e){}},TD=new _a,SD=new Ra,xE=(()=>{let e=class e{constructor(n){this._latestValue=null,this.markForCheckOnValueUpdate=!0,this._subscription=null,this._obj=null,this._strategy=null,this._ref=n}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(n){if(!this._obj){if(n)try{this.markForCheckOnValueUpdate=!1,this._subscribe(n)}finally{this.markForCheckOnValueUpdate=!0}return this._latestValue}return n!==this._obj?(this._dispose(),this.transform(n)):this._latestValue}_subscribe(n){this._obj=n,this._strategy=this._selectStrategy(n),this._subscription=this._strategy.createSubscription(n,o=>this._updateLatestValue(n,o))}_selectStrategy(n){if(tn(n))return TD;if(ba(n))return SD;throw bD(e,n)}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(n,o){n===this._obj&&(this._latestValue=o,this.markForCheckOnValueUpdate&&this._ref?.markForCheck())}};e.\u0275fac=function(o){return new(o||e)(L(rn,16))},e.\u0275pipe=no({name:"async",type:e,pure:!1,standalone:!0});let t=e;return t})();var OE=(()=>{let e=class e{transform(n){return JSON.stringify(n,null,2)}};e.\u0275fac=function(o){return new(o||e)},e.\u0275pipe=no({name:"json",type:e,pure:!1,standalone:!0});let t=e;return t})();function ND(t,e){return{key:t,value:e}}var PE=(()=>{let e=class e{constructor(n){this.differs=n,this.keyValues=[],this.compareFn=uf}transform(n,o=uf){if(!n||!(n instanceof Map)&&typeof n!="object")return null;this.differ??=this.differs.find(n).create();let i=this.differ.diff(n),s=o!==this.compareFn;return i&&(this.keyValues=[],i.forEachItem(a=>{this.keyValues.push(ND(a.key,a.currentValue))})),(i||s)&&(this.keyValues.sort(o),this.compareFn=o),this.keyValues}};e.\u0275fac=function(o){return new(o||e)(L(Sa,16))},e.\u0275pipe=no({name:"keyvalue",type:e,pure:!1,standalone:!0});let t=e;return t})();function uf(t,e){let r=t.key,n=e.key;if(r===n)return 0;if(r===void 0)return 1;if(n===void 0)return-1;if(r===null)return 1;if(n===null)return-1;if(typeof r=="string"&&typeof n=="string")return r{let e=class e{};e.\u0275fac=function(o){return new(o||e)},e.\u0275mod=Et({type:e}),e.\u0275inj=et({});let t=e;return t})(),La="browser",RD="server";function _D(t){return t===La}function Oo(t){return t===RD}var mf=(()=>{let e=class e{};e.\u0275prov=v({token:e,providedIn:"root",factory:()=>_D(p(Ne))?new xa(p(Y),window):new Oa});let t=e;return t})(),xa=class{constructor(e,r){this.document=e,this.window=r,this.offset=()=>[0,0]}setOffset(e){Array.isArray(e)?this.offset=()=>e:this.offset=e}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(e){this.window.scrollTo(e[0],e[1])}scrollToAnchor(e){let r=xD(this.document,e);r&&(this.scrollToElement(r),r.focus())}setHistoryScrollRestoration(e){this.window.history.scrollRestoration=e}scrollToElement(e){let r=e.getBoundingClientRect(),n=r.left+this.window.pageXOffset,o=r.top+this.window.pageYOffset,i=this.offset();this.window.scrollTo(n-i[0],o-i[1])}};function xD(t,e){let r=t.getElementById(e)||t.getElementsByName(e)[0];if(r)return r;if(typeof t.createTreeWalker=="function"&&t.body&&typeof t.body.attachShadow=="function"){let n=t.createTreeWalker(t.body,NodeFilter.SHOW_ELEMENT),o=n.currentNode;for(;o;){let i=o.shadowRoot;if(i){let s=i.getElementById(e)||i.querySelector(`[name="${e}"]`);if(s)return s}o=n.nextNode()}}return null}var Oa=class{setOffset(e){}getScrollPosition(){return[0,0]}scrollToPosition(e){}scrollToAnchor(e){}setHistoryScrollRestoration(e){}},sn=class{};var qn=class{},Fo=class{},Tt=class t{constructor(e){this.normalizedNames=new Map,this.lazyUpdate=null,e?typeof e=="string"?this.lazyInit=()=>{this.headers=new Map,e.split(` +`).forEach(r=>{let n=r.indexOf(":");if(n>0){let o=r.slice(0,n),i=o.toLowerCase(),s=r.slice(n+1).trim();this.maybeSetNormalizedName(o,i),this.headers.has(i)?this.headers.get(i).push(s):this.headers.set(i,[s])}})}:typeof Headers<"u"&&e instanceof Headers?(this.headers=new Map,e.forEach((r,n)=>{this.setHeaderEntries(n,r)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(e).forEach(([r,n])=>{this.setHeaderEntries(r,n)})}:this.headers=new Map}has(e){return this.init(),this.headers.has(e.toLowerCase())}get(e){this.init();let r=this.headers.get(e.toLowerCase());return r&&r.length>0?r[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(e){return this.init(),this.headers.get(e.toLowerCase())||null}append(e,r){return this.clone({name:e,value:r,op:"a"})}set(e,r){return this.clone({name:e,value:r,op:"s"})}delete(e,r){return this.clone({name:e,value:r,op:"d"})}maybeSetNormalizedName(e,r){this.normalizedNames.has(r)||this.normalizedNames.set(r,e)}init(){this.lazyInit&&(this.lazyInit instanceof t?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(e=>this.applyUpdate(e)),this.lazyUpdate=null))}copyFrom(e){e.init(),Array.from(e.headers.keys()).forEach(r=>{this.headers.set(r,e.headers.get(r)),this.normalizedNames.set(r,e.normalizedNames.get(r))})}clone(e){let r=new t;return r.lazyInit=this.lazyInit&&this.lazyInit instanceof t?this.lazyInit:this,r.lazyUpdate=(this.lazyUpdate||[]).concat([e]),r}applyUpdate(e){let r=e.name.toLowerCase();switch(e.op){case"a":case"s":let n=e.value;if(typeof n=="string"&&(n=[n]),n.length===0)return;this.maybeSetNormalizedName(e.name,r);let o=(e.op==="a"?this.headers.get(r):void 0)||[];o.push(...n),this.headers.set(r,o);break;case"d":let i=e.value;if(!i)this.headers.delete(r),this.normalizedNames.delete(r);else{let s=this.headers.get(r);if(!s)return;s=s.filter(a=>i.indexOf(a)===-1),s.length===0?(this.headers.delete(r),this.normalizedNames.delete(r)):this.headers.set(r,s)}break}}setHeaderEntries(e,r){let n=(Array.isArray(r)?r:[r]).map(i=>i.toString()),o=e.toLowerCase();this.headers.set(o,n),this.maybeSetNormalizedName(e,o)}forEach(e){this.init(),Array.from(this.normalizedNames.keys()).forEach(r=>e(this.normalizedNames.get(r),this.headers.get(r)))}};var Va=class{encodeKey(e){return yf(e)}encodeValue(e){return yf(e)}decodeKey(e){return decodeURIComponent(e)}decodeValue(e){return decodeURIComponent(e)}};function FD(t,e){let r=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(o=>{let i=o.indexOf("="),[s,a]=i==-1?[e.decodeKey(o),""]:[e.decodeKey(o.slice(0,i)),e.decodeValue(o.slice(i+1))],u=r.get(s)||[];u.push(a),r.set(s,u)}),r}var kD=/%(\d[a-f0-9])/gi,LD={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function yf(t){return encodeURIComponent(t).replace(kD,(e,r)=>LD[r]??e)}function Po(t){return`${t}`}var it=class t{constructor(e={}){if(this.updates=null,this.cloneFrom=null,this.encoder=e.encoder||new Va,e.fromString){if(e.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=FD(e.fromString,this.encoder)}else e.fromObject?(this.map=new Map,Object.keys(e.fromObject).forEach(r=>{let n=e.fromObject[r],o=Array.isArray(n)?n.map(Po):[Po(n)];this.map.set(r,o)})):this.map=null}has(e){return this.init(),this.map.has(e)}get(e){this.init();let r=this.map.get(e);return r?r[0]:null}getAll(e){return this.init(),this.map.get(e)||null}keys(){return this.init(),Array.from(this.map.keys())}append(e,r){return this.clone({param:e,value:r,op:"a"})}appendAll(e){let r=[];return Object.keys(e).forEach(n=>{let o=e[n];Array.isArray(o)?o.forEach(i=>{r.push({param:n,value:i,op:"a"})}):r.push({param:n,value:o,op:"a"})}),this.clone(r)}set(e,r){return this.clone({param:e,value:r,op:"s"})}delete(e,r){return this.clone({param:e,value:r,op:"d"})}toString(){return this.init(),this.keys().map(e=>{let r=this.encoder.encodeKey(e);return this.map.get(e).map(n=>r+"="+this.encoder.encodeValue(n)).join("&")}).filter(e=>e!=="").join("&")}clone(e){let r=new t({encoder:this.encoder});return r.cloneFrom=this.cloneFrom||this,r.updates=(this.updates||[]).concat(e),r}init(){this.map===null&&(this.map=new Map),this.cloneFrom!==null&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(e=>this.map.set(e,this.cloneFrom.map.get(e))),this.updates.forEach(e=>{switch(e.op){case"a":case"s":let r=(e.op==="a"?this.map.get(e.param):void 0)||[];r.push(Po(e.value)),this.map.set(e.param,r);break;case"d":if(e.value!==void 0){let n=this.map.get(e.param)||[],o=n.indexOf(Po(e.value));o!==-1&&n.splice(o,1),n.length>0?this.map.set(e.param,n):this.map.delete(e.param)}else{this.map.delete(e.param);break}}}),this.cloneFrom=this.updates=null)}};var $a=class{constructor(){this.map=new Map}set(e,r){return this.map.set(e,r),this}get(e){return this.map.has(e)||this.map.set(e,e.defaultValue()),this.map.get(e)}delete(e){return this.map.delete(e),this}has(e){return this.map.has(e)}keys(){return this.map.keys()}};function jD(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}function Df(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function wf(t){return typeof Blob<"u"&&t instanceof Blob}function If(t){return typeof FormData<"u"&&t instanceof FormData}function VD(t){return typeof URLSearchParams<"u"&&t instanceof URLSearchParams}var zn=class t{constructor(e,r,n,o){this.url=r,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=e.toUpperCase();let i;if(jD(this.method)||o?(this.body=n!==void 0?n:null,i=o):i=n,i&&(this.reportProgress=!!i.reportProgress,this.withCredentials=!!i.withCredentials,i.responseType&&(this.responseType=i.responseType),i.headers&&(this.headers=i.headers),i.context&&(this.context=i.context),i.params&&(this.params=i.params),this.transferCache=i.transferCache),this.headers??=new Tt,this.context??=new $a,!this.params)this.params=new it,this.urlWithParams=r;else{let s=this.params.toString();if(s.length===0)this.urlWithParams=r;else{let a=r.indexOf("?"),u=a===-1?"?":af.set(h,e.setHeaders[h]),c)),e.setParams&&(l=Object.keys(e.setParams).reduce((f,h)=>f.set(h,e.setParams[h]),l)),new t(r,n,s,{params:l,headers:c,context:d,reportProgress:u,responseType:o,withCredentials:a,transferCache:i})}},un=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}(un||{}),Gn=class{constructor(e,r=jo.Ok,n="OK"){this.headers=e.headers||new Tt,this.status=e.status!==void 0?e.status:r,this.statusText=e.statusText||n,this.url=e.url||null,this.ok=this.status>=200&&this.status<300}},Ua=class t extends Gn{constructor(e={}){super(e),this.type=un.ResponseHeader}clone(e={}){return new t({headers:e.headers||this.headers,status:e.status!==void 0?e.status:this.status,statusText:e.statusText||this.statusText,url:e.url||this.url||void 0})}},ko=class t extends Gn{constructor(e={}){super(e),this.type=un.Response,this.body=e.body!==void 0?e.body:null}clone(e={}){return new t({body:e.body!==void 0?e.body:this.body,headers:e.headers||this.headers,status:e.status!==void 0?e.status:this.status,statusText:e.statusText||this.statusText,url:e.url||this.url||void 0})}},Lo=class extends Gn{constructor(e){super(e,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${e.url||"(unknown url)"}`:this.message=`Http failure response for ${e.url||"(unknown url)"}: ${e.status} ${e.statusText}`,this.error=e.error||null}},jo=function(t){return t[t.Continue=100]="Continue",t[t.SwitchingProtocols=101]="SwitchingProtocols",t[t.Processing=102]="Processing",t[t.EarlyHints=103]="EarlyHints",t[t.Ok=200]="Ok",t[t.Created=201]="Created",t[t.Accepted=202]="Accepted",t[t.NonAuthoritativeInformation=203]="NonAuthoritativeInformation",t[t.NoContent=204]="NoContent",t[t.ResetContent=205]="ResetContent",t[t.PartialContent=206]="PartialContent",t[t.MultiStatus=207]="MultiStatus",t[t.AlreadyReported=208]="AlreadyReported",t[t.ImUsed=226]="ImUsed",t[t.MultipleChoices=300]="MultipleChoices",t[t.MovedPermanently=301]="MovedPermanently",t[t.Found=302]="Found",t[t.SeeOther=303]="SeeOther",t[t.NotModified=304]="NotModified",t[t.UseProxy=305]="UseProxy",t[t.Unused=306]="Unused",t[t.TemporaryRedirect=307]="TemporaryRedirect",t[t.PermanentRedirect=308]="PermanentRedirect",t[t.BadRequest=400]="BadRequest",t[t.Unauthorized=401]="Unauthorized",t[t.PaymentRequired=402]="PaymentRequired",t[t.Forbidden=403]="Forbidden",t[t.NotFound=404]="NotFound",t[t.MethodNotAllowed=405]="MethodNotAllowed",t[t.NotAcceptable=406]="NotAcceptable",t[t.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",t[t.RequestTimeout=408]="RequestTimeout",t[t.Conflict=409]="Conflict",t[t.Gone=410]="Gone",t[t.LengthRequired=411]="LengthRequired",t[t.PreconditionFailed=412]="PreconditionFailed",t[t.PayloadTooLarge=413]="PayloadTooLarge",t[t.UriTooLong=414]="UriTooLong",t[t.UnsupportedMediaType=415]="UnsupportedMediaType",t[t.RangeNotSatisfiable=416]="RangeNotSatisfiable",t[t.ExpectationFailed=417]="ExpectationFailed",t[t.ImATeapot=418]="ImATeapot",t[t.MisdirectedRequest=421]="MisdirectedRequest",t[t.UnprocessableEntity=422]="UnprocessableEntity",t[t.Locked=423]="Locked",t[t.FailedDependency=424]="FailedDependency",t[t.TooEarly=425]="TooEarly",t[t.UpgradeRequired=426]="UpgradeRequired",t[t.PreconditionRequired=428]="PreconditionRequired",t[t.TooManyRequests=429]="TooManyRequests",t[t.RequestHeaderFieldsTooLarge=431]="RequestHeaderFieldsTooLarge",t[t.UnavailableForLegalReasons=451]="UnavailableForLegalReasons",t[t.InternalServerError=500]="InternalServerError",t[t.NotImplemented=501]="NotImplemented",t[t.BadGateway=502]="BadGateway",t[t.ServiceUnavailable=503]="ServiceUnavailable",t[t.GatewayTimeout=504]="GatewayTimeout",t[t.HttpVersionNotSupported=505]="HttpVersionNotSupported",t[t.VariantAlsoNegotiates=506]="VariantAlsoNegotiates",t[t.InsufficientStorage=507]="InsufficientStorage",t[t.LoopDetected=508]="LoopDetected",t[t.NotExtended=510]="NotExtended",t[t.NetworkAuthenticationRequired=511]="NetworkAuthenticationRequired",t}(jo||{});function ja(t,e){return{body:e,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials,transferCache:t.transferCache}}var $D=(()=>{let e=class e{constructor(n){this.handler=n}request(n,o,i={}){let s;if(n instanceof zn)s=n;else{let c;i.headers instanceof Tt?c=i.headers:c=new Tt(i.headers);let l;i.params&&(i.params instanceof it?l=i.params:l=new it({fromObject:i.params})),s=new zn(n,o,i.body!==void 0?i.body:null,{headers:c,context:i.context,params:l,reportProgress:i.reportProgress,responseType:i.responseType||"json",withCredentials:i.withCredentials,transferCache:i.transferCache})}let a=w(s).pipe(We(c=>this.handler.handle(c)));if(n instanceof zn||i.observe==="events")return a;let u=a.pipe(Pe(c=>c instanceof ko));switch(i.observe||"body"){case"body":switch(s.responseType){case"arraybuffer":return u.pipe(x(c=>{if(c.body!==null&&!(c.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return c.body}));case"blob":return u.pipe(x(c=>{if(c.body!==null&&!(c.body instanceof Blob))throw new Error("Response is not a Blob.");return c.body}));case"text":return u.pipe(x(c=>{if(c.body!==null&&typeof c.body!="string")throw new Error("Response is not a string.");return c.body}));case"json":default:return u.pipe(x(c=>c.body))}case"response":return u;default:throw new Error(`Unreachable: unhandled observe type ${i.observe}}`)}}delete(n,o={}){return this.request("DELETE",n,o)}get(n,o={}){return this.request("GET",n,o)}head(n,o={}){return this.request("HEAD",n,o)}jsonp(n,o){return this.request("JSONP",n,{params:new it().append(o,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(n,o={}){return this.request("OPTIONS",n,o)}patch(n,o,i={}){return this.request("PATCH",n,ja(i,o))}post(n,o,i={}){return this.request("POST",n,ja(i,o))}put(n,o,i={}){return this.request("PUT",n,ja(i,o))}};e.\u0275fac=function(o){return new(o||e)(D(qn))},e.\u0275prov=v({token:e,factory:e.\u0275fac});let t=e;return t})();function bf(t,e){return e(t)}function UD(t,e){return(r,n)=>e.intercept(r,{handle:o=>t(o,n)})}function BD(t,e,r){return(n,o)=>De(r,()=>e(n,i=>t(i,o)))}var HD=new E(""),Ba=new E(""),zD=new E(""),qD=new E("");function GD(){let t=null;return(e,r)=>{t===null&&(t=(p(HD,{optional:!0})??[]).reduceRight(UD,bf));let n=p(bt),o=n.add();return t(e,r).pipe(ft(()=>n.remove(o)))}}var Cf=(()=>{let e=class e extends qn{constructor(n,o){super(),this.backend=n,this.injector=o,this.chain=null,this.pendingTasks=p(bt);let i=p(qD,{optional:!0});this.backend=i??n}handle(n){if(this.chain===null){let i=Array.from(new Set([...this.injector.get(Ba),...this.injector.get(zD,[])]));this.chain=i.reduceRight((s,a)=>BD(s,a,this.injector),bf)}let o=this.pendingTasks.add();return this.chain(n,i=>this.backend.handle(i)).pipe(ft(()=>this.pendingTasks.remove(o)))}};e.\u0275fac=function(o){return new(o||e)(D(Fo),D(Q))},e.\u0275prov=v({token:e,factory:e.\u0275fac});let t=e;return t})();var WD=/^\)\]\}',?\n/;function ZD(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}var Ef=(()=>{let e=class e{constructor(n){this.xhrFactory=n}handle(n){if(n.method==="JSONP")throw new y(-2800,!1);let o=this.xhrFactory;return(o.\u0275loadImpl?K(o.\u0275loadImpl()):w(null)).pipe(ie(()=>new Fu(s=>{let a=o.build();if(a.open(n.method,n.urlWithParams),n.withCredentials&&(a.withCredentials=!0),n.headers.forEach((I,M)=>a.setRequestHeader(I,M.join(","))),n.headers.has("Accept")||a.setRequestHeader("Accept","application/json, text/plain, */*"),!n.headers.has("Content-Type")){let I=n.detectContentTypeHeader();I!==null&&a.setRequestHeader("Content-Type",I)}if(n.responseType){let I=n.responseType.toLowerCase();a.responseType=I!=="json"?I:"text"}let u=n.serializeBody(),c=null,l=()=>{if(c!==null)return c;let I=a.statusText||"OK",M=new Tt(a.getAllResponseHeaders()),q=ZD(a)||n.url;return c=new Ua({headers:M,status:a.status,statusText:I,url:q}),c},d=()=>{let{headers:I,status:M,statusText:q,url:B}=l(),F=null;M!==jo.NoContent&&(F=typeof a.response>"u"?a.responseText:a.response),M===0&&(M=F?jo.Ok:0);let Ie=M>=200&&M<300;if(n.responseType==="json"&&typeof F=="string"){let re=F;F=F.replace(WD,"");try{F=F!==""?JSON.parse(F):null}catch(qe){F=re,Ie&&(Ie=!1,F={error:qe,text:F})}}Ie?(s.next(new ko({body:F,headers:I,status:M,statusText:q,url:B||void 0})),s.complete()):s.error(new Lo({error:F,headers:I,status:M,statusText:q,url:B||void 0}))},f=I=>{let{url:M}=l(),q=new Lo({error:I,status:a.status||0,statusText:a.statusText||"Unknown Error",url:M||void 0});s.error(q)},h=!1,g=I=>{h||(s.next(l()),h=!0);let M={type:un.DownloadProgress,loaded:I.loaded};I.lengthComputable&&(M.total=I.total),n.responseType==="text"&&a.responseText&&(M.partialText=a.responseText),s.next(M)},S=I=>{let M={type:un.UploadProgress,loaded:I.loaded};I.lengthComputable&&(M.total=I.total),s.next(M)};return a.addEventListener("load",d),a.addEventListener("error",f),a.addEventListener("timeout",f),a.addEventListener("abort",f),n.reportProgress&&(a.addEventListener("progress",g),u!==null&&a.upload&&a.upload.addEventListener("progress",S)),a.send(u),s.next({type:un.Sent}),()=>{a.removeEventListener("error",f),a.removeEventListener("abort",f),a.removeEventListener("load",d),a.removeEventListener("timeout",f),n.reportProgress&&(a.removeEventListener("progress",g),u!==null&&a.upload&&a.upload.removeEventListener("progress",S)),a.readyState!==a.DONE&&a.abort()}})))}};e.\u0275fac=function(o){return new(o||e)(D(sn))},e.\u0275prov=v({token:e,factory:e.\u0275fac});let t=e;return t})(),Tf=new E(""),QD="XSRF-TOKEN",YD=new E("",{providedIn:"root",factory:()=>QD}),KD="X-XSRF-TOKEN",XD=new E("",{providedIn:"root",factory:()=>KD}),Vo=class{},JD=(()=>{let e=class e{constructor(n,o,i){this.doc=n,this.platform=o,this.cookieName=i,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if(this.platform==="server")return null;let n=this.doc.cookie||"";return n!==this.lastCookieString&&(this.parseCount++,this.lastToken=xo(n,this.cookieName),this.lastCookieString=n),this.lastToken}};e.\u0275fac=function(o){return new(o||e)(D(Y),D(Ne),D(YD))},e.\u0275prov=v({token:e,factory:e.\u0275fac});let t=e;return t})();function ew(t,e){let r=t.url.toLowerCase();if(!p(Tf)||t.method==="GET"||t.method==="HEAD"||r.startsWith("http://")||r.startsWith("https://"))return e(t);let n=p(Vo).getToken(),o=p(XD);return n!=null&&!t.headers.has(o)&&(t=t.clone({headers:t.headers.set(o,n)})),e(t)}var Sf=function(t){return t[t.Interceptors=0]="Interceptors",t[t.LegacyInterceptors=1]="LegacyInterceptors",t[t.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",t[t.NoXsrfProtection=3]="NoXsrfProtection",t[t.JsonpSupport=4]="JsonpSupport",t[t.RequestsMadeViaParent=5]="RequestsMadeViaParent",t[t.Fetch=6]="Fetch",t}(Sf||{});function tw(t,e){return{\u0275kind:t,\u0275providers:e}}function nw(...t){let e=[$D,Ef,Cf,{provide:qn,useExisting:Cf},{provide:Fo,useExisting:Ef},{provide:Ba,useValue:ew,multi:!0},{provide:Tf,useValue:!0},{provide:Vo,useClass:JD}];for(let r of t)e.push(...r.\u0275providers);return Zt(e)}var Mf=new E("");function rw(){return tw(Sf.LegacyInterceptors,[{provide:Mf,useFactory:GD},{provide:Ba,useExisting:Mf,multi:!0}])}var WE=(()=>{let e=class e{};e.\u0275fac=function(o){return new(o||e)},e.\u0275mod=Et({type:e}),e.\u0275inj=et({providers:[nw(rw())]});let t=e;return t})();var qa=class extends Ro{constructor(){super(...arguments),this.supportsDOMEvents=!0}},Ga=class t extends qa{static makeCurrent(){df(new t)}onAndCancel(e,r,n){return e.addEventListener(r,n),()=>{e.removeEventListener(r,n)}}dispatchEvent(e,r){e.dispatchEvent(r)}remove(e){e.parentNode&&e.parentNode.removeChild(e)}createElement(e,r){return r=r||this.getDefaultDocument(),r.createElement(e)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}isShadowRoot(e){return e instanceof DocumentFragment}getGlobalEventTarget(e,r){return r==="window"?window:r==="document"?e:r==="body"?e.body:null}getBaseHref(e){let r=ow();return r==null?null:iw(r)}resetBaseElement(){Wn=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return xo(document.cookie,e)}},Wn=null;function ow(){return Wn=Wn||document.querySelector("base"),Wn?Wn.getAttribute("href"):null}function iw(t){return new URL(t,document.baseURI).pathname}var sw=(()=>{let e=class e{build(){return new XMLHttpRequest}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac});let t=e;return t})(),Wa=new E(""),_f=(()=>{let e=class e{constructor(n,o){this._zone=o,this._eventNameToPlugin=new Map,n.forEach(i=>{i.manager=this}),this._plugins=n.slice().reverse()}addEventListener(n,o,i){return this._findPluginFor(o).addEventListener(n,o,i)}getZone(){return this._zone}_findPluginFor(n){let o=this._eventNameToPlugin.get(n);if(o)return o;if(o=this._plugins.find(s=>s.supports(n)),!o)throw new y(5101,!1);return this._eventNameToPlugin.set(n,o),o}};e.\u0275fac=function(o){return new(o||e)(D(Wa),D(k))},e.\u0275prov=v({token:e,factory:e.\u0275fac});let t=e;return t})(),$o=class{constructor(e){this._doc=e}},Ha="ng-app-id",xf=(()=>{let e=class e{constructor(n,o,i,s={}){this.doc=n,this.appId=o,this.nonce=i,this.platformId=s,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=Oo(s),this.resetHostNodes()}addStyles(n){for(let o of n)this.changeUsageCount(o,1)===1&&this.onStyleAdded(o)}removeStyles(n){for(let o of n)this.changeUsageCount(o,-1)<=0&&this.onStyleRemoved(o)}ngOnDestroy(){let n=this.styleNodesInDOM;n&&(n.forEach(o=>o.remove()),n.clear());for(let o of this.getAllStyles())this.onStyleRemoved(o);this.resetHostNodes()}addHost(n){this.hostNodes.add(n);for(let o of this.getAllStyles())this.addStyleToHost(n,o)}removeHost(n){this.hostNodes.delete(n)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(n){for(let o of this.hostNodes)this.addStyleToHost(o,n)}onStyleRemoved(n){let o=this.styleRef;o.get(n)?.elements?.forEach(i=>i.remove()),o.delete(n)}collectServerRenderedStyles(){let n=this.doc.head?.querySelectorAll(`style[${Ha}="${this.appId}"]`);if(n?.length){let o=new Map;return n.forEach(i=>{i.textContent!=null&&o.set(i.textContent,i)}),o}return null}changeUsageCount(n,o){let i=this.styleRef;if(i.has(n)){let s=i.get(n);return s.usage+=o,s.usage}return i.set(n,{usage:o,elements:[]}),o}getStyleElement(n,o){let i=this.styleNodesInDOM,s=i?.get(o);if(s?.parentNode===n)return i.delete(o),s.removeAttribute(Ha),s;{let a=this.doc.createElement("style");return this.nonce&&a.setAttribute("nonce",this.nonce),a.textContent=o,this.platformIsServer&&a.setAttribute(Ha,this.appId),n.appendChild(a),a}}addStyleToHost(n,o){let i=this.getStyleElement(n,o),s=this.styleRef,a=s.get(o)?.elements;a?a.push(i):s.set(o,{elements:[i],usage:1})}resetHostNodes(){let n=this.hostNodes;n.clear(),n.add(this.doc.head)}};e.\u0275fac=function(o){return new(o||e)(D(Y),D(ta),D(ra,8),D(Ne))},e.\u0275prov=v({token:e,factory:e.\u0275fac});let t=e;return t})(),za={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},Qa=/%COMP%/g,Of="%COMP%",aw=`_nghost-${Of}`,uw=`_ngcontent-${Of}`,cw=!0,lw=new E("",{providedIn:"root",factory:()=>cw});function dw(t){return uw.replace(Qa,t)}function fw(t){return aw.replace(Qa,t)}function Pf(t,e){return e.map(r=>r.replace(Qa,t))}var Nf=(()=>{let e=class e{constructor(n,o,i,s,a,u,c,l=null){this.eventManager=n,this.sharedStylesHost=o,this.appId=i,this.removeStylesOnCompDestroy=s,this.doc=a,this.platformId=u,this.ngZone=c,this.nonce=l,this.rendererByCompId=new Map,this.platformIsServer=Oo(u),this.defaultRenderer=new Zn(n,a,c,this.platformIsServer)}createRenderer(n,o){if(!n||!o)return this.defaultRenderer;this.platformIsServer&&o.encapsulation===Me.ShadowDom&&(o=j(m({},o),{encapsulation:Me.Emulated}));let i=this.getOrCreateRenderer(n,o);return i instanceof Uo?i.applyToHost(n):i instanceof Qn&&i.applyStyles(),i}getOrCreateRenderer(n,o){let i=this.rendererByCompId,s=i.get(o.id);if(!s){let a=this.doc,u=this.ngZone,c=this.eventManager,l=this.sharedStylesHost,d=this.removeStylesOnCompDestroy,f=this.platformIsServer;switch(o.encapsulation){case Me.Emulated:s=new Uo(c,l,o,this.appId,d,a,u,f);break;case Me.ShadowDom:return new Za(c,l,n,o,a,u,this.nonce,f);default:s=new Qn(c,l,o,d,a,u,f);break}i.set(o.id,s)}return s}ngOnDestroy(){this.rendererByCompId.clear()}};e.\u0275fac=function(o){return new(o||e)(D(_f),D(xf),D(ta),D(lw),D(Y),D(Ne),D(k),D(ra))},e.\u0275prov=v({token:e,factory:e.\u0275fac});let t=e;return t})(),Zn=class{constructor(e,r,n,o){this.eventManager=e,this.doc=r,this.ngZone=n,this.platformIsServer=o,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(e,r){return r?this.doc.createElementNS(za[r]||r,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,r){(Af(e)?e.content:e).appendChild(r)}insertBefore(e,r,n){e&&(Af(e)?e.content:e).insertBefore(r,n)}removeChild(e,r){e&&e.removeChild(r)}selectRootElement(e,r){let n=typeof e=="string"?this.doc.querySelector(e):e;if(!n)throw new y(-5104,!1);return r||(n.textContent=""),n}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,r,n,o){if(o){r=o+":"+r;let i=za[o];i?e.setAttributeNS(i,r,n):e.setAttribute(r,n)}else e.setAttribute(r,n)}removeAttribute(e,r,n){if(n){let o=za[n];o?e.removeAttributeNS(o,r):e.removeAttribute(`${n}:${r}`)}else e.removeAttribute(r)}addClass(e,r){e.classList.add(r)}removeClass(e,r){e.classList.remove(r)}setStyle(e,r,n,o){o&(je.DashCase|je.Important)?e.style.setProperty(r,n,o&je.Important?"important":""):e.style[r]=n}removeStyle(e,r,n){n&je.DashCase?e.style.removeProperty(r):e.style[r]=""}setProperty(e,r,n){e!=null&&(e[r]=n)}setValue(e,r){e.nodeValue=r}listen(e,r,n){if(typeof e=="string"&&(e=on().getGlobalEventTarget(this.doc,e),!e))throw new Error(`Unsupported event target ${e} for event ${r}`);return this.eventManager.addEventListener(e,r,this.decoratePreventDefault(n))}decoratePreventDefault(e){return r=>{if(r==="__ngUnwrap__")return e;(this.platformIsServer?this.ngZone.runGuarded(()=>e(r)):e(r))===!1&&r.preventDefault()}}};function Af(t){return t.tagName==="TEMPLATE"&&t.content!==void 0}var Za=class extends Zn{constructor(e,r,n,o,i,s,a,u){super(e,i,s,u),this.sharedStylesHost=r,this.hostEl=n,this.shadowRoot=n.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);let c=Pf(o.id,o.styles);for(let l of c){let d=document.createElement("style");a&&d.setAttribute("nonce",a),d.textContent=l,this.shadowRoot.appendChild(d)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,r){return super.appendChild(this.nodeOrShadowRoot(e),r)}insertBefore(e,r,n){return super.insertBefore(this.nodeOrShadowRoot(e),r,n)}removeChild(e,r){return super.removeChild(this.nodeOrShadowRoot(e),r)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}},Qn=class extends Zn{constructor(e,r,n,o,i,s,a,u){super(e,i,s,a),this.sharedStylesHost=r,this.removeStylesOnCompDestroy=o,this.styles=u?Pf(u,n.styles):n.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}},Uo=class extends Qn{constructor(e,r,n,o,i,s,a,u){let c=o+"-"+n.id;super(e,r,n,i,s,a,u,c),this.contentAttr=dw(c),this.hostAttr=fw(c)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,"")}createElement(e,r){let n=super.createElement(e,r);return super.setAttribute(n,this.contentAttr,""),n}},hw=(()=>{let e=class e extends $o{constructor(n){super(n)}supports(n){return!0}addEventListener(n,o,i){return n.addEventListener(o,i,!1),()=>this.removeEventListener(n,o,i)}removeEventListener(n,o,i){return n.removeEventListener(o,i)}};e.\u0275fac=function(o){return new(o||e)(D(Y))},e.\u0275prov=v({token:e,factory:e.\u0275fac});let t=e;return t})(),Rf=["alt","control","meta","shift"],pw={"\b":"Backspace"," ":"Tab","\x7F":"Delete","\x1B":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},gw={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey},mw=(()=>{let e=class e extends $o{constructor(n){super(n)}supports(n){return e.parseEventName(n)!=null}addEventListener(n,o,i){let s=e.parseEventName(o),a=e.eventCallback(s.fullKey,i,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>on().onAndCancel(n,s.domEventName,a))}static parseEventName(n){let o=n.toLowerCase().split("."),i=o.shift();if(o.length===0||!(i==="keydown"||i==="keyup"))return null;let s=e._normalizeKey(o.pop()),a="",u=o.indexOf("code");if(u>-1&&(o.splice(u,1),a="code."),Rf.forEach(l=>{let d=o.indexOf(l);d>-1&&(o.splice(d,1),a+=l+".")}),a+=s,o.length!=0||s.length===0)return null;let c={};return c.domEventName=i,c.fullKey=a,c}static matchEventFullKeyCode(n,o){let i=pw[n.key]||n.key,s="";return o.indexOf("code.")>-1&&(i=n.code,s="code."),i==null||!i?!1:(i=i.toLowerCase(),i===" "?i="space":i==="."&&(i="dot"),Rf.forEach(a=>{if(a!==i){let u=gw[a];u(n)&&(s+=a+".")}}),s+=i,s===o)}static eventCallback(n,o,i){return s=>{e.matchEventFullKeyCode(s,n)&&i.runGuarded(()=>o(s))}}static _normalizeKey(n){return n==="esc"?"escape":n}};e.\u0275fac=function(o){return new(o||e)(D(Y))},e.\u0275prov=v({token:e,factory:e.\u0275fac});let t=e;return t})();function vM(t,e){return nf(m({rootComponent:t},vw(e)))}function vw(t){return{appProviders:[...Cw,...t?.providers??[]],platformProviders:Iw}}function yw(){Ga.makeCurrent()}function Dw(){return new Te}function ww(){return Yl(document),document}var Iw=[{provide:Ne,useValue:La},{provide:na,useValue:yw,multi:!0},{provide:Y,useFactory:ww,deps:[]}];var Cw=[{provide:ro,useValue:"root"},{provide:Te,useFactory:Dw,deps:[]},{provide:Wa,useClass:hw,multi:!0,deps:[Y,k,Ne]},{provide:Wa,useClass:mw,multi:!0,deps:[Y]},Nf,xf,_f,{provide:On,useExisting:Nf},{provide:sn,useClass:sw,deps:[]},[]];var Ff=(()=>{let e=class e{constructor(n){this._doc=n}getTitle(){return this._doc.title}setTitle(n){this._doc.title=n||""}};e.\u0275fac=function(o){return new(o||e)(D(Y))},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var T="primary",dr=Symbol("RouteTitle"),eu=class{constructor(e){this.params=e||{}}has(e){return Object.prototype.hasOwnProperty.call(this.params,e)}get(e){if(this.has(e)){let r=this.params[e];return Array.isArray(r)?r[0]:r}return null}getAll(e){if(this.has(e)){let r=this.params[e];return Array.isArray(r)?r:[r]}return[]}get keys(){return Object.keys(this.params)}};function hn(t){return new eu(t)}function Mw(t,e,r){let n=r.path.split("/");if(n.length>t.length||r.pathMatch==="full"&&(e.hasChildren()||n.lengthn[i]===o)}else return t===e}function qf(t){return t.length>0?t[t.length-1]:null}function lt(t){return ku(t)?t:tn(t)?K(Promise.resolve(t)):w(t)}var Tw={exact:Wf,subset:Zf},Gf={exact:Sw,subset:Nw,ignored:()=>!0};function kf(t,e,r){return Tw[r.paths](t.root,e.root,r.matrixParams)&&Gf[r.queryParams](t.queryParams,e.queryParams)&&!(r.fragment==="exact"&&t.fragment!==e.fragment)}function Sw(t,e){return _e(t,e)}function Wf(t,e,r){if(!Nt(t.segments,e.segments)||!zo(t.segments,e.segments,r)||t.numberOfChildren!==e.numberOfChildren)return!1;for(let n in e.children)if(!t.children[n]||!Wf(t.children[n],e.children[n],r))return!1;return!0}function Nw(t,e){return Object.keys(e).length<=Object.keys(t).length&&Object.keys(e).every(r=>zf(t[r],e[r]))}function Zf(t,e,r){return Qf(t,e,e.segments,r)}function Qf(t,e,r,n){if(t.segments.length>r.length){let o=t.segments.slice(0,r.length);return!(!Nt(o,r)||e.hasChildren()||!zo(o,r,n))}else if(t.segments.length===r.length){if(!Nt(t.segments,r)||!zo(t.segments,r,n))return!1;for(let o in e.children)if(!t.children[o]||!Zf(t.children[o],e.children[o],n))return!1;return!0}else{let o=r.slice(0,t.segments.length),i=r.slice(t.segments.length);return!Nt(t.segments,o)||!zo(t.segments,o,n)||!t.children[T]?!1:Qf(t.children[T],e,i,n)}}function zo(t,e,r){return e.every((n,o)=>Gf[r](t[o].parameters,n.parameters))}var st=class{constructor(e=new O([],{}),r={},n=null){this.root=e,this.queryParams=r,this.fragment=n}get queryParamMap(){return this._queryParamMap??=hn(this.queryParams),this._queryParamMap}toString(){return _w.serialize(this)}},O=class{constructor(e,r){this.segments=e,this.children=r,this.parent=null,Object.values(r).forEach(n=>n.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return qo(this)}},St=class{constructor(e,r){this.path=e,this.parameters=r}get parameterMap(){return this._parameterMap??=hn(this.parameters),this._parameterMap}toString(){return Kf(this)}};function Aw(t,e){return Nt(t,e)&&t.every((r,n)=>_e(r.parameters,e[n].parameters))}function Nt(t,e){return t.length!==e.length?!1:t.every((r,n)=>r.path===e[n].path)}function Rw(t,e){let r=[];return Object.entries(t.children).forEach(([n,o])=>{n===T&&(r=r.concat(e(o,n)))}),Object.entries(t.children).forEach(([n,o])=>{n!==T&&(r=r.concat(e(o,n)))}),r}var fr=(()=>{let e=class e{};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:()=>new nr,providedIn:"root"});let t=e;return t})(),nr=class{parse(e){let r=new ru(e);return new st(r.parseRootSegment(),r.parseQueryParams(),r.parseFragment())}serialize(e){let r=`/${Yn(e.root,!0)}`,n=Pw(e.queryParams),o=typeof e.fragment=="string"?`#${xw(e.fragment)}`:"";return`${r}${n}${o}`}},_w=new nr;function qo(t){return t.segments.map(e=>Kf(e)).join("/")}function Yn(t,e){if(!t.hasChildren())return qo(t);if(e){let r=t.children[T]?Yn(t.children[T],!1):"",n=[];return Object.entries(t.children).forEach(([o,i])=>{o!==T&&n.push(`${o}:${Yn(i,!1)}`)}),n.length>0?`${r}(${n.join("//")})`:r}else{let r=Rw(t,(n,o)=>o===T?[Yn(t.children[T],!1)]:[`${o}:${Yn(n,!1)}`]);return Object.keys(t.children).length===1&&t.children[T]!=null?`${qo(t)}/${r[0]}`:`${qo(t)}/(${r.join("//")})`}}function Yf(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Bo(t){return Yf(t).replace(/%3B/gi,";")}function xw(t){return encodeURI(t)}function nu(t){return Yf(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Go(t){return decodeURIComponent(t)}function Lf(t){return Go(t.replace(/\+/g,"%20"))}function Kf(t){return`${nu(t.path)}${Ow(t.parameters)}`}function Ow(t){return Object.entries(t).map(([e,r])=>`;${nu(e)}=${nu(r)}`).join("")}function Pw(t){let e=Object.entries(t).map(([r,n])=>Array.isArray(n)?n.map(o=>`${Bo(r)}=${Bo(o)}`).join("&"):`${Bo(r)}=${Bo(n)}`).filter(r=>r);return e.length?`?${e.join("&")}`:""}var Fw=/^[^\/()?;#]+/;function Ya(t){let e=t.match(Fw);return e?e[0]:""}var kw=/^[^\/()?;=#]+/;function Lw(t){let e=t.match(kw);return e?e[0]:""}var jw=/^[^=?&#]+/;function Vw(t){let e=t.match(jw);return e?e[0]:""}var $w=/^[^&#]+/;function Uw(t){let e=t.match($w);return e?e[0]:""}var ru=class{constructor(e){this.url=e,this.remaining=e}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new O([],{}):new O([],this.parseChildren())}parseQueryParams(){let e={};if(this.consumeOptional("?"))do this.parseQueryParam(e);while(this.consumeOptional("&"));return e}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(this.remaining==="")return{};this.consumeOptional("/");let e=[];for(this.peekStartsWith("(")||e.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),e.push(this.parseSegment());let r={};this.peekStartsWith("/(")&&(this.capture("/"),r=this.parseParens(!0));let n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(e.length>0||Object.keys(r).length>0)&&(n[T]=new O(e,r)),n}parseSegment(){let e=Ya(this.remaining);if(e===""&&this.peekStartsWith(";"))throw new y(4009,!1);return this.capture(e),new St(Go(e),this.parseMatrixParams())}parseMatrixParams(){let e={};for(;this.consumeOptional(";");)this.parseParam(e);return e}parseParam(e){let r=Lw(this.remaining);if(!r)return;this.capture(r);let n="";if(this.consumeOptional("=")){let o=Ya(this.remaining);o&&(n=o,this.capture(n))}e[Go(r)]=Go(n)}parseQueryParam(e){let r=Vw(this.remaining);if(!r)return;this.capture(r);let n="";if(this.consumeOptional("=")){let s=Uw(this.remaining);s&&(n=s,this.capture(n))}let o=Lf(r),i=Lf(n);if(e.hasOwnProperty(o)){let s=e[o];Array.isArray(s)||(s=[s],e[o]=s),s.push(i)}else e[o]=i}parseParens(e){let r={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let n=Ya(this.remaining),o=this.remaining[n.length];if(o!=="/"&&o!==")"&&o!==";")throw new y(4010,!1);let i;n.indexOf(":")>-1?(i=n.slice(0,n.indexOf(":")),this.capture(i),this.capture(":")):e&&(i=T);let s=this.parseChildren();r[i]=Object.keys(s).length===1?s[T]:new O([],s),this.consumeOptional("//")}return r}peekStartsWith(e){return this.remaining.startsWith(e)}consumeOptional(e){return this.peekStartsWith(e)?(this.remaining=this.remaining.substring(e.length),!0):!1}capture(e){if(!this.consumeOptional(e))throw new y(4011,!1)}};function Xf(t){return t.segments.length>0?new O([],{[T]:t}):t}function Jf(t){let e={};for(let[n,o]of Object.entries(t.children)){let i=Jf(o);if(n===T&&i.segments.length===0&&i.hasChildren())for(let[s,a]of Object.entries(i.children))e[s]=a;else(i.segments.length>0||i.hasChildren())&&(e[n]=i)}let r=new O(t.segments,e);return Bw(r)}function Bw(t){if(t.numberOfChildren===1&&t.children[T]){let e=t.children[T];return new O(t.segments.concat(e.segments),e.children)}return t}function pn(t){return t instanceof st}function Hw(t,e,r=null,n=null){let o=eh(t);return th(o,e,r,n)}function eh(t){let e;function r(i){let s={};for(let u of i.children){let c=r(u);s[u.outlet]=c}let a=new O(i.url,s);return i===t&&(e=a),a}let n=r(t.root),o=Xf(n);return e??o}function th(t,e,r,n){let o=t;for(;o.parent;)o=o.parent;if(e.length===0)return Ka(o,o,o,r,n);let i=zw(e);if(i.toRoot())return Ka(o,o,new O([],{}),r,n);let s=qw(i,o,t),a=s.processChildren?Jn(s.segmentGroup,s.index,i.commands):rh(s.segmentGroup,s.index,i.commands);return Ka(o,s.segmentGroup,a,r,n)}function Wo(t){return typeof t=="object"&&t!=null&&!t.outlets&&!t.segmentPath}function rr(t){return typeof t=="object"&&t!=null&&t.outlets}function Ka(t,e,r,n,o){let i={};n&&Object.entries(n).forEach(([u,c])=>{i[u]=Array.isArray(c)?c.map(l=>`${l}`):`${c}`});let s;t===e?s=r:s=nh(t,e,r);let a=Xf(Jf(s));return new st(a,i,o)}function nh(t,e,r){let n={};return Object.entries(t.children).forEach(([o,i])=>{i===e?n[o]=r:n[o]=nh(i,e,r)}),new O(t.segments,n)}var Zo=class{constructor(e,r,n){if(this.isAbsolute=e,this.numberOfDoubleDots=r,this.commands=n,e&&n.length>0&&Wo(n[0]))throw new y(4003,!1);let o=n.find(rr);if(o&&o!==qf(n))throw new y(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function zw(t){if(typeof t[0]=="string"&&t.length===1&&t[0]==="/")return new Zo(!0,0,t);let e=0,r=!1,n=t.reduce((o,i,s)=>{if(typeof i=="object"&&i!=null){if(i.outlets){let a={};return Object.entries(i.outlets).forEach(([u,c])=>{a[u]=typeof c=="string"?c.split("/"):c}),[...o,{outlets:a}]}if(i.segmentPath)return[...o,i.segmentPath]}return typeof i!="string"?[...o,i]:s===0?(i.split("/").forEach((a,u)=>{u==0&&a==="."||(u==0&&a===""?r=!0:a===".."?e++:a!=""&&o.push(a))}),o):[...o,i]},[]);return new Zo(r,e,n)}var dn=class{constructor(e,r,n){this.segmentGroup=e,this.processChildren=r,this.index=n}};function qw(t,e,r){if(t.isAbsolute)return new dn(e,!0,0);if(!r)return new dn(e,!1,NaN);if(r.parent===null)return new dn(r,!0,0);let n=Wo(t.commands[0])?0:1,o=r.segments.length-1+n;return Gw(r,o,t.numberOfDoubleDots)}function Gw(t,e,r){let n=t,o=e,i=r;for(;i>o;){if(i-=o,n=n.parent,!n)throw new y(4005,!1);o=n.segments.length}return new dn(n,!1,o-i)}function Ww(t){return rr(t[0])?t[0].outlets:{[T]:t}}function rh(t,e,r){if(t??=new O([],{}),t.segments.length===0&&t.hasChildren())return Jn(t,e,r);let n=Zw(t,e,r),o=r.slice(n.commandIndex);if(n.match&&n.pathIndexi!==T)&&t.children[T]&&t.numberOfChildren===1&&t.children[T].segments.length===0){let i=Jn(t.children[T],e,r);return new O(t.segments,i.children)}return Object.entries(n).forEach(([i,s])=>{typeof s=="string"&&(s=[s]),s!==null&&(o[i]=rh(t.children[i],e,s))}),Object.entries(t.children).forEach(([i,s])=>{n[i]===void 0&&(o[i]=s)}),new O(t.segments,o)}}function Zw(t,e,r){let n=0,o=e,i={match:!1,pathIndex:0,commandIndex:0};for(;o=r.length)return i;let s=t.segments[o],a=r[n];if(rr(a))break;let u=`${a}`,c=n0&&u===void 0)break;if(u&&c&&typeof c=="object"&&c.outlets===void 0){if(!Vf(u,c,s))return i;n+=2}else{if(!Vf(u,{},s))return i;n++}o++}return{match:!0,pathIndex:o,commandIndex:n}}function ou(t,e,r){let n=t.segments.slice(0,e),o=0;for(;o{typeof n=="string"&&(n=[n]),n!==null&&(e[r]=ou(new O([],{}),0,n))}),e}function jf(t){let e={};return Object.entries(t).forEach(([r,n])=>e[r]=`${n}`),e}function Vf(t,e,r){return t==r.path&&_e(e,r.parameters)}var er="imperative",U=function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t}(U||{}),fe=class{constructor(e,r){this.id=e,this.url=r}},gn=class extends fe{constructor(e,r,n="imperative",o=null){super(e,r),this.type=U.NavigationStart,this.navigationTrigger=n,this.restoredState=o}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},xe=class extends fe{constructor(e,r,n){super(e,r),this.urlAfterRedirects=n,this.type=U.NavigationEnd}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},ue=function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t}(ue||{}),Qo=function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t}(Qo||{}),at=class extends fe{constructor(e,r,n,o){super(e,r),this.reason=n,this.code=o,this.type=U.NavigationCancel}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}},ut=class extends fe{constructor(e,r,n,o){super(e,r),this.reason=n,this.code=o,this.type=U.NavigationSkipped}},or=class extends fe{constructor(e,r,n,o){super(e,r),this.error=n,this.target=o,this.type=U.NavigationError}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},Yo=class extends fe{constructor(e,r,n,o){super(e,r),this.urlAfterRedirects=n,this.state=o,this.type=U.RoutesRecognized}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},iu=class extends fe{constructor(e,r,n,o){super(e,r),this.urlAfterRedirects=n,this.state=o,this.type=U.GuardsCheckStart}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},su=class extends fe{constructor(e,r,n,o,i){super(e,r),this.urlAfterRedirects=n,this.state=o,this.shouldActivate=i,this.type=U.GuardsCheckEnd}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},au=class extends fe{constructor(e,r,n,o){super(e,r),this.urlAfterRedirects=n,this.state=o,this.type=U.ResolveStart}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},uu=class extends fe{constructor(e,r,n,o){super(e,r),this.urlAfterRedirects=n,this.state=o,this.type=U.ResolveEnd}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},cu=class{constructor(e){this.route=e,this.type=U.RouteConfigLoadStart}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},lu=class{constructor(e){this.route=e,this.type=U.RouteConfigLoadEnd}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},du=class{constructor(e){this.snapshot=e,this.type=U.ChildActivationStart}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},fu=class{constructor(e){this.snapshot=e,this.type=U.ChildActivationEnd}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},hu=class{constructor(e){this.snapshot=e,this.type=U.ActivationStart}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},pu=class{constructor(e){this.snapshot=e,this.type=U.ActivationEnd}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Ko=class{constructor(e,r,n){this.routerEvent=e,this.position=r,this.anchor=n,this.type=U.Scroll}toString(){let e=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${e}')`}},ir=class{},sr=class{constructor(e){this.url=e}};var gu=class{constructor(){this.outlet=null,this.route=null,this.injector=null,this.children=new hr,this.attachRef=null}},hr=(()=>{let e=class e{constructor(){this.contexts=new Map}onChildOutletCreated(n,o){let i=this.getOrCreateContext(n);i.outlet=o,this.contexts.set(n,i)}onChildOutletDestroyed(n){let o=this.getContext(n);o&&(o.outlet=null,o.attachRef=null)}onOutletDeactivated(){let n=this.contexts;return this.contexts=new Map,n}onOutletReAttached(n){this.contexts=n}getOrCreateContext(n){let o=this.getContext(n);return o||(o=new gu,this.contexts.set(n,o)),o}getContext(n){return this.contexts.get(n)||null}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),Xo=class{constructor(e){this._root=e}get root(){return this._root.value}parent(e){let r=this.pathFromRoot(e);return r.length>1?r[r.length-2]:null}children(e){let r=mu(e,this._root);return r?r.children.map(n=>n.value):[]}firstChild(e){let r=mu(e,this._root);return r&&r.children.length>0?r.children[0].value:null}siblings(e){let r=vu(e,this._root);return r.length<2?[]:r[r.length-2].children.map(o=>o.value).filter(o=>o!==e)}pathFromRoot(e){return vu(e,this._root).map(r=>r.value)}};function mu(t,e){if(t===e.value)return e;for(let r of e.children){let n=mu(t,r);if(n)return n}return null}function vu(t,e){if(t===e.value)return[e];for(let r of e.children){let n=vu(t,r);if(n.length)return n.unshift(e),n}return[]}var ae=class{constructor(e,r){this.value=e,this.children=r}toString(){return`TreeNode(${this.value})`}};function ln(t){let e={};return t&&t.children.forEach(r=>e[r.value.outlet]=r),e}var Jo=class extends Xo{constructor(e,r){super(e),this.snapshot=r,Su(this,e)}toString(){return this.snapshot.toString()}};function oh(t){let e=Yw(t),r=new te([new St("",{})]),n=new te({}),o=new te({}),i=new te({}),s=new te(""),a=new ct(r,n,i,s,o,T,t,e.root);return a.snapshot=e.root,new Jo(new ae(a,[]),e)}function Yw(t){let e={},r={},n={},o="",i=new ar([],e,n,o,r,T,t,null,{});return new ei("",new ae(i,[]))}var ct=class{constructor(e,r,n,o,i,s,a,u){this.urlSubject=e,this.paramsSubject=r,this.queryParamsSubject=n,this.fragmentSubject=o,this.dataSubject=i,this.outlet=s,this.component=a,this._futureSnapshot=u,this.title=this.dataSubject?.pipe(x(c=>c[dr]))??w(void 0),this.url=e,this.params=r,this.queryParams=n,this.fragment=o,this.data=i}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(x(e=>hn(e))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(x(e=>hn(e))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function Tu(t,e,r="emptyOnly"){let n,{routeConfig:o}=t;return e!==null&&(r==="always"||o?.path===""||!e.component&&!e.routeConfig?.loadComponent)?n={params:m(m({},e.params),t.params),data:m(m({},e.data),t.data),resolve:m(m(m(m({},t.data),e.data),o?.data),t._resolvedData)}:n={params:m({},t.params),data:m({},t.data),resolve:m(m({},t.data),t._resolvedData??{})},o&&sh(o)&&(n.resolve[dr]=o.title),n}var ar=class{get title(){return this.data?.[dr]}constructor(e,r,n,o,i,s,a,u,c){this.url=e,this.params=r,this.queryParams=n,this.fragment=o,this.data=i,this.outlet=s,this.component=a,this.routeConfig=u,this._resolve=c}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=hn(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=hn(this.queryParams),this._queryParamMap}toString(){let e=this.url.map(n=>n.toString()).join("/"),r=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${e}', path:'${r}')`}},ei=class extends Xo{constructor(e,r){super(r),this.url=e,Su(this,r)}toString(){return ih(this._root)}};function Su(t,e){e.value._routerState=t,e.children.forEach(r=>Su(t,r))}function ih(t){let e=t.children.length>0?` { ${t.children.map(ih).join(", ")} } `:"";return`${t.value}${e}`}function Xa(t){if(t.snapshot){let e=t.snapshot,r=t._futureSnapshot;t.snapshot=r,_e(e.queryParams,r.queryParams)||t.queryParamsSubject.next(r.queryParams),e.fragment!==r.fragment&&t.fragmentSubject.next(r.fragment),_e(e.params,r.params)||t.paramsSubject.next(r.params),bw(e.url,r.url)||t.urlSubject.next(r.url),_e(e.data,r.data)||t.dataSubject.next(r.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function yu(t,e){let r=_e(t.params,e.params)&&Aw(t.url,e.url),n=!t.parent!=!e.parent;return r&&!n&&(!t.parent||yu(t.parent,e.parent))}function sh(t){return typeof t.title=="string"||t.title===null}var Kw=(()=>{let e=class e{constructor(){this.activated=null,this._activatedRoute=null,this.name=T,this.activateEvents=new le,this.deactivateEvents=new le,this.attachEvents=new le,this.detachEvents=new le,this.parentContexts=p(hr),this.location=p(Re),this.changeDetector=p(rn),this.environmentInjector=p(Q),this.inputBinder=p(oi,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(n){if(n.name){let{firstChange:o,previousValue:i}=n.name;if(o)return;this.isTrackedInParentContexts(i)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(i)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(n){return this.parentContexts.getContext(n)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let n=this.parentContexts.getContext(this.name);n?.route&&(n.attachRef?this.attach(n.attachRef,n.route):this.activateWith(n.route,n.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new y(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new y(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new y(4012,!1);this.location.detach();let n=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(n.instance),n}attach(n,o){this.activated=n,this._activatedRoute=o,this.location.insert(n.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(n.instance)}deactivate(){if(this.activated){let n=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(n)}}activateWith(n,o){if(this.isActivated)throw new y(4013,!1);this._activatedRoute=n;let i=this.location,a=n.snapshot.component,u=this.parentContexts.getOrCreateContext(this.name).children,c=new Du(n,u,i.injector);this.activated=i.createComponent(a,{index:i.length,injector:c,environmentInjector:o??this.environmentInjector}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}};e.\u0275fac=function(o){return new(o||e)},e.\u0275dir=Ve({type:e,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[Kt]});let t=e;return t})(),Du=class t{__ngOutletInjector(e){return new t(this.route,this.childContexts,e)}constructor(e,r,n){this.route=e,this.childContexts=r,this.parent=n}get(e,r){return e===ct?this.route:e===hr?this.childContexts:this.parent.get(e,r)}},oi=new E(""),$f=(()=>{let e=class e{constructor(){this.outletDataSubscriptions=new Map}bindActivatedRouteToOutletComponent(n){this.unsubscribeFromRouteData(n),this.subscribeToRouteData(n)}unsubscribeFromRouteData(n){this.outletDataSubscriptions.get(n)?.unsubscribe(),this.outletDataSubscriptions.delete(n)}subscribeToRouteData(n){let{activatedRoute:o}=n,i=Dr([o.queryParams,o.params,o.data]).pipe(ie(([s,a,u],c)=>(u=m(m(m({},s),a),u),c===0?w(u):Promise.resolve(u)))).subscribe(s=>{if(!n.isActivated||!n.activatedComponentRef||n.activatedRoute!==o||o.component===null){this.unsubscribeFromRouteData(n);return}let a=rf(o.component);if(!a){this.unsubscribeFromRouteData(n);return}for(let{templateName:u}of a.inputs)n.activatedComponentRef.setInput(u,s[u])});this.outletDataSubscriptions.set(n,i)}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac});let t=e;return t})();function Xw(t,e,r){let n=ur(t,e._root,r?r._root:void 0);return new Jo(n,e)}function ur(t,e,r){if(r&&t.shouldReuseRoute(e.value,r.value.snapshot)){let n=r.value;n._futureSnapshot=e.value;let o=Jw(t,e,r);return new ae(n,o)}else{if(t.shouldAttach(e.value)){let i=t.retrieve(e.value);if(i!==null){let s=i.route;return s.value._futureSnapshot=e.value,s.children=e.children.map(a=>ur(t,a)),s}}let n=eI(e.value),o=e.children.map(i=>ur(t,i));return new ae(n,o)}}function Jw(t,e,r){return e.children.map(n=>{for(let o of r.children)if(t.shouldReuseRoute(n.value,o.value.snapshot))return ur(t,n,o);return ur(t,n)})}function eI(t){return new ct(new te(t.url),new te(t.params),new te(t.queryParams),new te(t.fragment),new te(t.data),t.outlet,t.component,t)}var ah="ngNavigationCancelingError";function uh(t,e){let{redirectTo:r,navigationBehaviorOptions:n}=pn(e)?{redirectTo:e,navigationBehaviorOptions:void 0}:e,o=ch(!1,ue.Redirect);return o.url=r,o.navigationBehaviorOptions=n,o}function ch(t,e){let r=new Error(`NavigationCancelingError: ${t||""}`);return r[ah]=!0,r.cancellationCode=e,r}function tI(t){return lh(t)&&pn(t.url)}function lh(t){return!!t&&t[ah]}var nI=(()=>{let e=class e{};e.\u0275fac=function(o){return new(o||e)},e.\u0275cmp=Xc({type:e,selectors:[["ng-component"]],standalone:!0,features:[Yd],decls:1,vars:0,template:function(o,i){o&1&&Ea(0,"router-outlet")},dependencies:[Kw],encapsulation:2});let t=e;return t})();function rI(t,e){return t.providers&&!t._injector&&(t._injector=bo(t.providers,e,`Route: ${t.path}`)),t._injector??e}function Nu(t){let e=t.children&&t.children.map(Nu),r=e?j(m({},t),{children:e}):m({},t);return!r.component&&!r.loadComponent&&(e||r.loadChildren)&&r.outlet&&r.outlet!==T&&(r.component=nI),r}function Oe(t){return t.outlet||T}function oI(t,e){let r=t.filter(n=>Oe(n)===e);return r.push(...t.filter(n=>Oe(n)!==e)),r}function pr(t){if(!t)return null;if(t.routeConfig?._injector)return t.routeConfig._injector;for(let e=t.parent;e;e=e.parent){let r=e.routeConfig;if(r?._loadedInjector)return r._loadedInjector;if(r?._injector)return r._injector}return null}var iI=(t,e,r,n)=>x(o=>(new wu(e,o.targetRouterState,o.currentRouterState,r,n).activate(t),o)),wu=class{constructor(e,r,n,o,i){this.routeReuseStrategy=e,this.futureState=r,this.currState=n,this.forwardEvent=o,this.inputBindingEnabled=i}activate(e){let r=this.futureState._root,n=this.currState?this.currState._root:null;this.deactivateChildRoutes(r,n,e),Xa(this.futureState.root),this.activateChildRoutes(r,n,e)}deactivateChildRoutes(e,r,n){let o=ln(r);e.children.forEach(i=>{let s=i.value.outlet;this.deactivateRoutes(i,o[s],n),delete o[s]}),Object.values(o).forEach(i=>{this.deactivateRouteAndItsChildren(i,n)})}deactivateRoutes(e,r,n){let o=e.value,i=r?r.value:null;if(o===i)if(o.component){let s=n.getContext(o.outlet);s&&this.deactivateChildRoutes(e,r,s.children)}else this.deactivateChildRoutes(e,r,n);else i&&this.deactivateRouteAndItsChildren(r,n)}deactivateRouteAndItsChildren(e,r){e.value.component&&this.routeReuseStrategy.shouldDetach(e.value.snapshot)?this.detachAndStoreRouteSubtree(e,r):this.deactivateRouteAndOutlet(e,r)}detachAndStoreRouteSubtree(e,r){let n=r.getContext(e.value.outlet),o=n&&e.value.component?n.children:r,i=ln(e);for(let s of Object.values(i))this.deactivateRouteAndItsChildren(s,o);if(n&&n.outlet){let s=n.outlet.detach(),a=n.children.onOutletDeactivated();this.routeReuseStrategy.store(e.value.snapshot,{componentRef:s,route:e,contexts:a})}}deactivateRouteAndOutlet(e,r){let n=r.getContext(e.value.outlet),o=n&&e.value.component?n.children:r,i=ln(e);for(let s of Object.values(i))this.deactivateRouteAndItsChildren(s,o);n&&(n.outlet&&(n.outlet.deactivate(),n.children.onOutletDeactivated()),n.attachRef=null,n.route=null)}activateChildRoutes(e,r,n){let o=ln(r);e.children.forEach(i=>{this.activateRoutes(i,o[i.value.outlet],n),this.forwardEvent(new pu(i.value.snapshot))}),e.children.length&&this.forwardEvent(new fu(e.value.snapshot))}activateRoutes(e,r,n){let o=e.value,i=r?r.value:null;if(Xa(o),o===i)if(o.component){let s=n.getOrCreateContext(o.outlet);this.activateChildRoutes(e,r,s.children)}else this.activateChildRoutes(e,r,n);else if(o.component){let s=n.getOrCreateContext(o.outlet);if(this.routeReuseStrategy.shouldAttach(o.snapshot)){let a=this.routeReuseStrategy.retrieve(o.snapshot);this.routeReuseStrategy.store(o.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),Xa(a.route.value),this.activateChildRoutes(e,null,s.children)}else{let a=pr(o.snapshot);s.attachRef=null,s.route=o,s.injector=a,s.outlet&&s.outlet.activateWith(o,s.injector),this.activateChildRoutes(e,null,s.children)}}else this.activateChildRoutes(e,null,n)}},ti=class{constructor(e){this.path=e,this.route=this.path[this.path.length-1]}},fn=class{constructor(e,r){this.component=e,this.route=r}};function sI(t,e,r){let n=t._root,o=e?e._root:null;return Kn(n,o,r,[n.value])}function aI(t){let e=t.routeConfig?t.routeConfig.canActivateChild:null;return!e||e.length===0?null:{node:t,guards:e}}function vn(t,e){let r=Symbol(),n=e.get(t,r);return n===r?typeof t=="function"&&!Uc(t)?t:e.get(t):n}function Kn(t,e,r,n,o={canDeactivateChecks:[],canActivateChecks:[]}){let i=ln(e);return t.children.forEach(s=>{uI(s,i[s.value.outlet],r,n.concat([s.value]),o),delete i[s.value.outlet]}),Object.entries(i).forEach(([s,a])=>tr(a,r.getContext(s),o)),o}function uI(t,e,r,n,o={canDeactivateChecks:[],canActivateChecks:[]}){let i=t.value,s=e?e.value:null,a=r?r.getContext(t.value.outlet):null;if(s&&i.routeConfig===s.routeConfig){let u=cI(s,i,i.routeConfig.runGuardsAndResolvers);u?o.canActivateChecks.push(new ti(n)):(i.data=s.data,i._resolvedData=s._resolvedData),i.component?Kn(t,e,a?a.children:null,n,o):Kn(t,e,r,n,o),u&&a&&a.outlet&&a.outlet.isActivated&&o.canDeactivateChecks.push(new fn(a.outlet.component,s))}else s&&tr(e,a,o),o.canActivateChecks.push(new ti(n)),i.component?Kn(t,null,a?a.children:null,n,o):Kn(t,null,r,n,o);return o}function cI(t,e,r){if(typeof r=="function")return r(t,e);switch(r){case"pathParamsChange":return!Nt(t.url,e.url);case"pathParamsOrQueryParamsChange":return!Nt(t.url,e.url)||!_e(t.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!yu(t,e)||!_e(t.queryParams,e.queryParams);case"paramsChange":default:return!yu(t,e)}}function tr(t,e,r){let n=ln(t),o=t.value;Object.entries(n).forEach(([i,s])=>{o.component?e?tr(s,e.children.getContext(i),r):tr(s,null,r):tr(s,e,r)}),o.component?e&&e.outlet&&e.outlet.isActivated?r.canDeactivateChecks.push(new fn(e.outlet.component,o)):r.canDeactivateChecks.push(new fn(null,o)):r.canDeactivateChecks.push(new fn(null,o))}function gr(t){return typeof t=="function"}function lI(t){return typeof t=="boolean"}function dI(t){return t&&gr(t.canLoad)}function fI(t){return t&&gr(t.canActivate)}function hI(t){return t&&gr(t.canActivateChild)}function pI(t){return t&&gr(t.canDeactivate)}function gI(t){return t&&gr(t.canMatch)}function dh(t){return t instanceof Lu||t?.name==="EmptyError"}var Ho=Symbol("INITIAL_VALUE");function mn(){return ie(t=>Dr(t.map(e=>e.pipe(At(1),Bu(Ho)))).pipe(x(e=>{for(let r of e)if(r!==!0){if(r===Ho)return Ho;if(r===!1||r instanceof st)return r}return!0}),Pe(e=>e!==Ho),At(1)))}function mI(t,e){return oe(r=>{let{targetSnapshot:n,currentSnapshot:o,guards:{canActivateChecks:i,canDeactivateChecks:s}}=r;return s.length===0&&i.length===0?w(j(m({},r),{guardsResult:!0})):vI(s,n,o,t).pipe(oe(a=>a&&lI(a)?yI(n,i,t,e):w(a)),x(a=>j(m({},r),{guardsResult:a})))})}function vI(t,e,r,n){return K(t).pipe(oe(o=>EI(o.component,o.route,r,e,n)),Fe(o=>o!==!0,!0))}function yI(t,e,r,n){return K(e).pipe(We(o=>ju(wI(o.route.parent,n),DI(o.route,n),CI(t,o.path,r),II(t,o.route,r))),Fe(o=>o!==!0,!0))}function DI(t,e){return t!==null&&e&&e(new hu(t)),w(!0)}function wI(t,e){return t!==null&&e&&e(new du(t)),w(!0)}function II(t,e,r){let n=e.routeConfig?e.routeConfig.canActivate:null;if(!n||n.length===0)return w(!0);let o=n.map(i=>li(()=>{let s=pr(e)??r,a=vn(i,s),u=fI(a)?a.canActivate(e,t):De(s,()=>a(e,t));return lt(u).pipe(Fe())}));return w(o).pipe(mn())}function CI(t,e,r){let n=e[e.length-1],i=e.slice(0,e.length-1).reverse().map(s=>aI(s)).filter(s=>s!==null).map(s=>li(()=>{let a=s.guards.map(u=>{let c=pr(s.node)??r,l=vn(u,c),d=hI(l)?l.canActivateChild(n,t):De(c,()=>l(n,t));return lt(d).pipe(Fe())});return w(a).pipe(mn())}));return w(i).pipe(mn())}function EI(t,e,r,n,o){let i=e&&e.routeConfig?e.routeConfig.canDeactivate:null;if(!i||i.length===0)return w(!0);let s=i.map(a=>{let u=pr(e)??o,c=vn(a,u),l=pI(c)?c.canDeactivate(t,e,r,n):De(u,()=>c(t,e,r,n));return lt(l).pipe(Fe())});return w(s).pipe(mn())}function MI(t,e,r,n){let o=e.canLoad;if(o===void 0||o.length===0)return w(!0);let i=o.map(s=>{let a=vn(s,t),u=dI(a)?a.canLoad(e,r):De(t,()=>a(e,r));return lt(u)});return w(i).pipe(mn(),fh(n))}function fh(t){return Pu(H(e=>{if(pn(e))throw uh(t,e)}),x(e=>e===!0))}function bI(t,e,r,n){let o=e.canMatch;if(!o||o.length===0)return w(!0);let i=o.map(s=>{let a=vn(s,t),u=gI(a)?a.canMatch(e,r):De(t,()=>a(e,r));return lt(u)});return w(i).pipe(mn(),fh(n))}var cr=class{constructor(e){this.segmentGroup=e||null}},ni=class extends Error{constructor(e){super(),this.urlTree=e}};function cn(t){return Dn(new cr(t))}function TI(t){return Dn(new y(4e3,!1))}function SI(t){return Dn(ch(!1,ue.GuardRejected))}var Iu=class{constructor(e,r){this.urlSerializer=e,this.urlTree=r}lineralizeSegments(e,r){let n=[],o=r.root;for(;;){if(n=n.concat(o.segments),o.numberOfChildren===0)return w(n);if(o.numberOfChildren>1||!o.children[T])return TI(e.redirectTo);o=o.children[T]}}applyRedirectCommands(e,r,n){let o=this.applyRedirectCreateUrlTree(r,this.urlSerializer.parse(r),e,n);if(r.startsWith("/"))throw new ni(o);return o}applyRedirectCreateUrlTree(e,r,n,o){let i=this.createSegmentGroup(e,r.root,n,o);return new st(i,this.createQueryParams(r.queryParams,this.urlTree.queryParams),r.fragment)}createQueryParams(e,r){let n={};return Object.entries(e).forEach(([o,i])=>{if(typeof i=="string"&&i.startsWith(":")){let a=i.substring(1);n[o]=r[a]}else n[o]=i}),n}createSegmentGroup(e,r,n,o){let i=this.createSegments(e,r.segments,n,o),s={};return Object.entries(r.children).forEach(([a,u])=>{s[a]=this.createSegmentGroup(e,u,n,o)}),new O(i,s)}createSegments(e,r,n,o){return r.map(i=>i.path.startsWith(":")?this.findPosParam(e,i,o):this.findOrReturn(i,n))}findPosParam(e,r,n){let o=n[r.path.substring(1)];if(!o)throw new y(4001,!1);return o}findOrReturn(e,r){let n=0;for(let o of r){if(o.path===e.path)return r.splice(n),o;n++}return e}},Cu={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function NI(t,e,r,n,o){let i=Au(t,e,r);return i.matched?(n=rI(e,n),bI(n,e,r,o).pipe(x(s=>s===!0?i:m({},Cu)))):w(i)}function Au(t,e,r){if(e.path==="**")return AI(r);if(e.path==="")return e.pathMatch==="full"&&(t.hasChildren()||r.length>0)?m({},Cu):{matched:!0,consumedSegments:[],remainingSegments:r,parameters:{},positionalParamSegments:{}};let o=(e.matcher||Mw)(r,t,e);if(!o)return m({},Cu);let i={};Object.entries(o.posParams??{}).forEach(([a,u])=>{i[a]=u.path});let s=o.consumed.length>0?m(m({},i),o.consumed[o.consumed.length-1].parameters):i;return{matched:!0,consumedSegments:o.consumed,remainingSegments:r.slice(o.consumed.length),parameters:s,positionalParamSegments:o.posParams??{}}}function AI(t){return{matched:!0,parameters:t.length>0?qf(t).parameters:{},consumedSegments:t,remainingSegments:[],positionalParamSegments:{}}}function Uf(t,e,r,n){return r.length>0&&xI(t,r,n)?{segmentGroup:new O(e,_I(n,new O(r,t.children))),slicedSegments:[]}:r.length===0&&OI(t,r,n)?{segmentGroup:new O(t.segments,RI(t,r,n,t.children)),slicedSegments:r}:{segmentGroup:new O(t.segments,t.children),slicedSegments:r}}function RI(t,e,r,n){let o={};for(let i of r)if(ii(t,e,i)&&!n[Oe(i)]){let s=new O([],{});o[Oe(i)]=s}return m(m({},n),o)}function _I(t,e){let r={};r[T]=e;for(let n of t)if(n.path===""&&Oe(n)!==T){let o=new O([],{});r[Oe(n)]=o}return r}function xI(t,e,r){return r.some(n=>ii(t,e,n)&&Oe(n)!==T)}function OI(t,e,r){return r.some(n=>ii(t,e,n))}function ii(t,e,r){return(t.hasChildren()||e.length>0)&&r.pathMatch==="full"?!1:r.path===""}function PI(t,e,r,n){return Oe(t)!==n&&(n===T||!ii(e,r,t))?!1:Au(e,t,r).matched}function FI(t,e,r){return e.length===0&&!t.children[r]}var Eu=class{};function kI(t,e,r,n,o,i,s="emptyOnly"){return new Mu(t,e,r,n,o,s,i).recognize()}var LI=31,Mu=class{constructor(e,r,n,o,i,s,a){this.injector=e,this.configLoader=r,this.rootComponentType=n,this.config=o,this.urlTree=i,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.applyRedirects=new Iu(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(e){return new y(4002,`'${e.segmentGroup}'`)}recognize(){let e=Uf(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(e).pipe(x(r=>{let n=new ar([],Object.freeze({}),Object.freeze(m({},this.urlTree.queryParams)),this.urlTree.fragment,{},T,this.rootComponentType,null,{}),o=new ae(n,r),i=new ei("",o),s=Hw(n,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,i.url=this.urlSerializer.serialize(s),this.inheritParamsAndData(i._root,null),{state:i,tree:s}}))}match(e){return this.processSegmentGroup(this.injector,this.config,e,T).pipe(dt(n=>{if(n instanceof ni)return this.urlTree=n.urlTree,this.match(n.urlTree.root);throw n instanceof cr?this.noMatchError(n):n}))}inheritParamsAndData(e,r){let n=e.value,o=Tu(n,r,this.paramsInheritanceStrategy);n.params=Object.freeze(o.params),n.data=Object.freeze(o.data),e.children.forEach(i=>this.inheritParamsAndData(i,n))}processSegmentGroup(e,r,n,o){return n.segments.length===0&&n.hasChildren()?this.processChildren(e,r,n):this.processSegment(e,r,n,n.segments,o,!0).pipe(x(i=>i instanceof ae?[i]:[]))}processChildren(e,r,n){let o=[];for(let i of Object.keys(n.children))i==="primary"?o.unshift(i):o.push(i);return K(o).pipe(We(i=>{let s=n.children[i],a=oI(r,i);return this.processSegmentGroup(e,a,s,i)}),Uu((i,s)=>(i.push(...s),i)),di(null),$u(),oe(i=>{if(i===null)return cn(n);let s=hh(i);return jI(s),w(s)}))}processSegment(e,r,n,o,i,s){return K(r).pipe(We(a=>this.processSegmentAgainstRoute(a._injector??e,r,a,n,o,i,s).pipe(dt(u=>{if(u instanceof cr)return w(null);throw u}))),Fe(a=>!!a),dt(a=>{if(dh(a))return FI(n,o,i)?w(new Eu):cn(n);throw a}))}processSegmentAgainstRoute(e,r,n,o,i,s,a){return PI(n,o,i,s)?n.redirectTo===void 0?this.matchSegmentAgainstRoute(e,o,n,i,s):this.allowRedirects&&a?this.expandSegmentAgainstRouteUsingRedirect(e,o,r,n,i,s):cn(o):cn(o)}expandSegmentAgainstRouteUsingRedirect(e,r,n,o,i,s){let{matched:a,consumedSegments:u,positionalParamSegments:c,remainingSegments:l}=Au(r,o,i);if(!a)return cn(r);o.redirectTo.startsWith("/")&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>LI&&(this.allowRedirects=!1));let d=this.applyRedirects.applyRedirectCommands(u,o.redirectTo,c);return this.applyRedirects.lineralizeSegments(o,d).pipe(oe(f=>this.processSegment(e,n,r,f.concat(l),s,!1)))}matchSegmentAgainstRoute(e,r,n,o,i){let s=NI(r,n,o,e,this.urlSerializer);return n.path==="**"&&(r.children={}),s.pipe(ie(a=>a.matched?(e=n._injector??e,this.getChildConfig(e,n,o).pipe(ie(({routes:u})=>{let c=n._loadedInjector??e,{consumedSegments:l,remainingSegments:d,parameters:f}=a,h=new ar(l,f,Object.freeze(m({},this.urlTree.queryParams)),this.urlTree.fragment,$I(n),Oe(n),n.component??n._loadedComponent??null,n,UI(n)),{segmentGroup:g,slicedSegments:S}=Uf(r,l,d,u);if(S.length===0&&g.hasChildren())return this.processChildren(c,u,g).pipe(x(M=>M===null?null:new ae(h,M)));if(u.length===0&&S.length===0)return w(new ae(h,[]));let I=Oe(n)===i;return this.processSegment(c,u,g,S,I?T:i,!0).pipe(x(M=>new ae(h,M instanceof ae?[M]:[])))}))):cn(r)))}getChildConfig(e,r,n){return r.children?w({routes:r.children,injector:e}):r.loadChildren?r._loadedRoutes!==void 0?w({routes:r._loadedRoutes,injector:r._loadedInjector}):MI(e,r,n,this.urlSerializer).pipe(oe(o=>o?this.configLoader.loadChildren(e,r).pipe(H(i=>{r._loadedRoutes=i.routes,r._loadedInjector=i.injector})):SI(r))):w({routes:[],injector:e})}};function jI(t){t.sort((e,r)=>e.value.outlet===T?-1:r.value.outlet===T?1:e.value.outlet.localeCompare(r.value.outlet))}function VI(t){let e=t.value.routeConfig;return e&&e.path===""}function hh(t){let e=[],r=new Set;for(let n of t){if(!VI(n)){e.push(n);continue}let o=e.find(i=>n.value.routeConfig===i.value.routeConfig);o!==void 0?(o.children.push(...n.children),r.add(o)):e.push(n)}for(let n of r){let o=hh(n.children);e.push(new ae(n.value,o))}return e.filter(n=>!r.has(n))}function $I(t){return t.data||{}}function UI(t){return t.resolve||{}}function BI(t,e,r,n,o,i){return oe(s=>kI(t,e,r,n,s.extractedUrl,o,i).pipe(x(({state:a,tree:u})=>j(m({},s),{targetSnapshot:a,urlAfterRedirects:u}))))}function HI(t,e){return oe(r=>{let{targetSnapshot:n,guards:{canActivateChecks:o}}=r;if(!o.length)return w(r);let i=new Set(o.map(u=>u.route)),s=new Set;for(let u of i)if(!s.has(u))for(let c of ph(u))s.add(c);let a=0;return K(s).pipe(We(u=>i.has(u)?zI(u,n,t,e):(u.data=Tu(u,u.parent,t).resolve,w(void 0))),H(()=>a++),fi(1),oe(u=>a===s.size?w(r):Ge))})}function ph(t){let e=t.children.map(r=>ph(r)).flat();return[t,...e]}function zI(t,e,r,n){let o=t.routeConfig,i=t._resolve;return o?.title!==void 0&&!sh(o)&&(i[dr]=o.title),qI(i,t,e,n).pipe(x(s=>(t._resolvedData=s,t.data=Tu(t,t.parent,r).resolve,null)))}function qI(t,e,r,n){let o=tu(t);if(o.length===0)return w({});let i={};return K(o).pipe(oe(s=>GI(t[s],e,r,n).pipe(Fe(),H(a=>{i[s]=a}))),fi(1),Vu(i),dt(s=>dh(s)?Ge:Dn(s)))}function GI(t,e,r,n){let o=pr(e)??n,i=vn(t,o),s=i.resolve?i.resolve(e,r):De(o,()=>i(e,r));return lt(s)}function Ja(t){return ie(e=>{let r=t(e);return r?K(r).pipe(x(()=>e)):w(e)})}var gh=(()=>{let e=class e{buildTitle(n){let o,i=n.root;for(;i!==void 0;)o=this.getResolvedTitleForRoute(i)??o,i=i.children.find(s=>s.outlet===T);return o}getResolvedTitleForRoute(n){return n.data[dr]}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:()=>p(WI),providedIn:"root"});let t=e;return t})(),WI=(()=>{let e=class e extends gh{constructor(n){super(),this.title=n}updateTitle(n){let o=this.buildTitle(n);o!==void 0&&this.title.setTitle(o)}};e.\u0275fac=function(o){return new(o||e)(D(Ff))},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),mr=new E("",{providedIn:"root",factory:()=>({})}),lr=new E(""),Ru=(()=>{let e=class e{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=p(No)}loadComponent(n){if(this.componentLoaders.get(n))return this.componentLoaders.get(n);if(n._loadedComponent)return w(n._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(n);let o=lt(n.loadComponent()).pipe(x(mh),H(s=>{this.onLoadEndListener&&this.onLoadEndListener(n),n._loadedComponent=s}),ft(()=>{this.componentLoaders.delete(n)})),i=new ui(o,()=>new ce).pipe(ai());return this.componentLoaders.set(n,i),i}loadChildren(n,o){if(this.childrenLoaders.get(o))return this.childrenLoaders.get(o);if(o._loadedRoutes)return w({routes:o._loadedRoutes,injector:o._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(o);let s=ZI(o,this.compiler,n,this.onLoadEndListener).pipe(ft(()=>{this.childrenLoaders.delete(o)})),a=new ui(s,()=>new ce).pipe(ai());return this.childrenLoaders.set(o,a),a}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function ZI(t,e,r,n){return lt(t.loadChildren()).pipe(x(mh),oe(o=>o instanceof Pn||Array.isArray(o)?w(o):K(e.compileModuleAsync(o))),x(o=>{n&&n(t);let i,s,a=!1;return Array.isArray(o)?(s=o,a=!0):(i=o.create(r).injector,s=i.get(lr,[],{optional:!0,self:!0}).flat()),{routes:s.map(Nu),injector:i}}))}function QI(t){return t&&typeof t=="object"&&"default"in t}function mh(t){return QI(t)?t.default:t}var _u=(()=>{let e=class e{};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:()=>p(YI),providedIn:"root"});let t=e;return t})(),YI=(()=>{let e=class e{shouldProcessUrl(n){return!0}extract(n){return n}merge(n,o){return n}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),vh=new E(""),yh=new E("");function KI(t,e,r){let n=t.get(yh),o=t.get(Y);return t.get(k).runOutsideAngular(()=>{if(!o.startViewTransition||n.skipNextTransition)return n.skipNextTransition=!1,new Promise(c=>setTimeout(c));let i,s=new Promise(c=>{i=c}),a=o.startViewTransition(()=>(i(),XI(t))),{onViewTransitionCreated:u}=n;return u&&De(t,()=>u({transition:a,from:e,to:r})),s})}function XI(t){return new Promise(e=>{Mo(e,{injector:t})})}var xu=(()=>{let e=class e{get hasRequestedNavigation(){return this.navigationId!==0}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new ce,this.transitionAbortSubject=new ce,this.configLoader=p(Ru),this.environmentInjector=p(Q),this.urlSerializer=p(fr),this.rootContexts=p(hr),this.location=p(an),this.inputBindingEnabled=p(oi,{optional:!0})!==null,this.titleStrategy=p(gh),this.options=p(mr,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=p(_u),this.createViewTransition=p(vh,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>w(void 0),this.rootComponentType=null;let n=i=>this.events.next(new cu(i)),o=i=>this.events.next(new lu(i));this.configLoader.onLoadEndListener=o,this.configLoader.onLoadStartListener=n}complete(){this.transitions?.complete()}handleNavigationRequest(n){let o=++this.navigationId;this.transitions?.next(j(m(m({},this.transitions.value),n),{id:o}))}setupNavigations(n,o,i){return this.transitions=new te({id:0,currentUrlTree:o,currentRawUrl:o,extractedUrl:this.urlHandlingStrategy.extract(o),urlAfterRedirects:this.urlHandlingStrategy.extract(o),rawUrl:o,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:er,restoredState:null,currentSnapshot:i.snapshot,targetSnapshot:null,currentRouterState:i,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(Pe(s=>s.id!==0),x(s=>j(m({},s),{extractedUrl:this.urlHandlingStrategy.extract(s.rawUrl)})),ie(s=>{let a=!1,u=!1;return w(s).pipe(ie(c=>{if(this.navigationId>s.id)return this.cancelNavigationTransition(s,"",ue.SupersededByNewNavigation),Ge;this.currentTransition=s,this.currentNavigation={id:c.id,initialUrl:c.rawUrl,extractedUrl:c.extractedUrl,trigger:c.source,extras:c.extras,previousNavigation:this.lastSuccessfulNavigation?j(m({},this.lastSuccessfulNavigation),{previousNavigation:null}):null};let l=!n.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),d=c.extras.onSameUrlNavigation??n.onSameUrlNavigation;if(!l&&d!=="reload"){let f="";return this.events.next(new ut(c.id,this.urlSerializer.serialize(c.rawUrl),f,Qo.IgnoredSameUrlNavigation)),c.resolve(null),Ge}if(this.urlHandlingStrategy.shouldProcessUrl(c.rawUrl))return w(c).pipe(ie(f=>{let h=this.transitions?.getValue();return this.events.next(new gn(f.id,this.urlSerializer.serialize(f.extractedUrl),f.source,f.restoredState)),h!==this.transitions?.getValue()?Ge:Promise.resolve(f)}),BI(this.environmentInjector,this.configLoader,this.rootComponentType,n.config,this.urlSerializer,this.paramsInheritanceStrategy),H(f=>{s.targetSnapshot=f.targetSnapshot,s.urlAfterRedirects=f.urlAfterRedirects,this.currentNavigation=j(m({},this.currentNavigation),{finalUrl:f.urlAfterRedirects});let h=new Yo(f.id,this.urlSerializer.serialize(f.extractedUrl),this.urlSerializer.serialize(f.urlAfterRedirects),f.targetSnapshot);this.events.next(h)}));if(l&&this.urlHandlingStrategy.shouldProcessUrl(c.currentRawUrl)){let{id:f,extractedUrl:h,source:g,restoredState:S,extras:I}=c,M=new gn(f,this.urlSerializer.serialize(h),g,S);this.events.next(M);let q=oh(this.rootComponentType).snapshot;return this.currentTransition=s=j(m({},c),{targetSnapshot:q,urlAfterRedirects:h,extras:j(m({},I),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.finalUrl=h,w(s)}else{let f="";return this.events.next(new ut(c.id,this.urlSerializer.serialize(c.extractedUrl),f,Qo.IgnoredByUrlHandlingStrategy)),c.resolve(null),Ge}}),H(c=>{let l=new iu(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);this.events.next(l)}),x(c=>(this.currentTransition=s=j(m({},c),{guards:sI(c.targetSnapshot,c.currentSnapshot,this.rootContexts)}),s)),mI(this.environmentInjector,c=>this.events.next(c)),H(c=>{if(s.guardsResult=c.guardsResult,pn(c.guardsResult))throw uh(this.urlSerializer,c.guardsResult);let l=new su(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot,!!c.guardsResult);this.events.next(l)}),Pe(c=>c.guardsResult?!0:(this.cancelNavigationTransition(c,"",ue.GuardRejected),!1)),Ja(c=>{if(c.guards.canActivateChecks.length)return w(c).pipe(H(l=>{let d=new au(l.id,this.urlSerializer.serialize(l.extractedUrl),this.urlSerializer.serialize(l.urlAfterRedirects),l.targetSnapshot);this.events.next(d)}),ie(l=>{let d=!1;return w(l).pipe(HI(this.paramsInheritanceStrategy,this.environmentInjector),H({next:()=>d=!0,complete:()=>{d||this.cancelNavigationTransition(l,"",ue.NoDataFromResolver)}}))}),H(l=>{let d=new uu(l.id,this.urlSerializer.serialize(l.extractedUrl),this.urlSerializer.serialize(l.urlAfterRedirects),l.targetSnapshot);this.events.next(d)}))}),Ja(c=>{let l=d=>{let f=[];d.routeConfig?.loadComponent&&!d.routeConfig._loadedComponent&&f.push(this.configLoader.loadComponent(d.routeConfig).pipe(H(h=>{d.component=h}),x(()=>{})));for(let h of d.children)f.push(...l(h));return f};return Dr(l(c.targetSnapshot.root)).pipe(di(null),At(1))}),Ja(()=>this.afterPreactivation()),ie(()=>{let{currentSnapshot:c,targetSnapshot:l}=s,d=this.createViewTransition?.(this.environmentInjector,c.root,l.root);return d?K(d).pipe(x(()=>s)):w(s)}),x(c=>{let l=Xw(n.routeReuseStrategy,c.targetSnapshot,c.currentRouterState);return this.currentTransition=s=j(m({},c),{targetRouterState:l}),this.currentNavigation.targetRouterState=l,s}),H(()=>{this.events.next(new ir)}),iI(this.rootContexts,n.routeReuseStrategy,c=>this.events.next(c),this.inputBindingEnabled),At(1),H({next:c=>{a=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new xe(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects))),this.titleStrategy?.updateTitle(c.targetRouterState.snapshot),c.resolve(!0)},complete:()=>{a=!0}}),Hu(this.transitionAbortSubject.pipe(H(c=>{throw c}))),ft(()=>{!a&&!u&&this.cancelNavigationTransition(s,"",ue.SupersededByNewNavigation),this.currentTransition?.id===s.id&&(this.currentNavigation=null,this.currentTransition=null)}),dt(c=>{if(u=!0,lh(c))this.events.next(new at(s.id,this.urlSerializer.serialize(s.extractedUrl),c.message,c.cancellationCode)),tI(c)?this.events.next(new sr(c.url)):s.resolve(!1);else{this.events.next(new or(s.id,this.urlSerializer.serialize(s.extractedUrl),c,s.targetSnapshot??void 0));try{s.resolve(n.errorHandler(c))}catch(l){this.options.resolveNavigationPromiseOnError?s.resolve(!1):s.reject(l)}}return Ge}))}))}cancelNavigationTransition(n,o,i){let s=new at(n.id,this.urlSerializer.serialize(n.extractedUrl),o,i);this.events.next(s),n.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){return this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))).toString()!==this.currentTransition?.extractedUrl.toString()&&!this.currentTransition?.extras.skipLocationChange}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function JI(t){return t!==er}var eC=(()=>{let e=class e{};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:()=>p(tC),providedIn:"root"});let t=e;return t})(),bu=class{shouldDetach(e){return!1}store(e,r){}shouldAttach(e){return!1}retrieve(e){return null}shouldReuseRoute(e,r){return e.routeConfig===r.routeConfig}},tC=(()=>{let e=class e extends bu{};e.\u0275fac=(()=>{let n;return function(i){return(n||(n=Js(e)))(i||e)}})(),e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),Dh=(()=>{let e=class e{};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:()=>p(nC),providedIn:"root"});let t=e;return t})(),nC=(()=>{let e=class e extends Dh{constructor(){super(...arguments),this.location=p(an),this.urlSerializer=p(fr),this.options=p(mr,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=p(_u),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new st,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=oh(null),this.stateMemento=this.createStateMemento()}getCurrentUrlTree(){return this.currentUrlTree}getRawUrlTree(){return this.rawUrlTree}restoredState(){return this.location.getState()}get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}getRouterState(){return this.routerState}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(n){return this.location.subscribe(o=>{o.type==="popstate"&&n(o.url,o.state)})}handleRouterEvent(n,o){if(n instanceof gn)this.stateMemento=this.createStateMemento();else if(n instanceof ut)this.rawUrlTree=o.initialUrl;else if(n instanceof Yo){if(this.urlUpdateStrategy==="eager"&&!o.extras.skipLocationChange){let i=this.urlHandlingStrategy.merge(o.finalUrl,o.initialUrl);this.setBrowserUrl(i,o)}}else n instanceof ir?(this.currentUrlTree=o.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(o.finalUrl,o.initialUrl),this.routerState=o.targetRouterState,this.urlUpdateStrategy==="deferred"&&(o.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,o))):n instanceof at&&(n.code===ue.GuardRejected||n.code===ue.NoDataFromResolver)?this.restoreHistory(o):n instanceof or?this.restoreHistory(o,!0):n instanceof xe&&(this.lastSuccessfulId=n.id,this.currentPageId=this.browserPageId)}setBrowserUrl(n,o){let i=this.urlSerializer.serialize(n);if(this.location.isCurrentPathEqualTo(i)||o.extras.replaceUrl){let s=this.browserPageId,a=m(m({},o.extras.state),this.generateNgRouterState(o.id,s));this.location.replaceState(i,"",a)}else{let s=m(m({},o.extras.state),this.generateNgRouterState(o.id,this.browserPageId+1));this.location.go(i,"",s)}}restoreHistory(n,o=!1){if(this.canceledNavigationResolution==="computed"){let i=this.browserPageId,s=this.currentPageId-i;s!==0?this.location.historyGo(s):this.currentUrlTree===n.finalUrl&&s===0&&(this.resetState(n),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(o&&this.resetState(n),this.resetUrlToCurrentUrlTree())}resetState(n){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(n,o){return this.canceledNavigationResolution==="computed"?{navigationId:n,\u0275routerPageId:o}:{navigationId:n}}};e.\u0275fac=(()=>{let n;return function(i){return(n||(n=Js(e)))(i||e)}})(),e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),Xn=function(t){return t[t.COMPLETE=0]="COMPLETE",t[t.FAILED=1]="FAILED",t[t.REDIRECTING=2]="REDIRECTING",t}(Xn||{});function wh(t,e){t.events.pipe(Pe(r=>r instanceof xe||r instanceof at||r instanceof or||r instanceof ut),x(r=>r instanceof xe||r instanceof ut?Xn.COMPLETE:(r instanceof at?r.code===ue.Redirect||r.code===ue.SupersededByNewNavigation:!1)?Xn.REDIRECTING:Xn.FAILED),Pe(r=>r!==Xn.REDIRECTING),At(1)).subscribe(()=>{e()})}function rC(t){throw t}var oC={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},iC={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"},ze=(()=>{let e=class e{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}constructor(){this.disposed=!1,this.isNgZoneEnabled=!1,this.console=p(To),this.stateManager=p(Dh),this.options=p(mr,{optional:!0})||{},this.pendingTasks=p(bt),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=p(xu),this.urlSerializer=p(fr),this.location=p(an),this.urlHandlingStrategy=p(_u),this._events=new ce,this.errorHandler=this.options.errorHandler||rC,this.navigated=!1,this.routeReuseStrategy=p(eC),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=p(lr,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!p(oi,{optional:!0}),this.eventsSubscription=new yn,this.isNgZoneEnabled=p(k)instanceof k&&k.isInAngularZone(),this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:n=>{this.console.warn(n)}}),this.subscribeToNavigationEvents()}subscribeToNavigationEvents(){let n=this.navigationTransitions.events.subscribe(o=>{try{let i=this.navigationTransitions.currentTransition,s=this.navigationTransitions.currentNavigation;if(i!==null&&s!==null){if(this.stateManager.handleRouterEvent(o,s),o instanceof at&&o.code!==ue.Redirect&&o.code!==ue.SupersededByNewNavigation)this.navigated=!0;else if(o instanceof xe)this.navigated=!0;else if(o instanceof sr){let a=this.urlHandlingStrategy.merge(o.url,i.currentRawUrl),u={info:i.extras.info,skipLocationChange:i.extras.skipLocationChange,replaceUrl:this.urlUpdateStrategy==="eager"||JI(i.source)};this.scheduleNavigation(a,er,null,u,{resolve:i.resolve,reject:i.reject,promise:i.promise})}}aC(o)&&this._events.next(o)}catch(i){this.navigationTransitions.transitionAbortSubject.next(i)}});this.eventsSubscription.add(n)}resetRootComponentType(n){this.routerState.root.component=n,this.navigationTransitions.rootComponentType=n}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),er,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((n,o)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(n,"popstate",o)},0)})}navigateToSyncWithBrowser(n,o,i){let s={replaceUrl:!0},a=i?.navigationId?i:null;if(i){let c=m({},i);delete c.navigationId,delete c.\u0275routerPageId,Object.keys(c).length!==0&&(s.state=c)}let u=this.parseUrl(n);this.scheduleNavigation(u,o,a,s)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(n){this.config=n.map(Nu),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(n,o={}){let{relativeTo:i,queryParams:s,fragment:a,queryParamsHandling:u,preserveFragment:c}=o,l=c?this.currentUrlTree.fragment:a,d=null;switch(u){case"merge":d=m(m({},this.currentUrlTree.queryParams),s);break;case"preserve":d=this.currentUrlTree.queryParams;break;default:d=s||null}d!==null&&(d=this.removeEmptyProps(d));let f;try{let h=i?i.snapshot:this.routerState.snapshot.root;f=eh(h)}catch{(typeof n[0]!="string"||!n[0].startsWith("/"))&&(n=[]),f=this.currentUrlTree.root}return th(f,n,d,l??null)}navigateByUrl(n,o={skipLocationChange:!1}){let i=pn(n)?n:this.parseUrl(n),s=this.urlHandlingStrategy.merge(i,this.rawUrlTree);return this.scheduleNavigation(s,er,null,o)}navigate(n,o={skipLocationChange:!1}){return sC(n),this.navigateByUrl(this.createUrlTree(n,o),o)}serializeUrl(n){return this.urlSerializer.serialize(n)}parseUrl(n){try{return this.urlSerializer.parse(n)}catch{return this.urlSerializer.parse("/")}}isActive(n,o){let i;if(o===!0?i=m({},oC):o===!1?i=m({},iC):i=o,pn(n))return kf(this.currentUrlTree,n,i);let s=this.parseUrl(n);return kf(this.currentUrlTree,s,i)}removeEmptyProps(n){return Object.entries(n).reduce((o,[i,s])=>(s!=null&&(o[i]=s),o),{})}scheduleNavigation(n,o,i,s,a){if(this.disposed)return Promise.resolve(!1);let u,c,l;a?(u=a.resolve,c=a.reject,l=a.promise):l=new Promise((f,h)=>{u=f,c=h});let d=this.pendingTasks.add();return wh(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(d))}),this.navigationTransitions.handleNavigationRequest({source:o,restoredState:i,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:n,extras:s,resolve:u,reject:c,promise:l,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),l.catch(f=>Promise.reject(f))}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();function sC(t){for(let e=0;e{let e=class e{constructor(n,o,i,s,a,u){this.router=n,this.route=o,this.tabIndexAttribute=i,this.renderer=s,this.el=a,this.locationStrategy=u,this.href=null,this.commands=null,this.onChanges=new ce,this.preserveFragment=!1,this.skipLocationChange=!1,this.replaceUrl=!1;let c=a.nativeElement.tagName?.toLowerCase();this.isAnchorElement=c==="a"||c==="area",this.isAnchorElement?this.subscription=n.events.subscribe(l=>{l instanceof xe&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}setTabIndexIfNotOnNativeEl(n){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue("tabindex",n)}ngOnChanges(n){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(n){n!=null?(this.commands=Array.isArray(n)?n:[n],this.setTabIndexIfNotOnNativeEl("0")):(this.commands=null,this.setTabIndexIfNotOnNativeEl(null))}onClick(n,o,i,s,a){let u=this.urlTree;if(u===null||this.isAnchorElement&&(n!==0||o||i||s||a||typeof this.target=="string"&&this.target!="_self"))return!0;let c={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(u,c),!this.isAnchorElement}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){let n=this.urlTree;this.href=n!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(n)):null;let o=this.href===null?null:Jl(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",o)}applyAttributeValue(n,o){let i=this.renderer,s=this.el.nativeElement;o!==null?i.setAttribute(s,n,o):i.removeAttribute(s,n)}get urlTree(){return this.commands===null?null:this.router.createUrlTree(this.commands,{relativeTo:this.relativeTo!==void 0?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}};e.\u0275fac=function(o){return new(o||e)(L(ze),L(ct),fo("tabindex"),L(Eo),L(ot),L(He))},e.\u0275dir=Ve({type:e,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function(o,i){o&1&&Ma("click",function(a){return i.onClick(a.button,a.ctrlKey,a.shiftKey,a.altKey,a.metaKey)}),o&2&&Ca("target",i.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[me.HasDecoratorInputTransform,"preserveFragment","preserveFragment",Hn],skipLocationChange:[me.HasDecoratorInputTransform,"skipLocationChange","skipLocationChange",Hn],replaceUrl:[me.HasDecoratorInputTransform,"replaceUrl","replaceUrl",Hn],routerLink:"routerLink"},standalone:!0,features:[wa,Kt]});let t=e;return t})();var ri=class{},kM=(()=>{let e=class e{preload(n,o){return o().pipe(dt(()=>w(null)))}};e.\u0275fac=function(o){return new(o||e)},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})();var uC=(()=>{let e=class e{constructor(n,o,i,s,a){this.router=n,this.injector=i,this.preloadingStrategy=s,this.loader=a}setUpPreloading(){this.subscription=this.router.events.pipe(Pe(n=>n instanceof xe),We(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(n,o){let i=[];for(let s of o){s.providers&&!s._injector&&(s._injector=bo(s.providers,n,`Route: ${s.path}`));let a=s._injector??n,u=s._loadedInjector??a;(s.loadChildren&&!s._loadedRoutes&&s.canLoad===void 0||s.loadComponent&&!s._loadedComponent)&&i.push(this.preloadConfig(a,s)),(s.children||s._loadedRoutes)&&i.push(this.processRoutes(u,s.children??s._loadedRoutes))}return K(i).pipe(ci())}preloadConfig(n,o){return this.preloadingStrategy.preload(o,()=>{let i;o.loadChildren&&o.canLoad===void 0?i=this.loader.loadChildren(n,o):i=w(null);let s=i.pipe(oe(a=>a===null?w(void 0):(o._loadedRoutes=a.routes,o._loadedInjector=a.injector,this.processRoutes(a.injector??n,a.routes))));if(o.loadComponent&&!o._loadedComponent){let a=this.loader.loadComponent(o);return K([s,a]).pipe(ci())}else return s})}};e.\u0275fac=function(o){return new(o||e)(D(ze),D(No),D(Q),D(ri),D(Ru))},e.\u0275prov=v({token:e,factory:e.\u0275fac,providedIn:"root"});let t=e;return t})(),Ih=new E(""),cC=(()=>{let e=class e{constructor(n,o,i,s,a={}){this.urlSerializer=n,this.transitions=o,this.viewportScroller=i,this.zone=s,this.options=a,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},this.environmentInjector=p(Q),a.scrollPositionRestoration||="disabled",a.anchorScrolling||="disabled"}init(){this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(n=>{n instanceof gn?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=n.navigationTrigger,this.restoredId=n.restoredState?n.restoredState.navigationId:0):n instanceof xe?(this.lastId=n.id,this.scheduleScrollEvent(n,this.urlSerializer.parse(n.urlAfterRedirects).fragment)):n instanceof ut&&n.code===Qo.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(n,this.urlSerializer.parse(n.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(n=>{n instanceof Ko&&(n.position?this.options.scrollPositionRestoration==="top"?this.viewportScroller.scrollToPosition([0,0]):this.options.scrollPositionRestoration==="enabled"&&this.viewportScroller.scrollToPosition(n.position):n.anchor&&this.options.anchorScrolling==="enabled"?this.viewportScroller.scrollToAnchor(n.anchor):this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(n,o){this.zone.runOutsideAngular(()=>yr(this,null,function*(){yield new Promise(i=>{setTimeout(()=>{i()}),Mo(()=>{i()},{injector:this.environmentInjector})}),this.zone.run(()=>{this.transitions.events.next(new Ko(n,this.lastSource==="popstate"?this.store[this.restoredId]:null,o))})}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}};e.\u0275fac=function(o){ld()},e.\u0275prov=v({token:e,factory:e.\u0275fac});let t=e;return t})();function LM(t,...e){return Zt([{provide:lr,multi:!0,useValue:t},[],{provide:ct,useFactory:Ch,deps:[ze]},{provide:Bn,multi:!0,useFactory:Eh},e.map(r=>r.\u0275providers)])}function Ch(t){return t.routerState.root}function vr(t,e){return{\u0275kind:t,\u0275providers:e}}function Eh(){let t=p(rt);return e=>{let r=t.get(nn);if(e!==r.components[0])return;let n=t.get(ze),o=t.get(Mh);t.get(Ou)===1&&n.initialNavigation(),t.get(bh,null,A.Optional)?.setUpPreloading(),t.get(Ih,null,A.Optional)?.init(),n.resetRootComponentType(r.componentTypes[0]),o.closed||(o.next(),o.complete(),o.unsubscribe())}}var Mh=new E("",{factory:()=>new ce}),Ou=new E("",{providedIn:"root",factory:()=>1});function lC(){return vr(2,[{provide:Ou,useValue:0},{provide:So,multi:!0,deps:[rt],useFactory:e=>{let r=e.get(ff,Promise.resolve());return()=>r.then(()=>new Promise(n=>{let o=e.get(ze),i=e.get(Mh);wh(o,()=>{n(!0)}),e.get(xu).afterPreactivation=()=>(n(!0),i.closed?w(void 0):i),o.initialNavigation()}))}}])}function dC(){return vr(3,[{provide:So,multi:!0,useFactory:()=>{let e=p(ze);return()=>{e.setUpLocationChangeListener()}}},{provide:Ou,useValue:2}])}var bh=new E("");function fC(t){return vr(0,[{provide:bh,useExisting:uC},{provide:ri,useExisting:t}])}function hC(){return vr(8,[$f,{provide:oi,useExisting:$f}])}function pC(t){let e=[{provide:vh,useValue:KI},{provide:yh,useValue:m({skipNextTransition:!!t?.skipInitialTransition},t)}];return vr(9,e)}var Bf=new E("ROUTER_FORROOT_GUARD"),gC=[an,{provide:fr,useClass:nr},ze,hr,{provide:ct,useFactory:Ch,deps:[ze]},Ru,[]],jM=(()=>{let e=class e{constructor(n){}static forRoot(n,o){return{ngModule:e,providers:[gC,[],{provide:lr,multi:!0,useValue:n},{provide:Bf,useFactory:DC,deps:[[ze,new Ln,new to]]},{provide:mr,useValue:o||{}},o?.useHash?vC():yC(),mC(),o?.preloadingStrategy?fC(o.preloadingStrategy).\u0275providers:[],o?.initialNavigation?wC(o):[],o?.bindToComponentInputs?hC().\u0275providers:[],o?.enableViewTransitions?pC().\u0275providers:[],IC()]}}static forChild(n){return{ngModule:e,providers:[{provide:lr,multi:!0,useValue:n}]}}};e.\u0275fac=function(o){return new(o||e)(D(Bf,8))},e.\u0275mod=Et({type:e}),e.\u0275inj=et({});let t=e;return t})();function mC(){return{provide:Ih,useFactory:()=>{let t=p(mf),e=p(k),r=p(mr),n=p(xu),o=p(fr);return r.scrollOffset&&t.setOffset(r.scrollOffset),new cC(o,n,t,e,r)}}}function vC(){return{provide:He,useClass:pf}}function yC(){return{provide:He,useClass:ka}}function DC(t){return"guarded"}function wC(t){return[t.initialNavigation==="disabled"?dC().\u0275providers:[],t.initialNavigation==="enabledBlocking"?lC().\u0275providers:[]]}var Hf=new E("");function IC(){return[{provide:Hf,useFactory:Eh},{provide:Bn,multi:!0,useExisting:Hf}]}export{v as a,et as b,D as c,me as d,Xc as e,Et as f,Ve as g,Kt as h,FC as i,kC as j,LC as k,le as l,jC as m,VC as n,L as o,Xe as p,ys as q,Dy as r,jd as s,wy as t,HC as u,zC as v,qC as w,GC as x,WC as y,zd as z,qd as A,Ea as B,Gd as C,Wd as D,Ly as E,ZC as F,Ma as G,QC as H,Hy as I,YC as J,zy as K,qy as L,KC as M,XC as N,Zy as O,Zd as P,JC as Q,Yd as R,eE as S,tE as T,nE as U,rE as V,oE as W,iE as X,NE as Y,gf as Z,AE as _,RE as $,_E as aa,xE as ba,OE as ca,PE as da,AD as ea,WE as fa,vM as ga,Kw as ha,FM as ia,kM as ja,LM as ka,fC as la,jM as ma}; diff --git a/docs/chunk-T4BLILQN.js b/docs/chunk-T4BLILQN.js new file mode 100644 index 0000000..f05724b --- /dev/null +++ b/docs/chunk-T4BLILQN.js @@ -0,0 +1,3 @@ +var Pe=Object.create;var er=Object.defineProperty,je=Object.defineProperties,Ce=Object.getOwnPropertyDescriptor,Fe=Object.getOwnPropertyDescriptors,ke=Object.getOwnPropertyNames,rr=Object.getOwnPropertySymbols,Re=Object.getPrototypeOf,Ir=Object.prototype.hasOwnProperty,Kr=Object.prototype.propertyIsEnumerable;var Gr=(r,e,t)=>e in r?er(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,gt=(r,e)=>{for(var t in e||={})Ir.call(e,t)&&Gr(r,t,e[t]);if(rr)for(var t of rr(e))Kr.call(e,t)&&Gr(r,t,e[t]);return r},Et=(r,e)=>je(r,Fe(e));var Ot=(r,e)=>{var t={};for(var o in r)Ir.call(r,o)&&e.indexOf(o)<0&&(t[o]=r[o]);if(r!=null&&rr)for(var o of rr(r))e.indexOf(o)<0&&Kr.call(r,o)&&(t[o]=r[o]);return t};var It=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Tt=(r,e)=>{for(var t in e)er(r,t,{get:e[t],enumerable:!0})},Me=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of ke(e))!Ir.call(r,n)&&n!==t&&er(r,n,{get:()=>e[n],enumerable:!(o=Ce(e,n))||o.enumerable});return r};var At=(r,e,t)=>(t=r!=null?Pe(Re(r)):{},Me(e||!r||!r.__esModule?er(t,"default",{value:r,enumerable:!0}):t,r));var Pt=(r,e,t)=>new Promise((o,n)=>{var i=f=>{try{p(t.next(f))}catch(c){n(c)}},s=f=>{try{p(t.throw(f))}catch(c){n(c)}},p=f=>f.done?o(f.value):Promise.resolve(f.value).then(i,s);p((t=t.apply(r,e)).next())});function u(r){return typeof r=="function"}function V(r){let t=r(o=>{Error.call(o),o.stack=new Error().stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var tr=V(r=>function(t){r(this),this.message=t?`${t.length} errors occurred during unsubscription: +${t.map((o,n)=>`${n+1}) ${o.toString()}`).join(` + `)}`:"",this.name="UnsubscriptionError",this.errors=t});function k(r,e){if(r){let t=r.indexOf(e);0<=t&&r.splice(t,1)}}var w=class r{constructor(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let e;if(!this.closed){this.closed=!0;let{_parentage:t}=this;if(t)if(this._parentage=null,Array.isArray(t))for(let i of t)i.remove(this);else t.remove(this);let{initialTeardown:o}=this;if(u(o))try{o()}catch(i){e=i instanceof tr?i.errors:[i]}let{_finalizers:n}=this;if(n){this._finalizers=null;for(let i of n)try{$r(i)}catch(s){e=e??[],s instanceof tr?e=[...e,...s.errors]:e.push(s)}}if(e)throw new tr(e)}}add(e){var t;if(e&&e!==this)if(this.closed)$r(e);else{if(e instanceof r){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=(t=this._finalizers)!==null&&t!==void 0?t:[]).push(e)}}_hasParent(e){let{_parentage:t}=this;return t===e||Array.isArray(t)&&t.includes(e)}_addParent(e){let{_parentage:t}=this;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e}_removeParent(e){let{_parentage:t}=this;t===e?this._parentage=null:Array.isArray(t)&&k(t,e)}remove(e){let{_finalizers:t}=this;t&&k(t,e),e instanceof r&&e._removeParent(this)}};w.EMPTY=(()=>{let r=new w;return r.closed=!0,r})();var Tr=w.EMPTY;function or(r){return r instanceof w||r&&"closed"in r&&u(r.remove)&&u(r.add)&&u(r.unsubscribe)}function $r(r){u(r)?r():r.unsubscribe()}function v(r){return r}function Ar(...r){return Pr(r)}function Pr(r){return r.length===0?v:r.length===1?r[0]:function(t){return r.reduce((o,n)=>n(o),t)}}var O={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var Y={setTimeout(r,e,...t){let{delegate:o}=Y;return o?.setTimeout?o.setTimeout(r,e,...t):setTimeout(r,e,...t)},clearTimeout(r){let{delegate:e}=Y;return(e?.clearTimeout||clearTimeout)(r)},delegate:void 0};function nr(r){Y.setTimeout(()=>{let{onUnhandledError:e}=O;if(e)e(r);else throw r})}function R(){}var Br=jr("C",void 0,void 0);function Hr(r){return jr("E",void 0,r)}function Jr(r){return jr("N",r,void 0)}function jr(r,e,t){return{kind:r,value:e,error:t}}var M=null;function N(r){if(O.useDeprecatedSynchronousErrorHandling){let e=!M;if(e&&(M={errorThrown:!1,error:null}),r(),e){let{errorThrown:t,error:o}=M;if(M=null,t)throw o}}else r()}function Zr(r){O.useDeprecatedSynchronousErrorHandling&&M&&(M.errorThrown=!0,M.error=r)}var L=class extends w{constructor(e){super(),this.isStopped=!1,e?(this.destination=e,or(e)&&e.add(this)):this.destination=Ue}static create(e,t,o){return new A(e,t,o)}next(e){this.isStopped?Fr(Jr(e),this):this._next(e)}error(e){this.isStopped?Fr(Hr(e),this):(this.isStopped=!0,this._error(e))}complete(){this.isStopped?Fr(Br,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(e){this.destination.next(e)}_error(e){try{this.destination.error(e)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}},Le=Function.prototype.bind;function Cr(r,e){return Le.call(r,e)}var kr=class{constructor(e){this.partialObserver=e}next(e){let{partialObserver:t}=this;if(t.next)try{t.next(e)}catch(o){ir(o)}}error(e){let{partialObserver:t}=this;if(t.error)try{t.error(e)}catch(o){ir(o)}else ir(e)}complete(){let{partialObserver:e}=this;if(e.complete)try{e.complete()}catch(t){ir(t)}}},A=class extends L{constructor(e,t,o){super();let n;if(u(e)||!e)n={next:e??void 0,error:t??void 0,complete:o??void 0};else{let i;this&&O.useDeprecatedNextContext?(i=Object.create(e),i.unsubscribe=()=>this.unsubscribe(),n={next:e.next&&Cr(e.next,i),error:e.error&&Cr(e.error,i),complete:e.complete&&Cr(e.complete,i)}):n=e}this.destination=new kr(n)}};function ir(r){O.useDeprecatedSynchronousErrorHandling?Zr(r):nr(r)}function We(r){throw r}function Fr(r,e){let{onStoppedNotification:t}=O;t&&Y.setTimeout(()=>t(r,e))}var Ue={closed:!0,next:R,error:We,complete:R};var q=typeof Symbol=="function"&&Symbol.observable||"@@observable";var a=(()=>{class r{constructor(t){t&&(this._subscribe=t)}lift(t){let o=new r;return o.source=this,o.operator=t,o}subscribe(t,o,n){let i=ze(t)?t:new A(t,o,n);return N(()=>{let{operator:s,source:p}=this;i.add(s?s.call(i,p):p?this._subscribe(i):this._trySubscribe(i))}),i}_trySubscribe(t){try{return this._subscribe(t)}catch(o){t.error(o)}}forEach(t,o){return o=Qr(o),new o((n,i)=>{let s=new A({next:p=>{try{t(p)}catch(f){i(f),s.unsubscribe()}},error:i,complete:n});this.subscribe(s)})}_subscribe(t){var o;return(o=this.source)===null||o===void 0?void 0:o.subscribe(t)}[q](){return this}pipe(...t){return Pr(t)(this)}toPromise(t){return t=Qr(t),new t((o,n)=>{let i;this.subscribe(s=>i=s,s=>n(s),()=>o(i))})}}return r.create=e=>new r(e),r})();function Qr(r){var e;return(e=r??O.Promise)!==null&&e!==void 0?e:Promise}function De(r){return r&&u(r.next)&&u(r.error)&&u(r.complete)}function ze(r){return r&&r instanceof L||De(r)&&or(r)}function Rr(r){return u(r?.lift)}function l(r){return e=>{if(Rr(e))return e.lift(function(t){try{return r(t,this)}catch(o){this.error(o)}});throw new TypeError("Unable to lift unknown Observable type")}}function m(r,e,t,o,n){return new Mr(r,e,t,o,n)}var Mr=class extends L{constructor(e,t,o,n,i,s){super(e),this.onFinalize=i,this.shouldUnsubscribe=s,this._next=t?function(p){try{t(p)}catch(f){e.error(f)}}:super._next,this._error=n?function(p){try{n(p)}catch(f){e.error(f)}finally{this.unsubscribe()}}:super._error,this._complete=o?function(){try{o()}catch(p){e.error(p)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:t}=this;super.unsubscribe(),!t&&((e=this.onFinalize)===null||e===void 0||e.call(this))}}};function Lr(){return l((r,e)=>{let t=null;r._refCount++;let o=m(e,void 0,void 0,void 0,()=>{if(!r||r._refCount<=0||0<--r._refCount){t=null;return}let n=r._connection,i=t;t=null,n&&(!i||n===i)&&n.unsubscribe(),e.unsubscribe()});r.subscribe(o),o.closed||(t=r.connect())})}var Wr=class extends a{constructor(e,t){super(),this.source=e,this.subjectFactory=t,this._subject=null,this._refCount=0,this._connection=null,Rr(e)&&(this.lift=e.lift)}_subscribe(e){return this.getSubject().subscribe(e)}getSubject(){let e=this._subject;return(!e||e.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;let{_connection:e}=this;this._subject=this._connection=null,e?.unsubscribe()}connect(){let e=this._connection;if(!e){e=this._connection=new w;let t=this.getSubject();e.add(this.source.subscribe(m(t,void 0,()=>{this._teardown(),t.complete()},o=>{this._teardown(),t.error(o)},()=>this._teardown()))),e.closed&&(this._connection=null,e=w.EMPTY)}return e}refCount(){return Lr()(this)}};var Xr=V(r=>function(){r(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var P=(()=>{class r extends a{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(t){let o=new sr(this,this);return o.operator=t,o}_throwIfClosed(){if(this.closed)throw new Xr}next(t){N(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let o of this.currentObservers)o.next(t)}})}error(t){N(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=t;let{observers:o}=this;for(;o.length;)o.shift().error(t)}})}complete(){N(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:t}=this;for(;t.length;)t.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var t;return((t=this.observers)===null||t===void 0?void 0:t.length)>0}_trySubscribe(t){return this._throwIfClosed(),super._trySubscribe(t)}_subscribe(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)}_innerSubscribe(t){let{hasError:o,isStopped:n,observers:i}=this;return o||n?Tr:(this.currentObservers=null,i.push(t),new w(()=>{this.currentObservers=null,k(i,t)}))}_checkFinalizedStatuses(t){let{hasError:o,thrownError:n,isStopped:i}=this;o?t.error(n):i&&t.complete()}asObservable(){let t=new a;return t.source=this,t}}return r.create=(e,t)=>new sr(e,t),r})(),sr=class extends P{constructor(e,t){super(),this.destination=e,this.source=t}next(e){var t,o;(o=(t=this.destination)===null||t===void 0?void 0:t.next)===null||o===void 0||o.call(t,e)}error(e){var t,o;(o=(t=this.destination)===null||t===void 0?void 0:t.error)===null||o===void 0||o.call(t,e)}complete(){var e,t;(t=(e=this.destination)===null||e===void 0?void 0:e.complete)===null||t===void 0||t.call(e)}_subscribe(e){var t,o;return(o=(t=this.source)===null||t===void 0?void 0:t.subscribe(e))!==null&&o!==void 0?o:Tr}};var Ur=class extends P{constructor(e){super(),this._value=e}get value(){return this.getValue()}_subscribe(e){let t=super._subscribe(e);return!t.closed&&e.next(this._value),t}getValue(){let{hasError:e,thrownError:t,_value:o}=this;if(e)throw t;return this._throwIfClosed(),o}next(e){super.next(this._value=e)}};var W=new a(r=>r.complete());function ee(r,e,t,o){function n(i){return i instanceof t?i:new t(function(s){s(i)})}return new(t||(t=Promise))(function(i,s){function p(h){try{c(o.next(h))}catch(b){s(b)}}function f(h){try{c(o.throw(h))}catch(b){s(b)}}function c(h){h.done?i(h.value):n(h.value).then(p,f)}c((o=o.apply(r,e||[])).next())})}function re(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],o=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&o>=r.length&&(r=void 0),{value:r&&r[o++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function U(r){return this instanceof U?(this.v=r,this):new U(r)}function te(r,e,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=t.apply(r,e||[]),n,i=[];return n={},p("next"),p("throw"),p("return",s),n[Symbol.asyncIterator]=function(){return this},n;function s(d){return function(y){return Promise.resolve(y).then(d,b)}}function p(d,y){o[d]&&(n[d]=function(_){return new Promise(function(F,S){i.push([d,_,F,S])>1||f(d,_)})},y&&(n[d]=y(n[d])))}function f(d,y){try{c(o[d](y))}catch(_){E(i[0][3],_)}}function c(d){d.value instanceof U?Promise.resolve(d.value.v).then(h,b):E(i[0][2],d)}function h(d){f("next",d)}function b(d){f("throw",d)}function E(d,y){d(y),i.shift(),i.length&&f(i[0][0],i[0][1])}}function oe(r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=r[Symbol.asyncIterator],t;return e?e.call(r):(r=typeof re=="function"?re(r):r[Symbol.iterator](),t={},o("next"),o("throw"),o("return"),t[Symbol.asyncIterator]=function(){return this},t);function o(i){t[i]=r[i]&&function(s){return new Promise(function(p,f){s=r[i](s),n(p,f,s.done,s.value)})}}function n(i,s,p,f){Promise.resolve(f).then(function(c){i({value:c,done:p})},s)}}var fr=r=>r&&typeof r.length=="number"&&typeof r!="function";function pr(r){return u(r?.then)}function cr(r){return u(r[q])}function lr(r){return Symbol.asyncIterator&&u(r?.[Symbol.asyncIterator])}function mr(r){return new TypeError(`You provided ${r!==null&&typeof r=="object"?"an invalid object":`'${r}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function Ve(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var ur=Ve();function ar(r){return u(r?.[ur])}function hr(r){return te(this,arguments,function*(){let t=r.getReader();try{for(;;){let{value:o,done:n}=yield U(t.read());if(n)return yield U(void 0);yield yield U(o)}}finally{t.releaseLock()}})}function dr(r){return u(r?.getReader)}function x(r){if(r instanceof a)return r;if(r!=null){if(cr(r))return Ye(r);if(fr(r))return Ne(r);if(pr(r))return qe(r);if(lr(r))return ne(r);if(ar(r))return Ge(r);if(dr(r))return Ke(r)}throw mr(r)}function Ye(r){return new a(e=>{let t=r[q]();if(u(t.subscribe))return t.subscribe(e);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Ne(r){return new a(e=>{for(let t=0;t{r.then(t=>{e.closed||(e.next(t),e.complete())},t=>e.error(t)).then(null,nr)})}function Ge(r){return new a(e=>{for(let t of r)if(e.next(t),e.closed)return;e.complete()})}function ne(r){return new a(e=>{$e(r,e).catch(t=>e.error(t))})}function Ke(r){return ne(hr(r))}function $e(r,e){var t,o,n,i;return ee(this,void 0,void 0,function*(){try{for(t=oe(r);o=yield t.next(),!o.done;){let s=o.value;if(e.next(s),e.closed)return}}catch(s){n={error:s}}finally{try{o&&!o.done&&(i=t.return)&&(yield i.call(t))}finally{if(n)throw n.error}}e.complete()})}function g(r,e,t,o=0,n=!1){let i=e.schedule(function(){t(),n?r.add(this.schedule(null,o)):this.unsubscribe()},o);if(r.add(i),!n)return i}function xr(r,e=0){return l((t,o)=>{t.subscribe(m(o,n=>g(o,r,()=>o.next(n),e),()=>g(o,r,()=>o.complete(),e),n=>g(o,r,()=>o.error(n),e)))})}function br(r,e=0){return l((t,o)=>{o.add(r.schedule(()=>t.subscribe(o),e))})}function ie(r,e){return x(r).pipe(br(e),xr(e))}function se(r,e){return x(r).pipe(br(e),xr(e))}function fe(r,e){return new a(t=>{let o=0;return e.schedule(function(){o===r.length?t.complete():(t.next(r[o++]),t.closed||this.schedule())})})}function pe(r,e){return new a(t=>{let o;return g(t,e,()=>{o=r[ur](),g(t,e,()=>{let n,i;try{({value:n,done:i}=o.next())}catch(s){t.error(s);return}i?t.complete():t.next(n)},0,!0)}),()=>u(o?.return)&&o.return()})}function yr(r,e){if(!r)throw new Error("Iterable cannot be null");return new a(t=>{g(t,e,()=>{let o=r[Symbol.asyncIterator]();g(t,e,()=>{o.next().then(n=>{n.done?t.complete():t.next(n.value)})},0,!0)})})}function ce(r,e){return yr(hr(r),e)}function le(r,e){if(r!=null){if(cr(r))return ie(r,e);if(fr(r))return fe(r,e);if(pr(r))return se(r,e);if(lr(r))return yr(r,e);if(ar(r))return pe(r,e);if(dr(r))return ce(r,e)}throw mr(r)}function I(r,e){return e?le(r,e):x(r)}function vr(r){return r&&u(r.schedule)}function Dr(r){return r[r.length-1]}function G(r){return u(Dr(r))?r.pop():void 0}function T(r){return vr(Dr(r))?r.pop():void 0}function me(r,e){return typeof Dr(r)=="number"?r.pop():e}function Be(...r){let e=T(r);return I(r,e)}function He(r,e){let t=u(r)?r:()=>r,o=n=>n.error(t());return new a(e?n=>e.schedule(o,0,n):o)}function Je(r){return!!r&&(r instanceof a||u(r.lift)&&u(r.subscribe))}var D=V(r=>function(){r(this),this.name="EmptyError",this.message="no elements in sequence"});function j(r,e){return l((t,o)=>{let n=0;t.subscribe(m(o,i=>{o.next(r.call(e,i,n++))}))})}var{isArray:Ze}=Array,{getPrototypeOf:Qe,prototype:Xe,keys:rt}=Object;function ue(r){if(r.length===1){let e=r[0];if(Ze(e))return{args:e,keys:null};if(et(e)){let t=rt(e);return{args:t.map(o=>e[o]),keys:t}}}return{args:r,keys:null}}function et(r){return r&&typeof r=="object"&&Qe(r)===Xe}var{isArray:tt}=Array;function ot(r,e){return tt(e)?r(...e):r(e)}function _r(r){return j(e=>ot(r,e))}function ae(r,e){return r.reduce((t,o,n)=>(t[o]=e[n],t),{})}function nt(...r){let e=T(r),t=G(r),{args:o,keys:n}=ue(r);if(o.length===0)return I([],e);let i=new a(zr(o,e,n?s=>ae(n,s):v));return t?i.pipe(_r(t)):i}function zr(r,e,t=v){return o=>{he(e,()=>{let{length:n}=r,i=new Array(n),s=n,p=n;for(let f=0;f{let c=I(r[f],e),h=!1;c.subscribe(m(o,b=>{i[f]=b,h||(h=!0,p--),p||o.next(t(i.slice()))},()=>{--s||o.complete()}))},o)},o)}}function he(r,e,t){r?g(t,r,e):e()}function de(r,e,t,o,n,i,s,p){let f=[],c=0,h=0,b=!1,E=()=>{b&&!f.length&&!c&&e.complete()},d=_=>c{i&&e.next(_),c++;let F=!1;x(t(_,h++)).subscribe(m(e,S=>{n?.(S),i?d(S):e.next(S)},()=>{F=!0},void 0,()=>{if(F)try{for(c--;f.length&&cy(S)):y(S)}E()}catch(S){e.error(S)}}))};return r.subscribe(m(e,d,()=>{b=!0,E()})),()=>{p?.()}}function z(r,e,t=1/0){return u(e)?z((o,n)=>j((i,s)=>e(o,i,n,s))(x(r(o,n))),t):(typeof e=="number"&&(t=e),l((o,n)=>de(o,n,r,t)))}function $(r=1/0){return z(v,r)}function xe(){return $(1)}function wr(...r){return xe()(I(r,T(r)))}function it(r){return new a(e=>{x(r()).subscribe(e)})}function C(r,e){return l((t,o)=>{let n=0;t.subscribe(m(o,i=>r.call(e,i,n++)&&o.next(i)))})}function be(r){return l((e,t)=>{let o=null,n=!1,i;o=e.subscribe(m(t,void 0,void 0,s=>{i=x(r(s,be(r)(e))),o?(o.unsubscribe(),o=null,i.subscribe(t)):n=!0})),n&&(o.unsubscribe(),o=null,i.subscribe(t))})}var{isArray:st}=Array;function ye(r){return r.length===1&&st(r[0])?r[0]:r}function Vr(...r){let e=G(r);return e?Ar(Vr(...r),_r(e)):l((t,o)=>{zr([t,...ye(r)])(o)})}function ft(...r){return Vr(...r)}function pt(r,e){return u(e)?z(r,e,1):z(r,1)}function B(r){return l((e,t)=>{let o=!1;e.subscribe(m(t,n=>{o=!0,t.next(n)},()=>{o||t.next(r),t.complete()}))})}function Yr(r){return r<=0?()=>W:l((e,t)=>{let o=0;e.subscribe(m(t,n=>{++o<=r&&(t.next(n),r<=o&&t.complete())}))})}function ct(r){return j(()=>r)}function lt(r){return l((e,t)=>{try{e.subscribe(t)}finally{t.add(r)}})}function Sr(r=mt){return l((e,t)=>{let o=!1;e.subscribe(m(t,n=>{o=!0,t.next(n)},()=>o?t.complete():t.error(r())))})}function mt(){return new D}function ut(r,e){let t=arguments.length>=2;return o=>o.pipe(r?C((n,i)=>r(n,i,o)):v,Yr(1),t?B(e):Sr(()=>new D))}function Nr(r){return r<=0?()=>W:l((e,t)=>{let o=[];e.subscribe(m(t,n=>{o.push(n),r{for(let n of o)t.next(n);t.complete()},void 0,()=>{o=null}))})}function at(r,e){let t=arguments.length>=2;return o=>o.pipe(r?C((n,i)=>r(n,i,o)):v,Nr(1),t?B(e):Sr(()=>new D))}function ve(r,e,t,o,n){return(i,s)=>{let p=t,f=e,c=0;i.subscribe(m(s,h=>{let b=c++;f=p?r(f,h,b):(p=!0,h),o&&s.next(f)},n&&(()=>{p&&s.next(f),s.complete()})))}}function ht(r,e){return l(ve(r,e,arguments.length>=2,!0))}var H={now(){return(H.delegate||Date).now()},delegate:void 0};var J=class extends P{constructor(e=1/0,t=1/0,o=H){super(),this._bufferSize=e,this._windowTime=t,this._timestampProvider=o,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=t===1/0,this._bufferSize=Math.max(1,e),this._windowTime=Math.max(1,t)}next(e){let{isStopped:t,_buffer:o,_infiniteTimeWindow:n,_timestampProvider:i,_windowTime:s}=this;t||(o.push(e),!n&&o.push(i.now()+s)),this._trimBuffer(),super.next(e)}_subscribe(e){this._throwIfClosed(),this._trimBuffer();let t=this._innerSubscribe(e),{_infiniteTimeWindow:o,_buffer:n}=this,i=n.slice();for(let s=0;snew P,resetOnError:t=!0,resetOnComplete:o=!0,resetOnRefCountZero:n=!0}=r;return i=>{let s,p,f,c=0,h=!1,b=!1,E=()=>{p?.unsubscribe(),p=void 0},d=()=>{E(),s=f=void 0,h=b=!1},y=()=>{let _=s;d(),_?.unsubscribe()};return l((_,F)=>{c++,!b&&!h&&E();let S=f=f??e();F.add(()=>{c--,c===0&&!b&&!h&&(p=qr(y,n))}),S.subscribe(F),!s&&c>0&&(s=new A({next:X=>S.next(X),error:X=>{b=!0,E(),p=qr(d,t,X),S.error(X)},complete:()=>{h=!0,E(),p=qr(d,o),S.complete()}}),x(_).subscribe(s))})(i)}}function qr(r,e,...t){if(e===!0){r();return}if(e===!1)return;let o=new A({next:()=>{o.unsubscribe(),r()}});return x(e(...t)).subscribe(o)}function dt(r,e,t){let o,n=!1;return r&&typeof r=="object"?{bufferSize:o=1/0,windowTime:e=1/0,refCount:n=!1,scheduler:t}=r:o=r??1/0,_e({connector:()=>new J(o,e,t),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:n})}function we(...r){let e=T(r);return l((t,o)=>{(e?wr(r,t,e):wr(r,t)).subscribe(o)})}function Se(r,e){return l((t,o)=>{let n=null,i=0,s=!1,p=()=>s&&!n&&o.complete();t.subscribe(m(o,f=>{n?.unsubscribe();let c=0,h=i++;x(r(f,h)).subscribe(n=m(o,b=>o.next(e?e(f,b,h,c++):b),()=>{n=null,p()}))},()=>{s=!0,p()}))})}function xt(r){return l((e,t)=>{x(r).subscribe(m(t,()=>t.complete(),R)),!t.closed&&e.subscribe(t)})}function ge(r,e,t){let o=u(r)||e||t?{next:r,error:e,complete:t}:r;return o?l((n,i)=>{var s;(s=o.subscribe)===null||s===void 0||s.call(o);let p=!0;n.subscribe(m(i,f=>{var c;(c=o.next)===null||c===void 0||c.call(o,f),i.next(f)},()=>{var f;p=!1,(f=o.complete)===null||f===void 0||f.call(o),i.complete()},f=>{var c;p=!1,(c=o.error)===null||c===void 0||c.call(o,f),i.error(f)},()=>{var f,c;p&&((f=o.unsubscribe)===null||f===void 0||f.call(o)),(c=o.finalize)===null||c===void 0||c.call(o)}))}):v}var gr=class extends w{constructor(e,t){super()}schedule(e,t=0){return this}};var Z={setInterval(r,e,...t){let{delegate:o}=Z;return o?.setInterval?o.setInterval(r,e,...t):setInterval(r,e,...t)},clearInterval(r){let{delegate:e}=Z;return(e?.clearInterval||clearInterval)(r)},delegate:void 0};var Er=class extends gr{constructor(e,t){super(e,t),this.scheduler=e,this.work=t,this.pending=!1}schedule(e,t=0){var o;if(this.closed)return this;this.state=e;let n=this.id,i=this.scheduler;return n!=null&&(this.id=this.recycleAsyncId(i,n,t)),this.pending=!0,this.delay=t,this.id=(o=this.id)!==null&&o!==void 0?o:this.requestAsyncId(i,this.id,t),this}requestAsyncId(e,t,o=0){return Z.setInterval(e.flush.bind(e,this),o)}recycleAsyncId(e,t,o=0){if(o!=null&&this.delay===o&&this.pending===!1)return t;t!=null&&Z.clearInterval(t)}execute(e,t){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;let o=this._execute(e,t);if(o)return o;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(e,t){let o=!1,n;try{this.work(e)}catch(i){o=!0,n=i||new Error("Scheduled action threw falsy error")}if(o)return this.unsubscribe(),n}unsubscribe(){if(!this.closed){let{id:e,scheduler:t}=this,{actions:o}=t;this.work=this.state=this.scheduler=null,this.pending=!1,k(o,this),e!=null&&(this.id=this.recycleAsyncId(t,e,null)),this.delay=null,super.unsubscribe()}}};var K=class r{constructor(e,t=r.now){this.schedulerActionCtor=e,this.now=t}schedule(e,t=0,o){return new this.schedulerActionCtor(this,e).schedule(o,t)}};K.now=H.now;var Or=class extends K{constructor(e,t=K.now){super(e,t),this.actions=[],this._active=!1}flush(e){let{actions:t}=this;if(this._active){t.push(e);return}let o;this._active=!0;do if(o=e.execute(e.state,e.delay))break;while(e=t.shift());if(this._active=!1,o){for(;e=t.shift();)e.unsubscribe();throw o}}};var Q=new Or(Er),Ee=Q;function Oe(r){return r instanceof Date&&!isNaN(r)}function Ie(r=0,e,t=Ee){let o=-1;return e!=null&&(vr(e)?t=e:o=e),new a(n=>{let i=Oe(r)?+r-t.now():r;i<0&&(i=0);let s=0;return t.schedule(function(){n.closed||(n.next(s++),0<=o?this.schedule(void 0,o):n.complete())},i)})}function bt(...r){let e=T(r),t=me(r,1/0),o=r;return o.length?o.length===1?x(o[0]):$(t)(I(o,e)):W}function yt(r,e=Q){return l((t,o)=>{let n=null,i=null,s=null,p=()=>{if(n){n.unsubscribe(),n=null;let c=i;i=null,o.next(c)}};function f(){let c=s+r,h=e.now();if(h{i=c,s=e.now(),n||(n=e.schedule(f,r),o.add(n))},()=>{p(),o.complete()},void 0,()=>{i=n=null}))})}function vt(r,e=v){return r=r??_t,l((t,o)=>{let n,i=!0;t.subscribe(m(o,s=>{let p=e(s);(i||!r(n,p))&&(i=!1,n=p,o.next(s))}))})}function _t(r,e){return r===e}function wt(r){return C((e,t)=>r<=t)}function Te(r,e){return l((t,o)=>{let{leading:n=!0,trailing:i=!1}=e??{},s=!1,p=null,f=null,c=!1,h=()=>{f?.unsubscribe(),f=null,i&&(d(),c&&o.complete())},b=()=>{f=null,c&&o.complete()},E=y=>f=x(r(y)).subscribe(m(o,h,b)),d=()=>{if(s){s=!1;let y=p;p=null,o.next(y),!c&&E(y)}};t.subscribe(m(o,y=>{s=!0,p=y,!(f&&!f.closed)&&(n?d():E(y))},()=>{c=!0,!(i&&s&&f&&!f.closed)&&o.complete()}))})}function Ae(r,e=Q,t){let o=Ie(r,e);return Te(()=>o,t)}function St(...r){let e=G(r);return l((t,o)=>{let n=r.length,i=new Array(n),s=r.map(()=>!1),p=!1;for(let f=0;f{i[f]=c,!p&&!s[f]&&(s[f]=!0,(p=s.every(v))&&(s=null))},R));t.subscribe(m(o,f=>{if(p){let c=[f,...i];o.next(e?e(...c):c)}}))})}export{gt as a,Et as b,Ot as c,It as d,Tt as e,At as f,Pt as g,w as h,Ar as i,a as j,Lr as k,Wr as l,P as m,Ur as n,J as o,W as p,I as q,Be as r,He as s,Je as t,D as u,j as v,nt as w,z as x,$ as y,wr as z,it as A,bt as B,C,be as D,ft as E,pt as F,yt as G,B as H,Yr as I,ct as J,vt as K,lt as L,ut as M,Nr as N,at as O,ht as P,dt as Q,wt as R,we as S,Se as T,xt as U,ge as V,Ae as W,St as X}; diff --git a/docs/chunk-TI7GFU47.js b/docs/chunk-TI7GFU47.js new file mode 100644 index 0000000..161e78e --- /dev/null +++ b/docs/chunk-TI7GFU47.js @@ -0,0 +1,15 @@ +import{a as Le,b as Ct,d as E1,e as Br,g as Ve}from"./chunk-T4BLILQN.js";var Lm=E1((X9,Om)=>{"use strict";Om.exports=XMLHttpRequest});var J;(function(e){function t(a,c,u){return{kind:"variable",name:a,type:c,isConstraint:u}}e.Variable=t;function n(a,c,u){return{kind:"value",namespace:a,name:c,parent:u}}e.Value=n;function r(a,c,u,l){return{kind:"container",namespace:a,name:c,child:u,alias:l}}e.Container=r;function i(a){return{kind:"union",types:a}}e.Union=i;function o(a,c,u,l){let m=Object.create(null);for(let f of l)m[f]=!0;return{kind:"oneof",namespace:a,name:c,type:u,values:m}}e.OneOf=o,e.Any={kind:"any"},e.AnyValue={kind:"any-value"},e.Num=n("","Number"),e.Str=n("","String"),e.Bool=o("","Bool",e.Str,["true","false"]);function s({values:a}){return Object.keys(a).sort()}e.oneOfValues=s})(J||(J={}));var ni;(function(e){function t(c){return{name:c}}e.Symbol=t;function n(c,u){return u?{head:c,args:u}:{head:c}}e.Apply=n;function r(c){return!!c&&Array.isArray(c)}e.isArgumentsArray=r;function i(c){return!!c&&!Array.isArray(c)}e.isArgumentsMap=i;function o(c){return!s(c)&&!a(c)}e.isLiteral=o;function s(c){return!!c&&!!c.head&&typeof c=="object"}e.isApply=s;function a(c){return!!c&&typeof c.name=="string"}e.isSymbol=a})(ni||(ni={}));function be(e,t){let{description:n=void 0,isOptional:r=!1,isRest:i=!1,defaultValue:o=void 0}=t||{};return{type:e,isOptional:r,isRest:i,defaultValue:o,description:n}}var ze;(function(e){e.None=t({});function t(r){return{kind:"dictionary",map:r,"@type":0}}e.Dictionary=t;function n(r,i){let{nonEmpty:o=!1}=i||{};return{kind:"list",type:r,nonEmpty:o,"@type":0}}e.List=n})(ze||(ze={}));function Ou(e,t,n,r){let i=function(o){return ni.Apply(ni.Symbol(i.id),o)};return i.info={namespace:"",name:e,description:r},i.id="",i.args=t,i.type=n,i}function V3(e,t,n,r){let i=function(o){return ni.Apply(ni.Symbol(i.id),o)};return i.info={namespace:e,name:t,description:r},i.id=`${e}.${t}`,i.args=ze.None,i.type=n,i}function no(e){let t=e;return typeof t=="function"&&!!t.info&&!!t.args&&typeof t.info.namespace=="string"&&!!t.type}function Ke(e,t,n){return Ou("",e,t,n)}function Fo(e){qu("","",e)}function Oo(e){let t=[];return Gu(e,t),t}function Lu(e){let t=/([a-z])([A-Z])([a-z]|$)/g;return e.replace(t,(n,r,i,o)=>`${r}-${i.toLocaleLowerCase()}${o}`).replace(t,(n,r,i,o)=>`${r}-${i.toLocaleLowerCase()}${o}`)}function qu(e,t,n){if(no(n)){n.info.namespace=e,n.info.name=n.info.name||Lu(t),n.id=`${n.info.namespace}.${n.info.name}`;return}let r=`${n["@namespace"]||Lu(t)}`,i=e?`${e}.${r}`:r;for(let o of Object.keys(n))typeof n[o]!="object"&&!no(n[o])||qu(i,o,n[o])}function Gu(e,t){if(no(e)){t.push(e);return}for(let n of Object.keys(e))typeof e[n]!="object"&&!no(e[n])||Gu(e[n],t)}var at;(function(e){e.AnyVar=J.Variable("a",J.Any),e.AnyValueVar=J.Variable("a",J.Any),e.ConstrainedVar=J.Variable("a",J.Any,!0),e.Regex=J.Value("Core","Regex"),e.Set=t=>J.Container("Core","Set",t||e.AnyValueVar),e.List=t=>J.Container("Core","List",t||e.AnyVar),e.Fn=(t,n)=>J.Container("Core","Fn",t||e.AnyVar,n),e.Flags=(t,n)=>J.Container("Core","Flags",t,n),e.BitFlags=e.Flags(J.Num,"BitFlags")})(at||(at={}));function Vt(e,t){return Ke(ze.Dictionary({0:be(e)}),e,t)}function Er(e,t){return Ke(ze.List(e,{nonEmpty:!0}),e,t)}function wn(e,t,n){return Ke(ze.Dictionary({0:be(e),1:be(e)}),t,n)}var $3=ze.Dictionary({0:be(J.Num),1:be(J.Num)}),D1={"@header":"Types",bool:Ke(ze.Dictionary({0:be(J.AnyValue)}),J.Bool,"Convert a value to boolean."),num:Ke(ze.Dictionary({0:be(J.AnyValue)}),J.Num,"Convert a value to number."),str:Ke(ze.Dictionary({0:be(J.AnyValue)}),J.Str,"Convert a value to string."),regex:Ke(ze.Dictionary({0:be(J.Str,{description:"Expression"}),1:be(J.Str,{isOptional:!0,description:"Flags, e.g. 'i' for ignore case"})}),at.Regex,"Creates a regular expression from a string using the ECMAscript syntax."),list:Ke(ze.List(at.AnyVar),at.List()),set:Ke(ze.List(at.AnyValueVar),at.Set()),bitflags:Ke(ze.Dictionary({0:be(J.Num)}),at.BitFlags,"Interpret a number as bitflags."),compositeKey:Ke(ze.List(J.AnyValue),J.AnyValue)},M1={"@header":"Logic",not:Vt(J.Bool),and:Er(J.Bool),or:Er(J.Bool)},N1={"@header":"Control",eval:Ke(ze.Dictionary({0:be(at.Fn(at.AnyVar))}),at.AnyVar,"Evaluate a function."),fn:Ke(ze.Dictionary({0:be(at.AnyVar)}),at.Fn(at.AnyVar),'Wrap an expression to a "lazy" function.'),if:Ke(ze.Dictionary({0:be(J.Bool,{description:"Condition"}),1:be(J.Variable("a",J.Any),{description:"If true"}),2:be(J.Variable("b",J.Any),{description:"If false"})}),J.Union([J.Variable("a",J.Any),J.Variable("b",J.Any)])),assoc:Ke(ze.Dictionary({0:be(J.Str,{description:"Name"}),1:be(J.Variable("a",J.Any),{description:"Value to assign"})}),J.Variable("a",J.Any))},k1={"@header":"Relational",eq:wn(J.Variable("a",J.AnyValue,!0),J.Bool),neq:wn(J.Variable("a",J.AnyValue,!0),J.Bool),lt:wn(J.Num,J.Bool),lte:wn(J.Num,J.Bool),gr:wn(J.Num,J.Bool),gre:wn(J.Num,J.Bool),inRange:Ke(ze.Dictionary({0:be(J.Num,{description:"Value to test"}),1:be(J.Num,{description:"Minimum value"}),2:be(J.Num,{description:"Maximum value"})}),J.Bool,"Check if the value of the 1st argument is >= 2nd and <= 3rd.")},U1={"@header":"Math",add:Er(J.Num),sub:Er(J.Num),mult:Er(J.Num),div:wn(J.Num,J.Num),pow:wn(J.Num,J.Num),mod:wn(J.Num,J.Num),min:Er(J.Num),max:Er(J.Num),cantorPairing:wn(J.Num,J.Num),sortedCantorPairing:wn(J.Num,J.Num),invertCantorPairing:Ke(ze.Dictionary({0:be(J.Num)}),at.List(J.Num)),floor:Vt(J.Num),ceil:Vt(J.Num),roundInt:Vt(J.Num),trunc:Vt(J.Num),abs:Vt(J.Num),sign:Vt(J.Num),sqrt:Vt(J.Num),cbrt:Vt(J.Num),sin:Vt(J.Num),cos:Vt(J.Num),tan:Vt(J.Num),asin:Vt(J.Num),acos:Vt(J.Num),atan:Vt(J.Num),sinh:Vt(J.Num),cosh:Vt(J.Num),tanh:Vt(J.Num),exp:Vt(J.Num),log:Vt(J.Num),log10:Vt(J.Num),atan2:wn(J.Num,J.Num)},R1={"@header":"Strings",concat:Er(J.Str),match:Ke(ze.Dictionary({0:be(at.Regex),1:be(J.Str)}),J.Bool)},T1={"@header":"Lists",getAt:Ke(ze.Dictionary({0:be(at.List()),1:be(J.Num)}),at.AnyVar),equal:Ke(ze.Dictionary({0:be(at.List()),1:be(at.List())}),J.Bool)},F1={"@header":"Sets",has:Ke(ze.Dictionary({0:be(at.Set(at.ConstrainedVar)),1:be(at.ConstrainedVar)}),J.Bool,"Check if the the 1st argument includes the value of the 2nd."),isSubset:Ke(ze.Dictionary({0:be(at.Set(at.ConstrainedVar)),1:be(at.Set(at.ConstrainedVar))}),J.Bool,"Check if the the 1st argument is a subset of the 2nd.")},O1={"@header":"Flags",hasAny:Ke(ze.Dictionary({0:be(at.Flags(at.ConstrainedVar)),1:be(at.Flags(at.ConstrainedVar))}),J.Bool,"Check if the the 1st argument has at least one of the 2nd one's flags."),hasAll:Ke(ze.Dictionary({0:be(at.Flags(at.ConstrainedVar)),1:be(at.Flags(at.ConstrainedVar))}),J.Bool,"Check if the the 1st argument has all 2nd one's flags.")},Lo={"@header":"Language Primitives",type:D1,logic:M1,ctrl:N1,rel:k1,math:U1,str:R1,list:T1,set:F1,flags:O1};Fo(Lo);var L1=Oo(Lo),Q3=function(){let e=Object.create(null);for(let t of L1)e[t.id]=t;return e}();var Te;(function(e){e.ElementSymbol=J.Value("Structure","ElementSymbol"),e.AtomName=J.Value("Structure","AtomName"),e.BondFlag=J.OneOf("Structure","BondFlag",J.Str,["covalent","metallic","ion","hydrogen","sulfide","computed","aromatic"]),e.BondFlags=at.Flags(e.BondFlag,"BondFlags"),e.SecondaryStructureFlag=J.OneOf("Structure","SecondaryStructureFlag",J.Str,["alpha","beta","3-10","pi","sheet","strand","helix","turn","none"]),e.SecondaryStructureFlags=at.Flags(e.SecondaryStructureFlag,"SecondaryStructureFlag"),e.RingFingerprint=J.Value("Structure","RingFingerprint"),e.EntityType=J.OneOf("Structure","EntityType",J.Str,["polymer","non-polymer","water","branched"]),e.EntitySubtype=J.OneOf("Structure","EntitySubtype",J.Str,["other","polypeptide(D)","polypeptide(L)","polydeoxyribonucleotide","polyribonucleotide","polydeoxyribonucleotide/polyribonucleotide hybrid","cyclic-pseudo-peptide","peptide nucleic acid","oligosaccharide"]),e.ObjectPrimitive=J.OneOf("Structure","ObjectPrimitive",J.Str,["atomistic","sphere","gaussian","other"]),e.ResidueId=J.Value("Structure","ResidueId"),e.ElementSet=J.Value("Structure","ElementSet"),e.ElementSelection=J.Value("Structure","ElementSelection"),e.ElementReference=J.Value("Structure","ElementReference"),e.ElementSelectionQuery=at.Fn(e.ElementSelection,"ElementSelectionQuery")})(Te||(Te={}));var G1={"@header":"Types",elementSymbol:Ke(ze.Dictionary({0:be(J.Str)}),Te.ElementSymbol,"Create element symbol representation from a string value."),atomName:Ke(ze.Dictionary({0:be(J.AnyValue)}),Te.AtomName,"Convert a value to an atom name."),entityType:Ke(ze.Dictionary({0:be(Te.EntityType)}),Te.EntityType,`Create normalized representation of entity type: ${J.oneOfValues(Te.EntityType).join(", ")}.`),bondFlags:Ke(ze.List(Te.BondFlag),Te.BondFlags,`Create bond flags representation from a list of strings. Allowed flags: ${J.oneOfValues(Te.BondFlag).join(", ")}.`),ringFingerprint:Ke(ze.List(Te.ElementSymbol,{nonEmpty:!0}),Te.RingFingerprint,"Create ring fingerprint from the supplied atom element list."),secondaryStructureFlags:Ke(ze.List(Te.SecondaryStructureFlag),Te.SecondaryStructureFlags,`Create secondary structure flags representation from a list of strings. Allowed flags: ${J.oneOfValues(Te.SecondaryStructureFlag).join(", ")}.`),authResidueId:Ke(ze.Dictionary({0:be(J.Str,{description:"auth_asym_id"}),1:be(J.Num,{description:"auth_seq_id"}),2:be(J.Str,{description:"pdbx_PDB_ins_code",isOptional:!0})}),Te.ResidueId,'Residue identifier based on "auth_" annotation.'),labelResidueId:Ke(ze.Dictionary({0:be(J.Str,{description:"label_entity_id"}),1:be(J.Str,{description:"label_asym_id"}),2:be(J.Num,{description:"label_seq_id"}),3:be(J.Str,{description:"pdbx_PDB_ins_code",isOptional:!0})}),Te.ResidueId,`Residue identifier based on mmCIF's "label_" annotation.`)},H1={"@header":"Iteration Slots",element:Ke(ze.None,Te.ElementReference,"A reference to the current element."),elementSetReduce:Ke(ze.None,J.Variable("a",J.AnyValue,!0),"Current value of the element set reducer.")},z1={"@header":"Generators",all:Ke(ze.None,Te.ElementSelectionQuery,"The entire structure."),atomGroups:Ke(ze.Dictionary({"entity-test":be(J.Bool,{isOptional:!0,defaultValue:!0,description:"Test for the 1st atom of every entity"}),"chain-test":be(J.Bool,{isOptional:!0,defaultValue:!0,description:"Test for the 1st atom of every chain"}),"residue-test":be(J.Bool,{isOptional:!0,defaultValue:!0,description:"Test for the 1st atom every residue"}),"atom-test":be(J.Bool,{isOptional:!0,defaultValue:!0}),"group-by":be(J.Any,{isOptional:!0,defaultValue:"atom-key",description:"Group atoms to sets based on this property. Default: each atom has its own set"})}),Te.ElementSelectionQuery,"Return all atoms for which the tests are satisfied, grouped into sets."),bondedAtomicPairs:Ke(ze.Dictionary({0:be(J.Bool,{isOptional:!0,defaultValue:"true for covalent bonds",description:"Test each bond with this predicate. Each bond is visited twice with swapped atom order."})}),Te.ElementSelectionQuery,"Return all pairs of atoms for which the test is satisfied."),rings:Ke(ze.Dictionary({fingerprint:be(Te.RingFingerprint,{isOptional:!0}),"only-aromatic":be(J.Bool,{isOptional:!0,defaultValue:!1})}),Te.ElementSelectionQuery,"Return all rings or those with the specified fingerprint and/or only aromatic rings."),queryInSelection:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),query:be(Te.ElementSelectionQuery),"in-complement":be(J.Bool,{isOptional:!0,defaultValue:!1})}),Te.ElementSelectionQuery,"Executes query only on atoms that are in the source selection."),empty:Ke(ze.None,Te.ElementSelectionQuery,"Nada.")},V1={"@header":"Selection Modifications",queryEach:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),query:be(Te.ElementSelectionQuery)}),Te.ElementSelectionQuery,"Query every atom set in the input selection separately."),intersectBy:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),by:be(Te.ElementSelectionQuery)}),Te.ElementSelectionQuery,"Intersect each atom set from the first sequence from atoms in the second one."),exceptBy:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),by:be(Te.ElementSelectionQuery)}),Te.ElementSelectionQuery,"Remove all atoms from 'selection' that occur in 'by'."),unionBy:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),by:be(Te.ElementSelectionQuery)}),Te.ElementSelectionQuery,"For each atom set A in the orginal sequence, combine all atoms sets in the target selection that intersect with A."),union:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery)}),Te.ElementSelectionQuery,"Collects all atom sets in the sequence into a single atom set."),cluster:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),"min-distance":be(J.Num,{isOptional:!0,defaultValue:0}),"max-distance":be(J.Num),"min-size":be(J.Num,{description:"Minimal number of sets to merge, must be at least 2",isOptional:!0,defaultValue:2}),"max-size":be(J.Num,{description:"Maximal number of sets to merge, if not set, no limit",isOptional:!0})}),Te.ElementSelectionQuery,"Combines atom sets that have mutual distance in the interval [min-radius, max-radius]. Minimum/maximum size determines how many atom sets can be combined."),includeSurroundings:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),radius:be(J.Num),"atom-radius":be(J.Num,{isOptional:!0,defaultValue:0,description:"Value added to each atom before the distance check, for example VDW radius. Using this argument is computationally demanding."}),"as-whole-residues":be(J.Bool,{isOptional:!0})}),Te.ElementSelectionQuery,"For each atom set in the selection, include all surrouding atoms/residues that are within the specified radius."),surroundingLigands:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),radius:be(J.Num),"include-water":be(J.Bool,{isOptional:!0,defaultValue:!0})}),Te.ElementSelectionQuery,"Find all ligands components around the source query."),includeConnected:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),"bond-test":be(J.Bool,{isOptional:!0,defaultValue:"true for covalent bonds"}),"layer-count":be(J.Num,{isOptional:!0,defaultValue:1,description:"Number of bonded layers to include."}),"fixed-point":be(J.Bool,{isOptional:!0,defaultValue:!1,description:"Continue adding layers as long as new connections exist."}),"as-whole-residues":be(J.Bool,{isOptional:!0})}),Te.ElementSelectionQuery,"Pick all atom sets that are connected to the target."),wholeResidues:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery)}),Te.ElementSelectionQuery,"Expand the selection to whole residues."),expandProperty:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),property:be(J.AnyValue)}),Te.ElementSelectionQuery,"To each atom set in the selection, add all atoms that have the same property value that was already present in the set.")},K1={"@header":"Selection Filters",pick:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),test:be(J.Bool)}),Te.ElementSelectionQuery,"Pick all atom sets that satisfy the test."),first:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery)}),Te.ElementSelectionQuery,"Take the 1st atom set in the sequence."),withSameAtomProperties:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),source:be(Te.ElementSelectionQuery),property:be(J.Any)}),Te.ElementSelectionQuery,"Pick all atom sets for which the set of given atom properties is a subset of the source properties."),intersectedBy:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),by:be(Te.ElementSelectionQuery)}),Te.ElementSelectionQuery,"Pick all atom sets that have non-zero intersection with the target."),within:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),target:be(Te.ElementSelectionQuery),"min-radius":be(J.Num,{isOptional:!0,defaultValue:0}),"max-radius":be(J.Num),"atom-radius":be(J.Num,{isOptional:!0,defaultValue:0,description:"Value added to each atom before the distance check, for example VDW radius. Using this argument is computationally demanding."}),invert:be(J.Bool,{isOptional:!0,defaultValue:!1,description:"If true, pick only atom sets that are further than the specified radius."})}),Te.ElementSelectionQuery,"Pick all atom sets from selection that have any atom within the radius of any atom from target."),isConnectedTo:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery),target:be(Te.ElementSelectionQuery),"bond-test":be(J.Bool,{isOptional:!0,defaultValue:"true for covalent bonds"}),disjunct:be(J.Bool,{isOptional:!0,defaultValue:!0,description:"If true, there must exist a bond to an atom that lies outside the given atom set to pass test."}),invert:be(J.Bool,{isOptional:!0,defaultValue:!1,description:"If true, return atom sets that are not connected."})}),Te.ElementSelectionQuery,"Pick all atom sets that are connected to the target.")},j1={"@header":"Selection Combinators",intersect:Ke(ze.List(Te.ElementSelectionQuery),Te.ElementSelectionQuery,"Return all unique atom sets that appear in all of the source selections."),merge:Ke(ze.List(Te.ElementSelectionQuery),Te.ElementSelectionQuery,"Merges multiple selections into a single one. Only unique atom sets are kept."),distanceCluster:Ke(ze.Dictionary({matrix:be(at.List(at.List(J.Num)),{description:"Distance matrix, represented as list of rows (num[][])). Lower triangle is min distance, upper triangle is max distance."}),selections:be(at.List(Te.ElementSelectionQuery),{description:"A list of held selections."})}),Te.ElementSelectionQuery,"Pick combinations of atom sets from the source sequences that are mutually within distances specified by a matrix.")},Y1={"@header":"Atom Sets",atomCount:Ke(ze.None,J.Num),countQuery:Ke(ze.Dictionary({0:be(Te.ElementSelectionQuery)}),J.Num,"Counts the number of occurences of a specific query inside the current atom set."),reduce:Ke(ze.Dictionary({initial:be(J.Variable("a",J.AnyValue,!0),{description:"Initial value assigned to slot.atom-set-reduce. Current atom is set to the 1st atom of the current set for this."}),value:be(J.Variable("a",J.AnyValue,!0),{description:"Expression executed for each atom in the set"})}),J.Variable("a",J.AnyValue,!0),"Execute the value expression for each atom in the current atom set and return the result. Works the same way as Array.reduce in JavaScript (``result = value(value(...value(initial)))``)"),propertySet:Ke(ze.Dictionary({0:be(at.ConstrainedVar)}),at.Set(at.ConstrainedVar),"Returns a set with all values of the given property in the current atom set.")},Z1={"@header":"Atom Properties",core:{"@header":"Core Properties",elementSymbol:ct(Te.ElementSymbol),vdw:ct(J.Num,"Van der Waals radius"),mass:ct(J.Num,"Atomic weight"),atomicNumber:ct(J.Num,"Atomic number"),x:ct(J.Num,"Cartesian X coordinate"),y:ct(J.Num,"Cartesian Y coordinate"),z:ct(J.Num,"Cartesian Z coordinate"),atomKey:ct(J.AnyValue,"Unique value for each atom. Main use case is grouping of atoms."),bondCount:Ke(ze.Dictionary({0:be(Te.ElementReference,{isOptional:!0,defaultValue:"slot.current-atom"}),flags:be(Te.BondFlags,{isOptional:!0,defaultValue:"covalent"})}),J.Num,"Number of bonds (by default only covalent bonds are counted)."),sourceIndex:ct(J.Num,"Index of the atom/element in the input file."),operatorName:ct(J.Str,"Name of the symmetry operator applied to this element."),operatorKey:ct(J.Num,"Key of the symmetry operator applied to this element."),modelIndex:ct(J.Num,"Index of the model in the input file."),modelLabel:ct(J.Str,"Label/header of the model in the input file.")},topology:{connectedComponentKey:ct(J.AnyValue,"Unique value for each connected component.")},macromolecular:{"@header":"Macromolecular Properties (derived from the mmCIF format)",authResidueId:ct(Te.ResidueId,"type.auth-residue-id symbol executed on current atom's residue"),labelResidueId:ct(Te.ResidueId,"type.label-residue-id symbol executed on current atom's residue"),residueKey:ct(J.AnyValue,"Unique value for each tuple ``(label_entity_id,auth_asym_id, auth_seq_id, pdbx_PDB_ins_code)``, main use case is grouping of atoms"),chainKey:ct(J.AnyValue,"Unique value for each tuple ``(label_entity_id, auth_asym_id)``, main use case is grouping of atoms"),entityKey:ct(J.AnyValue,"Unique value for each tuple ``label_entity_id``, main use case is grouping of atoms"),isHet:ct(J.Bool,"Equivalent to atom_site.group_PDB !== ATOM"),id:ct(J.Num,"_atom_site.id"),label_atom_id:ct(Te.AtomName),label_alt_id:ct(J.Str),label_comp_id:ct(J.Str),label_asym_id:ct(J.Str),label_entity_id:ct(J.Str),label_seq_id:ct(J.Num),auth_atom_id:ct(Te.AtomName),auth_comp_id:ct(J.Str),auth_asym_id:ct(J.Str),auth_seq_id:ct(J.Num),pdbx_PDB_ins_code:ct(J.Str),pdbx_formal_charge:ct(J.Num),occupancy:ct(J.Num),B_iso_or_equiv:ct(J.Num),entityType:ct(Te.EntityType,"Type of the entity as defined in mmCIF (polymer, non-polymer, branched, water)"),entitySubtype:ct(Te.EntitySubtype,"Subtype of the entity as defined in mmCIF _entity_poly.type and _pdbx_entity_branch.type (other, polypeptide(D), polypeptide(L), polydeoxyribonucleotide, polyribonucleotide, polydeoxyribonucleotide/polyribonucleotide hybrid, cyclic-pseudo-peptide, peptide nucleic acid, oligosaccharide)"),entityPrdId:ct(J.Str,"The PRD ID of the entity."),entityDescription:ct(at.List(J.Str)),objectPrimitive:ct(Te.ObjectPrimitive,"Type of the primitive object used to model this segment as defined in mmCIF/IHM (atomistic, sphere, gaussian, other)"),secondaryStructureKey:ct(J.AnyValue,"Unique value for each secondary structure element."),secondaryStructureFlags:ct(Te.SecondaryStructureFlags),isModified:ct(J.Bool,"True if the atom belongs to modification of a standard residue."),modifiedParentName:ct(J.Str,"'3-letter' code of the modifed parent residue."),isNonStandard:ct(J.Bool,"True if this is a non-standard residue."),chemCompType:ct(J.Str,"Type of the chemical component as defined in mmCIF.")}},W1={"@header":"Bond Properties",flags:Si(Te.BondFlags),order:Si(J.Num),key:Si(J.Num),length:Si(J.Num),atomA:Si(Te.ElementReference),atomB:Si(Te.ElementReference)};function ct(e,t){return Ke(ze.Dictionary({0:be(Te.ElementReference,{isOptional:!0,defaultValue:"slot.current-atom"})}),e,t)}function Si(e,t){return Ke(ze.None,e,t)}var Hu={"@header":"Structure Queries",type:G1,slot:H1,generator:z1,modifier:V1,filter:K1,combinator:j1,atomSet:Y1,atomProperty:Z1,bondProperty:W1};var $1={"@header":"Generators",bundleElement:Ke(ze.Dictionary({groupedUnits:be(J.Any),set:be(J.Any),ranges:be(J.Any)}),J.Any),bundle:Ke(ze.Dictionary({elements:be(J.Any)}),Te.ElementSelectionQuery,"A selection with single structure containing represented by the bundle."),current:Ke(ze.None,Te.ElementSelectionQuery,"Current selection provided by the query context. Avoid using this in State Transforms.")},zu={"@header":"Internal Queries",generator:$1};var Ii={core:Lo,structureQuery:Hu,internal:zu};Fo(Ii);var Q1=Oo(Ii),lA=function(){let e=Object.create(null);for(let t of Q1)e[t.id]=t;return e}();var St;(function(e){e.core=Ii.core,e.struct=Ii.structureQuery,e.internal=Ii.internal;function t(g){return e.struct.type.atomName([g])}e.atomName=t;function n(g){return e.struct.type.elementSymbol([g])}e.es=n;function r(...g){return e.core.type.list(g)}e.list=r;function i(...g){return e.core.type.set(g)}e.set=i;function o(g,C){return e.core.type.regex([g,C])}e.re=o;function s(g){return e.core.ctrl.fn([g])}e.fn=s;function a(g){return e.core.ctrl.eval([g])}e.evaluate=a;let c=e.struct.atomProperty.core,u=e.struct.atomProperty.macromolecular,l=e.struct.atomProperty.topology;function m(g){return c[g]()}e.acp=m;function f(g){return l[g]()}e.atp=f;function d(g){return u[g]()}e.ammp=d;let p=e.struct.atomSet.propertySet;function h(g){return p([m(g)])}e.acpSet=h;function x(g){return p([f(g)])}e.atpSet=x;function y(g){return p([d(g)])}e.ammpSet=y})(St||(St={}));var ya=class{add(t){let n=this.getHash(t);if(this.byHash.has(n)){let r=this.byHash.get(n);for(let i=0,o=r.length;iwo,Location:()=>yt,Loci:()=>Hr,Stats:()=>ku,atomicProperty:()=>w3,chainIndex:()=>B3,coarseProperty:()=>v3,entityIndex:()=>E3,property:()=>I3,residueIndex:()=>P3});function Ht(e,t,n){return Math.abs(e-t)<=n}function ep(e,t,n){return(e-t)/(n-t)}function Fn(e,t,n){return Math.max(t,Math.min(n,e))}function tp(e){return Fn(e,0,1)}function qo(e,t,n){return e+(t-e)*n}function Go(e,t,n,r,i,o){let s=(n-e)*o,a=(r-t)*o,c=i*i,u=i*c;return(2*t-2*n+s+a)*u+(-3*t+3*n-2*s-a)*c+s*i+t}function Ho(e,t,n,r){let i=1-r;return i*i*e+2*i*r*t+r*r*n}function CA(e,t,n){return n=tp(ep(n,e,t)),n*n*(3-2*n)}var Aa=isFinite;function N(){return N.zero()}(function(e){function t(){let G=[.1,0,0];return G[0]=0,G}e.zero=t;function n(G){let Y=t();return Y[0]=G[0],Y[1]=G[1],Y[2]=G[2],Y}e.clone=n;function r(G){return Aa(G[0])&&Aa(G[1])&&Aa(G[2])}e.isFinite=r;function i(G){return isNaN(G[0])||isNaN(G[1])||isNaN(G[2])}e.hasNaN=i;function o(G){return G[0]=NaN,G[1]=NaN,G[2]=NaN,G}e.setNaN=o;function s(G){return l(G.x,G.y,G.z)}e.fromObj=s;function a(G){return{x:G[0],y:G[1],z:G[2]}}e.toObj=a;function c(G,Y,X){return G[0]=Y[X+0],G[1]=Y[X+1],G[2]=Y[X+2],G}e.fromArray=c;function u(G,Y,X){return Y[X+0]=G[0],Y[X+1]=G[1],Y[X+2]=G[2],Y}e.toArray=u;function l(G,Y,X){let ye=t();return ye[0]=G,ye[1]=Y,ye[2]=X,ye}e.create=l;function m(G){let Y=t();return Y[0]=G[0],Y[1]=G[1],Y[2]=G[2],Y}e.ofArray=m;function f(G,Y,X,ye){return G[0]=Y,G[1]=X,G[2]=ye,G}e.set=f;function d(G,Y){return G[0]=Y[0],G[1]=Y[1],G[2]=Y[2],G}e.copy=d;function p(G,Y,X){return G[0]=Y[0]+X[0],G[1]=Y[1]+X[1],G[2]=Y[2]+X[2],G}e.add=p;function h(G,Y,X){return G[0]=Y[0]-X[0],G[1]=Y[1]-X[1],G[2]=Y[2]-X[2],G}e.sub=h;function x(G,Y,X){return G[0]=Y[0]*X[0],G[1]=Y[1]*X[1],G[2]=Y[2]*X[2],G}e.mul=x;function y(G,Y,X){return G[0]=Y[0]/X[0],G[1]=Y[1]/X[1],G[2]=Y[2]/X[2],G}e.div=y;function g(G,Y,X){return G[0]=Y[0]*X,G[1]=Y[1]*X,G[2]=Y[2]*X,G}e.scale=g;function C(G,Y,X,ye){return G[0]=Y[0]+X[0]*ye,G[1]=Y[1]+X[1]*ye,G[2]=Y[2]+X[2]*ye,G}e.scaleAndAdd=C;function _(G,Y,X,ye){return G[0]=Y[0]-X[0]*ye,G[1]=Y[1]-X[1]*ye,G[2]=Y[2]-X[2]*ye,G}e.scaleAndSub=_;function b(G,Y,X){return G[0]=Y[0]+X,G[1]=Y[1]+X,G[2]=Y[2]+X,G}e.addScalar=b;function I(G,Y,X){return G[0]=Y[0]-X,G[1]=Y[1]-X,G[2]=Y[2]-X,G}e.subScalar=I;function E(G,Y){return G[0]=Math.round(Y[0]),G[1]=Math.round(Y[1]),G[2]=Math.round(Y[2]),G}e.round=E;function S(G,Y){return G[0]=Math.ceil(Y[0]),G[1]=Math.ceil(Y[1]),G[2]=Math.ceil(Y[2]),G}e.ceil=S;function v(G,Y){return G[0]=Math.floor(Y[0]),G[1]=Math.floor(Y[1]),G[2]=Math.floor(Y[2]),G}e.floor=v;function P(G,Y){return G[0]=Math.trunc(Y[0]),G[1]=Math.trunc(Y[1]),G[2]=Math.trunc(Y[2]),G}e.trunc=P;function L(G,Y){return G[0]=Math.abs(Y[0]),G[1]=Math.abs(Y[1]),G[2]=Math.abs(Y[2]),G}e.abs=L;function w(G,Y,X){return G[0]=Math.min(Y[0],X[0]),G[1]=Math.min(Y[1],X[1]),G[2]=Math.min(Y[2],X[2]),G}e.min=w;function D(G,Y,X){return G[0]=Math.max(Y[0],X[0]),G[1]=Math.max(Y[1],X[1]),G[2]=Math.max(Y[2],X[2]),G}e.max=D;function z(G,Y,X,ye){return G[0]=Math.max(X[0],Math.min(ye[0],Y[0])),G[1]=Math.max(X[1],Math.min(ye[1],Y[1])),G[2]=Math.max(X[2],Math.min(ye[2],Y[2])),G}e.clamp=z;function ie(G,Y){let X=Y[0]-G[0],ye=Y[1]-G[1],Ge=Y[2]-G[2];return Math.sqrt(X*X+ye*ye+Ge*Ge)}e.distance=ie;function O(G,Y){let X=Y[0]-G[0],ye=Y[1]-G[1],Ge=Y[2]-G[2];return X*X+ye*ye+Ge*Ge}e.squaredDistance=O;function Q(G){let Y=G[0],X=G[1],ye=G[2];return Math.sqrt(Y*Y+X*X+ye*ye)}e.magnitude=Q;function K(G){let Y=G[0],X=G[1],ye=G[2];return Y*Y+X*X+ye*ye}e.squaredMagnitude=K;function Z(G,Y,X){return g(G,Ce(G,Y),X)}e.setMagnitude=Z;function se(G,Y){return G[0]=-Y[0],G[1]=-Y[1],G[2]=-Y[2],G}e.negate=se;function fe(G,Y){return G[0]=1/Y[0],G[1]=1/Y[1],G[2]=1/Y[2],G}e.inverse=fe;function Ce(G,Y){let X=Y[0],ye=Y[1],Ge=Y[2],Re=X*X+ye*ye+Ge*Ge;return Re>0&&(Re=1/Math.sqrt(Re),G[0]=Y[0]*Re,G[1]=Y[1]*Re,G[2]=Y[2]*Re),G}e.normalize=Ce;function xe(G,Y){return G[0]*Y[0]+G[1]*Y[1]+G[2]*Y[2]}e.dot=xe;function H(G,Y,X){let ye=Y[0],Ge=Y[1],Re=Y[2],et=X[0],tt=X[1],Mt=X[2];return G[0]=Ge*Mt-Re*tt,G[1]=Re*et-ye*Mt,G[2]=ye*tt-Ge*et,G}e.cross=H;function $(G,Y,X,ye){let Ge=Y[0],Re=Y[1],et=Y[2];return G[0]=Ge+ye*(X[0]-Ge),G[1]=Re+ye*(X[1]-Re),G[2]=et+ye*(X[2]-et),G}e.lerp=$;let de=t();function T(G,Y,X,ye){let Ge=Fn(xe(Y,X),-1,1),Re=Math.acos(Ge)*ye;return C(de,X,Y,-Ge),Ce(de,de),p(G,g(G,Y,Math.cos(Re)),g(de,de,Math.sin(Re)))}e.slerp=T;function B(G,Y,X,ye,Ge,Re){let et=Re*Re,tt=et*(2*Re-3)+1,Mt=et*(Re-2)+Re,qt=et*(Re-1),Tn=et*(3-2*Re);return G[0]=Y[0]*tt+X[0]*Mt+ye[0]*qt+Ge[0]*Tn,G[1]=Y[1]*tt+X[1]*Mt+ye[1]*qt+Ge[1]*Tn,G[2]=Y[2]*tt+X[2]*Mt+ye[2]*qt+Ge[2]*Tn,G}e.hermite=B;function k(G,Y,X,ye,Ge,Re){let et=1-Re,tt=et*et,Mt=Re*Re,qt=tt*et,Tn=3*Re*tt,ei=3*Mt*et,ti=Mt*Re;return G[0]=Y[0]*qt+X[0]*Tn+ye[0]*ei+Ge[0]*ti,G[1]=Y[1]*qt+X[1]*Tn+ye[1]*ei+Ge[1]*ti,G[2]=Y[2]*qt+X[2]*Tn+ye[2]*ei+Ge[2]*ti,G}e.bezier=k;function R(G,Y,X,ye,Ge){return G[0]=Ho(Y[0],X[0],ye[0],Ge),G[1]=Ho(Y[1],X[1],ye[1],Ge),G[2]=Ho(Y[2],X[2],ye[2],Ge),G}e.quadraticBezier=R;function V(G,Y,X,ye,Ge,Re,et){return G[0]=Go(Y[0],X[0],ye[0],Ge[0],Re,et),G[1]=Go(Y[1],X[1],ye[1],Ge[1],Re,et),G[2]=Go(Y[2],X[2],ye[2],Ge[2],Re,et),G}e.spline=V;function j(G,Y){let X=Math.random()*2*Math.PI,ye=Math.random()*2-1,Ge=Math.sqrt(1-ye*ye)*Y;return G[0]=Math.cos(X)*Ge,G[1]=Math.sin(X)*Ge,G[2]=ye*Y,G}e.random=j;function oe(G,Y,X){let ye=Y[0],Ge=Y[1],Re=Y[2],et=1/(X[3]*ye+X[7]*Ge+X[11]*Re+X[15]||1);return G[0]=(X[0]*ye+X[4]*Ge+X[8]*Re+X[12])*et,G[1]=(X[1]*ye+X[5]*Ge+X[9]*Re+X[13])*et,G[2]=(X[2]*ye+X[6]*Ge+X[10]*Re+X[14])*et,G}e.transformMat4=oe;function ae(G,Y,X){let ye=Y[0],Ge=Y[1],Re=Y[2];return G[0]=X[0]*ye+X[4]*Ge+X[8]*Re,G[1]=X[1]*ye+X[5]*Ge+X[9]*Re,G[2]=X[2]*ye+X[6]*Ge+X[10]*Re,Ce(G,G)}e.transformDirection=ae;function ne(G,Y,X,ye,Ge,Re){let et=Y[0+Ge],tt=Y[1+Ge],Mt=Y[2+Ge],qt=1/(X[3+Re]*et+X[7+Re]*tt+X[11+Re]*Mt+X[15+Re]||1);return G[0+ye]=(X[0+Re]*et+X[4+Re]*tt+X[8+Re]*Mt+X[12+Re])*qt,G[1+ye]=(X[1+Re]*et+X[5+Re]*tt+X[9+Re]*Mt+X[13+Re])*qt,G[2+ye]=(X[2+Re]*et+X[6+Re]*tt+X[10+Re]*Mt+X[14+Re])*qt,G}e.transformMat4Offset=ne;function q(G,Y,X,ye,Ge,Re){let et=Y[0+Ge],tt=Y[1+Ge],Mt=Y[2+Ge];G[0+ye]=X[0+Re]*et+X[4+Re]*tt+X[8+Re]*Mt,G[1+ye]=X[1+Re]*et+X[5+Re]*tt+X[9+Re]*Mt,G[2+ye]=X[2+Re]*et+X[6+Re]*tt+X[10+Re]*Mt;let qt=Math.hypot(G[0+ye],G[1+ye],G[2+ye]);return qt>0&&(G[0+ye]/=qt,G[1+ye]/=qt,G[2+ye]/=qt),G}e.transformDirectionOffset=q;function F(G,Y,X){let ye=Y[0],Ge=Y[1],Re=Y[2];return G[0]=ye*X[0]+Ge*X[3]+Re*X[6],G[1]=ye*X[1]+Ge*X[4]+Re*X[7],G[2]=ye*X[2]+Ge*X[5]+Re*X[8],G}e.transformMat3=F;function W(G,Y,X){let ye=Y[0],Ge=Y[1],Re=Y[2],et=X[0],tt=X[1],Mt=X[2],qt=X[3],Tn=qt*ye+tt*Re-Mt*Ge,ei=qt*Ge+Mt*ye-et*Re,ti=qt*Re+et*Ge-tt*ye,ga=-et*ye-tt*Ge-Mt*Re;return G[0]=Tn*qt+ga*-et+ei*-Mt-ti*-tt,G[1]=ei*qt+ga*-tt+ti*-et-Tn*-Mt,G[2]=ti*qt+ga*-Mt+Tn*-tt-ei*-et,G}e.transformQuat=W;function re(G,Y){let X=Math.sqrt(K(G)*K(Y));if(X===0)return Math.PI/2;let ye=xe(G,Y)/X;return Math.acos(Fn(ye,-1,1))}e.angle=re;let _e=t(),Ae=t(),Ze=t(),A=t(),M=t(),te=t(),ce=t();function pe(G,Y,X,ye){h(_e,G,Y),h(Ae,X,Y),h(Ze,Y,X),h(A,ye,X),H(M,_e,Ae),H(te,Ze,A);let Ge=re(M,te);return H(ce,M,te),xe(Ae,ce)>0?Ge:-Ge}e.dihedralAngle=pe;function he(G,Y,X,ye){return e.set(G,ye*Math.cos(X)*Math.sin(Y),ye*Math.sin(X)*Math.sin(Y),ye*Math.cos(Y))}e.directionFromSpherical=he;function Se(G,Y){return G[0]===Y[0]&&G[1]===Y[1]&&G[2]===Y[2]}e.exactEquals=Se;function Ee(G,Y){let X=G[0],ye=G[1],Ge=G[2],Re=Y[0],et=Y[1],tt=Y[2];return Math.abs(X-Re)<=1e-6*Math.max(1,Math.abs(X),Math.abs(Re))&&Math.abs(ye-et)<=1e-6*Math.max(1,Math.abs(ye),Math.abs(et))&&Math.abs(Ge-tt)<=1e-6*Math.max(1,Math.abs(Ge),Math.abs(tt))}e.equals=Ee;let Ne=t();function Pe(G,Y,X){let ye=re(Y,X);if(Math.abs(ye)<1e-4)return ke.setIdentity(G);if(Math.abs(ye-Math.PI)<1e-6)return ke.fromScaling(G,e.negUnit);let Ge=H(Ne,Y,X);return ke.fromRotation(G,ye,Ge)}e.makeRotation=Pe;function ve(G){return G[0]===0&&G[1]===0&&G[2]===0}e.isZero=ve;function Fe(G,Y,X,ye){h(G,Y,ye);let Ge=xe(X,G)/K(X);return p(G,g(G,X,Ge),ye)}e.projectPointOnVector=Fe;let Oe=t();function Me(G,Y,X,ye){return Ce(Oe,X),h(G,Y,ye),h(G,Y,g(Oe,Oe,xe(G,Oe)))}e.projectPointOnPlane=Me;function He(G,Y,X){let ye=xe(X,Y)/K(X);return g(G,X,ye)}e.projectOnVector=He;let je=t();function it(G,Y,X){return He(je,Y,X),h(G,Y,je)}e.projectOnPlane=it;function gt(G,Y,X){return Ce(G,H(G,H(G,Y,X),Y))}e.orthogonalize=gt;function Nt(G,Y,X){return xe(Y,X)>0?d(G,Y):se(G,d(G,Y)),G}e.matchDirection=Nt;let lt=t(),st=t();function ft(G,Y,X,ye){return h(lt,X,Y),h(st,ye,Y),Ce(G,H(G,lt,st))}e.triangleNormal=ft;function Xe(G,Y){return`[${G[0].toPrecision(Y)} ${G[1].toPrecision(Y)} ${G[2].toPrecision(Y)}]`}e.toString=Xe,e.origin=l(0,0,0),e.unit=l(1,1,1),e.negUnit=l(-1,-1,-1),e.unitX=l(1,0,0),e.unitY=l(0,1,0),e.unitZ=l(0,0,1),e.negUnitX=l(-1,0,0),e.negUnitY=l(0,-1,0),e.negUnitZ=l(0,0,-1)})(N||(N={}));var BA=Math.PI/2,Ku=Math.PI/180;function Kn(e){return e*Ku}function On(e){return e/Ku}function EA(e){return e!==0&&(e&e-1)===0}function DA(...e){let t=0,n=0;for(let r=0,i=e.length;rn&&(t=o,n=s)}return t}function MA(e,t){return e*t}function NA(e){let t=0,n=0,r=[0,-1],i=e*2+1,o=i/2,s=[];for(let a=Math.pow(i,2);a>0;--a)-o0&&t===1-n)&&([r[0],r[1]]=[-r[1],r[0]]),t+=r[0],n+=r[1];return s}function ke(){return ke.zero()}(function(e){function t(){let A=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];return A[0]=0,A}e.zero=t;function n(){let A=t();return A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}e.identity=n;function r(A){return A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}e.setIdentity=r;function i(A){for(let M=0;M<16;M++)A[M]=0;return A}e.setZero=i;function o(A){let M=t();for(let te=0;te<4;te++){let ce=A[te];for(let pe=0;pe<4;pe++)M[4*pe+te]=ce[pe]}return M}e.ofRows=o;let s=n();function a(A,M){return u(A,s,typeof M>"u"?1e-6:M)}e.isIdentity=a;function c(A){for(let M=0;M<16;M++)if(isNaN(A[M]))return!0;return!1}e.hasNaN=c;function u(A,M,te){for(let ce=0;ce<16;ce++)if(Math.abs(A[ce]-M[ce])>te)return!1;return!0}e.areEqual=u;function l(A,M,te,ce){A[4*te+M]=ce}e.setValue=l;function m(A,M,te){return A[4*te+M]}e.getValue=m;function f(A,M,te){return M[te+0]=A[0],M[te+1]=A[1],M[te+2]=A[2],M[te+3]=A[3],M[te+4]=A[4],M[te+5]=A[5],M[te+6]=A[6],M[te+7]=A[7],M[te+8]=A[8],M[te+9]=A[9],M[te+10]=A[10],M[te+11]=A[11],M[te+12]=A[12],M[te+13]=A[13],M[te+14]=A[14],M[te+15]=A[15],M}e.toArray=f;function d(A,M,te){return A[0]=M[te+0],A[1]=M[te+1],A[2]=M[te+2],A[3]=M[te+3],A[4]=M[te+4],A[5]=M[te+5],A[6]=M[te+6],A[7]=M[te+7],A[8]=M[te+8],A[9]=M[te+9],A[10]=M[te+10],A[11]=M[te+11],A[12]=M[te+12],A[13]=M[te+13],A[14]=M[te+14],A[15]=M[te+15],A}e.fromArray=d;function p(A,M,te,ce){return i(A),l(A,0,0,M[0]),l(A,1,0,M[1]),l(A,2,0,M[2]),l(A,0,1,te[0]),l(A,1,1,te[1]),l(A,2,1,te[2]),l(A,0,2,ce[0]),l(A,1,2,ce[1]),l(A,2,2,ce[2]),l(A,3,3,1),A}e.fromBasis=p;function h(A,M){return A[0]=M[0],A[1]=M[1],A[2]=M[2],A[3]=M[3],A[4]=M[4],A[5]=M[5],A[6]=M[6],A[7]=M[7],A[8]=M[8],A[9]=M[9],A[10]=M[10],A[11]=M[11],A[12]=M[12],A[13]=M[13],A[14]=M[14],A[15]=M[15],A}e.copy=h;function x(A){return h(t(),A)}e.clone=x;function y(A,M){return A[0]=M[12],A[1]=M[13],A[2]=M[14],A}e.getTranslation=y;function g(A,M){let te=M[0],ce=M[1],pe=M[2],he=M[4],Se=M[5],Ee=M[6],Ne=M[8],Pe=M[9],ve=M[10];return A[0]=Math.sqrt(te*te+ce*ce+pe*pe),A[1]=Math.sqrt(he*he+Se*Se+Ee*Ee),A[2]=Math.sqrt(Ne*Ne+Pe*Pe+ve*ve),A}e.getScaling=g;function C(A,M){let te=M[0]+M[5]+M[10],ce=0;return te>0?(ce=Math.sqrt(te+1)*2,A[3]=.25*ce,A[0]=(M[6]-M[9])/ce,A[1]=(M[8]-M[2])/ce,A[2]=(M[1]-M[4])/ce):M[0]>M[5]&&M[0]>M[10]?(ce=Math.sqrt(1+M[0]-M[5]-M[10])*2,A[3]=(M[6]-M[9])/ce,A[0]=.25*ce,A[1]=(M[1]+M[4])/ce,A[2]=(M[8]+M[2])/ce):M[5]>M[10]?(ce=Math.sqrt(1+M[5]-M[0]-M[10])*2,A[3]=(M[8]-M[2])/ce,A[0]=(M[1]+M[4])/ce,A[1]=.25*ce,A[2]=(M[6]+M[9])/ce):(ce=Math.sqrt(1+M[10]-M[0]-M[5])*2,A[3]=(M[1]-M[4])/ce,A[0]=(M[8]+M[2])/ce,A[1]=(M[6]+M[9])/ce,A[2]=.25*ce),A}e.getRotation=C;function _(A,M){let te=1/Math.sqrt(M[0]*M[0]+M[1]*M[1]+M[2]*M[2]),ce=1/Math.sqrt(M[4]*M[4]+M[5]*M[5]+M[6]*M[6]),pe=1/Math.sqrt(M[8]*M[8]+M[9]*M[9]+M[10]*M[10]);return A[0]=M[0]*te,A[1]=M[1]*te,A[2]=M[2]*te,A[3]=0,A[4]=M[4]*ce,A[5]=M[5]*ce,A[6]=M[6]*ce,A[7]=0,A[8]=M[8]*pe,A[9]=M[9]*pe,A[10]=M[10]*pe,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}e.extractRotation=_;function b(A,M){if(A===M){let te=M[1],ce=M[2],pe=M[3],he=M[6],Se=M[7],Ee=M[11];A[1]=M[4],A[2]=M[8],A[3]=M[12],A[4]=te,A[6]=M[9],A[7]=M[13],A[8]=ce,A[9]=he,A[11]=M[14],A[12]=pe,A[13]=Se,A[14]=Ee}else A[0]=M[0],A[1]=M[4],A[2]=M[8],A[3]=M[12],A[4]=M[1],A[5]=M[5],A[6]=M[9],A[7]=M[13],A[8]=M[2],A[9]=M[6],A[10]=M[10],A[11]=M[14],A[12]=M[3],A[13]=M[7],A[14]=M[11],A[15]=M[15];return A}e.transpose=b;function I(A,M){let te=M[0],ce=M[1],pe=M[2],he=M[3],Se=M[4],Ee=M[5],Ne=M[6],Pe=M[7],ve=M[8],Fe=M[9],Oe=M[10],Me=M[11],He=M[12],je=M[13],it=M[14],gt=M[15],Nt=te*Ee-ce*Se,lt=te*Ne-pe*Se,st=te*Pe-he*Se,ft=ce*Ne-pe*Ee,Xe=ce*Pe-he*Ee,G=pe*Pe-he*Ne,Y=ve*je-Fe*He,X=ve*it-Oe*He,ye=ve*gt-Me*He,Ge=Fe*it-Oe*je,Re=Fe*gt-Me*je,et=Oe*gt-Me*it,tt=Nt*et-lt*Re+st*Ge+ft*ye-Xe*X+G*Y;return tt?(tt=1/tt,A[0]=(Ee*et-Ne*Re+Pe*Ge)*tt,A[1]=(pe*Re-ce*et-he*Ge)*tt,A[2]=(je*G-it*Xe+gt*ft)*tt,A[3]=(Oe*Xe-Fe*G-Me*ft)*tt,A[4]=(Ne*ye-Se*et-Pe*X)*tt,A[5]=(te*et-pe*ye+he*X)*tt,A[6]=(it*st-He*G-gt*lt)*tt,A[7]=(ve*G-Oe*st+Me*lt)*tt,A[8]=(Se*Re-Ee*ye+Pe*Y)*tt,A[9]=(ce*ye-te*Re-he*Y)*tt,A[10]=(He*Xe-je*st+gt*Nt)*tt,A[11]=(Fe*st-ve*Xe-Me*Nt)*tt,A[12]=(Ee*X-Se*Ge-Ne*Y)*tt,A[13]=(te*Ge-ce*X+pe*Y)*tt,A[14]=(je*lt-He*ft-it*Nt)*tt,A[15]=(ve*ft-Fe*lt+Oe*Nt)*tt,!0):!1}e.tryInvert=I;function E(A,M){return I(A,M)||console.warn("non-invertible matrix.",M),A}e.invert=E;function S(A,M,te){let ce=M[0],pe=M[1],he=M[2],Se=M[3],Ee=M[4],Ne=M[5],Pe=M[6],ve=M[7],Fe=M[8],Oe=M[9],Me=M[10],He=M[11],je=M[12],it=M[13],gt=M[14],Nt=M[15],lt=te[0],st=te[1],ft=te[2],Xe=te[3];return A[0]=lt*ce+st*Ee+ft*Fe+Xe*je,A[1]=lt*pe+st*Ne+ft*Oe+Xe*it,A[2]=lt*he+st*Pe+ft*Me+Xe*gt,A[3]=lt*Se+st*ve+ft*He+Xe*Nt,lt=te[4],st=te[5],ft=te[6],Xe=te[7],A[4]=lt*ce+st*Ee+ft*Fe+Xe*je,A[5]=lt*pe+st*Ne+ft*Oe+Xe*it,A[6]=lt*he+st*Pe+ft*Me+Xe*gt,A[7]=lt*Se+st*ve+ft*He+Xe*Nt,lt=te[8],st=te[9],ft=te[10],Xe=te[11],A[8]=lt*ce+st*Ee+ft*Fe+Xe*je,A[9]=lt*pe+st*Ne+ft*Oe+Xe*it,A[10]=lt*he+st*Pe+ft*Me+Xe*gt,A[11]=lt*Se+st*ve+ft*He+Xe*Nt,lt=te[12],st=te[13],ft=te[14],Xe=te[15],A[12]=lt*ce+st*Ee+ft*Fe+Xe*je,A[13]=lt*pe+st*Ne+ft*Oe+Xe*it,A[14]=lt*he+st*Pe+ft*Me+Xe*gt,A[15]=lt*Se+st*ve+ft*He+Xe*Nt,A}e.mul=S;function v(A,M,te,ce,pe,he){let Se=M[0+pe],Ee=M[1+pe],Ne=M[2+pe],Pe=M[3+pe],ve=M[4+pe],Fe=M[5+pe],Oe=M[6+pe],Me=M[7+pe],He=M[8+pe],je=M[9+pe],it=M[10+pe],gt=M[11+pe],Nt=M[12+pe],lt=M[13+pe],st=M[14+pe],ft=M[15+pe],Xe=te[0+he],G=te[1+he],Y=te[2+he],X=te[3+he];return A[0+ce]=Xe*Se+G*ve+Y*He+X*Nt,A[1+ce]=Xe*Ee+G*Fe+Y*je+X*lt,A[2+ce]=Xe*Ne+G*Oe+Y*it+X*st,A[3+ce]=Xe*Pe+G*Me+Y*gt+X*ft,Xe=te[4+he],G=te[5+he],Y=te[6+he],X=te[7+he],A[4+ce]=Xe*Se+G*ve+Y*He+X*Nt,A[5+ce]=Xe*Ee+G*Fe+Y*je+X*lt,A[6+ce]=Xe*Ne+G*Oe+Y*it+X*st,A[7+ce]=Xe*Pe+G*Me+Y*gt+X*ft,Xe=te[8+he],G=te[9+he],Y=te[10+he],X=te[11+he],A[8+ce]=Xe*Se+G*ve+Y*He+X*Nt,A[9+ce]=Xe*Ee+G*Fe+Y*je+X*lt,A[10+ce]=Xe*Ne+G*Oe+Y*it+X*st,A[11+ce]=Xe*Pe+G*Me+Y*gt+X*ft,Xe=te[12+he],G=te[13+he],Y=te[14+he],X=te[15+he],A[12+ce]=Xe*Se+G*ve+Y*He+X*Nt,A[13+ce]=Xe*Ee+G*Fe+Y*je+X*lt,A[14+ce]=Xe*Ne+G*Oe+Y*it+X*st,A[15+ce]=Xe*Pe+G*Me+Y*gt+X*ft,A}e.mulOffset=v;function P(A,M,te,ce){return S(A,S(A,M,te),ce)}e.mul3=P;function L(A,M,te){let ce=te[0],pe=te[1],he=te[2],Se,Ee,Ne,Pe,ve,Fe,Oe,Me,He,je,it,gt;return M===A?(A[12]=M[0]*ce+M[4]*pe+M[8]*he+M[12],A[13]=M[1]*ce+M[5]*pe+M[9]*he+M[13],A[14]=M[2]*ce+M[6]*pe+M[10]*he+M[14],A[15]=M[3]*ce+M[7]*pe+M[11]*he+M[15]):(Se=M[0],Ee=M[1],Ne=M[2],Pe=M[3],ve=M[4],Fe=M[5],Oe=M[6],Me=M[7],He=M[8],je=M[9],it=M[10],gt=M[11],A[0]=Se,A[1]=Ee,A[2]=Ne,A[3]=Pe,A[4]=ve,A[5]=Fe,A[6]=Oe,A[7]=Me,A[8]=He,A[9]=je,A[10]=it,A[11]=gt,A[12]=Se*ce+ve*pe+He*he+M[12],A[13]=Ee*ce+Fe*pe+je*he+M[13],A[14]=Ne*ce+Oe*pe+it*he+M[14],A[15]=Pe*ce+Me*pe+gt*he+M[15]),A}e.translate=L;function w(A,M){return A[0]=1,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=1,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=1,A[11]=0,A[12]=M[0],A[13]=M[1],A[14]=M[2],A[15]=1,A}e.fromTranslation=w;function D(A,M){return A[12]=M[0],A[13]=M[1],A[14]=M[2],A}e.setTranslation=D;function z(A,M,te,ce){return A[0]=te[0],A[4]=te[1],A[8]=te[2],A[1]=ce[0],A[5]=ce[1],A[9]=ce[2],A[2]=M[0],A[6]=M[1],A[10]=M[2],A}e.setAxes=z;function ie(A,M,te,ce){let pe=ce[0],he=ce[1],Se=ce[2],Ee=Math.sqrt(pe*pe+he*he+Se*Se);if(Math.abs(Ee)<1e-6)return n();Ee=1/Ee,pe*=Ee,he*=Ee,Se*=Ee;let Ne=Math.sin(te),Pe=Math.cos(te),ve=1-Pe,Fe=M[0],Oe=M[1],Me=M[2],He=M[3],je=M[4],it=M[5],gt=M[6],Nt=M[7],lt=M[8],st=M[9],ft=M[10],Xe=M[11],G=pe*pe*ve+Pe,Y=he*pe*ve+Se*Ne,X=Se*pe*ve-he*Ne,ye=pe*he*ve-Se*Ne,Ge=he*he*ve+Pe,Re=Se*he*ve+pe*Ne,et=pe*Se*ve+he*Ne,tt=he*Se*ve-pe*Ne,Mt=Se*Se*ve+Pe;return A[0]=Fe*G+je*Y+lt*X,A[1]=Oe*G+it*Y+st*X,A[2]=Me*G+gt*Y+ft*X,A[3]=He*G+Nt*Y+Xe*X,A[4]=Fe*ye+je*Ge+lt*Re,A[5]=Oe*ye+it*Ge+st*Re,A[6]=Me*ye+gt*Ge+ft*Re,A[7]=He*ye+Nt*Ge+Xe*Re,A[8]=Fe*et+je*tt+lt*Mt,A[9]=Oe*et+it*tt+st*Mt,A[10]=Me*et+gt*tt+ft*Mt,A[11]=He*et+Nt*tt+Xe*Mt,M!==A&&(A[12]=M[12],A[13]=M[13],A[14]=M[14],A[15]=M[15]),A}e.rotate=ie;function O(A,M,te){let ce=te[0],pe=te[1],he=te[2],Se=Math.sqrt(ce*ce+pe*pe+he*he);if(Math.abs(Se)<1e-6)return r(A);Se=1/Se,ce*=Se,pe*=Se,he*=Se;let Ee=Math.sin(M),Ne=Math.cos(M),Pe=1-Ne;return A[0]=ce*ce*Pe+Ne,A[1]=pe*ce*Pe+he*Ee,A[2]=he*ce*Pe-pe*Ee,A[3]=0,A[4]=ce*pe*Pe-he*Ee,A[5]=pe*pe*Pe+Ne,A[6]=he*pe*Pe+ce*Ee,A[7]=0,A[8]=ce*he*Pe+pe*Ee,A[9]=pe*he*Pe-ce*Ee,A[10]=he*he*Pe+Ne,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}e.fromRotation=O;function Q(A,M,te){let ce=te[0],pe=te[1],he=te[2];return A[0]=M[0]*ce,A[1]=M[1]*ce,A[2]=M[2]*ce,A[3]=M[3]*ce,A[4]=M[4]*pe,A[5]=M[5]*pe,A[6]=M[6]*pe,A[7]=M[7]*pe,A[8]=M[8]*he,A[9]=M[9]*he,A[10]=M[10]*he,A[11]=M[11]*he,A[12]=M[12],A[13]=M[13],A[14]=M[14],A[15]=M[15],A}e.scale=Q;function K(A,M,te){return A[0]=M[0]*te,A[1]=M[1]*te,A[2]=M[2]*te,A[3]=M[3]*te,A[4]=M[4]*te,A[5]=M[5]*te,A[6]=M[6]*te,A[7]=M[7]*te,A[8]=M[8]*te,A[9]=M[9]*te,A[10]=M[10]*te,A[11]=M[11]*te,A[12]=M[12],A[13]=M[13],A[14]=M[14],A[15]=M[15],A}e.scaleUniformly=K;function Z(A,M){return A[0]=M[0],A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=M[1],A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=M[2],A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}e.fromScaling=Z;function se(A,M){return A[0]=M,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=M,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=M,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}e.fromUniformScaling=se;function fe(A,M){return A[0]=M[0],A[1]=M[1],A[2]=M[2],A[4]=M[3],A[5]=M[4],A[6]=M[5],A[8]=M[6],A[9]=M[7],A[10]=M[8],A}e.fromMat3=fe;function Ce(A,M,te,ce){let[pe,he,Se,Ee]=te,Ne=pe+pe,Pe=he+he,ve=Se+Se,Fe=pe*Ne,Oe=pe*Pe,Me=pe*ve,He=he*Pe,je=he*ve,it=Se*ve,gt=Ee*Ne,Nt=Ee*Pe,lt=Ee*ve,[st,ft,Xe]=ce;return A[0]=(1-(He+it))*st,A[1]=(Oe+lt)*st,A[2]=(Me-Nt)*st,A[3]=0,A[4]=(Oe-lt)*ft,A[5]=(1-(Fe+it))*ft,A[6]=(je+gt)*ft,A[7]=0,A[8]=(Me+Nt)*Xe,A[9]=(je-gt)*Xe,A[10]=(1-(Fe+He))*Xe,A[11]=0,A[12]=M[0],A[13]=M[1],A[14]=M[2],A[15]=1,A}e.compose=Ce;let xe=[0,0,0],H=t();function $(A,M,te,ce){let pe=N.magnitude(N.set(xe,A[0],A[1],A[2])),he=N.magnitude(N.set(xe,A[4],A[5],A[6])),Se=N.magnitude(N.set(xe,A[8],A[9],A[10]));T(A)<0&&(pe=-pe),M[0]=A[12],M[1]=A[13],M[2]=A[14],h(H,A);let Ne=1/pe,Pe=1/he,ve=1/Se;return H[0]*=Ne,H[1]*=Ne,H[2]*=Ne,H[4]*=Pe,H[5]*=Pe,H[6]*=Pe,H[8]*=ve,H[9]*=ve,H[10]*=ve,C(te,H),ce[0]=pe,ce[1]=he,ce[2]=Se,A}e.decompose=$;function de(A){let M="";for(let te=0;te<4;te++){for(let ce=0;ce<4;ce++)M+=A[4*ce+te].toString(),ce<3&&(M+=" ");te<3&&(M+=` +`)}return M}e.makeTable=de;function T(A){let M=A[0],te=A[1],ce=A[2],pe=A[3],he=A[4],Se=A[5],Ee=A[6],Ne=A[7],Pe=A[8],ve=A[9],Fe=A[10],Oe=A[11],Me=A[12],He=A[13],je=A[14],it=A[15],gt=M*Se-te*he,Nt=M*Ee-ce*he,lt=M*Ne-pe*he,st=te*Ee-ce*Se,ft=te*Ne-pe*Se,Xe=ce*Ne-pe*Ee,G=Pe*He-ve*Me,Y=Pe*je-Fe*Me,X=Pe*it-Oe*Me,ye=ve*je-Fe*He,Ge=ve*it-Oe*He,Re=Fe*it-Oe*je;return gt*Re-Nt*Ge+lt*ye+st*X-ft*Y+Xe*G}e.determinant=T;function B(A,M){return k(A,typeof M<"u"?M:1e-6)}e.isRotationAndTranslation=B;function k(A,M){let te=A[0],ce=A[1],pe=A[2],he=A[3],Se=A[4],Ee=A[5],Ne=A[6],Pe=A[7],ve=A[8],Fe=A[9],Oe=A[10],Me=A[11],He=A[15];if(!Ht(He,1,M)||!Ht(he,0,M)||!Ht(Pe,0,M)||!Ht(Me,0,M))return!1;let je=Math.abs(te*(Ee*Oe-Ne*Fe)-ce*(Se*Oe-Ne*ve)+pe*(Se*Fe-Ee*ve));return!!Ht(je,1,M)}function R(A,M){return V(A,typeof M<"u"?M:1e-6)}e.isTranslationAndUniformScaling=R;function V(A,M){let te=A[0];return Ht(A[1],0,M)&&Ht(A[2],0,M)&&Ht(A[3],0,M)&&Ht(A[4],0,M)&&Ht(A[5],te,M)&&Ht(A[6],0,M)&&Ht(A[7],0,M)&&Ht(A[8],0,M)&&Ht(A[9],0,M)&&Ht(A[10],te,M)&&Ht(A[11],0,M)&&Ht(A[15],1,M)}function j(A,M){let te=M[0],ce=M[1],pe=M[2],he=M[3],Se=te+te,Ee=ce+ce,Ne=pe+pe,Pe=te*Se,ve=ce*Se,Fe=ce*Ee,Oe=pe*Se,Me=pe*Ee,He=pe*Ne,je=he*Se,it=he*Ee,gt=he*Ne;return A[0]=1-Fe-He,A[1]=ve+gt,A[2]=Oe-it,A[3]=0,A[4]=ve-gt,A[5]=1-Pe-He,A[6]=Me+je,A[7]=0,A[8]=Oe+it,A[9]=Me-je,A[10]=1-Pe-Fe,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}e.fromQuat=j;function oe(A,M,te){let ce=M[0],pe=M[1],he=M[2],Se=Math.cos(ce),Ee=Math.sin(ce),Ne=Math.cos(pe),Pe=Math.sin(pe),ve=Math.cos(he),Fe=Math.sin(he);if(te==="XYZ"){let Oe=Se*ve,Me=Se*Fe,He=Ee*ve,je=Ee*Fe;A[0]=Ne*ve,A[4]=-Ne*Fe,A[8]=Pe,A[1]=Me+He*Pe,A[5]=Oe-je*Pe,A[9]=-Ee*Ne,A[2]=je-Oe*Pe,A[6]=He+Me*Pe,A[10]=Se*Ne}else if(te==="YXZ"){let Oe=Ne*ve,Me=Ne*Fe,He=Pe*ve,je=Pe*Fe;A[0]=Oe+je*Ee,A[4]=He*Ee-Me,A[8]=Se*Pe,A[1]=Se*Fe,A[5]=Se*ve,A[9]=-Ee,A[2]=Me*Ee-He,A[6]=je+Oe*Ee,A[10]=Se*Ne}else if(te==="ZXY"){let Oe=Ne*ve,Me=Ne*Fe,He=Pe*ve,je=Pe*Fe;A[0]=Oe-je*Ee,A[4]=-Se*Fe,A[8]=He+Me*Ee,A[1]=Me+He*Ee,A[5]=Se*ve,A[9]=je-Oe*Ee,A[2]=-Se*Pe,A[6]=Ee,A[10]=Se*Ne}else if(te==="ZYX"){let Oe=Se*ve,Me=Se*Fe,He=Ee*ve,je=Ee*Fe;A[0]=Ne*ve,A[4]=He*Pe-Me,A[8]=Oe*Pe+je,A[1]=Ne*Fe,A[5]=je*Pe+Oe,A[9]=Me*Pe-He,A[2]=-Pe,A[6]=Ee*Ne,A[10]=Se*Ne}else if(te==="YZX"){let Oe=Se*Ne,Me=Se*Pe,He=Ee*Ne,je=Ee*Pe;A[0]=Ne*ve,A[4]=je-Oe*Fe,A[8]=He*Fe+Me,A[1]=Fe,A[5]=Se*ve,A[9]=-Ee*ve,A[2]=-Pe*ve,A[6]=Me*Fe+He,A[10]=Oe-je*Fe}else if(te==="XZY"){let Oe=Se*Ne,Me=Se*Pe,He=Ee*Ne,je=Ee*Pe;A[0]=Ne*ve,A[4]=-Fe,A[8]=Pe*ve,A[1]=Oe*Fe+je,A[5]=Se*ve,A[9]=Me*Fe-He,A[2]=He*Fe-Me,A[6]=Ee*ve,A[10]=je*Fe+Oe}return A[3]=0,A[7]=0,A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A}e.fromEuler=oe;function ae(A,M,te,ce,pe,he,Se){let Ee=2*he/(te-M),Ne=2*he/(ce-pe),Pe=(te+M)/(te-M),ve=(ce+pe)/(ce-pe),Fe=-(Se+he)/(Se-he),Oe=-2*Se*he/(Se-he);return A[0]=Ee,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=Ne,A[6]=0,A[7]=0,A[8]=Pe,A[9]=ve,A[10]=Fe,A[11]=-1,A[12]=0,A[13]=0,A[14]=Oe,A[15]=0,A}e.perspective=ae;function ne(A,M,te,ce,pe,he,Se){let Ee=1/(te-M),Ne=1/(ce-pe),Pe=1/(Se-he),ve=(te+M)*Ee,Fe=(ce+pe)*Ne,Oe=(Se+he)*Pe;return A[0]=2*Ee,A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=2*Ne,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=-2*Pe,A[11]=0,A[12]=-ve,A[13]=-Fe,A[14]=-Oe,A[15]=1,A}e.ortho=ne;function q(A,M,te,ce){let pe,he,Se,Ee,Ne,Pe,ve,Fe,Oe,Me,He=M[0],je=M[1],it=M[2],gt=ce[0],Nt=ce[1],lt=ce[2],st=te[0],ft=te[1],Xe=te[2];return Math.abs(He-st)<1e-6&&Math.abs(je-ft)<1e-6&&Math.abs(it-Xe)<1e-6?r(A):(ve=He-st,Fe=je-ft,Oe=it-Xe,Me=1/Math.sqrt(ve*ve+Fe*Fe+Oe*Oe),ve*=Me,Fe*=Me,Oe*=Me,pe=Nt*Oe-lt*Fe,he=lt*ve-gt*Oe,Se=gt*Fe-Nt*ve,Me=Math.sqrt(pe*pe+he*he+Se*Se),Me?(Me=1/Me,pe*=Me,he*=Me,Se*=Me):(pe=0,he=0,Se=0),Ee=Fe*Se-Oe*he,Ne=Oe*pe-ve*Se,Pe=ve*he-Fe*pe,Me=Math.sqrt(Ee*Ee+Ne*Ne+Pe*Pe),Me?(Me=1/Me,Ee*=Me,Ne*=Me,Pe*=Me):(Ee=0,Ne=0,Pe=0),A[0]=pe,A[1]=Ee,A[2]=ve,A[3]=0,A[4]=he,A[5]=Ne,A[6]=Fe,A[7]=0,A[8]=Se,A[9]=Pe,A[10]=Oe,A[11]=0,A[12]=-(pe*He+he*je+Se*it),A[13]=-(Ee*He+Ne*je+Pe*it),A[14]=-(ve*He+Fe*je+Oe*it),A[15]=1,A)}e.lookAt=q;function F(A,M,te,ce){let pe=M[0],he=M[1],Se=M[2],Ee=ce[0],Ne=ce[1],Pe=ce[2],ve=pe-te[0],Fe=he-te[1],Oe=Se-te[2],Me=ve*ve+Fe*Fe+Oe*Oe;Me>0&&(Me=1/Math.sqrt(Me),ve*=Me,Fe*=Me,Oe*=Me);let He=Ne*Oe-Pe*Fe,je=Pe*ve-Ee*Oe,it=Ee*Fe-Ne*ve;return Me=He*He+je*je+it*it,Me>0&&(Me=1/Math.sqrt(Me),He*=Me,je*=Me,it*=Me),A[0]=He,A[1]=je,A[2]=it,A[3]=0,A[4]=Fe*it-Oe*je,A[5]=Oe*He-ve*it,A[6]=ve*je-Fe*He,A[7]=0,A[8]=ve,A[9]=Fe,A[10]=Oe,A[11]=0,A[12]=pe,A[13]=he,A[14]=Se,A[15]=1,A}e.targetTo=F;function W(A,M){i(A);for(let te=0;te<4;te++){let ce=M[te];l(A,te,ce,1)}return A}e.fromPermutation=W;function re(A){let M=A[0]*A[0]+A[1]*A[1]+A[2]*A[2],te=A[4]*A[4]+A[5]*A[5]+A[6]*A[6],ce=A[8]*A[8]+A[9]*A[9]+A[10]*A[10];return Math.sqrt(Math.max(M,te,ce))}e.getMaxScaleOnAxis=re;let _e=[1,0,0],Ae=[0,1,0],Ze=[0,0,1];e.rotX90=O(t(),Kn(90),_e),e.rotX180=O(t(),Kn(180),_e),e.rotY90=O(t(),Kn(90),Ae),e.rotY180=O(t(),Kn(180),Ae),e.rotY270=O(t(),Kn(270),Ae),e.rotZ90=O(t(),Kn(90),Ze),e.rotZ180=O(t(),Kn(180),Ze),e.rotXY90=S(t(),e.rotX90,e.rotY90),e.rotZY90=S(t(),e.rotZ90,e.rotY90),e.rotZYZ90=S(t(),e.rotZY90,e.rotZ90),e.rotZ90X180=S(t(),e.rotZ90,e.rotX180),e.rotY90Z180=S(t(),e.rotY90,e.rotZ180),e.id=n()})(ke||(ke={}));function Xt(){return Xt.zero()}(function(e){function t(){let T=[.1,0,0,0,0,0,0,0,0];return T[0]=0,T}e.zero=t;function n(){let T=t();return T[0]=1,T[1]=0,T[2]=0,T[3]=0,T[4]=1,T[5]=0,T[6]=0,T[7]=0,T[8]=1,T}e.identity=n;function r(T){return T[0]=1,T[1]=0,T[2]=0,T[3]=0,T[4]=1,T[5]=0,T[6]=0,T[7]=0,T[8]=1,T}e.setIdentity=r;function i(T,B,k){return B[k+0]=T[0],B[k+1]=T[1],B[k+2]=T[2],B[k+3]=T[3],B[k+4]=T[4],B[k+5]=T[5],B[k+6]=T[6],B[k+7]=T[7],B[k+8]=T[8],B}e.toArray=i;function o(T,B,k){return T[0]=B[k+0],T[1]=B[k+1],T[2]=B[k+2],T[3]=B[k+3],T[4]=B[k+4],T[5]=B[k+5],T[6]=B[k+6],T[7]=B[k+7],T[8]=B[k+8],T}e.fromArray=o;function s(T,B,k,R){return T[0]=B[0],T[1]=B[1],T[2]=B[2],T[3]=k[0],T[4]=k[1],T[5]=k[2],T[6]=R[0],T[7]=R[1],T[8]=R[2],T}e.fromColumns=s;function a(T,B){return T[0]=B[0],T[1]=B[1],T[2]=B[2],T[3]=B[4],T[4]=B[5],T[5]=B[6],T[6]=B[8],T[7]=B[9],T[8]=B[10],T}e.fromMat4=a;let c=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function u(T,B,k){return ke.fromEuler(c,B,k),a(T,c)}e.fromEuler=u;function l(T,B,k,R,V,j,oe,ae,ne){let q=t();return q[0]=T,q[1]=B,q[2]=k,q[3]=R,q[4]=V,q[5]=j,q[6]=oe,q[7]=ae,q[8]=ne,q}e.create=l;let m=n();function f(T,B){return h(T,m,typeof B>"u"?1e-6:B)}e.isIdentity=f;function d(T){for(let B=0;B<9;B++)if(isNaN(T[B]))return!0;return!1}e.hasNaN=d;function p(T){return g(t(),T)}e.clone=p;function h(T,B,k){for(let R=0;R<9;R++)if(Math.abs(T[R]-B[R])>k)return!1;return!0}e.areEqual=h;function x(T,B,k,R){T[3*k+B]=R}e.setValue=x;function y(T,B,k){return T[3*k+B]}e.getValue=y;function g(T,B){return T[0]=B[0],T[1]=B[1],T[2]=B[2],T[3]=B[3],T[4]=B[4],T[5]=B[5],T[6]=B[6],T[7]=B[7],T[8]=B[8],T}e.copy=g;function C(T,B){if(T===B){let k=B[1],R=B[2],V=B[5];T[1]=B[3],T[2]=B[6],T[3]=k,T[5]=B[7],T[6]=R,T[7]=V}else T[0]=B[0],T[1]=B[3],T[2]=B[6],T[3]=B[1],T[4]=B[4],T[5]=B[7],T[6]=B[2],T[7]=B[5],T[8]=B[8];return T}e.transpose=C;function _(T,B){let k=B[0],R=B[1],V=B[2],j=B[3],oe=B[4],ae=B[5],ne=B[6],q=B[7],F=B[8],W=F*oe-ae*q,re=-F*j+ae*ne,_e=q*j-oe*ne,Ae=k*W+R*re+V*_e;return Ae?(Ae=1/Ae,T[0]=W*Ae,T[1]=(-F*R+V*q)*Ae,T[2]=(ae*R-V*oe)*Ae,T[3]=re*Ae,T[4]=(F*k-V*ne)*Ae,T[5]=(-ae*k+V*j)*Ae,T[6]=_e*Ae,T[7]=(-q*k+R*ne)*Ae,T[8]=(oe*k-R*j)*Ae,T):(console.warn("non-invertible matrix.",B),T)}e.invert=_;function b(T,B){return T===B?(T[3]=B[1],T[6]=B[2],T[7]=B[5]):(T[0]=B[0],T[1]=B[1],T[2]=B[2],T[3]=B[1],T[4]=B[4],T[5]=B[5],T[6]=B[2],T[7]=B[5],T[8]=B[8]),T}e.symmtricFromUpper=b;function I(T,B){return T===B?(T[1]=B[3],T[2]=B[6],T[5]=B[7]):(T[0]=B[0],T[1]=B[3],T[2]=B[6],T[3]=B[3],T[4]=B[4],T[5]=B[7],T[6]=B[6],T[7]=B[7],T[8]=B[8]),T}e.symmtricFromLower=I;function E(T){let B=T[0],k=T[1],R=T[2],V=T[3],j=T[4],oe=T[5],ae=T[6],ne=T[7],q=T[8],F=q*j-oe*ne,W=-q*V+oe*ae,re=ne*V-j*ae;return B*F+k*W+R*re}e.determinant=E;function S(T){return T[0]+T[4]+T[8]}e.trace=S;function v(T,B,k){return T[0]=B[0]-k[0],T[1]=B[1]-k[1],T[2]=B[2]-k[2],T[3]=B[3]-k[3],T[4]=B[4]-k[4],T[5]=B[5]-k[5],T[6]=B[6]-k[6],T[7]=B[7]-k[7],T[8]=B[8]-k[8],T}e.sub=v;function P(T,B,k){return T[0]=B[0]+k[0],T[1]=B[1]+k[1],T[2]=B[2]+k[2],T[3]=B[3]+k[3],T[4]=B[4]+k[4],T[5]=B[5]+k[5],T[6]=B[6]+k[6],T[7]=B[7]+k[7],T[8]=B[8]+k[8],T}e.add=P;function L(T,B,k){let R=B[0],V=B[1],j=B[2],oe=B[3],ae=B[4],ne=B[5],q=B[6],F=B[7],W=B[8],re=k[0],_e=k[1],Ae=k[2],Ze=k[3],A=k[4],M=k[5],te=k[6],ce=k[7],pe=k[8];return T[0]=re*R+_e*oe+Ae*q,T[1]=re*V+_e*ae+Ae*F,T[2]=re*j+_e*ne+Ae*W,T[3]=Ze*R+A*oe+M*q,T[4]=Ze*V+A*ae+M*F,T[5]=Ze*j+A*ne+M*W,T[6]=te*R+ce*oe+pe*q,T[7]=te*V+ce*ae+pe*F,T[8]=te*j+ce*ne+pe*W,T}e.mul=L;function w(T,B,k){return T[0]=B[0]-k,T[1]=B[1]-k,T[2]=B[2]-k,T[3]=B[3]-k,T[4]=B[4]-k,T[5]=B[5]-k,T[6]=B[6]-k,T[7]=B[7]-k,T[8]=B[8]-k,T}e.subScalar=w;function D(T,B,k){return T[0]=B[0]+k,T[1]=B[1]+k,T[2]=B[2]+k,T[3]=B[3]+k,T[4]=B[4]+k,T[5]=B[5]+k,T[6]=B[6]+k,T[7]=B[7]+k,T[8]=B[8]+k,T}e.addScalar=D;function z(T,B,k){return T[0]=B[0]*k,T[1]=B[1]*k,T[2]=B[2]*k,T[3]=B[3]*k,T[4]=B[4]*k,T[5]=B[5]*k,T[6]=B[6]*k,T[7]=B[7]*k,T[8]=B[8]*k,T}e.mulScalar=z;let ie=Math.PI/3,O=t();function Q(T,B){let k=B[1]*B[1]+B[2]*B[2]+B[5]*B[5];if(k===0)T[0]=B[0],T[1]=B[4],T[2]=B[8];else{let R=S(B)/3,V=B[0]-R,j=B[4]-R,oe=B[8]-R,ae=V*V+j*j+oe*oe+2*k,ne=Math.sqrt(ae/6);z(O,e.Identity,R),v(O,B,O),z(O,O,1/ne);let q=E(O)/2,F=q<=-1?ie:q>=1?0:Math.acos(q)/3;T[0]=R+2*ne*Math.cos(F),T[2]=R+2*ne*Math.cos(F+2*ie),T[1]=3*R-T[0]-T[2]}return T}e.symmetricEigenvalues=Q;let K=[.1,0,0],Z=[.1,0,0],se=[.1,0,0],fe=[.1,0,0],Ce=[.1,0,0],xe=[.1,0,0];function H(T,B,k){N.set(K,B[0]-k,B[1],B[2]),N.set(Z,B[1],B[4]-k,B[5]),N.set(se,B[2],B[5],B[8]-k),N.cross(fe,K,Z),N.cross(Ce,K,se),N.cross(xe,Z,se);let R=N.dot(fe,fe),V=N.dot(Ce,Ce),j=N.dot(xe,xe),oe=R,ae=0;return V>oe&&(oe=V,ae=1),j>oe&&(ae=2),ae===0?N.scale(T,fe,1/Math.sqrt(R)):ae===1?N.scale(T,Ce,1/Math.sqrt(V)):N.scale(T,xe,1/Math.sqrt(j)),T}e.eigenvector=H;function $(T,B){return a(T,B),_(T,T),C(T,T),T}e.directionTransform=$,e.Identity=n();function de(T,B){return T[0]*B[0]+T[1]*B[1]+T[2]*B[2]+T[3]*B[3]+T[4]*B[4]+T[5]*B[5]+T[6]*B[6]+T[7]*B[7]+T[8]*B[8]}e.innerProduct=de})(Xt||(Xt={}));function vi(){return vi.zero()}(function(e){function t(){let S=[.1,0];return S[0]=0,S}e.zero=t;function n(S){let v=t();return v[0]=S[0],v[1]=S[1],v}e.clone=n;function r(S,v){let P=t();return P[0]=S,P[1]=v,P}e.create=r;function i(S){return isNaN(S[0])||isNaN(S[1])}e.hasNaN=i;function o(S,v,P){return v[P+0]=S[0],v[P+1]=S[1],v}e.toArray=o;function s(S,v,P){return S[0]=v[P+0],S[1]=v[P+1],S}e.fromArray=s;function a(S,v){return S[0]=v[0],S[1]=v[1],S}e.copy=a;function c(S,v,P){return S[0]=v,S[1]=P,S}e.set=c;function u(S,v,P){return S[0]=v[0]+P[0],S[1]=v[1]+P[1],S}e.add=u;function l(S,v,P){return S[0]=v[0]-P[0],S[1]=v[1]-P[1],S}e.sub=l;function m(S,v,P){return S[0]=v[0]*P[0],S[1]=v[1]*P[1],S}e.mul=m;function f(S,v,P){return S[0]=v[0]/P[0],S[1]=v[1]/P[1],S}e.div=f;function d(S,v,P){return S[0]=v[0]*P,S[1]=v[1]*P,S}e.scale=d;function p(S,v){return S[0]=Math.round(v[0]),S[1]=Math.round(v[1]),S}e.round=p;function h(S,v){return S[0]=Math.ceil(v[0]),S[1]=Math.ceil(v[1]),S}e.ceil=h;function x(S,v){return S[0]=Math.floor(v[0]),S[1]=Math.floor(v[1]),S}e.floor=x;function y(S,v){let P=v[0]-S[0],L=v[1]-S[1];return Math.sqrt(P*P+L*L)}e.distance=y;function g(S,v){let P=v[0]-S[0],L=v[1]-S[1];return P*P+L*L}e.squaredDistance=g;function C(S){let v=S[0],P=S[1];return Math.sqrt(v*v+P*P)}e.magnitude=C;function _(S){let v=S[0],P=S[1];return v*v+P*P}e.squaredMagnitude=_;function b(S,v){return S[0]=1/v[0],S[1]=1/v[1],S}e.inverse=b;function I(S,v){return S[0]===v[0]&&S[1]===v[1]}e.areEqual=I;function E(S,v){return`[${S[0].toPrecision(v)} ${S[1].toPrecision(v)}}]`}e.toString=E})(vi||(vi={}));function zo(){return zo.zero()}(function(e){function t(){let w=[.1,0,0,0];return w[0]=0,w}e.zero=t;function n(w){let D=t();return D[0]=w[0],D[1]=w[1],D[2]=w[2],D[3]=w[3],D}e.clone=n;function r(w,D,z,ie){let O=t();return O[0]=w,O[1]=D,O[2]=z,O[3]=ie,O}e.create=r;function i(w,D){return w[0]=D.center[0],w[1]=D.center[1],w[2]=D.center[2],w[3]=D.radius,w}e.fromSphere=i;function o(w){return i(t(),w)}e.ofSphere=o;function s(w){return isNaN(w[0])||isNaN(w[1])||isNaN(w[2])||isNaN(w[3])}e.hasNaN=s;function a(w,D,z){return D[z+0]=w[0],D[z+1]=w[1],D[z+2]=w[2],D[z+3]=w[3],D}e.toArray=a;function c(w,D,z){return w[0]=D[z+0],w[1]=D[z+1],w[2]=D[z+2],w[3]=D[z+3],w}e.fromArray=c;function u(w,D,z){D[z+0]=w[0],D[z+1]=w[1],D[z+2]=w[2]}e.toVec3Array=u;function l(w,D,z){return w[0]=D[z+0],w[1]=D[z+1],w[2]=D[z+2],w[3]=0,w}e.fromVec3Array=l;function m(w,D){return w[0]=D[0],w[1]=D[1],w[2]=D[2],w[3]=D[3],w}e.copy=m;function f(w,D,z,ie,O){return w[0]=D,w[1]=z,w[2]=ie,w[3]=O,w}e.set=f;function d(w,D,z){return w[0]=D[0]+z[0],w[1]=D[1]+z[1],w[2]=D[2]+z[2],w[3]=D[3]+z[3],w}e.add=d;function p(w,D){let z=D[0]-w[0],ie=D[1]-w[1],O=D[2]-w[2],Q=D[3]-w[3];return Math.sqrt(z*z+ie*ie+O*O+Q*Q)}e.distance=p;function h(w,D,z){return w[0]=D[0]*z,w[1]=D[1]*z,w[2]=D[2]*z,w[4]=D[4]*z,w}e.scale=h;function x(w,D){return w[0]=Math.round(D[0]),w[1]=Math.round(D[1]),w[2]=Math.round(D[2]),w[3]=Math.round(D[3]),w}e.round=x;function y(w,D){return w[0]=Math.ceil(D[0]),w[1]=Math.ceil(D[1]),w[2]=Math.ceil(D[2]),w[3]=Math.ceil(D[3]),w}e.ceil=y;function g(w,D){return w[0]=Math.floor(D[0]),w[1]=Math.floor(D[1]),w[2]=Math.floor(D[2]),w[3]=Math.floor(D[3]),w}e.floor=g;function C(w,D){let z=D[0]-w[0],ie=D[1]-w[1],O=D[2]-w[2],Q=D[3]-w[3];return z*z+ie*ie+O*O+Q*Q}e.squaredDistance=C;function _(w){let D=w[0],z=w[1],ie=w[2],O=w[3];return Math.sqrt(D*D+z*z+ie*ie+O*O)}e.norm=_;function b(w){let D=w[0],z=w[1],ie=w[2],O=w[3];return D*D+z*z+ie*ie+O*O}e.squaredNorm=b;function I(w,D,z){let ie=D[0],O=D[1],Q=D[2],K=D[3];return w[0]=z[0]*ie+z[4]*O+z[8]*Q+z[12]*K,w[1]=z[1]*ie+z[5]*O+z[9]*Q+z[13]*K,w[2]=z[2]*ie+z[6]*O+z[10]*Q+z[14]*K,w[3]=z[3]*ie+z[7]*O+z[11]*Q+z[15]*K,w}e.transformMat4=I;function E(w,D){return w[0]*D[0]+w[1]*D[1]+w[2]*D[2]+w[3]*D[3]}e.dot=E;function S(w,D){return w[0]=1/D[0],w[1]=1/D[1],w[2]=1/D[2],w[3]=1/D[3],w}e.inverse=S;function v(w,D){return w[0]===D[0]&&w[1]===D[1]&&w[2]===D[2]&&w[3]===D[3]}e.exactEquals=v;function P(w,D){let z=w[0],ie=w[1],O=w[2],Q=w[3],K=D[0],Z=D[1],se=D[2],fe=D[3];return Math.abs(z-K)<=1e-6*Math.max(1,Math.abs(z),Math.abs(K))&&Math.abs(ie-Z)<=1e-6*Math.max(1,Math.abs(ie),Math.abs(Z))&&Math.abs(O-se)<=1e-6*Math.max(1,Math.abs(O),Math.abs(se))&&Math.abs(Q-fe)<=1e-6*Math.max(1,Math.abs(Q),Math.abs(fe))}e.equals=P;function L(w,D){return`[${w[0].toPrecision(D)} ${w[1].toPrecision(D)} ${w[2].toPrecision(D)} ${w[3].toPrecision(D)}]`}e.toString=L})(zo||(zo={}));function KA(e){return Object.keys(e)}function gn(e){throw new Error("unreachable")}function jA(e){return typeof e?.then=="function"}function vn(){return vn.zero()}(function(e){function t(){let H=[.1,0,0,0];return H[0]=0,H}e.zero=t;function n(){let H=t();return H[3]=1,H}e.identity=n;function r(H){H[0]=0,H[1]=0,H[2]=0,H[3]=1}e.setIdentity=r;function i(H){return isNaN(H[0])||isNaN(H[1])||isNaN(H[2])||isNaN(H[3])}e.hasNaN=i;function o(H,$,de,T){let B=n();return B[0]=H,B[1]=$,B[2]=de,B[3]=T,B}e.create=o;function s(H,$,de){de=de*.5;let T=Math.sin(de);return H[0]=T*$[0],H[1]=T*$[1],H[2]=T*$[2],H[3]=Math.cos(de),H}e.setAxisAngle=s;function a(H,$){let de=Math.acos($[3])*2,T=Math.sin(de/2);return T!==0?(H[0]=$[0]/T,H[1]=$[1]/T,H[2]=$[2]/T):(H[0]=1,H[1]=0,H[2]=0),de}e.getAxisAngle=a;function c(H,$,de){let T=$[0],B=$[1],k=$[2],R=$[3],V=de[0],j=de[1],oe=de[2],ae=de[3];return H[0]=T*ae+R*V+B*oe-k*j,H[1]=B*ae+R*j+k*V-T*oe,H[2]=k*ae+R*oe+T*j-B*V,H[3]=R*ae-T*V-B*j-k*oe,H}e.multiply=c;function u(H,$,de){de*=.5;let T=$[0],B=$[1],k=$[2],R=$[3],V=Math.sin(de),j=Math.cos(de);return H[0]=T*j+R*V,H[1]=B*j+k*V,H[2]=k*j-B*V,H[3]=R*j-T*V,H}e.rotateX=u;function l(H,$,de){de*=.5;let T=$[0],B=$[1],k=$[2],R=$[3],V=Math.sin(de),j=Math.cos(de);return H[0]=T*j-k*V,H[1]=B*j+R*V,H[2]=k*j+T*V,H[3]=R*j-B*V,H}e.rotateY=l;function m(H,$,de){de*=.5;let T=$[0],B=$[1],k=$[2],R=$[3],V=Math.sin(de),j=Math.cos(de);return H[0]=T*j+B*V,H[1]=B*j-T*V,H[2]=k*j+R*V,H[3]=R*j-k*V,H}e.rotateZ=m;function f(H,$){let de=$[0],T=$[1],B=$[2];return H[0]=de,H[1]=T,H[2]=B,H[3]=Math.sqrt(Math.abs(1-de*de-T*T-B*B)),H}e.calculateW=f;function d(H,$,de,T){let B=$[0],k=$[1],R=$[2],V=$[3],j=de[0],oe=de[1],ae=de[2],ne=de[3],q,F,W,re,_e;return F=B*j+k*oe+R*ae+V*ne,F<0&&(F=-F,j=-j,oe=-oe,ae=-ae,ne=-ne),1-F>1e-6?(q=Math.acos(F),W=Math.sin(q),re=Math.sin((1-T)*q)/W,_e=Math.sin(T*q)/W):(re=1-T,_e=T),H[0]=re*B+_e*j,H[1]=re*k+_e*oe,H[2]=re*R+_e*ae,H[3]=re*V+_e*ne,H}e.slerp=d;function p(H,$){let de=$[0],T=$[1],B=$[2],k=$[3],R=de*de+T*T+B*B+k*k,V=R?1/R:0;return H[0]=-de*V,H[1]=-T*V,H[2]=-B*V,H[3]=k*V,H}e.invert=p;function h(H,$){return H[0]=-$[0],H[1]=-$[1],H[2]=-$[2],H[3]=$[3],H}e.conjugate=h;function x(H,$){return H[0]*$[0]+H[1]*$[1]+H[2]*$[2]+H[3]*$[3]}e.dot=x;function y(H,$){let de=$[0]+$[4]+$[8],T;if(de>0)T=Math.sqrt(de+1),H[3]=.5*T,T=.5/T,H[0]=($[5]-$[7])*T,H[1]=($[6]-$[2])*T,H[2]=($[1]-$[3])*T;else{let B=0;$[4]>$[0]&&(B=1),$[8]>$[B*3+B]&&(B=2);let k=(B+1)%3,R=(B+2)%3;T=Math.sqrt($[B*3+B]-$[k*3+k]-$[R*3+R]+1),H[B]=.5*T,T=.5/T,H[3]=($[k*3+R]-$[R*3+k])*T,H[k]=($[k*3+B]+$[B*3+k])*T,H[R]=($[R*3+B]+$[B*3+R])*T}return H}e.fromMat3=y;function g(H,$,de){let[T,B,k]=$,R=Math.cos(T/2),V=Math.cos(B/2),j=Math.cos(k/2),oe=Math.sin(T/2),ae=Math.sin(B/2),ne=Math.sin(k/2);switch(de){case"XYZ":H[0]=oe*V*j+R*ae*ne,H[1]=R*ae*j-oe*V*ne,H[2]=R*V*ne+oe*ae*j,H[3]=R*V*j-oe*ae*ne;break;case"YXZ":H[0]=oe*V*j+R*ae*ne,H[1]=R*ae*j-oe*V*ne,H[2]=R*V*ne-oe*ae*j,H[3]=R*V*j+oe*ae*ne;break;case"ZXY":H[0]=oe*V*j-R*ae*ne,H[1]=R*ae*j+oe*V*ne,H[2]=R*V*ne+oe*ae*j,H[3]=R*V*j-oe*ae*ne;break;case"ZYX":H[0]=oe*V*j-R*ae*ne,H[1]=R*ae*j+oe*V*ne,H[2]=R*V*ne-oe*ae*j,H[3]=R*V*j+oe*ae*ne;break;case"YZX":H[0]=oe*V*j+R*ae*ne,H[1]=R*ae*j+oe*V*ne,H[2]=R*V*ne-oe*ae*j,H[3]=R*V*j-oe*ae*ne;break;case"XZY":H[0]=oe*V*j-R*ae*ne,H[1]=R*ae*j-oe*V*ne,H[2]=R*V*ne+oe*ae*j,H[3]=R*V*j+oe*ae*ne;break;default:gn(de)}return H}e.fromEuler=g;let C=[0,0,0];function _(H,$,de){let T=N.dot($,de)+1;return T<1e-6?(T=0,Math.abs($[0])>Math.abs($[2])?N.set(C,-$[1],$[0],0):N.set(C,0,-$[2],$[1])):N.cross(C,$,de),H[0]=C[0],H[1]=C[1],H[2]=C[2],H[3]=T,D(H,H),H}e.fromUnitVec3=_;function b(H){let $=t();return $[0]=H[0],$[1]=H[1],$[2]=H[2],$[3]=H[3],$}e.clone=b;function I(H,$,de){return $[de+0]=H[0],$[de+1]=H[1],$[de+2]=H[2],$[de+3]=H[3],$}e.toArray=I;function E(H,$,de){return H[0]=$[de+0],H[1]=$[de+1],H[2]=$[de+2],H[3]=$[de+3],H}e.fromArray=E;function S(H,$){return H[0]=$[0],H[1]=$[1],H[2]=$[2],H[3]=$[3],H}e.copy=S;function v(H,$,de,T,B){return H[0]=$,H[1]=de,H[2]=T,H[3]=B,H}e.set=v;function P(H,$){return H[0]===$[0]&&H[1]===$[1]&&H[2]===$[2]&&H[3]===$[3]}e.exactEquals=P;function L(H,$){let de=H[0],T=H[1],B=H[2],k=H[3],R=$[0],V=$[1],j=$[2],oe=$[3];return Math.abs(de-R)<=1e-6*Math.max(1,Math.abs(de),Math.abs(R))&&Math.abs(T-V)<=1e-6*Math.max(1,Math.abs(T),Math.abs(V))&&Math.abs(B-j)<=1e-6*Math.max(1,Math.abs(B),Math.abs(j))&&Math.abs(k-oe)<=1e-6*Math.max(1,Math.abs(k),Math.abs(oe))}e.equals=L;function w(H,$,de){return H[0]=$[0]+de[0],H[1]=$[1]+de[1],H[2]=$[2]+de[2],H[3]=$[3]+de[3],H}e.add=w;function D(H,$){let de=$[0],T=$[1],B=$[2],k=$[3],R=de*de+T*T+B*B+k*k;return R>0&&(R=1/Math.sqrt(R),H[0]=de*R,H[1]=T*R,H[2]=B*R,H[3]=k*R),H}e.normalize=D;let z=[0,0,0],ie=[1,0,0],O=[0,1,0];function Q(H,$,de){let T=N.dot($,de);return T<-.999999?(N.cross(z,ie,$),N.magnitude(z)<1e-6&&N.cross(z,O,$),N.normalize(z,z),s(H,z,Math.PI),H):T>.999999?(H[0]=0,H[1]=0,H[2]=0,H[3]=1,H):(N.cross(z,$,de),H[0]=z[0],H[1]=z[1],H[2]=z[2],H[3]=1+T,D(H,H))}e.rotationTo=Q;let K=t(),Z=t();function se(H,$,de,T,B,k){return d(K,$,B,k),d(Z,de,T,k),d(H,K,Z,2*k*(1-k)),H}e.sqlerp=se;let fe=[0,0,0,0,0,0,0,0,0];function Ce(H,$,de,T){return fe[0]=de[0],fe[3]=de[1],fe[6]=de[2],fe[1]=T[0],fe[4]=T[1],fe[7]=T[2],fe[2]=-$[0],fe[5]=-$[1],fe[8]=-$[2],D(H,y(H,fe))}e.setAxes=Ce;function xe(H,$){return`[${H[0].toPrecision($)} ${H[1].toPrecision($)} ${H[2].toPrecision($)} ${H[3].toPrecision($)}]`}e.toString=xe,e.Identity=n()})(vn||(vn={}));var nn;(function(e){function t(b,I,E){let S=[];for(let P=0;PS[v],set:(S,v,P)=>S[v]=P,add:(S,v,P)=>S[v]+=P,dataOffset:S=>S,getCoords:(S,v)=>(v[0]=S,v)};case 2:{if(E[0]===0&&E[1]===1){let S=I[0];return{get:(v,P,L)=>v[L*S+P],set:(v,P,L,w)=>v[L*S+P]=w,add:(v,P,L,w)=>v[L*S+P]+=w,dataOffset:(v,P)=>P*S+v,getCoords:(v,P)=>(P[0]=v%S,P[1]=Math.floor(v/S),P)}}if(E[0]===1&&E[1]===0){let S=I[1];return{get:(v,P,L)=>v[P*S+L],set:(v,P,L,w)=>v[P*S+L]=w,add:(v,P,L,w)=>v[P*S+L]+=w,dataOffset:(v,P)=>v*S+P,getCoords:(v,P)=>(P[0]=Math.floor(v/S),P[1]=v%S,P)}}throw new Error("bad axis order")}case 3:{if(E[0]===0&&E[1]===1&&E[2]===2){let S=I[0],v=I[1],P=S*v;return{get:(L,w,D,z)=>L[w+D*S+z*P],set:(L,w,D,z,ie)=>L[w+D*S+z*P]=ie,add:(L,w,D,z,ie)=>L[w+D*S+z*P]+=ie,dataOffset:(L,w,D)=>L+w*S+D*P,getCoords:(L,w)=>{let D=Math.floor(L/S);return w[0]=L%S,w[1]=D%v,w[2]=Math.floor(D/v),w}}}if(E[0]===0&&E[1]===2&&E[2]===1){let S=I[0],v=I[2],P=S*v;return{get:(L,w,D,z)=>L[w+z*S+D*P],set:(L,w,D,z,ie)=>L[w+z*S+D*P]=ie,add:(L,w,D,z,ie)=>L[w+z*S+D*P]+=ie,dataOffset:(L,w,D)=>L+D*S+w*P,getCoords:(L,w)=>{let D=Math.floor(L/S);return w[0]=L%S,w[1]=Math.floor(D/v),w[2]=D%v,w}}}if(E[0]===1&&E[1]===0&&E[2]===2){let S=I[1],v=I[0],P=S*v;return{get:(L,w,D,z)=>L[D+w*S+z*P],set:(L,w,D,z,ie)=>L[D+w*S+z*P]=ie,add:(L,w,D,z,ie)=>L[D+w*S+z*P]+=ie,dataOffset:(L,w,D)=>w+L*S+D*P,getCoords:(L,w)=>{let D=Math.floor(L/S);return w[0]=D%v,w[1]=L%S,w[2]=Math.floor(D/v),w}}}if(E[0]===1&&E[1]===2&&E[2]===0){let S=I[1],v=I[2],P=S*v;return{get:(L,w,D,z)=>L[D+z*S+w*P],set:(L,w,D,z,ie)=>L[D+z*S+w*P]=ie,add:(L,w,D,z,ie)=>L[D+z*S+w*P]+=ie,dataOffset:(L,w,D)=>w+D*S+L*P,getCoords:(L,w)=>{let D=Math.floor(L/S);return w[0]=Math.floor(D/v),w[1]=L%S,w[2]=D%v,w}}}if(E[0]===2&&E[1]===0&&E[2]===1){let S=I[2],v=I[0],P=S*v;return{get:(L,w,D,z)=>L[z+w*S+D*P],set:(L,w,D,z,ie)=>L[z+w*S+D*P]=ie,add:(L,w,D,z,ie)=>L[z+w*S+D*P]+=ie,dataOffset:(L,w,D)=>D+L*S+w*P,getCoords:(L,w)=>{let D=Math.floor(L/S);return w[0]=D%v,w[1]=Math.floor(D/v),w[2]=L%S,w}}}if(E[0]===2&&E[1]===1&&E[2]===0){let S=I[2],v=I[1],P=S*v;return{get:(L,w,D,z)=>L[z+D*S+w*P],set:(L,w,D,z,ie)=>L[z+D*S+w*P]=ie,add:(L,w,D,z,ie)=>L[z+D*S+w*P]+=ie,dataOffset:(L,w,D)=>D+w*S+L*P,getCoords:(L,w)=>{let D=Math.floor(L/S);return w[0]=Math.floor(D/v),w[1]=D%v,w[2]=L%S,w}}}throw new Error("bad axis order")}default:return{get:(S,...v)=>S[h(b,v)],set:(S,...v)=>S[h(b,v)]=v[v.length-1],add:(S,...v)=>S[h(b,v)]+=v[v.length-1],dataOffset:(...S)=>h(b,S),getCoords:(S,v)=>x(b,S,v)}}}function p(b){let{dimensions:I}=b,E=1;for(let S=0,v=I.length;Snew(S||b.defaultCtor)(E)}function h(b,I){let{accessDimensions:E,axisOrderFastToSlow:S}=b,v=E.length-1,P=E[v]*I[S[v]];for(let L=v-1;L>=0;L--)P=(P+I[S[L]])*E[L];return P}function x(b,I,E){let{dimensions:S,axisOrderFastToSlow:v}=b,P=S.length,L=I;for(let w=0;wg(E,I)}e.convertToCanonicalAxisIndicesFastToSlow=C;function _(b){let I=new Int32Array(b.length);for(let E=0;Eg(E,I)}e.convertToCanonicalAxisIndicesSlowToFast=_})(nn||(nn={}));var yt;(function(e){function t(d,p,h){return{kind:"element-location",structure:d,unit:p,element:h||0}}e.create=t;function n(d){return t(d.structure,d.unit,d.element)}e.clone=n;function r(d,p,h,x){return p&&(d.structure=p),h&&(d.unit=h),x!==void 0&&(d.element=x),d}e.set=r;function i(d,p){return d.unit=p.unit,d.element=p.element,d}e.copy=i;function o(d){return!!d&&d.kind==="element-location"}e.is=o;function s(d,p){return d.unit===p.unit&&d.element===p.element}e.areEqual=s;let a=N(),c=N();function u(d,p){return d.unit.conformation.position(d.element,a),p.unit.conformation.position(p.element,c),N.distance(a,c)}e.distance=u;function l(d,p){return p.unit.conformation.position(p.element,d)}e.position=l;function m(d){return d.unit.model.atomicHierarchy.residueAtomSegments.index[d.element]}e.residueIndex=m;function f(d){return d.unit.model.atomicHierarchy.chainAtomSegments.index[d.element]}e.chainIndex=f})(yt||(yt={}));var ri;(function(e){function t(f){return f.creator&&f.chunkSize}e.is=t;function n(f){let d=f.growBy*f.elementSize;f.currentSize=d,f.currentIndex=0,f.currentChunk=new f.ctor(d),f.allocatedSize+=d,f.chunks[f.chunks.length]=f.currentChunk}function r(f,d,p,h,x){f.currentIndex>=f.currentSize&&n(f);let y=f.currentChunk,g=f.currentIndex;return y[g]=d,y[g+1]=p,y[g+2]=h,y[g+3]=x,f.currentIndex+=4,f.elementCount++}e.add4=r;function i(f,d,p,h){f.currentIndex>=f.currentSize&&n(f);let x=f.currentChunk,y=f.currentIndex;return x[y]=d,x[y+1]=p,x[y+2]=h,f.currentIndex+=3,f.elementCount++}e.add3=i;function o(f,d,p){f.currentIndex>=f.currentSize&&n(f);let h=f.currentChunk,x=f.currentIndex;return h[x]=d,h[x+1]=p,f.currentIndex+=2,f.elementCount++}e.add2=o;function s(f,d){return f.currentIndex>=f.currentSize&&n(f),f.currentChunk[f.currentIndex]=d,f.currentIndex+=1,f.elementCount++}e.add=s;function a(f,d,p){for(let h=0;h=f.currentSize&&n(f),f.currentChunk[f.currentIndex++]=p,f.elementCount++;return f.elementCount}e.addRepeat=a;function c(f,d){let{elementSize:p}=f;for(let h=0,x=d.length;h=f.currentSize&&n(f);let{currentChunk:y}=f;for(let g=0;g=f.currentSize)g.set(_,C);else for(let b=0,I=_.length;b"u")return x;if(typeof h=="number")return x.currentChunk=new f(h*d),x.allocatedSize=h*d,x.currentSize=x.currentChunk.length,x.chunks[0]=x.currentChunk,x;let y=h;if(y.length%d!==0)throw new Error("initialChunk length must be a multiple of the element size.");return x.currentChunk=y,x.allocatedSize=y.length,x.currentSize=y.length,x.chunks[0]=y,x}e.create=m})(ri||(ri={}));function Vo(e,t,n){return e[t]-e[n]}function lr(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function ju(e,t,n,r){let i=n+r>>1;return t(e,n,r)>0?t(e,n,i)>0?t(e,i,r)>0?i:r:n:t(e,r,i)>0?t(e,i,n)>0?i:n:r}function np(e,t,n){let{cmp:r,swap:i,data:o,parts:s}=e,a=t+1,c=n;for(i(o,t,ju(o,r,t,n));r(o,c,t)>0;)--c;for(let u=t+1;u<=c;u++){let l=r(o,u,t);if(l>0){for(i(o,u,c),--c;r(o,c,t)>0;)--c;u--}else l===0&&(i(o,u,a),a++)}for(let u=t;u=r&&t(e,s,s+1)>0;)n(e,s,s+1),s=s-1}}function Ko(e,t,n){let{parts:r}=e;for(;ts;)--o;for(let a=n+1;a<=o;a++){let c=e[a];if(c>s){for(lr(e,a,o),--o;e[o]>s;)--o;a--}else c===s&&(lr(e,a,i),++i)}for(let a=n;a=t&&e[o]>i;)e[o+1]=e[o],o=o-1;e[o+1]=i}}function ba(e,t,n,r){for(;ns[d].key){l=!1;break}}if(c&&l){for(let d=0;d>4;return t=(t^3735928559)+(t<<5),t=t^t>>11,t}function Dr(e,t){let n=23;return n=31*n+e|0,n=31*n+t|0,n=n^n>>4,n=(n^3735928559)+(n<<5),n=n^n>>11,n}function Wu(e,t,n){let r=23;return r=31*r+e|0,r=31*r+t|0,r=31*r+n|0,r=r^r>>4,r=(r^3735928559)+(r<<5),r=r^r>>11,r}function Xu(e,t,n,r){let i=23;return i=31*i+e|0,i=31*i+t|0,i=31*i+n|0,i=31*i+r|0,i=i^i>>4,i=(i^3735928559)+(i<<5),i=i^i>>11,i}function $u(e){let t=0;for(let n=0,r=e.length;n>>0}var Ut={};Br(Ut,{createAndFillArray:()=>up,createArray:()=>ii,fillArrayValues:()=>Qu,getArrayBounds:()=>Mr,isTypedArray:()=>Zo,typedArrayWindow:()=>Wo});function Mr(e,t){let n=t&&typeof t.start<"u"?Math.max(Math.min(t.start,e-1),0):0,r=t&&typeof t.end<"u"?Math.min(t.end,e):e;return{start:n,end:r}}function ii(e,t){let n=t&&typeof t.array<"u"?t.array:Array,{start:r,end:i}=Mr(e,t);return{array:new n(i-r),start:r,end:i}}function Qu(e,t,n){for(let r=0,i=t.length;r9||s<0)return o*i|0;i=10*i+s|0}return o*i}function Ju(e,t,n,r){return t.charCodeAt(n)===43&&n++,e*Math.pow(10,Pn(t,n,r))}function Cb(e,t,n){for(;t=0&&c<10)o=o*10+c,++r;else if(c===-2){for(++r;r=0&&c<10)s=10*s+c,a=10*a,++r;else return c===53||c===21?Ju(i*(o+s/a),e,r+1,n):i*(o+s/a);return i*(o+s/a)}else{if(c===53||c===21)return Ju(i*o,e,r+1,n);break}}return i*o}var me;(function(e){let t;(function(P){P.str={"@type":"str",T:"",valueType:"str"},P.ustr={"@type":"str",T:"",valueType:"str",transform:"uppercase"},P.lstr={"@type":"str",T:"",valueType:"str",transform:"lowercase"},P.int={"@type":"int",T:0,valueType:"int"},P.coord={"@type":"coord",T:0,valueType:"float"},P.float={"@type":"float",T:0,valueType:"float"};function L(Z){var se;return{"@type":"str",T:(se=Z?.defaultValue)!==null&&se!==void 0?se:"",transform:Z?.transform,valueType:"str"}}P.Str=L;function w(Z=0){return{"@type":"int",T:Z,valueType:"int"}}P.Int=w;function D(Z=0){return{"@type":"float",T:Z,valueType:"float"}}P.Float=D;function z(Z,se=P.float){return{"@type":"tensor",T:Z.create(),space:Z,valueType:"tensor",baseType:se}}P.Tensor=z;function ie(Z,se=P.float){return z(nn.Vector(Z,se["@type"]==="int"?Int32Array:Float64Array),se)}P.Vector=ie;function O(Z,se,fe=P.float){return z(nn.ColumnMajorMatrix(Z,se,fe["@type"]==="int"?Int32Array:Float64Array),fe)}P.Matrix=O;function Q(Z){return Z}P.Aliased=Q;function K(Z,se,fe=[]){return{"@type":"list",T:fe,separator:Z,itemParse:se,valueType:"list"}}P.List=K})(t=e.Schema||(e.Schema={}));function n(P){return!!P&&!!P.schema&&!!P.value}e.is=n,e.ValueKind={Present:0,NotPresent:1,Unknown:2};function r(P,L){return el(L.T,P,L,1)}e.Undefined=r;function i(P,L,w){return el(P,L,w,0)}e.ofConst=i;function o(P){return Xo(P)}e.ofLambda=o;function s(P,L){return o({value:w=>w+P,rowCount:Math.max(L-P+1,0),schema:t.int})}e.range=s;function a(P){return fr(P)}e.ofArray=a;function c(P){return fr({array:P,schema:t.int})}e.ofIntArray=c;function u(P){return fr({array:P,schema:t.float})}e.ofFloatArray=u;function l(P){return fr({array:P,schema:t.str})}e.ofStringArray=l;function m(P){return fr({array:P,schema:t.Aliased(t.str)})}e.ofStringAliasArray=m;function f(P,L=","){return fr({array:P,schema:t.List(L,w=>w)})}e.ofStringListArray=f;function d(P){let{count:L,data:w,indices:D}=P;return Xo({value:z=>Pn(w,D[2*z],D[2*z+1])||0,rowCount:L,schema:t.int})}e.ofIntTokens=d;function p(P){let{count:L,data:w,indices:D}=P;return Xo({value:z=>Ln(w,D[2*z],D[2*z+1])||0,rowCount:L,schema:t.float})}e.ofFloatTokens=p;function h(P){let{count:L,data:w,indices:D}=P;return Xo({value:z=>{let ie=w.substring(D[2*z],D[2*z+1]);return ie==="."||ie==="?"?"":ie},rowCount:L,schema:t.str})}e.ofStringTokens=h;function x(P,L,w){return dp(P,L,w)}e.window=x;function y(P,L,w=!0){return _p(P,L,w)}e.view=y;function g(P){return lp(P)}e.createFirstIndexMap=g;function C(P){return fp(P)}e.createIndexer=C;function _(P,L,w){return xp(P,L,w||Array)}e.mapToArray=_;function b(P,L){return Ap(P,L)}e.areEqual=b;function I(P,L){return Sp(P,L)}e.indicesOf=I;function E(P,L){return P.__array?P:P.isDefined?fr({array:P.toArray({array:L}),schema:P.schema,valueKind:P.valueKind}):r(P.rowCount,P.schema)}e.asArrayColumn=E;function S(P,L,w=0){if(!P.isDefined)return;let D=P.__array;if(D)for(let z=0,ie=D.length;zt.has(n)?t.get(n):-1}function el(e,t,n,r){return{schema:n,__array:void 0,isDefined:r===0,rowCount:t,value:o=>e,valueKind:o=>r,toArray:o=>{let{array:s}=ii(t,o);for(let a=0,c=s.length;a!0}}function Xo({value:e,valueKind:t,areValuesEqual:n,rowCount:r,schema:i}){return{schema:i,__array:void 0,isDefined:!0,rowCount:r,value:e,valueKind:t||(o=>0),toArray:o=>{let{array:s,start:a}=ii(r,o);for(let c=0,u=s.length;ce(o)===e(s))}}function fr({array:e,schema:t,valueKind:n}){let r=e.length,i=t.T,o=t.valueType==="str"?t.transform==="lowercase"?a=>{let c=e[a];return typeof c=="string"?c.toLowerCase():`${c??i}`.toLowerCase()}:t.transform==="uppercase"?a=>{let c=e[a];return typeof c=="string"?c.toUpperCase():`${c??i}`.toUpperCase()}:a=>{let c=e[a];return typeof c=="string"?c:`${c??i}`}:a=>e[a],s=Zo(e);return{schema:t,__array:e,isDefined:!0,rowCount:r,value:o,valueKind:n||(a=>0),toArray:t.valueType==="str"?t.transform==="lowercase"?a=>{let{start:c,end:u}=Mr(r,a),l=new(a&&typeof a.array<"u"?a.array:e.constructor)(u-c);for(let m=0,f=u-c;m{let{start:c,end:u}=Mr(r,a),l=new(a&&typeof a.array<"u"?a.array:e.constructor)(u-c);for(let m=0,f=u-c;m{let{start:c,end:u}=Mr(r,a),l=new(a&&typeof a.array<"u"?a.array:e.constructor)(u-c);for(let m=0,f=u-c;mWo(e,a):a=>{let{start:c,end:u}=Mr(r,a);if(c===0&&u===e.length)return e;let l=new(a&&typeof a.array<"u"?a.array:e.constructor)(u-c);for(let m=0,f=u-c;me[a]===e[c]}}function dp(e,t,n){return e.isDefined?t===0&&n===e.rowCount?e:e.__array&&Zo(e.__array)?mp(e,t,n):pp(e,t,n):me.Undefined(n-t,e.schema)}function mp(e,t,n){let r=Wo(e.__array,{start:t,end:n}),i=e.valueKind;return fr({array:r,schema:e.schema,valueKind:o=>i(t+o)})}function pp(e,t,n){let r=e.value,i=e.valueKind,o=e.areValuesEqual,s=t===0?r:c=>r(c+t),a=n-t;return{schema:e.schema,__array:void 0,isDefined:e.isDefined,rowCount:a,value:s,valueKind:t===0?i:c=>i(c+t),toArray:c=>{let{array:u}=ii(a,c);for(let l=0,m=u.length;lo(c+t,u+t)}}function hp(e,t){if(e.length!==t)return!1;for(let n=0,r=e.length;ni(t[o])})}function yp(e,t){let n=e.value,r=e.valueKind,i=e.areValuesEqual,o=a=>n(t[a]),s=t.length;return{schema:e.schema,__array:void 0,isDefined:e.isDefined,rowCount:s,value:o,valueKind:a=>r(t[a]),toArray:a=>{let{array:c}=ii(s,a);for(let u=0,l=c.length;ui(t[a],t[c])}}function xp(e,t,n){let r=new n(e.rowCount);for(let i=0,o=e.rowCount;i0&&(_.chunks[_.chunks.length]=_.current.length===_.offset?_.current.join(""):_.current.slice(0,_.offset).join("")),_.chunks.join("")):_.current.length===_.offset?_.current.join(""):_.current.splice(0,_.offset).join("")}e.getString=n;function r(_){let b=0;for(let I of _.chunks)b+=I.length;for(let I=0;I<_.offset;I++)b+=_.current[I].length;return b}e.getSize=r;function i(_){return _.offset>0&&(_.current.length===_.offset?_.chunks[_.chunks.length]=_.current.join(""):_.chunks[_.chunks.length]=_.current.slice(0,_.offset).join(""),_.offset=0),_.chunks}e.getChunks=i;let o=[];(function(){let _="";for(let b=0;b<512;b++)o[b]=_,_=_+" "})();function s(_){l(_,` +`)}e.newline=s;function a(_,b){b>0&&l(_,o[b])}e.whitespace=a;function c(_){l(_," ")}e.whitespace1=c;function u(_,b){b&&(_.offset===_.capacity&&(_.chunks[_.chunks.length]=_.current.join(""),_.offset=0),_.current[_.offset++]=b)}e.write=u;function l(_,b){_.offset===_.capacity&&(_.chunks[_.chunks.length]=_.current.join(""),_.offset=0),_.current[_.offset++]=b}e.writeSafe=l;function m(_,b,I){if(!b){a(_,I);return}let E=I-b.length;a(_,E),l(_,b)}e.writePadLeft=m;function f(_,b,I){if(!b){a(_,I);return}let E=I-b.length;l(_,b),a(_,E)}e.writePadRight=f;function d(_,b){l(_,""+b)}e.writeInteger=d;function p(_,b){l(_,""+b+" ")}e.writeIntegerAndSpace=p;function h(_,b,I){let E=""+b,S=I-E.length;a(_,S),l(_,E)}e.writeIntegerPadLeft=h;function x(_,b,I){let E=""+b,S=I-E.length;l(_,E),a(_,S)}e.writeIntegerPadRight=x;function y(_,b,I){l(_,""+Math.round(I*b)/I)}e.writeFloat=y;function g(_,b,I,E){let S=""+Math.round(I*b)/I,v=E-S.length;a(_,v),l(_,S)}e.writeFloatPadLeft=g;function C(_,b,I,E){let S=""+Math.round(I*b)/I,v=E-S.length;l(_,S),a(_,v)}e.writeFloatPadRight=C})(dt||(dt={}));var Qt=function(){if(typeof window<"u"&&window.performance){let e=window.performance;return()=>e.now()}else return typeof process<"u"&&process.hrtime!=="undefined"&&typeof process.hrtime=="function"?()=>{let e=process.hrtime();return e[0]*1e3+e[1]/1e6}:Date.now?()=>Date.now():()=>+new Date}();function Eb(e,t=!0){if(isNaN(e))return"n/a";let n=Math.floor(e/(60*60*1e3)),r=Math.floor(e/(60*1e3)%60),i=Math.floor(e/1e3%60),o=Math.floor(e%1e3).toString();for(;o.length<3;)o="0"+o;for(;!t&&o.length>1&&o[o.length-1]==="0";)o=o.substr(0,o.length-1);return n>0?`${n}h${r}m${i}.${o}s`:r>0?`${r}m${i}.${o}s`:i>0?`${i}.${o}s`:`${e.toFixed(0)}ms`}var Rt;(function(e){let t=typeof btoa<"u"?btoa:s=>Buffer.from(s).toString("base64"),n=[];function r(){let s=+new Date+Qt();for(let a=0;a<16;a++)n[a]=String.fromCharCode((s+Math.random()*255)%255|0),s=Math.floor(s/255);return t(n.join("")).replace(/\+/g,"-").replace(/\//g,"_").substr(0,22)}e.create22=r;function i(){let s=+new Date+Qt();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(c){let u=(s+Math.random()*16)%16|0;return s=Math.floor(s/16),(c==="x"?u:u&3|8).toString(16)})}e.createv4=i;function o(s){return typeof s=="string"}e.is=o})(Rt||(Rt={}));function Ip(e,t){return e-t}function wp(e){return Array.prototype.sort.call(e,Ip),e}var Ia;(function(e){class t{has(p){return!1}forEach(p,h){return h}constructor(){this.size=0}}class n{has(p){return p===this.idx}forEach(p,h){return p(this.idx,h),h}constructor(p){this.idx=p,this.size=1}}class r{has(p){return pp[h++]=x),wp(p),this._flat=p,this._flat}forEach(p,h){return this._forEach(p,h),h}constructor(p){this.set=p,this._flat=void 0,this.size=p.size}}function s(d){return new i(d)}e.always=s,e.never=new t;function a(d){return new o(d)}e.ofSet=a;function c(d){return new n(d)}e.singleton=c;function u(d){let p=d.length;if(p===0)return new t;if(p===1)return new n(d[0]);let h=0;for(let g of d)g>h&&(h=g);if(p===h)return new i(p);if(p/h<1/12){let g=new Set;for(let C of d)g.add(C);return new o(g)}let y=new Int8Array(h+1);for(let g of d)y[g]=1;return new r(y,d.length)}e.ofUniqueIndices=u;function l(d,p){return new r(d,p)}e.ofMask=l;function m(d,p){for(let h of p)if(d.has(h))return!0;return!1}e.hasAny=m;function f(d,p){let h=0,x=0;if(p.forEach(y=>{d.has(y)||(h++,y>x&&(x=y))}),h/x<1/12){let y=new Set;return p.forEach(g=>{d.has(g)||y.add(g)}),a(y)}else{let y=new Uint8Array(x+1);return p.forEach(g=>{d.has(g)||(y[g]=1)}),l(y,h)}}e.complement=f})(Ia||(Ia={}));function Pi(e=0,t=Number.MAX_SAFE_INTEGER){let n=e;return()=>{let r=n;return n=(n+1)%t,r}}var ro;(function(e){function t(r){return{ref:r}}e.create=t;function n(r,i){return r.ref=i,r}e.set=n})(ro||(ro={}));var vp=Pi(0,2147483647),Zn;(function(e){function t(r,i){return{id:vp(),version:0,value:r,metadata:i}}e.create=t;function n(r,i){return{id:r.id,version:r.version+1,value:i,metadata:r.metadata}}e.withValue=n})(Zn||(Zn={}));var tl;(function(e){function t(o,s){return ro.create(Zn.create(o,s))}e.create=t;function n(o,s){return ro.set(o,Zn.withValue(o.ref,s))}e.update=n;function r(o,s){return ro.set(o,s)}e.set=r;function i(o,s){return o.ref.value!==s?n(o,s):o}e.updateIfChanged=i})(tl||(tl={}));var Gb=function(){};function io(e,t){let n=e.length;if(n!==t.length)return!1;for(let r=0;rb[P][v],valueKind:P=>typeof b[P][v]>"u"?1:0});return I}e.ofRows=s;function a(_,b){var I;let E=Object.create(null),S=Object.keys(_);E._rowCount=0,E._columns=S,E._schema=_;for(let v of S)typeof b[v]<"u"?(E[v]=me.ofArray({array:b[v],schema:_[v]}),E._rowCount=(I=b[v])===null||I===void 0?void 0:I.length):E[v]=me.Undefined(E._rowCount,_[v]);return E}e.ofArrays=a;function c(_,b,I){let E=Object.create(null),S=Object.keys(b);E._rowCount=I.length,E._columns=S,E._schema=b;for(let v of S)E[v]=me.view(_[v],I);return E}e.view=c;function u(_,b,I){let E=[];for(let S=0,v=_._rowCount;Sb(P,L));let E=!0;for(let v=0,P=I.length;v=n&&t0&&r>0&&co(e)>=ao(t)&&ao(e)<=co(t)}function hl(e,t){return Nr(e)?Nr(t)?Wn(e)<=Wn(t)&&dr(e)>=dr(t):!0:Nr(t)===0}function Qo(e,t){let n=Wn(e);if(t<=n)return 0;let r=dr(e);return t>=r?r-n:t-n}function _l(e,t,n){let r=Wn(n),i=Wn(e);if(t<=r+i)return r;let o=dr(n);return t>=o+i?o:t-i}function Da(e,t,n){return Jo(Qo(e,t),Qo(e,n+1))}function gl(e,t){return Ea(e,t)?Jo(Math.max(Wn(e),Wn(t)),Math.min(dr(e),dr(t))):Pa}function yl(e,t){return Nr(Da(e,ao(t),co(t)))}var ue;(function(e){e.Empty=Pa,e.ofSingleton=t=>Ba(t,t),e.ofRange=Ba,e.ofBounds=Jo,e.ofLength=al,e.is=cl,e.has=fl,e.indexOf=dl,e.getAt=ml,e.start=Wn,e.end=dr,e.min=ao,e.max=co,e.size=Nr,e.hashCode=ul,e.toString=ll,e.areEqual=pl,e.areIntersecting=Ea,e.isSubInterval=hl,e.findPredecessorIndex=Qo,e.findPredecessorIndexInInterval=_l,e.findRange=Da,e.intersectionSize=yl,e.intersect=gl})(ue||(ue={}));var Bi=[];function xl(e){return[e]}function Al(e){return e}function bl(e){return jt(e),e}function Ma(e,t){if(t2?Xu(t,e[0],e[t-1],e[t>>1]):Wu(t,e[0],e[t-1]):0}function vl(e){let t=e.length;return t>5?`[${e[0]}, ${e[1]}, ..., ${e[t-1]}], length ${t}`:`[${e.join(", ")}]`}function Ua(e,t){let n=e.length;return n===0?-1:e[0]<=t&&t<=e[n-1]?Ml(e,t,0,n):-1}function Pl(e,t,n){return Ra(e,t,ue.start(n),ue.end(n))}function Ra(e,t,n,r){return e.length===0||r<=n?-1:e[n]<=t&&t<=e[r-1]?Ml(e,t,n,r):-1}function Bl(e,t){return Ua(e,t)>=0}function Ta(e,t){if(e===t)return!0;let n=e.length;if(n!==t.length||e[0]!==t[0]||e[n-1]!==t[n-1])return!1;if(Na(e))return!0;n--;for(let r=1;re[n-1]?n:Nl(e,t,0,n)}function El(e,t,n){let r=ue.start(n),i=ue.end(n),o=e[r];return t<=o?r:i>r&&t>e[i-1]?i:t-o<=11?Np(e,t,r+1,i):Nl(e,t,r,i)}function Dl(e,t,n){return ue.ofBounds(kr(e,t),kr(e,n+1))}function Ml(e,t,n,r){let i=n,o=r-1;for(;i<=o;){if(i+11>o){for(let c=i;c<=o;c++)if(t===e[c])return c;return-1}let s=i+o>>1,a=e[s];if(ta)i=s+1;else return s}return-1}function Nl(e,t,n,r){let i=n,o=r-1;for(;io){for(let c=i;c<=o;c++)if(t<=e[c])return c;return o+1}let s=i+o>>1,a=e[s];if(ta)i=s+1;else return s}return i>o?o+1:e[i]>=t?i:i+1}function Np(e,t,n,r){for(let i=n;ia)r++;else return!0}return!1}function Ul(e,t){if(e===t)return!0;let n=t.length,{startI:r,startJ:i,endI:o,endJ:s}=oi(e,t);if(s-iu?i++:(r++,i++,a++)}return a===n}function Fa(e,t){if(e===t)return e;let n=e.length,r=t.length;if(n===0)return t;if(r===0)return e;if(e[0]>t[0])return Fa(t,e);let{startI:i,startJ:o,endI:s,endJ:a}=oi(e,t),c=Oa(e,t,i,o,s,a);if(c===n&&c===r||c===r)return e;if(c===n)return t;let u=new Int32Array(n+r-c),l=0,m=0,f=0;for(l=0;lt[m];)u[f++]=t[m++];for(;lp?(u[f++]=p,m++):(u[f++]=d,l++,m++)}for(;ll?a++:(s++,a++,c++)}return c}function Tl(e,t){if(e===t)return e;let{startI:n,startJ:r,endI:i,endJ:o}=oi(e,t),s=Oa(e,t,n,r,i,o),a=e.length,c=t.length;if(!s)return Bi;if(s===a&&s===c||s===c)return t;if(s===a)return e;let u=new Int32Array(s),l=0,m=n,f=r;for(;mp||(u[l++]=d,m++),f++)}return u}function Fl(e,t){if(e===t)return Bi;let n=e.length,{startI:r,startJ:i,endI:o,endJ:s}=oi(e,t),a=r,c=i,u=0;for(;ad?c++:(a++,c++,u++)}if(!u)return e;if(u>=n)return Bi;let l=new Int32Array(n-u),m=0;for(let f=0;fd||a++,c++)}for(;ad?a++:(s++,a++,c++)}let u=e.length;if(!c)return Bi;if(c===u)return so(0,e.length-1);let l=new Int32Array(c),m=0;for(s=n,a=r;sd||(l[m++]=s,s++),a++)}return l}var mr={startI:0,startJ:0,endI:0,endJ:0};function oi(e,t){let n=e.length,r=t.length,i=n/r;return n>=128||r>=128||i<=.34||i>=2.99?(mr.startI=kr(e,es(t)),mr.startJ=kr(t,es(e)),mr.endI=kr(e,ts(t)),mr.endJ=kr(t,ts(e))):(mr.startI=0,mr.startJ=0,mr.endI=n,mr.endJ=r),mr}var le;(function(e){e.Empty=Bi,e.ofUnsortedArray=bl,e.ofSingleton=xl,e.ofSortedArray=Al,e.ofRange=Ma,e.ofBounds=(t,n)=>Ma(t,n-1),e.is=Cl,e.isRange=Na,e.has=Bl,e.indexOf=Ua,e.indexOfInInterval=Pl,e.indexOfInRange=Ra,e.start=es,e.end=ts,e.min=Sl,e.max=Il,e.size=ka,e.hashCode=wl,e.toString=vl,e.areEqual=Ta,e.areIntersecting=kl,e.isSubset=Ul,e.union=Fa,e.intersect=Tl,e.subtract=Fl,e.findPredecessorIndex=kr,e.findPredecessorIndexInInterval=El,e.findRange=Dl,e.intersectionSize=Rl,e.deduplicate=Ol,e.indicesOf=Ll})(le||(le={}));var qn=ue.Empty,Kl=ue.ofSingleton,jl=ue.ofRange,Yl=ue.ofBounds;function Bn(e){return e.length?le.isRange(e)?ue.ofRange(e[0],e[e.length-1]):e:qn}function Ur(e){return ue.is(e)?ue.size(e):le.size(e)}function Zl(e,t){return ue.is(e)?ue.has(e,t):le.has(e,t)}function Wl(e,t){return ue.is(e)?ue.indexOf(e,t):le.indexOf(e,t)}function ns(e,t){return ue.is(e)?ue.getAt(e,t):e[t]}function si(e){return ue.is(e)?ue.min(e):le.min(e)}function ai(e){return ue.is(e)?ue.max(e):le.max(e)}function Xl(e){return ue.is(e)?ue.start(e):le.start(e)}function $l(e){return ue.is(e)?ue.end(e):le.end(e)}function Ql(e){return ue.is(e)?ue.hashCode(e):le.hashCode(e)}function Jl(e){return ue.is(e)?ue.toString(e):le.toString(e)}function ef(e,t){return ue.is(e)?ue.is(t)?ue.areEqual(e,t):ql(e,t):ue.is(t)?ql(t,e):le.areEqual(e,t)}function tf(e,t){return ue.is(e)?ue.is(t)?ue.areIntersecting(e,t):Gl(t,e):ue.is(t)?Gl(e,t):le.areIntersecting(e,t)}function nf(e,t){return ue.is(e)?ue.is(t)?ue.isSubInterval(e,t):Rp(e,t):ue.is(t)?Up(e,t):le.isSubset(e,t)}function rf(e,t){return ue.is(e)?ue.findPredecessorIndex(e,t):le.findPredecessorIndex(e,t)}function of(e,t,n){return ue.is(e)?ue.findPredecessorIndexInInterval(e,t,n):le.findPredecessorIndexInInterval(e,t,n)}function sf(e,t,n){return ue.is(e)?ue.findRange(e,t,n):le.findRange(e,t,n)}function af(e,t){return ue.is(e)?ue.is(t)?ue.intersectionSize(e,t):zl(t,e):ue.is(t)?zl(e,t):le.intersectionSize(e,t)}function cf(e,t){return ue.is(e)?ue.is(t)?Op(e,t):Hl(t,e):ue.is(t)?Hl(e,t):Bn(le.union(e,t))}function uf(e,t){return ue.is(e)?ue.is(t)?ue.intersect(e,t):Vl(t,e):ue.is(t)?Vl(e,t):Bn(le.intersect(e,t))}function lf(e,t){return ue.is(e)?ue.is(t)?Lp(e,t):Gp(e,t):ue.is(t)?qp(e,t):Bn(le.subtract(e,t))}function ql(e,t){return ue.size(e)===le.size(t)&&ue.start(e)===le.start(t)&&ue.end(e)===le.end(t)}function Gl(e,t){return e.length!==0&&ue.size(le.findRange(e,ue.min(t),ue.max(t)))!==0}function Up(e,t){let n=ue.min(t),r=ue.max(t);if(r-n+1===0)return!0;let i=le.min(e),o=le.max(e);if(no)return!1;let s=le.findRange(e,n,r);return ue.size(s)===ue.size(t)}function Rp(e,t){let n=ue.min(e),r=ue.max(e);if(r-n+1===0)return!1;let i=le.min(t),o=le.max(t);return i>=n&&o<=r}function Tp(e,t){let n=Ur(e),r=Ur(t);return n===0&&r===0?!0:n>0&&r>0&&ai(e)>=si(t)&&si(e)<=ai(t)}function Fp(e,t){return Ur(e)?Ur(t)?si(e)<=si(t)&&ai(e)>=ai(t):!0:Ur(t)===0}function Op(e,t){if(ue.areEqual(e,t))return e;let n=ue.size(e),r=ue.size(t);if(!r)return e;if(!n)return t;let i=ue.min(e),o=ue.min(t);if(Tp(e,t))return ue.ofRange(Math.min(i,o),Math.max(ue.max(e),ue.max(t)));let s,a,c,u;ip||(c++,l++),m++)}if(c===0)return qn;if(c===i&&c===o)return e;let f=new Int32Array(c);for(u=0,l=0,m=s;lp||(f[u++]=m,l++),m++)}return Bn(f)}var Ie;(function(e){e.Empty=qn,e.ofSingleton=Kl,e.ofRange=jl,e.ofBounds=Yl,e.ofSortedArray=Bn,e.has=Zl,e.indexOf=Wl,e.getAt=ns,e.min=si,e.max=ai,e.start=Xl,e.end=$l,e.size=Ur,e.hashCode=Ql,e.areEqual=ef,e.areIntersecting=tf,e.isSubset=nf,e.union=cf,e.intersect=uf,e.indexedIntersect=mf,e.subtract=lf,e.findPredecessorIndex=rf,e.findPredecessorIndexInInterval=of,e.findRange=sf,e.intersectionSize=af;function t(a,c,u){return ff(a,c,u)}e.forEach=t;function n(a,c,u,l){return df(a,c,u,l)}e.forEachSegment=n;function r(a){return ue.is(a)}e.isInterval=r;function i(a){return!ue.is(a)}e.isSortedArray=i;function o(a){let c=[];return e.forEach(a,u=>c.push(u)),c}e.toArray=o;function s(a){return Jl(a)}e.toString=s})(Ie||(Ie={}));function qa(e){let t=le.ofSortedArray(e),n=le.max(t),r=new Int32Array(n);for(let i=0,o=e.length-1;i=r?-1:Ie.findPredecessorIndex(e,n-1);return Ie.findRange(t,Ie.getAt(e,i),Ie.getAt(e,i+1)-1)}var La=class{move(){for(;this.hasNext;)if(this.updateValue()){this.value.index=this.segmentMin++,this.hasNext=this.segmentMax>=this.segmentMin&&ue.size(this.setRange)>0;break}else this.updateSegmentRange();return this.value}updateValue(){let t=this.segments[this.segmentMin+1],n=Ie.findPredecessorIndexInInterval(this.set,t,this.setRange);return this.value.start=ue.start(this.setRange),this.value.end=n,this.setRange=ue.ofBounds(n,ue.end(this.setRange)),n>this.value.start}updateSegmentRange(){let t=ue.min(this.setRange),n=ue.max(this.setRange);if(n=this.segmentMin}setSegment(t){this.setRange=ue.ofBounds(t.start,t.end),this.updateSegmentRange()}constructor(t,n,r,i){this.segments=t,this.segmentMap=n,this.set=r,this.segmentMin=0,this.segmentMax=0,this.setRange=ue.Empty,this.value={index:0,start:0,end:0},this.hasNext=!1,this.setRange=i,this.updateSegmentRange()}};function yf(e,t,n){let r=typeof n<"u"?ue.ofBounds(n.start,n.end):ue.ofBounds(0,Ie.size(t));return new La(e.offsets,e.index,t,r)}var We;(function(e){e.create=qa,e.ofOffsets=pf,e.count=hf,e.getSegment=_f,e.projectValue=gf,e.transientSegments=yf})(We||(We={}));function Ha(e){return new Ga(e)}var Ga=class{remove(t){let{prev:n,next:r}=this,i=n[t],o=r[t];i>=0&&(r[i]=o,n[t]=-1),o>=0&&(n[o]=i,r[t]=-1),t===this.head&&(i<0?this.head=o:this.head=i)}has(t){return this.prev[t]>=0||this.next[t]>=0||this.head===t}constructor(t){this.head=t>0?0:-1,this.prev=new Int32Array(t),this.next=new Int32Array(t);for(let n=0;n0,this.xs=t,this.index=-1,this.lastValue=t.length>0?t[0]:void 0}},rs=class{move(){return++this.value,this.hasNext=this.value=t}},Va=class{move(){return this.hasNext=!1,this.value}constructor(t){this.value=t,this.hasNext=!0}},Ka=class{move(){let t=this.f(this.base.move());return this.hasNext=this.base.hasNext,t}constructor(t,n){this.base=t,this.f=n,this.hasNext=!1,this.hasNext=t.hasNext}},ja=class{move(){let t=this.next;return this.hasNext=this.findNext(),t}findNext(){for(;this.base.hasNext;)if(this.next=this.base.move(),this.p(this.next))return!0;return!1}constructor(t,n){this.base=t,this.p=n,this.hasNext=this.findNext()}},Rr;(function(e){e.Empty=new rs(0,-1);function t(a){return new za(a)}e.Array=t;function n(a){return new Va(a)}e.Value=n;function r(a,c){return new rs(a,c)}e.Range=r;function i(a,c){return new Ka(a,c)}e.map=i;function o(a,c){return new ja(a,c)}e.filter=o;function s(a,c,u){for(;a.hasNext;)if(c(a.move(),u))return u;return u}e.forEach=s})(Rr||(Rr={}));var xt;(function(e){e.DefaultName="1_555",e.Default=t(e.DefaultName,ke.identity()),e.RotationTranslationEpsilon=.005;function t(g,C,_){let{assembly:b,ncsId:I,hkl:E,spgrOp:S,key:v}=_||{},P=E?N.clone(E):N();S=S??-1,v=v??-1,I=I||-1;let L=ke.isIdentity(C),w=r(_,L);return L?{name:g,assembly:b,matrix:C,inverse:ke.identity(),isIdentity:!0,hkl:P,spgrOp:S,ncsId:I,suffix:w,key:v}:(ke.isRotationAndTranslation(C,e.RotationTranslationEpsilon)||console.warn(`Symmetry operator (${g}) should be a composition of rotation and translation.`),{name:g,assembly:b,matrix:C,inverse:ke.invert(ke(),C),isIdentity:!1,hkl:P,spgrOp:S,key:v,ncsId:I,suffix:w})}e.create=t;function n(g){return!!g&&!!g.matrix&&!!g.inverse&&typeof g.name=="string"}function r(g,C){if(!g)return"";if(g.assembly)return n(g)?g.suffix:C?"":`_${g.assembly.operId}`;if(typeof g.spgrOp<"u"&&typeof g.hkl<"u"&&g.spgrOp!==-1){let[_,b,I]=g.hkl;return`-${g.spgrOp+1}_${5+_}${5+b}${5+I}`}return g.ncsId!==-1?`_${g.ncsId}`:""}let i=ke();function o(g,C){ke.setIdentity(i);for(let _=0;_<3;_++)for(let b=0;b<3;b++)ke.setValue(i,_,b,Xt.getValue(g,_,b));return ke.setTranslation(i,C),ke.isRotationAndTranslation(i,e.RotationTranslationEpsilon)}e.checkIfRotationAndTranslation=o;function s(g,C,_,b){let I=ke.identity();for(let E=0;E<3;E++)for(let S=0;S<3;S++)ke.setValue(I,E,S,Xt.getValue(C,E,S));return ke.setTranslation(I,_),t(g,I,{ncsId:b})}e.ofRotationAndOffset=s;let a=vn.identity(),c=vn(),u=vn(),l=N();function m(g,C,_){let b=C.inverse;if(C.isIdentity)return ke.copy(g,b);let I=1-_;ke.getRotation(c,b),vn.slerp(c,a,c,I);let E=vn.getAxisAngle(l,c);return ke.fromRotation(g,E,l),ke.setValue(g,0,3,I*ke.getValue(b,0,3)),ke.setValue(g,1,3,I*ke.getValue(b,1,3)),ke.setValue(g,2,3,I*ke.getValue(b,2,3)),g}e.lerpFromIdentity=m;function f(g,C,_,b){if(Math.abs(b)<=1e-5)return ke.copy(g,C);if(Math.abs(b-1)<=1e-5)return ke.copy(g,_);ke.getRotation(c,C),ke.getRotation(u,_),vn.slerp(u,c,u,b);let I=vn.getAxisAngle(l,u);return ke.fromRotation(g,I,l),ke.setValue(g,0,3,qo(ke.getValue(C,0,3),ke.getValue(_,0,3),b)),ke.setValue(g,1,3,qo(ke.getValue(C,1,3),ke.getValue(_,1,3),b)),ke.setValue(g,2,3,qo(ke.getValue(C,2,3),ke.getValue(_,2,3),b)),g}e.slerp=f;function d(g,C){let _=ke.mul(ke(),C.matrix,g.matrix);return t(C.name,_,C)}e.compose=d;class p{constructor(C,_,b=is){this.operator=C,this.coordinates=_,this.r=b,this._x=_.x,this._y=_.y,this._z=_.z,this._m=C.matrix}invariantPosition(C,_){return _[0]=this._x[C],_[1]=this._y[C],_[2]=this._z[C],_}position(C,_){return _[0]=this._x[C],_[1]=this._y[C],_[2]=this._z[C],N.transformMat4(_,_,this._m),_}x(C){let _=this._m,b=_[0],I=_[4],E=_[8],S=_[12],v=this._x[C],P=this._y[C],L=this._z[C],w=_[3]*v+_[7]*P+_[11]*L+_[15]||1;return(b*v+I*P+E*L+S)/w}y(C){let _=this._m,b=_[1],I=_[5],E=_[9],S=_[13],v=this._x[C],P=this._y[C],L=this._z[C],w=_[3]*v+_[7]*P+_[11]*L+_[15]||1;return(b*v+I*P+E*L+S)/w}z(C){let _=this._m,b=_[2],I=_[6],E=_[10],S=_[14],v=this._x[C],P=this._y[C],L=this._z[C],w=_[3]*v+_[7]*P+_[11]*L+_[15]||1;return(b*v+I*P+E*L+S)/w}}class h{constructor(C,_,b=is){this.operator=C,this.coordinates=_,this.r=b,this._x=_.x,this._y=_.y,this._z=_.z,this._m=C.matrix}invariantPosition(C,_){return _[0]=this._x[C],_[1]=this._y[C],_[2]=this._z[C],_}position(C,_){return _[0]=this.x(C),_[1]=this.y(C),_[2]=this.z(C),_}x(C){let _=this._m;return _[0]*this._x[C]+_[4]*this._y[C]+_[8]*this._z[C]+_[12]}y(C){let _=this._m;return _[1]*this._x[C]+_[5]*this._y[C]+_[9]*this._z[C]+_[13]}z(C){let _=this._m;return _[2]*this._x[C]+_[6]*this._y[C]+_[10]*this._z[C]+_[14]}}class x{constructor(C,_,b=is){this.operator=C,this.coordinates=_,this.r=b,this._x=_.x,this._y=_.y,this._z=_.z}invariantPosition(C,_){return _[0]=this._x[C],_[1]=this._y[C],_[2]=this._z[C],_}position(C,_){return _[0]=this._x[C],_[1]=this._y[C],_[2]=this._z[C],_}x(C){return this._x[C]}y(C){return this._y[C]}z(C){return this._z[C]}}function y(g,C,_=is){return ke.isIdentity(g.matrix)?new x(g,C,_):Kp(g.matrix)?new h(g,C,_):new p(g,C,_)}e.createMapping=y})(xt||(xt={}));function is(e){return 0}function Kp(e){return e[3]===0&&e[7]===0&&e[11]===0&&e[15]===1}function xn(e){return e}(function(e){function t(n){return n.__key||(n.__key=Rt.create22()),n.__key}e.getUUID=t})(xn||(xn={}));var pr=class{constructor(){this._list=[],this._set=new Set,this._refs=new Map,this._assets=new Map}get all(){return this._list}add(t){this._set.has(t)||(this._list.push(t),this._set.add(t))}reference(t,n){let r=this._refs.get(t)||0;r+=n?1:-1,this._refs.set(t,Math.max(r,0))}hasReference(t){return(this._refs.get(t)||0)>0}has(t){return this._set.has(t)}assets(t,n){let r=this._assets.get(t);if(r)for(let i of r)i.dispose();n?this._assets.set(t,n):this._assets.delete(t)}dispose(){this._assets.forEach(t=>{for(let n of t)n.dispose()})}};var ss=Object.prototype.hasOwnProperty;function Y5(e,t){for(let n of Object.keys(t))ss.call(t,n)&&typeof e[n]>"u"&&(e[n]=t[n]);return e}function jp(e,t){let n=!1;for(let r of Object.keys(t))if(ss.call(t,r)&&t[r]!==e[r]){n=!0;break}return n?Object.assign({},e,t):e}function Z5(e,t){if(!e)return!t;if(!t)return!1;let n=Object.keys(e);if(Object.keys(t).length!==n.length)return!1;for(let r of n)if(!ss.call(e,r)||e[r]!==t[r])return!1;return!0}function W5(e,t){let n=e;for(let r=0;rt&&(t=e[n]);return t}function o4(e){let t=1/0;for(let n=0,r=e.length;nn&&(n=e[r]);return[t,n]}function Yp(e,t=1,n=0){let r=e.length,i=0;for(let o=n;o=0?!1:(e.push(t),!0)}function xf(e,t){let n=e.indexOf(t);if(n<0)return!1;for(let r=n,i=e.length-1;r{t.add(r),n.add(i)}),{auth:t.size,label:n.size}}function y4(e,t){return{value:e,unit:t}}var as;(function(e){function t(c,u,l){let m=!!c[0].cell,f=!!c[0].velocities,d=!!c[0].forces;return{id:Rt.create22(),frames:c,hasCell:m,hasVelocities:f,hasForces:d,deltaTime:u,timeOffset:l}}e.create=t;function n(c,u,l){var m,f;let{x:d,y:p,z:h}=c;return c.xyzOrdering.frozen?l?c.xyzOrdering.isIdentity?(d=s(d,l),p=s(p,l),h=s(h,l)):io(c.xyzOrdering.index,l)||(d=o(d,c.xyzOrdering.index,l),p=o(p,c.xyzOrdering.index,l),h=o(h,c.xyzOrdering.index,l)):c.xyzOrdering.isIdentity||(d=a(d,c.xyzOrdering.index),p=a(p,c.xyzOrdering.index),h=a(h,c.xyzOrdering.index)):l&&(c.xyzOrdering.isIdentity?(c.xyzOrdering.isIdentity=!1,c.xyzOrdering.index=l,i(d,l),i(p,l),i(h,l)):io(c.xyzOrdering.index,l)||(d=o(d,c.xyzOrdering.index,l),p=o(p,c.xyzOrdering.index,l),h=o(h,c.xyzOrdering.index,l))),c.xyzOrdering.frozen=!0,{id:Rt.create22(),atomId:u.atomId,occupancy:(m=u.occupancy)!==null&&m!==void 0?m:me.ofConst(1,c.elementCount,me.Schema.int),B_iso_or_equiv:(f=u.B_iso_or_equiv)!==null&&f!==void 0?f:me.ofConst(0,c.elementCount,me.Schema.float),xyzDefined:!0,x:d,y:p,z:h}}e.getAtomicConformation=n;let r=[.123];function i(c,u){let l=r;for(let m=0,f=c.length;mwindow.setImmediate(e,...t),clearImmediate:e=>window.clearImmediate(e)}:{setImmediate,clearImmediate}:Wp()}();function Xp(e){Za.setImmediate(e)}var Wa={setImmediate:Za.setImmediate,clearImmediate:Za.clearImmediate,immediatePromise(){return new Promise(Xp)},delay(e,t=void 0){return new Promise(n=>setTimeout(n,e,t))}};var Sf=function(){try{return!0}catch{return!1}}(),S4=function(){try{let t=process.env.DEBUG;return t==="*"||t==="molstar"}catch{return!1}}(),If=!1;var cs=[];function I4(e){cs.includes(e)||cs.push(e)}function w4(e){let t=cs.indexOf(e);t!==-1&&cs.splice(t,1)}var $p=typeof performance<"u"&&!!performance.mark&&performance.measure,Xa=$p&&If,Ei;(function(e){function t(s){return`startTask${s.id}`}function n(s){return`endTask${s.id}`}function r(s){Xa&&performance.mark(t(s))}e.markStart=r;function i(s){Xa&&performance.mark(n(s))}e.markEnd=i;function o(s){Xa&&performance.measure(`\u2733\uFE0F ${s.name}`,t(s),n(s))}e.measure=o})(Ei||(Ei={}));function wf(e,t,n=250){let r=Ef(e,t,n),i=new us(r,r.root);return $a(e,i)}function k4(e,t,n=250){let r=Ef(e,t,n);return new us(r,r.root)}function vf(e,t){return $a(t,e)}function Pf(e,t,n){return e.runChild(t,n)}function Bf(e){return{taskId:e.id,taskName:e.name,message:"",startedTime:0,canAbort:!0,isIndeterminate:!0,current:0,max:0}}function Ef(e,t,n){let r={abortRequested:!1,treeAborted:!1,reason:""};return{updateRateMs:n,lastNotified:Qt(),observer:t,abortToken:r,taskId:e.id,root:{progress:Bf(e),children:[]},tryAbort:Qp(r)}}function Qp(e){return t=>{e.abortRequested=!0,e.reason=t||e.reason}}function Df(e){return{progress:Le({},e.progress),children:e.children.map(Df)}}function Mf(e){return e.progress.canAbort&&e.children.every(Mf)}function Jp(e){return{root:Df(e.root),canAbort:Mf(e.root),requestAbort:e.tryAbort}}function $a(e,t){return Ve(this,null,function*(){Ei.markStart(e),t.node.progress.startedTime=Qt();try{let n=yield e.f(t);return Ei.markEnd(e),Ei.measure(e),t.info.abortToken.abortRequested&&Nf(t.info),n}catch(n){throw wt.isAbort(n)&&(t.isAborted=!0,t.node.children.length>0&&(yield new Promise(r=>{t.onChildrenFinished=r})),e.onAbort&&e.onAbort()),n}})}function Nf(e){throw e.abortToken.treeAborted||(e.abortToken.treeAborted=!0,kf(e.root),Uf(e,Qt())),wt.Aborted(e.abortToken.reason)}function kf(e){let t=e.progress;t.isIndeterminate=!0,t.canAbort=!1,t.message="Aborting...";for(let n of e.children)kf(n)}function Uf(e,t){e.lastNotified=t;let n=Jp(e);e.observer(n)}var us=class e{checkAborted(){this.info.abortToken.abortRequested&&(this.isAborted=!0,Nf(this.info))}get shouldUpdate(){return this.checkAborted(),Qt()-this.lastUpdatedTime>this.info.updateRateMs}updateProgress(t){if(this.checkAborted(),!t)return;let n=this.node.progress;typeof t=="string"?(n.message=t,n.isIndeterminate=!0):(typeof t.canAbort<"u"&&(n.canAbort=t.canAbort),typeof t.message<"u"&&(n.message=t.message),typeof t.current<"u"&&(n.current=t.current),typeof t.max<"u"&&(n.max=t.max),n.isIndeterminate=typeof n.current>"u"||typeof n.max>"u",typeof t.isIndeterminate<"u"&&(n.isIndeterminate=t.isIndeterminate))}update(t,n){if(this.lastUpdatedTime=Qt(),this.updateProgress(t),!n)return Uf(this.info,this.lastUpdatedTime),this.checkAborted(),Wa.immediatePromise()}runChild(t,n){return Ve(this,null,function*(){this.updateProgress(n);let r={progress:Bf(t),children:[]},i=this.node.children;i.push(r);let o=new e(this.info,r);try{return yield $a(t,o)}catch(s){if(wt.isAbort(s)&&this.isAborted)return;throw s}finally{let s=i.indexOf(r);if(s>=0){for(let a=s,c=i.length-1;aVe(this,null,function*(){return f}))}e.constant=s;function a(){return o("",m=>Ve(this,null,function*(){}))}e.empty=a;function c(m,f){return o(m,d=>Ve(this,null,function*(){throw new Error(f)}))}e.fail=c;function u(m,f){return n(m)?f?m.runInContext(f):m.run():m}e.resolveInContext=u;let l=Pi(0,1073741823)})(wt||(wt={}));var Ja;(function(e){function t(r,i=""){let o=r.progress;if(!r.children.length)return o.isIndeterminate?`${i}${o.taskName}: ${o.message}`:`${i}${o.taskName}: [${o.current}/${o.max}] ${o.message}`;let s=i+" |_ ",a=r.children.map(c=>t(c,s));return o.isIndeterminate?`${i}${o.taskName}: ${o.message} +${a.join(` +`)}`:`${i}${o.taskName}: [${o.current}/${o.max}] ${o.message} +${a.join(` +`)}`}function n(r){return t(r.root)}e.format=n})(Ja||(Ja={}));function Di(e,t,n,r,i){return Ve(this,null,function*(){let o=Math.max(t,0),s=0,a=0;if(e.isSynchronous)return r(Number.MAX_SAFE_INTEGER,n),n;let c=Qt(),u=0,l=0;for(;(u=r(o,n))>0;){s+=u;let m=Qt()-c;l+=m,a+=m,e.shouldUpdate&&(yield i(e,n,s),o=Math.round(l*s/a)+1,c=Qt(),l=0)}return e.shouldUpdate&&(yield i(e,n,s)),n})}var Jt;(function(e){function t(m,f){if(m===f)return!0;if(m.vertexCount!==f.vertexCount||m.edgeCount!==f.edgeCount)return!1;let{a:d,b:p,offset:h}=m,{a:x,b:y,offset:g}=f;for(let C=0,_=m.a.length;C<_;C++)if(d[C]!==x[C])return!1;for(let C=0,_=m.b.length;C<_;C++)if(p[C]!==y[C])return!1;for(let C=0,_=m.offset.length;C<_;C++)if(h[C]!==g[C])return!1;for(let C of Object.keys(m.edgeProps)){let _=m.edgeProps[C],b=f.edgeProps[C];if(!b)return!1;for(let I=0,E=_.length;Id&&(p=d,h=f);let x=jn(p,h);return this.included.has(x)?!1:(this.included.add(x),this.xs[this.xs.length]=p,this.ys[this.ys.length]=h,!0)}getGraph(){return a(this.vertexCount,this.xs,this.ys)}getEdgeBuiler(){return new i(this.vertexCount,this.xs,this.ys)}constructor(f){this.vertexCount=f,this.xs=[],this.ys=[],this.included=new Set}}e.UniqueEdgeBuilder=s;function a(m,f,d){let p=new e.EdgeBuilder(m,f,d);return p.addAllEdges(),p.createGraph({})}e.fromVertexPairs=a;function c(m,f,d){let{b:p,offset:h,vertexCount:x,edgeProps:y}=m,g=new Int32Array(x);for(let L=0,w=f.length;LL&&g[p[w]]!==0&&C++;let _=new Int32Array(f.length+1),b=new Int32Array(2*C),I=new Int32Array(2*C),E=new Int32Array(2*C),S=0,v=0;for(let L=0;L0;){let C=y.pop(),_=d[C];for(let b=h[C],I=h[C+1];b=0&&(y.push(g.head),d[g.head]=++p,g.remove(g.head))}return{componentCount:f,componentIndex:d}}e.connectedComponents=u;function l(m,f,d,p){if(le.areIntersecting(f,d))return!0;if(p<1)return!1;let h=new Set;for(let x=0,y=f.length;x1?Rf(e,a,n,r-1,i):!1}var ec=class{constructor(){this.map=new Map,this.applicable=new Map}add(t,n,r){this.map.set(t,n),r&&this.applicable.set(t,r)}remove(t){this.map.delete(t),this.applicable.delete(t)}get(t){return this.map.get(t)}isApplicable(t){if(!this.map.has(t.sourceData.kind))return!1;let n=this.applicable.get(t.sourceData.kind);return n?n(t):!0}};var en;(function(e){function t(n,r){let{name:i}=n,o=new ec;return{descriptor:n,formatRegistry:o,isApplicable(s){return o.isApplicable(s)},get(s){let a=r?.asDynamic?s._dynamicPropertyData:s._staticPropertyData;if(a[i])return a[i];if(s.customProperties.has(n))return;let c=o.get(s.sourceData.kind);if(c)return a[i]=c(s),s.customProperties.add(n),a[i]},set(s,a){r?.asDynamic?s._dynamicPropertyData[i]=a:s._staticPropertyData[i]=a},delete(s){r?.asDynamic?delete s._dynamicPropertyData[i]:delete s._staticPropertyData[i]}}}e.create=t})(en||(en={}));function eh(e,t,n,r){let i=new Jt.EdgeBuilder(r,e,t),o=new Int32Array(i.slotCount),s=new Array(i.slotCount),a=new Array(i.slotCount),c=new Int8Array(i.slotCount),u=new Array(i.slotCount),l=new Array(i.slotCount);for(let m=0,f=i.edgeCount;mn.substring(r[2*a],r[2*a+1]):o==="int"?a=>Pn(n,r[2*a],r[2*a+1])||0:a=>Ln(n,r[2*a],r[2*a+1])||0;return{schema:t,__array:void 0,isDefined:!0,rowCount:i,value:s,valueKind:a=>0,toArray:a=>Ut.createAndFillArray(i,s,a),areValuesEqual:tc(e)}}function tc(e){let{data:t,indices:n}=e;return function(r,i){let o=n[2*r],s=n[2*i],a=n[2*r+1]-o;if(a!==n[2*i+1]-s)return!1;for(let c=0;c0?o[s[0]].rowCount:0,name:i,fieldNames:s,getField(a){return o[a]}}}e.ofFields=n;function r(i,o){let s={};for(let a of o._columns)s[a]=ci.ofColumn(o[a]);return n(i,s)}e.ofTable=r})(Mi||(Mi={}));var ci;(function(e){function t(a){return n([a])}e.ofString=t;function n(a){let c=a.length,u=d=>{let p=a[d];return!p||p==="."||p==="?"?"":p},l=d=>{let p=a[d];return Pn(p,0,p.length)||0},m=d=>{let p=a[d];return Ln(p,0,p.length)||0};return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:c,str:u,int:l,float:m,valueKind:d=>{let p=a[d],h=p.length;if(h>1)return 0;if(h===0)return 1;let x=p.charCodeAt(0);return x===46?1:x===63?2:0},areValuesEqual:(d,p)=>a[d]===a[p],toStringArray:d=>d?Ut.createAndFillArray(c,u,d):a,toIntArray:d=>Ut.createAndFillArray(c,l,d),toFloatArray:d=>Ut.createAndFillArray(c,m,d)}}e.ofStrings=n;function r(a){let c=a.length,u=d=>""+a[d],l=d=>a[d],m=d=>0,f=d=>!d||d.array&&a instanceof d.array?a:Ut.createAndFillArray(c,l,d);return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:c,str:u,int:l,float:l,valueKind:m,areValuesEqual:(d,p)=>a[d]===a[p],toStringArray:d=>Ut.createAndFillArray(c,u,d),toIntArray:f,toFloatArray:f}}e.ofNumbers=r;function i(a){let{data:c,indices:u,count:l}=a,m=h=>{let x=c.substring(u[2*h],u[2*h+1]);return x==="."||x==="?"?"":x},f=h=>Pn(c,u[2*h],u[2*h+1])||0,d=h=>Ln(c,u[2*h],u[2*h+1])||0;return{__array:void 0,binaryEncoding:void 0,isDefined:!0,rowCount:l,str:m,int:f,float:d,valueKind:h=>{let x=u[2*h],y=u[2*h+1]-x;if(y>1)return 0;if(y===0)return 1;let g=c.charCodeAt(x);return g===46?1:g===63?2:0},areValuesEqual:tc(a),toStringArray:h=>Ut.createAndFillArray(l,m,h),toIntArray:h=>Ut.createAndFillArray(l,f,h),toFloatArray:h=>Ut.createAndFillArray(l,d,h)}}e.ofTokens=i;function o(a){let{rowCount:c,valueKind:u,areValuesEqual:l,isDefined:m}=a,f,d,p;switch(a.schema.valueType){case"float":case"int":f=x=>""+a.value(x),d=a.value,p=a.value;break;case"str":f=a.value,d=x=>{let y=a.value(x);return Pn(y,0,y.length)||0},p=x=>{let y=a.value(x);return Ln(y,0,y.length)||0};break;case"list":let{separator:h}=a.schema;f=x=>a.value(x).join(h),d=x=>NaN,p=x=>NaN;break;default:throw new Error(`unsupported valueType '${a.schema.valueType}'`)}return{__array:void 0,binaryEncoding:void 0,isDefined:m,rowCount:c,str:f,int:d,float:p,valueKind:u,areValuesEqual:l,toStringArray:h=>Ut.createAndFillArray(c,f,h),toIntArray:h=>Ut.createAndFillArray(c,d,h),toFloatArray:h=>Ut.createAndFillArray(c,p,h)}}e.ofColumn=o;function s(a,c){return o(me.Undefined(a,c))}e.ofUndefined=s})(ci||(ci={}));function Ff(e,t,n,r){let i=n?0:1;switch(t){case 1:return r==="brackets"?o=>`${e}[${o+i}]`:o=>`${e}_${o+i}`;case 2:return r==="brackets"?(o,s)=>`${e}[${o+i}][${s+i}]`:(o,s)=>`${e}_${o+i}${s+i}`;case 3:return r==="brackets"?(o,s,a)=>`${e}[${o+i}][${s+i}][${a+i}]`:(o,s,a)=>`${e}_${o+i}${s+i}${a+i}`;default:throw new Error("Tensors with rank > 3 or rank 0 are currently not supported.")}}function Of(e,t,n,r){let i=t.create();if(t.rank===1){let o=t.dimensions[0];for(let s=0;s 3 or rank 0 are currently not supported.");return i}var Ni;(function(e){function t(i){return i.replace(".","_").replace(/\[/,"_").replace(/(\[|\])/g,"")}e.canonical=t;function n(i,o){return t(i)===t(o)}e.equal=n;function r(i,o,s=!1){let a=`${i}${o?`.${o}`:""}`;return s?t(a):a}e.create=r})(Ni||(Ni={}));function qf(e,t,n){let r={};for(let i of t.blocks)r[i.header]=En(e,i,n);return r}function En(e,t,n){return sh(e,t,n)}function Gf(e,t){return new fs(t,e,!0)}function nh(e){switch(e.valueType){case"str":return(t,n,r)=>rh(e,t,t.str,t.toStringArray);case"int":return(t,n,r)=>Lf(e,t,t.int,t.toIntArray);case"float":return(t,n,r)=>Lf(e,t,t.float,t.toFloatArray);case"list":throw new Error("Use createListColumn instead.");case"tensor":throw new Error("Use createTensorColumn instead.")}}function rh(e,t,n,r){return{schema:e,__array:t.__array,isDefined:t.isDefined,rowCount:t.rowCount,value:e.transform==="lowercase"?i=>n(i).toLowerCase():e.transform==="uppercase"?i=>n(i).toUpperCase():n,valueKind:t.valueKind,areValuesEqual:t.areValuesEqual,toArray:e.transform==="lowercase"?i=>Array.from(r(i)).map(o=>o.toLowerCase()):e.transform==="uppercase"?i=>Array.from(r(i)).map(o=>o.toUpperCase()):r}}function Lf(e,t,n,r){return{schema:e,__array:t.__array,isDefined:t.isDefined,rowCount:t.rowCount,value:n,valueKind:t.valueKind,areValuesEqual:t.areValuesEqual,toArray:r}}function ih(e,t,n){let r=e.separator,i=e.itemParse,o=t.getField(n),s=o?c=>o.str(c).split(r).map(u=>i(u.trim())).filter(u=>!!u):c=>[],a=c=>Ut.createAndFillArray(t.rowCount,s,c);return{schema:e,__array:void 0,isDefined:!!o,rowCount:t.rowCount,value:s,valueKind:o?o.valueKind:()=>1,areValuesEqual:(c,u)=>io(s(c),s(u)),toArray:a}}function oh(e,t,n){let r=e.space,i=t.fieldNames.includes(`${n}[0]`)||t.fieldNames.includes(`${n}[0][0]`)||t.fieldNames.includes(`${n}[0][0][0]`),o=i?0:1,s=t.fieldNames.includes(`${n}_1`)||t.fieldNames.includes(`${n}_11`)||t.fieldNames.includes(`${n}_111`)?"underscore":"brackets",a=Ff(n,r.rank,i,s),c=t.getField(a(o,o,o))||me.Undefined(t.rowCount,e),u=m=>Of(t,r,m,a),l=m=>Ut.createAndFillArray(t.rowCount,u,m);return{schema:e,__array:void 0,isDefined:c.isDefined,rowCount:t.rowCount,value:u,valueKind:c.valueKind,areValuesEqual:(m,f)=>nn.areEqualExact(u(m),u(f)),toArray:l}}var fs=class{constructor(t,n,r){this._isDefined=r;let i=Object.keys(n);this._rowCount=t.rowCount,this._columns=i,this._schema=n;let o=Object.create(null);for(let s of i)Object.defineProperty(this,s,{get:function(){if(o[s])return o[s];let a=n[s];if(a.valueType==="list")o[s]=ih(a,t,s);else if(a.valueType==="tensor")o[s]=oh(a,t,s);else{let c=nh(a),u=t.getField(s);o[s]=u?c(u,t,s):me.Undefined(t.rowCount,a)}return o[s]},enumerable:!0,configurable:!1})}};function sh(e,t,n){let r=Object.create(null);for(let i of Object.keys(e))r[i]=uh(i,e[i],t,n);return oo.ofTables(t.header,e,r)}function ah(e){let t=Object.create(null);for(let n of Object.keys(e.categories))for(let r of e.categories[n].fieldNames){let i=Ni.create(n,r,!0);t[i]=e.categories[n].getField(r)}return t}function ch(e,t,n,r){let i=Ni.create(t,e),o=Ni.canonical(i);if(o in n)return n[o];if(r&&i in r)for(let s of r[i]){let a=Ni.canonical(s);if(a in n)return n[a]}}function uh(e,t,n,r){let i=n.categories[e];if(r){let o=ah(n),s=Object.create(null),a=[],c=0;for(let u of Object.keys(t)){let l=ch(u,e,o,r);l&&(s[u]=l,a.push(u),c=l.rowCount)}i={rowCount:c,name:e,fieldNames:[...a],getField(u){return s[u]}}}return new fs(i||Mi.empty(e),t,!!i)}function M6(e,t,n){let r=new Float32Array(e);for(let i=0;i146&&++t,e>148&&++t,e>155&&++t,e>160&&++t,e>161&&++t,e>166&&++t,e>167&&++t,e-1+t}function fh(e){if(e<146)return e+1;if(e===146)return 1146;if(e<149)return e+1-1;if(e===149)return 1148;if(e<157)return e+1-2;if(e===157)return 1155;if(e<163)return e+1-3;if(e===163)return 1160;if(e<165)return e+1-4;if(e===165)return 1161;if(e<171)return e+1-5;if(e===171)return 1166;if(e<173)return e+1-6;if(e===173)return 1167;if(e<237)return e+1-7;if(e===237)return 1003;if(e===238)return 1004;if(e===239)return 1005;if(e===240)return 2005;if(e===241)return 3005;if(e===242)return 4005;if(e===243)return 5005;if(e===244)return 1006;if(e===245)return 1007;if(e===246)return 1008;if(e===247)return 1009;if(e===248)return 1010;if(e===249)return 1011;if(e===250)return 1012;if(e===251)return 1013;if(e===252)return 1014;if(e===253)return 2014;if(e===254)return 3014;if(e===255)return 1015;if(e===256)return 1017;if(e===257)return 2017;if(e===258)return 1018;if(e===259)return 2018;if(e===260)return 3018;if(e===261)return 1020;if(e===262)return 1021;if(e===263)return 1022;if(e===264)return 1023;if(e===265)return 1059;if(e===266)return 1094;if(e===267)return 1197;throw new Error(`unknown spacegroup index '${e}'`)}var rc=function(){let e=Object.create(null);for(let t of Object.keys(fo))e[fo[t]]=t;return e}(),Vf=function(){let e=Object.create(null);for(let t of Object.keys(fo)){let n=fo[t];e[n]=fh(n)}return e}();function Kf(e){let t=typeof e=="number"?lh(e):fo[e];return typeof t>"u"||typeof rc[t]>"u"?-1:t}var hr;(function(e){e.Zero=n("P 1",N.create(1,1,1),N.create(Math.PI/2,Math.PI/2,Math.PI/2));function t(r){return r?r.index===0&&r.size[0]===1&&r.size[1]===1&&r.size[1]===1:!0}e.isZero=t;function n(r,i,o){let s=Kf(r);if(s<0)return console.warn(`Unknown spacegroup '${r}', returning a 'P 1' with cellsize [1, 1, 1]`),e.Zero;let a=i[0]*i[1]*i[2],c=o[0],u=o[1],l=o[2],m=i[0],f=i[1],d=i[2],p=Math.cos(u),h=(Math.cos(c)-Math.cos(u)*Math.cos(l))/Math.sin(l),x=Math.sqrt(1-p*p-h*h),y=[m,0,0],g=[Math.cos(l)*f,Math.sin(l)*f,0],C=[p*d,h*d,x*d],_=ke.ofRows([[y[0],g[0],C[0],0],[0,g[1],C[1],0],[0,0,C[2],0],[0,0,0,1]]),b=ke.invert(ke.zero(),_);return{index:s,size:i,volume:a,anglesInRadians:o,toFractional:b,fromFractional:_}}e.create=n})(hr||(hr={}));var sn;(function(e){e.ZeroP1=t(hr.Zero);function t(x){let y=zf[x.index].map(_=>m(Hf[_])),g=rc[x.index],C=Vf[x.index];return{name:g,num:C,cell:x,operators:y}}e.create=t;let n=N(),r=ke();function i(x,y,g,C,_,b){return N.set(n,g,C,_),ke.fromTranslation(r,n),ke.mul(b,ke.mul(b,ke.mul(b,x.cell.fromFractional,r),x.operators[y]),x.cell.toFractional)}e.setOperatorMatrix=i;function o(x,y,g,C,_){let b=i(x,y,g,C,_,ke.zero());return xt.create(`${y+1}_${5+g}${5+C}${5+_}`,b,{hkl:N.create(g,C,_),spgrOp:y})}e.getSymmetryOperator=o;let s=N(),a=N(),c=N(),u=N();function l(x,y,g,C,_,b){let I=ke.zero();N.set(n,g,C,_),N.floor(s,b),ke.copy(I,x.operators[y]),N.floor(a,N.transformMat4(a,b,I)),ke.getTranslation(u,I),N.sub(u,u,a),N.add(u,u,s),N.add(u,u,n),ke.setTranslation(I,u),ke.mul(I,x.cell.fromFractional,I),ke.mul(I,I,x.cell.toFractional),N.sub(c,a,s);let E=g-c[0],S=C-c[1],v=_-c[2];return xt.create(`${y+1}_${5+E}${5+S}${5+v}`,I,{hkl:N.create(E,S,v),spgrOp:y})}e.getSymmetryOperatorRef=l;function m(x){let y=ds[x[0]],g=ds[x[1]],C=ds[x[2]];return ke.ofRows([y,g,C,[0,0,0,1]])}function f(x){return[h(d(x[0],x[4],x[8]),p(x[12])),h(d(x[1],x[5],x[9]),p(x[13])),h(d(x[2],x[6],x[10]),p(x[14]))].join(",")}e.getOperatorXyz=f;function d(x,y,g){let C=[];if(x>0?C.push("+X"):x<0&&C.push("-X"),y>0?C.push("+Y"):y<0&&C.push("-Y"),g>0?C.push("+Z"):g<0&&C.push("-Z"),C.length===1)return C[0].charAt(0)==="+"?C[0].substr(1):C[0];if(C.length===2){let _=C[0].charAt(0),b=C[1].charAt(0);if(_==="+")return`${C[0].substr(1)}${C[1]}`;if(b==="+")return`${C[1].substr(1)}${C[0]}`}throw new Error(`unknown rotation '${C}', ${x} ${y} ${g}`)}function p(x){switch(x){case 1/2:return"1/2";case 1/4:return"1/4";case 3/4:return"3/4";case 1/3:return"1/3";case 2/3:return"2/3";case 1/6:return"1/6";case 5/6:return"5/6"}return""}function h(x,y){return y===""?x:x.length>2?`${x}+${y}`:x.charAt(0)==="-"?`${y}${x}`:`${y}+${x}`}})(sn||(sn={}));var dn;(function(e){function t(o,s,a){o.squaredDistances[o.count]=a,o.indices[o.count++]=s}e.add=t;function n(o){o.count=0}e.reset=n;function r(){return{count:0,indices:[],squaredDistances:[]}}e.create=r;function i(o,s){for(let a=0;at?(t/=e,e*Math.sqrt(1+t*t)):t>0?(e/=t,t*Math.sqrt(1+e*e)):0}var mh=1192092896e-16,ph=1e-37;function hh(e,t,n,r,i,o,s,a){let c=mh*2,u=ph,l=0,m=0,f=0,d=0,p=Math.max(o,30),h=0,x=0,y=0,g=0,C=0,_=0,b=0,I=0,E=0,S=0,v=0,P=0,L=0,w=0,D=0,z=0,ie=0,O=4660,Q=0,K=0,Z=0,se=new Float64Array(s<<3);for(;l>16&32767&256?K:-K,e[l*t+f]=Q;for(d=0;d<2;d++)for(m=0;m0?D>c&&(c=D):D>u&&(u=D),N.projectPointOnVector(p,N.fromArray(p,s,P),y.dirB,x);let z=N.dot(y.dirB,N.normalize(h,N.sub(h,p,x))),ie=N.distance(p,x);z>0?ie>l&&(l=ie):ie>m&&(m=ie),N.projectPointOnVector(p,N.fromArray(p,s,P),y.dirC,x);let O=N.dot(y.dirC,N.normalize(h,N.sub(h,p,x))),Q=N.distance(p,x);O>0?Q>f&&(f=Q):Q>d&&(d=Q)}let g=N.setMagnitude(N(),y.dirA,(c+u)/2),C=N.setMagnitude(N(),y.dirB,(l+m)/2),_=N.setMagnitude(N(),y.dirC,(f+d)/2),b=N.isFinite(g),I=N.isFinite(C),E=N.isFinite(_),S=N(),v=function(P,L,w){N.copy(i,x),b&&N.scaleAndAdd(i,i,y.dirA,P),I&&N.scaleAndAdd(i,i,y.dirB,L),E&&N.scaleAndAdd(i,i,y.dirC,w),N.add(S,S,i)};return v(c,l,f),v(c,l,-d),v(c,-m,-d),v(c,-m,f),v(-u,-m,-d),v(-u,-m,f),v(-u,l,f),v(-u,l,-d),N.scale(S,S,1/8),bn.create(S,g,C,_)}e.calculateBoxAxes=o})(mn||(mn={}));function Kt(){return Kt.zero()}(function(e){function t(w){return w.extrema!==void 0}e.hasExtrema=t;function n(w,D){return{center:w,radius:D}}e.create=n;function r(){return{center:N(),radius:0}}e.zero=r;function i(w){let D=n(N.clone(w.center),w.radius);return t(w)&&(D.extrema=w.extrema.map(z=>N.clone(z))),D}e.clone=i;function o(w,D,z){return N.copy(w.center,D),w.radius=z,w}e.set=o;function s(w,D){return N.copy(w.center,D.center),w.radius=D.radius,t(D)&&a(w,D.extrema.map(z=>N.clone(z))),w}e.copy=s;function a(w,D){return w.extrema!==void 0?(w.extrema.length=0,w.extrema.push(...D)):w.extrema=D,w}e.setExtrema=a;function c(w){let{x:D,y:z,z:ie,indices:O}=w,Q=0,K=0,Z=0,se=0,fe=Ie.size(O);for(let Ce=0;Ce0&&(Q/=fe,K/=fe,Z/=fe);for(let Ce=0;Cese&&(se=T)}return{center:N.create(Q,K,Z),radius:Math.sqrt(se)}}e.computeBounding=c;function u(w,D,z){return N.transformMat4(w.center,D.center,z),w.radius=D.radius*ke.getMaxScaleOnAxis(z),t(D)&&a(w,D.extrema.map(ie=>N.transformMat4(N(),ie,z))),w}e.transform=u;function l(w,D,z){return N.add(w.center,D.center,z),t(D)&&a(w,D.extrema.map(ie=>N.add(N(),ie,z))),w}e.translate=l;function m(w,D,z){return N.toArray(w.center,D,z),D[z+3]=w.radius,D}e.toArray=m;function f(w,D,z){return N.fromArray(w.center,D,z),w.radius=D[z+3],w}e.fromArray=f;function d(w,D){return N.scale(w.center,N.add(w.center,D.max,D.min),.5),w.radius=N.distance(w.center,D.max),e.setExtrema(w,[N.create(D.min[0],D.min[1],D.min[2]),N.create(D.max[0],D.max[1],D.max[2]),N.create(D.max[0],D.min[1],D.min[2]),N.create(D.min[0],D.max[1],D.max[2]),N.create(D.min[0],D.min[1],D.max[2]),N.create(D.max[0],D.min[1],D.max[2]),N.create(D.max[0],D.max[1],D.min[2]),N.create(D.min[0],D.max[1],D.min[2])]),w}e.fromBox3D=d;function p(w,D){return N.copy(w.center,D.origin),w.radius=Math.max(N.magnitude(D.dirA),N.magnitude(D.dirB),N.magnitude(D.dirC)),w}e.fromAxes3D=p;let h=N();function x(w,D,z){let[ie,O,Q]=D,K=N.create(0,0,0);N.transformMat4(K,K,z);let Z=N.create(ie,O,Q);N.transformMat4(Z,Z,z);let se=N.create(ie,0,0);N.transformMat4(se,se,z);let fe=N.create(0,O,Q);N.transformMat4(fe,fe,z);let Ce=N.create(0,0,Q);N.transformMat4(Ce,Ce,z);let xe=N.create(ie,0,Q);N.transformMat4(xe,xe,z);let H=N.create(ie,O,0);N.transformMat4(H,H,z);let $=N.create(0,O,0);N.transformMat4($,$,z),N.add(h,K,Z),N.scale(h,h,.5);let de=Math.max(N.distance(K,Z),N.distance(se,fe));return e.set(w,h,de/2),e.setExtrema(w,[K,Z,se,fe,Ce,xe,H,$]),w}e.fromDimensionsAndTransform=x;let y=N();function g(w,D,z){return N.distance(D.center,z)N.clone(ie)),...z.extrema.map(ie=>N.clone(ie))]),w}e.expandBySphere=C;let _=N();function b(w,D,z){var ie,O;if(N.copy(w.center,D.center),w.radius=D.radius+z,D.radius<1e-12||((O=(ie=D.extrema)===null||ie===void 0?void 0:ie.length)!==null&&O!==void 0?O:0)<=1)return w.extrema=void 0,w;if(t(D)){let Q=new Float32Array(D.extrema.length*3);for(let Z=0;Z{N.normalize(_,N.sub(_,Z,D.center));let se=N.clone(Z),fe=N.dot(_,K.dirA)<0?-1:1;N.scaleAndAdd(se,se,K.dirA,fe);let Ce=N.dot(_,K.dirB)<0?-1:1;N.scaleAndAdd(se,se,K.dirB,Ce);let xe=N.dot(_,K.dirC)<0?-1:1;return N.scaleAndAdd(se,se,K.dirC,xe),N.distance(w.center,se)>w.radius&&(D.extrema.length>=14&&N.normalize(_,N.sub(_,se,D.center)),N.scaleAndAdd(se,w.center,_,w.radius)),se}))}return w}e.expand=b;function I(w,D){return w.radius===D.radius&&N.exactEquals(w.center,D.center)}e.exactEquals=I;function E(w,D){let z=w.radius,ie=D.radius;return Math.abs(z-ie)<=1e-6*Math.max(1,Math.abs(z),Math.abs(ie))&&N.equals(w.center,D.center)}e.equals=E;function S(w,D){if(t(D)){for(let z of D.extrema)if(N.distance(w.center,z)>w.radius)return!1;return!0}else return N.distance(w.center,D.center)+D.radius<=w.radius}e.includes=S;function v(w,D){return N.distance(w.center,D.center)<=w.radius+D.radius}e.overlaps=v;function P(w,D){return N.distance(w.center,D.center)-w.radius+D.radius}e.distance=P;function L(w,D){let{center:z,radius:ie}=w;return N.distance(D,z)-ie}e.distanceToVec=L})(Kt||(Kt={}));function on(){return on.zero()}(function(e){function t(v,P){return{min:v,max:P}}e.create=t;function n(){return{min:N(),max:N()}}e.zero=n;function r(v,P){return N.copy(v.min,P.min),N.copy(v.max,P.max),v}e.copy=r;function i(v){return r(n(),v)}e.clone=i;let o=N();function s(v,P){return Kt.hasExtrema(P)&&P.extrema.length>=14?c(v,P.extrema):(N.set(o,P.radius,P.radius,P.radius),N.sub(v.min,P.center,o),N.add(v.max,P.center,o),v)}e.fromSphere3D=s;function a(v,P){for(let L=0,w=P.length;L=14?a(v,P.extrema):(x(v,N.subScalar(o,P.center,P.radius)),x(v,N.addScalar(o,P.center,P.radius)),v)}e.addSphere3D=u;function l(v,P){return N.clamp(o,P.center,v.min,v.max),N.squaredDistance(o,P.center)<=P.radius*P.radius}e.intersectsSphere3D=l;function m(v){let P=N.create(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),L=N.create(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),{x:w,y:D,z,indices:ie}=v;for(let O=0,Q=Ie.size(ie);Ov.max[0]||P[1]v.max[1]||P[2]v.max[2])}e.containsVec3=b;function I(v,P){return!(v.max[0]P.max[0]||v.max[1]P.max[1]||v.max[2]P.max[2])}e.overlaps=I;function E(v,P){let L=P.center,w=P.radius;return!(L[0]-wv.max[0]||L[1]-wv.max[1]||L[2]-wv.max[2])}e.containsSphere3D=E;function S(v,P,L,w){let[D,z,ie]=P.min,[O,Q,K]=P.max,[Z,se,fe]=L,Ce=1/w[0],xe=1/w[1],H=1/w[2],$,de,T,B,k,R;return Ce>=0?($=(D-Z)*Ce,de=(O-Z)*Ce):($=(O-Z)*Ce,de=(D-Z)*Ce),xe>=0?(T=(z-se)*xe,B=(Q-se)*xe):(T=(Q-se)*xe,B=(z-se)*xe),H>=0?(k=(ie-fe)*H,R=(K-fe)*H):(k=(K-fe)*H,R=(ie-fe)*H),T>$&&($=T),B$&&($=k),R0)throw new Error("New key is larger than old key");t.key=n;let r=t.parent;r&&this._compare(t,r)<0&&(this._cut(t,r,this._minNode),this._cascadingCut(r,this._minNode)),this._compare(t,this._minNode)<0&&(this._minNode=t)}delete(t){let n=t.parent;n&&(this._cut(t,n,this._minNode),this._cascadingCut(n,this._minNode)),this._minNode=t,this.extractMinimum()}extractMinimum(){let t=this._minNode;if(t){if(t.child){let r=t.child;do r.parent=null,r=r.next;while(r!==t.child)}let n=null;t.next!==t&&(n=t.next),this._removeNodeFromList(t),this._nodeCount--,this._minNode=this._mergeLists(n,t.child),this._minNode&&(this._minNode=this._consolidate(this._minNode))}return t}findMinimum(){return this._minNode}insert(t,n){let r=new sc(t,n);return this._minNode=this._mergeLists(this._minNode,r),this._nodeCount++,r}isEmpty(){return this._minNode===null}size(){return this._minNode===null?0:this._getNodeListSize(this._minNode)}union(t){this._minNode=this._mergeLists(this._minNode,t._minNode),this._nodeCount+=t._nodeCount}_defaultCompare(t,n){return t.key>n.key?1:t.key0){let s=i;i=o,o=s}this._linkHeaps(o,i),n[i.degree]=null,i.degree++,o=n[i.degree]}n[i.degree]=i}let r=null;for(let i=0;ix&&(x=c[v])}let _=new Int32Array(y);for(let S=0,v=0;S0&&(g[S]=v+1,_[v]=P,v+=1)}let b=new Uint32Array(y);for(let S=1;S0){let P=v-1;E[b[P]+I[P]]=S,I[P]+=1}}return{size:e.size,bucketArray:E,bucketCounts:_,bucketOffset:b,grid:g,delta:m,min:e.expandedBox.min,data:e.data,maxRadius:x,expandedBox:e.expandedBox,boundingBox:e.boundingBox,boundingSphere:e.boundingSphere}}function gh(e,t,n){let r=on.expand(on(),t.box,N.create(.5,.5,.5)),{indices:i}=e,o=on.size(N(),r),s,a,c=Ie.size(i),u=typeof n=="number"?n:32,l=Array.isArray(n)&&n;if(l&&!N.isZero(l))a=[Math.ceil(o[0]/l[0]),Math.ceil(o[1]/l[1]),Math.ceil(o[2]/l[2])],s=l;else if(c>0){let d=Math.ceil(c/u),p=Math.pow(d/(o[0]*o[1]*o[2]),1/3);a=[Math.ceil(o[0]*p),Math.ceil(o[1]*p),Math.ceil(o[2]*p)],s=[o[0]/a[0],o[1]/a[1],o[2]/a[2]]}else s=o,a=[1,1,1];let m={x:e.x,y:e.y,z:e.z,indices:i,radius:e.radius},f={size:a,data:m,expandedBox:r,boundingBox:t.box,boundingSphere:t.sphere,elementCount:c,delta:s};return _h(f)}function yh(e){return{grid:e,x:.1,y:.1,z:.1,k:1,stopIf:void 0,radius:.1,isCheck:!1}}function Yf(e,t){let{min:n,size:[r,i,o],bucketOffset:s,bucketCounts:a,bucketArray:c,grid:u,data:{x:l,y:m,z:f,indices:d,radius:p},delta:h,maxRadius:x}=e.grid,{radius:y,isCheck:g,x:C,y:_,z:b}=e,I=y+x,E=I*I;dn.reset(t);let S=Math.max(0,Math.floor((C-I-n[0])/h[0])),v=Math.max(0,Math.floor((_-I-n[1])/h[1])),P=Math.max(0,Math.floor((b-I-n[2])/h[2])),L=Math.min(r-1,Math.floor((C+I-n[0])/h[0])),w=Math.min(i-1,Math.floor((_+I-n[1])/h[1])),D=Math.min(o-1,Math.floor((b+I-n[2])/h[2]));if(S>L||v>w||P>D)return!1;for(let z=S;z<=L;z++)for(let ie=v;ie<=w;ie++)for(let O=P;O<=D;O++){let Q=u[(z*i+ie)*o+O];if(Q===0)continue;let K=Q-1,Z=s[K],se=a[K],fe=Z+se;for(let Ce=Z;Ce0&&Math.sqrt(T)-p[xe]>y)continue;if(g)return!0;dn.add(t,c[Ce],T)}}}return t.count>0}var Zf=N(),Fr=N(),mo=new Set,cc=new Set,xh=[.1],Ah=[.1],bh=[.1],Ui=new ki;function Ch(e,t){let{min:n,expandedBox:r,boundingSphere:{center:i},size:[o,s,a],bucketOffset:c,bucketCounts:u,bucketArray:l,grid:m,data:{x:f,y:d,z:p,indices:h,radius:x},delta:y,maxRadius:g}=e.grid,{x:C,y:_,z:b,k:I,stopIf:E}=e,S=Ie.size(h);if(dn.reset(t),S===0||I<=0)return!1;let v,P,L,w=!1,D=1,z=!0,ie=0,O=xh,Q=Ah,K=0,Z=!0,se,fe=!1,Ce=bh,xe=g*g;O.length=0,Ce.length=0,mo.clear(),Ui.clear(),N.set(Fr,C,_,b),on.containsVec3(r,Fr)?(v=Math.floor((C-n[0])/y[0]),P=Math.floor((_-n[1])/y[1]),L=Math.floor((b-n[2])/y[2])):(on.nearestIntersectionWithRay(Fr,r,Fr,N.normalize(Zf,N.sub(Zf,i,Fr))),v=Math.max(0,Math.min(o-1,Math.floor((Fr[0]-n[0])/y[0]))),P=Math.max(0,Math.min(s-1,Math.floor((Fr[1]-n[1])/y[1]))),L=Math.max(0,Math.min(a-1,Math.floor((Fr[2]-n[2])/y[2]))));let H=g!==0?Math.max(1,Math.min(o-1,Math.ceil(g/y[0]))):1,$=g!==0?Math.max(1,Math.min(s-1,Math.ceil(g/y[1]))):1,de=g!==0?Math.max(1,Math.min(a-1,Math.ceil(g/y[2]))):1;for(O.push(v,P,L,(v*s+P)*a+L);t.count=m.length;let k=m[se];if(k!==0){let R=K,V=k-1,j=c[V],oe=u[V],ae=j+oe;for(let ne=j;neK&&(K=Ae),Ui.insert(Ae,q)}R=o))for(let V=-$;V<=$;V++){let j=P+V;if(!(j<0||j>=s))for(let oe=-de;oe<=de;oe++){let ae=L+oe;if(!(ae<0||ae>=a)&&(se=(R*s+j)*a+ae,!cc.has(se)&&(cc.add(se),!mo.has(se)))){if(!z){let ne=n[0]+R*y[0]-C,q=n[1]+j*y[1]-_,F=n[2]+ae*y[2]-b;if(ne*ne+q*q+F*F-xe>K){Ce.push(R,j,ae,se);continue}}Q.push(R,j,ae,se),ie++}}}}}if(z=!1,ie===0){if(I===1){let B=Ui.findMinimum();if(B){let{key:k,value:R}=B;return dn.add(t,R,k),!0}}else for(;!Ui.isEmpty()&&(fe||Ui.findMinimum().key<=K)&&t.count=I||w||t.count>=S)return t.count>0;if(z=!0,Z=!0,Ce.length>0){for(let B=0,k=Ce.length;B0}var Wf="0.3.0",pt;(function(e){let t;(function(o){o[o.Int8=1]="Int8",o[o.Int16=2]="Int16",o[o.Int32=3]="Int32",o[o.Uint8=4]="Uint8",o[o.Uint16=5]="Uint16",o[o.Uint32=6]="Uint32"})(t=e.IntDataType||(e.IntDataType={}));let n;(function(o){o[o.Float32=32]="Float32",o[o.Float64=33]="Float64"})(n=e.FloatDataType||(e.FloatDataType={}));function r(o){let s;return o instanceof Int8Array?s=e.IntDataType.Int8:o instanceof Int16Array?s=e.IntDataType.Int16:o instanceof Int32Array?s=e.IntDataType.Int32:o instanceof Uint8Array?s=e.IntDataType.Uint8:o instanceof Uint16Array?s=e.IntDataType.Uint16:o instanceof Uint32Array?s=e.IntDataType.Uint32:o instanceof Float32Array?s=e.FloatDataType.Float32:o instanceof Float64Array?s=e.FloatDataType.Float64:s=e.IntDataType.Int32,s}e.getDataType=r;function i(o){if(o instanceof Int8Array||o instanceof Int16Array||o instanceof Int32Array)return!0;for(let s=0,a=o.length;slc){let t=[];for(let n=0;n=0;n--)t=Sh(t,e.encoding[n]);return t}function Sh(e,t){switch(t.kind){case"ByteArray":switch(t.type){case pt.IntDataType.Uint8:return e;case pt.IntDataType.Int8:return Ih(e);case pt.IntDataType.Int16:return wh(e);case pt.IntDataType.Uint16:return vh(e);case pt.IntDataType.Int32:return Ph(e);case pt.IntDataType.Uint32:return Bh(e);case pt.FloatDataType.Float32:return Eh(e);case pt.FloatDataType.Float64:return Dh(e);default:gn(t.type)}case"FixedPoint":return Mh(e,t);case"IntervalQuantization":return Nh(e,t);case"RunLength":return kh(e,t);case"Delta":return Uh(e,t);case"IntegerPacking":return Fh(e,t);case"StringArray":return Oh(e,t)}}function Qf(e,t){switch(e){case pt.IntDataType.Int8:return new Int8Array(t);case pt.IntDataType.Int16:return new Int16Array(t);case pt.IntDataType.Int32:return new Int32Array(t);case pt.IntDataType.Uint8:return new Uint8Array(t);case pt.IntDataType.Uint16:return new Uint16Array(t);case pt.IntDataType.Uint32:return new Uint32Array(t);default:return new Int32Array(t)}}function Jf(e,t){switch(e){case pt.FloatDataType.Float32:return new Float32Array(t);case pt.FloatDataType.Float64:return new Float64Array(t);default:return new Float64Array(t)}}function Ih(e){return new Int8Array(e.buffer,e.byteOffset)}function Ti(e,t,n){return Xf?new n(e.buffer):new n($f(e,t))}function wh(e){return Ti(e,2,Int16Array)}function vh(e){return Ti(e,2,Uint16Array)}function Ph(e){return Ti(e,4,Int32Array)}function Bh(e){return Ti(e,4,Uint32Array)}function Eh(e){return Ti(e,4,Float32Array)}function Dh(e){return Ti(e,8,Float64Array)}function Mh(e,t){let n=e.length,r=Jf(t.srcType,n),i=1/t.factor;for(let o=0;o=0){let c=Lh(e[o],t,n);c<0?r=-1:c>r&&(r=c)}let a=Math.abs(e[o]);if(a>n){let c=Math.floor(Math.log10(Math.abs(a)))+1;c>i&&(i=c)}}return{mantissaDigits:r,integerDigits:i}}function EC(e){e=e.trim();let t=parseInt(e,10);return isNaN(t)?!1:t.toString()===e}function DC(e){if(!isFinite(e))return 0;let t=1,n=0;for(;Math.round(e*t)/t!==e;)t*=10,++n;return n}function MC(e,t){return parseFloat(e.toPrecision(t))}function ho(e){return po.classify(e)}function td(e){return fc.classify(e)}var po;(function(e){function t(d,p){return d>=0?Math.ceil((d+1)/p):Math.ceil((d+1)/(-p-1))}function n(d){let p=!1;for(let h=0,x=d.length;hx.length-y.length),h}e.getSize=m;function f(d){if(d.length<2)return rt.by(rt.byteArray);let h=m(d)[0];switch(h.kind){case"pack":return rt.by(rt.integerPacking);case"rle":return rt.by(rt.runLength).and(rt.integerPacking);case"delta":return rt.by(rt.delta).and(rt.integerPacking);case"delta-rle":return rt.by(rt.delta).and(rt.runLength).and(rt.integerPacking);default:gn(h)}}e.classify=f})(po||(po={}));var fc;(function(e){function n(i){let{mantissaDigits:s,integerDigits:a}=ed(i,4,1e-6);if(s<0||s+a>10)return rt.by(rt.byteArray);if(s===0)return po.classify(i);let c=r(s),u=new Int32Array(i.length);for(let d=0,p=i.length;da(b,_)}e.fixedPoint=c;function u(_,b,I,E,S){let v=pt.getDataType(_);if(!_.length)return{encodings:[{kind:"IntervalQuantization",min:b,max:I,numSteps:E,srcType:v}],data:new Int32Array(0)};if(I=I?L[w]=E-1:L[w]=Math.round((z-b)/P)|0}return{encodings:[{kind:"IntervalQuantization",min:b,max:I,numSteps:E,srcType:v}],data:L}}function l(_,b,I,E=Int32Array){return S=>u(S,_,b,I,E)}e.intervalQuantizaiton=l;function m(_){let b=pt.getDataType(_);if(b===void 0&&(_=new Int32Array(_),b=pt.IntDataType.Int32),!_.length)return{encodings:[{kind:"RunLength",srcType:b,srcSize:0}],data:new Int32Array(0)};let I=2;for(let P=1,L=_.length;P=0?E+=P/b|0:E+=P/I|0}return E+=_.length,E}function x(_){let b=d(_),I=b?h(_,127):p(_,255),E=b?h(_,32767):p(_,65535);return _.length*4=0)for(;D>=I;)v[P]=I,++P,D-=I;else for(;D<=E;)v[P]=E,++P,D-=E;v[P]=D,++P}let L=s(v);return{encodings:[{kind:"IntegerPacking",byteCount:b.bytesPerElement,isUnsigned:!b.isSigned,srcSize:S},L.encodings[0]],data:L.data}}function g(_){let b=x(_);return b.bytesPerElement===4?s(_):y(_,b)}e.integerPacking=g;function C(_){let b=Object.create(null),I=[],E=new Int32Array(_.length),S=ri.create(Int32Array,1,Math.min(1024,_.length<32?_.length+1:Math.round(_.length/8)+1));ri.add(S,0);let v=0,P=0;for(let O of _){if(O==null){E[P++]=-1;continue}let Q=b[O];Q===void 0&&(v+=O.length,Q=I.length,I[Q]=O,b[O]=Q,ri.add(S,v)),E[P++]=Q}let L=ri.compact(S),D=ho(L).encode(L),ie=ho(E).encode(E);return{encodings:[{kind:"StringArray",dataEncoding:ie.encoding,stringData:I.join(""),offsetEncoding:D.encoding,offsets:D.data}],data:ie.data}}e.stringArray=C})(rt||(rt={}));var ps;(function(e){function t(a,c,u){return{name:a,type:0,value:c,valueKind:u&&u.valueKind,defaultFormat:u&&u.encoder?{encoder:u.encoder}:void 0,shouldInclude:u&&u.shouldInclude}}e.str=t;function n(a,c,u){return{name:a,type:1,value:c,valueKind:u&&u.valueKind,defaultFormat:u?{encoder:u.encoder,typedArray:u.typedArray}:void 0,shouldInclude:u&&u.shouldInclude}}e.int=n;function r(a,c,u){return{name:a,type:2,value:c,valueKind:u&&u.valueKind,defaultFormat:u?{encoder:u.encoder,typedArray:u.typedArray,digitCount:typeof u.digitCount<"u"?u.digitCount:void 0}:void 0,shouldInclude:u&&u.shouldInclude}}e.float=r;function i(a){return n(a,(c,u,l)=>l+1,{typedArray:Int32Array,encoder:rt.by(rt.delta).and(rt.runLength).and(rt.integerPacking)})}e.index=i;class o{constructor(){this.fields=[]}index(c){return this.fields.push(e.index(c)),this}str(c,u,l){return this.fields.push(e.str(c,u,l)),this}int(c,u,l){return this.fields.push(e.int(c,u,l)),this}vec(c,u,l){for(let m=0;mu.split(".")[0]);return{includeCategory(u){return o.includes(u)?!1:i.length<=0||i.indexOf(u)!==-1},includeField(u,l){let m=u+"."+l;return a.includes(m)?!1:!c.includes(u)||s.includes(m)}}}e.filterOf=t,e.DefaultFilter={includeCategory(r){return!0},includeField(r,i){return!0}},e.DefaultFormatter={getFormat(r,i){}};function n(r,i){return i?{fields:nd(r._schema),source:[{data:r,rowCount:i.length,keys:()=>Rr.Array(i)}]}:{fields:nd(r._schema),source:[{data:r,rowCount:r._rowCount}]}}e.ofTable=n})(tn||(tn={}));var hs;(function(e){function t(r,i,o){r.startDataBlock(i);for(let s of o._tableNames)r.writeCategory({name:s,instance:()=>tn.ofTable(o[s])})}e.writeDatabase=t;function n(r,i){for(let o of Object.keys(i))t(r,o,i[o])}e.writeDatabaseCollection=n})(hs||(hs={}));function dc(e){return(t,n)=>n[e].value(t)}function qh(e){return(t,n)=>n[e].value(t).join(n[e].schema.separator)}function mc(e,...t){return(n,r)=>r[e].schema.space.get(r[e].value(n),...t)}function _o(e){return(t,n)=>n[e].valueKind(t)}function Gh(e,t){let n=[],i=_o(e);if(t.rank===1){let o=t.dimensions[0];for(let s=0;s 3 or rank 0 are currently not supported.");return n}function nd(e){let t=[];for(let n of Object.keys(e)){let r=e[n];r.valueType==="int"?t.push({name:n,type:1,value:dc(n),valueKind:_o(n)}):r.valueType==="float"?t.push({name:n,type:2,value:dc(n),valueKind:_o(n)}):r.valueType==="str"?t.push({name:n,type:0,value:dc(n),valueKind:_o(n)}):r.valueType==="list"?t.push({name:n,type:0,value:qh(n),valueKind:_o(n)}):r.valueType==="tensor"?t.push(...Gh(n,r.space)):gn(r.valueType)}return t}function rd(e){return e.defaultFormat&&typeof e.defaultFormat.digitCount<"u"?Math.max(0,Math.min(e.defaultFormat.digitCount,16)):6}function go(e){return e.fields.some(t=>!!t.shouldInclude)?e.fields.filter(t=>!t.shouldInclude||e.source.some(n=>t.shouldInclude(n.data))):e.fields}function _s(e,t){let n=e.instance(t),r=n.source.filter(s=>s.rowCount>0);if(!r.length)return{instance:n,rowCount:0,source:[]};let i=r.reduce((s,a)=>s+a.rowCount,0),o=r.map(s=>({data:s.data,keys:()=>s.keys?s.keys():Rr.Range(0,s.rowCount-1),rowCount:s.rowCount}));return{instance:n,rowCount:i,source:o}}var ys=class{constructor(){this.builder=dt.create(),this.encoded=!1,this.dataBlockCreated=!1,this.filter=tn.DefaultFilter,this.formatter=tn.DefaultFormatter,this.isBinary=!1,this.binaryEncodingProvider=void 0}setFilter(t){this.filter=t||tn.DefaultFilter}isCategoryIncluded(t){return this.filter.includeCategory(t)}setFormatter(t){this.formatter=t||tn.DefaultFormatter}startDataBlock(t){this.dataBlockCreated=!0,dt.write(this.builder,`data_${(t||"").replace(/[ \n\t]/g,"").toUpperCase()} +# +`)}writeCategory(t,n,r){if(this.encoded)throw new Error("The writer contents have already been encoded, no more writing.");if(!this.dataBlockCreated)throw new Error("No data block created.");if(!r?.ignoreFilter&&!this.filter.includeCategory(t.name))return;let{instance:i,rowCount:o,source:s}=_s(t,n);o&&(o===1?zh(t,i,s,this.builder,this.filter,this.formatter):Vh(t,i,s,this.builder,this.filter,this.formatter))}encode(){this.encoded=!0}writeTo(t){let n=dt.getChunks(this.builder);for(let r=0,i=n.length;ri.includeField(e.name,p.name)?Math.max(d,p.name.length):0,0);if(u===0)return;u+=e.name.length+6;let m=a.keys().move(),f=sd(e.name,t.fields,o);for(let d=0;di.includeField(e.name,m.name)),c=a.length;if(c===0)return;let u=sd(e.name,a,o);id(r,"loop_");for(let m=0;m=0}function id(e,t){dt.write(e,t),dt.newline(e)}function jh(e,t){dt.writeInteger(e,t),dt.whitespace1(e)}function Yh(e,t,n){dt.writeFloat(e,t,n),dt.whitespace1(e)}function Zh(e){dt.writeSafe(e,". ")}function Wh(e){dt.writeSafe(e,"? ")}function Xh(e,t){if(!t)return dt.writeSafe(e,". "),!1;let n=t.charCodeAt(0),r=!1,i=0,o=!1,s=!1;for(let a=0,c=t.length-1;a<=c;a++)switch(t.charCodeAt(a)){case 9:r=!0;break;case 10:return gs(e,t),!0;case 32:r=!0;break;case 34:if(a&&a===c)break;if(o)return gs(e,t),!0;s=!0,r=!0,i=0;break;case 39:if(a&&a===c)break;if(s)return gs(e,t),!0;o=!0,r=!0,i=1;break}return!r&&(n===35||n===36||n===59||n===91||n===93||n===95)&&(r=!0),r?(dt.writeSafe(e,i?'"':"'"),dt.writeSafe(e,t),dt.writeSafe(e,i?'" ':"' ")):(dt.writeSafe(e,t),dt.writeSafe(e," ")),!1}function gs(e,t){dt.writeSafe(e,` +;`+t),dt.writeSafe(e,` +; +`)}function yo(e,t,n){for(let r=0,i=n.length;r>>0&127|0;continue}if(o<2048){e[t++]=o>>>6&31|192,e[t++]=o>>>0&63|128;continue}if(o<65536){e[t++]=o>>>12&15|224,e[t++]=o>>>6&63|128,e[t++]=o>>>0&63|128;continue}if(o<1114112){e[t++]=o>>>18&7|240,e[t++]=o>>>12&63|128,e[t++]=o>>>6&63|128,e[t++]=o>>>0&63|128;continue}throw new Error("bad codepoint "+o)}}var $h=function(){let e=[];for(let t=0;t<1024;t++)e[t]=String.fromCharCode(t);return e}();function cd(e){throw new Error(e)}function Qh(e,t,n){let r=$h,i,o=0,s=[],a=512;for(let c=t,u=t+n;c0&&(i[i.length]=s.slice(0,o).join("")),i.join("")):s.slice(0,o).join("")}var ad=typeof TextDecoder<"u"?new TextDecoder:void 0;function xs(e,t,n){if(ad){let r=t||n!==e.length?e.subarray(t,t+n):e;return ad.decode(r)}else return Qh(e,t,n)}function pc(e){let t=0;for(let n=0,r=e.length;n=0){if(e<128)return 1;if(e<256)return 2;if(e<65536)return 3;if(e<4294967296)return 5;throw new Error("Number too big 0x"+e.toString(16))}if(e>=-32)return 1;if(e>=-128)return 2;if(e>=-32768)return 3;if(e>=-2147483648)return 5;throw new Error("Number too small -0x"+e.toString(16).substr(1))}if(t==="boolean"||e===null||e===void 0)return 1;if(t==="object"){let n,r=0;if(Array.isArray(e)){n=e.length;for(let i=0;i=0){if(e<128)return t.setUint8(r,e),1;if(e<256)return t.setUint8(r,204),t.setUint8(r+1,e),2;if(e<65536)return t.setUint8(r,205),t.setUint16(r+1,e),3;if(e<4294967296)return t.setUint8(r,206),t.setUint32(r+1,e),5;throw new Error("Number too big 0x"+e.toString(16))}if(e>=-32)return t.setInt8(r,e),1;if(e>=-128)return t.setUint8(r,208),t.setInt8(r+1,e),2;if(e>=-32768)return t.setUint8(r,209),t.setInt16(r+1,e),3;if(e>=-2147483648)return t.setUint8(r,210),t.setInt32(r+1,e),5;throw new Error("Number too small -0x"+(-e).toString(16).substr(1))}if(e==null)return t.setUint8(r,192),1;if(i==="boolean")return t.setUint8(r,e?195:194),1;if(i==="object"){let o,s=0,a=Array.isArray(e),c;if(a?o=e.length:(c=Object.keys(e),o=c.length),o<16?(t.setUint8(r,o|(a?144:128)),s=1):o<65536?(t.setUint8(r,a?220:222),t.setUint16(r+1,o),s=3):o<4294967296&&(t.setUint8(r,a?221:223),t.setUint32(r+1,o),s=5),a)for(let u=0;utypeof t[e].operator.assembly>"u"?1:0,hc=(e,t)=>t[e].operator.spgrOp===-1?1:0,bS=At.fields().str("label_asym_id",(e,t)=>t[e].label_asym_id).str("auth_asym_id",(e,t)=>t[e].auth_asym_id).str("operator_name",(e,t)=>t[e].operator.name).str("suffix",(e,t)=>t[e].operator.suffix).str("assembly_id",(e,t)=>{var n;return((n=t[e].operator.assembly)===null||n===void 0?void 0:n.id)||""},{valueKind:ld}).int("assembly_operator_id",(e,t)=>{var n;return((n=t[e].operator.assembly)===null||n===void 0?void 0:n.operId)||0},{valueKind:ld}).int("symmetry_operator_index",(e,t)=>t[e].operator.spgrOp,{valueKind:hc}).vec("symmetry_hkl",[(e,t)=>t[e].operator.hkl[0],(e,t)=>t[e].operator.hkl[1],(e,t)=>t[e].operator.hkl[2]],{valueKind:hc}).int("ncs_id",(e,t)=>t[e].operator.ncsId,{valueKind:hc}).getFields();var _r=me.Schema,U=_r.str,ee=_r.int,Je=_r.float,_c=_r.coord,Ue=_r.Aliased,Or=_r.Matrix,Ss=_r.Vector,bt=_r.lstr,ui=_r.List,nt={atom_site:{auth_asym_id:U,auth_atom_id:U,auth_comp_id:U,auth_seq_id:ee,B_iso_or_equiv:Je,Cartn_x:_c,Cartn_y:_c,Cartn_z:_c,group_PDB:Ue(U),id:ee,label_alt_id:U,label_asym_id:U,label_atom_id:U,label_comp_id:U,label_entity_id:U,label_seq_id:ee,occupancy:Je,type_symbol:U,pdbx_PDB_ins_code:U,pdbx_PDB_model_num:ee,pdbx_formal_charge:ee,pdbx_label_index:ee,pdbx_sifts_xref_db_name:U,pdbx_sifts_xref_db_acc:U,pdbx_sifts_xref_db_num:U,pdbx_sifts_xref_db_res:U,ihm_model_id:ee},atom_site_anisotrop:{id:ee,type_symbol:U,U:Or(3,3),U_esd:Or(3,3),pdbx_auth_seq_id:U,pdbx_auth_asym_id:U,pdbx_auth_atom_id:U,pdbx_auth_comp_id:U,pdbx_label_seq_id:ee,pdbx_label_alt_id:U,pdbx_label_asym_id:U,pdbx_label_atom_id:U,pdbx_label_comp_id:U,pdbx_PDB_ins_code:U},atom_sites:{entry_id:U,fract_transf_matrix:Or(3,3),fract_transf_vector:Ss(3)},audit_author:{name:U,pdbx_ordinal:ee,identifier_ORCID:U},audit_conform:{dict_location:U,dict_name:U,dict_version:U},cell:{angle_alpha:Je,angle_beta:Je,angle_gamma:Je,entry_id:U,length_a:Je,length_b:Je,length_c:Je,Z_PDB:ee,pdbx_unique_axis:U},chem_comp:{formula:U,formula_weight:Je,id:U,mon_nstd_flag:Ue(bt),name:U,type:Ue(bt),pdbx_synonyms:ui(";",e=>e)},chem_comp_bond:{atom_id_1:U,atom_id_2:U,comp_id:U,value_order:Ue(bt),pdbx_ordinal:ee,pdbx_stereo_config:Ue(bt),pdbx_aromatic_flag:Ue(bt)},citation:{book_publisher:U,country:U,id:U,journal_abbrev:U,journal_id_ASTM:U,journal_id_CSD:U,journal_id_ISSN:U,journal_volume:U,page_first:U,page_last:U,title:U,year:ee,pdbx_database_id_DOI:U,pdbx_database_id_PubMed:ee},citation_author:{citation_id:U,name:U,ordinal:ee},database_2:{database_id:Ue(bt),database_code:U},entity:{details:U,formula_weight:Je,id:U,src_method:Ue(bt),type:Ue(bt),pdbx_description:ui(",",e=>e),pdbx_number_of_molecules:ee,pdbx_mutation:U,pdbx_fragment:U,pdbx_ec:ui(",",e=>e)},entity_poly:{entity_id:U,nstd_linkage:Ue(bt),nstd_monomer:Ue(bt),type:Ue(U),pdbx_strand_id:ui(",",e=>e),pdbx_seq_one_letter_code:U,pdbx_seq_one_letter_code_can:U,pdbx_target_identifier:U},entity_poly_seq:{entity_id:U,hetero:Ue(bt),mon_id:U,num:ee},entry:{id:U},exptl:{entry_id:U,method:Ue(U)},software:{classification:U,date:U,description:U,name:U,type:Ue(bt),version:U,pdbx_ordinal:ee},struct:{entry_id:U,title:U,pdbx_descriptor:U},struct_asym:{details:U,entity_id:U,id:U,pdbx_modified:U,pdbx_blank_PDB_chainid_flag:Ue(U)},struct_conf:{beg_label_asym_id:U,beg_label_comp_id:U,beg_label_seq_id:ee,beg_auth_asym_id:U,beg_auth_comp_id:U,beg_auth_seq_id:ee,conf_type_id:Ue(bt),details:U,end_label_asym_id:U,end_label_comp_id:U,end_label_seq_id:ee,end_auth_asym_id:U,end_auth_comp_id:U,end_auth_seq_id:ee,id:U,pdbx_beg_PDB_ins_code:U,pdbx_end_PDB_ins_code:U,pdbx_PDB_helix_class:U,pdbx_PDB_helix_length:ee,pdbx_PDB_helix_id:U},struct_conn:{conn_type_id:Ue(bt),details:U,id:U,ptnr1_label_asym_id:U,ptnr1_label_atom_id:U,ptnr1_label_comp_id:U,ptnr1_label_seq_id:ee,ptnr1_auth_asym_id:U,ptnr1_auth_comp_id:U,ptnr1_auth_seq_id:ee,ptnr1_symmetry:U,ptnr2_label_asym_id:U,ptnr2_label_atom_id:U,ptnr2_label_comp_id:U,ptnr2_label_seq_id:ee,ptnr2_auth_asym_id:U,ptnr2_auth_comp_id:U,ptnr2_auth_seq_id:ee,ptnr2_symmetry:U,pdbx_ptnr1_PDB_ins_code:U,pdbx_ptnr1_label_alt_id:U,pdbx_ptnr1_standard_comp_id:U,pdbx_ptnr2_PDB_ins_code:U,pdbx_ptnr2_label_alt_id:U,pdbx_ptnr3_PDB_ins_code:U,pdbx_ptnr3_label_alt_id:U,pdbx_ptnr3_label_asym_id:U,pdbx_ptnr3_label_atom_id:U,pdbx_ptnr3_label_comp_id:U,pdbx_ptnr3_label_seq_id:ee,pdbx_PDB_id:U,pdbx_dist_value:Je,pdbx_value_order:Ue(bt)},struct_conn_type:{criteria:U,id:Ue(bt),reference:U},struct_keywords:{entry_id:U,text:ui(",",e=>e),pdbx_keywords:U},struct_ncs_oper:{code:Ue(U),details:U,id:ee,matrix:Or(3,3),vector:Ss(3)},struct_sheet_range:{beg_label_asym_id:U,beg_label_comp_id:U,beg_label_seq_id:ee,end_label_asym_id:U,end_label_comp_id:U,end_label_seq_id:ee,beg_auth_asym_id:U,beg_auth_comp_id:U,beg_auth_seq_id:ee,end_auth_asym_id:U,end_auth_comp_id:U,end_auth_seq_id:ee,id:U,sheet_id:U,pdbx_beg_PDB_ins_code:U,pdbx_end_PDB_ins_code:U},struct_site:{details:U,id:U,pdbx_num_residues:ee,pdbx_evidence_code:U,pdbx_auth_asym_id:U,pdbx_auth_comp_id:U,pdbx_auth_seq_id:U,pdbx_auth_ins_code:U},struct_site_gen:{details:U,id:U,label_alt_id:U,label_asym_id:U,label_atom_id:U,label_comp_id:U,label_seq_id:ee,auth_asym_id:U,auth_comp_id:U,auth_seq_id:U,site_id:U,symmetry:U,pdbx_auth_ins_code:U,pdbx_num_res:ee},symmetry:{entry_id:U,cell_setting:Ue(bt),Int_Tables_number:ee,space_group_name_Hall:U,"space_group_name_H-M":U},pdbx_database_status:{status_code:Ue(U),status_code_sf:Ue(U),status_code_mr:Ue(U),entry_id:U,recvd_initial_deposition_date:U,SG_entry:Ue(bt),deposit_site:Ue(U),process_site:Ue(U),status_code_cs:Ue(U),methods_development_category:Ue(U),pdb_format_compatible:Ue(bt)},pdbx_nonpoly_scheme:{asym_id:U,entity_id:U,mon_id:U,pdb_strand_id:U,ndb_seq_num:U,pdb_seq_num:U,auth_seq_num:U,pdb_mon_id:U,auth_mon_id:U,pdb_ins_code:U},pdbx_database_related:{db_name:U,details:U,db_id:U,content_type:Ue(U)},pdbx_entity_nonpoly:{entity_id:U,comp_id:U,name:U},pdbx_chem_comp_synonyms:{name:U,comp_id:U,provenance:Ue(U)},pdbx_chem_comp_identifier:{comp_id:U,identifier:U,type:Ue(U),program:U,program_version:U},pdbx_unobs_or_zero_occ_residues:{id:ee,polymer_flag:Ue(bt),occupancy_flag:Ue(ee),PDB_model_num:ee,auth_asym_id:U,auth_comp_id:U,auth_seq_id:U,PDB_ins_code:U,label_asym_id:U,label_comp_id:U,label_seq_id:ee},pdbx_struct_mod_residue:{id:ee,auth_asym_id:U,auth_comp_id:U,auth_seq_id:ee,PDB_ins_code:U,label_asym_id:U,label_comp_id:U,label_seq_id:ee,parent_comp_id:U,details:U},pdbx_struct_oper_list:{id:U,type:Ue(U),name:U,symmetry_operation:U,matrix:Or(3,3),vector:Ss(3)},pdbx_struct_assembly:{method_details:U,oligomeric_details:U,oligomeric_count:ee,details:U,id:U},pdbx_struct_assembly_gen:{asym_id_list:ui(",",e=>e),assembly_id:U,oper_expression:U},pdbx_reference_entity_list:{prd_id:U,ref_entity_id:U,type:Ue(bt),details:U,component_id:ee},pdbx_reference_entity_link:{link_id:ee,prd_id:U,details:U,ref_entity_id_1:U,ref_entity_id_2:U,entity_seq_num_1:ee,entity_seq_num_2:ee,comp_id_1:U,comp_id_2:U,atom_id_1:U,atom_id_2:U,value_order:Ue(bt),component_1:ee,component_2:ee,link_class:Ue(U)},pdbx_reference_entity_poly_link:{link_id:ee,prd_id:U,ref_entity_id:U,component_id:ee,entity_seq_num_1:ee,entity_seq_num_2:ee,comp_id_1:U,comp_id_2:U,atom_id_1:U,atom_id_2:U,value_order:Ue(bt)},pdbx_molecule:{prd_id:U,instance_id:ee,asym_id:U},pdbx_molecule_features:{prd_id:U,class:Ue(bt),type:Ue(bt),name:U,details:U},entity_src_nat:{entity_id:U,pdbx_organism_scientific:U,pdbx_plasmid_name:U,pdbx_src_id:ee,pdbx_beg_seq_num:ee,pdbx_end_seq_num:ee},entity_src_gen:{entity_id:U,pdbx_gene_src_gene:ui(",",e=>e),pdbx_gene_src_scientific_name:U,plasmid_name:U,pdbx_src_id:ee,pdbx_beg_seq_num:ee,pdbx_end_seq_num:ee},pdbx_entity_src_syn:{organism_scientific:U,entity_id:U,pdbx_src_id:ee,pdbx_beg_seq_num:ee,pdbx_end_seq_num:ee},pdbx_entity_branch_descriptor:{entity_id:U,descriptor:U,type:Ue(bt),program:U,program_version:U,ordinal:ee},pdbx_entity_instance_feature:{details:U,feature_type:Ue(U),auth_asym_id:U,asym_id:U,auth_seq_num:U,seq_num:ee,comp_id:U,auth_comp_id:U,ordinal:ee},pdbx_entity_branch_list:{entity_id:U,hetero:Ue(bt),comp_id:U,num:ee},pdbx_entity_branch_link:{link_id:ee,details:U,entity_id:U,entity_branch_list_num_1:ee,entity_branch_list_num_2:ee,comp_id_1:U,comp_id_2:U,atom_id_1:U,leaving_atom_id_1:U,atom_stereo_config_1:Ue(bt),atom_id_2:U,leaving_atom_id_2:U,atom_stereo_config_2:Ue(bt),value_order:Ue(bt)},pdbx_entity_branch:{entity_id:U,type:Ue(U)},pdbx_branch_scheme:{entity_id:U,hetero:Ue(bt),asym_id:U,mon_id:U,num:ee,pdb_asym_id:U,pdb_seq_num:U,pdb_mon_id:U,auth_asym_id:U,auth_seq_num:U,auth_mon_id:U},pdbx_chem_comp_related:{comp_id:U,related_comp_id:U,relationship_type:Ue(U),details:U},ihm_starting_model_details:{starting_model_id:U,entity_id:U,entity_description:U,asym_id:U,entity_poly_segment_id:ee,starting_model_source:Ue(U),starting_model_auth_asym_id:U,starting_model_sequence_offset:ee,dataset_list_id:ee},ihm_starting_comparative_models:{id:ee,starting_model_id:U,starting_model_auth_asym_id:U,starting_model_seq_id_begin:ee,starting_model_seq_id_end:ee,template_auth_asym_id:U,template_seq_id_begin:ee,template_seq_id_end:ee,template_sequence_identity:Je,template_sequence_identity_denominator:Ue(ee),template_dataset_list_id:ee,alignment_file_id:ee},ihm_starting_model_seq_dif:{id:ee,entity_id:U,asym_id:U,seq_id:ee,comp_id:U,starting_model_id:U,db_asym_id:U,db_seq_id:ee,db_comp_id:U,details:U},ihm_model_representation:{id:ee,name:U,details:U},ihm_model_representation_details:{id:ee,representation_id:ee,entity_poly_segment_id:ee,entity_id:U,entity_description:U,entity_asym_id:U,model_object_primitive:Ue(U),starting_model_id:U,model_mode:Ue(U),model_granularity:Ue(U),model_object_count:ee},ihm_struct_assembly_details:{id:ee,assembly_id:ee,parent_assembly_id:ee,entity_description:U,entity_id:U,asym_id:U,entity_poly_segment_id:ee},ihm_struct_assembly:{id:ee,name:U,description:U},ihm_modeling_protocol:{id:ee,num_steps:ee,protocol_name:U},ihm_modeling_protocol_details:{id:ee,protocol_id:ee,step_id:ee,struct_assembly_id:ee,dataset_group_id:ee,struct_assembly_description:U,step_name:U,step_method:U,num_models_begin:ee,num_models_end:ee,multi_scale_flag:Ue(bt),multi_state_flag:Ue(bt),ordered_flag:Ue(bt),script_file_id:ee,software_id:ee},ihm_multi_state_modeling:{state_id:ee,state_group_id:ee,population_fraction:Je,population_fraction_sd:Je,state_type:U,state_name:U,experiment_type:Ue(U),details:U},ihm_modeling_post_process:{id:ee,protocol_id:ee,analysis_id:ee,step_id:ee,type:Ue(U),feature:Ue(U),num_models_begin:ee,num_models_end:ee},ihm_ensemble_info:{ensemble_id:ee,ensemble_name:U,post_process_id:ee,model_group_id:ee,ensemble_clustering_method:Ue(U),ensemble_clustering_feature:Ue(U),num_ensemble_models:ee,num_ensemble_models_deposited:ee,ensemble_precision_value:Je,ensemble_file_id:ee},ihm_model_list:{model_id:ee,model_name:U,assembly_id:ee,protocol_id:ee,representation_id:ee},ihm_model_group:{id:ee,name:U,details:U},ihm_model_group_link:{model_id:ee,group_id:ee},ihm_model_representative:{id:ee,model_group_id:ee,model_id:ee,selection_criteria:Ue(U)},ihm_dataset_list:{id:ee,data_type:Ue(U),database_hosted:Ue(bt)},ihm_dataset_group:{id:ee,name:U,application:Ue(U),details:U},ihm_dataset_group_link:{dataset_list_id:ee,group_id:ee},ihm_related_datasets:{dataset_list_id_derived:ee,dataset_list_id_primary:ee},ihm_dataset_related_db_reference:{id:ee,dataset_list_id:ee,db_name:Ue(U),accession_code:U,version:U,details:U},ihm_external_reference_info:{reference_id:ee,reference_provider:U,reference_type:Ue(U),reference:U,refers_to:Ue(U),associated_url:U},ihm_external_files:{id:ee,reference_id:ee,file_path:U,content_type:Ue(U),file_size_bytes:Je,details:U},ihm_dataset_external_reference:{id:ee,dataset_list_id:ee,file_id:ee},ihm_localization_density_files:{id:ee,file_id:ee,ensemble_id:ee,entity_id:U,entity_poly_segment_id:ee,asym_id:U},ihm_predicted_contact_restraint:{id:ee,group_id:ee,entity_id_1:U,entity_id_2:U,asym_id_1:U,asym_id_2:U,comp_id_1:U,comp_id_2:U,seq_id_1:ee,seq_id_2:ee,rep_atom_1:Ue(U),rep_atom_2:Ue(U),distance_lower_limit:Je,distance_upper_limit:Je,probability:Je,restraint_type:Ue(U),model_granularity:Ue(U),dataset_list_id:ee,software_id:ee},ihm_cross_link_list:{id:ee,group_id:ee,entity_description_1:U,entity_description_2:U,entity_id_1:U,entity_id_2:U,comp_id_1:U,comp_id_2:U,seq_id_1:ee,seq_id_2:ee,linker_type:Ue(U),dataset_list_id:ee},ihm_cross_link_restraint:{id:ee,group_id:ee,entity_id_1:U,entity_id_2:U,asym_id_1:U,asym_id_2:U,comp_id_1:U,comp_id_2:U,seq_id_1:ee,seq_id_2:ee,atom_id_1:U,atom_id_2:U,restraint_type:Ue(U),conditional_crosslink_flag:Ue(U),model_granularity:Ue(U),distance_threshold:Je,psi:Je,sigma_1:Je,sigma_2:Je},ihm_cross_link_result_parameters:{id:ee,restraint_id:ee,model_id:ee,psi:Je,sigma_1:Je,sigma_2:Je},ihm_2dem_class_average_restraint:{id:ee,dataset_list_id:ee,number_raw_micrographs:ee,pixel_size_width:Je,pixel_size_height:Je,image_resolution:Je,image_segment_flag:Ue(bt),number_of_projections:ee,struct_assembly_id:ee,details:U},ihm_2dem_class_average_fitting:{id:ee,restraint_id:ee,model_id:ee,cross_correlation_coefficient:Je,rot_matrix:Or(3,3),tr_vector:Ss(3)},ihm_3dem_restraint:{id:ee,dataset_list_id:ee,model_id:ee,struct_assembly_id:ee,fitting_method:U,number_of_gaussians:ee,cross_correlation_coefficient:Je},ihm_sas_restraint:{id:ee,dataset_list_id:ee,model_id:ee,struct_assembly_id:ee,profile_segment_flag:Ue(bt),fitting_atom_type:U,fitting_method:U,fitting_state:Ue(U),radius_of_gyration:Je,chi_value:Je,details:U},ihm_starting_model_coord:{ordinal_id:ee,starting_model_id:U,group_PDB:Ue(U),id:ee,type_symbol:U,entity_id:U,atom_id:U,comp_id:U,seq_id:ee,asym_id:U,Cartn_x:Je,Cartn_y:Je,Cartn_z:Je,B_iso_or_equiv:Je},ihm_sphere_obj_site:{id:ee,entity_id:U,seq_id_begin:ee,seq_id_end:ee,asym_id:U,Cartn_x:Je,Cartn_y:Je,Cartn_z:Je,object_radius:Je,rmsf:Je,model_id:ee},ihm_gaussian_obj_site:{id:ee,entity_id:U,seq_id_begin:ee,seq_id_end:ee,asym_id:U,mean_Cartn_x:Je,mean_Cartn_y:Je,mean_Cartn_z:Je,weight:Je,covariance_matrix:Or(3,3),model_id:ee},ihm_gaussian_obj_ensemble:{id:ee,entity_id:U,seq_id_begin:ee,seq_id_end:ee,asym_id:U,mean_Cartn_x:Je,mean_Cartn_y:Je,mean_Cartn_z:Je,weight:Je,covariance_matrix:Or(3,3),ensemble_id:ee},ihm_feature_list:{feature_id:ee,feature_type:Ue(U),entity_type:Ue(U)},ihm_poly_residue_feature:{ordinal_id:ee,feature_id:ee,entity_id:U,asym_id:U,comp_id_begin:U,comp_id_end:U,seq_id_begin:ee,seq_id_end:ee},ihm_derived_distance_restraint:{id:ee,group_id:ee,feature_id_1:ee,feature_id_2:ee,group_conditionality:Ue(U),random_exclusion_fraction:Je,distance_upper_limit:Je,restraint_type:Ue(U),dataset_list_id:ee},ma_model_list:{ordinal_id:ee,model_id:ee,model_group_id:ee,model_name:U,model_group_name:U,model_type:Ue(U),data_id:ee},ma_target_entity:{entity_id:U,data_id:ee,origin:Ue(U)},ma_target_entity_instance:{asym_id:U,entity_id:U,details:U},ma_target_ref_db_details:{target_entity_id:U,db_name:Ue(U),db_code:U,db_accession:U,seq_db_isoform:U,seq_db_align_begin:U,seq_db_align_end:U,ncbi_taxonomy_id:U,organism_scientific:U},ma_data:{id:ee,content_type:Ue(U),content_type_other_details:U,name:U},ma_software_group:{ordinal_id:ee,group_id:ee,software_id:ee},ma_qa_metric:{id:ee,name:U,type:Ue(U),mode:Ue(U),software_group_id:ee},ma_qa_metric_global:{ordinal_id:ee,model_id:ee,metric_id:ee,metric_value:Je},ma_qa_metric_local:{ordinal_id:ee,model_id:ee,label_asym_id:U,label_seq_id:ee,label_comp_id:U,metric_id:ee,metric_value:Je}};var dd={type_symbol:me.Schema.Aliased(nt.atom_site.type_symbol),label_atom_id:nt.atom_site.label_atom_id,auth_atom_id:nt.atom_site.auth_atom_id,label_alt_id:nt.atom_site.label_alt_id,label_comp_id:nt.atom_site.label_comp_id,auth_comp_id:nt.atom_site.auth_comp_id,pdbx_formal_charge:nt.atom_site.pdbx_formal_charge},md={group_PDB:nt.atom_site.group_PDB,label_seq_id:nt.atom_site.label_seq_id,auth_seq_id:nt.atom_site.auth_seq_id,pdbx_PDB_ins_code:nt.atom_site.pdbx_PDB_ins_code},pd={label_asym_id:nt.atom_site.label_asym_id,auth_asym_id:nt.atom_site.auth_asym_id,label_entity_id:nt.atom_site.label_entity_id},Is;(function(e){function t(){return{label_entity_id:"",label_asym_id:"",auth_seq_id:0,pdbx_PDB_ins_code:void 0}}e.EmptyResidueKey=t})(Is||(Is={}));var $n;(function(e){function t(i,o){return i.residueAtomSegments.index[i.chainAtomSegments.offsets[o]]}e.chainStartResidueIndex=t;function n(i,o){return i.residueAtomSegments.index[i.chainAtomSegments.offsets[o+1]-1]+1}e.chainEndResidueIndexExcl=n;function r(i,o){return n(i,o)-t(i,o)}e.chainResidueCount=r})($n||($n={}));var gc={H:1,D:1,T:1,HE:2,LI:3,BE:4,B:5,C:6,N:7,O:8,F:9,NE:10,NA:11,MG:12,AL:13,SI:14,P:15,S:16,CL:17,AR:18,K:19,CA:20,SC:21,TI:22,V:23,CR:24,MN:25,FE:26,CO:27,NI:28,CU:29,ZN:30,GA:31,GE:32,AS:33,SE:34,BR:35,KR:36,RB:37,SR:38,Y:39,ZR:40,NB:41,MO:42,TC:43,RU:44,RH:45,PD:46,AG:47,CD:48,IN:49,SN:50,SB:51,TE:52,I:53,XE:54,CS:55,BA:56,LA:57,CE:58,PR:59,ND:60,PM:61,SM:62,EU:63,GD:64,TB:65,DY:66,HO:67,ER:68,TM:69,YB:70,LU:71,HF:72,TA:73,W:74,RE:75,OS:76,IR:77,PT:78,AU:79,HG:80,TL:81,PB:82,BI:83,PO:84,AT:85,RN:86,FR:87,RA:88,AC:89,TH:90,PA:91,U:92,NP:93,PU:94,AM:95,CM:96,BK:97,CF:98,ES:99,FM:100,MD:101,NO:102,LR:103,RF:104,DB:105,SG:106,BH:107,HS:108,MT:109},o2={1:1.1,2:1.4,3:1.81,4:1.53,5:1.92,6:1.7,7:1.55,8:1.52,9:1.47,10:1.54,11:2.27,12:1.73,13:1.84,14:2.1,15:1.8,16:1.8,17:1.75,18:1.88,19:2.75,20:2.31,21:2.3,22:2.15,23:2.05,24:2.05,25:2.05,26:2.05,27:2,28:2,29:2,30:2.1,31:1.87,32:2.11,33:1.85,34:1.9,35:1.83,36:2.02,37:3.03,38:2.49,39:2.4,40:2.3,41:2.15,42:2.1,43:2.05,44:2.05,45:2,46:2.05,47:2.1,48:2.2,49:2.2,50:1.93,51:2.17,52:2.06,53:1.98,54:2.16,55:3.43,56:2.68,57:2.5,58:2.48,59:2.47,60:2.45,61:2.43,62:2.42,63:2.4,64:2.38,65:2.37,66:2.35,67:2.33,68:2.32,69:2.3,70:2.28,71:2.27,72:2.25,73:2.2,74:2.1,75:2.05,76:2,77:2,78:2.05,79:2.1,80:2.05,81:1.96,82:2.02,83:2.07,84:1.97,85:2.02,86:2.2,87:3.48,88:2.83,89:2,90:2.4,91:2,92:2.3,93:2,94:2,95:2,96:2,97:2,98:2,99:2,100:2,101:2,102:2,103:2,104:2,105:2,106:2,107:2,108:2,109:2},s2={1:1.008,2:4.0026,3:6.94,4:9.0122,5:10.81,6:10.81,7:14.007,8:15.999,9:18.998,10:20.18,11:22.99,12:24.305,13:26.982,14:28.085,15:30.974,16:32.06,17:35.45,18:39.948,19:39.098,20:40.078,21:44.956,22:47.867,23:50.942,24:51.996,25:54.938,26:55.845,27:58.933,28:58.693,29:63.546,30:65.38,31:69.723,32:72.63,33:74.922,34:78.971,35:79.904,36:83.798,37:85.468,38:87.62,39:88.906,40:91.224,41:92.906,42:95.95,43:96.906,44:101.07,45:102.91,46:106.42,47:107.87,48:112.41,49:114.82,50:118.71,51:121.76,52:127.6,53:127.6,54:131.29,55:132.91,56:137.33,57:138.91,58:140.12,59:140.91,60:144.24,61:144.912,62:150.36,63:151.96,64:157.25,65:158.93,66:162.5,67:164.93,68:167.26,69:168.93,70:173.05,71:174.97,72:178.49,73:180.95,74:183.84,75:186.21,76:190.23,77:192.22,78:195.08,79:196.97,80:200.59,81:204.38,82:207.2,83:208.98,84:1.97,85:2.02,86:2.2,87:3.48,88:2.83,89:2,90:232.04,91:231.04,92:238.03,93:237.048,94:244.064,95:243.061,96:247.07,97:247.07,98:251.079,99:252.083,100:257.095,101:258.098,102:259.101,103:262.11,104:267.122,105:270.131,106:271.134,107:270.133,108:270.134,109:278.156},a2=1.7,c2=10.81,u2=0;function hd(e){let t=gc[e];return t===void 0?a2:o2[t]}function BS(e){let t=gc[e];return t===void 0?c2:s2[t]}function _d(e){let t=gc[e];return t===void 0?u2:t}function pn(){return pn.zero()}(function(e){function t(){let w=[.1,0,0];return w[0]=0,w}e.zero=t;function n(w,D,z){let ie=t();return ie[0]=w,ie[1]=D,ie[2]=z,ie}e.create=n;function r(w,D,z,ie){return w[0]=D,w[1]=z,w[2]=ie,w}e.set=r;function i(w,D){let z=D[0]-w[0],ie=D[1]-w[1],O=D[2]-w[2];return Math.sqrt(z*z+ie*ie+O*O)}e.distance=i;function o(w,D){let[z,ie,O]=Cn.toRgb(D),[Q,K,Z]=L(z,ie,O),se=116*K-16;return w[0]=se<0?0:se,w[1]=500*(Q-K),w[2]=200*(K-Z),w}e.fromColor=o;function s(w,D){return Hn.toLab(w,D)}e.fromHcl=s;function a(w){let D=(w[0]+16)/116,z=isNaN(w[1])?D:D+w[1]/500,ie=isNaN(w[2])?D:D-w[2]/200;D=y*S(D),z=x*S(z),ie=g*S(ie);let O=E(3.2404542*z-1.5371385*D-.4985314*ie),Q=E(-.969266*z+1.8760108*D+.041556*ie),K=E(.0556434*z-.2040259*D+1.0572252*ie);return Cn.fromRgb(Math.round(Fn(O,0,255)),Math.round(Fn(Q,0,255)),Math.round(Fn(K,0,255)))}e.toColor=a;function c(w,D){let[z,ie,O]=D,Q=Math.sqrt(ie*ie+O*O),K=(On(Math.atan2(O,ie))+360)%360;return Math.round(Q*1e4)===0&&(K=Number.NaN),w[0]=K,w[1]=Q,w[2]=z,w}e.toHcl=c;function u(w,D){return w[0]=D[0],w[1]=D[1],w[2]=D[2],w}e.copy=u;function l(w,D,z){return w[0]=D[0]-h*z,w[1]=D[1],w[2]=D[2],w}e.darken=l;function m(w,D,z){return l(w,D,-z)}e.lighten=m;let f=[0,0,0];function d(w,D,z){return c(f,D),Hn.toLab(w,Hn.saturate(f,f,z))}e.saturate=d;function p(w,D,z){return d(w,D,-z)}e.desaturate=p;let h=18,x=.95047,y=1,g=1.08883,C=.137931034,_=.206896552,b=.12841855,I=.008856452;function E(w){return 255*(w<=.00304?12.92*w:1.055*Math.pow(w,1/2.4)-.055)}function S(w){return w>_?w*w*w:b*(w-C)}function v(w){return(w/=255)<=.04045?w/12.92:Math.pow((w+.055)/1.055,2.4)}function P(w){return w>I?Math.pow(w,1/3):w/b+C}function L(w,D,z){w=v(w),D=v(D),z=v(z);let ie=P((.4124564*w+.3575761*D+.1804375*z)/x),O=P((.2126729*w+.7151522*D+.072175*z)/y),Q=P((.0193339*w+.119192*D+.9503041*z)/g);return[ie,O,Q]}})(pn||(pn={}));function Hn(){return Hn.zero()}(function(e){function t(){let g=[.1,0,0];return g[0]=0,g}e.zero=t;function n(g,C,_){let b=t();return b[0]=g,b[1]=C,b[2]=_,b}e.create=n;function r(g,C,_,b){return g[0]=C,g[1]=_,g[2]=b,g}e.set=r;function i(g){return!isNaN(g[0])}e.hasHue=i;let o=[0,0,0];function s(g,C){return pn.toHcl(g,pn.fromColor(o,C))}e.fromColor=s;function a(g,C){return pn.toHcl(g,C)}e.fromLab=a;let c=[0,0,0];function u(g){return pn.toColor(l(c,g))}e.toColor=u;function l(g,C){let[_,b,I]=C;return isNaN(_)&&(_=0),_=Kn(_),g[0]=I,g[1]=Math.cos(_)*b,g[2]=Math.sin(_)*b,g}e.toLab=l;function m(g,C){return g[0]=C[0],g[1]=C[1],g[2]=C[2],g}e.copy=m;function f(g,C,_){return g[0]=C[0],g[1]=Math.max(0,C[1]+y*_),g[2]=C[2],g}e.saturate=f;function d(g,C,_){return f(g,C,-_)}e.desaturate=d;let p=[0,0,0];function h(g,C,_){return l(p,C),pn.toHcl(g,pn.darken(p,p,_))}e.darken=h;function x(g,C,_){return h(g,C,-_)}e.lighten=x;let y=18})(Hn||(Hn={}));function Cn(e){return e}(function(e){function t(O){return`rgb(${O>>16&255}, ${O>>8&255}, ${O&255})`}e.toStyle=t;function n(O){return"#"+("000000"+O.toString(16)).slice(-6)}e.toHexStyle=n;function r(O){return"0x"+("000000"+O.toString(16)).slice(-6)}e.toHexString=r;function i(O){return`RGB: ${e.toRgb(O).join(", ")}`}e.toRgbString=i;function o(O){return[O>>16&255,O>>8&255,O&255]}e.toRgb=o;function s(O){return[(O>>16&255)/255,(O>>8&255)/255,(O&255)/255]}e.toRgbNormalized=s;function a(O){return parseInt(O.replace("#","0x"))}e.fromHexStyle=a;function c(O){return parseInt(O)}e.fromHexString=c;function u(O,Q,K){return O<<16|Q<<8|K}e.fromRgb=u;function l(O,Q,K){return O*255<<16|Q*255<<8|K*255}e.fromNormalizedRgb=l;function m(O,Q){return u(O[Q],O[Q+1],O[Q+2])}e.fromArray=m;function f(O,Q){return l(O[Q],O[Q+1],O[Q+2])}e.fromNormalizedArray=f;function d(O,Q,K){return Q[K]=O>>16&255,Q[K+1]=O>>8&255,Q[K+2]=O&255,Q}e.toArray=d;function p(O,Q,K){return Q[K]=(O>>16&255)/255,Q[K+1]=(O>>8&255)/255,Q[K+2]=(O&255)/255,Q}e.toArrayNormalized=p;function h(O,Q){return O[0]=Q>>16&255,O[1]=Q>>8&255,O[2]=Q&255,O}e.toVec3=h;function x(O,Q){return O[0]=(Q>>16&255)/255,O[1]=(Q>>8&255)/255,O[2]=(Q&255)/255,O}e.toVec3Normalized=x;function y(O,Q,K){let Z=O>>16&255,se=O>>8&255,fe=O&255,Ce=Q>>16&255,xe=Q>>8&255,H=Q&255,$=Z+(Ce-Z)*K,de=se+(xe-se)*K,T=fe+(H-fe)*K;return $<<16|de<<8|T}e.interpolate=y;function g(O){let Q=O>>16&255,K=O>>8&255,Z=O&255;return Q!==K||Q!==Z}e.hasHue=g;let C=[0,0,0];function _(O,Q){return g(O)?(Hn.fromColor(C,O),Hn.toColor(Hn.saturate(C,C,Q))):O}e.saturate=_;function b(O,Q){return _(O,-Q)}e.desaturate=b;let I=[0,0,0];function E(O,Q){return pn.fromColor(I,O),pn.toColor(pn.darken(I,I,Q))}e.darken=E;function S(O,Q){return E(O,-Q)}e.lighten=S;function v(O){return O<=.03928?O/12.92:Math.pow((O+.055)/1.055,2.4)}function P(O){let Q=v((O>>16&255)/255),K=v((O>>8&255)/255),Z=v((O&255)/255);return .2126*Q+.7152*K+.0722*Z}e.luminance=P;function L(O,Q){let K=P(O),Z=P(Q);return K>Z?(K+.05)/(Z+.05):(Z+.05)/(K+.05)}e.contrast=L;function w(O){return O<.04045?O*.0773993808:Math.pow(O*.9478672986+.0521327014,2.4)}function D(O){return l(w((O>>16&255)/255),w((O>>8&255)/255),w((O&255)/255))}e.sRGBToLinear=D;function z(O){return O<.0031308?O*12.92:1.055*Math.pow(O,.41666)-.055}function ie(O){return l(z((O>>16&255)/255),z((O>>8&255)/255),z((O&255)/255))}e.linearToSRGB=ie})(Cn||(Cn={}));function ut(e,t,n,r){return{label:e,description:n,list:r,type:t}}function VS(e,t,n){let r={};for(let i in e){let o=e[i];o=Cn.saturate(o,t),o=Cn.darken(o,-n),r[i]=o}return r}function gd(e,t=" "){return e.replace(/([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g,`$1${t}$2`)}function jS(e){return ws(gd(e))}var l2=e=>e.toUpperCase();function YS(e){return e?typeof e=="string"?e.toUpperCase():`${e}`.toUpperCase():""}function ws(e){return e.toLowerCase().replace(/^\w|\s\w/g,l2)}function f2(e){return e.replace(/_/g," ")}function d2(e){return e.replace(/-/g," ")}function Lr(e){return ws(gd(f2(d2(e))))}function ZS(e,t,n,r){let i=r.length;if(i>n-t)return!1;for(let o=0;o]+>/g,"")}function $S(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var gr={"orange-red":ut("Orange-Red","sequential","Orange-Red, sequential color scheme from ColorBrewer 2.0",[16775148,16705736,16635038,16628612,16551257,15689032,14102559,11730944,8323072]),"purple-blue":ut("Purple-Blue","sequential","Purple-Blue, sequential color scheme from ColorBrewer 2.0",[16775163,15525874,13685222,10927579,7645647,3576e3,356528,285325,145496]),"blue-purple":ut("Blue-Purple","sequential","Blue-Purple, sequential color scheme from ColorBrewer 2.0",[16252157,14740724,12571622,10403034,9213638,9202609,8929693,8458108,5046347]),oranges:ut("Oranges","sequential","",[16774635,16705230,16634018,16625259,16616764,15821075,14239745,10892803,8333060]),"blue-green":ut("Blue-Green","sequential","",[16252157,15070713,13429990,10082505,6734500,4304502,2329413,27948,17435]),"yellow-orange-brown":ut("Yellow-Orange-Brown","sequential","",[16777189,16775100,16704401,16696399,16685353,15495188,13388802,10040324,6694150]),"yellow-green":ut("Yellow-Green","sequential","",[16777189,16252089,14282915,11394446,7915129,4303709,2327619,26679,17705]),reds:ut("Reds","sequential","",[16774640,16703698,16563105,16552562,16476746,15678252,13309981,10817301,6750221]),"red-purple":ut("Red-Purple","sequential","",[16775155,16638173,16565696,16424885,16214177,14496919,11403646,7995767,4784234]),greens:ut("Greens","sequential","",[16252149,15070688,13101504,10607003,7652470,4303709,2329413,27948,17435]),"yellow-green-blue":ut("Yellow-Green-Blue","sequential","",[16777177,15595697,13101492,8375739,4306628,1937856,2252456,2438292,531800]),purples:ut("Purples","sequential","",[16579581,15724021,14342891,12369372,10394312,8420794,6967715,5515151,4128893]),"green-blue":ut("Green-Blue","sequential","",[16252144,14742491,13429701,11066805,8113348,5157843,2854078,551084,540801]),greys:ut("Greys","sequential","",[16777215,15790320,14277081,12434877,9868950,7566195,5395026,2434341,0]),"yellow-orange-red":ut("Yellow-Orange-Red","sequential","",[16777164,16772512,16701814,16691788,16616764,16535082,14883356,12386342,8388646]),"purple-red":ut("Purple-Red","sequential","",[16250105,15196655,13941210,13210823,14640560,15149450,13505110,9961539,6750239]),blues:ut("Blues","sequential","",[16251903,14609399,13032431,10406625,7057110,4362950,2191797,545180,536683]),"purple-blue-green":ut("Purple-Blue-Green","sequential","",[16775163,15524592,13685222,10927579,6793679,3576e3,164234,93273,83510]),spectral:ut("Spectral","diverging","",[10355010,13975119,16018755,16625249,16703627,16777151,15136152,11263396,6734501,3311805,6180770]),"red-yellow-green":ut("Red-Yellow-Green","diverging","",[10813478,14102567,16018755,16625249,16703627,16777151,14282635,10934634,6733155,1742928,26679]),"red-blue":ut("Red-Blue","diverging","",[6750239,11671595,14049357,16033154,16636871,16250871,13755888,9618910,4428739,2188972,340065]),"pink-yellow-green":ut("Pink-Yellow-Green","diverging","",[9306450,12917629,14579630,15840986,16638191,16250871,15136208,12116358,8371265,5083681,2581529]),"purple-green":ut("Purple-Green","diverging","",[4194379,7744131,10055851,12756431,15193320,16250871,14282963,10935200,5942881,1800247,17435]),"red-yellow-blue":ut("Red-Yellow-Blue","diverging","Red-Yellow-Blue, diverging color scheme from ColorBrewer 2.0",[10813478,14102567,16018755,16625249,16703632,16777151,14742520,11262441,7646673,4552116,3225237]),"brown-white-green":ut("Brown-White-Green","diverging","",[5517317,9195786,12550445,14664317,16181443,16119285,13101797,8441281,3512207,91742,15408]),"red-grey":ut("Red-Grey","diverging","",[6750239,11671595,14049357,16033154,16636871,16777215,14737632,12237498,8882055,5066061,1710618]),"orange-purple":ut("Orange-Purple","diverging","",[8338184,11753478,14713364,16627811,16703670,16250871,14211819,11709394,8418220,5515144,2949195]),"set-2":ut("Set-2","qualitative","",[6734501,16551266,9281739,15174339,10934356,16767279,15058068,11776947]),accent:ut("Accent","qualitative","",[8374655,12496596,16629894,16777113,3697840,15729279,12540695,6710886]),"set-1":ut("Set-1","qualitative","",[14948892,3636920,5091146,9981603,16744192,16777011,10901032,16220607,10066329]),"set-3":ut("Set-3","qualitative","",[9294791,16777139,12499674,16482418,8434131,16626786,11787881,16567781,14277081,12353725,13429701,16772463]),"dark-2":ut("Dark-2","qualitative","",[1810039,14245634,7696563,15149450,6727198,15117058,10909213,6710886]),paired:ut("Paired","qualitative","",[10931939,2062516,11722634,3383340,16489113,14883356,16629615,16744192,13284054,6962586,16777113,11622696]),"pastel-2":ut("Pastel-2","qualitative","",[11789005,16633260,13358568,16042724,15136201,16773806,15852236,13421772]),"pastel-1":ut("Pastel-1","qualitative","",[16495790,11783651,13429701,14601188,16701862,16777164,15063229,16636652,15921906]),"many-distinct":ut("Many-Distinct","qualitative","",[1810039,14245634,7696563,15149450,6727198,15117058,10909213,6710886,14948892,3636920,5091146,9981603,16744192,16777011,10901032,16220607,10066329,6734501,16551266,9281739,15174339,10934356,16767279,15058068,11776947]),magma:ut("Magma","sequential","Perceptually uniform shades of black-red-white",[4329332,4853881,5378684,5903742,6363263,6888576,7413633,7938689,8463745,8988801,9513600,10038655,10563454,11088508,11613562,12138360,12728949,13254258,13714030,14239338,14699366,15094114,15489119,15753309,16017499,16216411,16350045,16483424,16551523,16619368,16621934,16689780,16692091,16694402,16696969,16633746,16636058,16638371,16575148,16577461,16514239]),inferno:ut("Inferno","sequential","Perceptually uniform shades of black-red-yellow",[4721514,5246316,5771373,6296430,6821486,7346542,7871597,8396651,8921450,9446504,9971557,10496610,10956127,11481435,12006486,12466258,12926285,13386056,13780802,14241085,14570295,14965297,15229227,15558693,15757342,15956248,16154897,16288267,16421638,16489734,16492043,16494612,16496926,16368426,16305463,16111429,15982678,15853928,15856253,16119953,16580260]),plasma:ut("Plasma","sequential","Perceptually uniform shades of blue-red-yellow",[1771148,2426257,3081365,3671193,4195228,4784799,5308834,5833124,6357158,6815911,7340200,7864744,8324007,8783782,9309348,9769377,10164126,10624154,11018902,11413393,11808141,12137352,12466307,12795519,13124730,13453685,13717361,14046573,14309992,14573668,14837344,15035483,15299159,15497299,15695438,15893834,16091974,16224833,16357693,16425017,16557877,16625457,16627245,16629289,16631334,16567845,16438820,16310052,16115494,15921190,15726625]),viridis:ut("Viridis","sequential","Perceptually uniform shades of blue-green-yellow",[4524123,4656994,4658793,4726127,4727668,4663929,4599933,4535937,4406404,4276870,4081800,3952010,3822475,3627148,3497356,3302029,3172237,3042446,2912654,2782862,2652814,2523022,2393229,2328973,2198924,2069132,2004874,2005897,2007175,2139525,2337154,2666111,3060348,3520376,4045684,4570991,5227369,5883748,6605661,7392854,8180303,8967495,9819967,10672695,11525166,12443174,13295646,14148121,15000344,15852828,16639780]),cividis:ut("Cividis","sequential","Perceptually uniform shades of blue-green-yellow, should look effectively identical to colorblind and non-colorblind users",[11367,12400,537456,1455727,2046574,2571629,3031404,3425388,3754092,4148075,4476779,4805227,5133932,5396844,5725549,5988462,6317166,6580079,6843249,7171698,7434867,7697781,7960951,8289656,8618104,8881272,9209976,9538679,9867127,10195830,10524533,10853235,11181938,11510640,11839343,12168045,12497002,12891240,13219941,13548642,13943134,14271834,14666326,14995025,15389516,15718470,16112703,16507190,16639799]),twilight:ut("Twilight","sequential","Perceptually uniform shades of white-blue-black-red-white, cyclic",[14670305,14211037,13554648,12766675,11847630,10993866,10139847,9351365,8628419,8036290,7509952,7048895,6718653,6519739,6386105,6252470,6184114,6181293,6112935,6044831,5976470,5777291,5447293,5052270,4592479,4067665,3674181,3281211,3150646,3543352,4067644,4657728,5379141,6166345,6953549,7741007,8463184,9120336,9777743,10304079,10830671,11291984,11687762,12083541,12348505,12613471,12878439,13077872,13211771,13411209,13545111,13809830,14074293,14338756,14537169,14735067,14801121]),turbo:ut("Turbo","sequential","Improved (smooth) rainbow colormap for visualization",[4866485,4872413,4354034,3770361,3120629,2667241,2475736,2611140,3073454,3928216,5109892,6487408,8126047,9829201,11531332,13167162,14605618,15780908,16693543,16753699,16748063,16741916,16146200,15026195,13644558,12198408,10818563,9833728]),rainbow:ut("Rainbow","sequential","",[3367393,3516485,16383744,15501073,12526114]),"red-white-blue":ut("Red-White-Blue","diverging","",[12526114,16777215,3367393])},m2=Object.keys(gr),yd=m2.map(e=>[e,gr[e].label,ws(gr[e].type)]),tI=yd.filter(e=>gr[e[0]].type==="diverging"||gr[e[0]].type==="sequential"),nI=yd.filter(e=>gr[e[0]].type==="qualitative");function vs(e){return e in gr?gr[e]:(console.warn(`unknown color list named '${e}'`),gr["red-yellow-blue"])}function iI(e){return{kind:"table-legend",table:e}}function xd(e,t,n){return{kind:"scale-legend",minLabel:e,maxLabel:t,colors:n}}var p2={domain:[0,1],reverse:!1,listOrName:"red-yellow-blue",minLabel:"",maxLabel:""},yc;(function(e){function t(n){let{domain:r,reverse:i,listOrName:o}=Le(Le({},p2),n),s=typeof o=="string"?vs(o).list:o,a=i?s.slice().reverse():s,c=a.length-1,u=0,l=0,m=0;function f(y,g){l=y,m=g,u=m-l||1}f(r[0],r[1]);let d=va(n.minLabel,l.toString()),p=va(n.maxLabel,m.toString()),h;if(a.every(y=>Array.isArray(y))){let y=[...a];y.sort((b,I)=>b[1]-I[1]);let g=y.map(b=>b[0]),C=le.ofSortedArray(y.map(b=>b[1])),_=g.length-1;h=b=>{let I=Fn((b-l)/u,0,1),E=le.findPredecessorIndex(C,I);if(E===0)return g[l];if(E>_)return g[_];let S=C[E-1],v=C[E],P=Fn((I-S)/(v-S),0,1);return Cn.interpolate(g[E-1],g[E],P)}}else h=y=>{let g=Math.min(a.length-1,Math.max(0,(y-l)/u*c)),C=Math.floor(g),_=a[C],b=a[Math.ceil(g)];return Cn.interpolate(_,b,g-C)};return{color:h,colorToArray:(y,g,C)=>{Cn.toArray(h(y),g,C)},normalizedColorToArray:(y,g,C)=>{Cn.toArrayNormalized(h(y),g,C)},setDomain:f,get legend(){return xd(d,p,a)}}}e.create=t})(yc||(yc={}));var xc=new Set(["145","147","149","289","291","293","445","475","491","510","604","045","05L","07E","07Y","08U","09X","0AT","0BD","0H0","0HX","0LP","0MK","0NZ","0TS","0UB","0V4","0WK","0XY","0YT","10M","12E","14T","15L","16F","16G","16O","17T","18D","18O","18T","1AR","1BW","1CF","1FT","1GL","1GN","1JB","1LL","1NA","1S3","1S4","1SD","1X4","20S","20X","22O","22S","23V","24S","25E","26M","26O","26Q","26R","26V","26W","26Y","27C","2DG","2DR","2F8","2FG","2FL","2FP","2GL","2GS","2H5","2HA","2M4","2M5","2M8","2OS","2SI","2WP","2WS","32O","34V","38J","3BU","3CM","3DO","3DY","3FM","3GR","3HD","3J3","3J4","3LJ","3LR","3MF","3MG","3MK","3R3","3S6","3SA","3YW","40J","42D","44S","46D","46M","46Z","48Z","49A","49S","49T","49V","4AM","4CQ","4GC","4GL","4GP","4JA","4N2","4NN","4QY","4R1","4RS","4SG","4U0","4U1","4U2","4UZ","4V5","50A","51N","56N","57S","5DI","5GF","5GO","5II","5KQ","5KS","5KT","5KV","5L2","5L3","5LS","5LT","5MM","5N6","5QP","5RP","5SA","5SP","5TH","5TJ","5TK","5TM","61J","62I","64K","66O","6BG","6C2","6DM","6GB","6GP","6GR","6K3","6KH","6KL","6KS","6KU","6KW","6LA","6LS","6LW","6MJ","6MN","6PG","6PY","6PZ","6S2","6SA","6UD","6Y6","6YR","6ZC","73E","79J","7CV","7D1","7GP","7JZ","7K2","7K3","7NU","7SA","83Y","89Y","8B7","8B9","8EX","8GA","8GG","8GP","8I4","8LM","8LR","8OQ","8PK","8S0","8YV","95Z","96O","98U","9AM","9C1","9CD","9GP","9KJ","9MR","9OK","9PG","9QG","9QZ","9RN","9S7","9SG","9SJ","9SM","9SP","9T1","9T7","9VP","9WJ","9WN","9WZ","9YW","A0K","A1AIO","A1Q","A2G","A5C","A6P","AAL","AAO","ABC","ABD","ABE","ABF","ABL","AC1","ACG","ACR","ACX","ADA","ADG","ADR","AF1","AFD","AFL","AFO","AFP","AFR","AGC","AGH","AGL","AGR","AH2","AH8","AHG","AHM","AHR","AIG","ALL","ALX","AMG","AMN","AMU","AMV","ANA","AOG","AOS","AQA","ARA","ARB","ARE","ARI","ARW","ASC","ASG","ASO","AXP","AXR","AY9","AZC","B0D","B16","B1H","B1N","B2G","B4G","B6D","B7G","B8D","B9D","BBK","BBV","BCD","BCW","BDF","BDG","BDP","BDR","BDZ","BEM","BFN","BFP","BG6","BG8","BGC","BGL","BGN","BGP","BGS","BHG","BM3","BM7","BMA","BMX","BND","BNG","BNX","BO1","BOG","BQY","BRI","BS7","BTG","BTU","BW3","BWG","BXF","BXP","BXX","BXY","BZD","C3B","C3G","C3X","C4B","C4W","C4X","C5X","CAP","CBF","CBI","CBK","CDR","CE5","CE6","CE8","CEG","CEX","CEY","CEZ","CGF","CJB","CKB","CKP","CNP","CR1","CR6","CRA","CT3","CTO","CTR","CTT","D0N","D1M","D5E","D6G","DAF","DAG","DAN","DDA","DDB","DDL","DEG","DEL","DFR","DFX","DG0","DGC","DGD","DGM","DGO","DGS","DGU","DIG","DJB","DJE","DK4","DKX","DKZ","DL6","DLD","DLF","DLG","DMU","DNO","DO8","DOM","DP5","DPC","DQQ","DQR","DR2","DR3","DR4","DR5","DRI","DSR","DT6","DVC","DYM","E3M","E4P","E5G","EAG","EBG","EBQ","EEN","EEQ","EGA","EJT","EMP","EMZ","EPG","EQP","EQV","ERE","ERI","ETT","EUS","F1P","F1X","F55","F58","F6P","F8X","FBP","FCA","FCB","FCT","FDP","FDQ","FFC","FFX","FIF","FIX","FK9","FKD","FMF","FMO","FNG","FNY","FRU","FSA","FSI","FSM","FSR","FSW","FU4","FUB","FUC","FUD","FUF","FUL","FUY","FVQ","FX1","FYJ","G0S","G16","G1P","G20","G28","G2F","G3F","G3I","G4D","G4S","G6D","G6P","G6S","G7P","G8Z","GAA","GAC","GAD","GAF","GAL","GAT","GBH","GC1","GC4","GC9","GCB","GCD","GCN","GCO","GCS","GCT","GCU","GCV","GCW","GDA","GDL","GE1","GE3","GFP","GIV","GL0","GL1","GL2","GL4","GL5","GL6","GL7","GL9","GLA","GLB","GLC","GLD","GLF","GLG","GLO","GLP","GLS","GLT","GLW","GM0","GMB","GMH","GMT","GMZ","GN1","GN4","GNS","GNX","GP0","GP1","GP4","GPH","GPK","GPM","GPO","GPQ","GPU","GPV","GPW","GQ1","GRF","GRX","GS1","GS4","GS9","GSA","GSD","GTE","GTH","GTK","GTM","GTR","GU0","GU1","GU2","GU3","GU4","GU5","GU6","GU8","GU9","GUF","GUL","GUP","GUZ","GXL","GXV","GYE","GYG","GYP","GYU","GYV","GZL","H1M","H1S","H2P","H3S","H53","H6Q","H6Z","HBZ","HD4","HDL","HMS","HNV","HNW","HSG","HSH","HSJ","HSQ","HSR","HSU","HSX","HSY","HSZ","HTG","HTM","HVC","I57","IAB","IDC","IDF","IDG","IDR","IDS","IDT","IDU","IDX","IDY","IEM","IN1","IPT","ISD","ISL","ISX","IVG","IXD","J5B","JFZ","JHM","JLT","JRV","JS2","JSV","JV4","JVA","JVS","JZR","K5B","K99","KBA","KBG","KD5","KDA","KDB","KDD","KDE","KDF","KDM","KDN","KDO","KDR","KFN","KG1","KGM","KHP","KME","KO1","KO2","KOT","KQC","KTU","L1L","L6N","L6S","L6T","LAG","LAH","LAI","LAK","LAO","LAT","LB2","LBS","LBT","LCN","LDY","LEC","LER","LFC","LFR","LGC","LGU","LKA","LKS","LM2","LMO","LMT","LMU","LNV","LOG","LOX","LPK","LRH","LSM","LTG","LTM","LVO","LVZ","LXB","LXC","LXZ","LZ0","M1F","M1P","M2F","M3M","M3N","M55","M6D","M6P","M7B","M7P","M8C","MA1","MA2","MA3","MA8","MAB","MAF","MAG","MAL","MAN","MAT","MAV","MAW","MBE","MBF","MBG","MCU","MDA","MDP","MFA","MFB","MFU","MG5","MGA","MGC","MGL","MGS","MJJ","MLB","MLR","MMA","MMN","MN0","MNA","MQG","MQT","MRH","MRP","MSX","MTT","MUB","MUG","MUR","MVP","MXY","MXZ","MYG","N1L","N3U","N9S","NA1","NAA","NAG","NBG","NBX","NBY","NDG","NED","NFG","NG1","NG6","NGA","NGB","NGC","NGE","NGF","NGK","NGL","NGR","NGS","NGY","NGZ","NHF","NLC","NM6","NM9","NNG","NPF","NSQ","NT1","NTF","NTO","NTP","NXD","NYT","O1G","OAK","OEL","OI7","OPM","ORP","OSU","OTG","OTN","OTU","OX2","P53","P6P","P8E","PA1","PA5","PAV","PDX","PH5","PKM","PNA","PNG","PNJ","PNW","PPC","PRP","PSG","PSJ","PSV","PTQ","PUF","PZU","QDK","QIF","QKH","QPS","QV4","R1P","R1X","R2B","R2G","R5P","RAA","RAE","RAF","RAM","RAO","RAT","RB5","RBL","RCD","RDP","REL","RER","RF5","RG1","RGG","RHA","RHC","RI2","RIB","RIP","RM4","RNS","RNT","ROB","ROR","RP3","RP5","RP6","RPA","RR7","RRJ","RRY","RST","RTG","RTV","RUB","RUG","RUU","RV7","RVG","RVM","RWI","RY7","RZM","S6P","S7P","S81","SA0","SCG","SCR","SDD","SDY","SEJ","SF6","SF9","SFJ","SFU","SG4","SG5","SG6","SG7","SGA","SGC","SGD","SGN","SGS","SHB","SHD","SHG","SI3","SIA","SID","SIO","SIZ","SLB","SLM","SLT","SMD","SN5","SNG","SOE","SOG","SOL","SOR","SR1","SSG","SSH","STW","STZ","SUC","SUP","SUS","SWE","SZZ","T68","T6D","T6P","T6T","TA6","TAG","TCB","TCG","TDG","TEU","TF0","TFU","TGA","TGK","TGR","TGY","TH1","TM5","TM6","TM9","TMR","TMX","TNX","TOA","TOC","TQY","TRE","TRV","TS8","TT7","TTV","TTZ","TU4","TUG","TUJ","TUP","TUR","TVD","TVG","TVM","TVS","TVV","TVY","TW7","TWA","TWD","TWG","TWJ","TWY","TXB","TY6","TYV","U1Y","U2A","U2D","U63","U8V","U97","U9A","U9D","U9G","U9J","U9M","UAP","UBH","UBO","UCD","UDC","UEA","V3M","V3P","V71","VDF","VG1","VJ1","VJ4","VKN","VTB","W9T","WIA","WOO","WUN","WZ1","WZ2","WZ4","X0X","X1P","X1X","X2F","X2Y","X34","X4S","X5S","X6X","X6Y","XBP","XDP","XDX","XGP","XIL","XKJ","XLF","XLS","XMM","XS2","XUL","XXM","XXR","XXX","XY6","XY9","XYB","XYF","XYL","XYP","XYS","XYT","XYZ","YDR","YIO","YJM","YKR","YO5","YX0","YX1","YYB","YYD","YYH","YYJ","YYK","YYM","YYQ","YYR","YZ0","YZT","Z0F","Z15","Z16","Z2D","Z2T","Z3K","Z3L","Z3Q","Z3U","Z4K","Z4R","Z4S","Z4U","Z4V","Z4W","Z4Y","Z57","Z5J","Z5L","Z61","Z6G","Z6H","Z6J","Z6W","Z8H","Z8T","Z9D","Z9E","Z9H","Z9K","Z9L","Z9M","Z9N","Z9W","ZB0","ZB1","ZB2","ZB3","ZCD","ZCZ","ZD0","ZDC","ZDM","ZDO","ZEE","ZEL","ZGE","ZMR","UMQ","SQD"]);var Zt=function(e){return e[e.FilledSphere=0]="FilledSphere",e[e.FilledCube=1]="FilledCube",e[e.CrossedCube=2]="CrossedCube",e[e.DividedDiamond=3]="DividedDiamond",e[e.FilledCone=4]="FilledCone",e[e.DevidedCone=5]="DevidedCone",e[e.FlatBox=6]="FlatBox",e[e.FilledStar=7]="FilledStar",e[e.FilledDiamond=8]="FilledDiamond",e[e.FlatDiamond=9]="FlatDiamond",e[e.FlatHexagon=10]="FlatHexagon",e[e.Pentagon=11]="Pentagon",e[e.DiamondPrism=12]="DiamondPrism",e[e.PentagonalPrism=13]="PentagonalPrism",e[e.HexagonalPrism=14]="HexagonalPrism",e[e.HeptagonalPrism=15]="HeptagonalPrism",e}(Zt||{}),qe={Blue:37052,Green:42577,Yellow:16765952,Orange:16021792,Pink:16162465,Purple:10830745,LightBlue:9424105,Brown:10582605,Red:15539236,Secondary:15854817},De=function(e){return e[e.Hexose=0]="Hexose",e[e.HexNAc=1]="HexNAc",e[e.Hexosamine=2]="Hexosamine",e[e.Hexuronate=3]="Hexuronate",e[e.Deoxyhexose=4]="Deoxyhexose",e[e.DeoxyhexNAc=5]="DeoxyhexNAc",e[e.DiDeoxyhexose=6]="DiDeoxyhexose",e[e.Pentose=7]="Pentose",e[e.Deoxynonulosonate=8]="Deoxynonulosonate",e[e.DiDeoxynonulosonate=9]="DiDeoxynonulosonate",e[e.Unknown=10]="Unknown",e[e.Assigned=11]="Assigned",e}(De||{}),bI={[De.Hexose]:"Hexose",[De.HexNAc]:"HexNAc",[De.Hexosamine]:"Hexosamine",[De.Hexuronate]:"Hexuronate",[De.Deoxyhexose]:"Deoxyhexose",[De.DeoxyhexNAc]:"DeoxyhexNAc",[De.DiDeoxyhexose]:"Di-deoxyhexose",[De.Pentose]:"Pentose",[De.Deoxynonulosonate]:"Deoxynonulosonate",[De.DiDeoxynonulosonate]:"Di-deoxynonulosonate",[De.Unknown]:"Unknown",[De.Assigned]:"Assigned"};var _2={[De.Hexose]:Zt.FilledSphere,[De.HexNAc]:Zt.FilledCube,[De.Hexosamine]:Zt.CrossedCube,[De.Hexuronate]:Zt.DividedDiamond,[De.Deoxyhexose]:Zt.FilledCone,[De.DeoxyhexNAc]:Zt.DevidedCone,[De.DiDeoxyhexose]:Zt.FlatBox,[De.Pentose]:Zt.FilledStar,[De.Deoxynonulosonate]:Zt.FilledDiamond,[De.DiDeoxynonulosonate]:Zt.FlatDiamond,[De.Unknown]:Zt.FlatHexagon,[De.Assigned]:Zt.Pentagon};function CI(e,t){return e===De.Unknown?t===4?Zt.DiamondPrism:t===5?Zt.PentagonalPrism:t===6?Zt.HexagonalPrism:t===7?Zt.HeptagonalPrism:Zt.FlatHexagon:_2[e]}var Ps={abbr:"Unk",name:"Unknown",color:qe.Secondary,type:De.Unknown},Fi=[{abbr:"Glc",name:"Glucose",color:qe.Blue,type:De.Hexose},{abbr:"Man",name:"Mannose",color:qe.Green,type:De.Hexose},{abbr:"Gal",name:"Galactose",color:qe.Yellow,type:De.Hexose},{abbr:"Gul",name:"Gulose",color:qe.Orange,type:De.Hexose},{abbr:"Alt",name:"Altrose",color:qe.Pink,type:De.Hexose},{abbr:"All",name:"Allose",color:qe.Purple,type:De.Hexose},{abbr:"Tal",name:"Talose",color:qe.LightBlue,type:De.Hexose},{abbr:"Ido",name:"Idose",color:qe.Brown,type:De.Hexose},{abbr:"GlcNAc",name:"N-Acetyl Glucosamine",color:qe.Blue,type:De.HexNAc},{abbr:"ManNAc",name:"N-Acetyl Mannosamine",color:qe.Green,type:De.HexNAc},{abbr:"GalNAc",name:"N-Acetyl Galactosamine",color:qe.Yellow,type:De.HexNAc},{abbr:"GulNAc",name:"N-Acetyl Gulosamine",color:qe.Orange,type:De.HexNAc},{abbr:"AltNAc",name:"N-Acetyl Altrosamine",color:qe.Pink,type:De.HexNAc},{abbr:"AllNAc",name:"N-Acetyl Allosamine",color:qe.Purple,type:De.HexNAc},{abbr:"TalNAc",name:"N-Acetyl Talosamine",color:qe.LightBlue,type:De.HexNAc},{abbr:"IdoNAc",name:"N-Acetyl Idosamine",color:qe.Brown,type:De.HexNAc},{abbr:"GlcN",name:"Glucosamine",color:qe.Blue,type:De.Hexosamine},{abbr:"ManN",name:"Mannosamine",color:qe.Green,type:De.Hexosamine},{abbr:"GalN",name:"Galactosamine",color:qe.Yellow,type:De.Hexosamine},{abbr:"GulN",name:"Gulosamine",color:qe.Orange,type:De.Hexosamine},{abbr:"AltN",name:"Altrosamine",color:qe.Pink,type:De.Hexosamine},{abbr:"AllN",name:"Allosamine",color:qe.Purple,type:De.Hexosamine},{abbr:"TalN",name:"Talosamine",color:qe.LightBlue,type:De.Hexosamine},{abbr:"IdoN",name:"Idosamine",color:qe.Brown,type:De.Hexosamine},{abbr:"GlcA",name:"Glucuronic Acid",color:qe.Blue,type:De.Hexuronate},{abbr:"ManA",name:"Mannuronic Acid",color:qe.Green,type:De.Hexuronate},{abbr:"GalA",name:"Galacturonic Acid",color:qe.Yellow,type:De.Hexuronate},{abbr:"GulA",name:"Guluronic Acid",color:qe.Orange,type:De.Hexuronate},{abbr:"AltA",name:"Altruronic Acid",color:qe.Pink,type:De.Hexuronate},{abbr:"AllA",name:"Alluronic Acid",color:qe.Purple,type:De.Hexuronate},{abbr:"TalA",name:"Taluronic Acid",color:qe.LightBlue,type:De.Hexuronate},{abbr:"IdoA",name:"Iduronic Acid",color:qe.Brown,type:De.Hexuronate},{abbr:"Qui",name:"Quinovose",color:qe.Blue,type:De.Deoxyhexose},{abbr:"Rha",name:"Rhamnose",color:qe.Green,type:De.Deoxyhexose},{abbr:"6dGul",name:"6-Deoxy Gulose",color:qe.Orange,type:De.Deoxyhexose},{abbr:"6dAlt",name:"6-Deoxy Altrose",color:qe.Pink,type:De.Deoxyhexose},{abbr:"6dTal",name:"6-Deoxy Talose",color:qe.LightBlue,type:De.Deoxyhexose},{abbr:"Fuc",name:"Fucose",color:qe.Red,type:De.Deoxyhexose},{abbr:"QuiNAc",name:"N-Acetyl Quinovosamine",color:qe.Blue,type:De.DeoxyhexNAc},{abbr:"RhaNAc",name:"N-Acetyl Rhamnosamine",color:qe.Green,type:De.DeoxyhexNAc},{abbr:"6dAltNAc",name:"N-Acetyl 6-Deoxy Altrosamine",color:qe.Pink,type:De.DeoxyhexNAc},{abbr:"6dTalNAc",name:"N-Acetyl 6-Deoxy Talosamine",color:qe.LightBlue,type:De.DeoxyhexNAc},{abbr:"FucNAc",name:"N-Acetyl Fucosamine",color:qe.Red,type:De.DeoxyhexNAc},{abbr:"Oli",name:"Olivose",color:qe.Blue,type:De.DiDeoxyhexose},{abbr:"Tyv",name:"Tyvelose",color:qe.Green,type:De.DiDeoxyhexose},{abbr:"Abe",name:"Abequose",color:qe.Orange,type:De.DiDeoxyhexose},{abbr:"Par",name:"Paratose",color:qe.Pink,type:De.DiDeoxyhexose},{abbr:"Dig",name:"Digitoxose",color:qe.Purple,type:De.DiDeoxyhexose},{abbr:"Col",name:"Colitose",color:qe.LightBlue,type:De.DiDeoxyhexose},{abbr:"Ara",name:"Arabinose",color:qe.Green,type:De.Pentose},{abbr:"Lyx",name:"Lyxose",color:qe.Yellow,type:De.Pentose},{abbr:"Xyl",name:"Xylose",color:qe.Orange,type:De.Pentose},{abbr:"Rib",name:"Ribose",color:qe.Pink,type:De.Pentose},{abbr:"Kdn",name:"Keto-Deoxy Nonulonic Acid",color:qe.Green,type:De.Deoxynonulosonate},{abbr:"Neu5Ac",name:"N-Acetyl Neuraminic Acid",color:qe.Purple,type:De.Deoxynonulosonate},{abbr:"Neu5Gc",name:"N-Glycolyl Neuraminic Acid",color:qe.LightBlue,type:De.Deoxynonulosonate},{abbr:"Neu",name:"Neuraminic Acid",color:qe.Brown,type:De.Deoxynonulosonate},{abbr:"Sia",name:"Sialic acid",color:qe.Red,type:De.Deoxynonulosonate},{abbr:"Pse",name:"Pseudaminic Acid",color:qe.Green,type:De.DiDeoxynonulosonate},{abbr:"Leg",name:"Legionaminic Acid",color:qe.Yellow,type:De.DiDeoxynonulosonate},{abbr:"Aci",name:"Acinetaminic Acid",color:qe.Pink,type:De.DiDeoxynonulosonate},{abbr:"4eLeg",name:"4-Epilegionaminic Acid",color:qe.LightBlue,type:De.DiDeoxynonulosonate},{abbr:"Bac",name:"Bacillosamine",color:qe.Blue,type:De.Unknown},{abbr:"LDmanHep",name:"L-Glycero-D-Manno Heptose",color:qe.Green,type:De.Unknown},{abbr:"Kdo",name:"Keto-Deoxy Octulonic Acid",color:qe.Yellow,type:De.Unknown},{abbr:"Dha",name:"3-Deoxy Lyxo-Heptulosaric Acid",color:qe.Orange,type:De.Unknown},{abbr:"DDmanHep",name:"D-Glycero-D-Manno-Heptose",color:qe.Pink,type:De.Unknown},{abbr:"MurNAc",name:"N-Acetyl Muramic Acid",color:qe.Purple,type:De.Unknown},{abbr:"MurNGc",name:"N-Glycolyl Muramic Acid",color:qe.LightBlue,type:De.Unknown},{abbr:"Mur",name:"Muramic Acid",color:qe.Brown,type:De.Unknown},{abbr:"Api",name:"Apicose",color:qe.Green,type:De.Assigned},{abbr:"Fru",name:"Fructose",color:qe.Green,type:De.Assigned},{abbr:"Tag",name:"Tagatose",color:qe.Yellow,type:De.Assigned},{abbr:"Sor",name:"Sorbose",color:qe.Orange,type:De.Assigned},{abbr:"Psi",name:"Psicose",color:qe.Pink,type:De.Assigned}],Ad=function(){let e=new Map;for(let t=0,n=Fi.length;t{e.has(t)||e.set(t,Ps)}),e}(),y2=function(){let e=new Map;for(let t=0,n=Fi.length;t{e.has(t)||e.set(t,Ps)}),e}();function II(e){Dn=e==="default"?Sd:y2}var Dn=Sd;var hn;(function(e){function t(d){return Array.from(d.values())}e.toArray=t;function n(d,p){if(d===p)return!0;if(d.size0;d.size[e[0],yr(e[1])]));function UI(e){return Id.has(e)?Id.get(e):yr("H")}var wd={0:{trace:new Set,directionFrom:new Set,directionTo:new Set,backboneStart:new Set,backboneEnd:new Set,coarseBackbone:new Set},1:{trace:new Set(["CA"]),directionFrom:new Set(["C"]),directionTo:new Set(["O","OC1","O1","OX1","OXT","OT1"]),backboneStart:new Set(["N"]),backboneEnd:new Set(["C"]),coarseBackbone:new Set(["CA","BB","CA1"])},2:{trace:new Set(["CA"]),directionFrom:new Set(["C"]),directionTo:new Set(["O"]),backboneStart:new Set(["N"]),backboneEnd:new Set(["CD"]),coarseBackbone:new Set(["CA"])},3:{trace:new Set(["CA"]),directionFrom:new Set(["C"]),directionTo:new Set(["O"]),backboneStart:new Set(["N"]),backboneEnd:new Set(["CG"]),coarseBackbone:new Set(["CA"])},4:{trace:new Set(["O3'","O3*"]),directionFrom:new Set(["C4'","C4*"]),directionTo:new Set(["C3'","C3*"]),backboneStart:new Set(["P"]),backboneEnd:new Set(["O3'","O3*"]),coarseBackbone:new Set(["P"])},5:{trace:new Set(["O3'","O3*"]),directionFrom:new Set(["C3'","C3*"]),directionTo:new Set(["C1'","C1*"]),backboneStart:new Set(["P"]),backboneEnd:new Set(["O3'","O3*"]),coarseBackbone:new Set(["P"])},6:{trace:new Set(["N4'","N4*"]),directionFrom:new Set(["N4'","N4*"]),directionTo:new Set(["C7'","C7*"]),backboneStart:new Set(["N1'","N1*"]),backboneEnd:new Set(["C'","C*"]),coarseBackbone:new Set(["P"])}},RI=new Set(["CA","C","N","O","O1","O2","OC1","OC2","OT1","OT2","OX1","OXT","H","H1","H2","H3","HA","HN","HXT","BB"]),TI=new Set(["P","OP1","OP2","HOP2","HOP3","O2'","O3'","O4'","O5'","C1'","C2'","C3'","C4'","C5'","H1'","H2'","H2''","HO2'","H3'","H4'","H5'","H5''","HO3'","HO5'","O2*","O3*","O4*","O5*","C1*","C2*","C3*","C4*","C5*"]),vd=new Set(["d-peptide linking","d-peptide nh3 amino terminus","d-peptide cooh carboxy terminus","d-gamma-peptide, c-delta linking","d-beta-peptide, c-gamma linking"]),Pd=new Set(["l-peptide linking","l-peptide nh3 amino terminus","l-peptide cooh carboxy terminus","l-gamma-peptide, c-delta linking","l-beta-peptide, c-gamma linking"]),A2=new Set(["d-gamma-peptide, c-delta linking","l-gamma-peptide, c-delta linking"]),b2=new Set(["d-beta-peptide, c-gamma linking","l-beta-peptide, c-gamma linking"]),C2=new Set(["d-peptide nh3 amino terminus","d-peptide cooh carboxy terminus","l-peptide nh3 amino terminus","l-peptide cooh carboxy terminus"]),Bd=new Set(["peptide linking","peptide-like"]),S2=hn.unionMany(vd,Pd,Bd),Ed=new Set(["dna linking","l-dna linking","dna oh 5 prime terminus","dna oh 3 prime terminus"]),Dd=new Set(["rna linking","l-rna linking","rna oh 5 prime terminus","rna oh 3 prime terminus"]),Md=hn.unionMany(new Set(["d-saccharide, beta linking","l-saccharide, beta linking","d-saccharide, alpha linking","l-saccharide, alpha linking","l-saccharide","d-saccharide","saccharide"]),new Set(["d-saccharide 1,4 and 1,4 linking","l-saccharide 1,4 and 1,4 linking","d-saccharide 1,4 and 1,6 linking","l-saccharide 1,4 and 1,6 linking"])),I2=new Set(["non-polymer","other"]),w2=new Set(["ion"]),v2=new Set(["lipid"]),Bs=new Set(["SOL","WAT","HOH","H2O","W","DOD","D3O","TIP","TIP3","TIP4","SPC"]),Nd=new Set(["HIS","ARG","LYS","ILE","PHE","LEU","TRP","ALA","MET","PRO","CYS","ASN","VAL","GLY","SER","GLN","TYR","ASP","GLU","THR","SEC","PYL","UNK","MSE","SEP","TPO","PTR","PCA","HYP","HSD","HSE","HSP","LSN","ASPP","GLUP","HID","HIE","HIP","LYN","ASH","GLH"]),kd=new Set(["DAL","DAR","DSG","DAS","DCY","DGL","DGN","DHI","DIL","DLE","DLY","MED","DPN","DPR","DSN","DTH","DTR","DTY","DVA","DNE"]),xo=hn.unionMany(Nd,kd),FI=new Set(["NME","ACE","NH2","FOR","FMT"]),Es=new Set(["A","C","T","G","I","U","N"]),Ds=new Set(["DA","DC","DT","DG","DI","DU","DN"]),Cc=new Set(["APN","CPN","TPN","GPN"]),P2=new Set(["A","G","I","DA","DG","DI","APN","GPN"]),B2=new Set(["C","T","U","DC","DT","DU","CPN","TPN"]),Sc=hn.unionMany(Es,Ds,Cc),OI=e=>P2.has(e.toUpperCase()),LI=e=>B2.has(e.toUpperCase()),Ms=hn.unionMany(xo,Sc);function Oi(e,t){return t=t.toUpperCase(),Cc.has(t)?8:S2.has(e)?5:Dd.has(e)?6:Ed.has(e)?7:Md.has(e)?9:Bs.has(t)?2:bc.has(t)?3:Ac.has(t)?4:I2.has(e)?Dn.has(t)?9:xo.has(t)?5:Es.has(t)?6:Ds.has(t)?7:1:0}function Ud(e,t){return t===5?A2.has(e)?2:b2.has(e)?3:C2.has(e)?0:1:t===6?4:t===7?5:t===8?6:0}function Ic(e){return e=e.toUpperCase(),xo.has(e)?"peptide linking":Es.has(e)?"rna linking":Ds.has(e)?"dna linking":Dn.has(e)?"saccharide":"other"}function Rd(e){return{formula:"",formula_weight:0,id:e,name:e,mon_nstd_flag:Ms.has(e)?"y":"n",pdbx_synonyms:[],type:Ic(e)}}function Td(e){return e=e.toUpperCase(),Bs.has(e)?"water":Ms.has(e)?"polymer":Dn.has(e)?"branched":"non-polymer"}function Fd(e,t){return e=e.toUpperCase(),Pd.has(t)?"polypeptide(L)":vd.has(t)?"polypeptide(D)":Dd.has(t)?"polyribonucleotide":Ed.has(t)?"polydeoxyribonucleotide":Md.has(t)||Dn.has(e)?"oligosaccharide":Cc.has(e)?"peptide nucleic acid":Nd.has(e)?"polypeptide(L)":kd.has(e)?"polypeptide(D)":Es.has(e)?"polyribonucleotide":Ds.has(e)?"polydeoxyribonucleotide":w2.has(t)||bc.has(e)?"ion":v2.has(t)||Ac.has(e)?"lipid":Bd.has(t)?"peptide-like":"other"}function Li(e){return wc(e)||vc(e)}function wc(e){return e===7||e===6||e===8}function vc(e){return e===5}var kt;(function(e){e.is=fn.has,e.create=fn.create,e.SecondaryStructureMmcif={helx_lh_27_p:1058,helx_lh_3t_p:2082,helx_lh_al_p:4130,helx_lh_a_n:524321,helx_lh_b_n:1048609,helx_lh_ga_p:8226,helx_lh_n:33,helx_lh_om_p:16418,helx_lh_ot_n:131105,helx_lh_ot_p:546,helx_lh_p:34,helx_lh_pi_p:32802,helx_lh_pp_p:65570,helx_lh_z_n:262177,helx_n:1,helx_ot_n:1,helx_ot_p:2,helx_p:2,helx_rh_27_p:1090,helx_rh_3t_p:2114,helx_rh_al_p:4162,helx_rh_a_n:524353,helx_rh_b_n:1048641,helx_rh_ga_p:8258,helx_rh_n:65,helx_rh_om_p:16450,helx_rh_ot_n:131137,helx_rh_ot_p:578,helx_rh_p:66,helx_rh_pi_p:32834,helx_rh_pp_p:65602,helx_rh_z_n:262209,strn:4194308,turn_ot_p:33554448,turn_p:16,turn_ty1p_p:67109136,turn_ty1_p:67109008,turn_ty2p_p:134218e3,turn_ty2_p:134217872,turn_ty3p_p:268435728,turn_ty3_p:268435600,bend:8,other:0},e.SecondaryStructurePdb={1:4162,2:16450,3:32834,4:8258,5:2114,6:4130,7:16418,8:8226,9:1026,10:65538},e.SecondaryStructureStride={H:4098,G:2050,I:32770,E:8388612,B:4194308,T:16,C:536870912},e.SecondaryStructureDssp={H:4098,B:4194308,E:8388612,G:2050,I:32770,T:16,S:8}})(kt||(kt={}));var $t;(function(e){e.is=fn.has;function t(a){return fn.create(a)}e.create=t;function n(a){return(a&1)!==0}e.isCovalent=n;function r(a){return a===Math.pow(2,6)-1}e.isAll=r,e.Names={covalent:1,"metal-coordination":2,"hydrogen-bond":4,disulfide:8,aromatic:16,computed:32};function i(a){return a in e.Names}e.isName=i;function o(a){switch(a){case"covalent":return 1;case"metal-coordination":return 2;case"hydrogen-bond":return 4;case"disulfide":return 8;case"aromatic":return 16;case"computed":return 32}}e.fromName=o;function s(a){let c=0;for(let u=0,l=a.length;u=a?a:o}findAtom(t){let n=this.findResidue(t);return n<0?-1:typeof t.label_alt_id>"u"?Pc(this.residueOffsets[n],this.residueOffsets[n+1],this.map.label_atom_id,t.label_atom_id):Bc(this.residueOffsets[n],this.residueOffsets[n+1],this.map.label_atom_id,this.map.label_alt_id,t.label_atom_id,t.label_alt_id)}findAtomAuth(t){let n=this.findResidueAuth(t);return n<0?-1:typeof t.label_alt_id>"u"?Pc(this.residueOffsets[n],this.residueOffsets[n+1],this.map.auth_atom_id,t.auth_atom_id):Bc(this.residueOffsets[n],this.residueOffsets[n+1],this.map.auth_atom_id,this.map.label_alt_id,t.auth_atom_id,t.label_alt_id)}findAtomOnResidue(t,n,r){return typeof r>"u"?Pc(this.residueOffsets[t],this.residueOffsets[t+1],this.map.label_atom_id,n):Bc(this.residueOffsets[t],this.residueOffsets[t+1],this.map.label_atom_id,this.map.label_alt_id,n,r)}findAtomsOnResidue(t,n){return R2(this.residueOffsets[t],this.residueOffsets[t+1],this.map.label_atom_id,n)}findElementOnResidue(t,n){return T2(this.residueOffsets[t],this.residueOffsets[t+1],this.map.type_symbol,n)}constructor(t){this.map=t,this.entityIndex=t.entities.getEntityIndex,this.residueOffsets=this.map.segments.residueAtomSegments.offsets}};function Pc(e,t,n,r){for(let i=e;i{let P=Math.min(C-E,S);return c(v,P,I),E+=P,P},(S,v)=>S.update({message:"Parsing...",current:v.position,max:v.length})),I})}e.readLinesAsync=m;function f(g){let C=e(g),_=Mn.create(C.data,Math.max(g.length/80,2));for(;o(C);)Mn.add(_,C.tokenStart,C.tokenEnd);return _}e.readAllLines=f;function d(g,C,_){let b=0;for(let I=0;I(d(S,E,I),S.positionE.update({message:"Parsing...",current:S.position,max:S.length})),I})}e.readAllLinesAsync=p;function h(g){for(;g.position=I;)S=b.charCodeAt(--E);return g.tokenStart=I,g.tokenEnd=E+1,g.position=_,g}e.trim=y})(ks||(ks={}));function t8(e,t,n){let r=t,i=n-1,o=e.charCodeAt(r);for(;(o===9||o===32)&&r<=i;)o=e.charCodeAt(++r);for(o=e.charCodeAt(i);(o===9||o===32)&&i>=r;)o=e.charCodeAt(--i);return e.substring(r,i+1)}var Mn;(function(e){function t(s){let a=new Uint32Array(1.61*s.indices.length|0);a.set(s.indices),s.indices=a,s.indicesLenMinus2=a.length-2|0}function n(s,a,c){let u=s;u.offset>u.indicesLenMinus2&&t(u),u.indices[u.offset++]=a,u.indices[u.offset++]=c,s.count++}e.add=n;function r(s,a){n(s,a.tokenStart,a.tokenEnd)}e.addToken=r;function i(s,a,c){s.indices[s.offset++]=a,s.indices[s.offset++]=c,s.count++}e.addUnchecked=i;function o(s,a){return a=Math.max(10,a),{data:s,indicesLenMinus2:a-2|0,count:0,offset:0,indices:new Uint32Array(a)}}e.create=o})(Mn||(Mn={}));var xr;(function(e){function t(o,s=-1){return new r(o,s)}e.error=t;function n(o,s=[]){return new i(o,s)}e.success=n;class r{toString(){return this.line>=0?`[Line ${this.line}] ${this.message}`:this.message}constructor(s,a){this.message=s,this.line=a,this.isError=!0}}e.Error=r;class i{constructor(s,a){this.result=s,this.warnings=a,this.isError=!1}}e.Success=i})(xr||(xr={}));function Gd(e){for(;e.position=e.length){e.tokenType=6;return}e.tokenStart=e.position,e.tokenEnd=e.position,e.isEscaped=!1;let n=e.data.charCodeAt(e.position);switch(n){case 35:G2(e),e.tokenType=5;break;case 39:if(Vd(e)){O2(e),e.tokenType=3;break}case 34:F2(e,n),e.tokenType=3;break;case 59:t===10||t===13?L2(e):Gd(e),e.tokenType=3;break;default:e.isImportGet?q2(e):Gd(e),e.isEscaped?e.tokenType=3:e.data.charCodeAt(e.tokenStart)===95?(e.inSaveFrame&&j2(e)&&(e.isImportGet=!0),e.tokenType=4):e.tokenEnd-e.tokenStart>=5&&e.data.charCodeAt(e.tokenStart+4)===95?z2(e)?e.tokenType=0:V2(e)?e.tokenType=1:K2(e)?e.tokenType=2:e.tokenType=3:e.tokenType=3;break}}function qr(e){for(Hd(e);e.tokenType===5;)Hd(e)}function W2(e,t){return{data:e,length:e.length,position:0,tokenStart:0,tokenEnd:0,tokenType:6,lineNumber:1,isEscaped:!1,isImportGet:!1,inSaveFrame:!1,runtimeCtx:t}}function Us(){return{categoryNames:[],categoryData:Object.create(null)}}function Nc(e,t){let n=Object.create(null);for(let r of e){let i=t[r];n[r]=Mi(i.name,i.rowCount,i.fieldNames,i.fields)}return n}function zd(e,t,n){return lo(e.categoryNames,Nc(e.categoryNames,e.categoryData),t,n)}function X2(e,t){return lo(e.categoryNames,Nc(e.categoryNames,e.categoryData),t)}function Mc(e,t,n,r,i){if(t in e.categoryData){let o=e.categoryData[t];o.fieldNames.push(...r),Object.assign(o.fields,i)}else e.categoryData[t]={name:t,rowCount:n,fieldNames:r,fields:i},e.categoryNames.push(t)}function $2(e,t){let n=e.tokenStart,r=Kd(e),i=jd(e,r),o=Object.create(null),s=[],a=!0;for(;a;){if(e.tokenType!==4||!Y2(e,n,r)){a=!1;break}let c=Dc(e).substring(i.length+1);if(qr(e),e.tokenType!==3)return{hasError:!0,errorLine:e.lineNumber,errorMessage:"Expected value."};o[c]=ci.ofTokens({data:e.data,indices:[e.tokenStart,e.tokenEnd],count:1}),s[s.length]=c,qr(e)}return Mc(t,i.substr(1),1,s,o),{hasError:!1,errorLine:0,errorMessage:""}}function Q2(e,t){let{tokenizer:n,tokens:r,fieldCount:i}=t,o=t.tokenCount,s=0;for(;n.tokenType===3&&s0&&n.push(zd(o,i,s)),i=e.substring(r.tokenStart+5,r.tokenEnd),o=Us(),s=[],qr(r)}else if(l===1){if(r.tokenEnd-r.tokenStart===5)a.categoryNames.length>0&&(s[s.length]=X2(a,u)),r.inSaveFrame=!1;else{if(r.inSaveFrame)return Gi(r.lineNumber,"Save frames cannot be nested.");r.inSaveFrame=!0,u=e.substring(r.tokenStart+5,r.tokenEnd),a=Us()}qr(r)}else if(l===2){let m=yield e_(r,r.inSaveFrame?a:o);if(m.hasError)return Gi(m.errorLine,m.errorMessage)}else if(l===4){let m=$2(r,r.inSaveFrame?a:o);if(m.hasError)return Gi(m.errorLine,m.errorMessage)}else return console.log(r.tokenType,ks.getTokenString(r)),Gi(r.lineNumber,"Unexpected token. Expected data_, loop_, or data name.")}return r.inSaveFrame?Gi(r.lineNumber,`Unfinished save frame (${c.header}).`):((o.categoryNames.length>0||s.length>0)&&n.push(zd(o,i,s)),t_(ls(n)))})}function kc(e){return wt.create("Parse CIF",t=>Ve(this,null,function*(){return yield n_(e,t)}))}function Yd(e){let t=e.mask?Ri(e.mask):void 0,n=Ri(e.data),r=Ut.isTypedArray(n),i=r?t?u=>t[u]===0?""+n[u]:"":u=>""+n[u]:t?u=>t[u]===0?n[u]:"":u=>n[u],o=r?u=>n[u]:u=>{let l=n[u];return Pn(l,0,l.length)},s=r?u=>n[u]:u=>{let l=n[u];return Ln(l,0,l.length)},a=t?u=>t[u]:u=>0,c=n.length;return{__array:n,binaryEncoding:e.data.encoding,isDefined:!0,rowCount:c,str:i,int:o,float:s,valueKind:a,areValuesEqual:(u,l)=>n[u]===n[l],toStringArray:u=>Ut.createAndFillArray(c,i,u),toIntArray:r?u=>Ut.typedArrayWindow(n,u):u=>Ut.createAndFillArray(c,o,u),toFloatArray:r?u=>Ut.typedArrayWindow(n,u):u=>Ut.createAndFillArray(c,s,u)}}function Zd(e){return Ts({buffer:e,offset:0,dataView:new DataView(e.buffer)})}function Uc(e,t){let n={};for(let r=0;rt[n])return!1;return!0}function i_(e){let t=Object.create(null),n=Object.create(null);for(let r of e.columns)t[r.name]=r;return{rowCount:e.rowCount,name:e.name.substr(1),fieldNames:e.columns.map(r=>r.name),getField(r){let i=t[r];if(i)return n[r]||(n[r]=Yd(i)),n[r]}}}function Fc(e){return wt.create("Parse BinaryCIF",t=>Ve(this,null,function*(){let n=[0,3];try{let r=Zd(e);if(!r_(n,r.version.match(/(\d)\.(\d)\.\d/).slice(1).map(o=>+o)))return xr.error(`Unsupported format version. Current ${r.version}, required ${n.join(".")}.`);let i=ls(r.dataBlocks.map(o=>{let s=Object.create(null);for(let a of o.categories)s[a.name.substr(1)]=i_(a);return lo(o.categories.map(a=>a.name.substr(1)),s,o.header)}));return xr.success(i)}catch(r){return xr.error(""+r)}}))}var li=me.Schema,Bt=li.str,o_=li.float,Wd=li.List,Jn=li.lstr,Sn=li.Aliased,bo=li.int,Hi=li.coord,Xd={chem_comp:{formula:Bt,formula_weight:o_,id:Bt,mon_nstd_parent_comp_id:Wd(",",e=>e),name:Bt,one_letter_code:Bt,three_letter_code:Bt,type:Sn(Jn),pdbx_synonyms:Wd(";",e=>e),pdbx_type:Bt,pdbx_ambiguous_flag:Bt,pdbx_replaced_by:Bt,pdbx_replaces:Bt,pdbx_formal_charge:bo,pdbx_model_coordinates_details:Bt,pdbx_model_coordinates_db_code:Bt,pdbx_ideal_coordinates_details:Bt,pdbx_ideal_coordinates_missing_flag:Sn(Jn),pdbx_model_coordinates_missing_flag:Sn(Jn),pdbx_initial_date:Bt,pdbx_modified_date:Bt,pdbx_release_status:Sn(Bt),pdbx_processing_site:Sn(Bt)},chem_comp_atom:{alt_atom_id:Bt,atom_id:Bt,charge:bo,model_Cartn_x:Hi,model_Cartn_y:Hi,model_Cartn_z:Hi,comp_id:Bt,type_symbol:Bt,pdbx_align:bo,pdbx_ordinal:bo,pdbx_model_Cartn_x_ideal:Hi,pdbx_model_Cartn_y_ideal:Hi,pdbx_model_Cartn_z_ideal:Hi,pdbx_stereo_config:Sn(Jn),pdbx_aromatic_flag:Sn(Jn),pdbx_leaving_atom_flag:Sn(Jn)},chem_comp_bond:{atom_id_1:Bt,atom_id_2:Bt,comp_id:Bt,value_order:Sn(Jn),pdbx_ordinal:bo,pdbx_stereo_config:Sn(Jn),pdbx_aromatic_flag:Sn(Jn)},pdbx_chem_comp_descriptor:{comp_id:Bt,descriptor:Bt,type:Sn(Jn),program:Bt,program_version:Bt},pdbx_chem_comp_identifier:{comp_id:Bt,identifier:Bt,type:Sn(Bt),program:Bt,program_version:Bt}};var Co=me.Schema,Qe=Co.str,s_=Co.float,Ar=Co.lstr,an=Co.Aliased,Nn=Co.int,$d={pdbx_reference_molecule:{prd_id:Qe,formula_weight:s_,formula:Qe,type:an(Ar),type_evidence_code:Qe,class:an(Ar),class_evidence_code:Qe,name:Qe,represent_as:an(Ar),chem_comp_id:Qe,compound_details:Qe,description:Qe,representative_PDB_id_code:Qe,release_status:an(Ar),replaces:Qe,replaced_by:Qe},pdbx_reference_entity_list:{prd_id:Qe,ref_entity_id:Qe,type:an(Ar),details:Qe,component_id:Nn},pdbx_reference_entity_nonpoly:{prd_id:Qe,ref_entity_id:Qe,name:Qe,chem_comp_id:Qe},pdbx_reference_entity_link:{link_id:Nn,prd_id:Qe,details:Qe,ref_entity_id_1:Qe,ref_entity_id_2:Qe,entity_seq_num_1:Nn,entity_seq_num_2:Nn,comp_id_1:Qe,comp_id_2:Qe,atom_id_1:Qe,atom_id_2:Qe,value_order:an(Ar),component_1:Nn,component_2:Nn,link_class:an(Qe)},pdbx_reference_entity_poly_link:{link_id:Nn,prd_id:Qe,ref_entity_id:Qe,component_id:Nn,entity_seq_num_1:Nn,entity_seq_num_2:Nn,comp_id_1:Qe,comp_id_2:Qe,atom_id_1:Qe,atom_id_2:Qe,value_order:an(Ar)},pdbx_reference_entity_poly:{prd_id:Qe,ref_entity_id:Qe,type:an(Qe),db_code:Qe,db_name:Qe},pdbx_reference_entity_poly_seq:{prd_id:Qe,ref_entity_id:Qe,mon_id:Qe,parent_mon_id:Qe,num:Nn,observed:an(Ar),hetero:an(Ar)},pdbx_reference_entity_sequence:{prd_id:Qe,ref_entity_id:Qe,type:an(Qe),NRP_flag:an(Qe),one_letter_codes:Qe},pdbx_reference_entity_src_nat:{prd_id:Qe,ref_entity_id:Qe,ordinal:Nn,organism_scientific:Qe,taxid:Qe,db_code:Qe,db_name:Qe},pdbx_prd_audit:{prd_id:Qe,date:Qe,processing_site:an(Qe),action_type:an(Qe)}};var Qd=me.Schema,zt=Qd.str,a_=Qd.float,c_={id:zt,description:zt},u_={title:zt,datablock_id:zt,version:zt},l_={version:zt,update:zt,revision:zt},f_={id:zt,description:zt},d_={id:zt,parent_id:zt,description:zt},m_={code:zt,primitive_code:zt,construct:zt,detail:zt},p_={code:zt,detail:zt},h_={from_code:zt,to_code:zt,operator:zt,factor:a_},Jd={datablock:c_,dictionary:u_,dictionary_history:l_,sub_category:f_,category_group_list:d_,item_type_list:m_,item_units_list:p_,item_units_conversion:h_};var So=me.Schema,er=So.str,Fs=So.int,br=So.float,Os=So.Aliased,Gr=So.Vector,E8={density_server_result:{server_version:er,datetime_utc:er,guid:er,is_empty:Os(er),has_error:Os(er),error:er,query_source_id:er,query_type:Os(er),query_box_type:Os(er),query_box_a:Gr(3),query_box_b:Gr(3)}},Ls={volume_data_3d_info:{name:er,axis_order:Gr(3,Fs),origin:Gr(3),dimensions:Gr(3),sample_rate:Fs,sample_count:Gr(3,Fs),spacegroup_number:Fs,spacegroup_cell_size:Gr(3),spacegroup_cell_angles:Gr(3),mean_source:br,mean_sampled:br,sigma_source:br,sigma_sampled:br,min_source:br,min_sampled:br,max_source:br,max_sampled:br},volume_data_3d:{values:br}};var qs=me.Schema,Lt=qs.float,Oc=qs.int,Dt=qs.str,__=qs.Matrix,em={cell:{angle_alpha:Lt,angle_beta:Lt,angle_gamma:Lt,formula_units_z:Oc,length_a:Lt,length_b:Lt,length_c:Lt,volume:Lt},chemical:{melting_point:Lt,name_common:Dt,name_systematic:Dt},chemical_formula:{moiety:Dt,sum:Dt,weight:Lt},space_group:{crystal_system:Dt,it_number:Oc,"name_h-m_full":Dt},space_group_symop:{operation_xyz:Dt},geom_bond:{atom_site_label_1:Dt,atom_site_label_2:Dt,distance:Lt,publ_flag:Dt,site_symmetry_1:Dt,site_symmetry_2:Dt,valence:Lt},audit:{block_doi:Dt},database_code:{cod:Dt,csd:Dt,depnum_ccdc_archive:Dt,depnum_ccdc_fiz:Dt,icsd:Dt,mdf:Dt,nbs:Dt},atom_site:{adp_type:Dt,calc_flag:Dt,disorder_assembly:Dt,disorder_group:Dt,fract_x:Lt,fract_y:Lt,fract_z:Lt,label:Dt,occupancy:Lt,refinement_flags:Dt,site_symmetry_multiplicity:Oc,type_symbol:Dt,u_iso_or_equiv:Lt},atom_site_aniso:{label:Dt,u_11:Lt,u:__(3,3),u_12:Lt,u_13:Lt,u_22:Lt,u_23:Lt,u_33:Lt},atom_type:{description:Dt,symbol:Dt},atom_type_scat:{dispersion_imag:Lt,dispersion_real:Lt,source:Dt}},tm={"cell.formula_units_z":["cell_formula_units_Z"],"space_group.it_number":["space_group_IT_number","symmetry_Int_Tables_number"],"space_group.name_h-m_full":["symmetry_space_group_name_H-M"],"space_group_symop.operation_xyz":["symmetry_equiv_pos_as_xyz"],"geom_bond.atom_site_label_1":["geom_bond_atom_site_id_1"],"geom_bond.atom_site_label_2":["geom_bond_atom_site_id_2"],"geom_bond.distance":["geom_bond_dist"],"audit.block_doi":["audit_block_DOI"],"database_code.cod":["database_code_COD"],"database_code.csd":["database_code_CSD"],"database_code.depnum_ccdc_archive":["database_code_depnum_CCDC_archive"],"database_code.depnum_ccdc_fiz":["database_code_depnum_CCDC_fiz"],"database_code.icsd":["database_code_ICSD"],"database_code.mdf":["database_code_MDF"],"database_code.nbs":["database_code_NBS"],"atom_site.adp_type":["atom_site_ADP_type","atom_site_thermal_displace_type"],"atom_site.label":["atom_site_id"],"atom_site.site_symmetry_multiplicity":["atom_site_symmetry_multiplicity"],"atom_site.u_iso_or_equiv":["atom_site_U_iso_or_equiv"],"atom_site_aniso.label":["atom_site_anisotrop_id"],"atom_site_aniso.u_11":["atom_site_aniso_U_11","atom_site_anisotrop_U_11"],"atom_site_aniso.u_12":["atom_site_aniso_U_12","atom_site_anisotrop_U_12"],"atom_site_aniso.u_13":["atom_site_aniso_U_13","atom_site_anisotrop_U_13"],"atom_site_aniso.u_22":["atom_site_aniso_U_22","atom_site_anisotrop_U_22"],"atom_site_aniso.u_23":["atom_site_aniso_U_23","atom_site_anisotrop_U_23"],"atom_site_aniso.u_33":["atom_site_aniso_U_33","atom_site_anisotrop_U_33"]};var g_=me.Schema,Lc=g_.int,nm={volume_data_3d_info:Ls.volume_data_3d_info,segmentation_data_table:{set_id:Lc,segment_id:Lc},segmentation_data_3d:{values:Lc}};var qc={parse:e=>typeof e=="string"?kc(e):Fc(e),parseText:kc,parseBinary:Fc,toDatabaseCollection:qf,toDatabase:En,schema:{mmCIF:e=>En(nt,e),CCD:e=>En(Xd,e),BIRD:e=>En($d,e),dic:e=>En(Jd,e),cifCore:e=>En(em,e,tm),densityServer:e=>En(Ls,e),segmentation:e=>En(nm,e)}};var zi=class{get operatorGroups(){return this._operators?this._operators:(this._operators=this.operatorsProvider(),this._operators)}constructor(t,n,r){this.operatorsProvider=r,this.id=t,this.details=n}};(function(e){function t(n,r,i){return new e(n,r,i)}e.create=t})(zi||(zi={}));var Io;(function(e){e.Default={assemblies:[],spacegroup:sn.ZeroP1,isNonStandardCrystalFrame:!1};function t(r,i){let o=i.toLocaleLowerCase(),s=Wt.Provider.get(r);return s?ol(s.assemblies,a=>a.id.toLowerCase()===o):void 0}e.findAssembly=t;function n(r){let{cell:i,name:o,num:s}=r.spacegroup,{size:a,anglesInRadians:c}=i,u=a[0].toFixed(2),l=a[1].toFixed(2),m=a[2].toFixed(2),f=On(c[0]).toFixed(2),d=On(c[1]).toFixed(2),p=On(c[2]).toFixed(2),h=[];return h.push(`Unit Cell ${o} #${s}`),h.push(`${u}\xD7${l}\xD7${m} \u212B`),h.push(`\u03B1=${f}\xB0 \u03B2=${d}\xB0 \u03B3=${p}\xB0`),h.join(" | ")}e.getUnitcellLabel=n})(Io||(Io={}));var rm;(function(e){function t(n,r,i,o){return{id:Rt.create22(),label:n,basic:r,sourceData:o,bonds:i}}e.create=t})(rm||(rm={}));var Gc={};Br(Gc,{atomicHet:()=>A_,atomicSequence:()=>y_,bundleElementImpl:()=>C_,bundleGenerator:()=>S_,defaultBondTest:()=>Gs,spheres:()=>b_,water:()=>x_});var Pt;(function(e){function t(_){return le.ofSortedArray(_)}e.ofSortedRanges=t;function n(_){return _[0]}e.start=n;function r(_){return _[_.length-1]+1}e.end=r;function i(_){return _[0]}e.min=i;function o(_){return _[_.length-1]}e.max=o;function s(_){let b=0;for(let I=0,E=_.length;IIe.max(b)||o(_)2)y.push(x[b],x[I-1]);else for(let E=b;E{let h=[];p.groupedUnits.forEach(x=>h.push(le.ofUnsortedArray(x))),h.sort((x,y)=>x[0]-y[0]),d.push({groupedUnits:h,set:p.set,ranges:p.ranges})}),{hash:l.structure.hashCode,elements:d}}e.fromLoci=r;function i(l,m){let f=[];for(let d=0,p=l.length;dy[C]=g),x=le.ofSortedArray(y)}else{let y=Pt.size(d.ranges),g=new Int32Array(d.set.length+y);Pt.forEach(d.ranges,(C,_)=>g[_]=C),g.set(d.set,y),x=le.ofUnsortedArray(g)}for(let y of h)f.push({unit:y,indices:x})}return Hr(m,f)}e.toLoci=o;function s(l,m){l.hash!==-1&&l.hash!==m.hashCode&&new Error("Bundle not compatible with given structure");let f=[];for(let d of l.elements)for(let p of d.groupedUnits){let h=i(p,m);if(h.length===0)continue;let x=h[0].elements,y=Pt.size(d.ranges),g=d.set.length,C=new Int32Array(g+y),_;if(y===0){for(let b=0,I=g;bC[I]=x[b]),_=le.ofSortedArray(C);else if(le.min(d.set)>Pt.max(d.ranges)){Pt.forEach(d.ranges,(b,I)=>C[I]=x[b]);for(let b=0,I=g;ble.max(d.set)){for(let b=0,I=g;bC[I+g]=x[b]),_=le.ofSortedArray(C)}else{Pt.forEach(d.ranges,(b,I)=>C[I]=x[b]);for(let b=0,I=g;bSt.core.type.list(m))),ranges:St.core.type.list(l.ranges),set:St.core.type.list(l.set)})}function c(l){return St.internal.generator.bundle({elements:St.core.type.list(l.elements.map(a))})}e.toExpression=c;function u(l,m){if(l.elements.length!==m.elements.length)return!1;for(let f=0,d=l.elements.length;f=8)continue}i.push(o)}}return Be.Singletons(n,ot.create(i,{parent:n}))}}function b_(){return function(t){let{inputStructure:n}=t,r=[];for(let i of n.units)i.kind===1&&r.push(i);return Be.Singletons(n,ot.create(r,{parent:n}))}}function C_(e,t,n){return{groupedUnits:e,ranges:t,set:n}}function S_(e){return function(n){let r={hash:n.inputStructure.hashCode,elements:e};return Be.Sequence(n.inputStructure,[wo.toStructure(r,n.inputStructure)])}}var fi=class{pushCurrentElement(){return this.currentElementStack[this.currentElementStack.length]=this.element,this.element=ht.Location.create(void 0),this.element}popCurrentElement(){this.element=this.currentElementStack.pop()}pushCurrentBond(){return this.atomicBond&&this.currentAtomicBondStack.push(this.atomicBond),this.atomicBond=new Hs,this.atomicBond}popCurrentBond(){this.currentAtomicBondStack.length>0?this.atomicBond=this.currentAtomicBondStack.pop():this.atomicBond=void 0}pushCurrentStructure(){this.currentStructure&&this.currentStructureStack.push(this.currentStructure)}popCurrentStructure(){this.currentStructureStack.length?this.currentStructure=this.currentStructureStack.pop():this.currentStructure=void 0}pushInputStructure(t){this.inputStructureStack.push(this.inputStructure),this.inputStructure=t}popInputStructure(){if(this.inputStructureStack.length===0)throw new Error("Must push before pop.");this.inputStructure=this.inputStructureStack.pop()}throwIfTimedOut(){if(this.timeoutMs!==0&&Qt()-this.timeCreated>this.timeoutMs)throw new Error(`The query took too long to execute (> ${this.timeoutMs/1e3}s).`)}tryGetCurrentSelection(){if(!this.currentSelection)throw new Error("The current selection is not assigned.");return this.currentSelection}constructor(t,n){this.currentElementStack=[],this.currentAtomicBondStack=[],this.currentStructureStack=[],this.inputStructureStack=[],this.timeCreated=Qt(),this.element=ht.Location.create(void 0),this.currentStructure=void 0,this.atomicBond=new Hs,this.currentSelection=void 0,this.inputStructure=t,this.timeoutMs=n&&n.timeoutMs||0,this.currentSelection=n&&n.currentSelection}},Hs=class{constructor(){this.a=ht.Location.create(void 0),this.aIndex=0,this.b=ht.Location.create(void 0),this.bIndex=0,this.type=0,this.order=0,this.key=-1,this.testFn=Gs}setStructure(t){this.a.structure=t,this.b.structure=t}setTestFn(t){this.testFn=t||Gs}test(t,n){return this.testFn(t)?!0:n?(this.swap(),this.testFn(t)):!1}swap(){let t=this.aIndex;this.aIndex=this.bIndex,this.bIndex=t;let n=this.a.unit;this.a.unit=this.b.unit,this.b.unit=n;let r=this.a.element;this.a.element=this.b.element,this.b.element=r}get length(){return ht.Location.distance(this.a,this.b)}};var Hc;(function(e){function t(n,r,i){return n(new fi(r,i))}e.run=t})(Hc||(Hc={}));var Kc={};Br(Kc,{all:()=>om,atoms:()=>Vc,bondedAtomicPairs:()=>k_,chains:()=>v_,none:()=>js,querySelection:()=>N_,residues:()=>w_,rings:()=>M_});function di(e,t){if(t.length===0)return ot.Empty;if(t.length===1)return t[0];let n=new Map,r=new Set;for(let{units:o}of t)for(let s=0,a=o.length;s0&&(i[i.length]=a.getChild(u))}return ot.create(i,{parent:e.parent||t.parent})}var Vi=class{add(t){t.elementCount&&(t.elementCount!==1&&(this.allSingletons=!1),this.set.add(t)&&(this.structures[this.structures.length]=t))}getSelection(){return this.allSingletons?Be.Singletons(this.source,di(this.source,this.structures)):Be.Sequence(this.source,this.structures)}constructor(t){this.source=t,this.set=wi(ot.hashCode,ot.areUnitIdsAndIndicesEqual),this.structures=[],this.allSingletons=!0}},Ks=class{add(t,n,r){let i=this.builderMap.get(t);i||(i=this.source.subsetBuilder(!0),this.builders[this.builders.length]=i,this.builderMap.set(t,i)),i.addToUnit(n,r)}allSingletons(){for(let t=0,n=this.builders.length;t1)return!1;return!0}singletonSelection(){let t=this.source.subsetBuilder(!0),n=ht.Location.create(this.source);for(let r=0,i=this.builders.length;rBe.Sequence(e.inputStructure,[]),om=e=>Be.Singletons(e.inputStructure,e.inputStructure);function w_(e){return Vc(Ct(Le({},e),{groupBy:t=>Ye.residue.key(t.element)}))}function v_(e){return Vc(Ct(Le({},e),{groupBy:t=>Ye.chain.key(t.element)}))}function zr(e){return!0}function P_(e){return 0}function Vc(e){if(!e||!e.atomTest&&!e.residueTest&&!e.chainTest&&!e.entityTest&&!e.unitTest&&!e.groupBy)return om;if(e.atomTest&&!e.residueTest&&!e.chainTest&&!e.entityTest&&!e.unitTest&&!e.groupBy)return B_(e.atomTest);let t={unitTest:e.unitTest||zr,entityTest:e.entityTest||zr,chainTest:e.chainTest||zr,residueTest:e.residueTest||zr,atomTest:e.atomTest||zr,groupBy:e.groupBy||P_};return e.groupBy?D_(t):E_(t)}function B_(e){return function(n){let{inputStructure:r}=n,{units:i}=r,o=n.pushCurrentElement(),s=r.subsetBuilder(!0);o.structure=r;for(let a of i){o.unit=a;let c=a.elements;s.beginUnit(a.id);for(let u=0,l=c.length;uFy,expandProperty:()=>Ly,includeConnected:()=>qy,includeSurroundings:()=>Uy,intersectBy:()=>Ty,querySelection:()=>Ry,surroundingLigands:()=>Hy,union:()=>Oy,wholeResidues:()=>My});var U_=N.add,R_=N.squaredDistance,T_=N.distance;var Vr=class{reset(){N.set(this.center,0,0,0),this.radiusSq=0,this.count=0}includeStep(t){U_(this.center,this.center,t),this.count++}finishedIncludeStep(){this.count!==0&&N.scale(this.center,this.center,1/this.count)}radiusStep(t){let n=R_(t,this.center);n>this.radiusSq&&(this.radiusSq=n)}radiusSphereStep(t,n){let r=T_(t,this.center)+n,i=r*r;i>this.radiusSq&&(this.radiusSq=i)}getSphere(t){return t||(t=Kt()),N.copy(t.center,this.center),t.radius=Math.sqrt(this.radiusSq),t}getCount(){return this.count}constructor(){this.count=0,this.center=N(),this.radiusSq=0}};(function(e){let t=new e,n=N(),r=N();function i({x:a,y:c,z:u},l){t.reset();let m=a.length;for(let f=0;f{s.forEach(a=>{n+=a.edgeCount,a.connectedIndices.forEach(c=>{a.getEdges(c).forEach(u=>{let{unitA:l,unitB:m}=a,f=e.getEdgeKey(c,l,u.indexB,m);i.set(f,r.length);let d=e.getVertexKey(c,l),p=o.get(d);p===void 0?o.set(d,[r.length]):p.push(r.length),r.push(Ct(Le({},u),{indexA:c,unitA:l,unitB:m}))})})})}),this.edgeCount=n,this.edges=r,this.edgeKeyIndex=i,this.vertexKeyIndex=o}};(function(e){class t{hasEdges(a){return this.edgeMap.has(a)}getEdges(a){return this.edgeMap.has(a)?this.edgeMap.get(a):sm}get areUnitsOrdered(){return this.unitA0?i:t<0?n:(n+r)/1.95}var G_=jc.H;function rr(e){return e===G_}var H_=new Map([["HIS|CD2|CG",2],["HIS|CE1|ND1",2],["ARG|CZ|NH2",2],["PHE|CE1|CZ",2],["PHE|CD2|CE2",2],["PHE|CD1|CG",2],["TRP|CD1|CG",2],["TRP|CD2|CE2",2],["TRP|CE3|CZ3",2],["TRP|CH2|CZ2",2],["ASN|CG|OD1",2],["GLN|CD|OE1",2],["TYR|CD1|CG",2],["TYR|CD2|CE2",2],["TYR|CE1|CZ",2],["ASP|CG|OD1",2],["GLU|CD|OE1",2],["G|C8|N7",2],["G|C4|C5",2],["G|C2|N3",2],["G|C6|O6",2],["C|C4|N3",2],["C|C5|C6",2],["C|C2|O2",2],["A|C2|N3",2],["A|C6|N1",2],["A|C4|C5",2],["A|C8|N7",2],["U|C5|C6",2],["U|C2|O2",2],["U|C4|O4",2],["DG|C8|N7",2],["DG|C4|C5",2],["DG|C2|N3",2],["DG|C6|O6",2],["DC|C4|N3",2],["DC|C5|C6",2],["DC|C2|O2",2],["DA|C2|N3",2],["DA|C6|N1",2],["DA|C4|C5",2],["DA|C8|N7",2],["DT|C5|C6",2],["DT|C2|O2",2],["DT|C4|O4",2]]);function cm(e,t,n){return[t,n]=tn&&([e,n]=[n,e],[t,r]=[r,t]),z_.get(`${e}|${t}|${n}|${r}`)||1}var Ir;(function(e){e.Descriptor={name:"chem_comp_bond",cifExport:{prefix:"",categories:[{name:"chem_comp_bond",instance(i){let o=e.Provider.get(i.firstModel);if(!o)return At.Category.Empty;let s=o.data;if(!s)return At.Category.Empty;let a=i.structures[0].uniqueResidueNames,{comp_id:c,_rowCount:u}=s,l=[];for(let m=0;mi.properties.chemicalComponentMap.has(o.comp_id.value(s)))}e.chemCompBondFromTable=t;function n(i){let o=new Map;function s(h){if(o.has(h))return o.get(h);let x=new r(h);return o.set(h,x),x}let{comp_id:a,atom_id_1:c,atom_id_2:u,value_order:l,pdbx_aromatic_flag:m,_rowCount:f,pdbx_ordinal:d}=i,p=s(a.value(0));for(let h=0;h.95}e.isExhaustive=t;function n({units:o},s){for(let a=0,c=o.length;a=0)return!0;return!1}function r(o){let s=new Map;for(let a of o){let{partnerA:{atomIndex:c},partnerB:{atomIndex:u}}=a;s.has(c)?s.get(c).push(a):s.set(c,[a]),s.has(u)?s.get(u).push(a):s.set(u,[a])}return s}e.getAtomIndexFromEntries=r;function i(o,s){let{conn_type_id:a,pdbx_dist_value:c,pdbx_value_order:u}=o,l={label_asym_id:o.ptnr1_label_asym_id,label_seq_id:o.ptnr1_label_seq_id,auth_seq_id:o.ptnr1_auth_seq_id,label_atom_id:o.ptnr1_label_atom_id,label_alt_id:o.pdbx_ptnr1_label_alt_id,ins_code:o.pdbx_ptnr1_PDB_ins_code,symmetry:o.ptnr1_symmetry},m={label_asym_id:o.ptnr2_label_asym_id,label_seq_id:o.ptnr2_label_seq_id,auth_seq_id:o.ptnr2_auth_seq_id,label_atom_id:o.ptnr2_label_atom_id,label_alt_id:o.pdbx_ptnr2_label_alt_id,ins_code:o.pdbx_ptnr2_PDB_ins_code,symmetry:o.ptnr2_symmetry},f=Array.from(s.entities.data.id.toArray()),d=(h,x)=>{if(x.label_asym_id.valueKind(h)!==0)return;let y=x.label_asym_id.value(h),g=x.label_atom_id.value(h);if(!g)return;let C=x.auth_seq_id.valueKind(h)===me.ValueKind.Present?x.auth_seq_id.value(h):x.label_seq_id.value(h),_=x.ins_code.value(h),b=x.label_alt_id.value(h);for(let I of f){let E=s.atomicHierarchy.index.findResidue(I,y,C,_);if(E<0)continue;let S=s.atomicHierarchy.index.findAtomOnResidue(E,g,b);if(!(S<0))return{residueIndex:E,atomIndex:S,symmetry:x.symmetry.value(h)}}},p=[];for(let h=0;h=D)continue;let z=le.indexOf(e.elements,D);if(z<0)continue;let ie=f[L],O=d[L];if(ie>=0&&ie!==b||O>=0&&O!==b)continue;let Q=tr(r.value(D)),K=u[L],Z=K_(e,E,D),se=!1;if(K>=0)se=Ht(Z,K,.3);else if(o>=0)se=Z1&&(z=!1)}}}return fm(b,I,S,E,v,s,{canRemap:w||D&&z})}function dm(e,t){let n=Le(Le({},Zs),t);return n.noCompute||Tt.isCoarseGrained(e.model)&&!rn.Provider.get(e.model)&&!cn.isExhaustive(e.model)?Ys.Empty:!n.forceCompute&&rn.Provider.get(e.model)?Y_(e):Z_(e,n)}var W_=N.distance,X_=N.set,$_=N.squaredDistance,Q_=N.transformMat4,mm=N(),pm=N();function hm(e,t,n,r){return e.conformation.position(t,mm),n.conformation.position(r,pm),W_(mm,pm)}var J_=ke(),mi=N();function eg(e,t,n,r){let{maxRadius:i}=n,{elements:o,residueIndex:s}=e,{x:a,y:c,z:u}=e.model.atomicConformation,{elements:l,residueIndex:m}=t,f=e.elements.length,{type_symbol:d,label_alt_id:p,label_atom_id:h,label_comp_id:x}=e.model.atomicHierarchy.atoms,{type_symbol:y,label_alt_id:g,label_atom_id:C,label_comp_id:_}=t.model.atomicHierarchy.atoms,{auth_seq_id:b}=e.model.atomicHierarchy.residues,{auth_seq_id:I}=t.model.atomicHierarchy.residues,{occupancy:E}=e.model.atomicConformation,{occupancy:S}=t.model.atomicConformation,v=E.isDefined&&S.isDefined,P=e.model===t.model&&cn.Provider.get(e.model),L=!n.forceCompute&&e.model===t.model&&rn.Provider.get(e.model),{atomSourceIndex:w}=e.model.atomicHierarchy,{invertedIndex:D}=L?Tt.getInvertedAtomSourceIndex(t.model):{invertedIndex:void 0},z=e.model===t.model&&cn.isExhaustive(e.model),ie=ke.mul(J_,t.conformation.operator.inverse,e.conformation.operator.matrix),O=!ke.isIdentity(ie),{center:Q,radius:K}=t.boundary.sphere,Z=(K+i)*(K+i);r.startUnitPair(e.id,t.id);let se=e.conformation.operator.key,fe=t.conformation.operator.key;for(let Ce=0;CeZ)continue;if(!n.forceCompute&&L){let{maxDistance:F}=L,{offset:W,b:re,edgeProps:{order:_e,distance:Ae,flag:Ze,key:A,operatorA:M,operatorB:te}}=L.bonds,ce=w.value(xe),pe=tr(d.value(xe));for(let he=W[ce],Se=W[ce+1];he=0&&ve>=0&&(Pe===ve||Pe!==se||ve!==fe))continue;let Fe=tr(d.value(Ee)),Oe=Ae[he],Me=hm(e,xe,t,Ee),He=!1;if(Oe>=0)He=Ht(Me,Oe,.3);else if(F>=0)He=Mei||(r.add(Ce,Ze,{order:W.order,flag:W.flags,key:W.rowIndex}),F=!0)}if(F)continue}if(z)continue;let $=E.value(xe),{lookup3d:de}=t,{indices:T,count:B,squaredDistances:k}=de.find(mi[0],mi[1],mi[2],i);if(B===0)continue;let R=tr(d.value(xe)),V=rr(R),j=nr(R),oe=p.value(xe),ae=Ki.has(R),ne=h.value(xe),q=x.value(s[xe]);for(let F=0;Frn.Provider.get(o)),i=e.models.some(o=>cn.isExhaustive(o));return t.noCompute||e.isCoarseGrained&&!r&&!i?new Sr(n.getMap()):(ot.eachUnitPair(e,(o,s)=>{eg(o,s,t,n)},{maxRadius:t.maxRadius,validUnit:o=>t.validUnit(o),validUnitPair:(o,s)=>t.validUnitPair(e,o,s)}),new Sr(n.getMap()))}function _m(e,t){let n=Le(Le({},tg),t);return ng(e,Ct(Le({},n),{validUnit:t&&t.validUnit||(r=>ge.isAtomic(r)),validUnitPair:t&&t.validUnitPair||((r,i,o)=>{if(!ot.validUnitPair(r,i,o))return!1;let a=i.model.atomicHierarchy.derived.residue.moleculeType,c=o.model.atomicHierarchy.derived.residue.moleculeType,u=(!ge.isAtomic(i)||a[i.residueIndex[i.elements[0]]]!==2)&&(!ge.isAtomic(o)||c[o.residueIndex[o.elements[0]]]!==2),l=!ge.isAtomic(i)||a[i.residueIndex[i.elements[0]]]!==3,m=!ge.isAtomic(o)||c[o.residueIndex[o.elements[0]]]!==3,f=l&&m;return(u||!n.ignoreWater)&&(f||!n.ignoreIon)?!0:rg(i,o)})}))}function rg(e,t){if(e.model!==t.model||!ge.isAtomic(e)||!ge.isAtomic(t))return!1;let n=cn.Provider.get(e.model);if(!n)return!1;let r=e.elements.length=t.elements.length?e:t,{elements:o}=r,{elements:s}=i,{indexOf:a}=le;for(let c=0,u=o.length;c=0)return!0}}return!1}var vo;(function(e){function t(x,y,g,C,_,b){return{kind:"bond-location",aStructure:x,aUnit:y,aIndex:g,bStructure:C,bUnit:_,bIndex:b}}e.Location=t;function n(x){return!!x&&x.kind==="bond-location"}e.isLocation=n;function r(x,y){return x.aStructure.label===y.aStructure.label&&x.bStructure.label===y.bStructure.label&&x.aIndex===y.aIndex&&x.bIndex===y.bIndex&&x.aUnit.id===y.aUnit.id&&x.bUnit.id===y.bUnit.id}e.areLocationsEqual=r;function i(x,y){return{kind:"bond-loci",structure:x,bonds:y}}e.Loci=i;function o(x){return!!x&&x.kind==="bond-loci"}e.isLoci=o;function s(x,y){if(x.structure!==y.structure||x.bonds.length!==y.bonds.length)return!1;for(let g=0,C=x.bonds.length;g{let _=y.unitMap.get(C.aUnit.id);if(!_)return;let b=y.unitMap.get(C.bUnit.id);if(!b)return;let I=C.aUnit.elements[C.aIndex],E=le.indexOf(_.elements,I);if(E===-1)return;let S=C.bUnit.elements[C.bIndex],v=le.indexOf(b.elements,S);v!==-1&&g.push(t(x.structure,_,E,x.structure,b,v))}),i(y,g)}e.remapLoci=c;function u(x){let y=[],g=new Map;for(let C of x.bonds){let{aIndex:_,aUnit:b,bIndex:I,bUnit:E}=C;b===E?g.has(b.id)?g.get(b.id).push(_,I):g.set(b.id,[_,I]):(g.has(b.id)?g.get(b.id).push(_):g.set(b.id,[_]),g.has(E.id)?g.get(E.id).push(I):g.set(E.id,[I]))}return g.forEach((C,_)=>{y.push({unit:x.structure.unitMap.get(_),indices:le.deduplicate(le.ofUnsortedArray(C))})}),ht.Loci(x.structure,y)}e.toStructureElementLoci=u;function l(x){let{aUnit:y,aIndex:g}=x.bonds[0];return ht.Loci(x.structure,[{unit:y,indices:Ie.ofSingleton(g)}])}e.toFirstStructureElementLoci=l;function m(x,y){if(y.aUnit===y.bUnit){let g=y.aUnit.bonds,C=g.getEdgeIndex(y.aIndex,y.bIndex);return C<0?$t.create(0):$t.create(g.edgeProps.flags[C])}else{let g=x.interUnitBonds.getBondFromLocation(y);return g?$t.create(g.props.flag):$t.create(0)}}e.getType=m;function f(x,y){if(y.aUnit===y.bUnit){let g=y.aUnit.bonds,C=g.getEdgeIndex(y.aIndex,y.bIndex);return C<0?0:g.edgeProps.order[C]}else{let g=x.interUnitBonds.getBondFromLocation(y);return g?g.props.order:0}}e.getOrder=f;function d(x){let y=0;for(let g=0,C=x.units.length;g{let{aUnit:b,aIndex:I,bUnit:E,bIndex:S}=x.bonds[g];b.conformation.position(b.elements[I],C),E.conformation.position(E.elements[S],_)},y)}e.getBoundingSphere=h})(vo||(vo={}));function Sm(e){let t=og(e),n=ig(e,t),r=We.transientSegments(e.model.atomicHierarchy.residueAtomSegments,e.elements);for(;r.hasNext;){let i=r.move();sg(n,i.start,i.end)}return n.rings}function ig(e,t){return{startVertex:0,endVertex:0,count:0,isRingAtom:new Int32Array(t),marked:new Int32Array(t),queue:new Int32Array(t),pred:new Int32Array(t),depth:new Int32Array(t),left:new Int32Array(5),right:new Int32Array(5),color:new Int32Array(t),currentColor:0,currentAltLoc:"",hasAltLoc:!1,rings:[],currentRings:[],unit:e,bonds:e.bonds,altLoc:e.model.atomicHierarchy.atoms.label_alt_id}}function gm(e){e.count=e.endVertex-e.startVertex;let{isRingAtom:t,pred:n,color:r,depth:i,marked:o}=e;for(let s=0;s=0;y--)h[x++]=e.startVertex+a[y],r[a[y]]=1;jt(h);for(let y=0,g=e.currentRings.length;yC.length&&le.isSubset(h,C))return!1}return e.currentRings.push(le.ofSortedArray(h)),!0}function Am(e,t,n){let{bonds:r,startVertex:i,endVertex:o,isRingAtom:s,marked:a,queue:c,pred:u,depth:l}=e,{elements:m}=e.unit,{b:f,edgeProps:{flags:d},offset:p}=r;a[t]=n,l[t]=0,c[0]=t;let h=0,x=1;for(;h=o||!$t.isCovalent(d[I]))continue;if(e.hasAltLoc){let P=e.altLoc.value(m[E]);if(P&&e.currentAltLoc!==P)continue}let S=E-i;if(a[S]===n){if(u[S]!==y&&u[y]!==S&&ag(e,y,S,s))return n+1;continue}let v=Math.min(l[S],g+1);v>5||(l[S]=v,a[S]=n,c[x++]=S,u[S]=y)}}return n+1}function Im(e){let t=e.length,n=new Array(t);for(let s=0;s=y||i.addEdge(c,y)}}}let o=Jt.connectedComponents(i.getGraph()),s=o.componentIndex,a=[];for(let c=0;c0)return!1;let y=mn.calculateMomentsAxes(Ns(a,c));return N.magnitude(y.dirC)=0&&(n.has(a)?n.get(a).push(s):n.set(a,[s]))}}function fg(e,t){let n=[];for(let r=0,i=t.length;rthis.maxDist[t]&&(this.maxDist[t]=r,Um(this.extrema[t*2+1],n))}computeSphereExtrema(t,n,r){let i=this.dir[t],o=km(i,n);o-rthis.maxDist[t]&&(this.maxDist[t]=o+r,pg(this.extrema[t*2+1],n,i,r))}includeSphere(t){if(Kt.hasExtrema(t)&&t.extrema.length>1)for(let n of t.extrema)this.includePosition(n);else this.includePositionRadius(t.center,t.radius)}includePosition(t){for(let n=0;n1)for(let n of t.extrema)this.radiusPosition(n);else this.radiusPositionRadius(t.center,t.radius)}radiusPosition(t){this.centroidHelper.radiusStep(t)}radiusPositionRadius(t,n){this.centroidHelper.radiusSphereStep(t,n)}getSphere(t){return Kt.setExtrema(this.centroidHelper.getSphere(t),this.extrema.slice())}getBox(t){return on.fromVec3Array(t||on(),this.extrema)}reset(){for(let t=0;t{let r=N.create(n[0],n[1],n[2]);return N.normalize(r,r)})}var Xs=[[1,0,0],[0,1,0],[0,0,1]],Zc=[[1,1,1],[-1,1,1],[-1,-1,1],[1,-1,1]],Rm=[[1,1,0],[1,-1,0],[1,0,1],[1,0,-1],[0,1,1],[0,1,-1]],_g=[[0,1,2],[0,2,1],[1,0,2],[2,0,1],[1,2,0],[2,1,0],[0,1,-2],[0,2,-1],[1,0,-2],[2,0,-1],[1,-2,0],[2,-1,0]],gg=[[1,1,2],[2,1,1],[1,2,1],[1,-1,2],[1,1,-2],[1,-1,-2],[2,-1,1],[2,1,-1],[2,-1,-1],[1,-2,1],[1,2,-1],[1,-2,-1]],yg=[[2,2,1],[1,2,2],[2,1,2],[2,-2,1],[2,2,-1],[2,-2,-1],[1,-2,2],[1,2,-2],[1,-2,-2],[2,-1,2],[2,1,-2],[2,-1,-2]];var Tm=N.set,xg=new ir("14"),Ag=new ir("98");function bg(e){return e>1e4?xg:Ag}function Qs(e){let t=on.computeBounding(e);return{box:t,sphere:Kt.fromBox3D(Kt(),t)}}var $s=N();function jr(e){let{x:t,y:n,z:r,radius:i,indices:o}=e,s=Ie.size(o);if(s>25e4)return Qs(e);let a=bg(s);a.reset();for(let u=0;u{let h=c.length;c.push(le.ofUnsortedArray([f,d,p])),u.set(Sa(f,d),p),l.has(f)?l.get(f).push(h):l.set(f,[h])};for(let f=0;f=2){m(f,p[0],p[1]);for(let h=1,x=p.length;hu.get(Sa(f,d)),getTripletIndices:f=>l.get(f),triplets:c}}var ge;(function(e){let t;(function(K){K[K.Atomic=0]="Atomic",K[K.Spheres=1]="Spheres",K[K.Gaussians=2]="Gaussians"})(t=e.Kinds||(e.Kinds={}));function n(K){return K.kind===0}e.isAtomic=n;function r(K){return K.kind===1||K.kind===2}e.isCoarse=r;function i(K){return K.kind===1}e.isSpheres=i;function o(K){return K.kind===2}e.isGaussians=o;function s(K,Z,se,fe,Ce,xe,H,$,de){switch(Ce){case 0:return new y(K,Z,se,fe,xe,$,xt.createMapping(H,xe.atomicConformation),de??g());case 1:return S(K,Z,se,fe,xe,1,$,xt.createMapping(H,xe.coarseConformation.spheres,h(xe)),de??b());case 2:return S(K,Z,se,fe,xe,2,$,xt.createMapping(H,xe.coarseConformation.gaussians,x(xe)),de??b())}}e.create=s;function a(K){let Z=yn.Mutable();for(let se=0,fe=K.length;seZ[se]}function x(K){return Z=>0}class y{getChild(Z){return Z.length===this.elements.length?this:new y(this.id,this.invariantId,this.chainGroupId,this.traits,this.model,Z,this.conformation,g())}applyOperator(Z,se,fe=!1){let Ce=fe?se:xt.compose(this.conformation.operator,se);return new y(Z,this.invariantId,this.chainGroupId,this.traits,this.model,this.elements,xt.createMapping(Ce,this.model.atomicConformation,this.conformation.r),this.props)}remapModel(Z,se,fe){var Ce,xe;fe||(fe=Ct(Le({},this.props),{bonds:se&&!(!((xe=(Ce=this.props.bonds)===null||Ce===void 0?void 0:Ce.props)===null||xe===void 0)&&xe.canRemap)?void 0:w(this,this.props.bonds,Z,se)}),e.isSameConformation(this,Z)||(fe.boundary=void 0,fe.lookup3d=void 0,fe.principalAxes=void 0));let H=this.conformation.operator,$=Wt.Provider.get(Z);if(H.spgrOp!==-1&&$&&$!==Wt.Provider.get(this.model)){let[T,B,k]=H.hkl,{toFractional:R}=$.spacegroup.cell,V=N.transformMat4(N(),Tt.getCenter(Z),R);H=sn.getSymmetryOperatorRef($.spacegroup,H.spgrOp,T,B,k,V)}let de=this.model.atomicConformation!==Z.atomicConformation||H!==this.conformation.operator?xt.createMapping(H,Z.atomicConformation):this.conformation;return new y(this.id,this.invariantId,this.chainGroupId,this.traits,Z,this.elements,de,fe)}get boundary(){if(this.props.boundary)return this.props.boundary;let{x:Z,y:se,z:fe}=this.model.atomicConformation;return this.props.boundary=d.is(this.traits,f.FastBoundary)?Qs({x:Z,y:se,z:fe,indices:this.elements}):jr({x:Z,y:se,z:fe,indices:this.elements}),this.props.boundary}get lookup3d(){if(this.props.lookup3d)return this.props.lookup3d;let{x:Z,y:se,z:fe}=this.model.atomicConformation;return this.props.lookup3d=Xn({x:Z,y:se,z:fe,indices:this.elements},this.boundary),this.props.lookup3d}get principalAxes(){return this.props.principalAxes?this.props.principalAxes:(this.props.principalAxes=Yc(this),this.props.principalAxes)}get bonds(){var Z;if(this.props.bonds)return this.props.bonds;let se=Js.get(this.model),fe=se.get(this.elements);return fe||(fe=dm(this),!((Z=fe.props)===null||Z===void 0)&&Z.cacheable&&se.set(this.elements,fe)),this.props.bonds=fe,this.props.bonds}get rings(){return this.props.rings?this.props.rings:(this.props.rings=Kr.create(this),this.props.rings)}get resonance(){return this.props.resonance?this.props.resonance:(this.props.resonance=Fm(this),this.props.resonance)}get polymerElements(){return this.props.polymerElements?this.props.polymerElements:(this.props.polymerElements=vm(this),this.props.polymerElements)}get gapElements(){return this.props.gapElements?this.props.gapElements:(this.props.gapElements=Bm(this),this.props.gapElements)}get nucleotideElements(){return this.props.nucleotideElements?this.props.nucleotideElements:(this.props.nucleotideElements=Dm(this),this.props.nucleotideElements)}get proteinElements(){return this.props.proteinElements?this.props.proteinElements:(this.props.proteinElements=Mm(this),this.props.proteinElements)}get residueCount(){if(this.props.residueCount!==void 0)return this.props.residueCount;let Z=0,se=We.transientSegments(this.model.atomicHierarchy.residueAtomSegments,this.elements);for(;se.hasNext;)se.move(),Z+=1;return this.props.residueCount=Z,this.props.residueCount}getResidueIndex(Z){return this.residueIndex[this.elements[Z]]}constructor(Z,se,fe,Ce,xe,H,$,de){this.kind=0,this.objectPrimitive="atomistic",this.id=Z,this.invariantId=se,this.chainGroupId=fe,this.traits=Ce,this.model=xe,this.elements=H,this.conformation=$,this.residueIndex=xe.atomicHierarchy.residueAtomSegments.index,this.chainIndex=xe.atomicHierarchy.chainAtomSegments.index,this.props=de}}e.Atomic=y;function g(){return p()}class C{getChild(Z){return Z.length===this.elements.length?this:S(this.id,this.invariantId,this.chainGroupId,this.traits,this.model,this.kind,Z,this.conformation,b())}applyOperator(Z,se,fe=!1){let Ce=fe?se:xt.compose(this.conformation.operator,se);return S(Z,this.invariantId,this.chainGroupId,this.traits,this.model,this.kind,this.elements,xt.createMapping(Ce,this.getCoarseConformation(),this.conformation.r),this.props)}remapModel(Z,se,fe){let Ce=this.getCoarseConformation(),xe=_(this.kind,Z);fe||(fe=Le({},this.props),e.isSameConformation(this,Z)||(fe.boundary=void 0,fe.lookup3d=void 0,fe.principalAxes=void 0));let H=Ce!==xe?xt.createMapping(this.conformation.operator,xe,this.kind===1?h(Z):x(Z)):this.conformation;return new C(this.id,this.invariantId,this.chainGroupId,this.traits,Z,this.kind,this.elements,H,fe)}get boundary(){if(this.props.boundary)return this.props.boundary;let{x:Z,y:se,z:fe}=this.getCoarseConformation();return this.props.boundary=d.is(this.traits,f.FastBoundary)?Qs({x:Z,y:se,z:fe,indices:this.elements}):jr({x:Z,y:se,z:fe,indices:this.elements}),this.props.boundary}get lookup3d(){if(this.props.lookup3d)return this.props.lookup3d;let{x:Z,y:se,z:fe}=this.getCoarseConformation();return this.props.lookup3d=Xn({x:Z,y:se,z:fe,indices:this.elements},this.boundary),this.props.lookup3d}get principalAxes(){return this.props.principalAxes?this.props.principalAxes:(this.props.principalAxes=Yc(this),this.props.principalAxes)}get polymerElements(){return this.props.polymerElements?this.props.polymerElements:(this.props.polymerElements=Pm(this),this.props.polymerElements)}get gapElements(){return this.props.gapElements?this.props.gapElements:(this.props.gapElements=Em(this),this.props.gapElements)}getCoarseConformation(){return _(this.kind,this.model)}constructor(Z,se,fe,Ce,xe,H,$,de,T){this.kind=H,this.objectPrimitive=H===1?"sphere":"gaussian",this.id=Z,this.invariantId=se,this.chainGroupId=fe,this.traits=Ce,this.model=xe,this.elements=$,this.conformation=de,this.coarseElements=H===1?xe.coarseHierarchy.spheres:xe.coarseHierarchy.gaussians,this.coarseConformation=H===1?xe.coarseConformation.spheres:xe.coarseConformation.gaussians,this.props=T}}function _(K,Z){return K===1?Z.coarseConformation.spheres:Z.coarseConformation.gaussians}function b(){return p()}class I extends C{}e.Spheres=I;class E extends C{}e.Gaussians=E;function S(K,Z,se,fe,Ce,xe,H,$,de){return new C(K,Z,se,fe,Ce,xe,H,$,de)}function v(K,Z){return K.chainGroupId===Z.chainGroupId&&K.conformation.operator.name===Z.conformation.operator.name}e.areSameChainOperatorGroup=v;function P(K,Z){return ke.areEqual(K.conformation.operator.matrix,Z.conformation.operator.matrix,1e-6)}e.areOperatorsEqual=P;function L(K,Z){return K===Z?!0:le.areEqual(K.elements,Z.elements)?D(K,Z.model):!1}e.areConformationsEqual=L;function w(K,Z,se,fe){var Ce;if(!Z)return;if(K.model.atomicConformation.id===se.atomicConformation.id)return Z;let xe=rn.Provider.get(K.model);if(xe){let H=rn.Provider.get(se);return!H||xe===H?Z:void 0}return!((Ce=Z.props)===null||Ce===void 0)&&Ce.canRemap||!fe||D(K,se)?Z:void 0}function D(K,Z){let se=Tt.CoordinatesHistory.get(Tt.getRoot(Z));if(se)return se.areEqual(K.elements,K.kind,Z);let fe=K.elements,{x:Ce,y:xe,z:H}=K.conformation.coordinates,{x:$,y:de,z:T}=z(K.kind,Z);for(let B=0,k=fe.length;B"u"||pi?Lm():XMLHttpRequest}function Ig(){if(typeof File>"u"||pi){class e{arrayBuffer(){return this.blob.arrayBuffer()}slice(n,r,i){return this.blob.slice(n,r,i)}stream(){return this.blob.stream()}text(){return this.blob.text()}constructor(n,r,i){var o;this.blob=new Blob(n,i),this.size=this.blob.size,this.type=this.blob.type,this.name=r,this.lastModified=(o=i?.lastModified)!==null&&o!==void 0?o:0,this.webkitRelativePath=""}}return e}else return File}function qm(e){return e>>0}function or(e,t){return e[t]|e[t+1]<<8}function Yr(e,t,n){e[t]=n&255,e[t+1]=n>>8&255}function Zr(e,t){return e[t+3]*(256*256*256)+(e[t+2]<<16|e[t+1]<<8|e[t])}function sr(e,t,n){e[t]=n&255,e[t+1]=n>>8&255,e[t+2]=n>>16&255,e[t+3]=n>>24&255}function wg(e,t,n){let r="";for(let i=0;i>6,e[t+i+1]=128|s>>0&63,i+=2;else if(!(s&4294901760))e[t+i]=224|s>>12,e[t+i+1]=128|s>>6&63,e[t+i+2]=128|s>>0&63,i+=3;else if(!(s&4294967295-(1<<21)+1))e[t+i]=240|s>>18,e[t+i+1]=128|s>>12&63,e[t+i+2]=128|s>>6&63,e[t+i+3]=128|s>>0&63,i+=4;else throw new Error("e")}return i}function Wc(e){let t=e.length,n=0;for(let r=0;r>>1:n=n>>>1;e[t]=n}return e}();function Bg(e,t,n,r){for(let i=0;i>>8;return e}function Xc(e,t,n){return Bg(4294967295,e,t,n)^4294967295}var we=function(){let e=Uint16Array,t=Uint32Array;return{next_code:new e(16),bl_count:new e(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],exb:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],ldef:new e(32),df0:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],dxb:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],ddef:new t(32),flmap:new e(512),fltree:[],fdmap:new e(32),fdtree:[],lmap:new e(32768),ltree:[],ttree:[],dmap:new e(32768),dtree:[],imap:new e(512),itree:[],rev15:new e(32768),lhst:new t(286),dhst:new t(30),ihst:new t(19),lits:new t(15e3),strt:new e(65536),prev:new e(32768)}}();(function(){for(let n=0;n<32768;n++){let r=n;r=(r&2863311530)>>>1|(r&1431655765)<<1,r=(r&3435973836)>>>2|(r&858993459)<<2,r=(r&4042322160)>>>4|(r&252645135)<<4,r=(r&4278255360)>>>8|(r&16711935)<<8,we.rev15[n]=(r>>>16|r<<16)>>>17}function t(n,r,i){for(;r--!==0;)n.push(0,i)}for(let n=0;n<32;n++)we.ldef[n]=we.of0[n]<<3|we.exb[n],we.ddef[n]=we.df0[n]<<4|we.dxb[n];t(we.fltree,144,8),t(we.fltree,112,9),t(we.fltree,24,7),t(we.fltree,8,8),ar(we.fltree,9),Zi(we.fltree,9,we.flmap),Wi(we.fltree,9),t(we.fdtree,32,5),ar(we.fdtree,5),Zi(we.fdtree,5,we.fdmap),Wi(we.fdtree,5),t(we.itree,19,0),t(we.ltree,286,0),t(we.dtree,30,0),t(we.ttree,320,0)})();function Zi(e,t,n){let r=e.length,i=we.rev15;for(let o=0;o>1,a=e[o+1],c=s<<4|a,u=t-a,l=e[o]<>>15-t;n[f]=c,l++}}}function ar(e,t){let n=e.length,r=we.bl_count;for(let s=0;s<=t;s++)r[s]=0;for(let s=1;s>>r}}function Eg(e,t){let n=t===void 0;return t===void 0&&(t=new Uint8Array(e.length>>>2<<3)),{data:e,buf:t,noBuf:n,BFINAL:0,off:0,pos:0}}function Dg(e,t){let{data:n,noBuf:r}=e,{buf:i,BFINAL:o,off:s,pos:a}=e,c=0;for(;o===0&&c>>3)+4,h=n[p-4]|n[p-3]<<8;r&&(i=$c(i,s+h)),i.set(new Uint8Array(n.buffer,n.byteOffset+p,h),s),a=p+h<<3,s+=h;continue}if(r&&(i=$c(i,s+(1<<17))),d===1)u=we.flmap,l=we.fdmap,m=511,f=31;else if(d===2){let p=Wr(n,a,5)+257,h=Wr(n,a+5,5)+1,x=Wr(n,a+10,4)+4;a+=14;for(let _=0;_<38;_+=2)we.itree[_]=0,we.itree[_+1]=0;let y=1;for(let _=0;_y&&(y=b)}a+=3*x,ar(we.itree,y),Zi(we.itree,y,we.imap),u=we.lmap,l=we.dmap,a=Mg(we.imap,(1<>>4;if(!(h>>>8))i[s++]=h;else{if(h===256)break;{let x=s+h-254;if(h>264){let b=we.ldef[h-257];x=s+(b>>>3)+Wr(n,a,b&7),a+=b&7}let y=l[Jc(n,a)&f];a+=y&15;let g=y>>>4,C=we.ddef[g],_=(C>>>4)+Qc(n,a,C&15);for(a+=C&15,r&&(i=$c(i,s+(1<<17)));s>>4;if(c<=15)o[s]=c,s++;else{let u=0,l=0;c===16?(l=3+Wr(r,i,2),i+=2,u=o[s-1]):c===17?(l=3+Wr(r,i,3),i+=3):c===18&&(l=11+Wr(r,i,7),i+=7);let m=s+l;for(;s>>1;for(;oi&&(i=a),o++}for(;o>>3]|e[(t>>>3)+1]<<8)>>>(t&7)&(1<>>3]|e[(t>>>3)+1]<<8|e[(t>>>3)+2]<<16)>>>(t&7)&(1<>>3]|e[(t>>>3)+1]<<8|e[(t>>>3)+2]<<16)>>>(t&7)}function ta(e,t,n){let r=[],i=e.length,o=t.length;for(let p=0;pn&&(Ng(a,n,d),d=n);for(let p=0;pt;r++){let s=e[r].d;e[r].d=t,i+=o-(1<>>n-t;i>0;){let s=e[r].d;s=0;r--)e[r].d===t&&i<0&&(e[r].d--,i++);i!==0&&console.log("debt left")}function kg(e,t,n,r){let{lits:i,strt:o,prev:s}=we;return{data:e,out:t,opt:Rg[r],i:0,pos:n<<3,cvrd:0,dlen:e.length,li:0,lc:0,bs:0,ebits:0,c:0,nc:0,lits:i,strt:o,prev:s}}function Ug(e,t){let{data:n,dlen:r,out:i,opt:o}=e,{i:s,pos:a,cvrd:c,li:u,lc:l,bs:m,ebits:f,c:d,nc:p}=e,{lits:h,strt:x,prev:y}=we,g=Math.min(s+t,r);for(;s14e3||l>26697)&&r-s>100&&(c>>16,b=C&65535,I=Ym(_,we.of0);we.lhst[257+I]++;let E=Ym(b,we.df0);we.dhst[E]++,f+=we.exb[I]+we.dxb[E],h[u]=_<<23|s-c,h[u+1]=b<<16|I<<8|E,u+=2,c=s+_}else we.lhst[n[s]]++;l++}}e.i=s,e.pos=a,e.cvrd=c,e.li=u,e.lc=l,e.bs=m,e.ebits=f,e.c=d,e.nc=p}var Rg=[[0,0,0,0,0],[4,4,8,4,0],[4,5,16,8,0],[4,6,16,16,0],[4,10,16,32,0],[8,16,32,32,0],[8,16,128,128,0],[8,32,128,256,0],[32,128,258,1024,1],[32,258,258,4096,1]];function Zm(e,t,n,r,i){return Ve(this,null,function*(){let o=kg(t,n,r,i),{dlen:s}=o;if(i===0){let{i:p,pos:h}=o;for(;p>>3}for(s>2&&(o.nc=tu(t,0),o.strt[o.nc]=0);o.i>>3})}function Tg(e,t,n,r,i,o){let s=t&32767,a=n[s],c=s-a+32768&32767;if(a===s||r!==tu(e,t-c))return 0;let u=0,l=0,m=Math.min(32767,t);for(;c<=m&&--o!==0&&a!==s;){if(u===0||e[t+u]===e[t+u-c]){let f=Fg(e,t,c);if(f>u){if(u=f,l=c,u>=i)break;c+2d&&(d=y,a=h)}}}s=a,a=n[s],c+=s-a+32768&32767}return u<<16|l}function Fg(e,t,n){if(e[t]!==e[t-n]||e[t+1]!==e[t+1-n]||e[t+2]!==e[t+2-n])return 0;let r=t,i=Math.min(e.length,t+258);for(t+=3;t>>23,L=E+(v&(1<<23)-1);for(;E>16,z=w>>8&255,ie=w&255;c=Eo(257+z,b,a,c),hi(a,c,P-we.of0[z]),c+=we.exb[z],c=Eo(ie,I,a,c),na(a,c,D-we.df0[ie]),c+=we.dxb[ie],E+=P}}c=Eo(256,b,a,c)}return c}function Xm(e,t,n,r,i){let o=i>>>3;return r[o]=n,r[o+1]=n>>>8,r[o+2]=255-r[o],r[o+3]=255-r[o+1],o+=4,r.set(new Uint8Array(e.buffer,t,n),o),i+(n+4<<3)}function Og(){let e=ta(we.lhst,we.ltree,15),t=ta(we.dhst,we.dtree,15),n=[],r=jm(we.ltree,n),i=[],o=jm(we.dtree,i);for(let c=0;c4&&we.itree[(we.ordr[a-1]<<1)+1]===0;)a--;return[e,t,s,r,o,a,n,i]}function Bo(e,t){let n=0;for(let r=0;r15&&(hi(n,r,s),r+=a)}return r}function jm(e,t){let n=e.length;for(;n!==2&&e[n-1]===0;)n-=2;for(let r=0;r>>1,138);u<11?t.push(17,u-3):t.push(18,u-11),r+=u*2-2}else if(i===a&&o===i&&s===i){let c=r+5;for(;c+2>>1,6);t.push(16,u-3),r+=u*2-2}else t.push(i,0)}return n>>>1}function Ym(e,t){let n=0;return t[n|16]<=e&&(n|=16),t[n|8]<=e&&(n|=8),t[n|4]<=e&&(n|=4),t[n|2]<=e&&(n|=2),t[n|1]<=e&&(n|=1),n}function Eo(e,t,n,r){return na(n,r,t[e<<1]),r+t[(e<<1)+1]}function hi(e,t,n){n=n<<(t&7);let r=t>>>3;e[r]|=n,e[r+1]|=n>>>8}function na(e,t,n){n=n<<(t&7);let r=t>>>3;e[r]|=n,e[r+1]|=n>>>8,e[r+2]|=n>>>16}function nu(e,t,n=!1){return Ve(this,null,function*(){let r=Object.create(null),i=new Uint8Array(t);if(or(i,0)!==19280)throw new Error('Invalid ZIP file. A valid ZIP file must start with two magic bytes \\x50\\x4b ("PK" in ASCII).');let o=i.length-4;for(;Zr(i,o)!==101010256;)o--;let s=o;s+=4,s+=4;let a=or(i,s);s+=2,s+=2,s+=4;let c=Zr(i,s);s+=4,s=c;for(let u=0;uGg(n,e,t))}function Gg(e,t,n=!1){return Ve(this,null,function*(){let r=0,i={};for(let m in t){let f=!Hg(m)&&!n,d=t[m],p=Xc(d,0,d.length);i[m]={cpr:f,usize:d.length,crc:p,file:f?yield qg(e,d):d}}for(let m in i)r+=i[m].file.length+30+46+2*Wc(m);r+=22;let o=new Uint8Array(r),s=0,a=[];for(let m in i){let f=i[m];a.push(s),s=$m(o,s,m,f,0)}let c=0,u=s;for(let m in i){let f=i[m];a.push(s),s=$m(o,s,m,f,1,a[c++])}let l=s-u;return sr(o,s,101010256),s+=4,s+=4,Yr(o,s,c),s+=2,Yr(o,s,c),s+=2,sr(o,s,l),s+=4,sr(o,s,u),s+=4,s+=2,o.buffer})}function Hg(e){let t=e.split(".").pop().toLowerCase();return"png,jpg,jpeg,zip".indexOf(t)!==-1}function $m(e,t,n,r,i,o=0){let s=r.file;sr(e,t,i===0?67324752:33639248),t+=4,i===1&&(t+=2),Yr(e,t,20),t+=2,Yr(e,t,0),t+=2,Yr(e,t,r.cpr?8:0),t+=2,sr(e,t,0),t+=4,sr(e,t,r.crc),t+=4,sr(e,t,s.length),t+=4,sr(e,t,r.usize),t+=4,Yr(e,t,Wc(n)),t+=2,Yr(e,t,0),t+=2,i===1&&(t+=2,t+=2,t+=6,sr(e,t,o),t+=4);let a=Hm(e,t,n);return t+=a,i===0&&(e.set(s,t),t+=s.length),t}var Un=function(e){return e[e.None=0]="None",e[e.Gzip=1]="Gzip",e[e.Zip=2]="Zip",e}(Un||{});function Xi(e,t){return jg(e,t)}function iu(e){return typeof e=="string"?t0(e,e,"string"):t0(e.title,e.url,e.type||"string",e.body,e.headers)}function zg(e){if(!pi&&e instanceof FileReader)return e.readyState===FileReader.DONE;if(e instanceof Yi)return e.readyState===Yi.DONE;throw new Error("unknown data type")}function e0(e){return e?"Failed to download data. Possible reasons: Resource is not available, or CORS is not allowed on the server.":"Failed to open file."}function o0(e,t,n){return new Promise((r,i)=>{if(zg(n)){let{error:s}=n;s!=null?i(s??e0(n instanceof Yi)):r(n);return}let o=!1;n.onerror=s=>{if(o)return;let{error:a}=s.target;i(a??e0(n instanceof Yi))},n.onprogress=s=>{if(!(!e.shouldUpdate||o))try{s.lengthComputable?e.update({message:t,isIndeterminate:!1,current:s.loaded,max:s.total}):e.update({message:`${t} ${(s.loaded/1024/1024).toFixed(2)} MB`,isIndeterminate:!0})}catch(a){o=!0,i(a)}},n.onload=s=>{r(n)}})}function s0(e){return/\.gz$/i.test(e)?Un.Gzip:/\.zip$/i.test(e)?Un.Zip:Un.None}var Vg=/^(__MACOSX|.DS_Store)/;function Kg(e,t,n){return Ve(this,null,function*(){switch(n){case Un.None:return t;case Un.Gzip:return Jm(e,t);case Un.Zip:let r=yield nu(e,t.buffer),i=Object.keys(r).filter(o=>!Vg.test(o));if(i.length!==1)throw new Error("can only decompress zip files with a single entry");return r[i[0]]}})}function a0(e,t,n,r){return Ve(this,null,function*(){let i=t instanceof ArrayBuffer?new Uint8Array(t):t;if(i===null)throw new Error("no data given");if(r!==Un.None){if(!(i instanceof Uint8Array))throw new Error("need Uint8Array for decompression");let o=yield Kg(e,i,r);n==="string"?(yield e.update({message:"Decoding text..."}),i=xs(o,0,o.length)):i=o}if(n==="binary"&&i instanceof Uint8Array)return i;if(n==="zip"&&i instanceof Uint8Array)return yield nu(e,i.buffer);if(n==="string"&&typeof i=="string")return i;if(n==="xml"&&typeof i=="string")return new DOMParser().parseFromString(i,"application/xml");if(n==="json"&&typeof i=="string")return JSON.parse(i);throw new Error(`could not get requested response data '${n}'`)})}function jg(e,t){if(pi)return Yg(e,t);let n;return wt.create("Read File",r=>Ve(this,null,function*(){try{n=new FileReader;let i=t==="zip"?Un.None:s0(e.name);t==="binary"||t==="zip"||i!==Un.None?n.readAsArrayBuffer(e):n.readAsText(e),yield r.update({message:"Opening file...",canAbort:!0});let o=yield o0(r,"Reading...",n);return yield r.update({message:"Processing file...",canAbort:!1}),yield a0(r,o.result,t,i)}finally{n=void 0}}),()=>{n&&n.abort()})}function Yg(e,t){return wt.create("Read File",n=>Ve(this,null,function*(){let r=t==="zip"?Un.None:s0(e.name);yield n.update({message:"Opening file...",canAbort:!1});let i;return t==="binary"||t==="zip"||r!==Un.None?i=yield e.arrayBuffer():i=yield e.text(),yield n.update({message:"Processing file...",canAbort:!1}),yield a0(n,i,t,r)}))}var ru=(()=>{class e{static get(){return this.pool.length?this.pool.pop():new Yi}static emptyFunc(){}static deposit(n){this.pool.length=200&&e.status<400){let{response:n}=e;if(ru.deposit(e),(t==="binary"||t==="zip")&&n instanceof ArrayBuffer)return new Uint8Array(n);if(t==="string"&&typeof n=="string")return n;if(t==="xml"&&n instanceof XMLDocument)return n;if(t==="json"&&typeof n=="object")return n;throw new Error(`could not get requested response data '${t}'`)}else throw ru.deposit(e),new Error(`Download failed with status code ${e.status}`)}function Wg(e){switch(e){case"json":return"json";case"xml":return"document";case"string":return"text";case"binary":return"arraybuffer";case"zip":return"arraybuffer"}}function t0(e,t,n,r,i){if(pi&&t.startsWith("file://"))return $g(e,t,n,r,i);let o;return wt.create(e||"Download",s=>Ve(this,null,function*(){if(o=ru.get(),o.open(r?"post":"get",t,!0),i)for(let[u,l]of i)o.setRequestHeader(u,l);o.responseType=Wg(n),o.send(r),yield s.update({message:"Waiting for server...",canAbort:!0});let a=yield o0(s,"Downloading...",o);return o=void 0,yield s.update({message:"Parsing response...",canAbort:!1}),Zg(a,n)}),()=>{o&&(o.abort(),o=void 0)})}var n0;function Xg(){if(!n0)throw new Error("When running in Node.js and reading from files, call mol-util/data-source's setFSModule function first.");return n0}function $g(e,t,n,r,i){if(!pi)throw new Error("This function should only be used when running in Node.js");if(!t.startsWith("file://"))throw new Error("This function is only for URLs with protocol file://");let o=t.substring(7),s=Xg().readFileSync(o),a=new Po([s],"raw-data");return Xi(a,n)}function Iv(e,t,n,r){return Ve(this,null,function*(){let i=n.length,o=new Array(n.length);yield e.update({message:"Downloading...",current:0,max:i});let s=[],a=[],c=0;for(let l=Math.min(i,r);c0;){let l=yield Promise.race(s),m=n[l.index],f=a.indexOf(l.index);if(u++,l.kind==="error"&&!m.canFail)throw new Error(`${m.url}: ${l.error}`);if(e.shouldUpdate&&(yield e.update({message:"Downloading...",current:u,max:i})),o[l.index]=l,s=s.filter(r0,f),a=a.filter(r0,f),c{l.release(u)}}}e.Wrapper=o;function s(c){return typeof c=="string"?c:c.url}e.getUrl=s;function a(c,u,l){return typeof u=="string"?c.tryFindUrl(u,l)||t(u,{body:l}):u}e.getUrlAsset=a})(un||(un={}));var c0=class{constructor(){this._assets=new Map}get assets(){return $o(this._assets.values())}tryFindUrl(t,n){let r=this.assets.values();for(;;){let i=r.next();if(i.done)return;let o=i.value.asset;if(un.isUrl(o)&&o.url===t&&(o.body||"")===(n||""))return o}}set(t,n){this._assets.set(t.id,{asset:t,file:n,refCount:0})}get(t){return this._assets.get(t.id)}delete(t){return this._assets.delete(t.id)}has(t){return this._assets.has(t.id)}resolve(t,n,r=!0){return un.isUrl(t)?wt.create(`Download ${t.title||t.url}`,i=>Ve(this,null,function*(){if(this._assets.has(t.id)){let a=this._assets.get(t.id);return a.refCount++,un.Wrapper(yield Xi(a.file,n).runInContext(i),t,this)}if(!r)return un.Wrapper(yield iu(Ct(Le({},t),{type:n})).runInContext(i),t,this);let o=yield iu(Ct(Le({},t),{type:"binary"})).runInContext(i),s=new Po([o],"raw-data");return this._assets.set(t.id,{asset:t,file:s,refCount:1}),un.Wrapper(yield Xi(s,n).runInContext(i),t,this)})):wt.create(`Read ${t.name}`,i=>Ve(this,null,function*(){if(this._assets.has(t.id)){let o=this._assets.get(t.id);return o.refCount++,un.Wrapper(yield Xi(o.file,n).runInContext(i),t,this)}if(!(t.file instanceof Po))throw new Error(`Cannot resolve file asset '${t.name}' (${t.id})`);return r&&this._assets.set(t.id,{asset:t,file:t.file,refCount:1}),un.Wrapper(yield Xi(t.file,n).runInContext(i),t,this)}))}release(t){let n=this._assets.get(t.id);n&&(n.refCount--,n.refCount<=0&&this._assets.delete(t.id))}clear(){this._assets.clear()}dispose(){this.clear()}};var Et;(function(e){e.Essential={isEssential:!0};function t(q,F){return F&&(F.label&&(q.label=F.label),F.description&&(q.description=F.description),F.legend&&(q.legend=F.legend),F.fieldLabels&&(q.fieldLabels=F.fieldLabels),F.isHidden&&(q.isHidden=F.isHidden),F.shortLabel&&(q.shortLabel=F.shortLabel),F.twoColumns&&(q.twoColumns=F.twoColumns),F.isEssential&&(q.isEssential=F.isEssential),F.category&&(q.category=F.category),F.hideIf&&(q.hideIf=F.hideIf),F.help&&(q.help=F.help)),q}function n(q){let F=Le({},q);return F.isOptional=!0,F}e.Optional=n;function r(q,F){return t({type:"value",defaultValue:q},F)}e.Value=r;function i(q,F,W){return t({type:"select",defaultValue:ne(q,F),options:F,cycle:W?.cycle},W)}e.Select=i;function o(q,F,W){let re=t({type:"multi-select",defaultValue:q,options:F},W);return W?.emptyValue&&(re.emptyValue=W.emptyValue),re}e.MultiSelect=o;function s(q,F){return t({type:"boolean",defaultValue:q},F)}e.Boolean=s;function a(q="",F){return t({type:"text",defaultValue:q,multiline:F?.multiline,placeholder:F?.placeholder,disableInteractiveUpdates:F?.disableInteractiveUpdates},F)}e.Text=a;function c(q,F){let W=t({type:"color",defaultValue:q},F);return F?.isExpanded&&(W.isExpanded=F.isExpanded),W}e.Color=c;function u(q,F){let W;if(typeof q=="string"){let re=vs(q);W={kind:re.type!=="qualitative"?"interpolate":"set",colors:re.list}}else W=q;return t({type:"color-list",presetKind:F?.presetKind||"all",defaultValue:W,offsets:!!F?.offsets},F)}e.ColorList=u;function l(q,F,W){return t(h({type:"vec3",defaultValue:q},F),W)}e.Vec3=l;function m(q,F){return t({type:"mat4",defaultValue:q},F)}e.Mat4=m;function f(q,F){let W=typeof q=="string"?un.Url(q):un.Url(q.url,{body:q.body});return t({type:"url",defaultValue:W},F)}e.Url=f;function d(q){let F=t({type:"file",defaultValue:null},q);return q?.accept&&(F.accept=q.accept),F}e.File=d;function p(q){let F=t({type:"file-list",defaultValue:null},q);return q?.accept&&(F.accept=q.accept),F}e.FileList=p;function h(q,F){return F&&(typeof F.min<"u"&&(q.min=F.min),typeof F.max<"u"&&(q.max=F.max),typeof F.step<"u"&&(q.step=F.step)),q}function x(q,F,W){let re=t(h({type:"number",defaultValue:q},F),W);return W?.immediateUpdate&&(re.immediateUpdate=!0),re}e.Numeric=x;function y(q,F,W){return t(h({type:"interval",defaultValue:q},F),W)}e.Interval=y;function g(q,F){let W=t({type:"line-graph",defaultValue:q},F);return F?.getVolume&&(W.getVolume=F.getVolume),W}e.LineGraph=g;function C(q,F){let W=t({type:"group",defaultValue:F?.customDefault||O(q),params:q},F);return F?.presets&&(W.presets=F.presets),F?.isExpanded&&(W.isExpanded=F.isExpanded),F?.isFlat&&(W.isFlat=F.isFlat),F?.pivot&&(W.pivot=F.pivot),W}e.Group=C;function _(q){return C({},q)}e.EmptyGroup=_;function b(q,F,W,re){let _e=ne(q,F);return t({type:"mapped",defaultValue:{name:_e,params:W(_e).defaultValue},select:i(_e,F,re),map:W},re)}e.Mapped=b;function I(q,F,W){let re=W?.options?W.options:Object.keys(F).map(Ae=>[Ae,F[Ae].label||Lr(Ae)]),_e=ne(q,re);return t({type:"mapped",defaultValue:{name:_e,params:F[_e].defaultValue},select:i(_e,re,W),map:Ae=>F[Ae]},W)}e.MappedStatic=I;function E(q,F,W){return t({type:"object-list",element:q,getLabel:F,ctor:S,defaultValue:W?.defaultValue||[]},W)}e.ObjectList=E;function S(){return O(this.element)}function v(){throw new Error("getValue not set. Fix runtime.")}function P(q,F,W){var re;return t({type:"value-ref",defaultValue:{ref:(re=W?.defaultRef)!==null&&re!==void 0?re:"",getValue:v},getOptions:q,resolveRef:F},W)}e.ValueRef=P;function L(q){var F;return t({type:"data-ref",defaultValue:{ref:(F=q?.defaultRef)!==null&&F!==void 0?F:"",getValue:v}},q)}e.DataRef=L;function w(q,F,W){return t({type:"converted",defaultValue:F(W.defaultValue),converted:W,fromValue:q,toValue:F},W)}e.Converted=w;function D(q,F,W,re,_e){let Ae=Object.keys(F).map(Ze=>[Ze,Ze]);return t({type:"conditioned",select:i(W(q),Ae,_e),defaultValue:q,conditionParams:F,conditionForValue:W,conditionedValue:re},_e)}e.Conditioned=D;function z(q,F){return t({type:"script",defaultValue:q},F)}e.Script=z;function ie(q){return 0}e.For=ie;function O(q){let F={};for(let W of Object.keys(q))q[W].isOptional||(F[W]=q[W].defaultValue);return F}e.getDefaultValues=O;function Q(q,F,W){return()=>q(F,W)}function K(q,F,W){if(F){if(q.type==="value-ref"){let re=F;re.ref?re.getValue=Q(q.resolveRef,re.ref,W):re.getValue=()=>{throw new Error("Unset ref in ValueRef value.")}}else if(q.type==="data-ref"){let re=F;re.ref?re.getValue=Q(W,re.ref,W):re.getValue=()=>{throw new Error("Unset ref in ValueRef value.")}}else if(q.type==="group")fe(q.params,F,W);else if(q.type==="mapped"){let re=F,_e=q.map(re.name);K(_e,re.params,W)}else if(q.type==="object-list"){if(!se(q.element))return;for(let re of F)fe(q.element,re,W)}}}function Z(q){if(q.type==="value-ref"||q.type==="data-ref")return!0;if(q.type==="group"){if(se(q.params))return!0}else if(q.type==="mapped"){for(let[F]of q.select.options)if(Z(q.map(F)))return!0}else if(q.type==="object-list")return se(q.element);return!1}function se(q){for(let F of Object.keys(q))if(Z(q[F]))return!0;return!1}function fe(q,F,W){for(let re of Object.keys(q))K(q[re],F?.[re],W)}e.resolveRefs=fe;function Ce(q,F){for(let W of Object.keys(q))q[W].isOptional||(q[W].defaultValue=F[W])}e.setDefaultValues=Ce;function xe(q){return os(q)}e.clone=xe;function H(q,F){}e.validate=H;function $(q,F,W){if(F===W)return!0;if(typeof F!="object"||typeof W!="object")return!1;for(let re of Object.keys(q))if(!de(q[re],F[re],W[re]))return!1;return!0}e.areEqual=$;function de(q,F,W){if(F===W)return!0;if(q.type==="group")return $(q.params,F,W);if(q.type==="mapped"){let re=F,_e=W;if(re.name!==_e.name)return!1;let Ae=q.map(re.name);return de(Ae,re.params,_e.params)}else if(q.type==="multi-select"){let re=F,_e=W;if(re.length!==_e.length)return!1;if(re.length<10){for(let Ae=0,Ze=re.length;Ae"u")return W?q.defaultValue:void 0;if(!k(q.select,re.name))return q.defaultValue;let _e=q.map(re.name);return{name:re.name,params:R(_e,re.params,W)}}else{if(q.type==="select")return k(q,F)?F:q.defaultValue;if(q.type==="multi-select"){if(!Array.isArray(F))return q.defaultValue;let re=F.filter(function(_e){return k(this,_e)},q);return F.length>0&&re.length===0?q.defaultValue:re}else if(q.type==="object-list")return Array.isArray(F)?F.map(re=>V(q.element,re,W?"all":"skip")):q.defaultValue}return F}function V(q,F,W){if(typeof F!="object"||F===null)return W?O(q):F;let re=Object.create(null);for(let _e of Object.keys(q)){let Ae=q[_e];F[_e]===void 0?W==="all"&&(re[_e]=Ae.defaultValue):re[_e]=R(Ae,F[_e],W!=="skip")}return re}e.normalizeParams=V;function j(q,F){let W=[];for(let re of Object.keys(q))if(!F)typeof q[re]=="string"?W.push([re,q[re]]):W.push([re,F===null?re:Lr(re)]);else{let _e=F(re,q[re]);W.push(typeof _e=="string"?[re,_e]:[re,_e[0],_e[1]])}return W}e.objectToOptions=j;function oe(q,F){let W=[];for(let re of q)F?W.push([re,F(re)]):W.push([re,F===null?re:Lr(re)]);return W}e.arrayToOptions=oe;function ae(q,F){for(let W of q.options)if(W[0]===F)return W[1];return""}e.optionLabel=ae;function ne(q,F){for(let W of F)if(W[0]===q)return q;return F.length>0?F[0][0]:void 0}})(Et||(Et={}));function u0(e){let{unit:t,flags:n,proteinInfo:r}=e,i=t.conformation,{traceElementIndex:o}=t.model.atomicHierarchy.derived.residue,{residueIndices:s,nIndices:a}=r,c=s.length,u=(y,g)=>y===-1?N.setNaN(g):i.position(y,g),l=N(),m=N(),f=N(),d=N(),p=N(),h=N(),x=N();e:for(let y=2;y6.25)continue e}let g=s[y-2],C=s[y],_=s[y+2],b=o[g],I=o[C],E=o[_];u(b,l),u(I,m),u(E,f),N.sub(h,l,m),N.sub(x,m,f);let S=On(N.angle(h,x));S&&S>70&&(n[y]|=32)}}var Qg=9,ra=-27.888,Jg=-.5,l0=-9.9;function ey(e,t,n,r){let i=N.distance(e,r),o=N.distance(t,r),s=N.distance(t,n),a=N.distance(e,n),c=ra/i-ra/o,u=ra/s-ra/a,l=c+u;return lJg||(f[f.length]=S,d[d.length]=O,p[p.length]=Z)}}return ty(m,f,d,p)}function ty(e,t,n,r){let i=new Jt.DirectedEdgeBuilder(e,t,n),o=new Float32Array(i.slotCount);for(let s=0,a=i.edgeCount;s0&&(t.secondStart-e.secondEnd<6&&t.firstStart-e.firstEnd<3||t.secondStart-e.secondEnd<3)}function h0(e){let{bridges:t,ladders:n}=e;for(let r=0;rd||(a=u+1,c=d,a!==c&&n.getDirectedEdgeIndex(c,a+1)!==-1&&(r[a]|=2,r[c]|=2,i[i.length]=new _i(a,c,0)),a=u,c=d-1,a!==c&&n.getDirectedEdgeIndex(c-1,a)!==-1&&(r[a]|=2,r[c]|=2,i[i.length]=new _i(c,a,0)),a=u,c=d,a!==c&&n.getDirectedEdgeIndex(c,a)!==-1&&(r[a]|=2,r[c]|=2,i[i.length]=new _i(c,a,1)),a=u+1,c=d-1,a!==c&&n.getDirectedEdgeIndex(c-1,a+1)!==-1&&(r[a]|=2,r[c]|=2,i[i.length]=new _i(c,a,1)))}i.sort((u,l)=>u.partner1>l.partner1?1:u.partner1b===-1?N.setNaN(I):o.position(b,I),l=N(),m=N(),f=N(),d=N(),p=N(),h=N(),x=N(),y=N(),g=N();if(c===0)return{phi:new Float32Array(0),psi:new Float32Array(0)};let C=new Float32Array(c-1),_=new Float32Array(c-1);u(-1,l),u(-1,m),u(-1,f),u(n[0],d),u(a[i[0]],p),u(r[0],h),u(n[1],x),u(a[i[1]],y),u(r[1],g);for(let b=0;ble.indexOf(r,C);for(let C=0,_=r.length;C<_;++C){let b=p[C];h[C]=b;let I=m(a[C]);(y.length===0||I!==y[y.length-1].flags)&&(y[y.length]=iy(oy(b),a[C],m)),x[C]=y.length-1}return ea(h,x,y,g)})}function iy(e,t,n){return e==="helix"?{kind:"helix",flags:n(t)}:e==="sheet"?{kind:"sheet",flags:n(t)}:e==="turn"||e==="bend"?{kind:"turn",flags:n(t)}:{kind:"none"}}function oy(e){return e===kt.SecondaryStructureDssp.H||e===kt.SecondaryStructureDssp.G||e===kt.SecondaryStructureDssp.I?"helix":e===kt.SecondaryStructureDssp.B||e===kt.SecondaryStructureDssp.E?"sheet":e===kt.SecondaryStructureDssp.T?"turn":e===kt.SecondaryStructureDssp.S?"bend":"none"}function sy(e){return $e.is(e,1)?kt.SecondaryStructureDssp.H:$e.is(e,4)?kt.SecondaryStructureDssp.E:$e.is(e,2)?kt.SecondaryStructureDssp.B:$e.is(e,8)?kt.SecondaryStructureDssp.G:$e.is(e,16)?kt.SecondaryStructureDssp.I:$e.is(e,64)?kt.SecondaryStructureDssp.T:$e.is(e,32)?kt.SecondaryStructureDssp.S:0}function ay(e){return $e.is(e,1)?"H":$e.is(e,4)?"E":$e.is(e,2)?"B":$e.is(e,8)?"G":$e.is(e,16)?"I":$e.is(e,64)?"T":$e.is(e,32)?"S":"-"}function cy(e){return $e.is(e,16)?kt.SecondaryStructureDssp.I:$e.is(e,1)?kt.SecondaryStructureDssp.H:$e.is(e,4)?kt.SecondaryStructureDssp.E:$e.is(e,2)?kt.SecondaryStructureDssp.B:$e.is(e,8)?kt.SecondaryStructureDssp.G:$e.is(e,64)?kt.SecondaryStructureDssp.T:$e.is(e,32)?kt.SecondaryStructureDssp.S:0}function uy(e){return $e.is(e,16)?"I":$e.is(e,1)?"H":$e.is(e,4)?"E":$e.is(e,2)?"B":$e.is(e,8)?"G":$e.is(e,64)?"T":$e.is(e,32)?"S":"-"}function ly(e,t){let n=new Uint32Array(e.length);for(let r=0,i=e.length;r(i in c[o]||(c[o][i]={props:Le({},Et.getDefaultValues(r.getParams(c))),data:Zn.create(void 0)}),c[o][i]),a=(c,u,l)=>{let m=s(c);c[o][i]={props:u,data:Zn.withValue(m.data,l)}};return{label:r.label,descriptor:r.descriptor,isHidden:r.isHidden,getParams:c=>{let u=Et.clone(r.getParams(c));return Et.setDefaultValues(u,s(c).props),u},defaultParams:r.defaultParams,isApplicable:r.isApplicable,attach:(f,d,...p)=>Ve(this,[f,d,...p],function*(c,u,l={},m){m&&u.customPropertyDescriptors.reference(r.descriptor,!0),r.type==="root"&&(u=u.root);let h=s(u.root).props,x=s(u),y=Et.merge(r.defaultParams,h,l);if(x.data.value&&Et.areEqual(r.defaultParams,x.props,y))return;let{value:g,assets:C}=yield r.obtain(c,u,y);u.customPropertyDescriptors.add(r.descriptor),u.customPropertyDescriptors.assets(r.descriptor,C),a(u,y,g)}),ref:(c,u)=>c.customPropertyDescriptors.reference(r.descriptor,u),get:c=>s(c).data,set:(c,u={},l)=>{r.type==="root"&&(c=c.root);let m=s(c),f=Et.merge(r.defaultParams,m.props,u);Et.areEqual(r.defaultParams,m.props,f)||(a(c,f,l),c.customPropertyDescriptors.assets(r.descriptor))},props:c=>s(c).props}}e.createProvider=t;function n(r,i,o){let s={value:Et.Value(o,{isHidden:!0})};return t({label:Lr(r),descriptor:xn({name:r}),isHidden:!0,type:i,defaultParams:s,getParams:()=>({value:Et.Value(o,{isHidden:!0})}),isApplicable:()=>!0,obtain:(a,c,u)=>Ve(this,null,function*(){return Le(Le({},Et.getDefaultValues(s)),u)})})}e.createSimple=n})(gi||(gi={}));var zn;(function(e){e.Descriptor={name:"model_secondary_structure"},e.Provider=en.create(e.Descriptor);function t(n,r,i){let o=new Map,s=[{kind:"none"}],a=fy(n,r);dy(n,a,o,s),my(r,a,o,n._rowCount,s);let c=i.residues._rowCount,u=m=>m,l={type:new Int32Array(c),key:new Int32Array(c),elements:s};return o.size>0&&hy(i,a,o,l),ea(l.type,l.key,l.elements,u)}e.fromStruct=t})(zn||(zn={}));function fy(e,t){if(e._rowCount>0){if(e.beg_label_seq_id.valueKind(0)!==0||e.end_label_seq_id.valueKind(0)!==0)return"auth"}else if(t&&(t.beg_label_seq_id.valueKind(0)!==0||t.end_label_seq_id.valueKind(0)!==0))return"auth";return"label"}function dy(e,t,n,r){if(!e._rowCount)return;let{beg_label_asym_id:i,beg_label_seq_id:o,beg_auth_seq_id:s,pdbx_beg_PDB_ins_code:a}=e,{end_label_seq_id:c,end_auth_seq_id:u,pdbx_end_PDB_ins_code:l}=e,{pdbx_PDB_helix_class:m,conf_type_id:f,details:d}=e,p=t==="label"?o:s,h=t==="label"?c:u;for(let x=0,y=e._rowCount;xu||h===u&&c.value(p)===l)break;p++}}function hy(e,t,n,r){let{count:i}=e.chainAtomSegments,{label_asym_id:o}=e.chains,{auth_seq_id:s,label_seq_id:a,pdbx_PDB_ins_code:c}=e.residues,u=t==="label"?a:s;for(let l=0;l!0,obtain:(e,t,n)=>Ve(void 0,null,function*(){let r=Le(Le({},Et.getDefaultValues(I0)),n);switch(r.type.name){case"dssp":return{value:yield _y(t,r.type.params)};case"model":return{value:yield gy(t)}}})});function _y(e,t){return Ve(this,null,function*(){let n=new Map;for(let r=0,i=e.unitSymmetryGroups.length;r!0,false:e=>!1,zero:e=>0};function Ft(){throw new Error("Property only available for atomic models.")}function wr(e){throw e?new Error(`Property only available for coarse models (${e}).`):new Error("Property only available for coarse models.")}var Do={key:e=>e.element,x:e=>e.unit.conformation.x(e.element),y:e=>e.unit.conformation.y(e.element),z:e=>e.unit.conformation.z(e.element),id:e=>ge.isAtomic(e.unit)?e.unit.model.atomicConformation.atomId.value(e.element):Ft(),occupancy:e=>ge.isAtomic(e.unit)?e.unit.model.atomicConformation.occupancy.value(e.element):Ft(),B_iso_or_equiv:e=>ge.isAtomic(e.unit)?e.unit.model.atomicConformation.B_iso_or_equiv.value(e.element):Ft(),sourceIndex:e=>ge.isAtomic(e.unit)?e.unit.model.atomicHierarchy.atomSourceIndex.value(e.element):e.element,type_symbol:e=>ge.isAtomic(e.unit)?e.unit.model.atomicHierarchy.atoms.type_symbol.value(e.element):Ft(),label_atom_id:e=>ge.isAtomic(e.unit)?e.unit.model.atomicHierarchy.atoms.label_atom_id.value(e.element):Ft(),auth_atom_id:e=>ge.isAtomic(e.unit)?e.unit.model.atomicHierarchy.atoms.auth_atom_id.value(e.element):Ft(),label_alt_id:e=>ge.isAtomic(e.unit)?e.unit.model.atomicHierarchy.atoms.label_alt_id.value(e.element):Ft(),label_comp_id:ia,auth_comp_id:e=>ge.isAtomic(e.unit)?e.unit.model.atomicHierarchy.atoms.auth_comp_id.value(e.element):Ft(),pdbx_formal_charge:e=>ge.isAtomic(e.unit)?e.unit.model.atomicHierarchy.atoms.pdbx_formal_charge.value(e.element):Ft(),vdw_radius:e=>ge.isAtomic(e.unit)?hd(e.unit.model.atomicHierarchy.atoms.type_symbol.value(e.element)):Ft()};function ia(e){return ge.isAtomic(e.unit)||Ft(),e.unit.model.atomicHierarchy.atoms.label_comp_id.value(e.element)}function su(e){return ge.isAtomic(e.unit)?e.unit.model.atomicHierarchy.residues.label_seq_id.value(e.unit.residueIndex[e.element]):Ft()}function xy(e){ge.isAtomic(e.unit)||Ft();let t=e.unit.model.sequence.byEntityKey[ln(e)];return t&&t.sequence.microHet.has(su(e))}function v0(e){ge.isAtomic(e.unit)||Ft();let t=e.unit.model.sequence.byEntityKey[ln(e)];return t?t.sequence.microHet.get(su(e))||[ia(e)]:[ia(e)]}var Ay={key:e=>ge.isAtomic(e.unit)?e.unit.residueIndex[e.element]:Ft(),group_PDB:e=>ge.isAtomic(e.unit)?e.unit.model.atomicHierarchy.residues.group_PDB.value(e.unit.residueIndex[e.element]):Ft(),label_seq_id:su,auth_seq_id:e=>ge.isAtomic(e.unit)?e.unit.model.atomicHierarchy.residues.auth_seq_id.value(e.unit.residueIndex[e.element]):Ft(),pdbx_PDB_ins_code:e=>ge.isAtomic(e.unit)?e.unit.model.atomicHierarchy.residues.pdbx_PDB_ins_code.value(e.unit.residueIndex[e.element]):Ft(),isNonStandard:e=>ge.isAtomic(e.unit)?v0(e).some(t=>e.unit.model.properties.chemicalComponentMap.get(t).mon_nstd_flag[0]==="n"):Ft(),hasMicroheterogeneity:xy,microheterogeneityCompIds:v0,secondary_structure_type:e=>{var t;ge.isAtomic(e.unit)||Ft();let n=(t=ou.get(e.structure).value)===null||t===void 0?void 0:t.get(e.unit.invariantId);return n?n.type[n.getIndex(e.unit.residueIndex[e.element])]:536870912},secondary_structure_key:e=>{var t;ge.isAtomic(e.unit)||Ft();let n=(t=ou.get(e.structure).value)===null||t===void 0?void 0:t.get(e.unit.invariantId);return n?n.key[n.getIndex(e.unit.residueIndex[e.element])]:-1},chem_comp_type:e=>ge.isAtomic(e.unit)?e.unit.model.properties.chemicalComponentMap.get(ia(e)).type:Ft()},by={key:e=>ge.isAtomic(e.unit)?e.unit.chainIndex[e.element]:Ft(),label_asym_id:e=>ge.isAtomic(e.unit)?e.unit.model.atomicHierarchy.chains.label_asym_id.value(e.unit.chainIndex[e.element]):Ft(),auth_asym_id:e=>ge.isAtomic(e.unit)?e.unit.model.atomicHierarchy.chains.auth_asym_id.value(e.unit.chainIndex[e.element]):Ft(),label_entity_id:e=>ge.isAtomic(e.unit)?e.unit.model.atomicHierarchy.chains.label_entity_id.value(e.unit.chainIndex[e.element]):Ft()},Cy={key:Do.key,entityKey:e=>ge.isCoarse(e.unit)?e.unit.coarseElements.entityKey[e.element]:wr(),x:Do.x,y:Do.y,z:Do.z,asym_id:e=>ge.isCoarse(e.unit)?e.unit.coarseElements.asym_id.value(e.element):wr(),entity_id:e=>ge.isCoarse(e.unit)?e.unit.coarseElements.entity_id.value(e.element):wr(),seq_id_begin:e=>ge.isCoarse(e.unit)?e.unit.coarseElements.seq_id_begin.value(e.element):wr(),seq_id_end:e=>ge.isCoarse(e.unit)?e.unit.coarseElements.seq_id_end.value(e.element):wr(),sphere_radius:e=>ge.isSpheres(e.unit)?e.unit.coarseConformation.radius[e.element]:wr("spheres"),sphere_rmsf:e=>ge.isSpheres(e.unit)?e.unit.coarseConformation.rmsf[e.element]:wr("spheres"),gaussian_weight:e=>ge.isGaussians(e.unit)?e.unit.coarseConformation.weight[e.element]:wr("gaussians"),gaussian_covariance_matrix:e=>ge.isGaussians(e.unit)?e.unit.coarseConformation.covariance_matrix[e.element]:wr("gaussians")};function ln(e){switch(e.unit.kind){case 0:return e.unit.model.atomicHierarchy.index.getEntityFromChain(e.unit.chainIndex[e.element]);case 1:return e.unit.model.coarseHierarchy.spheres.entityKey[e.element];case 2:return e.unit.model.coarseHierarchy.gaussians.entityKey[e.element]}}var Sy={key:ln,id:e=>e.unit.model.entities.data.id.value(ln(e)),type:e=>e.unit.model.entities.data.type.value(ln(e)),src_method:e=>e.unit.model.entities.data.src_method.value(ln(e)),pdbx_description:e=>e.unit.model.entities.data.pdbx_description.value(ln(e)),formula_weight:e=>e.unit.model.entities.data.formula_weight.value(ln(e)),pdbx_number_of_molecules:e=>e.unit.model.entities.data.pdbx_number_of_molecules.value(ln(e)),details:e=>e.unit.model.entities.data.details.value(ln(e)),pdbx_mutation:e=>e.unit.model.entities.data.pdbx_mutation.value(ln(e)),pdbx_fragment:e=>e.unit.model.entities.data.pdbx_fragment.value(ln(e)),pdbx_ec:e=>e.unit.model.entities.data.pdbx_ec.value(ln(e)),subtype:e=>e.unit.model.entities.subtype.value(ln(e)),prd_id:e=>{var t,n;return(n=(t=e.unit.model.entities.prd_id)===null||t===void 0?void 0:t.value(ln(e)))!==null&&n!==void 0?n:""}},Iy=[],wy={id:e=>e.unit.id,chainGroupId:e=>e.unit.chainGroupId,multiChain:e=>ge.Traits.is(e.unit.traits,ge.Trait.MultiChain),object_primitive:e=>e.unit.objectPrimitive,operator_name:e=>e.unit.conformation.operator.name,operator_key:e=>e.unit.conformation.operator.key,model_index:e=>e.unit.model.modelNum,model_label:e=>e.unit.model.label,model_entry_id:e=>e.unit.model.entryId,hkl:e=>e.unit.conformation.operator.hkl,spgrOp:e=>e.unit.conformation.operator.spgrOp,model_num:e=>e.unit.model.modelNum,pdbx_struct_assembly_id:e=>{var t;return((t=e.unit.conformation.operator.assembly)===null||t===void 0?void 0:t.id)||xt.DefaultName},pdbx_struct_oper_list_ids:e=>{var t;return((t=e.unit.conformation.operator.assembly)===null||t===void 0?void 0:t.operList)||Iy},struct_ncs_oper_id:e=>e.unit.conformation.operator.ncsId},Ye={constant:yy,atom:Do,residue:Ay,chain:by,entity:Sy,unit:wy,coarse:Cy};var ur;(function(e){function t(l,m){return wt.create("Build Assembly",f=>Ve(this,null,function*(){let d=l.models;if(d.length!==1)throw new Error("Can only build assemblies from structures based on 1 model.");let p=Io.findAssembly(d[0],m);if(!p)throw new Error(`Assembly '${m}' is not defined.`);let h=xt.create(p.id,ke.identity(),{assembly:{id:p.id,operId:0,operList:[]}}),x=ot.Builder({coordinateSystem:h,label:l.label,dynamicBonds:l.dynamicBonds}),y=new fi(l);for(let g of p.operatorGroups){let C=g.selector(y);if(Be.structureCount(C)===0)continue;let{units:_}=Be.unionStructure(C);for(let b of g.operators)for(let I of _)x.addWithOperator(I,b)}return x.getStructure()}))}e.buildAssembly=t;function n(l,m,f){return wt.create("Build Symmetry Assembly",d=>Ve(this,null,function*(){let p=l.models;if(p.length!==1)throw new Error("Can only build symmetry assemblies from structures based on 1 model.");let h=N(),x=ot.Builder({label:l.label,representativeModel:p[0],dynamicBonds:l.dynamicBonds}),y=new fi(l);for(let g of m){let _=vy(g.asymIds)(y);if(Be.structureCount(_)===0)continue;let{units:b}=Be.unionStructure(_);for(let{index:I,shift:[E,S,v]}of g.operators){let P=P0(f,I,E,S,v,h);for(let L of b)for(let w of P)x.addWithOperator(L,w)}}return x.getStructure()}))}e.buildSymmetryAssembly=n;function r(l,m){return wt.create("Find Symmetry Mates",f=>Dy(f,l,m))}e.builderSymmetryMates=r;function i(l,m,f){return wt.create("Build Symmetry",d=>Ey(d,l,m,f))}e.buildSymmetryRange=i;function o(l){return wt.create("Build NCS",m=>By(m,l))}e.buildNcs=o;function s(l,m){return l.invariantId===m.invariantId&&l.model.id===m.model.id&&le.areEqual(l.elements,m.elements)}e.areUnitsEquivalent=s;function a(){return Yu(ge.hashUnit,s)}e.UnitEquivalenceBuilder=a;function c(l){let m=a();for(let d of l.units)m.add(d.id,d);let f=[];for(let d of m.groups)f.push(ge.SymmetryGroup(d.map(p=>l.unitMap.get(p))));return f}e.computeTransformGroups=c;function u(l,m){if(l.length!==m.length)return!1;for(let f=0,d=l.length;fYe.unit.operator_name(t.element),xt.DefaultName),cr.pred.inSet(t=>Ye.chain.label_asym_id(t.element),e))})}function P0(e,t,n,r,i,o){let{spacegroup:s,ncsOperators:a}=e,c=[],{toFractional:u}=s.cell,l=N.transformMat4(N(),o,u),m=sn.getSymmetryOperatorRef(s,t,n,r,i,l);if(a&&a.length)for(let f=0,d=a.length;f=0&&t[1]<=0&&n[1]>=0&&t[2]<=0&&n[2]>=0&&(a[0]=sn.getSymmetryOperator(i,0,0,0,0));for(let c=0;c0?It.create():this.currentUnit}addElement(t){It.add(this.currentUnit,t,t)&&this.elementCount++}commitUnit(){this.currentUnit.array.length===0||this.unitMap.has(this.parentId)||(this.ids[this.ids.length]=this.parentId,this.unitMap.set(this.parentId,this.currentUnit),this.parentId=-1)}getStructure(){if(this.isEmpty)return ot.Empty;let t=[];jt(this.ids);let n=ur.UnitEquivalenceBuilder();for(let r=0,i=this.ids.length;r1&&jt(a);let u=s.getChild(le.ofSortedArray(a)),l=n.add(u.id,u);u!==l&&(u=l.applyOperator(u.id,u.conformation.operator,!0)),t[t.length]=u}return ot.create(t,{parent:this.parent})}get isEmpty(){return this.elementCount===0}constructor(t){this.parent=t,this.ids=[],this.unitMap=yn.Mutable(),this.parentId=-1,this.currentUnit=It.create(),this.elementCount=0}};var Xr=class{add(t){let n=this.index.get(t.label_asym_id);n||(n=new Map,this.index.set(t.label_asym_id,n));let r=n.get(t.label_seq_id);return r||(r=[],n.set(t.label_seq_id,r)),this._find(t,r)?!1:(r.push(t),!0)}hasLabelAsymId(t){return this.index.has(t)}has(t){var n,r;let i=D0(t);if(!this.index.has(i))return;let o=this.index.get(i),s=M0(t);if(!o.has(s))return;let a=o.get(s),c=N0(t),u=k0(t),l=U0(t),m=(n=R0(t))!==null&&n!==void 0?n:"1_555";for(let f of a)if(!(f.label_comp_id!==c||f.label_alt_id!==u||f.ins_code!==l)&&!(this.checkOperator&&((r=f.operator_name)!==null&&r!==void 0?r:"1_555")!==m))return f}static getLabel(t,n=!1){var r;return`${t.label_asym_id} ${t.label_comp_id} ${t.label_seq_id}:${t.ins_code}:${t.label_alt_id}${n?" "+((r=t.operator_name)!==null&&r!==void 0?r:"1_555"):""}`}static getEntryFromLocation(t){var n;return{label_asym_id:D0(t),label_comp_id:N0(t),label_seq_id:M0(t),label_alt_id:k0(t),ins_code:U0(t),operator_name:(n=R0(t))!==null&&n!==void 0?n:"1_555"}}_find(t,n){var r,i;for(let o of n)if(!(o.label_comp_id!==t.label_comp_id||o.label_alt_id!==t.label_alt_id||o.ins_code!==t.ins_code)&&!(this.checkOperator&&((r=o.operator_name)!==null&&r!==void 0?r:"1_555")!==((i=t.operator_name)!==null&&i!==void 0?i:"1_555")))return!0;return!1}constructor(t){var n;this.index=new Map,this.checkOperator=!1,this.checkOperator=(n=t?.checkOperator)!==null&&n!==void 0?n:!1}},D0=Ye.chain.label_asym_id,M0=Ye.residue.label_seq_id,N0=Ye.atom.label_comp_id,k0=Ye.atom.label_alt_id,U0=Ye.residue.pdbx_PDB_ins_code,R0=Ye.unit.operator_name;function $i(e,t,n){let r=t.subsetBuilder(!0);for(let i of n.units){if(i.kind!==0){r.setUnit(i.id,i.elements);continue}let{residueAtomSegments:o}=i.model.atomicHierarchy,s=t.unitMap.get(i.id).elements,a=i.elements;r.beginUnit(i.id);let c=We.transientSegments(o,a);for(;c.hasNext;){let u=c.move().index;for(let l=o.offsets[u],m=o.offsets[u+1];l(e.element.structure=n.structure,e.element.unit=n.unit,e.element.element=n.element,t(e))}function ky(e,t){let n=0;e.element.structure=e.inputStructure;for(let r of e.inputStructure.units){e.element.unit=r;let i=r.elements;for(let o=0,s=i.length;on&&(n=c)}}return e.throwIfTimedOut(),n}function Uy(e,t){return function(r){let i=e(r);if(t.elementRadius){let o=Ct(Le({},t),{elementRadius:t.elementRadius,elementRadiusClosure:Ny(r,t.elementRadius),sourceMaxRadius:ky(r,t.elementRadius)});if(Be.isSingleton(i)){let s=T0(r,r.inputStructure,i.structure,o);return Be.Singletons(r.inputStructure,s)}else{let s=new Vi(r.inputStructure);for(let a of i.structures)s.add(T0(r,r.inputStructure,a,o));return s.getSelection()}}if(Be.isSingleton(i)){let o=au(r,r.inputStructure,i.structure,t);return Be.Singletons(r.inputStructure,o)}else{let o=new Vi(r.inputStructure);for(let s of i.structures)o.add(au(r,r.inputStructure,s,t));return o.getSelection()}}}function Ry(e,t){return function(r){let i=e(r);if(Be.structureCount(i)===0)return i;let o=Be.UniqueBuilder(r.inputStructure),s=a=>o.add(a);return Be.forEach(i,(a,c)=>{r.pushInputStructure(a),Be.forEach(t(r),s),r.popInputStructure(),c%10===0&&r.throwIfTimedOut()}),o.getSelection()}}function Ty(e,t){return function(r){let i=e(r);if(Be.structureCount(i)===0)return i;let o=t(r);if(Be.structureCount(o)===0)return Be.Empty(r.inputStructure);let s=Be.unionStructure(o),a=Be.UniqueBuilder(r.inputStructure);return Be.forEach(i,(c,u)=>{let l=im(s,c);l.elementCount!==0&&a.add(l),u%50===0&&r.throwIfTimedOut()}),a.getSelection()}}function Fy(e,t){return function(r){let i=e(r);if(Be.structureCount(i)===0)return i;let o=t(r);if(Be.structureCount(o)===0)return i;let s=Be.unionStructure(o),a=Be.UniqueBuilder(r.inputStructure);return Be.forEach(i,(c,u)=>{let l=Vs(c,s);l.elementCount!==0&&a.add(l),u%50===0&&r.throwIfTimedOut()}),a.getSelection()}}function Oy(e){return function(n){let r=Be.LinearBuilder(n.inputStructure);return r.add(Be.unionStructure(e(n))),r.getSelection()}}function Ly(e,t){return function(r){let i=e(r),o=new Map,s=[];r.pushCurrentElement(),Be.forEach(i,(c,u)=>{r.element.structure=c;for(let l of c.units){r.element.unit=l;let m=l.elements;for(let f=0,d=m.length;f{let f=l;if(i)for(;;){let d=f.elementCount;if(f=F0(a,n,f),f.elementCount===d)break}else for(let d=0;d=0){f.addElementRange(h,g.start,g.end);continue}if(m.hasLabelAsymId(C))for(y.setSegment(g);y.hasNext;){let b=y.move();u.element=h[b.start],m.has(u)&&f.addElementRange(h,b.start,b.end)}}f.commitUnit(),i.throwIfTimedOut()}let d=di(i.inputStructure,[f.getStructure(),o]);if(n){let p=new yi(i.inputStructure),h=i.inputStructure.lookup3d;for(let x of d.units){let y=x.conformation,g=x.elements;for(let C=0,_=g.length;C<_;C++){let b=g[C];h.findIntoBuilderIf(y.x(b),y.y(b),y.z(b),t,p,Vy),p.addToUnit(x.id,b)}i.throwIfTimedOut()}return Be.Sequence(i.inputStructure,[p.getStructure()])}else return Be.Sequence(i.inputStructure,[d])}}var zy=Ye.entity.type;function Vy(e){return zy(e)==="water"}function Ky(e){let t=e.models[0],n=new Set;if(!_t.is(t.sourceData))return n;let{_rowCount:r,asym_id:i}=t.sourceData.data.db.pdbx_molecule;for(let o=0;o0;){let a=s.pop();i.add(a);let c=this.vertices.get(a);for(let u of this.edges.get(a)){if(i.has(u)||(s.push(u),o.has(u)))continue;o.add(u);let l=this.vertices.get(u);c.operator_name===l.operator_name?n.add(Ct(Le({},l),{operator_name:t.operator_name})):n.add(l)}}}};var lu={};Br(lu,{areIntersectedBy:()=>$y,first:()=>Zy,getCurrentStructureProperties:()=>Mo,isConnectedTo:()=>rx,pick:()=>Yy,withSameAtomProperties:()=>Xy,within:()=>Qy});function O0(e,t,n,r,i,o){return t.elementCount===0||n.elementCount===0?!0:t.elementCount<=n.elementCount?oa.check(e,t,n,r,i,o):oa.check(e,n,t,r,i,o)}function L0(e,t,n,r,i){return t.elementCount===0||n.elementCount===0?!0:t.elementCount<=n.elementCount?sa.check(e,t,n,r,i):sa.check(e,n,t,r,i)}var oa;(function(e){let t=N();function n(s,a,c,u,l,m,f){let{elements:d,conformation:p}=a,h=t;s.element.unit=a;let x=!1;for(let y=0,g=d.length;y{let r=e(n),i=Be.LinearBuilder(n.inputStructure);return n.pushCurrentElement(),Be.forEach(r,(o,s)=>{n.currentStructure=o,t(n)&&i.add(o),s%100&&n.throwIfTimedOut()}),n.popCurrentStructure(),i.getSelection()}}function Zy(e){return t=>{let n=e(t),r=Be.LinearBuilder(t.inputStructure);if(n.kind==="singletons"){if(n.structure.elementCount>0){let i=n.structure.units[0],o=ot.create([i.getChild(le.ofSingleton(i.elements[0]))],{parent:t.inputStructure});r.add(o)}}else n.structures.length>0&&r.add(n.structures[0]);return r.getSelection()}}function Mo(e,t,n){let{units:r}=e.currentStructure,i=e.pushCurrentElement();i.structure=e.currentStructure;for(let o of r){i.unit=o;let s=o.elements,a=t;if(a){for(let c=0,u=s.length;c{e.currentStructure=o,Mo(e,n,r),s%10&&e.throwIfTimedOut()}),e.popCurrentElement(),r}function Xy(e,t,n){return r=>{let i=e(r),o=Wy(r,t,n),s=Be.LinearBuilder(r.inputStructure);return r.pushCurrentStructure(),Be.forEach(i,(a,c)=>{r.currentStructure=a;let u=Mo(r,n,new Set);hn.isSuperset(o,u)&&s.add(a),c%10&&r.throwIfTimedOut()}),r.popCurrentStructure(),s.getSelection()}}function $y(e,t){return n=>{let r=Be.unionStructure(t(n)),i=Be.LinearBuilder(n.inputStructure);return Be.forEach(e(n),(o,s)=>{zs(r,o)&&i.add(o),s%10&&n.throwIfTimedOut()}),i.getSelection()}}function Qy(e){return t=>{let n={queryCtx:t,selection:e.query(t),target:e.target(t),maxRadius:e.maxRadius,minRadius:e.minRadius?Math.max(0,e.minRadius):0,elementRadius:e.elementRadius,invert:!!e.invert};return n.minRadius===0&&typeof e.minRadius>"u"?Jy(n):n.minRadius===0?ex(n):tx(n)}}function Jy({queryCtx:e,selection:t,target:n,maxRadius:r,invert:i}){let o=Be.unionStructure(n).lookup3d,s=Be.LinearBuilder(e.inputStructure),a=N.zero();return Be.forEach(t,(c,u)=>{let{units:l}=c,m=!1;for(let f=0,d=l.length;f{let l=L0(e,s,c,r,o);i&&(l=!l),l&&a.add(c),u%10===0&&e.throwIfTimedOut()}),e.popCurrentElement(),a.getSelection()}function tx({queryCtx:e,selection:t,target:n,minRadius:r,maxRadius:i,invert:o,elementRadius:s}){let a=Be.unionStructure(n),c=Be.LinearBuilder(e.inputStructure);return e.pushCurrentElement(),Be.forEach(t,(u,l)=>{let m=O0(e,a,u,r,i,s);o&&(m=!m),m&&c.add(u),l%10===0&&e.throwIfTimedOut()}),e.popCurrentElement(),c.getSelection()}function nx(e,t){let{queryCtx:n,input:r,target:i,disjunct:o}=e,s=n.atomicBond,a=r.interUnitBonds;s.setStructure(r);for(let c of t.units){if(!ge.isAtomic(c))continue;let u=r.unitMap.get(c.id),{offset:l,b:m,edgeProps:{flags:f,order:d,key:p}}=u.bonds,h=a.getConnectedUnits(c.id),x=h.length,y=c.elements,g=u.elements;for(let C=0,_=y.length;C<_;C++){let b=le.indexOf(g,y[C]);s.a.unit=u,s.b.unit=u;for(let I=l[b],E=l[b+1];I{let s=t(o);if(Be.isEmpty(s))return s;let a=e(o);if(Be.isEmpty(a))return a;let c={queryCtx:o,input:o.inputStructure,disjunct:n,target:Be.unionStructure(s)},u=Be.LinearBuilder(o.inputStructure);return o.pushCurrentBond(),o.atomicBond.setTestFn(i),Be.forEach(a,(l,m)=>{(nx(c,l)||r)&&u.add(l),m%5===0&&o.throwIfTimedOut()}),o.popCurrentBond(),u.getSelection()}}var fu={};Br(fu,{intersect:()=>ox,merge:()=>ix});function ix(e){return e.length===0?js:e.length===1?e[0]:t=>{let n=Be.UniqueBuilder(t.inputStructure);for(let r=0;r{n.add(i),r%100&&t.throwIfTimedOut()});return n.getSelection()}}function ox(e){return e.length===0?js:e.length===1?e[0]:t=>{let n=[];for(let a=0;aa.hashCode,ot.areUnitIdsAndIndicesEqual);Be.forEach(n[r],a=>o.add(a));let s=Be.UniqueBuilder(t.inputStructure);for(let a=0;a{o.has(c)&&s.add(c)}),t.throwIfTimedOut());return s.getSelection()}}var du={};Br(du,{atomCount:()=>sx,countQuery:()=>ax,propertySet:()=>cx});function sx(e){return e.currentStructure.elementCount}function ax(e){return t=>{let n=e(t);return Be.structureCount(n)}}function cx(e){return t=>Mo(t,e,new Set)}var aa;(function(e){function t(f){return!!f&&!!f.has}function n(f,d){return p=>f(p)===d}e.eq=n;function r(f,d){return p=>f(p)f(p)<=d}e.lte=i;function o(f,d){return p=>f(p)>d}e.gt=o;function s(f,d){return p=>f(p)>=d}e.gte=s;function a(f){return!0}function c(f){return!1}function u(f,d){if(t(d))return p=>d.has(f(p));{if(d.length===0)return c;let p=new Set;for(let h=0;hp.has(f(h))}}e.inSet=u;function l(...f){switch(f.length){case 0:return a;case 1:return f[0];case 2:{let d=f[0],p=f[1];return h=>d(h)&&p(h)}case 3:{let d=f[0],p=f[1],h=f[2];return x=>d(x)&&p(x)&&h(x)}case 4:{let d=f[0],p=f[1],h=f[2],x=f[3];return y=>d(y)&&p(y)&&h(y)&&x(y)}case 5:{let d=f[0],p=f[1],h=f[2],x=f[3],y=f[4];return g=>d(g)&&p(g)&&h(g)&&x(g)&&y(g)}case 6:{let d=f[0],p=f[1],h=f[2],x=f[3],y=f[4],g=f[5];return C=>d(C)&&p(C)&&h(C)&&x(C)&&y(C)&&g(C)}default:{let d=f.length;return p=>{for(let h=0;hd(h)||p(h)}case 3:{let d=f[0],p=f[1],h=f[2];return x=>d(x)||p(x)||h(x)}case 4:{let d=f[0],p=f[1],h=f[2],x=f[3];return y=>d(y)||p(y)||h(y)||x(y)}case 5:{let d=f[0],p=f[1],h=f[2],x=f[3],y=f[4];return g=>d(g)||p(g)||h(g)||x(g)||y(g)}case 6:{let d=f[0],p=f[1],h=f[2],x=f[3],y=f[4],g=f[5];return C=>d(C)||p(C)||h(C)||x(C)||y(C)||g(C)}default:{let d=f.length;return p=>{for(let h=0;h{let n=[],r=0;for(let i=0;iYe.unit.operator_name(l.element),xt.DefaultName),cr.pred.inSet(l=>Ye.chain.label_asym_id(l.element),o.asymIds))});n[n.length]={selector:u,operators:c,asymIds:o.asymIds},r+=c.length}return n}}function fx(e){let{id:t,matrix:n,vector:r,_schema:i}=e,o=new Map,s=N();for(let a=0,c=e._rowCount;a{let s=[];o.split(",").forEach(a=>{let c=a.indexOf("-");if(c>0){let u=parseInt(a.substring(0,c)),l=parseInt(a.substr(c+1));for(let m=u;m<=l;m++)s[s.length]=m.toString()}else s[s.length]=a.trim()}),r[r.length]=s}),r}var Wt;(function(e){e.Descriptor={name:"model_symmetry"},e.Provider=en.create(e.Descriptor);function t(r){let i=q0(r.pdbx_struct_assembly,r.pdbx_struct_assembly_gen,r.pdbx_struct_oper_list),o=gx(r.symmetry,r.cell),s=hx(r.atom_sites,o);return{assemblies:i,spacegroup:o,isNonStandardCrystalFrame:s,ncsOperators:yx(r.struct_ncs_oper)}}e.fromData=t;function n(r,i){let o=hr.create("P 1",r,i),s=sn.create(o);return{assemblies:[],spacegroup:s,isNonStandardCrystalFrame:!1}}e.fromCell=n})(Wt||(Wt={}));function hx(e,t){return e._rowCount===0,!1}function _x(e){let t=e.Int_Tables_number.value(0),n=e["space_group_name_H-M"].value(0);return e.Int_Tables_number.isDefined?e["space_group_name_H-M"].isDefined?n:t:n}function gx(e,t){if(e._rowCount===0||t._rowCount===0)return sn.ZeroP1;let n=t.length_a.value(0),r=t.length_b.value(0),i=t.length_c.value(0);if(n===0||r===0||i===0)return sn.ZeroP1;let o=t.angle_alpha.value(0),s=t.angle_beta.value(0),a=t.angle_gamma.value(0);if(o===0||s===0||a===0)return sn.ZeroP1;let c=_x(e),u=hr.create(c,N.create(n,r,i),N.scale(N(),N.create(o,s,a),Math.PI/180));return sn.create(u)}function yx(e){if(e._rowCount===0)return;let{id:t,matrix:n,vector:r}=e,i=nt.struct_ncs_oper.matrix.space,o=nt.struct_ncs_oper.vector.space,s=[];for(let a=0;a0}e.hasData=o;function s(a,c){a.writeCategory({name:t,instance(){let u=mt.ofRows(e.Schema.molstar_global_model_transform_info,[{matrix:c}]);return At.Category.ofTable(u)}})}e.writeMmCif=s})(Ji||(Ji={}));var TE={label_comp_id:nt.atom_site.label_comp_id,label_seq_id:nt.atom_site.label_seq_id,pdbx_PDB_ins_code:nt.atom_site.pdbx_PDB_ins_code,label_asym_id:nt.atom_site.label_asym_id,label_entity_id:nt.atom_site.label_entity_id,auth_comp_id:nt.atom_site.auth_atom_id,auth_seq_id:nt.atom_site.auth_seq_id,auth_asym_id:nt.atom_site.auth_asym_id},FE=Ct(Le({},nt.chem_comp_bond),{molstar_protonation_variant:me.Schema.Str()}),H0=Ct(Le({},nt.chem_comp),{type:me.Schema.Aliased(me.Schema.str)});function V0(e,t){let{ihm_model_group:n,ihm_model_group_link:r}=t,i=mt.pickRow(r,o=>r.model_id.value(o)===e);if(i){let o=mt.pickRow(n,s=>n.id.value(s)===i.group_id);if(o)return o.name}return""}function z0(e){for(let t=0,n=e.rowCount;tthis.namesMap.set(n[0],n[1]))}};var Ax=[new Set(["CA"]),new Set(["C"]),new Set(["N"])],bx=[new Set(["P","O3'","O3*"]),new Set(["C4'","C4*"]),new Set(["O2'","O2*","F2'","F2*"])],Cx=[new Set(["P","O3'","O3*"]),new Set(["C3'","C3*"]),new Set(["O2'","O2*","F2'","F2*"])],Sx=new Set(["FMN","NCN","FNS","FMA","ATP","ADP","AMP","GTP","GDP","GMP","LIG"]),j0=function(){let e=new Map;return[{id:"HIS",name:"HISTIDINE",type:"l-peptide linking"},{id:"ARG",name:"ARGININE",type:"l-peptide linking"},{id:"LYS",name:"LYSINE",type:"l-peptide linking"},{id:"ILE",name:"ISOLEUCINE",type:"l-peptide linking"},{id:"PHE",name:"PHENYLALANINE",type:"l-peptide linking"},{id:"LEU",name:"LEUCINE",type:"l-peptide linking"},{id:"TRP",name:"TRYPTOPHAN",type:"l-peptide linking"},{id:"ALA",name:"ALANINE",type:"l-peptide linking"},{id:"MET",name:"METHIONINE",type:"l-peptide linking"},{id:"CYS",name:"CYSTEINE",type:"l-peptide linking"},{id:"ASN",name:"ASPARAGINE",type:"l-peptide linking"},{id:"VAL",name:"VALINE",type:"l-peptide linking"},{id:"GLY",name:"GLYCINE",type:"peptide linking"},{id:"SER",name:"SERINE",type:"l-peptide linking"},{id:"GLN",name:"GLUTAMINE",type:"l-peptide linking"},{id:"TYR",name:"TYROSINE",type:"l-peptide linking"},{id:"ASP",name:"ASPARTIC ACID",type:"l-peptide linking"},{id:"GLU",name:"GLUTAMIC ACID",type:"l-peptide linking"},{id:"THR",name:"THREONINE",type:"l-peptide linking"},{id:"PRO",name:"PROLINE",type:"l-peptide linking"},{id:"SEC",name:"SELENOCYSTEINE",type:"l-peptide linking"},{id:"PYL",name:"PYRROLYSINE",type:"l-peptide linking"},{id:"MSE",name:"SELENOMETHIONINE",type:"l-peptide linking"},{id:"SEP",name:"PHOSPHOSERINE",type:"l-peptide linking"},{id:"TPO",name:"PHOSPHOTHREONINE",type:"l-peptide linking"},{id:"PTR",name:"O-PHOSPHOTYROSINE",type:"l-peptide linking"},{id:"PCA",name:"PYROGLUTAMIC ACID",type:"l-peptide linking"},{id:"A",name:"ADENOSINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"C",name:"CYTIDINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"T",name:"THYMIDINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"G",name:"GUANOSINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"I",name:"INOSINIC ACID",type:"rna linking"},{id:"U",name:"URIDINE-5'-MONOPHOSPHATE",type:"rna linking"},{id:"DA",name:"2'-DEOXYADENOSINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DC",name:"2'-DEOXYCYTIDINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DT",name:"THYMIDINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DG",name:"2'-DEOXYGUANOSINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DI",name:"2'-DEOXYINOSINE-5'-MONOPHOSPHATE",type:"dna linking"},{id:"DU",name:"2'-DEOXYURIDINE-5'-MONOPHOSPHATE",type:"dna linking"}].forEach(n=>e.set(n.id,n)),e}(),Y0=function(){let e=new Map;return[{id:"ZN2",name:"ZINC ION",type:"ion"},{id:"SOD",name:"SODIUM ION",type:"ion"},{id:"CES",name:"CESIUM ION",type:"ion"},{id:"CLA",name:"CHLORIDE ION",type:"ion"},{id:"CAL",name:"CALCIUM ION",type:"ion"},{id:"POT",name:"POTASSIUM ION",type:"ion"}].forEach(n=>e.set(n.id,n)),e}(),la=class{set(t){this.comps.set(t.id,t),this.ids.push(t.id),this.names.push(t.name),this.types.push(t.type),this.mon_nstd_flags.push(Ms.has(t.id)?"y":"n")}getAtomIds(t){let n=new Set,r=this.seqId.value(t);for(;tthis.namesMap.set(n[0],n[1]))}constructor(t,n){this.seqId=t,this.atomId=n,this.namesMap=new Map,this.comps=new Map,this.ids=[],this.names=[],this.types=[],this.mon_nstd_flags=[]}};function Ix(e){if(_t.is(e.sourceData))return Wt.fromData(e.sourceData.data.db)}Wt.Provider.formatRegistry.add("mmCIF",Ix);function wx(e){if(!_t.is(e.sourceData))return;let{struct_conf:t,struct_sheet_range:n}=e.sourceData.data.db;return zn.fromStruct(t,n,e.atomicHierarchy)}zn.Provider.formatRegistry.add("mmCIF",wx);function vx(e){if(!_t.is(e.sourceData))return;let{atom_site_anisotrop:t}=e.sourceData.data.db,n=mt.ofColumns(Qi.Schema,t),r=Qi.getElementToAnsiotrop(e.atomicConformation.atomId,t.id);return{data:n,elementToAnsiotrop:r}}function Px(e){return _t.is(e.sourceData)?e.sourceData.data.db.atom_site_anisotrop.U.isDefined:!1}Qi.Provider.formatRegistry.add("mmCIF",vx,Px);function Bx(e){if(!_t.is(e.sourceData))return;let{chem_comp_bond:t}=e.sourceData.data.db;if(t._rowCount!==0)return{data:t,entries:Ir.getEntriesFromChemCompBond(t)}}Ir.Provider.formatRegistry.add("mmCIF",Bx);function Ex(e){if(!_t.is(e.sourceData))return;let{struct_conn:t}=e.sourceData.data.db;if(t._rowCount===0)return;let n=cn.getEntriesFromStructConn(t,e);return{data:t,byAtomIndex:cn.getAtomIndexFromEntries(n),entries:n}}cn.Provider.formatRegistry.add("mmCIF",Ex);Ji.Provider.formatRegistry.add("mmCIF",Ji.fromMmCif,Ji.hasData);var _t;(function(e){function t(r){return r?.kind==="mmCIF"}e.is=t;function n(r,i,o,s){return i||(i=qc.schema.mmCIF(r)),{kind:"mmCIF",name:i._name,data:{db:i,file:s,frame:r,source:o}}}e.fromFrame=n})(_t||(_t={}));function yD(e,t){let n=_t.fromFrame(e,void 0,void 0,t),r=mu(n.data.db,!0);return wt.create("Create mmCIF Model",i=>ko(r,n,i))}var No;(function(e){let t="__CcdCoordinateType__";e.CoordinateType={get(i){return i._staticPropertyData[t]},set(i,o){return i._staticPropertyData[t]=o}};function n(i){return i?.kind==="CCD"}e.is=n;function r(i,o){return o||(o=qc.schema.CCD(i)),{kind:"CCD",name:o._name,data:{db:o,frame:i}}}e.fromFrame=r})(No||(No={}));function xD(e){let t=No.fromFrame(e);return wt.create("Create CCD Models",n=>Dx(t.data.db,No.fromFrame(e),n))}function Dx(e,t,n){return Ve(this,null,function*(){let r=yield Z0(e,t,{coordinateType:"ideal",cartn_x:"pdbx_model_Cartn_x_ideal",cartn_y:"pdbx_model_Cartn_y_ideal",cartn_z:"pdbx_model_Cartn_z_ideal"},n),i=yield Z0(e,t,{coordinateType:"model",cartn_x:"model_Cartn_x",cartn_y:"model_Cartn_y",cartn_z:"model_Cartn_z"},n),o=[];r&&o.push(r),i&&o.push(i);for(let s=0,a=o.length;s0||(C[C.length]=$);let _=C.length,b=me.ofConst("A",_,me.Schema.str),I=me.ofConst(1,_,me.Schema.int),E=me.ofConst("1",_,me.Schema.str),S=me.ofConst(1,_,me.Schema.float),v=me.ofConst(1,_,me.Schema.int),P=me.view(d,C),L=me.view(h,C),w=me.view(o[c],C),D=me.view(o[u],C),z=me.view(o[l],C),ie=me.view(x,C),O=me.view(y,C),Q=me.view(p,C),K=mt.ofPartialColumns(_n.atom_site,{auth_asym_id:b,auth_atom_id:P,auth_comp_id:L,auth_seq_id:I,Cartn_x:w,Cartn_y:D,Cartn_z:z,id:ie,label_asym_id:b,label_atom_id:P,label_comp_id:L,label_seq_id:I,label_entity_id:E,occupancy:S,type_symbol:O,pdbx_PDB_model_num:v,pdbx_formal_charge:Q},_),Z=new ua;Z.setNames([[f,`${m} (${a})`]]),Z.getEntityId(f,0,"A");let se=new la(I,y);se.setNames([[f,`${m} (${a})`]]),se.add(f,0);let fe=mu({entity:Z.getEntityTable(),chem_comp:se.getChemCompTable(),atom_site:K}),Ce=yield ko(fe,t,r);if(!Ce.representative)return;let xe=Ce.representative,H=Ir.getEntriesFromChemCompBond(s);return Ir.Provider.set(xe,{data:s,entries:H}),No.CoordinateType.set(xe,a),Ce.representative})}function Mx(e){if(e._rowCount===0)return{residues:[],chains:[]};let t=0,n=e._rowCount,r=[t],i=[t],{label_entity_id:o,label_asym_id:s,label_seq_id:a,auth_seq_id:c,pdbx_PDB_ins_code:u}=e;for(let l=t+1;l=c[u+1]&&(u+=1,l=0),s[m]=++l;i.label_seq_id=me.ofIntArray(s)}return mt.columnToArray(i,"label_seq_id",Int32Array),mt.columnToArray(i,"auth_seq_id",Int32Array),{atoms:r,residues:i,chains:o,atomSourceIndex:t}}function kx(e){return{id:Rt.create22(),atomId:e.id,occupancy:e.occupancy.isDefined?e.occupancy:me.ofConst(1,e._rowCount,me.Schema.float),B_iso_or_equiv:e.B_iso_or_equiv,xyzDefined:e.Cartn_x.isDefined&&e.Cartn_y.isDefined&&e.Cartn_z.isDefined,x:e.Cartn_x.toArray({array:Float32Array}),y:e.Cartn_y.toArray({array:Float32Array}),z:e.Cartn_z.toArray({array:Float32Array})}}function Ux(e,t){return mt.areEqual(e.chains,t.chains)&&mt.areEqual(e.residues,t.residues)&&mt.areEqual(e.atoms,t.atoms)}function Rx(e,t){let n=new Map;if(!_t.is(t))return n;let{molstar_atom_site_operator_mapping:r}=En(fd,t.data.frame);if(r._rowCount===0)return n;let i=new Map,o=new Map;for(let l=0;l-1,findChainKey:()=>-1,getEntityFromChain:()=>-1,count:0,entity_id:me.Undefined(0,me.Schema.str),asym_id:me.Undefined(0,me.Schema.str),seq_id_begin:me.Undefined(0,me.Schema.int),seq_id_end:me.Undefined(0,me.Schema.int),chainElementSegments:We.create([]),polymerRanges:Pt.ofSortedRanges([]),gapRanges:Pt.ofSortedRanges([])},hu=function(e){return e.Empty={isDefined:!1,spheres:W0,gaussians:W0},e}(hu||{});function Fx(e,t,n){if(e.has(t))return e.get(t);let r=n.index++;return e.set(t,r),r}function Ox(e,t){if(e.has(t))return e.get(t);let n=new Map;return e.set(t,n),n}function Lx(e,t,n){let r=e.getEntityIndex;return{findChainKey:(s,a)=>{let c=r(s);if(c<0)return-1;let u=t.get(c);return u.has(a)?u.get(a):-1},findSequenceKey:(s,a,c)=>{let u=r(s);if(u<0)return-1;let l=t.get(u);if(l===void 0)return-1;let m=l.get(a);if(m===void 0)return-1;let f=n.get(m),{elementIndices:d,seqRanges:p}=f,h=Pt.firstIntersectionIndex(p,Ie.ofSingleton(c));return h!==-1?d[h]:-1}}}function qx(e){throw new Error(`Missing entity entry for entity id '${e}'.`)}function _u(e,t){let{entity_id:n,asym_id:r,seq_id_begin:i,seq_id_end:o,count:s,chainElementSegments:a}=e,c=new Map,u=new Map,l={index:0},m=new Int32Array(s),f=new Int32Array(s),d=new Int32Array(a.count);for(let y=0;yd[y]}}function gu(e,t){let n=[],r=[],i=We.transientSegments(e.chainElementSegments,ue.ofBounds(0,e.count)),{seq_id_begin:o,seq_id_end:s}=e;for(;i.hasNext;){let{start:a,end:c}=i.move(),u=-1,l=-1;for(let m=a;m1&&(n.push(u,m-1),r.push(m-1,m),u=m),m===c-1&&n.push(u,m),l=f}}return{polymerRanges:Pt.ofSortedRanges(n),gapRanges:Pt.ofSortedRanges(r)}}var yu={hierarchy:hu.Empty,conformation:void 0};function $0(e,t){let{ihm_sphere_obj_site:n,ihm_gaussian_obj_site:r}=e;if(n._rowCount===0&&r._rowCount===0)return yu;let i=X0(n),o=Gx(n),s=_u(i,e.entities),a=gu(i,t),c=X0(r),u=Hx(r),l=_u(c,e.entities),m=gu(c,t);return{hierarchy:{isDefined:!0,spheres:Le(Le(Le({},i),s),a),gaussians:Le(Le(Le({},c),l),m)},conformation:{id:Rt.create22(),spheres:o,gaussians:u}}}function Gx(e){return{x:e.Cartn_x.toArray({array:Float32Array}),y:e.Cartn_y.toArray({array:Float32Array}),z:e.Cartn_z.toArray({array:Float32Array}),radius:e.object_radius.toArray({array:Float32Array}),rmsf:e.rmsf.toArray({array:Float32Array})}}function Hx(e){let t=_n.ihm_gaussian_obj_site.covariance_matrix.space,n=[],{covariance_matrix:r}=e;for(let i=0,o=r.rowCount;i"X";break;default:gn(u)}return l&&l.size>0?f=>{let d=m(f);return d!=="X"||!l.has(f)?d:m(l.get(f))}:m}function o(u,l){if(l.rowCount===0)throw new Error("cannot be empty");let m=r(u);return new s(m,u,l)}e.ofResidueNames=o;class s{index(l){return this.indexMap.get(l)}constructor(l,m,f){this.kind=l,this.microHet=new Map;let d=i(l),p=[],h=[],x=[],y=new Map,g=0,C=new Map;for(let b=0,I=f.rowCount;b{let P=d(v);return P==="X"?v:P});_[b]=`(${S.join("|")})`}else _[b]=p[b]==="X"?h[b]:p[b]}this.length=g,this.code=me.ofStringArray(p),this.compId=me.ofStringArray(h),this.seqId=me.ofIntArray(x),this.label=me.ofStringArray(_),this.microHet=y,this.indexMap=C}}function a(u,l){let m=t.Generic;return new c(m,u,l)}e.ofSequenceRanges=a;class c{index(l){return l-this.minSeqId}constructor(l,m,f){this.kind=l,this.seqIdStart=m,this.seqIdEnd=f,this.microHet=new Map;let d=0,p=Number.MAX_SAFE_INTEGER;for(let x=0,y=this.seqIdStart.rowCount;xx+p+1,rowCount:h,schema:me.Schema.int}),this.compId=me.ofConst("",h,me.Schema.str),this.length=h,this.minSeqId=p}}})(xi||(xi={}));var Uo;(function(e){let t={byEntityKey:{},sequences:[]};function n(...a){let c=[],u={};for(let l=0,m=a.length;l{if(!t||t.length!==r.length)return t=r,n=e.apply(void 0,r),n;for(let i=0,o=r.length;i{if(t.has(n))return t.get(n);let r=e(n);return t.set(n,r),r}}function e1(e){let t=new Map,n=(i,o,s)=>`${i}|${o}|${s}`,r=e.pdbx_unobs_or_zero_occ_residues;for(let i=0,o=r._rowCount;it.has(n(i,o,s)),get:(i,o,s)=>t.get(n(i,o,s)),size:t.size}}function t1(e){let t=new Map;if(e.chem_comp._rowCount>0){let{id:n}=e.chem_comp;for(let r=0,i=n.rowCount;r{t.set(r,Rd(r))});return t}function n1(e){let t=new Map;if(e.pdbx_chem_comp_identifier._rowCount>0){let{comp_id:n,type:r,identifier:i}=e.pdbx_chem_comp_identifier;for(let o=0,s=n.rowCount;o0){let{id:n,type:r}=e.chem_comp;for(let i=0,o=n.rowCount;i{!t.has(i)&&n.has(i)&&t.set(i,r)})}return t}var r1=J0(e=>{let t=new Set,{label_comp_id:n,auth_comp_id:r}=e.atom_site,i=n.isDefined?n:r;for(let o=0,s=i.rowCount;o0?yield $x(n,e,r,t):yield Xx(n,e,r,t);for(let o=0;o0?i[i.length-1]:void 0);i.push(m),a=c}}return i})}function Bu(e,t){let n=new Map,r=e._rowCount,i=0;for(;i(i in c[o]||(c[o][i]={props:Le({},Et.getDefaultValues(r.getParams(c))),data:Zn.create(void 0)}),c[o][i]),a=(c,u,l)=>{let m=s(c);c[o][i]={props:u,data:Zn.withValue(m.data,l)}};return{label:r.label,descriptor:r.descriptor,isHidden:r.isHidden,getParams:c=>{let u=Et.clone(r.getParams(c));return Et.setDefaultValues(u,s(c).props),u},defaultParams:r.defaultParams,isApplicable:r.isApplicable,attach:(f,d,...p)=>Ve(this,[f,d,...p],function*(c,u,l={},m){m&&u.customProperties.reference(r.descriptor,!0);let h=s(u),x=Et.merge(r.defaultParams,h.props,l);if(h.data.value&&Et.areEqual(r.defaultParams,h.props,x))return;let{value:y,assets:g}=yield r.obtain(c,u,x);u.customProperties.add(r.descriptor),u.customProperties.assets(r.descriptor,g),a(u,x,y)}),ref:(c,u)=>c.customProperties.reference(r.descriptor,u),get:c=>{var u;return(u=s(c))===null||u===void 0?void 0:u.data},set:(c,u={},l)=>{let m=s(c),f=Et.merge(r.defaultParams,m.props,u);Et.areEqual(r.defaultParams,m.props,f)||(a(c,f,l),c.customProperties.assets(r.descriptor))},props:c=>s(c).props}}e.createProvider=t;function n(r,i,o){let s={value:Et.Value(o,{isHidden:!0})};return t({label:Lr(r),descriptor:xn({name:r}),isHidden:!0,type:i,defaultParams:s,getParams:()=>({value:Et.Value(o,{isHidden:!0})}),isApplicable:()=>!0,obtain:(a,c,u)=>Ve(this,null,function*(){return Le(Le({},Et.getDefaultValues(s)),u)})})}e.createSimple=n})($r||($r={}));var Tt;(function(e){function t(O,Q){let K=[],{frames:Z}=Q,se=O.atomicHierarchy.atomSourceIndex,Ce=me.isIdentity(se)?void 0:se.toArray({array:Int32Array}),xe=h(O),H=O.atomicHierarchy.atoms._rowCount;for(let $=0,de=Z.length;$Ve(this,null,function*(){let Z=yield ko(O.basic,O.sourceData,K);if(Z.frameCount===0)throw new Error("found no model");let se=Z.representative,{trajectory:fe}=t(se,Q),Ce={pairs:O.bonds,count:se.atomicHierarchy.atoms._rowCount},xe=rn.fromData(Ce),H=h(se),$=0;for(let de of fe)rn.Provider.set(de,xe),e.TrajectoryInfo.set(de,{index:$++,size:fe.length}),e.CoarseGrained.set(de,H);return new vr(fe)}))}e.trajectoryFromTopologyAndCoordinates=r;let i="__Center__";function o(O){if(O._dynamicPropertyData[i])return O._dynamicPropertyData[i];let Q=bf(O.atomicConformation,O.coarseConformation);return O._dynamicPropertyData[i]=Q,Q}e.getCenter=o;function s(O){let Q=new Int32Array(O.rowCount),K=!1;for(let Z=0,se=O.rowCount;Z0}e.hasCarbohydrate=x;function y(O){let{subtype:Q}=O.entities;for(let K=0,Z=Q.rowCount;K=0)return!0;return!1}e.isFromXray=v;function P(O){if(!_t.is(O.sourceData))return!1;let{db:Q}=O.sourceData.data;for(let K=0;K=0)return!0;return!1}e.isFromEm=P;function L(O){if(!_t.is(O.sourceData))return!1;let{db:Q}=O.sourceData.data;for(let K=0;K=0)return!0;return!1}e.isFromNmr=L;function w(O){if(!_t.is(O.sourceData)||!v(O))return!1;let{db:Q}=O.sourceData.data,{status_code_sf:K}=Q.pdbx_database_status;return K.isDefined&&K.value(0)==="REL"}e.hasXrayMap=w;function D(O){if(!_t.is(O.sourceData))return!1;let{db:Q}=O.sourceData.data,{db_name:K,content_type:Z}=Q.pdbx_database_related;for(let se=0,fe=Q.pdbx_database_related._rowCount;sem.atomicHierarchy.residueAtomSegments;function o(m){return new eo("residue",m,i,0)}e.fromResidueMap=o;function s(m){return new eo("residue",Eu(m),i,0)}e.fromResidueArray=s;let a=m=>m.atomicHierarchy.chainAtomSegments;function c(m){return new eo("chain",m,a,0)}e.fromChainMap=c;function u(m){return new eo("chain",Eu(m),a,0)}e.fromChainArray=u;function l(m){return new Du(m)}e.fromEntityMap=l})(s1||(s1={}));function Eu(e){let t=new Map;for(let n=0,r=e.length;na.element-c.element),o}getElements(t){let n=this.segmentGetter(t.model).index,r=this.getStructureElements(t);return{elements:r,property:i=>this.get(n[r[i].element])}}constructor(t,n,r,i){this.level=t,this.map=n,this.segmentGetter=r,this.id=Rt.create22(),this.kind=i}},fa=class{has(t){return this.map.has(t)}get(t){return this.map.get(t)}getStructureElements(t){if(t.models.length!==1)throw new Error("Only works on structures with a single model.");let r=new Set,i=t.unitSymmetryGroups,o=[];for(let s of i){let a=s.units[0];if(a.kind!==this.kind)continue;let c=a.elements;for(let u=0,l=c.length;us.element-a.element),o}getElements(t){let n=this.getStructureElements(t);return{elements:n,property:r=>this.get(n[r].element)}}constructor(t){this.map=t,this.id=Rt.create22(),this.level="atom",this.kind=0}},Du=class{has(t){return this.map.has(t)}get(t){return this.map.get(t)}getStructureElements(t){let n=t.models;if(n.length!==1)throw new Error("Only works on structures with a single model.");let r=n[0].atomicHierarchy.index,i=new Set,o=t.unitSymmetryGroups,s=[],a=n[0].atomicHierarchy.chainAtomSegments;for(let c of o){let u=c.units[0];if(u.kind!==this.kind)continue;let l=We.transientSegments(a,u.elements);for(;l.hasNext;){let m=l.move(),f=r.getEntityFromChain(m.index);!this.has(f)||i.has(f)||(i.add(f),s[s.length]=ht.Location.create(t,u,u.elements[m.start]))}}return s.sort((c,u)=>c.element-u.element),s}getElements(t){let n=this.getStructureElements(t),r=t.model.atomicHierarchy.chainAtomSegments.index,i=t.model.atomicHierarchy.index;return{elements:n,property:o=>this.get(i.getEntityFromChain(r[n[o].element]))}}constructor(t){this.map=t,this.id=Rt.create22(),this.level="entity",this.kind=0}};var to;(function(e){function t(i,o,s,a){i.indices[i.count]=s,i.units[i.count]=o,i.squaredDistances[i.count]=a,i.count++}e.add=t;function n(){return{count:0,indices:[],units:[],squaredDistances:[]}}e.create=n;function r(i,o){for(let s=0;s(u+=c[d].elements.length)>=i,o.closeUnitsResult);if(l.count===0)return s;let m=0,f=-Number.MAX_VALUE;for(let d=0,p=l.count;d=i&&fs||c.addElement(g[y.indices[C]])}c.commitUnit()}}check(t,n,r,i){let{units:o}=this.structure,s=this.unitLookup.find(t,n,r,i);if(s.count===0)return!1;for(let a=0,c=s.count;a0?[]:this.currentUnit}addElement(t){this.currentUnit[this.currentUnit.length]=t,this.elementCount++}addElementRange(t,n,r){for(let i=n;i1&&jt(c);let m=a.getChild(le.ofSortedArray(c)),f=r.add(m.id,m);m!==f&&(m=f.applyOperator(m.id,m.conformation.operator,!0)),n[n.length]=m}return ot.create(n,{parent:this.parent})}getStructure(){return this._getStructure(!1)}getStructureDeduplicate(){return this._getStructure(!0)}setSingletonLocation(t){let n=this.ids[0];t.unit=this.parent.unitMap.get(n),t.element=this.unitMap.get(n)[0]}get isEmpty(){return this.elementCount===0}constructor(t,n){this.parent=t,this.isSorted=n,this.ids=[],this.unitMap=yn.Mutable(),this.parentId=-1,this.currentUnit=[],this.elementCount=0}};function a1(e,t){let n=1;for(;t--;)n*=e--;return n}function Jx(e,t){return t>e?0:a1(e,t)/a1(t,t)}function e3(e){let t=e&-e,n=e+t,i=((n&-n)/t>>1)-1;return n|i}var Mu=class{move(){if(this.hasNext){let t=0,n=0,r=this.index;for(;r;r>>>=1,t++)r&1&&(this.value[n++]=this.array[t]);this.index=e3(this.index),this.hasNext=this.index0&&n<=t.length}};function Nu(e,t){let n=[],r=new Mu(e,t);for(;r.hasNext;)n.push(r.move().slice());return n}var Ai=[],c1={links:Ai,terminalLinks:Ai,elements:Ai,partialElements:Ai,getElementIndices:()=>Ai,getLinkIndices:()=>Ai,getTerminalLinkIndices:()=>Ai};var Yt=yr("C"),Ro=yr("O"),t3=[kn.elementFingerprint([Yt,Yt,Yt,Ro]),kn.elementFingerprint([Yt,Yt,Yt,Yt,Ro]),kn.elementFingerprint([Yt,Yt,Yt,Yt,Yt,Ro]),kn.elementFingerprint([Yt,Yt,Yt,Yt,Yt,Yt,Ro])];function n3(e,t){let n=-1,r=-1,i=-1,o=-1,{elements:s}=e,{type_symbol:a,label_atom_id:c}=e.model.atomicHierarchy.atoms,{b:u,offset:l}=e.bonds;for(let m=0,f=t.length;mf+d.properties.saccharideComponentMap.size,0)===0)return c1;let t=[],n=[],r=[],i=[],o=new Map;function s(f,d,p){return`${f}|${d}|${p}`}function a(f,d){o.has(f)?o.get(f).push(d):o.set(f,[d])}function c(f,d){N.sub(r[f].geometry.direction,r[d].geometry.center,r[f].geometry.center),N.normalize(r[f].geometry.direction,r[f].geometry.direction)}let u=N();function l(f,d,p){let h=p.conformation,x=r[f].geometry;N.sub(x.direction,h.position(p.elements[d],u),x.center),N.normalize(x.direction,x.direction)}for(let f=0,d=e.units.length;f{h.connectedIndices.forEach(x=>{h.getEdges(x).forEach(({props:y,indexB:g})=>{if(!$t.isCovalent(y.flag))return;let C=e.unitMap.get(h.unitA),_=e.unitMap.get(h.unitB),b=m(C,x),I=m(_,g);if(b.length>0&&I.length>0){let E=b.length,S=I.length;for(let v=0,P=Math.max(E,S);v500?c3:u3}function f1(e){let{units:t}=e,n=l3(t.length);n.reset();for(let r=0,i=t.length;r0}get customPropertyDescriptors(){return this.state.customProps||(this.state.customProps=new pr),this.state.customProps}get currentPropertyData(){return this.state.propertyData||(this.state.propertyData=Object.create(null)),this.state.propertyData}get inheritedPropertyData(){return this.parent?this.parent.currentPropertyData:this.currentPropertyData}get polymerResidueCount(){return this.state.polymerResidueCount===-1&&(this.state.polymerResidueCount=y3(this)),this.state.polymerResidueCount}get polymerGapCount(){return this.state.polymerGapCount===-1&&(this.state.polymerGapCount=x3(this)),this.state.polymerGapCount}get polymerUnitCount(){return this.state.polymerUnitCount===-1&&(this.state.polymerUnitCount=A3(this)),this.state.polymerUnitCount}get uniqueElementCount(){return this.state.uniqueElementCount===-1&&(this.state.uniqueElementCount=g3(this)),this.state.uniqueElementCount}get atomicResidueCount(){return this.state.atomicResidueCount===-1&&(this.state.atomicResidueCount=b3(this)),this.state.atomicResidueCount}get isCoarseGrained(){return this.models.some(t=>Tt.isCoarseGrained(t))}get isEmpty(){return this.units.length===0}get hashCode(){return this.state.hashCode!==-1?this.state.hashCode:this.computeHash()}get transformHash(){return this.state.transformHash!==-1?this.state.transformHash:(this.state.transformHash=Yn(this.units.map(t=>t.id)),this.state.transformHash)}computeHash(){let t=23;for(let n=0,r=this.units.length;n1)throw new Error("The structure is based on multiple models and has neither a master- nor a representative-model.");return this.state.model=t[0],this.state.model}get masterModel(){return this.state.masterModel}get representativeModel(){return this.state.representativeModel}hasElement(t){return this.unitMap.has(t.unit.id)?le.has(this.unitMap.get(t.unit.id).elements,t.element):!1}getModelIndex(t){return this.models.indexOf(t)}remapModel(t){let{dynamicBonds:n,interUnitBonds:r,parent:i}=this.state,o=[];for(let s of this.unitSymmetryGroups){let a=s.units[0].remapModel(t,n);o.push(a);for(let c=1,u=s.units.length;c0&&(n+=1);return n}function b3(e){let{units:t}=e,n=0;for(let r=0,i=t.length;ri[r.get(a.id)]+Ie.indexOf(a.elements,c)}}(function(e){e.Empty=c([]);function t(k){return{kind:"structure-loci",structure:k}}e.Loci=t;function n(k){let R=[];for(let V of k.units)R.push({unit:V,indices:ue.ofBounds(0,V.elements.length)});return ht.Loci(k,R)}e.toStructureElementLoci=n;function r(k,R){return Be.toLociWithSourceUnits(Be.Singletons(k,R))}e.toSubStructureElementLoci=r;function i(k){return!!k&&k.kind==="structure-loci"}e.isLoci=i;function o(k,R){return k.structure===R.structure}e.areLociEqual=o;function s(k){return k.structure.isEmpty}e.isLociEmpty=s;function a(k,R){return R===k.structure?k:t(R)}e.remapLoci=a;function c(k,R={}){let V=yn.Mutable(),j=yn.Mutable(),oe=0,ae=!0,ne=k.length>0?k[0].id:0;for(let F=0,W=k.length;F2e5||f(k,F)?h(k,Ze,ne,Ae,W):ne.addUnit(0,k,W,Ze,Ae?ge.Trait.MultiChain:ge.Trait.None):ne.addUnit(0,k,W,Ze,Ae?ge.Trait.MultiChain:ge.Trait.None)}let q=k.coarseHierarchy;return q.isDefined&&(q.spheres.count>0&&x(ne,k,k.coarseHierarchy.spheres,1),q.gaussians.count>0&&x(ne,k,k.coarseHierarchy.gaussians,2)),ne.getStructure()}e.ofModel=m;function f(k,R){let V=k.atomicHierarchy.index.getEntityFromChain(R);return k.entities.data.type.value(V)==="water"}function d(k,R){let V=k.atomicHierarchy.index.getEntityFromChain(R);return k.entities.data.type.value(V)==="polymer"}function p(k,R,V,j,oe){let{x:ae,y:ne,z:q}=k.atomicConformation,F={x:ae,y:ne,z:q,indices:R},W=Xn(F,jr(F),8192),{offset:re,count:_e,array:Ae}=W.buckets,Ze=(j?ge.Trait.MultiChain:ge.Trait.None)|(re.length>1?ge.Trait.Partitioned:ge.Trait.None);V.beginChainGroup();for(let A=0,M=re.length;A1?ge.Trait.Partitioned:ge.Trait.None);V.beginChainGroup();for(let Se=0,Ee=te.length;Sege.conformationId(R)).join("|"))}e.conformationHash=b;function I(k,R){if(k===R)return!0;if(k.elementCount!==R.elementCount)return!1;let V=k.units.length;if(V!==R.units.length)return!1;for(let j=0;j=this.structure.units.length){this.hasNext=!1;return}this.current.unit=this.structure.units[this.unitIndex],this.elements=this.current.unit.elements,this.maxIdx=this.elements.length-1,this.maxIdx===0&&(this.hasNext=this.unitIndex+10,this.hasNext&&(this.elements=R.units[0].elements,this.maxIdx=this.elements.length-1,this.current.unit=R.units[0])}}e.ElementLocationIterator=w;let D=N();function z(k,R,V){let{elements:j,conformation:oe}=k,ae=D,ne=Number.MAX_VALUE;for(let q=0,F=j.length;qoe(F)))return;let ne=k.lookup3d,q=N();for(let F of k.units){if(!oe(F))continue;let W=F.boundary.sphere;N.transformMat4(q,W.center,F.conformation.operator.matrix);let re=ne.findUnitIndices(q[0],q[1],q[2],W.radius+j);for(let _e=0;_e=Ae.id||!oe(Ae)||!ae(F,Ae)||(Ae.elements.length>=F.elements.length?R(F,Ae):R(Ae,F))}}}e.eachUnitPair=se;function fe(k,{chain:R,residue:V,atom:j}){let oe=ht.Location.create(k);for(let ae of k.units){if(ae.kind!==0)continue;oe.unit=ae;let{elements:ne}=ae,q=We.transientSegments(ae.model.atomicHierarchy.chainAtomSegments,ne),F=We.transientSegments(ae.model.atomicHierarchy.residueAtomSegments,ne);for(;q.hasNext;){let W=q.move();if(R&&(oe.element=ne[W.start],R(oe)),!(!V&&!j))for(F.setSegment(W);F.hasNext;){let re=F.move();if(V&&(oe.element=ne[re.start],V(oe)),!!j)for(let _e=re.start,Ae=re.end;_eR.units[0].polymerElements.length>0)}function xe(k,R){let V=Ce(k);return V.length===1&&V[0].units.length>2&&V[0].units[0].polymerElements.length=1&&V[0].units.length>R.highSymmetryUnitCount}let $;(function(k){k[k.Small=0]="Small",k[k.Medium=1]="Medium",k[k.Large=2]="Large",k[k.Huge=3]="Huge",k[k.Gigantic=4]="Gigantic"})($=e.Size||(e.Size={}));function de(k,R={},V=1){let j=Le(Le({},e.DefaultSizeThresholds),R);return k.polymerResidueCount>=j.largeResidueCount*V?H(k,j)?$.Huge:$.Gigantic:xe(k,j)||k.polymerResidueCount0)return!1;return!0}e.isEmpty=r;function i(B){return o(B)===B.structure.elementCount}e.isWholeStructure=i;function o(B){let k=0;for(let{indices:R}of B.elements)typeof R=="number"?k+=S3(R):k+=R.length;return k}e.size=o;function s(B){return e(B,B.units.map(k=>({unit:k,indices:Ie.ofBounds(0,k.elements.length)})))}e.all=s;function a(B){return e(B,[])}e.none=a;function c(B,k){if(r(B))return;let R=B.elements[0].unit,V=R.elements[Ie.getAt(B.elements[0].indices,0)];return k?(k.structure=B.structure,k.unit=B.elements[0].unit,k.element=V,k):yt.create(B.structure,R,V)}e.getFirstLocation=c;function u(B){return r(B)?B:e(B.structure,[{unit:B.elements[0].unit,indices:Ie.ofSingleton(Ie.start(B.elements[0].indices))}])}e.firstElement=u;function l(B){return r(B)?B:b(u(B))}e.firstResidue=l;function m(B){return r(B)?B:P(u(B))}e.firstChain=m;function f(B){let k=[];for(let R of B.elements){let{unit:V,indices:j}=R,oe=new Int32Array(Ie.size(j));Ie.forEach(j,(ae,ne)=>oe[ne]=V.elements[ae]),k.push(V.getChild(le.ofSortedArray(oe)))}return ot.create(k,{parent:B.structure.parent})}e.toStructure=f;function d(B,k){if(e.isEmpty(B))return;let R=yt.create(B.structure);for(let V of B.elements){let{unit:j,indices:oe}=V;R.unit=j;let{elements:ae}=V.unit;for(let ne=0,q=Ie.size(oe);ne{if(!k.unitMap.has(V.unit.id))return;let j=k.unitMap.get(V.unit.id),oe=Ie.indexedIntersect(V.indices,V.unit.elements,j.elements);Ie.size(oe)>0&&R.push({unit:j,indices:oe})}),e(k,R)}e.remap=p;function h(B,k){if(B.elements.length>k.elements.length)return h(k,B);if(e.isEmpty(B))return k;let R=new Map;for(let j of B.elements)R.set(j.unit.id,j.indices);let V=[];for(let j of k.elements)R.has(j.unit.id)?(V[V.length]={unit:j.unit,indices:Ie.union(R.get(j.unit.id),j.indices)},R.delete(j.unit.id)):V[V.length]=j;return R.forEach((j,oe)=>{V[V.length]={unit:B.structure.unitMap.get(oe),indices:j}}),e(B.structure,V)}e.union=h;function x(B,k){let R=new Map;for(let j of k.elements)R.set(j.unit.id,j.indices);let V=[];for(let j of B.elements)if(R.has(j.unit.id)){let oe=Ie.subtract(j.indices,R.get(j.unit.id));if(Ie.size(oe)===0)continue;V[V.length]={unit:j.unit,indices:oe}}else V[V.length]=j;return e(B.structure,V)}e.subtract=x;function y(B,k){let R=new Map;for(let j of B.elements)R.set(j.unit.id,j.indices);let V=[];for(let j of k.elements){if(!R.has(j.unit.id))continue;let oe=Ie.intersect(R.get(j.unit.id),j.indices);Ie.size(oe)!==0&&(V[V.length]={unit:j.unit,indices:oe})}return e(B.structure,V)}e.intersect=y;function g(B,k){if(B.elements.length>k.elements.length)return g(k,B);if(e.isEmpty(B))return e.isEmpty(k);let R=new Map;for(let V of B.elements)R.set(V.unit.id,V.indices);for(let V of k.elements)if(R.has(V.unit.id)&&Ie.areIntersecting(R.get(V.unit.id),V.indices))return!0;return!1}e.areIntersecting=g;function C(B,k){if(e.isEmpty(B))return e.isEmpty(k);let R=new Map;for(let j of B.elements)R.set(j.unit.id,j.indices);let V=!1;for(let j of k.elements)if(R.has(j.unit.id))if(Ie.isSubset(R.get(j.unit.id),j.indices))V=!0;else return!1;return V}e.isSubset=C;function _(B){return B.length>3&&le.isRange(B)?ue.ofRange(B[0],B[B.length-1]):le.ofSortedArray(B)}function b(B,k){let R=[],V=new Set;for(let j of B.elements){if(E(j)){R[R.length]=j;continue}if(j.unit.kind===0){let oe=j.unit.elements,ae=j.unit.model.atomicHierarchy,{label_alt_id:ne}=j.unit.model.atomicHierarchy.atoms,{index:q,offsets:F}=ae.residueAtomSegments,W=[],re=j.indices,_e=Ie.size(re),Ae=0;for(;Ae<_e;){V.clear();let Ze=oe[Ie.getAt(re,Ae)],A=q[Ze];for(V.add(ne.value(Ze)),Ae++;Ae<_e;){let te=oe[Ie.getAt(re,Ae)];if(q[te]!==A)break;V.add(ne.value(te)),Ae++}let M=V.has("");for(let te=F[A],ce=F[A+1];te=0){let he=ne.value(te);(!k||M||!he||V.has(he))&&(W[W.length]=pe)}}}R[R.length]={unit:j.unit,indices:_(W)}}else R[R.length]=j}return e(B.structure,R)}e.extendToWholeResidues=b;function I(B){switch(B.kind){case 0:return B.model.atomicHierarchy.chainAtomSegments;case 1:return B.model.coarseHierarchy.spheres.chainElementSegments;case 2:return B.model.coarseHierarchy.gaussians.chainElementSegments}}function E(B){return B.unit.elements.length===Ie.size(B.indices)}function S(B,k,R){let{index:V}=I(B),j=B.elements,oe=0;for(let ne=0,q=j.length;ne0&&(R[R.length]={unit:B,indices:_(ae)})}function v(B,k,R,V,j){let{index:oe}=I(B.elements[0].unit),ae=new Set;for(let ne=k;ne{k+=o(j)});let R=new Float32Array(3*k),V=0;return B.forEach(j=>{Ce(j,R,V),V+=o(j)*3}),mn.ofPositions(R)}e.getPrincipalAxesMany=H;function $(B,k){return ge.isAtomic(B)?B.model.atomicHierarchy.atomSourceIndex.value(k):k}function de(B){if(e.isEmpty(B))return St.struct.generator.empty();let k=B.structure.models,R=new Map;for(let ne of B.elements){let{indices:q}=ne,{elements:F}=ne.unit,W=ne.unit.conformation.operator.name,re;R.has(W)?re=R.get(W).xs:(re=It.create(),R.set(W,{modelLabel:ne.unit.model.label,modelIndex:ne.unit.model.modelNum,xs:re}));for(let _e=0,Ae=Ie.size(q);_e1,q.modelLabel,q.modelIndex))}let oe=new Map;for(let ne=0,q=V.length;ne{let{ranges:q,set:F}=ne.atom,{opName:W}=ne.chain,re=St.struct.atomProperty.core.operatorName(),_e=St.struct.atomProperty.core.sourceIndex(),Ae=[];F.length>0&&(Ae[Ae.length]=St.core.set.has([St.core.type.set(F),_e]));for(let Ze=0,A=q.length/2;Ze1?St.core.logic.or(Ae):Ae[0],"chain-test":W.length>1?St.core.set.has([St.core.type.set(W),re]):St.core.rel.eq([re,W[0]]),"entity-test":St.core.logic.and([St.core.rel.eq([St.struct.atomProperty.core.modelLabel(),Ze]),St.core.rel.eq([St.struct.atomProperty.core.modelIndex(),A])])}))}else ae.push(St.struct.generator.atomGroups({"atom-test":Ae.length>1?St.core.logic.or(Ae):Ae[0],"chain-test":W.length>1?St.core.set.has([St.core.type.set(W),re]):St.core.rel.eq([re,W[0]])}))}),St.struct.modifier.union([ae.length===1?ae[0]:St.struct.combinator.merge(ae.map(ne=>St.struct.modifier.union([ne])))])}e.toExpression=de;function T(B,k,R,V,j){jt(k);let oe=[],ae=[],ne=0,q=k.length;for(;ne12)oe[oe.length]=k[F],oe[oe.length]=k[W-1];else for(let re=F;re0&&yt.set(c.firstElementLoc,u,f,d[Ie.start(m)]),p===d.length)c.unitCount+=1,c.unitCount===1&&yt.set(c.firstUnitLoc,u,f,d[Ie.start(m)]);else if(p===1){if(ge.Traits.is(f.traits,ge.Trait.MultiChain))return;c.elementCount+=1,c.elementCount===1&&yt.set(c.firstElementLoc,u,f,d[Ie.start(m)])}else if(ge.isAtomic(f)){let{index:y,offsets:g}=f.model.atomicHierarchy.residueAtomSegments,{label_alt_id:C}=f.model.atomicHierarchy.atoms,_=0;for(;_{if(x.get(v)===S){if(v!==""&&(c.conformationCount+=1,c.conformationCount===1)){for(let P=g[E],L=g[E+1];P{x[_+1]-x[_]===C&&(c.chainCount+=1,c.chainCount===1&&(g=_))}),!(g<0))for(let C=m;Cge.isAtomic(t.unit)?e(t):d1("atomic")}function v3(e){return t=>ge.isCoarse(t.unit)?e(t):d1("coarse")}function P3(e){return ge.isAtomic(e.unit)?e.unit.residueIndex[e.element]:-1}function B3(e){return ge.isAtomic(e.unit)?e.unit.chainIndex[e.element]:-1}function E3(e){return Ye.entity.key(e)}var ha;(function(e){e.Provider=$r.createProvider({label:"SIFTS Mapping",descriptor:xn({name:"sifts_sequence_mapping"}),type:"static",defaultParams:{},getParams:()=>({}),isApplicable:o=>t(o),obtain:(o,s)=>Ve(this,null,function*(){return{value:i(s)}})});function t(o){if(!_t.is(o.sourceData))return!1;let{pdbx_sifts_xref_db_name:s,pdbx_sifts_xref_db_acc:a,pdbx_sifts_xref_db_num:c,pdbx_sifts_xref_db_res:u}=o.sourceData.data.db.atom_site;return s.isDefined&&a.isDefined&&c.isDefined&&u.isDefined}e.isAvailable=t;function n(o){let s=o.unit.model,a=e.Provider.get(s).value;if(!a)return"";let c=s.atomicHierarchy.residueAtomSegments.index[o.element];return a.accession[c]}e.getKey=n;function r(o){let s=o.unit.model,a=e.Provider.get(s).value;if(!a)return;let c=s.atomicHierarchy.residueAtomSegments.index[o.element],u=a.dbName[c];if(u)return`${u} ${a.accession[c]} ${a.num[c]} ${a.residue[c]}`}e.getLabel=r;function i(o){if(!_t.is(o.sourceData))return;let{pdbx_sifts_xref_db_name:s,pdbx_sifts_xref_db_acc:a,pdbx_sifts_xref_db_num:c,pdbx_sifts_xref_db_res:u}=o.sourceData.data.db.atom_site;if(!s.isDefined||!a.isDefined||!c.isDefined||!u.isDefined)return;let{atomSourceIndex:l}=o.atomicHierarchy,{count:m,offsets:f}=o.atomicHierarchy.residueAtomSegments,d=new Array(m),p=new Array(m),h=new Array(m),x=new Array(m);for(let y=0;yAt.fields().str("group_PDB",Ye.residue.group_PDB).index("id").str("type_symbol",Ye.atom.type_symbol).str("label_atom_id",Ye.atom.label_atom_id).str("label_comp_id",Ye.atom.label_comp_id).int("label_seq_id",Ye.residue.label_seq_id,{encoder:Vn.deltaRLE,valueKind:(e,t)=>{let n=e.unit.model;return n.atomicHierarchy.residues.label_seq_id.valueKind(n.atomicHierarchy.residueAtomSegments.index[e.element])}}).str("label_alt_id",Ye.atom.label_alt_id).str("pdbx_PDB_ins_code",Ye.residue.pdbx_PDB_ins_code).str("label_asym_id",D3).str("label_entity_id",Ye.chain.label_entity_id).float("Cartn_x",Ye.atom.x,{digitCount:3,encoder:Vn.fixedPoint3}).float("Cartn_y",Ye.atom.y,{digitCount:3,encoder:Vn.fixedPoint3}).float("Cartn_z",Ye.atom.z,{digitCount:3,encoder:Vn.fixedPoint3}).float("occupancy",Ye.atom.occupancy,{digitCount:2,encoder:Vn.fixedPoint2}).float("B_iso_or_equiv",Ye.atom.B_iso_or_equiv,{digitCount:2,encoder:Vn.fixedPoint2}).int("pdbx_formal_charge",Ye.atom.pdbx_formal_charge,{encoder:Vn.deltaRLE,valueKind:(e,t)=>e.unit.model.atomicHierarchy.atoms.pdbx_formal_charge.valueKind(e.element)}).str("auth_atom_id",Ye.atom.auth_atom_id).str("auth_comp_id",Ye.atom.auth_comp_id).int("auth_seq_id",Ye.residue.auth_seq_id,{encoder:Vn.deltaRLE}).str("auth_asym_id",M3).int("pdbx_PDB_model_num",Ye.unit.model_num,{encoder:Vn.deltaRLE}).int("pdbx_label_index",m1.value,{shouldInclude:m1.shouldInclude}).str("pdbx_sifts_xref_db_name",Rn.pdbx_sifts_xref_db_name.value,{shouldInclude:Rn.shouldInclude,valueKind:Rn.pdbx_sifts_xref_db_name.valueKind}).str("pdbx_sifts_xref_db_acc",Rn.pdbx_sifts_xref_db_acc.value,{shouldInclude:Rn.shouldInclude,valueKind:Rn.pdbx_sifts_xref_db_acc.valueKind}).str("pdbx_sifts_xref_db_num",Rn.pdbx_sifts_xref_db_num.value,{shouldInclude:Rn.shouldInclude,valueKind:Rn.pdbx_sifts_xref_db_num.valueKind}).str("pdbx_sifts_xref_db_res",Rn.pdbx_sifts_xref_db_res.value,{shouldInclude:Rn.shouldInclude,valueKind:Rn.pdbx_sifts_xref_db_res.valueKind}).getFields(),p1={name:"atom_site",instance({structures:e}){return{fields:N3(),source:e.map(t=>({data:{structure:t,sourceIndex:t.model.atomicHierarchy.atomSourceIndex,atom_site:_t.is(t.model.sourceData)?t.model.sourceData.data.db.atom_site:void 0},rowCount:t.elementCount,keys:()=>t.elementLocations()}))}}};function bi(e,t){return e?`${e}_${t}`:t}function k3(e){return e?`pdbx_${e}_PDB_ins_code`:"pdbx_PDB_ins_code"}function Pr(e,t){return(n,r)=>t(e(n,r))}function U3(e,t,n){n&&n.includeModelNum&&e.int("pdbx_PDB_model_num",Pr(t,Ye.unit.model_num))}function To(e,t){let n=t&&t.prefix,r=At.fields().str(bi(n,"label_comp_id"),Pr(e,Ye.atom.label_comp_id)).int(bi(n,"label_seq_id"),Pr(e,Ye.residue.label_seq_id),{encoder:Vn.deltaRLE,valueKind:(i,o)=>{let s=e(i,o),a=s.unit.model;return a.atomicHierarchy.residues.label_seq_id.valueKind(a.atomicHierarchy.residueAtomSegments.index[s.element])}}).str(k3(n),Pr(e,Ye.residue.pdbx_PDB_ins_code)).str(bi(n,"label_asym_id"),Pr(e,Ye.chain.label_asym_id)).str(bi(n,"label_entity_id"),Pr(e,Ye.chain.label_entity_id)).str(bi(n,"auth_comp_id"),Pr(e,Ye.atom.auth_comp_id)).int(bi(n,"auth_seq_id"),Pr(e,Ye.residue.auth_seq_id),{encoder:Vn.deltaRLE}).str(bi(n,"auth_asym_id"),Pr(e,Ye.chain.auth_asym_id));return U3(r,e,t),r.getFields()}var Qr=At.Field,h1={name:"struct_conf",instance(e){let t=g1(e,"helix");return{fields:T3(),source:[{data:t,rowCount:t.length}]}}},_1={name:"struct_sheet_range",instance(e){let t=g1(e,"sheet").sort(R3);return{fields:F3(),source:[{data:t,rowCount:t.length}]}}};function R3(e,t){let n=e.element,r=t.element;return n.sheet_id[Qr.str("conf_type_id",(e,t)=>t[e].element.type_id),Qr.str("id",(e,t,n)=>`${t[e].element.type_id}${n+1}`),...To((e,t)=>t[e].start,{prefix:"beg"}),...To((e,t)=>t[e].end,{prefix:"end"}),Qr.str("pdbx_PDB_helix_class",(e,t)=>t[e].element.helix_class),Qr.str("details",(e,t)=>t[e].element.details||"",{valueKind:(e,t)=>t[e].element.details?0:2}),Qr.int("pdbx_PDB_helix_length",(e,t)=>t[e].length)],F3=()=>[Qr.str("sheet_id",(e,t)=>t[e].element.sheet_id),Qr.index("id"),...To((e,t)=>t[e].start,{prefix:"beg"}),...To((e,t)=>t[e].end,{prefix:"end"}),Qr.str("symmetry",(e,t)=>"",{valueKind:(e,t)=>2})];function g1(e,t){let n=zn.Provider.get(e.firstModel);if(!n)return[];let{key:r,elements:i}=n,o=[],s=e.structures[0];for(let{units:a}of s.unitSymmetryGroups){let c=a[0];if(!ge.isAtomic(c))continue;let u=c.model.atomicHierarchy.residueAtomSegments,l=We.transientSegments(u,c.elements),m,f=!0;for(;l.hasNext;){f&&(m=l.move());let d=m.index,p=r[d],h=i[p];if(h.kind!==t){f=!0;continue}let x=d;for(;l.hasNext;)if(x=m.index,m=l.move(),p!==r[m.index]){f=!1,o[o.length]={start:ht.Location.create(s,c,u.offsets[d]),end:ht.Location.create(s,c,u.offsets[x]),length:x-d+1,element:h};break}}}return o}function Ci(e,t){if(_t.is(e.sourceData))return e.sourceData.data.db[t]}function _a(e){return hn.unionMany(...e.map(t=>t.uniqueResidueNames))}function y1(e){if(e.length===0)return new Set;let t=e[0].model.entities.data.id;return new Set(Uu(e).map(n=>t.value(n)))}function Uu(e){if(e.length===0)return[];if(e.length===1)return e[0].entityIndices;let t=It.create();for(let n of e)for(let r of n.entityIndices)It.add(t,r,r);return jt(t.array),t.array}function In(e,t){return{name:e,instance({structures:n}){if(t&&!t(n[0]))return At.Category.Empty;let r=n[0].model;if(!_t.is(r.sourceData))return At.Category.Empty;let i=r.sourceData.data.db[e];return!i||!i._rowCount?At.Category.Empty:At.Category.ofTable(i)}}}var Jr=At.Category,x1={name:"chem_comp",instance({firstModel:e,structures:t,cache:n}){let r=Ci(t[0].model,"chem_comp");if(!r)return Jr.Empty;let{id:i}=r,o=n.uniqueResidueNames||(n.uniqueResidueNames=_a(t)),s=me.indicesOf(i,a=>o.has(a));return Jr.ofTable(r,s)}},A1={name:"chem_comp_bond",instance({firstModel:e,structures:t,cache:n}){let r=Ci(t[0].model,"chem_comp_bond");if(!r)return Jr.Empty;let{comp_id:i}=r,o=n.uniqueResidueNames||(n.uniqueResidueNames=_a(t)),s=me.indicesOf(i,a=>o.has(a));return Jr.ofTable(r,s)}},b1={name:"pdbx_chem_comp_identifier",instance({firstModel:e,structures:t,cache:n}){let r=Ci(e,"pdbx_chem_comp_identifier");if(!r)return Jr.Empty;let{comp_id:i}=r,o=n.uniqueResidueNames||(n.uniqueResidueNames=_a(t)),s=me.indicesOf(i,a=>o.has(a));return Jr.ofTable(r,s)}},C1={name:"pdbx_nonpoly_scheme",instance({firstModel:e,structures:t,cache:n}){let r=Ci(e,"pdbx_nonpoly_scheme");return r?Jr.ofTable(r):Jr.Empty}};var S1=At.Category,I1=Ru("struct_asym"),w1=Ru("entity_poly"),v1=Ru("entity_poly_seq");function Ru(e){return{name:e,instance({structures:t,cache:n}){return O3(t,e,n)}}}function O3(e,t,n){let r=Ci(e[0].model,t);if(!r)return S1.Empty;let{entity_id:i}=r,o=n.uniqueEntityIds||(n.uniqueEntityIds=y1(e)),s=me.indicesOf(i,a=>o.has(a));return S1.ofTable(r,s)}var L3=At.Category,P1;(function(e){function t(n){let r=Array.isArray(n)?n:[n];return{structures:r,firstModel:r[0].model,cache:Object.create(null)}}e.create=t})(P1||(P1={}));var q3={name:"entity",instance({structures:e}){let t=Uu(e);return L3.ofTable(e[0].model.entities.data,t)}};function Fu(e){return e.units.every(t=>t.conformation.operator.isIdentity)}function Tu(e){return Fu(e)&&e.units.every(t=>!t.conformation.operator.assembly&&!t.conformation.operator.suffix)}var eR=[In("entry"),In("exptl"),q3,In("cell",Fu),In("symmetry",Fu),In("pdbx_struct_assembly",Tu),In("pdbx_struct_assembly_gen",Tu),In("pdbx_struct_oper_list",Tu),h1,_1,I1,w1,v1,In("pdbx_entity_branch"),In("pdbx_entity_branch_link"),In("pdbx_branch_scheme"),In("struct_conn"),x1,A1,b1,In("atom_sites"),C1,p1],B1;(function(e){e.AtomSitePositionsFieldNames=new Set(["id","Cartn_x","Cartn_y","Cartn_z"])})(B1||(B1={}));var Be;(function(e){function t(y,g){return{kind:"singletons",source:y,structure:g}}e.Singletons=t;function n(y,g){return{kind:"sequence",source:y,structures:g}}e.Sequence=n;function r(y){return t(y,ot.Empty)}e.Empty=r;function i(y){return y.kind==="singletons"}e.isSingleton=i;function o(y){return i(y)?y.structure.units.length===0:y.structures.length===0}e.isEmpty=o;function s(y){return i(y)?y.structure.elementCount:y.structures.length}e.structureCount=s;function a(y){return o(y)?ot.Empty:i(y)?y.structure:di(y.source,y.structures)}e.unionStructure=a;function c(y){let g=[],{unitMap:C}=y.source;for(let _ of a(y).units)_===C.get(_.id)?g[g.length]={unit:_,indices:Ie.ofBounds(0,_.elements.length)}:g[g.length]={unit:_,indices:Ie.ofSortedArray(le.indicesOf(C.get(_.id).elements,_.elements))};return ht.Loci(y.source,g)}e.toLociWithCurrentUnits=c;function u(y){let g=[],{unitMap:C}=y.source;for(let _ of a(y).units){let b=C.get(_.id);b===_?g[g.length]={unit:b,indices:Ie.ofBounds(0,b.elements.length)}:g[g.length]={unit:b,indices:Ie.ofSortedArray(le.indicesOf(b.elements,_.elements))}}return ht.Loci(y.source,g)}e.toLociWithSourceUnits=u;function l(y,g,C){return g.length===0?r(y):C?t(y,di(y,g)):n(y,g)}class m{add(g){let C=g.elementCount;C!==0&&(this.structures[this.structures.length]=g,C!==1&&(this.allSingletons=!1))}getSelection(){return l(this.source,this.structures,this.allSingletons)}constructor(g){this.source=g,this.structures=[],this.allSingletons=!0}}class f{add(g){let C=g.elementCount;C===0||!this.uniqueSets.add(g)||(this.structures[this.structures.length]=g,C!==1&&(this.allSingletons=!1))}getSelection(){return l(this.structure,this.structures,this.allSingletons)}constructor(g){this.structure=g,this.structures=[],this.allSingletons=!0,this.uniqueSets=wi(ot.hashCode,ot.areUnitIdsAndIndicesEqual)}}function d(y){return new m(y)}e.LinearBuilder=d;function p(y){return new f(y)}e.UniqueBuilder=p;function h(y,g){let C=0;if(e.isSingleton(y))for(let _ of y.structure.units){let{elements:b}=_;for(let I=0,E=b.length;I ngx-bio-tools - + @@ -13,8 +13,9 @@ - + - + diff --git a/docs/main-UMKTUCWS.js b/docs/main-UMKTUCWS.js new file mode 100644 index 0000000..ce97aa0 --- /dev/null +++ b/docs/main-UMKTUCWS.js @@ -0,0 +1 @@ +import{a as x}from"./chunk-ED6QR4VZ.js";import{$ as A,A as n,B as r,C as y,D as C,F as E,G as v,H as b,N as o,Q as M,R as d,V as k,W as P,Y as D,Z as V,_ as q,ba as F,e as c,ea as p,ga as I,ha as O,i as h,ia as R,j as f,ja as L,ka as N,la as j,ma as w,n as s,o as T,q as _,r as u,t as g,z as e}from"./chunk-SAL4EXGL.js";import"./chunk-T4BLILQN.js";var z=(()=>{let i=class i{};i.\u0275fac=function(a){return new(a||i)},i.\u0275cmp=c({type:i,selectors:[["page-home"]],standalone:!0,features:[d],decls:54,vars:0,consts:[[1,"container","pt-3"],[1,"row"],[1,"col-12"],[1,"mb-3"],[1,"row","align-items-stretch","mb-3"],[1,"col-4"],["routerLink","/structure",1,"card","bg-body-tertiary","cursor-pointer","shadow-sm","mb-3"],[1,"card-header","bg-primary"],[1,"bi","bi-boxes","me-3"],[1,"card-body"],["src","assets/structure-viewer.png","alt","Structure viewer",1,"w-100","h-auto"],[1,"card-text"],[1,"text-center","mt-auto"],[1,"badge","rounded-pill","bg-primary"],[1,"bi","bi-chevron-right"],["routerLink","/features",1,"card","bg-body-tertiary","cursor-pointer","shadow-sm","mb-3"],[1,"bi","bi-sliders","me-1"],["src","assets/features-viewer.png","alt","Features viewer",1,"w-100","h-auto"],["routerLink","/sequence",1,"card","bg-body-tertiary","cursor-pointer","shadow-sm","mb-3"],[1,"bi","bi-body-text","me-1"],["src","assets/sequence-viewer.png","alt","Sequence viewer",1,"w-100","h-auto"],[1,"card","mb-3"],[1,"bi","bi-recycle","me-1"]],template:function(a,S){a&1&&(e(0,"div",0)(1,"div",1)(2,"div",2)(3,"h1",3),o(4,"Products"),n()()(),e(5,"div",4)(6,"div",5)(7,"div",6)(8,"h2",7),r(9,"i",8),o(10," ngx-structure-viewer"),n(),e(11,"div",9),r(12,"img",10),e(13,"p",11),o(14," Visualize and interact with 3D molecular structures. Provides Mol* functionalities out-of-the-box for Angular developers. "),n(),e(15,"div",12)(16,"span",13),o(17," Try it out "),r(18,"i",14),n()()()()(),e(19,"div",5)(20,"div",15)(21,"h2",7),r(22,"i",16),o(23," ngx-features-viewer "),n(),e(24,"div",9),r(25,"img",17),e(26,"p",11),o(27," The ultimate tool for Angular developers who want to visualize and interact biological sequences and their features. "),n(),e(28,"div",12)(29,"span",13),o(30," Try it out "),r(31,"i",14),n()()()()(),e(32,"div",5)(33,"div",18)(34,"h2",7),r(35,"i",19),o(36," ngx-sequence-viewer "),n(),e(37,"div",9),r(38,"img",20),e(39,"p",11),o(40," Angular native component for single sequences or multiple sequence alignments. Does not require any third party library. "),n(),e(41,"div",12)(42,"span",13),o(43," Try it out "),r(44,"i",14),n()()()()()(),e(45,"div",1)(46,"div",2)(47,"div",21)(48,"h2",7),r(49,"i",22),o(50," Enhanced interactivity "),n(),e(51,"div",9)(52,"p",11),o(53," Our components are designed starting from the same, generic data structures. This allows to easily wire up multiple components in the same Angular component. Hence, it provides component interaction out-of-the-box. "),n()()()()()())},dependencies:[p,w,R],styles:[".cursor-pointer[_ngcontent-%COMP%]{cursor:pointer}"]});let t=i;return t})();var B=[{path:"structure",loadChildren:()=>import("./chunk-L7IOURQX.js").then(t=>t.PageStructureViewerModule)},{path:"features",loadChildren:()=>import("./chunk-DUVKI6S6.js").then(t=>t.PageFeaturesViewerModule)},{path:"sequence",loadChildren:()=>import("./chunk-BDFDQ2SB.js").then(t=>t.PageSequenceViewerModule)},{path:"",component:z},{path:"**",redirectTo:""}];var H={providers:[N(B,j(L))]};function K(t,i){t&1&&r(0,"i",8)}function Q(t,i){t&1&&r(0,"i",9)}function W(t,i){t&1&&r(0,"i",10)}function X(t,i){if(t&1){let m=E();y(0),e(1,"a",1),y(2,2),_(3,K,1,0,"i",3)(4,Q,1,0,"i",4)(5,W,1,0,"i",5),C(),n(),e(6,"ul",6)(7,"li")(8,"button",7),v("click",function(){h(m);let a=b();return f(a.setTheme("light"))}),r(9,"i",8),o(10," Light "),n()(),e(11,"li")(12,"button",7),v("click",function(){h(m);let a=b();return f(a.setTheme("dark"))}),r(13,"i",9),o(14," Dark "),n()(),e(15,"li")(16,"button",7),v("click",function(){h(m);let a=b();return f(a.setTheme("auto"))}),r(17,"i",10),o(18," Auto "),n()()(),C()}if(t&2){let m=i.ngIf;s(2),u("ngSwitch",m),s(),u("ngSwitchCase","light"),s(),u("ngSwitchCase","dark"),s(4),g("fw-bold",m==="light"),s(4),g("fw-bold",m==="dark"),s(4),g("fw-bold",m==="auto")}}var U=(()=>{let i=class i{constructor(l){this.themeSelectorService=l,this.theme$=this.themeSelectorService.theme$}setTheme(l){this.theme$.next(l)}};i.\u0275fac=function(a){return new(a||i)(T(x))},i.\u0275cmp=c({type:i,selectors:[["app-theme-selector"]],standalone:!0,features:[d],decls:2,vars:3,consts:[[4,"ngIf"],["role","button","data-bs-toggle","dropdown","aria-expanded","false",1,"nav-link","dropdown-toggle","text-white"],[3,"ngSwitch"],["class","bi bi-sun-fill",4,"ngSwitchCase"],["class","bi bi-moon-stars-fill",4,"ngSwitchCase"],["class","bi bi-circle-half",4,"ngSwitchDefault"],[1,"dropdown-menu","dropdown-menu-end"],["type","button",1,"dropdown-item",3,"click"],[1,"bi","bi-sun-fill"],[1,"bi","bi-moon-stars-fill"],[1,"bi","bi-circle-half"]],template:function(a,S){a&1&&(_(0,X,19,9,"ng-container",0),k(1,"async")),a&2&&u("ngIf",P(1,1,S.theme$))},dependencies:[p,D,V,q,A,F]});let t=i;return t})();var G=(()=>{let i=class i{constructor(){this.title="ngx-bio-tools"}};i.\u0275fac=function(a){return new(a||i)},i.\u0275cmp=c({type:i,selectors:[["app-root"]],standalone:!0,features:[M([x]),d],decls:22,vars:0,consts:[[1,"navbar","navbar-expand"],[1,"container-fluid"],["href","#",1,"navbar-brand","d-flex","flex-row","align-items-center","gap-3"],["src","assets/ngx-biocomp-up-white.png","alt","ngx-biocomp-up","height","38"],[1,"h2","text-white","m-0"],[1,"navbar-nav"],[1,"nav-item","dropdown"],[1,"container-fluid","bg-dark","pt-2","pb-2"],[1,"row"],[1,"col-3","d-flex","justify-content-start"],["src","assets/biocomp-white.png","alt","BioComputing UP","height","36"],[1,"col-6","d-flex","align-items-center","justify-content-center"],["href","https://github.com/damiclem",1,"text-light","small"],[1,"bi","bi-github"],[1,"col-3","d-flex","justify-content-end"],["src","assets/unipd-white.png","alt","University of Padua","height","36"]],template:function(a,S){a&1&&(e(0,"header")(1,"nav",0)(2,"div",1)(3,"a",2),r(4,"img",3),e(5,"h1",4),o(6,"ngx-biocomp-up"),n()(),e(7,"ul",5)(8,"li",6),r(9,"app-theme-selector"),n()()()()(),e(10,"main"),r(11,"router-outlet"),n(),e(12,"footer",7)(13,"div",8)(14,"div",9),r(15,"img",10),n(),e(16,"div",11)(17,"a",12),o(18," Developed by Damiano Clementel "),r(19,"i",13),n()(),e(20,"div",14),r(21,"img",15),n()()())},dependencies:[U,p,w,O],styles:["[_nghost-%COMP%]{flex-direction:inherit;display:inherit;height:inherit}"]});let t=i;return t})();I(G,H).catch(t=>console.error(t)); diff --git a/docs/main.5b859c60ef271fc0.js b/docs/main.5b859c60ef271fc0.js deleted file mode 100644 index 306d98f..0000000 --- a/docs/main.5b859c60ef271fc0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdemo_showcase=self.webpackChunkdemo_showcase||[]).push([[792],{1678:(Te,oe,S)=>{var E=S(345),I=S(6933),W=S(177),N=S(4438);const Q={providers:[(0,I.lh)([{path:"structure",loadComponent:()=>Promise.all([S.e(509),S.e(876)]).then(S.bind(S,9876)).then(q=>q.PageStructureViewerComponent)},{path:"sequence",loadComponent:()=>Promise.all([S.e(509),S.e(39)]).then(S.bind(S,3039)).then(q=>q.PageSequenceViewerComponent)},{path:"features",loadComponent:()=>S.e(772).then(S.bind(S,9772)).then(q=>q.PageFeaturesViewerComponent)},{path:"",component:(()=>{class q{static#e=this.\u0275fac=function(ye){return new(ye||q)};static#t=this.\u0275cmp=N.VBU({type:q,selectors:[["page-home"]],standalone:!0,features:[N.aNF],decls:54,vars:0,consts:[[1,"container","pt-3"],[1,"row"],[1,"col-12"],[1,"mb-3"],[1,"row","align-items-stretch","mb-3"],[1,"col-4"],["routerLink","/structure",1,"card","bg-body-tertiary","cursor-pointer","shadow-sm","mb-3"],[1,"card-header","bg-primary"],[1,"bi","bi-boxes","me-3"],[1,"card-body"],["src","assets/structure-viewer.png","alt","Structure viewer",1,"w-100","h-auto"],[1,"card-text"],[1,"text-center","mt-auto"],[1,"badge","rounded-pill","bg-primary"],[1,"bi","bi-chevron-right"],["routerLink","/features",1,"card","bg-body-tertiary","cursor-pointer","shadow-sm","mb-3"],[1,"bi","bi-sliders","me-1"],["src","assets/features-viewer.png","alt","Features viewer",1,"w-100","h-auto"],["routerLink","/sequence",1,"card","bg-body-tertiary","cursor-pointer","shadow-sm","mb-3"],[1,"bi","bi-body-text","me-1"],["src","assets/sequence-viewer.png","alt","Sequence viewer",1,"w-100","h-auto"],[1,"card","mb-3"],[1,"bi","bi-recycle","me-1"]],template:function(ye,le){1&ye&&(N.j41(0,"div",0)(1,"div",1)(2,"div",2)(3,"h1",3),N.EFF(4,"Products"),N.k0s()()(),N.j41(5,"div",4)(6,"div",5)(7,"div",6)(8,"h2",7),N.nrm(9,"i",8),N.EFF(10," ngx-structure-viewer"),N.k0s(),N.j41(11,"div",9),N.nrm(12,"img",10),N.j41(13,"p",11),N.EFF(14," Visualize and interact with 3D molecular structures. Provides Mol* functionalities out-of-the-box for Angular developers. "),N.k0s(),N.j41(15,"div",12)(16,"span",13),N.EFF(17," Try it out "),N.nrm(18,"i",14),N.k0s()()()()(),N.j41(19,"div",5)(20,"div",15)(21,"h2",7),N.nrm(22,"i",16),N.EFF(23," ngx-features-viewer "),N.k0s(),N.j41(24,"div",9),N.nrm(25,"img",17),N.j41(26,"p",11),N.EFF(27," The ultimate tool for Angular developers who want to visualize and interact biological sequences and their features. "),N.k0s(),N.j41(28,"div",12)(29,"span",13),N.EFF(30," Try it out "),N.nrm(31,"i",14),N.k0s()()()()(),N.j41(32,"div",5)(33,"div",18)(34,"h2",7),N.nrm(35,"i",19),N.EFF(36," ngx-sequence-viewer "),N.k0s(),N.j41(37,"div",9),N.nrm(38,"img",20),N.j41(39,"p",11),N.EFF(40," Angular native component for single sequences or multiple sequence alignments. Does not require any third party library. "),N.k0s(),N.j41(41,"div",12)(42,"span",13),N.EFF(43," Try it out "),N.nrm(44,"i",14),N.k0s()()()()()(),N.j41(45,"div",1)(46,"div",2)(47,"div",21)(48,"h2",7),N.nrm(49,"i",22),N.EFF(50," Enhanced interactivity "),N.k0s(),N.j41(51,"div",9)(52,"p",11),N.EFF(53," Our components are designed starting from the same, generic data structures. This allows to easily wire up multiple components in the same Angular component. Hence, it provides component interaction out-of-the-box. "),N.k0s()()()()()())},dependencies:[W.MD,I.iI,I.Wk],styles:[".cursor-pointer[_ngcontent-%COMP%]{cursor:pointer}"]})}return q})()},{path:"**",redirectTo:""}])]};(0,E.B8)((()=>{class q{constructor(){this.title="ngx-bio-tools",this.sequence="MLPGLALLLLAAWTARALEVPTDGNAGLLAEPQIAMFCGRLNMHMNVQNGKWDSDPSGTKTCIDTKEGILQYCQEVYPELQITNVVEANQPVTIQNWCKRGRKQCKTHPHFVIPYRCLVGEFVSDALLVPDKCKFLHQERMDVCETHLHWHTVAKETCSEKSTNLHDYGMLLPCGIDKFRGVEFVCCPLAEESDNVDSADAEEDDSDVWWGGADTDYADGSEDKVVEVAEEEEVAEVEEEEADDDEDDEDGDEVEEEAEEPYEEATERTTSIATTTTTTTESVEEVVREVCSEQAETGPCRAMISRWYFDVTEGKCAPFFYGGCGGNRNNFDTEEYCMAVCGSAMSQSLLKTTQEPLARDPVKLPTTAASTPDAVDKYLETPGDENEHAHFQKAKERLEAKHRERMSQVMREWEEAERQAKNLPKADKKAVIQHFQEKVESLEQEAANERQQLVETHMARVEAMLNDRRRLALENYITALQAVPPRPRHVFNMLKKYVRAEQKDRQHTLKHFEHVRMVDPKKAAQIRSQVMTHLRVIYERMNQSLSLLYNVPAVAEEIQDEVDELLQKEQNYSDDVLANMISEPRISYGNDALMPSLTETKTTVELLPVNGEFSLDDLQPWHSFGADSVPANTENEVEPVDARPAADRGLTTRPGSGLTNIKTEEISEVKMDAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIATVIVITLVMLKKKQYTSIHHGVVEVDAAVTPEERHLSKMQQNGYENPTYKFFEQMQN".split(""),this.features=[{id:0,type:"continuous",color:"blue",values:this.sequence.map(()=>Math.random()),parent:void 0,height:128},{id:1,type:"loci",color:"red",values:[{start:1,end:3},{start:5,end:6}],parent:void 0,height:96},{id:2,type:"pins",color:"green",values:[{start:5},{start:100,color:"blue"},{start:400,color:"red"}],parent:1},{id:3,type:"loci",color:"orange",values:[{start:10,end:20},{start:30,end:70}],parent:1},{id:4,type:"loci",color:"purple",values:[{start:100,end:300}],parent:void 0},{id:5,type:"dssp",color:"black",values:[{start:30,end:90,code:"H",color:"orange"},{start:120,end:300,code:"E",color:"purple"}],parent:void 0}]}static#e=this.\u0275fac=function(ye){return new(ye||q)};static#t=this.\u0275cmp=N.VBU({type:q,selectors:[["app-root"]],standalone:!0,features:[N.aNF],decls:19,vars:0,consts:[[1,"navbar"],[1,"container-fluid","justify-content-center"],["href","#",1,"navbar-brand","d-flex","flex-row","align-items-center","gap-3"],["src","assets/ngx-biocomp-up-white.png","alt","ngx-biocomp-up","height","48"],[1,"h2"],[1,"container-fluid","bg-dark","pt-2","pb-2"],[1,"row"],[1,"col-3","d-flex","justify-content-start"],["src","assets/biocomp-white.png","alt","BioComputing UP","height","36"],[1,"col-6","d-flex","align-items-center","justify-content-center"],["href","https://github.com/damiclem",1,"text-light","small"],[1,"bi","bi-github"],[1,"col-3","d-flex","justify-content-end"],["src","assets/unipd-white.png","alt","University of Padua","height","36"]],template:function(ye,le){1&ye&&(N.j41(0,"header")(1,"nav",0)(2,"div",1)(3,"a",2),N.nrm(4,"img",3),N.j41(5,"h1",4),N.EFF(6,"ngx-biocomp-up"),N.k0s()()()()(),N.j41(7,"main"),N.nrm(8,"router-outlet"),N.k0s(),N.j41(9,"footer",5)(10,"div",6)(11,"div",7),N.nrm(12,"img",8),N.k0s(),N.j41(13,"div",9)(14,"a",10),N.EFF(15," Developed by Damiano Clementel "),N.nrm(16,"i",11),N.k0s()(),N.j41(17,"div",12),N.nrm(18,"img",13),N.k0s()()())},dependencies:[W.MD,I.iI,I.n3],styles:["[_nghost-%COMP%]{height:inherit;display:inherit;flex-direction:inherit}"]})}return q})(),Q).catch(q=>console.error(q))},4412:(Te,oe,S)=>{S.d(oe,{t:()=>I});var E=S(1413);class I extends E.B{constructor(N){super(),this._value=N}get value(){return this.getValue()}_subscribe(N){const G=super._subscribe(N);return!G.closed&&N.next(this._value),G}getValue(){const{hasError:N,thrownError:G,_value:te}=this;if(N)throw G;return this._throwIfClosed(),te}next(N){super.next(this._value=N)}}},1985:(Te,oe,S)=>{S.d(oe,{c:()=>Y});var E=S(7707),I=S(8359),W=S(3494),N=S(1203),G=S(1026),te=S(8071),Q=S(9786);let Y=(()=>{class ie{constructor(le){le&&(this._subscribe=le)}lift(le){const Ee=new ie;return Ee.source=this,Ee.operator=le,Ee}subscribe(le,Ee,Je){const Be=function H(ie){return ie&&ie instanceof E.vU||function q(ie){return ie&&(0,te.T)(ie.next)&&(0,te.T)(ie.error)&&(0,te.T)(ie.complete)}(ie)&&(0,I.Uv)(ie)}(le)?le:new E.Ms(le,Ee,Je);return(0,Q.Y)(()=>{const{operator:we,source:Ue}=this;Be.add(we?we.call(Be,Ue):Ue?this._subscribe(Be):this._trySubscribe(Be))}),Be}_trySubscribe(le){try{return this._subscribe(le)}catch(Ee){le.error(Ee)}}forEach(le,Ee){return new(Ee=ne(Ee))((Je,Be)=>{const we=new E.Ms({next:Ue=>{try{le(Ue)}catch(ze){Be(ze),we.unsubscribe()}},error:Be,complete:Je});this.subscribe(we)})}_subscribe(le){var Ee;return null===(Ee=this.source)||void 0===Ee?void 0:Ee.subscribe(le)}[W.s](){return this}pipe(...le){return(0,N.m)(le)(this)}toPromise(le){return new(le=ne(le))((Ee,Je)=>{let Be;this.subscribe(we=>Be=we,we=>Je(we),()=>Ee(Be))})}}return ie.create=ye=>new ie(ye),ie})();function ne(ie){var ye;return null!==(ye=ie??G.$.Promise)&&void 0!==ye?ye:Promise}},1413:(Te,oe,S)=>{S.d(oe,{B:()=>Q});var E=S(1985),I=S(8359);const N=(0,S(1853).L)(ne=>function(){ne(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var G=S(7908),te=S(9786);let Q=(()=>{class ne extends E.c{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(H){const ie=new Y(this,this);return ie.operator=H,ie}_throwIfClosed(){if(this.closed)throw new N}next(H){(0,te.Y)(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const ie of this.currentObservers)ie.next(H)}})}error(H){(0,te.Y)(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=H;const{observers:ie}=this;for(;ie.length;)ie.shift().error(H)}})}complete(){(0,te.Y)(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:H}=this;for(;H.length;)H.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var H;return(null===(H=this.observers)||void 0===H?void 0:H.length)>0}_trySubscribe(H){return this._throwIfClosed(),super._trySubscribe(H)}_subscribe(H){return this._throwIfClosed(),this._checkFinalizedStatuses(H),this._innerSubscribe(H)}_innerSubscribe(H){const{hasError:ie,isStopped:ye,observers:le}=this;return ie||ye?I.Kn:(this.currentObservers=null,le.push(H),new I.yU(()=>{this.currentObservers=null,(0,G.o)(le,H)}))}_checkFinalizedStatuses(H){const{hasError:ie,thrownError:ye,isStopped:le}=this;ie?H.error(ye):le&&H.complete()}asObservable(){const H=new E.c;return H.source=this,H}}return ne.create=(q,H)=>new Y(q,H),ne})();class Y extends Q{constructor(q,H){super(),this.destination=q,this.source=H}next(q){var H,ie;null===(ie=null===(H=this.destination)||void 0===H?void 0:H.next)||void 0===ie||ie.call(H,q)}error(q){var H,ie;null===(ie=null===(H=this.destination)||void 0===H?void 0:H.error)||void 0===ie||ie.call(H,q)}complete(){var q,H;null===(H=null===(q=this.destination)||void 0===q?void 0:q.complete)||void 0===H||H.call(q)}_subscribe(q){var H,ie;return null!==(ie=null===(H=this.source)||void 0===H?void 0:H.subscribe(q))&&void 0!==ie?ie:I.Kn}}},7707:(Te,oe,S)=>{S.d(oe,{Ms:()=>Je,vU:()=>ie});var E=S(8071),I=S(8359),W=S(1026),N=S(5334),G=S(5343);const te=ne("C",void 0,void 0);function ne(ce,ae,Ce){return{kind:ce,value:ae,error:Ce}}var q=S(9270),H=S(9786);class ie extends I.yU{constructor(ae){super(),this.isStopped=!1,ae?(this.destination=ae,(0,I.Uv)(ae)&&ae.add(this)):this.destination=ze}static create(ae,Ce,Ae){return new Je(ae,Ce,Ae)}next(ae){this.isStopped?Ue(function Y(ce){return ne("N",ce,void 0)}(ae),this):this._next(ae)}error(ae){this.isStopped?Ue(function Q(ce){return ne("E",void 0,ce)}(ae),this):(this.isStopped=!0,this._error(ae))}complete(){this.isStopped?Ue(te,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(ae){this.destination.next(ae)}_error(ae){try{this.destination.error(ae)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const ye=Function.prototype.bind;function le(ce,ae){return ye.call(ce,ae)}class Ee{constructor(ae){this.partialObserver=ae}next(ae){const{partialObserver:Ce}=this;if(Ce.next)try{Ce.next(ae)}catch(Ae){Be(Ae)}}error(ae){const{partialObserver:Ce}=this;if(Ce.error)try{Ce.error(ae)}catch(Ae){Be(Ae)}else Be(ae)}complete(){const{partialObserver:ae}=this;if(ae.complete)try{ae.complete()}catch(Ce){Be(Ce)}}}class Je extends ie{constructor(ae,Ce,Ae){let fe;if(super(),(0,E.T)(ae)||!ae)fe={next:ae??void 0,error:Ce??void 0,complete:Ae??void 0};else{let ee;this&&W.$.useDeprecatedNextContext?(ee=Object.create(ae),ee.unsubscribe=()=>this.unsubscribe(),fe={next:ae.next&&le(ae.next,ee),error:ae.error&&le(ae.error,ee),complete:ae.complete&&le(ae.complete,ee)}):fe=ae}this.destination=new Ee(fe)}}function Be(ce){W.$.useDeprecatedSynchronousErrorHandling?(0,H.l)(ce):(0,N.m)(ce)}function Ue(ce,ae){const{onStoppedNotification:Ce}=W.$;Ce&&q.f.setTimeout(()=>Ce(ce,ae))}const ze={closed:!0,next:G.l,error:function we(ce){throw ce},complete:G.l}},8359:(Te,oe,S)=>{S.d(oe,{Kn:()=>te,yU:()=>G,Uv:()=>Q});var E=S(8071);const W=(0,S(1853).L)(ne=>function(H){ne(this),this.message=H?`${H.length} errors occurred during unsubscription:\n${H.map((ie,ye)=>`${ye+1}) ${ie.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=H});var N=S(7908);class G{constructor(q){this.initialTeardown=q,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let q;if(!this.closed){this.closed=!0;const{_parentage:H}=this;if(H)if(this._parentage=null,Array.isArray(H))for(const le of H)le.remove(this);else H.remove(this);const{initialTeardown:ie}=this;if((0,E.T)(ie))try{ie()}catch(le){q=le instanceof W?le.errors:[le]}const{_finalizers:ye}=this;if(ye){this._finalizers=null;for(const le of ye)try{Y(le)}catch(Ee){q=q??[],Ee instanceof W?q=[...q,...Ee.errors]:q.push(Ee)}}if(q)throw new W(q)}}add(q){var H;if(q&&q!==this)if(this.closed)Y(q);else{if(q instanceof G){if(q.closed||q._hasParent(this))return;q._addParent(this)}(this._finalizers=null!==(H=this._finalizers)&&void 0!==H?H:[]).push(q)}}_hasParent(q){const{_parentage:H}=this;return H===q||Array.isArray(H)&&H.includes(q)}_addParent(q){const{_parentage:H}=this;this._parentage=Array.isArray(H)?(H.push(q),H):H?[H,q]:q}_removeParent(q){const{_parentage:H}=this;H===q?this._parentage=null:Array.isArray(H)&&(0,N.o)(H,q)}remove(q){const{_finalizers:H}=this;H&&(0,N.o)(H,q),q instanceof G&&q._removeParent(this)}}G.EMPTY=(()=>{const ne=new G;return ne.closed=!0,ne})();const te=G.EMPTY;function Q(ne){return ne instanceof G||ne&&"closed"in ne&&(0,E.T)(ne.remove)&&(0,E.T)(ne.add)&&(0,E.T)(ne.unsubscribe)}function Y(ne){(0,E.T)(ne)?ne():ne.unsubscribe()}},1026:(Te,oe,S)=>{S.d(oe,{$:()=>E});const E={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1}},1983:(Te,oe,S)=>{S.d(oe,{z:()=>Ee,P:()=>Je});var E=S(1985);const{isArray:I}=Array,{getPrototypeOf:W,prototype:N,keys:G}=Object;var Y=S(6648),ne=S(3669),q=S(6450),H=S(9326),ye=S(4360),le=S(5225);function Ee(...we){const Ue=(0,H.lI)(we),ze=(0,H.ms)(we),{args:ce,keys:ae}=function te(we){if(1===we.length){const Ue=we[0];if(I(Ue))return{args:Ue,keys:null};if(function Q(we){return we&&"object"==typeof we&&W(we)===N}(Ue)){const ze=G(Ue);return{args:ze.map(ce=>Ue[ce]),keys:ze}}}return{args:we,keys:null}}(we);if(0===ce.length)return(0,Y.H)([],Ue);const Ce=new E.c(Je(ce,Ue,ae?Ae=>function ie(we,Ue){return we.reduce((ze,ce,ae)=>(ze[ce]=Ue[ae],ze),{})}(ae,Ae):ne.D));return ze?Ce.pipe((0,q.I)(ze)):Ce}function Je(we,Ue,ze=ne.D){return ce=>{Be(Ue,()=>{const{length:ae}=we,Ce=new Array(ae);let Ae=ae,fe=ae;for(let ee=0;ee{const ve=(0,Y.H)(we[ee],Ue);let Fe=!1;ve.subscribe((0,ye._)(ce,Ye=>{Ce[ee]=Ye,Fe||(Fe=!0,fe--),fe||ce.next(ze(Ce.slice()))},()=>{--Ae||ce.complete()}))},ce)},ce)}}function Be(we,Ue,ze){we?(0,le.N)(ze,we,Ue):Ue()}},8793:(Te,oe,S)=>{S.d(oe,{x:()=>G});var E=S(6365),W=S(9326),N=S(6648);function G(...te){return function I(){return(0,E.U)(1)}()((0,N.H)(te,(0,W.lI)(te)))}},983:(Te,oe,S)=>{S.d(oe,{w:()=>I});const I=new(S(1985).c)(G=>G.complete())},6648:(Te,oe,S)=>{S.d(oe,{H:()=>Ae});var E=S(8750),I=S(5225),W=S(9974),N=S(4360);function G(fe,ee=0){return(0,W.N)((ve,Fe)=>{ve.subscribe((0,N._)(Fe,Ye=>(0,I.N)(Fe,fe,()=>Fe.next(Ye),ee),()=>(0,I.N)(Fe,fe,()=>Fe.complete(),ee),Ye=>(0,I.N)(Fe,fe,()=>Fe.error(Ye),ee)))})}function te(fe,ee=0){return(0,W.N)((ve,Fe)=>{Fe.add(fe.schedule(()=>ve.subscribe(Fe),ee))})}var ne=S(1985),H=S(4761),ie=S(8071);function le(fe,ee){if(!fe)throw new Error("Iterable cannot be null");return new ne.c(ve=>{(0,I.N)(ve,ee,()=>{const Fe=fe[Symbol.asyncIterator]();(0,I.N)(ve,ee,()=>{Fe.next().then(Ye=>{Ye.done?ve.complete():ve.next(Ye.value)})},0,!0)})})}var Ee=S(5055),Je=S(9858),Be=S(7441),we=S(5397),Ue=S(7953),ze=S(591),ce=S(5196);function Ae(fe,ee){return ee?function Ce(fe,ee){if(null!=fe){if((0,Ee.l)(fe))return function Q(fe,ee){return(0,E.Tg)(fe).pipe(te(ee),G(ee))}(fe,ee);if((0,Be.X)(fe))return function q(fe,ee){return new ne.c(ve=>{let Fe=0;return ee.schedule(function(){Fe===fe.length?ve.complete():(ve.next(fe[Fe++]),ve.closed||this.schedule())})})}(fe,ee);if((0,Je.y)(fe))return function Y(fe,ee){return(0,E.Tg)(fe).pipe(te(ee),G(ee))}(fe,ee);if((0,Ue.T)(fe))return le(fe,ee);if((0,we.x)(fe))return function ye(fe,ee){return new ne.c(ve=>{let Fe;return(0,I.N)(ve,ee,()=>{Fe=fe[H.l](),(0,I.N)(ve,ee,()=>{let Ye,Zt;try{({value:Ye,done:Zt}=Fe.next())}catch(_t){return void ve.error(_t)}Zt?ve.complete():ve.next(Ye)},0,!0)}),()=>(0,ie.T)(Fe?.return)&&Fe.return()})}(fe,ee);if((0,ce.U)(fe))return function ae(fe,ee){return le((0,ce.C)(fe),ee)}(fe,ee)}throw(0,ze.L)(fe)}(fe,ee):(0,E.Tg)(fe)}},8750:(Te,oe,S)=>{S.d(oe,{Tg:()=>ye});var E=S(1635),I=S(7441),W=S(9858),N=S(1985),G=S(5055),te=S(7953),Q=S(591),Y=S(5397),ne=S(5196),q=S(8071),H=S(5334),ie=S(3494);function ye(ce){if(ce instanceof N.c)return ce;if(null!=ce){if((0,G.l)(ce))return function le(ce){return new N.c(ae=>{const Ce=ce[ie.s]();if((0,q.T)(Ce.subscribe))return Ce.subscribe(ae);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(ce);if((0,I.X)(ce))return function Ee(ce){return new N.c(ae=>{for(let Ce=0;Ce{ce.then(Ce=>{ae.closed||(ae.next(Ce),ae.complete())},Ce=>ae.error(Ce)).then(null,H.m)})}(ce);if((0,te.T)(ce))return we(ce);if((0,Y.x)(ce))return function Be(ce){return new N.c(ae=>{for(const Ce of ce)if(ae.next(Ce),ae.closed)return;ae.complete()})}(ce);if((0,ne.U)(ce))return function Ue(ce){return we((0,ne.C)(ce))}(ce)}throw(0,Q.L)(ce)}function we(ce){return new N.c(ae=>{(function ze(ce,ae){var Ce,Ae,fe,ee;return(0,E.sH)(this,void 0,void 0,function*(){try{for(Ce=(0,E.xN)(ce);!(Ae=yield Ce.next()).done;)if(ae.next(Ae.value),ae.closed)return}catch(ve){fe={error:ve}}finally{try{Ae&&!Ae.done&&(ee=Ce.return)&&(yield ee.call(Ce))}finally{if(fe)throw fe.error}}ae.complete()})})(ce,ae).catch(Ce=>ae.error(Ce))})}},4360:(Te,oe,S)=>{S.d(oe,{_:()=>I});var E=S(7707);function I(N,G,te,Q,Y){return new W(N,G,te,Q,Y)}class W extends E.vU{constructor(G,te,Q,Y,ne,q){super(G),this.onFinalize=ne,this.shouldUnsubscribe=q,this._next=te?function(H){try{te(H)}catch(ie){G.error(ie)}}:super._next,this._error=Y?function(H){try{Y(H)}catch(ie){G.error(ie)}finally{this.unsubscribe()}}:super._error,this._complete=Q?function(){try{Q()}catch(H){G.error(H)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var G;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:te}=this;super.unsubscribe(),!te&&(null===(G=this.onFinalize)||void 0===G||G.call(this))}}}},5964:(Te,oe,S)=>{S.d(oe,{p:()=>W});var E=S(9974),I=S(4360);function W(N,G){return(0,E.N)((te,Q)=>{let Y=0;te.subscribe((0,I._)(Q,ne=>N.call(G,ne,Y++)&&Q.next(ne)))})}},6354:(Te,oe,S)=>{S.d(oe,{T:()=>W});var E=S(9974),I=S(4360);function W(N,G){return(0,E.N)((te,Q)=>{let Y=0;te.subscribe((0,I._)(Q,ne=>{Q.next(N.call(G,ne,Y++))}))})}},6365:(Te,oe,S)=>{S.d(oe,{U:()=>W});var E=S(1397),I=S(3669);function W(N=1/0){return(0,E.Z)(I.D,N)}},1397:(Te,oe,S)=>{S.d(oe,{Z:()=>Y});var E=S(6354),I=S(8750),W=S(9974),N=S(5225),G=S(4360),Q=S(8071);function Y(ne,q,H=1/0){return(0,Q.T)(q)?Y((ie,ye)=>(0,E.T)((le,Ee)=>q(ie,le,ye,Ee))((0,I.Tg)(ne(ie,ye))),H):("number"==typeof q&&(H=q),(0,W.N)((ie,ye)=>function te(ne,q,H,ie,ye,le,Ee,Je){const Be=[];let we=0,Ue=0,ze=!1;const ce=()=>{ze&&!Be.length&&!we&&q.complete()},ae=Ae=>we{le&&q.next(Ae),we++;let fe=!1;(0,I.Tg)(H(Ae,Ue++)).subscribe((0,G._)(q,ee=>{ye?.(ee),le?ae(ee):q.next(ee)},()=>{fe=!0},void 0,()=>{if(fe)try{for(we--;Be.length&&weCe(ee)):Ce(ee)}ce()}catch(ee){q.error(ee)}}))};return ne.subscribe((0,G._)(q,ae,()=>{ze=!0,ce()})),()=>{Je?.()}}(ie,ye,ne,H)))}},9172:(Te,oe,S)=>{S.d(oe,{Z:()=>N});var E=S(8793),I=S(9326),W=S(9974);function N(...G){const te=(0,I.lI)(G);return(0,W.N)((Q,Y)=>{(te?(0,E.x)(G,Q,te):(0,E.x)(G,Q)).subscribe(Y)})}},5558:(Te,oe,S)=>{S.d(oe,{n:()=>N});var E=S(8750),I=S(9974),W=S(4360);function N(G,te){return(0,I.N)((Q,Y)=>{let ne=null,q=0,H=!1;const ie=()=>H&&!ne&&Y.complete();Q.subscribe((0,W._)(Y,ye=>{ne?.unsubscribe();let le=0;const Ee=q++;(0,E.Tg)(G(ye,Ee)).subscribe(ne=(0,W._)(Y,Je=>Y.next(te?te(ye,Je,Ee,le++):Je),()=>{ne=null,ie()}))},()=>{H=!0,ie()}))})}},6697:(Te,oe,S)=>{S.d(oe,{s:()=>N});var E=S(983),I=S(9974),W=S(4360);function N(G){return G<=0?()=>E.w:(0,I.N)((te,Q)=>{let Y=0;te.subscribe((0,W._)(Q,ne=>{++Y<=G&&(Q.next(ne),G<=Y&&Q.complete())}))})}},8141:(Te,oe,S)=>{S.d(oe,{M:()=>G});var E=S(8071),I=S(9974),W=S(4360),N=S(3669);function G(te,Q,Y){const ne=(0,E.T)(te)||Q||Y?{next:te,error:Q,complete:Y}:te;return ne?(0,I.N)((q,H)=>{var ie;null===(ie=ne.subscribe)||void 0===ie||ie.call(ne);let ye=!0;q.subscribe((0,W._)(H,le=>{var Ee;null===(Ee=ne.next)||void 0===Ee||Ee.call(ne,le),H.next(le)},()=>{var le;ye=!1,null===(le=ne.complete)||void 0===le||le.call(ne),H.complete()},le=>{var Ee;ye=!1,null===(Ee=ne.error)||void 0===Ee||Ee.call(ne,le),H.error(le)},()=>{var le,Ee;ye&&(null===(le=ne.unsubscribe)||void 0===le||le.call(ne)),null===(Ee=ne.finalize)||void 0===Ee||Ee.call(ne)}))}):N.D}},9270:(Te,oe,S)=>{S.d(oe,{f:()=>E});const E={setTimeout(I,W,...N){const{delegate:G}=E;return G?.setTimeout?G.setTimeout(I,W,...N):setTimeout(I,W,...N)},clearTimeout(I){const{delegate:W}=E;return(W?.clearTimeout||clearTimeout)(I)},delegate:void 0}},4761:(Te,oe,S)=>{S.d(oe,{l:()=>I});const I=function E(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}()},3494:(Te,oe,S)=>{S.d(oe,{s:()=>E});const E="function"==typeof Symbol&&Symbol.observable||"@@observable"},9326:(Te,oe,S)=>{S.d(oe,{R0:()=>te,lI:()=>G,ms:()=>N});var E=S(8071),I=S(9470);function W(Q){return Q[Q.length-1]}function N(Q){return(0,E.T)(W(Q))?Q.pop():void 0}function G(Q){return(0,I.m)(W(Q))?Q.pop():void 0}function te(Q,Y){return"number"==typeof W(Q)?Q.pop():Y}},7908:(Te,oe,S)=>{function E(I,W){if(I){const N=I.indexOf(W);0<=N&&I.splice(N,1)}}S.d(oe,{o:()=>E})},1853:(Te,oe,S)=>{function E(I){const N=I(G=>{Error.call(G),G.stack=(new Error).stack});return N.prototype=Object.create(Error.prototype),N.prototype.constructor=N,N}S.d(oe,{L:()=>E})},9786:(Te,oe,S)=>{S.d(oe,{Y:()=>W,l:()=>N});var E=S(1026);let I=null;function W(G){if(E.$.useDeprecatedSynchronousErrorHandling){const te=!I;if(te&&(I={errorThrown:!1,error:null}),G(),te){const{errorThrown:Q,error:Y}=I;if(I=null,Q)throw Y}}else G()}function N(G){E.$.useDeprecatedSynchronousErrorHandling&&I&&(I.errorThrown=!0,I.error=G)}},5225:(Te,oe,S)=>{function E(I,W,N,G=0,te=!1){const Q=W.schedule(function(){N(),te?I.add(this.schedule(null,G)):this.unsubscribe()},G);if(I.add(Q),!te)return Q}S.d(oe,{N:()=>E})},3669:(Te,oe,S)=>{function E(I){return I}S.d(oe,{D:()=>E})},7441:(Te,oe,S)=>{S.d(oe,{X:()=>E});const E=I=>I&&"number"==typeof I.length&&"function"!=typeof I},7953:(Te,oe,S)=>{S.d(oe,{T:()=>I});var E=S(8071);function I(W){return Symbol.asyncIterator&&(0,E.T)(W?.[Symbol.asyncIterator])}},8071:(Te,oe,S)=>{function E(I){return"function"==typeof I}S.d(oe,{T:()=>E})},5055:(Te,oe,S)=>{S.d(oe,{l:()=>W});var E=S(3494),I=S(8071);function W(N){return(0,I.T)(N[E.s])}},5397:(Te,oe,S)=>{S.d(oe,{x:()=>W});var E=S(4761),I=S(8071);function W(N){return(0,I.T)(N?.[E.l])}},9858:(Te,oe,S)=>{S.d(oe,{y:()=>I});var E=S(8071);function I(W){return(0,E.T)(W?.then)}},5196:(Te,oe,S)=>{S.d(oe,{C:()=>W,U:()=>N});var E=S(1635),I=S(8071);function W(G){return(0,E.AQ)(this,arguments,function*(){const Q=G.getReader();try{for(;;){const{value:Y,done:ne}=yield(0,E.N3)(Q.read());if(ne)return yield(0,E.N3)(void 0);yield yield(0,E.N3)(Y)}}finally{Q.releaseLock()}})}function N(G){return(0,I.T)(G?.getReader)}},9470:(Te,oe,S)=>{S.d(oe,{m:()=>I});var E=S(8071);function I(W){return W&&(0,E.T)(W.schedule)}},9974:(Te,oe,S)=>{S.d(oe,{N:()=>W,S:()=>I});var E=S(8071);function I(N){return(0,E.T)(N?.lift)}function W(N){return G=>{if(I(G))return G.lift(function(te){try{return N(te,this)}catch(Q){this.error(Q)}});throw new TypeError("Unable to lift unknown Observable type")}}},6450:(Te,oe,S)=>{S.d(oe,{I:()=>N});var E=S(6354);const{isArray:I}=Array;function N(G){return(0,E.T)(te=>function W(G,te){return I(te)?G(...te):G(te)}(G,te))}},5343:(Te,oe,S)=>{function E(){}S.d(oe,{l:()=>E})},1203:(Te,oe,S)=>{S.d(oe,{F:()=>I,m:()=>W});var E=S(3669);function I(...N){return W(N)}function W(N){return 0===N.length?E.D:1===N.length?N[0]:function(te){return N.reduce((Q,Y)=>Y(Q),te)}}},5334:(Te,oe,S)=>{S.d(oe,{m:()=>W});var E=S(1026),I=S(9270);function W(N){I.f.setTimeout(()=>{const{onUnhandledError:G}=E.$;if(!G)throw N;G(N)})}},591:(Te,oe,S)=>{function E(I){return new TypeError(`You provided ${null!==I&&"object"==typeof I?"an invalid object":`'${I}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}S.d(oe,{L:()=>E})},177:(Te,oe,S)=>{S.d(oe,{AJ:()=>Ao,Jj:()=>Ze,MD:()=>Nr,N0:()=>ro,QT:()=>W,Sm:()=>Je,T3:()=>tt,TG:()=>So,VF:()=>G,Vy:()=>No,Xr:()=>na,ZD:()=>N,_b:()=>Co,aZ:()=>we,fw:()=>Be,hb:()=>le,hj:()=>ne,lG:()=>gn,qQ:()=>Q});var E=S(4438);let I=null;function W(){return I}function N(d){I??=d}class G{}const Q=new E.nKC("");let Y=(()=>{class d{historyGo(p){throw new Error("")}static#e=this.\u0275fac=function(v){return new(v||d)};static#t=this.\u0275prov=E.jDH({token:d,factory:()=>(0,E.WQX)(q),providedIn:"platform"})}return d})();const ne=new E.nKC("");let q=(()=>{class d extends Y{constructor(){super(),this._doc=(0,E.WQX)(Q),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return W().getBaseHref(this._doc)}onPopState(p){const v=W().getGlobalEventTarget(this._doc,"window");return v.addEventListener("popstate",p,!1),()=>v.removeEventListener("popstate",p)}onHashChange(p){const v=W().getGlobalEventTarget(this._doc,"window");return v.addEventListener("hashchange",p,!1),()=>v.removeEventListener("hashchange",p)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(p){this._location.pathname=p}pushState(p,v,_){this._history.pushState(p,v,_)}replaceState(p,v,_){this._history.replaceState(p,v,_)}forward(){this._history.forward()}back(){this._history.back()}historyGo(p=0){this._history.go(p)}getState(){return this._history.state}static#e=this.\u0275fac=function(v){return new(v||d)};static#t=this.\u0275prov=E.jDH({token:d,factory:()=>new d,providedIn:"platform"})}return d})();function H(d,D){if(0==d.length)return D;if(0==D.length)return d;let p=0;return d.endsWith("/")&&p++,D.startsWith("/")&&p++,2==p?d+D.substring(1):1==p?d+D:d+"/"+D}function ie(d){const D=d.match(/#|\?|$/),p=D&&D.index||d.length;return d.slice(0,p-("/"===d[p-1]?1:0))+d.slice(p)}function ye(d){return d&&"?"!==d[0]?"?"+d:d}let le=(()=>{class d{historyGo(p){throw new Error("")}static#e=this.\u0275fac=function(v){return new(v||d)};static#t=this.\u0275prov=E.jDH({token:d,factory:()=>(0,E.WQX)(Je),providedIn:"root"})}return d})();const Ee=new E.nKC("");let Je=(()=>{class d extends le{constructor(p,v){super(),this._platformLocation=p,this._removeListenerFns=[],this._baseHref=v??this._platformLocation.getBaseHrefFromDOM()??(0,E.WQX)(Q).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(p){this._removeListenerFns.push(this._platformLocation.onPopState(p),this._platformLocation.onHashChange(p))}getBaseHref(){return this._baseHref}prepareExternalUrl(p){return H(this._baseHref,p)}path(p=!1){const v=this._platformLocation.pathname+ye(this._platformLocation.search),_=this._platformLocation.hash;return _&&p?`${v}${_}`:v}pushState(p,v,_,k){const K=this.prepareExternalUrl(_+ye(k));this._platformLocation.pushState(p,v,K)}replaceState(p,v,_,k){const K=this.prepareExternalUrl(_+ye(k));this._platformLocation.replaceState(p,v,K)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(p=0){this._platformLocation.historyGo?.(p)}static#e=this.\u0275fac=function(v){return new(v||d)(E.KVO(Y),E.KVO(Ee,8))};static#t=this.\u0275prov=E.jDH({token:d,factory:d.\u0275fac,providedIn:"root"})}return d})(),Be=(()=>{class d extends le{constructor(p,v){super(),this._platformLocation=p,this._baseHref="",this._removeListenerFns=[],null!=v&&(this._baseHref=v)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(p){this._removeListenerFns.push(this._platformLocation.onPopState(p),this._platformLocation.onHashChange(p))}getBaseHref(){return this._baseHref}path(p=!1){const v=this._platformLocation.hash??"#";return v.length>0?v.substring(1):v}prepareExternalUrl(p){const v=H(this._baseHref,p);return v.length>0?"#"+v:v}pushState(p,v,_,k){let K=this.prepareExternalUrl(_+ye(k));0==K.length&&(K=this._platformLocation.pathname),this._platformLocation.pushState(p,v,K)}replaceState(p,v,_,k){let K=this.prepareExternalUrl(_+ye(k));0==K.length&&(K=this._platformLocation.pathname),this._platformLocation.replaceState(p,v,K)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(p=0){this._platformLocation.historyGo?.(p)}static#e=this.\u0275fac=function(v){return new(v||d)(E.KVO(Y),E.KVO(Ee,8))};static#t=this.\u0275prov=E.jDH({token:d,factory:d.\u0275fac})}return d})(),we=(()=>{class d{constructor(p){this._subject=new E.bkB,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=p;const v=this._locationStrategy.getBaseHref();this._basePath=function ae(d){if(new RegExp("^(https?:)?//").test(d)){const[,p]=d.split(/\/\/[^\/]+/);return p}return d}(ie(ce(v))),this._locationStrategy.onPopState(_=>{this._subject.emit({url:this.path(!0),pop:!0,state:_.state,type:_.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(p=!1){return this.normalize(this._locationStrategy.path(p))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(p,v=""){return this.path()==this.normalize(p+ye(v))}normalize(p){return d.stripTrailingSlash(function ze(d,D){if(!d||!D.startsWith(d))return D;const p=D.substring(d.length);return""===p||["/",";","?","#"].includes(p[0])?p:D}(this._basePath,ce(p)))}prepareExternalUrl(p){return p&&"/"!==p[0]&&(p="/"+p),this._locationStrategy.prepareExternalUrl(p)}go(p,v="",_=null){this._locationStrategy.pushState(_,"",p,v),this._notifyUrlChangeListeners(this.prepareExternalUrl(p+ye(v)),_)}replaceState(p,v="",_=null){this._locationStrategy.replaceState(_,"",p,v),this._notifyUrlChangeListeners(this.prepareExternalUrl(p+ye(v)),_)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(p=0){this._locationStrategy.historyGo?.(p)}onUrlChange(p){return this._urlChangeListeners.push(p),this._urlChangeSubscription??=this.subscribe(v=>{this._notifyUrlChangeListeners(v.url,v.state)}),()=>{const v=this._urlChangeListeners.indexOf(p);this._urlChangeListeners.splice(v,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(p="",v){this._urlChangeListeners.forEach(_=>_(p,v))}subscribe(p,v,_){return this._subject.subscribe({next:p,error:v,complete:_})}static#e=this.normalizeQueryParams=ye;static#t=this.joinWithSlash=H;static#n=this.stripTrailingSlash=ie;static#r=this.\u0275fac=function(v){return new(v||d)(E.KVO(le))};static#o=this.\u0275prov=E.jDH({token:d,factory:()=>function Ue(){return new we((0,E.KVO)(le))}(),providedIn:"root"})}return d})();function ce(d){return d.replace(/\/index.html$/,"")}function Co(d,D){D=encodeURIComponent(D);for(const p of d.split(";")){const v=p.indexOf("="),[_,k]=-1==v?[p,""]:[p.slice(0,v),p.slice(v+1)];if(_.trim()===D)return decodeURIComponent(k)}return null}let tt=(()=>{class d{constructor(p){this._viewContainerRef=p,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(p){if(this._shouldRecreateView(p)){const v=this._viewContainerRef;if(this._viewRef&&v.remove(v.indexOf(this._viewRef)),!this.ngTemplateOutlet)return void(this._viewRef=null);const _=this._createContextForwardProxy();this._viewRef=v.createEmbeddedView(this.ngTemplateOutlet,_,{injector:this.ngTemplateOutletInjector??void 0})}}_shouldRecreateView(p){return!!p.ngTemplateOutlet||!!p.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(p,v,_)=>!!this.ngTemplateOutletContext&&Reflect.set(this.ngTemplateOutletContext,v,_),get:(p,v,_)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,v,_)}})}static#e=this.\u0275fac=function(v){return new(v||d)(E.rXU(E.c1b))};static#t=this.\u0275dir=E.FsC({type:d,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[E.OA$]})}return d})();class Js{createSubscription(D,p){return(0,E.O8t)(()=>D.subscribe({next:p,error:v=>{throw v}}))}dispose(D){(0,E.O8t)(()=>D.unsubscribe())}}class Ou{createSubscription(D,p){return D.then(p,v=>{throw v})}dispose(D){}}const ea=new Ou,Jo=new Js;let Ze=(()=>{class d{constructor(p){this._latestValue=null,this.markForCheckOnValueUpdate=!0,this._subscription=null,this._obj=null,this._strategy=null,this._ref=p}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(p){if(!this._obj){if(p)try{this.markForCheckOnValueUpdate=!1,this._subscribe(p)}finally{this.markForCheckOnValueUpdate=!0}return this._latestValue}return p!==this._obj?(this._dispose(),this.transform(p)):this._latestValue}_subscribe(p){this._obj=p,this._strategy=this._selectStrategy(p),this._subscription=this._strategy.createSubscription(p,v=>this._updateLatestValue(p,v))}_selectStrategy(p){if((0,E.jNT)(p))return ea;if((0,E.zjR)(p))return Jo;throw function In(d,D){return new E.wOt(2100,!1)}()}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(p,v){p===this._obj&&(this._latestValue=v,this.markForCheckOnValueUpdate&&this._ref?.markForCheck())}static#e=this.\u0275fac=function(v){return new(v||d)(E.rXU(E.gRc,16))};static#t=this.\u0275pipe=E.EJ8({name:"async",type:d,pure:!1,standalone:!0})}return d})(),So=(()=>{class d{transform(p){return JSON.stringify(p,null,2)}static#e=this.\u0275fac=function(v){return new(v||d)};static#t=this.\u0275pipe=E.EJ8({name:"json",type:d,pure:!1,standalone:!0})}return d})(),gn=(()=>{class d{constructor(p){this.differs=p,this.keyValues=[],this.compareFn=oi}transform(p,v=oi){if(!p||!(p instanceof Map)&&"object"!=typeof p)return null;this.differ??=this.differs.find(p).create();const _=this.differ.diff(p),k=v!==this.compareFn;return _&&(this.keyValues=[],_.forEachItem(K=>{this.keyValues.push(function pn(d,D){return{key:d,value:D}}(K.key,K.currentValue))})),(_||k)&&(this.keyValues.sort(v),this.compareFn=v),this.keyValues}static#e=this.\u0275fac=function(v){return new(v||d)(E.rXU(E.MKu,16))};static#t=this.\u0275pipe=E.EJ8({name:"keyvalue",type:d,pure:!1,standalone:!0})}return d})();function oi(d,D){const p=d.key,v=D.key;if(p===v)return 0;if(void 0===p)return 1;if(void 0===v)return-1;if(null===p)return 1;if(null===v)return-1;if("string"==typeof p&&"string"==typeof v)return p{class d{static#e=this.\u0275fac=function(v){return new(v||d)};static#t=this.\u0275mod=E.$C({type:d});static#n=this.\u0275inj=E.G2t({})}return d})();const Ao="browser",ii="server";function No(d){return d===ii}let na=(()=>{class d{static#e=this.\u0275prov=(0,E.jDH)({token:d,providedIn:"root",factory:()=>function Rr(d){return d===Ao}((0,E.WQX)(E.Agw))?new an((0,E.WQX)(Q),window):new ai})}return d})();class an{constructor(D,p){this.document=D,this.window=p,this.offset=()=>[0,0]}setOffset(D){this.offset=Array.isArray(D)?()=>D:D}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(D){this.window.scrollTo(D[0],D[1])}scrollToAnchor(D){const p=function fr(d,D){const p=d.getElementById(D)||d.getElementsByName(D)[0];if(p)return p;if("function"==typeof d.createTreeWalker&&d.body&&"function"==typeof d.body.attachShadow){const v=d.createTreeWalker(d.body,NodeFilter.SHOW_ELEMENT);let _=v.currentNode;for(;_;){const k=_.shadowRoot;if(k){const K=k.getElementById(D)||k.querySelector(`[name="${D}"]`);if(K)return K}_=v.nextNode()}}return null}(this.document,D);p&&(this.scrollToElement(p),p.focus())}setHistoryScrollRestoration(D){this.window.history.scrollRestoration=D}scrollToElement(D){const p=D.getBoundingClientRect(),v=p.left+this.window.pageXOffset,_=p.top+this.window.pageYOffset,k=this.offset();this.window.scrollTo(v-k[0],_-k[1])}}class ai{setOffset(D){}getScrollPosition(){return[0,0]}scrollToPosition(D){}scrollToAnchor(D){}setHistoryScrollRestoration(D){}}class ro{}},4438:(Te,oe,S)=>{S.d(oe,{iLQ:()=>rh,sZ2:()=>Sp,hnV:()=>BD,o8S:()=>qo,BIS:()=>nw,gRc:()=>eC,Ql9:()=>zT,Ocv:()=>XT,Z63:()=>er,aKT:()=>Fa,uvJ:()=>Mn,zcH:()=>po,bkB:()=>zr,$GK:()=>Ze,nKC:()=>Xe,zZn:()=>Qn,_q3:()=>dh,MKu:()=>fh,xe9:()=>ul,Co$:()=>Bm,Vns:()=>Si,SKi:()=>qt,Xx1:()=>Rr,Agw:()=>ql,PLl:()=>bp,sFG:()=>M0,_9s:()=>Zg,czy:()=>yc,kdw:()=>Ro,C4Q:()=>eu,NYb:()=>kT,giA:()=>UD,RxE:()=>OD,c1b:()=>kc,gXe:()=>pr,mal:()=>rm,L39:()=>WA,Ol2:()=>lf,w6W:()=>__,WQX:()=>Oe,QuC:()=>$t,EmA:()=>Lr,HJs:()=>JA,N4e:()=>Sn,O8t:()=>KA,H3F:()=>xD,H8p:()=>gi,KH2:()=>$s,TgB:()=>_s,wOt:()=>pe,WHO:()=>jD,e01:()=>VD,H5H:()=>jf,Zy3:()=>Vn,mq5:()=>Kv,JZv:()=>xe,TL3:()=>NA,LfX:()=>yo,plB:()=>Wo,jNT:()=>th,zjR:()=>HD,TL$:()=>ew,Tbb:()=>mt,Mj6:()=>gr,GFd:()=>Hm,OA$:()=>je,Jv_:()=>sD,aNF:()=>aD,R7$:()=>Dg,BMQ:()=>Ef,AVh:()=>Tf,vxM:()=>jv,wni:()=>Py,VBU:()=>da,FsC:()=>pa,jDH:()=>dt,G2t:()=>vo,$C:()=>Ki,EJ8:()=>Po,rXU:()=>Ds,nrm:()=>Pf,eu8:()=>kf,k0s:()=>Yc,j41:()=>Zc,RV6:()=>zv,xGo:()=>qh,KVO:()=>Nt,kS0:()=>nc,QTQ:()=>Eg,bIt:()=>Hf,lsd:()=>ky,XpG:()=>_y,nI1:()=>gD,bMT:()=>mD,Y8G:()=>Mf,eq3:()=>cD,mGM:()=>Ly,Dyx:()=>Hv,Z7z:()=>Uv,Vm6:()=>Vv,Njj:()=>Sh,tSv:()=>Jp,eBV:()=>Mh,n$t:()=>qp,xc7:()=>bf,DNE:()=>Ms,EFF:()=>Ky,JRh:()=>zf,SpI:()=>nl,GBs:()=>Fy}),S(467);let W=null,G=1;const te=Symbol("SIGNAL");function Q(e){const t=W;return W=e,t}function le(e){if((!Ae(e)||e.dirty)&&(e.dirty||e.lastCleanEpoch!==G)){if(!e.producerMustRecompute(e)&&!ze(e))return e.dirty=!1,void(e.lastCleanEpoch=G);e.producerRecomputeValue(e),e.dirty=!1,e.lastCleanEpoch=G}}function ze(e){fe(e);for(let t=0;t0}function fe(e){e.producerNode??=[],e.producerIndexOfThis??=[],e.producerLastReadVersion??=[]}let or=null;var Yt=S(1413),ct=S(8359),Ie=S(4412),Bt=S(6354);const Ft="https://g.co/ng/security#xss";class pe extends Error{constructor(t,n){super(Vn(t,n)),this.code=t}}function Vn(e,t){return`NG0${Math.abs(e)}${t?": "+t:""}`}function He(e){return{toString:e}.toString()}const Xn="__parameters__";function jt(e,t,n){return He(()=>{const r=function ar(e){return function(...n){if(e){const r=e(...n);for(const o in r)this[o]=r[o]}}}(t);function o(...i){if(this instanceof o)return r.apply(this,i),this;const s=new o(...i);return a.annotation=s,a;function a(l,g,y){const w=l.hasOwnProperty(Xn)?l[Xn]:Object.defineProperty(l,Xn,{value:[]})[Xn];for(;w.length<=y;)w.push(null);return(w[y]=w[y]||[]).push(s),l}}return n&&(o.prototype=Object.create(n.prototype)),o.prototype.ngMetadataName=e,o.annotationCls=o,o})}const xe=globalThis;function et(e){for(let t in e)if(e[t]===et)return t;throw Error("Could not find renamed property on target object.")}function mt(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(mt).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const t=e.toString();if(null==t)return""+t;const n=t.indexOf("\n");return-1===n?t:t.substring(0,n)}function ur(e,t){return null==e||""===e?null===t?"":t:null==t||""===t?e:e+" "+t}const Jr=et({__forward_ref__:et});function _r(e){return e.__forward_ref__=_r,e.toString=function(){return mt(this())},e}function O(e){return F(e)?e():e}function F(e){return"function"==typeof e&&e.hasOwnProperty(Jr)&&e.__forward_ref__===_r}function dt(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function vo(e){return{providers:e.providers||[],imports:e.imports||[]}}function to(e){return cr(e,Do)||cr(e,Eo)}function yo(e){return null!==to(e)}function cr(e,t){return e.hasOwnProperty(t)?e[t]:null}function br(e){return e&&(e.hasOwnProperty(Co)||e.hasOwnProperty(no))?e[Co]:null}const Do=et({\u0275prov:et}),Co=et({\u0275inj:et}),Eo=et({ngInjectableDef:et}),no=et({ngInjectorDef:et});class Xe{constructor(t,n){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof n?this.__NG_ELEMENT_ID__=n:void 0!==n&&(this.\u0275prov=dt({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function We(e){return e&&!!e.\u0275providers}const Qt=et({\u0275cmp:et}),Tr=et({\u0275dir:et}),Cn=et({\u0275pipe:et}),ln=et({\u0275mod:et}),En=et({\u0275fac:et}),wn=et({__NG_ELEMENT_ID__:et}),dr=et({__NG_ENV_ID__:et});function Re(e){return"string"==typeof e?e:null==e?"":String(e)}function Jo(e,t){throw new pe(-201,!1)}var Ze=function(e){return e[e.Default=0]="Default",e[e.Host=1]="Host",e[e.Self=2]="Self",e[e.SkipSelf=4]="SkipSelf",e[e.Optional=8]="Optional",e}(Ze||{});let ei;function ki(){return ei}function sn(e){const t=ei;return ei=e,t}function ti(e,t,n){const r=to(e);return r&&"root"==r.providedIn?void 0===r.value?r.value=r.factory():r.value:n&Ze.Optional?null:void 0!==t?t:void Jo()}const Mo={},ni="__NG_DI_FLAG__",Jn="ngTempTokenPath",ri=/\n/gm,pn="__source";let gn;function Hn(e){const t=gn;return gn=e,t}function ta(e,t=Ze.Default){if(void 0===gn)throw new pe(-203,!1);return null===gn?ti(e,void 0,t):gn.get(e,t&Ze.Optional?null:void 0,t)}function Nt(e,t=Ze.Default){return(ki()||ta)(O(e),t)}function Oe(e,t=Ze.Default){return Nt(e,bo(t))}function bo(e){return typeof e>"u"||"number"==typeof e?e:(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function To(e){const t=[];for(let n=0;nArray.isArray(n)?fr(n,t):t(n))}function ai(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function ro(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function mn(e,t,n){let r=Bn(e,t);return r>=0?e[1|r]=n:(r=~r,function ra(e,t,n,r){let o=e.length;if(o==t)e.push(n,r);else if(1===o)e.push(r,e[0]),e[0]=n;else{for(o--,e.push(e[o-1],e[o]);o>t;)e[o]=e[o-2],o--;e[t]=n,e[t+1]=r}}(e,r,t,n)),r}function Bi(e,t){const n=Bn(e,t);if(n>=0)return e[1|n]}function Bn(e,t){return function Fu(e,t,n){let r=0,o=e.length>>n;for(;o!==r;){const i=r+(o-r>>1),s=e[i<t?o=i:r=i+1}return~(o<t){s=i-1;break}}}for(;i-1){let i;for(;++oi?"":o[y+1].toLowerCase(),2&r&&g!==w){if(_n(r))return!1;s=!0}}}}else{if(!s&&!_n(r)&&!_n(l))return!1;if(s&&_n(l))continue;s=!1,r=l|1&r}}return _n(r)||s}function _n(e){return!(1&e)}function ua(e,t,n,r){if(null===t)return-1;let o=0;if(r||!n){let i=!1;for(;o-1)for(n++;n0?'="'+a+'"':"")+"]"}else 8&r?o+="."+s:4&r&&(o+=" "+s);else""!==o&&!_n(s)&&(t+=Fr(i,o),o=""),r=s,i=i||!_n(r);n++}return""!==o&&(t+=Fr(i,o)),t}function da(e){return He(()=>{const t=ga(e),n={...t,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===li.OnPush,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||pr.Emulated,styles:e.styles||nt,_:null,schemas:e.schemas||null,tView:null,id:""};fi(n);const r=e.dependencies;return n.directiveDefs=oo(r,!1),n.pipeDefs=oo(r,!0),n.id=function Uu(e){let t=0;const n=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,e.consts,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery].join("|");for(const o of n)t=Math.imul(31,t)+o.charCodeAt(0)|0;return t+=2147483648,"c"+t}(n),n})}function Vu(e){return Ge(e)||Rt(e)}function fa(e){return null!==e}function Ki(e){return He(()=>({type:e.type,bootstrap:e.bootstrap||nt,declarations:e.declarations||nt,imports:e.imports||nt,exports:e.exports||nt,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function ha(e,t){if(null==e)return On;const n={};for(const r in e)if(e.hasOwnProperty(r)){const o=e[r];let i,s,a=gr.None;Array.isArray(o)?(a=o[0],i=o[1],s=o[2]??i):(i=o,s=o),t?(n[i]=a!==gr.None?[r,a]:r,t[i]=s):n[i]=r}return n}function pa(e){return He(()=>{const t=ga(e);return fi(t),t})}function Po(e){return{type:e.type,name:e.name,factory:null,pure:!1!==e.pure,standalone:!0===e.standalone,onDestroy:e.type.prototype.ngOnDestroy||null}}function Ge(e){return e[Qt]||null}function Rt(e){return e[Tr]||null}function Ot(e){return e[Cn]||null}function $t(e){const t=Ge(e)||Rt(e)||Ot(e);return null!==t&&t.standalone}function un(e,t){const n=e[ln]||null;if(!n&&!0===t)throw new Error(`Type ${mt(e)} does not have '\u0275mod' property.`);return n}function ga(e){const t={};return{type:e.type,providersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputTransforms:null,inputConfig:e.inputs||On,exportAs:e.exportAs||null,standalone:!0===e.standalone,signals:!0===e.signals,selectors:e.selectors||nt,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:ha(e.inputs,t),outputs:ha(e.outputs),debugInfo:null}}function fi(e){e.features?.forEach(t=>t(e))}function oo(e,t){if(!e)return null;const n=t?Ot:Vu;return()=>("function"==typeof e?e():e).map(r=>n(r)).filter(fa)}function Lr(e){return{\u0275providers:e}}function qi(...e){return{\u0275providers:io(0,e),\u0275fromNgModule:!0}}function io(e,...t){const n=[],r=new Set;let o;const i=s=>{n.push(s)};return fr(t,s=>{const a=s;hi(a,i,[],r)&&(o||=[],o.push(a))}),void 0!==o&&Zi(o,i),n}function Zi(e,t){for(let n=0;n{t(i,r)})}}function hi(e,t,n,r){if(!(e=O(e)))return!1;let o=null,i=br(e);const s=!i&&Ge(e);if(i||s){if(s&&!s.standalone)return!1;o=e}else{const l=e.ngModule;if(i=br(l),!i)return!1;o=l}const a=r.has(o);if(s){if(a)return!1;if(r.add(o),s.dependencies){const l="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const g of l)hi(g,t,n,r)}}else{if(!i)return!1;{if(null!=i.imports&&!a){let g;r.add(o);try{fr(i.imports,y=>{hi(y,t,n,r)&&(g||=[],g.push(y))})}finally{}void 0!==g&&Zi(g,t)}if(!a){const g=Rn(o)||(()=>new o);t({provide:o,useFactory:g,deps:nt},o),t({provide:ci,useValue:o,multi:!0},o),t({provide:er,useValue:()=>Nt(o),multi:!0},o)}const l=i.providers;if(null!=l&&!a){const g=e;Yi(l,y=>{t(y,g)})}}}return o!==e&&void 0!==e.providers}function Yi(e,t){for(let n of e)We(n)&&(n=n.\u0275providers),Array.isArray(n)?Yi(n,t):t(n)}const pi=et({provide:String,useValue:et});function Xi(e){return null!==e&&"object"==typeof e&&pi in e}function mr(e){return"function"==typeof e}const gi=new Xe(""),mi={},Da={};let vi;function yi(){return void 0===vi&&(vi=new tr),vi}class Mn{}class so extends Mn{get destroyed(){return this._destroyed}constructor(t,n,r,o){super(),this.parent=n,this.source=r,this.scopes=o,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,ts(t,s=>this.processProvider(s)),this.records.set(xn,ao(void 0,this)),o.has("environment")&&this.records.set(Mn,ao(void 0,this));const i=this.records.get(gi);null!=i&&"string"==typeof i.value&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(ci,nt,Ze.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;const t=Q(null);try{for(const r of this._ngOnDestroyHooks)r.ngOnDestroy();const n=this._onDestroyHooks;this._onDestroyHooks=[];for(const r of n)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),Q(t)}}onDestroy(t){return this.assertNotDestroyed(),this._onDestroyHooks.push(t),()=>this.removeOnDestroy(t)}runInContext(t){this.assertNotDestroyed();const n=Hn(this),r=sn(void 0);try{return t()}finally{Hn(n),sn(r)}}get(t,n=Mo,r=Ze.Default){if(this.assertNotDestroyed(),t.hasOwnProperty(dr))return t[dr](this);r=bo(r);const i=Hn(this),s=sn(void 0);try{if(!(r&Ze.SkipSelf)){let l=this.records.get(t);if(void 0===l){const g=function wa(e){return"function"==typeof e||"object"==typeof e&&e instanceof Xe}(t)&&to(t);l=g&&this.injectableDefInScope(g)?ao(Ji(t),mi):null,this.records.set(t,l)}if(null!=l)return this.hydrate(t,l)}return(r&Ze.Self?yi():this.parent).get(t,n=r&Ze.Optional&&n===Mo?null:n)}catch(a){if("NullInjectorError"===a.name){if((a[Jn]=a[Jn]||[]).unshift(mt(t)),i)throw a;return function ii(e,t,n,r){const o=e[Jn];throw t[pn]&&o.unshift(t[pn]),e.message=function Hi(e,t,n,r=null){e=e&&"\n"===e.charAt(0)&&"\u0275"==e.charAt(1)?e.slice(2):e;let o=mt(t);if(Array.isArray(t))o=t.map(mt).join(" -> ");else if("object"==typeof t){let i=[];for(let s in t)if(t.hasOwnProperty(s)){let a=t[s];i.push(s+":"+("string"==typeof a?JSON.stringify(a):mt(a)))}o=`{${i.join(", ")}}`}return`${n}${r?"("+r+")":""}[${o}]: ${e.replace(ri,"\n ")}`}("\n"+e.message,o,n,r),e.ngTokenPath=o,e[Jn]=null,e}(a,t,"R3InjectorError",this.source)}throw a}finally{sn(s),Hn(i)}}resolveInjectorInitializers(){const t=Q(null),n=Hn(this),r=sn(void 0);try{const i=this.get(er,nt,Ze.Self);for(const s of i)s()}finally{Hn(n),sn(r),Q(t)}}toString(){const t=[],n=this.records;for(const r of n.keys())t.push(mt(r));return`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new pe(205,!1)}processProvider(t){let n=mr(t=O(t))?t:O(t&&t.provide);const r=function Ca(e){return Xi(e)?ao(void 0,e.useValue):ao(Ea(e),mi)}(t);if(!mr(t)&&!0===t.multi){let o=this.records.get(n);o||(o=ao(void 0,mi,!0),o.factory=()=>To(o.multi),this.records.set(n,o)),n=t,o.multi.push(t)}this.records.set(n,r)}hydrate(t,n){const r=Q(null);try{return n.value===mi&&(n.value=Da,n.value=n.factory()),"object"==typeof n.value&&n.value&&function es(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}finally{Q(r)}}injectableDefInScope(t){if(!t.providedIn)return!1;const n=O(t.providedIn);return"string"==typeof n?"any"===n||this.scopes.has(n):this.injectorDefTypes.has(n)}removeOnDestroy(t){const n=this._onDestroyHooks.indexOf(t);-1!==n&&this._onDestroyHooks.splice(n,1)}}function Ji(e){const t=to(e),n=null!==t?t.factory:Rn(e);if(null!==n)return n;if(e instanceof Xe)throw new pe(204,!1);if(e instanceof Function)return function Hu(e){if(e.length>0)throw new pe(204,!1);const n=function Sr(e){return e&&(e[Do]||e[Eo])||null}(e);return null!==n?()=>n.factory(e):()=>new e}(e);throw new pe(204,!1)}function Ea(e,t,n){let r;if(mr(e)){const o=O(e);return Rn(o)||Ji(o)}if(Xi(e))r=()=>O(e.useValue);else if(function va(e){return!(!e||!e.useFactory)}(e))r=()=>e.useFactory(...To(e.deps||[]));else if(function ma(e){return!(!e||!e.useExisting)}(e))r=()=>Nt(O(e.useExisting));else{const o=O(e&&(e.useClass||e.provide));if(!function Bu(e){return!!e.deps}(e))return Rn(o)||Ji(o);r=()=>new o(...To(e.deps))}return r}function ao(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function ts(e,t){for(const n of e)Array.isArray(n)?ts(n,t):n&&We(n)?ts(n.\u0275providers,t):t(n)}function Sn(e,t){e instanceof so&&e.assertNotDestroyed();const r=Hn(e),o=sn(void 0);try{return t()}finally{Hn(r),sn(o)}}function kr(){return void 0!==ki()||null!=function oi(){return gn}()}const ot=0,J=1,De=2,ft=3,zt=4,It=5,ht=6,nr=7,Ct=8,xt=9,zn=10,Le=11,Fo=12,yl=13,Di=14,Pt=15,co=16,lo=17,vr=18,Lo=19,Wn=20,jr=21,Ia=22,ko=23,Ve=25,ns=1,Pn=7,Vo=9,Vt=10;var os=function(e){return e[e.None=0]="None",e[e.HasTransplantedViews=2]="HasTransplantedViews",e}(os||{});function cn(e){return Array.isArray(e)&&"object"==typeof e[ns]}function dn(e){return Array.isArray(e)&&!0===e[ns]}function $u(e){return!!(4&e.flags)}function Uo(e){return e.componentOffset>-1}function is(e){return!(1&~e.flags)}function Gn(e){return!!e.template}function zu(e){return!!(512&e[De])}class P{constructor(t,n,r){this.previousValue=t,this.currentValue=n,this.firstChange=r}isFirstChange(){return this.firstChange}}function he(e,t,n,r){null!==t?t.applyValueToInputSignal(t,r):e[n]=r}function je(){return Ke}function Ke(e){return e.type.prototype.ngOnChanges&&(e.setInput=Ci),Ut}function Ut(){const e=Bo(this),t=e?.current;if(t){const n=e.previous;if(n===On)e.previous=t;else for(let r in t)n[r]=t[r];e.current=null,this.ngOnChanges(t)}}function Ci(e,t,n,r,o){const i=this.declaredInputs[r],s=Bo(e)||function Sa(e,t){return e[Ho]=t}(e,{previous:On,current:null}),a=s.current||(s.current={}),l=s.previous,g=l[i];a[i]=new P(g&&g.currentValue,n,l===On),he(e,t,o,n)}je.ngInherit=!0;const Ho="__ngSimpleChanges__";function Bo(e){return e[Ho]||null}const Vr=function(e,t,n){};let Ch=!1;function Et(e){for(;Array.isArray(e);)e=e[ot];return e}function ba(e,t){return Et(t[e])}function bn(e,t){return Et(t[e.index])}function Ta(e,t){return e.data[t]}function Kn(e,t){const n=t[e];return cn(n)?n:n[ot]}function Il(e){return!(128&~e[De])}function Ur(e,t){return null==t?null:e[t]}function Eh(e){e[lo]=0}function $C(e){1024&e[De]||(e[De]|=1024,Il(e)&&Aa(e))}function _l(e){return!!(9216&e[De]||e[ko]?.dirty)}function Ml(e){e[zn].changeDetectionScheduler?.notify(1),_l(e)?Aa(e):64&e[De]&&(function VC(){return Ch}()?(e[De]|=1024,Aa(e)):e[zn].changeDetectionScheduler?.notify())}function Aa(e){e[zn].changeDetectionScheduler?.notify();let t=Ei(e);for(;null!==t&&!(8192&t[De])&&(t[De]|=8192,Il(t));)t=Ei(t)}function Ku(e,t){if(!(256&~e[De]))throw new pe(911,!1);null===e[jr]&&(e[jr]=[]),e[jr].push(t)}function Ei(e){const t=e[ft];return dn(t)?t[ft]:t}const ke={lFrame:xh(null),bindingsEnabled:!0,skipHydrationRootTNode:null};function _h(){return ke.bindingsEnabled}function z(){return ke.lFrame.lView}function rt(){return ke.lFrame.tView}function Mh(e){return ke.lFrame.contextLView=e,e[Ct]}function Sh(e){return ke.lFrame.contextLView=null,e}function yt(){let e=bh();for(;null!==e&&64===e.type;)e=e.parent;return e}function bh(){return ke.lFrame.currentTNode}function Hr(e,t){const n=ke.lFrame;n.currentTNode=e,n.isParent=t}function bl(){return ke.lFrame.isParent}function Tl(){ke.lFrame.isParent=!1}function Tn(){const e=ke.lFrame;let t=e.bindingRootIndex;return-1===t&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function Dr(){return ke.lFrame.bindingIndex++}function eE(e,t){const n=ke.lFrame;n.bindingIndex=n.bindingRootIndex=e,Al(t)}function Al(e){ke.lFrame.currentDirectiveIndex=e}function Rl(){return ke.lFrame.currentQueryIndex}function Qu(e){ke.lFrame.currentQueryIndex=e}function nE(e){const t=e[J];return 2===t.type?t.declTNode:1===t.type?e[It]:null}function Rh(e,t,n){if(n&Ze.SkipSelf){let o=t,i=e;for(;!(o=o.parent,null!==o||n&Ze.Host||(o=nE(i),null===o||(i=i[Di],10&o.type))););if(null===o)return!1;t=o,e=i}const r=ke.lFrame=Oh();return r.currentTNode=t,r.lView=e,!0}function Ol(e){const t=Oh(),n=e[J];ke.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function Oh(){const e=ke.lFrame,t=null===e?null:e.child;return null===t?xh(e):t}function xh(e){const t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=t),t}function Ph(){const e=ke.lFrame;return ke.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}const Fh=Ph;function xl(){const e=Ph();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function vn(){return ke.lFrame.selectedIndex}function wi(e){ke.lFrame.selectedIndex=e}function At(){const e=ke.lFrame;return Ta(e.tView,e.selectedIndex)}let kh=!0;function Ra(){return kh}function Br(e){kh=e}function qu(e,t){for(let n=t.directiveStart,r=t.directiveEnd;n=r)break}else t[l]<0&&(e[lo]+=65536),(a>14>16&&(3&e[De])===t&&(e[De]+=16384,Vh(a,i)):Vh(a,i)}const us=-1;class Oa{constructor(t,n,r){this.factory=t,this.resolving=!1,this.canSeeViewProviders=n,this.injectImpl=r}}function Ll(e){return e!==us}function xa(e){return 32767&e}function Pa(e,t){let n=function pE(e){return e>>16}(e),r=t;for(;n>0;)r=r[Di],n--;return r}let kl=!0;function Xu(e){const t=kl;return kl=e,t}const Uh=255,Hh=5;let gE=0;const $r={};function Ju(e,t){const n=Bh(e,t);if(-1!==n)return n;const r=t[J];r.firstCreatePass&&(e.injectorIndex=t.length,jl(r.data,e),jl(t,null),jl(r.blueprint,null));const o=ec(e,t),i=e.injectorIndex;if(Ll(o)){const s=xa(o),a=Pa(o,t),l=a[J].data;for(let g=0;g<8;g++)t[i+g]=a[s+g]|l[s+g]}return t[i+8]=o,i}function jl(e,t){e.push(0,0,0,0,0,0,0,0,t)}function Bh(e,t){return-1===e.injectorIndex||e.parent&&e.parent.injectorIndex===e.injectorIndex||null===t[e.injectorIndex+8]?-1:e.injectorIndex}function ec(e,t){if(e.parent&&-1!==e.parent.injectorIndex)return e.parent.injectorIndex;let n=0,r=null,o=t;for(;null!==o;){if(r=Zh(o),null===r)return us;if(n++,o=o[Di],-1!==r.injectorIndex)return r.injectorIndex|n<<16}return us}function Vl(e,t,n){!function mE(e,t,n){let r;"string"==typeof n?r=n.charCodeAt(0)||0:n.hasOwnProperty(wn)&&(r=n[wn]),null==r&&(r=n[wn]=gE++);const o=r&Uh;t.data[e+(o>>Hh)]|=1<=0?t&Uh:CE:t}(n);if("function"==typeof i){if(!Rh(t,e,r))return r&Ze.Host?$h(o,0,r):zh(t,n,r,o);try{let s;if(s=i(r),null!=s||r&Ze.Optional)return s;Jo()}finally{Fh()}}else if("number"==typeof i){let s=null,a=Bh(e,t),l=us,g=r&Ze.Host?t[Pt][It]:null;for((-1===a||r&Ze.SkipSelf)&&(l=-1===a?ec(e,t):t[a+8],l!==us&&Qh(r,!1)?(s=t[J],a=xa(l),t=Pa(l,t)):a=-1);-1!==a;){const y=t[J];if(Kh(i,a,y.data)){const w=yE(a,t,n,s,r,g);if(w!==$r)return w}l=t[a+8],l!==us&&Qh(r,t[J].data[a+8]===g)&&Kh(i,a,t)?(s=y,a=xa(l),t=Pa(l,t)):a=-1}}return o}function yE(e,t,n,r,o,i){const s=t[J],a=s.data[e+8],y=tc(a,s,n,null==r?Uo(a)&&kl:r!=s&&!!(3&a.type),o&Ze.Host&&i===a);return null!==y?Ii(t,s,y,a):$r}function tc(e,t,n,r,o){const i=e.providerIndexes,s=t.data,a=1048575&i,l=e.directiveStart,y=i>>20,T=o?a+y:e.directiveEnd;for(let A=r?a:a+y;A=l&&x.type===n)return A}if(o){const A=s[l];if(A&&Gn(A)&&A.type===n)return l}return null}function Ii(e,t,n,r){let o=e[n];const i=t.data;if(function lE(e){return e instanceof Oa}(o)){const s=o;s.resolving&&function Js(e,t){throw t&&t.join(" > "),new pe(-200,e)}(function tt(e){return"function"==typeof e?e.name||e.toString():"object"==typeof e&&null!=e&&"function"==typeof e.type?e.type.name||e.type.toString():Re(e)}(i[n]));const a=Xu(s.canSeeViewProviders);s.resolving=!0;const g=s.injectImpl?sn(s.injectImpl):null;Rh(e,r,Ze.Default);try{o=e[n]=s.factory(void 0,i,e,r),t.firstCreatePass&&n>=r.directiveStart&&function uE(e,t,n){const{ngOnChanges:r,ngOnInit:o,ngDoCheck:i}=t.type.prototype;if(r){const s=Ke(t);(n.preOrderHooks??=[]).push(e,s),(n.preOrderCheckHooks??=[]).push(e,s)}o&&(n.preOrderHooks??=[]).push(0-e,o),i&&((n.preOrderHooks??=[]).push(e,i),(n.preOrderCheckHooks??=[]).push(e,i))}(n,i[n],t)}finally{null!==g&&sn(g),Xu(a),s.resolving=!1,Fh()}}return o}function Kh(e,t,n){return!!(n[t+(e>>Hh)]&1<{const t=e.prototype.constructor,n=t[En]||Ul(t),r=Object.prototype;let o=Object.getPrototypeOf(e.prototype).constructor;for(;o&&o!==r;){const i=o[En]||Ul(o);if(i&&i!==n)return i;o=Object.getPrototypeOf(o)}return i=>new i})}function Ul(e){return F(e)?()=>{const t=Ul(O(e));return t&&t()}:Rn(e)}function Zh(e){const t=e[J],n=t.type;return 2===n?t.declTNode:1===n?e[It]:null}function nc(e){return function vE(e,t){if("class"===t)return e.classes;if("style"===t)return e.styles;const n=e.attrs;if(n){const r=n.length;let o=0;for(;o{class e{static#e=this.THROW_IF_NOT_FOUND=Mo;static#t=this.NULL=new tr;static create(n,r){if(Array.isArray(n))return tp({name:""},r,n,"");{const o=n.name??"";return tp({name:o},n.parent,n.providers,o)}}static#n=this.\u0275prov=dt({token:e,providedIn:"any",factory:()=>Nt(xn)});static#r=this.__NG_ELEMENT_ID__=-1}return e})();function Bl(e){return e.ngOriginalError}class po{constructor(){this._console=console}handleError(t){const n=this._findOriginalError(t);this._console.error("ERROR",t),n&&this._console.error("ORIGINAL ERROR",n)}_findOriginalError(t){let n=t&&Bl(t);for(;n&&Bl(n);)n=Bl(n);return n||null}}const op=new Xe("",{providedIn:"root",factory:()=>Oe(po).handleError.bind(void 0)});let ds=(()=>{class e{static#e=this.__NG_ELEMENT_ID__=NE;static#t=this.__NG_ENV_ID__=n=>n}return e})();class AE extends ds{constructor(t){super(),this._lView=t}onDestroy(t){return Ku(this._lView,t),()=>function Sl(e,t){if(null===e[jr])return;const n=e[jr].indexOf(t);-1!==n&&e[jr].splice(n,1)}(this._lView,t)}}function NE(){return new AE(z())}function RE(){return fs(yt(),z())}function fs(e,t){return new Fa(bn(e,t))}let Fa=(()=>{class e{constructor(n){this.nativeElement=n}static#e=this.__NG_ELEMENT_ID__=RE}return e})();function sp(e){return e instanceof Fa?e.nativeElement:e}function $l(e){return t=>{setTimeout(e,void 0,t)}}const zr=class OE extends Yt.B{constructor(t=!1){super(),this.destroyRef=void 0,this.__isAsync=t,kr()&&(this.destroyRef=Oe(ds,{optional:!0})??void 0)}emit(t){const n=Q(null);try{super.next(t)}finally{Q(n)}}subscribe(t,n,r){let o=t,i=n||(()=>null),s=r;if(t&&"object"==typeof t){const l=t;o=l.next?.bind(l),i=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(i=$l(i),o&&(o=$l(o)),s&&(s=$l(s)));const a=super.subscribe({next:o,error:i,complete:s});return t instanceof ct.yU&&t.add(a),a}};function xE(){return this._results[Symbol.iterator]()}class zl{static#e=Symbol.iterator;get changes(){return this._changes??=new zr}constructor(t=!1){this._emitDistinctChangesOnly=t,this.dirty=!0,this._onDirty=void 0,this._results=[],this._changesDetected=!1,this._changes=void 0,this.length=0,this.first=void 0,this.last=void 0;const n=zl.prototype;n[Symbol.iterator]||(n[Symbol.iterator]=xE)}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){this.dirty=!1;const r=function an(e){return e.flat(Number.POSITIVE_INFINITY)}(t);(this._changesDetected=!function na(e,t,n){if(e.length!==t.length)return!1;for(let r=0;rtw}),tw="ng",bp=new Xe(""),ql=new Xe("",{providedIn:"platform",factory:()=>"unknown"}),nw=new Xe("",{providedIn:"root",factory:()=>function $o(){if(void 0!==Ql)return Ql;if(typeof document<"u")return document;throw new pe(210,!1)}().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});let Tp=()=>null;function rd(e,t,n=!1){return Tp(e,t,n)}const xp=new Xe("",{providedIn:"root",factory:()=>!1});let pc;function kp(e){return function ud(){if(void 0===pc&&(pc=null,xe.trustedTypes))try{pc=xe.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return pc}()?.createScriptURL(e)||e}class jp{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${Ft})`}}function zo(e){return e instanceof jp?e.changingThisBreaksApplicationSecurity:e}function Ba(e,t){const n=function Ew(e){return e instanceof jp&&e.getTypeName()||null}(e);if(null!=n&&n!==t){if("ResourceURL"===n&&"URL"===t)return!0;throw new Error(`Required a safe ${t}, got a ${n} (see ${Ft})`)}return n===t}const Mw=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;var ms=function(e){return e[e.NONE=0]="NONE",e[e.HTML=1]="HTML",e[e.STYLE=2]="STYLE",e[e.SCRIPT=3]="SCRIPT",e[e.URL=4]="URL",e[e.RESOURCE_URL=5]="RESOURCE_URL",e}(ms||{});function Kp(e){const t=za();return t?t.sanitize(ms.URL,e)||"":Ba(e,"URL")?zo(e):function cd(e){return(e=String(e)).match(Mw)?e:"unsafe:"+e}(Re(e))}function Qp(e){const t=za();if(t)return kp(t.sanitize(ms.RESOURCE_URL,e)||"");if(Ba(e,"ResourceURL"))return kp(zo(e));throw new pe(904,!1)}function qp(e,t,n){return function Uw(e,t){return"src"===t&&("embed"===e||"frame"===e||"iframe"===e||"media"===e||"script"===e)||"href"===t&&("base"===e||"link"===e)?Qp:Kp}(t,n)(e)}function za(){const e=z();return e&&e[zn].sanitizer}const Hw=/^>|^->||--!>|)/g,$w="\u200b$1\u200b";function Jp(e){return e.ownerDocument.defaultView}function qn(e){return e instanceof Function?e():e}var yc=function(e){return e[e.Important=1]="Important",e[e.DashCase=2]="DashCase",e}(yc||{});let md;function vd(e,t){return md(e,t)}function ys(e,t,n,r,o){if(null!=r){let i,s=!1;dn(r)?i=r:cn(r)&&(s=!0,r=r[ot]);const a=Et(r);0===e&&null!==n?null==o?ug(t,n,a):_i(t,n,a,o||null,!0):1===e&&null!==n?_i(t,n,a,o||null,!0):2===e?function Ka(e,t,n){const r=Ec(e,t);r&&function aI(e,t,n,r){e.removeChild(t,n,r)}(e,r,t,n)}(t,a,s):3===e&&t.destroyNode(a),null!=i&&function lI(e,t,n,r,o){const i=n[Pn];i!==Et(n)&&ys(t,e,r,i,o);for(let a=Vt;at.replace(Bw,$w))}(t))}function Dc(e,t,n){return e.createElement(t,n)}function ig(e,t){t[zn].changeDetectionScheduler?.notify(1),Ic(e,t,t[Le],2,null,null)}function sg(e,t){const n=e[Vo],r=n.indexOf(t);n.splice(r,1)}function Wa(e,t){if(e.length<=Vt)return;const n=Vt+t,r=e[n];if(r){const o=r[co];null!==o&&o!==e&&sg(o,r),t>0&&(e[n-1][zt]=r[zt]);const i=ro(e,Vt+t);!function eI(e,t){ig(e,t),t[ot]=null,t[It]=null}(r[J],r);const s=i[vr];null!==s&&s.detachView(i[J]),r[ft]=null,r[zt]=null,r[De]&=-129}return r}function Cc(e,t){if(!(256&t[De])){const n=t[Le];n.destroyNode&&Ic(e,t,n,3,null,null),function nI(e){let t=e[Fo];if(!t)return Cd(e[J],e);for(;t;){let n=null;if(cn(t))n=t[Fo];else{const r=t[Vt];r&&(n=r)}if(!n){for(;t&&!t[zt]&&t!==e;)cn(t)&&Cd(t[J],t),t=t[ft];null===t&&(t=e),cn(t)&&Cd(t[J],t),n=t&&t[zt]}t=n}}(t)}}function Cd(e,t){if(256&t[De])return;const n=Q(null);try{t[De]&=-129,t[De]|=256,t[ko]&&function ce(e){if(fe(e),Ae(e))for(let t=0;t=0?r[s]():r[-s].unsubscribe(),i+=2}else n[i].call(r[n[i+1]]);null!==r&&(t[nr]=null);const o=t[jr];if(null!==o){t[jr]=null;for(let i=0;i-1){const{encapsulation:i}=e.data[r.directiveStart+o];if(i===pr.None||i===pr.Emulated)return null}return bn(r,n)}}(e,t.parent,n)}function _i(e,t,n,r,o){e.insertBefore(t,n,r,o)}function ug(e,t,n){e.appendChild(t,n)}function cg(e,t,n,r,o){null!==r?_i(e,t,n,r,o):ug(e,t,n)}function Ec(e,t){return e.parentNode(t)}let wd,fg=function dg(e,t,n){return 40&e.type?bn(e,n):null};function wc(e,t,n,r){const o=Ed(e,r,t),i=t[Le],a=function lg(e,t,n){return fg(e,t,n)}(r.parent||t[It],r,t);if(null!=o)if(Array.isArray(n))for(let l=0;lVe&&Cg(e,t,Ve,!1),Vr(s?2:0,o),n(r,o)}finally{wi(i),Vr(s?3:1,o)}}function Sd(e,t,n){if($u(t)){const r=Q(null);try{const i=t.directiveEnd;for(let s=t.directiveStart;snull;function Sg(e,t,n,r,o){for(let i in t){if(!t.hasOwnProperty(i))continue;const s=t[i];if(void 0===s)continue;r??={};let a,l=gr.None;Array.isArray(s)?(a=s[0],l=s[1]):a=s;let g=i;if(null!==o){if(!o.hasOwnProperty(i))continue;g=o[i]}0===e?bg(r,n,g,a,l):bg(r,n,g,a)}return r}function bg(e,t,n,r,o){let i;e.hasOwnProperty(n)?(i=e[n]).push(t,r):i=e[n]=[t,r],void 0!==o&&i.push(o)}function Nd(e,t,n,r){if(_h()){const o=null===r?null:{"":-1},i=function AI(e,t){const n=e.directiveRegistry;let r=null,o=null;if(n)for(let i=0;i0;){const n=e[--t];if("number"==typeof n&&n<0)return n}return 0})(s)!=a&&s.push(a),s.push(n,r,i)}}(e,t,r,Qa(e,n,o.hostVars,$e),o)}function Wr(e,t,n,r,o,i){const s=bn(e,t);!function Od(e,t,n,r,o,i,s){if(null==i)e.removeAttribute(t,o,n);else{const a=null==s?Re(i):s(i,r||"",o);e.setAttribute(t,o,a,n)}}(t[Le],s,i,e.value,n,r,o)}function FI(e,t,n,r,o,i){const s=i[t];if(null!==s)for(let a=0;a0&&(n[o-1][zt]=t),r!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{},consumerIsAlwaysLive:!0,consumerMarkedDirty:e=>{Aa(e.lView)},consumerOnSignalRead(){this.lView[ko]=this}},jg=100;function bc(e,t=!0,n=0){const r=e[zn],o=r.rendererFactory;o.begin?.();try{!function zI(e,t){kd(e,t);let n=0;for(;_l(e);){if(n===jg)throw new pe(103,!1);n++,kd(e,1)}}(e,n)}catch(s){throw t&&Sc(e,s),s}finally{o.end?.(),r.inlineEffectRunner?.flush()}}function WI(e,t,n,r){const o=t[De];if(!(256&~o))return;t[zn].inlineEffectRunner?.flush(),Ol(t);let s=null,a=null;(function GI(e){return 2!==e.type})(e)&&(a=function UI(e){return e[ko]??function HI(e){const t=kg.pop()??Object.create($I);return t.lView=e,t}(e)}(t),s=function we(e){return e&&(e.nextProducerIndex=0),Q(e)}(a));try{Eh(t),function Ah(e){return ke.lFrame.bindingIndex=e}(e.bindingStartIndex),null!==n&&Ig(e,t,n,2,r);const l=!(3&~o);if(l){const w=e.preOrderCheckHooks;null!==w&&Zu(t,w,null)}else{const w=e.preOrderHooks;null!==w&&Yu(t,w,0,null),Pl(t,0)}if(function KI(e){for(let t=mp(e);null!==t;t=vp(t)){if(!(t[De]&os.HasTransplantedViews))continue;const n=t[Vo];for(let r=0;re.nextProducerIndex;)e.producerNode.pop(),e.producerLastReadVersion.pop(),e.producerIndexOfThis.pop()}}(a,s),function BI(e){e.lView[ko]!==e&&(e.lView=null,kg.push(e))}(a)),xl()}}function Vg(e,t){for(let n=mp(e);null!==n;n=vp(n))for(let r=Vt;r-1&&(Wa(t,r),ro(n,r))}this._attachedToViewContainer=!1}Cc(this._lView[J],this._lView)}onDestroy(t){Ku(this._lView,t)}markForCheck(){Xa(this._cdRefInjectingView||this._lView)}detach(){this._lView[De]&=-129}reattach(){Ml(this._lView),this._lView[De]|=128}detectChanges(){this._lView[De]|=1024,bc(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new pe(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,ig(this._lView[J],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new pe(902,!1);this._appRef=t,Ml(this._lView)}}let eu=(()=>{class e{static#e=this.__NG_ELEMENT_ID__=YI}return e})();const qI=eu,ZI=class extends qI{constructor(t,n,r){super(),this._declarationLView=t,this._declarationTContainer=n,this.elementRef=r}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(t,n){return this.createEmbeddedViewImpl(t,n)}createEmbeddedViewImpl(t,n,r){const o=qa(this._declarationLView,this._declarationTContainer,t,{embeddedViewInjector:n,dehydratedView:r});return new Ja(o)}};function YI(){return Tc(yt(),z())}function Tc(e,t){return 4&e.type?new ZI(t,e,fs(e,t)):null}let Kg=()=>null;function ws(e,t){return Kg(e,t)}class $d{}class w0{}class Qg{}class _0{resolveComponentFactory(t){throw function I0(e){const t=Error(`No component factory found for ${mt(e)}.`);return t.ngComponent=e,t}(t)}}let xc=(()=>{class e{static#e=this.NULL=new _0}return e})();class Zg{}let M0=(()=>{class e{constructor(){this.destroyNode=null}static#e=this.__NG_ELEMENT_ID__=()=>function S0(){const e=z(),n=Kn(yt().index,e);return(cn(n)?n:e)[Le]}()}return e})(),b0=(()=>{class e{static#e=this.\u0275prov=dt({token:e,providedIn:"root",factory:()=>null})}return e})();const zd={},Yg=new Set;function Gr(e){Yg.has(e)||(Yg.add(e),performance?.mark?.("mark_feature_usage",{detail:{feature:e}}))}function Xg(...e){}class qt{constructor({enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new zr(!1),this.onMicrotaskEmpty=new zr(!1),this.onStable=new zr(!1),this.onError=new zr(!1),typeof Zone>"u")throw new pe(908,!1);Zone.assertZonePatched();const o=this;o._nesting=0,o._outer=o._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(o._inner=o._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(o._inner=o._inner.fork(Zone.longStackTraceZoneSpec)),o.shouldCoalesceEventChangeDetection=!r&&n,o.shouldCoalesceRunChangeDetection=r,o.lastRequestAnimationFrameId=-1,o.nativeRequestAnimationFrame=function T0(){const e="function"==typeof xe.requestAnimationFrame;let t=xe[e?"requestAnimationFrame":"setTimeout"],n=xe[e?"cancelAnimationFrame":"clearTimeout"];if(typeof Zone<"u"&&t&&n){const r=t[Zone.__symbol__("OriginalDelegate")];r&&(t=r);const o=n[Zone.__symbol__("OriginalDelegate")];o&&(n=o)}return{nativeRequestAnimationFrame:t,nativeCancelAnimationFrame:n}}().nativeRequestAnimationFrame,function R0(e){const t=()=>{!function N0(e){e.isCheckStableRunning||-1!==e.lastRequestAnimationFrameId||(e.lastRequestAnimationFrameId=e.nativeRequestAnimationFrame.call(xe,()=>{e.fakeTopEventTask||(e.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{e.lastRequestAnimationFrameId=-1,Gd(e),e.isCheckStableRunning=!0,Wd(e),e.isCheckStableRunning=!1},void 0,()=>{},()=>{})),e.fakeTopEventTask.invoke()}),Gd(e))}(e)};e._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(n,r,o,i,s,a)=>{if(function O0(e){return!(!Array.isArray(e)||1!==e.length)&&!0===e[0].data?.__ignore_ng_zone__}(a))return n.invokeTask(o,i,s,a);try{return Jg(e),n.invokeTask(o,i,s,a)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===i.type||e.shouldCoalesceRunChangeDetection)&&t(),em(e)}},onInvoke:(n,r,o,i,s,a,l)=>{try{return Jg(e),n.invoke(o,i,s,a,l)}finally{e.shouldCoalesceRunChangeDetection&&t(),em(e)}},onHasTask:(n,r,o,i)=>{n.hasTask(o,i),r===o&&("microTask"==i.change?(e._hasPendingMicrotasks=i.microTask,Gd(e),Wd(e)):"macroTask"==i.change&&(e.hasPendingMacrotasks=i.macroTask))},onHandleError:(n,r,o,i)=>(n.handleError(o,i),e.runOutsideAngular(()=>e.onError.emit(i)),!1)})}(o)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!qt.isInAngularZone())throw new pe(909,!1)}static assertNotInAngularZone(){if(qt.isInAngularZone())throw new pe(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,o){const i=this._inner,s=i.scheduleEventTask("NgZoneEvent: "+o,t,A0,Xg,Xg);try{return i.runTask(s,n,r)}finally{i.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}}const A0={};function Wd(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Gd(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&-1!==e.lastRequestAnimationFrameId)}function Jg(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function em(e){e._nesting--,Wd(e)}var Mi=function(e){return e[e.EarlyRead=0]="EarlyRead",e[e.Write=1]="Write",e[e.MixedReadWrite=2]="MixedReadWrite",e[e.Read=3]="Read",e}(Mi||{});const nm={destroy(){}};function rm(e,t){!t&&function uo(e){if(!kr())throw new pe(-203,!1)}();const n=t?.injector??Oe(Qn);if(!function Cr(e){return"browser"===(e??Oe(Qn)).get(ql)}(n))return nm;Gr("NgAfterNextRender");const r=n.get(iu),o=r.handler??=new im,i=t?.phase??Mi.MixedReadWrite,s=()=>{o.unregister(l),a()},a=n.get(ds).onDestroy(s),l=Sn(n,()=>new om(i,()=>{s(),e()}));return o.register(l),{destroy:s}}class om{constructor(t,n){this.phase=t,this.callbackFn=n,this.zone=Oe(qt),this.errorHandler=Oe(po,{optional:!0}),Oe($d,{optional:!0})?.notify(1)}invoke(){try{this.zone.runOutsideAngular(this.callbackFn)}catch(t){this.errorHandler?.handleError(t)}}}class im{constructor(){this.executingCallbacks=!1,this.buckets={[Mi.EarlyRead]:new Set,[Mi.Write]:new Set,[Mi.MixedReadWrite]:new Set,[Mi.Read]:new Set},this.deferredCallbacks=new Set}register(t){(this.executingCallbacks?this.deferredCallbacks:this.buckets[t.phase]).add(t)}unregister(t){this.buckets[t.phase].delete(t),this.deferredCallbacks.delete(t)}execute(){this.executingCallbacks=!0;for(const t of Object.values(this.buckets))for(const n of t)n.invoke();this.executingCallbacks=!1;for(const t of this.deferredCallbacks)this.buckets[t.phase].add(t);this.deferredCallbacks.clear()}destroy(){for(const t of Object.values(this.buckets))t.clear();this.deferredCallbacks.clear()}}let iu=(()=>{class e{constructor(){this.handler=null,this.internalCallbacks=[]}execute(){this.executeInternalCallbacks(),this.handler?.execute()}executeInternalCallbacks(){const n=[...this.internalCallbacks];this.internalCallbacks.length=0;for(const r of n)r()}ngOnDestroy(){this.handler?.destroy(),this.handler=null,this.internalCallbacks.length=0}static#e=this.\u0275prov=dt({token:e,providedIn:"root",factory:()=>new e})}return e})();function Wo(e){return!!un(e)}function Fc(e,t,n){let r=n?e.styles:null,o=n?e.classes:null,i=0;if(null!==t)for(let s=0;s0&&vg(e,n,i.join(" "))}}(A,on,B,r),void 0!==n&&function z0(e,t,n){const r=e.projection=[];for(let o=0;o{class e{static#e=this.__NG_ELEMENT_ID__=G0}return e})();function G0(){return fm(yt(),z())}const K0=kc,lm=class extends K0{constructor(t,n,r){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=r}get element(){return fs(this._hostTNode,this._hostLView)}get injector(){return new tn(this._hostTNode,this._hostLView)}get parentInjector(){const t=ec(this._hostTNode,this._hostLView);if(Ll(t)){const n=Pa(t,this._hostLView),r=xa(t);return new tn(n[J].data[r+8],n)}return new tn(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){const n=dm(this._lContainer);return null!==n&&n[t]||null}get length(){return this._lContainer.length-Vt}createEmbeddedView(t,n,r){let o,i;"number"==typeof r?o=r:null!=r&&(o=r.index,i=r.injector);const s=ws(this._lContainer,t.ssrId),a=t.createEmbeddedViewImpl(n||{},i,s);return this.insertImpl(a,o,Es(this._hostTNode,s)),a}createComponent(t,n,r,o,i){const s=t&&!function K(e){return"function"==typeof e}(t);let a;if(s)a=n;else{const x=n||{};a=x.index,r=x.injector,o=x.projectableNodes,i=x.environmentInjector||x.ngModuleRef}const l=s?t:new uu(Ge(t)),g=r||this.parentInjector;if(!i&&null==l.ngModule){const B=(s?g:this.parentInjector).get(Mn,null);B&&(i=B)}const y=Ge(l.componentType??{}),w=ws(this._lContainer,y?.id??null),A=l.create(g,o,w?.firstChild??null,i);return this.insertImpl(A.hostView,a,Es(this._hostTNode,w)),A}insert(t,n){return this.insertImpl(t,n,!0)}insertImpl(t,n,r){const o=t._lView;if(function BC(e){return dn(e[ft])}(o)){const a=this.indexOf(t);if(-1!==a)this.detach(a);else{const l=o[ft],g=new lm(l,l[It],l[ft]);g.detach(g.indexOf(t))}}const i=this._adjustIndex(n),s=this._lContainer;return Za(s,o,i,r),t.attachToViewContainerRef(),ai(Zd(s),i,t),t}move(t,n){return this.insert(t,n)}indexOf(t){const n=dm(this._lContainer);return null!==n?n.indexOf(t):-1}remove(t){const n=this._adjustIndex(t,-1),r=Wa(this._lContainer,n);r&&(ro(Zd(this._lContainer),n),Cc(r[J],r))}detach(t){const n=this._adjustIndex(t,-1),r=Wa(this._lContainer,n);return r&&null!=ro(Zd(this._lContainer),n)?new Ja(r):null}_adjustIndex(t,n=0){return t??this.length+n}};function dm(e){return e[8]}function Zd(e){return e[8]||(e[8]=[])}function fm(e,t){let n;const r=t[e.index];return dn(r)?n=r:(n=Ng(r,t,null,e),t[e.index]=n,Mc(t,n)),hm(n,t,e,r),new lm(n,e,t)}let hm=function gm(e,t,n,r){if(e[Pn])return;let o;o=8&n.type?Et(r):function Q0(e,t){const n=e[Le],r=n.createComment(""),o=bn(t,e);return _i(n,Ec(n,o),r,function uI(e,t){return e.nextSibling(t)}(n,o),!1),r}(t,n),e[Pn]=o},Yd=()=>!1;class Xd{constructor(t){this.queryList=t,this.matches=null}clone(){return new Xd(this.queryList)}setDirty(){this.queryList.setDirty()}}class Jd{constructor(t=[]){this.queries=t}createEmbeddedView(t){const n=t.queries;if(null!==n){const r=null!==t.contentQueries?t.contentQueries[0]:n.length,o=[];for(let i=0;it.trim())}(t):t}}class ef{constructor(t=[]){this.queries=t}elementStart(t,n){for(let r=0;r0)r.push(s[a/2]);else{const g=i[a+1],y=t[-l];for(let w=Vt;wn()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class cf extends Bm{constructor(t){super(),this.moduleType=t}create(t){return new uf(this.moduleType,t,[])}}class $m extends Si{constructor(t){super(),this.componentFactoryResolver=new um(this),this.instance=null;const n=new so([...t.providers,{provide:Si,useValue:this},{provide:xc,useValue:this.componentFactoryResolver}],t.parent||yi(),t.debugName,new Set(["environment"]));this.injector=n,t.runEnvironmentInitializers&&n.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}}function lf(e,t,n=null){return new $m({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}let _s=(()=>{class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new Ie.t(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);const n=this.taskId++;return this.pendingTasks.add(n),n}remove(n){this.pendingTasks.delete(n),0===this.pendingTasks.size&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=dt({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function Hc(e){return!!df(e)&&(Array.isArray(e)||!(e instanceof Map)&&Symbol.iterator in e)}function df(e){return null!==e&&("function"==typeof e||"object"==typeof e)}function Wt(e,t,n){return!Object.is(e[t],n)&&(e[t]=n,!0)}function Ms(e,t,n,r,o,i,s,a){const l=z(),g=rt(),y=e+Ve,w=g.firstCreatePass?function R_(e,t,n,r,o,i,s,a,l){const g=t.consts,y=Cs(t,e,4,s||null,Ur(g,a));Nd(t,n,y,Ur(g,l)),qu(t,y);const w=y.tView=Ad(2,y,r,o,i,t.directiveRegistry,t.pipeRegistry,null,t.schemas,g,null);return null!==t.queries&&(t.queries.template(t,y),w.queries=t.queries.embeddedTView(y)),y}(y,g,l,t,n,r,o,i,s):g.data[y];Hr(w,!1);const T=zm(g,l,w,e);Ra()&&wc(g,l,T,w),yn(T,l);const A=Ng(T,l,T,w);return l[y]=A,Mc(l,A),function pm(e,t,n){return Yd(e,t,n)}(A,w,l),is(w)&&bd(g,l,w),null!=s&&Td(l,w,a),Ms}let zm=function Wm(e,t,n,r){return Br(!0),t[Le].createComment("")};function Ef(e,t,n,r){const o=z();return Wt(o,Dr(),t)&&(rt(),Wr(At(),o,e,t,n,r)),Ef}function Qc(e,t){return e<<17|t<<2}function Qo(e){return e>>17&32767}function wf(e){return 2|e}function Ai(e){return(131068&e)>>2}function If(e,t){return-131069&e|t<<2}function _f(e){return 1|e}function wv(e,t,n,r){const o=e[n+1],i=null===t;let s=r?Qo(o):Ai(o),a=!1;for(;0!==s&&(!1===a||i);){const g=e[s+1];vM(e[s],t)&&(a=!0,e[s+1]=r?_f(g):wf(g)),s=r?Qo(g):Ai(g)}a&&(e[n+1]=r?wf(o):_f(o))}function vM(e,t){return null===e||null==t||(Array.isArray(e)?e[1]:e)===t||!(!Array.isArray(e)||"string"!=typeof t)&&Bn(e,t)>=0}function Mf(e,t,n){const r=z();return Wt(r,Dr(),t)&&function Ln(e,t,n,r,o,i,s,a){const l=bn(t,n);let y,g=t.inputs;!a&&null!=g&&(y=g[r])?(Pd(e,n,y,r,o),Uo(t)&&function II(e,t){const n=Kn(t,e);16&n[De]||(n[De]|=64)}(n,t.index)):3&t.type&&(r=function wI(e){return"class"===e?"className":"for"===e?"htmlFor":"formaction"===e?"formAction":"innerHtml"===e?"innerHTML":"readonly"===e?"readOnly":"tabindex"===e?"tabIndex":e}(r),o=null!=s?s(o,t.value||"",r):o,i.setProperty(l,r,o))}(rt(),At(),r,e,t,r[Le],n,!1),Mf}function Sf(e,t,n,r,o){const s=o?"class":"style";Pd(e,n,t.inputs[s],s,r)}function bf(e,t,n){return Er(e,t,n,!1),bf}function Tf(e,t){return Er(e,t,null,!0),Tf}function Er(e,t,n,r){const o=z(),i=rt(),s=function ho(e){const t=ke.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}(2);i.firstUpdatePass&&function Nv(e,t,n,r){const o=e.data;if(null===o[n+1]){const i=o[vn()],s=function Av(e,t){return t>=e.expandoStartIndex}(e,n);(function Pv(e,t){return!!(e.flags&(t?8:16))})(i,r)&&null===t&&!s&&(t=!1),t=function SM(e,t,n,r){const o=function Nl(e){const t=ke.lFrame.currentDirectiveIndex;return-1===t?null:e[t]}(e);let i=r?t.residualClasses:t.residualStyles;if(null===o)0===(r?t.classBindings:t.styleBindings)&&(n=gu(n=Af(null,e,t,n,r),t.attrs,r),i=null);else{const s=t.directiveStylingLast;if(-1===s||e[s]!==o)if(n=Af(o,e,t,n,r),null===i){let l=function bM(e,t,n){const r=n?t.classBindings:t.styleBindings;if(0!==Ai(r))return e[Qo(r)]}(e,t,r);void 0!==l&&Array.isArray(l)&&(l=Af(null,e,t,l[1],r),l=gu(l,t.attrs,r),function TM(e,t,n,r){e[Qo(n?t.classBindings:t.styleBindings)]=r}(e,t,r,l))}else i=function AM(e,t,n){let r;const o=t.directiveEnd;for(let i=1+t.directiveStylingLast;i0)&&(g=!0)):y=n,o)if(0!==l){const T=Qo(e[a+1]);e[r+1]=Qc(T,a),0!==T&&(e[T+1]=If(e[T+1],r)),e[a+1]=function hM(e,t){return 131071&e|t<<17}(e[a+1],r)}else e[r+1]=Qc(a,0),0!==a&&(e[a+1]=If(e[a+1],r)),a=r;else e[r+1]=Qc(l,0),0===a?a=r:e[l+1]=If(e[l+1],r),l=r;g&&(e[r+1]=wf(e[r+1])),wv(e,y,r,!0),wv(e,y,r,!1),function mM(e,t,n,r,o){const i=o?e.residualClasses:e.residualStyles;null!=i&&"string"==typeof t&&Bn(i,t)>=0&&(n[r+1]=_f(n[r+1]))}(t,y,e,r,i),s=Qc(a,l),i?t.classBindings=s:t.styleBindings=s}(o,i,t,n,s,r)}}(i,e,s,r),t!==$e&&Wt(o,s,t)&&function Ov(e,t,n,r,o,i,s,a){if(!(3&t.type))return;const l=e.data,g=l[a+1],y=function pM(e){return!(1&~e)}(g)?xv(l,t,n,o,Ai(g),s):void 0;qc(y)||(qc(i)||function fM(e){return!(2&~e)}(g)&&(i=xv(l,null,n,o,a,s)),function dI(e,t,n,r,o){if(t)o?e.addClass(n,r):e.removeClass(n,r);else{let i=-1===r.indexOf("-")?void 0:yc.DashCase;null==o?e.removeStyle(n,r,i):("string"==typeof o&&o.endsWith("!important")&&(o=o.slice(0,-10),i|=yc.Important),e.setStyle(n,r,o,i))}}(r,s,ba(vn(),n),o,i))}(i,i.data[vn()],o,o[Le],e,o[s+1]=function xM(e,t){return null==e||""===e||("string"==typeof t?e+=t:"object"==typeof e&&(e=mt(zo(e)))),e}(t,n),r,s)}function Af(e,t,n,r,o){let i=null;const s=n.directiveEnd;let a=n.directiveStylingLast;for(-1===a?a=n.directiveStart:a++;a0;){const l=e[o],g=Array.isArray(l),y=g?l[1]:l,w=null===y;let T=n[o+1];T===$e&&(T=w?nt:void 0);let A=w?Bi(T,r):y===r?T:void 0;if(g&&!qc(A)&&(A=Bi(l,r)),qc(A)&&(a=A,s))return a;const x=e[o+1];o=s?Qo(x):Ai(x)}if(null!==t){let l=i?t.residualClasses:t.residualStyles;null!=l&&(a=Bi(l,r))}return a}function qc(e){return void 0!==e}class zM{destroy(t){}updateValue(t,n){}swap(t,n){const r=Math.min(t,n),o=Math.max(t,n),i=this.detach(o);if(o-r>1){const s=this.detach(r);this.attach(r,i),this.attach(o,s)}else this.attach(r,i)}move(t,n){this.attach(n,this.detach(t))}}function Nf(e,t,n,r,o){return e===n&&Object.is(t,r)?1:Object.is(o(e,t),o(n,r))?-1:0}function Rf(e,t,n,r){return!(void 0===t||!t.has(r)||(e.attach(n,t.get(r)),t.delete(r),0))}function Fv(e,t,n,r,o){if(Rf(e,t,r,n(r,o)))e.updateValue(r,o);else{const i=e.create(r,o);e.attach(r,i)}}function Lv(e,t,n,r){const o=new Set;for(let i=t;i<=n;i++)o.add(r(i,e.at(i)));return o}class kv{constructor(){this.kvMap=new Map,this._vMap=void 0}has(t){return this.kvMap.has(t)}delete(t){if(!this.has(t))return!1;const n=this.kvMap.get(t);return void 0!==this._vMap&&this._vMap.has(n)?(this.kvMap.set(t,this._vMap.get(n)),this._vMap.delete(n)):this.kvMap.delete(t),!0}get(t){return this.kvMap.get(t)}set(t,n){if(this.kvMap.has(t)){let r=this.kvMap.get(t);void 0===this._vMap&&(this._vMap=new Map);const o=this._vMap;for(;o.has(r);)r=o.get(r);o.set(r,n)}else this.kvMap.set(t,n)}forEach(t){for(let[n,r]of this.kvMap)if(t(r,n),void 0!==this._vMap){const o=this._vMap;for(;o.has(r);)r=o.get(r),t(r,n)}}}function jv(e,t,n){Gr("NgControlFlow");const r=z(),o=Dr(),i=Of(r,Ve+e);if(Wt(r,o,t)){const a=Q(null);try{if(Ld(i,0),-1!==t){const l=xf(r[J],Ve+t),g=ws(i,l.tView.ssrId);Za(i,qa(r,l,n,{dehydratedView:g}),0,Es(l,g))}}finally{Q(a)}}else{const a=Fg(i,0);void 0!==a&&(a[Ct]=n)}}class GM{constructor(t,n,r){this.lContainer=t,this.$implicit=n,this.$index=r}get $count(){return this.lContainer.length-Vt}}function Vv(e){return e}class QM{constructor(t,n,r){this.hasEmptyBlock=t,this.trackByFn=n,this.liveCollection=r}}function Uv(e,t,n,r,o,i,s,a,l,g,y,w,T){Gr("NgControlFlow");const A=void 0!==l,x=z(),B=a?s.bind(x[Pt][Ct]):s,se=new QM(A,B);x[Ve+e]=se,Ms(e+1,t,n,r,o,i),A&&Ms(e+2,l,g,y,w,T)}class qM extends zM{constructor(t,n,r){super(),this.lContainer=t,this.hostLView=n,this.templateTNode=r,this.needsIndexUpdate=!1}get length(){return this.lContainer.length-Vt}at(t){return this.getLView(t)[Ct].$implicit}attach(t,n){const r=n[ht];this.needsIndexUpdate||=t!==this.length,Za(this.lContainer,n,t,Es(this.templateTNode,r))}detach(t){return this.needsIndexUpdate||=t!==this.length-1,function ZM(e,t){return Wa(e,t)}(this.lContainer,t)}create(t,n){const r=ws(this.lContainer,this.templateTNode.tView.ssrId);return qa(this.hostLView,this.templateTNode,new GM(this.lContainer,n,t),{dehydratedView:r})}destroy(t){Cc(t[J],t)}updateValue(t,n){this.getLView(t)[Ct].$implicit=n}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let t=0;t{e.destroy(a)})}(s,e,i.trackByFn),s.updateIndexes(),i.hasEmptyBlock){const a=Dr(),l=0===s.length;if(Wt(r,a,l)){const g=n+2,y=Of(r,g);if(l){const w=xf(o,g),T=ws(y,w.tView.ssrId);Za(y,qa(r,w,void 0,{dehydratedView:T}),0,Es(w,T))}else Ld(y,0)}}}finally{Q(t)}}function Of(e,t){return e[t]}function xf(e,t){return Ta(e,t)}function Zc(e,t,n,r){const o=z(),i=rt(),s=Ve+e,a=o[Le],l=i.firstCreatePass?function XM(e,t,n,r,o,i){const s=t.consts,l=Cs(t,e,2,r,Ur(s,o));return Nd(t,n,l,Ur(s,i)),null!==l.attrs&&Fc(l,l.attrs,!1),null!==l.mergedAttrs&&Fc(l,l.mergedAttrs,!0),null!==t.queries&&t.queries.elementStart(t,l),l}(s,i,o,t,n,r):i.data[s],g=Bv(i,o,l,a,t,e);o[s]=g;const y=is(l);return Hr(l,!0),yg(a,g,l),!function du(e){return!(32&~e.flags)}(l)&&Ra()&&wc(i,o,g,l),0===function zC(){return ke.lFrame.elementDepthCount}()&&yn(g,o),function WC(){ke.lFrame.elementDepthCount++}(),y&&(bd(i,o,l),Sd(i,l,o)),null!==r&&Td(o,l),Zc}function Yc(){let e=yt();bl()?Tl():(e=e.parent,Hr(e,!1));const t=e;(function KC(e){return ke.skipHydrationRootTNode===e})(t)&&function YC(){ke.skipHydrationRootTNode=null}(),function GC(){ke.lFrame.elementDepthCount--}();const n=rt();return n.firstCreatePass&&(qu(n,e),$u(e)&&n.queries.elementEnd(e)),null!=t.classesWithoutHost&&function fE(e){return!!(8&e.flags)}(t)&&Sf(n,t,z(),t.classesWithoutHost,!0),null!=t.stylesWithoutHost&&function hE(e){return!!(16&e.flags)}(t)&&Sf(n,t,z(),t.stylesWithoutHost,!1),Yc}function Pf(e,t,n,r){return Zc(e,t,n,r),Yc(),Pf}let Bv=(e,t,n,r,o,i)=>(Br(!0),Dc(r,o,function Lh(){return ke.lFrame.currentNamespace}()));function Ff(e,t,n){const r=z(),o=rt(),i=e+Ve,s=o.firstCreatePass?function tS(e,t,n,r,o){const i=t.consts,s=Ur(i,r),a=Cs(t,e,8,"ng-container",s);return null!==s&&Fc(a,s,!0),Nd(t,n,a,Ur(i,o)),null!==t.queries&&t.queries.elementStart(t,a),a}(i,o,r,t,n):o.data[i];Hr(s,!0);const a=$v(o,r,s,e);return r[i]=a,Ra()&&wc(o,r,a,s),yn(a,r),is(s)&&(bd(o,r,s),Sd(o,s,r)),null!=n&&Td(r,s),Ff}function Lf(){let e=yt();const t=rt();return bl()?Tl():(e=e.parent,Hr(e,!1)),t.firstCreatePass&&(qu(t,e),$u(e)&&t.queries.elementEnd(e)),Lf}function kf(e,t,n){return Ff(e,t,n),Lf(),kf}let $v=(e,t,n,r)=>(Br(!0),Dd(t[Le],""));function zv(){return z()}const Ni=void 0;var iS=["en",[["a","p"],["AM","PM"],Ni],[["AM","PM"],Ni,Ni],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],Ni,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],Ni,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",Ni,"{1} 'at' {0}",Ni],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function oS(e){const n=Math.floor(Math.abs(e)),r=e.toString().replace(/^[^.]*\.?/,"").length;return 1===n&&0===r?1:5}];let Bs={};function jf(e){const t=function sS(e){return e.toLowerCase().replace(/_/g,"-")}(e);let n=Qv(t);if(n)return n;const r=t.split("-")[0];if(n=Qv(r),n)return n;if("en"===r)return iS;throw new pe(701,!1)}function Kv(e){return jf(e)[$s.PluralCase]}function Qv(e){return e in Bs||(Bs[e]=xe.ng&&xe.ng.common&&xe.ng.common.locales&&xe.ng.common.locales[e]),Bs[e]}var $s=function(e){return e[e.LocaleId=0]="LocaleId",e[e.DayPeriodsFormat=1]="DayPeriodsFormat",e[e.DayPeriodsStandalone=2]="DayPeriodsStandalone",e[e.DaysFormat=3]="DaysFormat",e[e.DaysStandalone=4]="DaysStandalone",e[e.MonthsFormat=5]="MonthsFormat",e[e.MonthsStandalone=6]="MonthsStandalone",e[e.Eras=7]="Eras",e[e.FirstDayOfWeek=8]="FirstDayOfWeek",e[e.WeekendRange=9]="WeekendRange",e[e.DateFormat=10]="DateFormat",e[e.TimeFormat=11]="TimeFormat",e[e.DateTimeFormat=12]="DateTimeFormat",e[e.NumberSymbols=13]="NumberSymbols",e[e.NumberFormats=14]="NumberFormats",e[e.CurrencyCode=15]="CurrencyCode",e[e.CurrencySymbol=16]="CurrencySymbol",e[e.CurrencyName=17]="CurrencyName",e[e.Currencies=18]="Currencies",e[e.Directionality=19]="Directionality",e[e.PluralCase=20]="PluralCase",e[e.ExtraData=21]="ExtraData",e}($s||{});const zs="en-US";let qv=zs;function Hf(e,t,n,r){const o=z(),i=rt(),s=yt();return function Bf(e,t,n,r,o,i,s){const a=is(r),g=e.firstCreatePass&&xg(e),y=t[Ct],w=Og(t);let T=!0;if(3&r.type||s){const B=bn(r,t),se=s?s(B):B,de=w.length,Z=s?ut=>s(Et(ut[r.index])):r.index;let Pe=null;if(!s&&a&&(Pe=function nb(e,t,n,r){const o=e.cleanup;if(null!=o)for(let i=0;il?a[l]:null}"string"==typeof s&&(i+=2)}return null}(e,t,o,r.index)),null!==Pe)(Pe.__ngLastListenerFn__||Pe).__ngNextListenerFn__=i,Pe.__ngLastListenerFn__=i,T=!1;else{i=Iy(r,t,y,i,!1);const ut=n.listen(se,o,i);w.push(i,ut),g&&g.push(o,Z,de,de+1)}}else i=Iy(r,t,y,i,!1);const A=r.outputs;let x;if(T&&null!==A&&(x=A[o])){const B=x.length;if(B)for(let se=0;se-1?Kn(e.index,t):t);let l=wy(t,n,r,s),g=i.__ngNextListenerFn__;for(;g;)l=wy(t,n,g,s)&&l,g=g.__ngNextListenerFn__;return o&&!1===l&&s.preventDefault(),l}}function _y(e=1){return function rE(e){return(ke.lFrame.contextLView=function wh(e,t){for(;e>0;)t=t[Di],e--;return t}(e,ke.lFrame.contextLView))[Ct]}(e)}function Py(e,t,n,r){!function Cm(e,t,n,r){const o=rt();if(o.firstCreatePass){const i=yt();Em(o,new mm(t,n,r),i.index),function r_(e,t){const n=e.contentQueries||(e.contentQueries=[]);t!==(n.length?n[n.length-1]:-1)&&n.push(e.queries.length-1,t)}(o,e),!(2&~n)&&(o.staticContentQueries=!0)}return ym(o,z(),n)}(e,t,n,r)}function Fy(e,t,n){!function Dm(e,t,n){const r=rt();return r.firstCreatePass&&(Em(r,new mm(e,t,n),-1),!(2&~t)&&(r.staticViewQueries=!0)),ym(r,z(),t)}(e,t,n)}function Ly(e){const t=z(),n=rt(),r=Rl();Qu(r+1);const o=sf(n,r);if(e.dirty&&function HC(e){return!(4&~e[De])}(t)===!(2&~o.metadata.flags)){if(null===o.matches)e.reset([]);else{const i=wm(t,r);e.reset(i,sp),e.notifyOnChanges()}return!0}return!1}function ky(){return function rf(e,t){return e[vr].queries[t].queryList}(z(),Rl())}function Ky(e,t=""){const n=z(),r=rt(),o=e+Ve,i=r.firstCreatePass?Cs(r,o,1,t,null):r.data[o],s=Qy(r,n,i,t,e);n[o]=s,Ra()&&wc(r,n,s,i),Hr(i,!1)}let Qy=(e,t,n,r,o)=>(Br(!0),function yd(e,t){return e.createText(t)}(t[Le],r));function zf(e){return nl("",e,""),zf}function nl(e,t,n){const r=z(),o=function xs(e,t,n,r){return Wt(e,Dr(),n)?t+Re(n)+r:$e}(r,e,t,n);return o!==$e&&function mo(e,t,n){const r=ba(t,e);!function og(e,t,n){e.setValue(t,n)}(e[Le],r,n)}(r,vn(),o),nl}function Wf(e,t,n,r,o){if(e=O(e),Array.isArray(e))for(let i=0;i>20;if(mr(e)||!e.multi){const A=new Oa(g,o,Ds),x=Kf(l,t,o?y:y+T,w);-1===x?(Vl(Ju(a,s),i,l),Gf(i,e,t.length),t.push(l),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),n.push(A),s.push(A)):(n[x]=A,s[x]=A)}else{const A=Kf(l,t,y+T,w),x=Kf(l,t,y,y+T),se=x>=0&&n[x];if(o&&!se||!o&&!(A>=0&&n[A])){Vl(Ju(a,s),i,l);const de=function Sb(e,t,n,r,o){const i=new Oa(e,n,Ds);return i.multi=[],i.index=t,i.componentProviders=0,iD(i,o,r&&!n),i}(o?Mb:_b,n.length,o,r,g);!o&&se&&(n[x].providerFactory=de),Gf(i,e,t.length,0),t.push(l),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),n.push(de),s.push(de)}else Gf(i,e,A>-1?A:x,iD(n[o?x:A],g,!o&&r));!o&&r&&se&&n[x].componentProviders++}}}function Gf(e,t,n,r){const o=mr(t),i=function ya(e){return!!e.useClass}(t);if(o||i){const l=(i?O(t.useClass):t).prototype.ngOnDestroy;if(l){const g=e.destroyHooks||(e.destroyHooks=[]);if(!o&&t.multi){const y=g.indexOf(n);-1===y?g.push(n,[r,l]):g[y+1].push(r,l)}else g.push(n,l)}}}function iD(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function Kf(e,t,n,r){for(let o=n;o{n.providersResolver=(r,o)=>function Ib(e,t,n){const r=rt();if(r.firstCreatePass){const o=Gn(e);Wf(n,r.data,r.blueprint,o,!0),Wf(t,r.data,r.blueprint,o,!1)}}(r,o?o(e):e,t)}}let bb=(()=>{class e{constructor(n){this._injector=n,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){const r=io(0,n.type),o=r.length>0?lf([r],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n,o)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(const n of this.cachedInjectors.values())null!==n&&n.destroy()}finally{this.cachedInjectors.clear()}}static#e=this.\u0275prov=dt({token:e,providedIn:"environment",factory:()=>new e(Nt(Mn))})}return e})();function aD(e){Gr("NgStandalone"),e.getStandaloneInjector=t=>t.get(bb).getOrCreateStandaloneInjector(e)}function cD(e,t,n,r){return lD(z(),Tn(),e,t,n,r)}function lD(e,t,n,r,o,i){const s=t+n;return Wt(e,s,o)?function Kr(e,t,n){return e[t]=n}(e,s+1,i?r.call(i,o):r(o)):function wu(e,t){const n=e[t];return n===$e?void 0:n}(e,s+1)}function gD(e,t){const n=rt();let r;const o=e+Ve;n.firstCreatePass?(r=function Vb(e,t){if(t)for(let n=t.length-1;n>=0;n--){const r=t[n];if(e===r.name)return r}}(t,n.pipeRegistry),n.data[o]=r,r.onDestroy&&(n.destroyHooks??=[]).push(o,r.onDestroy)):r=n.data[o];const i=r.factory||(r.factory=Rn(r.type)),a=sn(Ds);try{const l=Xu(!1),g=i();return Xu(l),function cb(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}(n,z(),o,g),g}finally{sn(a)}}function mD(e,t,n){const r=e+Ve,o=z(),i=function ss(e,t){return e[t]}(o,r);return function Iu(e,t){return e[J].data[t].pure}(o,r)?lD(o,Tn(),t,i.transform,n,i):i.transform(n)}class OD{constructor(t){this.full=t;const n=t.split(".");this.major=n[0],this.minor=n[1],this.patch=n.slice(2).join(".")}}let xD=(()=>{class e{log(n){console.log(n)}warn(n){console.warn(n)}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=dt({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})();const jD=new Xe(""),VD=new Xe("");let eh,kT=(()=>{class e{constructor(n,r,o){this._ngZone=n,this.registry=r,this._pendingCount=0,this._isZoneStable=!0,this._callbacks=[],this.taskTrackingZone=null,eh||(function jT(e){eh=e}(o),o.addToWindow(r)),this._watchAngularEvents(),n.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{qt.assertNotInAngularZone(),queueMicrotask(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())queueMicrotask(()=>{for(;0!==this._callbacks.length;){let n=this._callbacks.pop();clearTimeout(n.timeoutId),n.doneCb()}});else{let n=this.getPendingTasks();this._callbacks=this._callbacks.filter(r=>!r.updateCb||!r.updateCb(n)||(clearTimeout(r.timeoutId),!1))}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(n=>({source:n.source,creationLocation:n.creationLocation,data:n.data})):[]}addCallback(n,r,o){let i=-1;r&&r>0&&(i=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==i),n()},r)),this._callbacks.push({doneCb:n,timeoutId:i,updateCb:o})}whenStable(n,r,o){if(o&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(n,r,o),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(n){this.registry.registerApplication(n,this)}unregisterApplication(n){this.registry.unregisterApplication(n)}findProviders(n,r,o){return[]}static#e=this.\u0275fac=function(r){return new(r||e)(Nt(qt),Nt(UD),Nt(VD))};static#t=this.\u0275prov=dt({token:e,factory:e.\u0275fac})}return e})(),UD=(()=>{class e{constructor(){this._applications=new Map}registerApplication(n,r){this._applications.set(n,r)}unregisterApplication(n){this._applications.delete(n)}unregisterAllApplications(){this._applications.clear()}getTestability(n){return this._applications.get(n)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(n,r=!0){return eh?.findTestabilityInTree(this,n,r)??null}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=dt({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})();function th(e){return!!e&&"function"==typeof e.then}function HD(e){return!!e&&"function"==typeof e.subscribe}const BD=new Xe("");let nh=(()=>{class e{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((n,r)=>{this.resolve=n,this.reject=r}),this.appInits=Oe(BD,{optional:!0})??[]}runInitializers(){if(this.initialized)return;const n=[];for(const o of this.appInits){const i=o();if(th(i))n.push(i);else if(HD(i)){const s=new Promise((a,l)=>{i.subscribe({complete:a,error:l})});n.push(s)}}const r=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{r()}).catch(o=>{this.reject(o)}),0===n.length&&r(),this.initialized=!0}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=dt({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const rh=new Xe("");let qo=(()=>{class e{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=Oe(op),this.afterRenderEffectManager=Oe(iu),this.externalTestViews=new Set,this.beforeRender=new Yt.B,this.afterTick=new Yt.B,this.componentTypes=[],this.components=[],this.isStable=Oe(_s).hasPendingTasks.pipe((0,Bt.T)(n=>!n)),this._injector=Oe(Mn)}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(n,r){const o=n instanceof Qg;if(!this._injector.get(nh).done)throw!o&&$t(n),new pe(405,!1);let s;s=o?n:this._injector.get(xc).resolveComponentFactory(n),this.componentTypes.push(s.componentType);const a=function VT(e){return e.isBoundToModule}(s)?void 0:this._injector.get(Si),g=s.create(Qn.NULL,[],r||s.selector,a),y=g.location.nativeElement,w=g.injector.get(jD,null);return w?.registerApplication(y),g.onDestroy(()=>{this.detachView(g.hostView),sl(this.components,g),w?.unregisterApplication(y)}),this._loadComponent(g),g}tick(){this._tick(!0)}_tick(n){if(this._runningTick)throw new pe(101,!1);const r=Q(null);try{this._runningTick=!0,this.detectChangesInAttachedViews(n)}catch(o){this.internalErrorHandler(o)}finally{this.afterTick.next(),this._runningTick=!1,Q(r)}}detectChangesInAttachedViews(n){let r=0;const o=this.afterRenderEffectManager;for(;;){if(r===jg)throw new pe(103,!1);if(n){const i=0===r;this.beforeRender.next(i);for(let{_lView:s,notifyErrorHandler:a}of this._views)HT(s,i,a)}if(r++,o.executeInternalCallbacks(),![...this.externalTestViews.keys(),...this._views].some(({_lView:i})=>oh(i))&&(o.execute(),![...this.externalTestViews.keys(),...this._views].some(({_lView:i})=>oh(i))))break}}attachView(n){const r=n;this._views.push(r),r.attachToAppRef(this)}detachView(n){const r=n;sl(this._views,r),r.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n);const r=this._injector.get(rh,[]);[...this._bootstrapListeners,...r].forEach(o=>o(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>sl(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new pe(406,!1);const n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=dt({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function sl(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}function HT(e,t,n){!t&&!oh(e)||function BT(e,t,n){let r;n?(r=0,e[De]|=1024):r=64&e[De]?0:1,bc(e,t,r)}(e,n,t)}function oh(e){return _l(e)}class $T{constructor(t,n){this.ngModuleFactory=t,this.componentFactories=n}}let zT=(()=>{class e{compileModuleSync(n){return new cf(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}compileModuleAndAllComponentsSync(n){const r=this.compileModuleSync(n),i=qn(un(n).declarations).reduce((s,a)=>{const l=Ge(a);return l&&s.push(new uu(l)),s},[]);return new $T(r,i)}compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.compileModuleAndAllComponentsSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=dt({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),KT=(()=>{class e{constructor(){this.zone=Oe(qt),this.applicationRef=Oe(qo)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=dt({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function KD(e){return[{provide:qt,useFactory:e},{provide:er,multi:!0,useFactory:()=>{const t=Oe(KT,{optional:!0});return()=>t.initialize()}},{provide:er,multi:!0,useFactory:()=>{const t=Oe(ZT);return()=>{t.initialize()}}},{provide:op,useFactory:QT}]}function QT(){const e=Oe(qt),t=Oe(po);return n=>e.runOutsideAngular(()=>t.handleError(n))}function qT(e){return Lr([[],KD(()=>new qt(function QD(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:e?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:e?.runCoalescing??!1}}(e)))])}let ZT=(()=>{class e{constructor(){this.subscription=new ct.yU,this.initialized=!1,this.zone=Oe(qt),this.pendingTasks=Oe(_s)}initialize(){if(this.initialized)return;this.initialized=!0;let n=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(n=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{qt.assertNotInAngularZone(),queueMicrotask(()=>{null!==n&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(n),n=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{qt.assertInAngularZone(),n??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static#e=this.\u0275fac=function(r){return new(r||e)};static#t=this.\u0275prov=dt({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();const ul=new Xe("",{providedIn:"root",factory:()=>Oe(ul,Ze.Optional|Ze.SkipSelf)||function YT(){return typeof $localize<"u"&&$localize.locale||zs}()}),XT=new Xe("",{providedIn:"root",factory:()=>"USD"}),ih=new Xe("");let Zo=null;let eC=(()=>{class e{static#e=this.__NG_ELEMENT_ID__=rA}return e})();function rA(e){return function oA(e,t,n){if(Uo(e)&&!n){const r=Kn(e.index,t);return new Ja(r,r)}return 47&e.type?new Ja(t[Pt],t):null}(yt(),z(),!(16&~e))}class oC{constructor(){}supports(t){return Hc(t)}create(t){return new cA(t)}}const uA=(e,t)=>t;class cA{constructor(t){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=t||uA}forEachItem(t){let n;for(n=this._itHead;null!==n;n=n._next)t(n)}forEachOperation(t){let n=this._itHead,r=this._removalsHead,o=0,i=null;for(;n||r;){const s=!r||n&&n.currentIndex{s=this._trackByFn(o,a),null!==n&&Object.is(n.trackById,s)?(r&&(n=this._verifyReinsertion(n,a,s,o)),Object.is(n.item,a)||this._addIdentityChange(n,a)):(n=this._mismatch(n,a,s,o),r=!0),n=n._next,o++}),this.length=o;return this._truncate(n),this.collection=t,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let t;for(t=this._previousItHead=this._itHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._additionsHead;null!==t;t=t._nextAdded)t.previousIndex=t.currentIndex;for(this._additionsHead=this._additionsTail=null,t=this._movesHead;null!==t;t=t._nextMoved)t.previousIndex=t.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,n,r,o){let i;return null===t?i=this._itTail:(i=t._prev,this._remove(t)),null!==(t=null===this._unlinkedRecords?null:this._unlinkedRecords.get(r,null))?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._reinsertAfter(t,i,o)):null!==(t=null===this._linkedRecords?null:this._linkedRecords.get(r,o))?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._moveAfter(t,i,o)):t=this._addAfter(new lA(n,r),i,o),t}_verifyReinsertion(t,n,r,o){let i=null===this._unlinkedRecords?null:this._unlinkedRecords.get(r,null);return null!==i?t=this._reinsertAfter(i,t._prev,o):t.currentIndex!=o&&(t.currentIndex=o,this._addToMoves(t,o)),t}_truncate(t){for(;null!==t;){const n=t._next;this._addToRemovals(this._unlink(t)),t=n}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(t,n,r){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(t);const o=t._prevRemoved,i=t._nextRemoved;return null===o?this._removalsHead=i:o._nextRemoved=i,null===i?this._removalsTail=o:i._prevRemoved=o,this._insertAfter(t,n,r),this._addToMoves(t,r),t}_moveAfter(t,n,r){return this._unlink(t),this._insertAfter(t,n,r),this._addToMoves(t,r),t}_addAfter(t,n,r){return this._insertAfter(t,n,r),this._additionsTail=null===this._additionsTail?this._additionsHead=t:this._additionsTail._nextAdded=t,t}_insertAfter(t,n,r){const o=null===n?this._itHead:n._next;return t._next=o,t._prev=n,null===o?this._itTail=t:o._prev=t,null===n?this._itHead=t:n._next=t,null===this._linkedRecords&&(this._linkedRecords=new iC),this._linkedRecords.put(t),t.currentIndex=r,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){null!==this._linkedRecords&&this._linkedRecords.remove(t);const n=t._prev,r=t._next;return null===n?this._itHead=r:n._next=r,null===r?this._itTail=n:r._prev=n,t}_addToMoves(t,n){return t.previousIndex===n||(this._movesTail=null===this._movesTail?this._movesHead=t:this._movesTail._nextMoved=t),t}_addToRemovals(t){return null===this._unlinkedRecords&&(this._unlinkedRecords=new iC),this._unlinkedRecords.put(t),t.currentIndex=null,t._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=t,t._prevRemoved=null):(t._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=t),t}_addIdentityChange(t,n){return t.item=n,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=t:this._identityChangesTail._nextIdentityChange=t,t}}class lA{constructor(t,n){this.item=t,this.trackById=n,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class dA{constructor(){this._head=null,this._tail=null}add(t){null===this._head?(this._head=this._tail=t,t._nextDup=null,t._prevDup=null):(this._tail._nextDup=t,t._prevDup=this._tail,t._nextDup=null,this._tail=t)}get(t,n){let r;for(r=this._head;null!==r;r=r._nextDup)if((null===n||n<=r.currentIndex)&&Object.is(r.trackById,t))return r;return null}remove(t){const n=t._prevDup,r=t._nextDup;return null===n?this._head=r:n._nextDup=r,null===r?this._tail=n:r._prevDup=n,null===this._head}}class iC{constructor(){this.map=new Map}put(t){const n=t.trackById;let r=this.map.get(n);r||(r=new dA,this.map.set(n,r)),r.add(t)}get(t,n){const o=this.map.get(t);return o?o.get(t,n):null}remove(t){const n=t.trackById;return this.map.get(n).remove(t)&&this.map.delete(n),t}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function sC(e,t,n){const r=e.previousIndex;if(null===r)return r;let o=0;return n&&r{if(n&&n.key===o)this._maybeAddToChanges(n,r),this._appendAfter=n,n=n._next;else{const i=this._getOrCreateRecordForKey(o,r);n=this._insertBeforeOrAppend(n,i)}}),n){n._prev&&(n._prev._next=null),this._removalsHead=n;for(let r=n;null!==r;r=r._nextRemoved)r===this._mapHead&&(this._mapHead=null),this._records.delete(r.key),r._nextRemoved=r._next,r.previousValue=r.currentValue,r.currentValue=null,r._prev=null,r._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(t,n){if(t){const r=t._prev;return n._next=t,n._prev=r,t._prev=n,r&&(r._next=n),t===this._mapHead&&(this._mapHead=n),this._appendAfter=t,t}return this._appendAfter?(this._appendAfter._next=n,n._prev=this._appendAfter):this._mapHead=n,this._appendAfter=n,null}_getOrCreateRecordForKey(t,n){if(this._records.has(t)){const o=this._records.get(t);this._maybeAddToChanges(o,n);const i=o._prev,s=o._next;return i&&(i._next=s),s&&(s._prev=i),o._next=null,o._prev=null,o}const r=new hA(t);return this._records.set(t,r),r.currentValue=n,this._addToAdditions(r),r}_reset(){if(this.isDirty){let t;for(this._previousMapHead=this._mapHead,t=this._previousMapHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._changesHead;null!==t;t=t._nextChanged)t.previousValue=t.currentValue;for(t=this._additionsHead;null!=t;t=t._nextAdded)t.previousValue=t.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(t,n){Object.is(n,t.currentValue)||(t.previousValue=t.currentValue,t.currentValue=n,this._addToChanges(t))}_addToAdditions(t){null===this._additionsHead?this._additionsHead=this._additionsTail=t:(this._additionsTail._nextAdded=t,this._additionsTail=t)}_addToChanges(t){null===this._changesHead?this._changesHead=this._changesTail=t:(this._changesTail._nextChanged=t,this._changesTail=t)}_forEach(t,n){t instanceof Map?t.forEach(n):Object.keys(t).forEach(r=>n(t[r],r))}}class hA{constructor(t){this.key=t,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}function uC(){return new dh([new oC])}let dh=(()=>{class e{static#e=this.\u0275prov=dt({token:e,providedIn:"root",factory:uC});constructor(n){this.factories=n}static create(n,r){if(null!=r){const o=r.factories.slice();n=n.concat(o)}return new e(n)}static extend(n){return{provide:e,useFactory:r=>e.create(n,r||uC()),deps:[[e,new Ro,new Rr]]}}find(n){const r=this.factories.find(o=>o.supports(n));if(null!=r)return r;throw new pe(901,!1)}}return e})();function cC(){return new fh([new aC])}let fh=(()=>{class e{static#e=this.\u0275prov=dt({token:e,providedIn:"root",factory:cC});constructor(n){this.factories=n}static create(n,r){if(r){const o=r.factories.slice();n=n.concat(o)}return new e(n)}static extend(n){return{provide:e,useFactory:r=>e.create(n,r||cC()),deps:[[e,new Ro,new Rr]]}}find(n){const r=this.factories.find(o=>o.supports(n));if(r)return r;throw new pe(901,!1)}}return e})();function NA(e){try{const{rootComponent:t,appProviders:n,platformProviders:r}=e,o=function nA(e=[]){if(Zo)return Zo;const t=function YD(e=[],t){return Qn.create({name:t,providers:[{provide:gi,useValue:"platform"},{provide:ih,useValue:new Set([()=>Zo=null])},...e]})}(e);return Zo=t,function $D(){!function Zr(e){or=e}(()=>{throw new pe(600,!1)})}(),function XD(e){e.get(bp,null)?.forEach(n=>n())}(t),t}(r),i=[qT(),...n||[]],a=new $m({providers:i,parent:o,debugName:"",runEnvironmentInitializers:!1}).injector,l=a.get(qt);return l.run(()=>{a.resolveInjectorInitializers();const g=a.get(po,null);let y;l.runOutsideAngular(()=>{y=l.onError.subscribe({next:A=>{g.handleError(A)}})});const w=()=>a.destroy(),T=o.get(ih);return T.add(w),a.onDestroy(()=>{y.unsubscribe(),T.delete(w)}),function zD(e,t,n){try{const r=n();return th(r)?r.catch(o=>{throw t.runOutsideAngular(()=>e.handleError(o)),o}):r}catch(r){throw t.runOutsideAngular(()=>e.handleError(r)),r}}(g,l,()=>{const A=a.get(nh);return A.runInitializers(),A.donePromise.then(()=>{!function Zv(e){"string"==typeof e&&(qv=e.toLowerCase().replace(/_/g,"-"))}(a.get(ul,zs)||zs);const B=a.get(qo);return void 0!==t&&B.bootstrap(t),B})})})}catch(t){return Promise.reject(t)}}function WA(e){return"boolean"==typeof e?e:null!=e&&"false"!==e}function KA(e){const t=Q(null);try{return e()}finally{Q(t)}}function JA(e){const t=Ge(e);if(!t)return null;const n=new uu(t);return{get selector(){return n.selector},get type(){return n.componentType},get inputs(){return n.inputs},get outputs(){return n.outputs},get ngContentSelectors(){return n.ngContentSelectors},get isStandalone(){return t.standalone},get isSignal(){return t.signals}}}},345:(Te,oe,S)=>{S.d(oe,{B8:()=>U,hE:()=>Ft});var E=S(4438),I=S(177);class W extends I.VF{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class N extends W{static makeCurrent(){(0,I.ZD)(new N)}onAndCancel(F,b,R){return F.addEventListener(b,R),()=>{F.removeEventListener(b,R)}}dispatchEvent(F,b){F.dispatchEvent(b)}remove(F){F.parentNode&&F.parentNode.removeChild(F)}createElement(F,b){return(b=b||this.getDefaultDocument()).createElement(F)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(F){return F.nodeType===Node.ELEMENT_NODE}isShadowRoot(F){return F instanceof DocumentFragment}getGlobalEventTarget(F,b){return"window"===b?window:"document"===b?F:"body"===b?F.body:null}getBaseHref(F){const b=function te(){return G=G||document.querySelector("base"),G?G.getAttribute("href"):null}();return null==b?null:function Q(O){return new URL(O,document.baseURI).pathname}(b)}resetBaseElement(){G=null}getUserAgent(){return window.navigator.userAgent}getCookie(F){return(0,I._b)(document.cookie,F)}}let G=null,ne=(()=>{class O{build(){return new XMLHttpRequest}static#e=this.\u0275fac=function(R){return new(R||O)};static#t=this.\u0275prov=E.jDH({token:O,factory:O.\u0275fac})}return O})();const q=new E.nKC("");let H=(()=>{class O{constructor(b,R){this._zone=R,this._eventNameToPlugin=new Map,b.forEach(X=>{X.manager=this}),this._plugins=b.slice().reverse()}addEventListener(b,R,X){return this._findPluginFor(R).addEventListener(b,R,X)}getZone(){return this._zone}_findPluginFor(b){let R=this._eventNameToPlugin.get(b);if(R)return R;if(R=this._plugins.find(ge=>ge.supports(b)),!R)throw new E.wOt(5101,!1);return this._eventNameToPlugin.set(b,R),R}static#e=this.\u0275fac=function(R){return new(R||O)(E.KVO(q),E.KVO(E.SKi))};static#t=this.\u0275prov=E.jDH({token:O,factory:O.\u0275fac})}return O})();class ie{constructor(F){this._doc=F}}const ye="ng-app-id";let le=(()=>{class O{constructor(b,R,X,ge={}){this.doc=b,this.appId=R,this.nonce=X,this.platformId=ge,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=(0,I.Vy)(ge),this.resetHostNodes()}addStyles(b){for(const R of b)1===this.changeUsageCount(R,1)&&this.onStyleAdded(R)}removeStyles(b){for(const R of b)this.changeUsageCount(R,-1)<=0&&this.onStyleRemoved(R)}ngOnDestroy(){const b=this.styleNodesInDOM;b&&(b.forEach(R=>R.remove()),b.clear());for(const R of this.getAllStyles())this.onStyleRemoved(R);this.resetHostNodes()}addHost(b){this.hostNodes.add(b);for(const R of this.getAllStyles())this.addStyleToHost(b,R)}removeHost(b){this.hostNodes.delete(b)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(b){for(const R of this.hostNodes)this.addStyleToHost(R,b)}onStyleRemoved(b){const R=this.styleRef;R.get(b)?.elements?.forEach(X=>X.remove()),R.delete(b)}collectServerRenderedStyles(){const b=this.doc.head?.querySelectorAll(`style[${ye}="${this.appId}"]`);if(b?.length){const R=new Map;return b.forEach(X=>{null!=X.textContent&&R.set(X.textContent,X)}),R}return null}changeUsageCount(b,R){const X=this.styleRef;if(X.has(b)){const ge=X.get(b);return ge.usage+=R,ge.usage}return X.set(b,{usage:R,elements:[]}),R}getStyleElement(b,R){const X=this.styleNodesInDOM,ge=X?.get(R);if(ge?.parentNode===b)return X.delete(R),ge.removeAttribute(ye),ge;{const Me=this.doc.createElement("style");return this.nonce&&Me.setAttribute("nonce",this.nonce),Me.textContent=R,this.platformIsServer&&Me.setAttribute(ye,this.appId),b.appendChild(Me),Me}}addStyleToHost(b,R){const X=this.getStyleElement(b,R),ge=this.styleRef,Me=ge.get(R)?.elements;Me?Me.push(X):ge.set(R,{elements:[X],usage:1})}resetHostNodes(){const b=this.hostNodes;b.clear(),b.add(this.doc.head)}static#e=this.\u0275fac=function(R){return new(R||O)(E.KVO(I.qQ),E.KVO(E.sZ2),E.KVO(E.BIS,8),E.KVO(E.Agw))};static#t=this.\u0275prov=E.jDH({token:O,factory:O.\u0275fac})}return O})();const Ee={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},Je=/%COMP%/g,ce=new E.nKC("",{providedIn:"root",factory:()=>!0});function Ae(O,F){return F.map(b=>b.replace(Je,O))}let fe=(()=>{class O{constructor(b,R,X,ge,Me,lt,St,Jt=null){this.eventManager=b,this.sharedStylesHost=R,this.appId=X,this.removeStylesOnCompDestroy=ge,this.doc=Me,this.platformId=lt,this.ngZone=St,this.nonce=Jt,this.rendererByCompId=new Map,this.platformIsServer=(0,I.Vy)(lt),this.defaultRenderer=new ee(b,Me,St,this.platformIsServer)}createRenderer(b,R){if(!b||!R)return this.defaultRenderer;this.platformIsServer&&R.encapsulation===E.gXe.ShadowDom&&(R={...R,encapsulation:E.gXe.Emulated});const X=this.getOrCreateRenderer(b,R);return X instanceof Yn?X.applyToHost(b):X instanceof _t&&X.applyStyles(),X}getOrCreateRenderer(b,R){const X=this.rendererByCompId;let ge=X.get(R.id);if(!ge){const Me=this.doc,lt=this.ngZone,St=this.eventManager,Jt=this.sharedStylesHost,Un=this.removeStylesOnCompDestroy,hn=this.platformIsServer;switch(R.encapsulation){case E.gXe.Emulated:ge=new Yn(St,Jt,R,this.appId,Un,Me,lt,hn);break;case E.gXe.ShadowDom:return new Zt(St,Jt,b,R,Me,lt,this.nonce,hn);default:ge=new _t(St,Jt,R,Un,Me,lt,hn)}X.set(R.id,ge)}return ge}ngOnDestroy(){this.rendererByCompId.clear()}static#e=this.\u0275fac=function(R){return new(R||O)(E.KVO(H),E.KVO(le),E.KVO(E.sZ2),E.KVO(ce),E.KVO(I.qQ),E.KVO(E.Agw),E.KVO(E.SKi),E.KVO(E.BIS))};static#t=this.\u0275prov=E.jDH({token:O,factory:O.\u0275fac})}return O})();class ee{constructor(F,b,R,X){this.eventManager=F,this.doc=b,this.ngZone=R,this.platformIsServer=X,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(F,b){return b?this.doc.createElementNS(Ee[b]||b,F):this.doc.createElement(F)}createComment(F){return this.doc.createComment(F)}createText(F){return this.doc.createTextNode(F)}appendChild(F,b){(Ye(F)?F.content:F).appendChild(b)}insertBefore(F,b,R){F&&(Ye(F)?F.content:F).insertBefore(b,R)}removeChild(F,b){F&&F.removeChild(b)}selectRootElement(F,b){let R="string"==typeof F?this.doc.querySelector(F):F;if(!R)throw new E.wOt(-5104,!1);return b||(R.textContent=""),R}parentNode(F){return F.parentNode}nextSibling(F){return F.nextSibling}setAttribute(F,b,R,X){if(X){b=X+":"+b;const ge=Ee[X];ge?F.setAttributeNS(ge,b,R):F.setAttribute(b,R)}else F.setAttribute(b,R)}removeAttribute(F,b,R){if(R){const X=Ee[R];X?F.removeAttributeNS(X,b):F.removeAttribute(`${R}:${b}`)}else F.removeAttribute(b)}addClass(F,b){F.classList.add(b)}removeClass(F,b){F.classList.remove(b)}setStyle(F,b,R,X){X&(E.czy.DashCase|E.czy.Important)?F.style.setProperty(b,R,X&E.czy.Important?"important":""):F.style[b]=R}removeStyle(F,b,R){R&E.czy.DashCase?F.style.removeProperty(b):F.style[b]=""}setProperty(F,b,R){null!=F&&(F[b]=R)}setValue(F,b){F.nodeValue=b}listen(F,b,R){if("string"==typeof F&&!(F=(0,I.QT)().getGlobalEventTarget(this.doc,F)))throw new Error(`Unsupported event target ${F} for event ${b}`);return this.eventManager.addEventListener(F,b,this.decoratePreventDefault(R))}decoratePreventDefault(F){return b=>{if("__ngUnwrap__"===b)return F;!1===(this.platformIsServer?this.ngZone.runGuarded(()=>F(b)):F(b))&&b.preventDefault()}}}function Ye(O){return"TEMPLATE"===O.tagName&&void 0!==O.content}class Zt extends ee{constructor(F,b,R,X,ge,Me,lt,St){super(F,ge,Me,St),this.sharedStylesHost=b,this.hostEl=R,this.shadowRoot=R.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const Jt=Ae(X.id,X.styles);for(const Un of Jt){const hn=document.createElement("style");lt&&hn.setAttribute("nonce",lt),hn.textContent=Un,this.shadowRoot.appendChild(hn)}}nodeOrShadowRoot(F){return F===this.hostEl?this.shadowRoot:F}appendChild(F,b){return super.appendChild(this.nodeOrShadowRoot(F),b)}insertBefore(F,b,R){return super.insertBefore(this.nodeOrShadowRoot(F),b,R)}removeChild(F,b){return super.removeChild(this.nodeOrShadowRoot(F),b)}parentNode(F){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(F)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class _t extends ee{constructor(F,b,R,X,ge,Me,lt,St){super(F,ge,Me,lt),this.sharedStylesHost=b,this.removeStylesOnCompDestroy=X,this.styles=St?Ae(St,R.styles):R.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}}class Yn extends _t{constructor(F,b,R,X,ge,Me,lt,St){const Jt=X+"-"+R.id;super(F,b,R,ge,Me,lt,St,Jt),this.contentAttr=function ae(O){return"_ngcontent-%COMP%".replace(Je,O)}(Jt),this.hostAttr=function Ce(O){return"_nghost-%COMP%".replace(Je,O)}(Jt)}applyToHost(F){this.applyStyles(),this.setAttribute(F,this.hostAttr,"")}createElement(F,b){const R=super.createElement(F,b);return super.setAttribute(R,this.contentAttr,""),R}}let or=(()=>{class O extends ie{constructor(b){super(b)}supports(b){return!0}addEventListener(b,R,X){return b.addEventListener(R,X,!1),()=>this.removeEventListener(b,R,X)}removeEventListener(b,R,X){return b.removeEventListener(R,X)}static#e=this.\u0275fac=function(R){return new(R||O)(E.KVO(I.qQ))};static#t=this.\u0275prov=E.jDH({token:O,factory:O.\u0275fac})}return O})();const ir=["alt","control","meta","shift"],Zr={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},j={alt:O=>O.altKey,control:O=>O.ctrlKey,meta:O=>O.metaKey,shift:O=>O.shiftKey};let V=(()=>{class O extends ie{constructor(b){super(b)}supports(b){return null!=O.parseEventName(b)}addEventListener(b,R,X){const ge=O.parseEventName(R),Me=O.eventCallback(ge.fullKey,X,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>(0,I.QT)().onAndCancel(b,ge.domEventName,Me))}static parseEventName(b){const R=b.toLowerCase().split("."),X=R.shift();if(0===R.length||"keydown"!==X&&"keyup"!==X)return null;const ge=O._normalizeKey(R.pop());let Me="",lt=R.indexOf("code");if(lt>-1&&(R.splice(lt,1),Me="code."),ir.forEach(Jt=>{const Un=R.indexOf(Jt);Un>-1&&(R.splice(Un,1),Me+=Jt+".")}),Me+=ge,0!=R.length||0===ge.length)return null;const St={};return St.domEventName=X,St.fullKey=Me,St}static matchEventFullKeyCode(b,R){let X=Zr[b.key]||b.key,ge="";return R.indexOf("code.")>-1&&(X=b.code,ge="code."),!(null==X||!X)&&(X=X.toLowerCase()," "===X?X="space":"."===X&&(X="dot"),ir.forEach(Me=>{Me!==X&&(0,j[Me])(b)&&(ge+=Me+".")}),ge+=X,ge===R)}static eventCallback(b,R,X){return ge=>{O.matchEventFullKeyCode(ge,b)&&X.runGuarded(()=>R(ge))}}static _normalizeKey(b){return"esc"===b?"escape":b}static#e=this.\u0275fac=function(R){return new(R||O)(E.KVO(I.qQ))};static#t=this.\u0275prov=E.jDH({token:O,factory:O.\u0275fac})}return O})();function U(O,F){return(0,E.TL3)({rootComponent:O,...ue(F)})}function ue(O){return{appProviders:[...ct,...O?.providers??[]],platformProviders:Ne}}const Ne=[{provide:E.Agw,useValue:I.AJ},{provide:E.PLl,useValue:function be(){N.makeCurrent()},multi:!0},{provide:I.qQ,useFactory:function Ht(){return(0,E.TL$)(document),document},deps:[]}],ct=[{provide:E.H8p,useValue:"root"},{provide:E.zcH,useFactory:function it(){return new E.zcH},deps:[]},{provide:q,useClass:or,multi:!0,deps:[I.qQ,E.SKi,E.Agw]},{provide:q,useClass:V,multi:!0,deps:[I.qQ]},fe,le,H,{provide:E._9s,useExisting:fe},{provide:I.N0,useClass:ne,deps:[]},[]];let Ft=(()=>{class O{constructor(b){this._doc=b}getTitle(){return this._doc.title}setTitle(b){this._doc.title=b||""}static#e=this.\u0275fac=function(R){return new(R||O)(E.KVO(I.qQ))};static#t=this.\u0275prov=E.jDH({token:O,factory:O.\u0275fac,providedIn:"root"})}return O})()},6933:(Te,oe,S)=>{S.d(oe,{Wk:()=>xt,iI:()=>_a,n3:()=>si,lh:()=>vr});var E=S(467),I=S(4438),W=S(1985),N=S(8071),te=S(6648),Q=S(9326);function Y(...u){const f=(0,Q.lI)(u);return(0,te.H)(u,f)}var ne=S(4412),q=S(1983);const ie=(0,S(1853).L)(u=>function(){u(this),this.name="EmptyError",this.message="no elements in sequence"});var ye=S(8793),le=S(8750);function Ee(u){return new W.c(f=>{(0,le.Tg)(u()).subscribe(f)})}var Je=S(1203);function Be(u,f){const c=(0,N.T)(u)?u:()=>u,h=m=>m.error(c());return new W.c(f?m=>f.schedule(h,0,m):h)}var we=S(983),Ue=S(8359),ze=S(9974),ce=S(4360);function ae(){return(0,ze.N)((u,f)=>{let c=null;u._refCount++;const h=(0,ce._)(f,void 0,void 0,void 0,()=>{if(!u||u._refCount<=0||0<--u._refCount)return void(c=null);const m=u._connection,C=c;c=null,m&&(!C||m===C)&&m.unsubscribe(),f.unsubscribe()});u.subscribe(h),h.closed||(c=u.connect())})}class Ce extends W.c{constructor(f,c){super(),this.source=f,this.subjectFactory=c,this._subject=null,this._refCount=0,this._connection=null,(0,ze.S)(f)&&(this.lift=f.lift)}_subscribe(f){return this.getSubject().subscribe(f)}getSubject(){const f=this._subject;return(!f||f.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:f}=this;this._subject=this._connection=null,f?.unsubscribe()}connect(){let f=this._connection;if(!f){f=this._connection=new Ue.yU;const c=this.getSubject();f.add(this.source.subscribe((0,ce._)(c,void 0,()=>{this._teardown(),c.complete()},h=>{this._teardown(),c.error(h)},()=>this._teardown()))),f.closed&&(this._connection=null,f=Ue.yU.EMPTY)}return f}refCount(){return ae()(this)}}var Ae=S(1413),fe=S(177),ee=S(6354),ve=S(5558),Fe=S(6697),Ye=S(9172),Zt=S(5964),_t=S(1397);function Yn(u){return(0,ze.N)((f,c)=>{let h=!1;f.subscribe((0,ce._)(c,m=>{h=!0,c.next(m)},()=>{h||c.next(u),c.complete()}))})}function or(u=ir){return(0,ze.N)((f,c)=>{let h=!1;f.subscribe((0,ce._)(c,m=>{h=!0,c.next(m)},()=>h?c.complete():c.error(u())))})}function ir(){return new ie}var Zr=S(3669);function j(u,f){const c=arguments.length>=2;return h=>h.pipe(u?(0,Zt.p)((m,C)=>u(m,C,h)):Zr.D,(0,Fe.s)(1),c?Yn(f):or(()=>new ie))}function V(u,f){return(0,N.T)(f)?(0,_t.Z)(u,f,1):(0,_t.Z)(u,1)}var U=S(8141);function $(u){return(0,ze.N)((f,c)=>{let C,h=null,m=!1;h=f.subscribe((0,ce._)(c,void 0,void 0,M=>{C=(0,le.Tg)(u(M,$(u)(f))),h?(h.unsubscribe(),h=null,C.subscribe(c)):m=!0})),m&&(h.unsubscribe(),h=null,C.subscribe(c))})}function be(u){return u<=0?()=>we.w:(0,ze.N)((f,c)=>{let h=[];f.subscribe((0,ce._)(c,m=>{h.push(m),u{for(const m of h)c.next(m);c.complete()},void 0,()=>{h=null}))})}function Ne(u){return(0,ze.N)((f,c)=>{try{f.subscribe(c)}finally{c.add(u)}})}var Dt=S(5343),Yt=S(6365),ct=S(345);const Ie="primary",Bt=Symbol("RouteTitle");class Mt{constructor(f){this.params=f||{}}has(f){return Object.prototype.hasOwnProperty.call(this.params,f)}get(f){if(this.has(f)){const c=this.params[f];return Array.isArray(c)?c[0]:c}return null}getAll(f){if(this.has(f)){const c=this.params[f];return Array.isArray(c)?c:[c]}return[]}get keys(){return Object.keys(this.params)}}function Ft(u){return new Mt(u)}function pe(u,f,c){const h=c.path.split("/");if(h.length>u.length||"full"===c.pathMatch&&(f.hasChildren()||h.lengthh[C]===m)}return u===f}function Oi(u){return u.length>0?u[u.length-1]:null}function kt(u){return function G(u){return!!u&&(u instanceof W.c||(0,N.T)(u.lift)&&(0,N.T)(u.subscribe))}(u)?u:(0,I.jNT)(u)?(0,te.H)(Promise.resolve(u)):Y(u)}const He={exact:function fn(u,f,c){if(!mt(u.segments,f.segments)||!xe(u.segments,f.segments,c)||u.numberOfChildren!==f.numberOfChildren)return!1;for(const h in f.children)if(!u.children[h]||!fn(u.children[h],f.children[h],c))return!1;return!0},subset:jt},Qe={exact:function Nn(u,f){return Xt(u,f)},subset:function ar(u,f){return Object.keys(f).length<=Object.keys(u).length&&Object.keys(f).every(c=>Yr(u[c],f[c]))},ignored:()=>!0};function Xn(u,f,c){return He[c.paths](u.root,f.root,c.matrixParams)&&Qe[c.queryParams](u.queryParams,f.queryParams)&&!("exact"===c.fragment&&u.fragment!==f.fragment)}function jt(u,f,c){return xi(u,f,f.segments,c)}function xi(u,f,c,h){if(u.segments.length>c.length){const m=u.segments.slice(0,c.length);return!(!mt(m,c)||f.hasChildren()||!xe(m,c,h))}if(u.segments.length===c.length){if(!mt(u.segments,c)||!xe(u.segments,c,h))return!1;for(const m in f.children)if(!u.children[m]||!jt(u.children[m],f.children[m],h))return!1;return!0}{const m=c.slice(0,u.segments.length),C=c.slice(u.segments.length);return!!(mt(u.segments,m)&&xe(u.segments,m,h)&&u.children[Ie])&&xi(u.children[Ie],f,C,h)}}function xe(u,f,c){return f.every((h,m)=>Qe[c](u[m].parameters,h.parameters))}class Dn{constructor(f=new _e([],{}),c={},h=null){this.root=f,this.queryParams=c,this.fragment=h}get queryParamMap(){return this._queryParamMap??=Ft(this.queryParams),this._queryParamMap}toString(){return _r.serialize(this)}}class _e{constructor(f,c){this.segments=f,this.children=c,this.parent=null,Object.values(c).forEach(h=>h.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return O(this)}}class et{constructor(f,c){this.path=f,this.parameters=c}get parameterMap(){return this._parameterMap??=Ft(this.parameters),this._parameterMap}toString(){return St(this)}}function mt(u,f){return u.length===f.length&&u.every((c,h)=>c.path===f[h].path)}let Ir=(()=>{class u{static#e=this.\u0275fac=function(h){return new(h||u)};static#t=this.\u0275prov=I.jDH({token:u,factory:()=>new Jr,providedIn:"root"})}return u})();class Jr{parse(f){const c=new Nu(f);return new Dn(c.parseRootSegment(),c.parseQueryParams(),c.parseFragment())}serialize(f){const c=`/${F(f.root,!0)}`,h=function Un(u){const f=Object.entries(u).map(([c,h])=>Array.isArray(h)?h.map(m=>`${R(c)}=${R(m)}`).join("&"):`${R(c)}=${R(h)}`).filter(c=>c);return f.length?`?${f.join("&")}`:""}(f.queryParams);return`${c}${h}${"string"==typeof f.fragment?`#${function X(u){return encodeURI(u)}(f.fragment)}`:""}`}}const _r=new Jr;function O(u){return u.segments.map(f=>St(f)).join("/")}function F(u,f){if(!u.hasChildren())return O(u);if(f){const c=u.children[Ie]?F(u.children[Ie],!1):"",h=[];return Object.entries(u.children).forEach(([m,C])=>{m!==Ie&&h.push(`${m}:${F(C,!1)}`)}),h.length>0?`${c}(${h.join("//")})`:c}{const c=function ur(u,f){let c=[];return Object.entries(u.children).forEach(([h,m])=>{h===Ie&&(c=c.concat(f(m,h)))}),Object.entries(u.children).forEach(([h,m])=>{h!==Ie&&(c=c.concat(f(m,h)))}),c}(u,(h,m)=>m===Ie?[F(u.children[Ie],!1)]:[`${m}:${F(h,!1)}`]);return 1===Object.keys(u.children).length&&null!=u.children[Ie]?`${O(u)}/${c[0]}`:`${O(u)}/(${c.join("//")})`}}function b(u){return encodeURIComponent(u).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function R(u){return b(u).replace(/%3B/gi,";")}function ge(u){return b(u).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Me(u){return decodeURIComponent(u)}function lt(u){return Me(u.replace(/\+/g,"%20"))}function St(u){return`${ge(u.path)}${function Jt(u){return Object.entries(u).map(([f,c])=>`;${ge(f)}=${ge(c)}`).join("")}(u.parameters)}`}const hn=/^[^\/()?;#]+/;function Mr(u){const f=u.match(hn);return f?f[0]:""}const qs=/^[^\/()?;=#]+/,en=/^[^=?&#]+/,Au=/^[^&#]+/;class Nu{constructor(f){this.url=f,this.remaining=f}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new _e([],{}):new _e([],this.parseChildren())}parseQueryParams(){const f={};if(this.consumeOptional("?"))do{this.parseQueryParam(f)}while(this.consumeOptional("&"));return f}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const f=[];for(this.peekStartsWith("(")||f.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),f.push(this.parseSegment());let c={};this.peekStartsWith("/(")&&(this.capture("/"),c=this.parseParens(!0));let h={};return this.peekStartsWith("(")&&(h=this.parseParens(!1)),(f.length>0||Object.keys(c).length>0)&&(h[Ie]=new _e(f,c)),h}parseSegment(){const f=Mr(this.remaining);if(""===f&&this.peekStartsWith(";"))throw new I.wOt(4009,!1);return this.capture(f),new et(Me(f),this.parseMatrixParams())}parseMatrixParams(){const f={};for(;this.consumeOptional(";");)this.parseParam(f);return f}parseParam(f){const c=function Tu(u){const f=u.match(qs);return f?f[0]:""}(this.remaining);if(!c)return;this.capture(c);let h="";if(this.consumeOptional("=")){const m=Mr(this.remaining);m&&(h=m,this.capture(h))}f[Me(c)]=Me(h)}parseQueryParam(f){const c=function Se(u){const f=u.match(en);return f?f[0]:""}(this.remaining);if(!c)return;this.capture(c);let h="";if(this.consumeOptional("=")){const M=function Pi(u){const f=u.match(Au);return f?f[0]:""}(this.remaining);M&&(h=M,this.capture(h))}const m=lt(c),C=lt(h);if(f.hasOwnProperty(m)){let M=f[m];Array.isArray(M)||(M=[M],f[m]=M),M.push(C)}else f[m]=C}parseParens(f){const c={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const h=Mr(this.remaining),m=this.remaining[h.length];if("/"!==m&&")"!==m&&";"!==m)throw new I.wOt(4010,!1);let C;h.indexOf(":")>-1?(C=h.slice(0,h.indexOf(":")),this.capture(C),this.capture(":")):f&&(C=Ie);const M=this.parseChildren();c[C]=1===Object.keys(M).length?M[Ie]:new _e([],M),this.consumeOptional("//")}return c}peekStartsWith(f){return this.remaining.startsWith(f)}consumeOptional(f){return!!this.peekStartsWith(f)&&(this.remaining=this.remaining.substring(f.length),!0)}capture(f){if(!this.consumeOptional(f))throw new I.wOt(4011,!1)}}function Zs(u){return u.segments.length>0?new _e([],{[Ie]:u}):u}function Ys(u){const f={};for(const[h,m]of Object.entries(u.children)){const C=Ys(m);if(h===Ie&&0===C.segments.length&&C.hasChildren())for(const[M,L]of Object.entries(C.children))f[M]=L;else(C.segments.length>0||C.hasChildren())&&(f[h]=C)}return function dt(u){if(1===u.numberOfChildren&&u.children[Ie]){const f=u.children[Ie];return new _e(u.segments.concat(f.segments),f.children)}return u}(new _e(u.segments,f))}function eo(u){return u instanceof Dn}function to(u){let f;const m=Zs(function c(C){const M={};for(const P of C.children){const he=c(P);M[P.outlet]=he}const L=new _e(C.url,M);return C===u&&(f=L),L}(u.root));return f??m}function yo(u,f,c,h){let m=u;for(;m.parent;)m=m.parent;if(0===f.length)return br(m,m,m,c,h);const C=function Eo(u){if("string"==typeof u[0]&&1===u.length&&"/"===u[0])return new Co(!0,0,u);let f=0,c=!1;const h=u.reduce((m,C,M)=>{if("object"==typeof C&&null!=C){if(C.outlets){const L={};return Object.entries(C.outlets).forEach(([P,he])=>{L[P]="string"==typeof he?he.split("/"):he}),[...m,{outlets:L}]}if(C.segmentPath)return[...m,C.segmentPath]}return"string"!=typeof C?[...m,C]:0===M?(C.split("/").forEach((L,P)=>{0==P&&"."===L||(0==P&&""===L?c=!0:".."===L?f++:""!=L&&m.push(L))}),m):[...m,C]},[]);return new Co(c,f,h)}(f);if(C.toRoot())return br(m,m,new _e([],{}),c,h);const M=function Xe(u,f,c){if(u.isAbsolute)return new no(f,!0,0);if(!c)return new no(f,!1,NaN);if(null===c.parent)return new no(c,!0,0);const h=cr(u.commands[0])?0:1;return function Yo(u,f,c){let h=u,m=f,C=c;for(;C>m;){if(C-=m,h=h.parent,!h)throw new I.wOt(4005,!1);m=h.segments.length}return new no(h,!1,m-C)}(c,c.segments.length-1+h,u.numberOfDoubleDots)}(C,m,u),L=M.processChildren?lr(M.segmentGroup,M.index,C.commands):Xo(M.segmentGroup,M.index,C.commands);return br(m,M.segmentGroup,L,c,h)}function cr(u){return"object"==typeof u&&null!=u&&!u.outlets&&!u.segmentPath}function Sr(u){return"object"==typeof u&&null!=u&&u.outlets}function br(u,f,c,h,m){let M,C={};h&&Object.entries(h).forEach(([P,he])=>{C[P]=Array.isArray(he)?he.map(je=>`${je}`):`${he}`}),M=u===f?c:Do(u,f,c);const L=Zs(Ys(M));return new Dn(L,C,m)}function Do(u,f,c){const h={};return Object.entries(u.children).forEach(([m,C])=>{h[m]=C===f?c:Do(C,f,c)}),new _e(u.segments,h)}class Co{constructor(f,c,h){if(this.isAbsolute=f,this.numberOfDoubleDots=c,this.commands=h,f&&h.length>0&&cr(h[0]))throw new I.wOt(4003,!1);const m=h.find(Sr);if(m&&m!==Oi(h))throw new I.wOt(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class no{constructor(f,c,h){this.segmentGroup=f,this.processChildren=c,this.index=h}}function Xo(u,f,c){if(u??=new _e([],{}),0===u.segments.length&&u.hasChildren())return lr(u,f,c);const h=function Fi(u,f,c){let h=0,m=f;const C={match:!1,pathIndex:0,commandIndex:0};for(;m=c.length)return C;const M=u.segments[m],L=c[h];if(Sr(L))break;const P=`${L}`,he=h0&&void 0===P)break;if(P&&he&&"object"==typeof he&&void 0===he.outlets){if(!Li(P,he,M))return C;h+=2}else{if(!Li(P,{},M))return C;h++}m++}return{match:!0,pathIndex:m,commandIndex:h}}(u,f,c),m=c.slice(h.commandIndex);if(h.match&&h.pathIndexC!==Ie)&&u.children[Ie]&&1===u.numberOfChildren&&0===u.children[Ie].segments.length){const C=lr(u.children[Ie],f,c);return new _e(u.segments,C.children)}return Object.entries(h).forEach(([C,M])=>{"string"==typeof M&&(M=[M]),null!==M&&(m[C]=Xo(u.children[C],f,M))}),Object.entries(u.children).forEach(([C,M])=>{void 0===h[C]&&(m[C]=M)}),new _e(u.segments,m)}}function Io(u,f,c){const h=u.segments.slice(0,f);let m=0;for(;m{"string"==typeof h&&(h=[h]),null!==h&&(f[c]=Io(new _e([],{}),0,h))}),f}function Xs(u){const f={};return Object.entries(u).forEach(([c,h])=>f[c]=`${h}`),f}function Li(u,f,c){return u==c.path&&Xt(f,c.parameters)}const _o="imperative";var We=function(u){return u[u.NavigationStart=0]="NavigationStart",u[u.NavigationEnd=1]="NavigationEnd",u[u.NavigationCancel=2]="NavigationCancel",u[u.NavigationError=3]="NavigationError",u[u.RoutesRecognized=4]="RoutesRecognized",u[u.ResolveStart=5]="ResolveStart",u[u.ResolveEnd=6]="ResolveEnd",u[u.GuardsCheckStart=7]="GuardsCheckStart",u[u.GuardsCheckEnd=8]="GuardsCheckEnd",u[u.RouteConfigLoadStart=9]="RouteConfigLoadStart",u[u.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",u[u.ChildActivationStart=11]="ChildActivationStart",u[u.ChildActivationEnd=12]="ChildActivationEnd",u[u.ActivationStart=13]="ActivationStart",u[u.ActivationEnd=14]="ActivationEnd",u[u.Scroll=15]="Scroll",u[u.NavigationSkipped=16]="NavigationSkipped",u}(We||{});class Qt{constructor(f,c){this.id=f,this.url=c}}class Tr extends Qt{constructor(f,c,h="imperative",m=null){super(f,c),this.type=We.NavigationStart,this.navigationTrigger=h,this.restoredState=m}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class Cn extends Qt{constructor(f,c,h){super(f,c),this.urlAfterRedirects=h,this.type=We.NavigationEnd}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}var ln=function(u){return u[u.Redirect=0]="Redirect",u[u.SupersededByNewNavigation=1]="SupersededByNewNavigation",u[u.NoDataFromResolver=2]="NoDataFromResolver",u[u.GuardRejected=3]="GuardRejected",u}(ln||{}),En=function(u){return u[u.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",u[u.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",u}(En||{});class wn extends Qt{constructor(f,c,h,m){super(f,c),this.reason=h,this.code=m,this.type=We.NavigationCancel}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class dr extends Qt{constructor(f,c,h,m){super(f,c),this.reason=h,this.code=m,this.type=We.NavigationSkipped}}class Re extends Qt{constructor(f,c,h,m){super(f,c),this.error=h,this.target=m,this.type=We.NavigationError}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class tt extends Qt{constructor(f,c,h,m){super(f,c),this.urlAfterRedirects=h,this.state=m,this.type=We.RoutesRecognized}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class ml extends Qt{constructor(f,c,h,m){super(f,c),this.urlAfterRedirects=h,this.state=m,this.type=We.GuardsCheckStart}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class In extends Qt{constructor(f,c,h,m,C){super(f,c),this.urlAfterRedirects=h,this.state=m,this.shouldActivate=C,this.type=We.GuardsCheckEnd}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class Js extends Qt{constructor(f,c,h,m){super(f,c),this.urlAfterRedirects=h,this.state=m,this.type=We.ResolveStart}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Ou extends Qt{constructor(f,c,h,m){super(f,c),this.urlAfterRedirects=h,this.state=m,this.type=We.ResolveEnd}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class ea{constructor(f){this.route=f,this.type=We.RouteConfigLoadStart}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class Jo{constructor(f){this.route=f,this.type=We.RouteConfigLoadEnd}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class Ze{constructor(f){this.snapshot=f,this.type=We.ChildActivationStart}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class ei{constructor(f){this.snapshot=f,this.type=We.ChildActivationEnd}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class ki{constructor(f){this.snapshot=f,this.type=We.ActivationStart}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class sn{constructor(f){this.snapshot=f,this.type=We.ActivationEnd}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class ti{constructor(f,c,h){this.routerEvent=f,this.position=c,this.anchor=h,this.type=We.Scroll}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}class ji{}class Vi{constructor(f){this.url=f}}class ni{constructor(){this.outlet=null,this.route=null,this.injector=null,this.children=new Jn,this.attachRef=null}}let Jn=(()=>{class u{constructor(){this.contexts=new Map}onChildOutletCreated(c,h){const m=this.getOrCreateContext(c);m.outlet=h,this.contexts.set(c,m)}onChildOutletDestroyed(c){const h=this.getContext(c);h&&(h.outlet=null,h.attachRef=null)}onOutletDeactivated(){const c=this.contexts;return this.contexts=new Map,c}onOutletReAttached(c){this.contexts=c}getOrCreateContext(c){let h=this.getContext(c);return h||(h=new ni,this.contexts.set(c,h)),h}getContext(c){return this.contexts.get(c)||null}static#e=this.\u0275fac=function(h){return new(h||u)};static#t=this.\u0275prov=I.jDH({token:u,factory:u.\u0275fac,providedIn:"root"})}return u})();class Ui{constructor(f){this._root=f}get root(){return this._root.value}parent(f){const c=this.pathFromRoot(f);return c.length>1?c[c.length-2]:null}children(f){const c=ri(f,this._root);return c?c.children.map(h=>h.value):[]}firstChild(f){const c=ri(f,this._root);return c&&c.children.length>0?c.children[0].value:null}siblings(f){const c=So(f,this._root);return c.length<2?[]:c[c.length-2].children.map(m=>m.value).filter(m=>m!==f)}pathFromRoot(f){return So(f,this._root).map(c=>c.value)}}function ri(u,f){if(u===f.value)return f;for(const c of f.children){const h=ri(u,c);if(h)return h}return null}function So(u,f){if(u===f.value)return[f];for(const c of f.children){const h=So(u,c);if(h.length)return h.unshift(f),h}return[]}class pn{constructor(f,c){this.value=f,this.children=c}toString(){return`TreeNode(${this.value})`}}function gn(u){const f={};return u&&u.children.forEach(c=>f[c.value.outlet]=c),f}class oi extends Ui{constructor(f,c){super(f),this.snapshot=c,To(this,f)}toString(){return this.snapshot.toString()}}function Hn(u){const f=function ta(u){const C=new Oe([],{},{},"",{},Ie,u,null,{});return new bo("",new pn(C,[]))}(u),c=new ne.t([new et("",{})]),h=new ne.t({}),m=new ne.t({}),C=new ne.t({}),M=new ne.t(""),L=new Nt(c,h,C,M,m,Ie,u,f.root);return L.snapshot=f.root,new oi(new pn(L,[]),f)}class Nt{constructor(f,c,h,m,C,M,L,P){this.urlSubject=f,this.paramsSubject=c,this.queryParamsSubject=h,this.fragmentSubject=m,this.dataSubject=C,this.outlet=M,this.component=L,this._futureSnapshot=P,this.title=this.dataSubject?.pipe((0,ee.T)(he=>he[Bt]))??Y(void 0),this.url=f,this.params=c,this.queryParams=h,this.fragment=m,this.data=C}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe((0,ee.T)(f=>Ft(f))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe((0,ee.T)(f=>Ft(f))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Ar(u,f,c="emptyOnly"){let h;const{routeConfig:m}=u;return h=null===f||"always"!==c&&""!==m?.path&&(f.component||f.routeConfig?.loadComponent)?{params:{...u.params},data:{...u.data},resolve:{...u.data,...u._resolvedData??{}}}:{params:{...f.params,...u.params},data:{...f.data,...u.data},resolve:{...u.data,...f.data,...m?.data,...u._resolvedData}},m&&Hi(m)&&(h.resolve[Bt]=m.title),h}class Oe{get title(){return this.data?.[Bt]}constructor(f,c,h,m,C,M,L,P,he){this.url=f,this.params=c,this.queryParams=h,this.fragment=m,this.data=C,this.outlet=M,this.component=L,this.routeConfig=P,this._resolve=he}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=Ft(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=Ft(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(h=>h.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class bo extends Ui{constructor(f,c){super(c),this.url=f,To(this,c)}toString(){return Nr(this._root)}}function To(u,f){f.value._routerState=u,f.children.forEach(c=>To(u,c))}function Nr(u){const f=u.children.length>0?` { ${u.children.map(Nr).join(", ")} } `:"";return`${u.value}${f}`}function Ao(u){if(u.snapshot){const f=u.snapshot,c=u._futureSnapshot;u.snapshot=c,Xt(f.queryParams,c.queryParams)||u.queryParamsSubject.next(c.queryParams),f.fragment!==c.fragment&&u.fragmentSubject.next(c.fragment),Xt(f.params,c.params)||u.paramsSubject.next(c.params),function Vn(u,f){if(u.length!==f.length)return!1;for(let c=0;cXt(c.parameters,f[h].parameters))}(u.url,f.url);return c&&!(!u.parent!=!f.parent)&&(!u.parent||ii(u.parent,f.parent))}function Hi(u){return"string"==typeof u.title||null===u.title}let si=(()=>{class u{constructor(){this.activated=null,this._activatedRoute=null,this.name=Ie,this.activateEvents=new I.bkB,this.deactivateEvents=new I.bkB,this.attachEvents=new I.bkB,this.detachEvents=new I.bkB,this.parentContexts=(0,I.WQX)(Jn),this.location=(0,I.WQX)(I.c1b),this.changeDetector=(0,I.WQX)(I.gRc),this.environmentInjector=(0,I.WQX)(I.uvJ),this.inputBinder=(0,I.WQX)(No,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(c){if(c.name){const{firstChange:h,previousValue:m}=c.name;if(h)return;this.isTrackedInParentContexts(m)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(m)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(c){return this.parentContexts.getContext(c)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const c=this.parentContexts.getContext(this.name);c?.route&&(c.attachRef?this.attach(c.attachRef,c.route):this.activateWith(c.route,c.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new I.wOt(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new I.wOt(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new I.wOt(4012,!1);this.location.detach();const c=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(c.instance),c}attach(c,h){this.activated=c,this._activatedRoute=h,this.location.insert(c.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(c.instance)}deactivate(){if(this.activated){const c=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(c)}}activateWith(c,h){if(this.isActivated)throw new I.wOt(4013,!1);this._activatedRoute=c;const m=this.location,M=c.snapshot.component,L=this.parentContexts.getOrCreateContext(this.name).children,P=new Rr(c,L,m.injector);this.activated=m.createComponent(M,{index:m.length,injector:P,environmentInjector:h??this.environmentInjector}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static#e=this.\u0275fac=function(h){return new(h||u)};static#t=this.\u0275dir=I.FsC({type:u,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[I.OA$]})}return u})();class Rr{__ngOutletInjector(f){return new Rr(this.route,this.childContexts,f)}constructor(f,c,h){this.route=f,this.childContexts=c,this.parent=h}get(f,c){return f===Nt?this.route:f===Jn?this.childContexts:this.parent.get(f,c)}}const No=new I.nKC("");let Ro=(()=>{class u{constructor(){this.outletDataSubscriptions=new Map}bindActivatedRouteToOutletComponent(c){this.unsubscribeFromRouteData(c),this.subscribeToRouteData(c)}unsubscribeFromRouteData(c){this.outletDataSubscriptions.get(c)?.unsubscribe(),this.outletDataSubscriptions.delete(c)}subscribeToRouteData(c){const{activatedRoute:h}=c,m=(0,q.z)([h.queryParams,h.params,h.data]).pipe((0,ve.n)(([C,M,L],P)=>(L={...C,...M,...L},0===P?Y(L):Promise.resolve(L)))).subscribe(C=>{if(!c.isActivated||!c.activatedComponentRef||c.activatedRoute!==h||null===h.component)return void this.unsubscribeFromRouteData(c);const M=(0,I.HJs)(h.component);if(M)for(const{templateName:L}of M.inputs)c.activatedComponentRef.setInput(L,C[L]);else this.unsubscribeFromRouteData(c)});this.outletDataSubscriptions.set(c,m)}static#e=this.\u0275fac=function(h){return new(h||u)};static#t=this.\u0275prov=I.jDH({token:u,factory:u.\u0275fac})}return u})();function Rn(u,f,c){if(c&&u.shouldReuseRoute(f.value,c.value.snapshot)){const h=c.value;h._futureSnapshot=f.value;const m=function na(u,f,c){return f.children.map(h=>{for(const m of c.children)if(u.shouldReuseRoute(h.value,m.value.snapshot))return Rn(u,h,m);return Rn(u,h)})}(u,f,c);return new pn(h,m)}{if(u.shouldAttach(f.value)){const C=u.retrieve(f.value);if(null!==C){const M=C.route;return M.value._futureSnapshot=f.value,M.children=f.children.map(L=>Rn(u,L)),M}}const h=function an(u){return new Nt(new ne.t(u.url),new ne.t(u.params),new ne.t(u.queryParams),new ne.t(u.fragment),new ne.t(u.data),u.outlet,u.component,u)}(f.value),m=f.children.map(C=>Rn(u,C));return new pn(h,m)}}const fr="ngNavigationCancelingError";function ai(u,f){const{redirectTo:c,navigationBehaviorOptions:h}=eo(f)?{redirectTo:f,navigationBehaviorOptions:void 0}:f,m=ro(!1,ln.Redirect);return m.url=c,m.navigationBehaviorOptions=h,m}function ro(u,f){const c=new Error(`NavigationCancelingError: ${u||""}`);return c[fr]=!0,c.cancellationCode=f,c}function ui(u){return!!u&&u[fr]}let Oo=(()=>{class u{static#e=this.\u0275fac=function(h){return new(h||u)};static#t=this.\u0275cmp=I.VBU({type:u,selectors:[["ng-component"]],standalone:!0,features:[I.aNF],decls:1,vars:0,template:function(h,m){1&h&&I.nrm(0,"router-outlet")},dependencies:[si],encapsulation:2})}return u})();function er(u){const f=u.children&&u.children.map(er),c=f?{...u,children:f}:{...u};return!c.component&&!c.loadComponent&&(f||c.loadChildren)&&c.outlet&&c.outlet!==Ie&&(c.component=Oo),c}function xn(u){return u.outlet||Ie}function tr(u){if(!u)return null;if(u.routeConfig?._injector)return u.routeConfig._injector;for(let f=u.parent;f;f=f.parent){const c=f.routeConfig;if(c?._loadedInjector)return c._loadedInjector;if(c?._injector)return c._injector}return null}class gr{constructor(f,c,h,m,C){this.routeReuseStrategy=f,this.futureState=c,this.currState=h,this.forwardEvent=m,this.inputBindingEnabled=C}activate(f){const c=this.futureState._root,h=this.currState?this.currState._root:null;this.deactivateChildRoutes(c,h,f),Ao(this.futureState.root),this.activateChildRoutes(c,h,f)}deactivateChildRoutes(f,c,h){const m=gn(c);f.children.forEach(C=>{const M=C.value.outlet;this.deactivateRoutes(C,m[M],h),delete m[M]}),Object.values(m).forEach(C=>{this.deactivateRouteAndItsChildren(C,h)})}deactivateRoutes(f,c,h){const m=f.value,C=c?c.value:null;if(m===C)if(m.component){const M=h.getContext(m.outlet);M&&this.deactivateChildRoutes(f,c,M.children)}else this.deactivateChildRoutes(f,c,h);else C&&this.deactivateRouteAndItsChildren(c,h)}deactivateRouteAndItsChildren(f,c){f.value.component&&this.routeReuseStrategy.shouldDetach(f.value.snapshot)?this.detachAndStoreRouteSubtree(f,c):this.deactivateRouteAndOutlet(f,c)}detachAndStoreRouteSubtree(f,c){const h=c.getContext(f.value.outlet),m=h&&f.value.component?h.children:c,C=gn(f);for(const M of Object.values(C))this.deactivateRouteAndItsChildren(M,m);if(h&&h.outlet){const M=h.outlet.detach(),L=h.children.onOutletDeactivated();this.routeReuseStrategy.store(f.value.snapshot,{componentRef:M,route:f,contexts:L})}}deactivateRouteAndOutlet(f,c){const h=c.getContext(f.value.outlet),m=h&&f.value.component?h.children:c,C=gn(f);for(const M of Object.values(C))this.deactivateRouteAndItsChildren(M,m);h&&(h.outlet&&(h.outlet.deactivate(),h.children.onOutletDeactivated()),h.attachRef=null,h.route=null)}activateChildRoutes(f,c,h){const m=gn(c);f.children.forEach(C=>{this.activateRoutes(C,m[C.value.outlet],h),this.forwardEvent(new sn(C.value.snapshot))}),f.children.length&&this.forwardEvent(new ei(f.value.snapshot))}activateRoutes(f,c,h){const m=f.value,C=c?c.value:null;if(Ao(m),m===C)if(m.component){const M=h.getOrCreateContext(m.outlet);this.activateChildRoutes(f,c,M.children)}else this.activateChildRoutes(f,c,h);else if(m.component){const M=h.getOrCreateContext(m.outlet);if(this.routeReuseStrategy.shouldAttach(m.snapshot)){const L=this.routeReuseStrategy.retrieve(m.snapshot);this.routeReuseStrategy.store(m.snapshot,null),M.children.onOutletReAttached(L.contexts),M.attachRef=L.componentRef,M.route=L.route.value,M.outlet&&M.outlet.attach(L.componentRef,L.route.value),Ao(L.route.value),this.activateChildRoutes(f,null,M.children)}else{const L=tr(m.snapshot);M.attachRef=null,M.route=m,M.injector=L,M.outlet&&M.outlet.activateWith(m,M.injector),this.activateChildRoutes(f,null,M.children)}}else this.activateChildRoutes(f,null,h)}}class $i{constructor(f){this.path=f,this.route=this.path[this.path.length-1]}}class Or{constructor(f,c){this.component=f,this.route=c}}function zi(u,f,c){const h=u._root;return xr(h,f?f._root:null,c,[h.value])}function $n(u,f){const c=Symbol(),h=f.get(u,c);return h===c?"function"!=typeof u||(0,I.LfX)(u)?f.get(u):u:h}function xr(u,f,c,h,m={canDeactivateChecks:[],canActivateChecks:[]}){const C=gn(f);return u.children.forEach(M=>{(function Wi(u,f,c,h,m={canDeactivateChecks:[],canActivateChecks:[]}){const C=u.value,M=f?f.value:null,L=c?c.getContext(u.value.outlet):null;if(M&&C.routeConfig===M.routeConfig){const P=function sa(u,f,c){if("function"==typeof c)return c(u,f);switch(c){case"pathParamsChange":return!mt(u.url,f.url);case"pathParamsOrQueryParamsChange":return!mt(u.url,f.url)||!Xt(u.queryParams,f.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!ii(u,f)||!Xt(u.queryParams,f.queryParams);default:return!ii(u,f)}}(M,C,C.routeConfig.runGuardsAndResolvers);P?m.canActivateChecks.push(new $i(h)):(C.data=M.data,C._resolvedData=M._resolvedData),xr(u,f,C.component?L?L.children:null:c,h,m),P&&L&&L.outlet&&L.outlet.isActivated&&m.canDeactivateChecks.push(new Or(L.outlet.component,M))}else M&&Pr(f,L,m),m.canActivateChecks.push(new $i(h)),xr(u,null,C.component?L?L.children:null:c,h,m)})(M,C[M.value.outlet],c,h.concat([M.value]),m),delete C[M.value.outlet]}),Object.entries(C).forEach(([M,L])=>Pr(L,c.getContext(M),m)),m}function Pr(u,f,c){const h=gn(u),m=u.value;Object.entries(h).forEach(([C,M])=>{Pr(M,m.component?f?f.children.getContext(C):null:f,c)}),c.canDeactivateChecks.push(new Or(m.component&&f&&f.outlet&&f.outlet.isActivated?f.outlet.component:null,m))}function xo(u){return"function"==typeof u}function pt(u){return u instanceof ie||"EmptyError"===u?.name}const di=Symbol("INITIAL_VALUE");function Fr(){return(0,ve.n)(u=>(0,q.z)(u.map(f=>f.pipe((0,Fe.s)(1),(0,Ye.Z)(di)))).pipe((0,ee.T)(f=>{for(const c of f)if(!0!==c){if(c===di)return di;if(!1===c||c instanceof Dn)return c}return!0}),(0,Zt.p)(f=>f!==di),(0,Fe.s)(1)))}function Po(u){return(0,Je.F)((0,U.M)(f=>{if(eo(f))throw ai(0,f)}),(0,ee.T)(f=>!0===f))}class Rt{constructor(f){this.segmentGroup=f||null}}class Ot extends Error{constructor(f){super(),this.urlTree=f}}function $t(u){return Be(new Rt(u))}class oo{constructor(f,c){this.urlSerializer=f,this.urlTree=c}lineralizeSegments(f,c){let h=[],m=c.root;for(;;){if(h=h.concat(m.segments),0===m.numberOfChildren)return Y(h);if(m.numberOfChildren>1||!m.children[Ie])return Be(new I.wOt(4e3,!1));m=m.children[Ie]}}applyRedirectCommands(f,c,h){const m=this.applyRedirectCreateUrlTree(c,this.urlSerializer.parse(c),f,h);if(c.startsWith("/"))throw new Ot(m);return m}applyRedirectCreateUrlTree(f,c,h,m){const C=this.createSegmentGroup(f,c.root,h,m);return new Dn(C,this.createQueryParams(c.queryParams,this.urlTree.queryParams),c.fragment)}createQueryParams(f,c){const h={};return Object.entries(f).forEach(([m,C])=>{if("string"==typeof C&&C.startsWith(":")){const L=C.substring(1);h[m]=c[L]}else h[m]=C}),h}createSegmentGroup(f,c,h,m){const C=this.createSegments(f,c.segments,h,m);let M={};return Object.entries(c.children).forEach(([L,P])=>{M[L]=this.createSegmentGroup(f,P,h,m)}),new _e(C,M)}createSegments(f,c,h,m){return c.map(C=>C.path.startsWith(":")?this.findPosParam(f,C,m):this.findOrReturn(C,h))}findPosParam(f,c,h){const m=h[c.path.substring(1)];if(!m)throw new I.wOt(4001,!1);return m}findOrReturn(f,c){let h=0;for(const m of c){if(m.path===f.path)return c.splice(h),m;h++}return f}}const Qi={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function Uu(u,f,c,h,m){const C=Lr(u,f,c);return C.matched?(h=function ra(u,f){return u.providers&&!u._injector&&(u._injector=(0,I.Ol2)(u.providers,f,`Route: ${u.path}`)),u._injector??f}(f,h),function Ge(u,f,c,h){const m=f.canMatch;return m&&0!==m.length?Y(m.map(M=>{const L=$n(M,u);return kt(function la(u){return u&&xo(u.canMatch)}(L)?L.canMatch(f,c):(0,I.N4e)(u,()=>L(f,c)))})).pipe(Fr(),Po()):Y(!0)}(h,f,c).pipe((0,ee.T)(M=>!0===M?C:{...Qi}))):Y(C)}function Lr(u,f,c){if("**"===f.path)return function qi(u){return{matched:!0,parameters:u.length>0?Oi(u).parameters:{},consumedSegments:u,remainingSegments:[],positionalParamSegments:{}}}(c);if(""===f.path)return"full"===f.pathMatch&&(u.hasChildren()||c.length>0)?{...Qi}:{matched:!0,consumedSegments:[],remainingSegments:c,parameters:{},positionalParamSegments:{}};const m=(f.matcher||pe)(c,u,f);if(!m)return{...Qi};const C={};Object.entries(m.posParams??{}).forEach(([L,P])=>{C[L]=P.path});const M=m.consumed.length>0?{...C,...m.consumed[m.consumed.length-1].parameters}:C;return{matched:!0,consumedSegments:m.consumed,remainingSegments:c.slice(m.consumed.length),parameters:M,positionalParamSegments:m.posParams??{}}}function io(u,f,c,h){return c.length>0&&function vl(u,f,c){return c.some(h=>pi(u,f,h)&&xn(h)!==Ie)}(u,c,h)?{segmentGroup:new _e(f,hi(h,new _e(c,u.children))),slicedSegments:[]}:0===c.length&&function Yi(u,f,c){return c.some(h=>pi(u,f,h))}(u,c,h)?{segmentGroup:new _e(u.segments,Zi(u,c,h,u.children)),slicedSegments:c}:{segmentGroup:new _e(u.segments,u.children),slicedSegments:c}}function Zi(u,f,c,h){const m={};for(const C of c)if(pi(u,f,C)&&!h[xn(C)]){const M=new _e([],{});m[xn(C)]=M}return{...h,...m}}function hi(u,f){const c={};c[Ie]=f;for(const h of u)if(""===h.path&&xn(h)!==Ie){const m=new _e([],{});c[xn(h)]=m}return c}function pi(u,f,c){return(!(u.hasChildren()||f.length>0)||"full"!==c.pathMatch)&&""===c.path}class va{}class gi{constructor(f,c,h,m,C,M,L){this.injector=f,this.configLoader=c,this.rootComponentType=h,this.config=m,this.urlTree=C,this.paramsInheritanceStrategy=M,this.urlSerializer=L,this.applyRedirects=new oo(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(f){return new I.wOt(4002,`'${f.segmentGroup}'`)}recognize(){const f=io(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(f).pipe((0,ee.T)(c=>{const h=new Oe([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,{},Ie,this.rootComponentType,null,{}),m=new pn(h,c),C=new bo("",m),M=function vo(u,f,c=null,h=null){return yo(to(u),f,c,h)}(h,[],this.urlTree.queryParams,this.urlTree.fragment);return M.queryParams=this.urlTree.queryParams,C.url=this.urlSerializer.serialize(M),this.inheritParamsAndData(C._root,null),{state:C,tree:M}}))}match(f){return this.processSegmentGroup(this.injector,this.config,f,Ie).pipe($(h=>{if(h instanceof Ot)return this.urlTree=h.urlTree,this.match(h.urlTree.root);throw h instanceof Rt?this.noMatchError(h):h}))}inheritParamsAndData(f,c){const h=f.value,m=Ar(h,c,this.paramsInheritanceStrategy);h.params=Object.freeze(m.params),h.data=Object.freeze(m.data),f.children.forEach(C=>this.inheritParamsAndData(C,h))}processSegmentGroup(f,c,h,m){return 0===h.segments.length&&h.hasChildren()?this.processChildren(f,c,h):this.processSegment(f,c,h,h.segments,m,!0).pipe((0,ee.T)(C=>C instanceof pn?[C]:[]))}processChildren(f,c,h){const m=[];for(const C of Object.keys(h.children))"primary"===C?m.unshift(C):m.push(C);return(0,te.H)(m).pipe(V(C=>{const M=h.children[C],L=function ci(u,f){const c=u.filter(h=>xn(h)===f);return c.push(...u.filter(h=>xn(h)!==f)),c}(c,C);return this.processSegmentGroup(f,L,M,C)}),function re(u,f){return(0,ze.N)(function ue(u,f,c,h,m){return(C,M)=>{let L=c,P=f,he=0;C.subscribe((0,ce._)(M,je=>{const Ke=he++;P=L?u(P,je,Ke):(L=!0,je),h&&M.next(P)},m&&(()=>{L&&M.next(P),M.complete()})))}}(u,f,arguments.length>=2,!0))}((C,M)=>(C.push(...M),C)),Yn(null),function it(u,f){const c=arguments.length>=2;return h=>h.pipe(u?(0,Zt.p)((m,C)=>u(m,C,h)):Zr.D,be(1),c?Yn(f):or(()=>new ie))}(),(0,_t.Z)(C=>{if(null===C)return $t(h);const M=vi(C);return function mi(u){u.sort((f,c)=>f.value.outlet===Ie?-1:c.value.outlet===Ie?1:f.value.outlet.localeCompare(c.value.outlet))}(M),Y(M)}))}processSegment(f,c,h,m,C,M){return(0,te.H)(c).pipe(V(L=>this.processSegmentAgainstRoute(L._injector??f,c,L,h,m,C,M).pipe($(P=>{if(P instanceof Rt)return Y(null);throw P}))),j(L=>!!L),$(L=>{if(pt(L))return function ma(u,f,c){return 0===f.length&&!u.children[c]}(h,m,C)?Y(new va):$t(h);throw L}))}processSegmentAgainstRoute(f,c,h,m,C,M,L){return function Xi(u,f,c,h){return!!(xn(u)===h||h!==Ie&&pi(f,c,u))&&Lr(f,u,c).matched}(h,m,C,M)?void 0===h.redirectTo?this.matchSegmentAgainstRoute(f,m,h,C,M):this.allowRedirects&&L?this.expandSegmentAgainstRouteUsingRedirect(f,m,c,h,C,M):$t(m):$t(m)}expandSegmentAgainstRouteUsingRedirect(f,c,h,m,C,M){const{matched:L,consumedSegments:P,positionalParamSegments:he,remainingSegments:je}=Lr(c,m,C);if(!L)return $t(c);m.redirectTo.startsWith("/")&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>31&&(this.allowRedirects=!1));const Ke=this.applyRedirects.applyRedirectCommands(P,m.redirectTo,he);return this.applyRedirects.lineralizeSegments(m,Ke).pipe((0,_t.Z)(Ut=>this.processSegment(f,h,c,Ut.concat(je),M,!1)))}matchSegmentAgainstRoute(f,c,h,m,C){const M=Uu(c,h,m,f);return"**"===h.path&&(c.children={}),M.pipe((0,ve.n)(L=>L.matched?this.getChildConfig(f=h._injector??f,h,m).pipe((0,ve.n)(({routes:P})=>{const he=h._loadedInjector??f,{consumedSegments:je,remainingSegments:Ke,parameters:Ut}=L,Ci=new Oe(je,Ut,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,function Mn(u){return u.data||{}}(h),xn(h),h.component??h._loadedComponent??null,h,function so(u){return u.resolve||{}}(h)),{segmentGroup:Ho,slicedSegments:Bo}=io(c,je,Ke,P);if(0===Bo.length&&Ho.hasChildren())return this.processChildren(he,P,Ho).pipe((0,ee.T)(yr=>null===yr?null:new pn(Ci,yr)));if(0===P.length&&0===Bo.length)return Y(new pn(Ci,[]));const Sa=xn(h)===C;return this.processSegment(he,P,Ho,Bo,Sa?Ie:C,!0).pipe((0,ee.T)(yr=>new pn(Ci,yr instanceof pn?[yr]:[])))})):$t(c)))}getChildConfig(f,c,h){return c.children?Y({routes:c.children,injector:f}):c.loadChildren?void 0!==c._loadedRoutes?Y({routes:c._loadedRoutes,injector:c._loadedInjector}):function pa(u,f,c,h){const m=f.canLoad;return void 0===m||0===m.length?Y(!0):Y(m.map(M=>{const L=$n(M,u);return kt(function _n(u){return u&&xo(u.canLoad)}(L)?L.canLoad(f,c):(0,I.N4e)(u,()=>L(f,c)))})).pipe(Fr(),Po())}(f,c,h).pipe((0,_t.Z)(m=>m?this.configLoader.loadChildren(f,c).pipe((0,U.M)(C=>{c._loadedRoutes=C.routes,c._loadedInjector=C.injector})):function fi(u){return Be(ro(!1,ln.GuardRejected))}())):Y({routes:[],injector:f})}}function Da(u){const f=u.value.routeConfig;return f&&""===f.path}function vi(u){const f=[],c=new Set;for(const h of u){if(!Da(h)){f.push(h);continue}const m=f.find(C=>h.value.routeConfig===C.value.routeConfig);void 0!==m?(m.children.push(...h.children),c.add(m)):f.push(h)}for(const h of c){const m=vi(h.children);f.push(new pn(h.value,m))}return f.filter(h=>!c.has(h))}function Ca(u){const f=u.children.map(c=>Ca(c)).flat();return[u,...f]}function es(u){return(0,ve.n)(f=>{const c=u(f);return c?(0,te.H)(c).pipe((0,ee.T)(()=>f)):Y(f)})}let wa=(()=>{class u{buildTitle(c){let h,m=c.root;for(;void 0!==m;)h=this.getResolvedTitleForRoute(m)??h,m=m.children.find(C=>C.outlet===Ie);return h}getResolvedTitleForRoute(c){return c.data[Bt]}static#e=this.\u0275fac=function(h){return new(h||u)};static#t=this.\u0275prov=I.jDH({token:u,factory:()=>(0,I.WQX)(ts),providedIn:"root"})}return u})(),ts=(()=>{class u extends wa{constructor(c){super(),this.title=c}updateTitle(c){const h=this.buildTitle(c);void 0!==h&&this.title.setTitle(h)}static#e=this.\u0275fac=function(h){return new(h||u)(I.KVO(ct.hE))};static#t=this.\u0275prov=I.jDH({token:u,factory:u.\u0275fac,providedIn:"root"})}return u})();const Sn=new I.nKC("",{providedIn:"root",factory:()=>({})}),kr=new I.nKC("");let uo=(()=>{class u{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=(0,I.WQX)(I.Ql9)}loadComponent(c){if(this.componentLoaders.get(c))return this.componentLoaders.get(c);if(c._loadedComponent)return Y(c._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(c);const h=kt(c.loadComponent()).pipe((0,ee.T)(p),(0,U.M)(C=>{this.onLoadEndListener&&this.onLoadEndListener(c),c._loadedComponent=C}),Ne(()=>{this.componentLoaders.delete(c)})),m=new Ce(h,()=>new Ae.B).pipe(ae());return this.componentLoaders.set(c,m),m}loadChildren(c,h){if(this.childrenLoaders.get(h))return this.childrenLoaders.get(h);if(h._loadedRoutes)return Y({routes:h._loadedRoutes,injector:h._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(h);const C=function d(u,f,c,h){return kt(u.loadChildren()).pipe((0,ee.T)(p),(0,_t.Z)(m=>m instanceof I.Co$||Array.isArray(m)?Y(m):(0,te.H)(f.compileModuleAsync(m))),(0,ee.T)(m=>{h&&h(u);let C,M,L=!1;return Array.isArray(m)?(M=m,!0):(C=m.create(c).injector,M=C.get(kr,[],{optional:!0,self:!0}).flat()),{routes:M.map(er),injector:C}}))}(h,this.compiler,c,this.onLoadEndListener).pipe(Ne(()=>{this.childrenLoaders.delete(h)})),M=new Ce(C,()=>new Ae.B).pipe(ae());return this.childrenLoaders.set(h,M),M}static#e=this.\u0275fac=function(h){return new(h||u)};static#t=this.\u0275prov=I.jDH({token:u,factory:u.\u0275fac,providedIn:"root"})}return u})();function p(u){return function D(u){return u&&"object"==typeof u&&"default"in u}(u)?u.default:u}let v=(()=>{class u{static#e=this.\u0275fac=function(h){return new(h||u)};static#t=this.\u0275prov=I.jDH({token:u,factory:()=>(0,I.WQX)(_),providedIn:"root"})}return u})(),_=(()=>{class u{shouldProcessUrl(c){return!0}extract(c){return c}merge(c,h){return c}static#e=this.\u0275fac=function(h){return new(h||u)};static#t=this.\u0275prov=I.jDH({token:u,factory:u.\u0275fac,providedIn:"root"})}return u})();const k=new I.nKC(""),K=new I.nKC("");function me(u,f,c){const h=u.get(K),m=u.get(fe.qQ);return u.get(I.SKi).runOutsideAngular(()=>{if(!m.startViewTransition||h.skipNextTransition)return h.skipNextTransition=!1,new Promise(he=>setTimeout(he));let C;const M=new Promise(he=>{C=he}),L=m.startViewTransition(()=>(C(),function vt(u){return new Promise(f=>{(0,I.mal)(f,{injector:u})})}(u))),{onViewTransitionCreated:P}=h;return P&&(0,I.N4e)(u,()=>P({transition:L,from:f,to:c})),M})}let st=(()=>{class u{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new Ae.B,this.transitionAbortSubject=new Ae.B,this.configLoader=(0,I.WQX)(uo),this.environmentInjector=(0,I.WQX)(I.uvJ),this.urlSerializer=(0,I.WQX)(Ir),this.rootContexts=(0,I.WQX)(Jn),this.location=(0,I.WQX)(fe.aZ),this.inputBindingEnabled=null!==(0,I.WQX)(No,{optional:!0}),this.titleStrategy=(0,I.WQX)(wa),this.options=(0,I.WQX)(Sn,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=(0,I.WQX)(v),this.createViewTransition=(0,I.WQX)(k,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>Y(void 0),this.rootComponentType=null,this.configLoader.onLoadEndListener=m=>this.events.next(new Jo(m)),this.configLoader.onLoadStartListener=m=>this.events.next(new ea(m))}complete(){this.transitions?.complete()}handleNavigationRequest(c){const h=++this.navigationId;this.transitions?.next({...this.transitions.value,...c,id:h})}setupNavigations(c,h,m){return this.transitions=new ne.t({id:0,currentUrlTree:h,currentRawUrl:h,extractedUrl:this.urlHandlingStrategy.extract(h),urlAfterRedirects:this.urlHandlingStrategy.extract(h),rawUrl:h,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:_o,restoredState:null,currentSnapshot:m.snapshot,targetSnapshot:null,currentRouterState:m,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe((0,Zt.p)(C=>0!==C.id),(0,ee.T)(C=>({...C,extractedUrl:this.urlHandlingStrategy.extract(C.rawUrl)})),(0,ve.n)(C=>{let M=!1,L=!1;return Y(C).pipe((0,ve.n)(P=>{if(this.navigationId>C.id)return this.cancelNavigationTransition(C,"",ln.SupersededByNewNavigation),we.w;this.currentTransition=C,this.currentNavigation={id:P.id,initialUrl:P.rawUrl,extractedUrl:P.extractedUrl,trigger:P.source,extras:P.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null};const he=!c.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl();if(!he&&"reload"!==(P.extras.onSameUrlNavigation??c.onSameUrlNavigation)){const Ke="";return this.events.next(new dr(P.id,this.urlSerializer.serialize(P.rawUrl),Ke,En.IgnoredSameUrlNavigation)),P.resolve(null),we.w}if(this.urlHandlingStrategy.shouldProcessUrl(P.rawUrl))return Y(P).pipe((0,ve.n)(Ke=>{const Ut=this.transitions?.getValue();return this.events.next(new Tr(Ke.id,this.urlSerializer.serialize(Ke.extractedUrl),Ke.source,Ke.restoredState)),Ut!==this.transitions?.getValue()?we.w:Promise.resolve(Ke)}),function Ji(u,f,c,h,m,C){return(0,_t.Z)(M=>function mr(u,f,c,h,m,C,M="emptyOnly"){return new gi(u,f,c,h,m,M,C).recognize()}(u,f,c,h,M.extractedUrl,m,C).pipe((0,ee.T)(({state:L,tree:P})=>({...M,targetSnapshot:L,urlAfterRedirects:P}))))}(this.environmentInjector,this.configLoader,this.rootComponentType,c.config,this.urlSerializer,this.paramsInheritanceStrategy),(0,U.M)(Ke=>{C.targetSnapshot=Ke.targetSnapshot,C.urlAfterRedirects=Ke.urlAfterRedirects,this.currentNavigation={...this.currentNavigation,finalUrl:Ke.urlAfterRedirects};const Ut=new tt(Ke.id,this.urlSerializer.serialize(Ke.extractedUrl),this.urlSerializer.serialize(Ke.urlAfterRedirects),Ke.targetSnapshot);this.events.next(Ut)}));if(he&&this.urlHandlingStrategy.shouldProcessUrl(P.currentRawUrl)){const{id:Ke,extractedUrl:Ut,source:Ci,restoredState:Ho,extras:Bo}=P,Sa=new Tr(Ke,this.urlSerializer.serialize(Ut),Ci,Ho);this.events.next(Sa);const yr=Hn(this.rootComponentType).snapshot;return this.currentTransition=C={...P,targetSnapshot:yr,urlAfterRedirects:Ut,extras:{...Bo,skipLocationChange:!1,replaceUrl:!1}},this.currentNavigation.finalUrl=Ut,Y(C)}{const Ke="";return this.events.next(new dr(P.id,this.urlSerializer.serialize(P.extractedUrl),Ke,En.IgnoredByUrlHandlingStrategy)),P.resolve(null),we.w}}),(0,U.M)(P=>{const he=new ml(P.id,this.urlSerializer.serialize(P.extractedUrl),this.urlSerializer.serialize(P.urlAfterRedirects),P.targetSnapshot);this.events.next(he)}),(0,ee.T)(P=>(this.currentTransition=C={...P,guards:zi(P.targetSnapshot,P.currentSnapshot,this.rootContexts)},C)),function Lu(u,f){return(0,_t.Z)(c=>{const{targetSnapshot:h,currentSnapshot:m,guards:{canActivateChecks:C,canDeactivateChecks:M}}=c;return 0===M.length&&0===C.length?Y({...c,guardsResult:!0}):function ku(u,f,c,h){return(0,te.H)(u).pipe((0,_t.Z)(m=>function ha(u,f,c,h,m){const C=f&&f.routeConfig?f.routeConfig.canDeactivate:null;return C&&0!==C.length?Y(C.map(L=>{const P=tr(f)??m,he=$n(L,P);return kt(function Gi(u){return u&&xo(u.canDeactivate)}(he)?he.canDeactivate(u,f,c,h):(0,I.N4e)(P,()=>he(u,f,c,h))).pipe(j())})).pipe(Fr()):Y(!0)}(m.component,m.route,c,f,h)),j(m=>!0!==m,!0))}(M,h,m,u).pipe((0,_t.Z)(L=>L&&function aa(u){return"boolean"==typeof u}(L)?function ju(u,f,c,h){return(0,te.H)(f).pipe(V(m=>(0,ye.x)(function Vu(u,f){return null!==u&&f&&f(new Ze(u)),Y(!0)}(m.route.parent,h),function da(u,f){return null!==u&&f&&f(new ki(u)),Y(!0)}(m.route,h),function Ki(u,f,c){const h=f[f.length-1],C=f.slice(0,f.length-1).reverse().map(M=>function ia(u){const f=u.routeConfig?u.routeConfig.canActivateChild:null;return f&&0!==f.length?{node:u,guards:f}:null}(M)).filter(M=>null!==M).map(M=>Ee(()=>Y(M.guards.map(P=>{const he=tr(M.node)??c,je=$n(P,he);return kt(function ca(u){return u&&xo(u.canActivateChild)}(je)?je.canActivateChild(h,u):(0,I.N4e)(he,()=>je(h,u))).pipe(j())})).pipe(Fr())));return Y(C).pipe(Fr())}(u,m.path,c),function fa(u,f,c){const h=f.routeConfig?f.routeConfig.canActivate:null;if(!h||0===h.length)return Y(!0);const m=h.map(C=>Ee(()=>{const M=tr(f)??c,L=$n(C,M);return kt(function ua(u){return u&&xo(u.canActivate)}(L)?L.canActivate(f,u):(0,I.N4e)(M,()=>L(f,u))).pipe(j())}));return Y(m).pipe(Fr())}(u,m.route,c))),j(m=>!0!==m,!0))}(h,C,u,f):Y(L)),(0,ee.T)(L=>({...c,guardsResult:L})))})}(this.environmentInjector,P=>this.events.next(P)),(0,U.M)(P=>{if(C.guardsResult=P.guardsResult,eo(P.guardsResult))throw ai(0,P.guardsResult);const he=new In(P.id,this.urlSerializer.serialize(P.extractedUrl),this.urlSerializer.serialize(P.urlAfterRedirects),P.targetSnapshot,!!P.guardsResult);this.events.next(he)}),(0,Zt.p)(P=>!!P.guardsResult||(this.cancelNavigationTransition(P,"",ln.GuardRejected),!1)),es(P=>{if(P.guards.canActivateChecks.length)return Y(P).pipe((0,U.M)(he=>{const je=new Js(he.id,this.urlSerializer.serialize(he.extractedUrl),this.urlSerializer.serialize(he.urlAfterRedirects),he.targetSnapshot);this.events.next(je)}),(0,ve.n)(he=>{let je=!1;return Y(he).pipe(function Hu(u,f){return(0,_t.Z)(c=>{const{targetSnapshot:h,guards:{canActivateChecks:m}}=c;if(!m.length)return Y(c);const C=new Set(m.map(P=>P.route)),M=new Set;for(const P of C)if(!M.has(P))for(const he of Ca(P))M.add(he);let L=0;return(0,te.H)(M).pipe(V(P=>C.has(P)?function Ea(u,f,c,h){const m=u.routeConfig,C=u._resolve;return void 0!==m?.title&&!Hi(m)&&(C[Bt]=m.title),function ao(u,f,c,h){const m=sr(u);if(0===m.length)return Y({});const C={};return(0,te.H)(m).pipe((0,_t.Z)(M=>function Bu(u,f,c,h){const m=tr(f)??h,C=$n(u,m);return kt(C.resolve?C.resolve(f,c):(0,I.N4e)(m,()=>C(f,c)))}(u[M],f,c,h).pipe(j(),(0,U.M)(L=>{C[M]=L}))),be(1),function Ht(u){return(0,ee.T)(()=>u)}(C),$(M=>pt(M)?we.w:Be(M)))}(C,u,f,h).pipe((0,ee.T)(M=>(u._resolvedData=M,u.data=Ar(u,u.parent,c).resolve,null)))}(P,h,u,f):(P.data=Ar(P,P.parent,u).resolve,Y(void 0))),(0,U.M)(()=>L++),be(1),(0,_t.Z)(P=>L===M.size?Y(c):we.w))})}(this.paramsInheritanceStrategy,this.environmentInjector),(0,U.M)({next:()=>je=!0,complete:()=>{je||this.cancelNavigationTransition(he,"",ln.NoDataFromResolver)}}))}),(0,U.M)(he=>{const je=new Ou(he.id,this.urlSerializer.serialize(he.extractedUrl),this.urlSerializer.serialize(he.urlAfterRedirects),he.targetSnapshot);this.events.next(je)}))}),es(P=>{const he=je=>{const Ke=[];je.routeConfig?.loadComponent&&!je.routeConfig._loadedComponent&&Ke.push(this.configLoader.loadComponent(je.routeConfig).pipe((0,U.M)(Ut=>{je.component=Ut}),(0,ee.T)(()=>{})));for(const Ut of je.children)Ke.push(...he(Ut));return Ke};return(0,q.z)(he(P.targetSnapshot.root)).pipe(Yn(null),(0,Fe.s)(1))}),es(()=>this.afterPreactivation()),(0,ve.n)(()=>{const{currentSnapshot:P,targetSnapshot:he}=C,je=this.createViewTransition?.(this.environmentInjector,P.root,he.root);return je?(0,te.H)(je).pipe((0,ee.T)(()=>C)):Y(C)}),(0,ee.T)(P=>{const he=function xu(u,f,c){const h=Rn(u,f._root,c?c._root:void 0);return new oi(h,f)}(c.routeReuseStrategy,P.targetSnapshot,P.currentRouterState);return this.currentTransition=C={...P,targetRouterState:he},this.currentNavigation.targetRouterState=he,C}),(0,U.M)(()=>{this.events.next(new ji)}),((u,f,c,h)=>(0,ee.T)(m=>(new gr(f,m.targetRouterState,m.currentRouterState,c,h).activate(u),m)))(this.rootContexts,c.routeReuseStrategy,P=>this.events.next(P),this.inputBindingEnabled),(0,Fe.s)(1),(0,U.M)({next:P=>{M=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new Cn(P.id,this.urlSerializer.serialize(P.extractedUrl),this.urlSerializer.serialize(P.urlAfterRedirects))),this.titleStrategy?.updateTitle(P.targetRouterState.snapshot),P.resolve(!0)},complete:()=>{M=!0}}),function Lt(u){return(0,ze.N)((f,c)=>{(0,le.Tg)(u).subscribe((0,ce._)(c,()=>c.complete(),Dt.l)),!c.closed&&f.subscribe(c)})}(this.transitionAbortSubject.pipe((0,U.M)(P=>{throw P}))),Ne(()=>{!M&&!L&&this.cancelNavigationTransition(C,"",ln.SupersededByNewNavigation),this.currentTransition?.id===C.id&&(this.currentNavigation=null,this.currentTransition=null)}),$(P=>{if(L=!0,ui(P))this.events.next(new wn(C.id,this.urlSerializer.serialize(C.extractedUrl),P.message,P.cancellationCode)),function hr(u){return ui(u)&&eo(u.url)}(P)?this.events.next(new Vi(P.url)):C.resolve(!1);else{this.events.next(new Re(C.id,this.urlSerializer.serialize(C.extractedUrl),P,C.targetSnapshot??void 0));try{C.resolve(c.errorHandler(P))}catch(he){this.options.resolveNavigationPromiseOnError?C.resolve(!1):C.reject(he)}}return we.w}))}))}cancelNavigationTransition(c,h,m){const C=new wn(c.id,this.urlSerializer.serialize(c.extractedUrl),h,m);this.events.next(C),c.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){return this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))).toString()!==this.currentTransition?.extractedUrl.toString()&&!this.currentTransition?.extras.skipLocationChange}static#e=this.\u0275fac=function(h){return new(h||u)};static#t=this.\u0275prov=I.jDH({token:u,factory:u.\u0275fac,providedIn:"root"})}return u})();function gt(u){return u!==_o}let qe=(()=>{class u{static#e=this.\u0275fac=function(h){return new(h||u)};static#t=this.\u0275prov=I.jDH({token:u,factory:()=>(0,I.WQX)(at),providedIn:"root"})}return u})();class bt{shouldDetach(f){return!1}store(f,c){}shouldAttach(f){return!1}retrieve(f){return null}shouldReuseRoute(f,c){return f.routeConfig===c.routeConfig}}let at=(()=>{class u extends bt{static#e=this.\u0275fac=(()=>{let c;return function(m){return(c||(c=I.xGo(u)))(m||u)}})();static#t=this.\u0275prov=I.jDH({token:u,factory:u.\u0275fac,providedIn:"root"})}return u})(),Tt=(()=>{class u{static#e=this.\u0275fac=function(h){return new(h||u)};static#t=this.\u0275prov=I.jDH({token:u,factory:()=>(0,I.WQX)(ot),providedIn:"root"})}return u})(),ot=(()=>{class u extends Tt{constructor(){super(...arguments),this.location=(0,I.WQX)(fe.aZ),this.urlSerializer=(0,I.WQX)(Ir),this.options=(0,I.WQX)(Sn,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=(0,I.WQX)(v),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new Dn,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=Hn(null),this.stateMemento=this.createStateMemento()}getCurrentUrlTree(){return this.currentUrlTree}getRawUrlTree(){return this.rawUrlTree}restoredState(){return this.location.getState()}get browserPageId(){return"computed"!==this.canceledNavigationResolution?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}getRouterState(){return this.routerState}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(c){return this.location.subscribe(h=>{"popstate"===h.type&&c(h.url,h.state)})}handleRouterEvent(c,h){if(c instanceof Tr)this.stateMemento=this.createStateMemento();else if(c instanceof dr)this.rawUrlTree=h.initialUrl;else if(c instanceof tt){if("eager"===this.urlUpdateStrategy&&!h.extras.skipLocationChange){const m=this.urlHandlingStrategy.merge(h.finalUrl,h.initialUrl);this.setBrowserUrl(m,h)}}else c instanceof ji?(this.currentUrlTree=h.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(h.finalUrl,h.initialUrl),this.routerState=h.targetRouterState,"deferred"===this.urlUpdateStrategy&&(h.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,h))):c instanceof wn&&(c.code===ln.GuardRejected||c.code===ln.NoDataFromResolver)?this.restoreHistory(h):c instanceof Re?this.restoreHistory(h,!0):c instanceof Cn&&(this.lastSuccessfulId=c.id,this.currentPageId=this.browserPageId)}setBrowserUrl(c,h){const m=this.urlSerializer.serialize(c);if(this.location.isCurrentPathEqualTo(m)||h.extras.replaceUrl){const M={...h.extras.state,...this.generateNgRouterState(h.id,this.browserPageId)};this.location.replaceState(m,"",M)}else{const C={...h.extras.state,...this.generateNgRouterState(h.id,this.browserPageId+1)};this.location.go(m,"",C)}}restoreHistory(c,h=!1){if("computed"===this.canceledNavigationResolution){const C=this.currentPageId-this.browserPageId;0!==C?this.location.historyGo(C):this.currentUrlTree===c.finalUrl&&0===C&&(this.resetState(c),this.resetUrlToCurrentUrlTree())}else"replace"===this.canceledNavigationResolution&&(h&&this.resetState(c),this.resetUrlToCurrentUrlTree())}resetState(c){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,c.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(c,h){return"computed"===this.canceledNavigationResolution?{navigationId:c,\u0275routerPageId:h}:{navigationId:c}}static#e=this.\u0275fac=(()=>{let c;return function(m){return(c||(c=I.xGo(u)))(m||u)}})();static#t=this.\u0275prov=I.jDH({token:u,factory:u.\u0275fac,providedIn:"root"})}return u})();var J=function(u){return u[u.COMPLETE=0]="COMPLETE",u[u.FAILED=1]="FAILED",u[u.REDIRECTING=2]="REDIRECTING",u}(J||{});function De(u,f){u.events.pipe((0,Zt.p)(c=>c instanceof Cn||c instanceof wn||c instanceof Re||c instanceof dr),(0,ee.T)(c=>c instanceof Cn||c instanceof dr?J.COMPLETE:c instanceof wn&&(c.code===ln.Redirect||c.code===ln.SupersededByNewNavigation)?J.REDIRECTING:J.FAILED),(0,Zt.p)(c=>c!==J.REDIRECTING),(0,Fe.s)(1)).subscribe(()=>{f()})}function ft(u){throw u}const zt={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},It={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};let ht=(()=>{class u{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}constructor(){this.disposed=!1,this.isNgZoneEnabled=!1,this.console=(0,I.WQX)(I.H3F),this.stateManager=(0,I.WQX)(Tt),this.options=(0,I.WQX)(Sn,{optional:!0})||{},this.pendingTasks=(0,I.WQX)(I.TgB),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=(0,I.WQX)(st),this.urlSerializer=(0,I.WQX)(Ir),this.location=(0,I.WQX)(fe.aZ),this.urlHandlingStrategy=(0,I.WQX)(v),this._events=new Ae.B,this.errorHandler=this.options.errorHandler||ft,this.navigated=!1,this.routeReuseStrategy=(0,I.WQX)(qe),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=(0,I.WQX)(kr,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!(0,I.WQX)(No,{optional:!0}),this.eventsSubscription=new Ue.yU,this.isNgZoneEnabled=(0,I.WQX)(I.SKi)instanceof I.SKi&&I.SKi.isInAngularZone(),this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:c=>{this.console.warn(c)}}),this.subscribeToNavigationEvents()}subscribeToNavigationEvents(){const c=this.navigationTransitions.events.subscribe(h=>{try{const m=this.navigationTransitions.currentTransition,C=this.navigationTransitions.currentNavigation;if(null!==m&&null!==C)if(this.stateManager.handleRouterEvent(h,C),h instanceof wn&&h.code!==ln.Redirect&&h.code!==ln.SupersededByNewNavigation)this.navigated=!0;else if(h instanceof Cn)this.navigated=!0;else if(h instanceof Vi){const M=this.urlHandlingStrategy.merge(h.url,m.currentRawUrl),L={info:m.extras.info,skipLocationChange:m.extras.skipLocationChange,replaceUrl:"eager"===this.urlUpdateStrategy||gt(m.source)};this.scheduleNavigation(M,_o,null,L,{resolve:m.resolve,reject:m.reject,promise:m.promise})}(function Ct(u){return!(u instanceof ji||u instanceof Vi)})(h)&&this._events.next(h)}catch(m){this.navigationTransitions.transitionAbortSubject.next(m)}});this.eventsSubscription.add(c)}resetRootComponentType(c){this.routerState.root.component=c,this.navigationTransitions.rootComponentType=c}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),_o,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((c,h)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(c,"popstate",h)},0)})}navigateToSyncWithBrowser(c,h,m){const C={replaceUrl:!0},M=m?.navigationId?m:null;if(m){const P={...m};delete P.navigationId,delete P.\u0275routerPageId,0!==Object.keys(P).length&&(C.state=P)}const L=this.parseUrl(c);this.scheduleNavigation(L,h,M,C)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(c){this.config=c.map(er),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(c,h={}){const{relativeTo:m,queryParams:C,fragment:M,queryParamsHandling:L,preserveFragment:P}=h,he=P?this.currentUrlTree.fragment:M;let Ke,je=null;switch(L){case"merge":je={...this.currentUrlTree.queryParams,...C};break;case"preserve":je=this.currentUrlTree.queryParams;break;default:je=C||null}null!==je&&(je=this.removeEmptyProps(je));try{Ke=to(m?m.snapshot:this.routerState.snapshot.root)}catch{("string"!=typeof c[0]||!c[0].startsWith("/"))&&(c=[]),Ke=this.currentUrlTree.root}return yo(Ke,c,je,he??null)}navigateByUrl(c,h={skipLocationChange:!1}){const m=eo(c)?c:this.parseUrl(c),C=this.urlHandlingStrategy.merge(m,this.rawUrlTree);return this.scheduleNavigation(C,_o,null,h)}navigate(c,h={skipLocationChange:!1}){return function nr(u){for(let f=0;f(null!=C&&(h[m]=C),h),{})}scheduleNavigation(c,h,m,C,M){if(this.disposed)return Promise.resolve(!1);let L,P,he;M?(L=M.resolve,P=M.reject,he=M.promise):he=new Promise((Ke,Ut)=>{L=Ke,P=Ut});const je=this.pendingTasks.add();return De(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(je))}),this.navigationTransitions.handleNavigationRequest({source:h,restoredState:m,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:c,extras:C,resolve:L,reject:P,promise:he,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),he.catch(Ke=>Promise.reject(Ke))}static#e=this.\u0275fac=function(h){return new(h||u)};static#t=this.\u0275prov=I.jDH({token:u,factory:u.\u0275fac,providedIn:"root"})}return u})(),xt=(()=>{class u{constructor(c,h,m,C,M,L){this.router=c,this.route=h,this.tabIndexAttribute=m,this.renderer=C,this.el=M,this.locationStrategy=L,this.href=null,this.commands=null,this.onChanges=new Ae.B,this.preserveFragment=!1,this.skipLocationChange=!1,this.replaceUrl=!1;const P=M.nativeElement.tagName?.toLowerCase();this.isAnchorElement="a"===P||"area"===P,this.isAnchorElement?this.subscription=c.events.subscribe(he=>{he instanceof Cn&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}setTabIndexIfNotOnNativeEl(c){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",c)}ngOnChanges(c){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(c){null!=c?(this.commands=Array.isArray(c)?c:[c],this.setTabIndexIfNotOnNativeEl("0")):(this.commands=null,this.setTabIndexIfNotOnNativeEl(null))}onClick(c,h,m,C,M){const L=this.urlTree;return!!(null===L||this.isAnchorElement&&(0!==c||h||m||C||M||"string"==typeof this.target&&"_self"!=this.target))||(this.router.navigateByUrl(L,{skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info}),!this.isAnchorElement)}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){const c=this.urlTree;this.href=null!==c&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(c)):null;const h=null===this.href?null:(0,I.n$t)(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",h)}applyAttributeValue(c,h){const m=this.renderer,C=this.el.nativeElement;null!==h?m.setAttribute(C,c,h):m.removeAttribute(C,c)}get urlTree(){return null===this.commands?null:this.router.createUrlTree(this.commands,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}static#e=this.\u0275fac=function(h){return new(h||u)(I.rXU(ht),I.rXU(Nt),I.kS0("tabindex"),I.rXU(I.sFG),I.rXU(I.aKT),I.rXU(fe.hb))};static#t=this.\u0275dir=I.FsC({type:u,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function(h,m){1&h&&I.bIt("click",function(M){return m.onClick(M.button,M.ctrlKey,M.shiftKey,M.altKey,M.metaKey)}),2&h&&I.BMQ("target",m.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[I.Mj6.HasDecoratorInputTransform,"preserveFragment","preserveFragment",I.L39],skipLocationChange:[I.Mj6.HasDecoratorInputTransform,"skipLocationChange","skipLocationChange",I.L39],replaceUrl:[I.Mj6.HasDecoratorInputTransform,"replaceUrl","replaceUrl",I.L39],routerLink:"routerLink"},standalone:!0,features:[I.GFd,I.OA$]})}return u})();class Fo{}let Pt=(()=>{class u{constructor(c,h,m,C,M){this.router=c,this.injector=m,this.preloadingStrategy=C,this.loader=M}setUpPreloading(){this.subscription=this.router.events.pipe((0,Zt.p)(c=>c instanceof Cn),V(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(c,h){const m=[];for(const C of h){C.providers&&!C._injector&&(C._injector=(0,I.Ol2)(C.providers,c,`Route: ${C.path}`));const M=C._injector??c,L=C._loadedInjector??M;(C.loadChildren&&!C._loadedRoutes&&void 0===C.canLoad||C.loadComponent&&!C._loadedComponent)&&m.push(this.preloadConfig(M,C)),(C.children||C._loadedRoutes)&&m.push(this.processRoutes(L,C.children??C._loadedRoutes))}return(0,te.H)(m).pipe((0,Yt.U)())}preloadConfig(c,h){return this.preloadingStrategy.preload(h,()=>{let m;m=h.loadChildren&&void 0===h.canLoad?this.loader.loadChildren(c,h):Y(null);const C=m.pipe((0,_t.Z)(M=>null===M?Y(void 0):(h._loadedRoutes=M.routes,h._loadedInjector=M.injector,this.processRoutes(M.injector??c,M.routes))));if(h.loadComponent&&!h._loadedComponent){const M=this.loader.loadComponent(h);return(0,te.H)([C,M]).pipe((0,Yt.U)())}return C})}static#e=this.\u0275fac=function(h){return new(h||u)(I.KVO(ht),I.KVO(I.Ql9),I.KVO(I.uvJ),I.KVO(Fo),I.KVO(uo))};static#t=this.\u0275prov=I.jDH({token:u,factory:u.\u0275fac,providedIn:"root"})}return u})();const co=new I.nKC("");let lo=(()=>{class u{constructor(c,h,m,C,M={}){this.urlSerializer=c,this.transitions=h,this.viewportScroller=m,this.zone=C,this.options=M,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},this.environmentInjector=(0,I.WQX)(I.uvJ),M.scrollPositionRestoration||="disabled",M.anchorScrolling||="disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(c=>{c instanceof Tr?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=c.navigationTrigger,this.restoredId=c.restoredState?c.restoredState.navigationId:0):c instanceof Cn?(this.lastId=c.id,this.scheduleScrollEvent(c,this.urlSerializer.parse(c.urlAfterRedirects).fragment)):c instanceof dr&&c.code===En.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(c,this.urlSerializer.parse(c.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(c=>{c instanceof ti&&(c.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(c.position):c.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(c.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(c,h){var m=this;this.zone.runOutsideAngular((0,E.A)(function*(){yield new Promise(C=>{setTimeout(()=>{C()}),(0,I.mal)(()=>{C()},{injector:m.environmentInjector})}),m.zone.run(()=>{m.transitions.events.next(new ti(c,"popstate"===m.lastSource?m.store[m.restoredId]:null,h))})}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static#e=this.\u0275fac=function(h){I.QTQ()};static#t=this.\u0275prov=I.jDH({token:u,factory:u.\u0275fac})}return u})();function vr(u,...f){return(0,I.EmA)([{provide:kr,multi:!0,useValue:u},[],{provide:Nt,useFactory:Lo,deps:[ht]},{provide:I.iLQ,multi:!0,useFactory:ns},f.map(c=>c.\u0275providers)])}function Lo(u){return u.routerState.root}function Wn(u,f){return{\u0275kind:u,\u0275providers:f}}function ns(){const u=(0,I.WQX)(I.zZn);return f=>{const c=u.get(I.o8S);if(f!==c.components[0])return;const h=u.get(ht),m=u.get(jo);1===u.get(Pn)&&h.initialNavigation(),u.get(os,null,I.$GK.Optional)?.setUpPreloading(),u.get(co,null,I.$GK.Optional)?.init(),h.resetRootComponentType(c.componentTypes[0]),m.closed||(m.next(),m.complete(),m.unsubscribe())}}const jo=new I.nKC("",{factory:()=>new Ae.B}),Pn=new I.nKC("",{providedIn:"root",factory:()=>1}),os=new I.nKC("");function cn(u){return Wn(0,[{provide:os,useExisting:Pt},{provide:Fo,useExisting:u}])}function Gn(u){return Wn(9,[{provide:k,useValue:me},{provide:K,useValue:{skipNextTransition:!!u?.skipInitialTransition,...u}}])}const Wu=new I.nKC("ROUTER_FORROOT_GUARD"),Dl=[fe.aZ,{provide:Ir,useClass:Jr},ht,Jn,{provide:Nt,useFactory:Lo,deps:[ht]},uo,[]];let _a=(()=>{class u{constructor(c){}static forRoot(c,h){return{ngModule:u,providers:[Dl,[],{provide:kr,multi:!0,useValue:c},{provide:Wu,useFactory:gh,deps:[[ht,new I.Xx1,new I.kdw]]},{provide:Sn,useValue:h||{}},h?.useHash?{provide:fe.hb,useClass:fe.fw}:{provide:fe.hb,useClass:fe.Sm},{provide:co,useFactory:()=>{const u=(0,I.WQX)(fe.Xr),f=(0,I.WQX)(I.SKi),c=(0,I.WQX)(Sn),h=(0,I.WQX)(st),m=(0,I.WQX)(Ir);return c.scrollOffset&&u.setOffset(c.scrollOffset),new lo(m,h,u,f,c)}},h?.preloadingStrategy?cn(h.preloadingStrategy).\u0275providers:[],h?.initialNavigation?mh(h):[],h?.bindToComponentInputs?Wn(8,[Ro,{provide:No,useExisting:Ro}]).\u0275providers:[],h?.enableViewTransitions?Gn().\u0275providers:[],[{provide:El,useFactory:ns},{provide:I.iLQ,multi:!0,useExisting:El}]]}}static forChild(c){return{ngModule:u,providers:[{provide:kr,multi:!0,useValue:c}]}}static#e=this.\u0275fac=function(h){return new(h||u)(I.KVO(Wu,8))};static#t=this.\u0275mod=I.$C({type:u});static#n=this.\u0275inj=I.G2t({})}return u})();function gh(u){return"guarded"}function mh(u){return["disabled"===u.initialNavigation?Wn(3,[{provide:I.hnV,multi:!0,useFactory:()=>{const f=(0,I.WQX)(ht);return()=>{f.setUpLocationChangeListener()}}},{provide:Pn,useValue:2}]).\u0275providers:[],"enabledBlocking"===u.initialNavigation?Wn(2,[{provide:Pn,useValue:0},{provide:I.hnV,multi:!0,deps:[I.zZn],useFactory:f=>{const c=f.get(fe.hj,Promise.resolve());return()=>c.then(()=>new Promise(h=>{const m=f.get(ht),C=f.get(jo);De(m,()=>{h(!0)}),f.get(st).afterPreactivation=()=>(h(!0),C.closed?Y(void 0):C),m.initialNavigation()}))}}]).\u0275providers:[]]}const El=new I.nKC("")},467:(Te,oe,S)=>{function E(W,N,G,te,Q,Y,ne){try{var q=W[Y](ne),H=q.value}catch(ie){return void G(ie)}q.done?N(H):Promise.resolve(H).then(te,Q)}function I(W){return function(){var N=this,G=arguments;return new Promise(function(te,Q){var Y=W.apply(N,G);function ne(H){E(Y,te,Q,ne,q,"next",H)}function q(H){E(Y,te,Q,ne,q,"throw",H)}ne(void 0)})}}S.d(oe,{A:()=>I})},1635:(Te,oe,S)=>{function ie(j,V,U,$){return new(U||(U=Promise))(function(re,be){function it(Dt){try{Ne($.next(Dt))}catch(Lt){be(Lt)}}function Ht(Dt){try{Ne($.throw(Dt))}catch(Lt){be(Lt)}}function Ne(Dt){Dt.done?re(Dt.value):function ue(re){return re instanceof U?re:new U(function(be){be(re)})}(Dt.value).then(it,Ht)}Ne(($=$.apply(j,V||[])).next())})}function ce(j){return this instanceof ce?(this.v=j,this):new ce(j)}function ae(j,V,U){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var ue,$=U.apply(j,V||[]),re=[];return ue={},it("next"),it("throw"),it("return",function be(ct){return function(Ie){return Promise.resolve(Ie).then(ct,Lt)}}),ue[Symbol.asyncIterator]=function(){return this},ue;function it(ct,Ie){$[ct]&&(ue[ct]=function(Bt){return new Promise(function(Mt,Ft){re.push([ct,Bt,Mt,Ft])>1||Ht(ct,Bt)})},Ie&&(ue[ct]=Ie(ue[ct])))}function Ht(ct,Ie){try{!function Ne(ct){ct.value instanceof ce?Promise.resolve(ct.value.v).then(Dt,Lt):Yt(re[0][2],ct)}($[ct](Ie))}catch(Bt){Yt(re[0][3],Bt)}}function Dt(ct){Ht("next",ct)}function Lt(ct){Ht("throw",ct)}function Yt(ct,Ie){ct(Ie),re.shift(),re.length&&Ht(re[0][0],re[0][1])}}function Ae(j){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var U,V=j[Symbol.asyncIterator];return V?V.call(j):(j=function Je(j){var V="function"==typeof Symbol&&Symbol.iterator,U=V&&j[V],$=0;if(U)return U.call(j);if(j&&"number"==typeof j.length)return{next:function(){return j&&$>=j.length&&(j=void 0),{value:j&&j[$++],done:!j}}};throw new TypeError(V?"Object is not iterable.":"Symbol.iterator is not defined.")}(j),U={},$("next"),$("throw"),$("return"),U[Symbol.asyncIterator]=function(){return this},U);function $(re){U[re]=j[re]&&function(be){return new Promise(function(it,Ht){!function ue(re,be,it,Ht){Promise.resolve(Ht).then(function(Ne){re({value:Ne,done:it})},be)}(it,Ht,(be=j[re](be)).done,be.value)})}}}S.d(oe,{AQ:()=>ae,N3:()=>ce,sH:()=>ie,xN:()=>Ae}),"function"==typeof SuppressedError&&SuppressedError}},Te=>{Te(Te.s=1678)}]); \ No newline at end of file diff --git a/docs/bootstrap-icons.70a9dee9e5ab72aa.woff b/docs/media/bootstrap-icons-OCU552PF.woff similarity index 100% rename from docs/bootstrap-icons.70a9dee9e5ab72aa.woff rename to docs/media/bootstrap-icons-OCU552PF.woff diff --git a/docs/bootstrap-icons.bfa90bda92a84a6a.woff2 b/docs/media/bootstrap-icons-X6UQXWUS.woff2 similarity index 100% rename from docs/bootstrap-icons.bfa90bda92a84a6a.woff2 rename to docs/media/bootstrap-icons-X6UQXWUS.woff2 diff --git a/docs/dssp-helix.74d0a47e4d7ed27e.svg b/docs/media/dssp-helix-OTIKI7SN.svg similarity index 100% rename from docs/dssp-helix.74d0a47e4d7ed27e.svg rename to docs/media/dssp-helix-OTIKI7SN.svg diff --git a/docs/dssp-strand-head.85a295955fb4c220.svg b/docs/media/dssp-strand-head-QWRJLFK7.svg similarity index 100% rename from docs/dssp-strand-head.85a295955fb4c220.svg rename to docs/media/dssp-strand-head-QWRJLFK7.svg diff --git a/docs/dssp-strand-tail.783864b28823e2c7.svg b/docs/media/dssp-strand-tail-PA4GJMUI.svg similarity index 100% rename from docs/dssp-strand-tail.783864b28823e2c7.svg rename to docs/media/dssp-strand-tail-PA4GJMUI.svg diff --git a/docs/polyfills-6EAL64PA.js b/docs/polyfills-6EAL64PA.js new file mode 100644 index 0000000..f67a2da --- /dev/null +++ b/docs/polyfills-6EAL64PA.js @@ -0,0 +1,2 @@ +var ie=globalThis;function Q(e){return(ie.__Zone_symbol_prefix||"__zone_symbol__")+e}function ft(){let e=ie.performance;function n(j){e&&e.mark&&e.mark(j)}function a(j,r){e&&e.measure&&e.measure(j,r)}n("Zone");let $=class ${static assertZonePatched(){if(ie.Promise!==D.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let r=$.current;for(;r.parent;)r=r.parent;return r}static get current(){return k.zone}static get currentTask(){return S}static __load_patch(r,i,s=!1){if(D.hasOwnProperty(r)){let b=ie[Q("forceDuplicateZoneCheck")]===!0;if(!s&&b)throw Error("Already loaded patch: "+r)}else if(!ie["__Zone_disable_"+r]){let b="Zone:"+r;n(b),D[r]=i(ie,$,w),a(b,b)}}get parent(){return this._parent}get name(){return this._name}constructor(r,i){this._parent=r,this._name=i?i.name||"unnamed":"",this._properties=i&&i.properties||{},this._zoneDelegate=new f(this,this._parent&&this._parent._zoneDelegate,i)}get(r){let i=this.getZoneWith(r);if(i)return i._properties[r]}getZoneWith(r){let i=this;for(;i;){if(i._properties.hasOwnProperty(r))return i;i=i._parent}return null}fork(r){if(!r)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,r)}wrap(r,i){if(typeof r!="function")throw new Error("Expecting function got: "+r);let s=this._zoneDelegate.intercept(this,r,i),b=this;return function(){return b.runGuarded(s,this,arguments,i)}}run(r,i,s,b){k={parent:k,zone:this};try{return this._zoneDelegate.invoke(this,r,i,s,b)}finally{k=k.parent}}runGuarded(r,i=null,s,b){k={parent:k,zone:this};try{try{return this._zoneDelegate.invoke(this,r,i,s,b)}catch(x){if(this._zoneDelegate.handleError(this,x))throw x}}finally{k=k.parent}}runTask(r,i,s){if(r.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(r.zone||te).name+"; Execution: "+this.name+")");if(r.state===X&&(r.type===U||r.type===g))return;let b=r.state!=F;b&&r._transitionTo(F,d),r.runCount++;let x=S;S=r,k={parent:k,zone:this};try{r.type==g&&r.data&&!r.data.isPeriodic&&(r.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,r,i,s)}catch(M){if(this._zoneDelegate.handleError(this,M))throw M}}finally{r.state!==X&&r.state!==Y&&(r.type==U||r.data&&r.data.isPeriodic?b&&r._transitionTo(d,F):(r.runCount=0,this._updateTaskCount(r,-1),b&&r._transitionTo(X,F,X))),k=k.parent,S=x}}scheduleTask(r){if(r.zone&&r.zone!==this){let s=this;for(;s;){if(s===r.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${r.zone.name}`);s=s.parent}}r._transitionTo(v,X);let i=[];r._zoneDelegates=i,r._zone=this;try{r=this._zoneDelegate.scheduleTask(this,r)}catch(s){throw r._transitionTo(Y,v,X),this._zoneDelegate.handleError(this,s),s}return r._zoneDelegates===i&&this._updateTaskCount(r,1),r.state==v&&r._transitionTo(d,v),r}scheduleMicroTask(r,i,s,b){return this.scheduleTask(new _(B,r,i,s,b,void 0))}scheduleMacroTask(r,i,s,b,x){return this.scheduleTask(new _(g,r,i,s,b,x))}scheduleEventTask(r,i,s,b,x){return this.scheduleTask(new _(U,r,i,s,b,x))}cancelTask(r){if(r.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(r.zone||te).name+"; Execution: "+this.name+")");if(!(r.state!==d&&r.state!==F)){r._transitionTo(q,d,F);try{this._zoneDelegate.cancelTask(this,r)}catch(i){throw r._transitionTo(Y,q),this._zoneDelegate.handleError(this,i),i}return this._updateTaskCount(r,-1),r._transitionTo(X,q),r.runCount=0,r}}_updateTaskCount(r,i){let s=r._zoneDelegates;i==-1&&(r._zoneDelegates=null);for(let b=0;bj.hasTask(i,s),onScheduleTask:(j,r,i,s)=>j.scheduleTask(i,s),onInvokeTask:(j,r,i,s,b,x)=>j.invokeTask(i,s,b,x),onCancelTask:(j,r,i,s)=>j.cancelTask(i,s)};class f{get zone(){return this._zone}constructor(r,i,s){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this._zone=r,this._parentDelegate=i,this._forkZS=s&&(s&&s.onFork?s:i._forkZS),this._forkDlgt=s&&(s.onFork?i:i._forkDlgt),this._forkCurrZone=s&&(s.onFork?this._zone:i._forkCurrZone),this._interceptZS=s&&(s.onIntercept?s:i._interceptZS),this._interceptDlgt=s&&(s.onIntercept?i:i._interceptDlgt),this._interceptCurrZone=s&&(s.onIntercept?this._zone:i._interceptCurrZone),this._invokeZS=s&&(s.onInvoke?s:i._invokeZS),this._invokeDlgt=s&&(s.onInvoke?i:i._invokeDlgt),this._invokeCurrZone=s&&(s.onInvoke?this._zone:i._invokeCurrZone),this._handleErrorZS=s&&(s.onHandleError?s:i._handleErrorZS),this._handleErrorDlgt=s&&(s.onHandleError?i:i._handleErrorDlgt),this._handleErrorCurrZone=s&&(s.onHandleError?this._zone:i._handleErrorCurrZone),this._scheduleTaskZS=s&&(s.onScheduleTask?s:i._scheduleTaskZS),this._scheduleTaskDlgt=s&&(s.onScheduleTask?i:i._scheduleTaskDlgt),this._scheduleTaskCurrZone=s&&(s.onScheduleTask?this._zone:i._scheduleTaskCurrZone),this._invokeTaskZS=s&&(s.onInvokeTask?s:i._invokeTaskZS),this._invokeTaskDlgt=s&&(s.onInvokeTask?i:i._invokeTaskDlgt),this._invokeTaskCurrZone=s&&(s.onInvokeTask?this._zone:i._invokeTaskCurrZone),this._cancelTaskZS=s&&(s.onCancelTask?s:i._cancelTaskZS),this._cancelTaskDlgt=s&&(s.onCancelTask?i:i._cancelTaskDlgt),this._cancelTaskCurrZone=s&&(s.onCancelTask?this._zone:i._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let b=s&&s.onHasTask,x=i&&i._hasTaskZS;(b||x)&&(this._hasTaskZS=b?s:c,this._hasTaskDlgt=i,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,s.onScheduleTask||(this._scheduleTaskZS=c,this._scheduleTaskDlgt=i,this._scheduleTaskCurrZone=this._zone),s.onInvokeTask||(this._invokeTaskZS=c,this._invokeTaskDlgt=i,this._invokeTaskCurrZone=this._zone),s.onCancelTask||(this._cancelTaskZS=c,this._cancelTaskDlgt=i,this._cancelTaskCurrZone=this._zone))}fork(r,i){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,r,i):new t(r,i)}intercept(r,i,s){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,r,i,s):i}invoke(r,i,s,b,x){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,r,i,s,b,x):i.apply(s,b)}handleError(r,i){return this._handleErrorZS?this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,r,i):!0}scheduleTask(r,i){let s=i;if(this._scheduleTaskZS)this._hasTaskZS&&s._zoneDelegates.push(this._hasTaskDlgtOwner),s=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,r,i),s||(s=i);else if(i.scheduleFn)i.scheduleFn(i);else if(i.type==B)W(i);else throw new Error("Task is missing scheduleFn.");return s}invokeTask(r,i,s,b){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,r,i,s,b):i.callback.apply(s,b)}cancelTask(r,i){let s;if(this._cancelTaskZS)s=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,r,i);else{if(!i.cancelFn)throw Error("Task is not cancelable");s=i.cancelFn(i)}return s}hasTask(r,i){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,r,i)}catch(s){this.handleError(r,s)}}_updateTaskCount(r,i){let s=this._taskCounts,b=s[r],x=s[r]=b+i;if(x<0)throw new Error("More tasks executed then were scheduled.");if(b==0||x==0){let M={microTask:s.microTask>0,macroTask:s.macroTask>0,eventTask:s.eventTask>0,change:r};this.hasTask(this._zone,M)}}}class _{constructor(r,i,s,b,x,M){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=r,this.source=i,this.data=b,this.scheduleFn=x,this.cancelFn=M,!s)throw new Error("callback is not defined");this.callback=s;let de=this;r===U&&b&&b.useG?this.invoke=_.invokeTask:this.invoke=function(){return _.invokeTask.call(ie,de,this,arguments)}}static invokeTask(r,i,s){r||(r=this),K++;try{return r.runCount++,r.zone.runTask(r,i,s)}finally{K==1&&A(),K--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(X,v)}_transitionTo(r,i,s){if(this._state===i||this._state===s)this._state=r,r==X&&(this._zoneDelegates=null);else throw new Error(`${this.type} '${this.source}': can not transition to '${r}', expecting state '${i}'${s?" or '"+s+"'":""}, was '${this._state}'.`)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}let E=Q("setTimeout"),m=Q("Promise"),C=Q("then"),T=[],I=!1,P;function Z(j){if(P||ie[m]&&(P=ie[m].resolve(0)),P){let r=P[C];r||(r=P.then),r.call(P,j)}else ie[E](j,0)}function W(j){K===0&&T.length===0&&Z(A),j&&T.push(j)}function A(){if(!I){for(I=!0;T.length;){let j=T;T=[];for(let r=0;rk,onUnhandledError:z,microtaskDrainDone:z,scheduleMicroTask:W,showUncaughtError:()=>!t[Q("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:z,patchMethod:()=>z,bindArguments:()=>[],patchThen:()=>z,patchMacroTask:()=>z,patchEventPrototype:()=>z,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>z,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>z,wrapWithCurrentZone:()=>z,filterProperties:()=>[],attachOriginToPatched:()=>z,_redefineProperty:()=>z,patchCallbacks:()=>z,nativeScheduleMicroTask:Z},k={parent:null,zone:new t(null,null)},S=null,K=0;function z(){}return a("Zone","Zone"),t}function ht(){let e=globalThis,n=e[Q("forceDuplicateZoneCheck")]===!0;if(e.Zone&&(n||typeof e.Zone.__symbol__!="function"))throw new Error("Zone already loaded.");return e.Zone??=ft(),e.Zone}var ve=Object.getOwnPropertyDescriptor,Ae=Object.defineProperty,je=Object.getPrototypeOf,dt=Object.create,_t=Array.prototype.slice,He="addEventListener",xe="removeEventListener",Le=Q(He),Ie=Q(xe),ce="true",ae="false",be=Q("");function Ge(e,n){return Zone.current.wrap(e,n)}function Ve(e,n,a,t,c){return Zone.current.scheduleMacroTask(e,n,a,t,c)}var H=Q,Se=typeof window<"u",ye=Se?window:void 0,J=Se&&ye||globalThis,Et="removeAttribute";function Fe(e,n){for(let a=e.length-1;a>=0;a--)typeof e[a]=="function"&&(e[a]=Ge(e[a],n+"_"+a));return e}function Tt(e,n){let a=e.constructor.name;for(let t=0;t{let m=function(){return E.apply(this,Fe(arguments,a+"."+c))};return ue(m,E),m})(f)}}}function Qe(e){return e?e.writable===!1?!1:!(typeof e.get=="function"&&typeof e.set>"u"):!0}var et=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,De=!("nw"in J)&&typeof J.process<"u"&&J.process.toString()==="[object process]",Be=!De&&!et&&!!(Se&&ye.HTMLElement),tt=typeof J.process<"u"&&J.process.toString()==="[object process]"&&!et&&!!(Se&&ye.HTMLElement),Ce={},Ye=function(e){if(e=e||J.event,!e)return;let n=Ce[e.type];n||(n=Ce[e.type]=H("ON_PROPERTY"+e.type));let a=this||e.target||J,t=a[n],c;if(Be&&a===ye&&e.type==="error"){let f=e;c=t&&t.call(this,f.message,f.filename,f.lineno,f.colno,f.error),c===!0&&e.preventDefault()}else c=t&&t.apply(this,arguments),c!=null&&!c&&e.preventDefault();return c};function $e(e,n,a){let t=ve(e,n);if(!t&&a&&ve(a,n)&&(t={enumerable:!0,configurable:!0}),!t||!t.configurable)return;let c=H("on"+n+"patched");if(e.hasOwnProperty(c)&&e[c])return;delete t.writable,delete t.value;let f=t.get,_=t.set,E=n.slice(2),m=Ce[E];m||(m=Ce[E]=H("ON_PROPERTY"+E)),t.set=function(C){let T=this;if(!T&&e===J&&(T=J),!T)return;typeof T[m]=="function"&&T.removeEventListener(E,Ye),_&&_.call(T,null),T[m]=C,typeof C=="function"&&T.addEventListener(E,Ye,!1)},t.get=function(){let C=this;if(!C&&e===J&&(C=J),!C)return null;let T=C[m];if(T)return T;if(f){let I=f.call(this);if(I)return t.set.call(this,I),typeof C[Et]=="function"&&C.removeAttribute(n),I}return null},Ae(e,n,t),e[c]=!0}function nt(e,n,a){if(n)for(let t=0;tfunction(_,E){let m=a(_,E);return m.cbIdx>=0&&typeof E[m.cbIdx]=="function"?Ve(m.name,E[m.cbIdx],m,c):f.apply(_,E)})}function ue(e,n){e[H("OriginalDelegate")]=n}var Je=!1,Me=!1;function yt(){try{let e=ye.navigator.userAgent;if(e.indexOf("MSIE ")!==-1||e.indexOf("Trident/")!==-1)return!0}catch{}return!1}function mt(){if(Je)return Me;Je=!0;try{let e=ye.navigator.userAgent;(e.indexOf("MSIE ")!==-1||e.indexOf("Trident/")!==-1||e.indexOf("Edge/")!==-1)&&(Me=!0)}catch{}return Me}var ge=!1;if(typeof window<"u")try{let e=Object.defineProperty({},"passive",{get:function(){ge=!0}});window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch{ge=!1}var pt={useG:!0},ee={},rt={},ot=new RegExp("^"+be+"(\\w+)(true|false)$"),st=H("propagationStopped");function it(e,n){let a=(n?n(e):e)+ae,t=(n?n(e):e)+ce,c=be+a,f=be+t;ee[e]={},ee[e][ae]=c,ee[e][ce]=f}function kt(e,n,a,t){let c=t&&t.add||He,f=t&&t.rm||xe,_=t&&t.listeners||"eventListeners",E=t&&t.rmAll||"removeAllListeners",m=H(c),C="."+c+":",T="prependListener",I="."+T+":",P=function(v,d,F){if(v.isRemoved)return;let q=v.callback;typeof q=="object"&&q.handleEvent&&(v.callback=g=>q.handleEvent(g),v.originalDelegate=q);let Y;try{v.invoke(v,d,[F])}catch(g){Y=g}let B=v.options;if(B&&typeof B=="object"&&B.once){let g=v.originalDelegate?v.originalDelegate:v.callback;d[f].call(d,F.type,g,B)}return Y};function Z(v,d,F){if(d=d||e.event,!d)return;let q=v||d.target||e,Y=q[ee[d.type][F?ce:ae]];if(Y){let B=[];if(Y.length===1){let g=P(Y[0],q,d);g&&B.push(g)}else{let g=Y.slice();for(let U=0;U{throw U})}}}let W=function(v){return Z(this,v,!1)},A=function(v){return Z(this,v,!0)};function te(v,d){if(!v)return!1;let F=!0;d&&d.useG!==void 0&&(F=d.useG);let q=d&&d.vh,Y=!0;d&&d.chkDup!==void 0&&(Y=d.chkDup);let B=!1;d&&d.rt!==void 0&&(B=d.rt);let g=v;for(;g&&!g.hasOwnProperty(c);)g=je(g);if(!g&&v[c]&&(g=v),!g||g[m])return!1;let U=d&&d.eventNameToString,D={},w=g[m]=g[c],k=g[H(f)]=g[f],S=g[H(_)]=g[_],K=g[H(E)]=g[E],z;d&&d.prepend&&(z=g[H(d.prepend)]=g[d.prepend]);function $(o,u){return!ge&&typeof o=="object"&&o?!!o.capture:!ge||!u?o:typeof o=="boolean"?{capture:o,passive:!0}:o?typeof o=="object"&&o.passive!==!1?{...o,passive:!0}:o:{passive:!0}}let j=function(o){if(!D.isExisting)return w.call(D.target,D.eventName,D.capture?A:W,D.options)},r=function(o){if(!o.isRemoved){let u=ee[o.eventName],p;u&&(p=u[o.capture?ce:ae]);let R=p&&o.target[p];if(R){for(let y=0;yne.zone.cancelTask(ne);o.call(_e,"abort",se,{once:!0}),ne.removeAbortListener=()=>_e.removeEventListener("abort",se)}if(D.target=null,pe&&(pe.taskData=null),Ue&&(D.options.once=!0),!ge&&typeof ne.options=="boolean"||(ne.options=oe),ne.target=N,ne.capture=Oe,ne.eventName=L,V&&(ne.originalDelegate=G),O?Ee.unshift(ne):Ee.push(ne),y)return N}};return g[c]=l(w,C,x,M,B),z&&(g[T]=l(z,I,s,M,B,!0)),g[f]=function(){let o=this||e,u=arguments[0];d&&d.transferEventName&&(u=d.transferEventName(u));let p=arguments[2],R=p?typeof p=="boolean"?!0:p.capture:!1,y=arguments[1];if(!y)return k.apply(this,arguments);if(q&&!q(k,y,o,arguments))return;let O=ee[u],N;O&&(N=O[R?ce:ae]);let L=N&&o[N];if(L)for(let G=0;Gfunction(c,f){c[st]=!0,t&&t.apply(c,f)})}function bt(e,n){n.patchMethod(e,"queueMicrotask",a=>function(t,c){Zone.current.scheduleMicroTask("queueMicrotask",c[0])})}var Re=H("zoneTask");function Te(e,n,a,t){let c=null,f=null;n+=t,a+=t;let _={};function E(C){let T=C.data;return T.args[0]=function(){return C.invoke.apply(this,arguments)},T.handleId=c.apply(e,T.args),C}function m(C){return f.call(e,C.data.handleId)}c=le(e,n,C=>function(T,I){if(typeof I[0]=="function"){let P={isPeriodic:t==="Interval",delay:t==="Timeout"||t==="Interval"?I[1]||0:void 0,args:I},Z=I[0];I[0]=function(){try{return Z.apply(this,arguments)}finally{P.isPeriodic||(typeof P.handleId=="number"?delete _[P.handleId]:P.handleId&&(P.handleId[Re]=null))}};let W=Ve(n,I[0],P,E,m);if(!W)return W;let A=W.data.handleId;return typeof A=="number"?_[A]=W:A&&(A[Re]=W),A&&A.ref&&A.unref&&typeof A.ref=="function"&&typeof A.unref=="function"&&(W.ref=A.ref.bind(A),W.unref=A.unref.bind(A)),typeof A=="number"||A?A:W}else return C.apply(e,I)}),f=le(e,a,C=>function(T,I){let P=I[0],Z;typeof P=="number"?Z=_[P]:(Z=P&&P[Re],Z||(Z=P)),Z&&typeof Z.type=="string"?Z.state!=="notScheduled"&&(Z.cancelFn&&Z.data.isPeriodic||Z.runCount===0)&&(typeof P=="number"?delete _[P]:P&&(P[Re]=null),Z.zone.cancelTask(Z)):C.apply(e,I)})}function Pt(e,n){let{isBrowser:a,isMix:t}=n.getGlobalObjects();if(!a&&!t||!e.customElements||!("customElements"in e))return;let c=["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback","formAssociatedCallback","formDisabledCallback","formResetCallback","formStateRestoreCallback"];n.patchCallbacks(n,e.customElements,"customElements","define",c)}function wt(e,n){if(Zone[n.symbol("patchEventTarget")])return;let{eventNames:a,zoneSymbolEventNames:t,TRUE_STR:c,FALSE_STR:f,ZONE_SYMBOL_PREFIX:_}=n.getGlobalObjects();for(let m=0;mf.target===e);if(!t||t.length===0)return n;let c=t[0].ignoreProperties;return n.filter(f=>c.indexOf(f)===-1)}function Ke(e,n,a,t){if(!e)return;let c=at(e,n,a);nt(e,c,t)}function Ze(e){return Object.getOwnPropertyNames(e).filter(n=>n.startsWith("on")&&n.length>2).map(n=>n.substring(2))}function Ct(e,n){if(De&&!tt||Zone[e.symbol("patchEvents")])return;let a=n.__Zone_ignore_on_properties,t=[];if(Be){let c=window;t=t.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);let f=yt()?[{target:c,ignoreProperties:["error"]}]:[];Ke(c,Ze(c),a&&a.concat(f),je(c))}t=t.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let c=0;c{let a=n[e.__symbol__("legacyPatch")];a&&a()}),e.__load_patch("timers",n=>{let a="set",t="clear";Te(n,a,t,"Timeout"),Te(n,a,t,"Interval"),Te(n,a,t,"Immediate")}),e.__load_patch("requestAnimationFrame",n=>{Te(n,"request","cancel","AnimationFrame"),Te(n,"mozRequest","mozCancel","AnimationFrame"),Te(n,"webkitRequest","webkitCancel","AnimationFrame")}),e.__load_patch("blocking",(n,a)=>{let t=["alert","prompt","confirm"];for(let c=0;cfunction(C,T){return a.current.run(_,n,T,m)})}}),e.__load_patch("EventTarget",(n,a,t)=>{Rt(n,t),wt(n,t);let c=n.XMLHttpRequestEventTarget;c&&c.prototype&&t.patchEventTarget(n,t,[c.prototype])}),e.__load_patch("MutationObserver",(n,a,t)=>{ke("MutationObserver"),ke("WebKitMutationObserver")}),e.__load_patch("IntersectionObserver",(n,a,t)=>{ke("IntersectionObserver")}),e.__load_patch("FileReader",(n,a,t)=>{ke("FileReader")}),e.__load_patch("on_property",(n,a,t)=>{Ct(t,n)}),e.__load_patch("customElements",(n,a,t)=>{Pt(n,t)}),e.__load_patch("XHR",(n,a)=>{C(n);let t=H("xhrTask"),c=H("xhrSync"),f=H("xhrListener"),_=H("xhrScheduled"),E=H("xhrURL"),m=H("xhrErrorBeforeScheduled");function C(T){let I=T.XMLHttpRequest;if(!I)return;let P=I.prototype;function Z(w){return w[t]}let W=P[Le],A=P[Ie];if(!W){let w=T.XMLHttpRequestEventTarget;if(w){let k=w.prototype;W=k[Le],A=k[Ie]}}let te="readystatechange",X="scheduled";function v(w){let k=w.data,S=k.target;S[_]=!1,S[m]=!1;let K=S[f];W||(W=S[Le],A=S[Ie]),K&&A.call(S,te,K);let z=S[f]=()=>{if(S.readyState===S.DONE)if(!k.aborted&&S[_]&&w.state===X){let j=S[a.__symbol__("loadfalse")];if(S.status!==0&&j&&j.length>0){let r=w.invoke;w.invoke=function(){let i=S[a.__symbol__("loadfalse")];for(let s=0;sfunction(w,k){return w[c]=k[2]==!1,w[E]=k[1],q.apply(w,k)}),Y="XMLHttpRequest.send",B=H("fetchTaskAborting"),g=H("fetchTaskScheduling"),U=le(P,"send",()=>function(w,k){if(a.current[g]===!0||w[c])return U.apply(w,k);{let S={target:w,url:w[E],isPeriodic:!1,args:k,aborted:!1},K=Ve(Y,d,S,v,F);w&&w[m]===!0&&!S.aborted&&K.state===X&&K.invoke()}}),D=le(P,"abort",()=>function(w,k){let S=Z(w);if(S&&typeof S.type=="string"){if(S.cancelFn==null||S.data&&S.data.aborted)return;S.zone.cancelTask(S)}else if(a.current[B]===!0)return D.apply(w,k)})}}),e.__load_patch("geolocation",n=>{n.navigator&&n.navigator.geolocation&&Tt(n.navigator.geolocation,["getCurrentPosition","watchPosition"])}),e.__load_patch("PromiseRejectionEvent",(n,a)=>{function t(c){return function(f){ct(n,c).forEach(E=>{let m=n.PromiseRejectionEvent;if(m){let C=new m(c,{promise:f.promise,reason:f.rejection});E.invoke(C)}})}}n.PromiseRejectionEvent&&(a[H("unhandledPromiseRejectionHandler")]=t("unhandledrejection"),a[H("rejectionHandledHandler")]=t("rejectionhandled"))}),e.__load_patch("queueMicrotask",(n,a,t)=>{bt(n,t)})}function Dt(e){e.__load_patch("ZoneAwarePromise",(n,a,t)=>{let c=Object.getOwnPropertyDescriptor,f=Object.defineProperty;function _(h){if(h&&h.toString===Object.prototype.toString){let l=h.constructor&&h.constructor.name;return(l||"")+": "+JSON.stringify(h)}return h?h.toString():Object.prototype.toString.call(h)}let E=t.symbol,m=[],C=n[E("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")]!==!1,T=E("Promise"),I=E("then"),P="__creationTrace__";t.onUnhandledError=h=>{if(t.showUncaughtError()){let l=h&&h.rejection;l?console.error("Unhandled Promise rejection:",l instanceof Error?l.message:l,"; Zone:",h.zone.name,"; Task:",h.task&&h.task.source,"; Value:",l,l instanceof Error?l.stack:void 0):console.error(h)}},t.microtaskDrainDone=()=>{for(;m.length;){let h=m.shift();try{h.zone.runGuarded(()=>{throw h.throwOriginal?h.rejection:h})}catch(l){W(l)}}};let Z=E("unhandledPromiseRejectionHandler");function W(h){t.onUnhandledError(h);try{let l=a[Z];typeof l=="function"&&l.call(this,h)}catch{}}function A(h){return h&&h.then}function te(h){return h}function X(h){return M.reject(h)}let v=E("state"),d=E("value"),F=E("finally"),q=E("parentPromiseValue"),Y=E("parentPromiseState"),B="Promise.then",g=null,U=!0,D=!1,w=0;function k(h,l){return o=>{try{$(h,l,o)}catch(u){$(h,!1,u)}}}let S=function(){let h=!1;return function(o){return function(){h||(h=!0,o.apply(null,arguments))}}},K="Promise resolved with itself",z=E("currentTaskTrace");function $(h,l,o){let u=S();if(h===o)throw new TypeError(K);if(h[v]===g){let p=null;try{(typeof o=="object"||typeof o=="function")&&(p=o&&o.then)}catch(R){return u(()=>{$(h,!1,R)})(),h}if(l!==D&&o instanceof M&&o.hasOwnProperty(v)&&o.hasOwnProperty(d)&&o[v]!==g)r(o),$(h,o[v],o[d]);else if(l!==D&&typeof p=="function")try{p.call(o,u(k(h,l)),u(k(h,!1)))}catch(R){u(()=>{$(h,!1,R)})()}else{h[v]=l;let R=h[d];if(h[d]=o,h[F]===F&&l===U&&(h[v]=h[Y],h[d]=h[q]),l===D&&o instanceof Error){let y=a.currentTask&&a.currentTask.data&&a.currentTask.data[P];y&&f(o,z,{configurable:!0,enumerable:!1,writable:!0,value:y})}for(let y=0;y{try{let O=h[d],N=!!o&&F===o[F];N&&(o[q]=O,o[Y]=R);let L=l.run(y,void 0,N&&y!==X&&y!==te?[]:[O]);$(o,!0,L)}catch(O){$(o,!1,O)}},o)}let s="function ZoneAwarePromise() { [native code] }",b=function(){},x=n.AggregateError;class M{static toString(){return s}static resolve(l){return l instanceof M?l:$(new this(null),U,l)}static reject(l){return $(new this(null),D,l)}static withResolvers(){let l={};return l.promise=new M((o,u)=>{l.resolve=o,l.reject=u}),l}static any(l){if(!l||typeof l[Symbol.iterator]!="function")return Promise.reject(new x([],"All promises were rejected"));let o=[],u=0;try{for(let y of l)u++,o.push(M.resolve(y))}catch{return Promise.reject(new x([],"All promises were rejected"))}if(u===0)return Promise.reject(new x([],"All promises were rejected"));let p=!1,R=[];return new M((y,O)=>{for(let N=0;N{p||(p=!0,y(L))},L=>{R.push(L),u--,u===0&&(p=!0,O(new x(R,"All promises were rejected")))})})}static race(l){let o,u,p=new this((O,N)=>{o=O,u=N});function R(O){o(O)}function y(O){u(O)}for(let O of l)A(O)||(O=this.resolve(O)),O.then(R,y);return p}static all(l){return M.allWithCallback(l)}static allSettled(l){return(this&&this.prototype instanceof M?this:M).allWithCallback(l,{thenCallback:u=>({status:"fulfilled",value:u}),errorCallback:u=>({status:"rejected",reason:u})})}static allWithCallback(l,o){let u,p,R=new this((L,G)=>{u=L,p=G}),y=2,O=0,N=[];for(let L of l){A(L)||(L=this.resolve(L));let G=O;try{L.then(V=>{N[G]=o?o.thenCallback(V):V,y--,y===0&&u(N)},V=>{o?(N[G]=o.errorCallback(V),y--,y===0&&u(N)):p(V)})}catch(V){p(V)}y++,O++}return y-=2,y===0&&u(N),R}constructor(l){let o=this;if(!(o instanceof M))throw new Error("Must be an instanceof Promise.");o[v]=g,o[d]=[];try{let u=S();l&&l(u(k(o,U)),u(k(o,D)))}catch(u){$(o,!1,u)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return M}then(l,o){let u=this.constructor?.[Symbol.species];(!u||typeof u!="function")&&(u=this.constructor||M);let p=new u(b),R=a.current;return this[v]==g?this[d].push(R,p,l,o):i(this,R,p,l,o),p}catch(l){return this.then(null,l)}finally(l){let o=this.constructor?.[Symbol.species];(!o||typeof o!="function")&&(o=M);let u=new o(b);u[F]=F;let p=a.current;return this[v]==g?this[d].push(p,u,l,l):i(this,p,u,l,l),u}}M.resolve=M.resolve,M.reject=M.reject,M.race=M.race,M.all=M.all;let de=n[T]=n.Promise;n.Promise=M;let me=E("thenPatched");function he(h){let l=h.prototype,o=c(l,"then");if(o&&(o.writable===!1||!o.configurable))return;let u=l.then;l[I]=u,h.prototype.then=function(p,R){return new M((O,N)=>{u.call(this,O,N)}).then(p,R)},h[me]=!0}t.patchThen=he;function Pe(h){return function(l,o){let u=h.apply(l,o);if(u instanceof M)return u;let p=u.constructor;return p[me]||he(p),u}}return de&&(he(de),le(n,"fetch",h=>Pe(h))),Promise[a.__symbol__("uncaughtPromiseErrors")]=m,M})}function Ot(e){e.__load_patch("toString",n=>{let a=Function.prototype.toString,t=H("OriginalDelegate"),c=H("Promise"),f=H("Error"),_=function(){if(typeof this=="function"){let T=this[t];if(T)return typeof T=="function"?a.call(T):Object.prototype.toString.call(T);if(this===Promise){let I=n[c];if(I)return a.call(I)}if(this===Error){let I=n[f];if(I)return a.call(I)}}return a.call(this)};_[t]=a,Function.prototype.toString=_;let E=Object.prototype.toString,m="[object Promise]";Object.prototype.toString=function(){return typeof Promise=="function"&&this instanceof Promise?m:E.call(this)}})}function Nt(e,n,a,t,c){let f=Zone.__symbol__(t);if(n[f])return;let _=n[f]=n[t];n[t]=function(E,m,C){return m&&m.prototype&&c.forEach(function(T){let I=`${a}.${t}::`+T,P=m.prototype;try{if(P.hasOwnProperty(T)){let Z=e.ObjectGetOwnPropertyDescriptor(P,T);Z&&Z.value?(Z.value=e.wrapWithCurrentZone(Z.value,I),e._redefineProperty(m.prototype,T,Z)):P[T]&&(P[T]=e.wrapWithCurrentZone(P[T],I))}else P[T]&&(P[T]=e.wrapWithCurrentZone(P[T],I))}catch{}}),_.call(n,E,m,C)},e.attachOriginToPatched(n[t],_)}function Lt(e){e.__load_patch("util",(n,a,t)=>{let c=Ze(n);t.patchOnProperties=nt,t.patchMethod=le,t.bindArguments=Fe,t.patchMacroTask=gt;let f=a.__symbol__("BLACK_LISTED_EVENTS"),_=a.__symbol__("UNPATCHED_EVENTS");n[_]&&(n[f]=n[_]),n[f]&&(a[f]=a[_]=n[f]),t.patchEventPrototype=vt,t.patchEventTarget=kt,t.isIEOrEdge=mt,t.ObjectDefineProperty=Ae,t.ObjectGetOwnPropertyDescriptor=ve,t.ObjectCreate=dt,t.ArraySlice=_t,t.patchClass=ke,t.wrapWithCurrentZone=Ge,t.filterProperties=at,t.attachOriginToPatched=ue,t._redefineProperty=Object.defineProperty,t.patchCallbacks=Nt,t.getGlobalObjects=()=>({globalSources:rt,zoneSymbolEventNames:ee,eventNames:c,isBrowser:Be,isMix:tt,isNode:De,TRUE_STR:ce,FALSE_STR:ae,ZONE_SYMBOL_PREFIX:be,ADD_EVENT_LISTENER_STR:He,REMOVE_EVENT_LISTENER_STR:xe})})}function It(e){Dt(e),Ot(e),Lt(e)}var lt=ht();It(lt);St(lt); diff --git a/docs/polyfills.97b80eb56ae3e13c.js b/docs/polyfills.97b80eb56ae3e13c.js deleted file mode 100644 index 1930238..0000000 --- a/docs/polyfills.97b80eb56ae3e13c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdemo_showcase=self.webpackChunkdemo_showcase||[]).push([[461],{6935:()=>{const ee=globalThis;function Q(t){return(ee.__Zone_symbol_prefix||"__zone_symbol__")+t}const ye=Object.getOwnPropertyDescriptor,Ne=Object.defineProperty,Ie=Object.getPrototypeOf,ht=Object.create,dt=Array.prototype.slice,Le="addEventListener",Me="removeEventListener",Ze=Q(Le),Ae=Q(Me),ce="true",ae="false",me=Q("");function je(t,r){return Zone.current.wrap(t,r)}function He(t,r,c,n,i){return Zone.current.scheduleMacroTask(t,r,c,n,i)}const H=Q,be=typeof window<"u",de=be?window:void 0,J=be&&de||globalThis,_t="removeAttribute";function xe(t,r){for(let c=t.length-1;c>=0;c--)"function"==typeof t[c]&&(t[c]=je(t[c],r+"_"+c));return t}function ze(t){return!t||!1!==t.writable&&!("function"==typeof t.get&&typeof t.set>"u")}const qe=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,Pe=!("nw"in J)&&typeof J.process<"u"&&"[object process]"===J.process.toString(),Ge=!Pe&&!qe&&!(!be||!de.HTMLElement),Xe=typeof J.process<"u"&&"[object process]"===J.process.toString()&&!qe&&!(!be||!de.HTMLElement),we={},Ye=function(t){if(!(t=t||J.event))return;let r=we[t.type];r||(r=we[t.type]=H("ON_PROPERTY"+t.type));const c=this||t.target||J,n=c[r];let i;return Ge&&c===de&&"error"===t.type?(i=n&&n.call(this,t.message,t.filename,t.lineno,t.colno,t.error),!0===i&&t.preventDefault()):(i=n&&n.apply(this,arguments),null!=i&&!i&&t.preventDefault()),i};function $e(t,r,c){let n=ye(t,r);if(!n&&c&&ye(c,r)&&(n={enumerable:!0,configurable:!0}),!n||!n.configurable)return;const i=H("on"+r+"patched");if(t.hasOwnProperty(i)&&t[i])return;delete n.writable,delete n.value;const u=n.get,_=n.set,E=r.slice(2);let m=we[E];m||(m=we[E]=H("ON_PROPERTY"+E)),n.set=function(C){let T=this;!T&&t===J&&(T=J),T&&("function"==typeof T[m]&&T.removeEventListener(E,Ye),_&&_.call(T,null),T[m]=C,"function"==typeof C&&T.addEventListener(E,Ye,!1))},n.get=function(){let C=this;if(!C&&t===J&&(C=J),!C)return null;const T=C[m];if(T)return T;if(u){let Z=u.call(this);if(Z)return n.set.call(this,Z),"function"==typeof C[_t]&&C.removeAttribute(r),Z}return null},Ne(t,r,n),t[i]=!0}function Je(t,r,c){if(r)for(let n=0;nfunction(_,E){const m=c(_,E);return m.cbIdx>=0&&"function"==typeof E[m.cbIdx]?He(m.name,E[m.cbIdx],m,i):u.apply(_,E)})}function ue(t,r){t[H("OriginalDelegate")]=r}let Ke=!1,Ve=!1;function yt(){if(Ke)return Ve;Ke=!0;try{const t=de.navigator.userAgent;(-1!==t.indexOf("MSIE ")||-1!==t.indexOf("Trident/")||-1!==t.indexOf("Edge/"))&&(Ve=!0)}catch{}return Ve}let _e=!1;if(typeof window<"u")try{const t=Object.defineProperty({},"passive",{get:function(){_e=!0}});window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch{_e=!1}const mt={useG:!0},te={},Qe={},et=new RegExp("^"+me+"(\\w+)(true|false)$"),tt=H("propagationStopped");function nt(t,r){const c=(r?r(t):t)+ae,n=(r?r(t):t)+ce,i=me+c,u=me+n;te[t]={},te[t][ae]=i,te[t][ce]=u}function pt(t,r,c,n){const i=n&&n.add||Le,u=n&&n.rm||Me,_=n&&n.listeners||"eventListeners",E=n&&n.rmAll||"removeAllListeners",m=H(i),C="."+i+":",T="prependListener",Z="."+T+":",P=function(b,h,F){if(b.isRemoved)return;const z=b.callback;let Y;"object"==typeof z&&z.handleEvent&&(b.callback=g=>z.handleEvent(g),b.originalDelegate=z);try{b.invoke(b,h,[F])}catch(g){Y=g}const B=b.options;return B&&"object"==typeof B&&B.once&&h[u].call(h,F.type,b.originalDelegate?b.originalDelegate:b.callback,B),Y};function j(b,h,F){if(!(h=h||t.event))return;const z=b||h.target||t,Y=z[te[h.type][F?ce:ae]];if(Y){const B=[];if(1===Y.length){const g=P(Y[0],z,h);g&&B.push(g)}else{const g=Y.slice();for(let U=0;U{throw U})}}}const W=function(b){return j(this,b,!1)},x=function(b){return j(this,b,!0)};function re(b,h){if(!b)return!1;let F=!0;h&&void 0!==h.useG&&(F=h.useG);const z=h&&h.vh;let Y=!0;h&&void 0!==h.chkDup&&(Y=h.chkDup);let B=!1;h&&void 0!==h.rt&&(B=h.rt);let g=b;for(;g&&!g.hasOwnProperty(i);)g=Ie(g);if(!g&&b[i]&&(g=b),!g||g[m])return!1;const U=h&&h.eventNameToString,O={},w=g[m]=g[i],v=g[H(u)]=g[u],S=g[H(_)]=g[_],K=g[H(E)]=g[E];let q;h&&h.prepend&&(q=g[H(h.prepend)]=g[h.prepend]);const $=F?function(s){if(!O.isExisting)return w.call(O.target,O.eventName,O.capture?x:W,O.options)}:function(s){return w.call(O.target,O.eventName,s.invoke,O.options)},A=F?function(s){if(!s.isRemoved){const l=te[s.eventName];let k;l&&(k=l[s.capture?ce:ae]);const R=k&&s.target[k];if(R)for(let y=0;yoe.zone.cancelTask(oe);s.call(Te,"abort",ie,{once:!0}),oe.removeAbortListener=()=>Te.removeEventListener("abort",ie)}return O.target=null,ve&&(ve.taskData=null),ct&&(O.options.once=!0),!_e&&"boolean"==typeof oe.options||(oe.options=se),oe.target=L,oe.capture=Be,oe.eventName=M,V&&(oe.originalDelegate=G),I?ge.unshift(oe):ge.push(oe),y?L:void 0}};return g[i]=a(w,C,$,A,B),q&&(g[T]=a(q,Z,function(s){return q.call(O.target,O.eventName,s.invoke,O.options)},A,B,!0)),g[u]=function(){const s=this||t;let l=arguments[0];h&&h.transferEventName&&(l=h.transferEventName(l));const k=arguments[2],R=!!k&&("boolean"==typeof k||k.capture),y=arguments[1];if(!y)return v.apply(this,arguments);if(z&&!z(v,y,s,arguments))return;const I=te[l];let L;I&&(L=I[R?ce:ae]);const M=L&&s[L];if(M)for(let G=0;Gfunction(i,u){i[tt]=!0,n&&n.apply(i,u)})}const Re=H("zoneTask");function Ee(t,r,c,n){let i=null,u=null;c+=n;const _={};function E(C){const T=C.data;return T.args[0]=function(){return C.invoke.apply(this,arguments)},T.handleId=i.apply(t,T.args),C}function m(C){return u.call(t,C.data.handleId)}i=le(t,r+=n,C=>function(T,Z){if("function"==typeof Z[0]){const P={isPeriodic:"Interval"===n,delay:"Timeout"===n||"Interval"===n?Z[1]||0:void 0,args:Z},j=Z[0];Z[0]=function(){try{return j.apply(this,arguments)}finally{P.isPeriodic||("number"==typeof P.handleId?delete _[P.handleId]:P.handleId&&(P.handleId[Re]=null))}};const W=He(r,Z[0],P,E,m);if(!W)return W;const x=W.data.handleId;return"number"==typeof x?_[x]=W:x&&(x[Re]=W),x&&x.ref&&x.unref&&"function"==typeof x.ref&&"function"==typeof x.unref&&(W.ref=x.ref.bind(x),W.unref=x.unref.bind(x)),"number"==typeof x||x?x:W}return C.apply(t,Z)}),u=le(t,c,C=>function(T,Z){const P=Z[0];let j;"number"==typeof P?j=_[P]:(j=P&&P[Re],j||(j=P)),j&&"string"==typeof j.type?"notScheduled"!==j.state&&(j.cancelFn&&j.data.isPeriodic||0===j.runCount)&&("number"==typeof P?delete _[P]:P&&(P[Re]=null),j.zone.cancelTask(j)):C.apply(t,Z)})}function ot(t,r,c){if(!c||0===c.length)return r;const n=c.filter(u=>u.target===t);if(!n||0===n.length)return r;const i=n[0].ignoreProperties;return r.filter(u=>-1===i.indexOf(u))}function st(t,r,c,n){t&&Je(t,ot(t,r,c),n)}function Fe(t){return Object.getOwnPropertyNames(t).filter(r=>r.startsWith("on")&&r.length>2).map(r=>r.substring(2))}function Ot(t,r,c,n,i){const u=Zone.__symbol__(n);if(r[u])return;const _=r[u]=r[n];r[n]=function(E,m,C){return m&&m.prototype&&i.forEach(function(T){const Z=`${c}.${n}::`+T,P=m.prototype;try{if(P.hasOwnProperty(T)){const j=t.ObjectGetOwnPropertyDescriptor(P,T);j&&j.value?(j.value=t.wrapWithCurrentZone(j.value,Z),t._redefineProperty(m.prototype,T,j)):P[T]&&(P[T]=t.wrapWithCurrentZone(P[T],Z))}else P[T]&&(P[T]=t.wrapWithCurrentZone(P[T],Z))}catch{}}),_.call(r,E,m,C)},t.attachOriginToPatched(r[n],_)}const it=function Oe(){const t=globalThis,r=!0===t[Q("forceDuplicateZoneCheck")];if(t.Zone&&(r||"function"!=typeof t.Zone.__symbol__))throw new Error("Zone already loaded.");return t.Zone??=function We(){const t=ee.performance;function r(N){t&&t.mark&&t.mark(N)}function c(N,d){t&&t.measure&&t.measure(N,d)}r("Zone");let n=(()=>{class N{static#e=this.__symbol__=Q;static assertZonePatched(){if(ee.Promise!==O.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let e=N.current;for(;e.parent;)e=e.parent;return e}static get current(){return v.zone}static get currentTask(){return S}static __load_patch(e,o,p=!1){if(O.hasOwnProperty(e)){const D=!0===ee[Q("forceDuplicateZoneCheck")];if(!p&&D)throw Error("Already loaded patch: "+e)}else if(!ee["__Zone_disable_"+e]){const D="Zone:"+e;r(D),O[e]=o(ee,N,w),c(D,D)}}get parent(){return this._parent}get name(){return this._name}constructor(e,o){this._parent=e,this._name=o?o.name||"unnamed":"",this._properties=o&&o.properties||{},this._zoneDelegate=new u(this,this._parent&&this._parent._zoneDelegate,o)}get(e){const o=this.getZoneWith(e);if(o)return o._properties[e]}getZoneWith(e){let o=this;for(;o;){if(o._properties.hasOwnProperty(e))return o;o=o._parent}return null}fork(e){if(!e)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,e)}wrap(e,o){if("function"!=typeof e)throw new Error("Expecting function got: "+e);const p=this._zoneDelegate.intercept(this,e,o),D=this;return function(){return D.runGuarded(p,this,arguments,o)}}run(e,o,p,D){v={parent:v,zone:this};try{return this._zoneDelegate.invoke(this,e,o,p,D)}finally{v=v.parent}}runGuarded(e,o=null,p,D){v={parent:v,zone:this};try{try{return this._zoneDelegate.invoke(this,e,o,p,D)}catch($){if(this._zoneDelegate.handleError(this,$))throw $}}finally{v=v.parent}}runTask(e,o,p){if(e.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(e.zone||re).name+"; Execution: "+this.name+")");if(e.state===X&&(e.type===U||e.type===g))return;const D=e.state!=F;D&&e._transitionTo(F,h),e.runCount++;const $=S;S=e,v={parent:v,zone:this};try{e.type==g&&e.data&&!e.data.isPeriodic&&(e.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,e,o,p)}catch(A){if(this._zoneDelegate.handleError(this,A))throw A}}finally{e.state!==X&&e.state!==Y&&(e.type==U||e.data&&e.data.isPeriodic?D&&e._transitionTo(h,F):(e.runCount=0,this._updateTaskCount(e,-1),D&&e._transitionTo(X,F,X))),v=v.parent,S=$}}scheduleTask(e){if(e.zone&&e.zone!==this){let p=this;for(;p;){if(p===e.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${e.zone.name}`);p=p.parent}}e._transitionTo(b,X);const o=[];e._zoneDelegates=o,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(p){throw e._transitionTo(Y,b,X),this._zoneDelegate.handleError(this,p),p}return e._zoneDelegates===o&&this._updateTaskCount(e,1),e.state==b&&e._transitionTo(h,b),e}scheduleMicroTask(e,o,p,D){return this.scheduleTask(new _(B,e,o,p,D,void 0))}scheduleMacroTask(e,o,p,D,$){return this.scheduleTask(new _(g,e,o,p,D,$))}scheduleEventTask(e,o,p,D,$){return this.scheduleTask(new _(U,e,o,p,D,$))}cancelTask(e){if(e.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(e.zone||re).name+"; Execution: "+this.name+")");if(e.state===h||e.state===F){e._transitionTo(z,h,F);try{this._zoneDelegate.cancelTask(this,e)}catch(o){throw e._transitionTo(Y,z),this._zoneDelegate.handleError(this,o),o}return this._updateTaskCount(e,-1),e._transitionTo(X,z),e.runCount=0,e}}_updateTaskCount(e,o){const p=e._zoneDelegates;-1==o&&(e._zoneDelegates=null);for(let D=0;DN.hasTask(e,o),onScheduleTask:(N,d,e,o)=>N.scheduleTask(e,o),onInvokeTask:(N,d,e,o,p,D)=>N.invokeTask(e,o,p,D),onCancelTask:(N,d,e,o)=>N.cancelTask(e,o)};class u{get zone(){return this._zone}constructor(d,e,o){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this._zone=d,this._parentDelegate=e,this._forkZS=o&&(o&&o.onFork?o:e._forkZS),this._forkDlgt=o&&(o.onFork?e:e._forkDlgt),this._forkCurrZone=o&&(o.onFork?this._zone:e._forkCurrZone),this._interceptZS=o&&(o.onIntercept?o:e._interceptZS),this._interceptDlgt=o&&(o.onIntercept?e:e._interceptDlgt),this._interceptCurrZone=o&&(o.onIntercept?this._zone:e._interceptCurrZone),this._invokeZS=o&&(o.onInvoke?o:e._invokeZS),this._invokeDlgt=o&&(o.onInvoke?e:e._invokeDlgt),this._invokeCurrZone=o&&(o.onInvoke?this._zone:e._invokeCurrZone),this._handleErrorZS=o&&(o.onHandleError?o:e._handleErrorZS),this._handleErrorDlgt=o&&(o.onHandleError?e:e._handleErrorDlgt),this._handleErrorCurrZone=o&&(o.onHandleError?this._zone:e._handleErrorCurrZone),this._scheduleTaskZS=o&&(o.onScheduleTask?o:e._scheduleTaskZS),this._scheduleTaskDlgt=o&&(o.onScheduleTask?e:e._scheduleTaskDlgt),this._scheduleTaskCurrZone=o&&(o.onScheduleTask?this._zone:e._scheduleTaskCurrZone),this._invokeTaskZS=o&&(o.onInvokeTask?o:e._invokeTaskZS),this._invokeTaskDlgt=o&&(o.onInvokeTask?e:e._invokeTaskDlgt),this._invokeTaskCurrZone=o&&(o.onInvokeTask?this._zone:e._invokeTaskCurrZone),this._cancelTaskZS=o&&(o.onCancelTask?o:e._cancelTaskZS),this._cancelTaskDlgt=o&&(o.onCancelTask?e:e._cancelTaskDlgt),this._cancelTaskCurrZone=o&&(o.onCancelTask?this._zone:e._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;const p=o&&o.onHasTask;(p||e&&e._hasTaskZS)&&(this._hasTaskZS=p?o:i,this._hasTaskDlgt=e,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,o.onScheduleTask||(this._scheduleTaskZS=i,this._scheduleTaskDlgt=e,this._scheduleTaskCurrZone=this._zone),o.onInvokeTask||(this._invokeTaskZS=i,this._invokeTaskDlgt=e,this._invokeTaskCurrZone=this._zone),o.onCancelTask||(this._cancelTaskZS=i,this._cancelTaskDlgt=e,this._cancelTaskCurrZone=this._zone))}fork(d,e){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,d,e):new n(d,e)}intercept(d,e,o){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,d,e,o):e}invoke(d,e,o,p,D){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,d,e,o,p,D):e.apply(o,p)}handleError(d,e){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,d,e)}scheduleTask(d,e){let o=e;if(this._scheduleTaskZS)this._hasTaskZS&&o._zoneDelegates.push(this._hasTaskDlgtOwner),o=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,d,e),o||(o=e);else if(e.scheduleFn)e.scheduleFn(e);else{if(e.type!=B)throw new Error("Task is missing scheduleFn.");W(e)}return o}invokeTask(d,e,o,p){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,d,e,o,p):e.callback.apply(o,p)}cancelTask(d,e){let o;if(this._cancelTaskZS)o=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,d,e);else{if(!e.cancelFn)throw Error("Task is not cancelable");o=e.cancelFn(e)}return o}hasTask(d,e){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,d,e)}catch(o){this.handleError(d,o)}}_updateTaskCount(d,e){const o=this._taskCounts,p=o[d],D=o[d]=p+e;if(D<0)throw new Error("More tasks executed then were scheduled.");0!=p&&0!=D||this.hasTask(this._zone,{microTask:o.microTask>0,macroTask:o.macroTask>0,eventTask:o.eventTask>0,change:d})}}class _{constructor(d,e,o,p,D,$){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=d,this.source=e,this.data=p,this.scheduleFn=D,this.cancelFn=$,!o)throw new Error("callback is not defined");this.callback=o;const A=this;this.invoke=d===U&&p&&p.useG?_.invokeTask:function(){return _.invokeTask.call(ee,A,this,arguments)}}static invokeTask(d,e,o){d||(d=this),K++;try{return d.runCount++,d.zone.runTask(d,e,o)}finally{1==K&&x(),K--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(X,b)}_transitionTo(d,e,o){if(this._state!==e&&this._state!==o)throw new Error(`${this.type} '${this.source}': can not transition to '${d}', expecting state '${e}'${o?" or '"+o+"'":""}, was '${this._state}'.`);this._state=d,d==X&&(this._zoneDelegates=null)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}const E=Q("setTimeout"),m=Q("Promise"),C=Q("then");let P,T=[],Z=!1;function j(N){if(P||ee[m]&&(P=ee[m].resolve(0)),P){let d=P[C];d||(d=P.then),d.call(P,N)}else ee[E](N,0)}function W(N){0===K&&0===T.length&&j(x),N&&T.push(N)}function x(){if(!Z){for(Z=!0;T.length;){const N=T;T=[];for(let d=0;dv,onUnhandledError:q,microtaskDrainDone:q,scheduleMicroTask:W,showUncaughtError:()=>!n[Q("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:q,patchMethod:()=>q,bindArguments:()=>[],patchThen:()=>q,patchMacroTask:()=>q,patchEventPrototype:()=>q,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>q,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>q,wrapWithCurrentZone:()=>q,filterProperties:()=>[],attachOriginToPatched:()=>q,_redefineProperty:()=>q,patchCallbacks:()=>q,nativeScheduleMicroTask:j};let v={parent:null,zone:new n(null,null)},S=null,K=0;function q(){}return c("Zone","Zone"),n}(),t.Zone}();(function It(t){(function St(t){t.__load_patch("ZoneAwarePromise",(r,c,n)=>{const i=Object.getOwnPropertyDescriptor,u=Object.defineProperty,E=n.symbol,m=[],C=!1!==r[E("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")],T=E("Promise"),Z=E("then"),P="__creationTrace__";n.onUnhandledError=f=>{if(n.showUncaughtError()){const a=f&&f.rejection;a?console.error("Unhandled Promise rejection:",a instanceof Error?a.message:a,"; Zone:",f.zone.name,"; Task:",f.task&&f.task.source,"; Value:",a,a instanceof Error?a.stack:void 0):console.error(f)}},n.microtaskDrainDone=()=>{for(;m.length;){const f=m.shift();try{f.zone.runGuarded(()=>{throw f.throwOriginal?f.rejection:f})}catch(a){W(a)}}};const j=E("unhandledPromiseRejectionHandler");function W(f){n.onUnhandledError(f);try{const a=c[j];"function"==typeof a&&a.call(this,f)}catch{}}function x(f){return f&&f.then}function re(f){return f}function X(f){return A.reject(f)}const b=E("state"),h=E("value"),F=E("finally"),z=E("parentPromiseValue"),Y=E("parentPromiseState"),B="Promise.then",g=null,U=!0,O=!1,w=0;function v(f,a){return s=>{try{N(f,a,s)}catch(l){N(f,!1,l)}}}const S=function(){let f=!1;return function(s){return function(){f||(f=!0,s.apply(null,arguments))}}},K="Promise resolved with itself",q=E("currentTaskTrace");function N(f,a,s){const l=S();if(f===s)throw new TypeError(K);if(f[b]===g){let k=null;try{("object"==typeof s||"function"==typeof s)&&(k=s&&s.then)}catch(R){return l(()=>{N(f,!1,R)})(),f}if(a!==O&&s instanceof A&&s.hasOwnProperty(b)&&s.hasOwnProperty(h)&&s[b]!==g)e(s),N(f,s[b],s[h]);else if(a!==O&&"function"==typeof k)try{k.call(s,l(v(f,a)),l(v(f,!1)))}catch(R){l(()=>{N(f,!1,R)})()}else{f[b]=a;const R=f[h];if(f[h]=s,f[F]===F&&a===U&&(f[b]=f[Y],f[h]=f[z]),a===O&&s instanceof Error){const y=c.currentTask&&c.currentTask.data&&c.currentTask.data[P];y&&u(s,q,{configurable:!0,enumerable:!1,writable:!0,value:y})}for(let y=0;y{try{const I=f[h],L=!!s&&F===s[F];L&&(s[z]=I,s[Y]=R);const M=a.run(y,void 0,L&&y!==X&&y!==re?[]:[I]);N(s,!0,M)}catch(I){N(s,!1,I)}},s)}const D=function(){},$=r.AggregateError;class A{static toString(){return"function ZoneAwarePromise() { [native code] }"}static resolve(a){return a instanceof A?a:N(new this(null),U,a)}static reject(a){return N(new this(null),O,a)}static withResolvers(){const a={};return a.promise=new A((s,l)=>{a.resolve=s,a.reject=l}),a}static any(a){if(!a||"function"!=typeof a[Symbol.iterator])return Promise.reject(new $([],"All promises were rejected"));const s=[];let l=0;try{for(let y of a)l++,s.push(A.resolve(y))}catch{return Promise.reject(new $([],"All promises were rejected"))}if(0===l)return Promise.reject(new $([],"All promises were rejected"));let k=!1;const R=[];return new A((y,I)=>{for(let L=0;L{k||(k=!0,y(M))},M=>{R.push(M),l--,0===l&&(k=!0,I(new $(R,"All promises were rejected")))})})}static race(a){let s,l,k=new this((I,L)=>{s=I,l=L});function R(I){s(I)}function y(I){l(I)}for(let I of a)x(I)||(I=this.resolve(I)),I.then(R,y);return k}static all(a){return A.allWithCallback(a)}static allSettled(a){return(this&&this.prototype instanceof A?this:A).allWithCallback(a,{thenCallback:l=>({status:"fulfilled",value:l}),errorCallback:l=>({status:"rejected",reason:l})})}static allWithCallback(a,s){let l,k,R=new this((M,G)=>{l=M,k=G}),y=2,I=0;const L=[];for(let M of a){x(M)||(M=this.resolve(M));const G=I;try{M.then(V=>{L[G]=s?s.thenCallback(V):V,y--,0===y&&l(L)},V=>{s?(L[G]=s.errorCallback(V),y--,0===y&&l(L)):k(V)})}catch(V){k(V)}y++,I++}return y-=2,0===y&&l(L),R}constructor(a){const s=this;if(!(s instanceof A))throw new Error("Must be an instanceof Promise.");s[b]=g,s[h]=[];try{const l=S();a&&a(l(v(s,U)),l(v(s,O)))}catch(l){N(s,!1,l)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return A}then(a,s){let l=this.constructor?.[Symbol.species];(!l||"function"!=typeof l)&&(l=this.constructor||A);const k=new l(D),R=c.current;return this[b]==g?this[h].push(R,k,a,s):o(this,R,k,a,s),k}catch(a){return this.then(null,a)}finally(a){let s=this.constructor?.[Symbol.species];(!s||"function"!=typeof s)&&(s=A);const l=new s(D);l[F]=F;const k=c.current;return this[b]==g?this[h].push(k,l,a,a):o(this,k,l,a,a),l}}A.resolve=A.resolve,A.reject=A.reject,A.race=A.race,A.all=A.all;const Ce=r[T]=r.Promise;r.Promise=A;const ke=E("thenPatched");function he(f){const a=f.prototype,s=i(a,"then");if(s&&(!1===s.writable||!s.configurable))return;const l=a.then;a[Z]=l,f.prototype.then=function(k,R){return new A((I,L)=>{l.call(this,I,L)}).then(k,R)},f[ke]=!0}return n.patchThen=he,Ce&&(he(Ce),le(r,"fetch",f=>function Se(f){return function(a,s){let l=f.apply(a,s);if(l instanceof A)return l;let k=l.constructor;return k[ke]||he(k),l}}(f))),Promise[c.__symbol__("uncaughtPromiseErrors")]=m,A})})(t),function Dt(t){t.__load_patch("toString",r=>{const c=Function.prototype.toString,n=H("OriginalDelegate"),i=H("Promise"),u=H("Error"),_=function(){if("function"==typeof this){const T=this[n];if(T)return"function"==typeof T?c.call(T):Object.prototype.toString.call(T);if(this===Promise){const Z=r[i];if(Z)return c.call(Z)}if(this===Error){const Z=r[u];if(Z)return c.call(Z)}}return c.call(this)};_[n]=c,Function.prototype.toString=_;const E=Object.prototype.toString;Object.prototype.toString=function(){return"function"==typeof Promise&&this instanceof Promise?"[object Promise]":E.call(this)}})}(t),function Nt(t){t.__load_patch("util",(r,c,n)=>{const i=Fe(r);n.patchOnProperties=Je,n.patchMethod=le,n.bindArguments=xe,n.patchMacroTask=Tt;const u=c.__symbol__("BLACK_LISTED_EVENTS"),_=c.__symbol__("UNPATCHED_EVENTS");r[_]&&(r[u]=r[_]),r[u]&&(c[u]=c[_]=r[u]),n.patchEventPrototype=kt,n.patchEventTarget=pt,n.isIEOrEdge=yt,n.ObjectDefineProperty=Ne,n.ObjectGetOwnPropertyDescriptor=ye,n.ObjectCreate=ht,n.ArraySlice=dt,n.patchClass=pe,n.wrapWithCurrentZone=je,n.filterProperties=ot,n.attachOriginToPatched=ue,n._redefineProperty=Object.defineProperty,n.patchCallbacks=Ot,n.getGlobalObjects=()=>({globalSources:Qe,zoneSymbolEventNames:te,eventNames:i,isBrowser:Ge,isMix:Xe,isNode:Pe,TRUE_STR:ce,FALSE_STR:ae,ZONE_SYMBOL_PREFIX:me,ADD_EVENT_LISTENER_STR:Le,REMOVE_EVENT_LISTENER_STR:Me})})}(t)})(it),function Ct(t){t.__load_patch("legacy",r=>{const c=r[t.__symbol__("legacyPatch")];c&&c()}),t.__load_patch("timers",r=>{const c="set",n="clear";Ee(r,c,n,"Timeout"),Ee(r,c,n,"Interval"),Ee(r,c,n,"Immediate")}),t.__load_patch("requestAnimationFrame",r=>{Ee(r,"request","cancel","AnimationFrame"),Ee(r,"mozRequest","mozCancel","AnimationFrame"),Ee(r,"webkitRequest","webkitCancel","AnimationFrame")}),t.__load_patch("blocking",(r,c)=>{const n=["alert","prompt","confirm"];for(let i=0;ifunction(C,T){return c.current.run(_,r,T,m)})}),t.__load_patch("EventTarget",(r,c,n)=>{(function wt(t,r){r.patchEventPrototype(t,r)})(r,n),function Pt(t,r){if(Zone[r.symbol("patchEventTarget")])return;const{eventNames:c,zoneSymbolEventNames:n,TRUE_STR:i,FALSE_STR:u,ZONE_SYMBOL_PREFIX:_}=r.getGlobalObjects();for(let m=0;m{pe("MutationObserver"),pe("WebKitMutationObserver")}),t.__load_patch("IntersectionObserver",(r,c,n)=>{pe("IntersectionObserver")}),t.__load_patch("FileReader",(r,c,n)=>{pe("FileReader")}),t.__load_patch("on_property",(r,c,n)=>{!function Rt(t,r){if(Pe&&!Xe||Zone[t.symbol("patchEvents")])return;const c=r.__Zone_ignore_on_properties;let n=[];if(Ge){const i=window;n=n.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);const u=function gt(){try{const t=de.navigator.userAgent;if(-1!==t.indexOf("MSIE ")||-1!==t.indexOf("Trident/"))return!0}catch{}return!1}()?[{target:i,ignoreProperties:["error"]}]:[];st(i,Fe(i),c&&c.concat(u),Ie(i))}n=n.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let i=0;i{!function bt(t,r){const{isBrowser:c,isMix:n}=r.getGlobalObjects();(c||n)&&t.customElements&&"customElements"in t&&r.patchCallbacks(r,t.customElements,"customElements","define",["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback","formAssociatedCallback","formDisabledCallback","formResetCallback","formStateRestoreCallback"])}(r,n)}),t.__load_patch("XHR",(r,c)=>{!function C(T){const Z=T.XMLHttpRequest;if(!Z)return;const P=Z.prototype;let W=P[Ze],x=P[Ae];if(!W){const w=T.XMLHttpRequestEventTarget;if(w){const v=w.prototype;W=v[Ze],x=v[Ae]}}const re="readystatechange",X="scheduled";function b(w){const v=w.data,S=v.target;S[_]=!1,S[m]=!1;const K=S[u];W||(W=S[Ze],x=S[Ae]),K&&x.call(S,re,K);const q=S[u]=()=>{if(S.readyState===S.DONE)if(!v.aborted&&S[_]&&w.state===X){const d=S[c.__symbol__("loadfalse")];if(0!==S.status&&d&&d.length>0){const e=w.invoke;w.invoke=function(){const o=S[c.__symbol__("loadfalse")];for(let p=0;pfunction(w,v){return w[i]=0==v[2],w[E]=v[1],z.apply(w,v)}),B=H("fetchTaskAborting"),g=H("fetchTaskScheduling"),U=le(P,"send",()=>function(w,v){if(!0===c.current[g]||w[i])return U.apply(w,v);{const S={target:w,url:w[E],isPeriodic:!1,args:v,aborted:!1},K=He("XMLHttpRequest.send",h,S,b,F);w&&!0===w[m]&&!S.aborted&&K.state===X&&K.invoke()}}),O=le(P,"abort",()=>function(w,v){const S=function j(w){return w[n]}(w);if(S&&"string"==typeof S.type){if(null==S.cancelFn||S.data&&S.data.aborted)return;S.zone.cancelTask(S)}else if(!0===c.current[B])return O.apply(w,v)})}(r);const n=H("xhrTask"),i=H("xhrSync"),u=H("xhrListener"),_=H("xhrScheduled"),E=H("xhrURL"),m=H("xhrErrorBeforeScheduled")}),t.__load_patch("geolocation",r=>{r.navigator&&r.navigator.geolocation&&function Et(t,r){const c=t.constructor.name;for(let n=0;n{const m=function(){return E.apply(this,xe(arguments,c+"."+i))};return ue(m,E),m})(u)}}}(r.navigator.geolocation,["getCurrentPosition","watchPosition"])}),t.__load_patch("PromiseRejectionEvent",(r,c)=>{function n(i){return function(u){rt(r,i).forEach(E=>{const m=r.PromiseRejectionEvent;if(m){const C=new m(i,{promise:u.promise,reason:u.rejection});E.invoke(C)}})}}r.PromiseRejectionEvent&&(c[H("unhandledPromiseRejectionHandler")]=n("unhandledrejection"),c[H("rejectionHandledHandler")]=n("rejectionhandled"))}),t.__load_patch("queueMicrotask",(r,c,n)=>{!function vt(t,r){r.patchMethod(t,"queueMicrotask",c=>function(n,i){Zone.current.scheduleMicroTask("queueMicrotask",i[0])})}(r,n)})}(it)}},ee=>{ee(ee.s=6935)}]); \ No newline at end of file diff --git a/docs/runtime.048d90275c60126e.js b/docs/runtime.048d90275c60126e.js deleted file mode 100644 index 2b7c6b3..0000000 --- a/docs/runtime.048d90275c60126e.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,v={},m={};function r(e){var i=m[e];if(void 0!==i)return i.exports;var t=m[e]={exports:{}};return v[e].call(t.exports,t,t.exports,r),t.exports}r.m=v,e=[],r.O=(i,t,o,d)=>{if(!t){var a=1/0;for(n=0;n=d)&&Object.keys(r.O).every(b=>r.O[b](t[u]))?t.splice(u--,1):(s=!1,d0&&e[n-1][2]>d;n--)e[n]=e[n-1];e[n]=[t,o,d]},r.d=(e,i)=>{for(var t in i)r.o(i,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:i[t]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((i,t)=>(r.f[t](e,i),i),[])),r.u=e=>e+"."+{39:"61769452f9c238cb",509:"ec6a8d82178da6d9",772:"0440337245892f34",876:"ad26e918280ccdc0"}[e]+".js",r.miniCssF=e=>{},r.o=(e,i)=>Object.prototype.hasOwnProperty.call(e,i),(()=>{var e={},i="demo-showcase:";r.l=(t,o,d,n)=>{if(e[t])e[t].push(o);else{var a,s;if(void 0!==d)for(var u=document.getElementsByTagName("script"),l=0;l{a.onerror=a.onload=null,clearTimeout(p);var h=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),h&&h.forEach(_=>_(b)),g)return g(b)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=c.bind(null,a.onerror),a.onload=c.bind(null,a.onload),s&&document.head.appendChild(a)}}})(),r.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:i=>i},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="",(()=>{var e={121:0};r.f.j=(o,d)=>{var n=r.o(e,o)?e[o]:void 0;if(0!==n)if(n)d.push(n[2]);else if(121!=o){var a=new Promise((f,c)=>n=e[o]=[f,c]);d.push(n[2]=a);var s=r.p+r.u(o),u=new Error;r.l(s,f=>{if(r.o(e,o)&&(0!==(n=e[o])&&(e[o]=void 0),n)){var c=f&&("load"===f.type?"missing":f.type),p=f&&f.target&&f.target.src;u.message="Loading chunk "+o+" failed.\n("+c+": "+p+")",u.name="ChunkLoadError",u.type=c,u.request=p,n[1](u)}},"chunk-"+o,o)}else e[o]=0},r.O.j=o=>0===e[o];var i=(o,d)=>{var u,l,[n,a,s]=d,f=0;if(n.some(p=>0!==e[p])){for(u in a)r.o(a,u)&&(r.m[u]=a[u]);if(s)var c=s(r)}for(o&&o(d);f0&&Oe(a.width)/o.offsetWidth||1,h=o.offsetHeight>0&&Oe(a.height)/o.offsetHeight||1);var g=(ue(o)?M(o):window).visualViewport,u=!_e()&&r,d=(a.left+(u&&g?g.offsetLeft:0))/p,b=(a.top+(u&&g?g.offsetTop:0))/h,v=a.width/p,m=a.height/h;return{width:v,height:m,top:b,right:d+v,bottom:b+m,left:d,x:d,y:b}}function de(o){var s=M(o);return{scrollLeft:s.pageXOffset,scrollTop:s.pageYOffset}}function se(o){return o?(o.nodeName||"").toLowerCase():null}function oe(o){return((ue(o)?o.ownerDocument:o.document)||window.document).documentElement}function xe(o){return ne(oe(o)).left+de(o).scrollLeft}function fe(o){return M(o).getComputedStyle(o)}function Xe(o){var s=fe(o),r=s.overflow,a=s.overflowX,p=s.overflowY;return/auto|scroll|overlay|hidden/.test(r+p+a)}function Z(o,s,r){r===void 0&&(r=!1);var a,p,h=W(s),g=W(s)&&function(m){var S=m.getBoundingClientRect(),T=Oe(S.width)/m.offsetWidth||1,C=Oe(S.height)/m.offsetHeight||1;return T!==1||C!==1}(s),u=oe(s),d=ne(o,g,r),b={scrollLeft:0,scrollTop:0},v={x:0,y:0};return(h||!h&&!r)&&((se(s)!=="body"||Xe(u))&&(b=(a=s)!==M(a)&&W(a)?{scrollLeft:(p=a).scrollLeft,scrollTop:p.scrollTop}:de(a)),W(s)?((v=ne(s,!0)).x+=s.clientLeft,v.y+=s.clientTop):u&&(v.x=xe(u))),{x:d.left+b.scrollLeft-v.x,y:d.top+b.scrollTop-v.y,width:d.width,height:d.height}}function K(o){var s=ne(o),r=o.offsetWidth,a=o.offsetHeight;return Math.abs(s.width-r)<=1&&(r=s.width),Math.abs(s.height-a)<=1&&(a=s.height),{x:o.offsetLeft,y:o.offsetTop,width:r,height:a}}function R(o){return se(o)==="html"?o:o.assignedSlot||o.parentNode||(Ke(o)?o.host:null)||oe(o)}function _t(o){return["html","body","#document"].indexOf(se(o))>=0?o.ownerDocument.body:W(o)&&Xe(o)?o:_t(R(o))}function ke(o,s){var r;s===void 0&&(s=[]);var a=_t(o),p=a===((r=o.ownerDocument)==null?void 0:r.body),h=M(a),g=p?[h].concat(h.visualViewport||[],Xe(a)?a:[]):a,u=s.concat(g);return p?u:u.concat(ke(R(g)))}function ui(o){return["table","td","th"].indexOf(se(o))>=0}function Ht(o){return W(o)&&fe(o).position!=="fixed"?o.offsetParent:null}function Ye(o){for(var s=M(o),r=Ht(o);r&&ui(r)&&fe(r).position==="static";)r=Ht(r);return r&&(se(r)==="html"||se(r)==="body"&&fe(r).position==="static")?s:r||function(a){var p=/firefox/i.test(ie());if(/Trident/i.test(ie())&&W(a)&&fe(a).position==="fixed")return null;var h=R(a);for(Ke(h)&&(h=h.host);W(h)&&["html","body"].indexOf(se(h))<0;){var g=fe(h);if(g.transform!=="none"||g.perspective!=="none"||g.contain==="paint"||["transform","perspective"].indexOf(g.willChange)!==-1||p&&g.willChange==="filter"||p&&g.filter&&g.filter!=="none")return h;h=h.parentNode}return null}(o)||s}var q="top",U="bottom",G="right",Q="left",at="auto",He=[q,U,G,Q],Le="start",Be="end",bt="viewport",Se="popper",Bt=He.reduce(function(o,s){return o.concat([s+"-"+Le,s+"-"+Be])},[]),vt=[].concat(He,[at]).reduce(function(o,s){return o.concat([s,s+"-"+Le,s+"-"+Be])},[]),c=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function yt(o){var s=new Map,r=new Set,a=[];function p(h){r.add(h.name),[].concat(h.requires||[],h.requiresIfExists||[]).forEach(function(g){if(!r.has(g)){var u=s.get(g);u&&p(u)}}),a.push(h)}return o.forEach(function(h){s.set(h.name,h)}),o.forEach(function(h){r.has(h.name)||p(h)}),a}function wt(o,s){var r=s.getRootNode&&s.getRootNode();if(o.contains(s))return!0;if(r&&Ke(r)){var a=s;do{if(a&&o.isSameNode(a))return!0;a=a.parentNode||a.host}while(a)}return!1}function Ue(o){return Object.assign({},o,{left:o.x,top:o.y,right:o.x+o.width,bottom:o.y+o.height})}function pe(o,s,r){return s===bt?Ue(function(a,p){var h=M(a),g=oe(a),u=h.visualViewport,d=g.clientWidth,b=g.clientHeight,v=0,m=0;if(u){d=u.width,b=u.height;var S=_e();(S||!S&&p==="fixed")&&(v=u.offsetLeft,m=u.offsetTop)}return{width:d,height:b,x:v+xe(a),y:m}}(o,r)):ue(s)?function(a,p){var h=ne(a,!1,p==="fixed");return h.top=h.top+a.clientTop,h.left=h.left+a.clientLeft,h.bottom=h.top+a.clientHeight,h.right=h.left+a.clientWidth,h.width=a.clientWidth,h.height=a.clientHeight,h.x=h.left,h.y=h.top,h}(s,r):Ue(function(a){var p,h=oe(a),g=de(a),u=(p=a.ownerDocument)==null?void 0:p.body,d=me(h.scrollWidth,h.clientWidth,u?u.scrollWidth:0,u?u.clientWidth:0),b=me(h.scrollHeight,h.clientHeight,u?u.scrollHeight:0,u?u.clientHeight:0),v=-g.scrollLeft+xe(a),m=-g.scrollTop;return fe(u||h).direction==="rtl"&&(v+=me(h.clientWidth,u?u.clientWidth:0)-d),{width:d,height:b,x:v,y:m}}(oe(o)))}function Ge(o,s,r,a){var p=s==="clippingParents"?function(d){var b=ke(R(d)),v=["absolute","fixed"].indexOf(fe(d).position)>=0&&W(d)?Ye(d):d;return ue(v)?b.filter(function(m){return ue(m)&&wt(m,v)&&se(m)!=="body"}):[]}(o):[].concat(s),h=[].concat(p,[r]),g=h[0],u=h.reduce(function(d,b){var v=pe(o,b,a);return d.top=me(v.top,d.top),d.right=Qe(v.right,d.right),d.bottom=Qe(v.bottom,d.bottom),d.left=me(v.left,d.left),d},pe(o,g,a));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function B(o){return o.split("-")[0]}function Te(o){return o.split("-")[1]}function y(o){return["top","bottom"].indexOf(o)>=0?"x":"y"}function Je(o){var s,r=o.reference,a=o.element,p=o.placement,h=p?B(p):null,g=p?Te(p):null,u=r.x+r.width/2-a.width/2,d=r.y+r.height/2-a.height/2;switch(h){case q:s={x:u,y:r.y-a.height};break;case U:s={x:u,y:r.y+r.height};break;case G:s={x:r.x+r.width,y:d};break;case Q:s={x:r.x-a.width,y:d};break;default:s={x:r.x,y:r.y}}var b=h?y(h):null;if(b!=null){var v=b==="y"?"height":"width";switch(g){case Le:s[b]=s[b]-(r[v]/2-a[v]/2);break;case Be:s[b]=s[b]+(r[v]/2-a[v]/2)}}return s}function At(o){return Object.assign({},{top:0,right:0,bottom:0,left:0},o)}function zt(o,s){return s.reduce(function(r,a){return r[a]=o,r},{})}function ze(o,s){s===void 0&&(s={});var r=s,a=r.placement,p=a===void 0?o.placement:a,h=r.strategy,g=h===void 0?o.strategy:h,u=r.boundary,d=u===void 0?"clippingParents":u,b=r.rootBoundary,v=b===void 0?bt:b,m=r.elementContext,S=m===void 0?Se:m,T=r.altBoundary,C=T!==void 0&&T,O=r.padding,w=O===void 0?0:O,P=At(typeof w!="number"?w:zt(w,He)),N=S===Se?"reference":Se,L=o.rects.popper,I=o.elements[C?N:S],E=Ge(ue(I)?I:I.contextElement||oe(o.elements.popper),d,v,g),A=ne(o.elements.reference),$=Je({reference:A,element:L,strategy:"absolute",placement:p}),x=Ue(Object.assign({},L,$)),D=S===Se?x:A,F={top:E.top-D.top+P.top,bottom:D.bottom-E.bottom+P.bottom,left:E.left-D.left+P.left,right:D.right-E.right+P.right},V=o.modifiersData.offset;if(S===Se&&V){var ae=V[p];Object.keys(F).forEach(function(le){var ve=[G,U].indexOf(le)>=0?1:-1,ge=[q,U].indexOf(le)>=0?"y":"x";F[le]+=ae[ge]*ve})}return F}var We={placement:"bottom",modifiers:[],strategy:"absolute"};function Et(){for(var o=arguments.length,s=new Array(o),r=0;r=0?-1:1,P=typeof C=="function"?C(Object.assign({},T,{placement:S})):C,N=P[0],L=P[1];return N=N||0,L=(L||0)*w,[Q,G].indexOf(O)>=0?{x:L,y:N}:{x:N,y:L}}(m,s.rects,h),v},{}),u=g[s.placement],d=u.x,b=u.y;s.modifiersData.popperOffsets!=null&&(s.modifiersData.popperOffsets.x+=d,s.modifiersData.popperOffsets.y+=b),s.modifiersData[a]=g}},lt={left:"right",right:"left",bottom:"top",top:"bottom"};function re(o){return o.replace(/left|right|bottom|top/g,function(s){return lt[s]})}var qt={start:"end",end:"start"};function Re(o){return o.replace(/start|end/g,function(s){return qt[s]})}function qe(o,s){s===void 0&&(s={});var r=s,a=r.placement,p=r.boundary,h=r.rootBoundary,g=r.padding,u=r.flipVariations,d=r.allowedAutoPlacements,b=d===void 0?vt:d,v=Te(a),m=v?u?Bt:Bt.filter(function(C){return Te(C)===v}):He,S=m.filter(function(C){return b.indexOf(C)>=0});S.length===0&&(S=m);var T=S.reduce(function(C,O){return C[O]=ze(o,{placement:O,boundary:p,rootBoundary:h,padding:g})[B(O)],C},{});return Object.keys(T).sort(function(C,O){return T[C]-T[O]})}var $e={name:"flip",enabled:!0,phase:"main",fn:function(o){var s=o.state,r=o.options,a=o.name;if(!s.modifiersData[a]._skip){for(var p=r.mainAxis,h=p===void 0||p,g=r.altAxis,u=g===void 0||g,d=r.fallbackPlacements,b=r.padding,v=r.boundary,m=r.rootBoundary,S=r.altBoundary,T=r.flipVariations,C=T===void 0||T,O=r.allowedAutoPlacements,w=s.options.placement,P=B(w),N=d||(P===w||!C?[re(w)]:function(ce){if(B(ce)===at)return[];var X=re(ce);return[Re(ce),X,Re(X)]}(w)),L=[w].concat(N).reduce(function(ce,X){return ce.concat(B(X)===at?qe(s,{placement:X,boundary:v,rootBoundary:m,padding:b,flipVariations:C,allowedAutoPlacements:O}):X)},[]),I=s.rects.reference,E=s.rects.popper,A=new Map,$=!0,x=L[0],D=0;D=0,ve=le?"width":"height",ge=ze(s,{placement:F,boundary:v,rootBoundary:m,altBoundary:S,padding:b}),z=le?ae?G:Q:ae?U:q;I[ve]>E[ve]&&(z=re(z));var ye=re(z),Ie=[];if(h&&Ie.push(ge[V]<=0),u&&Ie.push(ge[z]<=0,ge[ye]<=0),Ie.every(function(ce){return ce})){x=F,$=!1;break}A.set(F,Ie)}if($)for(var we=function(ce){var X=L.find(function(ht){var ut=A.get(ht);if(ut)return ut.slice(0,ce).every(function(dt){return dt})});if(X)return x=X,"break"},ee=C?3:1;ee>0&&we(ee)!=="break";ee--);s.placement!==x&&(s.modifiersData[a]._skip=!0,s.placement=x,s.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Ce(o,s,r){return me(o,Qe(s,r))}var Vt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(o){var s=o.state,r=o.options,a=o.name,p=r.mainAxis,h=p===void 0||p,g=r.altAxis,u=g!==void 0&&g,d=r.boundary,b=r.rootBoundary,v=r.altBoundary,m=r.padding,S=r.tether,T=S===void 0||S,C=r.tetherOffset,O=C===void 0?0:C,w=ze(s,{boundary:d,rootBoundary:b,padding:m,altBoundary:v}),P=B(s.placement),N=Te(s.placement),L=!N,I=y(P),E=I==="x"?"y":"x",A=s.modifiersData.popperOffsets,$=s.rects.reference,x=s.rects.popper,D=typeof O=="function"?O(Object.assign({},s.rects,{placement:s.placement})):O,F=typeof D=="number"?{mainAxis:D,altAxis:D}:Object.assign({mainAxis:0,altAxis:0},D),V=s.modifiersData.offset?s.modifiersData.offset[s.placement]:null,ae={x:0,y:0};if(A){if(h){var le,ve=I==="y"?q:Q,ge=I==="y"?U:G,z=I==="y"?"height":"width",ye=A[I],Ie=ye+w[ve],we=ye-w[ge],ee=T?-x[z]/2:0,ce=N===Le?$[z]:x[z],X=N===Le?-x[z]:-$[z],ht=s.elements.arrow,ut=T&&ht?K(ht):{width:0,height:0},dt=s.modifiersData["arrow#persistent"]?s.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},Ut=dt[ve],Gt=dt[ge],ft=Ce(0,$[z],ut[z]),gi=L?$[z]/2-ee-ft-Ut-F.mainAxis:ce-ft-Ut-F.mainAxis,mi=L?-$[z]/2+ee+ft+Gt+F.mainAxis:X+ft+Gt+F.mainAxis,J=s.elements.arrow&&Ye(s.elements.arrow),Jt=J?I==="y"?J.clientTop||0:J.clientLeft||0:0,kt=(le=V?.[I])!=null?le:0,Zt=ye+mi-kt,ei=Ce(T?Qe(Ie,ye+gi-kt-Jt):Ie,ye,T?me(we,Zt):we);A[I]=ei,ae[I]=ei-ye}if(u){var ti,ii=I==="x"?q:Q,pt=I==="x"?U:G,Pe=A[E],gt=E==="y"?"height":"width",Lt=Pe+w[ii],ni=Pe-w[pt],St=[q,Q].indexOf(P)!==-1,Dt=(ti=V?.[E])!=null?ti:0,$t=St?Lt:Pe-$[gt]-x[gt]-Dt+F.altAxis,It=St?Pe+$[gt]+x[gt]-Dt-F.altAxis:ni,Ze=T&&St?function(si,Pt,Y){var oi=Ce(si,Pt,Y);return oi>Y?Y:oi}($t,Pe,It):Ce(T?$t:Lt,Pe,T?It:ni);A[E]=Ze,ae[E]=Ze-Pe}s.modifiersData[a]=ae}},requiresIfExists:["offset"]},ct={name:"arrow",enabled:!0,phase:"main",fn:function(o){var s,r=o.state,a=o.name,p=o.options,h=r.elements.arrow,g=r.modifiersData.popperOffsets,u=B(r.placement),d=y(u),b=[Q,G].indexOf(u)>=0?"height":"width";if(h&&g){var v=function(x,D){return At(typeof(x=typeof x=="function"?x(Object.assign({},D.rects,{placement:D.placement})):x)!="number"?x:zt(x,He))}(p.padding,r),m=K(h),S=d==="y"?q:Q,T=d==="y"?U:G,C=r.rects.reference[b]+r.rects.reference[d]-g[d]-r.rects.popper[b],O=g[d]-r.rects.reference[d],w=Ye(h),P=w?d==="y"?w.clientHeight||0:w.clientWidth||0:0,N=C/2-O/2,L=v[S],I=P-m[b]-v[T],E=P/2-m[b]/2+N,A=Ce(L,E,I),$=d;r.modifiersData[a]=((s={})[$]=A,s.centerOffset=A-E,s)}},effect:function(o){var s=o.state,r=o.options.element,a=r===void 0?"[data-popper-arrow]":r;a!=null&&(typeof a!="string"||(a=s.elements.popper.querySelector(a)))&&wt(s.elements.popper,a)&&(s.elements.arrow=a)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Kt(o,s,r){return r===void 0&&(r={x:0,y:0}),{top:o.top-s.height-r.y,right:o.right-s.width+r.x,bottom:o.bottom-s.height+r.y,left:o.left-s.width-r.x}}function Qt(o){return[q,G,U,Q].some(function(s){return o[s]>=0})}var Xt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(o){var s=o.state,r=o.name,a=s.rects.reference,p=s.rects.popper,h=s.modifiersData.preventOverflow,g=ze(s,{elementContext:"reference"}),u=ze(s,{altBoundary:!0}),d=Kt(g,a),b=Kt(u,p,h),v=Qt(d),m=Qt(b);s.modifiersData[r]={referenceClippingOffsets:d,popperEscapeOffsets:b,isReferenceHidden:v,hasPopperEscaped:m},s.attributes.popper=Object.assign({},s.attributes.popper,{"data-popper-reference-hidden":v,"data-popper-escaped":m})}},fi=De({defaultModifiers:[Tt,Ct,Ot,xt]}),Yt=[Tt,Ct,Ot,xt,Rt,$e,Vt,ct,Xt],pi=De({defaultModifiers:Yt});j.applyStyles=xt,j.arrow=ct,j.computeStyles=Ot,j.createPopper=pi,j.createPopperLite=fi,j.defaultModifiers=Yt,j.detectOverflow=ze,j.eventListeners=Tt,j.flip=$e,j.hide=Xt,j.offset=Rt,j.popperGenerator=De,j.popperOffsets=Ct,j.preventOverflow=Vt,Object.defineProperty(j,"__esModule",{value:!0})});/*! + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */(function(j,M){typeof exports=="object"&&typeof module<"u"?module.exports=M(require("@popperjs/core")):typeof define=="function"&&define.amd?define(["@popperjs/core"],M):(j=typeof globalThis<"u"?globalThis:j||self).bootstrap=M(j.Popper)})(this,function(j){"use strict";function M(n){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const t in n)if(t!=="default"){const i=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,i.get?i:{enumerable:!0,get:()=>n[t]})}}return e.default=n,Object.freeze(e)}const ue=M(j),W=new Map,Ke={set(n,e,t){W.has(n)||W.set(n,new Map);const i=W.get(n);i.has(e)||i.size===0?i.set(e,t):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`)},get:(n,e)=>W.has(n)&&W.get(n).get(e)||null,remove(n,e){if(!W.has(n))return;const t=W.get(n);t.delete(e),t.size===0&&W.delete(n)}},me="transitionend",Qe=n=>(n&&window.CSS&&window.CSS.escape&&(n=n.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),n),Oe=n=>{n.dispatchEvent(new Event(me))},ie=n=>!(!n||typeof n!="object")&&(n.jquery!==void 0&&(n=n[0]),n.nodeType!==void 0),_e=n=>ie(n)?n.jquery?n[0]:n:typeof n=="string"&&n.length>0?document.querySelector(Qe(n)):null,ne=n=>{if(!ie(n)||n.getClientRects().length===0)return!1;const e=getComputedStyle(n).getPropertyValue("visibility")==="visible",t=n.closest("details:not([open])");if(!t)return e;if(t!==n){const i=n.closest("summary");if(i&&i.parentNode!==t||i===null)return!1}return e},de=n=>!n||n.nodeType!==Node.ELEMENT_NODE||!!n.classList.contains("disabled")||(n.disabled!==void 0?n.disabled:n.hasAttribute("disabled")&&n.getAttribute("disabled")!=="false"),se=n=>{if(!document.documentElement.attachShadow)return null;if(typeof n.getRootNode=="function"){const e=n.getRootNode();return e instanceof ShadowRoot?e:null}return n instanceof ShadowRoot?n:n.parentNode?se(n.parentNode):null},oe=()=>{},xe=n=>{n.offsetHeight},fe=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Xe=[],Z=()=>document.documentElement.dir==="rtl",K=n=>{var e;e=()=>{const t=fe();if(t){const i=n.NAME,l=t.fn[i];t.fn[i]=n.jQueryInterface,t.fn[i].Constructor=n,t.fn[i].noConflict=()=>(t.fn[i]=l,n.jQueryInterface)}},document.readyState==="loading"?(Xe.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of Xe)t()}),Xe.push(e)):e()},R=(n,e=[],t=n)=>typeof n=="function"?n(...e):t,_t=(n,e,t=!0)=>{if(!t)return void R(n);const i=(_=>{if(!_)return 0;let{transitionDuration:k,transitionDelay:H}=window.getComputedStyle(_);const te=Number.parseFloat(k),he=Number.parseFloat(H);return te||he?(k=k.split(",")[0],H=H.split(",")[0],1e3*(Number.parseFloat(k)+Number.parseFloat(H))):0})(e)+5;let l=!1;const f=({target:_})=>{_===e&&(l=!0,e.removeEventListener(me,f),R(n))};e.addEventListener(me,f),setTimeout(()=>{l||Oe(e)},i)},ke=(n,e,t,i)=>{const l=n.length;let f=n.indexOf(e);return f===-1?!t&&i?n[l-1]:n[0]:(f+=t?1:-1,i&&(f=(f+l)%l),n[Math.max(0,Math.min(f,l-1))])},ui=/[^.]*(?=\..*)\.|.*/,Ht=/\..*/,Ye=/::\d+$/,q={};let U=1;const G={mouseenter:"mouseover",mouseleave:"mouseout"},Q=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function at(n,e){return e&&`${e}::${U++}`||n.uidEvent||U++}function He(n){const e=at(n);return n.uidEvent=e,q[e]=q[e]||{},q[e]}function Le(n,e,t=null){return Object.values(n).find(i=>i.callable===e&&i.delegationSelector===t)}function Be(n,e,t){const i=typeof e=="string",l=i?t:e||t;let f=vt(n);return Q.has(f)||(f=n),[i,l,f]}function bt(n,e,t,i,l){if(typeof e!="string"||!n)return;let[f,_,k]=Be(e,t,i);e in G&&(_=(ot=>function(Ee){if(!Ee.relatedTarget||Ee.relatedTarget!==Ee.delegateTarget&&!Ee.delegateTarget.contains(Ee.relatedTarget))return ot.call(this,Ee)})(_));const H=He(n),te=H[k]||(H[k]={}),he=Le(te,_,f?t:null);if(he)return void(he.oneOff=he.oneOff&&l);const Ae=at(_,e.replace(ui,"")),Me=f?function(Fe,ot,Ee){return function Ft(hi){const Jn=Fe.querySelectorAll(ot);for(let{target:rt}=hi;rt&&rt!==this;rt=rt.parentNode)for(const Zn of Jn)if(Zn===rt)return yt(hi,{delegateTarget:rt}),Ft.oneOff&&c.off(Fe,hi.type,ot,Ee),Ee.apply(rt,[hi])}}(n,t,_):function(Fe,ot){return function Ee(Ft){return yt(Ft,{delegateTarget:Fe}),Ee.oneOff&&c.off(Fe,Ft.type,ot),ot.apply(Fe,[Ft])}}(n,_);Me.delegationSelector=f?t:null,Me.callable=_,Me.oneOff=l,Me.uidEvent=Ae,te[Ae]=Me,n.addEventListener(k,Me,f)}function Se(n,e,t,i,l){const f=Le(e[t],i,l);f&&(n.removeEventListener(t,f,!!l),delete e[t][f.uidEvent])}function Bt(n,e,t,i){const l=e[t]||{};for(const[f,_]of Object.entries(l))f.includes(i)&&Se(n,e,t,_.callable,_.delegationSelector)}function vt(n){return n=n.replace(Ht,""),G[n]||n}const c={on(n,e,t,i){bt(n,e,t,i,!1)},one(n,e,t,i){bt(n,e,t,i,!0)},off(n,e,t,i){if(typeof e!="string"||!n)return;const[l,f,_]=Be(e,t,i),k=_!==e,H=He(n),te=H[_]||{},he=e.startsWith(".");if(f===void 0){if(he)for(const Ae of Object.keys(H))Bt(n,H,Ae,e.slice(1));for(const[Ae,Me]of Object.entries(te)){const Fe=Ae.replace(Ye,"");k&&!e.includes(Fe)||Se(n,H,_,Me.callable,Me.delegationSelector)}}else{if(!Object.keys(te).length)return;Se(n,H,_,f,l?t:null)}},trigger(n,e,t){if(typeof e!="string"||!n)return null;const i=fe();let l=null,f=!0,_=!0,k=!1;e!==vt(e)&&i&&(l=i.Event(e,t),i(n).trigger(l),f=!l.isPropagationStopped(),_=!l.isImmediatePropagationStopped(),k=l.isDefaultPrevented());const H=yt(new Event(e,{bubbles:f,cancelable:!0}),t);return k&&H.preventDefault(),_&&n.dispatchEvent(H),H.defaultPrevented&&l&&l.preventDefault(),H}};function yt(n,e={}){for(const[t,i]of Object.entries(e))try{n[t]=i}catch{Object.defineProperty(n,t,{configurable:!0,get:()=>i})}return n}function wt(n){if(n==="true")return!0;if(n==="false")return!1;if(n===Number(n).toString())return Number(n);if(n===""||n==="null")return null;if(typeof n!="string")return n;try{return JSON.parse(decodeURIComponent(n))}catch{return n}}function Ue(n){return n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const pe={setDataAttribute(n,e,t){n.setAttribute(`data-bs-${Ue(e)}`,t)},removeDataAttribute(n,e){n.removeAttribute(`data-bs-${Ue(e)}`)},getDataAttributes(n){if(!n)return{};const e={},t=Object.keys(n.dataset).filter(i=>i.startsWith("bs")&&!i.startsWith("bsConfig"));for(const i of t){let l=i.replace(/^bs/,"");l=l.charAt(0).toLowerCase()+l.slice(1,l.length),e[l]=wt(n.dataset[i])}return e},getDataAttribute:(n,e)=>wt(n.getAttribute(`data-bs-${Ue(e)}`))};class Ge{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const i=ie(t)?pe.getDataAttribute(t,"config"):{};return{...this.constructor.Default,...typeof i=="object"?i:{},...ie(t)?pe.getDataAttributes(t):{},...typeof e=="object"?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(const[l,f]of Object.entries(t)){const _=e[l],k=ie(_)?"element":(i=_)==null?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(f).test(k))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${l}" provided type "${k}" but expected type "${f}".`)}var i}}class B extends Ge{constructor(e,t){super(),(e=_e(e))&&(this._element=e,this._config=this._getConfig(t),Ke.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Ke.remove(this._element,this.constructor.DATA_KEY),c.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,i=!0){_t(e,t,i)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return Ke.get(_e(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,typeof t=="object"?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const Te=n=>{let e=n.getAttribute("data-bs-target");if(!e||e==="#"){let t=n.getAttribute("href");if(!t||!t.includes("#")&&!t.startsWith("."))return null;t.includes("#")&&!t.startsWith("#")&&(t=`#${t.split("#")[1]}`),e=t&&t!=="#"?t.trim():null}return e?e.split(",").map(t=>Qe(t)).join(","):null},y={find:(n,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,n)),findOne:(n,e=document.documentElement)=>Element.prototype.querySelector.call(e,n),children:(n,e)=>[].concat(...n.children).filter(t=>t.matches(e)),parents(n,e){const t=[];let i=n.parentNode.closest(e);for(;i;)t.push(i),i=i.parentNode.closest(e);return t},prev(n,e){let t=n.previousElementSibling;for(;t;){if(t.matches(e))return[t];t=t.previousElementSibling}return[]},next(n,e){let t=n.nextElementSibling;for(;t;){if(t.matches(e))return[t];t=t.nextElementSibling}return[]},focusableChildren(n){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(t=>`${t}:not([tabindex^="-"])`).join(",");return this.find(e,n).filter(t=>!de(t)&&ne(t))},getSelectorFromElement(n){const e=Te(n);return e&&y.findOne(e)?e:null},getElementFromSelector(n){const e=Te(n);return e?y.findOne(e):null},getMultipleElementsFromSelector(n){const e=Te(n);return e?y.find(e):[]}},Je=(n,e="hide")=>{const t=`click.dismiss${n.EVENT_KEY}`,i=n.NAME;c.on(document,t,`[data-bs-dismiss="${i}"]`,function(l){if(["A","AREA"].includes(this.tagName)&&l.preventDefault(),de(this))return;const f=y.getElementFromSelector(this)||this.closest(`.${i}`);n.getOrCreateInstance(f)[e]()})},At=".bs.alert",zt=`close${At}`,ze=`closed${At}`;class We extends B{static get NAME(){return"alert"}close(){if(c.trigger(this._element,zt).defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),c.trigger(this._element,ze),this.dispose()}static jQueryInterface(e){return this.each(function(){const t=We.getOrCreateInstance(this);if(typeof e=="string"){if(t[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);t[e](this)}})}}Je(We,"close"),K(We);const Et='[data-bs-toggle="button"]';class De extends B{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(e){return this.each(function(){const t=De.getOrCreateInstance(this);e==="toggle"&&t[e]()})}}c.on(document,"click.bs.button.data-api",Et,n=>{n.preventDefault();const e=n.target.closest(Et);De.getOrCreateInstance(e).toggle()}),K(De);const be=".bs.swipe",Tt=`touchstart${be}`,Ct=`touchmove${be}`,di=`touchend${be}`,Wt=`pointerdown${be}`,Ot=`pointerup${be}`,xt={endCallback:null,leftCallback:null,rightCallback:null},Rt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class lt extends Ge{constructor(e,t){super(),this._element=e,e&<.isSupported()&&(this._config=this._getConfig(t),this._deltaX=0,this._supportPointerEvents=!!window.PointerEvent,this._initEvents())}static get Default(){return xt}static get DefaultType(){return Rt}static get NAME(){return"swipe"}dispose(){c.off(this._element,be)}_start(e){this._supportPointerEvents?this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX):this._deltaX=e.touches[0].clientX}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),R(this._config.endCallback)}_move(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}_handleSwipe(){const e=Math.abs(this._deltaX);if(e<=40)return;const t=e/this._deltaX;this._deltaX=0,t&&R(t>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(c.on(this._element,Wt,e=>this._start(e)),c.on(this._element,Ot,e=>this._end(e)),this._element.classList.add("pointer-event")):(c.on(this._element,Tt,e=>this._start(e)),c.on(this._element,Ct,e=>this._move(e)),c.on(this._element,di,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&(e.pointerType==="pen"||e.pointerType==="touch")}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const re=".bs.carousel",qt=".data-api",Re="next",qe="prev",$e="left",Ce="right",Vt=`slide${re}`,ct=`slid${re}`,Kt=`keydown${re}`,Qt=`mouseenter${re}`,Xt=`mouseleave${re}`,fi=`dragstart${re}`,Yt=`load${re}${qt}`,pi=`click${re}${qt}`,o="carousel",s="active",r=".active",a=".carousel-item",p=r+a,h={ArrowLeft:Ce,ArrowRight:$e},g={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},u={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class d extends B{constructor(e,t){super(e,t),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=y.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===o&&this.cycle()}static get Default(){return g}static get DefaultType(){return u}static get NAME(){return"carousel"}next(){this._slide(Re)}nextWhenVisible(){!document.hidden&&ne(this._element)&&this.next()}prev(){this._slide(qe)}pause(){this._isSliding&&Oe(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?c.one(this._element,ct,()=>this.cycle()):this.cycle())}to(e){const t=this._getItems();if(e>t.length-1||e<0)return;if(this._isSliding)return void c.one(this._element,ct,()=>this.to(e));const i=this._getItemIndex(this._getActive());if(i===e)return;const l=e>i?Re:qe;this._slide(l,t[e])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(e){return e.defaultInterval=e.interval,e}_addEventListeners(){this._config.keyboard&&c.on(this._element,Kt,e=>this._keydown(e)),this._config.pause==="hover"&&(c.on(this._element,Qt,()=>this.pause()),c.on(this._element,Xt,()=>this._maybeEnableCycle())),this._config.touch&<.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of y.find(".carousel-item img",this._element))c.on(t,fi,i=>i.preventDefault());const e={leftCallback:()=>this._slide(this._directionToOrder($e)),rightCallback:()=>this._slide(this._directionToOrder(Ce)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),500+this._config.interval))}};this._swipeHelper=new lt(this._element,e)}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=h[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}_getItemIndex(e){return this._getItems().indexOf(e)}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=y.findOne(r,this._indicatorsElement);t.classList.remove(s),t.removeAttribute("aria-current");const i=y.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);i&&(i.classList.add(s),i.setAttribute("aria-current","true"))}_updateInterval(){const e=this._activeElement||this._getActive();if(!e)return;const t=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=t||this._config.defaultInterval}_slide(e,t=null){if(this._isSliding)return;const i=this._getActive(),l=e===Re,f=t||ke(this._getItems(),i,l,this._config.wrap);if(f===i)return;const _=this._getItemIndex(f),k=Ae=>c.trigger(this._element,Ae,{relatedTarget:f,direction:this._orderToDirection(e),from:this._getItemIndex(i),to:_});if(k(Vt).defaultPrevented||!i||!f)return;const H=!!this._interval;this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(_),this._activeElement=f;const te=l?"carousel-item-start":"carousel-item-end",he=l?"carousel-item-next":"carousel-item-prev";f.classList.add(he),xe(f),i.classList.add(te),f.classList.add(te),this._queueCallback(()=>{f.classList.remove(te,he),f.classList.add(s),i.classList.remove(s,he,te),this._isSliding=!1,k(ct)},i,this._isAnimated()),H&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return y.findOne(p,this._element)}_getItems(){return y.find(a,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(e){return Z()?e===$e?qe:Re:e===$e?Re:qe}_orderToDirection(e){return Z()?e===qe?$e:Ce:e===qe?Ce:$e}static jQueryInterface(e){return this.each(function(){const t=d.getOrCreateInstance(this,e);if(typeof e!="number"){if(typeof e=="string"){if(t[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);t[e]()}}else t.to(e)})}}c.on(document,pi,"[data-bs-slide], [data-bs-slide-to]",function(n){const e=y.getElementFromSelector(this);if(!e||!e.classList.contains(o))return;n.preventDefault();const t=d.getOrCreateInstance(e),i=this.getAttribute("data-bs-slide-to");return i?(t.to(i),void t._maybeEnableCycle()):pe.getDataAttribute(this,"slide")==="next"?(t.next(),void t._maybeEnableCycle()):(t.prev(),void t._maybeEnableCycle())}),c.on(window,Yt,()=>{const n=y.find('[data-bs-ride="carousel"]');for(const e of n)d.getOrCreateInstance(e)}),K(d);const b=".bs.collapse",v=`show${b}`,m=`shown${b}`,S=`hide${b}`,T=`hidden${b}`,C=`click${b}.data-api`,O="show",w="collapse",P="collapsing",N=`:scope .${w} .${w}`,L='[data-bs-toggle="collapse"]',I={parent:null,toggle:!0},E={parent:"(null|element)",toggle:"boolean"};class A extends B{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const i=y.find(L);for(const l of i){const f=y.getSelectorFromElement(l),_=y.find(f).filter(k=>k===this._element);f!==null&&_.length&&this._triggerArray.push(l)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return I}static get DefaultType(){return E}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter(l=>l!==this._element).map(l=>A.getOrCreateInstance(l,{toggle:!1}))),e.length&&e[0]._isTransitioning||c.trigger(this._element,v).defaultPrevented)return;for(const l of e)l.hide();const t=this._getDimension();this._element.classList.remove(w),this._element.classList.add(P),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(P),this._element.classList.add(w,O),this._element.style[t]="",c.trigger(this._element,m)},this._element,!0),this._element.style[t]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown()||c.trigger(this._element,S).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,xe(this._element),this._element.classList.add(P),this._element.classList.remove(w,O);for(const t of this._triggerArray){const i=y.getElementFromSelector(t);i&&!this._isShown(i)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[e]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(P),this._element.classList.add(w),c.trigger(this._element,T)},this._element,!0)}_isShown(e=this._element){return e.classList.contains(O)}_configAfterMerge(e){return e.toggle=!!e.toggle,e.parent=_e(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(L);for(const t of e){const i=y.getElementFromSelector(t);i&&this._addAriaAndCollapsedClass([t],this._isShown(i))}}_getFirstLevelChildren(e){const t=y.find(N,this._config.parent);return y.find(e,this._config.parent).filter(i=>!t.includes(i))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const i of e)i.classList.toggle("collapsed",!t),i.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return typeof e=="string"&&/show|hide/.test(e)&&(t.toggle=!1),this.each(function(){const i=A.getOrCreateInstance(this,t);if(typeof e=="string"){if(i[e]===void 0)throw new TypeError(`No method named "${e}"`);i[e]()}})}}c.on(document,C,L,function(n){(n.target.tagName==="A"||n.delegateTarget&&n.delegateTarget.tagName==="A")&&n.preventDefault();for(const e of y.getMultipleElementsFromSelector(this))A.getOrCreateInstance(e,{toggle:!1}).toggle()}),K(A);const $="dropdown",x=".bs.dropdown",D=".data-api",F="ArrowUp",V="ArrowDown",ae=`hide${x}`,le=`hidden${x}`,ve=`show${x}`,ge=`shown${x}`,z=`click${x}${D}`,ye=`keydown${x}${D}`,Ie=`keyup${x}${D}`,we="show",ee='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',ce=`${ee}.${we}`,X=".dropdown-menu",ht=Z()?"top-end":"top-start",ut=Z()?"top-start":"top-end",dt=Z()?"bottom-end":"bottom-start",Ut=Z()?"bottom-start":"bottom-end",Gt=Z()?"left-start":"right-start",ft=Z()?"right-start":"left-start",gi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},mi={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class J extends B{constructor(e,t){super(e,t),this._popper=null,this._parent=this._element.parentNode,this._menu=y.next(this._element,X)[0]||y.prev(this._element,X)[0]||y.findOne(X,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return gi}static get DefaultType(){return mi}static get NAME(){return $}toggle(){return this._isShown()?this.hide():this.show()}show(){if(de(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!c.trigger(this._element,ve,e).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))c.on(t,"mouseover",oe);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(we),this._element.classList.add(we),c.trigger(this._element,ge,e)}}hide(){if(de(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(e){if(!c.trigger(this._element,ae,e).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))c.off(t,"mouseover",oe);this._popper&&this._popper.destroy(),this._menu.classList.remove(we),this._element.classList.remove(we),this._element.setAttribute("aria-expanded","false"),pe.removeDataAttribute(this._menu,"popper"),c.trigger(this._element,le,e)}}_getConfig(e){if(typeof(e=super._getConfig(e)).reference=="object"&&!ie(e.reference)&&typeof e.reference.getBoundingClientRect!="function")throw new TypeError(`${$.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createPopper(){if(ue===void 0)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;this._config.reference==="parent"?e=this._parent:ie(this._config.reference)?e=_e(this._config.reference):typeof this._config.reference=="object"&&(e=this._config.reference);const t=this._getPopperConfig();this._popper=ue.createPopper(e,this._menu,t)}_isShown(){return this._menu.classList.contains(we)}_getPlacement(){const e=this._parent;if(e.classList.contains("dropend"))return Gt;if(e.classList.contains("dropstart"))return ft;if(e.classList.contains("dropup-center"))return"top";if(e.classList.contains("dropdown-center"))return"bottom";const t=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return e.classList.contains("dropup")?t?ut:ht:t?Ut:dt}_detectNavbar(){return this._element.closest(".navbar")!==null}_getOffset(){const{offset:e}=this._config;return typeof e=="string"?e.split(",").map(t=>Number.parseInt(t,10)):typeof e=="function"?t=>e(t,this._element):e}_getPopperConfig(){const e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display==="static")&&(pe.setDataAttribute(this._menu,"popper","static"),e.modifiers=[{name:"applyStyles",enabled:!1}]),{...e,...R(this._config.popperConfig,[e])}}_selectMenuItem({key:e,target:t}){const i=y.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(l=>ne(l));i.length&&ke(i,t,e===V,!i.includes(t)).focus()}static jQueryInterface(e){return this.each(function(){const t=J.getOrCreateInstance(this,e);if(typeof e=="string"){if(t[e]===void 0)throw new TypeError(`No method named "${e}"`);t[e]()}})}static clearMenus(e){if(e.button===2||e.type==="keyup"&&e.key!=="Tab")return;const t=y.find(ce);for(const i of t){const l=J.getInstance(i);if(!l||l._config.autoClose===!1)continue;const f=e.composedPath(),_=f.includes(l._menu);if(f.includes(l._element)||l._config.autoClose==="inside"&&!_||l._config.autoClose==="outside"&&_||l._menu.contains(e.target)&&(e.type==="keyup"&&e.key==="Tab"||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;const k={relatedTarget:l._element};e.type==="click"&&(k.clickEvent=e),l._completeHide(k)}}static dataApiKeydownHandler(e){const t=/input|textarea/i.test(e.target.tagName),i=e.key==="Escape",l=[F,V].includes(e.key);if(!l&&!i||t&&!i)return;e.preventDefault();const f=this.matches(ee)?this:y.prev(this,ee)[0]||y.next(this,ee)[0]||y.findOne(ee,e.delegateTarget.parentNode),_=J.getOrCreateInstance(f);if(l)return e.stopPropagation(),_.show(),void _._selectMenuItem(e);_._isShown()&&(e.stopPropagation(),_.hide(),f.focus())}}c.on(document,ye,ee,J.dataApiKeydownHandler),c.on(document,ye,X,J.dataApiKeydownHandler),c.on(document,z,J.clearMenus),c.on(document,Ie,J.clearMenus),c.on(document,z,ee,function(n){n.preventDefault(),J.getOrCreateInstance(this).toggle()}),K(J);const Jt="backdrop",kt="show",Zt=`mousedown.bs.${Jt}`,ei={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},ti={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class ii extends Ge{constructor(e){super(),this._config=this._getConfig(e),this._isAppended=!1,this._element=null}static get Default(){return ei}static get DefaultType(){return ti}static get NAME(){return Jt}show(e){if(!this._config.isVisible)return void R(e);this._append();const t=this._getElement();this._config.isAnimated&&xe(t),t.classList.add(kt),this._emulateAnimation(()=>{R(e)})}hide(e){this._config.isVisible?(this._getElement().classList.remove(kt),this._emulateAnimation(()=>{this.dispose(),R(e)})):R(e)}dispose(){this._isAppended&&(c.off(this._element,Zt),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add("fade"),this._element=e}return this._element}_configAfterMerge(e){return e.rootElement=_e(e.rootElement),e}_append(){if(this._isAppended)return;const e=this._getElement();this._config.rootElement.append(e),c.on(e,Zt,()=>{R(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(e){_t(e,this._getElement(),this._config.isAnimated)}}const pt=".bs.focustrap",Pe=`focusin${pt}`,gt=`keydown.tab${pt}`,Lt="backward",ni={autofocus:!0,trapElement:null},St={autofocus:"boolean",trapElement:"element"};class Dt extends Ge{constructor(e){super(),this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return ni}static get DefaultType(){return St}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),c.off(document,pt),c.on(document,Pe,e=>this._handleFocusin(e)),c.on(document,gt,e=>this._handleKeydown(e)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,c.off(document,pt))}_handleFocusin(e){const{trapElement:t}=this._config;if(e.target===document||e.target===t||t.contains(e.target))return;const i=y.focusableChildren(t);i.length===0?t.focus():this._lastTabNavDirection===Lt?i[i.length-1].focus():i[0].focus()}_handleKeydown(e){e.key==="Tab"&&(this._lastTabNavDirection=e.shiftKey?Lt:"forward")}}const $t=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",It=".sticky-top",Ze="padding-right",si="margin-right";class Pt{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,Ze,t=>t+e),this._setElementAttributes($t,Ze,t=>t+e),this._setElementAttributes(It,si,t=>t-e)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,Ze),this._resetElementAttributes($t,Ze),this._resetElementAttributes(It,si)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,i){const l=this.getWidth();this._applyManipulationCallback(e,f=>{if(f!==this._element&&window.innerWidth>f.clientWidth+l)return;this._saveInitialAttribute(f,t);const _=window.getComputedStyle(f).getPropertyValue(t);f.style.setProperty(t,`${i(Number.parseFloat(_))}px`)})}_saveInitialAttribute(e,t){const i=e.style.getPropertyValue(t);i&&pe.setDataAttribute(e,t,i)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,i=>{const l=pe.getDataAttribute(i,t);l!==null?(pe.removeDataAttribute(i,t),i.style.setProperty(t,l)):i.style.removeProperty(t)})}_applyManipulationCallback(e,t){if(ie(e))t(e);else for(const i of y.find(e,this._element))t(i)}}const Y=".bs.modal",oi=`hide${Y}`,Yi=`hidePrevented${Y}`,Oi=`hidden${Y}`,xi=`show${Y}`,Ui=`shown${Y}`,Gi=`resize${Y}`,Ji=`click.dismiss${Y}`,Zi=`mousedown.dismiss${Y}`,en=`keydown.dismiss${Y}`,tn=`click${Y}.data-api`,ki="modal-open",Li="show",_i="modal-static",nn={backdrop:!0,focus:!0,keyboard:!0},sn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class et extends B{constructor(e,t){super(e,t),this._dialog=y.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Pt,this._addEventListeners()}static get Default(){return nn}static get DefaultType(){return sn}static get NAME(){return"modal"}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||this._isTransitioning||c.trigger(this._element,xi,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(ki),this._adjustDialog(),this._backdrop.show(()=>this._showElement(e)))}hide(){this._isShown&&!this._isTransitioning&&(c.trigger(this._element,oi).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Li),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated())))}dispose(){c.off(window,Y),c.off(this._dialog,Y),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new ii({isVisible:!!this._config.backdrop,isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Dt({trapElement:this._element})}_showElement(e){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const t=y.findOne(".modal-body",this._dialog);t&&(t.scrollTop=0),xe(this._element),this._element.classList.add(Li),this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,c.trigger(this._element,Ui,{relatedTarget:e})},this._dialog,this._isAnimated())}_addEventListeners(){c.on(this._element,en,e=>{e.key==="Escape"&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())}),c.on(window,Gi,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),c.on(this._element,Zi,e=>{c.one(this._element,Ji,t=>{this._element===e.target&&this._element===t.target&&(this._config.backdrop!=="static"?this._config.backdrop&&this.hide():this._triggerBackdropTransition())})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(ki),this._resetAdjustments(),this._scrollBar.reset(),c.trigger(this._element,Oi)})}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(c.trigger(this._element,Yi).defaultPrevented)return;const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._element.style.overflowY;t==="hidden"||this._element.classList.contains(_i)||(e||(this._element.style.overflowY="hidden"),this._element.classList.add(_i),this._queueCallback(()=>{this._element.classList.remove(_i),this._queueCallback(()=>{this._element.style.overflowY=t},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),i=t>0;if(i&&!e){const l=Z()?"paddingLeft":"paddingRight";this._element.style[l]=`${t}px`}if(!i&&e){const l=Z()?"paddingRight":"paddingLeft";this._element.style[l]=`${t}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(e,t){return this.each(function(){const i=et.getOrCreateInstance(this,e);if(typeof e=="string"){if(i[e]===void 0)throw new TypeError(`No method named "${e}"`);i[e](t)}})}}c.on(document,tn,'[data-bs-toggle="modal"]',function(n){const e=y.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&n.preventDefault(),c.one(e,xi,i=>{i.defaultPrevented||c.one(e,Oi,()=>{ne(this)&&this.focus()})});const t=y.findOne(".modal.show");t&&et.getInstance(t).hide(),et.getOrCreateInstance(e).toggle(this)}),Je(et),K(et);const Ne=".bs.offcanvas",Si=".data-api",on=`load${Ne}${Si}`,Di="show",$i="showing",Ii="hiding",Pi=".offcanvas.show",rn=`show${Ne}`,an=`shown${Ne}`,ln=`hide${Ne}`,Ni=`hidePrevented${Ne}`,ji=`hidden${Ne}`,cn=`resize${Ne}`,hn=`click${Ne}${Si}`,un=`keydown.dismiss${Ne}`,dn={backdrop:!0,keyboard:!0,scroll:!1},fn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class je extends B{constructor(e,t){super(e,t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return dn}static get DefaultType(){return fn}static get NAME(){return"offcanvas"}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||c.trigger(this._element,rn,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||new Pt().hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add($i),this._queueCallback(()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Di),this._element.classList.remove($i),c.trigger(this._element,an,{relatedTarget:e})},this._element,!0))}hide(){this._isShown&&(c.trigger(this._element,ln).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Ii),this._backdrop.hide(),this._queueCallback(()=>{this._element.classList.remove(Di,Ii),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new Pt().reset(),c.trigger(this._element,ji)},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const e=!!this._config.backdrop;return new ii({className:"offcanvas-backdrop",isVisible:e,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:e?()=>{this._config.backdrop!=="static"?this.hide():c.trigger(this._element,Ni)}:null})}_initializeFocusTrap(){return new Dt({trapElement:this._element})}_addEventListeners(){c.on(this._element,un,e=>{e.key==="Escape"&&(this._config.keyboard?this.hide():c.trigger(this._element,Ni))})}static jQueryInterface(e){return this.each(function(){const t=je.getOrCreateInstance(this,e);if(typeof e=="string"){if(t[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);t[e](this)}})}}c.on(document,hn,'[data-bs-toggle="offcanvas"]',function(n){const e=y.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),de(this))return;c.one(e,ji,()=>{ne(this)&&this.focus()});const t=y.findOne(Pi);t&&t!==e&&je.getInstance(t).hide(),je.getOrCreateInstance(e).toggle(this)}),c.on(window,on,()=>{for(const n of y.find(Pi))je.getOrCreateInstance(n).show()}),c.on(window,cn,()=>{for(const n of y.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(n).position!=="fixed"&&je.getOrCreateInstance(n).hide()}),Je(je),K(je);const Mi={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},pn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),gn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,mn=(n,e)=>{const t=n.nodeName.toLowerCase();return e.includes(t)?!pn.has(t)||!!gn.test(n.nodeValue):e.filter(i=>i instanceof RegExp).some(i=>i.test(t))},_n={allowList:Mi,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},bn={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},vn={entry:"(string|element|function|null)",selector:"(string|element)"};class yn extends Ge{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return _n}static get DefaultType(){return bn}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[l,f]of Object.entries(this._config.content))this._setContent(e,f,l);const t=e.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&t.classList.add(...i.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,i]of Object.entries(e))super._typeCheckConfig({selector:t,entry:i},vn)}_setContent(e,t,i){const l=y.findOne(i,e);l&&((t=this._resolvePossibleFunction(t))?ie(t)?this._putElementInTemplate(_e(t),l):this._config.html?l.innerHTML=this._maybeSanitize(t):l.textContent=t:l.remove())}_maybeSanitize(e){return this._config.sanitize?function(t,i,l){if(!t.length)return t;if(l&&typeof l=="function")return l(t);const f=new window.DOMParser().parseFromString(t,"text/html"),_=[].concat(...f.body.querySelectorAll("*"));for(const k of _){const H=k.nodeName.toLowerCase();if(!Object.keys(i).includes(H)){k.remove();continue}const te=[].concat(...k.attributes),he=[].concat(i["*"]||[],i[H]||[]);for(const Ae of te)mn(Ae,he)||k.removeAttribute(Ae.nodeName)}return f.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return R(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const wn=new Set(["sanitize","allowList","sanitizeFn"]),bi="fade",ri="show",Fi=".modal",Hi="hide.bs.modal",Nt="hover",vi="focus",An={AUTO:"auto",TOP:"top",RIGHT:Z()?"left":"right",BOTTOM:"bottom",LEFT:Z()?"right":"left"},En={allowList:Mi,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Tn={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class tt extends B{constructor(e,t){if(ue===void 0)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return En}static get DefaultType(){return Tn}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),c.off(this._element.closest(Fi),Hi,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=c.trigger(this._element,this.constructor.eventName("show")),t=(se(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:l}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(l.append(i),c.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(ri),"ontouchstart"in document.documentElement)for(const f of[].concat(...document.body.children))c.on(f,"mouseover",oe);this._queueCallback(()=>{c.trigger(this._element,this.constructor.eventName("shown")),this._isHovered===!1&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(this._isShown()&&!c.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(ri),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))c.off(e,"mouseover",oe);this._activeTrigger.click=!1,this._activeTrigger[vi]=!1,this._activeTrigger[Nt]=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),c.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return!!this._getTitle()}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(bi,ri),t.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(l=>{do l+=Math.floor(1e6*Math.random());while(document.getElementById(l));return l})(this.constructor.NAME).toString();return t.setAttribute("id",i),this._isAnimated()&&t.classList.add(bi),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new yn({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(bi)}_isShown(){return this.tip&&this.tip.classList.contains(ri)}_createPopper(e){const t=R(this._config.placement,[this,e,this._element]),i=An[t.toUpperCase()];return ue.createPopper(this._element,e,this._getPopperConfig(i))}_getOffset(){const{offset:e}=this._config;return typeof e=="string"?e.split(",").map(t=>Number.parseInt(t,10)):typeof e=="function"?t=>e(t,this._element):e}_resolvePossibleFunction(e){return R(e,[this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:i=>{this._getTipElement().setAttribute("data-popper-placement",i.state.placement)}}]};return{...t,...R(this._config.popperConfig,[t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if(t==="click")c.on(this._element,this.constructor.eventName("click"),this._config.selector,i=>{this._initializeOnDelegatedTarget(i).toggle()});else if(t!=="manual"){const i=t===Nt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),l=t===Nt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");c.on(this._element,i,this._config.selector,f=>{const _=this._initializeOnDelegatedTarget(f);_._activeTrigger[f.type==="focusin"?vi:Nt]=!0,_._enter()}),c.on(this._element,l,this._config.selector,f=>{const _=this._initializeOnDelegatedTarget(f);_._activeTrigger[f.type==="focusout"?vi:Nt]=_._element.contains(f.relatedTarget),_._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},c.on(this._element.closest(Fi),Hi,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=pe.getDataAttributes(this._element);for(const i of Object.keys(t))wn.has(i)&&delete t[i];return e={...t,...typeof e=="object"&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=e.container===!1?document.body:_e(e.container),typeof e.delay=="number"&&(e.delay={show:e.delay,hide:e.delay}),typeof e.title=="number"&&(e.title=e.title.toString()),typeof e.content=="number"&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,i]of Object.entries(this._config))this.constructor.Default[t]!==i&&(e[t]=i);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each(function(){const t=tt.getOrCreateInstance(this,e);if(typeof e=="string"){if(t[e]===void 0)throw new TypeError(`No method named "${e}"`);t[e]()}})}}K(tt);const Cn={...tt.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},On={...tt.DefaultType,content:"(null|string|element|function)"};class ai extends tt{static get Default(){return Cn}static get DefaultType(){return On}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(e){return this.each(function(){const t=ai.getOrCreateInstance(this,e);if(typeof e=="string"){if(t[e]===void 0)throw new TypeError(`No method named "${e}"`);t[e]()}})}}K(ai);const yi=".bs.scrollspy",xn=`activate${yi}`,Bi=`click${yi}`,kn=`load${yi}.data-api`,mt="active",wi="[href]",zi=".nav-link",Ln=`${zi}, .nav-item > ${zi}, .list-group-item`,Sn={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Dn={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class jt extends B{constructor(e,t){super(e,t),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Sn}static get DefaultType(){return Dn}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const e of this._observableSections.values())this._observer.observe(e)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(e){return e.target=_e(e.target)||document.body,e.rootMargin=e.offset?`${e.offset}px 0px -30%`:e.rootMargin,typeof e.threshold=="string"&&(e.threshold=e.threshold.split(",").map(t=>Number.parseFloat(t))),e}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(c.off(this._config.target,Bi),c.on(this._config.target,Bi,wi,e=>{const t=this._observableSections.get(e.target.hash);if(t){e.preventDefault();const i=this._rootElement||window,l=t.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:l,behavior:"smooth"});i.scrollTop=l}}))}_getNewObserver(){const e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(t=>this._observerCallback(t),e)}_observerCallback(e){const t=_=>this._targetLinks.get(`#${_.target.id}`),i=_=>{this._previousScrollData.visibleEntryTop=_.target.offsetTop,this._process(t(_))},l=(this._rootElement||document.documentElement).scrollTop,f=l>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=l;for(const _ of e){if(!_.isIntersecting){this._activeTarget=null,this._clearActiveClass(t(_));continue}const k=_.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(f&&k){if(i(_),!l)return}else f||k||i(_)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const e=y.find(wi,this._config.target);for(const t of e){if(!t.hash||de(t))continue;const i=y.findOne(decodeURI(t.hash),this._element);ne(i)&&(this._targetLinks.set(decodeURI(t.hash),t),this._observableSections.set(t.hash,i))}}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add(mt),this._activateParents(e),c.trigger(this._element,xn,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains("dropdown-item"))y.findOne(".dropdown-toggle",e.closest(".dropdown")).classList.add(mt);else for(const t of y.parents(e,".nav, .list-group"))for(const i of y.prev(t,Ln))i.classList.add(mt)}_clearActiveClass(e){e.classList.remove(mt);const t=y.find(`${wi}.${mt}`,e);for(const i of t)i.classList.remove(mt)}static jQueryInterface(e){return this.each(function(){const t=jt.getOrCreateInstance(this,e);if(typeof e=="string"){if(t[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);t[e]()}})}}c.on(window,kn,()=>{for(const n of y.find('[data-bs-spy="scroll"]'))jt.getOrCreateInstance(n)}),K(jt);const it=".bs.tab",$n=`hide${it}`,In=`hidden${it}`,Pn=`show${it}`,Nn=`shown${it}`,jn=`click${it}`,Mn=`keydown${it}`,Fn=`load${it}`,Hn="ArrowLeft",Wi="ArrowRight",Bn="ArrowUp",Ri="ArrowDown",Ai="Home",qi="End",nt="active",Vi="fade",Ei="show",Ki=".dropdown-toggle",Ti=`:not(${Ki})`,Qi='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Ci=`.nav-link${Ti}, .list-group-item${Ti}, [role="tab"]${Ti}, ${Qi}`,zn=`.${nt}[data-bs-toggle="tab"], .${nt}[data-bs-toggle="pill"], .${nt}[data-bs-toggle="list"]`;class st extends B{constructor(e){super(e),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),c.on(this._element,Mn,t=>this._keydown(t)))}static get NAME(){return"tab"}show(){const e=this._element;if(this._elemIsActive(e))return;const t=this._getActiveElem(),i=t?c.trigger(t,$n,{relatedTarget:e}):null;c.trigger(e,Pn,{relatedTarget:t}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){e&&(e.classList.add(nt),this._activate(y.getElementFromSelector(e)),this._queueCallback(()=>{e.getAttribute("role")==="tab"?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleDropDown(e,!0),c.trigger(e,Nn,{relatedTarget:t})):e.classList.add(Ei)},e,e.classList.contains(Vi)))}_deactivate(e,t){e&&(e.classList.remove(nt),e.blur(),this._deactivate(y.getElementFromSelector(e)),this._queueCallback(()=>{e.getAttribute("role")==="tab"?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleDropDown(e,!1),c.trigger(e,In,{relatedTarget:t})):e.classList.remove(Ei)},e,e.classList.contains(Vi)))}_keydown(e){if(![Hn,Wi,Bn,Ri,Ai,qi].includes(e.key))return;e.stopPropagation(),e.preventDefault();const t=this._getChildren().filter(l=>!de(l));let i;if([Ai,qi].includes(e.key))i=t[e.key===Ai?0:t.length-1];else{const l=[Wi,Ri].includes(e.key);i=ke(t,e.target,l,!0)}i&&(i.focus({preventScroll:!0}),st.getOrCreateInstance(i).show())}_getChildren(){return y.find(Ci,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,"role","tablist");for(const i of t)this._setInitialAttributesOnChild(i)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const t=this._elemIsActive(e),i=this._getOuterElement(e);e.setAttribute("aria-selected",t),i!==e&&this._setAttributeIfNotExists(i,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const t=y.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby",`${e.id}`))}_toggleDropDown(e,t){const i=this._getOuterElement(e);if(!i.classList.contains("dropdown"))return;const l=(f,_)=>{const k=y.findOne(f,i);k&&k.classList.toggle(_,t)};l(Ki,nt),l(".dropdown-menu",Ei),i.setAttribute("aria-expanded",t)}_setAttributeIfNotExists(e,t,i){e.hasAttribute(t)||e.setAttribute(t,i)}_elemIsActive(e){return e.classList.contains(nt)}_getInnerElement(e){return e.matches(Ci)?e:y.findOne(Ci,e)}_getOuterElement(e){return e.closest(".nav-item, .list-group-item")||e}static jQueryInterface(e){return this.each(function(){const t=st.getOrCreateInstance(this);if(typeof e=="string"){if(t[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);t[e]()}})}}c.on(document,jn,Qi,function(n){["A","AREA"].includes(this.tagName)&&n.preventDefault(),de(this)||st.getOrCreateInstance(this).show()}),c.on(window,Fn,()=>{for(const n of y.find(zn))st.getOrCreateInstance(n)}),K(st);const Ve=".bs.toast",Wn=`mouseover${Ve}`,Rn=`mouseout${Ve}`,qn=`focusin${Ve}`,Vn=`focusout${Ve}`,Kn=`hide${Ve}`,Qn=`hidden${Ve}`,Xn=`show${Ve}`,Yn=`shown${Ve}`,Xi="hide",li="show",ci="showing",Un={animation:"boolean",autohide:"boolean",delay:"number"},Gn={animation:!0,autohide:!0,delay:5e3};class Mt extends B{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Gn}static get DefaultType(){return Un}static get NAME(){return"toast"}show(){c.trigger(this._element,Xn).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Xi),xe(this._element),this._element.classList.add(li,ci),this._queueCallback(()=>{this._element.classList.remove(ci),c.trigger(this._element,Yn),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&(c.trigger(this._element,Kn).defaultPrevented||(this._element.classList.add(ci),this._queueCallback(()=>{this._element.classList.add(Xi),this._element.classList.remove(ci,li),c.trigger(this._element,Qn)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(li),super.dispose()}isShown(){return this._element.classList.contains(li)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const i=e.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){c.on(this._element,Wn,e=>this._onInteraction(e,!0)),c.on(this._element,Rn,e=>this._onInteraction(e,!1)),c.on(this._element,qn,e=>this._onInteraction(e,!0)),c.on(this._element,Vn,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each(function(){const t=Mt.getOrCreateInstance(this,e);if(typeof e=="string"){if(t[e]===void 0)throw new TypeError(`No method named "${e}"`);t[e](this)}})}}return Je(Mt),K(Mt),{Alert:We,Button:De,Carousel:d,Collapse:A,Dropdown:J,Modal:et,Offcanvas:je,Popover:ai,ScrollSpy:jt,Tab:st,Toast:Mt,Tooltip:tt}}); diff --git a/docs/stats.json b/docs/stats.json new file mode 100644 index 0000000..c05aec7 --- /dev/null +++ b/docs/stats.json @@ -0,0 +1,54957 @@ +{ + "inputs": { + "node_modules/@angular/core/fesm2022/primitives/signals.mjs": { + "bytes": 19245, + "imports": [ + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/isFunction.js": { + "bytes": 76, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/createErrorClass.js": { + "bytes": 309, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js": { + "bytes": 401, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/createErrorClass.js", + "kind": "import-statement", + "original": "./createErrorClass" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/arrRemove.js": { + "bytes": 135, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/Subscription.js": { + "bytes": 3354, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "./util/isFunction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js", + "kind": "import-statement", + "original": "./util/UnsubscriptionError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/arrRemove.js", + "kind": "import-statement", + "original": "./util/arrRemove" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/config.js": { + "bytes": 188, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js": { + "bytes": 553, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js": { + "bytes": 333, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/config.js", + "kind": "import-statement", + "original": "../config" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js", + "kind": "import-statement", + "original": "../scheduler/timeoutProvider" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/noop.js": { + "bytes": 26, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/NotificationFactories.js": { + "bytes": 393, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/errorContext.js": { + "bytes": 642, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/config.js", + "kind": "import-statement", + "original": "../config" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/Subscriber.js": { + "bytes": 4395, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "./util/isFunction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subscription.js", + "kind": "import-statement", + "original": "./Subscription" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/config.js", + "kind": "import-statement", + "original": "./config" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js", + "kind": "import-statement", + "original": "./util/reportUnhandledError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "./util/noop" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/NotificationFactories.js", + "kind": "import-statement", + "original": "./NotificationFactories" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js", + "kind": "import-statement", + "original": "./scheduler/timeoutProvider" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/errorContext.js", + "kind": "import-statement", + "original": "./util/errorContext" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/symbol/observable.js": { + "bytes": 105, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/identity.js": { + "bytes": 44, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/pipe.js": { + "bytes": 332, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "./identity" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/Observable.js": { + "bytes": 2856, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subscriber.js", + "kind": "import-statement", + "original": "./Subscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subscription.js", + "kind": "import-statement", + "original": "./Subscription" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/symbol/observable.js", + "kind": "import-statement", + "original": "./symbol/observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/pipe.js", + "kind": "import-statement", + "original": "./util/pipe" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/config.js", + "kind": "import-statement", + "original": "./config" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "./util/isFunction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/errorContext.js", + "kind": "import-statement", + "original": "./util/errorContext" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/lift.js": { + "bytes": 500, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "./isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js": { + "bytes": 1340, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subscriber.js", + "kind": "import-statement", + "original": "../Subscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/refCount.js": { + "bytes": 832, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js": { + "bytes": 1724, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subscription.js", + "kind": "import-statement", + "original": "../Subscription" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/refCount.js", + "kind": "import-statement", + "original": "../operators/refCount" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "../operators/OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/performanceTimestampProvider.js": { + "bytes": 159, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js": { + "bytes": 1063, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subscription.js", + "kind": "import-statement", + "original": "../Subscription" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/dom/animationFrames.js": { + "bytes": 1139, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/performanceTimestampProvider.js", + "kind": "import-statement", + "original": "../../scheduler/performanceTimestampProvider" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js", + "kind": "import-statement", + "original": "../../scheduler/animationFrameProvider" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js": { + "bytes": 263, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/createErrorClass.js", + "kind": "import-statement", + "original": "./createErrorClass" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/Subject.js": { + "bytes": 4193, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "./Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subscription.js", + "kind": "import-statement", + "original": "./Subscription" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js", + "kind": "import-statement", + "original": "./util/ObjectUnsubscribedError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/arrRemove.js", + "kind": "import-statement", + "original": "./util/arrRemove" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/errorContext.js", + "kind": "import-statement", + "original": "./util/errorContext" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/BehaviorSubject.js": { + "bytes": 617, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "./Subject" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js": { + "bytes": 138, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/ReplaySubject.js": { + "bytes": 1981, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "./Subject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js", + "kind": "import-statement", + "original": "./scheduler/dateTimestampProvider" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/AsyncSubject.js": { + "bytes": 889, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "./Subject" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/Action.js": { + "bytes": 195, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subscription.js", + "kind": "import-statement", + "original": "../Subscription" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js": { + "bytes": 563, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js": { + "bytes": 2236, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/Action.js", + "kind": "import-statement", + "original": "./Action" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js", + "kind": "import-statement", + "original": "./intervalProvider" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/arrRemove.js", + "kind": "import-statement", + "original": "../util/arrRemove" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/Immediate.js": { + "bytes": 627, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js": { + "bytes": 567, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/Immediate.js", + "kind": "import-statement", + "original": "../util/Immediate" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js": { + "bytes": 1088, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js", + "kind": "import-statement", + "original": "./AsyncAction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js", + "kind": "import-statement", + "original": "./immediateProvider" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/Scheduler.js": { + "bytes": 396, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js", + "kind": "import-statement", + "original": "./scheduler/dateTimestampProvider" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js": { + "bytes": 689, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Scheduler.js", + "kind": "import-statement", + "original": "../Scheduler" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js": { + "bytes": 682, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js", + "kind": "import-statement", + "original": "./AsyncScheduler" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/asap.js": { + "bytes": 187, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js", + "kind": "import-statement", + "original": "./AsapAction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js", + "kind": "import-statement", + "original": "./AsapScheduler" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/async.js": { + "bytes": 196, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js", + "kind": "import-statement", + "original": "./AsyncAction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js", + "kind": "import-statement", + "original": "./AsyncScheduler" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/QueueAction.js": { + "bytes": 768, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js", + "kind": "import-statement", + "original": "./AsyncAction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/QueueScheduler.js": { + "bytes": 105, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js", + "kind": "import-statement", + "original": "./AsyncScheduler" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/queue.js": { + "bytes": 196, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/QueueAction.js", + "kind": "import-statement", + "original": "./QueueAction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/QueueScheduler.js", + "kind": "import-statement", + "original": "./QueueScheduler" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js": { + "bytes": 1072, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js", + "kind": "import-statement", + "original": "./AsyncAction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js", + "kind": "import-statement", + "original": "./animationFrameProvider" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js": { + "bytes": 692, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js", + "kind": "import-statement", + "original": "./AsyncScheduler" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js": { + "bytes": 277, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js", + "kind": "import-statement", + "original": "./AnimationFrameAction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js", + "kind": "import-statement", + "original": "./AnimationFrameScheduler" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduler/VirtualTimeScheduler.js": { + "bytes": 2386, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js", + "kind": "import-statement", + "original": "./AsyncAction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subscription.js", + "kind": "import-statement", + "original": "../Subscription" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js", + "kind": "import-statement", + "original": "./AsyncScheduler" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/empty.js": { + "bytes": 338, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/isScheduler.js": { + "bytes": 128, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "./isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/args.js": { + "bytes": 460, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "./isFunction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isScheduler.js", + "kind": "import-statement", + "original": "./isScheduler" + } + ], + "format": "esm" + }, + "node_modules/tslib/tslib.es6.mjs": { + "bytes": 17344, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/isArrayLike.js": { + "bytes": 94, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/isPromise.js": { + "bytes": 159, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "./isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js": { + "bytes": 209, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/symbol/observable.js", + "kind": "import-statement", + "original": "../symbol/observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "./isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js": { + "bytes": 198, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "./isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js": { + "bytes": 304, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/symbol/iterator.js": { + "bytes": 198, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/isIterable.js": { + "bytes": 238, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/symbol/iterator.js", + "kind": "import-statement", + "original": "../symbol/iterator" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "./isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js": { + "bytes": 721, + "imports": [ + { + "path": "node_modules/tslib/tslib.es6.mjs", + "kind": "import-statement", + "original": "tslib" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "./isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js": { + "bytes": 3526, + "imports": [ + { + "path": "node_modules/tslib/tslib.es6.mjs", + "kind": "import-statement", + "original": "tslib" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isArrayLike.js", + "kind": "import-statement", + "original": "../util/isArrayLike" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isPromise.js", + "kind": "import-statement", + "original": "../util/isPromise" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js", + "kind": "import-statement", + "original": "../util/isInteropObservable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js", + "kind": "import-statement", + "original": "../util/isAsyncIterable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js", + "kind": "import-statement", + "original": "../util/throwUnobservableError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isIterable.js", + "kind": "import-statement", + "original": "../util/isIterable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js", + "kind": "import-statement", + "original": "../util/isReadableStreamLike" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js", + "kind": "import-statement", + "original": "../util/reportUnhandledError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/symbol/observable.js", + "kind": "import-statement", + "original": "../symbol/observable" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/executeSchedule.js": { + "bytes": 412, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/observeOn.js": { + "bytes": 576, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/executeSchedule.js", + "kind": "import-statement", + "original": "../util/executeSchedule" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js": { + "bytes": 226, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js": { + "bytes": 296, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/observeOn.js", + "kind": "import-statement", + "original": "../operators/observeOn" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js", + "kind": "import-statement", + "original": "../operators/subscribeOn" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js": { + "bytes": 293, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/observeOn.js", + "kind": "import-statement", + "original": "../operators/observeOn" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js", + "kind": "import-statement", + "original": "../operators/subscribeOn" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js": { + "bytes": 403, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js": { + "bytes": 961, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/symbol/iterator.js", + "kind": "import-statement", + "original": "../symbol/iterator" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/executeSchedule.js", + "kind": "import-statement", + "original": "../util/executeSchedule" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js": { + "bytes": 653, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/executeSchedule.js", + "kind": "import-statement", + "original": "../util/executeSchedule" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js": { + "bytes": 299, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js", + "kind": "import-statement", + "original": "./scheduleAsyncIterable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js", + "kind": "import-statement", + "original": "../util/isReadableStreamLike" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js": { + "bytes": 1446, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js", + "kind": "import-statement", + "original": "./scheduleObservable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js", + "kind": "import-statement", + "original": "./schedulePromise" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js", + "kind": "import-statement", + "original": "./scheduleArray" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js", + "kind": "import-statement", + "original": "./scheduleIterable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js", + "kind": "import-statement", + "original": "./scheduleAsyncIterable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js", + "kind": "import-statement", + "original": "../util/isInteropObservable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isPromise.js", + "kind": "import-statement", + "original": "../util/isPromise" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isArrayLike.js", + "kind": "import-statement", + "original": "../util/isArrayLike" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isIterable.js", + "kind": "import-statement", + "original": "../util/isIterable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js", + "kind": "import-statement", + "original": "../util/isAsyncIterable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js", + "kind": "import-statement", + "original": "../util/throwUnobservableError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js", + "kind": "import-statement", + "original": "../util/isReadableStreamLike" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js", + "kind": "import-statement", + "original": "./scheduleReadableStreamLike" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/from.js": { + "bytes": 205, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js", + "kind": "import-statement", + "original": "../scheduled/scheduled" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "./innerFrom" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/of.js": { + "bytes": 180, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/args.js", + "kind": "import-statement", + "original": "../util/args" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/from.js", + "kind": "import-statement", + "original": "./from" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/throwError.js": { + "bytes": 424, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/Notification.js": { + "bytes": 2429, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/empty.js", + "kind": "import-statement", + "original": "./observable/empty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/of.js", + "kind": "import-statement", + "original": "./observable/of" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/throwError.js", + "kind": "import-statement", + "original": "./observable/throwError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "./util/isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/isObservable.js": { + "bytes": 225, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "./isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/EmptyError.js": { + "bytes": 228, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/createErrorClass.js", + "kind": "import-statement", + "original": "./createErrorClass" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/lastValueFrom.js": { + "bytes": 592, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/EmptyError.js", + "kind": "import-statement", + "original": "./util/EmptyError" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/firstValueFrom.js": { + "bytes": 601, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/EmptyError.js", + "kind": "import-statement", + "original": "./util/EmptyError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subscriber.js", + "kind": "import-statement", + "original": "./Subscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/ArgumentOutOfRangeError.js": { + "bytes": 265, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/createErrorClass.js", + "kind": "import-statement", + "original": "./createErrorClass" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/NotFoundError.js": { + "bytes": 226, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/createErrorClass.js", + "kind": "import-statement", + "original": "./createErrorClass" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/SequenceError.js": { + "bytes": 226, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/createErrorClass.js", + "kind": "import-statement", + "original": "./createErrorClass" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/isDate.js": { + "bytes": 88, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/timeout.js": { + "bytes": 2349, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/async.js", + "kind": "import-statement", + "original": "../scheduler/async" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isDate.js", + "kind": "import-statement", + "original": "../util/isDate" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/createErrorClass.js", + "kind": "import-statement", + "original": "../util/createErrorClass" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/executeSchedule.js", + "kind": "import-statement", + "original": "../util/executeSchedule" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/map.js": { + "bytes": 355, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js": { + "bytes": 239, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/map.js", + "kind": "import-statement", + "original": "../operators/map" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/bindCallbackInternals.js": { + "bytes": 1761, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/isScheduler.js", + "kind": "import-statement", + "original": "../util/isScheduler" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js", + "kind": "import-statement", + "original": "../operators/subscribeOn" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js", + "kind": "import-statement", + "original": "../util/mapOneOrManyArgs" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/observeOn.js", + "kind": "import-statement", + "original": "../operators/observeOn" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/AsyncSubject.js", + "kind": "import-statement", + "original": "../AsyncSubject" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/bindCallback.js": { + "bytes": 219, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/bindCallbackInternals.js", + "kind": "import-statement", + "original": "./bindCallbackInternals" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/bindNodeCallback.js": { + "bytes": 222, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/bindCallbackInternals.js", + "kind": "import-statement", + "original": "./bindCallbackInternals" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js": { + "bytes": 608, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/createObject.js": { + "bytes": 128, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/combineLatest.js": { + "bytes": 2168, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js", + "kind": "import-statement", + "original": "../util/argsArgArrayOrObject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/from.js", + "kind": "import-statement", + "original": "./from" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "../util/identity" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js", + "kind": "import-statement", + "original": "../util/mapOneOrManyArgs" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/args.js", + "kind": "import-statement", + "original": "../util/args" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/createObject.js", + "kind": "import-statement", + "original": "../util/createObject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "../operators/OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/executeSchedule.js", + "kind": "import-statement", + "original": "../util/executeSchedule" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js": { + "bytes": 1853, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/executeSchedule.js", + "kind": "import-statement", + "original": "../util/executeSchedule" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/mergeMap.js": { + "bytes": 636, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/map.js", + "kind": "import-statement", + "original": "./map" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js", + "kind": "import-statement", + "original": "./mergeInternals" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/mergeAll.js": { + "bytes": 177, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeMap.js", + "kind": "import-statement", + "original": "./mergeMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "../util/identity" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/concatAll.js": { + "bytes": 93, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeAll.js", + "kind": "import-statement", + "original": "./mergeAll" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/concat.js": { + "bytes": 218, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/concatAll.js", + "kind": "import-statement", + "original": "../operators/concatAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/args.js", + "kind": "import-statement", + "original": "../util/args" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/from.js", + "kind": "import-statement", + "original": "./from" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/defer.js": { + "bytes": 234, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "./innerFrom" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/connectable.js": { + "bytes": 759, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "../Subject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/defer.js", + "kind": "import-statement", + "original": "./defer" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/forkJoin.js": { + "bytes": 1528, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js", + "kind": "import-statement", + "original": "../util/argsArgArrayOrObject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "./innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/args.js", + "kind": "import-statement", + "original": "../util/args" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "../operators/OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js", + "kind": "import-statement", + "original": "../util/mapOneOrManyArgs" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/createObject.js", + "kind": "import-statement", + "original": "../util/createObject" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/fromEvent.js": { + "bytes": 2004, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeMap.js", + "kind": "import-statement", + "original": "../operators/mergeMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isArrayLike.js", + "kind": "import-statement", + "original": "../util/isArrayLike" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js", + "kind": "import-statement", + "original": "../util/mapOneOrManyArgs" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/fromEventPattern.js": { + "bytes": 610, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js", + "kind": "import-statement", + "original": "../util/mapOneOrManyArgs" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/generate.js": { + "bytes": 1037, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "../util/identity" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isScheduler.js", + "kind": "import-statement", + "original": "../util/isScheduler" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/defer.js", + "kind": "import-statement", + "original": "./defer" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js", + "kind": "import-statement", + "original": "../scheduled/scheduleIterable" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/iif.js": { + "bytes": 155, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/defer.js", + "kind": "import-statement", + "original": "./defer" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/timer.js": { + "bytes": 963, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/async.js", + "kind": "import-statement", + "original": "../scheduler/async" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isScheduler.js", + "kind": "import-statement", + "original": "../util/isScheduler" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isDate.js", + "kind": "import-statement", + "original": "../util/isDate" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/interval.js": { + "bytes": 238, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/async.js", + "kind": "import-statement", + "original": "../scheduler/async" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/timer.js", + "kind": "import-statement", + "original": "./timer" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/merge.js": { + "bytes": 488, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeAll.js", + "kind": "import-statement", + "original": "../operators/mergeAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "./innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/empty.js", + "kind": "import-statement", + "original": "./empty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/args.js", + "kind": "import-statement", + "original": "../util/args" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/from.js", + "kind": "import-statement", + "original": "./from" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/never.js": { + "bytes": 168, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "../util/noop" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js": { + "bytes": 135, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/onErrorResumeNext.js": { + "bytes": 940, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js", + "kind": "import-statement", + "original": "../util/argsOrArgArray" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "../operators/OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "../util/noop" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "./innerFrom" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/pairs.js": { + "bytes": 120, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/from.js", + "kind": "import-statement", + "original": "./from" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/util/not.js": { + "bytes": 101, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/filter.js": { + "bytes": 356, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/partition.js": { + "bytes": 290, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/not.js", + "kind": "import-statement", + "original": "../util/not" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/filter.js", + "kind": "import-statement", + "original": "../operators/filter" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "./innerFrom" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/race.js": { + "bytes": 917, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "./innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js", + "kind": "import-statement", + "original": "../util/argsOrArgArray" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "../operators/OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/range.js": { + "bytes": 665, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/empty.js", + "kind": "import-statement", + "original": "./empty" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/using.js": { + "bytes": 491, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "./innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/empty.js", + "kind": "import-statement", + "original": "./empty" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/zip.js": { + "bytes": 1416, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "./innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js", + "kind": "import-statement", + "original": "../util/argsOrArgArray" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/empty.js", + "kind": "import-statement", + "original": "./empty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "../operators/OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/args.js", + "kind": "import-statement", + "original": "../util/args" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/types.js": { + "bytes": 11, + "imports": [], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/audit.js": { + "bytes": 1305, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/auditTime.js": { + "bytes": 249, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/async.js", + "kind": "import-statement", + "original": "../scheduler/async" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/audit.js", + "kind": "import-statement", + "original": "./audit" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/timer.js", + "kind": "import-statement", + "original": "../observable/timer" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/buffer.js": { + "bytes": 732, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "../util/noop" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/bufferCount.js": { + "bytes": 1155, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/arrRemove.js", + "kind": "import-statement", + "original": "../util/arrRemove" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/bufferTime.js": { + "bytes": 2362, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subscription.js", + "kind": "import-statement", + "original": "../Subscription" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/arrRemove.js", + "kind": "import-statement", + "original": "../util/arrRemove" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/async.js", + "kind": "import-statement", + "original": "../scheduler/async" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/args.js", + "kind": "import-statement", + "original": "../util/args" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/executeSchedule.js", + "kind": "import-statement", + "original": "../util/executeSchedule" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/bufferToggle.js": { + "bytes": 1202, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subscription.js", + "kind": "import-statement", + "original": "../Subscription" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "../util/noop" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/arrRemove.js", + "kind": "import-statement", + "original": "../util/arrRemove" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/bufferWhen.js": { + "bytes": 984, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "../util/noop" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/catchError.js": { + "bytes": 806, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/scanInternals.js": { + "bytes": 607, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/reduce.js": { + "bytes": 223, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/scanInternals.js", + "kind": "import-statement", + "original": "./scanInternals" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/toArray.js": { + "bytes": 271, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/reduce.js", + "kind": "import-statement", + "original": "./reduce" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/joinAllInternals.js": { + "bytes": 385, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "../util/identity" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js", + "kind": "import-statement", + "original": "../util/mapOneOrManyArgs" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/pipe.js", + "kind": "import-statement", + "original": "../util/pipe" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeMap.js", + "kind": "import-statement", + "original": "./mergeMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/toArray.js", + "kind": "import-statement", + "original": "./toArray" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/combineLatestAll.js": { + "bytes": 213, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/combineLatest.js", + "kind": "import-statement", + "original": "../observable/combineLatest" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/joinAllInternals.js", + "kind": "import-statement", + "original": "./joinAllInternals" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/combineAll.js": { + "bytes": 99, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/combineLatestAll.js", + "kind": "import-statement", + "original": "./combineLatestAll" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/combineLatest.js": { + "bytes": 604, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/combineLatest.js", + "kind": "import-statement", + "original": "../observable/combineLatest" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js", + "kind": "import-statement", + "original": "../util/argsOrArgArray" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js", + "kind": "import-statement", + "original": "../util/mapOneOrManyArgs" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/pipe.js", + "kind": "import-statement", + "original": "../util/pipe" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/args.js", + "kind": "import-statement", + "original": "../util/args" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/combineLatestWith.js": { + "bytes": 145, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/combineLatest.js", + "kind": "import-statement", + "original": "./combineLatest" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/concatMap.js": { + "bytes": 242, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeMap.js", + "kind": "import-statement", + "original": "./mergeMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/concatMapTo.js": { + "bytes": 278, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/concatMap.js", + "kind": "import-statement", + "original": "./concatMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/concat.js": { + "bytes": 369, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/concatAll.js", + "kind": "import-statement", + "original": "./concatAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/args.js", + "kind": "import-statement", + "original": "../util/args" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/from.js", + "kind": "import-statement", + "original": "../observable/from" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/concatWith.js": { + "bytes": 117, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/concat.js", + "kind": "import-statement", + "original": "./concat" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/observable/fromSubscribable.js": { + "bytes": 170, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/connect.js": { + "bytes": 563, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "../Subject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/fromSubscribable.js", + "kind": "import-statement", + "original": "../observable/fromSubscribable" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/count.js": { + "bytes": 168, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/reduce.js", + "kind": "import-statement", + "original": "./reduce" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/debounce.js": { + "bytes": 1218, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "../util/noop" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/debounceTime.js": { + "bytes": 1247, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/async.js", + "kind": "import-statement", + "original": "../scheduler/async" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js": { + "bytes": 474, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/take.js": { + "bytes": 495, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/empty.js", + "kind": "import-statement", + "original": "../observable/empty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js": { + "bytes": 294, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "../util/noop" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/mapTo.js": { + "bytes": 89, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/map.js", + "kind": "import-statement", + "original": "./map" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/delayWhen.js": { + "bytes": 597, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/concat.js", + "kind": "import-statement", + "original": "../observable/concat" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/take.js", + "kind": "import-statement", + "original": "./take" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js", + "kind": "import-statement", + "original": "./ignoreElements" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mapTo.js", + "kind": "import-statement", + "original": "./mapTo" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeMap.js", + "kind": "import-statement", + "original": "./mergeMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/delay.js": { + "bytes": 276, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/async.js", + "kind": "import-statement", + "original": "../scheduler/async" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/delayWhen.js", + "kind": "import-statement", + "original": "./delayWhen" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/timer.js", + "kind": "import-statement", + "original": "../observable/timer" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/dematerialize.js": { + "bytes": 368, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Notification.js", + "kind": "import-statement", + "original": "../Notification" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/distinct.js": { + "bytes": 693, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "../util/noop" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js": { + "bytes": 741, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "../util/identity" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/distinctUntilKeyChanged.js": { + "bytes": 217, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js", + "kind": "import-statement", + "original": "./distinctUntilChanged" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js": { + "bytes": 566, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/EmptyError.js", + "kind": "import-statement", + "original": "../util/EmptyError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/elementAt.js": { + "bytes": 575, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/ArgumentOutOfRangeError.js", + "kind": "import-statement", + "original": "../util/ArgumentOutOfRangeError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/filter.js", + "kind": "import-statement", + "original": "./filter" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js", + "kind": "import-statement", + "original": "./throwIfEmpty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js", + "kind": "import-statement", + "original": "./defaultIfEmpty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/take.js", + "kind": "import-statement", + "original": "./take" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/endWith.js": { + "bytes": 175, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/concat.js", + "kind": "import-statement", + "original": "../observable/concat" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/of.js", + "kind": "import-statement", + "original": "../observable/of" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/every.js": { + "bytes": 503, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/exhaustMap.js": { + "bytes": 950, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/map.js", + "kind": "import-statement", + "original": "./map" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/exhaustAll.js": { + "bytes": 152, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/exhaustMap.js", + "kind": "import-statement", + "original": "./exhaustMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "../util/identity" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/exhaust.js": { + "bytes": 78, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/exhaustAll.js", + "kind": "import-statement", + "original": "./exhaustAll" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/expand.js": { + "bytes": 350, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js", + "kind": "import-statement", + "original": "./mergeInternals" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/finalize.js": { + "bytes": 228, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/find.js": { + "bytes": 703, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/findIndex.js": { + "bytes": 186, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/find.js", + "kind": "import-statement", + "original": "./find" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/first.js": { + "bytes": 552, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/EmptyError.js", + "kind": "import-statement", + "original": "../util/EmptyError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/filter.js", + "kind": "import-statement", + "original": "./filter" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/take.js", + "kind": "import-statement", + "original": "./take" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js", + "kind": "import-statement", + "original": "./defaultIfEmpty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js", + "kind": "import-statement", + "original": "./throwIfEmpty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "../util/identity" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/groupBy.js": { + "bytes": 2433, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "../Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "../Subject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/isEmpty.js": { + "bytes": 391, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/takeLast.js": { + "bytes": 601, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/empty.js", + "kind": "import-statement", + "original": "../observable/empty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/last.js": { + "bytes": 563, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/EmptyError.js", + "kind": "import-statement", + "original": "../util/EmptyError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/filter.js", + "kind": "import-statement", + "original": "./filter" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/takeLast.js", + "kind": "import-statement", + "original": "./takeLast" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js", + "kind": "import-statement", + "original": "./throwIfEmpty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js", + "kind": "import-statement", + "original": "./defaultIfEmpty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "../util/identity" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/materialize.js": { + "bytes": 566, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Notification.js", + "kind": "import-statement", + "original": "../Notification" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/max.js": { + "bytes": 222, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/reduce.js", + "kind": "import-statement", + "original": "./reduce" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/flatMap.js": { + "bytes": 72, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeMap.js", + "kind": "import-statement", + "original": "./mergeMap" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/mergeMapTo.js": { + "bytes": 422, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeMap.js", + "kind": "import-statement", + "original": "./mergeMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/mergeScan.js": { + "bytes": 422, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js", + "kind": "import-statement", + "original": "./mergeInternals" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/merge.js": { + "bytes": 522, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js", + "kind": "import-statement", + "original": "../util/argsOrArgArray" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeAll.js", + "kind": "import-statement", + "original": "./mergeAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/args.js", + "kind": "import-statement", + "original": "../util/args" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/from.js", + "kind": "import-statement", + "original": "../observable/from" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/mergeWith.js": { + "bytes": 113, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/merge.js", + "kind": "import-statement", + "original": "./merge" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/min.js": { + "bytes": 222, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/reduce.js", + "kind": "import-statement", + "original": "./reduce" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/multicast.js": { + "bytes": 523, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js", + "kind": "import-statement", + "original": "../observable/ConnectableObservable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/connect.js", + "kind": "import-statement", + "original": "./connect" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/onErrorResumeNextWith.js": { + "bytes": 352, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js", + "kind": "import-statement", + "original": "../util/argsOrArgArray" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/onErrorResumeNext.js", + "kind": "import-statement", + "original": "../observable/onErrorResumeNext" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/pairwise.js": { + "bytes": 412, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/pluck.js": { + "bytes": 526, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/map.js", + "kind": "import-statement", + "original": "./map" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/publish.js": { + "bytes": 256, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "../Subject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/multicast.js", + "kind": "import-statement", + "original": "./multicast" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/connect.js", + "kind": "import-statement", + "original": "./connect" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/publishBehavior.js": { + "bytes": 323, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/BehaviorSubject.js", + "kind": "import-statement", + "original": "../BehaviorSubject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js", + "kind": "import-statement", + "original": "../observable/ConnectableObservable" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/publishLast.js": { + "bytes": 286, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/AsyncSubject.js", + "kind": "import-statement", + "original": "../AsyncSubject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js", + "kind": "import-statement", + "original": "../observable/ConnectableObservable" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/publishReplay.js": { + "bytes": 548, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/ReplaySubject.js", + "kind": "import-statement", + "original": "../ReplaySubject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/multicast.js", + "kind": "import-statement", + "original": "./multicast" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/raceWith.js": { + "bytes": 314, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/race.js", + "kind": "import-statement", + "original": "../observable/race" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "../util/identity" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/repeat.js": { + "bytes": 1640, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/empty.js", + "kind": "import-statement", + "original": "../observable/empty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/timer.js", + "kind": "import-statement", + "original": "../observable/timer" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/repeatWhen.js": { + "bytes": 1440, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "../Subject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/retry.js": { + "bytes": 1894, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "../util/identity" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/timer.js", + "kind": "import-statement", + "original": "../observable/timer" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/retryWhen.js": { + "bytes": 966, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "../Subject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/sample.js": { + "bytes": 700, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "../util/noop" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/sampleTime.js": { + "bytes": 252, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/async.js", + "kind": "import-statement", + "original": "../scheduler/async" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/sample.js", + "kind": "import-statement", + "original": "./sample" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/interval.js", + "kind": "import-statement", + "original": "../observable/interval" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/scan.js": { + "bytes": 214, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/scanInternals.js", + "kind": "import-statement", + "original": "./scanInternals" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/sequenceEqual.js": { + "bytes": 1412, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/share.js": { + "bytes": 2414, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "../Subject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subscriber.js", + "kind": "import-statement", + "original": "../Subscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/shareReplay.js": { + "bytes": 714, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/ReplaySubject.js", + "kind": "import-statement", + "original": "../ReplaySubject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/share.js", + "kind": "import-statement", + "original": "./share" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/single.js": { + "bytes": 981, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/EmptyError.js", + "kind": "import-statement", + "original": "../util/EmptyError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/SequenceError.js", + "kind": "import-statement", + "original": "../util/SequenceError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/NotFoundError.js", + "kind": "import-statement", + "original": "../util/NotFoundError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/skip.js": { + "bytes": 114, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/filter.js", + "kind": "import-statement", + "original": "./filter" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/skipLast.js": { + "bytes": 719, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "../util/identity" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/skipUntil.js": { + "bytes": 669, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "../util/noop" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/skipWhile.js": { + "bytes": 384, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/startWith.js": { + "bytes": 364, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/concat.js", + "kind": "import-statement", + "original": "../observable/concat" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/args.js", + "kind": "import-statement", + "original": "../util/args" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/switchMap.js": { + "bytes": 1041, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/switchAll.js": { + "bytes": 148, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/switchMap.js", + "kind": "import-statement", + "original": "./switchMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "../util/identity" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/switchMapTo.js": { + "bytes": 278, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/switchMap.js", + "kind": "import-statement", + "original": "./switchMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/switchScan.js": { + "bytes": 398, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/switchMap.js", + "kind": "import-statement", + "original": "./switchMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/takeUntil.js": { + "bytes": 448, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "../util/noop" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/takeWhile.js": { + "bytes": 454, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/tap.js": { + "bytes": 1426, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/isFunction.js", + "kind": "import-statement", + "original": "../util/isFunction" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "../util/identity" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/throttle.js": { + "bytes": 1569, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/throttleTime.js": { + "bytes": 308, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/async.js", + "kind": "import-statement", + "original": "../scheduler/async" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/throttle.js", + "kind": "import-statement", + "original": "./throttle" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/timer.js", + "kind": "import-statement", + "original": "../observable/timer" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/timeInterval.js": { + "bytes": 645, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/async.js", + "kind": "import-statement", + "original": "../scheduler/async" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/timeoutWith.js": { + "bytes": 716, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/async.js", + "kind": "import-statement", + "original": "../scheduler/async" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isDate.js", + "kind": "import-statement", + "original": "../util/isDate" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/timeout.js", + "kind": "import-statement", + "original": "./timeout" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/timestamp.js": { + "bytes": 260, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js", + "kind": "import-statement", + "original": "../scheduler/dateTimestampProvider" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/map.js", + "kind": "import-statement", + "original": "./map" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/window.js": { + "bytes": 1120, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "../Subject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "../util/noop" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/windowCount.js": { + "bytes": 1205, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "../Subject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/windowTime.js": { + "bytes": 2292, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "../Subject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/async.js", + "kind": "import-statement", + "original": "../scheduler/async" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subscription.js", + "kind": "import-statement", + "original": "../Subscription" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/arrRemove.js", + "kind": "import-statement", + "original": "../util/arrRemove" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/args.js", + "kind": "import-statement", + "original": "../util/args" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/executeSchedule.js", + "kind": "import-statement", + "original": "../util/executeSchedule" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/windowToggle.js": { + "bytes": 1759, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "../Subject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subscription.js", + "kind": "import-statement", + "original": "../Subscription" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "../util/noop" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/arrRemove.js", + "kind": "import-statement", + "original": "../util/arrRemove" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/windowWhen.js": { + "bytes": 1355, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "../Subject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js": { + "bytes": 1106, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js", + "kind": "import-statement", + "original": "./OperatorSubscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js", + "kind": "import-statement", + "original": "../observable/innerFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "../util/identity" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "../util/noop" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/args.js", + "kind": "import-statement", + "original": "../util/args" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/zipAll.js": { + "bytes": 173, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/zip.js", + "kind": "import-statement", + "original": "../observable/zip" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/joinAllInternals.js", + "kind": "import-statement", + "original": "./joinAllInternals" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/zip.js": { + "bytes": 236, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/observable/zip.js", + "kind": "import-statement", + "original": "../observable/zip" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/lift.js", + "kind": "import-statement", + "original": "../util/lift" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/zipWith.js": { + "bytes": 103, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/zip.js", + "kind": "import-statement", + "original": "./zip" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/index.js": { + "bytes": 10089, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/Observable.js", + "kind": "import-statement", + "original": "./internal/Observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js", + "kind": "import-statement", + "original": "./internal/observable/ConnectableObservable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/symbol/observable.js", + "kind": "import-statement", + "original": "./internal/symbol/observable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/dom/animationFrames.js", + "kind": "import-statement", + "original": "./internal/observable/dom/animationFrames" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subject.js", + "kind": "import-statement", + "original": "./internal/Subject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/BehaviorSubject.js", + "kind": "import-statement", + "original": "./internal/BehaviorSubject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/ReplaySubject.js", + "kind": "import-statement", + "original": "./internal/ReplaySubject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/AsyncSubject.js", + "kind": "import-statement", + "original": "./internal/AsyncSubject" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/asap.js", + "kind": "import-statement", + "original": "./internal/scheduler/asap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/async.js", + "kind": "import-statement", + "original": "./internal/scheduler/async" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/queue.js", + "kind": "import-statement", + "original": "./internal/scheduler/queue" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js", + "kind": "import-statement", + "original": "./internal/scheduler/animationFrame" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduler/VirtualTimeScheduler.js", + "kind": "import-statement", + "original": "./internal/scheduler/VirtualTimeScheduler" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Scheduler.js", + "kind": "import-statement", + "original": "./internal/Scheduler" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subscription.js", + "kind": "import-statement", + "original": "./internal/Subscription" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Subscriber.js", + "kind": "import-statement", + "original": "./internal/Subscriber" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/Notification.js", + "kind": "import-statement", + "original": "./internal/Notification" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/pipe.js", + "kind": "import-statement", + "original": "./internal/util/pipe" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/noop.js", + "kind": "import-statement", + "original": "./internal/util/noop" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/identity.js", + "kind": "import-statement", + "original": "./internal/util/identity" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/isObservable.js", + "kind": "import-statement", + "original": "./internal/util/isObservable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/lastValueFrom.js", + "kind": "import-statement", + "original": "./internal/lastValueFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/firstValueFrom.js", + "kind": "import-statement", + "original": "./internal/firstValueFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/ArgumentOutOfRangeError.js", + "kind": "import-statement", + "original": "./internal/util/ArgumentOutOfRangeError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/EmptyError.js", + "kind": "import-statement", + "original": "./internal/util/EmptyError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/NotFoundError.js", + "kind": "import-statement", + "original": "./internal/util/NotFoundError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js", + "kind": "import-statement", + "original": "./internal/util/ObjectUnsubscribedError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/SequenceError.js", + "kind": "import-statement", + "original": "./internal/util/SequenceError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/timeout.js", + "kind": "import-statement", + "original": "./internal/operators/timeout" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js", + "kind": "import-statement", + "original": "./internal/util/UnsubscriptionError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/bindCallback.js", + "kind": "import-statement", + "original": "./internal/observable/bindCallback" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/bindNodeCallback.js", + "kind": "import-statement", + "original": "./internal/observable/bindNodeCallback" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/combineLatest.js", + "kind": "import-statement", + "original": "./internal/observable/combineLatest" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/concat.js", + "kind": "import-statement", + "original": "./internal/observable/concat" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/connectable.js", + "kind": "import-statement", + "original": "./internal/observable/connectable" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/defer.js", + "kind": "import-statement", + "original": "./internal/observable/defer" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/empty.js", + "kind": "import-statement", + "original": "./internal/observable/empty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/forkJoin.js", + "kind": "import-statement", + "original": "./internal/observable/forkJoin" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/from.js", + "kind": "import-statement", + "original": "./internal/observable/from" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/fromEvent.js", + "kind": "import-statement", + "original": "./internal/observable/fromEvent" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/fromEventPattern.js", + "kind": "import-statement", + "original": "./internal/observable/fromEventPattern" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/generate.js", + "kind": "import-statement", + "original": "./internal/observable/generate" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/iif.js", + "kind": "import-statement", + "original": "./internal/observable/iif" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/interval.js", + "kind": "import-statement", + "original": "./internal/observable/interval" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/merge.js", + "kind": "import-statement", + "original": "./internal/observable/merge" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/never.js", + "kind": "import-statement", + "original": "./internal/observable/never" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/of.js", + "kind": "import-statement", + "original": "./internal/observable/of" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/onErrorResumeNext.js", + "kind": "import-statement", + "original": "./internal/observable/onErrorResumeNext" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/pairs.js", + "kind": "import-statement", + "original": "./internal/observable/pairs" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/partition.js", + "kind": "import-statement", + "original": "./internal/observable/partition" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/race.js", + "kind": "import-statement", + "original": "./internal/observable/race" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/range.js", + "kind": "import-statement", + "original": "./internal/observable/range" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/throwError.js", + "kind": "import-statement", + "original": "./internal/observable/throwError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/timer.js", + "kind": "import-statement", + "original": "./internal/observable/timer" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/using.js", + "kind": "import-statement", + "original": "./internal/observable/using" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/zip.js", + "kind": "import-statement", + "original": "./internal/observable/zip" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js", + "kind": "import-statement", + "original": "./internal/scheduled/scheduled" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/empty.js", + "kind": "import-statement", + "original": "./internal/observable/empty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/observable/never.js", + "kind": "import-statement", + "original": "./internal/observable/never" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/types.js", + "kind": "import-statement", + "original": "./internal/types" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/config.js", + "kind": "import-statement", + "original": "./internal/config" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/audit.js", + "kind": "import-statement", + "original": "./internal/operators/audit" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/auditTime.js", + "kind": "import-statement", + "original": "./internal/operators/auditTime" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/buffer.js", + "kind": "import-statement", + "original": "./internal/operators/buffer" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/bufferCount.js", + "kind": "import-statement", + "original": "./internal/operators/bufferCount" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/bufferTime.js", + "kind": "import-statement", + "original": "./internal/operators/bufferTime" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/bufferToggle.js", + "kind": "import-statement", + "original": "./internal/operators/bufferToggle" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/bufferWhen.js", + "kind": "import-statement", + "original": "./internal/operators/bufferWhen" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/catchError.js", + "kind": "import-statement", + "original": "./internal/operators/catchError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/combineAll.js", + "kind": "import-statement", + "original": "./internal/operators/combineAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/combineLatestAll.js", + "kind": "import-statement", + "original": "./internal/operators/combineLatestAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/combineLatestWith.js", + "kind": "import-statement", + "original": "./internal/operators/combineLatestWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/concatAll.js", + "kind": "import-statement", + "original": "./internal/operators/concatAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/concatMap.js", + "kind": "import-statement", + "original": "./internal/operators/concatMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/concatMapTo.js", + "kind": "import-statement", + "original": "./internal/operators/concatMapTo" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/concatWith.js", + "kind": "import-statement", + "original": "./internal/operators/concatWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/connect.js", + "kind": "import-statement", + "original": "./internal/operators/connect" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/count.js", + "kind": "import-statement", + "original": "./internal/operators/count" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/debounce.js", + "kind": "import-statement", + "original": "./internal/operators/debounce" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/debounceTime.js", + "kind": "import-statement", + "original": "./internal/operators/debounceTime" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js", + "kind": "import-statement", + "original": "./internal/operators/defaultIfEmpty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/delay.js", + "kind": "import-statement", + "original": "./internal/operators/delay" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/delayWhen.js", + "kind": "import-statement", + "original": "./internal/operators/delayWhen" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/dematerialize.js", + "kind": "import-statement", + "original": "./internal/operators/dematerialize" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/distinct.js", + "kind": "import-statement", + "original": "./internal/operators/distinct" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js", + "kind": "import-statement", + "original": "./internal/operators/distinctUntilChanged" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/distinctUntilKeyChanged.js", + "kind": "import-statement", + "original": "./internal/operators/distinctUntilKeyChanged" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/elementAt.js", + "kind": "import-statement", + "original": "./internal/operators/elementAt" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/endWith.js", + "kind": "import-statement", + "original": "./internal/operators/endWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/every.js", + "kind": "import-statement", + "original": "./internal/operators/every" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/exhaust.js", + "kind": "import-statement", + "original": "./internal/operators/exhaust" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/exhaustAll.js", + "kind": "import-statement", + "original": "./internal/operators/exhaustAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/exhaustMap.js", + "kind": "import-statement", + "original": "./internal/operators/exhaustMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/expand.js", + "kind": "import-statement", + "original": "./internal/operators/expand" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/filter.js", + "kind": "import-statement", + "original": "./internal/operators/filter" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/finalize.js", + "kind": "import-statement", + "original": "./internal/operators/finalize" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/find.js", + "kind": "import-statement", + "original": "./internal/operators/find" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/findIndex.js", + "kind": "import-statement", + "original": "./internal/operators/findIndex" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/first.js", + "kind": "import-statement", + "original": "./internal/operators/first" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/groupBy.js", + "kind": "import-statement", + "original": "./internal/operators/groupBy" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js", + "kind": "import-statement", + "original": "./internal/operators/ignoreElements" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/isEmpty.js", + "kind": "import-statement", + "original": "./internal/operators/isEmpty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/last.js", + "kind": "import-statement", + "original": "./internal/operators/last" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/map.js", + "kind": "import-statement", + "original": "./internal/operators/map" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mapTo.js", + "kind": "import-statement", + "original": "./internal/operators/mapTo" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/materialize.js", + "kind": "import-statement", + "original": "./internal/operators/materialize" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/max.js", + "kind": "import-statement", + "original": "./internal/operators/max" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeAll.js", + "kind": "import-statement", + "original": "./internal/operators/mergeAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/flatMap.js", + "kind": "import-statement", + "original": "./internal/operators/flatMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeMap.js", + "kind": "import-statement", + "original": "./internal/operators/mergeMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeMapTo.js", + "kind": "import-statement", + "original": "./internal/operators/mergeMapTo" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeScan.js", + "kind": "import-statement", + "original": "./internal/operators/mergeScan" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeWith.js", + "kind": "import-statement", + "original": "./internal/operators/mergeWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/min.js", + "kind": "import-statement", + "original": "./internal/operators/min" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/multicast.js", + "kind": "import-statement", + "original": "./internal/operators/multicast" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/observeOn.js", + "kind": "import-statement", + "original": "./internal/operators/observeOn" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/onErrorResumeNextWith.js", + "kind": "import-statement", + "original": "./internal/operators/onErrorResumeNextWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/pairwise.js", + "kind": "import-statement", + "original": "./internal/operators/pairwise" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/pluck.js", + "kind": "import-statement", + "original": "./internal/operators/pluck" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/publish.js", + "kind": "import-statement", + "original": "./internal/operators/publish" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/publishBehavior.js", + "kind": "import-statement", + "original": "./internal/operators/publishBehavior" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/publishLast.js", + "kind": "import-statement", + "original": "./internal/operators/publishLast" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/publishReplay.js", + "kind": "import-statement", + "original": "./internal/operators/publishReplay" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/raceWith.js", + "kind": "import-statement", + "original": "./internal/operators/raceWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/reduce.js", + "kind": "import-statement", + "original": "./internal/operators/reduce" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/repeat.js", + "kind": "import-statement", + "original": "./internal/operators/repeat" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/repeatWhen.js", + "kind": "import-statement", + "original": "./internal/operators/repeatWhen" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/retry.js", + "kind": "import-statement", + "original": "./internal/operators/retry" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/retryWhen.js", + "kind": "import-statement", + "original": "./internal/operators/retryWhen" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/refCount.js", + "kind": "import-statement", + "original": "./internal/operators/refCount" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/sample.js", + "kind": "import-statement", + "original": "./internal/operators/sample" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/sampleTime.js", + "kind": "import-statement", + "original": "./internal/operators/sampleTime" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/scan.js", + "kind": "import-statement", + "original": "./internal/operators/scan" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/sequenceEqual.js", + "kind": "import-statement", + "original": "./internal/operators/sequenceEqual" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/share.js", + "kind": "import-statement", + "original": "./internal/operators/share" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/shareReplay.js", + "kind": "import-statement", + "original": "./internal/operators/shareReplay" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/single.js", + "kind": "import-statement", + "original": "./internal/operators/single" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/skip.js", + "kind": "import-statement", + "original": "./internal/operators/skip" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/skipLast.js", + "kind": "import-statement", + "original": "./internal/operators/skipLast" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/skipUntil.js", + "kind": "import-statement", + "original": "./internal/operators/skipUntil" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/skipWhile.js", + "kind": "import-statement", + "original": "./internal/operators/skipWhile" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/startWith.js", + "kind": "import-statement", + "original": "./internal/operators/startWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js", + "kind": "import-statement", + "original": "./internal/operators/subscribeOn" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/switchAll.js", + "kind": "import-statement", + "original": "./internal/operators/switchAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/switchMap.js", + "kind": "import-statement", + "original": "./internal/operators/switchMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/switchMapTo.js", + "kind": "import-statement", + "original": "./internal/operators/switchMapTo" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/switchScan.js", + "kind": "import-statement", + "original": "./internal/operators/switchScan" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/take.js", + "kind": "import-statement", + "original": "./internal/operators/take" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/takeLast.js", + "kind": "import-statement", + "original": "./internal/operators/takeLast" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/takeUntil.js", + "kind": "import-statement", + "original": "./internal/operators/takeUntil" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/takeWhile.js", + "kind": "import-statement", + "original": "./internal/operators/takeWhile" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/tap.js", + "kind": "import-statement", + "original": "./internal/operators/tap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/throttle.js", + "kind": "import-statement", + "original": "./internal/operators/throttle" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/throttleTime.js", + "kind": "import-statement", + "original": "./internal/operators/throttleTime" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js", + "kind": "import-statement", + "original": "./internal/operators/throwIfEmpty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/timeInterval.js", + "kind": "import-statement", + "original": "./internal/operators/timeInterval" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/timeout.js", + "kind": "import-statement", + "original": "./internal/operators/timeout" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/timeoutWith.js", + "kind": "import-statement", + "original": "./internal/operators/timeoutWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/timestamp.js", + "kind": "import-statement", + "original": "./internal/operators/timestamp" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/toArray.js", + "kind": "import-statement", + "original": "./internal/operators/toArray" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/window.js", + "kind": "import-statement", + "original": "./internal/operators/window" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/windowCount.js", + "kind": "import-statement", + "original": "./internal/operators/windowCount" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/windowTime.js", + "kind": "import-statement", + "original": "./internal/operators/windowTime" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/windowToggle.js", + "kind": "import-statement", + "original": "./internal/operators/windowToggle" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/windowWhen.js", + "kind": "import-statement", + "original": "./internal/operators/windowWhen" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js", + "kind": "import-statement", + "original": "./internal/operators/withLatestFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/zipAll.js", + "kind": "import-statement", + "original": "./internal/operators/zipAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/zipWith.js", + "kind": "import-statement", + "original": "./internal/operators/zipWith" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/partition.js": { + "bytes": 218, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/not.js", + "kind": "import-statement", + "original": "../util/not" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/filter.js", + "kind": "import-statement", + "original": "./filter" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/internal/operators/race.js": { + "bytes": 174, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js", + "kind": "import-statement", + "original": "../util/argsOrArgArray" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/raceWith.js", + "kind": "import-statement", + "original": "./raceWith" + } + ], + "format": "esm" + }, + "node_modules/rxjs/dist/esm/operators/index.js": { + "bytes": 6843, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/internal/operators/audit.js", + "kind": "import-statement", + "original": "../internal/operators/audit" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/auditTime.js", + "kind": "import-statement", + "original": "../internal/operators/auditTime" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/buffer.js", + "kind": "import-statement", + "original": "../internal/operators/buffer" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/bufferCount.js", + "kind": "import-statement", + "original": "../internal/operators/bufferCount" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/bufferTime.js", + "kind": "import-statement", + "original": "../internal/operators/bufferTime" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/bufferToggle.js", + "kind": "import-statement", + "original": "../internal/operators/bufferToggle" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/bufferWhen.js", + "kind": "import-statement", + "original": "../internal/operators/bufferWhen" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/catchError.js", + "kind": "import-statement", + "original": "../internal/operators/catchError" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/combineAll.js", + "kind": "import-statement", + "original": "../internal/operators/combineAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/combineLatestAll.js", + "kind": "import-statement", + "original": "../internal/operators/combineLatestAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/combineLatest.js", + "kind": "import-statement", + "original": "../internal/operators/combineLatest" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/combineLatestWith.js", + "kind": "import-statement", + "original": "../internal/operators/combineLatestWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/concat.js", + "kind": "import-statement", + "original": "../internal/operators/concat" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/concatAll.js", + "kind": "import-statement", + "original": "../internal/operators/concatAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/concatMap.js", + "kind": "import-statement", + "original": "../internal/operators/concatMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/concatMapTo.js", + "kind": "import-statement", + "original": "../internal/operators/concatMapTo" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/concatWith.js", + "kind": "import-statement", + "original": "../internal/operators/concatWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/connect.js", + "kind": "import-statement", + "original": "../internal/operators/connect" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/count.js", + "kind": "import-statement", + "original": "../internal/operators/count" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/debounce.js", + "kind": "import-statement", + "original": "../internal/operators/debounce" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/debounceTime.js", + "kind": "import-statement", + "original": "../internal/operators/debounceTime" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js", + "kind": "import-statement", + "original": "../internal/operators/defaultIfEmpty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/delay.js", + "kind": "import-statement", + "original": "../internal/operators/delay" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/delayWhen.js", + "kind": "import-statement", + "original": "../internal/operators/delayWhen" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/dematerialize.js", + "kind": "import-statement", + "original": "../internal/operators/dematerialize" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/distinct.js", + "kind": "import-statement", + "original": "../internal/operators/distinct" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js", + "kind": "import-statement", + "original": "../internal/operators/distinctUntilChanged" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/distinctUntilKeyChanged.js", + "kind": "import-statement", + "original": "../internal/operators/distinctUntilKeyChanged" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/elementAt.js", + "kind": "import-statement", + "original": "../internal/operators/elementAt" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/endWith.js", + "kind": "import-statement", + "original": "../internal/operators/endWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/every.js", + "kind": "import-statement", + "original": "../internal/operators/every" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/exhaust.js", + "kind": "import-statement", + "original": "../internal/operators/exhaust" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/exhaustAll.js", + "kind": "import-statement", + "original": "../internal/operators/exhaustAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/exhaustMap.js", + "kind": "import-statement", + "original": "../internal/operators/exhaustMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/expand.js", + "kind": "import-statement", + "original": "../internal/operators/expand" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/filter.js", + "kind": "import-statement", + "original": "../internal/operators/filter" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/finalize.js", + "kind": "import-statement", + "original": "../internal/operators/finalize" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/find.js", + "kind": "import-statement", + "original": "../internal/operators/find" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/findIndex.js", + "kind": "import-statement", + "original": "../internal/operators/findIndex" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/first.js", + "kind": "import-statement", + "original": "../internal/operators/first" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/groupBy.js", + "kind": "import-statement", + "original": "../internal/operators/groupBy" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js", + "kind": "import-statement", + "original": "../internal/operators/ignoreElements" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/isEmpty.js", + "kind": "import-statement", + "original": "../internal/operators/isEmpty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/last.js", + "kind": "import-statement", + "original": "../internal/operators/last" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/map.js", + "kind": "import-statement", + "original": "../internal/operators/map" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mapTo.js", + "kind": "import-statement", + "original": "../internal/operators/mapTo" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/materialize.js", + "kind": "import-statement", + "original": "../internal/operators/materialize" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/max.js", + "kind": "import-statement", + "original": "../internal/operators/max" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/merge.js", + "kind": "import-statement", + "original": "../internal/operators/merge" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeAll.js", + "kind": "import-statement", + "original": "../internal/operators/mergeAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/flatMap.js", + "kind": "import-statement", + "original": "../internal/operators/flatMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeMap.js", + "kind": "import-statement", + "original": "../internal/operators/mergeMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeMapTo.js", + "kind": "import-statement", + "original": "../internal/operators/mergeMapTo" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeScan.js", + "kind": "import-statement", + "original": "../internal/operators/mergeScan" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/mergeWith.js", + "kind": "import-statement", + "original": "../internal/operators/mergeWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/min.js", + "kind": "import-statement", + "original": "../internal/operators/min" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/multicast.js", + "kind": "import-statement", + "original": "../internal/operators/multicast" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/observeOn.js", + "kind": "import-statement", + "original": "../internal/operators/observeOn" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/onErrorResumeNextWith.js", + "kind": "import-statement", + "original": "../internal/operators/onErrorResumeNextWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/pairwise.js", + "kind": "import-statement", + "original": "../internal/operators/pairwise" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/partition.js", + "kind": "import-statement", + "original": "../internal/operators/partition" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/pluck.js", + "kind": "import-statement", + "original": "../internal/operators/pluck" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/publish.js", + "kind": "import-statement", + "original": "../internal/operators/publish" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/publishBehavior.js", + "kind": "import-statement", + "original": "../internal/operators/publishBehavior" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/publishLast.js", + "kind": "import-statement", + "original": "../internal/operators/publishLast" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/publishReplay.js", + "kind": "import-statement", + "original": "../internal/operators/publishReplay" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/race.js", + "kind": "import-statement", + "original": "../internal/operators/race" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/raceWith.js", + "kind": "import-statement", + "original": "../internal/operators/raceWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/reduce.js", + "kind": "import-statement", + "original": "../internal/operators/reduce" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/repeat.js", + "kind": "import-statement", + "original": "../internal/operators/repeat" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/repeatWhen.js", + "kind": "import-statement", + "original": "../internal/operators/repeatWhen" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/retry.js", + "kind": "import-statement", + "original": "../internal/operators/retry" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/retryWhen.js", + "kind": "import-statement", + "original": "../internal/operators/retryWhen" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/refCount.js", + "kind": "import-statement", + "original": "../internal/operators/refCount" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/sample.js", + "kind": "import-statement", + "original": "../internal/operators/sample" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/sampleTime.js", + "kind": "import-statement", + "original": "../internal/operators/sampleTime" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/scan.js", + "kind": "import-statement", + "original": "../internal/operators/scan" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/sequenceEqual.js", + "kind": "import-statement", + "original": "../internal/operators/sequenceEqual" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/share.js", + "kind": "import-statement", + "original": "../internal/operators/share" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/shareReplay.js", + "kind": "import-statement", + "original": "../internal/operators/shareReplay" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/single.js", + "kind": "import-statement", + "original": "../internal/operators/single" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/skip.js", + "kind": "import-statement", + "original": "../internal/operators/skip" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/skipLast.js", + "kind": "import-statement", + "original": "../internal/operators/skipLast" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/skipUntil.js", + "kind": "import-statement", + "original": "../internal/operators/skipUntil" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/skipWhile.js", + "kind": "import-statement", + "original": "../internal/operators/skipWhile" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/startWith.js", + "kind": "import-statement", + "original": "../internal/operators/startWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js", + "kind": "import-statement", + "original": "../internal/operators/subscribeOn" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/switchAll.js", + "kind": "import-statement", + "original": "../internal/operators/switchAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/switchMap.js", + "kind": "import-statement", + "original": "../internal/operators/switchMap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/switchMapTo.js", + "kind": "import-statement", + "original": "../internal/operators/switchMapTo" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/switchScan.js", + "kind": "import-statement", + "original": "../internal/operators/switchScan" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/take.js", + "kind": "import-statement", + "original": "../internal/operators/take" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/takeLast.js", + "kind": "import-statement", + "original": "../internal/operators/takeLast" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/takeUntil.js", + "kind": "import-statement", + "original": "../internal/operators/takeUntil" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/takeWhile.js", + "kind": "import-statement", + "original": "../internal/operators/takeWhile" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/tap.js", + "kind": "import-statement", + "original": "../internal/operators/tap" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/throttle.js", + "kind": "import-statement", + "original": "../internal/operators/throttle" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/throttleTime.js", + "kind": "import-statement", + "original": "../internal/operators/throttleTime" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js", + "kind": "import-statement", + "original": "../internal/operators/throwIfEmpty" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/timeInterval.js", + "kind": "import-statement", + "original": "../internal/operators/timeInterval" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/timeout.js", + "kind": "import-statement", + "original": "../internal/operators/timeout" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/timeoutWith.js", + "kind": "import-statement", + "original": "../internal/operators/timeoutWith" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/timestamp.js", + "kind": "import-statement", + "original": "../internal/operators/timestamp" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/toArray.js", + "kind": "import-statement", + "original": "../internal/operators/toArray" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/window.js", + "kind": "import-statement", + "original": "../internal/operators/window" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/windowCount.js", + "kind": "import-statement", + "original": "../internal/operators/windowCount" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/windowTime.js", + "kind": "import-statement", + "original": "../internal/operators/windowTime" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/windowToggle.js", + "kind": "import-statement", + "original": "../internal/operators/windowToggle" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/windowWhen.js", + "kind": "import-statement", + "original": "../internal/operators/windowWhen" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js", + "kind": "import-statement", + "original": "../internal/operators/withLatestFrom" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/zip.js", + "kind": "import-statement", + "original": "../internal/operators/zip" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/zipAll.js", + "kind": "import-statement", + "original": "../internal/operators/zipAll" + }, + { + "path": "node_modules/rxjs/dist/esm/internal/operators/zipWith.js", + "kind": "import-statement", + "original": "../internal/operators/zipWith" + } + ], + "format": "esm" + }, + "node_modules/@angular/core/fesm2022/core.mjs": { + "bytes": 1450435, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/primitives/signals.mjs", + "kind": "import-statement", + "original": "@angular/core/primitives/signals" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/rxjs/dist/esm/operators/index.js", + "kind": "import-statement", + "original": "rxjs/operators" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/@angular/common/fesm2022/common.mjs": { + "bytes": 285260, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/@angular/common/fesm2022/http.mjs": { + "bytes": 116508, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/rxjs/dist/esm/operators/index.js", + "kind": "import-statement", + "original": "rxjs/operators" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs": { + "bytes": 78127, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "node_modules/@angular/common/fesm2022/http.mjs", + "kind": "import-statement", + "original": "@angular/common/http" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/@angular/router/fesm2022/router.mjs": { + "bytes": 282442, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "node_modules/rxjs/dist/esm/operators/index.js", + "kind": "import-statement", + "original": "rxjs/operators" + }, + { + "path": "node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs", + "kind": "import-statement", + "original": "@angular/platform-browser" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/page-home/page-home.component.ts": { + "bytes": 4998, + "imports": [ + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/router/fesm2022/router.mjs", + "kind": "import-statement", + "original": "@angular/router" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/router/fesm2022/router.mjs", + "kind": "import-statement", + "original": "@angular/router" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/misc.js": { + "bytes": 1507, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/interpolate.js": { + "bytes": 1752, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/color/spaces/lab.js": { + "bytes": 4607, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/color.js", + "kind": "import-statement", + "original": "../color" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/spaces/hcl.js", + "kind": "import-statement", + "original": "./hcl" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../../mol-math/interpolate" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/color/spaces/hcl.js": { + "bytes": 2819, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/spaces/lab.js", + "kind": "import-statement", + "original": "./lab" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/color/color.js": { + "bytes": 6282, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/spaces/hcl.js", + "kind": "import-statement", + "original": "./spaces/hcl" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/spaces/lab.js", + "kind": "import-statement", + "original": "./spaces/lab" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/string.js": { + "bytes": 3058, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/color/lists.js": { + "bytes": 11590, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/color.js", + "kind": "import-statement", + "original": "./color" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../string" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/bit-flags.js": { + "bytes": 566, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/string-builder.js": { + "bytes": 5027, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/now.js": { + "bytes": 1213, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/uuid.js": { + "bytes": 1172, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/now.js", + "kind": "import-statement", + "original": "../mol-util/now" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/mask.js": { + "bytes": 3995, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/id-factory.js": { + "bytes": 424, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/value-cell.js": { + "bytes": 1794, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "./id-factory" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/index.js": { + "bytes": 5215, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/bit-flags.js", + "kind": "import-statement", + "original": "./bit-flags" + }, + { + "path": "node_modules/molstar/lib/mol-util/string-builder.js", + "kind": "import-statement", + "original": "./string-builder" + }, + { + "path": "node_modules/molstar/lib/mol-util/uuid.js", + "kind": "import-statement", + "original": "./uuid" + }, + { + "path": "node_modules/molstar/lib/mol-util/mask.js", + "kind": "import-statement", + "original": "./mask" + }, + { + "path": "node_modules/molstar/lib/mol-util/value-cell.js", + "kind": "import-statement", + "original": "./value-cell" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/legend.js": { + "bytes": 396, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/util/chunked-array.js": { + "bytes": 5358, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/util/sort.js": { + "bytes": 3907, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/util/buckets.js": { + "bytes": 2518, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util/sort.js", + "kind": "import-statement", + "original": "./sort" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/util/equivalence-classes.js": { + "bytes": 1272, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/util/hash-functions.js": { + "bytes": 2143, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/db/column-helpers.js": { + "bytes": 1586, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js": { + "bytes": 910, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js": { + "bytes": 19754, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat4.js", + "kind": "import-statement", + "original": "./mat4" + }, + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../interpolate" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js", + "kind": "import-statement", + "original": "./common" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat4.js": { + "bytes": 35876, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "./vec3" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../misc" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat3.js": { + "bytes": 12220, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat4.js", + "kind": "import-statement", + "original": "./mat4" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "./vec3" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec2.js": { + "bytes": 3396, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec4.js": { + "bytes": 5998, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js", + "kind": "import-statement", + "original": "./common" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/type-helpers.js": { + "bytes": 465, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/quat.js": { + "bytes": 14774, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "./vec3" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../../mol-util/type-helpers" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d.js": { + "bytes": 1103, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat4.js", + "kind": "import-statement", + "original": "./3d/mat4" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat3.js", + "kind": "import-statement", + "original": "./3d/mat3" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec2.js", + "kind": "import-statement", + "original": "./3d/vec2" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "./3d/vec3" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec4.js", + "kind": "import-statement", + "original": "./3d/vec4" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/quat.js", + "kind": "import-statement", + "original": "./3d/quat" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js", + "kind": "import-statement", + "original": "./3d/common" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/tensor.js": { + "bytes": 11486, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat3.js", + "kind": "import-statement", + "original": "./3d/mat3" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat4.js", + "kind": "import-statement", + "original": "./3d/mat4" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra.js": { + "bytes": 230, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d.js", + "kind": "import-statement", + "original": "./linear-algebra/3d" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/tensor.js", + "kind": "import-statement", + "original": "./linear-algebra/tensor" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/common/text/number-parser.js": { + "bytes": 4506, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/db/column.js": { + "bytes": 15835, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db/column-helpers.js", + "kind": "import-statement", + "original": "./column-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/number-parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/common/text/number-parser" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/db/table.js": { + "bytes": 8181, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db/column.js", + "kind": "import-statement", + "original": "./column" + }, + { + "path": "node_modules/molstar/lib/mol-data/util/sort.js", + "kind": "import-statement", + "original": "../util/sort" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/db/database.js": { + "bytes": 917, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db/table.js", + "kind": "import-statement", + "original": "./table" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/db.js": { + "bytes": 429, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db/database.js", + "kind": "import-statement", + "original": "./db/database" + }, + { + "path": "node_modules/molstar/lib/mol-data/db/table.js", + "kind": "import-statement", + "original": "./db/table" + }, + { + "path": "node_modules/molstar/lib/mol-data/db/column.js", + "kind": "import-statement", + "original": "./db/column" + }, + { + "path": "node_modules/molstar/lib/mol-data/db/column-helpers.js", + "kind": "import-statement", + "original": "./db/column-helpers" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/util/grouping.js": { + "bytes": 1136, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../db" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/util/array.js": { + "bytes": 1277, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/util.js": { + "bytes": 397, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util/chunked-array.js", + "kind": "import-statement", + "original": "./util/chunked-array" + }, + { + "path": "node_modules/molstar/lib/mol-data/util/buckets.js", + "kind": "import-statement", + "original": "./util/buckets" + }, + { + "path": "node_modules/molstar/lib/mol-data/util/equivalence-classes.js", + "kind": "import-statement", + "original": "./util/equivalence-classes" + }, + { + "path": "node_modules/molstar/lib/mol-data/util/hash-functions.js", + "kind": "import-statement", + "original": "./util/hash-functions" + }, + { + "path": "node_modules/molstar/lib/mol-data/util/sort.js", + "kind": "import-statement", + "original": "./util/sort" + }, + { + "path": "node_modules/molstar/lib/mol-data/util/grouping.js", + "kind": "import-statement", + "original": "./util/grouping" + }, + { + "path": "node_modules/molstar/lib/mol-data/util/array.js", + "kind": "import-statement", + "original": "./util/array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/int/tuple.js": { + "bytes": 2093, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/int/impl/interval.js": { + "bytes": 2320, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int/tuple.js", + "kind": "import-statement", + "original": "../tuple" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/int/interval.js": { + "bytes": 2200, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int/impl/interval.js", + "kind": "import-statement", + "original": "./impl/interval" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/int/impl/sorted-array.js": { + "bytes": 11427, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../util" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/interval.js", + "kind": "import-statement", + "original": "../interval" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/int/sorted-array.js": { + "bytes": 2042, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int/impl/sorted-array.js", + "kind": "import-statement", + "original": "./impl/sorted-array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/int/impl/ordered-set.js": { + "bytes": 10795, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-array.js", + "kind": "import-statement", + "original": "../sorted-array" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/interval.js", + "kind": "import-statement", + "original": "../interval" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/int/ordered-set.js": { + "bytes": 2854, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int/impl/ordered-set.js", + "kind": "import-statement", + "original": "./impl/ordered-set" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/interval.js", + "kind": "import-statement", + "original": "./interval" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/int/impl/segmentation.js": { + "bytes": 3397, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int/ordered-set.js", + "kind": "import-statement", + "original": "../ordered-set" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/interval.js", + "kind": "import-statement", + "original": "../interval" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-array.js", + "kind": "import-statement", + "original": "../sorted-array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/int/segmentation.js": { + "bytes": 656, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int/impl/segmentation.js", + "kind": "import-statement", + "original": "./impl/segmentation" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/int/linked-index.js": { + "bytes": 962, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/int/map.js": { + "bytes": 1091, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/iterator.js": { + "bytes": 2584, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/int.js": { + "bytes": 616, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int/interval.js", + "kind": "import-statement", + "original": "./int/interval" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/ordered-set.js", + "kind": "import-statement", + "original": "./int/ordered-set" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/segmentation.js", + "kind": "import-statement", + "original": "./int/segmentation" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-array.js", + "kind": "import-statement", + "original": "./int/sorted-array" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/tuple.js", + "kind": "import-statement", + "original": "./int/tuple" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/linked-index.js", + "kind": "import-statement", + "original": "./int/linked-index" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/map.js", + "kind": "import-statement", + "original": "./int/map" + }, + { + "path": "node_modules/molstar/lib/mol-data/iterator.js", + "kind": "import-statement", + "original": "./iterator" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/color/scale.js": { + "bytes": 2800, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/color.js", + "kind": "import-statement", + "original": "./color" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/lists.js", + "kind": "import-statement", + "original": "./lists" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/legend.js", + "kind": "import-statement", + "original": "../legend" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../mol-math/interpolate" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/color/index.js": { + "bytes": 252, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/color.js", + "kind": "import-statement", + "original": "./color" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/scale.js", + "kind": "import-statement", + "original": "./scale" + } + ], + "format": "esm" + }, + "projects/ngx-structure-viewer/src/lib/colors.ts": { + "bytes": 469, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "molstar/lib/mol-util/color" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/coordinates/coordinates.js": { + "bytes": 4166, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/coordinates.js": { + "bytes": 202, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/coordinates/coordinates.js", + "kind": "import-statement", + "original": "./coordinates/coordinates" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/topology/topology.js": { + "bytes": 489, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/topology.js": { + "bytes": 196, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/topology/topology.js", + "kind": "import-statement", + "original": "./topology/topology" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/custom-property.js": { + "bytes": 1654, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/object.js": { + "bytes": 4559, + "imports": [ + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/json.js": { + "bytes": 1097, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "./object" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/array.js": { + "bytes": 6106, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/json.js", + "kind": "import-statement", + "original": "./json" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/util.js": { + "bytes": 1733, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../mol-util/array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-task/util/scheduler.js": { + "bytes": 5854, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/debug.js": { + "bytes": 1610, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-task/util/user-timing.js": { + "bytes": 1022, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-task/execution/observable.js": { + "bytes": 6615, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/task.js", + "kind": "import-statement", + "original": "../task" + }, + { + "path": "node_modules/molstar/lib/mol-util/now.js", + "kind": "import-statement", + "original": "../../mol-util/now" + }, + { + "path": "node_modules/molstar/lib/mol-task/util/scheduler.js", + "kind": "import-statement", + "original": "../util/scheduler" + }, + { + "path": "node_modules/molstar/lib/mol-task/util/user-timing.js", + "kind": "import-statement", + "original": "../util/user-timing" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-task/execution/synchronous.js": { + "bytes": 380, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-task/task.js": { + "bytes": 2164, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/execution/observable.js", + "kind": "import-statement", + "original": "./execution/observable" + }, + { + "path": "node_modules/molstar/lib/mol-task/execution/synchronous.js", + "kind": "import-statement", + "original": "./execution/synchronous" + }, + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "../mol-util/id-factory" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-task/execution/runtime-context.js": { + "bytes": 394, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/execution/synchronous.js", + "kind": "import-statement", + "original": "./synchronous" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-task/execution/progress.js": { + "bytes": 893, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-task/util/multistep.js": { + "bytes": 432, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/task.js", + "kind": "import-statement", + "original": "../task" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-task/util/chunked.js": { + "bytes": 1002, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/now.js", + "kind": "import-statement", + "original": "../../mol-util/now" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-task/index.js": { + "bytes": 524, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/task.js", + "kind": "import-statement", + "original": "./task" + }, + { + "path": "node_modules/molstar/lib/mol-task/execution/runtime-context.js", + "kind": "import-statement", + "original": "./execution/runtime-context" + }, + { + "path": "node_modules/molstar/lib/mol-task/execution/progress.js", + "kind": "import-statement", + "original": "./execution/progress" + }, + { + "path": "node_modules/molstar/lib/mol-task/util/scheduler.js", + "kind": "import-statement", + "original": "./util/scheduler" + }, + { + "path": "node_modules/molstar/lib/mol-task/util/multistep.js", + "kind": "import-statement", + "original": "./util/multistep" + }, + { + "path": "node_modules/molstar/lib/mol-task/util/chunked.js", + "kind": "import-statement", + "original": "./util/chunked" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/graph/int-adjacency-graph.js": { + "bytes": 11833, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/graph.js": { + "bytes": 197, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/graph/int-adjacency-graph.js", + "kind": "import-statement", + "original": "./graph/int-adjacency-graph" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/common/property.js": { + "bytes": 2258, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/index-pair.js": { + "bytes": 3789, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/graph.js", + "kind": "import-statement", + "original": "../../../../mol-math/graph" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/property.js", + "kind": "import-statement", + "original": "../../common/property" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/common/text/column/token.js": { + "bytes": 1856, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/number-parser.js", + "kind": "import-statement", + "original": "../number-parser" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cif/data-model.js": { + "bytes": 10128, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/number-parser.js", + "kind": "import-statement", + "original": "../common/text/number-parser" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/column/token.js", + "kind": "import-statement", + "original": "../common/text/column/token" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema.js": { + "bytes": 7179, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/data-model.js", + "kind": "import-statement", + "original": "./data-model" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/common.js": { + "bytes": 625, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../geometry" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/symmetry-operator.js": { + "bytes": 8688, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../mol-math/interpolate" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat3.js", + "kind": "import-statement", + "original": "../linear-algebra/3d/mat3" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat4.js", + "kind": "import-statement", + "original": "../linear-algebra/3d/mat4" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/quat.js", + "kind": "import-statement", + "original": "../linear-algebra/3d/quat" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../linear-algebra/3d/vec3" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/spacegroup/tables.js": { + "bytes": 42826, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/spacegroup/construction.js": { + "bytes": 6706, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/spacegroup/tables.js", + "kind": "import-statement", + "original": "./tables" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../geometry" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/lookup3d/common.js": { + "bytes": 909, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/primitives/axes3d.js": { + "bytes": 2176, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/matrix/matrix.js": { + "bytes": 3334, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/matrix/svd.js": { + "bytes": 6434, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/matrix/matrix.js", + "kind": "import-statement", + "original": "./matrix" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/matrix/principal-axes.js": { + "bytes": 5096, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/matrix/matrix.js", + "kind": "import-statement", + "original": "./matrix" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../3d/vec3" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/matrix/svd.js", + "kind": "import-statement", + "original": "./svd" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js", + "kind": "import-statement", + "original": "../3d/common" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/primitives/sphere3d.js": { + "bytes": 9774, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/axes3d.js", + "kind": "import-statement", + "original": "./axes3d" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/matrix/principal-axes.js", + "kind": "import-statement", + "original": "../../linear-algebra/matrix/principal-axes" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/primitives/box3d.js": { + "bytes": 7268, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/sphere3d.js", + "kind": "import-statement", + "original": "./sphere3d" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../../linear-algebra/3d/vec3" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/fibonacci-heap.js": { + "bytes": 9332, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/lookup3d/grid.js": { + "bytes": 13329, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/geometry/lookup3d/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/box3d.js", + "kind": "import-statement", + "original": "../primitives/box3d" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-util/fibonacci-heap.js", + "kind": "import-statement", + "original": "../../../mol-util/fibonacci-heap" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry.js": { + "bytes": 571, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/geometry/common.js", + "kind": "import-statement", + "original": "./geometry/common" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/symmetry-operator.js", + "kind": "import-statement", + "original": "./geometry/symmetry-operator" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/spacegroup/construction.js", + "kind": "import-statement", + "original": "./geometry/spacegroup/construction" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/lookup3d/common.js", + "kind": "import-statement", + "original": "./geometry/lookup3d/common" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/lookup3d/grid.js", + "kind": "import-statement", + "original": "./geometry/lookup3d/grid" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/box3d.js", + "kind": "import-statement", + "original": "./geometry/primitives/box3d" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/sphere3d.js", + "kind": "import-statement", + "original": "./geometry/primitives/sphere3d" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/axes3d.js", + "kind": "import-statement", + "original": "./geometry/primitives/axes3d" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/element/location.js": { + "bytes": 1868, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/generic/hash-set.js": { + "bytes": 1117, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/generic/linked-list.js": { + "bytes": 1962, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/generic/unique-array.js": { + "bytes": 658, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/generic.js": { + "bytes": 267, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/generic/hash-set.js", + "kind": "import-statement", + "original": "./generic/hash-set" + }, + { + "path": "node_modules/molstar/lib/mol-data/generic/linked-list.js", + "kind": "import-statement", + "original": "./generic/linked-list" + }, + { + "path": "node_modules/molstar/lib/mol-data/generic/unique-array.js", + "kind": "import-statement", + "original": "./generic/unique-array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/language/type.js": { + "bytes": 1432, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/language/expression.js": { + "bytes": 1046, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/language/symbol.js": { + "bytes": 1733, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/expression.js", + "kind": "import-statement", + "original": "./expression" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/language/helpers.js": { + "bytes": 1538, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/symbol.js", + "kind": "import-statement", + "original": "./symbol" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/language/symbol-table/core.js": { + "bytes": 6896, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/type.js", + "kind": "import-statement", + "original": "../type" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/symbol.js", + "kind": "import-statement", + "original": "../symbol" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/helpers.js", + "kind": "import-statement", + "original": "../helpers" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/language/symbol-table/structure-query.js": { + "bytes": 20349, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/type.js", + "kind": "import-statement", + "original": "../type" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/symbol-table/core.js", + "kind": "import-statement", + "original": "./core" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/symbol.js", + "kind": "import-statement", + "original": "../symbol" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/helpers.js", + "kind": "import-statement", + "original": "../helpers" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/language/symbol-table/internal.js": { + "bytes": 1294, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/type.js", + "kind": "import-statement", + "original": "../type" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/symbol-table/structure-query.js", + "kind": "import-statement", + "original": "./structure-query" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/symbol.js", + "kind": "import-statement", + "original": "../symbol" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/helpers.js", + "kind": "import-statement", + "original": "../helpers" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/language/symbol-table.js": { + "bytes": 709, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/symbol-table/core.js", + "kind": "import-statement", + "original": "./symbol-table/core" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/symbol-table/structure-query.js", + "kind": "import-statement", + "original": "./symbol-table/structure-query" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/symbol-table/internal.js", + "kind": "import-statement", + "original": "./symbol-table/internal" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/helpers.js", + "kind": "import-statement", + "original": "./helpers" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/language/builder.js": { + "bytes": 2429, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/symbol-table.js", + "kind": "import-statement", + "original": "./symbol-table" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/types/saccharides.js": { + "bytes": 8237, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/carbohydrates/constants.js": { + "bytes": 30897, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types/saccharides.js", + "kind": "import-statement", + "original": "../../model/types/saccharides" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/set.js": { + "bytes": 3631, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/types/lipids.js": { + "bytes": 1416, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/types/ions.js": { + "bytes": 1672, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/types.js": { + "bytes": 27808, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/bit-flags.js", + "kind": "import-statement", + "original": "../../../mol-util/bit-flags" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/carbohydrates/constants.js", + "kind": "import-statement", + "original": "../structure/carbohydrates/constants" + }, + { + "path": "node_modules/molstar/lib/mol-util/set.js", + "kind": "import-statement", + "original": "../../../mol-util/set" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types/lipids.js", + "kind": "import-statement", + "original": "./types/lipids" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types/ions.js", + "kind": "import-statement", + "original": "./types/ions" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/centroid-helper.js": { + "bytes": 3081, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/vec3" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/sphere3d.js", + "kind": "import-statement", + "original": "./primitives/sphere3d" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/graph/inter-unit-graph.js": { + "bytes": 4587, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../../mol-data/generic" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/data.js": { + "bytes": 1317, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/graph.js", + "kind": "import-statement", + "original": "../../../../../mol-math/graph" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit.js", + "kind": "import-statement", + "original": "../../unit" + }, + { + "path": "node_modules/molstar/lib/mol-math/graph/inter-unit-graph.js", + "kind": "import-statement", + "original": "../../../../../mol-math/graph/inter-unit-graph" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/common.js": { + "bytes": 9304, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/bonds.js": { + "bytes": 2382, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../types" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/mmcif.js": { + "bytes": 163729, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/common/binary-cif/encoding.js": { + "bytes": 2111, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/common/binary.js": { + "bytes": 965, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/common/binary-cif/decoder.js": { + "bytes": 6331, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/common/binary-cif/encoding.js", + "kind": "import-statement", + "original": "./encoding" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/binary.js", + "kind": "import-statement", + "original": "../binary" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../../mol-util/type-helpers" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/number.js": { + "bytes": 1987, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/common/binary-cif/classifier.js": { + "bytes": 5790, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/common/binary-cif/array-encoder.js", + "kind": "import-statement", + "original": "./array-encoder" + }, + { + "path": "node_modules/molstar/lib/mol-util/number.js", + "kind": "import-statement", + "original": "../../../mol-util/number" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../../mol-util/type-helpers" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/common/binary-cif/array-encoder.js": { + "bytes": 12618, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/binary-cif/encoding.js", + "kind": "import-statement", + "original": "./encoding" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/binary-cif/classifier.js", + "kind": "import-statement", + "original": "./classifier" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/common/binary-cif.js": { + "bytes": 323, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/common/binary-cif/decoder.js", + "kind": "import-statement", + "original": "./binary-cif/decoder" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/binary-cif/encoding.js", + "kind": "import-statement", + "original": "./binary-cif/encoding" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/binary-cif/array-encoder.js", + "kind": "import-statement", + "original": "./binary-cif/array-encoder" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/binary-cif/classifier.js", + "kind": "import-statement", + "original": "./binary-cif/classifier" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/writer/cif/encoder.js": { + "bytes": 9051, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/iterator.js", + "kind": "import-statement", + "original": "../../../mol-data/iterator" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/binary-cif.js", + "kind": "import-statement", + "original": "../../common/binary-cif" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../../mol-util/type-helpers" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/index.js": { + "bytes": 364, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "./db" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "./int" + }, + { + "path": "node_modules/molstar/lib/mol-data/iterator.js", + "kind": "import-statement", + "original": "./iterator" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "./generic" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/writer/cif/encoder/util.js": { + "bytes": 1161, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/index.js", + "kind": "import-statement", + "original": "../../../../mol-data" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/writer/cif/encoder/text.js": { + "bytes": 8152, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/string-builder.js", + "kind": "import-statement", + "original": "../../../../mol-util/string-builder" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif/encoder.js", + "kind": "import-statement", + "original": "../encoder" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif/encoder/util.js", + "kind": "import-statement", + "original": "./util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/common/utf8.js": { + "bytes": 3621, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/common/msgpack/encode.js": { + "bytes": 7242, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/common/utf8.js", + "kind": "import-statement", + "original": "../utf8" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/writer/cif/encoder/binary.js": { + "bytes": 6212, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/common/msgpack/encode.js", + "kind": "import-statement", + "original": "../../../common/msgpack/encode" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/binary-cif.js", + "kind": "import-statement", + "original": "../../../common/binary-cif" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif/encoder.js", + "kind": "import-statement", + "original": "../encoder" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif/encoder/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/binary-cif/classifier.js", + "kind": "import-statement", + "original": "../../../common/binary-cif/classifier" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/writer/cif.js": { + "bytes": 3366, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/writer/cif/encoder/text.js", + "kind": "import-statement", + "original": "./cif/encoder/text" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif/encoder/binary.js", + "kind": "import-statement", + "original": "./cif/encoder/binary" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif/encoder.js", + "kind": "import-statement", + "original": "./cif/encoder" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/binary-cif.js", + "kind": "import-statement", + "original": "../common/binary-cif" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/chem_comp.js": { + "bytes": 3891, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/mmcif.js", + "kind": "import-statement", + "original": "../../../../mol-io/reader/cif/schema/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif.js", + "kind": "import-statement", + "original": "../../../../mol-io/writer/cif" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/property.js", + "kind": "import-statement", + "original": "../../common/property" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/struct_conn.js": { + "bytes": 6196, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif.js", + "kind": "import-statement", + "original": "../../../../mol-io/writer/cif" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/bonds.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure/model/properties/atomic/bonds" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/property.js", + "kind": "import-statement", + "original": "../../common/property" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/intra-compute.js": { + "bytes": 10131, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/data.js", + "kind": "import-statement", + "original": "./data" + }, + { + "path": "node_modules/molstar/lib/mol-math/graph.js", + "kind": "import-statement", + "original": "../../../../../mol-math/graph" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/bonds.js", + "kind": "import-statement", + "original": "../../../model/properties/atomic/bonds" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/index-pair.js", + "kind": "import-statement", + "original": "../../../../../mol-model-formats/structure/property/bonds/index-pair" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/chem_comp.js", + "kind": "import-statement", + "original": "../../../../../mol-model-formats/structure/property/bonds/chem_comp" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/struct_conn.js", + "kind": "import-statement", + "original": "../../../../../mol-model-formats/structure/property/bonds/struct_conn" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js", + "kind": "import-statement", + "original": "../../../../../mol-math/linear-algebra/3d/common" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/model.js", + "kind": "import-statement", + "original": "../../../model/model" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/inter-compute.js": { + "bytes": 11984, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/structure.js", + "kind": "import-statement", + "original": "../../structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit.js", + "kind": "import-statement", + "original": "../../unit" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/data.js", + "kind": "import-statement", + "original": "./data" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/bonds.js", + "kind": "import-statement", + "original": "../../../model/properties/atomic/bonds" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/index-pair.js", + "kind": "import-statement", + "original": "../../../../../mol-model-formats/structure/property/bonds/index-pair" + }, + { + "path": "node_modules/molstar/lib/mol-math/graph/inter-unit-graph.js", + "kind": "import-statement", + "original": "../../../../../mol-math/graph/inter-unit-graph" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/struct_conn.js", + "kind": "import-statement", + "original": "../../../../../mol-model-formats/structure/property/bonds/struct_conn" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js", + "kind": "import-statement", + "original": "../../../../../mol-math/linear-algebra/3d/common" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model.js", + "kind": "import-statement", + "original": "../../../model" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds.js": { + "bytes": 7590, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../model/types" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/centroid-helper.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry/centroid-helper" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/data.js", + "kind": "import-statement", + "original": "./bonds/data" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/intra-compute.js", + "kind": "import-statement", + "original": "./bonds/intra-compute" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/inter-compute.js", + "kind": "import-statement", + "original": "./bonds/inter-compute" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/rings/compute.js": { + "bytes": 10822, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/graph.js", + "kind": "import-statement", + "original": "../../../../../mol-math/graph" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../model/types" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../../../mol-util/array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/util.js": { + "bytes": 1961, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "./model/types" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/rings.js": { + "bytes": 6414, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/rings/compute.js", + "kind": "import-statement", + "original": "./rings/compute" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/util.js", + "kind": "import-statement", + "original": "../../util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/matrix/principal-axes.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra/matrix/principal-axes" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/int/sorted-ranges.js": { + "bytes": 4059, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../int" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/polymer.js": { + "bytes": 5300, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-ranges.js", + "kind": "import-statement", + "original": "../../../../mol-data/int/sorted-ranges" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure/model/types" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/principal-axes.js": { + "bytes": 810, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/matrix/principal-axes.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra/matrix/principal-axes" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/boundary-helper.js": { + "bytes": 4263, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../linear-algebra/3d/vec3" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/centroid-helper.js", + "kind": "import-statement", + "original": "./centroid-helper" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/box3d.js", + "kind": "import-statement", + "original": "./primitives/box3d" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/boundary.js": { + "bytes": 1958, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary-helper.js", + "kind": "import-statement", + "original": "./boundary-helper" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../geometry" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/element-set-intra-bond-cache.js": { + "bytes": 1119, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/symmetry.js": { + "bytes": 2210, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/symmetry.js", + "kind": "import-statement", + "original": "../../../../mol-model-formats/structure/property/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../../../mol-math/misc" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/assembly.js": { + "bytes": 4837, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/symmetry-operator.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry/symmetry-operator" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/symmetry.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/symmetry.js": { + "bytes": 3801, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/mmcif.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/cif/schema/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/assembly.js", + "kind": "import-statement", + "original": "./assembly" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/property.js", + "kind": "import-statement", + "original": "../common/property" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/resonance.js": { + "bytes": 1860, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-array.js", + "kind": "import-statement", + "original": "../../../../mol-data/int/sorted-array" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../model/types" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit.js": { + "bytes": 19606, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/geometry/symmetry-operator.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry/symmetry-operator" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model.js", + "kind": "import-statement", + "original": "../model" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds.js", + "kind": "import-statement", + "original": "./unit/bonds" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/rings.js", + "kind": "import-statement", + "original": "./unit/rings" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/util/polymer.js", + "kind": "import-statement", + "original": "./util/polymer" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/util/principal-axes.js", + "kind": "import-statement", + "original": "./util/principal-axes" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry/boundary" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/index-pair.js", + "kind": "import-statement", + "original": "../../../mol-model-formats/structure/property/bonds/index-pair" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/element-set-intra-bond-cache.js", + "kind": "import-statement", + "original": "./unit/bonds/element-set-intra-bond-cache" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/symmetry.js", + "kind": "import-statement", + "original": "../../../mol-model-formats/structure/property/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/resonance.js", + "kind": "import-statement", + "original": "./unit/resonance" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/lookup3d.js": { + "bytes": 9878, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element.js", + "kind": "import-statement", + "original": "../element" + }, + { + "path": "node_modules/molstar/lib/mol-util/fibonacci-heap.js", + "kind": "import-statement", + "original": "../../../../mol-util/fibonacci-heap" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/query/utils/structure-set.js": { + "bytes": 3474, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../structure" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/query/selection.js": { + "bytes": 5753, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../../../mol-data/generic" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/utils/structure-set.js", + "kind": "import-statement", + "original": "./utils/structure-set" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/element/bundle.js": { + "bytes": 8430, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/structure.js", + "kind": "import-statement", + "original": "../structure" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-ranges.js", + "kind": "import-statement", + "original": "../../../../mol-data/int/sorted-ranges" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element/loci.js", + "kind": "import-statement", + "original": "./loci" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../../mol-script/language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query.js", + "kind": "import-statement", + "original": "../../query" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/query/queries/internal.js": { + "bytes": 3940, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure/structure/element" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/structure.js", + "kind": "import-statement", + "original": "../../structure/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/selection.js", + "kind": "import-statement", + "original": "../selection" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element/bundle.js", + "kind": "import-statement", + "original": "../../structure/element/bundle" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/query/context.js": { + "bytes": 3795, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/now.js", + "kind": "import-statement", + "original": "../../../mol-util/now" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/queries/internal.js", + "kind": "import-statement", + "original": "./queries/internal" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/query/query.js": { + "bytes": 447, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/query/context.js", + "kind": "import-statement", + "original": "./context" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/query/utils/builders.js": { + "bytes": 2462, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/selection.js", + "kind": "import-statement", + "original": "../selection" + }, + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../../../../mol-data/generic" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/utils/structure-set.js", + "kind": "import-statement", + "original": "./structure-set" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/query/queries/generators.js": { + "bytes": 13345, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../../../../mol-data/generic" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/structure.js", + "kind": "import-statement", + "original": "../../structure/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/selection.js", + "kind": "import-statement", + "original": "../selection" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/utils/builders.js", + "kind": "import-statement", + "original": "../utils/builders" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/utils/structure-set.js", + "kind": "import-statement", + "original": "../utils/structure-set" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/unique-subset-builder.js": { + "bytes": 2823, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/symmetry.js", + "kind": "import-statement", + "original": "../symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/structure.js", + "kind": "import-statement", + "original": "../structure" + }, + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../../../../mol-data/generic" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js": { + "bytes": 8683, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../../mol-task" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/result.js": { + "bytes": 1039, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cif/text/parser.js": { + "bytes": 21061, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/data-model.js", + "kind": "import-statement", + "original": "../data-model" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../../common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../../result" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../../mol-task" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cif/binary/field.js": { + "bytes": 1833, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/binary-cif.js", + "kind": "import-statement", + "original": "../../../common/binary-cif" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/number-parser.js", + "kind": "import-statement", + "original": "../../common/text/number-parser" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/common/msgpack/decode.js": { + "bytes": 5253, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/common/utf8.js", + "kind": "import-statement", + "original": "../utf8" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cif/binary/parser.js": { + "bytes": 1808, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/data-model.js", + "kind": "import-statement", + "original": "../data-model" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/binary/field.js", + "kind": "import-statement", + "original": "./field" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../../result" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/msgpack/decode.js", + "kind": "import-statement", + "original": "../../../common/msgpack/decode" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../../mol-task" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/ccd.js": { + "bytes": 12821, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/bird.js": { + "bytes": 15933, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/dic.js": { + "bytes": 1101, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/density-server.js": { + "bytes": 1534, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/cif-core.js": { + "bytes": 30018, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/segmentation.js": { + "bytes": 555, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/density-server.js", + "kind": "import-statement", + "original": "./density-server" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cif.js": { + "bytes": 1470, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/text/parser.js", + "kind": "import-statement", + "original": "./cif/text/parser" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/binary/parser.js", + "kind": "import-statement", + "original": "./cif/binary/parser" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema.js", + "kind": "import-statement", + "original": "./cif/schema" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/mmcif.js", + "kind": "import-statement", + "original": "./cif/schema/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/ccd.js", + "kind": "import-statement", + "original": "./cif/schema/ccd" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/bird.js", + "kind": "import-statement", + "original": "./cif/schema/bird" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/dic.js", + "kind": "import-statement", + "original": "./cif/schema/dic" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/density-server.js", + "kind": "import-statement", + "original": "./cif/schema/density-server" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/cif-core.js", + "kind": "import-statement", + "original": "./cif/schema/cif-core" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/segmentation.js", + "kind": "import-statement", + "original": "./cif/schema/segmentation" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/data-model.js", + "kind": "import-statement", + "original": "./cif/data-model" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/conformation.js": { + "bytes": 224, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/hierarchy.js": { + "bytes": 4458, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/mmcif.js", + "kind": "import-statement", + "original": "../../../../../mol-io/reader/cif/schema/mmcif" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/measures.js": { + "bytes": 5001, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/atomic.js": { + "bytes": 262, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/conformation.js", + "kind": "import-statement", + "original": "./atomic/conformation" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/hierarchy.js", + "kind": "import-statement", + "original": "./atomic/hierarchy" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/measures.js", + "kind": "import-statement", + "original": "./atomic/measures" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/secondary-structure.js": { + "bytes": 369, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/secondary-structure.js": { + "bytes": 7589, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/atomic" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/secondary-structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/secondary-structure" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/property.js", + "kind": "import-statement", + "original": "../common/property" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/anisotropic.js": { + "bytes": 2608, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/mmcif.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/cif/schema/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif.js", + "kind": "import-statement", + "original": "../../../mol-io/writer/cif" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/property.js", + "kind": "import-statement", + "original": "../common/property" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js", + "kind": "import-statement", + "original": "../mmcif" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/global-transform.js": { + "bytes": 2971, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/property.js", + "kind": "import-statement", + "original": "../../../../mol-model-formats/structure/common/property" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../../custom-property" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif.js", + "kind": "import-statement", + "original": "../../../../mol-io/writer/cif" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js", + "kind": "import-statement", + "original": "../../../../mol-model-formats/structure/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema.js", + "kind": "import-statement", + "original": "../../../../mol-io/reader/cif/schema" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/mmcif-extras.js": { + "bytes": 1175, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/mmcif.js", + "kind": "import-statement", + "original": "./mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/util.js": { + "bytes": 1524, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js": { + "bytes": 1658, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/mmcif.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/cif/schema/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema/mmcif-extras.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/cif/schema/mmcif-extras" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/util.js", + "kind": "import-statement", + "original": "./util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/common/entity.js": { + "bytes": 2533, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "../basic/schema" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/common/component.js": { + "bytes": 7811, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-util/set.js", + "kind": "import-statement", + "original": "../../../mol-util/set" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "../basic/schema" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/carbohydrates/constants.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/structure/carbohydrates/constants" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js": { + "bytes": 8926, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/model.js", + "kind": "import-statement", + "original": "../../mol-model/structure/model/model" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif.js", + "kind": "import-statement", + "original": "../../mol-io/reader/cif" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/parser.js", + "kind": "import-statement", + "original": "./basic/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/symmetry.js", + "kind": "import-statement", + "original": "./property/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/secondary-structure.js", + "kind": "import-statement", + "original": "./property/secondary-structure" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/anisotropic.js", + "kind": "import-statement", + "original": "./property/anisotropic" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/chem_comp.js", + "kind": "import-statement", + "original": "./property/bonds/chem_comp" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/struct_conn.js", + "kind": "import-statement", + "original": "./property/bonds/struct_conn" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/global-transform.js", + "kind": "import-statement", + "original": "../../mol-model/structure/model/properties/global-transform" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "./basic/schema" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/entity.js", + "kind": "import-statement", + "original": "./common/entity" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/component.js", + "kind": "import-statement", + "original": "./common/component" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/xhr2/lib/browser.js": { + "bytes": 32, + "imports": [], + "format": "cjs" + }, + "node_modules/molstar/lib/mol-util/nodejs-shims.js": { + "bytes": 1788, + "imports": [ + { + "path": "node_modules/xhr2/lib/browser.js", + "kind": "require-call", + "original": "xhr2" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/zip/bin.js": { + "bytes": 2803, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/zip/checksum.js": { + "bytes": 1056, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/zip/util.js": { + "bytes": 4355, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/zip/inflate.js": { + "bytes": 5816, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/zip/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/zip/huffman.js": { + "bytes": 2481, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/zip/deflate.js": { + "bytes": 11376, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-util/zip/huffman.js", + "kind": "import-statement", + "original": "./huffman" + }, + { + "path": "node_modules/molstar/lib/mol-util/zip/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/zip/zip.js": { + "bytes": 8055, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/zip/bin.js", + "kind": "import-statement", + "original": "./bin" + }, + { + "path": "node_modules/molstar/lib/mol-util/zip/checksum.js", + "kind": "import-statement", + "original": "./checksum" + }, + { + "path": "node_modules/molstar/lib/mol-util/zip/inflate.js", + "kind": "import-statement", + "original": "./inflate" + }, + { + "path": "node_modules/molstar/lib/mol-util/zip/deflate.js", + "kind": "import-statement", + "original": "./deflate" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/data-source.js": { + "bytes": 12362, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/common/utf8.js", + "kind": "import-statement", + "original": "../mol-io/common/utf8" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/assets.js", + "kind": "import-statement", + "original": "./assets" + }, + { + "path": "node_modules/molstar/lib/mol-util/nodejs-shims.js", + "kind": "import-statement", + "original": "./nodejs-shims" + }, + { + "path": "node_modules/molstar/lib/mol-util/zip/zip.js", + "kind": "import-statement", + "original": "./zip/zip" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/assets.js": { + "bytes": 4307, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/uuid.js", + "kind": "import-statement", + "original": "./uuid" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/data-source.js", + "kind": "import-statement", + "original": "./data-source" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/nodejs-shims.js", + "kind": "import-statement", + "original": "./nodejs-shims" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/param-definition.js": { + "bytes": 19958, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "./index" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "./object" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "./string" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/lists.js", + "kind": "import-statement", + "original": "./color/lists" + }, + { + "path": "node_modules/molstar/lib/mol-util/assets.js", + "kind": "import-statement", + "original": "./assets" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/bends.js": { + "bytes": 2029, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../../../mol-math/misc" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/backbone-hbonds.js": { + "bytes": 4387, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/graph.js", + "kind": "import-statement", + "original": "../../../../mol-math/graph" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/common.js": { + "bytes": 582, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../../mol-util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/turns.js": { + "bytes": 1355, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/helices.js": { + "bytes": 2967, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/common.js", + "kind": "import-statement", + "original": "./common" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/ladders.js": { + "bytes": 3197, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/bridges.js": { + "bytes": 2817, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/common.js", + "kind": "import-statement", + "original": "./common" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/sheets.js": { + "bytes": 1986, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/common.js", + "kind": "import-statement", + "original": "./common" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/dihedral-angles.js": { + "bytes": 2061, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../../../mol-math/misc" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/trace-lookup.js": { + "bytes": 921, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry/boundary" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/protein-info.js": { + "bytes": 1170, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp.js": { + "bytes": 7877, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/secondary-structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/secondary-structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/bends.js", + "kind": "import-statement", + "original": "./dssp/bends" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/backbone-hbonds.js", + "kind": "import-statement", + "original": "./dssp/backbone-hbonds" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/common.js", + "kind": "import-statement", + "original": "./dssp/common" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/turns.js", + "kind": "import-statement", + "original": "./dssp/turns" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/helices.js", + "kind": "import-statement", + "original": "./dssp/helices" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/ladders.js", + "kind": "import-statement", + "original": "./dssp/ladders" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/bridges.js", + "kind": "import-statement", + "original": "./dssp/bridges" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/sheets.js", + "kind": "import-statement", + "original": "./dssp/sheets" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/dihedral-angles.js", + "kind": "import-statement", + "original": "./dssp/dihedral-angles" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/trace-lookup.js", + "kind": "import-statement", + "original": "./dssp/trace-lookup" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/protein-info.js", + "kind": "import-statement", + "original": "./dssp/protein-info" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/common/custom-structure-property.js": { + "bytes": 3833, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../../mol-util/string" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure.js": { + "bytes": 3308, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp.js", + "kind": "import-statement", + "original": "./secondary-structure/dssp" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/common/custom-structure-property.js", + "kind": "import-statement", + "original": "../common/custom-structure-property" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/secondary-structure.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/property/secondary-structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model.js", + "kind": "import-statement", + "original": "../../mol-model/structure/model" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/properties.js": { + "bytes": 9477, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit.js", + "kind": "import-statement", + "original": "./unit" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic.js", + "kind": "import-statement", + "original": "../model/properties/atomic" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure.js", + "kind": "import-statement", + "original": "../../../mol-model-props/computed/secondary-structure" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/utils/residue-set.js": { + "bytes": 3122, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/properties.js", + "kind": "import-statement", + "original": "../../../structure/properties" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/query/queries/modifiers.js": { + "bytes": 22457, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/selection.js", + "kind": "import-statement", + "original": "../selection" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/utils/builders.js", + "kind": "import-statement", + "original": "../utils/builders" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/util/unique-subset-builder.js", + "kind": "import-statement", + "original": "../../structure/util/unique-subset-builder" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/utils/structure-set.js", + "kind": "import-statement", + "original": "../utils/structure-set" + }, + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../../../../mol-data/generic" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element.js", + "kind": "import-statement", + "original": "../../structure/element" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js", + "kind": "import-statement", + "original": "../../../../mol-model-formats/structure/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/utils/residue-set.js", + "kind": "import-statement", + "original": "../../model/properties/utils/residue-set" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/properties.js", + "kind": "import-statement", + "original": "../../structure/properties" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../../mol-util/array" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/query/utils/structure-distance.js": { + "bytes": 4500, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/query/queries/filters.js": { + "bytes": 10030, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/set.js", + "kind": "import-statement", + "original": "../../../../mol-util/set" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/selection.js", + "kind": "import-statement", + "original": "../selection" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/utils/structure-set.js", + "kind": "import-statement", + "original": "../utils/structure-set" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/utils/structure-distance.js", + "kind": "import-statement", + "original": "../utils/structure-distance" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/structure.js", + "kind": "import-statement", + "original": "../../structure/structure" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/query/queries/combinators.js": { + "bytes": 1936, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/query/selection.js", + "kind": "import-statement", + "original": "../selection" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/queries/generators.js", + "kind": "import-statement", + "original": "./generators" + }, + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../../../../mol-data/generic" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../structure" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/query/queries/atom-set.js": { + "bytes": 800, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/query/selection.js", + "kind": "import-statement", + "original": "../selection" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/queries/filters.js", + "kind": "import-statement", + "original": "./filters" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/query/predicates.js": { + "bytes": 3673, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/query.js": { + "bytes": 837, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/query/selection.js", + "kind": "import-statement", + "original": "./query/selection" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/query.js", + "kind": "import-statement", + "original": "./query/query" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/context.js", + "kind": "import-statement", + "original": "./query/context" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/queries/generators.js", + "kind": "import-statement", + "original": "./query/queries/generators" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/queries/modifiers.js", + "kind": "import-statement", + "original": "./query/queries/modifiers" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/queries/filters.js", + "kind": "import-statement", + "original": "./query/queries/filters" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/queries/combinators.js", + "kind": "import-statement", + "original": "./query/queries/combinators" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/queries/internal.js", + "kind": "import-statement", + "original": "./query/queries/internal" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/queries/atom-set.js", + "kind": "import-statement", + "original": "./query/queries/atom-set" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/predicates.js", + "kind": "import-statement", + "original": "./query/predicates" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/symmetry.js": { + "bytes": 11375, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model.js", + "kind": "import-statement", + "original": "../model" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query.js", + "kind": "import-statement", + "original": "../query" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/structure.js", + "kind": "import-statement", + "original": "./structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit.js", + "kind": "import-statement", + "original": "./unit" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/symmetry.js", + "kind": "import-statement", + "original": "../../../mol-model-formats/structure/property/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/properties.js", + "kind": "import-statement", + "original": "./properties" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/subset-builder.js": { + "bytes": 3266, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/symmetry.js", + "kind": "import-statement", + "original": "../symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/structure.js", + "kind": "import-statement", + "original": "../structure" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-data/util/combination.js": { + "bytes": 1349, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/carbohydrates/data.js": { + "bytes": 449, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/carbohydrates/compute.js": { + "bytes": 16014, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-data/util/combination.js", + "kind": "import-statement", + "original": "../../../../mol-data/util/combination" + }, + { + "path": "node_modules/molstar/lib/mol-math/graph.js", + "kind": "import-statement", + "original": "../../../../mol-math/graph" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/matrix/principal-axes.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra/matrix/principal-axes" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/util.js", + "kind": "import-statement", + "original": "../../util" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit.js", + "kind": "import-statement", + "original": "../unit" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/carbohydrates/data.js", + "kind": "import-statement", + "original": "./data" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/rings.js", + "kind": "import-statement", + "original": "../unit/rings" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../../mol-data/util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/boundary.js": { + "bytes": 1653, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary-helper.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry/boundary-helper" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/structure.js": { + "bytes": 43759, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../../../mol-data/generic" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/symmetry-operator.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry/symmetry-operator" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model.js", + "kind": "import-statement", + "original": "../model" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element.js", + "kind": "import-statement", + "original": "./element" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit.js", + "kind": "import-statement", + "original": "./unit" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/util/lookup3d.js", + "kind": "import-statement", + "original": "./util/lookup3d" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/util/subset-builder.js", + "kind": "import-statement", + "original": "./util/subset-builder" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds.js", + "kind": "import-statement", + "original": "./unit/bonds" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/symmetry.js", + "kind": "import-statement", + "original": "./symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/properties.js", + "kind": "import-statement", + "original": "./properties" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/carbohydrates/compute.js", + "kind": "import-statement", + "original": "./carbohydrates/compute" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "../../../mol-util/id-factory" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../custom-property" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic.js", + "kind": "import-statement", + "original": "../model/properties/atomic" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/selection.js", + "kind": "import-statement", + "original": "../query/selection" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry/boundary" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/common/custom-structure-property.js", + "kind": "import-statement", + "original": "../../../mol-model-props/common/custom-structure-property" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/util/boundary.js", + "kind": "import-statement", + "original": "./util/boundary" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/element/loci.js": { + "bytes": 25182, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../../../../mol-data/generic" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../../mol-script/language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/structure.js", + "kind": "import-statement", + "original": "../structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit.js", + "kind": "import-statement", + "original": "../unit" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element/location.js", + "kind": "import-statement", + "original": "./location" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/matrix/principal-axes.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra/matrix/principal-axes" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/properties.js", + "kind": "import-statement", + "original": "../properties" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary-helper.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry/boundary-helper" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/tuple.js", + "kind": "import-statement", + "original": "../../../../mol-data/int/tuple" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/element/stats.js": { + "bytes": 12089, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit.js", + "kind": "import-statement", + "original": "../unit" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element/loci.js", + "kind": "import-statement", + "original": "./loci" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element/location.js", + "kind": "import-statement", + "original": "./location" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/element/util.js": { + "bytes": 1103, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit.js", + "kind": "import-statement", + "original": "../unit" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/properties.js", + "kind": "import-statement", + "original": "../properties" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/element/element.js": { + "bytes": 340, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element/location.js", + "kind": "import-statement", + "original": "./location" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element/loci.js", + "kind": "import-statement", + "original": "./loci" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element/bundle.js", + "kind": "import-statement", + "original": "./bundle" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element/stats.js", + "kind": "import-statement", + "original": "./stats" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element/util.js", + "kind": "import-statement", + "original": "./util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/element.js": { + "bytes": 297, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element/element.js", + "kind": "import-statement", + "original": "./element/element" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/common/custom-model-property.js": { + "bytes": 3697, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../../mol-util/string" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/sequence/sifts-mapping.js": { + "bytes": 3237, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/common/custom-model-property.js", + "kind": "import-statement", + "original": "../common/custom-model-property" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/export/categories/atom_site.js": { + "bytes": 9489, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/writer/cif.js", + "kind": "import-statement", + "original": "../../../../mol-io/writer/cif" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js", + "kind": "import-statement", + "original": "../../../../mol-model-formats/structure/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/sequence/sifts-mapping.js", + "kind": "import-statement", + "original": "../../../../mol-model-props/sequence/sifts-mapping" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../structure" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/export/categories/secondary-structure.js": { + "bytes": 3724, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif.js", + "kind": "import-statement", + "original": "../../../../mol-io/writer/cif" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/export/categories/atom_site.js", + "kind": "import-statement", + "original": "./atom_site" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/secondary-structure.js", + "kind": "import-statement", + "original": "../../../../mol-model-formats/structure/property/secondary-structure" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/export/categories/utils.js": { + "bytes": 3234, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/set.js", + "kind": "import-statement", + "original": "../../../../mol-util/set" + }, + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../../../../mol-data/generic" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif.js", + "kind": "import-statement", + "original": "../../../../mol-io/writer/cif" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js", + "kind": "import-statement", + "original": "../../../../mol-model-formats/structure/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif.js", + "kind": "import-statement", + "original": "../../../../mol-io/reader/cif" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/export/categories/misc.js": { + "bytes": 2472, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif.js", + "kind": "import-statement", + "original": "../../../../mol-io/writer/cif" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/export/categories/utils.js", + "kind": "import-statement", + "original": "./utils" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/export/categories/sequence.js": { + "bytes": 1237, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif.js", + "kind": "import-statement", + "original": "../../../../mol-io/writer/cif" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/export/categories/utils.js", + "kind": "import-statement", + "original": "./utils" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/export/mmcif.js": { + "bytes": 8491, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/writer/cif.js", + "kind": "import-statement", + "original": "../../../mol-io/writer/cif" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/export/categories/atom_site.js", + "kind": "import-statement", + "original": "./categories/atom_site" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/export/categories/secondary-structure.js", + "kind": "import-statement", + "original": "./categories/secondary-structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/export/categories/misc.js", + "kind": "import-statement", + "original": "./categories/misc" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/export/categories/utils.js", + "kind": "import-statement", + "original": "./categories/utils" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/export/categories/sequence.js", + "kind": "import-statement", + "original": "./categories/sequence" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../custom-property" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/export/categories/atom_site_operator_mapping.js", + "kind": "import-statement", + "original": "./categories/atom_site_operator_mapping" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js", + "kind": "import-statement", + "original": "../../../mol-model-formats/structure/mmcif" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure.js": { + "bytes": 636, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element.js", + "kind": "import-statement", + "original": "./structure/element" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/structure.js", + "kind": "import-statement", + "original": "./structure/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit.js", + "kind": "import-statement", + "original": "./structure/unit" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/symmetry.js", + "kind": "import-statement", + "original": "./structure/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds.js", + "kind": "import-statement", + "original": "./structure/unit/bonds" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/properties.js", + "kind": "import-statement", + "original": "./structure/properties" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/rings.js", + "kind": "import-statement", + "original": "./structure/unit/rings" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/export/mmcif.js", + "kind": "import-statement", + "original": "./export/mmcif" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/export/categories/atom_site_operator_mapping.js": { + "bytes": 3713, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../structure" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-io/writer/cif.js", + "kind": "import-statement", + "original": "../../../../mol-io/writer/cif" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/utils/atomic-derived.js": { + "bytes": 3265, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic.js", + "kind": "import-statement", + "original": "../atomic" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/util.js", + "kind": "import-statement", + "original": "../../../../../mol-model/structure/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../../../../mol-util/debug" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/utils/atomic-index.js": { + "bytes": 9122, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/hierarchy.js", + "kind": "import-statement", + "original": "../atomic/hierarchy" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../../../mol-data/util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/atomic.js": { + "bytes": 8112, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif/schema.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/cif/schema" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/export/categories/atom_site_operator_mapping.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/export/categories/atom_site_operator_mapping" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/atomic" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/utils/atomic-derived.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/utils/atomic-derived" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/utils/atomic-index.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/utils/atomic-index" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-util/uuid.js", + "kind": "import-statement", + "original": "../../../mol-util/uuid" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js", + "kind": "import-statement", + "original": "../mmcif" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/coarse/conformation.js": { + "bytes": 219, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/coarse/hierarchy.js": { + "bytes": 1170, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-ranges.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int/sorted-ranges" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/coarse.js": { + "bytes": 227, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/coarse/conformation.js", + "kind": "import-statement", + "original": "./coarse/conformation" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/coarse/hierarchy.js", + "kind": "import-statement", + "original": "./coarse/hierarchy" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/utils/coarse-keys.js": { + "bytes": 3316, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-ranges.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int/sorted-ranges" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/utils/coarse-ranges.js": { + "bytes": 1484, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-ranges.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int/sorted-ranges" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/coarse.js": { + "bytes": 3654, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/coarse.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/coarse" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/utils/coarse-keys.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/utils/coarse-keys" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/utils/coarse-ranges.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/utils/coarse-ranges" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "./schema" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/sequence/constants.js": { + "bytes": 1322, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/sequence/sequence.js": { + "bytes": 5138, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/sequence/constants.js", + "kind": "import-statement", + "original": "./constants" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/sequence.js": { + "bytes": 189, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/sequence/sequence.js", + "kind": "import-statement", + "original": "./sequence/sequence" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/sequence.js": { + "bytes": 4501, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model/sequence.js", + "kind": "import-statement", + "original": "../../../sequence" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/sequence.js": { + "bytes": 1339, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/sequence.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/sequence" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model/sequence.js", + "kind": "import-statement", + "original": "../../../mol-model/sequence" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/sort.js": { + "bytes": 1617, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../mol-util/array" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/utils/atomic-ranges.js": { + "bytes": 5358, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-ranges.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int/sorted-ranges" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/util.js", + "kind": "import-statement", + "original": "../../../util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/memoize.js": { + "bytes": 949, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/properties.js": { + "bytes": 4573, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/carbohydrates/constants.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/structure/carbohydrates/constants" + }, + { + "path": "node_modules/molstar/lib/mol-util/memoize.js", + "kind": "import-statement", + "original": "../../../mol-util/memoize" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/common.js": { + "bytes": 336, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../mol-data/db" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/entities.js": { + "bytes": 4949, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/common.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/common" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "./schema" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/trajectory.js": { + "bytes": 402, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/parser.js": { + "bytes": 8952, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-util/uuid.js", + "kind": "import-statement", + "original": "../../../mol-util/uuid" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/model.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/model" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../../mol-model/custom-property" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/atomic.js", + "kind": "import-statement", + "original": "./atomic" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/coarse.js", + "kind": "import-statement", + "original": "./coarse" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/sequence.js", + "kind": "import-statement", + "original": "./sequence" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/sort.js", + "kind": "import-statement", + "original": "./sort" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/utils/atomic-ranges.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/utils/atomic-ranges" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/properties.js", + "kind": "import-statement", + "original": "./properties" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/entities.js", + "kind": "import-statement", + "original": "./entities" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/trajectory.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/trajectory" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/model.js": { + "bytes": 13883, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/uuid.js", + "kind": "import-statement", + "original": "../../../mol-util/uuid" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../custom-property" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/coordinates.js", + "kind": "import-statement", + "original": "../coordinates" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/index-pair.js", + "kind": "import-statement", + "original": "../../../mol-model-formats/structure/property/bonds/index-pair" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/parser.js", + "kind": "import-statement", + "original": "../../../mol-model-formats/structure/basic/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js", + "kind": "import-statement", + "original": "../../../mol-model-formats/structure/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/symmetry.js", + "kind": "import-statement", + "original": "../../../mol-model-formats/structure/property/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/common/custom-model-property.js", + "kind": "import-statement", + "original": "../../../mol-model-props/common/custom-model-property" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/trajectory.js", + "kind": "import-statement", + "original": "../trajectory" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/secondary-structure.js", + "kind": "import-statement", + "original": "../../../mol-model-formats/structure/property/secondary-structure" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/custom/indexed.js": { + "bytes": 7024, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../../structure" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../../../mol-util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/indexing.js": { + "bytes": 163, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model.js": { + "bytes": 491, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/model.js", + "kind": "import-statement", + "original": "./model/model" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "./model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/symmetry.js", + "kind": "import-statement", + "original": "./model/properties/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/sequence.js", + "kind": "import-statement", + "original": "./model/properties/sequence" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/custom/indexed.js", + "kind": "import-statement", + "original": "./model/properties/custom/indexed" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/indexing.js", + "kind": "import-statement", + "original": "./model/indexing" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure.js": { + "bytes": 441, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/coordinates.js", + "kind": "import-statement", + "original": "./structure/coordinates" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/topology.js", + "kind": "import-statement", + "original": "./structure/topology" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model.js", + "kind": "import-statement", + "original": "./structure/model" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "./structure/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query.js", + "kind": "import-statement", + "original": "./structure/query" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/trajectory.js", + "kind": "import-statement", + "original": "./structure/trajectory" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/util.js": { + "bytes": 3997, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../mol-util/array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/renderable/util.js": { + "bytes": 8069, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary-helper.js", + "kind": "import-statement", + "original": "../../mol-math/geometry/boundary-helper" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/marker-data.js": { + "bytes": 3473, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/value-cell.js", + "kind": "import-statement", + "original": "../../mol-util/value-cell" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/location.js": { + "bytes": 541, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/util/location-iterator.js": { + "bytes": 2947, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/location.js", + "kind": "import-statement", + "original": "../../mol-model/location" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/framebuffer.js": { + "bytes": 2065, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "../../mol-util/id-factory" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "./compat" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/extensions.js": { + "bytes": 7058, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "./compat" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/state.js": { + "bytes": 14958, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/image.js": { + "bytes": 1433, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/apply-fog.glsl.js": { + "bytes": 1203, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/apply-interior-color.glsl.js": { + "bytes": 286, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/apply-light-color.glsl.js": { + "bytes": 3416, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/apply-marker-color.glsl.js": { + "bytes": 831, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/assign-clipping-varying.glsl.js": { + "bytes": 379, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/assign-color-varying.glsl.js": { + "bytes": 7574, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/assign-group.glsl.js": { + "bytes": 189, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/assign-marker-varying.glsl.js": { + "bytes": 341, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/assign-material-color.glsl.js": { + "bytes": 3783, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/assign-position.glsl.js": { + "bytes": 520, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/assign-size.glsl.js": { + "bytes": 719, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.js": { + "bytes": 440, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/check-transparency.glsl.js": { + "bytes": 523, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/clip-instance.glsl.js": { + "bytes": 354, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/clip-pixel.glsl.js": { + "bytes": 156, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/color-frag-params.glsl.js": { + "bytes": 1399, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/color-vert-params.glsl.js": { + "bytes": 4404, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/common-clip.glsl.js": { + "bytes": 4350, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/common-frag-params.glsl.js": { + "bytes": 3863, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/common-vert-params.glsl.js": { + "bytes": 1678, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/common.glsl.js": { + "bytes": 7827, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/fade-lod.glsl.js": { + "bytes": 1745, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/float-to-rgba.glsl.js": { + "bytes": 1810, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/light-frag-params.glsl.js": { + "bytes": 6199, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/matrix-scale.glsl.js": { + "bytes": 301, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/normal-frag-params.glsl.js": { + "bytes": 60, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/read-from-texture.glsl.js": { + "bytes": 642, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/rgba-to-float.glsl.js": { + "bytes": 4466, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/size-vert-params.glsl.js": { + "bytes": 346, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/texture3d-from-1d-trilinear.glsl.js": { + "bytes": 1494, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/texture3d-from-2d-linear.glsl.js": { + "bytes": 1076, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/texture3d-from-2d-nearest.glsl.js": { + "bytes": 690, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/wboit-write.glsl.js": { + "bytes": 1233, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/dpoit-write.glsl.js": { + "bytes": 2427, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/points.vert.js": { + "bytes": 1048, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/points.frag.js": { + "bytes": 1791, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/spheres.vert.js": { + "bytes": 4238, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/spheres.frag.js": { + "bytes": 4739, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/cylinders.vert.js": { + "bytes": 2783, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/cylinders.frag.js": { + "bytes": 8953, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/text.vert.js": { + "bytes": 2280, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/text.frag.js": { + "bytes": 2482, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/lines.vert.js": { + "bytes": 3702, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/lines.frag.js": { + "bytes": 1282, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/mesh.vert.js": { + "bytes": 1478, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/mesh.frag.js": { + "bytes": 1990, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/direct-volume.vert.js": { + "bytes": 1281, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/direct-volume.frag.js": { + "bytes": 12114, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/image.vert.js": { + "bytes": 513, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/image.frag.js": { + "bytes": 5905, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader-code.js": { + "bytes": 14543, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "../mol-util/id-factory" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "./webgl/compat" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/apply-fog.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/apply-fog.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/apply-interior-color.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/apply-interior-color.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/apply-light-color.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/apply-light-color.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/apply-marker-color.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/apply-marker-color.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/assign-clipping-varying.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/assign-clipping-varying.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/assign-color-varying.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/assign-color-varying.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/assign-group.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/assign-group.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/assign-marker-varying.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/assign-marker-varying.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/assign-material-color.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/assign-material-color.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/assign-position.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/assign-position.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/assign-size.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/assign-size.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/check-picking-alpha.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/check-transparency.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/check-transparency.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/clip-instance.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/clip-instance.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/clip-pixel.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/clip-pixel.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/color-frag-params.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/color-frag-params.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/color-vert-params.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/color-vert-params.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/common-clip.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/common-clip.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/common-frag-params.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/common-frag-params.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/common-vert-params.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/common-vert-params.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/common.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/common.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/fade-lod.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/fade-lod.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/float-to-rgba.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/float-to-rgba.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/light-frag-params.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/light-frag-params.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/matrix-scale.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/matrix-scale.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/normal-frag-params.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/normal-frag-params.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/read-from-texture.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/read-from-texture.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/rgba-to-float.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/rgba-to-float.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/size-vert-params.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/size-vert-params.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/texture3d-from-1d-trilinear.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/texture3d-from-1d-trilinear.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/texture3d-from-2d-linear.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/texture3d-from-2d-linear.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/texture3d-from-2d-nearest.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/texture3d-from-2d-nearest.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/wboit-write.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/wboit-write.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/chunks/dpoit-write.glsl.js", + "kind": "import-statement", + "original": "./shader/chunks/dpoit-write.glsl" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/points.vert.js", + "kind": "import-statement", + "original": "./shader/points.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/points.frag.js", + "kind": "import-statement", + "original": "./shader/points.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/spheres.vert.js", + "kind": "import-statement", + "original": "./shader/spheres.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/spheres.frag.js", + "kind": "import-statement", + "original": "./shader/spheres.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/cylinders.vert.js", + "kind": "import-statement", + "original": "./shader/cylinders.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/cylinders.frag.js", + "kind": "import-statement", + "original": "./shader/cylinders.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/text.vert.js", + "kind": "import-statement", + "original": "./shader/text.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/text.frag.js", + "kind": "import-statement", + "original": "./shader/text.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/lines.vert.js", + "kind": "import-statement", + "original": "./shader/lines.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/lines.frag.js", + "kind": "import-statement", + "original": "./shader/lines.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/mesh.vert.js", + "kind": "import-statement", + "original": "./shader/mesh.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/mesh.frag.js", + "kind": "import-statement", + "original": "./shader/mesh.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/direct-volume.vert.js", + "kind": "import-statement", + "original": "./shader/direct-volume.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/direct-volume.frag.js", + "kind": "import-statement", + "original": "./shader/direct-volume.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/image.vert.js", + "kind": "import-statement", + "original": "./shader/image.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/image.frag.js", + "kind": "import-statement", + "original": "./shader/image.frag" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/uniform.js": { + "bytes": 4009, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../mol-util/object" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/buffer.js": { + "bytes": 5587, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "../../mol-util/id-factory" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "./compat" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/program.js": { + "bytes": 7902, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/uniform.js", + "kind": "import-statement", + "original": "./uniform" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/buffer.js", + "kind": "import-statement", + "original": "./buffer" + }, + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "../../mol-util/id-factory" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "./compat" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/shader.js": { + "bytes": 1399, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "../../mol-util/id-factory" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/reference-cache.js": { + "bytes": 1177, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/renderbuffer.js": { + "bytes": 3063, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "../../mol-util/id-factory" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "./compat" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/framebuffer.js", + "kind": "import-statement", + "original": "./framebuffer" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/vertex-array.js": { + "bytes": 2066, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "../../mol-util/id-factory" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/resources.js": { + "bytes": 5143, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/webgl/program.js", + "kind": "import-statement", + "original": "./program" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/shader.js", + "kind": "import-statement", + "original": "./shader" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/framebuffer.js", + "kind": "import-statement", + "original": "./framebuffer" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/buffer.js", + "kind": "import-statement", + "original": "./buffer" + }, + { + "path": "node_modules/molstar/lib/mol-util/reference-cache.js", + "kind": "import-statement", + "original": "../../mol-util/reference-cache" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/renderbuffer.js", + "kind": "import-statement", + "original": "./renderbuffer" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "./texture" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/vertex-array.js", + "kind": "import-statement", + "original": "./vertex-array" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/render-target.js": { + "bytes": 2572, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "../../mol-util/id-factory" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "./texture" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/framebuffer.js", + "kind": "import-statement", + "original": "./framebuffer" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "./compat" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/timer.js": { + "bytes": 7703, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/now.js", + "kind": "import-statement", + "original": "../../mol-util/now" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/context.js": { + "bytes": 11509, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "./compat" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/framebuffer.js", + "kind": "import-statement", + "original": "./framebuffer" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/extensions.js", + "kind": "import-statement", + "original": "./extensions" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/state.js", + "kind": "import-statement", + "original": "./state" + }, + { + "path": "node_modules/molstar/lib/mol-util/image.js", + "kind": "import-statement", + "original": "../../mol-util/image" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/resources.js", + "kind": "import-statement", + "original": "./resources" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-target.js", + "kind": "import-statement", + "original": "./render-target" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-util/now.js", + "kind": "import-statement", + "original": "../../mol-util/now" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/timer.js", + "kind": "import-statement", + "original": "./timer" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/compat.js": { + "bytes": 17920, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/context.js", + "kind": "import-statement", + "original": "./context" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/program.js", + "kind": "import-statement", + "original": "./program" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/shader.js", + "kind": "import-statement", + "original": "./shader" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/texture.js": { + "bytes": 17929, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "../../mol-util/id-factory" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "./compat" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../mol-math/misc" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/color-data.js": { + "bytes": 10694, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/location.js", + "kind": "import-statement", + "original": "../../mol-model/location" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/texture" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/instance-grid.js": { + "bytes": 7964, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int/ordered-set.js", + "kind": "import-statement", + "original": "../../mol-data/int/ordered-set" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../linear-algebra/3d/vec3" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/lookup3d/grid.js", + "kind": "import-statement", + "original": "./lookup3d/grid" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/sphere3d.js", + "kind": "import-statement", + "original": "./primitives/sphere3d" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/transform-data.js": { + "bytes": 4864, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/instance-grid.js", + "kind": "import-statement", + "original": "../../mol-math/geometry/instance-grid" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/color/names.js": { + "bytes": 4039, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/color.js", + "kind": "import-statement", + "original": "./color" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/categories.js": { + "bytes": 350, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/uniform.js": { + "bytes": 1543, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/legend.js", + "kind": "import-statement", + "original": "../../mol-util/legend" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/size/uniform.js": { + "bytes": 985, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/material.js": { + "bytes": 1668, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "./param-definition" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/clip.js": { + "bytes": 3211, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "./param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "./string" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/base.js": { + "bytes": 7872, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transform-data.js", + "kind": "import-statement", + "original": "./transform-data" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-model/location.js", + "kind": "import-statement", + "original": "../../mol-model/location" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/uniform.js", + "kind": "import-statement", + "original": "../../mol-theme/color/uniform" + }, + { + "path": "node_modules/molstar/lib/mol-theme/size/uniform.js", + "kind": "import-statement", + "original": "../../mol-theme/size/uniform" + }, + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../mol-math/interpolate" + }, + { + "path": "node_modules/molstar/lib/mol-util/material.js", + "kind": "import-statement", + "original": "../../mol-util/material" + }, + { + "path": "node_modules/molstar/lib/mol-util/clip.js", + "kind": "import-statement", + "original": "../../mol-util/clip" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/vec3" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec4.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/vec4" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/overpaint-data.js": { + "bytes": 2650, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/value-cell.js", + "kind": "import-statement", + "original": "../../mol-util/value-cell" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/texture" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/transparency-data.js": { + "bytes": 3126, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/value-cell.js", + "kind": "import-statement", + "original": "../../mol-util/value-cell" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/texture" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/clipping-data.js": { + "bytes": 1956, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/value-cell.js", + "kind": "import-statement", + "original": "../../mol-util/value-cell" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/substance-data.js": { + "bytes": 2668, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/value-cell.js", + "kind": "import-statement", + "original": "../../mol-util/value-cell" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/texture" + }, + { + "path": "node_modules/molstar/lib/mol-util/material.js", + "kind": "import-statement", + "original": "../../mol-util/material" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/emissive-data.js": { + "bytes": 2889, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/value-cell.js", + "kind": "import-statement", + "original": "../../mol-util/value-cell" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/texture" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js": { + "bytes": 26573, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util.js", + "kind": "import-statement", + "original": "../../util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/marker-data.js", + "kind": "import-statement", + "original": "../marker-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/color-data.js", + "kind": "import-statement", + "original": "../color-data" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/overpaint-data.js", + "kind": "import-statement", + "original": "../overpaint-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transparency-data.js", + "kind": "import-statement", + "original": "../transparency-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/clipping-data.js", + "kind": "import-statement", + "original": "../clipping-data" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/substance-data.js", + "kind": "import-statement", + "original": "../substance-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/emissive-data.js", + "kind": "import-statement", + "original": "../emissive-data" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/number-packing.js": { + "bytes": 1309, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../mol-math/interpolate" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/size-data.js": { + "bytes": 4694, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-model/location.js", + "kind": "import-statement", + "original": "../../mol-model/location" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/geometry.js", + "kind": "import-statement", + "original": "./geometry" + }, + { + "path": "node_modules/molstar/lib/mol-util/number-packing.js", + "kind": "import-statement", + "original": "../../mol-util/number-packing" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/points/points.js": { + "bytes": 8334, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util.js", + "kind": "import-statement", + "original": "../../util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/color-data.js", + "kind": "import-statement", + "original": "../color-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/marker-data.js", + "kind": "import-statement", + "original": "../marker-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/size-data.js", + "kind": "import-statement", + "original": "../size-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/overpaint-data.js", + "kind": "import-statement", + "original": "../overpaint-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transparency-data.js", + "kind": "import-statement", + "original": "../transparency-data" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/clipping-data.js", + "kind": "import-statement", + "original": "../clipping-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/substance-data.js", + "kind": "import-statement", + "original": "../substance-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/emissive-data.js", + "kind": "import-statement", + "original": "../emissive-data" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/distance-transform.js": { + "bytes": 1386, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/text/font-atlas.js": { + "bytes": 6107, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/distance-transform.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry/distance-transform" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/nodejs-shims.js", + "kind": "import-statement", + "original": "../../../mol-util/nodejs-shims" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/text/text.js": { + "bytes": 12703, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/color-data.js", + "kind": "import-statement", + "original": "../color-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/size-data.js", + "kind": "import-statement", + "original": "../size-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/marker-data.js", + "kind": "import-statement", + "original": "../marker-data" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/font-atlas.js", + "kind": "import-statement", + "original": "./font-atlas" + }, + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../../mol-math/interpolate" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/overpaint-data.js", + "kind": "import-statement", + "original": "../overpaint-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transparency-data.js", + "kind": "import-statement", + "original": "../transparency-data" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util.js", + "kind": "import-statement", + "original": "../../util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/clipping-data.js", + "kind": "import-statement", + "original": "../clipping-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/substance-data.js", + "kind": "import-statement", + "original": "../substance-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/emissive-data.js", + "kind": "import-statement", + "original": "../emissive-data" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/lines/lines-builder.js": { + "bytes": 4212, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "./lines" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js": { + "bytes": 9907, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util.js", + "kind": "import-statement", + "original": "../../util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/color-data.js", + "kind": "import-statement", + "original": "../color-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/marker-data.js", + "kind": "import-statement", + "original": "../marker-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/size-data.js", + "kind": "import-statement", + "original": "../size-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines-builder.js", + "kind": "import-statement", + "original": "./lines-builder" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/overpaint-data.js", + "kind": "import-statement", + "original": "../overpaint-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transparency-data.js", + "kind": "import-statement", + "original": "../transparency-data" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/clipping-data.js", + "kind": "import-statement", + "original": "../clipping-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/substance-data.js", + "kind": "import-statement", + "original": "../substance-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/emissive-data.js", + "kind": "import-statement", + "original": "../emissive-data" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/primitive.js": { + "bytes": 3093, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/polygon.js": { + "bytes": 732, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/cage.js": { + "bytes": 777, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/box.js": { + "bytes": 2258, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/primitive.js", + "kind": "import-statement", + "original": "./primitive" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/polygon.js", + "kind": "import-statement", + "original": "./polygon" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/cage.js", + "kind": "import-statement", + "original": "./cage" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/direct-volume/transfer-function.js": { + "bytes": 1577, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../../mol-math/interpolate" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/histogram.js": { + "bytes": 906, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../mol-util/array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/volume/grid.js": { + "bytes": 2566, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/histogram.js", + "kind": "import-statement", + "original": "../../mol-math/histogram" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/volume/cube.js": { + "bytes": 2421, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/volume/density-server.js": { + "bytes": 2658, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/volume/volume.js": { + "bytes": 12838, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/volume/grid.js", + "kind": "import-statement", + "original": "./grid" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary-helper.js", + "kind": "import-statement", + "original": "../../mol-math/geometry/boundary-helper" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/volume/cube.js", + "kind": "import-statement", + "original": "../../mol-model-formats/volume/cube" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/common" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../custom-property" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/number.js", + "kind": "import-statement", + "original": "../../mol-util/number" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/volume/density-server.js", + "kind": "import-statement", + "original": "../../mol-model-formats/volume/density-server" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/volume.js": { + "bytes": 277, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/volume/volume.js", + "kind": "import-statement", + "original": "./volume/volume" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume/grid.js", + "kind": "import-statement", + "original": "./volume/grid" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/direct-volume/direct-volume.js": { + "bytes": 13235, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "../../../mol-gl/webgl/texture" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/box.js", + "kind": "import-statement", + "original": "../../primitive/box" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/color-data.js", + "kind": "import-statement", + "original": "../color-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/marker-data.js", + "kind": "import-statement", + "original": "../marker-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/overpaint-data.js", + "kind": "import-statement", + "original": "../overpaint-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transparency-data.js", + "kind": "import-statement", + "original": "../transparency-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/direct-volume/transfer-function.js", + "kind": "import-statement", + "original": "./transfer-function" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/clipping-data.js", + "kind": "import-statement", + "original": "../clipping-data" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/substance-data.js", + "kind": "import-statement", + "original": "../substance-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/emissive-data.js", + "kind": "import-statement", + "original": "../emissive-data" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres.js": { + "bytes": 15733, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/color-data.js", + "kind": "import-statement", + "original": "../color-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/marker-data.js", + "kind": "import-statement", + "original": "../marker-data" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/size-data.js", + "kind": "import-statement", + "original": "../size-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/overpaint-data.js", + "kind": "import-statement", + "original": "../overpaint-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transparency-data.js", + "kind": "import-statement", + "original": "../transparency-data" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util.js", + "kind": "import-statement", + "original": "../../util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/clipping-data.js", + "kind": "import-statement", + "original": "../clipping-data" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/substance-data.js", + "kind": "import-statement", + "original": "../substance-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/emissive-data.js", + "kind": "import-statement", + "original": "../emissive-data" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/texture-mesh/texture-mesh.js": { + "bytes": 10971, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/color-data.js", + "kind": "import-statement", + "original": "../color-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/marker-data.js", + "kind": "import-statement", + "original": "../marker-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/overpaint-data.js", + "kind": "import-statement", + "original": "../overpaint-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transparency-data.js", + "kind": "import-statement", + "original": "../transparency-data" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "../../../mol-gl/webgl/texture" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/clipping-data.js", + "kind": "import-statement", + "original": "../clipping-data" + }, + { + "path": "node_modules/molstar/lib/mol-model/location.js", + "kind": "import-statement", + "original": "../../../mol-model/location" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/substance-data.js", + "kind": "import-statement", + "original": "../substance-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/emissive-data.js", + "kind": "import-statement", + "original": "../emissive-data" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/renderable/schema.js": { + "bytes": 10215, + "imports": [ + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/copy.frag.js": { + "bytes": 238, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/quad.vert.js": { + "bytes": 403, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/webgl/render-item.js": { + "bytes": 18276, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/webgl/buffer.js", + "kind": "import-statement", + "original": "./buffer" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "./texture" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/context.js", + "kind": "import-statement", + "original": "./context" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "../../mol-util/id-factory" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/framebuffer.js", + "kind": "import-statement", + "original": "./framebuffer" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/uniform.js", + "kind": "import-statement", + "original": "./uniform" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/primitives/plane3d.js": { + "bytes": 2957, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../../linear-algebra/3d/vec3" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/primitives/frustum3d.js": { + "bytes": 2974, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../../linear-algebra/3d/vec3" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/plane3d.js", + "kind": "import-statement", + "original": "./plane3d" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/renderable.js": { + "bytes": 10625, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "../mol-util/id-factory" + }, + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../mol-math/interpolate" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/frustum3d.js", + "kind": "import-statement", + "original": "../mol-math/geometry/primitives/frustum3d" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/plane3d.js", + "kind": "import-statement", + "original": "../mol-math/geometry/primitives/plane3d" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec4.js", + "kind": "import-statement", + "original": "../mol-math/linear-algebra/3d/vec4" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../mol-util/debug" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/compute/util.js": { + "bytes": 4519, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/texture" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/copy.frag.js", + "kind": "import-statement", + "original": "../shader/copy.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../renderable" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/image/image.js": { + "bytes": 7979, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/color-data.js", + "kind": "import-statement", + "original": "../color-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/marker-data.js", + "kind": "import-statement", + "original": "../marker-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/overpaint-data.js", + "kind": "import-statement", + "original": "../overpaint-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transparency-data.js", + "kind": "import-statement", + "original": "../transparency-data" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/clipping-data.js", + "kind": "import-statement", + "original": "../clipping-data" + }, + { + "path": "node_modules/molstar/lib/mol-model/location.js", + "kind": "import-statement", + "original": "../../../mol-model/location" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../../../mol-gl/compute/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/substance-data.js", + "kind": "import-statement", + "original": "../substance-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/emissive-data.js", + "kind": "import-statement", + "original": "../emissive-data" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders.js": { + "bytes": 12602, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util.js", + "kind": "import-statement", + "original": "../../util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/color-data.js", + "kind": "import-statement", + "original": "../color-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/marker-data.js", + "kind": "import-statement", + "original": "../marker-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/size-data.js", + "kind": "import-statement", + "original": "../size-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/overpaint-data.js", + "kind": "import-statement", + "original": "../overpaint-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transparency-data.js", + "kind": "import-statement", + "original": "../transparency-data" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/clipping-data.js", + "kind": "import-statement", + "original": "../clipping-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/substance-data.js", + "kind": "import-statement", + "original": "../substance-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/emissive-data.js", + "kind": "import-statement", + "original": "../emissive-data" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/geometry.js": { + "bytes": 3379, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "./mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/points/points.js", + "kind": "import-statement", + "original": "./points/points" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text.js", + "kind": "import-statement", + "original": "./text/text" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "./lines/lines" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/direct-volume/direct-volume.js", + "kind": "import-statement", + "original": "./direct-volume/direct-volume" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres.js", + "kind": "import-statement", + "original": "./spheres/spheres" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/texture-mesh/texture-mesh.js", + "kind": "import-statement", + "original": "./texture-mesh/texture-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/image/image.js", + "kind": "import-statement", + "original": "./image/image" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders.js", + "kind": "import-statement", + "original": "./cylinders/cylinders" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/size/shape-group.js": { + "bytes": 1177, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../mol-model/shape" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/shape-group.js": { + "bytes": 1323, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../mol-model/shape" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/renderable/direct-volume.js": { + "bytes": 2282, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "./schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/renderable/mesh.js": { + "bytes": 1729, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "./schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/renderable/points.js": { + "bytes": 1302, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "./schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/renderable/lines.js": { + "bytes": 1458, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "./schema" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../shader-code" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/renderable/spheres.js": { + "bytes": 1852, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "./schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/renderable/text.js": { + "bytes": 1804, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "./schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/renderable/texture-mesh.js": { + "bytes": 1802, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "./schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/renderable/image.js": { + "bytes": 1584, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "./schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/image/image.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/image/image" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/renderable/cylinders.js": { + "bytes": 1914, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "./schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/render-object.js": { + "bytes": 2117, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/id-factory.js", + "kind": "import-statement", + "original": "../mol-util/id-factory" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/direct-volume.js", + "kind": "import-statement", + "original": "./renderable/direct-volume" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/mesh.js", + "kind": "import-statement", + "original": "./renderable/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/points.js", + "kind": "import-statement", + "original": "./renderable/points" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/lines.js", + "kind": "import-statement", + "original": "./renderable/lines" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/spheres.js", + "kind": "import-statement", + "original": "./renderable/spheres" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/text.js", + "kind": "import-statement", + "original": "./renderable/text" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/texture-mesh.js", + "kind": "import-statement", + "original": "./renderable/texture-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/image.js", + "kind": "import-statement", + "original": "./renderable/image" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/cylinders.js", + "kind": "import-statement", + "original": "./renderable/cylinders" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/shape/shape.js": { + "bytes": 8305, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/geometry.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/centroid-helper.js", + "kind": "import-statement", + "original": "../../mol-math/geometry/centroid-helper" + }, + { + "path": "node_modules/molstar/lib/mol-theme/size/shape-group.js", + "kind": "import-statement", + "original": "../../mol-theme/size/shape-group" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/shape-group.js", + "kind": "import-statement", + "original": "../../mol-theme/color/shape-group" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transform-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/transform-data" + }, + { + "path": "node_modules/molstar/lib/mol-gl/render-object.js", + "kind": "import-statement", + "original": "../../mol-gl/render-object" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../mol-geo/util/location-iterator" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/shape.js": { + "bytes": 190, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/shape/shape.js", + "kind": "import-statement", + "original": "./shape/shape" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/loci.js": { + "bytes": 11243, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "./structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds.js", + "kind": "import-statement", + "original": "./structure/structure/unit/bonds" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "./shape" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "./structure/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary-helper.js", + "kind": "import-statement", + "original": "../mol-math/geometry/boundary-helper" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../mol-util/string" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume/volume.js", + "kind": "import-statement", + "original": "./volume/volume" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/script/mol-script/script-macro.js": { + "bytes": 1006, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../language/builder" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/script/mol-script/symbols.js": { + "bytes": 18058, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../../../mol-data/generic" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/expression.js", + "kind": "import-statement", + "original": "../../language/expression" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/symbol.js", + "kind": "import-statement", + "original": "../../language/symbol" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/symbol-table.js", + "kind": "import-statement", + "original": "../../language/symbol-table" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/type.js", + "kind": "import-statement", + "original": "../../language/type" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/symbol-table/structure-query.js", + "kind": "import-statement", + "original": "../../language/symbol-table/structure-query" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-script/script/mol-script/script-macro.js", + "kind": "import-statement", + "original": "./script-macro" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/monadic-parser.js": { + "bytes": 14436, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/language/parser.js": { + "bytes": 5626, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/monadic-parser.js", + "kind": "import-statement", + "original": "../../mol-util/monadic-parser" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/expression.js", + "kind": "import-statement", + "original": "./expression" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "./builder" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/helper.js": { + "bytes": 12517, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/monadic-parser.js", + "kind": "import-statement", + "original": "../../mol-util/monadic-parser" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../mol-script/language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../../mol-util/string" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/jmol/properties.js": { + "bytes": 28130, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../mol-script/language/builder" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/jmol/operators.js": { + "bytes": 1265, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/monadic-parser.js", + "kind": "import-statement", + "original": "../../../mol-util/monadic-parser" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/helper.js", + "kind": "import-statement", + "original": "../helper" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../mol-script/language/builder" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/jmol/keywords.js": { + "bytes": 17435, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../mol-script/language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/helper.js", + "kind": "import-statement", + "original": "../helper" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/jmol/parser.js": { + "bytes": 8219, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/monadic-parser.js", + "kind": "import-statement", + "original": "../../../mol-util/monadic-parser" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/helper.js", + "kind": "import-statement", + "original": "../helper" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../mol-script/language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/jmol/properties.js", + "kind": "import-statement", + "original": "./properties" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/jmol/operators.js", + "kind": "import-statement", + "original": "./operators" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/jmol/keywords.js", + "kind": "import-statement", + "original": "./keywords" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/pymol/properties.js": { + "bytes": 7497, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../mol-script/language/builder" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/pymol/operators.js": { + "bytes": 9708, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/monadic-parser.js", + "kind": "import-statement", + "original": "../../../mol-util/monadic-parser" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/helper.js", + "kind": "import-statement", + "original": "../helper" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../mol-script/language/builder" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/pymol/keywords.js": { + "bytes": 7334, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../mol-script/language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/helper.js", + "kind": "import-statement", + "original": "../helper" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/pymol/parser.js": { + "bytes": 5607, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/monadic-parser.js", + "kind": "import-statement", + "original": "../../../mol-util/monadic-parser" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/helper.js", + "kind": "import-statement", + "original": "../helper" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../mol-script/language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/pymol/properties.js", + "kind": "import-statement", + "original": "./properties" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/pymol/operators.js", + "kind": "import-statement", + "original": "./operators" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/pymol/keywords.js", + "kind": "import-statement", + "original": "./keywords" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/vmd/properties.js": { + "bytes": 8048, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../mol-script/language/builder" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/vmd/operators.js": { + "bytes": 2665, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/monadic-parser.js", + "kind": "import-statement", + "original": "../../../mol-util/monadic-parser" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/helper.js", + "kind": "import-statement", + "original": "../helper" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../mol-script/language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/vmd/properties.js", + "kind": "import-statement", + "original": "./properties" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/vmd/keywords.js": { + "bytes": 8409, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/transpilers/helper.js", + "kind": "import-statement", + "original": "../helper" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../mol-script/language/builder" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/vmd/functions.js": { + "bytes": 2370, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../mol-script/language/builder" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/vmd/parser.js": { + "bytes": 7328, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/monadic-parser.js", + "kind": "import-statement", + "original": "../../../mol-util/monadic-parser" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/helper.js", + "kind": "import-statement", + "original": "../helper" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../mol-script/language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/vmd/properties.js", + "kind": "import-statement", + "original": "./properties" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/vmd/operators.js", + "kind": "import-statement", + "original": "./operators" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/vmd/keywords.js", + "kind": "import-statement", + "original": "./keywords" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/vmd/functions.js", + "kind": "import-statement", + "original": "./functions" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpilers/all.js": { + "bytes": 401, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/transpilers/jmol/parser.js", + "kind": "import-statement", + "original": "./jmol/parser" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/pymol/parser.js", + "kind": "import-statement", + "original": "./pymol/parser" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpilers/vmd/parser.js", + "kind": "import-statement", + "original": "./vmd/parser" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/transpile.js": { + "bytes": 445, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/transpilers/all.js", + "kind": "import-statement", + "original": "./transpilers/all" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/runtime/query/base.js": { + "bytes": 4884, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/expression.js", + "kind": "import-statement", + "original": "../../language/expression" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/runtime/query/table.js": { + "bytes": 23698, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/symbol-table.js", + "kind": "import-statement", + "original": "../../language/symbol-table" + }, + { + "path": "node_modules/molstar/lib/mol-script/runtime/query/base.js", + "kind": "import-statement", + "original": "./base" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-util/set.js", + "kind": "import-statement", + "original": "../../../mol-util/set" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../../../mol-util/string" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/atomic" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/queries/internal.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/query/queries/internal" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../mol-util/array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/runtime/query/compiler.js": { + "bytes": 194, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/runtime/query/base.js", + "kind": "import-statement", + "original": "./base" + }, + { + "path": "node_modules/molstar/lib/mol-script/runtime/query/table.js", + "kind": "import-statement", + "original": "./table" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/script.js": { + "bytes": 2187, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/script/mol-script/symbols.js", + "kind": "import-statement", + "original": "./script/mol-script/symbols" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/parser.js", + "kind": "import-statement", + "original": "./language/parser" + }, + { + "path": "node_modules/molstar/lib/mol-script/transpile.js", + "kind": "import-statement", + "original": "./transpile" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-script/runtime/query/compiler.js", + "kind": "import-statement", + "original": "./runtime/query/compiler" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "./language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../mol-util/type-helpers" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/overpaint.js": { + "bytes": 5430, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-script/script.js", + "kind": "import-statement", + "original": "../mol-script/script" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-state/object.js": { + "bytes": 4671, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../mol-state" + } + ], + "format": "esm" + }, + "node_modules/immutable/dist/immutable.es.js": { + "bytes": 156683, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-state/action.js": { + "bytes": 2075, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../mol-util/param-definition" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-state/transformer.js": { + "bytes": 4214, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/transform.js", + "kind": "import-statement", + "original": "./transform" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-state/action.js", + "kind": "import-statement", + "original": "./action" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../mol-util/string" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-state/transform.js": { + "bytes": 5153, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/transformer.js", + "kind": "import-statement", + "original": "./transformer" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-state/tree/transient.js": { + "bytes": 8517, + "imports": [ + { + "path": "node_modules/immutable/dist/immutable.es.js", + "kind": "import-statement", + "original": "immutable" + }, + { + "path": "node_modules/molstar/lib/mol-state/transform.js", + "kind": "import-statement", + "original": "../transform" + }, + { + "path": "node_modules/molstar/lib/mol-state/tree/immutable.js", + "kind": "import-statement", + "original": "./immutable" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-state/tree/immutable.js": { + "bytes": 5556, + "imports": [ + { + "path": "node_modules/immutable/dist/immutable.es.js", + "kind": "import-statement", + "original": "immutable" + }, + { + "path": "node_modules/molstar/lib/mol-state/transform.js", + "kind": "import-statement", + "original": "../transform" + }, + { + "path": "node_modules/molstar/lib/mol-state/tree/transient.js", + "kind": "import-statement", + "original": "./transient" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-state/tree.js": { + "bytes": 285, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/tree/immutable.js", + "kind": "import-statement", + "original": "./tree/immutable" + }, + { + "path": "node_modules/molstar/lib/mol-state/tree/transient.js", + "kind": "import-statement", + "original": "./tree/transient" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-state/state/selection.js": { + "bytes": 12418, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/tree.js", + "kind": "import-statement", + "original": "../tree" + }, + { + "path": "node_modules/molstar/lib/mol-state/transform.js", + "kind": "import-statement", + "original": "../transform" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/rx-event-helper.js": { + "bytes": 977, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + } + ], + "format": "esm" + }, + "node_modules/immer/dist/immer.mjs": { + "bytes": 35543, + "imports": [ + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-state/state/builder.js": { + "bytes": 8784, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/tree/immutable.js", + "kind": "import-statement", + "original": "../tree/immutable" + }, + { + "path": "node_modules/molstar/lib/mol-state/object.js", + "kind": "import-statement", + "original": "../object" + }, + { + "path": "node_modules/molstar/lib/mol-state/transform.js", + "kind": "import-statement", + "original": "../transform" + }, + { + "path": "node_modules/immer/dist/immer.mjs", + "kind": "import-statement", + "original": "immer" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-state/action/manager.js": { + "bytes": 2363, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/transformer.js", + "kind": "import-statement", + "original": "../transformer" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-util/rx-event-helper.js", + "kind": "import-statement", + "original": "../../mol-util/rx-event-helper" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/log-entry.js": { + "bytes": 827, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-state/tree/spine.js": { + "bytes": 2297, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/transform.js", + "kind": "import-statement", + "original": "../transform" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/async-queue.js": { + "bytes": 1100, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "./array" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-state/state.js": { + "bytes": 30359, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/object.js", + "kind": "import-statement", + "original": "./object" + }, + { + "path": "node_modules/molstar/lib/mol-state/tree.js", + "kind": "import-statement", + "original": "./tree" + }, + { + "path": "node_modules/molstar/lib/mol-state/transform.js", + "kind": "import-statement", + "original": "./transform" + }, + { + "path": "node_modules/molstar/lib/mol-state/transformer.js", + "kind": "import-statement", + "original": "./transformer" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-state/state/selection.js", + "kind": "import-statement", + "original": "./state/selection" + }, + { + "path": "node_modules/molstar/lib/mol-util/rx-event-helper.js", + "kind": "import-statement", + "original": "../mol-util/rx-event-helper" + }, + { + "path": "node_modules/molstar/lib/mol-state/state/builder.js", + "kind": "import-statement", + "original": "./state/builder" + }, + { + "path": "node_modules/molstar/lib/mol-state/action/manager.js", + "kind": "import-statement", + "original": "./action/manager" + }, + { + "path": "node_modules/molstar/lib/mol-util/log-entry.js", + "kind": "import-statement", + "original": "../mol-util/log-entry" + }, + { + "path": "node_modules/molstar/lib/mol-util/now.js", + "kind": "import-statement", + "original": "../mol-util/now" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-state/tree/spine.js", + "kind": "import-statement", + "original": "./tree/spine" + }, + { + "path": "node_modules/molstar/lib/mol-util/async-queue.js", + "kind": "import-statement", + "original": "../mol-util/async-queue" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../mol-data/generic" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../mol-util/object" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-state/index.js": { + "bytes": 381, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/object.js", + "kind": "import-statement", + "original": "./object" + }, + { + "path": "node_modules/molstar/lib/mol-state/tree.js", + "kind": "import-statement", + "original": "./tree" + }, + { + "path": "node_modules/molstar/lib/mol-state/state.js", + "kind": "import-statement", + "original": "./state" + }, + { + "path": "node_modules/molstar/lib/mol-state/state/builder.js", + "kind": "import-statement", + "original": "./state/builder" + }, + { + "path": "node_modules/molstar/lib/mol-state/state/selection.js", + "kind": "import-statement", + "original": "./state/selection" + }, + { + "path": "node_modules/molstar/lib/mol-state/transformer.js", + "kind": "import-statement", + "original": "./transformer" + }, + { + "path": "node_modules/molstar/lib/mol-state/transform.js", + "kind": "import-statement", + "original": "./transform" + }, + { + "path": "node_modules/molstar/lib/mol-state/action.js", + "kind": "import-statement", + "original": "./action" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/objects.js": { + "bytes": 6176, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../mol-state" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/model.js": { + "bytes": 719, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../../../mol-plugin-state/objects" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/url.js": { + "bytes": 529, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/features.js": { + "bytes": 1292, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/config.js": { + "bytes": 3571, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/features.js", + "kind": "import-statement", + "original": "./features" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/util.js": { + "bytes": 5408, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js", + "kind": "import-statement", + "original": "../../../../mol-model-formats/structure/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../../../config" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/behavior.js": { + "bytes": 4860, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/objects" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/lru-cache.js": { + "bytes": 1358, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../mol-data/generic" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/command.js": { + "bytes": 1929, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/commands.js": { + "bytes": 1504, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/command.js", + "kind": "import-statement", + "original": "./command" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/single-async-queue.js": { + "bytes": 1022, + "imports": [ + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/behavior.js": { + "bytes": 23204, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../../../mol-plugin-state/objects" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/behavior.js", + "kind": "import-statement", + "original": "../../behavior" + }, + { + "path": "node_modules/molstar/lib/mol-util/lru-cache.js", + "kind": "import-statement", + "original": "../../../../mol-util/lru-cache" + }, + { + "path": "node_modules/molstar/lib/mol-util/url.js", + "kind": "import-statement", + "original": "../../../../mol-util/url" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif.js", + "kind": "import-statement", + "original": "../../../../mol-io/reader/cif" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/volume/density-server.js", + "kind": "import-statement", + "original": "../../../../mol-model-formats/volume/density-server" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../../commands" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-util/assets.js", + "kind": "import-statement", + "original": "../../../../mol-util/assets" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/global-transform.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure/model/properties/global-transform" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-util/single-async-queue.js", + "kind": "import-statement", + "original": "../../../../mol-util/single-async-queue" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/carbohydrate-symbol.js": { + "bytes": 2443, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/carbohydrates/constants.js", + "kind": "import-statement", + "original": "../../mol-model/structure/structure/carbohydrates/constants" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/legend.js", + "kind": "import-statement", + "original": "../../mol-util/legend" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/color/distinct.js": { + "bytes": 5860, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/spaces/lab.js", + "kind": "import-statement", + "original": "./spaces/lab" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/spaces/hcl.js", + "kind": "import-statement", + "original": "./spaces/hcl" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "./names" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/color/palette.js": { + "bytes": 2930, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/legend.js", + "kind": "import-statement", + "original": "../legend" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/distinct.js", + "kind": "import-statement", + "original": "./distinct" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/lists.js", + "kind": "import-statement", + "original": "./lists" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/scale.js", + "kind": "import-statement", + "original": "./scale" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/chain-id.js": { + "bytes": 3965, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/element-index.js": { + "bytes": 2825, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/color/params.js": { + "bytes": 429, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../object" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/operator-name.js": { + "bytes": 2570, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/entity-id.js": { + "bytes": 4045, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/entity-source.js": { + "bytes": 6662, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-util/number.js", + "kind": "import-statement", + "original": "../../mol-util/number" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/lists.js", + "kind": "import-statement", + "original": "../../mol-util/color/lists" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/model-index.js": { + "bytes": 2088, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/structure-index.js": { + "bytes": 2045, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/unit-index.js": { + "bytes": 2604, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/lists.js", + "kind": "import-statement", + "original": "../../mol-util/color/lists" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/element-symbol.js": { + "bytes": 7659, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/legend.js", + "kind": "import-statement", + "original": "../../mol-util/legend" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/color.js", + "kind": "import-statement", + "original": "../../mol-util/color/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/params.js", + "kind": "import-statement", + "original": "../../mol-util/color/params" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/chain-id.js", + "kind": "import-statement", + "original": "./chain-id" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/operator-name.js", + "kind": "import-statement", + "original": "./operator-name" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/entity-id.js", + "kind": "import-statement", + "original": "./entity-id" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/entity-source.js", + "kind": "import-statement", + "original": "./entity-source" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/model-index.js", + "kind": "import-statement", + "original": "./model-index" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/structure-index.js", + "kind": "import-statement", + "original": "./structure-index" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/unit-index.js", + "kind": "import-statement", + "original": "./unit-index" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/uniform.js", + "kind": "import-statement", + "original": "./uniform" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/molecule-type.js": { + "bytes": 3252, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/util.js", + "kind": "import-statement", + "original": "../../mol-model/structure/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/legend.js", + "kind": "import-statement", + "original": "../../mol-util/legend" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/color.js", + "kind": "import-statement", + "original": "../../mol-util/color/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/params.js", + "kind": "import-statement", + "original": "../../mol-util/color/params" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/polymer-id.js": { + "bytes": 4954, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/lists.js", + "kind": "import-statement", + "original": "../../mol-util/color/lists" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/polymer-index.js": { + "bytes": 3032, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/lists.js", + "kind": "import-statement", + "original": "../../mol-util/color/lists" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/residue-name.js": { + "bytes": 4516, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/legend.js", + "kind": "import-statement", + "original": "../../mol-util/legend" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/color.js", + "kind": "import-statement", + "original": "../../mol-util/color/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/params.js", + "kind": "import-statement", + "original": "../../mol-util/color/params" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/secondary-structure.js": { + "bytes": 5691, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/util.js", + "kind": "import-statement", + "original": "../../mol-model/structure/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/legend.js", + "kind": "import-statement", + "original": "../../mol-util/legend" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure.js", + "kind": "import-statement", + "original": "../../mol-model-props/computed/secondary-structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/color.js", + "kind": "import-statement", + "original": "../../mol-util/color/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/params.js", + "kind": "import-statement", + "original": "../../mol-util/color/params" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/sequence-id.js": { + "bytes": 3774, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/uncertainty.js": { + "bytes": 2458, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/illustrative.js": { + "bytes": 4100, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/chain-id.js", + "kind": "import-statement", + "original": "./chain-id" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/uniform.js", + "kind": "import-statement", + "original": "./uniform" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/entity-id.js", + "kind": "import-statement", + "original": "./entity-id" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/molecule-type.js", + "kind": "import-statement", + "original": "./molecule-type" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/entity-source.js", + "kind": "import-statement", + "original": "./entity-source" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/model-index.js", + "kind": "import-statement", + "original": "./model-index" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/structure-index.js", + "kind": "import-statement", + "original": "./structure-index" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/hydrophobicity.js": { + "bytes": 3506, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/trajectory-index.js": { + "bytes": 2499, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/occupancy.js": { + "bytes": 2054, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/operator-hkl.js": { + "bytes": 4028, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/number.js", + "kind": "import-statement", + "original": "../../mol-util/number" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/lists.js", + "kind": "import-statement", + "original": "../../mol-util/color/lists" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/partial-charge.js": { + "bytes": 520, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/property.js", + "kind": "import-statement", + "original": "../common/property" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/partial-charge.js": { + "bytes": 2337, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/partial-charge.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/property/partial-charge" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/atom-id.js": { + "bytes": 2746, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/volume-value.js": { + "bytes": 1765, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume/volume" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/volume-segment.js": { + "bytes": 1912, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume/volume" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/external-volume.js": { + "bytes": 5763, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../mol-math/interpolate" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color/cartoon.js": { + "bytes": 4440, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/chain-id.js", + "kind": "import-statement", + "original": "./chain-id" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/uniform.js", + "kind": "import-statement", + "original": "./uniform" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/entity-id.js", + "kind": "import-statement", + "original": "./entity-id" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/molecule-type.js", + "kind": "import-statement", + "original": "./molecule-type" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/entity-source.js", + "kind": "import-statement", + "original": "./entity-source" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/model-index.js", + "kind": "import-statement", + "original": "./model-index" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/structure-index.js", + "kind": "import-statement", + "original": "./structure-index" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./categories" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/residue-name.js", + "kind": "import-statement", + "original": "./residue-name" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/secondary-structure.js", + "kind": "import-statement", + "original": "./secondary-structure" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/element-symbol.js", + "kind": "import-statement", + "original": "./element-symbol" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/color.js": { + "bytes": 5066, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/carbohydrate-symbol.js", + "kind": "import-statement", + "original": "./color/carbohydrate-symbol" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/uniform.js", + "kind": "import-statement", + "original": "./color/uniform" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-theme/theme.js", + "kind": "import-statement", + "original": "./theme" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/chain-id.js", + "kind": "import-statement", + "original": "./color/chain-id" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/element-index.js", + "kind": "import-statement", + "original": "./color/element-index" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/element-symbol.js", + "kind": "import-statement", + "original": "./color/element-symbol" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/molecule-type.js", + "kind": "import-statement", + "original": "./color/molecule-type" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/polymer-id.js", + "kind": "import-statement", + "original": "./color/polymer-id" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/polymer-index.js", + "kind": "import-statement", + "original": "./color/polymer-index" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/residue-name.js", + "kind": "import-statement", + "original": "./color/residue-name" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/secondary-structure.js", + "kind": "import-statement", + "original": "./color/secondary-structure" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/sequence-id.js", + "kind": "import-statement", + "original": "./color/sequence-id" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/shape-group.js", + "kind": "import-statement", + "original": "./color/shape-group" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/unit-index.js", + "kind": "import-statement", + "original": "./color/unit-index" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/uncertainty.js", + "kind": "import-statement", + "original": "./color/uncertainty" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/entity-source.js", + "kind": "import-statement", + "original": "./color/entity-source" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/illustrative.js", + "kind": "import-statement", + "original": "./color/illustrative" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/hydrophobicity.js", + "kind": "import-statement", + "original": "./color/hydrophobicity" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/trajectory-index.js", + "kind": "import-statement", + "original": "./color/trajectory-index" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/occupancy.js", + "kind": "import-statement", + "original": "./color/occupancy" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/operator-name.js", + "kind": "import-statement", + "original": "./color/operator-name" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/operator-hkl.js", + "kind": "import-statement", + "original": "./color/operator-hkl" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/partial-charge.js", + "kind": "import-statement", + "original": "./color/partial-charge" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/atom-id.js", + "kind": "import-statement", + "original": "./color/atom-id" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/entity-id.js", + "kind": "import-statement", + "original": "./color/entity-id" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/volume-value.js", + "kind": "import-statement", + "original": "./color/volume-value" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/model-index.js", + "kind": "import-statement", + "original": "./color/model-index" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/structure-index.js", + "kind": "import-statement", + "original": "./color/structure-index" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/volume-segment.js", + "kind": "import-statement", + "original": "./color/volume-segment" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/external-volume.js", + "kind": "import-statement", + "original": "./color/external-volume" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/categories.js", + "kind": "import-statement", + "original": "./color/categories" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/cartoon.js", + "kind": "import-statement", + "original": "./color/cartoon" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/size/physical.js": { + "bytes": 2134, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic.js", + "kind": "import-statement", + "original": "../../mol-model/structure/model/properties/atomic" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/size/uncertainty.js": { + "bytes": 2154, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/size.js": { + "bytes": 1548, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-theme/size/uniform.js", + "kind": "import-statement", + "original": "./size/uniform" + }, + { + "path": "node_modules/molstar/lib/mol-theme/theme.js", + "kind": "import-statement", + "original": "../mol-theme/theme" + }, + { + "path": "node_modules/molstar/lib/mol-theme/size/physical.js", + "kind": "import-statement", + "original": "./size/physical" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-theme/size/shape-group.js", + "kind": "import-statement", + "original": "./size/shape-group" + }, + { + "path": "node_modules/molstar/lib/mol-theme/size/uncertainty.js", + "kind": "import-statement", + "original": "./size/uncertainty" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/theme.js": { + "bytes": 4016, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-theme/color.js", + "kind": "import-statement", + "original": "./color" + }, + { + "path": "node_modules/molstar/lib/mol-theme/size.js", + "kind": "import-statement", + "original": "./size" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../mol-util/object" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/marker-action.js": { + "bytes": 7859, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-util/bit-flags.js", + "kind": "import-statement", + "original": "./bit-flags" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "./type-helpers" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/transparency.js": { + "bytes": 5022, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-script/script.js", + "kind": "import-statement", + "original": "../mol-script/script" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/util.js": { + "bytes": 4960, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/symmetry.js", + "kind": "import-statement", + "original": "../mol-model-formats/structure/property/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../mol-model/volume" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/volume/util.js": { + "bytes": 8713, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/common" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/vec3" + }, + { + "path": "node_modules/molstar/lib/mol-util/number-packing.js", + "kind": "import-statement", + "original": "../../mol-util/number-packing" + }, + { + "path": "node_modules/molstar/lib/mol-util/set.js", + "kind": "import-statement", + "original": "../../mol-util/set" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/color-smoothing.js": { + "bytes": 15703, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../../mol-math/interpolate" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/util.js", + "kind": "import-statement", + "original": "../../../mol-repr/volume/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/compute/color-smoothing/normalize.frag.js": { + "bytes": 513, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/compute/color-smoothing/accumulate.frag.js": { + "bytes": 685, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/compute/color-smoothing/accumulate.vert.js": { + "bytes": 1296, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/texture-mesh/color-smoothing.js": { + "bytes": 22840, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "../../../mol-gl/webgl/texture" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../../mol-gl/webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/compute/color-smoothing/normalize.frag.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader/compute/color-smoothing/normalize.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../../../mol-gl/compute/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/compute/color-smoothing/accumulate.frag.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader/compute/color-smoothing/accumulate.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/compute/color-smoothing/accumulate.vert.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader/compute/color-smoothing/accumulate.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "../../../mol-gl/webgl/compat" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../../mol-util/debug" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/visual.js": { + "bytes": 18435, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transform-data.js", + "kind": "import-statement", + "original": "../mol-geo/geometry/transform-data" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../mol-gl/renderable/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/overpaint-data.js", + "kind": "import-statement", + "original": "../mol-geo/geometry/overpaint-data" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transparency-data.js", + "kind": "import-statement", + "original": "../mol-geo/geometry/transparency-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/clipping-data.js", + "kind": "import-statement", + "original": "../mol-geo/geometry/clipping-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/marker-data.js", + "kind": "import-statement", + "original": "../mol-geo/geometry/marker-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/color-smoothing.js", + "kind": "import-statement", + "original": "../mol-geo/geometry/mesh/color-smoothing" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/texture-mesh/color-smoothing.js", + "kind": "import-statement", + "original": "../mol-geo/geometry/texture-mesh/color-smoothing" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/substance-data.js", + "kind": "import-statement", + "original": "../mol-geo/geometry/substance-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/emissive-data.js", + "kind": "import-statement", + "original": "../mol-geo/geometry/emissive-data" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/clipping.js": { + "bytes": 6919, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-script/script.js", + "kind": "import-statement", + "original": "../mol-script/script" + }, + { + "path": "node_modules/molstar/lib/mol-util/bit-flags.js", + "kind": "import-statement", + "original": "../mol-util/bit-flags" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/substance.js": { + "bytes": 5710, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-script/script.js", + "kind": "import-statement", + "original": "../mol-script/script" + }, + { + "path": "node_modules/molstar/lib/mol-util/material.js", + "kind": "import-statement", + "original": "../mol-util/material" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../mol-util/object" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/emissive.js": { + "bytes": 4901, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-script/script.js", + "kind": "import-statement", + "original": "../mol-script/script" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/representation.js": { + "bytes": 13650, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color.js", + "kind": "import-statement", + "original": "../mol-theme/color" + }, + { + "path": "node_modules/molstar/lib/mol-theme/size.js", + "kind": "import-statement", + "original": "../mol-theme/size" + }, + { + "path": "node_modules/molstar/lib/mol-theme/theme.js", + "kind": "import-statement", + "original": "../mol-theme/theme" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-theme/overpaint.js", + "kind": "import-statement", + "original": "../mol-theme/overpaint" + }, + { + "path": "node_modules/molstar/lib/mol-theme/transparency.js", + "kind": "import-statement", + "original": "../mol-theme/transparency" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-repr/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-repr/visual.js", + "kind": "import-statement", + "original": "./visual" + }, + { + "path": "node_modules/molstar/lib/mol-theme/clipping.js", + "kind": "import-statement", + "original": "../mol-theme/clipping" + }, + { + "path": "node_modules/molstar/lib/mol-util/set.js", + "kind": "import-statement", + "original": "../mol-util/set" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-theme/substance.js", + "kind": "import-statement", + "original": "../mol-theme/substance" + }, + { + "path": "node_modules/molstar/lib/mol-theme/emissive.js", + "kind": "import-statement", + "original": "../mol-theme/emissive" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/shape/representation.js": { + "bytes": 11438, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-geo/geometry/geometry.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../mol-model/shape" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-gl/render-object.js", + "kind": "import-statement", + "original": "../../mol-gl/render-object" + }, + { + "path": "node_modules/molstar/lib/mol-theme/theme.js", + "kind": "import-statement", + "original": "../../mol-theme/theme" + }, + { + "path": "node_modules/molstar/lib/mol-repr/util.js", + "kind": "import-statement", + "original": "../util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/marker-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/marker-data" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/color-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/color-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/size-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/size-data" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-repr/visual.js", + "kind": "import-statement", + "original": "../visual" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/unit-transforms.js": { + "bytes": 2344, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transform-data.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/transform-data" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/animation/helpers.js": { + "bytes": 2861, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/polyhedron.js": { + "bytes": 3253, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util.js", + "kind": "import-statement", + "original": "../util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/icosahedron.js": { + "bytes": 1167, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-geo/primitive/primitive.js", + "kind": "import-statement", + "original": "./primitive" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/cage.js", + "kind": "import-statement", + "original": "./cage" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/sphere.js": { + "bytes": 608, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-geo/primitive/polyhedron.js", + "kind": "import-statement", + "original": "./polyhedron" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/icosahedron.js", + "kind": "import-statement", + "original": "./icosahedron" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js": { + "bytes": 854, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/sphere.js", + "kind": "import-statement", + "original": "../../../primitive/sphere" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/cylinder.js": { + "bytes": 4168, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/prism.js": { + "bytes": 5257, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/primitive.js", + "kind": "import-statement", + "original": "./primitive" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/polygon.js", + "kind": "import-statement", + "original": "./polygon" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/cylinder.js": { + "bytes": 5536, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/primitive.js", + "kind": "import-statement", + "original": "../../../primitive/primitive" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/cylinder.js", + "kind": "import-statement", + "original": "../../../primitive/cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/prism.js", + "kind": "import-statement", + "original": "../../../primitive/prism" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/polygon.js", + "kind": "import-statement", + "original": "../../../primitive/polygon" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../../mol-data/util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js": { + "bytes": 7575, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "./mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js", + "kind": "import-statement", + "original": "./builder/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/cylinder.js", + "kind": "import-statement", + "original": "./builder/cylinder" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/shape/model/unitcell.js": { + "bytes": 3409, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../../mol-model/shape" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/box.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/box" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/cage.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/cage" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../representation" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/text/text-builder.js": { + "bytes": 11165, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text.js", + "kind": "import-statement", + "original": "./text" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/font-atlas.js", + "kind": "import-statement", + "original": "./font-atlas" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../../mol-util/type-helpers" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-theme/label.js": { + "bytes": 15720, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../mol-util/string" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../mol-model/volume" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/shape/loci/common.js": { + "bytes": 964, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/text/text" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/shape/loci/distance.js": { + "bytes": 4648, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/lines/lines" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/text/text" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../../mol-model/shape" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/lines/lines-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/text/text-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../../../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/loci/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/transforms/helpers.js": { + "bytes": 1154, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/shape/loci/label.js": { + "bytes": 3213, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/text/text" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../../mol-model/shape" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/text/text-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../../../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/loci/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/axes.js": { + "bytes": 1322, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/cage.js", + "kind": "import-statement", + "original": "../../../primitive/cage" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/box.js": { + "bytes": 4059, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/cylinder.js", + "kind": "import-statement", + "original": "./cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js", + "kind": "import-statement", + "original": "./sphere" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/cage.js", + "kind": "import-statement", + "original": "../../../primitive/cage" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/ellipsoid.js": { + "bytes": 823, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js", + "kind": "import-statement", + "original": "./sphere" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/shape/loci/orientation.js": { + "bytes": 4819, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../../mol-model/shape" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../../../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/axes.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/axes" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/box.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/box" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/ellipsoid.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/ellipsoid" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/circle.js": { + "bytes": 1852, + "imports": [ + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/shape/loci/angle.js": { + "bytes": 8517, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/lines/lines" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/text/text" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../../mol-model/shape" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/lines/lines-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/text/text-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/circle.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/circle" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/primitive.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/primitive" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../../../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/loci/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/shape/loci/dihedral.js": { + "bytes": 12859, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/lines/lines" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/text/text" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../../mol-model/shape" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/lines/lines-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/text/text-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/circle.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/circle" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/primitive.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/primitive" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../../../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/loci/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/transforms/shape.js": { + "bytes": 2480, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/box.js", + "kind": "import-statement", + "original": "../../mol-geo/primitive/box" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../mol-model/shape" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../objects" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/plane.js": { + "bytes": 578, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/shape/loci/plane.js": { + "bytes": 2722, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../../mol-model/shape" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../../../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/plane.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/plane" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/transforms/representation.js": { + "bytes": 61296, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-theme/theme.js", + "kind": "import-statement", + "original": "../../mol-theme/theme" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../objects" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/representation.js", + "kind": "import-statement", + "original": "../../mol-repr/shape/representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/util/unit-transforms.js", + "kind": "import-statement", + "original": "../../mol-model/structure/structure/util/unit-transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/helpers.js", + "kind": "import-statement", + "original": "../animation/helpers" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-theme/overpaint.js", + "kind": "import-statement", + "original": "../../mol-theme/overpaint" + }, + { + "path": "node_modules/molstar/lib/mol-theme/transparency.js", + "kind": "import-statement", + "original": "../../mol-theme/transparency" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-script/script.js", + "kind": "import-statement", + "original": "../../mol-script/script" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/model/unitcell.js", + "kind": "import-statement", + "original": "../../mol-repr/shape/model/unitcell" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/loci/distance.js", + "kind": "import-statement", + "original": "../../mol-repr/shape/loci/distance" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms/helpers.js", + "kind": "import-statement", + "original": "./helpers" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/loci/label.js", + "kind": "import-statement", + "original": "../../mol-repr/shape/loci/label" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/loci/orientation.js", + "kind": "import-statement", + "original": "../../mol-repr/shape/loci/orientation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/loci/angle.js", + "kind": "import-statement", + "original": "../../mol-repr/shape/loci/angle" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/loci/dihedral.js", + "kind": "import-statement", + "original": "../../mol-repr/shape/loci/dihedral" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/symmetry.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/property/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-theme/clipping.js", + "kind": "import-statement", + "original": "../../mol-theme/clipping" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms/shape.js", + "kind": "import-statement", + "original": "./shape" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../mol-model/shape" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/loci/plane.js", + "kind": "import-statement", + "original": "../../mol-repr/shape/loci/plane" + }, + { + "path": "node_modules/molstar/lib/mol-theme/substance.js", + "kind": "import-statement", + "original": "../../mol-theme/substance" + }, + { + "path": "node_modules/molstar/lib/mol-util/material.js", + "kind": "import-statement", + "original": "../../mol-util/material" + }, + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../mol-math/interpolate" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-theme/emissive.js", + "kind": "import-statement", + "original": "../../mol-theme/emissive" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/util/marching-cubes/tables.js": { + "bytes": 13823, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/util/marching-cubes/builder.js": { + "bytes": 3929, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/marching-cubes/tables.js", + "kind": "import-statement", + "original": "./tables" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines-builder.js", + "kind": "import-statement", + "original": "../../geometry/lines/lines-builder" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/util/marching-cubes/algorithm.js": { + "bytes": 9228, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/marching-cubes/tables.js", + "kind": "import-statement", + "original": "./tables" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/marching-cubes/builder.js", + "kind": "import-statement", + "original": "./builder" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/volume/representation.js": { + "bytes": 15820, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/visual.js", + "kind": "import-statement", + "original": "../visual" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/geometry.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-theme/theme.js", + "kind": "import-statement", + "original": "../../mol-theme/theme" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transform-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/transform-data" + }, + { + "path": "node_modules/molstar/lib/mol-gl/render-object.js", + "kind": "import-statement", + "original": "../../mol-gl/render-object" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-repr/util.js", + "kind": "import-statement", + "original": "../util" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color.js", + "kind": "import-statement", + "original": "../../mol-theme/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/size-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/size-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/color-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/color-data" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/base" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/marker-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/marker-data" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/histogram-pyramid/sum.frag.js": { + "bytes": 590, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/compute/histogram-pyramid/sum.js": { + "bytes": 3472, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/number-packing.js", + "kind": "import-statement", + "original": "../../../mol-util/number-packing" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/histogram-pyramid/sum.frag.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader/histogram-pyramid/sum.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "../../webgl/compat" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../../mol-util/debug" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/histogram-pyramid/reduction.frag.js": { + "bytes": 2076, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/compute/histogram-pyramid/reduction.js": { + "bytes": 7026, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/histogram-pyramid/sum.js", + "kind": "import-statement", + "original": "./sum" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/histogram-pyramid/reduction.frag.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader/histogram-pyramid/reduction.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "../../webgl/compat" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../../mol-util/debug" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/compute/marching-cubes/tables.js": { + "bytes": 1063, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-geo/util/marching-cubes/tables.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/marching-cubes/tables" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/util.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable/util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/marching-cubes/isosurface.frag.js": { + "bytes": 10106, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/marching-cubes/active-voxels.frag.js": { + "bytes": 2608, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/compute/marching-cubes/active-voxels.js": { + "bytes": 4435, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/marching-cubes/tables.js", + "kind": "import-statement", + "original": "./tables" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/marching-cubes/active-voxels.frag.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader/marching-cubes/active-voxels.frag" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../../mol-util/debug" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/compute/marching-cubes/isosurface.js": { + "bytes": 9295, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/histogram-pyramid/reduction.js", + "kind": "import-statement", + "original": "../histogram-pyramid/reduction" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/marching-cubes/tables.js", + "kind": "import-statement", + "original": "./tables" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/marching-cubes/isosurface.frag.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader/marching-cubes/isosurface.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/marching-cubes/active-voxels.js", + "kind": "import-statement", + "original": "./active-voxels" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "../../webgl/compat" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../../mol-util/debug" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/volume/isosurface.js": { + "bytes": 12606, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/marching-cubes/algorithm.js", + "kind": "import-statement", + "original": "../../mol-geo/util/marching-cubes/algorithm" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/representation.js", + "kind": "import-statement", + "original": "./representation" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-model/location.js", + "kind": "import-statement", + "original": "../../mol-model/location" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/lines/lines" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/texture-mesh/texture-mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/texture-mesh/texture-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/marching-cubes/isosurface.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/marching-cubes/isosurface" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-util/value-cell.js", + "kind": "import-statement", + "original": "../../mol-util/value-cell" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/volume/slice.js": { + "bytes": 8024, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/image/image.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/image/image" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/representation.js", + "kind": "import-statement", + "original": "./representation" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-model/location.js", + "kind": "import-statement", + "original": "../../mol-model/location" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util.js", + "kind": "import-statement", + "original": "../../mol-geo/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color.js", + "kind": "import-statement", + "original": "../../mol-theme/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/number-packing.js", + "kind": "import-statement", + "original": "../../mol-util/number-packing" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/volume/direct-volume.js": { + "bytes": 6087, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/direct-volume/direct-volume.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/direct-volume/direct-volume" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/representation.js", + "kind": "import-statement", + "original": "./representation" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-model/location.js", + "kind": "import-statement", + "original": "../../mol-model/location" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/volume/segment.js": { + "bytes": 12409, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/marching-cubes/algorithm.js", + "kind": "import-statement", + "original": "../../mol-geo/util/marching-cubes/algorithm" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/representation.js", + "kind": "import-statement", + "original": "./representation" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/texture-mesh/texture-mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/texture-mesh/texture-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-util/value-cell.js", + "kind": "import-statement", + "original": "../../mol-util/value-cell" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/marching-cubes/isosurface.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/marching-cubes/isosurface" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/box3d.js", + "kind": "import-statement", + "original": "../../mol-math/geometry/primitives/box3d" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/volume/registry.js": { + "bytes": 1211, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/isosurface.js", + "kind": "import-statement", + "original": "./isosurface" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/slice.js", + "kind": "import-statement", + "original": "./slice" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/direct-volume.js", + "kind": "import-statement", + "original": "./direct-volume" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/segment.js", + "kind": "import-statement", + "original": "./segment" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/transformers.js": { + "bytes": 14083, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../../../mol-plugin-state/objects" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/model.js", + "kind": "import-statement", + "original": "./model" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/url.js", + "kind": "import-statement", + "original": "../../../../mol-util/url" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/behavior.js", + "kind": "import-statement", + "original": "./behavior" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms/representation.js", + "kind": "import-statement", + "original": "../../../../mol-plugin-state/transforms/representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/registry.js", + "kind": "import-statement", + "original": "../../../../mol-repr/volume/registry" + }, + { + "path": "node_modules/molstar/lib/mol-theme/theme.js", + "kind": "import-statement", + "original": "../../../../mol-theme/theme" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../../../config" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/global-transform.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure/model/properties/global-transform" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/animation/model.js": { + "bytes": 794, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/common/simple-buffer.js": { + "bytes": 4090, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/common/file-handle.js": { + "bytes": 1943, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/simple-buffer.js", + "kind": "import-statement", + "original": "./simple-buffer" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/common/typed-array.js": { + "bytes": 2800, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/common/simple-buffer.js", + "kind": "import-statement", + "original": "../../mol-io/common/simple-buffer" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/ccp4/parser.js": { + "bytes": 5751, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/file-handle.js", + "kind": "import-statement", + "original": "../../common/file-handle" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/simple-buffer.js", + "kind": "import-statement", + "original": "../../../mol-io/common/simple-buffer" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/typed-array.js", + "kind": "import-statement", + "original": "../../../mol-io/common/typed-array" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/dsn6/parser.js": { + "bytes": 5180, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/file-handle.js", + "kind": "import-statement", + "original": "../../common/file-handle" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/simple-buffer.js", + "kind": "import-statement", + "original": "../../../mol-io/common/simple-buffer" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/ply/schema.js": { + "bytes": 1022, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/ply/parser.js": { + "bytes": 7181, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/ply/schema.js", + "kind": "import-statement", + "original": "./schema" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/column/token.js", + "kind": "import-statement", + "original": "../common/text/column/token" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/psf/parser.js": { + "bytes": 8115, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/column/token.js", + "kind": "import-statement", + "original": "../common/text/column/token" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/cube/parser.js": { + "bytes": 4038, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/number-parser.js", + "kind": "import-statement", + "original": "../common/text/number-parser" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/dx/parser.js": { + "bytes": 3838, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/number-parser.js", + "kind": "import-statement", + "original": "../common/text/number-parser" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/utf8.js", + "kind": "import-statement", + "original": "../../common/utf8" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/prmtop/parser.js": { + "bytes": 5574, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/column/token.js", + "kind": "import-statement", + "original": "../common/text/column/token" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/top/parser.js": { + "bytes": 8657, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/column/token.js", + "kind": "import-statement", + "original": "../common/text/column/token" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/transforms/data.js": { + "bytes": 19361, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/ccp4/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/ccp4/parser" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif.js", + "kind": "import-statement", + "original": "../../mol-io/reader/cif" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/dsn6/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/dsn6/parser" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/ply/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/ply/parser" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/psf/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/psf/parser" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/data-source.js", + "kind": "import-statement", + "original": "../../mol-util/data-source" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../objects" + }, + { + "path": "node_modules/molstar/lib/mol-util/assets.js", + "kind": "import-statement", + "original": "../../mol-util/assets" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cube/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/cube/parser" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/dx/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/dx/parser" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/prmtop/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/prmtop/parser" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/top/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/top/parser" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/transforms/misc.js": { + "bytes": 1887, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../objects" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/dcd/parser.js": { + "bytes": 5174, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/binary.js", + "kind": "import-statement", + "original": "../../common/binary" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/common/text/column/fixed.js": { + "bytes": 1546, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/number-parser.js", + "kind": "import-statement", + "original": "../number-parser" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/gro/parser.js": { + "bytes": 5198, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/column/fixed.js", + "kind": "import-statement", + "original": "../common/text/column/fixed" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/pdb/parser.js": { + "bytes": 561, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../common/text/tokenizer" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/shape/ply.js": { + "bytes": 11218, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../mol-model/shape" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../../mol-util/string" + }, + { + "path": "node_modules/molstar/lib/mol-util/value-cell.js", + "kind": "import-statement", + "original": "../../mol-util/value-cell" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/spacegroup/cell.js": { + "bytes": 1063, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/dcd.js": { + "bytes": 2551, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/coordinates.js", + "kind": "import-statement", + "original": "../../mol-model/structure/coordinates" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/spacegroup/cell.js", + "kind": "import-statement", + "original": "../../mol-math/geometry/spacegroup/cell" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/common" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/util.js": { + "bytes": 2628, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../../mol-io/reader/common/text/tokenizer" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/common/util.js": { + "bytes": 634, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/memoize.js", + "kind": "import-statement", + "original": "../../../mol-util/memoize" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/gro.js": { + "bytes": 4478, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/component.js", + "kind": "import-statement", + "original": "./common/component" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/util.js", + "kind": "import-statement", + "original": "./common/util" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/entity.js", + "kind": "import-statement", + "original": "./common/entity" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "./basic/schema" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/parser.js", + "kind": "import-statement", + "original": "./basic/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/trajectory.js", + "kind": "import-statement", + "original": "../../mol-model/structure/trajectory" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/assembly.js": { + "bytes": 8367, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/cif.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/cif" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/secondary-structure.js": { + "bytes": 10981, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/cif.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/cif" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/entity.js": { + "bytes": 3896, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/atom-site.js": { + "bytes": 8803, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/cif.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/cif" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/util.js", + "kind": "import-statement", + "original": "../util" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/column/token.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/common/text/column/token" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/anisotropic.js": { + "bytes": 5245, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/cif.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/cif" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/util.js", + "kind": "import-statement", + "original": "../util" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/number-parser.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/common/text/number-parser" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/conect.js": { + "bytes": 3462, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/cif.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/cif" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/header.js": { + "bytes": 1049, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/to-cif.js": { + "bytes": 8861, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../../../mol-util/string" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/cif" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../../../mol-io/reader/common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/pdb/assembly.js", + "kind": "import-statement", + "original": "./assembly" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/pdb/secondary-structure.js", + "kind": "import-statement", + "original": "./secondary-structure" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/pdb/entity.js", + "kind": "import-statement", + "original": "./entity" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/component.js", + "kind": "import-statement", + "original": "../common/component" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/entity.js", + "kind": "import-statement", + "original": "../common/entity" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/pdb/atom-site.js", + "kind": "import-statement", + "original": "./atom-site" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/pdb/anisotropic.js", + "kind": "import-statement", + "original": "./anisotropic" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/pdb/conect.js", + "kind": "import-statement", + "original": "./conect" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/pdb/header.js", + "kind": "import-statement", + "original": "./header" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb.js": { + "bytes": 2223, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/pdb/to-cif.js", + "kind": "import-statement", + "original": "./pdb/to-cif" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js", + "kind": "import-statement", + "original": "./mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/parser.js", + "kind": "import-statement", + "original": "./basic/parser" + }, + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/partial-charge.js", + "kind": "import-statement", + "original": "./property/partial-charge" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "./basic/schema" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/psf.js": { + "bytes": 4446, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/topology/topology.js", + "kind": "import-statement", + "original": "../../mol-model/structure/topology/topology" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "./basic/schema" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/component.js", + "kind": "import-statement", + "original": "./common/component" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/entity.js", + "kind": "import-statement", + "original": "./common/entity" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/util.js", + "kind": "import-statement", + "original": "./common/util" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/root-structure.js": { + "bytes": 8661, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../../mol-util/string" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/symmetry.js", + "kind": "import-statement", + "original": "../../mol-model/structure/model/properties/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../objects" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/symmetry.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/property/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-query.js": { + "bytes": 2059, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-script/script.js", + "kind": "import-statement", + "original": "../../mol-script/script" + }, + { + "path": "node_modules/molstar/lib/mol-script/runtime/query/compiler.js", + "kind": "import-statement", + "original": "../../mol-script/runtime/query/compiler" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/types.js": { + "bytes": 4366, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/measures.js", + "kind": "import-statement", + "original": "./measures" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-selection-query.js": { + "bytes": 25975, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../mol-script/language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-script/runtime/query/compiler.js", + "kind": "import-statement", + "original": "../../mol-script/runtime/query/compiler" + }, + { + "path": "node_modules/molstar/lib/mol-util/set.js", + "kind": "import-statement", + "original": "../../mol-util/set" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/types.js", + "kind": "import-statement", + "original": "../../mol-model/structure/model/properties/atomic/types" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure.js", + "kind": "import-statement", + "original": "../../mol-model-props/computed/secondary-structure" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-component.js": { + "bytes": 6549, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../mol-script/language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-query.js", + "kind": "import-statement", + "original": "./structure-query" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../objects" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-selection-query.js", + "kind": "import-statement", + "original": "./structure-selection-query" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-script/script.js", + "kind": "import-statement", + "original": "../../mol-script/script" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/mol/parser.js": { + "bytes": 7244, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/column/token.js", + "kind": "import-statement", + "original": "../common/text/column/token" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/mol.js": { + "bytes": 3961, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/mol/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/mol/parser" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/parser.js", + "kind": "import-statement", + "original": "./basic/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "./basic/schema" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/component.js", + "kind": "import-statement", + "original": "./common/component" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/entity.js", + "kind": "import-statement", + "original": "./common/entity" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/index-pair.js", + "kind": "import-statement", + "original": "./property/bonds/index-pair" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/cif-core.js": { + "bytes": 9593, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/parser.js", + "kind": "import-statement", + "original": "./basic/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "./basic/schema" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/component.js", + "kind": "import-statement", + "original": "./common/component" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/entity.js", + "kind": "import-statement", + "original": "./common/entity" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/cif.js", + "kind": "import-statement", + "original": "../../mol-io/reader/cif" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/symmetry.js", + "kind": "import-statement", + "original": "./property/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/index-pair.js", + "kind": "import-statement", + "original": "./property/bonds/index-pair" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/anisotropic.js", + "kind": "import-statement", + "original": "./property/anisotropic" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../mol-data/util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/cube.js": { + "bytes": 2732, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/parser.js", + "kind": "import-statement", + "original": "./basic/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "./basic/schema" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/component.js", + "kind": "import-statement", + "original": "./common/component" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/entity.js", + "kind": "import-statement", + "original": "./common/entity" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/mol2/parser.js": { + "bytes": 11561, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/column/token.js", + "kind": "import-statement", + "original": "../common/text/column/token" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/mol2.js": { + "bytes": 5972, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/parser.js", + "kind": "import-statement", + "original": "./basic/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "./basic/schema" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/component.js", + "kind": "import-statement", + "original": "./common/component" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/entity.js", + "kind": "import-statement", + "original": "./common/entity" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/index-pair.js", + "kind": "import-statement", + "original": "./property/bonds/index-pair" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/partial-charge.js", + "kind": "import-statement", + "original": "./property/partial-charge" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/symmetry.js", + "kind": "import-statement", + "original": "./property/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/xtc/parser.js": { + "bytes": 12142, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/xtc.js": { + "bytes": 1369, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/coordinates.js", + "kind": "import-statement", + "original": "../../mol-model/structure/coordinates" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/spacegroup/cell.js", + "kind": "import-statement", + "original": "../../mol-math/geometry/spacegroup/cell" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/xyz/parser.js": { + "bytes": 1540, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/xyz.js": { + "bytes": 3032, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/parser.js", + "kind": "import-statement", + "original": "./basic/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "./basic/schema" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/component.js", + "kind": "import-statement", + "original": "./common/component" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/entity.js", + "kind": "import-statement", + "original": "./common/entity" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/sdf/parser-v3-util.js": { + "bytes": 3720, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/column/token.js", + "kind": "import-statement", + "original": "../common/text/column/token" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/sdf/parser.js": { + "bytes": 3896, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/mol/parser.js", + "kind": "import-statement", + "original": "../mol/parser" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js", + "kind": "import-statement", + "original": "../common/text/tokenizer" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/common/text/column/token.js", + "kind": "import-statement", + "original": "../common/text/column/token" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/sdf/parser-v3-util.js", + "kind": "import-statement", + "original": "./parser-v3-util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/sdf.js": { + "bytes": 722, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mol.js", + "kind": "import-statement", + "original": "./mol" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/trr/parser.js": { + "bytes": 3948, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/trr.js": { + "bytes": 1320, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/coordinates.js", + "kind": "import-statement", + "original": "../../mol-model/structure/coordinates" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/spacegroup/cell.js", + "kind": "import-statement", + "original": "../../mol-math/geometry/spacegroup/cell" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/common/io-buffer.js": { + "bytes": 10323, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/common/netcdf/reader.js": { + "bytes": 11673, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/common/io-buffer.js", + "kind": "import-statement", + "original": "../io-buffer" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-io/reader/nctraj/parser.js": { + "bytes": 1965, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/netcdf/reader.js", + "kind": "import-statement", + "original": "../../common/netcdf/reader" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/result.js", + "kind": "import-statement", + "original": "../result" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/nctraj.js": { + "bytes": 1845, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/coordinates.js", + "kind": "import-statement", + "original": "../../mol-model/structure/coordinates" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/spacegroup/cell.js", + "kind": "import-statement", + "original": "../../mol-math/geometry/spacegroup/cell" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/prmtop.js": { + "bytes": 5263, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/topology/topology.js", + "kind": "import-statement", + "original": "../../mol-model/structure/topology/topology" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "./basic/schema" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/component.js", + "kind": "import-statement", + "original": "./common/component" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/entity.js", + "kind": "import-statement", + "original": "./common/entity" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/util.js", + "kind": "import-statement", + "original": "./common/util" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/structure/top.js": { + "bytes": 6414, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/db.js", + "kind": "import-statement", + "original": "../../mol-data/db" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/topology/topology.js", + "kind": "import-statement", + "original": "../../mol-model/structure/topology/topology" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js", + "kind": "import-statement", + "original": "./basic/schema" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/component.js", + "kind": "import-statement", + "original": "./common/component" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/entity.js", + "kind": "import-statement", + "original": "./common/entity" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/util.js", + "kind": "import-statement", + "original": "./common/util" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/transforms/model.js": { + "bytes": 45699, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/dcd/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/dcd/parser" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/gro/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/gro/parser" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/pdb/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/pdb/parser" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/shape/ply.js", + "kind": "import-statement", + "original": "../../mol-model-formats/shape/ply" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/dcd.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/dcd" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/gro.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/gro" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/pdb.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/pdb" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/psf.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/psf" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../mol-script/language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-script/script.js", + "kind": "import-statement", + "original": "../../mol-script/script" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/root-structure.js", + "kind": "import-statement", + "original": "../helpers/root-structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-component.js", + "kind": "import-statement", + "original": "../helpers/structure-component" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-query.js", + "kind": "import-statement", + "original": "../helpers/structure-query" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-selection-query.js", + "kind": "import-statement", + "original": "../helpers/structure-selection-query" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../objects" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/mol/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/mol/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mol.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/mol" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/cif-core.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/cif-core" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/cube.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/cube" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/mol2/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/mol2/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mol2.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/mol2" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/xtc/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/xtc/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/xtc.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/xtc" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/xyz/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/xyz/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/xyz.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/xyz" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/sdf/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/sdf/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/sdf.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/sdf" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/trr/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/trr/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/trr.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/trr" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/nctraj/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/nctraj/parser" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/nctraj.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/nctraj" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/prmtop.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/prmtop" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/top.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/top" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/volume/ccp4.js": { + "bytes": 4645, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-io/reader/ccp4/parser.js", + "kind": "import-statement", + "original": "../../mol-io/reader/ccp4/parser" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/typed-array.js", + "kind": "import-statement", + "original": "../../mol-io/common/typed-array" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/volume/dsn6.js": { + "bytes": 2636, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/volume/dx.js": { + "bytes": 1767, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/volume/segmentation.js": { + "bytes": 4920, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../mol-util/object" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/transforms/volume.js": { + "bytes": 11929, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/reader/cif.js", + "kind": "import-statement", + "original": "../../mol-io/reader/cif" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/volume/ccp4.js", + "kind": "import-statement", + "original": "../../mol-model-formats/volume/ccp4" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/volume/density-server.js", + "kind": "import-statement", + "original": "../../mol-model-formats/volume/density-server" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/volume/dsn6.js", + "kind": "import-statement", + "original": "../../mol-model-formats/volume/dsn6" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../objects" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/volume/cube.js", + "kind": "import-statement", + "original": "../../mol-model-formats/volume/cube" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/volume/dx.js", + "kind": "import-statement", + "original": "../../mol-model-formats/volume/dx" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/volume/segmentation.js", + "kind": "import-statement", + "original": "../../mol-model-formats/volume/segmentation" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/transforms.js": { + "bytes": 535, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms/data.js", + "kind": "import-statement", + "original": "./transforms/data" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms/misc.js", + "kind": "import-statement", + "original": "./transforms/misc" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms/model.js", + "kind": "import-statement", + "original": "./transforms/model" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms/volume.js", + "kind": "import-statement", + "original": "./transforms/volume" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms/representation.js", + "kind": "import-statement", + "original": "./transforms/representation" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms/shape.js", + "kind": "import-statement", + "original": "./transforms/shape" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/animation/built-in/assembly-unwind.js": { + "bytes": 4016, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/model.js", + "kind": "import-statement", + "original": "../model" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../objects" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/animation/built-in/camera-spin.js": { + "bytes": 2750, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../../mol-math/interpolate" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/quat.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra/3d/quat" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra/3d/vec3" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/model.js", + "kind": "import-statement", + "original": "../model" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/animation/built-in/model-index.js": { + "bytes": 6910, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../objects" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/model.js", + "kind": "import-statement", + "original": "../model" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/animation/built-in/state-snapshots.js": { + "bytes": 3194, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/model.js", + "kind": "import-statement", + "original": "../model" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/component.js": { + "bytes": 1365, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-util/rx-event-helper.js", + "kind": "import-statement", + "original": "../mol-util/rx-event-helper" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../mol-util/array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/version.js": { + "bytes": 177, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/util.js": { + "bytes": 1966, + "imports": [ + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/snapshots.js": { + "bytes": 14567, + "imports": [ + { + "path": "node_modules/immutable/dist/immutable.es.js", + "kind": "import-statement", + "original": "immutable" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/component.js", + "kind": "import-statement", + "original": "../component" + }, + { + "path": "node_modules/molstar/lib/mol-io/common/utf8.js", + "kind": "import-statement", + "original": "../../mol-io/common/utf8" + }, + { + "path": "node_modules/molstar/lib/mol-util/zip/zip.js", + "kind": "import-statement", + "original": "../../mol-util/zip/zip" + }, + { + "path": "node_modules/molstar/lib/mol-util/data-source.js", + "kind": "import-statement", + "original": "../../mol-util/data-source" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/version.js", + "kind": "import-statement", + "original": "../../mol-plugin/version" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/util.js", + "kind": "import-statement", + "original": "../../mol-canvas3d/util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/date.js": { + "bytes": 582, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/download.js": { + "bytes": 2070, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/static/state.js": { + "bytes": 8805, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/snapshots.js", + "kind": "import-statement", + "original": "../../../mol-plugin-state/manager/snapshots" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../../mol-plugin-state/objects" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-util/date.js", + "kind": "import-statement", + "original": "../../../mol-util/date" + }, + { + "path": "node_modules/molstar/lib/mol-util/download.js", + "kind": "import-statement", + "original": "../../../mol-util/download" + }, + { + "path": "node_modules/molstar/lib/mol-util/url.js", + "kind": "import-statement", + "original": "../../../mol-util/url" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../commands" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../../config" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/static/representation.js": { + "bytes": 3224, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../../mol-plugin-state/objects" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/static/camera.js": { + "bytes": 1481, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../commands" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/camera/util.js": { + "bytes": 2738, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/input/input-observer.js": { + "bytes": 27495, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/util.js", + "kind": "import-statement", + "original": "../../mol-canvas3d/camera/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/renderer.js": { + "bytes": 35564, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/util.js", + "kind": "import-statement", + "original": "../mol-canvas3d/camera/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../mol-math/interpolate" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/frustum3d.js", + "kind": "import-statement", + "original": "../mol-math/geometry/primitives/frustum3d" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/plane3d.js", + "kind": "import-statement", + "original": "../mol-math/geometry/primitives/plane3d" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/binding.js": { + "bytes": 4460, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/input/input-observer.js", + "kind": "import-statement", + "original": "./input/input-observer" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "./string" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/controls/trackball.js": { + "bytes": 32951, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/util.js", + "kind": "import-statement", + "original": "../camera/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/input/input-observer.js", + "kind": "import-statement", + "original": "../../mol-util/input/input-observer" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-util/binding.js", + "kind": "import-statement", + "original": "../../mol-util/binding" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/object3d.js": { + "bytes": 730, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/commit-queue.js": { + "bytes": 1292, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../mol-data/generic" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/scene.js": { + "bytes": 11124, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/render-object.js", + "kind": "import-statement", + "original": "./render-object" + }, + { + "path": "node_modules/molstar/lib/mol-gl/object3d.js", + "kind": "import-statement", + "original": "./object3d" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/sphere3d.js", + "kind": "import-statement", + "original": "../mol-math/geometry/primitives/sphere3d" + }, + { + "path": "node_modules/molstar/lib/mol-gl/commit-queue.js", + "kind": "import-statement", + "original": "./commit-queue" + }, + { + "path": "node_modules/molstar/lib/mol-util/now.js", + "kind": "import-statement", + "original": "../mol-util/now" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary-helper.js", + "kind": "import-statement", + "original": "../mol-math/geometry/boundary-helper" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../mol-math/interpolate" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/camera/transition.js": { + "bytes": 3152, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera.js", + "kind": "import-statement", + "original": "../camera" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../mol-math/interpolate" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/camera.js": { + "bytes": 12486, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/util.js", + "kind": "import-statement", + "original": "./camera/util" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/transition.js", + "kind": "import-statement", + "original": "./camera/transition" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../mol-util/type-helpers" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/helper/bounding-sphere-helper.js": { + "bytes": 6460, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/render-object.js", + "kind": "import-statement", + "original": "../../mol-gl/render-object" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/builder/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-gl/scene.js", + "kind": "import-statement", + "original": "../../mol-gl/scene" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/sphere.js", + "kind": "import-statement", + "original": "../../mol-geo/primitive/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/geometry.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/helper/interaction-events.js": { + "bytes": 8070, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-util/input/input-observer.js", + "kind": "import-statement", + "original": "../../mol-util/input/input-observer" + }, + { + "path": "node_modules/molstar/lib/mol-util/rx-event-helper.js", + "kind": "import-statement", + "original": "../../mol-util/rx-event-helper" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/outlines.frag.js": { + "bytes": 3614, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/ssao.frag.js": { + "bytes": 8410, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/ssao-blur.frag.js": { + "bytes": 3147, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/postprocessing.frag.js": { + "bytes": 5287, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/fxaa.frag.js": { + "bytes": 9028, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/fxaa.js": { + "bytes": 4663, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/fxaa.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/fxaa.frag" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/smaa/blend.vert.js": { + "bytes": 1117, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/smaa/blend.frag.js": { + "bytes": 2240, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/smaa/weights.vert.js": { + "bytes": 1503, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/smaa/weights.frag.js": { + "bytes": 8183, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/smaa/edges.vert.js": { + "bytes": 1230, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/smaa/edges.frag.js": { + "bytes": 2200, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/smaa.js": { + "bytes": 53124, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/texture" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/smaa/blend.vert.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/smaa/blend.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/smaa/blend.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/smaa/blend.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/smaa/weights.vert.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/smaa/weights.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/smaa/weights.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/smaa/weights.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/smaa/edges.vert.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/smaa/edges.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/smaa/edges.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/smaa/edges.frag" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/util.js", + "kind": "import-statement", + "original": "../camera/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/background.frag.js": { + "bytes": 3749, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/background.vert.js": { + "bytes": 217, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/euler.js": { + "bytes": 4205, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat4.js", + "kind": "import-statement", + "original": "./mat4" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../interpolate" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/background.js": { + "bytes": 19799, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/background.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/background.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/background.vert.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/background.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/texture" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat4.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/mat4" + }, + { + "path": "node_modules/molstar/lib/mol-util/value-cell.js", + "kind": "import-statement", + "original": "../../mol-util/value-cell" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera.js", + "kind": "import-statement", + "original": "../camera" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/vec3" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec2.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/vec2" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/assets.js", + "kind": "import-statement", + "original": "../../mol-util/assets" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec4.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/vec4" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat3.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/mat3" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/euler.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/euler" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/shadows.frag.js": { + "bytes": 3446, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/cas.frag.js": { + "bytes": 4125, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/cas.js": { + "bytes": 3441, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/cas.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/cas.frag" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/dof.frag.js": { + "bytes": 3847, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/dof.js": { + "bytes": 7401, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/texture" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/dof.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/dof.frag" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/bloom/composite.frag.js": { + "bytes": 1137, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/bloom/luminosity.frag.js": { + "bytes": 1373, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/bloom/blur.frag.js": { + "bytes": 825, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/bloom.js": { + "bytes": 13103, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/texture.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/texture" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/bloom/composite.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/bloom/composite.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/bloom/luminosity.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/bloom/luminosity.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/bloom/blur.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/bloom/blur.frag" + }, + { + "path": "node_modules/molstar/lib/mol-util/memoize.js", + "kind": "import-statement", + "original": "../../mol-util/memoize" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/postprocessing.js": { + "bytes": 41102, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/outlines.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/outlines.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/ssao.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/ssao.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/ssao-blur.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/ssao-blur.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/postprocessing.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/postprocessing.frag" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/fxaa.js", + "kind": "import-statement", + "original": "./fxaa" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/smaa.js", + "kind": "import-statement", + "original": "./smaa" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/background.js", + "kind": "import-statement", + "original": "./background" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/shadows.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/shadows.frag" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/cas.js", + "kind": "import-statement", + "original": "./cas" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/dof.js", + "kind": "import-statement", + "original": "./dof" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/bloom.js", + "kind": "import-statement", + "original": "./bloom" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/compose.frag.js": { + "bytes": 274, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/multi-sample.js": { + "bytes": 12221, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera.js", + "kind": "import-statement", + "original": "../../mol-canvas3d/camera" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/compose.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/compose.frag" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/camera/stereo.js": { + "bytes": 4169, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera.js", + "kind": "import-statement", + "original": "../camera" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/pick.js": { + "bytes": 12816, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/renderer.js", + "kind": "import-statement", + "original": "../../mol-gl/renderer" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/compat" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-util/number-packing.js", + "kind": "import-statement", + "original": "../../mol-util/number-packing" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/stereo.js", + "kind": "import-statement", + "original": "../camera/stereo" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/util.js", + "kind": "import-statement", + "original": "../camera/util" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/util.js", + "kind": "import-statement", + "original": "../camera/util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/evaluate-wboit.frag.js": { + "bytes": 463, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/wboit.js": { + "bytes": 4868, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/evaluate-wboit.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/evaluate-wboit.frag" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/compat" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/evaluate-dpoit.frag.js": { + "bytes": 395, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/blend-back-dpoit.frag.js": { + "bytes": 490, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/dpoit.js": { + "bytes": 10389, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/evaluate-dpoit.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/evaluate-dpoit.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/blend-back-dpoit.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/blend-back-dpoit.frag" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/compat" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/marking/overlay.frag.js": { + "bytes": 946, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/marking/edge.frag.js": { + "bytes": 1069, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/marking.js": { + "bytes": 7560, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../mol-gl/renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/marking/overlay.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/marking/overlay.frag" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/marking/edge.frag.js", + "kind": "import-statement", + "original": "../../mol-gl/shader/marking/edge.frag" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/draw.js": { + "bytes": 17838, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-target.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/render-target" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/stereo.js", + "kind": "import-statement", + "original": "../camera/stereo" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/wboit.js", + "kind": "import-statement", + "original": "./wboit" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/dpoit.js", + "kind": "import-statement", + "original": "./dpoit" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/postprocessing.js", + "kind": "import-statement", + "original": "./postprocessing" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/marking.js", + "kind": "import-statement", + "original": "./marking" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/dof.js", + "kind": "import-statement", + "original": "./dof" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/bloom.js", + "kind": "import-statement", + "original": "./bloom" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/helper/camera-helper.js": { + "bytes": 14680, + "imports": [ + { + "path": "node_modules/immer/dist/immer.mjs", + "kind": "import-statement", + "original": "immer" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/interval.js", + "kind": "import-statement", + "original": "../../mol-data/int/interval" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/cylinder.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/builder/cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/builder/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/text/text" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text-builder.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/text/text-builder" + }, + { + "path": "node_modules/molstar/lib/mol-gl/scene.js", + "kind": "import-statement", + "original": "../../mol-gl/scene" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../mol-model/shape" + }, + { + "path": "node_modules/molstar/lib/mol-repr/visual.js", + "kind": "import-statement", + "original": "../../mol-repr/visual" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera.js", + "kind": "import-statement", + "original": "../camera" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/image.js": { + "bytes": 3971, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/draw.js", + "kind": "import-statement", + "original": "./draw" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/postprocessing.js", + "kind": "import-statement", + "original": "./postprocessing" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/multi-sample.js", + "kind": "import-statement", + "original": "./multi-sample" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera.js", + "kind": "import-statement", + "original": "../camera" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/util.js", + "kind": "import-statement", + "original": "../camera/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/image.js", + "kind": "import-statement", + "original": "../../mol-util/image" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/helper/camera-helper.js", + "kind": "import-statement", + "original": "../helper/camera-helper" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/marking.js", + "kind": "import-statement", + "original": "./marking" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/helper/handle-helper.js": { + "bytes": 7539, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/scene.js", + "kind": "import-statement", + "original": "../../mol-gl/scene" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/builder/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/cylinder.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/builder/cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/immer/dist/immer.mjs", + "kind": "import-statement", + "original": "immer" + }, + { + "path": "node_modules/molstar/lib/mol-model/shape.js", + "kind": "import-statement", + "original": "../../mol-model/shape" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-repr/visual.js", + "kind": "import-statement", + "original": "../../mol-repr/visual" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/helper/helper.js": { + "bytes": 1015, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/helper/bounding-sphere-helper.js", + "kind": "import-statement", + "original": "./bounding-sphere-helper" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/helper/camera-helper.js", + "kind": "import-statement", + "original": "./camera-helper" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/helper/handle-helper.js", + "kind": "import-statement", + "original": "./handle-helper" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/passes.js": { + "bytes": 1213, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/draw.js", + "kind": "import-statement", + "original": "./draw" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/pick.js", + "kind": "import-statement", + "original": "./pick" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/multi-sample.js", + "kind": "import-statement", + "original": "./multi-sample" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/hi-z.frag.js": { + "bytes": 556, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/compute/hi-z.js": { + "bytes": 1311, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec2.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/vec2" + }, + { + "path": "node_modules/molstar/lib/mol-util/value-cell.js", + "kind": "import-statement", + "original": "../../mol-util/value-cell" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../renderable" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/hi-z.frag.js", + "kind": "import-statement", + "original": "../shader/hi-z.frag" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/quad.vert.js", + "kind": "import-statement", + "original": "../shader/quad.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/approx.js": { + "bytes": 6373, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/passes/hi-z.js": { + "bytes": 16835, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-gl/compute/hi-z.js", + "kind": "import-statement", + "original": "../../mol-gl/compute/hi-z" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/compat.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/compat" + }, + { + "path": "node_modules/molstar/lib/mol-math/approx.js", + "kind": "import-statement", + "original": "../../mol-math/approx" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec2.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/vec2" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/vec3" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-util/value-cell.js", + "kind": "import-statement", + "original": "../../mol-util/value-cell" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/util.js", + "kind": "import-statement", + "original": "../camera/util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/buffer.js", + "kind": "import-statement", + "original": "../../mol-gl/webgl/buffer" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-canvas3d/canvas3d.js": { + "bytes": 36787, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-util/now.js", + "kind": "import-statement", + "original": "../mol-util/now" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/input/input-observer.js", + "kind": "import-statement", + "original": "../mol-util/input/input-observer" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderer.js", + "kind": "import-statement", + "original": "../mol-gl/renderer" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/controls/trackball.js", + "kind": "import-statement", + "original": "./controls/trackball" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/util.js", + "kind": "import-statement", + "original": "./camera/util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/context.js", + "kind": "import-statement", + "original": "../mol-gl/webgl/context" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-gl/scene.js", + "kind": "import-statement", + "original": "../mol-gl/scene" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera.js", + "kind": "import-statement", + "original": "./camera" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/helper/bounding-sphere-helper.js", + "kind": "import-statement", + "original": "./helper/bounding-sphere-helper" + }, + { + "path": "node_modules/molstar/lib/mol-util/set.js", + "kind": "import-statement", + "original": "../mol-util/set" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/helper/interaction-events.js", + "kind": "import-statement", + "original": "./helper/interaction-events" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/postprocessing.js", + "kind": "import-statement", + "original": "./passes/postprocessing" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/multi-sample.js", + "kind": "import-statement", + "original": "./passes/multi-sample" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/pick.js", + "kind": "import-statement", + "original": "./passes/pick" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/image.js", + "kind": "import-statement", + "original": "./passes/image" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/helper/camera-helper.js", + "kind": "import-statement", + "original": "./helper/camera-helper" + }, + { + "path": "node_modules/immer/dist/immer.mjs", + "kind": "import-statement", + "original": "immer" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/helper/handle-helper.js", + "kind": "import-statement", + "original": "./helper/handle-helper" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera/stereo.js", + "kind": "import-statement", + "original": "./camera/stereo" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/helper/helper.js", + "kind": "import-statement", + "original": "./helper/helper" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/passes.js", + "kind": "import-statement", + "original": "./passes/passes" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/marking.js", + "kind": "import-statement", + "original": "./passes/marking" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/hi-z.js", + "kind": "import-statement", + "original": "./passes/hi-z" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/static/misc.js": { + "bytes": 929, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../commands" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/canvas3d.js", + "kind": "import-statement", + "original": "../../../mol-canvas3d/canvas3d" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/representation.js": { + "bytes": 13658, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../../mol-plugin-state/objects" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../../../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/behavior.js", + "kind": "import-statement", + "original": "../behavior" + }, + { + "path": "node_modules/molstar/lib/mol-state/tree/spine.js", + "kind": "import-statement", + "original": "../../../mol-state/tree/spine" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-util/input/input-observer.js", + "kind": "import-statement", + "original": "../../../mol-util/input/input-observer" + }, + { + "path": "node_modules/molstar/lib/mol-util/binding.js", + "kind": "import-statement", + "original": "../../../mol-util/binding" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../mol-util/array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/camera.js": { + "bytes": 8856, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/behavior.js", + "kind": "import-statement", + "original": "../behavior" + }, + { + "path": "node_modules/molstar/lib/mol-util/input/input-observer.js", + "kind": "import-statement", + "original": "../../../mol-util/input/input-observer" + }, + { + "path": "node_modules/molstar/lib/mol-util/binding.js", + "kind": "import-statement", + "original": "../../../mol-util/binding" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../commands" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/helper/camera-helper.js", + "kind": "import-statement", + "original": "../../../mol-canvas3d/helper/camera-helper" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/structure-info.js": { + "bytes": 6312, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/behavior.js", + "kind": "import-statement", + "original": "../../../behavior/behavior" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../../../mol-plugin-state/objects" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../../mol-state" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley/common.js": { + "bytes": 1040, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley/radii.js": { + "bytes": 4699, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/common.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure/structure/unit/bonds/common" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure/model/properties/atomic" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/util.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure/util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley/area.js": { + "bytes": 3630, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley.js": { + "bytes": 5546, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley/radii.js", + "kind": "import-statement", + "original": "./shrake-rupley/radii" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley/common.js", + "kind": "import-statement", + "original": "./shrake-rupley/common" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley/area.js", + "kind": "import-statement", + "original": "./shrake-rupley/area" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area.js": { + "bytes": 2544, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley.js", + "kind": "import-statement", + "original": "./accessible-surface-area/shrake-rupley" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/common/custom-structure-property.js", + "kind": "import-statement", + "original": "../common/custom-structure-property" + }, + { + "path": "node_modules/molstar/lib/mol-script/runtime/query/compiler.js", + "kind": "import-statement", + "original": "../../mol-script/runtime/query/compiler" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/symbol.js", + "kind": "import-statement", + "original": "../../mol-script/language/symbol" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/type.js", + "kind": "import-statement", + "original": "../../mol-script/language/type" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/themes/accessible-surface-area.js": { + "bytes": 3239, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color.js", + "kind": "import-statement", + "original": "../../../mol-theme/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area.js", + "kind": "import-statement", + "original": "../accessible-surface-area" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley.js", + "kind": "import-statement", + "original": "../accessible-surface-area/shrake-rupley" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/computed/accessible-surface-area.js": { + "bytes": 5696, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/behavior.js", + "kind": "import-statement", + "original": "../../../behavior" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/computed/accessible-surface-area" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/themes/accessible-surface-area.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/computed/themes/accessible-surface-area" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-script/runtime/query/compiler.js", + "kind": "import-statement", + "original": "../../../../../mol-script/runtime/query/compiler" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-selection-query.js", + "kind": "import-statement", + "original": "../../../../../mol-plugin-state/helpers/structure-selection-query" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../../../mol-script/language/builder" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/chemistry/util.js": { + "bytes": 3803, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/chemistry/geometry.js": { + "bytes": 4690, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/util.js", + "kind": "import-statement", + "original": "./util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/chemistry/valence-model.js": { + "bytes": 11389, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/atomic/types" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/geometry.js", + "kind": "import-statement", + "original": "./geometry" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/util.js", + "kind": "import-statement", + "original": "./util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/valence-model.js": { + "bytes": 1125, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/valence-model.js", + "kind": "import-statement", + "original": "./chemistry/valence-model" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/common/custom-structure-property.js", + "kind": "import-statement", + "original": "../common/custom-structure-property" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/features.js": { + "bytes": 7387, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/valence-model.js", + "kind": "import-statement", + "original": "../valence-model" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry/boundary" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js": { + "bytes": 8640, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/graph/inter-unit-graph.js", + "kind": "import-statement", + "original": "../../../mol-math/graph/inter-unit-graph" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/contacts-builder.js": { + "bytes": 2399, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/graph.js", + "kind": "import-statement", + "original": "../../../mol-math/graph" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-math/graph/inter-unit-graph.js", + "kind": "import-statement", + "original": "../../../mol-math/graph/inter-unit-graph" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/contacts.js": { + "bytes": 7292, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/atomic" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/util/lookup3d.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/structure/util/lookup3d" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/util.js", + "kind": "import-statement", + "original": "../chemistry/util" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/features.js", + "kind": "import-statement", + "original": "./features" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/halogen-bonds.js": { + "bytes": 4456, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/geometry.js", + "kind": "import-statement", + "original": "../chemistry/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/features.js", + "kind": "import-statement", + "original": "./features" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/util.js", + "kind": "import-statement", + "original": "../chemistry/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js", + "kind": "import-statement", + "original": "./common" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/hydrogen-bonds.js": { + "bytes": 11957, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/geometry.js", + "kind": "import-statement", + "original": "../chemistry/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/features.js", + "kind": "import-statement", + "original": "./features" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/util.js", + "kind": "import-statement", + "original": "../chemistry/util" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/valence-model.js", + "kind": "import-statement", + "original": "../valence-model" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/chemistry/functional-group.js": { + "bytes": 6525, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/atomic/types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/util.js", + "kind": "import-statement", + "original": "./util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/charged.js": { + "bytes": 13448, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/features.js", + "kind": "import-statement", + "original": "./features" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/util.js", + "kind": "import-statement", + "original": "../chemistry/util" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/valence-model.js", + "kind": "import-statement", + "original": "../valence-model" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/functional-group.js", + "kind": "import-statement", + "original": "../chemistry/functional-group" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/hydrophobic.js": { + "bytes": 2607, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/features.js", + "kind": "import-statement", + "original": "./features" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/util.js", + "kind": "import-statement", + "original": "../chemistry/util" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js", + "kind": "import-statement", + "original": "./common" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/metal.js": { + "bytes": 6031, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/features.js", + "kind": "import-statement", + "original": "./features" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/util.js", + "kind": "import-statement", + "original": "../chemistry/util" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/properties/atomic/types" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/refine.js": { + "bytes": 9702, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/features.js", + "kind": "import-statement", + "original": "./features" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/interactions.js": { + "bytes": 9416, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/features.js", + "kind": "import-statement", + "original": "./features" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/valence-model.js", + "kind": "import-statement", + "original": "../valence-model" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/contacts-builder.js", + "kind": "import-statement", + "original": "./contacts-builder" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/contacts.js", + "kind": "import-statement", + "original": "./contacts" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/halogen-bonds.js", + "kind": "import-statement", + "original": "./halogen-bonds" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/hydrogen-bonds.js", + "kind": "import-statement", + "original": "./hydrogen-bonds" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/charged.js", + "kind": "import-statement", + "original": "./charged" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/hydrophobic.js", + "kind": "import-statement", + "original": "./hydrophobic" + }, + { + "path": "node_modules/molstar/lib/mol-util/set.js", + "kind": "import-statement", + "original": "../../../mol-util/set" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/metal.js", + "kind": "import-statement", + "original": "./metal" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/refine.js", + "kind": "import-statement", + "original": "./refine" + }, + { + "path": "node_modules/molstar/lib/mol-model/location.js", + "kind": "import-statement", + "original": "../../../mol-model/location" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/centroid-helper.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry/centroid-helper" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../../../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../../mol-util/type-helpers" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions.js": { + "bytes": 1140, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/interactions.js", + "kind": "import-statement", + "original": "./interactions/interactions" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/common/custom-structure-property.js", + "kind": "import-statement", + "original": "../common/custom-structure-property" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/themes/interaction-type.js": { + "bytes": 4290, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions.js", + "kind": "import-statement", + "original": "../interactions" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color.js", + "kind": "import-statement", + "original": "../../../mol-theme/color" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js", + "kind": "import-statement", + "original": "../interactions/common" + }, + { + "path": "node_modules/molstar/lib/mol-util/legend.js", + "kind": "import-statement", + "original": "../../../mol-util/legend" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/interactions.js", + "kind": "import-statement", + "original": "../interactions/interactions" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/complex-representation.js": { + "bytes": 7138, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "./representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-gl/render-object.js", + "kind": "import-statement", + "original": "../../mol-gl/render-object" + }, + { + "path": "node_modules/molstar/lib/mol-theme/theme.js", + "kind": "import-statement", + "original": "../../mol-theme/theme" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-theme/overpaint.js", + "kind": "import-statement", + "original": "../../mol-theme/overpaint" + }, + { + "path": "node_modules/molstar/lib/mol-theme/clipping.js", + "kind": "import-statement", + "original": "../../mol-theme/clipping" + }, + { + "path": "node_modules/molstar/lib/mol-theme/transparency.js", + "kind": "import-statement", + "original": "../../mol-theme/transparency" + }, + { + "path": "node_modules/molstar/lib/mol-theme/substance.js", + "kind": "import-statement", + "original": "../../mol-theme/substance" + }, + { + "path": "node_modules/molstar/lib/mol-theme/emissive.js", + "kind": "import-statement", + "original": "../../mol-theme/emissive" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js": { + "bytes": 13087, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transform-data.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/transform-data" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/properties/atomic.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure/model/properties/atomic" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry/boundary" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/functional-group.js", + "kind": "import-statement", + "original": "../../../../mol-model-props/computed/chemistry/functional-group" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/params.js": { + "bytes": 1742, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-geo/geometry/direct-volume/direct-volume.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/direct-volume/direct-volume" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/lines/lines" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/points/points.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/points/points" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/spheres/spheres" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/cylinders/cylinders" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/text/text" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/texture-mesh/texture-mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/texture-mesh/texture-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "./visual/util/common" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/complex-visual.js": { + "bytes": 16667, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-repr/visual.js", + "kind": "import-statement", + "original": "../visual" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/geometry.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-theme/theme.js", + "kind": "import-statement", + "original": "../../mol-theme/theme" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/transform-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/transform-data" + }, + { + "path": "node_modules/molstar/lib/mol-gl/render-object.js", + "kind": "import-statement", + "original": "../../mol-gl/render-object" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-repr/util.js", + "kind": "import-statement", + "original": "../util" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color.js", + "kind": "import-statement", + "original": "../../mol-theme/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/size-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/size-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/color-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/color-data" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/cylinders/cylinders" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/lines/lines" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/text/text" + }, + { + "path": "node_modules/molstar/lib/mol-theme/size.js", + "kind": "import-statement", + "original": "../../mol-theme/size" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/direct-volume/direct-volume.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/direct-volume/direct-volume" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/marker-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/marker-data" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/params.js", + "kind": "import-statement", + "original": "./params" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/texture-mesh/texture-mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/texture-mesh/texture-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/spheres/spheres" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/units-representation.js": { + "bytes": 16161, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "./representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-gl/render-object.js", + "kind": "import-statement", + "original": "../../mol-gl/render-object" + }, + { + "path": "node_modules/molstar/lib/mol-theme/theme.js", + "kind": "import-statement", + "original": "../../mol-theme/theme" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-theme/overpaint.js", + "kind": "import-statement", + "original": "../../mol-theme/overpaint" + }, + { + "path": "node_modules/molstar/lib/mol-theme/transparency.js", + "kind": "import-statement", + "original": "../../mol-theme/transparency" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-theme/clipping.js", + "kind": "import-statement", + "original": "../../mol-theme/clipping" + }, + { + "path": "node_modules/molstar/lib/mol-theme/substance.js", + "kind": "import-statement", + "original": "../../mol-theme/substance" + }, + { + "path": "node_modules/molstar/lib/mol-theme/emissive.js", + "kind": "import-statement", + "original": "../../mol-theme/emissive" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/units-visual.js": { + "bytes": 21282, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-repr/visual.js", + "kind": "import-statement", + "original": "../visual" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/geometry.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-theme/theme.js", + "kind": "import-statement", + "original": "../../mol-theme/theme" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "./visual/util/common" + }, + { + "path": "node_modules/molstar/lib/mol-gl/render-object.js", + "kind": "import-statement", + "original": "../../mol-gl/render-object" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-repr/util.js", + "kind": "import-statement", + "original": "../util" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color.js", + "kind": "import-statement", + "original": "../../mol-theme/color" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/marker-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/marker-data" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/size-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/size-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/color-data.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/color-data" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-theme/size.js", + "kind": "import-statement", + "original": "../../mol-theme/size" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/spheres/spheres" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/cylinders/cylinders" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/points/points.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/points/points" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/lines/lines" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/text/text" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/direct-volume/direct-volume.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/direct-volume/direct-volume" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/texture-mesh/texture-mesh.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/texture-mesh/texture-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/params.js", + "kind": "import-statement", + "original": "./params" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation.js": { + "bytes": 930, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-representation.js", + "kind": "import-statement", + "original": "./complex-representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-visual.js", + "kind": "import-statement", + "original": "./complex-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-representation.js", + "kind": "import-statement", + "original": "./units-representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "./units-visual" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders-builder.js": { + "bytes": 5085, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders.js", + "kind": "import-statement", + "original": "./cylinders" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/link.js": { + "bytes": 21148, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/cylinder.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/mesh/builder/cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/lines/lines" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines-builder.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/lines/lines-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/cylinders/cylinders" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders-builder.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/cylinders/cylinders-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/sphere3d.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry/primitives/sphere3d" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/representations/shared.js": { + "bytes": 1049, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/representations/interactions-intra-unit-cylinder.js": { + "bytes": 11570, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions.js", + "kind": "import-statement", + "original": "../interactions" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/link.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/visual/util/link" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/interactions.js", + "kind": "import-statement", + "original": "../interactions/interactions" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js", + "kind": "import-statement", + "original": "../interactions/common" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/visual/util/common" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/representations/shared.js", + "kind": "import-statement", + "original": "./shared" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js", + "kind": "import-statement", + "original": "../interactions/common" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/util.js", + "kind": "import-statement", + "original": "../chemistry/util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/representations/interactions-inter-unit-cylinder.js": { + "bytes": 12249, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/link.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/visual/util/link" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-visual.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/complex-visual" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/interactions.js", + "kind": "import-statement", + "original": "../interactions/interactions" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions.js", + "kind": "import-statement", + "original": "../interactions" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js", + "kind": "import-statement", + "original": "../interactions/common" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/structure" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/representations/shared.js", + "kind": "import-statement", + "original": "./shared" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/util.js", + "kind": "import-statement", + "original": "../chemistry/util" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/visual/util/common" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/representations/interactions.js": { + "bytes": 2716, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/representation" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/representations/interactions-intra-unit-cylinder.js", + "kind": "import-statement", + "original": "./interactions-intra-unit-cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions.js", + "kind": "import-statement", + "original": "../interactions" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/representations/interactions-inter-unit-cylinder.js", + "kind": "import-statement", + "original": "./interactions-inter-unit-cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/params.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/params" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/computed/interactions.js": { + "bytes": 5134, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/behavior.js", + "kind": "import-statement", + "original": "../../../behavior" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/computed/interactions" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../../../../mol-plugin-state/objects" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element.js", + "kind": "import-statement", + "original": "../../../../../mol-model/structure/structure/element" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/computed/interactions/common" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/themes/interaction-type.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/computed/themes/interaction-type" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/representations/interactions.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/computed/representations/interactions" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/computed/secondary-structure.js": { + "bytes": 1289, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/behavior.js", + "kind": "import-statement", + "original": "../../../behavior" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/computed/secondary-structure" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/computed/valence-model.js": { + "bytes": 3864, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/behavior.js", + "kind": "import-statement", + "original": "../../../behavior" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/valence-model.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/computed/valence-model" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../../../../mol-plugin-state/objects" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/geometry.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/computed/chemistry/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../../../mol-util/array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/sequence/themes/sifts-mapping.js": { + "bytes": 3273, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color.js", + "kind": "import-statement", + "original": "../../../mol-theme/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/palette.js", + "kind": "import-statement", + "original": "../../../mol-util/color/palette" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/sequence/sifts-mapping.js", + "kind": "import-statement", + "original": "../sifts-mapping" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/sequence/sifts-mapping.js": { + "bytes": 2532, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/sequence/sifts-mapping.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/sequence/sifts-mapping" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/sequence/themes/sifts-mapping.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/sequence/themes/sifts-mapping" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/behavior.js", + "kind": "import-statement", + "original": "../../../behavior" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/integrative/cross-link-restraint/format.js": { + "bytes": 3131, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/common/property.js", + "kind": "import-statement", + "original": "../../../mol-model-formats/structure/common/property" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/integrative/pair-restraints.js": { + "bytes": 1084, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/integrative/cross-link-restraint/property.js": { + "bytes": 7216, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model-props/integrative/cross-link-restraint/format.js", + "kind": "import-statement", + "original": "./format" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/integrative/pair-restraints.js", + "kind": "import-statement", + "original": "../pair-restraints" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/common/custom-structure-property.js", + "kind": "import-statement", + "original": "../../common/custom-structure-property" + }, + { + "path": "node_modules/molstar/lib/mol-model/location.js", + "kind": "import-statement", + "original": "../../../mol-model/location" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/centroid-helper.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry/centroid-helper" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../../../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../../mol-model/custom-property" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/integrative/cross-link-restraint/representation.js": { + "bytes": 5809, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/link.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/visual/util/link" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-visual.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/complex-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/representation" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/integrative/cross-link-restraint/property.js", + "kind": "import-statement", + "original": "./property" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/integrative/cross-link-restraint/color.js": { + "bytes": 2428, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color.js", + "kind": "import-statement", + "original": "../../../mol-theme/color" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/integrative/cross-link-restraint/property.js", + "kind": "import-statement", + "original": "./property" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/integrative/cross-link-restraint.js": { + "bytes": 1883, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/behavior.js", + "kind": "import-statement", + "original": "../../../behavior" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/integrative/cross-link-restraint/format.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/integrative/cross-link-restraint/format" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js", + "kind": "import-statement", + "original": "../../../../../mol-model-formats/structure/mmcif" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/integrative/cross-link-restraint/representation.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/integrative/cross-link-restraint/representation" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/integrative/cross-link-restraint/color.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/integrative/cross-link-restraint/color" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props.js": { + "bytes": 773, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/structure-info.js", + "kind": "import-statement", + "original": "./custom-props/structure-info" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/computed/accessible-surface-area.js", + "kind": "import-statement", + "original": "./custom-props/computed/accessible-surface-area" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/computed/interactions.js", + "kind": "import-statement", + "original": "./custom-props/computed/interactions" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/computed/secondary-structure.js", + "kind": "import-statement", + "original": "./custom-props/computed/secondary-structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/computed/valence-model.js", + "kind": "import-statement", + "original": "./custom-props/computed/valence-model" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/sequence/sifts-mapping.js", + "kind": "import-statement", + "original": "./custom-props/sequence/sifts-mapping" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/integrative/cross-link-restraint.js", + "kind": "import-statement", + "original": "./custom-props/integrative/cross-link-restraint" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior.js": { + "bytes": 922, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/behavior.js", + "kind": "import-statement", + "original": "./behavior/behavior" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/static/state.js", + "kind": "import-statement", + "original": "./behavior/static/state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/static/representation.js", + "kind": "import-statement", + "original": "./behavior/static/representation" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/static/camera.js", + "kind": "import-statement", + "original": "./behavior/static/camera" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/static/misc.js", + "kind": "import-statement", + "original": "./behavior/static/misc" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/representation.js", + "kind": "import-statement", + "original": "./behavior/dynamic/representation" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/camera.js", + "kind": "import-statement", + "original": "./behavior/dynamic/camera" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props.js", + "kind": "import-statement", + "original": "./behavior/dynamic/custom-props" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-representation-params.js": { + "bytes": 4379, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/selection/structure-focus-representation.js": { + "bytes": 12053, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model-props/computed/representations/interactions.js", + "kind": "import-statement", + "original": "../../../../mol-model-props/computed/representations/interactions" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/themes/interaction-type.js", + "kind": "import-statement", + "original": "../../../../mol-model-props/computed/themes/interaction-type" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-representation-params.js", + "kind": "import-statement", + "original": "../../../../mol-plugin-state/helpers/structure-representation-params" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../../../mol-plugin-state/transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior.js", + "kind": "import-statement", + "original": "../../../behavior" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../../../../mol-script/language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-theme/size.js", + "kind": "import-statement", + "original": "../../../../mol-theme/size" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../../commands" + }, + { + "path": "node_modules/molstar/lib/mol-util/material.js", + "kind": "import-statement", + "original": "../../../../mol-util/material" + }, + { + "path": "node_modules/molstar/lib/mol-util/clip.js", + "kind": "import-statement", + "original": "../../../../mol-util/clip" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/builder/structure/representation-preset.js": { + "bytes": 27913, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-selection-query.js", + "kind": "import-statement", + "original": "../../helpers/structure-selection-query" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../../../mol-plugin/config" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/selection/structure-focus-representation.js", + "kind": "import-statement", + "original": "../../../mol-plugin/behavior/dynamic/selection/structure-focus-representation" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-representation-params.js", + "kind": "import-statement", + "original": "../../helpers/structure-representation-params" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/chain-id.js", + "kind": "import-statement", + "original": "../../../mol-theme/color/chain-id" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/operator-name.js", + "kind": "import-statement", + "original": "../../../mol-theme/color/operator-name" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/index-pair.js", + "kind": "import-statement", + "original": "../../../mol-model-formats/structure/property/bonds/index-pair" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/struct_conn.js", + "kind": "import-statement", + "original": "../../../mol-model-formats/structure/property/bonds/struct_conn" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra/3d/vec3" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/formats/provider.js": { + "bytes": 1201, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-io/common/msgpack/decode.js", + "kind": "import-statement", + "original": "../../mol-io/common/msgpack/decode" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/formats/trajectory.js": { + "bytes": 5146, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/formats/provider.js", + "kind": "import-statement", + "original": "./provider" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/file-info.js": { + "bytes": 1577, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/formats/topology.js": { + "bytes": 2144, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/formats/provider.js", + "kind": "import-statement", + "original": "./provider" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/formats/coordinates.js": { + "bytes": 1924, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/formats/provider.js", + "kind": "import-statement", + "original": "./provider" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/actions/structure.js": { + "bytes": 21229, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/builder/structure/representation-preset.js", + "kind": "import-statement", + "original": "../builder/structure/representation-preset" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/formats/trajectory.js", + "kind": "import-statement", + "original": "../formats/trajectory" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/root-structure.js", + "kind": "import-statement", + "original": "../helpers/root-structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../objects" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms/model.js", + "kind": "import-statement", + "original": "../transforms/model" + }, + { + "path": "node_modules/molstar/lib/mol-util/assets.js", + "kind": "import-statement", + "original": "../../mol-util/assets" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../../mol-plugin/config" + }, + { + "path": "node_modules/molstar/lib/mol-util/file-info.js", + "kind": "import-statement", + "original": "../../mol-util/file-info" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/formats/topology.js", + "kind": "import-statement", + "original": "../formats/topology" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/formats/coordinates.js", + "kind": "import-statement", + "original": "../formats/coordinates" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/actions/volume.js": { + "bytes": 7102, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/file-info.js", + "kind": "import-statement", + "original": "../../mol-util/file-info" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../objects" + }, + { + "path": "node_modules/molstar/lib/mol-util/assets.js", + "kind": "import-statement", + "original": "../../mol-util/assets" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../mol-util/type-helpers" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/actions/file.js": { + "bytes": 5921, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/assets.js", + "kind": "import-statement", + "original": "../../mol-util/assets" + }, + { + "path": "node_modules/molstar/lib/mol-util/file-info.js", + "kind": "import-statement", + "original": "../../mol-util/file-info" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/zip/zip.js", + "kind": "import-statement", + "original": "../../mol-util/zip/zip" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../objects" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/actions.js": { + "bytes": 361, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/actions/structure.js", + "kind": "import-statement", + "original": "./actions/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/actions/volume.js", + "kind": "import-statement", + "original": "./actions/volume" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/actions/file.js", + "kind": "import-statement", + "original": "./actions/file" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/animation/built-in/state-interpolation.js": { + "bytes": 2736, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/model.js", + "kind": "import-statement", + "original": "../model" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/animation/built-in/spin-structure.js": { + "bytes": 2934, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../objects" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/model.js", + "kind": "import-statement", + "original": "../model" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/animation/built-in/camera-rock.js": { + "bytes": 2755, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../../mol-math/interpolate" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/quat.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra/3d/quat" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra/3d/vec3" + }, + { + "path": "node_modules/molstar/lib/mol-math/misc.js", + "kind": "import-statement", + "original": "../../../mol-math/misc" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/model.js", + "kind": "import-statement", + "original": "../model" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/spec.js": { + "bytes": 6032, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/built-in/assembly-unwind.js", + "kind": "import-statement", + "original": "../mol-plugin-state/animation/built-in/assembly-unwind" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/built-in/camera-spin.js", + "kind": "import-statement", + "original": "../mol-plugin-state/animation/built-in/camera-spin" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/built-in/model-index.js", + "kind": "import-statement", + "original": "../mol-plugin-state/animation/built-in/model-index" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/built-in/state-snapshots.js", + "kind": "import-statement", + "original": "../mol-plugin-state/animation/built-in/state-snapshots" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior.js", + "kind": "import-statement", + "original": "./behavior" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/selection/structure-focus-representation.js", + "kind": "import-statement", + "original": "./behavior/dynamic/selection/structure-focus-representation" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/actions.js", + "kind": "import-statement", + "original": "../mol-plugin-state/actions" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/actions/volume.js", + "kind": "import-statement", + "original": "../mol-plugin-state/actions/volume" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../mol-plugin-state/transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/transformers.js", + "kind": "import-statement", + "original": "../mol-plugin/behavior/dynamic/volume-streaming/transformers" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/built-in/state-interpolation.js", + "kind": "import-statement", + "original": "../mol-plugin-state/animation/built-in/state-interpolation" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/built-in/spin-structure.js", + "kind": "import-statement", + "original": "../mol-plugin-state/animation/built-in/spin-structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/animation/built-in/camera-rock.js", + "kind": "import-statement", + "original": "../mol-plugin-state/animation/built-in/camera-rock" + } + ], + "format": "esm" + }, + "node_modules/react/cjs/react.production.min.js": { + "bytes": 8956, + "imports": [], + "format": "cjs" + }, + "node_modules/react/index.js": { + "bytes": 189, + "imports": [ + { + "path": "node_modules/react/cjs/react.production.min.js", + "kind": "require-call", + "original": "./cjs/react.production.min.js" + } + ], + "format": "cjs" + }, + "node_modules/react/cjs/react-jsx-runtime.production.min.js": { + "bytes": 1056, + "imports": [ + { + "path": "node_modules/react/index.js", + "kind": "require-call", + "original": "react" + } + ], + "format": "cjs" + }, + "node_modules/react/jsx-runtime.js": { + "bytes": 213, + "imports": [ + { + "path": "node_modules/react/cjs/react-jsx-runtime.production.min.js", + "kind": "require-call", + "original": "./cjs/react-jsx-runtime.production.min.js" + } + ], + "format": "cjs" + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js": { + "bytes": 32323, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/common.js": { + "bytes": 12142, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "./icons" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/base.js": { + "bytes": 3663, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "./controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "./controls/icons" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/action-menu.js": { + "bytes": 11496, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "./icons" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/color/swatches.js": { + "bytes": 549, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/color/color.js", + "kind": "import-statement", + "original": "./color" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/color.js": { + "bytes": 6726, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../../mol-util/string" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/swatches.js", + "kind": "import-statement", + "original": "../../mol-util/color/swatches" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/legend.js": { + "bytes": 1917, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/line-graph/point-component.js": { + "bytes": 1183, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/line-graph/line-graph-component.js": { + "bytes": 11741, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/line-graph/point-component.js", + "kind": "import-statement", + "original": "./point-component" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../mol-util/array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/slider.js": { + "bytes": 22839, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js": { + "bytes": 62599, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-script/script.js", + "kind": "import-statement", + "original": "../../mol-script/script" + }, + { + "path": "node_modules/molstar/lib/mol-util/assets.js", + "kind": "import-statement", + "original": "../../mol-util/assets" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/lists.js", + "kind": "import-statement", + "original": "../../mol-util/color/lists" + }, + { + "path": "node_modules/molstar/lib/mol-util/memoize.js", + "kind": "import-statement", + "original": "../../mol-util/memoize" + }, + { + "path": "node_modules/molstar/lib/mol-util/number.js", + "kind": "import-statement", + "original": "../../mol-util/number" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../../mol-util/string" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/action-menu.js", + "kind": "import-statement", + "original": "./action-menu" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/color.js", + "kind": "import-statement", + "original": "./color" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "./icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/legend.js", + "kind": "import-statement", + "original": "./legend" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/line-graph/line-graph-component.js", + "kind": "import-statement", + "original": "./line-graph/line-graph-component" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/slider.js", + "kind": "import-statement", + "original": "./slider" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/custom/volume.js": { + "bytes": 15484, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/behavior.js", + "kind": "import-statement", + "original": "../../mol-plugin/behavior/dynamic/volume-streaming/behavior" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js", + "kind": "import-statement", + "original": "../controls/parameters" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/slider.js", + "kind": "import-statement", + "original": "../controls/slider" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-util/number.js", + "kind": "import-statement", + "original": "../../mol-util/number" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/static/state.js", + "kind": "import-statement", + "original": "../../mol-plugin/behavior/static/state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/spec.js": { + "bytes": 605, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/transformers.js", + "kind": "import-statement", + "original": "../mol-plugin/behavior/dynamic/volume-streaming/transformers" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/spec.js", + "kind": "import-statement", + "original": "../mol-plugin/spec" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/custom/volume.js", + "kind": "import-statement", + "original": "./custom/volume" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/common/custom-property.js": { + "bytes": 2328, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/immutable/dist/immutable.es.js", + "kind": "import-statement", + "original": "immutable" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/builder/data.js": { + "bytes": 1410, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms/data.js", + "kind": "import-statement", + "original": "../transforms/data" + }, + { + "path": "node_modules/molstar/lib/mol-util/file-info.js", + "kind": "import-statement", + "original": "../../mol-util/file-info" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/builder/structure/representation.js": { + "bytes": 4990, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-representation-params.js", + "kind": "import-statement", + "original": "../../helpers/structure-representation-params" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms/representation.js", + "kind": "import-statement", + "original": "../../transforms/representation" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/builder/structure/representation-preset.js", + "kind": "import-statement", + "original": "./representation-preset" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../../../mol-plugin/config" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/builder/structure/hierarchy-preset.js": { + "bytes": 10329, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/root-structure.js", + "kind": "import-statement", + "original": "../../helpers/root-structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/builder/structure/representation-preset.js", + "kind": "import-statement", + "original": "./representation-preset" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-repr/util.js", + "kind": "import-statement", + "original": "../../../mol-repr/util" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color/operator-name.js", + "kind": "import-statement", + "original": "../../../mol-theme/color/operator-name" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../../../mol-plugin/config" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/builder/structure/hierarchy.js": { + "bytes": 3378, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/builder/structure/hierarchy-preset.js", + "kind": "import-statement", + "original": "./hierarchy-preset" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../mol-util/array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/builder/structure.js": { + "bytes": 7236, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../objects" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/builder/structure/representation.js", + "kind": "import-statement", + "original": "./structure/representation" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/symmetry.js", + "kind": "import-statement", + "original": "../../mol-model-formats/structure/property/symmetry" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/builder/structure/hierarchy.js", + "kind": "import-statement", + "original": "./structure/hierarchy" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/volume-representation-params.js": { + "bytes": 4257, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-formats/volume/property.js": { + "bytes": 958, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/formats/volume.js": { + "bytes": 12264, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/formats/provider.js", + "kind": "import-statement", + "original": "./provider" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms/representation.js", + "kind": "import-statement", + "original": "../transforms/representation" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-model/volume.js", + "kind": "import-statement", + "original": "../../mol-model/volume" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/volume-representation-params.js", + "kind": "import-statement", + "original": "../helpers/volume-representation-params" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/volume/property.js", + "kind": "import-statement", + "original": "../../mol-model-formats/volume/property" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/util.js", + "kind": "import-statement", + "original": "../../mol-plugin/behavior/dynamic/volume-streaming/util" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/formats/shape.js": { + "bytes": 1105, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/formats/provider.js", + "kind": "import-statement", + "original": "./provider" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/formats/registry.js": { + "bytes": 3377, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/formats/trajectory.js", + "kind": "import-statement", + "original": "./trajectory" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/formats/volume.js", + "kind": "import-statement", + "original": "./volume" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/formats/shape.js", + "kind": "import-statement", + "original": "./shape" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/formats/topology.js", + "kind": "import-statement", + "original": "./topology" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/formats/coordinates.js", + "kind": "import-statement", + "original": "./coordinates" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/animation.js": { + "bytes": 6415, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/component.js", + "kind": "import-statement", + "original": "../component" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/focus-camera/focus-first-residue.js": { + "bytes": 4341, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../../..//mol-math/linear-algebra/3d/vec3" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/matrix/principal-axes.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra/matrix/principal-axes" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/camera.js", + "kind": "import-statement", + "original": "../../../mol-canvas3d/camera" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/focus-camera/orient-axes.js": { + "bytes": 9932, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/matrix/principal-axes.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra/matrix/principal-axes" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/camera.js": { + "bytes": 5752, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary-helper.js", + "kind": "import-statement", + "original": "../../mol-math/geometry/boundary-helper" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../objects" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/focus-camera/focus-first-residue.js", + "kind": "import-statement", + "original": "./focus-camera/focus-first-residue" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/focus-camera/orient-axes.js", + "kind": "import-statement", + "original": "./focus-camera/orient-axes" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/interactivity.js": { + "bytes": 8938, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/component.js", + "kind": "import-statement", + "original": "../component" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/loci-label.js": { + "bytes": 2720, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-overpaint.js": { + "bytes": 2951, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/transforms" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-theme/overpaint.js", + "kind": "import-statement", + "original": "../../mol-theme/overpaint" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-clipping.js": { + "bytes": 2489, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/transforms" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-theme/clipping.js", + "kind": "import-statement", + "original": "../../mol-theme/clipping" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-transparency.js": { + "bytes": 2929, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/transforms" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-theme/transparency.js", + "kind": "import-statement", + "original": "../../mol-theme/transparency" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-substance.js": { + "bytes": 2993, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/transforms" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-theme/substance.js", + "kind": "import-statement", + "original": "../../mol-theme/substance" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-util/material.js", + "kind": "import-statement", + "original": "../../mol-util/material" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-emissive.js": { + "bytes": 2792, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-theme/emissive.js", + "kind": "import-statement", + "original": "../../mol-theme/emissive" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/structure/component.js": { + "bytes": 23036, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/interactions.js", + "kind": "import-statement", + "original": "../../../mol-model-props/computed/interactions" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/query/utils/structure-set.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/query/utils/structure-set" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/static/state.js", + "kind": "import-statement", + "original": "../../../mol-plugin/behavior/static/state" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/component.js", + "kind": "import-statement", + "original": "../../component" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-overpaint.js", + "kind": "import-statement", + "original": "../../helpers/structure-overpaint" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-representation-params.js", + "kind": "import-statement", + "original": "../../helpers/structure-representation-params" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-selection-query.js", + "kind": "import-statement", + "original": "../../helpers/structure-selection-query" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms/representation.js", + "kind": "import-statement", + "original": "../../transforms/representation" + }, + { + "path": "node_modules/molstar/lib/mol-theme/clipping.js", + "kind": "import-statement", + "original": "../../../mol-theme/clipping" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-clipping.js", + "kind": "import-statement", + "original": "../../helpers/structure-clipping" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-transparency.js", + "kind": "import-statement", + "original": "../../helpers/structure-transparency" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/selection/structure-focus-representation.js", + "kind": "import-statement", + "original": "../../../mol-plugin/behavior/dynamic/selection/structure-focus-representation" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-substance.js", + "kind": "import-statement", + "original": "../../helpers/structure-substance" + }, + { + "path": "node_modules/molstar/lib/mol-util/material.js", + "kind": "import-statement", + "original": "../../../mol-util/material" + }, + { + "path": "node_modules/molstar/lib/mol-util/clip.js", + "kind": "import-statement", + "original": "../../../mol-util/clip" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-emissive.js", + "kind": "import-statement", + "original": "../../helpers/structure-emissive" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/structure/focus.js": { + "bytes": 5759, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/component.js", + "kind": "import-statement", + "original": "../../component" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../../../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../objects" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/structure/hierarchy-state.js": { + "bytes": 9674, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../objects" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/behavior.js", + "kind": "import-statement", + "original": "../../../mol-plugin/behavior/dynamic/volume-streaming/behavior" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/structure/hierarchy.js": { + "bytes": 10139, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/static/state.js", + "kind": "import-statement", + "original": "../../../mol-plugin/behavior/static/state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-util/set.js", + "kind": "import-statement", + "original": "../../../mol-util/set" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/component.js", + "kind": "import-statement", + "original": "../../component" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../objects" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/structure/hierarchy-state.js", + "kind": "import-statement", + "original": "./hierarchy-state" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/structure/measurement.js": { + "bytes": 16011, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../objects" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/component.js", + "kind": "import-statement", + "original": "../../component" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/shape/loci/common.js", + "kind": "import-statement", + "original": "../../../mol-repr/shape/loci/common" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../../mol-util/color" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/structure/selection.js": { + "bytes": 17822, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary-helper.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry/boundary-helper" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../../../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../mol-util/array" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/component.js", + "kind": "import-statement", + "original": "../../component" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../objects" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/volume/hierarchy-state.js": { + "bytes": 4371, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../objects" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../../mol-state" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/volume/hierarchy.js": { + "bytes": 4380, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/static/state.js", + "kind": "import-statement", + "original": "../../../mol-plugin/behavior/static/state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/component.js", + "kind": "import-statement", + "original": "../../component" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/volume/hierarchy-state.js", + "kind": "import-statement", + "original": "./hierarchy-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/volume-representation-params.js", + "kind": "import-statement", + "original": "../../helpers/volume-representation-params" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../transforms" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/layout.js": { + "bytes": 5875, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/component.js", + "kind": "import-statement", + "original": "../mol-plugin-state/component" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "./commands" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/bond.js": { + "bytes": 11810, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/link.js", + "kind": "import-statement", + "original": "./link" + }, + { + "path": "node_modules/molstar/lib/mol-util/type-helpers.js", + "kind": "import-statement", + "original": "../../../../mol-util/type-helpers" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.js": { + "bytes": 13622, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/link.js", + "kind": "import-statement", + "original": "./util/link" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/bond.js", + "kind": "import-statement", + "original": "./util/bond" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/graph.js", + "kind": "import-statement", + "original": "../../../mol-math/graph" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/cylinders/cylinders" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../mol-util/array" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.js": { + "bytes": 11959, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/link.js", + "kind": "import-statement", + "original": "./util/link" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-visual.js", + "kind": "import-statement", + "original": "../complex-visual" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/bond.js", + "kind": "import-statement", + "original": "./util/bond" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/cylinders/cylinders" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-array.js", + "kind": "import-statement", + "original": "../../../mol-data/int/sorted-array" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres-builder.js": { + "bytes": 1191, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres.js", + "kind": "import-statement", + "original": "./spheres" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/element.js": { + "bytes": 14865, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/sphere.js", + "kind": "import-statement", + "original": "../../../../mol-geo/primitive/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/mesh/builder/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/spheres/spheres" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres-builder.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/spheres/spheres-builder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/element-sphere.js": { + "bytes": 5386, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/element.js", + "kind": "import-statement", + "original": "./util/element" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-visual.js", + "kind": "import-statement", + "original": "../complex-visual" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation/ball-and-stick.js": { + "bytes": 3339, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.js", + "kind": "import-statement", + "original": "../visual/bond-intra-unit-cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.js", + "kind": "import-statement", + "original": "../visual/bond-inter-unit-cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/element-sphere.js", + "kind": "import-statement", + "original": "../visual/element-sphere" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-representation.js", + "kind": "import-statement", + "original": "../units-representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-representation.js", + "kind": "import-statement", + "original": "../complex-representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/params.js", + "kind": "import-statement", + "original": "../params" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/carbohydrate-link-cylinder.js": { + "bytes": 4835, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/link.js", + "kind": "import-statement", + "original": "./util/link" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-visual.js", + "kind": "import-statement", + "original": "../complex-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "./util/common" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/pyramid.js": { + "bytes": 3649, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/primitive.js", + "kind": "import-statement", + "original": "./primitive" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/polygon.js", + "kind": "import-statement", + "original": "./polygon" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/star.js": { + "bytes": 1712, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/primitive.js", + "kind": "import-statement", + "original": "./primitive" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/octahedron.js": { + "bytes": 1195, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-geo/primitive/primitive.js", + "kind": "import-statement", + "original": "./primitive" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/cage.js", + "kind": "import-statement", + "original": "./cage" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/carbohydrate-symbol-mesh.js": { + "bytes": 9605, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/box.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/box" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/pyramid.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/pyramid" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/star.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/star" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/octahedron.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/octahedron" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/prism.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/prism" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/carbohydrates/constants.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/structure/carbohydrates/constants" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-visual.js", + "kind": "import-statement", + "original": "../complex-visual" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "./util/common" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.js": { + "bytes": 6031, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/link.js", + "kind": "import-statement", + "original": "./util/link" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-visual.js", + "kind": "import-statement", + "original": "../complex-visual" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/common.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/structure/unit/bonds/common" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "./util/common" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation/carbohydrate.js": { + "bytes": 2601, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-representation.js", + "kind": "import-statement", + "original": "../complex-representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/carbohydrate-link-cylinder.js", + "kind": "import-statement", + "original": "../visual/carbohydrate-link-cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/carbohydrate-symbol-mesh.js", + "kind": "import-statement", + "original": "../visual/carbohydrate-symbol-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.js", + "kind": "import-statement", + "original": "../visual/carbohydrate-terminal-link-cylinder" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer/backbone.js": { + "bytes": 4048, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-ranges.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int/sorted-ranges" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer.js", + "kind": "import-statement", + "original": "../polymer" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer/gap-iterator.js": { + "bytes": 2337, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-ranges.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int/sorted-ranges" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer.js", + "kind": "import-statement", + "original": "../polymer" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/helix-orientation/helix-orientation.js": { + "bytes": 3758, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int/segmentation.js", + "kind": "import-statement", + "original": "../../../mol-data/int/segmentation" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-ranges.js", + "kind": "import-statement", + "original": "../../../mol-data/int/sorted-ranges" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model-props/computed/helix-orientation.js": { + "bytes": 814, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/custom-property.js", + "kind": "import-statement", + "original": "../../mol-model/custom-property" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/common/custom-model-property.js", + "kind": "import-statement", + "original": "../common/custom-model-property" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/helix-orientation/helix-orientation.js", + "kind": "import-statement", + "original": "./helix-orientation/helix-orientation" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer/trace-iterator.js": { + "bytes": 20045, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-ranges.js", + "kind": "import-statement", + "original": "../../../../../mol-data/int/sorted-ranges" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer.js", + "kind": "import-statement", + "original": "../polymer" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/computed/secondary-structure" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/helix-orientation.js", + "kind": "import-statement", + "original": "../../../../../mol-model-props/computed/helix-orientation" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer/curve-segment.js": { + "bytes": 5138, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/interpolate.js", + "kind": "import-statement", + "original": "../../../../../mol-math/interpolate" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer.js": { + "bytes": 10107, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer/backbone.js", + "kind": "import-statement", + "original": "./polymer/backbone" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer/gap-iterator.js", + "kind": "import-statement", + "original": "./polymer/gap-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer/trace-iterator.js", + "kind": "import-statement", + "original": "./polymer/trace-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer/curve-segment.js", + "kind": "import-statement", + "original": "./polymer/curve-segment" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/nucleotide.js": { + "bytes": 7132, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer.js", + "kind": "import-statement", + "original": "./polymer" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra/3d/vec3" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-block-mesh.js": { + "bytes": 5890, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/box.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/box" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/cylinder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/nucleotide.js", + "kind": "import-statement", + "original": "./util/nucleotide" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-ring-mesh.js": { + "bytes": 7828, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/cylinder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/nucleotide.js", + "kind": "import-statement", + "original": "./util/nucleotide" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-atomic-ring-fill.js": { + "bytes": 8382, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/nucleotide.js", + "kind": "import-statement", + "original": "./util/nucleotide" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-atomic-bond.js": { + "bytes": 15616, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/cylinder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/nucleotide.js", + "kind": "import-statement", + "original": "./util/nucleotide" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/cylinders/cylinders" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/cylinders/cylinders-builder" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-atomic-element.js": { + "bytes": 12002, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/nucleotide.js", + "kind": "import-statement", + "original": "./util/nucleotide" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/spheres/spheres" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/sphere.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/spheres/spheres-builder" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/primitive/wedge.js": { + "bytes": 1502, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/primitive.js", + "kind": "import-statement", + "original": "./primitive" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/polygon.js", + "kind": "import-statement", + "original": "./polygon" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/prism.js", + "kind": "import-statement", + "original": "./prism" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/polymer-direction-wedge.js": { + "bytes": 3842, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/wedge.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/wedge" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer.js", + "kind": "import-statement", + "original": "./util/polymer" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/polymer-gap-cylinder.js": { + "bytes": 4061, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer.js", + "kind": "import-statement", + "original": "./util/polymer" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/cylinder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sheet.js": { + "bytes": 7831, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../../mol-data/util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/tube.js": { + "bytes": 7406, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../../mol-data/util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/ribbon.js": { + "bytes": 3474, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../../mol-data/util" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/polymer-trace-mesh.js": { + "bytes": 9958, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer.js", + "kind": "import-statement", + "original": "./util/polymer" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sheet.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/sheet" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/tube.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/tube" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure.js", + "kind": "import-statement", + "original": "../../../mol-model-props/computed/secondary-structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/ribbon.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/ribbon" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation/cartoon.js": { + "bytes": 5199, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-representation.js", + "kind": "import-statement", + "original": "../units-representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-block-mesh.js", + "kind": "import-statement", + "original": "../visual/nucleotide-block-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-ring-mesh.js", + "kind": "import-statement", + "original": "../visual/nucleotide-ring-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-atomic-ring-fill.js", + "kind": "import-statement", + "original": "../visual/nucleotide-atomic-ring-fill" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-atomic-bond.js", + "kind": "import-statement", + "original": "../visual/nucleotide-atomic-bond" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-atomic-element.js", + "kind": "import-statement", + "original": "../visual/nucleotide-atomic-element" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/polymer-direction-wedge.js", + "kind": "import-statement", + "original": "../visual/polymer-direction-wedge" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/polymer-gap-cylinder.js", + "kind": "import-statement", + "original": "../visual/polymer-gap-cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/polymer-trace-mesh.js", + "kind": "import-statement", + "original": "../visual/polymer-trace-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/secondary-structure.js", + "kind": "import-statement", + "original": "../../../mol-model-props/computed/secondary-structure" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/helix-orientation.js", + "kind": "import-statement", + "original": "../../../mol-model-props/computed/helix-orientation" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/ellipsoid-mesh.js": { + "bytes": 4636, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/element.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/visual/util/element" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/sphere.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/visual/util/common" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/ellipsoid.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/ellipsoid" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/anisotropic.js", + "kind": "import-statement", + "original": "../../../mol-model-formats/structure/property/anisotropic" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra/3d/common" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-data/int/sorted-array.js", + "kind": "import-statement", + "original": "../../../mol-data/int/sorted-array" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation/ellipsoid.js": { + "bytes": 3183, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/ellipsoid-mesh.js", + "kind": "import-statement", + "original": "../visual/ellipsoid-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-model-formats/structure/property/anisotropic.js", + "kind": "import-statement", + "original": "../../../mol-model-formats/structure/property/anisotropic" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.js", + "kind": "import-statement", + "original": "../visual/bond-intra-unit-cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.js", + "kind": "import-statement", + "original": "../visual/bond-inter-unit-cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/params.js", + "kind": "import-statement", + "original": "../params" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/gaussian-density.vert.js": { + "bytes": 898, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-gl/shader/gaussian-density.frag.js": { + "bytes": 1865, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/gaussian-density/gpu.js": { + "bytes": 18170, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../geometry" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable" + }, + { + "path": "node_modules/molstar/lib/mol-util/number-packing.js", + "kind": "import-statement", + "original": "../../../mol-util/number-packing" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader-code.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader-code" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/render-item.js", + "kind": "import-statement", + "original": "../../../mol-gl/webgl/render-item" + }, + { + "path": "node_modules/molstar/lib/mol-gl/renderable/schema.js", + "kind": "import-statement", + "original": "../../../mol-gl/renderable/schema" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/gaussian-density.vert.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader/gaussian-density.vert" + }, + { + "path": "node_modules/molstar/lib/mol-gl/shader/gaussian-density.frag.js", + "kind": "import-statement", + "original": "../../../mol-gl/shader/gaussian-density.frag" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../../mol-util/debug" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/gaussian-density/cpu.js": { + "bytes": 4402, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../geometry" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/approx.js", + "kind": "import-statement", + "original": "../../approx" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/gaussian.js": { + "bytes": 4317, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/gaussian-density/gpu.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry/gaussian-density/gpu" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/gaussian-density/cpu.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry/gaussian-density/cpu" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/gaussian-surface-mesh.js": { + "bytes": 19406, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/gaussian.js", + "kind": "import-statement", + "original": "./util/gaussian" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/marching-cubes/algorithm.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/marching-cubes/algorithm" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/element.js", + "kind": "import-statement", + "original": "./util/element" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/texture-mesh/texture-mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/texture-mesh/texture-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-gl/compute/marching-cubes/isosurface.js", + "kind": "import-statement", + "original": "../../../mol-gl/compute/marching-cubes/isosurface" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-visual.js", + "kind": "import-statement", + "original": "../complex-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "./util/common" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/color-smoothing.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/color-smoothing" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/texture-mesh/color-smoothing.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/texture-mesh/color-smoothing" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../../../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-util/value-cell.js", + "kind": "import-statement", + "original": "../../../mol-util/value-cell" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/gaussian-surface-wireframe.js": { + "bytes": 2784, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/lines/lines" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/gaussian.js", + "kind": "import-statement", + "original": "./util/gaussian" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/marching-cubes/algorithm.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/marching-cubes/algorithm" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/element.js", + "kind": "import-statement", + "original": "./util/element" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation/gaussian-surface.js": { + "bytes": 2375, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/gaussian-surface-mesh.js", + "kind": "import-statement", + "original": "../visual/gaussian-surface-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-representation.js", + "kind": "import-statement", + "original": "../units-representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/gaussian-surface-wireframe.js", + "kind": "import-statement", + "original": "../visual/gaussian-surface-wireframe" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/label-text.js": { + "bytes": 7127, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/text/text-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/text/text-builder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-visual.js", + "kind": "import-statement", + "original": "../complex-visual" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/element.js", + "kind": "import-statement", + "original": "./util/element" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/boundary-helper.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry/boundary-helper" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/element.js", + "kind": "import-statement", + "original": "./util/element" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation/label.js": { + "bytes": 1594, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/label-text.js", + "kind": "import-statement", + "original": "../visual/label-text" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../../mol-util/marker-action" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/geometry/molecular-surface.js": { + "bytes": 12476, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat4.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/mat4" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../mol-geo/geometry/base" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/molecular-surface.js": { + "bytes": 2831, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/molecular-surface.js", + "kind": "import-statement", + "original": "../../../../mol-math/geometry/molecular-surface" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/molecular-surface-mesh.js": { + "bytes": 7756, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/molecular-surface.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry/molecular-surface" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/molecular-surface.js", + "kind": "import-statement", + "original": "./util/molecular-surface" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/marching-cubes/algorithm.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/marching-cubes/algorithm" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/element.js", + "kind": "import-statement", + "original": "./util/element" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "./util/common" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/color-smoothing.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/color-smoothing" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-visual.js", + "kind": "import-statement", + "original": "../complex-visual" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/molecular-surface-wireframe.js": { + "bytes": 2657, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/molecular-surface.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry/molecular-surface" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/lines/lines" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/molecular-surface.js", + "kind": "import-statement", + "original": "./util/molecular-surface" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/marching-cubes/algorithm.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/marching-cubes/algorithm" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/element.js", + "kind": "import-statement", + "original": "./util/element" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js", + "kind": "import-statement", + "original": "./util/common" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation/molecular-surface.js": { + "bytes": 2443, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/molecular-surface-mesh.js", + "kind": "import-statement", + "original": "../visual/molecular-surface-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-representation.js", + "kind": "import-statement", + "original": "../units-representation" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/molecular-surface-wireframe.js", + "kind": "import-statement", + "original": "../visual/molecular-surface-wireframe" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/orientation-ellipsoid-mesh.js": { + "bytes": 4690, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../../../mol-repr/structure/units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/ellipsoid.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/ellipsoid" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-geo/util/location-iterator.js", + "kind": "import-statement", + "original": "../../../mol-geo/util/location-iterator" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation/orientation.js": { + "bytes": 1879, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-representation.js", + "kind": "import-statement", + "original": "../units-representation" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/orientation-ellipsoid-mesh.js", + "kind": "import-statement", + "original": "../visual/orientation-ellipsoid-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-geo/geometry/points/points-builder.js": { + "bytes": 1176, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/util.js", + "kind": "import-statement", + "original": "../../../mol-data/util" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/points/points.js", + "kind": "import-statement", + "original": "./points" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/element-point.js": { + "bytes": 3289, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/points/points.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/points/points" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/points/points-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/points/points-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/element.js", + "kind": "import-statement", + "original": "./util/element" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation/point.js": { + "bytes": 1444, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/element-point.js", + "kind": "import-statement", + "original": "../visual/element-point" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-representation.js", + "kind": "import-statement", + "original": "../units-representation" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/polymer-tube-mesh.js": { + "bytes": 5791, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer.js", + "kind": "import-statement", + "original": "./util/polymer" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/tube.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/tube" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sheet.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/sheet" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/ribbon.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/ribbon" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation/putty.js": { + "bytes": 2488, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/polymer-tube-mesh.js", + "kind": "import-statement", + "original": "../visual/polymer-tube-mesh" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/polymer-gap-cylinder.js", + "kind": "import-statement", + "original": "../visual/polymer-gap-cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-representation.js", + "kind": "import-statement", + "original": "../units-representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation/spacefill.js": { + "bytes": 2259, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/element-sphere.js", + "kind": "import-statement", + "original": "../visual/element-sphere" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-representation.js", + "kind": "import-statement", + "original": "../units-representation" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/bond-intra-unit-line.js": { + "bytes": 7353, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/link.js", + "kind": "import-statement", + "original": "./util/link" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/bond.js", + "kind": "import-statement", + "original": "./util/bond" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/lines/lines" + }, + { + "path": "node_modules/molstar/lib/mol-math/graph.js", + "kind": "import-statement", + "original": "../../../mol-math/graph" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../../mol-util/array" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/bond-inter-unit-line.js": { + "bytes": 5891, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/link.js", + "kind": "import-statement", + "original": "./util/link" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-visual.js", + "kind": "import-statement", + "original": "../complex-visual" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/bond.js", + "kind": "import-statement", + "original": "./util/bond" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/lines/lines" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/element-cross.js": { + "bytes": 3387, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/element.js", + "kind": "import-statement", + "original": "./util/element" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/lines/lines" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/lines/lines-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/lines/lines-builder" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/computed/chemistry/util.js", + "kind": "import-statement", + "original": "../../../mol-model-props/computed/chemistry/util" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation/line.js": { + "bytes": 3294, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/bond-intra-unit-line.js", + "kind": "import-statement", + "original": "../visual/bond-intra-unit-line" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/bond-inter-unit-line.js", + "kind": "import-statement", + "original": "../visual/bond-inter-unit-line" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-representation.js", + "kind": "import-statement", + "original": "../units-representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-representation.js", + "kind": "import-statement", + "original": "../complex-representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/params.js", + "kind": "import-statement", + "original": "../params" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/element-point.js", + "kind": "import-statement", + "original": "../visual/element-point" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/element-cross.js", + "kind": "import-statement", + "original": "../visual/element-cross" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/points/points.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/points/points" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/gaussian-density-volume.js": { + "bytes": 6221, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/gaussian.js", + "kind": "import-statement", + "original": "./util/gaussian" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/direct-volume/direct-volume.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/direct-volume/direct-volume" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/complex-visual.js", + "kind": "import-statement", + "original": "../complex-visual" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/element.js", + "kind": "import-statement", + "original": "./util/element" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation/gaussian-volume.js": { + "bytes": 1958, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/gaussian-density-volume.js", + "kind": "import-statement", + "original": "../visual/gaussian-density-volume" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/polymer-backbone-cylinder.js": { + "bytes": 6166, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer.js", + "kind": "import-statement", + "original": "./util/polymer" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/cylinder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/model/types.js", + "kind": "import-statement", + "original": "../../../mol-model/structure/model/types" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/cylinders/cylinders" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/cylinders/cylinders-builder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer/backbone.js", + "kind": "import-statement", + "original": "./util/polymer/backbone" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/visual/polymer-backbone-sphere.js": { + "bytes": 4726, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/mesh-builder" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer.js", + "kind": "import-statement", + "original": "./util/polymer" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-visual.js", + "kind": "import-statement", + "original": "../units-visual" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/mesh/builder/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-geo/primitive/sphere.js", + "kind": "import-statement", + "original": "../../../mol-geo/primitive/sphere" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/spheres/spheres" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres-builder.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/spheres/spheres-builder" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer/backbone.js", + "kind": "import-statement", + "original": "./util/polymer/backbone" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/representation/backbone.js": { + "bytes": 2925, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/polymer-backbone-cylinder.js", + "kind": "import-statement", + "original": "../visual/polymer-backbone-cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/units-representation.js", + "kind": "import-statement", + "original": "../units-representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/polymer-backbone-sphere.js", + "kind": "import-statement", + "original": "../visual/polymer-backbone-sphere" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/visual/polymer-gap-cylinder.js", + "kind": "import-statement", + "original": "../visual/polymer-gap-cylinder" + }, + { + "path": "node_modules/molstar/lib/mol-geo/geometry/base.js", + "kind": "import-statement", + "original": "../../../mol-geo/geometry/base" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-repr/structure/registry.js": { + "bytes": 2612, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation/ball-and-stick.js", + "kind": "import-statement", + "original": "./representation/ball-and-stick" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation/carbohydrate.js", + "kind": "import-statement", + "original": "./representation/carbohydrate" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation/cartoon.js", + "kind": "import-statement", + "original": "./representation/cartoon" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation/ellipsoid.js", + "kind": "import-statement", + "original": "./representation/ellipsoid" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation/gaussian-surface.js", + "kind": "import-statement", + "original": "./representation/gaussian-surface" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation/label.js", + "kind": "import-statement", + "original": "./representation/label" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation/molecular-surface.js", + "kind": "import-statement", + "original": "./representation/molecular-surface" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation/orientation.js", + "kind": "import-statement", + "original": "./representation/orientation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation/point.js", + "kind": "import-statement", + "original": "./representation/point" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation/putty.js", + "kind": "import-statement", + "original": "./representation/putty" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation/spacefill.js", + "kind": "import-statement", + "original": "./representation/spacefill" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation/line.js", + "kind": "import-statement", + "original": "./representation/line" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation/gaussian-volume.js", + "kind": "import-statement", + "original": "./representation/gaussian-volume" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/representation/backbone.js", + "kind": "import-statement", + "original": "./representation/backbone" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/animation-loop.js": { + "bytes": 2252, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-util/now.js", + "kind": "import-statement", + "original": "../mol-util/now" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-gl/webgl/timer.js", + "kind": "import-statement", + "original": "../mol-gl/webgl/timer" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/state.js": { + "bytes": 8218, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../mol-plugin-state/objects" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior.js", + "kind": "import-statement", + "original": "./behavior" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/canvas3d.js", + "kind": "import-statement", + "original": "../mol-canvas3d/canvas3d" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "./commands" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + }, + { + "path": "node_modules/immer/dist/immer.mjs", + "kind": "import-statement", + "original": "immer" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/component.js", + "kind": "import-statement", + "original": "../mol-plugin-state/component" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "./config" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/util/substructure-parent-helper.js": { + "bytes": 3164, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/objects" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-util/rx-event-helper.js", + "kind": "import-statement", + "original": "../../mol-util/rx-event-helper" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/util/task-manager.js": { + "bytes": 3544, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/rx-event-helper.js", + "kind": "import-statement", + "original": "../../mol-util/rx-event-helper" + }, + { + "path": "node_modules/molstar/lib/mol-util/now.js", + "kind": "import-statement", + "original": "../../mol-util/now" + }, + { + "path": "node_modules/molstar/lib/mol-task/execution/observable.js", + "kind": "import-statement", + "original": "../../mol-task/execution/observable" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../../mol-util/array" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/util/toast.js": { + "bytes": 2064, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/component.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/component" + }, + { + "path": "node_modules/immutable/dist/immutable.es.js", + "kind": "import-statement", + "original": "immutable" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../commands" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/util/viewport-screenshot.js": { + "bytes": 12212, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-canvas3d/helper/camera-helper.js", + "kind": "import-statement", + "original": "../../mol-canvas3d/helper/camera-helper" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/util.js", + "kind": "import-statement", + "original": "../../mol-canvas3d/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra/3d/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/component.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/component" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/objects" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/download.js", + "kind": "import-statement", + "original": "../../mol-util/download" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/set.js", + "kind": "import-statement", + "original": "../../mol-util/set" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-state/manager/drag-and-drop.js": { + "bytes": 1595, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin-state/actions/file.js", + "kind": "import-statement", + "original": "../actions/file" + }, + { + "path": "node_modules/molstar/lib/mol-util/assets.js", + "kind": "import-statement", + "original": "../../mol-util/assets" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../mol-plugin/commands" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin/context.js": { + "bytes": 21858, + "imports": [ + { + "path": "node_modules/immer/dist/immer.mjs", + "kind": "import-statement", + "original": "immer" + }, + { + "path": "node_modules/immutable/dist/immutable.es.js", + "kind": "import-statement", + "original": "immutable" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/rxjs/dist/esm/operators/index.js", + "kind": "import-statement", + "original": "rxjs/operators" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/canvas3d.js", + "kind": "import-statement", + "original": "../mol-canvas3d/canvas3d" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/util.js", + "kind": "import-statement", + "original": "../mol-canvas3d/util" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/common/custom-property.js", + "kind": "import-statement", + "original": "../mol-model-props/common/custom-property" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/builder/data.js", + "kind": "import-statement", + "original": "../mol-plugin-state/builder/data" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/builder/structure.js", + "kind": "import-statement", + "original": "../mol-plugin-state/builder/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/formats/registry.js", + "kind": "import-statement", + "original": "../mol-plugin-state/formats/registry" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-selection-query.js", + "kind": "import-statement", + "original": "../mol-plugin-state/helpers/structure-selection-query" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/animation.js", + "kind": "import-statement", + "original": "../mol-plugin-state/manager/animation" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/camera.js", + "kind": "import-statement", + "original": "../mol-plugin-state/manager/camera" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/interactivity.js", + "kind": "import-statement", + "original": "../mol-plugin-state/manager/interactivity" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/loci-label.js", + "kind": "import-statement", + "original": "../mol-plugin-state/manager/loci-label" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/snapshots.js", + "kind": "import-statement", + "original": "../mol-plugin-state/manager/snapshots" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/structure/component.js", + "kind": "import-statement", + "original": "../mol-plugin-state/manager/structure/component" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/structure/focus.js", + "kind": "import-statement", + "original": "../mol-plugin-state/manager/structure/focus" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/structure/hierarchy.js", + "kind": "import-statement", + "original": "../mol-plugin-state/manager/structure/hierarchy" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/structure/measurement.js", + "kind": "import-statement", + "original": "../mol-plugin-state/manager/structure/measurement" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/structure/selection.js", + "kind": "import-statement", + "original": "../mol-plugin-state/manager/structure/selection" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/volume/hierarchy.js", + "kind": "import-statement", + "original": "../mol-plugin-state/manager/volume/hierarchy" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/layout.js", + "kind": "import-statement", + "original": "./layout" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-repr/structure/registry.js", + "kind": "import-statement", + "original": "../mol-repr/structure/registry" + }, + { + "path": "node_modules/molstar/lib/mol-repr/volume/registry.js", + "kind": "import-statement", + "original": "../mol-repr/volume/registry" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-task/index.js", + "kind": "import-statement", + "original": "../mol-task" + }, + { + "path": "node_modules/molstar/lib/mol-theme/color.js", + "kind": "import-statement", + "original": "../mol-theme/color" + }, + { + "path": "node_modules/molstar/lib/mol-theme/size.js", + "kind": "import-statement", + "original": "../mol-theme/size" + }, + { + "path": "node_modules/molstar/lib/mol-util/assets.js", + "kind": "import-statement", + "original": "../mol-util/assets" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/data-source.js", + "kind": "import-statement", + "original": "../mol-util/data-source" + }, + { + "path": "node_modules/molstar/lib/mol-util/debug.js", + "kind": "import-statement", + "original": "../mol-util/debug" + }, + { + "path": "node_modules/molstar/lib/mol-util/input/input-observer.js", + "kind": "import-statement", + "original": "../mol-util/input/input-observer" + }, + { + "path": "node_modules/molstar/lib/mol-util/log-entry.js", + "kind": "import-statement", + "original": "../mol-util/log-entry" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-util/rx-event-helper.js", + "kind": "import-statement", + "original": "../mol-util/rx-event-helper" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/animation-loop.js", + "kind": "import-statement", + "original": "./animation-loop" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior.js", + "kind": "import-statement", + "original": "./behavior" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/behavior.js", + "kind": "import-statement", + "original": "./behavior/behavior" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/command.js", + "kind": "import-statement", + "original": "./command" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "./commands" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "./config" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/state.js", + "kind": "import-statement", + "original": "./state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/util/substructure-parent-helper.js", + "kind": "import-statement", + "original": "./util/substructure-parent-helper" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/util/task-manager.js", + "kind": "import-statement", + "original": "./util/task-manager" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/util/toast.js", + "kind": "import-statement", + "original": "./util/toast" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/util/viewport-screenshot.js", + "kind": "import-statement", + "original": "./util/viewport-screenshot" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/version.js", + "kind": "import-statement", + "original": "./version" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/carbohydrates/constants.js", + "kind": "import-statement", + "original": "../mol-model/structure/structure/carbohydrates/constants" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/drag-and-drop.js", + "kind": "import-statement", + "original": "../mol-plugin-state/manager/drag-and-drop" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/context.js": { + "bytes": 670, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/context.js", + "kind": "import-statement", + "original": "../mol-plugin/context" + } + ], + "format": "esm" + }, + "node_modules/scheduler/cjs/scheduler.production.min.js": { + "bytes": 5854, + "imports": [], + "format": "cjs" + }, + "node_modules/scheduler/index.js": { + "bytes": 197, + "imports": [ + { + "path": "node_modules/scheduler/cjs/scheduler.production.min.js", + "kind": "require-call", + "original": "./cjs/scheduler.production.min.js" + } + ], + "format": "cjs" + }, + "node_modules/react-dom/cjs/react-dom.production.min.js": { + "bytes": 196098, + "imports": [ + { + "path": "node_modules/react/index.js", + "kind": "require-call", + "original": "react" + }, + { + "path": "node_modules/scheduler/index.js", + "kind": "require-call", + "original": "scheduler" + } + ], + "format": "cjs" + }, + "node_modules/react-dom/index.js": { + "bytes": 1349, + "imports": [ + { + "path": "node_modules/react-dom/cjs/react-dom.production.min.js", + "kind": "require-call", + "original": "./cjs/react-dom.production.min.js" + } + ], + "format": "cjs" + }, + "node_modules/react-dom/client.js": { + "bytes": 620, + "imports": [ + { + "path": "node_modules/react-dom/index.js", + "kind": "require-call", + "original": "react-dom" + } + ], + "format": "cjs" + }, + "node_modules/molstar/lib/mol-plugin-ui/react18.js": { + "bytes": 288, + "imports": [ + { + "path": "node_modules/react-dom/client.js", + "kind": "import-statement", + "original": "react-dom/client" + } + ], + "format": "esm" + }, + "node_modules/devlop/lib/default.js": { + "bytes": 130, + "imports": [], + "format": "esm" + }, + "node_modules/comma-separated-tokens/index.js": { + "bytes": 1562, + "imports": [], + "format": "esm" + }, + "node_modules/estree-util-is-identifier-name/lib/index.js": { + "bytes": 1867, + "imports": [], + "format": "esm" + }, + "node_modules/estree-util-is-identifier-name/index.js": { + "bytes": 115, + "imports": [ + { + "path": "node_modules/estree-util-is-identifier-name/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/hast-util-whitespace/lib/index.js": { + "bytes": 867, + "imports": [], + "format": "esm" + }, + "node_modules/hast-util-whitespace/index.js": { + "bytes": 44, + "imports": [ + { + "path": "node_modules/hast-util-whitespace/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/property-information/lib/util/schema.js": { + "bytes": 606, + "imports": [], + "format": "esm" + }, + "node_modules/property-information/lib/util/merge.js": { + "bytes": 607, + "imports": [ + { + "path": "node_modules/property-information/lib/util/schema.js", + "kind": "import-statement", + "original": "./schema.js" + } + ], + "format": "esm" + }, + "node_modules/property-information/lib/normalize.js": { + "bytes": 120, + "imports": [], + "format": "esm" + }, + "node_modules/property-information/lib/util/info.js": { + "bytes": 660, + "imports": [], + "format": "esm" + }, + "node_modules/property-information/lib/util/types.js": { + "bytes": 356, + "imports": [], + "format": "esm" + }, + "node_modules/property-information/lib/util/defined-info.js": { + "bytes": 988, + "imports": [ + { + "path": "node_modules/property-information/lib/util/info.js", + "kind": "import-statement", + "original": "./info.js" + }, + { + "path": "node_modules/property-information/lib/util/types.js", + "kind": "import-statement", + "original": "./types.js" + } + ], + "format": "esm" + }, + "node_modules/property-information/lib/util/create.js": { + "bytes": 1422, + "imports": [ + { + "path": "node_modules/property-information/lib/normalize.js", + "kind": "import-statement", + "original": "../normalize.js" + }, + { + "path": "node_modules/property-information/lib/util/schema.js", + "kind": "import-statement", + "original": "./schema.js" + }, + { + "path": "node_modules/property-information/lib/util/defined-info.js", + "kind": "import-statement", + "original": "./defined-info.js" + } + ], + "format": "esm" + }, + "node_modules/property-information/lib/xlink.js": { + "bytes": 346, + "imports": [ + { + "path": "node_modules/property-information/lib/util/create.js", + "kind": "import-statement", + "original": "./util/create.js" + } + ], + "format": "esm" + }, + "node_modules/property-information/lib/xml.js": { + "bytes": 244, + "imports": [ + { + "path": "node_modules/property-information/lib/util/create.js", + "kind": "import-statement", + "original": "./util/create.js" + } + ], + "format": "esm" + }, + "node_modules/property-information/lib/util/case-sensitive-transform.js": { + "bytes": 239, + "imports": [], + "format": "esm" + }, + "node_modules/property-information/lib/util/case-insensitive-transform.js": { + "bytes": 311, + "imports": [ + { + "path": "node_modules/property-information/lib/util/case-sensitive-transform.js", + "kind": "import-statement", + "original": "./case-sensitive-transform.js" + } + ], + "format": "esm" + }, + "node_modules/property-information/lib/xmlns.js": { + "bytes": 323, + "imports": [ + { + "path": "node_modules/property-information/lib/util/create.js", + "kind": "import-statement", + "original": "./util/create.js" + }, + { + "path": "node_modules/property-information/lib/util/case-insensitive-transform.js", + "kind": "import-statement", + "original": "./util/case-insensitive-transform.js" + } + ], + "format": "esm" + }, + "node_modules/property-information/lib/aria.js": { + "bytes": 1622, + "imports": [ + { + "path": "node_modules/property-information/lib/util/types.js", + "kind": "import-statement", + "original": "./util/types.js" + }, + { + "path": "node_modules/property-information/lib/util/create.js", + "kind": "import-statement", + "original": "./util/create.js" + } + ], + "format": "esm" + }, + "node_modules/property-information/lib/html.js": { + "bytes": 8844, + "imports": [ + { + "path": "node_modules/property-information/lib/util/types.js", + "kind": "import-statement", + "original": "./util/types.js" + }, + { + "path": "node_modules/property-information/lib/util/create.js", + "kind": "import-statement", + "original": "./util/create.js" + }, + { + "path": "node_modules/property-information/lib/util/case-insensitive-transform.js", + "kind": "import-statement", + "original": "./util/case-insensitive-transform.js" + } + ], + "format": "esm" + }, + "node_modules/property-information/lib/svg.js": { + "bytes": 14358, + "imports": [ + { + "path": "node_modules/property-information/lib/util/types.js", + "kind": "import-statement", + "original": "./util/types.js" + }, + { + "path": "node_modules/property-information/lib/util/create.js", + "kind": "import-statement", + "original": "./util/create.js" + }, + { + "path": "node_modules/property-information/lib/util/case-sensitive-transform.js", + "kind": "import-statement", + "original": "./util/case-sensitive-transform.js" + } + ], + "format": "esm" + }, + "node_modules/property-information/lib/find.js": { + "bytes": 1443, + "imports": [ + { + "path": "node_modules/property-information/lib/normalize.js", + "kind": "import-statement", + "original": "./normalize.js" + }, + { + "path": "node_modules/property-information/lib/util/defined-info.js", + "kind": "import-statement", + "original": "./util/defined-info.js" + }, + { + "path": "node_modules/property-information/lib/util/info.js", + "kind": "import-statement", + "original": "./util/info.js" + } + ], + "format": "esm" + }, + "node_modules/property-information/lib/hast-to-react.js": { + "bytes": 807, + "imports": [], + "format": "esm" + }, + "node_modules/property-information/index.js": { + "bytes": 697, + "imports": [ + { + "path": "node_modules/property-information/lib/util/merge.js", + "kind": "import-statement", + "original": "./lib/util/merge.js" + }, + { + "path": "node_modules/property-information/lib/xlink.js", + "kind": "import-statement", + "original": "./lib/xlink.js" + }, + { + "path": "node_modules/property-information/lib/xml.js", + "kind": "import-statement", + "original": "./lib/xml.js" + }, + { + "path": "node_modules/property-information/lib/xmlns.js", + "kind": "import-statement", + "original": "./lib/xmlns.js" + }, + { + "path": "node_modules/property-information/lib/aria.js", + "kind": "import-statement", + "original": "./lib/aria.js" + }, + { + "path": "node_modules/property-information/lib/html.js", + "kind": "import-statement", + "original": "./lib/html.js" + }, + { + "path": "node_modules/property-information/lib/svg.js", + "kind": "import-statement", + "original": "./lib/svg.js" + }, + { + "path": "node_modules/property-information/lib/find.js", + "kind": "import-statement", + "original": "./lib/find.js" + }, + { + "path": "node_modules/property-information/lib/hast-to-react.js", + "kind": "import-statement", + "original": "./lib/hast-to-react.js" + }, + { + "path": "node_modules/property-information/lib/normalize.js", + "kind": "import-statement", + "original": "./lib/normalize.js" + } + ], + "format": "esm" + }, + "node_modules/space-separated-tokens/index.js": { + "bytes": 553, + "imports": [], + "format": "esm" + }, + "node_modules/inline-style-parser/index.js": { + "bytes": 5062, + "imports": [], + "format": "cjs" + }, + "node_modules/style-to-object/cjs/index.js": { + "bytes": 1286, + "imports": [ + { + "path": "node_modules/inline-style-parser/index.js", + "kind": "require-call", + "original": "inline-style-parser" + } + ], + "format": "cjs" + }, + "node_modules/style-to-object/esm/index.mjs": { + "bytes": 146, + "imports": [ + { + "path": "node_modules/style-to-object/cjs/index.js", + "kind": "import-statement", + "original": "../cjs/index.js" + } + ], + "format": "esm" + }, + "node_modules/unist-util-position/lib/index.js": { + "bytes": 1881, + "imports": [], + "format": "esm" + }, + "node_modules/unist-util-position/index.js": { + "bytes": 64, + "imports": [ + { + "path": "node_modules/unist-util-position/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/unist-util-stringify-position/lib/index.js": { + "bytes": 2130, + "imports": [], + "format": "esm" + }, + "node_modules/unist-util-stringify-position/index.js": { + "bytes": 51, + "imports": [ + { + "path": "node_modules/unist-util-stringify-position/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/vfile-message/lib/index.js": { + "bytes": 8349, + "imports": [ + { + "path": "node_modules/unist-util-stringify-position/index.js", + "kind": "import-statement", + "original": "unist-util-stringify-position" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/vfile-message/index.js": { + "bytes": 110, + "imports": [ + { + "path": "node_modules/vfile-message/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/hast-util-to-jsx-runtime/lib/index.js": { + "bytes": 29640, + "imports": [ + { + "path": "node_modules/comma-separated-tokens/index.js", + "kind": "import-statement", + "original": "comma-separated-tokens" + }, + { + "path": "node_modules/devlop/lib/default.js", + "kind": "import-statement", + "original": "devlop" + }, + { + "path": "node_modules/estree-util-is-identifier-name/index.js", + "kind": "import-statement", + "original": "estree-util-is-identifier-name" + }, + { + "path": "node_modules/hast-util-whitespace/index.js", + "kind": "import-statement", + "original": "hast-util-whitespace" + }, + { + "path": "node_modules/property-information/index.js", + "kind": "import-statement", + "original": "property-information" + }, + { + "path": "node_modules/space-separated-tokens/index.js", + "kind": "import-statement", + "original": "space-separated-tokens" + }, + { + "path": "node_modules/style-to-object/esm/index.mjs", + "kind": "import-statement", + "original": "style-to-object" + }, + { + "path": "node_modules/unist-util-position/index.js", + "kind": "import-statement", + "original": "unist-util-position" + }, + { + "path": "node_modules/vfile-message/index.js", + "kind": "import-statement", + "original": "vfile-message" + } + ], + "format": "esm" + }, + "node_modules/hast-util-to-jsx-runtime/index.js": { + "bytes": 1004, + "imports": [ + { + "path": "node_modules/hast-util-to-jsx-runtime/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/html-url-attributes/lib/index.js": { + "bytes": 597, + "imports": [], + "format": "esm" + }, + "node_modules/html-url-attributes/index.js": { + "bytes": 757, + "imports": [ + { + "path": "node_modules/html-url-attributes/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/mdast-util-to-string/lib/index.js": { + "bytes": 2613, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-string/index.js": { + "bytes": 106, + "imports": [ + { + "path": "node_modules/mdast-util-to-string/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/decode-named-character-reference/index.dom.js": { + "bytes": 1200, + "imports": [], + "format": "esm" + }, + "node_modules/micromark-util-chunked/index.js": { + "bytes": 2334, + "imports": [], + "format": "esm" + }, + "node_modules/micromark-util-combine-extensions/index.js": { + "bytes": 3352, + "imports": [ + { + "path": "node_modules/micromark-util-chunked/index.js", + "kind": "import-statement", + "original": "micromark-util-chunked" + } + ], + "format": "esm" + }, + "node_modules/micromark-util-decode-numeric-character-reference/index.js": { + "bytes": 1061, + "imports": [], + "format": "esm" + }, + "node_modules/micromark-util-encode/index.js": { + "bytes": 673, + "imports": [], + "format": "esm" + }, + "node_modules/micromark-util-normalize-identifier/index.js": { + "bytes": 1248, + "imports": [], + "format": "esm" + }, + "node_modules/micromark-util-character/index.js": { + "bytes": 7048, + "imports": [], + "format": "esm" + }, + "node_modules/micromark-util-sanitize-uri/index.js": { + "bytes": 3159, + "imports": [ + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + }, + { + "path": "node_modules/micromark-util-encode/index.js", + "kind": "import-statement", + "original": "micromark-util-encode" + } + ], + "format": "esm" + }, + "node_modules/micromark/lib/compile.js": { + "bytes": 27187, + "imports": [ + { + "path": "node_modules/decode-named-character-reference/index.dom.js", + "kind": "import-statement", + "original": "decode-named-character-reference" + }, + { + "path": "node_modules/micromark-util-chunked/index.js", + "kind": "import-statement", + "original": "micromark-util-chunked" + }, + { + "path": "node_modules/micromark-util-combine-extensions/index.js", + "kind": "import-statement", + "original": "micromark-util-combine-extensions" + }, + { + "path": "node_modules/micromark-util-decode-numeric-character-reference/index.js", + "kind": "import-statement", + "original": "micromark-util-decode-numeric-character-reference" + }, + { + "path": "node_modules/micromark-util-encode/index.js", + "kind": "import-statement", + "original": "micromark-util-encode" + }, + { + "path": "node_modules/micromark-util-normalize-identifier/index.js", + "kind": "import-statement", + "original": "micromark-util-normalize-identifier" + }, + { + "path": "node_modules/micromark-util-sanitize-uri/index.js", + "kind": "import-statement", + "original": "micromark-util-sanitize-uri" + } + ], + "format": "esm" + }, + "node_modules/micromark-factory-space/index.js": { + "bytes": 1630, + "imports": [ + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark/lib/initialize/content.js": { + "bytes": 1900, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark/lib/initialize/document.js": { + "bytes": 11015, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + }, + { + "path": "node_modules/micromark-util-chunked/index.js", + "kind": "import-statement", + "original": "micromark-util-chunked" + } + ], + "format": "esm" + }, + "node_modules/micromark-util-classify-character/index.js": { + "bytes": 812, + "imports": [ + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-util-resolve-all/index.js": { + "bytes": 901, + "imports": [], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/attention.js": { + "bytes": 7367, + "imports": [ + { + "path": "node_modules/micromark-util-chunked/index.js", + "kind": "import-statement", + "original": "micromark-util-chunked" + }, + { + "path": "node_modules/micromark-util-classify-character/index.js", + "kind": "import-statement", + "original": "micromark-util-classify-character" + }, + { + "path": "node_modules/micromark-util-resolve-all/index.js", + "kind": "import-statement", + "original": "micromark-util-resolve-all" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/autolink.js": { + "bytes": 4956, + "imports": [ + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/blank-line.js": { + "bytes": 1304, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/block-quote.js": { + "bytes": 2902, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/character-escape.js": { + "bytes": 1312, + "imports": [ + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/character-reference.js": { + "bytes": 3483, + "imports": [ + { + "path": "node_modules/decode-named-character-reference/index.dom.js", + "kind": "import-statement", + "original": "decode-named-character-reference" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/code-fenced.js": { + "bytes": 9434, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/code-indented.js": { + "bytes": 4163, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/code-text.js": { + "bytes": 5106, + "imports": [ + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-util-subtokenize/lib/splice-buffer.js": { + "bytes": 7617, + "imports": [], + "format": "esm" + }, + "node_modules/micromark-util-subtokenize/index.js": { + "bytes": 6661, + "imports": [ + { + "path": "node_modules/micromark-util-chunked/index.js", + "kind": "import-statement", + "original": "micromark-util-chunked" + }, + { + "path": "node_modules/micromark-util-subtokenize/lib/splice-buffer.js", + "kind": "import-statement", + "original": "./lib/splice-buffer.js" + }, + { + "path": "node_modules/micromark-util-subtokenize/lib/splice-buffer.js", + "kind": "import-statement", + "original": "./lib/splice-buffer.js" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/content.js": { + "bytes": 3508, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + }, + { + "path": "node_modules/micromark-util-subtokenize/index.js", + "kind": "import-statement", + "original": "micromark-util-subtokenize" + } + ], + "format": "esm" + }, + "node_modules/micromark-factory-destination/index.js": { + "bytes": 4553, + "imports": [ + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-factory-label/index.js": { + "bytes": 3400, + "imports": [ + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-factory-title/index.js": { + "bytes": 3242, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-factory-whitespace/index.js": { + "bytes": 1265, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/definition.js": { + "bytes": 5778, + "imports": [ + { + "path": "node_modules/micromark-factory-destination/index.js", + "kind": "import-statement", + "original": "micromark-factory-destination" + }, + { + "path": "node_modules/micromark-factory-label/index.js", + "kind": "import-statement", + "original": "micromark-factory-label" + }, + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-factory-title/index.js", + "kind": "import-statement", + "original": "micromark-factory-title" + }, + { + "path": "node_modules/micromark-factory-whitespace/index.js", + "kind": "import-statement", + "original": "micromark-factory-whitespace" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + }, + { + "path": "node_modules/micromark-util-normalize-identifier/index.js", + "kind": "import-statement", + "original": "micromark-util-normalize-identifier" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/hard-break-escape.js": { + "bytes": 1123, + "imports": [ + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/heading-atx.js": { + "bytes": 4618, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + }, + { + "path": "node_modules/micromark-util-chunked/index.js", + "kind": "import-statement", + "original": "micromark-util-chunked" + } + ], + "format": "esm" + }, + "node_modules/micromark-util-html-tag-name/index.js": { + "bytes": 1555, + "imports": [], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/html-flow.js": { + "bytes": 18863, + "imports": [ + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + }, + { + "path": "node_modules/micromark-util-html-tag-name/index.js", + "kind": "import-statement", + "original": "micromark-util-html-tag-name" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/blank-line.js", + "kind": "import-statement", + "original": "./blank-line.js" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/html-text.js": { + "bytes": 13547, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/label-end.js": { + "bytes": 12649, + "imports": [ + { + "path": "node_modules/micromark-factory-destination/index.js", + "kind": "import-statement", + "original": "micromark-factory-destination" + }, + { + "path": "node_modules/micromark-factory-label/index.js", + "kind": "import-statement", + "original": "micromark-factory-label" + }, + { + "path": "node_modules/micromark-factory-title/index.js", + "kind": "import-statement", + "original": "micromark-factory-title" + }, + { + "path": "node_modules/micromark-factory-whitespace/index.js", + "kind": "import-statement", + "original": "micromark-factory-whitespace" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + }, + { + "path": "node_modules/micromark-util-chunked/index.js", + "kind": "import-statement", + "original": "micromark-util-chunked" + }, + { + "path": "node_modules/micromark-util-normalize-identifier/index.js", + "kind": "import-statement", + "original": "micromark-util-normalize-identifier" + }, + { + "path": "node_modules/micromark-util-resolve-all/index.js", + "kind": "import-statement", + "original": "micromark-util-resolve-all" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/label-start-image.js": { + "bytes": 2084, + "imports": [ + { + "path": "node_modules/micromark-core-commonmark/lib/label-end.js", + "kind": "import-statement", + "original": "./label-end.js" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/label-start-link.js": { + "bytes": 1255, + "imports": [ + { + "path": "node_modules/micromark-core-commonmark/lib/label-end.js", + "kind": "import-statement", + "original": "./label-end.js" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/line-ending.js": { + "bytes": 815, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/thematic-break.js": { + "bytes": 2056, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/list.js": { + "bytes": 6499, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/blank-line.js", + "kind": "import-statement", + "original": "./blank-line.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/thematic-break.js", + "kind": "import-statement", + "original": "./thematic-break.js" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/lib/setext-underline.js": { + "bytes": 4516, + "imports": [ + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark-core-commonmark/index.js": { + "bytes": 1151, + "imports": [ + { + "path": "node_modules/micromark-core-commonmark/lib/attention.js", + "kind": "import-statement", + "original": "./lib/attention.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/autolink.js", + "kind": "import-statement", + "original": "./lib/autolink.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/blank-line.js", + "kind": "import-statement", + "original": "./lib/blank-line.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/block-quote.js", + "kind": "import-statement", + "original": "./lib/block-quote.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/character-escape.js", + "kind": "import-statement", + "original": "./lib/character-escape.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/character-reference.js", + "kind": "import-statement", + "original": "./lib/character-reference.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/code-fenced.js", + "kind": "import-statement", + "original": "./lib/code-fenced.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/code-indented.js", + "kind": "import-statement", + "original": "./lib/code-indented.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/code-text.js", + "kind": "import-statement", + "original": "./lib/code-text.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/content.js", + "kind": "import-statement", + "original": "./lib/content.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/definition.js", + "kind": "import-statement", + "original": "./lib/definition.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/hard-break-escape.js", + "kind": "import-statement", + "original": "./lib/hard-break-escape.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/heading-atx.js", + "kind": "import-statement", + "original": "./lib/heading-atx.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/html-flow.js", + "kind": "import-statement", + "original": "./lib/html-flow.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/html-text.js", + "kind": "import-statement", + "original": "./lib/html-text.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/label-end.js", + "kind": "import-statement", + "original": "./lib/label-end.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/label-start-image.js", + "kind": "import-statement", + "original": "./lib/label-start-image.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/label-start-link.js", + "kind": "import-statement", + "original": "./lib/label-start-link.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/line-ending.js", + "kind": "import-statement", + "original": "./lib/line-ending.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/list.js", + "kind": "import-statement", + "original": "./lib/list.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/setext-underline.js", + "kind": "import-statement", + "original": "./lib/setext-underline.js" + }, + { + "path": "node_modules/micromark-core-commonmark/lib/thematic-break.js", + "kind": "import-statement", + "original": "./lib/thematic-break.js" + } + ], + "format": "esm" + }, + "node_modules/micromark/lib/initialize/flow.js": { + "bytes": 1640, + "imports": [ + { + "path": "node_modules/micromark-core-commonmark/index.js", + "kind": "import-statement", + "original": "micromark-core-commonmark" + }, + { + "path": "node_modules/micromark-factory-space/index.js", + "kind": "import-statement", + "original": "micromark-factory-space" + }, + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + } + ], + "format": "esm" + }, + "node_modules/micromark/lib/initialize/text.js": { + "bytes": 5530, + "imports": [], + "format": "esm" + }, + "node_modules/micromark/lib/create-tokenizer.js": { + "bytes": 14935, + "imports": [ + { + "path": "node_modules/micromark-util-character/index.js", + "kind": "import-statement", + "original": "micromark-util-character" + }, + { + "path": "node_modules/micromark-util-chunked/index.js", + "kind": "import-statement", + "original": "micromark-util-chunked" + }, + { + "path": "node_modules/micromark-util-resolve-all/index.js", + "kind": "import-statement", + "original": "micromark-util-resolve-all" + } + ], + "format": "esm" + }, + "node_modules/micromark/lib/constructs.js": { + "bytes": 1978, + "imports": [ + { + "path": "node_modules/micromark-core-commonmark/index.js", + "kind": "import-statement", + "original": "micromark-core-commonmark" + }, + { + "path": "node_modules/micromark/lib/initialize/text.js", + "kind": "import-statement", + "original": "./initialize/text.js" + } + ], + "format": "esm" + }, + "node_modules/micromark/lib/parse.js": { + "bytes": 1533, + "imports": [ + { + "path": "node_modules/micromark-util-combine-extensions/index.js", + "kind": "import-statement", + "original": "micromark-util-combine-extensions" + }, + { + "path": "node_modules/micromark/lib/initialize/content.js", + "kind": "import-statement", + "original": "./initialize/content.js" + }, + { + "path": "node_modules/micromark/lib/initialize/document.js", + "kind": "import-statement", + "original": "./initialize/document.js" + }, + { + "path": "node_modules/micromark/lib/initialize/flow.js", + "kind": "import-statement", + "original": "./initialize/flow.js" + }, + { + "path": "node_modules/micromark/lib/initialize/text.js", + "kind": "import-statement", + "original": "./initialize/text.js" + }, + { + "path": "node_modules/micromark/lib/create-tokenizer.js", + "kind": "import-statement", + "original": "./create-tokenizer.js" + }, + { + "path": "node_modules/micromark/lib/constructs.js", + "kind": "import-statement", + "original": "./constructs.js" + } + ], + "format": "esm" + }, + "node_modules/micromark/lib/postprocess.js": { + "bytes": 298, + "imports": [ + { + "path": "node_modules/micromark-util-subtokenize/index.js", + "kind": "import-statement", + "original": "micromark-util-subtokenize" + } + ], + "format": "esm" + }, + "node_modules/micromark/lib/preprocess.js": { + "bytes": 3038, + "imports": [], + "format": "esm" + }, + "node_modules/micromark/index.js": { + "bytes": 1947, + "imports": [ + { + "path": "node_modules/micromark/lib/compile.js", + "kind": "import-statement", + "original": "./lib/compile.js" + }, + { + "path": "node_modules/micromark/lib/parse.js", + "kind": "import-statement", + "original": "./lib/parse.js" + }, + { + "path": "node_modules/micromark/lib/postprocess.js", + "kind": "import-statement", + "original": "./lib/postprocess.js" + }, + { + "path": "node_modules/micromark/lib/preprocess.js", + "kind": "import-statement", + "original": "./lib/preprocess.js" + }, + { + "path": "node_modules/micromark/lib/compile.js", + "kind": "import-statement", + "original": "./lib/compile.js" + }, + { + "path": "node_modules/micromark/lib/parse.js", + "kind": "import-statement", + "original": "./lib/parse.js" + }, + { + "path": "node_modules/micromark/lib/postprocess.js", + "kind": "import-statement", + "original": "./lib/postprocess.js" + }, + { + "path": "node_modules/micromark/lib/preprocess.js", + "kind": "import-statement", + "original": "./lib/preprocess.js" + } + ], + "format": "esm" + }, + "node_modules/micromark-util-decode-string/index.js": { + "bytes": 1170, + "imports": [ + { + "path": "node_modules/decode-named-character-reference/index.dom.js", + "kind": "import-statement", + "original": "decode-named-character-reference" + }, + { + "path": "node_modules/micromark-util-decode-numeric-character-reference/index.js", + "kind": "import-statement", + "original": "micromark-util-decode-numeric-character-reference" + } + ], + "format": "esm" + }, + "node_modules/mdast-util-from-markdown/lib/index.js": { + "bytes": 33552, + "imports": [ + { + "path": "node_modules/mdast-util-to-string/index.js", + "kind": "import-statement", + "original": "mdast-util-to-string" + }, + { + "path": "node_modules/micromark/index.js", + "kind": "import-statement", + "original": "micromark" + }, + { + "path": "node_modules/micromark-util-decode-numeric-character-reference/index.js", + "kind": "import-statement", + "original": "micromark-util-decode-numeric-character-reference" + }, + { + "path": "node_modules/micromark-util-decode-string/index.js", + "kind": "import-statement", + "original": "micromark-util-decode-string" + }, + { + "path": "node_modules/micromark-util-normalize-identifier/index.js", + "kind": "import-statement", + "original": "micromark-util-normalize-identifier" + }, + { + "path": "node_modules/decode-named-character-reference/index.dom.js", + "kind": "import-statement", + "original": "decode-named-character-reference" + }, + { + "path": "node_modules/unist-util-stringify-position/index.js", + "kind": "import-statement", + "original": "unist-util-stringify-position" + } + ], + "format": "esm" + }, + "node_modules/mdast-util-from-markdown/index.js": { + "bytes": 89, + "imports": [ + { + "path": "node_modules/mdast-util-from-markdown/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/remark-parse/lib/index.js": { + "bytes": 1204, + "imports": [ + { + "path": "node_modules/mdast-util-from-markdown/index.js", + "kind": "import-statement", + "original": "mdast-util-from-markdown" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/remark-parse/index.js": { + "bytes": 83, + "imports": [ + { + "path": "node_modules/remark-parse/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/blockquote.js": { + "bytes": 677, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/break.js": { + "bytes": 724, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/code.js": { + "bytes": 1144, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/delete.js": { + "bytes": 639, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/emphasis.js": { + "bytes": 641, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js": { + "bytes": 1701, + "imports": [ + { + "path": "node_modules/micromark-util-sanitize-uri/index.js", + "kind": "import-statement", + "original": "micromark-util-sanitize-uri" + } + ], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/heading.js": { + "bytes": 648, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/html.js": { + "bytes": 764, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/revert.js": { + "bytes": 1338, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/image-reference.js": { + "bytes": 1234, + "imports": [ + { + "path": "node_modules/micromark-util-sanitize-uri/index.js", + "kind": "import-statement", + "original": "micromark-util-sanitize-uri" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/revert.js", + "kind": "import-statement", + "original": "../revert.js" + } + ], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/image.js": { + "bytes": 938, + "imports": [ + { + "path": "node_modules/micromark-util-sanitize-uri/index.js", + "kind": "import-statement", + "original": "micromark-util-sanitize-uri" + } + ], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/inline-code.js": { + "bytes": 821, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/link-reference.js": { + "bytes": 1222, + "imports": [ + { + "path": "node_modules/micromark-util-sanitize-uri/index.js", + "kind": "import-statement", + "original": "micromark-util-sanitize-uri" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/revert.js", + "kind": "import-statement", + "original": "../revert.js" + } + ], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/link.js": { + "bytes": 857, + "imports": [ + { + "path": "node_modules/micromark-util-sanitize-uri/index.js", + "kind": "import-statement", + "original": "micromark-util-sanitize-uri" + } + ], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/list-item.js": { + "bytes": 3236, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/list.js": { + "bytes": 1288, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/paragraph.js": { + "bytes": 645, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/root.js": { + "bytes": 653, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/strong.js": { + "bytes": 635, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/table.js": { + "bytes": 1436, + "imports": [ + { + "path": "node_modules/unist-util-position/index.js", + "kind": "import-statement", + "original": "unist-util-position" + } + ], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/table-row.js": { + "bytes": 1935, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/table-cell.js": { + "bytes": 784, + "imports": [], + "format": "esm" + }, + "node_modules/trim-lines/index.js": { + "bytes": 1523, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/text.js": { + "bytes": 647, + "imports": [ + { + "path": "node_modules/trim-lines/index.js", + "kind": "import-statement", + "original": "trim-lines" + } + ], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js": { + "bytes": 653, + "imports": [], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/handlers/index.js": { + "bytes": 1616, + "imports": [ + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/blockquote.js", + "kind": "import-statement", + "original": "./blockquote.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/break.js", + "kind": "import-statement", + "original": "./break.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/code.js", + "kind": "import-statement", + "original": "./code.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/delete.js", + "kind": "import-statement", + "original": "./delete.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/emphasis.js", + "kind": "import-statement", + "original": "./emphasis.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js", + "kind": "import-statement", + "original": "./footnote-reference.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/heading.js", + "kind": "import-statement", + "original": "./heading.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/html.js", + "kind": "import-statement", + "original": "./html.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/image-reference.js", + "kind": "import-statement", + "original": "./image-reference.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/image.js", + "kind": "import-statement", + "original": "./image.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/inline-code.js", + "kind": "import-statement", + "original": "./inline-code.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/link-reference.js", + "kind": "import-statement", + "original": "./link-reference.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/link.js", + "kind": "import-statement", + "original": "./link.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/list-item.js", + "kind": "import-statement", + "original": "./list-item.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/list.js", + "kind": "import-statement", + "original": "./list.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/paragraph.js", + "kind": "import-statement", + "original": "./paragraph.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/root.js", + "kind": "import-statement", + "original": "./root.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/strong.js", + "kind": "import-statement", + "original": "./strong.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/table.js", + "kind": "import-statement", + "original": "./table.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/table-row.js", + "kind": "import-statement", + "original": "./table-row.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/table-cell.js", + "kind": "import-statement", + "original": "./table-cell.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/text.js", + "kind": "import-statement", + "original": "./text.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js", + "kind": "import-statement", + "original": "./thematic-break.js" + } + ], + "format": "esm" + }, + "node_modules/@ungap/structured-clone/esm/types.js": { + "bytes": 269, + "imports": [], + "format": "esm" + }, + "node_modules/@ungap/structured-clone/esm/deserialize.js": { + "bytes": 2066, + "imports": [ + { + "path": "node_modules/@ungap/structured-clone/esm/types.js", + "kind": "import-statement", + "original": "./types.js" + } + ], + "format": "esm" + }, + "node_modules/@ungap/structured-clone/esm/serialize.js": { + "bytes": 4262, + "imports": [ + { + "path": "node_modules/@ungap/structured-clone/esm/types.js", + "kind": "import-statement", + "original": "./types.js" + } + ], + "format": "esm" + }, + "node_modules/@ungap/structured-clone/esm/index.js": { + "bytes": 810, + "imports": [ + { + "path": "node_modules/@ungap/structured-clone/esm/deserialize.js", + "kind": "import-statement", + "original": "./deserialize.js" + }, + { + "path": "node_modules/@ungap/structured-clone/esm/serialize.js", + "kind": "import-statement", + "original": "./serialize.js" + } + ], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/footer.js": { + "bytes": 7678, + "imports": [ + { + "path": "node_modules/@ungap/structured-clone/esm/index.js", + "kind": "import-statement", + "original": "@ungap/structured-clone" + }, + { + "path": "node_modules/micromark-util-sanitize-uri/index.js", + "kind": "import-statement", + "original": "micromark-util-sanitize-uri" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/unist-util-is/lib/index.js": { + "bytes": 7975, + "imports": [], + "format": "esm" + }, + "node_modules/unist-util-is/index.js": { + "bytes": 219, + "imports": [ + { + "path": "node_modules/unist-util-is/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/unist-util-visit-parents/lib/color.js": { + "bytes": 90, + "imports": [], + "format": "esm" + }, + "node_modules/unist-util-visit-parents/lib/index.js": { + "bytes": 11654, + "imports": [ + { + "path": "node_modules/unist-util-is/index.js", + "kind": "import-statement", + "original": "unist-util-is" + }, + { + "path": "node_modules/unist-util-visit-parents/lib/color.js", + "kind": "import-statement", + "original": "unist-util-visit-parents/do-not-use-color" + } + ], + "format": "esm" + }, + "node_modules/unist-util-visit-parents/index.js": { + "bytes": 110, + "imports": [ + { + "path": "node_modules/unist-util-visit-parents/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/unist-util-visit/lib/index.js": { + "bytes": 9627, + "imports": [ + { + "path": "node_modules/unist-util-visit-parents/index.js", + "kind": "import-statement", + "original": "unist-util-visit-parents" + }, + { + "path": "node_modules/unist-util-visit-parents/index.js", + "kind": "import-statement", + "original": "unist-util-visit-parents" + } + ], + "format": "esm" + }, + "node_modules/unist-util-visit/index.js": { + "bytes": 103, + "imports": [ + { + "path": "node_modules/unist-util-visit/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/state.js": { + "bytes": 15178, + "imports": [ + { + "path": "node_modules/@ungap/structured-clone/esm/index.js", + "kind": "import-statement", + "original": "@ungap/structured-clone" + }, + { + "path": "node_modules/unist-util-visit/index.js", + "kind": "import-statement", + "original": "unist-util-visit" + }, + { + "path": "node_modules/unist-util-position/index.js", + "kind": "import-statement", + "original": "unist-util-position" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/index.js", + "kind": "import-statement", + "original": "./handlers/index.js" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/lib/index.js": { + "bytes": 3678, + "imports": [ + { + "path": "node_modules/devlop/lib/default.js", + "kind": "import-statement", + "original": "devlop" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/footer.js", + "kind": "import-statement", + "original": "./footer.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/state.js", + "kind": "import-statement", + "original": "./state.js" + } + ], + "format": "esm" + }, + "node_modules/mdast-util-to-hast/index.js": { + "bytes": 241, + "imports": [ + { + "path": "node_modules/mdast-util-to-hast/lib/handlers/index.js", + "kind": "import-statement", + "original": "./lib/handlers/index.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + }, + { + "path": "node_modules/mdast-util-to-hast/lib/footer.js", + "kind": "import-statement", + "original": "./lib/footer.js" + } + ], + "format": "esm" + }, + "node_modules/remark-rehype/lib/index.js": { + "bytes": 5122, + "imports": [ + { + "path": "node_modules/mdast-util-to-hast/index.js", + "kind": "import-statement", + "original": "mdast-util-to-hast" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/remark-rehype/index.js": { + "bytes": 213, + "imports": [ + { + "path": "node_modules/mdast-util-to-hast/index.js", + "kind": "import-statement", + "original": "mdast-util-to-hast" + }, + { + "path": "node_modules/remark-rehype/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/bail/index.js": { + "bytes": 207, + "imports": [], + "format": "esm" + }, + "node_modules/extend/index.js": { + "bytes": 3596, + "imports": [], + "format": "cjs" + }, + "node_modules/unified/node_modules/is-plain-obj/index.js": { + "bytes": 348, + "imports": [], + "format": "esm" + }, + "node_modules/trough/lib/index.js": { + "bytes": 5016, + "imports": [], + "format": "esm" + }, + "node_modules/trough/index.js": { + "bytes": 324, + "imports": [ + { + "path": "node_modules/trough/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/vfile/lib/minpath.browser.js": { + "bytes": 11285, + "imports": [], + "format": "esm" + }, + "node_modules/vfile/lib/minproc.browser.js": { + "bytes": 230, + "imports": [], + "format": "esm" + }, + "node_modules/vfile/lib/minurl.shared.js": { + "bytes": 1041, + "imports": [], + "format": "esm" + }, + "node_modules/vfile/lib/minurl.browser.js": { + "bytes": 1802, + "imports": [ + { + "path": "node_modules/vfile/lib/minurl.shared.js", + "kind": "import-statement", + "original": "./minurl.shared.js" + }, + { + "path": "node_modules/vfile/lib/minurl.shared.js", + "kind": "import-statement", + "original": "./minurl.shared.js" + } + ], + "format": "esm" + }, + "node_modules/vfile/lib/index.js": { + "bytes": 19171, + "imports": [ + { + "path": "node_modules/vfile-message/index.js", + "kind": "import-statement", + "original": "vfile-message" + }, + { + "path": "node_modules/vfile/lib/minpath.browser.js", + "kind": "import-statement", + "original": "vfile/do-not-use-conditional-minpath" + }, + { + "path": "node_modules/vfile/lib/minproc.browser.js", + "kind": "import-statement", + "original": "vfile/do-not-use-conditional-minproc" + }, + { + "path": "node_modules/vfile/lib/minurl.browser.js", + "kind": "import-statement", + "original": "vfile/do-not-use-conditional-minurl" + } + ], + "format": "esm" + }, + "node_modules/vfile/index.js": { + "bytes": 80, + "imports": [ + { + "path": "node_modules/vfile/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/unified/lib/callable-instance.js": { + "bytes": 975, + "imports": [], + "format": "esm" + }, + "node_modules/unified/lib/index.js": { + "bytes": 40438, + "imports": [ + { + "path": "node_modules/bail/index.js", + "kind": "import-statement", + "original": "bail" + }, + { + "path": "node_modules/extend/index.js", + "kind": "import-statement", + "original": "extend" + }, + { + "path": "node_modules/devlop/lib/default.js", + "kind": "import-statement", + "original": "devlop" + }, + { + "path": "node_modules/unified/node_modules/is-plain-obj/index.js", + "kind": "import-statement", + "original": "is-plain-obj" + }, + { + "path": "node_modules/trough/index.js", + "kind": "import-statement", + "original": "trough" + }, + { + "path": "node_modules/vfile/index.js", + "kind": "import-statement", + "original": "vfile" + }, + { + "path": "node_modules/unified/lib/callable-instance.js", + "kind": "import-statement", + "original": "./callable-instance.js" + } + ], + "format": "esm" + }, + "node_modules/unified/index.js": { + "bytes": 83, + "imports": [ + { + "path": "node_modules/unified/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/react-markdown/lib/index.js": { + "bytes": 9957, + "imports": [ + { + "path": "node_modules/devlop/lib/default.js", + "kind": "import-statement", + "original": "devlop" + }, + { + "path": "node_modules/hast-util-to-jsx-runtime/index.js", + "kind": "import-statement", + "original": "hast-util-to-jsx-runtime" + }, + { + "path": "node_modules/html-url-attributes/index.js", + "kind": "import-statement", + "original": "html-url-attributes" + }, + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/remark-parse/index.js", + "kind": "import-statement", + "original": "remark-parse" + }, + { + "path": "node_modules/remark-rehype/index.js", + "kind": "import-statement", + "original": "remark-rehype" + }, + { + "path": "node_modules/unified/index.js", + "kind": "import-statement", + "original": "unified" + }, + { + "path": "node_modules/unist-util-visit/index.js", + "kind": "import-statement", + "original": "unist-util-visit" + }, + { + "path": "node_modules/vfile/index.js", + "kind": "import-statement", + "original": "vfile" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/react-markdown/index.js": { + "bytes": 400, + "imports": [ + { + "path": "node_modules/react-markdown/lib/index.js", + "kind": "import-statement", + "original": "./lib/index.js" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/state/animation.js": { + "bytes": 2345, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js", + "kind": "import-statement", + "original": "../controls/parameters" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/state/common.js": { + "bytes": 9240, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js", + "kind": "import-statement", + "original": "../controls/parameters" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/state/update-transform.js": { + "bytes": 4330, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-util/memoize.js", + "kind": "import-statement", + "original": "../../mol-util/memoize" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/generic.js": { + "bytes": 5871, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/update-transform.js", + "kind": "import-statement", + "original": "../state/update-transform" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/components.js": { + "bytes": 18674, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-representation-params.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/helpers/structure-representation-params" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/structure/component.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/manager/structure/component" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/structure/hierarchy.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/manager/structure/hierarchy" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/action-menu.js", + "kind": "import-statement", + "original": "../controls/action-menu" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js", + "kind": "import-statement", + "original": "../controls/parameters" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/update-transform.js", + "kind": "import-statement", + "original": "../state/update-transform" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/structure/generic.js", + "kind": "import-statement", + "original": "./generic" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-script/util/id-list.js": { + "bytes": 2937, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "../language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-script/runtime/query/base.js", + "kind": "import-statement", + "original": "../runtime/query/base" + }, + { + "path": "node_modules/molstar/lib/mol-data/generic.js", + "kind": "import-statement", + "original": "../../mol-data/generic" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/viewport/help.js": { + "bytes": 10103, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-util/binding.js", + "kind": "import-statement", + "original": "../../mol-util/binding" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/representation.js", + "kind": "import-statement", + "original": "../../mol-plugin/behavior/dynamic/representation" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/representation.js", + "kind": "import-statement", + "original": "../../mol-plugin/behavior/dynamic/representation" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-util/memoize.js", + "kind": "import-statement", + "original": "../../mol-util/memoize" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/selection.js": { + "bytes": 20872, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-selection-query.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/helpers/structure-selection-query" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/interactivity.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/manager/interactivity" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/structure/component.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/manager/structure/component" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../../mol-plugin/config" + }, + { + "path": "node_modules/molstar/lib/mol-script/util/id-list.js", + "kind": "import-statement", + "original": "../../mol-script/util/id-list" + }, + { + "path": "node_modules/molstar/lib/mol-util/memoize.js", + "kind": "import-statement", + "original": "../../mol-util/memoize" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../../mol-util/string" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/action-menu.js", + "kind": "import-statement", + "original": "../controls/action-menu" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js", + "kind": "import-statement", + "original": "../controls/parameters" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/viewport/help.js", + "kind": "import-statement", + "original": "../viewport/help" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/structure/components.js", + "kind": "import-statement", + "original": "./components" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/measurements.js": { + "bytes": 17230, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/structure/measurement.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/manager/structure/measurement" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../../mol-plugin/config" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/action-menu.js", + "kind": "import-statement", + "original": "../controls/action-menu" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js", + "kind": "import-statement", + "original": "../controls/parameters" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/update-transform.js", + "kind": "import-statement", + "original": "../state/update-transform" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/structure/selection.js", + "kind": "import-statement", + "original": "./selection" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/focus.js": { + "bytes": 9298, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/representation.js", + "kind": "import-statement", + "original": "../../mol-plugin/behavior/dynamic/representation" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-util/binding.js", + "kind": "import-statement", + "original": "../../mol-util/binding" + }, + { + "path": "node_modules/molstar/lib/mol-util/memoize.js", + "kind": "import-statement", + "original": "../../mol-util/memoize" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/action-menu.js", + "kind": "import-statement", + "original": "../controls/action-menu" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/source.js": { + "bytes": 14357, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/transforms" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/action-menu.js", + "kind": "import-statement", + "original": "../controls/action-menu" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js", + "kind": "import-statement", + "original": "../controls/parameters" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/update-transform.js", + "kind": "import-statement", + "original": "../state/update-transform" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/structure/focus.js", + "kind": "import-statement", + "original": "./focus" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/structure/selection.js", + "kind": "import-statement", + "original": "./selection" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/state/apply-action.js": { + "bytes": 2544, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-util/memoize.js", + "kind": "import-statement", + "original": "../../mol-util/memoize" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/common.js", + "kind": "import-statement", + "original": "./common" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/volume.js": { + "bytes": 17049, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/structure/hierarchy.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/manager/structure/hierarchy" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/volume/hierarchy.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/manager/volume/hierarchy" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/representation.js", + "kind": "import-statement", + "original": "../../mol-plugin/behavior/dynamic/representation" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/behavior.js", + "kind": "import-statement", + "original": "../../mol-plugin/behavior/dynamic/volume-streaming/behavior" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/transformers.js", + "kind": "import-statement", + "original": "../../mol-plugin/behavior/dynamic/volume-streaming/transformers" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/action-menu.js", + "kind": "import-statement", + "original": "../controls/action-menu" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/apply-action.js", + "kind": "import-statement", + "original": "../state/apply-action" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/update-transform.js", + "kind": "import-statement", + "original": "../state/update-transform" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/viewport/help.js", + "kind": "import-statement", + "original": "../viewport/help" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/volume-representation-params.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/helpers/volume-representation-params" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/color.js", + "kind": "import-statement", + "original": "../controls/color" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/matrix/evd.js": { + "bytes": 7126, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/matrix/matrix.js", + "kind": "import-statement", + "original": "./matrix" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/minimize-rmsd.js": { + "bytes": 4934, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat4.js", + "kind": "import-statement", + "original": "./mat4" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/matrix/evd.js", + "kind": "import-statement", + "original": "../matrix/evd" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/centroid-helper.js", + "kind": "import-statement", + "original": "../../../mol-math/geometry/centroid-helper" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/matrix/matrix.js", + "kind": "import-statement", + "original": "../matrix/matrix" + }, + { + "path": "node_modules/molstar/lib/mol-math/geometry/primitives/sphere3d.js", + "kind": "import-statement", + "original": "../../geometry/primitives/sphere3d" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/sequence/alignment/substitution-matrix.js": { + "bytes": 4533, + "imports": [], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/sequence/alignment/alignment.js": { + "bytes": 4668, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/sequence/alignment/substitution-matrix.js", + "kind": "import-statement", + "original": "./substitution-matrix" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/sequence/alignment/sequence.js": { + "bytes": 3699, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure/structure.js", + "kind": "import-statement", + "original": "../../structure/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/sequence/alignment/alignment.js", + "kind": "import-statement", + "original": "./alignment" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../mol-data/int" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/superposition.js": { + "bytes": 2606, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/minimize-rmsd.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra/3d/minimize-rmsd" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element.js", + "kind": "import-statement", + "original": "../element" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/sequence/alignment/sequence.js", + "kind": "import-statement", + "original": "../../../sequence/alignment/sequence" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/properties.js", + "kind": "import-statement", + "original": "../properties" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/superposition-sifts-mapping.js": { + "bytes": 5465, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra/3d/minimize-rmsd.js", + "kind": "import-statement", + "original": "../../../../mol-math/linear-algebra/3d/minimize-rmsd" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/sequence/sifts-mapping.js", + "kind": "import-statement", + "original": "../../../../mol-model-props/sequence/sifts-mapping" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/element.js", + "kind": "import-statement", + "original": "../element" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/superposition.js": { + "bytes": 19106, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-math/linear-algebra.js", + "kind": "import-statement", + "original": "../../mol-math/linear-algebra" + }, + { + "path": "node_modules/molstar/lib/mol-model-props/sequence/sifts-mapping.js", + "kind": "import-statement", + "original": "../../mol-model-props/sequence/sifts-mapping" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/util/superposition.js", + "kind": "import-statement", + "original": "../../mol-model/structure/structure/util/superposition" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure/structure/util/superposition-sifts-mapping.js", + "kind": "import-statement", + "original": "../../mol-model/structure/structure/util/superposition-sifts-mapping" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/helpers/structure-selection-query.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/helpers/structure-selection-query" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/objects" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../../mol-plugin/config" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/string.js", + "kind": "import-statement", + "original": "../../mol-util/string" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js", + "kind": "import-statement", + "original": "../controls/parameters" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/structure/selection.js", + "kind": "import-statement", + "original": "./selection" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/quick-styles.js": { + "bytes": 5266, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/builder/structure/representation-preset.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/builder/structure/representation-preset" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/passes/postprocessing.js", + "kind": "import-statement", + "original": "../../mol-canvas3d/passes/postprocessing" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../../mol-plugin/config" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/manager/structure/component.js", + "kind": "import-statement", + "original": "../../mol-plugin-state/manager/structure/component" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/controls.js": { + "bytes": 14776, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/react-markdown/index.js", + "kind": "import-statement", + "original": "react-markdown" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/actions/structure.js", + "kind": "import-statement", + "original": "../mol-plugin-state/actions/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/transforms.js", + "kind": "import-statement", + "original": "../mol-plugin-state/transforms" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "./base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "./controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "./controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/animation.js", + "kind": "import-statement", + "original": "./state/animation" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/structure/components.js", + "kind": "import-statement", + "original": "./structure/components" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/structure/measurements.js", + "kind": "import-statement", + "original": "./structure/measurements" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/structure/selection.js", + "kind": "import-statement", + "original": "./structure/selection" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/structure/source.js", + "kind": "import-statement", + "original": "./structure/source" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/structure/volume.js", + "kind": "import-statement", + "original": "./structure/volume" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../mol-plugin/config" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/structure/superposition.js", + "kind": "import-statement", + "original": "./structure/superposition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/structure/quick-styles.js", + "kind": "import-statement", + "original": "./structure/quick-styles" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/state/actions.js": { + "bytes": 1945, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/apply-action.js", + "kind": "import-statement", + "original": "./apply-action" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/state/snapshots.js": { + "bytes": 21690, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/immutable/dist/immutable.es.js", + "kind": "import-statement", + "original": "immutable" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../../mol-plugin/config" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/state.js", + "kind": "import-statement", + "original": "../../mol-plugin/state" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-util/now.js", + "kind": "import-statement", + "original": "../../mol-util/now" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/url.js", + "kind": "import-statement", + "original": "../../mol-util/url" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js", + "kind": "import-statement", + "original": "../controls/parameters" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/state/tree.js": { + "bytes": 14279, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/rxjs/dist/esm/operators/index.js", + "kind": "import-statement", + "original": "rxjs/operators" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-state/tree/spine.js", + "kind": "import-statement", + "original": "../../mol-state/tree/spine" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/action-menu.js", + "kind": "import-statement", + "original": "../controls/action-menu" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/apply-action.js", + "kind": "import-statement", + "original": "./apply-action" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/update-transform.js", + "kind": "import-statement", + "original": "./update-transform" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/left-panel.js": { + "bytes": 9519, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/canvas3d.js", + "kind": "import-statement", + "original": "../mol-canvas3d/canvas3d" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "./base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "./controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "./controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js", + "kind": "import-statement", + "original": "./controls/parameters" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/actions.js", + "kind": "import-statement", + "original": "./state/actions" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/snapshots.js", + "kind": "import-statement", + "original": "./state/snapshots" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/tree.js", + "kind": "import-statement", + "original": "./state/tree" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/viewport/help.js", + "kind": "import-statement", + "original": "./viewport/help" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/sequence/sequence.js": { + "bytes": 10948, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/rxjs/dist/esm/operators/index.js", + "kind": "import-statement", + "original": "rxjs/operators" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-repr/representation.js", + "kind": "import-statement", + "original": "../../mol-repr/representation" + }, + { + "path": "node_modules/molstar/lib/mol-util/input/input-observer.js", + "kind": "import-statement", + "original": "../../mol-util/input/input-observer" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/sequence/wrapper.js": { + "bytes": 719, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-model/loci.js", + "kind": "import-statement", + "original": "../../mol-model/loci" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/sequence/polymer.js": { + "bytes": 4902, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/sequence/wrapper.js", + "kind": "import-statement", + "original": "./wrapper" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/sequence/hetero.js": { + "bytes": 3535, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/sequence/wrapper.js", + "kind": "import-statement", + "original": "./wrapper" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/sequence/chain.js": { + "bytes": 2763, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/sequence/wrapper.js", + "kind": "import-statement", + "original": "./wrapper" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/sequence/element.js": { + "bytes": 2675, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/sequence/wrapper.js", + "kind": "import-statement", + "original": "./wrapper" + }, + { + "path": "node_modules/molstar/lib/mol-data/int.js", + "kind": "import-statement", + "original": "../../mol-data/int" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/names.js", + "kind": "import-statement", + "original": "../../mol-util/color/names" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../../mol-util/marker-action" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/sequence.js": { + "bytes": 17244, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "./base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/objects.js", + "kind": "import-statement", + "original": "../mol-plugin-state/objects" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/sequence/sequence.js", + "kind": "import-statement", + "original": "./sequence/sequence" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "../mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/sequence/polymer.js", + "kind": "import-statement", + "original": "./sequence/polymer" + }, + { + "path": "node_modules/molstar/lib/mol-util/marker-action.js", + "kind": "import-statement", + "original": "../mol-util/marker-action" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js", + "kind": "import-statement", + "original": "./controls/parameters" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/sequence/hetero.js", + "kind": "import-statement", + "original": "./sequence/hetero" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/sequence/chain.js", + "kind": "import-statement", + "original": "./sequence/chain" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/sequence/element.js", + "kind": "import-statement", + "original": "./sequence/element" + }, + { + "path": "node_modules/molstar/lib/mol-theme/label.js", + "kind": "import-statement", + "original": "../mol-theme/label" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "./controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-util/array.js", + "kind": "import-statement", + "original": "../mol-util/array" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/hooks/use-behavior.js": { + "bytes": 1176, + "imports": [ + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/task.js": { + "bytes": 3903, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "./base" + }, + { + "path": "node_modules/immutable/dist/immutable.es.js", + "kind": "import-statement", + "original": "immutable" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "./controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "./controls/icons" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/hooks/use-behavior.js", + "kind": "import-statement", + "original": "./hooks/use-behavior" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/toast.js": { + "bytes": 2141, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "./base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "./controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "./controls/icons" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/viewport/canvas.js": { + "bytes": 2383, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/screenshot.js": { + "bytes": 13697, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/hooks/use-behavior.js", + "kind": "import-statement", + "original": "../hooks/use-behavior" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/viewport/screenshot.js": { + "bytes": 5912, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "../controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "../controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js", + "kind": "import-statement", + "original": "../controls/parameters" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/screenshot.js", + "kind": "import-statement", + "original": "../controls/screenshot" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/hooks/use-behavior.js", + "kind": "import-statement", + "original": "../hooks/use-behavior" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/state/snapshots.js", + "kind": "import-statement", + "original": "../state/snapshots" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-util/param-mapping.js": { + "bytes": 563, + "imports": [ + { + "path": "node_modules/immer/dist/immer.mjs", + "kind": "import-statement", + "original": "immer" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/viewport/simple-settings.js": { + "bytes": 7643, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/immer/dist/immer.mjs", + "kind": "import-statement", + "original": "immer" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-canvas3d/canvas3d.js", + "kind": "import-statement", + "original": "../../mol-canvas3d/canvas3d" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../../mol-plugin/config" + }, + { + "path": "node_modules/molstar/lib/mol-state/index.js", + "kind": "import-statement", + "original": "../../mol-state" + }, + { + "path": "node_modules/molstar/lib/mol-util/color/index.js", + "kind": "import-statement", + "original": "../../mol-util/color" + }, + { + "path": "node_modules/molstar/lib/mol-util/object.js", + "kind": "import-statement", + "original": "../../mol-util/object" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-definition.js", + "kind": "import-statement", + "original": "../../mol-util/param-definition" + }, + { + "path": "node_modules/molstar/lib/mol-util/param-mapping.js", + "kind": "import-statement", + "original": "../../mol-util/param-mapping" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "../base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js", + "kind": "import-statement", + "original": "../controls/parameters" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/viewport/help.js", + "kind": "import-statement", + "original": "./help" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/viewport.js": { + "bytes": 7617, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/config.js", + "kind": "import-statement", + "original": "../mol-plugin/config" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "./base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/common.js", + "kind": "import-statement", + "original": "./controls/common" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js", + "kind": "import-statement", + "original": "./controls/icons" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/structure/selection.js", + "kind": "import-statement", + "original": "./structure/selection" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/viewport/canvas.js", + "kind": "import-statement", + "original": "./viewport/canvas" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/viewport/screenshot.js", + "kind": "import-statement", + "original": "./viewport/screenshot" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/viewport/simple-settings.js", + "kind": "import-statement", + "original": "./viewport/simple-settings" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/plugin.js": { + "bytes": 11685, + "imports": [ + { + "path": "node_modules/react/jsx-runtime.js", + "kind": "import-statement", + "original": "react/jsx-runtime" + }, + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-util/index.js", + "kind": "import-statement", + "original": "../mol-util" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/base.js", + "kind": "import-statement", + "original": "./base" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/controls.js", + "kind": "import-statement", + "original": "./controls" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/left-panel.js", + "kind": "import-statement", + "original": "./left-panel" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/sequence.js", + "kind": "import-statement", + "original": "./sequence" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/task.js", + "kind": "import-statement", + "original": "./task" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/toast.js", + "kind": "import-statement", + "original": "./toast" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/viewport.js", + "kind": "import-statement", + "original": "./viewport" + }, + { + "path": "node_modules/molstar/lib/mol-plugin/commands.js", + "kind": "import-statement", + "original": "../mol-plugin/commands" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-state/actions/file.js", + "kind": "import-statement", + "original": "../mol-plugin-state/actions/file" + }, + { + "path": "node_modules/molstar/lib/mol-util/assets.js", + "kind": "import-statement", + "original": "../mol-util/assets" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/hooks/use-behavior.js", + "kind": "import-statement", + "original": "./hooks/use-behavior" + } + ], + "format": "esm" + }, + "node_modules/molstar/lib/mol-plugin-ui/index.js": { + "bytes": 846, + "imports": [ + { + "path": "node_modules/react/index.js", + "kind": "import-statement", + "original": "react" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/plugin.js", + "kind": "import-statement", + "original": "./plugin" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/context.js", + "kind": "import-statement", + "original": "./context" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/spec.js", + "kind": "import-statement", + "original": "./spec" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "projects/ngx-structure-viewer/src/lib/molstar.ts": { + "bytes": 1852, + "imports": [ + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "molstar/lib/mol-model/structure" + }, + { + "path": "node_modules/molstar/lib/mol-script/language/builder.js", + "kind": "import-statement", + "original": "molstar/lib/mol-script/language/builder" + }, + { + "path": "node_modules/molstar/lib/mol-theme/overpaint.js", + "kind": "import-statement", + "original": "molstar/lib/mol-theme/overpaint" + }, + { + "path": "node_modules/molstar/lib/mol-script/script.js", + "kind": "import-statement", + "original": "molstar/lib/mol-script/script" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/spec.js", + "kind": "import-statement", + "original": "molstar/lib/mol-plugin-ui/spec" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/context.js", + "kind": "import-statement", + "original": "molstar/lib/mol-plugin-ui/context" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/react18.js", + "kind": "import-statement", + "original": "molstar/lib/mol-plugin-ui/react18" + }, + { + "path": "node_modules/molstar/lib/mol-plugin-ui/index.js", + "kind": "import-statement", + "original": "molstar/lib/mol-plugin-ui" + }, + { + "path": "node_modules/molstar/lib/mol-util/assets.js", + "kind": "import-statement", + "original": "molstar/lib/mol-util/assets" + } + ], + "format": "esm" + }, + "projects/ngx-structure-viewer/src/lib/services/molstar.service.ts": { + "bytes": 811, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/molstar.ts", + "kind": "dynamic-import", + "original": "../molstar" + } + ], + "format": "esm" + }, + "projects/ngx-structure-viewer/src/lib/services/plugin.service.ts": { + "bytes": 1886, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/molstar.service.ts", + "kind": "import-statement", + "original": "./molstar.service" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "projects/ngx-structure-viewer/src/lib/services/structure.service.ts": { + "bytes": 5899, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/molstar/lib/mol-model/structure.js", + "kind": "import-statement", + "original": "molstar/lib/mol-model/structure" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/molstar.service.ts", + "kind": "import-statement", + "original": "./molstar.service" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/plugin.service.ts", + "kind": "import-statement", + "original": "./plugin.service" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "projects/ngx-structure-viewer/src/lib/services/settings.service.ts": { + "bytes": 1900, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/colors.ts", + "kind": "import-statement", + "original": "../colors" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/plugin.service.ts", + "kind": "import-statement", + "original": "./plugin.service" + } + ], + "format": "esm" + }, + "projects/ngx-structure-viewer/src/lib/services/representation.service.ts": { + "bytes": 3911, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/colors.ts", + "kind": "import-statement", + "original": "../colors" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/structure.service.ts", + "kind": "import-statement", + "original": "./structure.service" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/settings.service.ts", + "kind": "import-statement", + "original": "./settings.service" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/molstar.service.ts", + "kind": "import-statement", + "original": "./molstar.service" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/plugin.service.ts", + "kind": "import-statement", + "original": "./plugin.service" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts": { + "bytes": 89491, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/representation.service.ts", + "kind": "import-statement", + "original": "./services/representation.service" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/structure.service.ts", + "kind": "import-statement", + "original": "./services/structure.service" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/settings.service.ts", + "kind": "import-statement", + "original": "./services/settings.service" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/molstar.service.ts", + "kind": "import-statement", + "original": "./services/molstar.service" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/plugin.service.ts", + "kind": "import-statement", + "original": "./services/plugin.service" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/representation.service.ts", + "kind": "import-statement", + "original": "./services/representation.service" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/structure.service.ts", + "kind": "import-statement", + "original": "./services/structure.service" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/settings.service.ts", + "kind": "import-statement", + "original": "./services/settings.service" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/molstar.service.ts", + "kind": "import-statement", + "original": "./services/molstar.service" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/services/plugin.service.ts", + "kind": "import-statement", + "original": "./services/plugin.service" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.ts": { + "bytes": 2991, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts", + "kind": "import-statement", + "original": "../../../../ngx-structure-viewer/src/lib/ngx-structure-viewer.component" + } + ], + "format": "esm" + }, + "projects/ngx-structure-viewer/src/public-api.ts": { + "bytes": 243, + "imports": [ + { + "path": "projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts", + "kind": "import-statement", + "original": "./lib/ngx-structure-viewer.component" + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.module.ts": { + "bytes": 1349, + "imports": [ + { + "path": "projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.ts", + "kind": "import-statement", + "original": "./page-structure-viewer.component" + }, + { + "path": "projects/ngx-structure-viewer/src/public-api.ts", + "kind": "import-statement", + "original": "@ngx-structure-viewer" + }, + { + "path": "node_modules/@angular/common/fesm2022/http.mjs", + "kind": "import-statement", + "original": "@angular/common/http" + }, + { + "path": "node_modules/@angular/router/fesm2022/router.mjs", + "kind": "import-statement", + "original": "@angular/router" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + } + ], + "format": "esm" + }, + "projects/ngx-features-viewer/src/lib/ngx-features-viewer.directive.ts": { + "bytes": 1039, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/ascending.js": { + "bytes": 126, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/descending.js": { + "bytes": 127, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/bisector.js": { + "bytes": 1556, + "imports": [ + { + "path": "node_modules/d3-array/src/ascending.js", + "kind": "import-statement", + "original": "./ascending.js" + }, + { + "path": "node_modules/d3-array/src/descending.js", + "kind": "import-statement", + "original": "./descending.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/number.js": { + "bytes": 463, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/bisect.js": { + "bytes": 335, + "imports": [ + { + "path": "node_modules/d3-array/src/ascending.js", + "kind": "import-statement", + "original": "./ascending.js" + }, + { + "path": "node_modules/d3-array/src/bisector.js", + "kind": "import-statement", + "original": "./bisector.js" + }, + { + "path": "node_modules/d3-array/src/number.js", + "kind": "import-statement", + "original": "./number.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/blur.js": { + "bytes": 4106, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/count.js": { + "bytes": 423, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/cross.js": { + "bytes": 867, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/cumsum.js": { + "bytes": 210, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/variance.js": { + "bytes": 667, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/deviation.js": { + "bytes": 162, + "imports": [ + { + "path": "node_modules/d3-array/src/variance.js", + "kind": "import-statement", + "original": "./variance.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/extent.js": { + "bytes": 722, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/fsum.js": { + "bytes": 1602, + "imports": [], + "format": "esm" + }, + "node_modules/internmap/src/index.js": { + "bytes": 1687, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/identity.js": { + "bytes": 51, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/group.js": { + "bytes": 1706, + "imports": [ + { + "path": "node_modules/internmap/src/index.js", + "kind": "import-statement", + "original": "internmap" + }, + { + "path": "node_modules/d3-array/src/identity.js", + "kind": "import-statement", + "original": "./identity.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/permute.js": { + "bytes": 96, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/sort.js": { + "bytes": 1247, + "imports": [ + { + "path": "node_modules/d3-array/src/ascending.js", + "kind": "import-statement", + "original": "./ascending.js" + }, + { + "path": "node_modules/d3-array/src/permute.js", + "kind": "import-statement", + "original": "./permute.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/groupSort.js": { + "bytes": 412, + "imports": [ + { + "path": "node_modules/d3-array/src/ascending.js", + "kind": "import-statement", + "original": "./ascending.js" + }, + { + "path": "node_modules/d3-array/src/group.js", + "kind": "import-statement", + "original": "./group.js" + }, + { + "path": "node_modules/d3-array/src/sort.js", + "kind": "import-statement", + "original": "./sort.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/array.js": { + "bytes": 88, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/constant.js": { + "bytes": 57, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/ticks.js": { + "bytes": 1945, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/nice.js": { + "bytes": 535, + "imports": [ + { + "path": "node_modules/d3-array/src/ticks.js", + "kind": "import-statement", + "original": "./ticks.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/threshold/sturges.js": { + "bytes": 158, + "imports": [ + { + "path": "node_modules/d3-array/src/count.js", + "kind": "import-statement", + "original": "../count.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/bin.js": { + "bytes": 4050, + "imports": [ + { + "path": "node_modules/d3-array/src/array.js", + "kind": "import-statement", + "original": "./array.js" + }, + { + "path": "node_modules/d3-array/src/bisect.js", + "kind": "import-statement", + "original": "./bisect.js" + }, + { + "path": "node_modules/d3-array/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-array/src/extent.js", + "kind": "import-statement", + "original": "./extent.js" + }, + { + "path": "node_modules/d3-array/src/identity.js", + "kind": "import-statement", + "original": "./identity.js" + }, + { + "path": "node_modules/d3-array/src/nice.js", + "kind": "import-statement", + "original": "./nice.js" + }, + { + "path": "node_modules/d3-array/src/ticks.js", + "kind": "import-statement", + "original": "./ticks.js" + }, + { + "path": "node_modules/d3-array/src/threshold/sturges.js", + "kind": "import-statement", + "original": "./threshold/sturges.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/max.js": { + "bytes": 477, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/maxIndex.js": { + "bytes": 557, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/min.js": { + "bytes": 477, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/minIndex.js": { + "bytes": 557, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/quickselect.js": { + "bytes": 1547, + "imports": [ + { + "path": "node_modules/d3-array/src/sort.js", + "kind": "import-statement", + "original": "./sort.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/greatest.js": { + "bytes": 633, + "imports": [ + { + "path": "node_modules/d3-array/src/ascending.js", + "kind": "import-statement", + "original": "./ascending.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/quantile.js": { + "bytes": 1750, + "imports": [ + { + "path": "node_modules/d3-array/src/max.js", + "kind": "import-statement", + "original": "./max.js" + }, + { + "path": "node_modules/d3-array/src/maxIndex.js", + "kind": "import-statement", + "original": "./maxIndex.js" + }, + { + "path": "node_modules/d3-array/src/min.js", + "kind": "import-statement", + "original": "./min.js" + }, + { + "path": "node_modules/d3-array/src/minIndex.js", + "kind": "import-statement", + "original": "./minIndex.js" + }, + { + "path": "node_modules/d3-array/src/quickselect.js", + "kind": "import-statement", + "original": "./quickselect.js" + }, + { + "path": "node_modules/d3-array/src/number.js", + "kind": "import-statement", + "original": "./number.js" + }, + { + "path": "node_modules/d3-array/src/sort.js", + "kind": "import-statement", + "original": "./sort.js" + }, + { + "path": "node_modules/d3-array/src/greatest.js", + "kind": "import-statement", + "original": "./greatest.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/threshold/freedmanDiaconis.js": { + "bytes": 305, + "imports": [ + { + "path": "node_modules/d3-array/src/count.js", + "kind": "import-statement", + "original": "../count.js" + }, + { + "path": "node_modules/d3-array/src/quantile.js", + "kind": "import-statement", + "original": "../quantile.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/threshold/scott.js": { + "bytes": 262, + "imports": [ + { + "path": "node_modules/d3-array/src/count.js", + "kind": "import-statement", + "original": "../count.js" + }, + { + "path": "node_modules/d3-array/src/deviation.js", + "kind": "import-statement", + "original": "../deviation.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/mean.js": { + "bytes": 482, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/median.js": { + "bytes": 244, + "imports": [ + { + "path": "node_modules/d3-array/src/quantile.js", + "kind": "import-statement", + "original": "./quantile.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/merge.js": { + "bytes": 163, + "imports": [ + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/mode.js": { + "bytes": 708, + "imports": [ + { + "path": "node_modules/internmap/src/index.js", + "kind": "import-statement", + "original": "internmap" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/pairs.js": { + "bytes": 305, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/range.js": { + "bytes": 342, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/rank.js": { + "bytes": 926, + "imports": [ + { + "path": "node_modules/d3-array/src/ascending.js", + "kind": "import-statement", + "original": "./ascending.js" + }, + { + "path": "node_modules/d3-array/src/sort.js", + "kind": "import-statement", + "original": "./sort.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/least.js": { + "bytes": 630, + "imports": [ + { + "path": "node_modules/d3-array/src/ascending.js", + "kind": "import-statement", + "original": "./ascending.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/leastIndex.js": { + "bytes": 449, + "imports": [ + { + "path": "node_modules/d3-array/src/ascending.js", + "kind": "import-statement", + "original": "./ascending.js" + }, + { + "path": "node_modules/d3-array/src/minIndex.js", + "kind": "import-statement", + "original": "./minIndex.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/greatestIndex.js": { + "bytes": 452, + "imports": [ + { + "path": "node_modules/d3-array/src/ascending.js", + "kind": "import-statement", + "original": "./ascending.js" + }, + { + "path": "node_modules/d3-array/src/maxIndex.js", + "kind": "import-statement", + "original": "./maxIndex.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/scan.js": { + "bytes": 176, + "imports": [ + { + "path": "node_modules/d3-array/src/leastIndex.js", + "kind": "import-statement", + "original": "./leastIndex.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/shuffle.js": { + "bytes": 335, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/sum.js": { + "bytes": 361, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/transpose.js": { + "bytes": 366, + "imports": [ + { + "path": "node_modules/d3-array/src/min.js", + "kind": "import-statement", + "original": "./min.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/zip.js": { + "bytes": 104, + "imports": [ + { + "path": "node_modules/d3-array/src/transpose.js", + "kind": "import-statement", + "original": "./transpose.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/every.js": { + "bytes": 264, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/some.js": { + "bytes": 262, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/filter.js": { + "bytes": 290, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/map.js": { + "bytes": 309, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/reduce.js": { + "bytes": 497, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/reverse.js": { + "bytes": 182, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/difference.js": { + "bytes": 250, + "imports": [ + { + "path": "node_modules/internmap/src/index.js", + "kind": "import-statement", + "original": "internmap" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/disjoint.js": { + "bytes": 426, + "imports": [ + { + "path": "node_modules/internmap/src/index.js", + "kind": "import-statement", + "original": "internmap" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/intersection.js": { + "bytes": 445, + "imports": [ + { + "path": "node_modules/internmap/src/index.js", + "kind": "import-statement", + "original": "internmap" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/superset.js": { + "bytes": 550, + "imports": [], + "format": "esm" + }, + "node_modules/d3-array/src/subset.js": { + "bytes": 121, + "imports": [ + { + "path": "node_modules/d3-array/src/superset.js", + "kind": "import-statement", + "original": "./superset.js" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/union.js": { + "bytes": 217, + "imports": [ + { + "path": "node_modules/internmap/src/index.js", + "kind": "import-statement", + "original": "internmap" + } + ], + "format": "esm" + }, + "node_modules/d3-array/src/index.js": { + "bytes": 3171, + "imports": [ + { + "path": "node_modules/d3-array/src/bisect.js", + "kind": "import-statement", + "original": "./bisect.js" + }, + { + "path": "node_modules/d3-array/src/ascending.js", + "kind": "import-statement", + "original": "./ascending.js" + }, + { + "path": "node_modules/d3-array/src/bisector.js", + "kind": "import-statement", + "original": "./bisector.js" + }, + { + "path": "node_modules/d3-array/src/blur.js", + "kind": "import-statement", + "original": "./blur.js" + }, + { + "path": "node_modules/d3-array/src/count.js", + "kind": "import-statement", + "original": "./count.js" + }, + { + "path": "node_modules/d3-array/src/cross.js", + "kind": "import-statement", + "original": "./cross.js" + }, + { + "path": "node_modules/d3-array/src/cumsum.js", + "kind": "import-statement", + "original": "./cumsum.js" + }, + { + "path": "node_modules/d3-array/src/descending.js", + "kind": "import-statement", + "original": "./descending.js" + }, + { + "path": "node_modules/d3-array/src/deviation.js", + "kind": "import-statement", + "original": "./deviation.js" + }, + { + "path": "node_modules/d3-array/src/extent.js", + "kind": "import-statement", + "original": "./extent.js" + }, + { + "path": "node_modules/d3-array/src/fsum.js", + "kind": "import-statement", + "original": "./fsum.js" + }, + { + "path": "node_modules/d3-array/src/group.js", + "kind": "import-statement", + "original": "./group.js" + }, + { + "path": "node_modules/d3-array/src/groupSort.js", + "kind": "import-statement", + "original": "./groupSort.js" + }, + { + "path": "node_modules/d3-array/src/bin.js", + "kind": "import-statement", + "original": "./bin.js" + }, + { + "path": "node_modules/d3-array/src/threshold/freedmanDiaconis.js", + "kind": "import-statement", + "original": "./threshold/freedmanDiaconis.js" + }, + { + "path": "node_modules/d3-array/src/threshold/scott.js", + "kind": "import-statement", + "original": "./threshold/scott.js" + }, + { + "path": "node_modules/d3-array/src/threshold/sturges.js", + "kind": "import-statement", + "original": "./threshold/sturges.js" + }, + { + "path": "node_modules/d3-array/src/max.js", + "kind": "import-statement", + "original": "./max.js" + }, + { + "path": "node_modules/d3-array/src/maxIndex.js", + "kind": "import-statement", + "original": "./maxIndex.js" + }, + { + "path": "node_modules/d3-array/src/mean.js", + "kind": "import-statement", + "original": "./mean.js" + }, + { + "path": "node_modules/d3-array/src/median.js", + "kind": "import-statement", + "original": "./median.js" + }, + { + "path": "node_modules/d3-array/src/merge.js", + "kind": "import-statement", + "original": "./merge.js" + }, + { + "path": "node_modules/d3-array/src/min.js", + "kind": "import-statement", + "original": "./min.js" + }, + { + "path": "node_modules/d3-array/src/minIndex.js", + "kind": "import-statement", + "original": "./minIndex.js" + }, + { + "path": "node_modules/d3-array/src/mode.js", + "kind": "import-statement", + "original": "./mode.js" + }, + { + "path": "node_modules/d3-array/src/nice.js", + "kind": "import-statement", + "original": "./nice.js" + }, + { + "path": "node_modules/d3-array/src/pairs.js", + "kind": "import-statement", + "original": "./pairs.js" + }, + { + "path": "node_modules/d3-array/src/permute.js", + "kind": "import-statement", + "original": "./permute.js" + }, + { + "path": "node_modules/d3-array/src/quantile.js", + "kind": "import-statement", + "original": "./quantile.js" + }, + { + "path": "node_modules/d3-array/src/quickselect.js", + "kind": "import-statement", + "original": "./quickselect.js" + }, + { + "path": "node_modules/d3-array/src/range.js", + "kind": "import-statement", + "original": "./range.js" + }, + { + "path": "node_modules/d3-array/src/rank.js", + "kind": "import-statement", + "original": "./rank.js" + }, + { + "path": "node_modules/d3-array/src/least.js", + "kind": "import-statement", + "original": "./least.js" + }, + { + "path": "node_modules/d3-array/src/leastIndex.js", + "kind": "import-statement", + "original": "./leastIndex.js" + }, + { + "path": "node_modules/d3-array/src/greatest.js", + "kind": "import-statement", + "original": "./greatest.js" + }, + { + "path": "node_modules/d3-array/src/greatestIndex.js", + "kind": "import-statement", + "original": "./greatestIndex.js" + }, + { + "path": "node_modules/d3-array/src/scan.js", + "kind": "import-statement", + "original": "./scan.js" + }, + { + "path": "node_modules/d3-array/src/shuffle.js", + "kind": "import-statement", + "original": "./shuffle.js" + }, + { + "path": "node_modules/d3-array/src/sum.js", + "kind": "import-statement", + "original": "./sum.js" + }, + { + "path": "node_modules/d3-array/src/ticks.js", + "kind": "import-statement", + "original": "./ticks.js" + }, + { + "path": "node_modules/d3-array/src/transpose.js", + "kind": "import-statement", + "original": "./transpose.js" + }, + { + "path": "node_modules/d3-array/src/variance.js", + "kind": "import-statement", + "original": "./variance.js" + }, + { + "path": "node_modules/d3-array/src/zip.js", + "kind": "import-statement", + "original": "./zip.js" + }, + { + "path": "node_modules/d3-array/src/every.js", + "kind": "import-statement", + "original": "./every.js" + }, + { + "path": "node_modules/d3-array/src/some.js", + "kind": "import-statement", + "original": "./some.js" + }, + { + "path": "node_modules/d3-array/src/filter.js", + "kind": "import-statement", + "original": "./filter.js" + }, + { + "path": "node_modules/d3-array/src/map.js", + "kind": "import-statement", + "original": "./map.js" + }, + { + "path": "node_modules/d3-array/src/reduce.js", + "kind": "import-statement", + "original": "./reduce.js" + }, + { + "path": "node_modules/d3-array/src/reverse.js", + "kind": "import-statement", + "original": "./reverse.js" + }, + { + "path": "node_modules/d3-array/src/sort.js", + "kind": "import-statement", + "original": "./sort.js" + }, + { + "path": "node_modules/d3-array/src/difference.js", + "kind": "import-statement", + "original": "./difference.js" + }, + { + "path": "node_modules/d3-array/src/disjoint.js", + "kind": "import-statement", + "original": "./disjoint.js" + }, + { + "path": "node_modules/d3-array/src/intersection.js", + "kind": "import-statement", + "original": "./intersection.js" + }, + { + "path": "node_modules/d3-array/src/subset.js", + "kind": "import-statement", + "original": "./subset.js" + }, + { + "path": "node_modules/d3-array/src/superset.js", + "kind": "import-statement", + "original": "./superset.js" + }, + { + "path": "node_modules/d3-array/src/union.js", + "kind": "import-statement", + "original": "./union.js" + }, + { + "path": "node_modules/internmap/src/index.js", + "kind": "import-statement", + "original": "internmap" + } + ], + "format": "esm" + }, + "node_modules/d3-axis/src/identity.js": { + "bytes": 43, + "imports": [], + "format": "esm" + }, + "node_modules/d3-axis/src/axis.js": { + "bytes": 5203, + "imports": [ + { + "path": "node_modules/d3-axis/src/identity.js", + "kind": "import-statement", + "original": "./identity.js" + } + ], + "format": "esm" + }, + "node_modules/d3-axis/src/index.js": { + "bytes": 69, + "imports": [ + { + "path": "node_modules/d3-axis/src/axis.js", + "kind": "import-statement", + "original": "./axis.js" + } + ], + "format": "esm" + }, + "node_modules/d3-dispatch/src/dispatch.js": { + "bytes": 2768, + "imports": [], + "format": "esm" + }, + "node_modules/d3-dispatch/src/index.js": { + "bytes": 52, + "imports": [ + { + "path": "node_modules/d3-dispatch/src/dispatch.js", + "kind": "import-statement", + "original": "./dispatch.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/namespaces.js": { + "bytes": 252, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/namespace.js": { + "bytes": 366, + "imports": [ + { + "path": "node_modules/d3-selection/src/namespaces.js", + "kind": "import-statement", + "original": "./namespaces.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/creator.js": { + "bytes": 639, + "imports": [ + { + "path": "node_modules/d3-selection/src/namespace.js", + "kind": "import-statement", + "original": "./namespace.js" + }, + { + "path": "node_modules/d3-selection/src/namespaces.js", + "kind": "import-statement", + "original": "./namespaces.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/selector.js": { + "bytes": 152, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/select.js": { + "bytes": 658, + "imports": [ + { + "path": "node_modules/d3-selection/src/selection/index.js", + "kind": "import-statement", + "original": "./index.js" + }, + { + "path": "node_modules/d3-selection/src/selector.js", + "kind": "import-statement", + "original": "../selector.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/array.js": { + "bytes": 567, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selectorAll.js": { + "bytes": 171, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/selectAll.js": { + "bytes": 726, + "imports": [ + { + "path": "node_modules/d3-selection/src/selection/index.js", + "kind": "import-statement", + "original": "./index.js" + }, + { + "path": "node_modules/d3-selection/src/array.js", + "kind": "import-statement", + "original": "../array.js" + }, + { + "path": "node_modules/d3-selection/src/selectorAll.js", + "kind": "import-statement", + "original": "../selectorAll.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/matcher.js": { + "bytes": 211, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/selectChild.js": { + "bytes": 396, + "imports": [ + { + "path": "node_modules/d3-selection/src/matcher.js", + "kind": "import-statement", + "original": "../matcher.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/selectChildren.js": { + "bytes": 414, + "imports": [ + { + "path": "node_modules/d3-selection/src/matcher.js", + "kind": "import-statement", + "original": "../matcher.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/filter.js": { + "bytes": 551, + "imports": [ + { + "path": "node_modules/d3-selection/src/selection/index.js", + "kind": "import-statement", + "original": "./index.js" + }, + { + "path": "node_modules/d3-selection/src/matcher.js", + "kind": "import-statement", + "original": "../matcher.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/sparse.js": { + "bytes": 71, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/enter.js": { + "bytes": 825, + "imports": [ + { + "path": "node_modules/d3-selection/src/selection/sparse.js", + "kind": "import-statement", + "original": "./sparse.js" + }, + { + "path": "node_modules/d3-selection/src/selection/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/constant.js": { + "bytes": 73, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/data.js": { + "bytes": 4144, + "imports": [ + { + "path": "node_modules/d3-selection/src/selection/index.js", + "kind": "import-statement", + "original": "./index.js" + }, + { + "path": "node_modules/d3-selection/src/selection/enter.js", + "kind": "import-statement", + "original": "./enter.js" + }, + { + "path": "node_modules/d3-selection/src/constant.js", + "kind": "import-statement", + "original": "../constant.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/exit.js": { + "bytes": 183, + "imports": [ + { + "path": "node_modules/d3-selection/src/selection/sparse.js", + "kind": "import-statement", + "original": "./sparse.js" + }, + { + "path": "node_modules/d3-selection/src/selection/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/join.js": { + "bytes": 516, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/merge.js": { + "bytes": 643, + "imports": [ + { + "path": "node_modules/d3-selection/src/selection/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/order.js": { + "bytes": 378, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/sort.js": { + "bytes": 681, + "imports": [ + { + "path": "node_modules/d3-selection/src/selection/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/call.js": { + "bytes": 134, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/nodes.js": { + "bytes": 57, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/node.js": { + "bytes": 256, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/size.js": { + "bytes": 134, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/empty.js": { + "bytes": 53, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/each.js": { + "bytes": 287, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/attr.js": { + "bytes": 1408, + "imports": [ + { + "path": "node_modules/d3-selection/src/namespace.js", + "kind": "import-statement", + "original": "../namespace.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/window.js": { + "bytes": 206, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/style.js": { + "bytes": 910, + "imports": [ + { + "path": "node_modules/d3-selection/src/window.js", + "kind": "import-statement", + "original": "../window.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/property.js": { + "bytes": 570, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/classed.js": { + "bytes": 1745, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/text.js": { + "bytes": 485, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/html.js": { + "bytes": 477, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/raise.js": { + "bytes": 137, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/lower.js": { + "bytes": 170, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/append.js": { + "bytes": 238, + "imports": [ + { + "path": "node_modules/d3-selection/src/creator.js", + "kind": "import-statement", + "original": "../creator.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/insert.js": { + "bytes": 471, + "imports": [ + { + "path": "node_modules/d3-selection/src/creator.js", + "kind": "import-statement", + "original": "../creator.js" + }, + { + "path": "node_modules/d3-selection/src/selector.js", + "kind": "import-statement", + "original": "../selector.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/remove.js": { + "bytes": 152, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/clone.js": { + "bytes": 459, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/datum.js": { + "bytes": 120, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/on.js": { + "bytes": 2099, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/dispatch.js": { + "bytes": 871, + "imports": [ + { + "path": "node_modules/d3-selection/src/window.js", + "kind": "import-statement", + "original": "../window.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/iterator.js": { + "bytes": 231, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/selection/index.js": { + "bytes": 2798, + "imports": [ + { + "path": "node_modules/d3-selection/src/selection/select.js", + "kind": "import-statement", + "original": "./select.js" + }, + { + "path": "node_modules/d3-selection/src/selection/selectAll.js", + "kind": "import-statement", + "original": "./selectAll.js" + }, + { + "path": "node_modules/d3-selection/src/selection/selectChild.js", + "kind": "import-statement", + "original": "./selectChild.js" + }, + { + "path": "node_modules/d3-selection/src/selection/selectChildren.js", + "kind": "import-statement", + "original": "./selectChildren.js" + }, + { + "path": "node_modules/d3-selection/src/selection/filter.js", + "kind": "import-statement", + "original": "./filter.js" + }, + { + "path": "node_modules/d3-selection/src/selection/data.js", + "kind": "import-statement", + "original": "./data.js" + }, + { + "path": "node_modules/d3-selection/src/selection/enter.js", + "kind": "import-statement", + "original": "./enter.js" + }, + { + "path": "node_modules/d3-selection/src/selection/exit.js", + "kind": "import-statement", + "original": "./exit.js" + }, + { + "path": "node_modules/d3-selection/src/selection/join.js", + "kind": "import-statement", + "original": "./join.js" + }, + { + "path": "node_modules/d3-selection/src/selection/merge.js", + "kind": "import-statement", + "original": "./merge.js" + }, + { + "path": "node_modules/d3-selection/src/selection/order.js", + "kind": "import-statement", + "original": "./order.js" + }, + { + "path": "node_modules/d3-selection/src/selection/sort.js", + "kind": "import-statement", + "original": "./sort.js" + }, + { + "path": "node_modules/d3-selection/src/selection/call.js", + "kind": "import-statement", + "original": "./call.js" + }, + { + "path": "node_modules/d3-selection/src/selection/nodes.js", + "kind": "import-statement", + "original": "./nodes.js" + }, + { + "path": "node_modules/d3-selection/src/selection/node.js", + "kind": "import-statement", + "original": "./node.js" + }, + { + "path": "node_modules/d3-selection/src/selection/size.js", + "kind": "import-statement", + "original": "./size.js" + }, + { + "path": "node_modules/d3-selection/src/selection/empty.js", + "kind": "import-statement", + "original": "./empty.js" + }, + { + "path": "node_modules/d3-selection/src/selection/each.js", + "kind": "import-statement", + "original": "./each.js" + }, + { + "path": "node_modules/d3-selection/src/selection/attr.js", + "kind": "import-statement", + "original": "./attr.js" + }, + { + "path": "node_modules/d3-selection/src/selection/style.js", + "kind": "import-statement", + "original": "./style.js" + }, + { + "path": "node_modules/d3-selection/src/selection/property.js", + "kind": "import-statement", + "original": "./property.js" + }, + { + "path": "node_modules/d3-selection/src/selection/classed.js", + "kind": "import-statement", + "original": "./classed.js" + }, + { + "path": "node_modules/d3-selection/src/selection/text.js", + "kind": "import-statement", + "original": "./text.js" + }, + { + "path": "node_modules/d3-selection/src/selection/html.js", + "kind": "import-statement", + "original": "./html.js" + }, + { + "path": "node_modules/d3-selection/src/selection/raise.js", + "kind": "import-statement", + "original": "./raise.js" + }, + { + "path": "node_modules/d3-selection/src/selection/lower.js", + "kind": "import-statement", + "original": "./lower.js" + }, + { + "path": "node_modules/d3-selection/src/selection/append.js", + "kind": "import-statement", + "original": "./append.js" + }, + { + "path": "node_modules/d3-selection/src/selection/insert.js", + "kind": "import-statement", + "original": "./insert.js" + }, + { + "path": "node_modules/d3-selection/src/selection/remove.js", + "kind": "import-statement", + "original": "./remove.js" + }, + { + "path": "node_modules/d3-selection/src/selection/clone.js", + "kind": "import-statement", + "original": "./clone.js" + }, + { + "path": "node_modules/d3-selection/src/selection/datum.js", + "kind": "import-statement", + "original": "./datum.js" + }, + { + "path": "node_modules/d3-selection/src/selection/on.js", + "kind": "import-statement", + "original": "./on.js" + }, + { + "path": "node_modules/d3-selection/src/selection/dispatch.js", + "kind": "import-statement", + "original": "./dispatch.js" + }, + { + "path": "node_modules/d3-selection/src/selection/iterator.js", + "kind": "import-statement", + "original": "./iterator.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/select.js": { + "bytes": 251, + "imports": [ + { + "path": "node_modules/d3-selection/src/selection/index.js", + "kind": "import-statement", + "original": "./selection/index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/create.js": { + "bytes": 167, + "imports": [ + { + "path": "node_modules/d3-selection/src/creator.js", + "kind": "import-statement", + "original": "./creator.js" + }, + { + "path": "node_modules/d3-selection/src/select.js", + "kind": "import-statement", + "original": "./select.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/local.js": { + "bytes": 538, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/sourceEvent.js": { + "bytes": 133, + "imports": [], + "format": "esm" + }, + "node_modules/d3-selection/src/pointer.js": { + "bytes": 695, + "imports": [ + { + "path": "node_modules/d3-selection/src/sourceEvent.js", + "kind": "import-statement", + "original": "./sourceEvent.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/pointers.js": { + "bytes": 398, + "imports": [ + { + "path": "node_modules/d3-selection/src/pointer.js", + "kind": "import-statement", + "original": "./pointer.js" + }, + { + "path": "node_modules/d3-selection/src/sourceEvent.js", + "kind": "import-statement", + "original": "./sourceEvent.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/selectAll.js": { + "bytes": 289, + "imports": [ + { + "path": "node_modules/d3-selection/src/array.js", + "kind": "import-statement", + "original": "./array.js" + }, + { + "path": "node_modules/d3-selection/src/selection/index.js", + "kind": "import-statement", + "original": "./selection/index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-selection/src/index.js": { + "bytes": 799, + "imports": [ + { + "path": "node_modules/d3-selection/src/create.js", + "kind": "import-statement", + "original": "./create.js" + }, + { + "path": "node_modules/d3-selection/src/creator.js", + "kind": "import-statement", + "original": "./creator.js" + }, + { + "path": "node_modules/d3-selection/src/local.js", + "kind": "import-statement", + "original": "./local.js" + }, + { + "path": "node_modules/d3-selection/src/matcher.js", + "kind": "import-statement", + "original": "./matcher.js" + }, + { + "path": "node_modules/d3-selection/src/namespace.js", + "kind": "import-statement", + "original": "./namespace.js" + }, + { + "path": "node_modules/d3-selection/src/namespaces.js", + "kind": "import-statement", + "original": "./namespaces.js" + }, + { + "path": "node_modules/d3-selection/src/pointer.js", + "kind": "import-statement", + "original": "./pointer.js" + }, + { + "path": "node_modules/d3-selection/src/pointers.js", + "kind": "import-statement", + "original": "./pointers.js" + }, + { + "path": "node_modules/d3-selection/src/select.js", + "kind": "import-statement", + "original": "./select.js" + }, + { + "path": "node_modules/d3-selection/src/selectAll.js", + "kind": "import-statement", + "original": "./selectAll.js" + }, + { + "path": "node_modules/d3-selection/src/selection/index.js", + "kind": "import-statement", + "original": "./selection/index.js" + }, + { + "path": "node_modules/d3-selection/src/selector.js", + "kind": "import-statement", + "original": "./selector.js" + }, + { + "path": "node_modules/d3-selection/src/selectorAll.js", + "kind": "import-statement", + "original": "./selectorAll.js" + }, + { + "path": "node_modules/d3-selection/src/selection/style.js", + "kind": "import-statement", + "original": "./selection/style.js" + }, + { + "path": "node_modules/d3-selection/src/window.js", + "kind": "import-statement", + "original": "./window.js" + } + ], + "format": "esm" + }, + "node_modules/d3-drag/src/noevent.js": { + "bytes": 404, + "imports": [], + "format": "esm" + }, + "node_modules/d3-drag/src/nodrag.js": { + "bytes": 929, + "imports": [ + { + "path": "node_modules/d3-selection/src/index.js", + "kind": "import-statement", + "original": "d3-selection" + }, + { + "path": "node_modules/d3-drag/src/noevent.js", + "kind": "import-statement", + "original": "./noevent.js" + } + ], + "format": "esm" + }, + "node_modules/d3-drag/src/constant.js": { + "bytes": 30, + "imports": [], + "format": "esm" + }, + "node_modules/d3-drag/src/event.js": { + "bytes": 1242, + "imports": [], + "format": "esm" + }, + "node_modules/d3-drag/src/drag.js": { + "bytes": 5499, + "imports": [ + { + "path": "node_modules/d3-dispatch/src/index.js", + "kind": "import-statement", + "original": "d3-dispatch" + }, + { + "path": "node_modules/d3-selection/src/index.js", + "kind": "import-statement", + "original": "d3-selection" + }, + { + "path": "node_modules/d3-drag/src/nodrag.js", + "kind": "import-statement", + "original": "./nodrag.js" + }, + { + "path": "node_modules/d3-drag/src/noevent.js", + "kind": "import-statement", + "original": "./noevent.js" + }, + { + "path": "node_modules/d3-drag/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-drag/src/event.js", + "kind": "import-statement", + "original": "./event.js" + } + ], + "format": "esm" + }, + "node_modules/d3-drag/src/index.js": { + "bytes": 121, + "imports": [ + { + "path": "node_modules/d3-drag/src/drag.js", + "kind": "import-statement", + "original": "./drag.js" + }, + { + "path": "node_modules/d3-drag/src/nodrag.js", + "kind": "import-statement", + "original": "./nodrag.js" + } + ], + "format": "esm" + }, + "node_modules/d3-color/src/define.js": { + "bytes": 339, + "imports": [], + "format": "esm" + }, + "node_modules/d3-color/src/color.js": { + "bytes": 10831, + "imports": [ + { + "path": "node_modules/d3-color/src/define.js", + "kind": "import-statement", + "original": "./define.js" + } + ], + "format": "esm" + }, + "node_modules/d3-color/src/math.js": { + "bytes": 75, + "imports": [], + "format": "esm" + }, + "node_modules/d3-color/src/lab.js": { + "bytes": 3544, + "imports": [ + { + "path": "node_modules/d3-color/src/define.js", + "kind": "import-statement", + "original": "./define.js" + }, + { + "path": "node_modules/d3-color/src/color.js", + "kind": "import-statement", + "original": "./color.js" + }, + { + "path": "node_modules/d3-color/src/math.js", + "kind": "import-statement", + "original": "./math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-color/src/cubehelix.js": { + "bytes": 1772, + "imports": [ + { + "path": "node_modules/d3-color/src/define.js", + "kind": "import-statement", + "original": "./define.js" + }, + { + "path": "node_modules/d3-color/src/color.js", + "kind": "import-statement", + "original": "./color.js" + }, + { + "path": "node_modules/d3-color/src/math.js", + "kind": "import-statement", + "original": "./math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-color/src/index.js": { + "bytes": 170, + "imports": [ + { + "path": "node_modules/d3-color/src/color.js", + "kind": "import-statement", + "original": "./color.js" + }, + { + "path": "node_modules/d3-color/src/lab.js", + "kind": "import-statement", + "original": "./lab.js" + }, + { + "path": "node_modules/d3-color/src/cubehelix.js", + "kind": "import-statement", + "original": "./cubehelix.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/basis.js": { + "bytes": 576, + "imports": [], + "format": "esm" + }, + "node_modules/d3-interpolate/src/basisClosed.js": { + "bytes": 357, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/basis.js", + "kind": "import-statement", + "original": "./basis.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/constant.js": { + "bytes": 30, + "imports": [], + "format": "esm" + }, + "node_modules/d3-interpolate/src/color.js": { + "bytes": 697, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/rgb.js": { + "bytes": 1289, + "imports": [ + { + "path": "node_modules/d3-color/src/index.js", + "kind": "import-statement", + "original": "d3-color" + }, + { + "path": "node_modules/d3-interpolate/src/basis.js", + "kind": "import-statement", + "original": "./basis.js" + }, + { + "path": "node_modules/d3-interpolate/src/basisClosed.js", + "kind": "import-statement", + "original": "./basisClosed.js" + }, + { + "path": "node_modules/d3-interpolate/src/color.js", + "kind": "import-statement", + "original": "./color.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/numberArray.js": { + "bytes": 328, + "imports": [], + "format": "esm" + }, + "node_modules/d3-interpolate/src/array.js": { + "bytes": 531, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/value.js", + "kind": "import-statement", + "original": "./value.js" + }, + { + "path": "node_modules/d3-interpolate/src/numberArray.js", + "kind": "import-statement", + "original": "./numberArray.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/date.js": { + "bytes": 147, + "imports": [], + "format": "esm" + }, + "node_modules/d3-interpolate/src/number.js": { + "bytes": 111, + "imports": [], + "format": "esm" + }, + "node_modules/d3-interpolate/src/object.js": { + "bytes": 386, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/value.js", + "kind": "import-statement", + "original": "./value.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/string.js": { + "bytes": 1768, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/number.js", + "kind": "import-statement", + "original": "./number.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/value.js": { + "bytes": 765, + "imports": [ + { + "path": "node_modules/d3-color/src/index.js", + "kind": "import-statement", + "original": "d3-color" + }, + { + "path": "node_modules/d3-interpolate/src/rgb.js", + "kind": "import-statement", + "original": "./rgb.js" + }, + { + "path": "node_modules/d3-interpolate/src/array.js", + "kind": "import-statement", + "original": "./array.js" + }, + { + "path": "node_modules/d3-interpolate/src/date.js", + "kind": "import-statement", + "original": "./date.js" + }, + { + "path": "node_modules/d3-interpolate/src/number.js", + "kind": "import-statement", + "original": "./number.js" + }, + { + "path": "node_modules/d3-interpolate/src/object.js", + "kind": "import-statement", + "original": "./object.js" + }, + { + "path": "node_modules/d3-interpolate/src/string.js", + "kind": "import-statement", + "original": "./string.js" + }, + { + "path": "node_modules/d3-interpolate/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-interpolate/src/numberArray.js", + "kind": "import-statement", + "original": "./numberArray.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/discrete.js": { + "bytes": 155, + "imports": [], + "format": "esm" + }, + "node_modules/d3-interpolate/src/hue.js": { + "bytes": 180, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/color.js", + "kind": "import-statement", + "original": "./color.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/round.js": { + "bytes": 123, + "imports": [], + "format": "esm" + }, + "node_modules/d3-interpolate/src/transform/decompose.js": { + "bytes": 670, + "imports": [], + "format": "esm" + }, + "node_modules/d3-interpolate/src/transform/parse.js": { + "bytes": 680, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/transform/decompose.js", + "kind": "import-statement", + "original": "./decompose.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/transform/index.js": { + "bytes": 2228, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/number.js", + "kind": "import-statement", + "original": "../number.js" + }, + { + "path": "node_modules/d3-interpolate/src/transform/parse.js", + "kind": "import-statement", + "original": "./parse.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/zoom.js": { + "bytes": 1576, + "imports": [], + "format": "esm" + }, + "node_modules/d3-interpolate/src/hsl.js": { + "bytes": 548, + "imports": [ + { + "path": "node_modules/d3-color/src/index.js", + "kind": "import-statement", + "original": "d3-color" + }, + { + "path": "node_modules/d3-interpolate/src/color.js", + "kind": "import-statement", + "original": "./color.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/lab.js": { + "bytes": 445, + "imports": [ + { + "path": "node_modules/d3-color/src/index.js", + "kind": "import-statement", + "original": "d3-color" + }, + { + "path": "node_modules/d3-interpolate/src/color.js", + "kind": "import-statement", + "original": "./color.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/hcl.js": { + "bytes": 548, + "imports": [ + { + "path": "node_modules/d3-color/src/index.js", + "kind": "import-statement", + "original": "d3-color" + }, + { + "path": "node_modules/d3-interpolate/src/color.js", + "kind": "import-statement", + "original": "./color.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/cubehelix.js": { + "bytes": 754, + "imports": [ + { + "path": "node_modules/d3-color/src/index.js", + "kind": "import-statement", + "original": "d3-color" + }, + { + "path": "node_modules/d3-interpolate/src/color.js", + "kind": "import-statement", + "original": "./color.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/piecewise.js": { + "bytes": 440, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/value.js", + "kind": "import-statement", + "original": "./value.js" + } + ], + "format": "esm" + }, + "node_modules/d3-interpolate/src/quantize.js": { + "bytes": 163, + "imports": [], + "format": "esm" + }, + "node_modules/d3-interpolate/src/index.js": { + "bytes": 1438, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/value.js", + "kind": "import-statement", + "original": "./value.js" + }, + { + "path": "node_modules/d3-interpolate/src/array.js", + "kind": "import-statement", + "original": "./array.js" + }, + { + "path": "node_modules/d3-interpolate/src/basis.js", + "kind": "import-statement", + "original": "./basis.js" + }, + { + "path": "node_modules/d3-interpolate/src/basisClosed.js", + "kind": "import-statement", + "original": "./basisClosed.js" + }, + { + "path": "node_modules/d3-interpolate/src/date.js", + "kind": "import-statement", + "original": "./date.js" + }, + { + "path": "node_modules/d3-interpolate/src/discrete.js", + "kind": "import-statement", + "original": "./discrete.js" + }, + { + "path": "node_modules/d3-interpolate/src/hue.js", + "kind": "import-statement", + "original": "./hue.js" + }, + { + "path": "node_modules/d3-interpolate/src/number.js", + "kind": "import-statement", + "original": "./number.js" + }, + { + "path": "node_modules/d3-interpolate/src/numberArray.js", + "kind": "import-statement", + "original": "./numberArray.js" + }, + { + "path": "node_modules/d3-interpolate/src/object.js", + "kind": "import-statement", + "original": "./object.js" + }, + { + "path": "node_modules/d3-interpolate/src/round.js", + "kind": "import-statement", + "original": "./round.js" + }, + { + "path": "node_modules/d3-interpolate/src/string.js", + "kind": "import-statement", + "original": "./string.js" + }, + { + "path": "node_modules/d3-interpolate/src/transform/index.js", + "kind": "import-statement", + "original": "./transform/index.js" + }, + { + "path": "node_modules/d3-interpolate/src/zoom.js", + "kind": "import-statement", + "original": "./zoom.js" + }, + { + "path": "node_modules/d3-interpolate/src/rgb.js", + "kind": "import-statement", + "original": "./rgb.js" + }, + { + "path": "node_modules/d3-interpolate/src/hsl.js", + "kind": "import-statement", + "original": "./hsl.js" + }, + { + "path": "node_modules/d3-interpolate/src/lab.js", + "kind": "import-statement", + "original": "./lab.js" + }, + { + "path": "node_modules/d3-interpolate/src/hcl.js", + "kind": "import-statement", + "original": "./hcl.js" + }, + { + "path": "node_modules/d3-interpolate/src/cubehelix.js", + "kind": "import-statement", + "original": "./cubehelix.js" + }, + { + "path": "node_modules/d3-interpolate/src/piecewise.js", + "kind": "import-statement", + "original": "./piecewise.js" + }, + { + "path": "node_modules/d3-interpolate/src/quantize.js", + "kind": "import-statement", + "original": "./quantize.js" + } + ], + "format": "esm" + }, + "node_modules/d3-timer/src/timer.js": { + "bytes": 2907, + "imports": [], + "format": "esm" + }, + "node_modules/d3-timer/src/timeout.js": { + "bytes": 249, + "imports": [ + { + "path": "node_modules/d3-timer/src/timer.js", + "kind": "import-statement", + "original": "./timer.js" + } + ], + "format": "esm" + }, + "node_modules/d3-timer/src/interval.js": { + "bytes": 540, + "imports": [ + { + "path": "node_modules/d3-timer/src/timer.js", + "kind": "import-statement", + "original": "./timer.js" + } + ], + "format": "esm" + }, + "node_modules/d3-timer/src/index.js": { + "bytes": 156, + "imports": [ + { + "path": "node_modules/d3-timer/src/timer.js", + "kind": "import-statement", + "original": "./timer.js" + }, + { + "path": "node_modules/d3-timer/src/timeout.js", + "kind": "import-statement", + "original": "./timeout.js" + }, + { + "path": "node_modules/d3-timer/src/interval.js", + "kind": "import-statement", + "original": "./interval.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/schedule.js": { + "bytes": 4608, + "imports": [ + { + "path": "node_modules/d3-dispatch/src/index.js", + "kind": "import-statement", + "original": "d3-dispatch" + }, + { + "path": "node_modules/d3-timer/src/index.js", + "kind": "import-statement", + "original": "d3-timer" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/interrupt.js": { + "bytes": 681, + "imports": [ + { + "path": "node_modules/d3-transition/src/transition/schedule.js", + "kind": "import-statement", + "original": "./transition/schedule.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/selection/interrupt.js": { + "bytes": 141, + "imports": [ + { + "path": "node_modules/d3-transition/src/interrupt.js", + "kind": "import-statement", + "original": "../interrupt.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/tween.js": { + "bytes": 2052, + "imports": [ + { + "path": "node_modules/d3-transition/src/transition/schedule.js", + "kind": "import-statement", + "original": "./schedule.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/interpolate.js": { + "bytes": 325, + "imports": [ + { + "path": "node_modules/d3-color/src/index.js", + "kind": "import-statement", + "original": "d3-color" + }, + { + "path": "node_modules/d3-interpolate/src/index.js", + "kind": "import-statement", + "original": "d3-interpolate" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/attr.js": { + "bytes": 2592, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/index.js", + "kind": "import-statement", + "original": "d3-interpolate" + }, + { + "path": "node_modules/d3-selection/src/index.js", + "kind": "import-statement", + "original": "d3-selection" + }, + { + "path": "node_modules/d3-transition/src/transition/tween.js", + "kind": "import-statement", + "original": "./tween.js" + }, + { + "path": "node_modules/d3-transition/src/transition/interpolate.js", + "kind": "import-statement", + "original": "./interpolate.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/attrTween.js": { + "bytes": 1149, + "imports": [ + { + "path": "node_modules/d3-selection/src/index.js", + "kind": "import-statement", + "original": "d3-selection" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/delay.js": { + "bytes": 481, + "imports": [ + { + "path": "node_modules/d3-transition/src/transition/schedule.js", + "kind": "import-statement", + "original": "./schedule.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/duration.js": { + "bytes": 499, + "imports": [ + { + "path": "node_modules/d3-transition/src/transition/schedule.js", + "kind": "import-statement", + "original": "./schedule.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/ease.js": { + "bytes": 341, + "imports": [ + { + "path": "node_modules/d3-transition/src/transition/schedule.js", + "kind": "import-statement", + "original": "./schedule.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/easeVarying.js": { + "bytes": 362, + "imports": [ + { + "path": "node_modules/d3-transition/src/transition/schedule.js", + "kind": "import-statement", + "original": "./schedule.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/filter.js": { + "bytes": 578, + "imports": [ + { + "path": "node_modules/d3-selection/src/index.js", + "kind": "import-statement", + "original": "d3-selection" + }, + { + "path": "node_modules/d3-transition/src/transition/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/merge.js": { + "bytes": 656, + "imports": [ + { + "path": "node_modules/d3-transition/src/transition/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/on.js": { + "bytes": 849, + "imports": [ + { + "path": "node_modules/d3-transition/src/transition/schedule.js", + "kind": "import-statement", + "original": "./schedule.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/remove.js": { + "bytes": 284, + "imports": [], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/select.js": { + "bytes": 832, + "imports": [ + { + "path": "node_modules/d3-selection/src/index.js", + "kind": "import-statement", + "original": "d3-selection" + }, + { + "path": "node_modules/d3-transition/src/transition/index.js", + "kind": "import-statement", + "original": "./index.js" + }, + { + "path": "node_modules/d3-transition/src/transition/schedule.js", + "kind": "import-statement", + "original": "./schedule.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/selectAll.js": { + "bytes": 889, + "imports": [ + { + "path": "node_modules/d3-selection/src/index.js", + "kind": "import-statement", + "original": "d3-selection" + }, + { + "path": "node_modules/d3-transition/src/transition/index.js", + "kind": "import-statement", + "original": "./index.js" + }, + { + "path": "node_modules/d3-transition/src/transition/schedule.js", + "kind": "import-statement", + "original": "./schedule.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/selection.js": { + "bytes": 174, + "imports": [ + { + "path": "node_modules/d3-selection/src/index.js", + "kind": "import-statement", + "original": "d3-selection" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/style.js": { + "bytes": 2638, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/index.js", + "kind": "import-statement", + "original": "d3-interpolate" + }, + { + "path": "node_modules/d3-selection/src/index.js", + "kind": "import-statement", + "original": "d3-selection" + }, + { + "path": "node_modules/d3-transition/src/transition/schedule.js", + "kind": "import-statement", + "original": "./schedule.js" + }, + { + "path": "node_modules/d3-transition/src/transition/tween.js", + "kind": "import-statement", + "original": "./tween.js" + }, + { + "path": "node_modules/d3-transition/src/transition/interpolate.js", + "kind": "import-statement", + "original": "./interpolate.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/styleTween.js": { + "bytes": 743, + "imports": [], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/text.js": { + "bytes": 465, + "imports": [ + { + "path": "node_modules/d3-transition/src/transition/tween.js", + "kind": "import-statement", + "original": "./tween.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/textTween.js": { + "bytes": 600, + "imports": [], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/transition.js": { + "bytes": 694, + "imports": [ + { + "path": "node_modules/d3-transition/src/transition/index.js", + "kind": "import-statement", + "original": "./index.js" + }, + { + "path": "node_modules/d3-transition/src/transition/schedule.js", + "kind": "import-statement", + "original": "./schedule.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/end.js": { + "bytes": 899, + "imports": [ + { + "path": "node_modules/d3-transition/src/transition/schedule.js", + "kind": "import-statement", + "original": "./schedule.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/transition/index.js": { + "bytes": 2341, + "imports": [ + { + "path": "node_modules/d3-selection/src/index.js", + "kind": "import-statement", + "original": "d3-selection" + }, + { + "path": "node_modules/d3-transition/src/transition/attr.js", + "kind": "import-statement", + "original": "./attr.js" + }, + { + "path": "node_modules/d3-transition/src/transition/attrTween.js", + "kind": "import-statement", + "original": "./attrTween.js" + }, + { + "path": "node_modules/d3-transition/src/transition/delay.js", + "kind": "import-statement", + "original": "./delay.js" + }, + { + "path": "node_modules/d3-transition/src/transition/duration.js", + "kind": "import-statement", + "original": "./duration.js" + }, + { + "path": "node_modules/d3-transition/src/transition/ease.js", + "kind": "import-statement", + "original": "./ease.js" + }, + { + "path": "node_modules/d3-transition/src/transition/easeVarying.js", + "kind": "import-statement", + "original": "./easeVarying.js" + }, + { + "path": "node_modules/d3-transition/src/transition/filter.js", + "kind": "import-statement", + "original": "./filter.js" + }, + { + "path": "node_modules/d3-transition/src/transition/merge.js", + "kind": "import-statement", + "original": "./merge.js" + }, + { + "path": "node_modules/d3-transition/src/transition/on.js", + "kind": "import-statement", + "original": "./on.js" + }, + { + "path": "node_modules/d3-transition/src/transition/remove.js", + "kind": "import-statement", + "original": "./remove.js" + }, + { + "path": "node_modules/d3-transition/src/transition/select.js", + "kind": "import-statement", + "original": "./select.js" + }, + { + "path": "node_modules/d3-transition/src/transition/selectAll.js", + "kind": "import-statement", + "original": "./selectAll.js" + }, + { + "path": "node_modules/d3-transition/src/transition/selection.js", + "kind": "import-statement", + "original": "./selection.js" + }, + { + "path": "node_modules/d3-transition/src/transition/style.js", + "kind": "import-statement", + "original": "./style.js" + }, + { + "path": "node_modules/d3-transition/src/transition/styleTween.js", + "kind": "import-statement", + "original": "./styleTween.js" + }, + { + "path": "node_modules/d3-transition/src/transition/text.js", + "kind": "import-statement", + "original": "./text.js" + }, + { + "path": "node_modules/d3-transition/src/transition/textTween.js", + "kind": "import-statement", + "original": "./textTween.js" + }, + { + "path": "node_modules/d3-transition/src/transition/transition.js", + "kind": "import-statement", + "original": "./transition.js" + }, + { + "path": "node_modules/d3-transition/src/transition/tween.js", + "kind": "import-statement", + "original": "./tween.js" + }, + { + "path": "node_modules/d3-transition/src/transition/end.js", + "kind": "import-statement", + "original": "./end.js" + } + ], + "format": "esm" + }, + "node_modules/d3-ease/src/linear.js": { + "bytes": 30, + "imports": [], + "format": "esm" + }, + "node_modules/d3-ease/src/quad.js": { + "bytes": 189, + "imports": [], + "format": "esm" + }, + "node_modules/d3-ease/src/cubic.js": { + "bytes": 207, + "imports": [], + "format": "esm" + }, + "node_modules/d3-ease/src/poly.js": { + "bytes": 577, + "imports": [], + "format": "esm" + }, + "node_modules/d3-ease/src/sin.js": { + "bytes": 245, + "imports": [], + "format": "esm" + }, + "node_modules/d3-ease/src/math.js": { + "bytes": 151, + "imports": [], + "format": "esm" + }, + "node_modules/d3-ease/src/exp.js": { + "bytes": 231, + "imports": [ + { + "path": "node_modules/d3-ease/src/math.js", + "kind": "import-statement", + "original": "./math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-ease/src/circle.js": { + "bytes": 258, + "imports": [], + "format": "esm" + }, + "node_modules/d3-ease/src/bounce.js": { + "bytes": 499, + "imports": [], + "format": "esm" + }, + "node_modules/d3-ease/src/back.js": { + "bytes": 641, + "imports": [], + "format": "esm" + }, + "node_modules/d3-ease/src/elastic.js": { + "bytes": 1297, + "imports": [ + { + "path": "node_modules/d3-ease/src/math.js", + "kind": "import-statement", + "original": "./math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-ease/src/index.js": { + "bytes": 1226, + "imports": [ + { + "path": "node_modules/d3-ease/src/linear.js", + "kind": "import-statement", + "original": "./linear.js" + }, + { + "path": "node_modules/d3-ease/src/quad.js", + "kind": "import-statement", + "original": "./quad.js" + }, + { + "path": "node_modules/d3-ease/src/cubic.js", + "kind": "import-statement", + "original": "./cubic.js" + }, + { + "path": "node_modules/d3-ease/src/poly.js", + "kind": "import-statement", + "original": "./poly.js" + }, + { + "path": "node_modules/d3-ease/src/sin.js", + "kind": "import-statement", + "original": "./sin.js" + }, + { + "path": "node_modules/d3-ease/src/exp.js", + "kind": "import-statement", + "original": "./exp.js" + }, + { + "path": "node_modules/d3-ease/src/circle.js", + "kind": "import-statement", + "original": "./circle.js" + }, + { + "path": "node_modules/d3-ease/src/bounce.js", + "kind": "import-statement", + "original": "./bounce.js" + }, + { + "path": "node_modules/d3-ease/src/back.js", + "kind": "import-statement", + "original": "./back.js" + }, + { + "path": "node_modules/d3-ease/src/elastic.js", + "kind": "import-statement", + "original": "./elastic.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/selection/transition.js": { + "bytes": 1089, + "imports": [ + { + "path": "node_modules/d3-transition/src/transition/index.js", + "kind": "import-statement", + "original": "../transition/index.js" + }, + { + "path": "node_modules/d3-transition/src/transition/schedule.js", + "kind": "import-statement", + "original": "../transition/schedule.js" + }, + { + "path": "node_modules/d3-ease/src/index.js", + "kind": "import-statement", + "original": "d3-ease" + }, + { + "path": "node_modules/d3-timer/src/index.js", + "kind": "import-statement", + "original": "d3-timer" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/selection/index.js": { + "bytes": 251, + "imports": [ + { + "path": "node_modules/d3-selection/src/index.js", + "kind": "import-statement", + "original": "d3-selection" + }, + { + "path": "node_modules/d3-transition/src/selection/interrupt.js", + "kind": "import-statement", + "original": "./interrupt.js" + }, + { + "path": "node_modules/d3-transition/src/selection/transition.js", + "kind": "import-statement", + "original": "./transition.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/active.js": { + "bytes": 486, + "imports": [ + { + "path": "node_modules/d3-transition/src/transition/index.js", + "kind": "import-statement", + "original": "./transition/index.js" + }, + { + "path": "node_modules/d3-transition/src/transition/schedule.js", + "kind": "import-statement", + "original": "./transition/schedule.js" + } + ], + "format": "esm" + }, + "node_modules/d3-transition/src/index.js": { + "bytes": 197, + "imports": [ + { + "path": "node_modules/d3-transition/src/selection/index.js", + "kind": "import-statement", + "original": "./selection/index.js" + }, + { + "path": "node_modules/d3-transition/src/transition/index.js", + "kind": "import-statement", + "original": "./transition/index.js" + }, + { + "path": "node_modules/d3-transition/src/active.js", + "kind": "import-statement", + "original": "./active.js" + }, + { + "path": "node_modules/d3-transition/src/interrupt.js", + "kind": "import-statement", + "original": "./interrupt.js" + } + ], + "format": "esm" + }, + "node_modules/d3-brush/src/constant.js": { + "bytes": 30, + "imports": [], + "format": "esm" + }, + "node_modules/d3-brush/src/event.js": { + "bytes": 646, + "imports": [], + "format": "esm" + }, + "node_modules/d3-brush/src/noevent.js": { + "bytes": 174, + "imports": [], + "format": "esm" + }, + "node_modules/d3-brush/src/brush.js": { + "bytes": 17804, + "imports": [ + { + "path": "node_modules/d3-dispatch/src/index.js", + "kind": "import-statement", + "original": "d3-dispatch" + }, + { + "path": "node_modules/d3-drag/src/index.js", + "kind": "import-statement", + "original": "d3-drag" + }, + { + "path": "node_modules/d3-interpolate/src/index.js", + "kind": "import-statement", + "original": "d3-interpolate" + }, + { + "path": "node_modules/d3-selection/src/index.js", + "kind": "import-statement", + "original": "d3-selection" + }, + { + "path": "node_modules/d3-transition/src/index.js", + "kind": "import-statement", + "original": "d3-transition" + }, + { + "path": "node_modules/d3-brush/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-brush/src/event.js", + "kind": "import-statement", + "original": "./event.js" + }, + { + "path": "node_modules/d3-brush/src/noevent.js", + "kind": "import-statement", + "original": "./noevent.js" + } + ], + "format": "esm" + }, + "node_modules/d3-brush/src/index.js": { + "bytes": 78, + "imports": [ + { + "path": "node_modules/d3-brush/src/brush.js", + "kind": "import-statement", + "original": "./brush.js" + } + ], + "format": "esm" + }, + "node_modules/d3-chord/src/math.js": { + "bytes": 213, + "imports": [], + "format": "esm" + }, + "node_modules/d3-chord/src/chord.js": { + "bytes": 4976, + "imports": [ + { + "path": "node_modules/d3-chord/src/math.js", + "kind": "import-statement", + "original": "./math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-path/src/path.js": { + "bytes": 4492, + "imports": [], + "format": "esm" + }, + "node_modules/d3-path/src/index.js": { + "bytes": 50, + "imports": [ + { + "path": "node_modules/d3-path/src/path.js", + "kind": "import-statement", + "original": "./path.js" + } + ], + "format": "esm" + }, + "node_modules/d3-chord/src/array.js": { + "bytes": 41, + "imports": [], + "format": "esm" + }, + "node_modules/d3-chord/src/constant.js": { + "bytes": 73, + "imports": [], + "format": "esm" + }, + "node_modules/d3-chord/src/ribbon.js": { + "bytes": 3962, + "imports": [ + { + "path": "node_modules/d3-path/src/index.js", + "kind": "import-statement", + "original": "d3-path" + }, + { + "path": "node_modules/d3-chord/src/array.js", + "kind": "import-statement", + "original": "./array.js" + }, + { + "path": "node_modules/d3-chord/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-chord/src/math.js", + "kind": "import-statement", + "original": "./math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-chord/src/index.js": { + "bytes": 139, + "imports": [ + { + "path": "node_modules/d3-chord/src/chord.js", + "kind": "import-statement", + "original": "./chord.js" + }, + { + "path": "node_modules/d3-chord/src/ribbon.js", + "kind": "import-statement", + "original": "./ribbon.js" + } + ], + "format": "esm" + }, + "node_modules/d3-contour/src/array.js": { + "bytes": 60, + "imports": [], + "format": "esm" + }, + "node_modules/d3-contour/src/ascending.js": { + "bytes": 50, + "imports": [], + "format": "esm" + }, + "node_modules/d3-contour/src/area.js": { + "bytes": 238, + "imports": [], + "format": "esm" + }, + "node_modules/d3-contour/src/constant.js": { + "bytes": 30, + "imports": [], + "format": "esm" + }, + "node_modules/d3-contour/src/contains.js": { + "bytes": 905, + "imports": [], + "format": "esm" + }, + "node_modules/d3-contour/src/noop.js": { + "bytes": 29, + "imports": [], + "format": "esm" + }, + "node_modules/d3-contour/src/contours.js": { + "bytes": 7097, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-contour/src/array.js", + "kind": "import-statement", + "original": "./array.js" + }, + { + "path": "node_modules/d3-contour/src/ascending.js", + "kind": "import-statement", + "original": "./ascending.js" + }, + { + "path": "node_modules/d3-contour/src/area.js", + "kind": "import-statement", + "original": "./area.js" + }, + { + "path": "node_modules/d3-contour/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-contour/src/contains.js", + "kind": "import-statement", + "original": "./contains.js" + }, + { + "path": "node_modules/d3-contour/src/noop.js", + "kind": "import-statement", + "original": "./noop.js" + } + ], + "format": "esm" + }, + "node_modules/d3-contour/src/density.js": { + "bytes": 4141, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-contour/src/array.js", + "kind": "import-statement", + "original": "./array.js" + }, + { + "path": "node_modules/d3-contour/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-contour/src/contours.js", + "kind": "import-statement", + "original": "./contours.js" + } + ], + "format": "esm" + }, + "node_modules/d3-contour/src/index.js": { + "bytes": 110, + "imports": [ + { + "path": "node_modules/d3-contour/src/contours.js", + "kind": "import-statement", + "original": "./contours.js" + }, + { + "path": "node_modules/d3-contour/src/density.js", + "kind": "import-statement", + "original": "./density.js" + } + ], + "format": "esm" + }, + "node_modules/robust-predicates/esm/util.js": { + "bytes": 3150, + "imports": [], + "format": "esm" + }, + "node_modules/robust-predicates/esm/orient2d.js": { + "bytes": 4955, + "imports": [ + { + "path": "node_modules/robust-predicates/esm/util.js", + "kind": "import-statement", + "original": "./util.js" + } + ], + "format": "esm" + }, + "node_modules/robust-predicates/esm/orient3d.js": { + "bytes": 12597, + "imports": [ + { + "path": "node_modules/robust-predicates/esm/util.js", + "kind": "import-statement", + "original": "./util.js" + } + ], + "format": "esm" + }, + "node_modules/robust-predicates/esm/incircle.js": { + "bytes": 23025, + "imports": [ + { + "path": "node_modules/robust-predicates/esm/util.js", + "kind": "import-statement", + "original": "./util.js" + } + ], + "format": "esm" + }, + "node_modules/robust-predicates/esm/insphere.js": { + "bytes": 22272, + "imports": [ + { + "path": "node_modules/robust-predicates/esm/util.js", + "kind": "import-statement", + "original": "./util.js" + } + ], + "format": "esm" + }, + "node_modules/robust-predicates/index.js": { + "bytes": 239, + "imports": [ + { + "path": "node_modules/robust-predicates/esm/orient2d.js", + "kind": "import-statement", + "original": "./esm/orient2d.js" + }, + { + "path": "node_modules/robust-predicates/esm/orient3d.js", + "kind": "import-statement", + "original": "./esm/orient3d.js" + }, + { + "path": "node_modules/robust-predicates/esm/incircle.js", + "kind": "import-statement", + "original": "./esm/incircle.js" + }, + { + "path": "node_modules/robust-predicates/esm/insphere.js", + "kind": "import-statement", + "original": "./esm/insphere.js" + } + ], + "format": "esm" + }, + "node_modules/delaunator/index.js": { + "bytes": 13673, + "imports": [ + { + "path": "node_modules/robust-predicates/index.js", + "kind": "import-statement", + "original": "robust-predicates" + } + ], + "format": "esm" + }, + "node_modules/d3-delaunay/src/path.js": { + "bytes": 1094, + "imports": [], + "format": "esm" + }, + "node_modules/d3-delaunay/src/polygon.js": { + "bytes": 293, + "imports": [], + "format": "esm" + }, + "node_modules/d3-delaunay/src/voronoi.js": { + "bytes": 12856, + "imports": [ + { + "path": "node_modules/d3-delaunay/src/path.js", + "kind": "import-statement", + "original": "./path.js" + }, + { + "path": "node_modules/d3-delaunay/src/polygon.js", + "kind": "import-statement", + "original": "./polygon.js" + } + ], + "format": "esm" + }, + "node_modules/d3-delaunay/src/delaunay.js": { + "bytes": 8251, + "imports": [ + { + "path": "node_modules/delaunator/index.js", + "kind": "import-statement", + "original": "delaunator" + }, + { + "path": "node_modules/d3-delaunay/src/path.js", + "kind": "import-statement", + "original": "./path.js" + }, + { + "path": "node_modules/d3-delaunay/src/polygon.js", + "kind": "import-statement", + "original": "./polygon.js" + }, + { + "path": "node_modules/d3-delaunay/src/voronoi.js", + "kind": "import-statement", + "original": "./voronoi.js" + } + ], + "format": "esm" + }, + "node_modules/d3-delaunay/src/index.js": { + "bytes": 103, + "imports": [ + { + "path": "node_modules/d3-delaunay/src/delaunay.js", + "kind": "import-statement", + "original": "./delaunay.js" + }, + { + "path": "node_modules/d3-delaunay/src/voronoi.js", + "kind": "import-statement", + "original": "./voronoi.js" + } + ], + "format": "esm" + }, + "node_modules/d3-dsv/src/dsv.js": { + "bytes": 4821, + "imports": [], + "format": "esm" + }, + "node_modules/d3-dsv/src/csv.js": { + "bytes": 328, + "imports": [ + { + "path": "node_modules/d3-dsv/src/dsv.js", + "kind": "import-statement", + "original": "./dsv.js" + } + ], + "format": "esm" + }, + "node_modules/d3-dsv/src/tsv.js": { + "bytes": 329, + "imports": [ + { + "path": "node_modules/d3-dsv/src/dsv.js", + "kind": "import-statement", + "original": "./dsv.js" + } + ], + "format": "esm" + }, + "node_modules/d3-dsv/src/autoType.js": { + "bytes": 779, + "imports": [], + "format": "esm" + }, + "node_modules/d3-dsv/src/index.js": { + "bytes": 345, + "imports": [ + { + "path": "node_modules/d3-dsv/src/dsv.js", + "kind": "import-statement", + "original": "./dsv.js" + }, + { + "path": "node_modules/d3-dsv/src/csv.js", + "kind": "import-statement", + "original": "./csv.js" + }, + { + "path": "node_modules/d3-dsv/src/tsv.js", + "kind": "import-statement", + "original": "./tsv.js" + }, + { + "path": "node_modules/d3-dsv/src/autoType.js", + "kind": "import-statement", + "original": "./autoType.js" + } + ], + "format": "esm" + }, + "node_modules/d3-fetch/src/blob.js": { + "bytes": 233, + "imports": [], + "format": "esm" + }, + "node_modules/d3-fetch/src/buffer.js": { + "bytes": 254, + "imports": [], + "format": "esm" + }, + "node_modules/d3-fetch/src/text.js": { + "bytes": 233, + "imports": [], + "format": "esm" + }, + "node_modules/d3-fetch/src/dsv.js": { + "bytes": 711, + "imports": [ + { + "path": "node_modules/d3-dsv/src/index.js", + "kind": "import-statement", + "original": "d3-dsv" + }, + { + "path": "node_modules/d3-fetch/src/text.js", + "kind": "import-statement", + "original": "./text.js" + } + ], + "format": "esm" + }, + "node_modules/d3-fetch/src/image.js": { + "bytes": 289, + "imports": [], + "format": "esm" + }, + "node_modules/d3-fetch/src/json.js": { + "bytes": 299, + "imports": [], + "format": "esm" + }, + "node_modules/d3-fetch/src/xml.js": { + "bytes": 281, + "imports": [ + { + "path": "node_modules/d3-fetch/src/text.js", + "kind": "import-statement", + "original": "./text.js" + } + ], + "format": "esm" + }, + "node_modules/d3-fetch/src/index.js": { + "bytes": 337, + "imports": [ + { + "path": "node_modules/d3-fetch/src/blob.js", + "kind": "import-statement", + "original": "./blob.js" + }, + { + "path": "node_modules/d3-fetch/src/buffer.js", + "kind": "import-statement", + "original": "./buffer.js" + }, + { + "path": "node_modules/d3-fetch/src/dsv.js", + "kind": "import-statement", + "original": "./dsv.js" + }, + { + "path": "node_modules/d3-fetch/src/image.js", + "kind": "import-statement", + "original": "./image.js" + }, + { + "path": "node_modules/d3-fetch/src/json.js", + "kind": "import-statement", + "original": "./json.js" + }, + { + "path": "node_modules/d3-fetch/src/text.js", + "kind": "import-statement", + "original": "./text.js" + }, + { + "path": "node_modules/d3-fetch/src/xml.js", + "kind": "import-statement", + "original": "./xml.js" + } + ], + "format": "esm" + }, + "node_modules/d3-force/src/center.js": { + "bytes": 789, + "imports": [], + "format": "esm" + }, + "node_modules/d3-quadtree/src/add.js": { + "bytes": 2335, + "imports": [], + "format": "esm" + }, + "node_modules/d3-quadtree/src/cover.js": { + "bytes": 1232, + "imports": [], + "format": "esm" + }, + "node_modules/d3-quadtree/src/data.js": { + "bytes": 172, + "imports": [], + "format": "esm" + }, + "node_modules/d3-quadtree/src/extent.js": { + "bytes": 194, + "imports": [], + "format": "esm" + }, + "node_modules/d3-quadtree/src/quad.js": { + "bytes": 134, + "imports": [], + "format": "esm" + }, + "node_modules/d3-quadtree/src/find.js": { + "bytes": 1586, + "imports": [ + { + "path": "node_modules/d3-quadtree/src/quad.js", + "kind": "import-statement", + "original": "./quad.js" + } + ], + "format": "esm" + }, + "node_modules/d3-quadtree/src/remove.js": { + "bytes": 1837, + "imports": [], + "format": "esm" + }, + "node_modules/d3-quadtree/src/root.js": { + "bytes": 51, + "imports": [], + "format": "esm" + }, + "node_modules/d3-quadtree/src/size.js": { + "bytes": 157, + "imports": [], + "format": "esm" + }, + "node_modules/d3-quadtree/src/visit.js": { + "bytes": 733, + "imports": [ + { + "path": "node_modules/d3-quadtree/src/quad.js", + "kind": "import-statement", + "original": "./quad.js" + } + ], + "format": "esm" + }, + "node_modules/d3-quadtree/src/visitAfter.js": { + "bytes": 831, + "imports": [ + { + "path": "node_modules/d3-quadtree/src/quad.js", + "kind": "import-statement", + "original": "./quad.js" + } + ], + "format": "esm" + }, + "node_modules/d3-quadtree/src/x.js": { + "bytes": 137, + "imports": [], + "format": "esm" + }, + "node_modules/d3-quadtree/src/y.js": { + "bytes": 137, + "imports": [], + "format": "esm" + }, + "node_modules/d3-quadtree/src/quadtree.js": { + "bytes": 2162, + "imports": [ + { + "path": "node_modules/d3-quadtree/src/add.js", + "kind": "import-statement", + "original": "./add.js" + }, + { + "path": "node_modules/d3-quadtree/src/cover.js", + "kind": "import-statement", + "original": "./cover.js" + }, + { + "path": "node_modules/d3-quadtree/src/data.js", + "kind": "import-statement", + "original": "./data.js" + }, + { + "path": "node_modules/d3-quadtree/src/extent.js", + "kind": "import-statement", + "original": "./extent.js" + }, + { + "path": "node_modules/d3-quadtree/src/find.js", + "kind": "import-statement", + "original": "./find.js" + }, + { + "path": "node_modules/d3-quadtree/src/remove.js", + "kind": "import-statement", + "original": "./remove.js" + }, + { + "path": "node_modules/d3-quadtree/src/root.js", + "kind": "import-statement", + "original": "./root.js" + }, + { + "path": "node_modules/d3-quadtree/src/size.js", + "kind": "import-statement", + "original": "./size.js" + }, + { + "path": "node_modules/d3-quadtree/src/visit.js", + "kind": "import-statement", + "original": "./visit.js" + }, + { + "path": "node_modules/d3-quadtree/src/visitAfter.js", + "kind": "import-statement", + "original": "./visitAfter.js" + }, + { + "path": "node_modules/d3-quadtree/src/x.js", + "kind": "import-statement", + "original": "./x.js" + }, + { + "path": "node_modules/d3-quadtree/src/y.js", + "kind": "import-statement", + "original": "./y.js" + } + ], + "format": "esm" + }, + "node_modules/d3-quadtree/src/index.js": { + "bytes": 52, + "imports": [ + { + "path": "node_modules/d3-quadtree/src/quadtree.js", + "kind": "import-statement", + "original": "./quadtree.js" + } + ], + "format": "esm" + }, + "node_modules/d3-force/src/constant.js": { + "bytes": 73, + "imports": [], + "format": "esm" + }, + "node_modules/d3-force/src/jiggle.js": { + "bytes": 70, + "imports": [], + "format": "esm" + }, + "node_modules/d3-force/src/collide.js": { + "bytes": 2522, + "imports": [ + { + "path": "node_modules/d3-quadtree/src/index.js", + "kind": "import-statement", + "original": "d3-quadtree" + }, + { + "path": "node_modules/d3-force/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-force/src/jiggle.js", + "kind": "import-statement", + "original": "./jiggle.js" + } + ], + "format": "esm" + }, + "node_modules/d3-force/src/link.js": { + "bytes": 3252, + "imports": [ + { + "path": "node_modules/d3-force/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-force/src/jiggle.js", + "kind": "import-statement", + "original": "./jiggle.js" + } + ], + "format": "esm" + }, + "node_modules/d3-force/src/lcg.js": { + "bytes": 245, + "imports": [], + "format": "esm" + }, + "node_modules/d3-force/src/simulation.js": { + "bytes": 3818, + "imports": [ + { + "path": "node_modules/d3-dispatch/src/index.js", + "kind": "import-statement", + "original": "d3-dispatch" + }, + { + "path": "node_modules/d3-timer/src/index.js", + "kind": "import-statement", + "original": "d3-timer" + }, + { + "path": "node_modules/d3-force/src/lcg.js", + "kind": "import-statement", + "original": "./lcg.js" + } + ], + "format": "esm" + }, + "node_modules/d3-force/src/manyBody.js": { + "bytes": 3333, + "imports": [ + { + "path": "node_modules/d3-quadtree/src/index.js", + "kind": "import-statement", + "original": "d3-quadtree" + }, + { + "path": "node_modules/d3-force/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-force/src/jiggle.js", + "kind": "import-statement", + "original": "./jiggle.js" + }, + { + "path": "node_modules/d3-force/src/simulation.js", + "kind": "import-statement", + "original": "./simulation.js" + } + ], + "format": "esm" + }, + "node_modules/d3-force/src/radial.js": { + "bytes": 1467, + "imports": [ + { + "path": "node_modules/d3-force/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + } + ], + "format": "esm" + }, + "node_modules/d3-force/src/x.js": { + "bytes": 1028, + "imports": [ + { + "path": "node_modules/d3-force/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + } + ], + "format": "esm" + }, + "node_modules/d3-force/src/y.js": { + "bytes": 1028, + "imports": [ + { + "path": "node_modules/d3-force/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + } + ], + "format": "esm" + }, + "node_modules/d3-force/src/index.js": { + "bytes": 421, + "imports": [ + { + "path": "node_modules/d3-force/src/center.js", + "kind": "import-statement", + "original": "./center.js" + }, + { + "path": "node_modules/d3-force/src/collide.js", + "kind": "import-statement", + "original": "./collide.js" + }, + { + "path": "node_modules/d3-force/src/link.js", + "kind": "import-statement", + "original": "./link.js" + }, + { + "path": "node_modules/d3-force/src/manyBody.js", + "kind": "import-statement", + "original": "./manyBody.js" + }, + { + "path": "node_modules/d3-force/src/radial.js", + "kind": "import-statement", + "original": "./radial.js" + }, + { + "path": "node_modules/d3-force/src/simulation.js", + "kind": "import-statement", + "original": "./simulation.js" + }, + { + "path": "node_modules/d3-force/src/x.js", + "kind": "import-statement", + "original": "./x.js" + }, + { + "path": "node_modules/d3-force/src/y.js", + "kind": "import-statement", + "original": "./y.js" + } + ], + "format": "esm" + }, + "node_modules/d3-format/src/formatDecimal.js": { + "bytes": 802, + "imports": [], + "format": "esm" + }, + "node_modules/d3-format/src/exponent.js": { + "bytes": 150, + "imports": [ + { + "path": "node_modules/d3-format/src/formatDecimal.js", + "kind": "import-statement", + "original": "./formatDecimal.js" + } + ], + "format": "esm" + }, + "node_modules/d3-format/src/formatGroup.js": { + "bytes": 466, + "imports": [], + "format": "esm" + }, + "node_modules/d3-format/src/formatNumerals.js": { + "bytes": 156, + "imports": [], + "format": "esm" + }, + "node_modules/d3-format/src/formatSpecifier.js": { + "bytes": 1662, + "imports": [], + "format": "esm" + }, + "node_modules/d3-format/src/formatTrim.js": { + "bytes": 463, + "imports": [], + "format": "esm" + }, + "node_modules/d3-format/src/formatPrefixAuto.js": { + "bytes": 607, + "imports": [ + { + "path": "node_modules/d3-format/src/formatDecimal.js", + "kind": "import-statement", + "original": "./formatDecimal.js" + } + ], + "format": "esm" + }, + "node_modules/d3-format/src/formatRounded.js": { + "bytes": 460, + "imports": [ + { + "path": "node_modules/d3-format/src/formatDecimal.js", + "kind": "import-statement", + "original": "./formatDecimal.js" + } + ], + "format": "esm" + }, + "node_modules/d3-format/src/formatTypes.js": { + "bytes": 615, + "imports": [ + { + "path": "node_modules/d3-format/src/formatDecimal.js", + "kind": "import-statement", + "original": "./formatDecimal.js" + }, + { + "path": "node_modules/d3-format/src/formatPrefixAuto.js", + "kind": "import-statement", + "original": "./formatPrefixAuto.js" + }, + { + "path": "node_modules/d3-format/src/formatRounded.js", + "kind": "import-statement", + "original": "./formatRounded.js" + } + ], + "format": "esm" + }, + "node_modules/d3-format/src/identity.js": { + "bytes": 43, + "imports": [], + "format": "esm" + }, + "node_modules/d3-format/src/locale.js": { + "bytes": 6209, + "imports": [ + { + "path": "node_modules/d3-format/src/exponent.js", + "kind": "import-statement", + "original": "./exponent.js" + }, + { + "path": "node_modules/d3-format/src/formatGroup.js", + "kind": "import-statement", + "original": "./formatGroup.js" + }, + { + "path": "node_modules/d3-format/src/formatNumerals.js", + "kind": "import-statement", + "original": "./formatNumerals.js" + }, + { + "path": "node_modules/d3-format/src/formatSpecifier.js", + "kind": "import-statement", + "original": "./formatSpecifier.js" + }, + { + "path": "node_modules/d3-format/src/formatTrim.js", + "kind": "import-statement", + "original": "./formatTrim.js" + }, + { + "path": "node_modules/d3-format/src/formatTypes.js", + "kind": "import-statement", + "original": "./formatTypes.js" + }, + { + "path": "node_modules/d3-format/src/formatPrefixAuto.js", + "kind": "import-statement", + "original": "./formatPrefixAuto.js" + }, + { + "path": "node_modules/d3-format/src/identity.js", + "kind": "import-statement", + "original": "./identity.js" + } + ], + "format": "esm" + }, + "node_modules/d3-format/src/defaultLocale.js": { + "bytes": 344, + "imports": [ + { + "path": "node_modules/d3-format/src/locale.js", + "kind": "import-statement", + "original": "./locale.js" + } + ], + "format": "esm" + }, + "node_modules/d3-format/src/precisionFixed.js": { + "bytes": 121, + "imports": [ + { + "path": "node_modules/d3-format/src/exponent.js", + "kind": "import-statement", + "original": "./exponent.js" + } + ], + "format": "esm" + }, + "node_modules/d3-format/src/precisionPrefix.js": { + "bytes": 192, + "imports": [ + { + "path": "node_modules/d3-format/src/exponent.js", + "kind": "import-statement", + "original": "./exponent.js" + } + ], + "format": "esm" + }, + "node_modules/d3-format/src/precisionRound.js": { + "bytes": 188, + "imports": [ + { + "path": "node_modules/d3-format/src/exponent.js", + "kind": "import-statement", + "original": "./exponent.js" + } + ], + "format": "esm" + }, + "node_modules/d3-format/src/index.js": { + "bytes": 426, + "imports": [ + { + "path": "node_modules/d3-format/src/defaultLocale.js", + "kind": "import-statement", + "original": "./defaultLocale.js" + }, + { + "path": "node_modules/d3-format/src/locale.js", + "kind": "import-statement", + "original": "./locale.js" + }, + { + "path": "node_modules/d3-format/src/formatSpecifier.js", + "kind": "import-statement", + "original": "./formatSpecifier.js" + }, + { + "path": "node_modules/d3-format/src/precisionFixed.js", + "kind": "import-statement", + "original": "./precisionFixed.js" + }, + { + "path": "node_modules/d3-format/src/precisionPrefix.js", + "kind": "import-statement", + "original": "./precisionPrefix.js" + }, + { + "path": "node_modules/d3-format/src/precisionRound.js", + "kind": "import-statement", + "original": "./precisionRound.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/math.js": { + "bytes": 908, + "imports": [], + "format": "esm" + }, + "node_modules/d3-geo/src/noop.js": { + "bytes": 33, + "imports": [], + "format": "esm" + }, + "node_modules/d3-geo/src/stream.js": { + "bytes": 2380, + "imports": [], + "format": "esm" + }, + "node_modules/d3-geo/src/area.js": { + "bytes": 1977, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "./math.js" + }, + { + "path": "node_modules/d3-geo/src/noop.js", + "kind": "import-statement", + "original": "./noop.js" + }, + { + "path": "node_modules/d3-geo/src/stream.js", + "kind": "import-statement", + "original": "./stream.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/cartesian.js": { + "bytes": 936, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "./math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/bounds.js": { + "bytes": 5500, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-geo/src/area.js", + "kind": "import-statement", + "original": "./area.js" + }, + { + "path": "node_modules/d3-geo/src/cartesian.js", + "kind": "import-statement", + "original": "./cartesian.js" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "./math.js" + }, + { + "path": "node_modules/d3-geo/src/stream.js", + "kind": "import-statement", + "original": "./stream.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/centroid.js": { + "bytes": 3793, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "./math.js" + }, + { + "path": "node_modules/d3-geo/src/noop.js", + "kind": "import-statement", + "original": "./noop.js" + }, + { + "path": "node_modules/d3-geo/src/stream.js", + "kind": "import-statement", + "original": "./stream.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/constant.js": { + "bytes": 73, + "imports": [], + "format": "esm" + }, + "node_modules/d3-geo/src/compose.js": { + "bytes": 248, + "imports": [], + "format": "esm" + }, + "node_modules/d3-geo/src/rotation.js": { + "bytes": 2458, + "imports": [ + { + "path": "node_modules/d3-geo/src/compose.js", + "kind": "import-statement", + "original": "./compose.js" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "./math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/circle.js": { + "bytes": 2399, + "imports": [ + { + "path": "node_modules/d3-geo/src/cartesian.js", + "kind": "import-statement", + "original": "./cartesian.js" + }, + { + "path": "node_modules/d3-geo/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "./math.js" + }, + { + "path": "node_modules/d3-geo/src/rotation.js", + "kind": "import-statement", + "original": "./rotation.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/clip/buffer.js": { + "bytes": 480, + "imports": [ + { + "path": "node_modules/d3-geo/src/noop.js", + "kind": "import-statement", + "original": "../noop.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/pointEqual.js": { + "bytes": 143, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "./math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/clip/rejoin.js": { + "bytes": 2760, + "imports": [ + { + "path": "node_modules/d3-geo/src/pointEqual.js", + "kind": "import-statement", + "original": "../pointEqual.js" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/polygonContains.js": { + "bytes": 2744, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-geo/src/cartesian.js", + "kind": "import-statement", + "original": "./cartesian.js" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "./math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/clip/index.js": { + "bytes": 3578, + "imports": [ + { + "path": "node_modules/d3-geo/src/clip/buffer.js", + "kind": "import-statement", + "original": "./buffer.js" + }, + { + "path": "node_modules/d3-geo/src/clip/rejoin.js", + "kind": "import-statement", + "original": "./rejoin.js" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/polygonContains.js", + "kind": "import-statement", + "original": "../polygonContains.js" + }, + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/clip/antimeridian.js": { + "bytes": 2870, + "imports": [ + { + "path": "node_modules/d3-geo/src/clip/index.js", + "kind": "import-statement", + "original": "./index.js" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/clip/circle.js": { + "bytes": 5731, + "imports": [ + { + "path": "node_modules/d3-geo/src/cartesian.js", + "kind": "import-statement", + "original": "../cartesian.js" + }, + { + "path": "node_modules/d3-geo/src/circle.js", + "kind": "import-statement", + "original": "../circle.js" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/pointEqual.js", + "kind": "import-statement", + "original": "../pointEqual.js" + }, + { + "path": "node_modules/d3-geo/src/clip/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/clip/line.js": { + "bytes": 1078, + "imports": [], + "format": "esm" + }, + "node_modules/d3-geo/src/clip/rectangle.js": { + "bytes": 5009, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/clip/buffer.js", + "kind": "import-statement", + "original": "./buffer.js" + }, + { + "path": "node_modules/d3-geo/src/clip/line.js", + "kind": "import-statement", + "original": "./line.js" + }, + { + "path": "node_modules/d3-geo/src/clip/rejoin.js", + "kind": "import-statement", + "original": "./rejoin.js" + }, + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/clip/extent.js": { + "bytes": 528, + "imports": [ + { + "path": "node_modules/d3-geo/src/clip/rectangle.js", + "kind": "import-statement", + "original": "./rectangle.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/length.js": { + "bytes": 1288, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "./math.js" + }, + { + "path": "node_modules/d3-geo/src/noop.js", + "kind": "import-statement", + "original": "./noop.js" + }, + { + "path": "node_modules/d3-geo/src/stream.js", + "kind": "import-statement", + "original": "./stream.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/distance.js": { + "bytes": 240, + "imports": [ + { + "path": "node_modules/d3-geo/src/length.js", + "kind": "import-statement", + "original": "./length.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/contains.js": { + "bytes": 2993, + "imports": [ + { + "path": "node_modules/d3-geo/src/polygonContains.js", + "kind": "import-statement", + "original": "./polygonContains.js" + }, + { + "path": "node_modules/d3-geo/src/distance.js", + "kind": "import-statement", + "original": "./distance.js" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "./math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/graticule.js": { + "bytes": 3102, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "./math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/interpolate.js": { + "bytes": 862, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "./math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/identity.js": { + "bytes": 24, + "imports": [], + "format": "esm" + }, + "node_modules/d3-geo/src/path/area.js": { + "bytes": 962, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/noop.js", + "kind": "import-statement", + "original": "../noop.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/path/bounds.js": { + "bytes": 478, + "imports": [ + { + "path": "node_modules/d3-geo/src/noop.js", + "kind": "import-statement", + "original": "../noop.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/path/centroid.js": { + "bytes": 1975, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/path/context.js": { + "bytes": 971, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/noop.js", + "kind": "import-statement", + "original": "../noop.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/path/measure.js": { + "bytes": 847, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/noop.js", + "kind": "import-statement", + "original": "../noop.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/path/string.js": { + "bytes": 2143, + "imports": [], + "format": "esm" + }, + "node_modules/d3-geo/src/path/index.js": { + "bytes": 2248, + "imports": [ + { + "path": "node_modules/d3-geo/src/identity.js", + "kind": "import-statement", + "original": "../identity.js" + }, + { + "path": "node_modules/d3-geo/src/stream.js", + "kind": "import-statement", + "original": "../stream.js" + }, + { + "path": "node_modules/d3-geo/src/path/area.js", + "kind": "import-statement", + "original": "./area.js" + }, + { + "path": "node_modules/d3-geo/src/path/bounds.js", + "kind": "import-statement", + "original": "./bounds.js" + }, + { + "path": "node_modules/d3-geo/src/path/centroid.js", + "kind": "import-statement", + "original": "./centroid.js" + }, + { + "path": "node_modules/d3-geo/src/path/context.js", + "kind": "import-statement", + "original": "./context.js" + }, + { + "path": "node_modules/d3-geo/src/path/measure.js", + "kind": "import-statement", + "original": "./measure.js" + }, + { + "path": "node_modules/d3-geo/src/path/string.js", + "kind": "import-statement", + "original": "./string.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/transform.js": { + "bytes": 743, + "imports": [], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/fit.js": { + "bytes": 1573, + "imports": [ + { + "path": "node_modules/d3-geo/src/stream.js", + "kind": "import-statement", + "original": "../stream.js" + }, + { + "path": "node_modules/d3-geo/src/path/bounds.js", + "kind": "import-statement", + "original": "../path/bounds.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/resample.js": { + "bytes": 3312, + "imports": [ + { + "path": "node_modules/d3-geo/src/cartesian.js", + "kind": "import-statement", + "original": "../cartesian.js" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/transform.js", + "kind": "import-statement", + "original": "../transform.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/index.js": { + "bytes": 5920, + "imports": [ + { + "path": "node_modules/d3-geo/src/clip/antimeridian.js", + "kind": "import-statement", + "original": "../clip/antimeridian.js" + }, + { + "path": "node_modules/d3-geo/src/clip/circle.js", + "kind": "import-statement", + "original": "../clip/circle.js" + }, + { + "path": "node_modules/d3-geo/src/clip/rectangle.js", + "kind": "import-statement", + "original": "../clip/rectangle.js" + }, + { + "path": "node_modules/d3-geo/src/compose.js", + "kind": "import-statement", + "original": "../compose.js" + }, + { + "path": "node_modules/d3-geo/src/identity.js", + "kind": "import-statement", + "original": "../identity.js" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/rotation.js", + "kind": "import-statement", + "original": "../rotation.js" + }, + { + "path": "node_modules/d3-geo/src/transform.js", + "kind": "import-statement", + "original": "../transform.js" + }, + { + "path": "node_modules/d3-geo/src/projection/fit.js", + "kind": "import-statement", + "original": "./fit.js" + }, + { + "path": "node_modules/d3-geo/src/projection/resample.js", + "kind": "import-statement", + "original": "./resample.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/conic.js": { + "bytes": 403, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/projection/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/cylindricalEqualArea.js": { + "bytes": 315, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/conicEqualArea.js": { + "bytes": 944, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/projection/conic.js", + "kind": "import-statement", + "original": "./conic.js" + }, + { + "path": "node_modules/d3-geo/src/projection/cylindricalEqualArea.js", + "kind": "import-statement", + "original": "./cylindricalEqualArea.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/albers.js": { + "bytes": 202, + "imports": [ + { + "path": "node_modules/d3-geo/src/projection/conicEqualArea.js", + "kind": "import-statement", + "original": "./conicEqualArea.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/albersUsa.js": { + "bytes": 4258, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/projection/albers.js", + "kind": "import-statement", + "original": "./albers.js" + }, + { + "path": "node_modules/d3-geo/src/projection/conicEqualArea.js", + "kind": "import-statement", + "original": "./conicEqualArea.js" + }, + { + "path": "node_modules/d3-geo/src/projection/fit.js", + "kind": "import-statement", + "original": "./fit.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/azimuthal.js": { + "bytes": 501, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/azimuthalEqualArea.js": { + "bytes": 445, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/projection/azimuthal.js", + "kind": "import-statement", + "original": "./azimuthal.js" + }, + { + "path": "node_modules/d3-geo/src/projection/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/azimuthalEquidistant.js": { + "bytes": 441, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/projection/azimuthal.js", + "kind": "import-statement", + "original": "./azimuthal.js" + }, + { + "path": "node_modules/d3-geo/src/projection/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/mercator.js": { + "bytes": 1522, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/rotation.js", + "kind": "import-statement", + "original": "../rotation.js" + }, + { + "path": "node_modules/d3-geo/src/projection/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/conicConformal.js": { + "bytes": 1097, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/projection/conic.js", + "kind": "import-statement", + "original": "./conic.js" + }, + { + "path": "node_modules/d3-geo/src/projection/mercator.js", + "kind": "import-statement", + "original": "./mercator.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/equirectangular.js": { + "bytes": 246, + "imports": [ + { + "path": "node_modules/d3-geo/src/projection/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/conicEquidistant.js": { + "bytes": 836, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/projection/conic.js", + "kind": "import-statement", + "original": "./conic.js" + }, + { + "path": "node_modules/d3-geo/src/projection/equirectangular.js", + "kind": "import-statement", + "original": "./equirectangular.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/equalEarth.js": { + "bytes": 998, + "imports": [ + { + "path": "node_modules/d3-geo/src/projection/index.js", + "kind": "import-statement", + "original": "./index.js" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/gnomonic.js": { + "bytes": 387, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/projection/azimuthal.js", + "kind": "import-statement", + "original": "./azimuthal.js" + }, + { + "path": "node_modules/d3-geo/src/projection/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/identity.js": { + "bytes": 2833, + "imports": [ + { + "path": "node_modules/d3-geo/src/clip/rectangle.js", + "kind": "import-statement", + "original": "../clip/rectangle.js" + }, + { + "path": "node_modules/d3-geo/src/identity.js", + "kind": "import-statement", + "original": "../identity.js" + }, + { + "path": "node_modules/d3-geo/src/transform.js", + "kind": "import-statement", + "original": "../transform.js" + }, + { + "path": "node_modules/d3-geo/src/projection/fit.js", + "kind": "import-statement", + "original": "./fit.js" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/naturalEarth1.js": { + "bytes": 1025, + "imports": [ + { + "path": "node_modules/d3-geo/src/projection/index.js", + "kind": "import-statement", + "original": "./index.js" + }, + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/orthographic.js": { + "bytes": 372, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/projection/azimuthal.js", + "kind": "import-statement", + "original": "./azimuthal.js" + }, + { + "path": "node_modules/d3-geo/src/projection/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/stereographic.js": { + "bytes": 437, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/projection/azimuthal.js", + "kind": "import-statement", + "original": "./azimuthal.js" + }, + { + "path": "node_modules/d3-geo/src/projection/index.js", + "kind": "import-statement", + "original": "./index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/projection/transverseMercator.js": { + "bytes": 758, + "imports": [ + { + "path": "node_modules/d3-geo/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-geo/src/projection/mercator.js", + "kind": "import-statement", + "original": "./mercator.js" + } + ], + "format": "esm" + }, + "node_modules/d3-geo/src/index.js": { + "bytes": 2939, + "imports": [ + { + "path": "node_modules/d3-geo/src/area.js", + "kind": "import-statement", + "original": "./area.js" + }, + { + "path": "node_modules/d3-geo/src/bounds.js", + "kind": "import-statement", + "original": "./bounds.js" + }, + { + "path": "node_modules/d3-geo/src/centroid.js", + "kind": "import-statement", + "original": "./centroid.js" + }, + { + "path": "node_modules/d3-geo/src/circle.js", + "kind": "import-statement", + "original": "./circle.js" + }, + { + "path": "node_modules/d3-geo/src/clip/antimeridian.js", + "kind": "import-statement", + "original": "./clip/antimeridian.js" + }, + { + "path": "node_modules/d3-geo/src/clip/circle.js", + "kind": "import-statement", + "original": "./clip/circle.js" + }, + { + "path": "node_modules/d3-geo/src/clip/extent.js", + "kind": "import-statement", + "original": "./clip/extent.js" + }, + { + "path": "node_modules/d3-geo/src/clip/rectangle.js", + "kind": "import-statement", + "original": "./clip/rectangle.js" + }, + { + "path": "node_modules/d3-geo/src/contains.js", + "kind": "import-statement", + "original": "./contains.js" + }, + { + "path": "node_modules/d3-geo/src/distance.js", + "kind": "import-statement", + "original": "./distance.js" + }, + { + "path": "node_modules/d3-geo/src/graticule.js", + "kind": "import-statement", + "original": "./graticule.js" + }, + { + "path": "node_modules/d3-geo/src/interpolate.js", + "kind": "import-statement", + "original": "./interpolate.js" + }, + { + "path": "node_modules/d3-geo/src/length.js", + "kind": "import-statement", + "original": "./length.js" + }, + { + "path": "node_modules/d3-geo/src/path/index.js", + "kind": "import-statement", + "original": "./path/index.js" + }, + { + "path": "node_modules/d3-geo/src/projection/albers.js", + "kind": "import-statement", + "original": "./projection/albers.js" + }, + { + "path": "node_modules/d3-geo/src/projection/albersUsa.js", + "kind": "import-statement", + "original": "./projection/albersUsa.js" + }, + { + "path": "node_modules/d3-geo/src/projection/azimuthalEqualArea.js", + "kind": "import-statement", + "original": "./projection/azimuthalEqualArea.js" + }, + { + "path": "node_modules/d3-geo/src/projection/azimuthalEquidistant.js", + "kind": "import-statement", + "original": "./projection/azimuthalEquidistant.js" + }, + { + "path": "node_modules/d3-geo/src/projection/conicConformal.js", + "kind": "import-statement", + "original": "./projection/conicConformal.js" + }, + { + "path": "node_modules/d3-geo/src/projection/conicEqualArea.js", + "kind": "import-statement", + "original": "./projection/conicEqualArea.js" + }, + { + "path": "node_modules/d3-geo/src/projection/conicEquidistant.js", + "kind": "import-statement", + "original": "./projection/conicEquidistant.js" + }, + { + "path": "node_modules/d3-geo/src/projection/equalEarth.js", + "kind": "import-statement", + "original": "./projection/equalEarth.js" + }, + { + "path": "node_modules/d3-geo/src/projection/equirectangular.js", + "kind": "import-statement", + "original": "./projection/equirectangular.js" + }, + { + "path": "node_modules/d3-geo/src/projection/gnomonic.js", + "kind": "import-statement", + "original": "./projection/gnomonic.js" + }, + { + "path": "node_modules/d3-geo/src/projection/identity.js", + "kind": "import-statement", + "original": "./projection/identity.js" + }, + { + "path": "node_modules/d3-geo/src/projection/index.js", + "kind": "import-statement", + "original": "./projection/index.js" + }, + { + "path": "node_modules/d3-geo/src/projection/mercator.js", + "kind": "import-statement", + "original": "./projection/mercator.js" + }, + { + "path": "node_modules/d3-geo/src/projection/naturalEarth1.js", + "kind": "import-statement", + "original": "./projection/naturalEarth1.js" + }, + { + "path": "node_modules/d3-geo/src/projection/orthographic.js", + "kind": "import-statement", + "original": "./projection/orthographic.js" + }, + { + "path": "node_modules/d3-geo/src/projection/stereographic.js", + "kind": "import-statement", + "original": "./projection/stereographic.js" + }, + { + "path": "node_modules/d3-geo/src/projection/transverseMercator.js", + "kind": "import-statement", + "original": "./projection/transverseMercator.js" + }, + { + "path": "node_modules/d3-geo/src/rotation.js", + "kind": "import-statement", + "original": "./rotation.js" + }, + { + "path": "node_modules/d3-geo/src/stream.js", + "kind": "import-statement", + "original": "./stream.js" + }, + { + "path": "node_modules/d3-geo/src/transform.js", + "kind": "import-statement", + "original": "./transform.js" + } + ], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/cluster.js": { + "bytes": 2068, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/hierarchy/count.js": { + "bytes": 255, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/hierarchy/each.js": { + "bytes": 156, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/hierarchy/eachBefore.js": { + "bytes": 350, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/hierarchy/eachAfter.js": { + "bytes": 429, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/hierarchy/find.js": { + "bytes": 172, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/hierarchy/sum.js": { + "bytes": 261, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/hierarchy/sort.js": { + "bytes": 152, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/hierarchy/path.js": { + "bytes": 597, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/hierarchy/ancestors.js": { + "bytes": 142, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/hierarchy/descendants.js": { + "bytes": 57, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/hierarchy/leaves.js": { + "bytes": 165, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/hierarchy/links.js": { + "bytes": 281, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/hierarchy/iterator.js": { + "bytes": 387, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/hierarchy/index.js": { + "bytes": 2189, + "imports": [ + { + "path": "node_modules/d3-hierarchy/src/hierarchy/count.js", + "kind": "import-statement", + "original": "./count.js" + }, + { + "path": "node_modules/d3-hierarchy/src/hierarchy/each.js", + "kind": "import-statement", + "original": "./each.js" + }, + { + "path": "node_modules/d3-hierarchy/src/hierarchy/eachBefore.js", + "kind": "import-statement", + "original": "./eachBefore.js" + }, + { + "path": "node_modules/d3-hierarchy/src/hierarchy/eachAfter.js", + "kind": "import-statement", + "original": "./eachAfter.js" + }, + { + "path": "node_modules/d3-hierarchy/src/hierarchy/find.js", + "kind": "import-statement", + "original": "./find.js" + }, + { + "path": "node_modules/d3-hierarchy/src/hierarchy/sum.js", + "kind": "import-statement", + "original": "./sum.js" + }, + { + "path": "node_modules/d3-hierarchy/src/hierarchy/sort.js", + "kind": "import-statement", + "original": "./sort.js" + }, + { + "path": "node_modules/d3-hierarchy/src/hierarchy/path.js", + "kind": "import-statement", + "original": "./path.js" + }, + { + "path": "node_modules/d3-hierarchy/src/hierarchy/ancestors.js", + "kind": "import-statement", + "original": "./ancestors.js" + }, + { + "path": "node_modules/d3-hierarchy/src/hierarchy/descendants.js", + "kind": "import-statement", + "original": "./descendants.js" + }, + { + "path": "node_modules/d3-hierarchy/src/hierarchy/leaves.js", + "kind": "import-statement", + "original": "./leaves.js" + }, + { + "path": "node_modules/d3-hierarchy/src/hierarchy/links.js", + "kind": "import-statement", + "original": "./links.js" + }, + { + "path": "node_modules/d3-hierarchy/src/hierarchy/iterator.js", + "kind": "import-statement", + "original": "./iterator.js" + } + ], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/accessors.js": { + "bytes": 166, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/constant.js": { + "bytes": 120, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/lcg.js": { + "bytes": 245, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/array.js": { + "bytes": 397, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/pack/enclose.js": { + "bytes": 3150, + "imports": [ + { + "path": "node_modules/d3-hierarchy/src/array.js", + "kind": "import-statement", + "original": "../array.js" + }, + { + "path": "node_modules/d3-hierarchy/src/lcg.js", + "kind": "import-statement", + "original": "../lcg.js" + } + ], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/pack/siblings.js": { + "bytes": 3320, + "imports": [ + { + "path": "node_modules/d3-hierarchy/src/array.js", + "kind": "import-statement", + "original": "../array.js" + }, + { + "path": "node_modules/d3-hierarchy/src/lcg.js", + "kind": "import-statement", + "original": "../lcg.js" + }, + { + "path": "node_modules/d3-hierarchy/src/pack/enclose.js", + "kind": "import-statement", + "original": "./enclose.js" + } + ], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/pack/index.js": { + "bytes": 1991, + "imports": [ + { + "path": "node_modules/d3-hierarchy/src/accessors.js", + "kind": "import-statement", + "original": "../accessors.js" + }, + { + "path": "node_modules/d3-hierarchy/src/constant.js", + "kind": "import-statement", + "original": "../constant.js" + }, + { + "path": "node_modules/d3-hierarchy/src/lcg.js", + "kind": "import-statement", + "original": "../lcg.js" + }, + { + "path": "node_modules/d3-hierarchy/src/pack/siblings.js", + "kind": "import-statement", + "original": "./siblings.js" + } + ], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/treemap/round.js": { + "bytes": 166, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/treemap/dice.js": { + "bytes": 300, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/partition.js": { + "bytes": 1253, + "imports": [ + { + "path": "node_modules/d3-hierarchy/src/treemap/round.js", + "kind": "import-statement", + "original": "./treemap/round.js" + }, + { + "path": "node_modules/d3-hierarchy/src/treemap/dice.js", + "kind": "import-statement", + "original": "./treemap/dice.js" + } + ], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/stratify.js": { + "bytes": 4086, + "imports": [ + { + "path": "node_modules/d3-hierarchy/src/accessors.js", + "kind": "import-statement", + "original": "./accessors.js" + }, + { + "path": "node_modules/d3-hierarchy/src/hierarchy/index.js", + "kind": "import-statement", + "original": "./hierarchy/index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/tree.js": { + "bytes": 6997, + "imports": [ + { + "path": "node_modules/d3-hierarchy/src/hierarchy/index.js", + "kind": "import-statement", + "original": "./hierarchy/index.js" + } + ], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/treemap/slice.js": { + "bytes": 300, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/treemap/squarify.js": { + "bytes": 1881, + "imports": [ + { + "path": "node_modules/d3-hierarchy/src/treemap/dice.js", + "kind": "import-statement", + "original": "./dice.js" + }, + { + "path": "node_modules/d3-hierarchy/src/treemap/slice.js", + "kind": "import-statement", + "original": "./slice.js" + } + ], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/treemap/index.js": { + "bytes": 2792, + "imports": [ + { + "path": "node_modules/d3-hierarchy/src/treemap/round.js", + "kind": "import-statement", + "original": "./round.js" + }, + { + "path": "node_modules/d3-hierarchy/src/treemap/squarify.js", + "kind": "import-statement", + "original": "./squarify.js" + }, + { + "path": "node_modules/d3-hierarchy/src/accessors.js", + "kind": "import-statement", + "original": "../accessors.js" + }, + { + "path": "node_modules/d3-hierarchy/src/constant.js", + "kind": "import-statement", + "original": "../constant.js" + } + ], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/treemap/binary.js": { + "bytes": 1263, + "imports": [], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/treemap/sliceDice.js": { + "bytes": 175, + "imports": [ + { + "path": "node_modules/d3-hierarchy/src/treemap/dice.js", + "kind": "import-statement", + "original": "./dice.js" + }, + { + "path": "node_modules/d3-hierarchy/src/treemap/slice.js", + "kind": "import-statement", + "original": "./slice.js" + } + ], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/treemap/resquarify.js": { + "bytes": 1036, + "imports": [ + { + "path": "node_modules/d3-hierarchy/src/treemap/dice.js", + "kind": "import-statement", + "original": "./dice.js" + }, + { + "path": "node_modules/d3-hierarchy/src/treemap/slice.js", + "kind": "import-statement", + "original": "./slice.js" + }, + { + "path": "node_modules/d3-hierarchy/src/treemap/squarify.js", + "kind": "import-statement", + "original": "./squarify.js" + } + ], + "format": "esm" + }, + "node_modules/d3-hierarchy/src/index.js": { + "bytes": 896, + "imports": [ + { + "path": "node_modules/d3-hierarchy/src/cluster.js", + "kind": "import-statement", + "original": "./cluster.js" + }, + { + "path": "node_modules/d3-hierarchy/src/hierarchy/index.js", + "kind": "import-statement", + "original": "./hierarchy/index.js" + }, + { + "path": "node_modules/d3-hierarchy/src/pack/index.js", + "kind": "import-statement", + "original": "./pack/index.js" + }, + { + "path": "node_modules/d3-hierarchy/src/pack/siblings.js", + "kind": "import-statement", + "original": "./pack/siblings.js" + }, + { + "path": "node_modules/d3-hierarchy/src/pack/enclose.js", + "kind": "import-statement", + "original": "./pack/enclose.js" + }, + { + "path": "node_modules/d3-hierarchy/src/partition.js", + "kind": "import-statement", + "original": "./partition.js" + }, + { + "path": "node_modules/d3-hierarchy/src/stratify.js", + "kind": "import-statement", + "original": "./stratify.js" + }, + { + "path": "node_modules/d3-hierarchy/src/tree.js", + "kind": "import-statement", + "original": "./tree.js" + }, + { + "path": "node_modules/d3-hierarchy/src/treemap/index.js", + "kind": "import-statement", + "original": "./treemap/index.js" + }, + { + "path": "node_modules/d3-hierarchy/src/treemap/binary.js", + "kind": "import-statement", + "original": "./treemap/binary.js" + }, + { + "path": "node_modules/d3-hierarchy/src/treemap/dice.js", + "kind": "import-statement", + "original": "./treemap/dice.js" + }, + { + "path": "node_modules/d3-hierarchy/src/treemap/slice.js", + "kind": "import-statement", + "original": "./treemap/slice.js" + }, + { + "path": "node_modules/d3-hierarchy/src/treemap/sliceDice.js", + "kind": "import-statement", + "original": "./treemap/sliceDice.js" + }, + { + "path": "node_modules/d3-hierarchy/src/treemap/squarify.js", + "kind": "import-statement", + "original": "./treemap/squarify.js" + }, + { + "path": "node_modules/d3-hierarchy/src/treemap/resquarify.js", + "kind": "import-statement", + "original": "./treemap/resquarify.js" + } + ], + "format": "esm" + }, + "node_modules/d3-polygon/src/area.js": { + "bytes": 233, + "imports": [], + "format": "esm" + }, + "node_modules/d3-polygon/src/centroid.js": { + "bytes": 330, + "imports": [], + "format": "esm" + }, + "node_modules/d3-polygon/src/cross.js": { + "bytes": 402, + "imports": [], + "format": "esm" + }, + "node_modules/d3-polygon/src/hull.js": { + "bytes": 1696, + "imports": [ + { + "path": "node_modules/d3-polygon/src/cross.js", + "kind": "import-statement", + "original": "./cross.js" + } + ], + "format": "esm" + }, + "node_modules/d3-polygon/src/contains.js": { + "bytes": 403, + "imports": [], + "format": "esm" + }, + "node_modules/d3-polygon/src/length.js": { + "bytes": 349, + "imports": [], + "format": "esm" + }, + "node_modules/d3-polygon/src/index.js": { + "bytes": 279, + "imports": [ + { + "path": "node_modules/d3-polygon/src/area.js", + "kind": "import-statement", + "original": "./area.js" + }, + { + "path": "node_modules/d3-polygon/src/centroid.js", + "kind": "import-statement", + "original": "./centroid.js" + }, + { + "path": "node_modules/d3-polygon/src/hull.js", + "kind": "import-statement", + "original": "./hull.js" + }, + { + "path": "node_modules/d3-polygon/src/contains.js", + "kind": "import-statement", + "original": "./contains.js" + }, + { + "path": "node_modules/d3-polygon/src/length.js", + "kind": "import-statement", + "original": "./length.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/defaultSource.js": { + "bytes": 27, + "imports": [], + "format": "esm" + }, + "node_modules/d3-random/src/uniform.js": { + "bytes": 435, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/int.js": { + "bytes": 401, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/normal.js": { + "bytes": 712, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/logNormal.js": { + "bytes": 421, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + }, + { + "path": "node_modules/d3-random/src/normal.js", + "kind": "import-statement", + "original": "./normal.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/irwinHall.js": { + "bytes": 399, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/bates.js": { + "bytes": 474, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + }, + { + "path": "node_modules/d3-random/src/irwinHall.js", + "kind": "import-statement", + "original": "./irwinHall.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/exponential.js": { + "bytes": 328, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/pareto.js": { + "bytes": 393, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/bernoulli.js": { + "bytes": 372, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/geometric.js": { + "bytes": 486, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/gamma.js": { + "bytes": 1067, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + }, + { + "path": "node_modules/d3-random/src/normal.js", + "kind": "import-statement", + "original": "./normal.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/beta.js": { + "bytes": 418, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + }, + { + "path": "node_modules/d3-random/src/gamma.js", + "kind": "import-statement", + "original": "./gamma.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/binomial.js": { + "bytes": 1017, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + }, + { + "path": "node_modules/d3-random/src/beta.js", + "kind": "import-statement", + "original": "./beta.js" + }, + { + "path": "node_modules/d3-random/src/geometric.js", + "kind": "import-statement", + "original": "./geometric.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/weibull.js": { + "bytes": 532, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/cauchy.js": { + "bytes": 362, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/logistic.js": { + "bytes": 389, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/poisson.js": { + "bytes": 726, + "imports": [ + { + "path": "node_modules/d3-random/src/defaultSource.js", + "kind": "import-statement", + "original": "./defaultSource.js" + }, + { + "path": "node_modules/d3-random/src/binomial.js", + "kind": "import-statement", + "original": "./binomial.js" + }, + { + "path": "node_modules/d3-random/src/gamma.js", + "kind": "import-statement", + "original": "./gamma.js" + } + ], + "format": "esm" + }, + "node_modules/d3-random/src/lcg.js": { + "bytes": 358, + "imports": [], + "format": "esm" + }, + "node_modules/d3-random/src/index.js": { + "bytes": 1017, + "imports": [ + { + "path": "node_modules/d3-random/src/uniform.js", + "kind": "import-statement", + "original": "./uniform.js" + }, + { + "path": "node_modules/d3-random/src/int.js", + "kind": "import-statement", + "original": "./int.js" + }, + { + "path": "node_modules/d3-random/src/normal.js", + "kind": "import-statement", + "original": "./normal.js" + }, + { + "path": "node_modules/d3-random/src/logNormal.js", + "kind": "import-statement", + "original": "./logNormal.js" + }, + { + "path": "node_modules/d3-random/src/bates.js", + "kind": "import-statement", + "original": "./bates.js" + }, + { + "path": "node_modules/d3-random/src/irwinHall.js", + "kind": "import-statement", + "original": "./irwinHall.js" + }, + { + "path": "node_modules/d3-random/src/exponential.js", + "kind": "import-statement", + "original": "./exponential.js" + }, + { + "path": "node_modules/d3-random/src/pareto.js", + "kind": "import-statement", + "original": "./pareto.js" + }, + { + "path": "node_modules/d3-random/src/bernoulli.js", + "kind": "import-statement", + "original": "./bernoulli.js" + }, + { + "path": "node_modules/d3-random/src/geometric.js", + "kind": "import-statement", + "original": "./geometric.js" + }, + { + "path": "node_modules/d3-random/src/binomial.js", + "kind": "import-statement", + "original": "./binomial.js" + }, + { + "path": "node_modules/d3-random/src/gamma.js", + "kind": "import-statement", + "original": "./gamma.js" + }, + { + "path": "node_modules/d3-random/src/beta.js", + "kind": "import-statement", + "original": "./beta.js" + }, + { + "path": "node_modules/d3-random/src/weibull.js", + "kind": "import-statement", + "original": "./weibull.js" + }, + { + "path": "node_modules/d3-random/src/cauchy.js", + "kind": "import-statement", + "original": "./cauchy.js" + }, + { + "path": "node_modules/d3-random/src/logistic.js", + "kind": "import-statement", + "original": "./logistic.js" + }, + { + "path": "node_modules/d3-random/src/poisson.js", + "kind": "import-statement", + "original": "./poisson.js" + }, + { + "path": "node_modules/d3-random/src/lcg.js", + "kind": "import-statement", + "original": "./lcg.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/init.js": { + "bytes": 688, + "imports": [], + "format": "esm" + }, + "node_modules/d3-scale/src/ordinal.js": { + "bytes": 1080, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/band.js": { + "bytes": 2597, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + }, + { + "path": "node_modules/d3-scale/src/ordinal.js", + "kind": "import-statement", + "original": "./ordinal.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/constant.js": { + "bytes": 82, + "imports": [], + "format": "esm" + }, + "node_modules/d3-scale/src/number.js": { + "bytes": 50, + "imports": [], + "format": "esm" + }, + "node_modules/d3-scale/src/continuous.js": { + "bytes": 3418, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-interpolate/src/index.js", + "kind": "import-statement", + "original": "d3-interpolate" + }, + { + "path": "node_modules/d3-scale/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-scale/src/number.js", + "kind": "import-statement", + "original": "./number.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/tickFormat.js": { + "bytes": 1171, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-format/src/index.js", + "kind": "import-statement", + "original": "d3-format" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/linear.js": { + "bytes": 1614, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-scale/src/continuous.js", + "kind": "import-statement", + "original": "./continuous.js" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + }, + { + "path": "node_modules/d3-scale/src/tickFormat.js", + "kind": "import-statement", + "original": "./tickFormat.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/identity.js": { + "bytes": 650, + "imports": [ + { + "path": "node_modules/d3-scale/src/linear.js", + "kind": "import-statement", + "original": "./linear.js" + }, + { + "path": "node_modules/d3-scale/src/number.js", + "kind": "import-statement", + "original": "./number.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/nice.js": { + "bytes": 333, + "imports": [], + "format": "esm" + }, + "node_modules/d3-scale/src/log.js": { + "bytes": 3417, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-format/src/index.js", + "kind": "import-statement", + "original": "d3-format" + }, + { + "path": "node_modules/d3-scale/src/nice.js", + "kind": "import-statement", + "original": "./nice.js" + }, + { + "path": "node_modules/d3-scale/src/continuous.js", + "kind": "import-statement", + "original": "./continuous.js" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/symlog.js": { + "bytes": 853, + "imports": [ + { + "path": "node_modules/d3-scale/src/linear.js", + "kind": "import-statement", + "original": "./linear.js" + }, + { + "path": "node_modules/d3-scale/src/continuous.js", + "kind": "import-statement", + "original": "./continuous.js" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/pow.js": { + "bytes": 1161, + "imports": [ + { + "path": "node_modules/d3-scale/src/linear.js", + "kind": "import-statement", + "original": "./linear.js" + }, + { + "path": "node_modules/d3-scale/src/continuous.js", + "kind": "import-statement", + "original": "./continuous.js" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/radial.js": { + "bytes": 1442, + "imports": [ + { + "path": "node_modules/d3-scale/src/continuous.js", + "kind": "import-statement", + "original": "./continuous.js" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + }, + { + "path": "node_modules/d3-scale/src/linear.js", + "kind": "import-statement", + "original": "./linear.js" + }, + { + "path": "node_modules/d3-scale/src/number.js", + "kind": "import-statement", + "original": "./number.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/quantile.js": { + "bytes": 1396, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/quantize.js": { + "bytes": 1279, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-scale/src/linear.js", + "kind": "import-statement", + "original": "./linear.js" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/threshold.js": { + "bytes": 964, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + } + ], + "format": "esm" + }, + "node_modules/d3-time/src/interval.js": { + "bytes": 2010, + "imports": [], + "format": "esm" + }, + "node_modules/d3-time/src/millisecond.js": { + "bytes": 628, + "imports": [ + { + "path": "node_modules/d3-time/src/interval.js", + "kind": "import-statement", + "original": "./interval.js" + } + ], + "format": "esm" + }, + "node_modules/d3-time/src/duration.js": { + "bytes": 320, + "imports": [], + "format": "esm" + }, + "node_modules/d3-time/src/second.js": { + "bytes": 400, + "imports": [ + { + "path": "node_modules/d3-time/src/interval.js", + "kind": "import-statement", + "original": "./interval.js" + }, + { + "path": "node_modules/d3-time/src/duration.js", + "kind": "import-statement", + "original": "./duration.js" + } + ], + "format": "esm" + }, + "node_modules/d3-time/src/minute.js": { + "bytes": 759, + "imports": [ + { + "path": "node_modules/d3-time/src/interval.js", + "kind": "import-statement", + "original": "./interval.js" + }, + { + "path": "node_modules/d3-time/src/duration.js", + "kind": "import-statement", + "original": "./duration.js" + } + ], + "format": "esm" + }, + "node_modules/d3-time/src/hour.js": { + "bytes": 789, + "imports": [ + { + "path": "node_modules/d3-time/src/interval.js", + "kind": "import-statement", + "original": "./interval.js" + }, + { + "path": "node_modules/d3-time/src/duration.js", + "kind": "import-statement", + "original": "./duration.js" + } + ], + "format": "esm" + }, + "node_modules/d3-time/src/day.js": { + "bytes": 1004, + "imports": [ + { + "path": "node_modules/d3-time/src/interval.js", + "kind": "import-statement", + "original": "./interval.js" + }, + { + "path": "node_modules/d3-time/src/duration.js", + "kind": "import-statement", + "original": "./duration.js" + } + ], + "format": "esm" + }, + "node_modules/d3-time/src/week.js": { + "bytes": 2021, + "imports": [ + { + "path": "node_modules/d3-time/src/interval.js", + "kind": "import-statement", + "original": "./interval.js" + }, + { + "path": "node_modules/d3-time/src/duration.js", + "kind": "import-statement", + "original": "./duration.js" + } + ], + "format": "esm" + }, + "node_modules/d3-time/src/month.js": { + "bytes": 785, + "imports": [ + { + "path": "node_modules/d3-time/src/interval.js", + "kind": "import-statement", + "original": "./interval.js" + } + ], + "format": "esm" + }, + "node_modules/d3-time/src/year.js": { + "bytes": 1456, + "imports": [ + { + "path": "node_modules/d3-time/src/interval.js", + "kind": "import-statement", + "original": "./interval.js" + } + ], + "format": "esm" + }, + "node_modules/d3-time/src/ticks.js": { + "bytes": 2372, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-time/src/duration.js", + "kind": "import-statement", + "original": "./duration.js" + }, + { + "path": "node_modules/d3-time/src/millisecond.js", + "kind": "import-statement", + "original": "./millisecond.js" + }, + { + "path": "node_modules/d3-time/src/second.js", + "kind": "import-statement", + "original": "./second.js" + }, + { + "path": "node_modules/d3-time/src/minute.js", + "kind": "import-statement", + "original": "./minute.js" + }, + { + "path": "node_modules/d3-time/src/hour.js", + "kind": "import-statement", + "original": "./hour.js" + }, + { + "path": "node_modules/d3-time/src/day.js", + "kind": "import-statement", + "original": "./day.js" + }, + { + "path": "node_modules/d3-time/src/week.js", + "kind": "import-statement", + "original": "./week.js" + }, + { + "path": "node_modules/d3-time/src/month.js", + "kind": "import-statement", + "original": "./month.js" + }, + { + "path": "node_modules/d3-time/src/year.js", + "kind": "import-statement", + "original": "./year.js" + } + ], + "format": "esm" + }, + "node_modules/d3-time/src/index.js": { + "bytes": 1276, + "imports": [ + { + "path": "node_modules/d3-time/src/interval.js", + "kind": "import-statement", + "original": "./interval.js" + }, + { + "path": "node_modules/d3-time/src/millisecond.js", + "kind": "import-statement", + "original": "./millisecond.js" + }, + { + "path": "node_modules/d3-time/src/second.js", + "kind": "import-statement", + "original": "./second.js" + }, + { + "path": "node_modules/d3-time/src/minute.js", + "kind": "import-statement", + "original": "./minute.js" + }, + { + "path": "node_modules/d3-time/src/hour.js", + "kind": "import-statement", + "original": "./hour.js" + }, + { + "path": "node_modules/d3-time/src/day.js", + "kind": "import-statement", + "original": "./day.js" + }, + { + "path": "node_modules/d3-time/src/week.js", + "kind": "import-statement", + "original": "./week.js" + }, + { + "path": "node_modules/d3-time/src/month.js", + "kind": "import-statement", + "original": "./month.js" + }, + { + "path": "node_modules/d3-time/src/year.js", + "kind": "import-statement", + "original": "./year.js" + }, + { + "path": "node_modules/d3-time/src/ticks.js", + "kind": "import-statement", + "original": "./ticks.js" + } + ], + "format": "esm" + }, + "node_modules/d3-time-format/src/locale.js": { + "bytes": 18476, + "imports": [ + { + "path": "node_modules/d3-time/src/index.js", + "kind": "import-statement", + "original": "d3-time" + } + ], + "format": "esm" + }, + "node_modules/d3-time-format/src/defaultLocale.js": { + "bytes": 866, + "imports": [ + { + "path": "node_modules/d3-time-format/src/locale.js", + "kind": "import-statement", + "original": "./locale.js" + } + ], + "format": "esm" + }, + "node_modules/d3-time-format/src/isoFormat.js": { + "bytes": 276, + "imports": [ + { + "path": "node_modules/d3-time-format/src/defaultLocale.js", + "kind": "import-statement", + "original": "./defaultLocale.js" + } + ], + "format": "esm" + }, + "node_modules/d3-time-format/src/isoParse.js": { + "bytes": 317, + "imports": [ + { + "path": "node_modules/d3-time-format/src/isoFormat.js", + "kind": "import-statement", + "original": "./isoFormat.js" + }, + { + "path": "node_modules/d3-time-format/src/defaultLocale.js", + "kind": "import-statement", + "original": "./defaultLocale.js" + } + ], + "format": "esm" + }, + "node_modules/d3-time-format/src/index.js": { + "bytes": 283, + "imports": [ + { + "path": "node_modules/d3-time-format/src/defaultLocale.js", + "kind": "import-statement", + "original": "./defaultLocale.js" + }, + { + "path": "node_modules/d3-time-format/src/locale.js", + "kind": "import-statement", + "original": "./locale.js" + }, + { + "path": "node_modules/d3-time-format/src/isoFormat.js", + "kind": "import-statement", + "original": "./isoFormat.js" + }, + { + "path": "node_modules/d3-time-format/src/isoParse.js", + "kind": "import-statement", + "original": "./isoParse.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/time.js": { + "bytes": 2299, + "imports": [ + { + "path": "node_modules/d3-time/src/index.js", + "kind": "import-statement", + "original": "d3-time" + }, + { + "path": "node_modules/d3-time-format/src/index.js", + "kind": "import-statement", + "original": "d3-time-format" + }, + { + "path": "node_modules/d3-scale/src/continuous.js", + "kind": "import-statement", + "original": "./continuous.js" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + }, + { + "path": "node_modules/d3-scale/src/nice.js", + "kind": "import-statement", + "original": "./nice.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/utcTime.js": { + "bytes": 483, + "imports": [ + { + "path": "node_modules/d3-time/src/index.js", + "kind": "import-statement", + "original": "d3-time" + }, + { + "path": "node_modules/d3-time-format/src/index.js", + "kind": "import-statement", + "original": "d3-time-format" + }, + { + "path": "node_modules/d3-scale/src/time.js", + "kind": "import-statement", + "original": "./time.js" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/sequential.js": { + "bytes": 2741, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/index.js", + "kind": "import-statement", + "original": "d3-interpolate" + }, + { + "path": "node_modules/d3-scale/src/continuous.js", + "kind": "import-statement", + "original": "./continuous.js" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + }, + { + "path": "node_modules/d3-scale/src/linear.js", + "kind": "import-statement", + "original": "./linear.js" + }, + { + "path": "node_modules/d3-scale/src/log.js", + "kind": "import-statement", + "original": "./log.js" + }, + { + "path": "node_modules/d3-scale/src/symlog.js", + "kind": "import-statement", + "original": "./symlog.js" + }, + { + "path": "node_modules/d3-scale/src/pow.js", + "kind": "import-statement", + "original": "./pow.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/sequentialQuantile.js": { + "bytes": 1090, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-scale/src/continuous.js", + "kind": "import-statement", + "original": "./continuous.js" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/diverging.js": { + "bytes": 2886, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/index.js", + "kind": "import-statement", + "original": "d3-interpolate" + }, + { + "path": "node_modules/d3-scale/src/continuous.js", + "kind": "import-statement", + "original": "./continuous.js" + }, + { + "path": "node_modules/d3-scale/src/init.js", + "kind": "import-statement", + "original": "./init.js" + }, + { + "path": "node_modules/d3-scale/src/linear.js", + "kind": "import-statement", + "original": "./linear.js" + }, + { + "path": "node_modules/d3-scale/src/log.js", + "kind": "import-statement", + "original": "./log.js" + }, + { + "path": "node_modules/d3-scale/src/sequential.js", + "kind": "import-statement", + "original": "./sequential.js" + }, + { + "path": "node_modules/d3-scale/src/symlog.js", + "kind": "import-statement", + "original": "./symlog.js" + }, + { + "path": "node_modules/d3-scale/src/pow.js", + "kind": "import-statement", + "original": "./pow.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale/src/index.js": { + "bytes": 1327, + "imports": [ + { + "path": "node_modules/d3-scale/src/band.js", + "kind": "import-statement", + "original": "./band.js" + }, + { + "path": "node_modules/d3-scale/src/identity.js", + "kind": "import-statement", + "original": "./identity.js" + }, + { + "path": "node_modules/d3-scale/src/linear.js", + "kind": "import-statement", + "original": "./linear.js" + }, + { + "path": "node_modules/d3-scale/src/log.js", + "kind": "import-statement", + "original": "./log.js" + }, + { + "path": "node_modules/d3-scale/src/symlog.js", + "kind": "import-statement", + "original": "./symlog.js" + }, + { + "path": "node_modules/d3-scale/src/ordinal.js", + "kind": "import-statement", + "original": "./ordinal.js" + }, + { + "path": "node_modules/d3-scale/src/pow.js", + "kind": "import-statement", + "original": "./pow.js" + }, + { + "path": "node_modules/d3-scale/src/radial.js", + "kind": "import-statement", + "original": "./radial.js" + }, + { + "path": "node_modules/d3-scale/src/quantile.js", + "kind": "import-statement", + "original": "./quantile.js" + }, + { + "path": "node_modules/d3-scale/src/quantize.js", + "kind": "import-statement", + "original": "./quantize.js" + }, + { + "path": "node_modules/d3-scale/src/threshold.js", + "kind": "import-statement", + "original": "./threshold.js" + }, + { + "path": "node_modules/d3-scale/src/time.js", + "kind": "import-statement", + "original": "./time.js" + }, + { + "path": "node_modules/d3-scale/src/utcTime.js", + "kind": "import-statement", + "original": "./utcTime.js" + }, + { + "path": "node_modules/d3-scale/src/sequential.js", + "kind": "import-statement", + "original": "./sequential.js" + }, + { + "path": "node_modules/d3-scale/src/sequentialQuantile.js", + "kind": "import-statement", + "original": "./sequentialQuantile.js" + }, + { + "path": "node_modules/d3-scale/src/diverging.js", + "kind": "import-statement", + "original": "./diverging.js" + }, + { + "path": "node_modules/d3-scale/src/tickFormat.js", + "kind": "import-statement", + "original": "./tickFormat.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/colors.js": { + "bytes": 197, + "imports": [], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/categorical/category10.js": { + "bytes": 121, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/categorical/Accent.js": { + "bytes": 109, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/categorical/Dark2.js": { + "bytes": 109, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/categorical/observable10.js": { + "bytes": 121, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/categorical/Paired.js": { + "bytes": 133, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/categorical/Pastel1.js": { + "bytes": 115, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/categorical/Pastel2.js": { + "bytes": 109, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/categorical/Set1.js": { + "bytes": 115, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/categorical/Set2.js": { + "bytes": 109, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/categorical/Set3.js": { + "bytes": 133, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/categorical/Tableau10.js": { + "bytes": 121, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/ramp.js": { + "bytes": 128, + "imports": [ + { + "path": "node_modules/d3-interpolate/src/index.js", + "kind": "import-statement", + "original": "d3-interpolate" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/diverging/BrBG.js": { + "bytes": 561, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/diverging/PRGn.js": { + "bytes": 561, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/diverging/PiYG.js": { + "bytes": 561, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/diverging/PuOr.js": { + "bytes": 561, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/diverging/RdBu.js": { + "bytes": 561, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/diverging/RdGy.js": { + "bytes": 561, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js": { + "bytes": 561, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js": { + "bytes": 561, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/diverging/Spectral.js": { + "bytes": 561, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-single/Blues.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-single/Greens.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-single/Greys.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-single/Purples.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-single/Reds.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js": { + "bytes": 427, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/ramp.js", + "kind": "import-statement", + "original": "../ramp.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js": { + "bytes": 470, + "imports": [], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js": { + "bytes": 190, + "imports": [ + { + "path": "node_modules/d3-color/src/index.js", + "kind": "import-statement", + "original": "d3-color" + }, + { + "path": "node_modules/d3-interpolate/src/index.js", + "kind": "import-statement", + "original": "d3-interpolate" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js": { + "bytes": 506, + "imports": [ + { + "path": "node_modules/d3-color/src/index.js", + "kind": "import-statement", + "original": "d3-color" + }, + { + "path": "node_modules/d3-interpolate/src/index.js", + "kind": "import-statement", + "original": "d3-interpolate" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js": { + "bytes": 312, + "imports": [ + { + "path": "node_modules/d3-color/src/index.js", + "kind": "import-statement", + "original": "d3-color" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js": { + "bytes": 481, + "imports": [], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js": { + "bytes": 6470, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/colors.js", + "kind": "import-statement", + "original": "../colors.js" + } + ], + "format": "esm" + }, + "node_modules/d3-scale-chromatic/src/index.js": { + "bytes": 3956, + "imports": [ + { + "path": "node_modules/d3-scale-chromatic/src/categorical/category10.js", + "kind": "import-statement", + "original": "./categorical/category10.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/categorical/Accent.js", + "kind": "import-statement", + "original": "./categorical/Accent.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/categorical/Dark2.js", + "kind": "import-statement", + "original": "./categorical/Dark2.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/categorical/observable10.js", + "kind": "import-statement", + "original": "./categorical/observable10.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/categorical/Paired.js", + "kind": "import-statement", + "original": "./categorical/Paired.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/categorical/Pastel1.js", + "kind": "import-statement", + "original": "./categorical/Pastel1.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/categorical/Pastel2.js", + "kind": "import-statement", + "original": "./categorical/Pastel2.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/categorical/Set1.js", + "kind": "import-statement", + "original": "./categorical/Set1.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/categorical/Set2.js", + "kind": "import-statement", + "original": "./categorical/Set2.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/categorical/Set3.js", + "kind": "import-statement", + "original": "./categorical/Set3.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/categorical/Tableau10.js", + "kind": "import-statement", + "original": "./categorical/Tableau10.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/diverging/BrBG.js", + "kind": "import-statement", + "original": "./diverging/BrBG.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/diverging/PRGn.js", + "kind": "import-statement", + "original": "./diverging/PRGn.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/diverging/PiYG.js", + "kind": "import-statement", + "original": "./diverging/PiYG.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/diverging/PuOr.js", + "kind": "import-statement", + "original": "./diverging/PuOr.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/diverging/RdBu.js", + "kind": "import-statement", + "original": "./diverging/RdBu.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/diverging/RdGy.js", + "kind": "import-statement", + "original": "./diverging/RdGy.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js", + "kind": "import-statement", + "original": "./diverging/RdYlBu.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js", + "kind": "import-statement", + "original": "./diverging/RdYlGn.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/diverging/Spectral.js", + "kind": "import-statement", + "original": "./diverging/Spectral.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js", + "kind": "import-statement", + "original": "./sequential-multi/BuGn.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js", + "kind": "import-statement", + "original": "./sequential-multi/BuPu.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js", + "kind": "import-statement", + "original": "./sequential-multi/GnBu.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js", + "kind": "import-statement", + "original": "./sequential-multi/OrRd.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js", + "kind": "import-statement", + "original": "./sequential-multi/PuBuGn.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js", + "kind": "import-statement", + "original": "./sequential-multi/PuBu.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js", + "kind": "import-statement", + "original": "./sequential-multi/PuRd.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js", + "kind": "import-statement", + "original": "./sequential-multi/RdPu.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js", + "kind": "import-statement", + "original": "./sequential-multi/YlGnBu.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js", + "kind": "import-statement", + "original": "./sequential-multi/YlGn.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js", + "kind": "import-statement", + "original": "./sequential-multi/YlOrBr.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js", + "kind": "import-statement", + "original": "./sequential-multi/YlOrRd.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-single/Blues.js", + "kind": "import-statement", + "original": "./sequential-single/Blues.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-single/Greens.js", + "kind": "import-statement", + "original": "./sequential-single/Greens.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-single/Greys.js", + "kind": "import-statement", + "original": "./sequential-single/Greys.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-single/Purples.js", + "kind": "import-statement", + "original": "./sequential-single/Purples.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-single/Reds.js", + "kind": "import-statement", + "original": "./sequential-single/Reds.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js", + "kind": "import-statement", + "original": "./sequential-single/Oranges.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js", + "kind": "import-statement", + "original": "./sequential-multi/cividis.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js", + "kind": "import-statement", + "original": "./sequential-multi/cubehelix.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js", + "kind": "import-statement", + "original": "./sequential-multi/rainbow.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js", + "kind": "import-statement", + "original": "./sequential-multi/sinebow.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js", + "kind": "import-statement", + "original": "./sequential-multi/turbo.js" + }, + { + "path": "node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js", + "kind": "import-statement", + "original": "./sequential-multi/viridis.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/constant.js": { + "bytes": 81, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/math.js": { + "bytes": 488, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/path.js": { + "bytes": 392, + "imports": [ + { + "path": "node_modules/d3-path/src/index.js", + "kind": "import-statement", + "original": "d3-path" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/arc.js": { + "bytes": 8680, + "imports": [ + { + "path": "node_modules/d3-shape/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "./math.js" + }, + { + "path": "node_modules/d3-shape/src/path.js", + "kind": "import-statement", + "original": "./path.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/array.js": { + "bytes": 235, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/linear.js": { + "bytes": 799, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/point.js": { + "bytes": 79, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/line.js": { + "bytes": 1701, + "imports": [ + { + "path": "node_modules/d3-shape/src/array.js", + "kind": "import-statement", + "original": "./array.js" + }, + { + "path": "node_modules/d3-shape/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-shape/src/curve/linear.js", + "kind": "import-statement", + "original": "./curve/linear.js" + }, + { + "path": "node_modules/d3-shape/src/path.js", + "kind": "import-statement", + "original": "./path.js" + }, + { + "path": "node_modules/d3-shape/src/point.js", + "kind": "import-statement", + "original": "./point.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/area.js": { + "bytes": 3180, + "imports": [ + { + "path": "node_modules/d3-shape/src/array.js", + "kind": "import-statement", + "original": "./array.js" + }, + { + "path": "node_modules/d3-shape/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-shape/src/curve/linear.js", + "kind": "import-statement", + "original": "./curve/linear.js" + }, + { + "path": "node_modules/d3-shape/src/line.js", + "kind": "import-statement", + "original": "./line.js" + }, + { + "path": "node_modules/d3-shape/src/path.js", + "kind": "import-statement", + "original": "./path.js" + }, + { + "path": "node_modules/d3-shape/src/point.js", + "kind": "import-statement", + "original": "./point.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/descending.js": { + "bytes": 86, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/identity.js": { + "bytes": 43, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/pie.js": { + "bytes": 2376, + "imports": [ + { + "path": "node_modules/d3-shape/src/array.js", + "kind": "import-statement", + "original": "./array.js" + }, + { + "path": "node_modules/d3-shape/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-shape/src/descending.js", + "kind": "import-statement", + "original": "./descending.js" + }, + { + "path": "node_modules/d3-shape/src/identity.js", + "kind": "import-statement", + "original": "./identity.js" + }, + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "./math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/radial.js": { + "bytes": 655, + "imports": [ + { + "path": "node_modules/d3-shape/src/curve/linear.js", + "kind": "import-statement", + "original": "./linear.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/lineRadial.js": { + "bytes": 400, + "imports": [ + { + "path": "node_modules/d3-shape/src/curve/radial.js", + "kind": "import-statement", + "original": "./curve/radial.js" + }, + { + "path": "node_modules/d3-shape/src/line.js", + "kind": "import-statement", + "original": "./line.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/areaRadial.js": { + "bytes": 963, + "imports": [ + { + "path": "node_modules/d3-shape/src/curve/radial.js", + "kind": "import-statement", + "original": "./curve/radial.js" + }, + { + "path": "node_modules/d3-shape/src/area.js", + "kind": "import-statement", + "original": "./area.js" + }, + { + "path": "node_modules/d3-shape/src/lineRadial.js", + "kind": "import-statement", + "original": "./lineRadial.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/pointRadial.js": { + "bytes": 101, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/bump.js": { + "bytes": 1767, + "imports": [ + { + "path": "node_modules/d3-shape/src/pointRadial.js", + "kind": "import-statement", + "original": "../pointRadial.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/link.js": { + "bytes": 1822, + "imports": [ + { + "path": "node_modules/d3-shape/src/array.js", + "kind": "import-statement", + "original": "./array.js" + }, + { + "path": "node_modules/d3-shape/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-shape/src/curve/bump.js", + "kind": "import-statement", + "original": "./curve/bump.js" + }, + { + "path": "node_modules/d3-shape/src/path.js", + "kind": "import-statement", + "original": "./path.js" + }, + { + "path": "node_modules/d3-shape/src/point.js", + "kind": "import-statement", + "original": "./point.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/symbol/asterisk.js": { + "bytes": 376, + "imports": [ + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/symbol/circle.js": { + "bytes": 182, + "imports": [ + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/symbol/cross.js": { + "bytes": 497, + "imports": [ + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/symbol/diamond.js": { + "bytes": 328, + "imports": [ + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/symbol/diamond2.js": { + "bytes": 249, + "imports": [ + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/symbol/plus.js": { + "bytes": 248, + "imports": [ + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/symbol/square.js": { + "bytes": 160, + "imports": [ + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/symbol/square2.js": { + "bytes": 250, + "imports": [ + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/symbol/star.js": { + "bytes": 602, + "imports": [ + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/symbol/triangle.js": { + "bytes": 272, + "imports": [ + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/symbol/triangle2.js": { + "bytes": 315, + "imports": [ + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/symbol/wye.js": { + "bytes": 751, + "imports": [ + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/symbol/times.js": { + "bytes": 251, + "imports": [ + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "../math.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/symbol.js": { + "bytes": 1802, + "imports": [ + { + "path": "node_modules/d3-shape/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-shape/src/path.js", + "kind": "import-statement", + "original": "./path.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/asterisk.js", + "kind": "import-statement", + "original": "./symbol/asterisk.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/circle.js", + "kind": "import-statement", + "original": "./symbol/circle.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/cross.js", + "kind": "import-statement", + "original": "./symbol/cross.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/diamond.js", + "kind": "import-statement", + "original": "./symbol/diamond.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/diamond2.js", + "kind": "import-statement", + "original": "./symbol/diamond2.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/plus.js", + "kind": "import-statement", + "original": "./symbol/plus.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/square.js", + "kind": "import-statement", + "original": "./symbol/square.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/square2.js", + "kind": "import-statement", + "original": "./symbol/square2.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/star.js", + "kind": "import-statement", + "original": "./symbol/star.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/triangle.js", + "kind": "import-statement", + "original": "./symbol/triangle.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/triangle2.js", + "kind": "import-statement", + "original": "./symbol/triangle2.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/wye.js", + "kind": "import-statement", + "original": "./symbol/wye.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/times.js", + "kind": "import-statement", + "original": "./symbol/times.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/noop.js": { + "bytes": 29, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/basis.js": { + "bytes": 1524, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/basisClosed.js": { + "bytes": 1682, + "imports": [ + { + "path": "node_modules/d3-shape/src/noop.js", + "kind": "import-statement", + "original": "../noop.js" + }, + { + "path": "node_modules/d3-shape/src/curve/basis.js", + "kind": "import-statement", + "original": "./basis.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/basisOpen.js": { + "bytes": 1180, + "imports": [ + { + "path": "node_modules/d3-shape/src/curve/basis.js", + "kind": "import-statement", + "original": "./basis.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/bundle.js": { + "bytes": 1036, + "imports": [ + { + "path": "node_modules/d3-shape/src/curve/basis.js", + "kind": "import-statement", + "original": "./basis.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/cardinal.js": { + "bytes": 1714, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/cardinalClosed.js": { + "bytes": 1744, + "imports": [ + { + "path": "node_modules/d3-shape/src/noop.js", + "kind": "import-statement", + "original": "../noop.js" + }, + { + "path": "node_modules/d3-shape/src/curve/cardinal.js", + "kind": "import-statement", + "original": "./cardinal.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/cardinalOpen.js": { + "bytes": 1378, + "imports": [ + { + "path": "node_modules/d3-shape/src/curve/cardinal.js", + "kind": "import-statement", + "original": "./cardinal.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/catmullRom.js": { + "bytes": 2721, + "imports": [ + { + "path": "node_modules/d3-shape/src/math.js", + "kind": "import-statement", + "original": "../math.js" + }, + { + "path": "node_modules/d3-shape/src/curve/cardinal.js", + "kind": "import-statement", + "original": "./cardinal.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/catmullRomClosed.js": { + "bytes": 2214, + "imports": [ + { + "path": "node_modules/d3-shape/src/curve/cardinalClosed.js", + "kind": "import-statement", + "original": "./cardinalClosed.js" + }, + { + "path": "node_modules/d3-shape/src/noop.js", + "kind": "import-statement", + "original": "../noop.js" + }, + { + "path": "node_modules/d3-shape/src/curve/catmullRom.js", + "kind": "import-statement", + "original": "./catmullRom.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/catmullRomOpen.js": { + "bytes": 1842, + "imports": [ + { + "path": "node_modules/d3-shape/src/curve/cardinalOpen.js", + "kind": "import-statement", + "original": "./cardinalOpen.js" + }, + { + "path": "node_modules/d3-shape/src/curve/catmullRom.js", + "kind": "import-statement", + "original": "./catmullRom.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/linearClosed.js": { + "bytes": 512, + "imports": [ + { + "path": "node_modules/d3-shape/src/noop.js", + "kind": "import-statement", + "original": "../noop.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/monotone.js": { + "bytes": 3313, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/natural.js": { + "bytes": 1744, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/curve/step.js": { + "bytes": 1438, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/offset/none.js": { + "bytes": 309, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/order/none.js": { + "bytes": 124, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/stack.js": { + "bytes": 1422, + "imports": [ + { + "path": "node_modules/d3-shape/src/array.js", + "kind": "import-statement", + "original": "./array.js" + }, + { + "path": "node_modules/d3-shape/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-shape/src/offset/none.js", + "kind": "import-statement", + "original": "./offset/none.js" + }, + { + "path": "node_modules/d3-shape/src/order/none.js", + "kind": "import-statement", + "original": "./order/none.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/offset/expand.js": { + "bytes": 321, + "imports": [ + { + "path": "node_modules/d3-shape/src/offset/none.js", + "kind": "import-statement", + "original": "./none.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/offset/diverging.js": { + "bytes": 431, + "imports": [], + "format": "esm" + }, + "node_modules/d3-shape/src/offset/silhouette.js": { + "bytes": 316, + "imports": [ + { + "path": "node_modules/d3-shape/src/offset/none.js", + "kind": "import-statement", + "original": "./none.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/offset/wiggle.js": { + "bytes": 732, + "imports": [ + { + "path": "node_modules/d3-shape/src/offset/none.js", + "kind": "import-statement", + "original": "./none.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/order/appearance.js": { + "bytes": 360, + "imports": [ + { + "path": "node_modules/d3-shape/src/order/none.js", + "kind": "import-statement", + "original": "./none.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/order/ascending.js": { + "bytes": 325, + "imports": [ + { + "path": "node_modules/d3-shape/src/order/none.js", + "kind": "import-statement", + "original": "./none.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/order/descending.js": { + "bytes": 114, + "imports": [ + { + "path": "node_modules/d3-shape/src/order/ascending.js", + "kind": "import-statement", + "original": "./ascending.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/order/insideOut.js": { + "bytes": 501, + "imports": [ + { + "path": "node_modules/d3-shape/src/order/appearance.js", + "kind": "import-statement", + "original": "./appearance.js" + }, + { + "path": "node_modules/d3-shape/src/order/ascending.js", + "kind": "import-statement", + "original": "./ascending.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/order/reverse.js": { + "bytes": 99, + "imports": [ + { + "path": "node_modules/d3-shape/src/order/none.js", + "kind": "import-statement", + "original": "./none.js" + } + ], + "format": "esm" + }, + "node_modules/d3-shape/src/index.js": { + "bytes": 3451, + "imports": [ + { + "path": "node_modules/d3-shape/src/arc.js", + "kind": "import-statement", + "original": "./arc.js" + }, + { + "path": "node_modules/d3-shape/src/area.js", + "kind": "import-statement", + "original": "./area.js" + }, + { + "path": "node_modules/d3-shape/src/line.js", + "kind": "import-statement", + "original": "./line.js" + }, + { + "path": "node_modules/d3-shape/src/pie.js", + "kind": "import-statement", + "original": "./pie.js" + }, + { + "path": "node_modules/d3-shape/src/areaRadial.js", + "kind": "import-statement", + "original": "./areaRadial.js" + }, + { + "path": "node_modules/d3-shape/src/lineRadial.js", + "kind": "import-statement", + "original": "./lineRadial.js" + }, + { + "path": "node_modules/d3-shape/src/pointRadial.js", + "kind": "import-statement", + "original": "./pointRadial.js" + }, + { + "path": "node_modules/d3-shape/src/link.js", + "kind": "import-statement", + "original": "./link.js" + }, + { + "path": "node_modules/d3-shape/src/symbol.js", + "kind": "import-statement", + "original": "./symbol.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/asterisk.js", + "kind": "import-statement", + "original": "./symbol/asterisk.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/circle.js", + "kind": "import-statement", + "original": "./symbol/circle.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/cross.js", + "kind": "import-statement", + "original": "./symbol/cross.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/diamond.js", + "kind": "import-statement", + "original": "./symbol/diamond.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/diamond2.js", + "kind": "import-statement", + "original": "./symbol/diamond2.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/plus.js", + "kind": "import-statement", + "original": "./symbol/plus.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/square.js", + "kind": "import-statement", + "original": "./symbol/square.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/square2.js", + "kind": "import-statement", + "original": "./symbol/square2.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/star.js", + "kind": "import-statement", + "original": "./symbol/star.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/triangle.js", + "kind": "import-statement", + "original": "./symbol/triangle.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/triangle2.js", + "kind": "import-statement", + "original": "./symbol/triangle2.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/wye.js", + "kind": "import-statement", + "original": "./symbol/wye.js" + }, + { + "path": "node_modules/d3-shape/src/symbol/times.js", + "kind": "import-statement", + "original": "./symbol/times.js" + }, + { + "path": "node_modules/d3-shape/src/curve/basisClosed.js", + "kind": "import-statement", + "original": "./curve/basisClosed.js" + }, + { + "path": "node_modules/d3-shape/src/curve/basisOpen.js", + "kind": "import-statement", + "original": "./curve/basisOpen.js" + }, + { + "path": "node_modules/d3-shape/src/curve/basis.js", + "kind": "import-statement", + "original": "./curve/basis.js" + }, + { + "path": "node_modules/d3-shape/src/curve/bump.js", + "kind": "import-statement", + "original": "./curve/bump.js" + }, + { + "path": "node_modules/d3-shape/src/curve/bundle.js", + "kind": "import-statement", + "original": "./curve/bundle.js" + }, + { + "path": "node_modules/d3-shape/src/curve/cardinalClosed.js", + "kind": "import-statement", + "original": "./curve/cardinalClosed.js" + }, + { + "path": "node_modules/d3-shape/src/curve/cardinalOpen.js", + "kind": "import-statement", + "original": "./curve/cardinalOpen.js" + }, + { + "path": "node_modules/d3-shape/src/curve/cardinal.js", + "kind": "import-statement", + "original": "./curve/cardinal.js" + }, + { + "path": "node_modules/d3-shape/src/curve/catmullRomClosed.js", + "kind": "import-statement", + "original": "./curve/catmullRomClosed.js" + }, + { + "path": "node_modules/d3-shape/src/curve/catmullRomOpen.js", + "kind": "import-statement", + "original": "./curve/catmullRomOpen.js" + }, + { + "path": "node_modules/d3-shape/src/curve/catmullRom.js", + "kind": "import-statement", + "original": "./curve/catmullRom.js" + }, + { + "path": "node_modules/d3-shape/src/curve/linearClosed.js", + "kind": "import-statement", + "original": "./curve/linearClosed.js" + }, + { + "path": "node_modules/d3-shape/src/curve/linear.js", + "kind": "import-statement", + "original": "./curve/linear.js" + }, + { + "path": "node_modules/d3-shape/src/curve/monotone.js", + "kind": "import-statement", + "original": "./curve/monotone.js" + }, + { + "path": "node_modules/d3-shape/src/curve/natural.js", + "kind": "import-statement", + "original": "./curve/natural.js" + }, + { + "path": "node_modules/d3-shape/src/curve/step.js", + "kind": "import-statement", + "original": "./curve/step.js" + }, + { + "path": "node_modules/d3-shape/src/stack.js", + "kind": "import-statement", + "original": "./stack.js" + }, + { + "path": "node_modules/d3-shape/src/offset/expand.js", + "kind": "import-statement", + "original": "./offset/expand.js" + }, + { + "path": "node_modules/d3-shape/src/offset/diverging.js", + "kind": "import-statement", + "original": "./offset/diverging.js" + }, + { + "path": "node_modules/d3-shape/src/offset/none.js", + "kind": "import-statement", + "original": "./offset/none.js" + }, + { + "path": "node_modules/d3-shape/src/offset/silhouette.js", + "kind": "import-statement", + "original": "./offset/silhouette.js" + }, + { + "path": "node_modules/d3-shape/src/offset/wiggle.js", + "kind": "import-statement", + "original": "./offset/wiggle.js" + }, + { + "path": "node_modules/d3-shape/src/order/appearance.js", + "kind": "import-statement", + "original": "./order/appearance.js" + }, + { + "path": "node_modules/d3-shape/src/order/ascending.js", + "kind": "import-statement", + "original": "./order/ascending.js" + }, + { + "path": "node_modules/d3-shape/src/order/descending.js", + "kind": "import-statement", + "original": "./order/descending.js" + }, + { + "path": "node_modules/d3-shape/src/order/insideOut.js", + "kind": "import-statement", + "original": "./order/insideOut.js" + }, + { + "path": "node_modules/d3-shape/src/order/none.js", + "kind": "import-statement", + "original": "./order/none.js" + }, + { + "path": "node_modules/d3-shape/src/order/reverse.js", + "kind": "import-statement", + "original": "./order/reverse.js" + } + ], + "format": "esm" + }, + "node_modules/d3-zoom/src/constant.js": { + "bytes": 30, + "imports": [], + "format": "esm" + }, + "node_modules/d3-zoom/src/event.js": { + "bytes": 550, + "imports": [], + "format": "esm" + }, + "node_modules/d3-zoom/src/transform.js": { + "bytes": 1401, + "imports": [], + "format": "esm" + }, + "node_modules/d3-zoom/src/noevent.js": { + "bytes": 174, + "imports": [], + "format": "esm" + }, + "node_modules/d3-zoom/src/zoom.js": { + "bytes": 15365, + "imports": [ + { + "path": "node_modules/d3-dispatch/src/index.js", + "kind": "import-statement", + "original": "d3-dispatch" + }, + { + "path": "node_modules/d3-drag/src/index.js", + "kind": "import-statement", + "original": "d3-drag" + }, + { + "path": "node_modules/d3-interpolate/src/index.js", + "kind": "import-statement", + "original": "d3-interpolate" + }, + { + "path": "node_modules/d3-selection/src/index.js", + "kind": "import-statement", + "original": "d3-selection" + }, + { + "path": "node_modules/d3-transition/src/index.js", + "kind": "import-statement", + "original": "d3-transition" + }, + { + "path": "node_modules/d3-zoom/src/constant.js", + "kind": "import-statement", + "original": "./constant.js" + }, + { + "path": "node_modules/d3-zoom/src/event.js", + "kind": "import-statement", + "original": "./event.js" + }, + { + "path": "node_modules/d3-zoom/src/transform.js", + "kind": "import-statement", + "original": "./transform.js" + }, + { + "path": "node_modules/d3-zoom/src/noevent.js", + "kind": "import-statement", + "original": "./noevent.js" + } + ], + "format": "esm" + }, + "node_modules/d3-zoom/src/index.js": { + "bytes": 157, + "imports": [ + { + "path": "node_modules/d3-zoom/src/zoom.js", + "kind": "import-statement", + "original": "./zoom.js" + }, + { + "path": "node_modules/d3-zoom/src/transform.js", + "kind": "import-statement", + "original": "./transform.js" + } + ], + "format": "esm" + }, + "node_modules/d3/src/index.js": { + "bytes": 819, + "imports": [ + { + "path": "node_modules/d3-array/src/index.js", + "kind": "import-statement", + "original": "d3-array" + }, + { + "path": "node_modules/d3-axis/src/index.js", + "kind": "import-statement", + "original": "d3-axis" + }, + { + "path": "node_modules/d3-brush/src/index.js", + "kind": "import-statement", + "original": "d3-brush" + }, + { + "path": "node_modules/d3-chord/src/index.js", + "kind": "import-statement", + "original": "d3-chord" + }, + { + "path": "node_modules/d3-color/src/index.js", + "kind": "import-statement", + "original": "d3-color" + }, + { + "path": "node_modules/d3-contour/src/index.js", + "kind": "import-statement", + "original": "d3-contour" + }, + { + "path": "node_modules/d3-delaunay/src/index.js", + "kind": "import-statement", + "original": "d3-delaunay" + }, + { + "path": "node_modules/d3-dispatch/src/index.js", + "kind": "import-statement", + "original": "d3-dispatch" + }, + { + "path": "node_modules/d3-drag/src/index.js", + "kind": "import-statement", + "original": "d3-drag" + }, + { + "path": "node_modules/d3-dsv/src/index.js", + "kind": "import-statement", + "original": "d3-dsv" + }, + { + "path": "node_modules/d3-ease/src/index.js", + "kind": "import-statement", + "original": "d3-ease" + }, + { + "path": "node_modules/d3-fetch/src/index.js", + "kind": "import-statement", + "original": "d3-fetch" + }, + { + "path": "node_modules/d3-force/src/index.js", + "kind": "import-statement", + "original": "d3-force" + }, + { + "path": "node_modules/d3-format/src/index.js", + "kind": "import-statement", + "original": "d3-format" + }, + { + "path": "node_modules/d3-geo/src/index.js", + "kind": "import-statement", + "original": "d3-geo" + }, + { + "path": "node_modules/d3-hierarchy/src/index.js", + "kind": "import-statement", + "original": "d3-hierarchy" + }, + { + "path": "node_modules/d3-interpolate/src/index.js", + "kind": "import-statement", + "original": "d3-interpolate" + }, + { + "path": "node_modules/d3-path/src/index.js", + "kind": "import-statement", + "original": "d3-path" + }, + { + "path": "node_modules/d3-polygon/src/index.js", + "kind": "import-statement", + "original": "d3-polygon" + }, + { + "path": "node_modules/d3-quadtree/src/index.js", + "kind": "import-statement", + "original": "d3-quadtree" + }, + { + "path": "node_modules/d3-random/src/index.js", + "kind": "import-statement", + "original": "d3-random" + }, + { + "path": "node_modules/d3-scale/src/index.js", + "kind": "import-statement", + "original": "d3-scale" + }, + { + "path": "node_modules/d3-scale-chromatic/src/index.js", + "kind": "import-statement", + "original": "d3-scale-chromatic" + }, + { + "path": "node_modules/d3-selection/src/index.js", + "kind": "import-statement", + "original": "d3-selection" + }, + { + "path": "node_modules/d3-shape/src/index.js", + "kind": "import-statement", + "original": "d3-shape" + }, + { + "path": "node_modules/d3-time/src/index.js", + "kind": "import-statement", + "original": "d3-time" + }, + { + "path": "node_modules/d3-time-format/src/index.js", + "kind": "import-statement", + "original": "d3-time-format" + }, + { + "path": "node_modules/d3-timer/src/index.js", + "kind": "import-statement", + "original": "d3-timer" + }, + { + "path": "node_modules/d3-transition/src/index.js", + "kind": "import-statement", + "original": "d3-transition" + }, + { + "path": "node_modules/d3-zoom/src/index.js", + "kind": "import-statement", + "original": "d3-zoom" + } + ], + "format": "esm" + }, + "projects/ngx-features-viewer/src/lib/services/initialize.service.ts": { + "bytes": 4277, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/d3/src/index.js", + "kind": "import-statement", + "original": "d3" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + } + ], + "format": "esm" + }, + "projects/ngx-features-viewer/src/lib/services/features.service.ts": { + "bytes": 6296, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + } + ], + "format": "esm" + }, + "projects/ngx-features-viewer/src/lib/services/resize.service.ts": { + "bytes": 6331, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-features-viewer/src/lib/services/initialize.service.ts", + "kind": "import-statement", + "original": "./initialize.service" + } + ], + "format": "esm" + }, + "projects/ngx-features-viewer/src/lib/services/zoom.service.ts": { + "bytes": 2770, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/d3/src/index.js", + "kind": "import-statement", + "original": "d3" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-features-viewer/src/lib/services/initialize.service.ts", + "kind": "import-statement", + "original": "./initialize.service" + } + ], + "format": "esm" + }, + "projects/ngx-features-viewer/src/lib/services/draw.service.ts": { + "bytes": 30963, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/d3/src/index.js", + "kind": "import-statement", + "original": "d3" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-features-viewer/src/lib/services/initialize.service.ts", + "kind": "import-statement", + "original": "./initialize.service" + }, + { + "path": "projects/ngx-features-viewer/src/lib/services/features.service.ts", + "kind": "import-statement", + "original": "./features.service" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "projects/ngx-features-viewer/src/lib/ngx-features-viewer.component.ts": { + "bytes": 103174, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "projects/ngx-features-viewer/src/lib/ngx-features-viewer.directive.ts", + "kind": "import-statement", + "original": "./ngx-features-viewer.directive" + }, + { + "path": "projects/ngx-features-viewer/src/lib/services/initialize.service.ts", + "kind": "import-statement", + "original": "./services/initialize.service" + }, + { + "path": "projects/ngx-features-viewer/src/lib/services/features.service.ts", + "kind": "import-statement", + "original": "./services/features.service" + }, + { + "path": "projects/ngx-features-viewer/src/lib/services/resize.service.ts", + "kind": "import-statement", + "original": "./services/resize.service" + }, + { + "path": "projects/ngx-features-viewer/src/lib/services/zoom.service.ts", + "kind": "import-statement", + "original": "./services/zoom.service" + }, + { + "path": "projects/ngx-features-viewer/src/lib/services/draw.service.ts", + "kind": "import-statement", + "original": "./services/draw.service" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-features-viewer/src/lib/services/features.service.ts", + "kind": "import-statement", + "original": "./services/features.service" + }, + { + "path": "projects/ngx-features-viewer/src/lib/services/initialize.service.ts", + "kind": "import-statement", + "original": "./services/initialize.service" + }, + { + "path": "projects/ngx-features-viewer/src/lib/services/resize.service.ts", + "kind": "import-statement", + "original": "./services/resize.service" + }, + { + "path": "projects/ngx-features-viewer/src/lib/services/zoom.service.ts", + "kind": "import-statement", + "original": "./services/zoom.service" + }, + { + "path": "projects/ngx-features-viewer/src/lib/services/draw.service.ts", + "kind": "import-statement", + "original": "./services/draw.service" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + } + ], + "format": "esm" + }, + "projects/ngx-features-viewer/src/public-api.ts": { + "bytes": 274, + "imports": [ + { + "path": "projects/ngx-features-viewer/src/lib/ngx-features-viewer.directive.ts", + "kind": "import-statement", + "original": "./lib/ngx-features-viewer.directive" + }, + { + "path": "projects/ngx-features-viewer/src/lib/ngx-features-viewer.component.ts", + "kind": "import-statement", + "original": "./lib/ngx-features-viewer.component" + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.component.ts": { + "bytes": 10667, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-features-viewer/src/lib/ngx-features-viewer.directive.ts", + "kind": "import-statement", + "original": "../../../../ngx-features-viewer/src/lib/ngx-features-viewer.directive" + }, + { + "path": "projects/ngx-features-viewer/src/lib/ngx-features-viewer.component.ts", + "kind": "import-statement", + "original": "../../../../ngx-features-viewer/src/lib/ngx-features-viewer.component" + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.module.ts": { + "bytes": 1038, + "imports": [ + { + "path": "projects/ngx-features-viewer/src/public-api.ts", + "kind": "import-statement", + "original": "@ngx-features-viewer" + }, + { + "path": "projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.component.ts", + "kind": "import-statement", + "original": "./page-features-viewer.component" + }, + { + "path": "node_modules/@angular/router/fesm2022/router.mjs", + "kind": "import-statement", + "original": "@angular/router" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/theme-selector/theme-selector.service.ts": { + "bytes": 1549, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + } + ], + "format": "esm" + }, + "projects/ngx-sequence-viewer/src/lib/colors.ts": { + "bytes": 5901, + "imports": [], + "format": "esm" + }, + "projects/ngx-sequence-viewer/src/lib/services/index.service.ts": { + "bytes": 792, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "projects/ngx-sequence-viewer/src/lib/services/selection.service.ts": { + "bytes": 3337, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-sequence-viewer/src/lib/services/index.service.ts", + "kind": "import-statement", + "original": "./index.service" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "projects/ngx-sequence-viewer/src/lib/utils.ts": { + "bytes": 1065, + "imports": [], + "format": "esm" + }, + "projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts": { + "bytes": 30138, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "projects/ngx-sequence-viewer/src/lib/colors.ts", + "kind": "import-statement", + "original": "./colors" + }, + { + "path": "projects/ngx-sequence-viewer/src/lib/services/selection.service.ts", + "kind": "import-statement", + "original": "./services/selection.service" + }, + { + "path": "projects/ngx-sequence-viewer/src/lib/services/index.service.ts", + "kind": "import-statement", + "original": "./services/index.service" + }, + { + "path": "projects/ngx-sequence-viewer/src/lib/utils.ts", + "kind": "import-statement", + "original": "./utils" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/ngx-sequence-viewer/src/lib/services/selection.service.ts", + "kind": "import-statement", + "original": "./services/selection.service" + }, + { + "path": "projects/ngx-sequence-viewer/src/lib/services/index.service.ts", + "kind": "import-statement", + "original": "./services/index.service" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.ts": { + "bytes": 9330, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/demo-showcase/src/app/theme-selector/theme-selector.service.ts", + "kind": "import-statement", + "original": "../theme-selector/theme-selector.service" + }, + { + "path": "projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts", + "kind": "import-statement", + "original": "../../../../ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.ts": { + "bytes": 4783, + "imports": [ + { + "path": "node_modules/rxjs/dist/esm/index.js", + "kind": "import-statement", + "original": "rxjs" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/demo-showcase/src/app/theme-selector/theme-selector.service.ts", + "kind": "import-statement", + "original": "../theme-selector/theme-selector.service" + }, + { + "path": "projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts", + "kind": "import-statement", + "original": "../../../../ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "", + "kind": "import-statement", + "external": true + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts": { + "bytes": 1234, + "imports": [ + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.ts", + "kind": "import-statement", + "original": "./multiple-sequence-alignment.component" + }, + { + "path": "projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.ts", + "kind": "import-statement", + "original": "./single-sequence-viewer.component" + } + ], + "format": "esm" + }, + "projects/ngx-sequence-viewer/src/public-api.ts": { + "bytes": 159, + "imports": [ + { + "path": "projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts", + "kind": "import-statement", + "original": "./lib/ngx-sequence-viewer.component" + }, + { + "path": "projects/ngx-sequence-viewer/src/lib/colors.ts", + "kind": "import-statement", + "original": "./lib/colors" + }, + { + "path": "projects/ngx-sequence-viewer/src/lib/utils.ts", + "kind": "import-statement", + "original": "./lib/utils" + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.module.ts": { + "bytes": 1183, + "imports": [ + { + "path": "projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.ts", + "kind": "import-statement", + "original": "./multiple-sequence-alignment.component" + }, + { + "path": "projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.ts", + "kind": "import-statement", + "original": "./single-sequence-viewer.component" + }, + { + "path": "projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts", + "kind": "import-statement", + "original": "./page-sequence-viewer.component" + }, + { + "path": "projects/ngx-sequence-viewer/src/public-api.ts", + "kind": "import-statement", + "original": "@ngx-sequence-viewer" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "node_modules/@angular/router/fesm2022/router.mjs", + "kind": "import-statement", + "original": "@angular/router" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/app.routes.ts": { + "bytes": 618, + "imports": [ + { + "path": "projects/demo-showcase/src/app/page-home/page-home.component.ts", + "kind": "import-statement", + "original": "./page-home/page-home.component" + }, + { + "path": "projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.module.ts", + "kind": "dynamic-import", + "original": "./page-structure-viewer/page-structure-viewer.module" + }, + { + "path": "projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.module.ts", + "kind": "dynamic-import", + "original": "./page-features-viewer/page-features-viewer.module" + }, + { + "path": "projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.module.ts", + "kind": "dynamic-import", + "original": "./page-sequence-viewer/page-sequence-viewer.module" + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/app.config.ts": { + "bytes": 254, + "imports": [ + { + "path": "node_modules/@angular/router/fesm2022/router.mjs", + "kind": "import-statement", + "original": "@angular/router" + }, + { + "path": "projects/demo-showcase/src/app/app.routes.ts", + "kind": "import-statement", + "original": "./app.routes" + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/theme-selector/theme-selector.component.ts": { + "bytes": 4800, + "imports": [ + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/demo-showcase/src/app/theme-selector/theme-selector.service.ts", + "kind": "import-statement", + "original": "./theme-selector.service" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/app.component.ts": { + "bytes": 3466, + "imports": [ + { + "path": "node_modules/@angular/router/fesm2022/router.mjs", + "kind": "import-statement", + "original": "@angular/router" + }, + { + "path": "node_modules/@angular/common/fesm2022/common.mjs", + "kind": "import-statement", + "original": "@angular/common" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "projects/demo-showcase/src/app/theme-selector/theme-selector.component.ts", + "kind": "import-statement", + "original": "./theme-selector/theme-selector.component" + }, + { + "path": "projects/demo-showcase/src/app/theme-selector/theme-selector.service.ts", + "kind": "import-statement", + "original": "./theme-selector/theme-selector.service" + }, + { + "path": "node_modules/@angular/core/fesm2022/core.mjs", + "kind": "import-statement", + "original": "@angular/core" + }, + { + "path": "node_modules/@angular/router/fesm2022/router.mjs", + "kind": "import-statement", + "original": "@angular/router" + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/main.ts": { + "bytes": 243, + "imports": [ + { + "path": "node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs", + "kind": "import-statement", + "original": "@angular/platform-browser" + }, + { + "path": "projects/demo-showcase/src/app/app.config.ts", + "kind": "import-statement", + "original": "./app/app.config" + }, + { + "path": "projects/demo-showcase/src/app/app.component.ts", + "kind": "import-statement", + "original": "./app/app.component" + } + ], + "format": "esm" + }, + "projects/demo-showcase/src/app/page-home/page-home.component.scss": { + "bytes": 38, + "imports": [] + }, + "projects/demo-showcase/src/app/theme-selector/theme-selector.component.scss": { + "bytes": 0, + "imports": [] + }, + "projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss": { + "bytes": 1990, + "imports": [] + }, + "projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.scss": { + "bytes": 152, + "imports": [] + }, + "projects/demo-showcase/src/app/app.component.scss": { + "bytes": 75, + "imports": [] + }, + "angular:css-resource:node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff2": { + "bytes": 130396, + "imports": [] + }, + "angular:css-resource:node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff": { + "bytes": 176032, + "imports": [] + }, + "angular:css-resource:projects/ngx-features-viewer/src/assets/dssp-helix.svg": { + "bytes": 3738, + "imports": [] + }, + "angular:css-resource:projects/ngx-features-viewer/src/assets/dssp-strand-tail.svg": { + "bytes": 1908, + "imports": [] + }, + "angular:css-resource:projects/ngx-features-viewer/src/assets/dssp-strand-head.svg": { + "bytes": 2514, + "imports": [] + }, + "projects/ngx-features-viewer/src/lib/ngx-features-viewer.component.scss": { + "bytes": 107837, + "imports": [ + { + "path": "angular:css-resource:node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff2", + "kind": "url-token", + "original": "../../../../node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff2" + }, + { + "path": "angular:css-resource:node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff", + "kind": "url-token", + "original": "../../../../node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff" + }, + { + "path": "angular:css-resource:projects/ngx-features-viewer/src/assets/dssp-helix.svg", + "kind": "url-token", + "original": "../assets/dssp-helix.svg" + }, + { + "path": "angular:css-resource:projects/ngx-features-viewer/src/assets/dssp-helix.svg", + "kind": "url-token", + "original": "../assets/dssp-helix.svg" + }, + { + "path": "angular:css-resource:projects/ngx-features-viewer/src/assets/dssp-strand-tail.svg", + "kind": "url-token", + "original": "../assets/dssp-strand-tail.svg" + }, + { + "path": "angular:css-resource:projects/ngx-features-viewer/src/assets/dssp-strand-tail.svg", + "kind": "url-token", + "original": "../assets/dssp-strand-tail.svg" + }, + { + "path": "angular:css-resource:projects/ngx-features-viewer/src/assets/dssp-strand-head.svg", + "kind": "url-token", + "original": "../assets/dssp-strand-head.svg" + }, + { + "path": "angular:css-resource:projects/ngx-features-viewer/src/assets/dssp-strand-head.svg", + "kind": "url-token", + "original": "../assets/dssp-strand-head.svg" + } + ] + }, + "projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.scss": { + "bytes": 92502, + "imports": [ + { + "path": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAMAAACzvE1FAAAADFBMVEUzMzMzMzMzMzMzMzMKAG/3AAAAA3RSTlMAf4C/aSLHAAAAPElEQVR42q3NMQ4AIAgEQTn//2cLdRKppSGzBYwzVXvznNWs8C58CiussPJj8h6NwgorrKRdTvuV9v16Afn0AYFOB7aYAAAAAElFTkSuQmCC", + "kind": "url-token", + "external": true + }, + { + "path": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAgCAYAAABn7+QVAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKL2lDQ1BJQ0MgUHJvZmlsZQAASMedlndUVNcWh8+9d3qhzTACUobeu8AA0nuTXkVhmBlgKAMOMzSxIaICEUVEmiJIUMSA0VAkVkSxEBRUsAckCCgxGEVULG9G1ouurLz38vL746xv7bP3ufvsvc9aFwCSpy+XlwZLAZDKE/CDPJzpEZFRdOwAgAEeYIApAExWRrpfsHsIEMnLzYWeIXICXwQB8HpYvAJw09AzgE4H/5+kWel8geiYABGbszkZLBEXiDglS5Auts+KmBqXLGYYJWa+KEERy4k5YZENPvsssqOY2ak8tojFOaezU9li7hXxtkwhR8SIr4gLM7mcLBHfErFGijCVK+I34thUDjMDABRJbBdwWIkiNhExiR8S5CLi5QDgSAlfcdxXLOBkC8SXcklLz+FzExIFdB2WLt3U2ppB9+RkpXAEAsMAJiuZyWfTXdJS05m8HAAW7/xZMuLa0kVFtjS1trQ0NDMy/apQ/3Xzb0rc20V6Gfi5ZxCt/4vtr/zSGgBgzIlqs/OLLa4KgM4tAMjd+2LTOACApKhvHde/ug9NPC+JAkG6jbFxVlaWEZfDMhIX9A/9T4e/oa++ZyQ+7o/y0F058UxhioAurhsrLSVNyKdnpDNZHLrhn4f4Hwf+dR4GQZx4Dp/DE0WEiaaMy0sQtZvH5gq4aTw6l/efmvgPw/6kxbkWidL4EVBjjIDUdSpAfu0HKAoRINH7xV3/o2+++DAgfnnhKpOLc//vN/1nwaXiJYOb8DnOJSiEzhLyMxf3xM8SoAEBSAIqkAfKQB3oAENgBqyALXAEbsAb+IMQEAlWAxZIBKmAD7JAHtgECkEx2An2gGpQBxpBM2gFx0EnOAXOg0vgGrgBboP7YBRMgGdgFrwGCxAEYSEyRIHkIRVIE9KHzCAGZA+5Qb5QEBQJxUIJEA8SQnnQZqgYKoOqoXqoGfoeOgmdh65Ag9BdaAyahn6H3sEITIKpsBKsBRvDDNgJ9oFD4FVwArwGzoUL4B1wJdwAH4U74PPwNfg2PAo/g+cQgBARGqKKGCIMxAXxR6KQeISPrEeKkAqkAWlFupE+5CYyiswgb1EYFAVFRxmibFGeqFAUC7UGtR5VgqpGHUZ1oHpRN1FjqFnURzQZrYjWR9ugvdAR6AR0FroQXYFuQrejL6JvoyfQrzEYDA2jjbHCeGIiMUmYtZgSzD5MG+YcZhAzjpnDYrHyWH2sHdYfy8QKsIXYKuxR7FnsEHYC+wZHxKngzHDuuCgcD5ePq8AdwZ3BDeEmcQt4Kbwm3gbvj2fjc/Cl+EZ8N/46fgK/QJAmaBPsCCGEJMImQiWhlXCR8IDwkkgkqhGtiYFELnEjsZJ4jHiZOEZ8S5Ih6ZFcSNEkIWkH6RDpHOku6SWZTNYiO5KjyALyDnIz+QL5EfmNBEXCSMJLgi2xQaJGokNiSOK5JF5SU9JJcrVkrmSF5AnJ65IzUngpLSkXKabUeqkaqZNSI1Jz0hRpU2l/6VTpEukj0lekp2SwMloybjJsmQKZgzIXZMYpCEWd4kJhUTZTGikXKRNUDFWb6kVNohZTv6MOUGdlZWSXyYbJZsvWyJ6WHaUhNC2aFy2FVko7ThumvVuitMRpCWfJ9iWtS4aWzMstlXOU48gVybXJ3ZZ7J0+Xd5NPlt8l3yn/UAGloKcQqJClsF/hosLMUupS26WspUVLjy+9pwgr6ikGKa5VPKjYrzinpKzkoZSuVKV0QWlGmabsqJykXK58RnlahaJir8JVKVc5q/KULkt3oqfQK+m99FlVRVVPVaFqveqA6oKatlqoWr5am9pDdYI6Qz1evVy9R31WQ0XDTyNPo0XjniZek6GZqLlXs09zXktbK1xrq1an1pS2nLaXdq52i/YDHbKOg84anQadW7oYXYZusu4+3Rt6sJ6FXqJejd51fVjfUp+rv09/0ABtYG3AM2gwGDEkGToZZhq2GI4Z0Yx8jfKNOo2eG2sYRxnvMu4z/mhiYZJi0mhy31TG1Ns037Tb9HczPTOWWY3ZLXOyubv5BvMu8xfL9Jdxlu1fdseCYuFnsdWix+KDpZUl37LVctpKwyrWqtZqhEFlBDBKGJet0dbO1husT1m/tbG0Edgct/nN1tA22faI7dRy7eWc5Y3Lx+3U7Jh29Xaj9nT7WPsD9qMOqg5MhwaHx47qjmzHJsdJJ12nJKejTs+dTZz5zu3O8y42Lutczrkirh6uRa4DbjJuoW7Vbo/c1dwT3FvcZz0sPNZ6nPNEe/p47vIc8VLyYnk1e816W3mv8+71IfkE+1T7PPbV8+X7dvvBft5+u/0erNBcwVvR6Q/8vfx3+z8M0A5YE/BjICYwILAm8EmQaVBeUF8wJTgm+Ejw6xDnkNKQ+6E6ocLQnjDJsOiw5rD5cNfwsvDRCOOIdRHXIhUiuZFdUdiosKimqLmVbiv3rJyItogujB5epb0qe9WV1QqrU1afjpGMYcaciEXHhsceiX3P9Gc2MOfivOJq42ZZLqy9rGdsR3Y5e5pjxynjTMbbxZfFTyXYJexOmE50SKxInOG6cKu5L5I8k+qS5pP9kw8lf0oJT2lLxaXGpp7kyfCSeb1pymnZaYPp+umF6aNrbNbsWTPL9+E3ZUAZqzK6BFTRz1S/UEe4RTiWaZ9Zk/kmKyzrRLZ0Ni+7P0cvZ3vOZK577rdrUWtZa3vyVPM25Y2tc1pXvx5aH7e+Z4P6hoINExs9Nh7eRNiUvOmnfJP8svxXm8M3dxcoFWwsGN/isaWlUKKQXziy1XZr3TbUNu62ge3m26u2fyxiF10tNimuKH5fwiq5+o3pN5XffNoRv2Og1LJ0/07MTt7O4V0Ouw6XSZfllo3v9tvdUU4vLyp/tSdmz5WKZRV1ewl7hXtHK30ru6o0qnZWva9OrL5d41zTVqtYu712fh9739B+x/2tdUp1xXXvDnAP3Kn3qO9o0GqoOIg5mHnwSWNYY9+3jG+bmxSaips+HOIdGj0cdLi32aq5+YjikdIWuEXYMn00+uiN71y/62o1bK1vo7UVHwPHhMeefh/7/fBxn+M9JxgnWn/Q/KG2ndJe1AF15HTMdiZ2jnZFdg2e9D7Z023b3f6j0Y+HTqmeqjkte7r0DOFMwZlPZ3PPzp1LPzdzPuH8eE9Mz/0LERdu9Qb2Dlz0uXj5kvulC31OfWcv210+dcXmysmrjKud1yyvdfRb9Lf/ZPFT+4DlQMd1q+tdN6xvdA8uHzwz5DB0/qbrzUu3vG5du73i9uBw6PCdkeiR0TvsO1N3U+6+uJd5b+H+xgfoB0UPpR5WPFJ81PCz7s9to5ajp8dcx/ofBz++P84af/ZLxi/vJwqekJ9UTKpMNk+ZTZ2adp++8XTl04ln6c8WZgp/lf619rnO8x9+c/ytfzZiduIF/8Wn30teyr889GrZq565gLlHr1NfL8wXvZF/c/gt423fu/B3kwtZ77HvKz/ofuj+6PPxwafUT5/+BQOY8/xvJtwPAAAACXBIWXMAAC4iAAAuIgGq4t2SAAANMElEQVRoQ92aB1xURx7H/69sY5eOFBELCipESsSC0RCMJRZMrICHGiMmGjWaqDk7YEsuGok5TS6xi56KGtsFG6jBiAYLKhqVc8GGBZG+fd97N+/twNJWFksS7/v5DG/nN/OG/fze/838Z4CA/wMCE9d9W8oQ3mUMBSojBTqWAuBQAweHIC56lanXHw8xJixM6qhQNcX1KuQykluyKzMPVxvF5XUh3hIpgFSiQz8AJBItSKU6sCsX55P9byLxxRKwYl3W5O6dg5o62IMRmcpyBBz87wNYcyH3R4iL+gh3+8MhHaTqYJKUKO2dPYTigIqza1MlLZLnzh3arQ/uZzVn14YOIGRyJWXrqgR5U6VI1kRJS92VBEEry+wrAnC3F04XL3cY4OMF7/p6weC2zSDQzQG3/IlM7dspdPmU0VxtLqYf5haM6HYOBYLVUwcXByQy92JxXioexUzFhT5cySn3TrjrC4WP3EsPHuPfZGJVZg4HCdt/wF0aT8LWUHT/jTpl4fZU3KNBSHytQ0D33uDR0qfjoqg3hmOpQU65d4u2cW4X6NCyJ1ZeIeKSFRC3p1q4kzYdmzr6Zk98p6rsj+rhi0KoFe5gIm53M/ypDhbNJQgC3kbTFUGSi+LiwmgsWyQ5zk9McESCZ8gEVHvF1kneWJI5CJT2SHWDbUQ0vNbEvqr4OClwCyZ+RzSQ+psomqOwUgOL5vL4BIdCi/aBvtJb3AdYsoirs0usnWfH1vbNOmPlFWHmWlve2DFB3t0nhvh0qm2wRRZuG+ksFyUlDe4qcbYRJ0H8v6NxSxVPNZcnPPJDIAlY8PWnXWVYqsPhZb3lDAfzW3T50xbmZ+MfyFhbRcr7yNj1EZ1gdb+O8DFvMKk7it4+ywYjY11k0s1po8KpmA4tITUmnHaWS5HBKJKr0aC5zXw6QJvgNzyhXDIZS3UgCN3UJq3fdLd188PKs3H8+Bjpvn2x/jv2TwnbsOezt3/YPavTss3TXXHzi4U3Vic/+H5gq+7rkLEkmgb5yWwVb3CnNiFAcD+aOtaGaMobmzrqLaoyIwlC11RkNB/JvPGCiGjQXJ43h8QCSRGzEqeG1Xmah77u48QCPdM7NBYrjSPveJg069i7H2UcjUpndWSZrZ3bFRfHlic8nL1TnezcM2Vyh0dLtsbnzdu8JHHW5qVt8G3Pj9qOT4RYluOE/UYllQZPCvFxMik1cbGRSKsbWwlKUPhxhDGxZJ25Ls28oX2X3k60HmZiqQqDTj+rqX8fB7lTC6xYT2569zA9Jb5m7xz8r3aB03uE9fpOFP7WYujZ/TPo22MSDOs1FT4ePBfG9ZvQsod/12kUJf190prli4YnJ6Mt2HOSMKICGLL/5su3Tn6wPxMYZE4lvMH/RAZP6NjaJGBsJSJIi3mrTg6d9bAYem05YSxS6WJgQdR2LFtnLk9oxFigRaKpq2aEuWMJDizu6UlQosltuo3FivU8zgyOkEhkRzz941u2CogDxyYhgMzDrWb4rMXN0Q36vN4TZr43XuTt0WyeoiR/MwqV509JqgzOSx+77zcw8nGM4UMx2r+5qYJpqpByHVztcc3E+QdFXJWx8dE78MgCDaZYldi5eIB/jwj577/+NB9VJ/GajmHj2nYZKpPZNW5aVJ9v2ULDwlaXdsvFYlvzpo1l9PD4yXUoKStAY3MgFjuAexNvcFA4C+32NgqY3HcofHFg18ioH1adRSHyjdBgCQJaQ/y2SFyzAIMKuSkp+1YAepIOGwZ1Bgo9UGu4gCK2z9ZfoEit3yMI1X8XxZwh+B2al2/7jOnfbsKqGaNeB7RYgmsAmvJi2LHkbwaC0baXyElKKpVe7f/JVlpsY4978Abp0PxsvqcSVVZfMGoud3Z44+HZ8vOeG2m3GWOkntNwK8CTgky4eiWJK9fqflUZJRe0jFirZmgvDSPu29or2PmdzhEgpkVC3/ziIpiRvL1ETUua74+NLed3aEnRg4IC3F2Edp6DNx/AmqxcXLMeFK0w3M8L1yxToTfCtCNZUKTRY8VMZv4TyC/VxFiM3OM7N0BudiaMW/g9VgBkto7QIWyYKDstaSEYGdo3dEQNY/n5/EbKJHBq2QPcOozBWk24K00UGgM3QuI2GisA5cVXIOdyYqHeKBo0cEDSaSwLLNu8TJ5968o6LQORI3oMETRPRycI9GrhkHH7Di/UjQpEvzYeQnlZKMQ0rB1Y/25+xO4M2Fl61/KcazTo4W5ONuRcOIUVEx3CI0Fqax8lljsO9w2tuTMuyksHVcHvwKHX2xIcU9aFsgmQEbR5MX50aztQYJzWu19NY3lmjp6pekIrxmbfvv6woLQQqwCBzZujn0SYqfbX5KkLGprVL51IXgMcW5VdgFgqh4DwkaR/WAxBi837Co5j4Hbmj3wucglL9cJy4ENKzRkVf5+q9Bqnpol9WKpDYuR0DfoKabcL8rGCotfBEQ0GLy41ewk81VyWIfYV3lNmXj2NNizVaNvtPfBBc2B1Hl07BKqi2xkkyf0HSxYg0D7eFn9G5rJ69EAYfXj4zgos1QtaYoq16G2qRCYWA0dw5oFqcb9cAyfvPG50ufq4FI/wdPg5t777+VKoNh1ZPzVbIAiWIwl69qm9G9Lad+kJFF5QKFosXCthjXrI/W0jsCw5G62+Tz0D5p8mU3sxrp7FWwClZKYcHWMawvKqvuf6PZh86HwBusW6VY0g/FzlEru0mHAsPB05mnN3X7sHKzNz+K91Df2o+VQIorDBVGz2lpPHvhobdvRy+v7ewT2HYrUmdy/tBU3po5Ren55MP7e+a6MP2F8aHLHXqr9ExO8Y46oQr08bFS6cflkD/1gT+wYLH1aeydGCSD8Q5ox5Ymo1YdUmgqTI2ZkpWziDToMVM0adCpRntrAERc/B0qvFImSsrWAsWdvYx/j1rkRtYNBGo+bbk9gnGKZ19Q0GgzgVlm4yJeQYq8ydsfb4eW158a6LaTuxYkaZuQN0mrLtb39y/KkL2V+Shdved7URrz9Wj7Fn7xfBuAOZuGbiTqkKRu09Y8HgtkFg5A3+qcpgq8zloUT0vItpyUZthXlq0amKQfnbTgNw5AIsvTos3o2SYGL10vAA0r8eY/mdV4nWgBUz26/eqWMwz7JeQeDrbIcM1idgyXpzp6xOyzHoVBuyUrdiBeD6ySQw6DVr+n9+XImlBmE5ggHOiGs8wleg0G7e8urEQwBNEuavywjpYY2BGse8oQ9QHjgM7bK0/ApfiWDslhOGEq1+NZZqwnH526/cOVbdYP7K13OelKcBY/O5ICKsNpeHFJMJ1zL2aVQlBaAqfgDKswdUKIFYhJutAqVqDznDI1xDdbRVFkkc6YzDQ9piqX448HNSmE+jitVq/mkU4OqzERd9sEJnGNJ/W7pgcGalsTp9FDLRdF5QGwJ0wNpEoAhOi0GGao0M8Fe+DkzpIEgYpMY9G2fuxMRj+axBvyrryEbITtsIjNGwcuDnvzzEzVahJ+gsVnURfTK/Vg6uYUDSNH8gVG/0Ltqy6E2FVNajjYf5WFNZ8AhQcvb88zxvsIEZzBvcV4hYYyQsiP4Jt9YPbyAycgcytM2qn4G/moz9qMpYnkaZK0CIv8y9cKQk72JqkYqAZVi1GmlAxXVGX3DdWHYGKwDurSLBxrb1yLRDo/ftTxkflpQyxW5lyhTJ97vm+azYNneWiCJ+HtxtICnCeTZ/wH0m9yaQHHNAEJ6X+ZGHeINLtLpIiIusP2JrwxspJyLyyzVL+WttY3kabe74xCNFBMd+xXDcl2MTfinBcqPggP5Kfe+bqimTomTwWkg8tPaNjLC3bX5CxtKljjqxViGzyfFrFfTFB/3GK3w9zTvd49eyobCsNGPvlCl1ziKeGWQwxI2sYWx2QamwsFWWcQfO4hbM9EgNLIiaK1zrofGRy8PQ34o1mmf+Hyz5/nub9Kprh4qVS4WzBR6SFEOLVv3hze7zYOiAFTDqveUQ03829O0yDJrYm8+Lr9+/AztOn1SxHPNy/xoqklxEi9qAo7kPq0rGvcIBaOIah3s0yDOZO/rro6rIxDP1Pi1rIBKABb3tiIqCw0fzL38GmvKbuMUyOoMODmf9Ct8d3l3CsfpByR9Pu4KbXg5zhjxBUZlSp8yPPoF7NIhwWG5jb5/h16kbltBrShLw+K4SCvOVCYt2no7HslWg7e9iW5fWcxVNvIGmGVMRGYEoO4zmykLhsBx3heTk4VSgW+lENSObQ8n9POSOHUEi90L97dHOlQKtXg9FFSVwu+A+XLmbx5Tp2F1qhvr7d7Ezb+MhBPjD8tdbNA+SSGSgYwmUGpFwo7AczuYX/an/iEdM6B3qKqbZAbguIKJQEZEosYSLi3efzsKyVZxd3/V1Cc0FisQMGsMAUqkBXfXoqgXChjlgF/LAfCiLOXfuQ5G2tDRcY5CGaRhxO41R4qJlRJSaEZVrjOLbapY6Z9BASkJswn18Sw2CVqx/t5ghncoZElQsBTqm8u+X3A0UaRm48gcD8D/XZskfp8IFSwAAAABJRU5ErkJggg==", + "kind": "url-token", + "external": true + } + ] + }, + "node_modules/zone.js/fesm2015/zone.js": { + "bytes": 133846, + "imports": [] + }, + "angular:polyfills:angular:polyfills": { + "bytes": 17, + "imports": [ + { + "path": "node_modules/zone.js/fesm2015/zone.js", + "kind": "import-statement", + "original": "zone.js" + } + ], + "format": "esm" + }, + "angular:css-resource:node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6": { + "bytes": 130396, + "imports": [] + }, + "angular:css-resource:node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6": { + "bytes": 176032, + "imports": [] + }, + "projects/demo-showcase/src/styles.scss": { + "bytes": 260352, + "imports": [ + { + "path": "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e", + "kind": "url-token", + "external": true + }, + { + "path": "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e", + "kind": "url-token", + "external": true + }, + { + "path": "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e", + "kind": "url-token", + "external": true + }, + { + "path": "angular:css-resource:node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6", + "kind": "url-token", + "original": "../../../node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6" + }, + { + "path": "angular:css-resource:node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6", + "kind": "url-token", + "original": "../../../node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6" + } + ] + }, + "angular:styles/global:styles": { + "bytes": 49, + "imports": [ + { + "path": "projects/demo-showcase/src/styles.scss", + "kind": "import-rule", + "original": "projects/demo-showcase/src/styles.scss" + } + ] + }, + "angular:script/global:scripts.js": { + "bytes": 80758, + "imports": [] + } + }, + "outputs": { + "main-UMKTUCWS.js": { + "imports": [ + { + "path": "chunk-ED6QR4VZ.js", + "kind": "import-statement" + }, + { + "path": "chunk-SAL4EXGL.js", + "kind": "import-statement" + }, + { + "path": "chunk-T4BLILQN.js", + "kind": "import-statement" + }, + { + "path": "chunk-L7IOURQX.js", + "kind": "dynamic-import" + }, + { + "path": "chunk-DUVKI6S6.js", + "kind": "dynamic-import" + }, + { + "path": "chunk-BDFDQ2SB.js", + "kind": "dynamic-import" + } + ], + "exports": [], + "entryPoint": "projects/demo-showcase/src/main.ts", + "inputs": { + "projects/demo-showcase/src/app/page-home/page-home.component.ts": { + "bytesInOutput": 2672 + }, + "projects/demo-showcase/src/app/app.routes.ts": { + "bytesInOutput": 361 + }, + "projects/demo-showcase/src/app/app.config.ts": { + "bytesInOutput": 30 + }, + "projects/demo-showcase/src/app/theme-selector/theme-selector.component.ts": { + "bytesInOutput": 1701 + }, + "projects/demo-showcase/src/app/app.component.ts": { + "bytesInOutput": 1480 + }, + "projects/demo-showcase/src/main.ts": { + "bytesInOutput": 34 + } + }, + "bytes": 6627 + }, + "chunk-MDWTV2PZ.js": { + "imports": [ + { + "path": "chunk-TI7GFU47.js", + "kind": "import-statement" + }, + { + "path": "chunk-T4BLILQN.js", + "kind": "import-statement" + } + ], + "exports": [ + "Asset", + "DefaultPluginUISpec", + "PluginUIContext", + "createPluginUI", + "getFilteredBundle", + "getLocusFromQuery", + "getLocusFromSet", + "renderReact18" + ], + "entryPoint": "projects/ngx-structure-viewer/src/lib/molstar.ts", + "inputs": { + "node_modules/react/cjs/react.production.min.js": { + "bytesInOutput": 6636 + }, + "node_modules/react/index.js": { + "bytesInOutput": 52 + }, + "node_modules/react/cjs/react-jsx-runtime.production.min.js": { + "bytesInOutput": 625 + }, + "node_modules/react/jsx-runtime.js": { + "bytesInOutput": 52 + }, + "node_modules/scheduler/cjs/scheduler.production.min.js": { + "bytesInOutput": 4023 + }, + "node_modules/scheduler/index.js": { + "bytesInOutput": 56 + }, + "node_modules/react-dom/cjs/react-dom.production.min.js": { + "bytesInOutput": 130750 + }, + "node_modules/react-dom/index.js": { + "bytesInOutput": 261 + }, + "node_modules/react-dom/client.js": { + "bytesInOutput": 113 + }, + "node_modules/inline-style-parser/index.js": { + "bytesInOutput": 1696 + }, + "node_modules/style-to-object/cjs/index.js": { + "bytesInOutput": 428 + }, + "node_modules/extend/index.js": { + "bytesInOutput": 1227 + }, + "node_modules/molstar/lib/mol-geo/util.js": { + "bytesInOutput": 1176 + }, + "node_modules/molstar/lib/mol-gl/renderable/util.js": { + "bytesInOutput": 1286 + }, + "node_modules/molstar/lib/mol-geo/geometry/marker-data.js": { + "bytesInOutput": 986 + }, + "node_modules/molstar/lib/mol-model/location.js": { + "bytesInOutput": 101 + }, + "node_modules/molstar/lib/mol-geo/util/location-iterator.js": { + "bytesInOutput": 932 + }, + "node_modules/molstar/lib/mol-gl/webgl/framebuffer.js": { + "bytesInOutput": 1035 + }, + "node_modules/molstar/lib/mol-gl/webgl/extensions.js": { + "bytesInOutput": 3124 + }, + "node_modules/molstar/lib/mol-gl/webgl/state.js": { + "bytesInOutput": 5384 + }, + "node_modules/molstar/lib/mol-util/image.js": { + "bytesInOutput": 450 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/apply-fog.glsl.js": { + "bytesInOutput": 1185 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/apply-interior-color.glsl.js": { + "bytesInOutput": 257 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/apply-light-color.glsl.js": { + "bytesInOutput": 3087 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/apply-marker-color.glsl.js": { + "bytesInOutput": 804 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/assign-clipping-varying.glsl.js": { + "bytesInOutput": 347 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/assign-color-varying.glsl.js": { + "bytesInOutput": 7545 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/assign-group.glsl.js": { + "bytesInOutput": 168 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/assign-marker-varying.glsl.js": { + "bytesInOutput": 311 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/assign-material-color.glsl.js": { + "bytesInOutput": 3753 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/assign-position.glsl.js": { + "bytesInOutput": 496 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/assign-size.glsl.js": { + "bytesInOutput": 699 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/check-picking-alpha.glsl.js": { + "bytesInOutput": 412 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/check-transparency.glsl.js": { + "bytesInOutput": 496 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/clip-instance.glsl.js": { + "bytesInOutput": 332 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/clip-pixel.glsl.js": { + "bytesInOutput": 137 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/color-frag-params.glsl.js": { + "bytesInOutput": 1373 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/color-vert-params.glsl.js": { + "bytesInOutput": 4378 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/common-clip.glsl.js": { + "bytesInOutput": 4120 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/common-frag-params.glsl.js": { + "bytesInOutput": 3836 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/common-vert-params.glsl.js": { + "bytesInOutput": 1651 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/common.glsl.js": { + "bytesInOutput": 7812 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/fade-lod.glsl.js": { + "bytesInOutput": 1568 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/float-to-rgba.glsl.js": { + "bytesInOutput": 1635 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/light-frag-params.glsl.js": { + "bytesInOutput": 5875 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/matrix-scale.glsl.js": { + "bytesInOutput": 120 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/normal-frag-params.glsl.js": { + "bytesInOutput": 33 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/read-from-texture.glsl.js": { + "bytesInOutput": 456 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/rgba-to-float.glsl.js": { + "bytesInOutput": 4291 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/size-vert-params.glsl.js": { + "bytesInOutput": 321 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/texture3d-from-1d-trilinear.glsl.js": { + "bytesInOutput": 1298 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/texture3d-from-2d-linear.glsl.js": { + "bytesInOutput": 820 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/texture3d-from-2d-nearest.glsl.js": { + "bytesInOutput": 433 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/wboit-write.glsl.js": { + "bytesInOutput": 989 + }, + "node_modules/molstar/lib/mol-gl/shader/chunks/dpoit-write.glsl.js": { + "bytesInOutput": 2247 + }, + "node_modules/molstar/lib/mol-gl/shader/points.vert.js": { + "bytesInOutput": 863 + }, + "node_modules/molstar/lib/mol-gl/shader/points.frag.js": { + "bytesInOutput": 1606 + }, + "node_modules/molstar/lib/mol-gl/shader/spheres.vert.js": { + "bytesInOutput": 4052 + }, + "node_modules/molstar/lib/mol-gl/shader/spheres.frag.js": { + "bytesInOutput": 4553 + }, + "node_modules/molstar/lib/mol-gl/shader/cylinders.vert.js": { + "bytesInOutput": 2595 + }, + "node_modules/molstar/lib/mol-gl/shader/cylinders.frag.js": { + "bytesInOutput": 8765 + }, + "node_modules/molstar/lib/mol-gl/shader/text.vert.js": { + "bytesInOutput": 2097 + }, + "node_modules/molstar/lib/mol-gl/shader/text.frag.js": { + "bytesInOutput": 2299 + }, + "node_modules/molstar/lib/mol-gl/shader/lines.vert.js": { + "bytesInOutput": 3350 + }, + "node_modules/molstar/lib/mol-gl/shader/lines.frag.js": { + "bytesInOutput": 1098 + }, + "node_modules/molstar/lib/mol-gl/shader/mesh.vert.js": { + "bytesInOutput": 1295 + }, + "node_modules/molstar/lib/mol-gl/shader/mesh.frag.js": { + "bytesInOutput": 1807 + }, + "node_modules/molstar/lib/mol-gl/shader/direct-volume.vert.js": { + "bytesInOutput": 1032 + }, + "node_modules/molstar/lib/mol-gl/shader/direct-volume.frag.js": { + "bytesInOutput": 11865 + }, + "node_modules/molstar/lib/mol-gl/shader/image.vert.js": { + "bytesInOutput": 334 + }, + "node_modules/molstar/lib/mol-gl/shader/image.frag.js": { + "bytesInOutput": 5721 + }, + "node_modules/molstar/lib/mol-gl/shader-code.js": { + "bytesInOutput": 6546 + }, + "node_modules/molstar/lib/mol-gl/webgl/uniform.js": { + "bytesInOutput": 1643 + }, + "node_modules/molstar/lib/mol-gl/webgl/buffer.js": { + "bytesInOutput": 2378 + }, + "node_modules/molstar/lib/mol-gl/webgl/program.js": { + "bytesInOutput": 3045 + }, + "node_modules/molstar/lib/mol-gl/webgl/shader.js": { + "bytesInOutput": 632 + }, + "node_modules/molstar/lib/mol-util/reference-cache.js": { + "bytesInOutput": 459 + }, + "node_modules/molstar/lib/mol-gl/webgl/renderbuffer.js": { + "bytesInOutput": 1537 + }, + "node_modules/molstar/lib/mol-gl/webgl/vertex-array.js": { + "bytesInOutput": 679 + }, + "node_modules/molstar/lib/mol-gl/webgl/resources.js": { + "bytesInOutput": 2258 + }, + "node_modules/molstar/lib/mol-gl/webgl/render-target.js": { + "bytesInOutput": 975 + }, + "node_modules/molstar/lib/mol-gl/webgl/timer.js": { + "bytesInOutput": 3336 + }, + "node_modules/molstar/lib/mol-gl/webgl/context.js": { + "bytesInOutput": 5624 + }, + "node_modules/molstar/lib/mol-gl/webgl/compat.js": { + "bytesInOutput": 11408 + }, + "node_modules/molstar/lib/mol-gl/webgl/texture.js": { + "bytesInOutput": 9299 + }, + "node_modules/molstar/lib/mol-geo/geometry/color-data.js": { + "bytesInOutput": 4613 + }, + "node_modules/molstar/lib/mol-math/geometry/instance-grid.js": { + "bytesInOutput": 3082 + }, + "node_modules/molstar/lib/mol-geo/geometry/transform-data.js": { + "bytesInOutput": 1843 + }, + "node_modules/molstar/lib/mol-util/color/names.js": { + "bytesInOutput": 2919 + }, + "node_modules/molstar/lib/mol-theme/color/categories.js": { + "bytesInOutput": 145 + }, + "node_modules/molstar/lib/mol-theme/color/uniform.js": { + "bytesInOutput": 549 + }, + "node_modules/molstar/lib/mol-theme/size/uniform.js": { + "bytesInOutput": 364 + }, + "node_modules/molstar/lib/mol-util/material.js": { + "bytesInOutput": 756 + }, + "node_modules/molstar/lib/mol-util/clip.js": { + "bytesInOutput": 1568 + }, + "node_modules/molstar/lib/mol-geo/geometry/base.js": { + "bytesInOutput": 3871 + }, + "node_modules/molstar/lib/mol-geo/geometry/overpaint-data.js": { + "bytesInOutput": 1116 + }, + "node_modules/molstar/lib/mol-geo/geometry/transparency-data.js": { + "bytesInOutput": 1368 + }, + "node_modules/molstar/lib/mol-geo/geometry/clipping-data.js": { + "bytesInOutput": 767 + }, + "node_modules/molstar/lib/mol-geo/geometry/substance-data.js": { + "bytesInOutput": 1116 + }, + "node_modules/molstar/lib/mol-geo/geometry/emissive-data.js": { + "bytesInOutput": 1264 + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh.js": { + "bytesInOutput": 11158 + }, + "node_modules/molstar/lib/mol-util/number-packing.js": { + "bytesInOutput": 405 + }, + "node_modules/molstar/lib/mol-geo/geometry/size-data.js": { + "bytesInOutput": 1771 + }, + "node_modules/molstar/lib/mol-geo/geometry/points/points.js": { + "bytesInOutput": 3282 + }, + "node_modules/molstar/lib/mol-math/geometry/distance-transform.js": { + "bytesInOutput": 597 + }, + "node_modules/molstar/lib/mol-geo/geometry/text/font-atlas.js": { + "bytesInOutput": 3455 + }, + "node_modules/molstar/lib/mol-geo/geometry/text/text.js": { + "bytesInOutput": 5701 + }, + "node_modules/molstar/lib/mol-geo/geometry/lines/lines-builder.js": { + "bytesInOutput": 1559 + }, + "node_modules/molstar/lib/mol-geo/geometry/lines/lines.js": { + "bytesInOutput": 4033 + }, + "node_modules/molstar/lib/mol-geo/primitive/primitive.js": { + "bytesInOutput": 1062 + }, + "node_modules/molstar/lib/mol-geo/primitive/polygon.js": { + "bytesInOutput": 205 + }, + "node_modules/molstar/lib/mol-geo/primitive/cage.js": { + "bytesInOutput": 288 + }, + "node_modules/molstar/lib/mol-geo/primitive/box.js": { + "bytesInOutput": 868 + }, + "node_modules/molstar/lib/mol-geo/geometry/direct-volume/transfer-function.js": { + "bytesInOutput": 490 + }, + "node_modules/molstar/lib/mol-math/histogram.js": { + "bytesInOutput": 289 + }, + "node_modules/molstar/lib/mol-model/volume/grid.js": { + "bytesInOutput": 1034 + }, + "node_modules/molstar/lib/mol-model-formats/volume/cube.js": { + "bytesInOutput": 827 + }, + "node_modules/molstar/lib/mol-model-formats/volume/density-server.js": { + "bytesInOutput": 1064 + }, + "node_modules/molstar/lib/mol-model/volume/volume.js": { + "bytesInOutput": 5961 + }, + "node_modules/molstar/lib/mol-model/volume.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-geo/geometry/direct-volume/direct-volume.js": { + "bytesInOutput": 5484 + }, + "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres.js": { + "bytesInOutput": 7176 + }, + "node_modules/molstar/lib/mol-geo/geometry/texture-mesh/texture-mesh.js": { + "bytesInOutput": 4828 + }, + "node_modules/molstar/lib/mol-gl/renderable/schema.js": { + "bytesInOutput": 5751 + }, + "node_modules/molstar/lib/mol-gl/shader/copy.frag.js": { + "bytesInOutput": 220 + }, + "node_modules/molstar/lib/mol-gl/shader/quad.vert.js": { + "bytesInOutput": 225 + }, + "node_modules/molstar/lib/mol-gl/webgl/render-item.js": { + "bytesInOutput": 6597 + }, + "node_modules/molstar/lib/mol-math/geometry/primitives/plane3d.js": { + "bytesInOutput": 1186 + }, + "node_modules/molstar/lib/mol-math/geometry/primitives/frustum3d.js": { + "bytesInOutput": 1152 + }, + "node_modules/molstar/lib/mol-gl/renderable.js": { + "bytesInOutput": 3548 + }, + "node_modules/molstar/lib/mol-gl/compute/util.js": { + "bytesInOutput": 543 + }, + "node_modules/molstar/lib/mol-geo/geometry/image/image.js": { + "bytesInOutput": 3072 + }, + "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders.js": { + "bytesInOutput": 5630 + }, + "node_modules/molstar/lib/mol-geo/geometry/geometry.js": { + "bytesInOutput": 1483 + }, + "node_modules/molstar/lib/mol-theme/size/shape-group.js": { + "bytesInOutput": 395 + }, + "node_modules/molstar/lib/mol-theme/color/shape-group.js": { + "bytesInOutput": 414 + }, + "node_modules/molstar/lib/mol-gl/renderable/direct-volume.js": { + "bytesInOutput": 852 + }, + "node_modules/molstar/lib/mol-gl/renderable/mesh.js": { + "bytesInOutput": 598 + }, + "node_modules/molstar/lib/mol-gl/renderable/points.js": { + "bytesInOutput": 311 + }, + "node_modules/molstar/lib/mol-gl/renderable/lines.js": { + "bytesInOutput": 386 + }, + "node_modules/molstar/lib/mol-gl/renderable/spheres.js": { + "bytesInOutput": 689 + }, + "node_modules/molstar/lib/mol-gl/renderable/text.js": { + "bytesInOutput": 621 + }, + "node_modules/molstar/lib/mol-gl/renderable/texture-mesh.js": { + "bytesInOutput": 669 + }, + "node_modules/molstar/lib/mol-gl/renderable/image.js": { + "bytesInOutput": 422 + }, + "node_modules/molstar/lib/mol-gl/renderable/cylinders.js": { + "bytesInOutput": 679 + }, + "node_modules/molstar/lib/mol-gl/render-object.js": { + "bytesInOutput": 768 + }, + "node_modules/molstar/lib/mol-model/shape/shape.js": { + "bytesInOutput": 3187 + }, + "node_modules/molstar/lib/mol-model/shape.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-model/loci.js": { + "bytesInOutput": 4862 + }, + "node_modules/molstar/lib/mol-script/script/mol-script/script-macro.js": { + "bytesInOutput": 149 + }, + "node_modules/molstar/lib/mol-script/script/mol-script/symbols.js": { + "bytesInOutput": 10878 + }, + "node_modules/molstar/lib/mol-util/monadic-parser.js": { + "bytesInOutput": 6420 + }, + "node_modules/molstar/lib/mol-script/language/parser.js": { + "bytesInOutput": 2506 + }, + "node_modules/molstar/lib/mol-script/transpilers/helper.js": { + "bytesInOutput": 5023 + }, + "node_modules/molstar/lib/mol-script/transpilers/jmol/properties.js": { + "bytesInOutput": 23309 + }, + "node_modules/molstar/lib/mol-script/transpilers/jmol/operators.js": { + "bytesInOutput": 559 + }, + "node_modules/molstar/lib/mol-script/transpilers/jmol/keywords.js": { + "bytesInOutput": 14011 + }, + "node_modules/molstar/lib/mol-script/transpilers/jmol/parser.js": { + "bytesInOutput": 4963 + }, + "node_modules/molstar/lib/mol-script/transpilers/pymol/properties.js": { + "bytesInOutput": 5146 + }, + "node_modules/molstar/lib/mol-script/transpilers/pymol/operators.js": { + "bytesInOutput": 6418 + }, + "node_modules/molstar/lib/mol-script/transpilers/pymol/keywords.js": { + "bytesInOutput": 5691 + }, + "node_modules/molstar/lib/mol-script/transpilers/pymol/parser.js": { + "bytesInOutput": 2606 + }, + "node_modules/molstar/lib/mol-script/transpilers/vmd/properties.js": { + "bytesInOutput": 5635 + }, + "node_modules/molstar/lib/mol-script/transpilers/vmd/operators.js": { + "bytesInOutput": 1524 + }, + "node_modules/molstar/lib/mol-script/transpilers/vmd/keywords.js": { + "bytesInOutput": 5887 + }, + "node_modules/molstar/lib/mol-script/transpilers/vmd/functions.js": { + "bytesInOutput": 1519 + }, + "node_modules/molstar/lib/mol-script/transpilers/vmd/parser.js": { + "bytesInOutput": 3870 + }, + "node_modules/molstar/lib/mol-script/transpilers/all.js": { + "bytesInOutput": 33 + }, + "node_modules/molstar/lib/mol-script/transpile.js": { + "bytesInOutput": 92 + }, + "node_modules/molstar/lib/mol-script/runtime/query/base.js": { + "bytesInOutput": 2135 + }, + "node_modules/molstar/lib/mol-script/runtime/query/compiler.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-script/runtime/query/table.js": { + "bytesInOutput": 13521 + }, + "node_modules/molstar/lib/mol-script/script.js": { + "bytesInOutput": 793 + }, + "node_modules/molstar/lib/mol-theme/overpaint.js": { + "bytesInOutput": 2125 + }, + "node_modules/molstar/lib/mol-state/object.js": { + "bytesInOutput": 2031 + }, + "node_modules/molstar/lib/mol-state/index.js": { + "bytesInOutput": 0 + }, + "node_modules/immutable/dist/immutable.es.js": { + "bytesInOutput": 62279 + }, + "node_modules/molstar/lib/mol-state/action.js": { + "bytesInOutput": 923 + }, + "node_modules/molstar/lib/mol-state/transformer.js": { + "bytesInOutput": 1990 + }, + "node_modules/molstar/lib/mol-state/transform.js": { + "bytesInOutput": 2492 + }, + "node_modules/molstar/lib/mol-state/tree/transient.js": { + "bytesInOutput": 4972 + }, + "node_modules/molstar/lib/mol-state/tree/immutable.js": { + "bytesInOutput": 2158 + }, + "node_modules/molstar/lib/mol-state/state/selection.js": { + "bytesInOutput": 5828 + }, + "node_modules/molstar/lib/mol-util/rx-event-helper.js": { + "bytesInOutput": 425 + }, + "node_modules/immer/dist/immer.mjs": { + "bytesInOutput": 7750 + }, + "node_modules/molstar/lib/mol-state/state/builder.js": { + "bytesInOutput": 4148 + }, + "node_modules/molstar/lib/mol-state/action/manager.js": { + "bytesInOutput": 1043 + }, + "node_modules/molstar/lib/mol-util/log-entry.js": { + "bytesInOutput": 337 + }, + "node_modules/molstar/lib/mol-state/tree/spine.js": { + "bytesInOutput": 955 + }, + "node_modules/molstar/lib/mol-util/async-queue.js": { + "bytesInOutput": 485 + }, + "node_modules/molstar/lib/mol-state/state.js": { + "bytesInOutput": 14750 + }, + "node_modules/molstar/lib/mol-plugin-state/objects.js": { + "bytesInOutput": 2938 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/model.js": { + "bytesInOutput": 197 + }, + "node_modules/molstar/lib/mol-util/url.js": { + "bytesInOutput": 75 + }, + "node_modules/molstar/lib/mol-plugin/features.js": { + "bytesInOutput": 362 + }, + "node_modules/molstar/lib/mol-plugin/config.js": { + "bytesInOutput": 2391 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/util.js": { + "bytesInOutput": 2524 + }, + "node_modules/molstar/lib/mol-plugin/behavior/behavior.js": { + "bytesInOutput": 2119 + }, + "node_modules/molstar/lib/mol-util/lru-cache.js": { + "bytesInOutput": 555 + }, + "node_modules/molstar/lib/mol-plugin/command.js": { + "bytesInOutput": 791 + }, + "node_modules/molstar/lib/mol-plugin/commands.js": { + "bytesInOutput": 551 + }, + "node_modules/molstar/lib/mol-util/single-async-queue.js": { + "bytesInOutput": 506 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/behavior.js": { + "bytesInOutput": 12631 + }, + "node_modules/molstar/lib/mol-plugin-state/transforms/representation.js": { + "bytesInOutput": 34962 + }, + "node_modules/molstar/lib/mol-theme/color/carbohydrate-symbol.js": { + "bytesInOutput": 774 + }, + "node_modules/molstar/lib/mol-util/color/distinct.js": { + "bytesInOutput": 2410 + }, + "node_modules/molstar/lib/mol-util/color/palette.js": { + "bytesInOutput": 1205 + }, + "node_modules/molstar/lib/mol-theme/color/chain-id.js": { + "bytesInOutput": 1592 + }, + "node_modules/molstar/lib/mol-theme/color/element-index.js": { + "bytesInOutput": 1033 + }, + "node_modules/molstar/lib/mol-util/color/params.js": { + "bytesInOutput": 67 + }, + "node_modules/molstar/lib/mol-theme/color/operator-name.js": { + "bytesInOutput": 938 + }, + "node_modules/molstar/lib/mol-theme/color/entity-id.js": { + "bytesInOutput": 1564 + }, + "node_modules/molstar/lib/mol-theme/color/entity-source.js": { + "bytesInOutput": 2429 + }, + "node_modules/molstar/lib/mol-theme/color/model-index.js": { + "bytesInOutput": 736 + }, + "node_modules/molstar/lib/mol-theme/color/structure-index.js": { + "bytesInOutput": 736 + }, + "node_modules/molstar/lib/mol-theme/color/unit-index.js": { + "bytesInOutput": 1018 + }, + "node_modules/molstar/lib/mol-theme/color/element-symbol.js": { + "bytesInOutput": 3356 + }, + "node_modules/molstar/lib/mol-theme/color/molecule-type.js": { + "bytesInOutput": 1120 + }, + "node_modules/molstar/lib/mol-theme/color/polymer-id.js": { + "bytesInOutput": 1969 + }, + "node_modules/molstar/lib/mol-theme/color/polymer-index.js": { + "bytesInOutput": 1182 + }, + "node_modules/molstar/lib/mol-theme/color/residue-name.js": { + "bytesInOutput": 1818 + }, + "node_modules/molstar/lib/mol-theme/color/secondary-structure.js": { + "bytesInOutput": 1731 + }, + "node_modules/molstar/lib/mol-theme/color/sequence-id.js": { + "bytesInOutput": 1670 + }, + "node_modules/molstar/lib/mol-theme/color/uncertainty.js": { + "bytesInOutput": 1067 + }, + "node_modules/molstar/lib/mol-theme/color/illustrative.js": { + "bytesInOutput": 1530 + }, + "node_modules/molstar/lib/mol-theme/color/hydrophobicity.js": { + "bytesInOutput": 1533 + }, + "node_modules/molstar/lib/mol-theme/color/trajectory-index.js": { + "bytesInOutput": 1024 + }, + "node_modules/molstar/lib/mol-theme/color/occupancy.js": { + "bytesInOutput": 833 + }, + "node_modules/molstar/lib/mol-theme/color/operator-hkl.js": { + "bytesInOutput": 1657 + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/partial-charge.js": { + "bytesInOutput": 112 + }, + "node_modules/molstar/lib/mol-theme/color/partial-charge.js": { + "bytesInOutput": 914 + }, + "node_modules/molstar/lib/mol-theme/color/atom-id.js": { + "bytesInOutput": 1041 + }, + "node_modules/molstar/lib/mol-theme/color/volume-value.js": { + "bytesInOutput": 682 + }, + "node_modules/molstar/lib/mol-theme/color/volume-segment.js": { + "bytesInOutput": 660 + }, + "node_modules/molstar/lib/mol-theme/color/external-volume.js": { + "bytesInOutput": 2536 + }, + "node_modules/molstar/lib/mol-theme/color/cartoon.js": { + "bytesInOutput": 1625 + }, + "node_modules/molstar/lib/mol-theme/color.js": { + "bytesInOutput": 1049 + }, + "node_modules/molstar/lib/mol-theme/size/physical.js": { + "bytesInOutput": 787 + }, + "node_modules/molstar/lib/mol-theme/size/uncertainty.js": { + "bytesInOutput": 1033 + }, + "node_modules/molstar/lib/mol-theme/size.js": { + "bytesInOutput": 513 + }, + "node_modules/molstar/lib/mol-theme/theme.js": { + "bytesInOutput": 2299 + }, + "node_modules/molstar/lib/mol-util/marker-action.js": { + "bytesInOutput": 2815 + }, + "node_modules/molstar/lib/mol-theme/transparency.js": { + "bytesInOutput": 1942 + }, + "node_modules/molstar/lib/mol-repr/util.js": { + "bytesInOutput": 1882 + }, + "node_modules/molstar/lib/mol-repr/volume/util.js": { + "bytesInOutput": 3579 + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/color-smoothing.js": { + "bytesInOutput": 7747 + }, + "node_modules/molstar/lib/mol-gl/shader/compute/color-smoothing/normalize.frag.js": { + "bytesInOutput": 330 + }, + "node_modules/molstar/lib/mol-gl/shader/compute/color-smoothing/accumulate.frag.js": { + "bytesInOutput": 501 + }, + "node_modules/molstar/lib/mol-gl/shader/compute/color-smoothing/accumulate.vert.js": { + "bytesInOutput": 1107 + }, + "node_modules/molstar/lib/mol-geo/geometry/texture-mesh/color-smoothing.js": { + "bytesInOutput": 11192 + }, + "node_modules/molstar/lib/mol-repr/visual.js": { + "bytesInOutput": 6802 + }, + "node_modules/molstar/lib/mol-theme/clipping.js": { + "bytesInOutput": 2815 + }, + "node_modules/molstar/lib/mol-theme/substance.js": { + "bytesInOutput": 2203 + }, + "node_modules/molstar/lib/mol-theme/emissive.js": { + "bytesInOutput": 1949 + }, + "node_modules/molstar/lib/mol-repr/representation.js": { + "bytesInOutput": 5877 + }, + "node_modules/molstar/lib/mol-repr/shape/representation.js": { + "bytesInOutput": 4233 + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/unit-transforms.js": { + "bytesInOutput": 1224 + }, + "node_modules/molstar/lib/mol-plugin-state/animation/helpers.js": { + "bytesInOutput": 1254 + }, + "node_modules/molstar/lib/mol-geo/primitive/polyhedron.js": { + "bytesInOutput": 1085 + }, + "node_modules/molstar/lib/mol-geo/primitive/icosahedron.js": { + "bytesInOutput": 465 + }, + "node_modules/molstar/lib/mol-geo/primitive/sphere.js": { + "bytesInOutput": 142 + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sphere.js": { + "bytesInOutput": 237 + }, + "node_modules/molstar/lib/mol-geo/primitive/cylinder.js": { + "bytesInOutput": 1097 + }, + "node_modules/molstar/lib/mol-geo/primitive/prism.js": { + "bytesInOutput": 1473 + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/cylinder.js": { + "bytesInOutput": 1787 + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/mesh-builder.js": { + "bytesInOutput": 2931 + }, + "node_modules/molstar/lib/mol-repr/shape/model/unitcell.js": { + "bytesInOutput": 1300 + }, + "node_modules/molstar/lib/mol-geo/geometry/text/text-builder.js": { + "bytesInOutput": 3059 + }, + "node_modules/molstar/lib/mol-theme/label.js": { + "bytesInOutput": 7650 + }, + "node_modules/molstar/lib/mol-repr/shape/loci/common.js": { + "bytesInOutput": 302 + }, + "node_modules/molstar/lib/mol-repr/shape/loci/distance.js": { + "bytesInOutput": 1835 + }, + "node_modules/molstar/lib/mol-plugin-state/transforms/helpers.js": { + "bytesInOutput": 400 + }, + "node_modules/molstar/lib/mol-repr/shape/loci/label.js": { + "bytesInOutput": 1311 + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/axes.js": { + "bytesInOutput": 422 + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/box.js": { + "bytesInOutput": 547 + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/ellipsoid.js": { + "bytesInOutput": 198 + }, + "node_modules/molstar/lib/mol-repr/shape/loci/orientation.js": { + "bytesInOutput": 1751 + }, + "node_modules/molstar/lib/mol-geo/primitive/circle.js": { + "bytesInOutput": 687 + }, + "node_modules/molstar/lib/mol-repr/shape/loci/angle.js": { + "bytesInOutput": 3538 + }, + "node_modules/molstar/lib/mol-repr/shape/loci/dihedral.js": { + "bytesInOutput": 5674 + }, + "node_modules/molstar/lib/mol-plugin-state/transforms/shape.js": { + "bytesInOutput": 992 + }, + "node_modules/molstar/lib/mol-geo/primitive/plane.js": { + "bytesInOutput": 257 + }, + "node_modules/molstar/lib/mol-repr/shape/loci/plane.js": { + "bytesInOutput": 889 + }, + "node_modules/molstar/lib/mol-geo/util/marching-cubes/tables.js": { + "bytesInOutput": 7948 + }, + "node_modules/molstar/lib/mol-geo/util/marching-cubes/builder.js": { + "bytesInOutput": 1218 + }, + "node_modules/molstar/lib/mol-geo/util/marching-cubes/algorithm.js": { + "bytesInOutput": 4698 + }, + "node_modules/molstar/lib/mol-repr/volume/representation.js": { + "bytesInOutput": 5979 + }, + "node_modules/molstar/lib/mol-gl/shader/histogram-pyramid/sum.frag.js": { + "bytesInOutput": 408 + }, + "node_modules/molstar/lib/mol-gl/compute/histogram-pyramid/sum.js": { + "bytesInOutput": 1349 + }, + "node_modules/molstar/lib/mol-gl/shader/histogram-pyramid/reduction.frag.js": { + "bytesInOutput": 2053 + }, + "node_modules/molstar/lib/mol-gl/compute/histogram-pyramid/reduction.js": { + "bytesInOutput": 2871 + }, + "node_modules/molstar/lib/mol-gl/compute/marching-cubes/tables.js": { + "bytesInOutput": 349 + }, + "node_modules/molstar/lib/mol-gl/shader/marching-cubes/isosurface.frag.js": { + "bytesInOutput": 10082 + }, + "node_modules/molstar/lib/mol-gl/shader/marching-cubes/active-voxels.frag.js": { + "bytesInOutput": 2582 + }, + "node_modules/molstar/lib/mol-gl/compute/marching-cubes/active-voxels.js": { + "bytesInOutput": 1692 + }, + "node_modules/molstar/lib/mol-gl/compute/marching-cubes/isosurface.js": { + "bytesInOutput": 3542 + }, + "node_modules/molstar/lib/mol-repr/volume/isosurface.js": { + "bytesInOutput": 5474 + }, + "node_modules/molstar/lib/mol-repr/volume/slice.js": { + "bytesInOutput": 3488 + }, + "node_modules/molstar/lib/mol-repr/volume/direct-volume.js": { + "bytesInOutput": 2602 + }, + "node_modules/molstar/lib/mol-repr/volume/segment.js": { + "bytesInOutput": 5449 + }, + "node_modules/molstar/lib/mol-repr/volume/registry.js": { + "bytesInOutput": 283 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/volume-streaming/transformers.js": { + "bytesInOutput": 6756 + }, + "node_modules/molstar/lib/mol-plugin-state/animation/model.js": { + "bytesInOutput": 284 + }, + "node_modules/molstar/lib/mol-plugin-state/transforms/data.js": { + "bytesInOutput": 11279 + }, + "node_modules/molstar/lib/mol-io/common/simple-buffer.js": { + "bytesInOutput": 1749 + }, + "node_modules/molstar/lib/mol-io/common/file-handle.js": { + "bytesInOutput": 694 + }, + "node_modules/molstar/lib/mol-io/common/typed-array.js": { + "bytesInOutput": 828 + }, + "node_modules/molstar/lib/mol-io/reader/ccp4/parser.js": { + "bytesInOutput": 2256 + }, + "node_modules/molstar/lib/mol-io/reader/dsn6/parser.js": { + "bytesInOutput": 2425 + }, + "node_modules/molstar/lib/mol-io/reader/ply/schema.js": { + "bytesInOutput": 391 + }, + "node_modules/molstar/lib/mol-io/reader/ply/parser.js": { + "bytesInOutput": 2992 + }, + "node_modules/molstar/lib/mol-io/reader/psf/parser.js": { + "bytesInOutput": 3359 + }, + "node_modules/molstar/lib/mol-io/reader/cube/parser.js": { + "bytesInOutput": 1704 + }, + "node_modules/molstar/lib/mol-io/reader/dx/parser.js": { + "bytesInOutput": 1551 + }, + "node_modules/molstar/lib/mol-io/reader/prmtop/parser.js": { + "bytesInOutput": 2600 + }, + "node_modules/molstar/lib/mol-io/reader/top/parser.js": { + "bytesInOutput": 3787 + }, + "node_modules/molstar/lib/mol-plugin-state/transforms/misc.js": { + "bytesInOutput": 386 + }, + "node_modules/molstar/lib/mol-plugin-state/transforms/model.js": { + "bytesInOutput": 25539 + }, + "node_modules/molstar/lib/mol-io/reader/dcd/parser.js": { + "bytesInOutput": 1905 + }, + "node_modules/molstar/lib/mol-io/reader/common/text/column/fixed.js": { + "bytesInOutput": 494 + }, + "node_modules/molstar/lib/mol-io/reader/gro/parser.js": { + "bytesInOutput": 1891 + }, + "node_modules/molstar/lib/mol-io/reader/pdb/parser.js": { + "bytesInOutput": 155 + }, + "node_modules/molstar/lib/mol-model-formats/shape/ply.js": { + "bytesInOutput": 5105 + }, + "node_modules/molstar/lib/mol-math/geometry/spacegroup/cell.js": { + "bytesInOutput": 437 + }, + "node_modules/molstar/lib/mol-model-formats/structure/dcd.js": { + "bytesInOutput": 1001 + }, + "node_modules/molstar/lib/mol-model-formats/structure/util.js": { + "bytesInOutput": 1083 + }, + "node_modules/molstar/lib/mol-model-formats/structure/common/util.js": { + "bytesInOutput": 197 + }, + "node_modules/molstar/lib/mol-model-formats/structure/gro.js": { + "bytesInOutput": 1638 + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/assembly.js": { + "bytesInOutput": 3837 + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/secondary-structure.js": { + "bytesInOutput": 3284 + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/entity.js": { + "bytesInOutput": 895 + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/atom-site.js": { + "bytesInOutput": 2995 + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/anisotropic.js": { + "bytesInOutput": 2073 + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/conect.js": { + "bytesInOutput": 1391 + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/header.js": { + "bytesInOutput": 184 + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb/to-cif.js": { + "bytesInOutput": 2739 + }, + "node_modules/molstar/lib/mol-model-formats/structure/pdb.js": { + "bytesInOutput": 725 + }, + "node_modules/molstar/lib/mol-model-formats/structure/psf.js": { + "bytesInOutput": 1631 + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/root-structure.js": { + "bytesInOutput": 4041 + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-query.js": { + "bytesInOutput": 700 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/types.js": { + "bytesInOutput": 2223 + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-selection-query.js": { + "bytesInOutput": 16563 + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-component.js": { + "bytesInOutput": 2701 + }, + "node_modules/molstar/lib/mol-io/reader/mol/parser.js": { + "bytesInOutput": 2292 + }, + "node_modules/molstar/lib/mol-model-formats/structure/mol.js": { + "bytesInOutput": 1753 + }, + "node_modules/molstar/lib/mol-model-formats/structure/cif-core.js": { + "bytesInOutput": 4190 + }, + "node_modules/molstar/lib/mol-model-formats/structure/cube.js": { + "bytesInOutput": 1243 + }, + "node_modules/molstar/lib/mol-io/reader/mol2/parser.js": { + "bytesInOutput": 4807 + }, + "node_modules/molstar/lib/mol-model-formats/structure/mol2.js": { + "bytesInOutput": 2523 + }, + "node_modules/molstar/lib/mol-io/reader/xtc/parser.js": { + "bytesInOutput": 4105 + }, + "node_modules/molstar/lib/mol-model-formats/structure/xtc.js": { + "bytesInOutput": 503 + }, + "node_modules/molstar/lib/mol-io/reader/xyz/parser.js": { + "bytesInOutput": 621 + }, + "node_modules/molstar/lib/mol-model-formats/structure/xyz.js": { + "bytesInOutput": 1332 + }, + "node_modules/molstar/lib/mol-io/reader/sdf/parser-v3-util.js": { + "bytesInOutput": 1212 + }, + "node_modules/molstar/lib/mol-io/reader/sdf/parser.js": { + "bytesInOutput": 1254 + }, + "node_modules/molstar/lib/mol-model-formats/structure/sdf.js": { + "bytesInOutput": 228 + }, + "node_modules/molstar/lib/mol-io/reader/trr/parser.js": { + "bytesInOutput": 1370 + }, + "node_modules/molstar/lib/mol-model-formats/structure/trr.js": { + "bytesInOutput": 503 + }, + "node_modules/molstar/lib/mol-io/common/io-buffer.js": { + "bytesInOutput": 4016 + }, + "node_modules/molstar/lib/mol-io/common/netcdf/reader.js": { + "bytesInOutput": 4239 + }, + "node_modules/molstar/lib/mol-io/reader/nctraj/parser.js": { + "bytesInOutput": 1062 + }, + "node_modules/molstar/lib/mol-model-formats/structure/nctraj.js": { + "bytesInOutput": 684 + }, + "node_modules/molstar/lib/mol-model-formats/structure/prmtop.js": { + "bytesInOutput": 1856 + }, + "node_modules/molstar/lib/mol-model-formats/structure/top.js": { + "bytesInOutput": 2432 + }, + "node_modules/molstar/lib/mol-plugin-state/transforms/volume.js": { + "bytesInOutput": 6853 + }, + "node_modules/molstar/lib/mol-model-formats/volume/ccp4.js": { + "bytesInOutput": 1616 + }, + "node_modules/molstar/lib/mol-model-formats/volume/dsn6.js": { + "bytesInOutput": 933 + }, + "node_modules/molstar/lib/mol-model-formats/volume/dx.js": { + "bytesInOutput": 607 + }, + "node_modules/molstar/lib/mol-model-formats/volume/segmentation.js": { + "bytesInOutput": 2102 + }, + "node_modules/molstar/lib/mol-plugin-state/transforms.js": { + "bytesInOutput": 71 + }, + "node_modules/molstar/lib/mol-plugin-state/animation/built-in/assembly-unwind.js": { + "bytesInOutput": 1916 + }, + "node_modules/molstar/lib/mol-plugin-state/animation/built-in/camera-spin.js": { + "bytesInOutput": 1401 + }, + "node_modules/molstar/lib/mol-plugin-state/animation/built-in/model-index.js": { + "bytesInOutput": 3330 + }, + "node_modules/molstar/lib/mol-plugin-state/animation/built-in/state-snapshots.js": { + "bytesInOutput": 1763 + }, + "node_modules/molstar/lib/mol-plugin/behavior.js": { + "bytesInOutput": 102 + }, + "node_modules/molstar/lib/mol-plugin/behavior/static/state.js": { + "bytesInOutput": 5106 + }, + "node_modules/molstar/lib/mol-plugin-state/component.js": { + "bytesInOutput": 551 + }, + "node_modules/molstar/lib/mol-plugin/version.js": { + "bytesInOutput": 109 + }, + "node_modules/molstar/lib/mol-canvas3d/util.js": { + "bytesInOutput": 824 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/snapshots.js": { + "bytesInOutput": 7548 + }, + "node_modules/molstar/lib/mol-util/date.js": { + "bytesInOutput": 166 + }, + "node_modules/molstar/lib/mol-util/download.js": { + "bytesInOutput": 1032 + }, + "node_modules/molstar/lib/mol-plugin/behavior/static/representation.js": { + "bytesInOutput": 1947 + }, + "node_modules/molstar/lib/mol-plugin/behavior/static/camera.js": { + "bytesInOutput": 795 + }, + "node_modules/molstar/lib/mol-plugin/behavior/static/misc.js": { + "bytesInOutput": 422 + }, + "node_modules/molstar/lib/mol-canvas3d/camera/util.js": { + "bytesInOutput": 916 + }, + "node_modules/molstar/lib/mol-util/input/input-observer.js": { + "bytesInOutput": 11809 + }, + "node_modules/molstar/lib/mol-gl/renderer.js": { + "bytesInOutput": 18111 + }, + "node_modules/molstar/lib/mol-util/binding.js": { + "bytesInOutput": 2151 + }, + "node_modules/molstar/lib/mol-canvas3d/controls/trackball.js": { + "bytesInOutput": 15567 + }, + "node_modules/molstar/lib/mol-gl/object3d.js": { + "bytesInOutput": 263 + }, + "node_modules/molstar/lib/mol-gl/commit-queue.js": { + "bytesInOutput": 788 + }, + "node_modules/molstar/lib/mol-gl/scene.js": { + "bytesInOutput": 3728 + }, + "node_modules/molstar/lib/mol-canvas3d/camera/transition.js": { + "bytesInOutput": 1675 + }, + "node_modules/molstar/lib/mol-canvas3d/camera.js": { + "bytesInOutput": 5992 + }, + "node_modules/molstar/lib/mol-canvas3d/helper/bounding-sphere-helper.js": { + "bytesInOutput": 3193 + }, + "node_modules/molstar/lib/mol-canvas3d/helper/interaction-events.js": { + "bytesInOutput": 4165 + }, + "node_modules/molstar/lib/mol-gl/shader/outlines.frag.js": { + "bytesInOutput": 3368 + }, + "node_modules/molstar/lib/mol-gl/shader/ssao.frag.js": { + "bytesInOutput": 8117 + }, + "node_modules/molstar/lib/mol-gl/shader/ssao-blur.frag.js": { + "bytesInOutput": 2850 + }, + "node_modules/molstar/lib/mol-gl/shader/postprocessing.frag.js": { + "bytesInOutput": 5035 + }, + "node_modules/molstar/lib/mol-gl/shader/fxaa.frag.js": { + "bytesInOutput": 9010 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/fxaa.js": { + "bytesInOutput": 2187 + }, + "node_modules/molstar/lib/mol-gl/shader/smaa/blend.vert.js": { + "bytesInOutput": 800 + }, + "node_modules/molstar/lib/mol-gl/shader/smaa/blend.frag.js": { + "bytesInOutput": 1923 + }, + "node_modules/molstar/lib/mol-gl/shader/smaa/weights.vert.js": { + "bytesInOutput": 1184 + }, + "node_modules/molstar/lib/mol-gl/shader/smaa/weights.frag.js": { + "bytesInOutput": 7864 + }, + "node_modules/molstar/lib/mol-gl/shader/smaa/edges.vert.js": { + "bytesInOutput": 913 + }, + "node_modules/molstar/lib/mol-gl/shader/smaa/edges.frag.js": { + "bytesInOutput": 1883 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/smaa.js": { + "bytesInOutput": 48748 + }, + "node_modules/molstar/lib/mol-gl/shader/background.frag.js": { + "bytesInOutput": 3725 + }, + "node_modules/molstar/lib/mol-gl/shader/background.vert.js": { + "bytesInOutput": 193 + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/euler.js": { + "bytesInOutput": 1736 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/background.js": { + "bytesInOutput": 10966 + }, + "node_modules/molstar/lib/mol-gl/shader/shadows.frag.js": { + "bytesInOutput": 3214 + }, + "node_modules/molstar/lib/mol-gl/shader/cas.frag.js": { + "bytesInOutput": 4108 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/cas.js": { + "bytesInOutput": 1369 + }, + "node_modules/molstar/lib/mol-gl/shader/dof.frag.js": { + "bytesInOutput": 3625 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/dof.js": { + "bytesInOutput": 3814 + }, + "node_modules/molstar/lib/mol-gl/shader/bloom/composite.frag.js": { + "bytesInOutput": 1114 + }, + "node_modules/molstar/lib/mol-gl/shader/bloom/luminosity.frag.js": { + "bytesInOutput": 1349 + }, + "node_modules/molstar/lib/mol-gl/shader/bloom/blur.frag.js": { + "bytesInOutput": 807 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/bloom.js": { + "bytesInOutput": 6485 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/postprocessing.js": { + "bytesInOutput": 24437 + }, + "node_modules/molstar/lib/mol-gl/shader/compose.frag.js": { + "bytesInOutput": 253 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/multi-sample.js": { + "bytesInOutput": 5396 + }, + "node_modules/molstar/lib/mol-canvas3d/camera/stereo.js": { + "bytesInOutput": 2021 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/pick.js": { + "bytesInOutput": 7540 + }, + "node_modules/molstar/lib/mol-gl/shader/evaluate-wboit.frag.js": { + "bytesInOutput": 436 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/wboit.js": { + "bytesInOutput": 2378 + }, + "node_modules/molstar/lib/mol-gl/shader/evaluate-dpoit.frag.js": { + "bytesInOutput": 213 + }, + "node_modules/molstar/lib/mol-gl/shader/blend-back-dpoit.frag.js": { + "bytesInOutput": 307 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/dpoit.js": { + "bytesInOutput": 5908 + }, + "node_modules/molstar/lib/mol-gl/shader/marking/overlay.frag.js": { + "bytesInOutput": 925 + }, + "node_modules/molstar/lib/mol-gl/shader/marking/edge.frag.js": { + "bytesInOutput": 1051 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/marking.js": { + "bytesInOutput": 3879 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/draw.js": { + "bytesInOutput": 9698 + }, + "node_modules/molstar/lib/mol-canvas3d/helper/camera-helper.js": { + "bytesInOutput": 7086 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/image.js": { + "bytesInOutput": 1984 + }, + "node_modules/molstar/lib/mol-canvas3d/helper/handle-helper.js": { + "bytesInOutput": 3277 + }, + "node_modules/molstar/lib/mol-canvas3d/helper/helper.js": { + "bytesInOutput": 266 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/passes.js": { + "bytesInOutput": 504 + }, + "node_modules/molstar/lib/mol-gl/shader/hi-z.frag.js": { + "bytesInOutput": 539 + }, + "node_modules/molstar/lib/mol-gl/compute/hi-z.js": { + "bytesInOutput": 299 + }, + "node_modules/molstar/lib/mol-math/approx.js": { + "bytesInOutput": 858 + }, + "node_modules/molstar/lib/mol-canvas3d/passes/hi-z.js": { + "bytesInOutput": 8811 + }, + "node_modules/molstar/lib/mol-canvas3d/canvas3d.js": { + "bytesInOutput": 16019 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/representation.js": { + "bytesInOutput": 7506 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/camera.js": { + "bytesInOutput": 4486 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props.js": { + "bytesInOutput": 196 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/structure-info.js": { + "bytesInOutput": 3256 + }, + "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley/common.js": { + "bytesInOutput": 223 + }, + "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley/radii.js": { + "bytesInOutput": 1310 + }, + "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley/area.js": { + "bytesInOutput": 1186 + }, + "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area/shrake-rupley.js": { + "bytesInOutput": 2036 + }, + "node_modules/molstar/lib/mol-model-props/computed/accessible-surface-area.js": { + "bytesInOutput": 772 + }, + "node_modules/molstar/lib/mol-model-props/computed/themes/accessible-surface-area.js": { + "bytesInOutput": 1110 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/computed/accessible-surface-area.js": { + "bytesInOutput": 2942 + }, + "node_modules/molstar/lib/mol-model-props/computed/chemistry/util.js": { + "bytesInOutput": 1587 + }, + "node_modules/molstar/lib/mol-model-props/computed/chemistry/geometry.js": { + "bytesInOutput": 1738 + }, + "node_modules/molstar/lib/mol-model-props/computed/chemistry/valence-model.js": { + "bytesInOutput": 3045 + }, + "node_modules/molstar/lib/mol-model-props/computed/valence-model.js": { + "bytesInOutput": 304 + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/features.js": { + "bytesInOutput": 2725 + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/common.js": { + "bytesInOutput": 3238 + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/contacts-builder.js": { + "bytesInOutput": 724 + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/contacts.js": { + "bytesInOutput": 2546 + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/halogen-bonds.js": { + "bytesInOutput": 1303 + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/hydrogen-bonds.js": { + "bytesInOutput": 4426 + }, + "node_modules/molstar/lib/mol-model-props/computed/chemistry/functional-group.js": { + "bytesInOutput": 815 + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/charged.js": { + "bytesInOutput": 5073 + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/hydrophobic.js": { + "bytesInOutput": 759 + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/metal.js": { + "bytesInOutput": 1518 + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/refine.js": { + "bytesInOutput": 3643 + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions/interactions.js": { + "bytesInOutput": 3464 + }, + "node_modules/molstar/lib/mol-model-props/computed/interactions.js": { + "bytesInOutput": 310 + }, + "node_modules/molstar/lib/mol-model-props/computed/themes/interaction-type.js": { + "bytesInOutput": 1782 + }, + "node_modules/molstar/lib/mol-repr/structure/complex-representation.js": { + "bytesInOutput": 2309 + }, + "node_modules/molstar/lib/mol-repr/structure/representation.js": { + "bytesInOutput": 192 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/common.js": { + "bytesInOutput": 4936 + }, + "node_modules/molstar/lib/mol-repr/structure/params.js": { + "bytesInOutput": 364 + }, + "node_modules/molstar/lib/mol-repr/structure/complex-visual.js": { + "bytesInOutput": 5584 + }, + "node_modules/molstar/lib/mol-repr/structure/units-representation.js": { + "bytesInOutput": 5425 + }, + "node_modules/molstar/lib/mol-repr/structure/units-visual.js": { + "bytesInOutput": 6527 + }, + "node_modules/molstar/lib/mol-geo/geometry/cylinders/cylinders-builder.js": { + "bytesInOutput": 1806 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/link.js": { + "bytesInOutput": 6630 + }, + "node_modules/molstar/lib/mol-model-props/computed/representations/shared.js": { + "bytesInOutput": 595 + }, + "node_modules/molstar/lib/mol-model-props/computed/representations/interactions-intra-unit-cylinder.js": { + "bytesInOutput": 4214 + }, + "node_modules/molstar/lib/mol-model-props/computed/representations/interactions-inter-unit-cylinder.js": { + "bytesInOutput": 4672 + }, + "node_modules/molstar/lib/mol-model-props/computed/representations/interactions.js": { + "bytesInOutput": 929 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/computed/interactions.js": { + "bytesInOutput": 2130 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/computed/secondary-structure.js": { + "bytesInOutput": 637 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/computed/valence-model.js": { + "bytesInOutput": 1759 + }, + "node_modules/molstar/lib/mol-model-props/sequence/themes/sifts-mapping.js": { + "bytesInOutput": 1247 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/sequence/sifts-mapping.js": { + "bytesInOutput": 1256 + }, + "node_modules/molstar/lib/mol-model-props/integrative/cross-link-restraint/format.js": { + "bytesInOutput": 1076 + }, + "node_modules/molstar/lib/mol-model-props/integrative/pair-restraints.js": { + "bytesInOutput": 431 + }, + "node_modules/molstar/lib/mol-model-props/integrative/cross-link-restraint/property.js": { + "bytesInOutput": 3189 + }, + "node_modules/molstar/lib/mol-model-props/integrative/cross-link-restraint/representation.js": { + "bytesInOutput": 1979 + }, + "node_modules/molstar/lib/mol-model-props/integrative/cross-link-restraint/color.js": { + "bytesInOutput": 1008 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/custom-props/integrative/cross-link-restraint.js": { + "bytesInOutput": 717 + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-representation-params.js": { + "bytesInOutput": 2286 + }, + "node_modules/molstar/lib/mol-plugin/behavior/dynamic/selection/structure-focus-representation.js": { + "bytesInOutput": 5871 + }, + "node_modules/molstar/lib/mol-plugin-state/actions/structure.js": { + "bytesInOutput": 12427 + }, + "node_modules/molstar/lib/mol-plugin-state/builder/structure/representation-preset.js": { + "bytesInOutput": 14062 + }, + "node_modules/molstar/lib/mol-plugin-state/formats/provider.js": { + "bytesInOutput": 452 + }, + "node_modules/molstar/lib/mol-plugin-state/formats/trajectory.js": { + "bytesInOutput": 2545 + }, + "node_modules/molstar/lib/mol-util/file-info.js": { + "bytesInOutput": 567 + }, + "node_modules/molstar/lib/mol-plugin-state/formats/topology.js": { + "bytesInOutput": 982 + }, + "node_modules/molstar/lib/mol-plugin-state/formats/coordinates.js": { + "bytesInOutput": 738 + }, + "node_modules/molstar/lib/mol-plugin-state/actions/volume.js": { + "bytesInOutput": 4136 + }, + "node_modules/molstar/lib/mol-plugin-state/actions/file.js": { + "bytesInOutput": 3156 + }, + "node_modules/molstar/lib/mol-plugin-state/actions.js": { + "bytesInOutput": 46 + }, + "node_modules/molstar/lib/mol-plugin-state/animation/built-in/state-interpolation.js": { + "bytesInOutput": 1229 + }, + "node_modules/molstar/lib/mol-plugin-state/animation/built-in/spin-structure.js": { + "bytesInOutput": 1446 + }, + "node_modules/molstar/lib/mol-plugin-state/animation/built-in/camera-rock.js": { + "bytesInOutput": 1364 + }, + "node_modules/molstar/lib/mol-plugin/spec.js": { + "bytesInOutput": 2902 + }, + "node_modules/molstar/lib/mol-plugin-ui/custom/volume.js": { + "bytesInOutput": 8239 + }, + "node_modules/molstar/lib/mol-plugin-ui/base.js": { + "bytesInOutput": 2002 + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/common.js": { + "bytesInOutput": 7585 + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/icons.js": { + "bytesInOutput": 26610 + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/parameters.js": { + "bytesInOutput": 36853 + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/action-menu.js": { + "bytesInOutput": 5067 + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/color.js": { + "bytesInOutput": 3256 + }, + "node_modules/molstar/lib/mol-util/color/swatches.js": { + "bytesInOutput": 223 + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/legend.js": { + "bytesInOutput": 997 + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/line-graph/line-graph-component.js": { + "bytesInOutput": 6331 + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/line-graph/point-component.js": { + "bytesInOutput": 791 + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/slider.js": { + "bytesInOutput": 10892 + }, + "node_modules/molstar/lib/mol-plugin-ui/spec.js": { + "bytesInOutput": 56 + }, + "projects/ngx-structure-viewer/src/lib/molstar.ts": { + "bytesInOutput": 387 + }, + "node_modules/molstar/lib/mol-model-props/common/custom-property.js": { + "bytesInOutput": 944 + }, + "node_modules/molstar/lib/mol-plugin-state/builder/data.js": { + "bytesInOutput": 658 + }, + "node_modules/molstar/lib/mol-plugin-state/builder/structure/representation.js": { + "bytesInOutput": 2378 + }, + "node_modules/molstar/lib/mol-plugin-state/builder/structure/hierarchy-preset.js": { + "bytesInOutput": 5332 + }, + "node_modules/molstar/lib/mol-plugin-state/builder/structure/hierarchy.js": { + "bytesInOutput": 1667 + }, + "node_modules/molstar/lib/mol-plugin-state/builder/structure.js": { + "bytesInOutput": 3449 + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/volume-representation-params.js": { + "bytesInOutput": 1429 + }, + "node_modules/molstar/lib/mol-model-formats/volume/property.js": { + "bytesInOutput": 300 + }, + "node_modules/molstar/lib/mol-plugin-state/formats/volume.js": { + "bytesInOutput": 5887 + }, + "node_modules/molstar/lib/mol-plugin-state/formats/shape.js": { + "bytesInOutput": 434 + }, + "node_modules/molstar/lib/mol-plugin-state/formats/registry.js": { + "bytesInOutput": 1742 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/animation.js": { + "bytesInOutput": 4194 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/focus-camera/focus-first-residue.js": { + "bytesInOutput": 626 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/focus-camera/orient-axes.js": { + "bytesInOutput": 2573 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/camera.js": { + "bytesInOutput": 2521 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/interactivity.js": { + "bytesInOutput": 3795 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/loci-label.js": { + "bytesInOutput": 1333 + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-overpaint.js": { + "bytesInOutput": 990 + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-clipping.js": { + "bytesInOutput": 963 + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-transparency.js": { + "bytesInOutput": 974 + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-substance.js": { + "bytesInOutput": 982 + }, + "node_modules/molstar/lib/mol-plugin-state/helpers/structure-emissive.js": { + "bytesInOutput": 962 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/structure/component.js": { + "bytesInOutput": 11911 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/structure/focus.js": { + "bytesInOutput": 2758 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/structure/hierarchy-state.js": { + "bytesInOutput": 4736 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/structure/hierarchy.js": { + "bytesInOutput": 5930 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/structure/measurement.js": { + "bytesInOutput": 8193 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/structure/selection.js": { + "bytesInOutput": 8966 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/volume/hierarchy-state.js": { + "bytesInOutput": 1838 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/volume/hierarchy.js": { + "bytesInOutput": 2350 + }, + "node_modules/molstar/lib/mol-plugin/layout.js": { + "bytesInOutput": 3067 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/bond.js": { + "bytesInOutput": 4863 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.js": { + "bytesInOutput": 5284 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.js": { + "bytesInOutput": 5030 + }, + "node_modules/molstar/lib/mol-geo/geometry/spheres/spheres-builder.js": { + "bytesInOutput": 363 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/element.js": { + "bytesInOutput": 5127 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/element-sphere.js": { + "bytesInOutput": 2219 + }, + "node_modules/molstar/lib/mol-repr/structure/representation/ball-and-stick.js": { + "bytesInOutput": 1175 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/carbohydrate-link-cylinder.js": { + "bytesInOutput": 1800 + }, + "node_modules/molstar/lib/mol-geo/primitive/pyramid.js": { + "bytesInOutput": 974 + }, + "node_modules/molstar/lib/mol-geo/primitive/star.js": { + "bytesInOutput": 673 + }, + "node_modules/molstar/lib/mol-geo/primitive/octahedron.js": { + "bytesInOutput": 311 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/carbohydrate-symbol-mesh.js": { + "bytesInOutput": 3555 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.js": { + "bytesInOutput": 2392 + }, + "node_modules/molstar/lib/mol-repr/structure/representation/carbohydrate.js": { + "bytesInOutput": 853 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer/backbone.js": { + "bytesInOutput": 1431 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer.js": { + "bytesInOutput": 3822 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer/gap-iterator.js": { + "bytesInOutput": 1021 + }, + "node_modules/molstar/lib/mol-model-props/computed/helix-orientation/helix-orientation.js": { + "bytesInOutput": 1369 + }, + "node_modules/molstar/lib/mol-model-props/computed/helix-orientation.js": { + "bytesInOutput": 237 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer/trace-iterator.js": { + "bytesInOutput": 9902 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/polymer/curve-segment.js": { + "bytesInOutput": 1730 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/nucleotide.js": { + "bytesInOutput": 2963 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-block-mesh.js": { + "bytesInOutput": 2053 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-ring-mesh.js": { + "bytesInOutput": 2958 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-atomic-ring-fill.js": { + "bytesInOutput": 3207 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-atomic-bond.js": { + "bytesInOutput": 6223 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/nucleotide-atomic-element.js": { + "bytesInOutput": 4451 + }, + "node_modules/molstar/lib/mol-geo/primitive/wedge.js": { + "bytesInOutput": 543 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/polymer-direction-wedge.js": { + "bytesInOutput": 1170 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/polymer-gap-cylinder.js": { + "bytesInOutput": 1152 + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/sheet.js": { + "bytesInOutput": 2330 + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/tube.js": { + "bytesInOutput": 2193 + }, + "node_modules/molstar/lib/mol-geo/geometry/mesh/builder/ribbon.js": { + "bytesInOutput": 1034 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/polymer-trace-mesh.js": { + "bytesInOutput": 3526 + }, + "node_modules/molstar/lib/mol-repr/structure/representation/cartoon.js": { + "bytesInOutput": 1888 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/ellipsoid-mesh.js": { + "bytesInOutput": 1414 + }, + "node_modules/molstar/lib/mol-repr/structure/representation/ellipsoid.js": { + "bytesInOutput": 1159 + }, + "node_modules/molstar/lib/mol-gl/shader/gaussian-density.vert.js": { + "bytesInOutput": 647 + }, + "node_modules/molstar/lib/mol-gl/shader/gaussian-density.frag.js": { + "bytesInOutput": 1614 + }, + "node_modules/molstar/lib/mol-math/geometry/gaussian-density/gpu.js": { + "bytesInOutput": 7029 + }, + "node_modules/molstar/lib/mol-math/geometry/gaussian-density/cpu.js": { + "bytesInOutput": 1584 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/gaussian.js": { + "bytesInOutput": 1693 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/gaussian-surface-mesh.js": { + "bytesInOutput": 9007 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/gaussian-surface-wireframe.js": { + "bytesInOutput": 1181 + }, + "node_modules/molstar/lib/mol-repr/structure/representation/gaussian-surface.js": { + "bytesInOutput": 786 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/label-text.js": { + "bytesInOutput": 3031 + }, + "node_modules/molstar/lib/mol-repr/structure/representation/label.js": { + "bytesInOutput": 514 + }, + "node_modules/molstar/lib/mol-math/geometry/molecular-surface.js": { + "bytesInOutput": 4281 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/util/molecular-surface.js": { + "bytesInOutput": 1010 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/molecular-surface-mesh.js": { + "bytesInOutput": 3579 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/molecular-surface-wireframe.js": { + "bytesInOutput": 947 + }, + "node_modules/molstar/lib/mol-repr/structure/representation/molecular-surface.js": { + "bytesInOutput": 787 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/orientation-ellipsoid-mesh.js": { + "bytesInOutput": 1735 + }, + "node_modules/molstar/lib/mol-repr/structure/representation/orientation.js": { + "bytesInOutput": 628 + }, + "node_modules/molstar/lib/mol-geo/geometry/points/points-builder.js": { + "bytesInOutput": 362 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/element-point.js": { + "bytesInOutput": 1179 + }, + "node_modules/molstar/lib/mol-repr/structure/representation/point.js": { + "bytesInOutput": 432 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/polymer-tube-mesh.js": { + "bytesInOutput": 1941 + }, + "node_modules/molstar/lib/mol-repr/structure/representation/putty.js": { + "bytesInOutput": 944 + }, + "node_modules/molstar/lib/mol-repr/structure/representation/spacefill.js": { + "bytesInOutput": 742 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/bond-intra-unit-line.js": { + "bytesInOutput": 2463 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/bond-inter-unit-line.js": { + "bytesInOutput": 2243 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/element-cross.js": { + "bytesInOutput": 1334 + }, + "node_modules/molstar/lib/mol-repr/structure/representation/line.js": { + "bytesInOutput": 1192 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/gaussian-density-volume.js": { + "bytesInOutput": 2653 + }, + "node_modules/molstar/lib/mol-repr/structure/representation/gaussian-volume.js": { + "bytesInOutput": 670 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/polymer-backbone-cylinder.js": { + "bytesInOutput": 1995 + }, + "node_modules/molstar/lib/mol-repr/structure/visual/polymer-backbone-sphere.js": { + "bytesInOutput": 1515 + }, + "node_modules/molstar/lib/mol-repr/structure/representation/backbone.js": { + "bytesInOutput": 1173 + }, + "node_modules/molstar/lib/mol-repr/structure/registry.js": { + "bytesInOutput": 448 + }, + "node_modules/molstar/lib/mol-plugin/animation-loop.js": { + "bytesInOutput": 1017 + }, + "node_modules/molstar/lib/mol-plugin/state.js": { + "bytesInOutput": 5013 + }, + "node_modules/molstar/lib/mol-plugin/util/substructure-parent-helper.js": { + "bytesInOutput": 1516 + }, + "node_modules/molstar/lib/mol-plugin/util/task-manager.js": { + "bytesInOutput": 1749 + }, + "node_modules/molstar/lib/mol-plugin/util/toast.js": { + "bytesInOutput": 1030 + }, + "node_modules/molstar/lib/mol-plugin/util/viewport-screenshot.js": { + "bytesInOutput": 6713 + }, + "node_modules/molstar/lib/mol-plugin-state/manager/drag-and-drop.js": { + "bytesInOutput": 740 + }, + "node_modules/molstar/lib/mol-plugin/context.js": { + "bytesInOutput": 10787 + }, + "node_modules/molstar/lib/mol-plugin-ui/context.js": { + "bytesInOutput": 311 + }, + "node_modules/molstar/lib/mol-plugin-ui/react18.js": { + "bytesInOutput": 68 + }, + "node_modules/molstar/lib/mol-plugin-ui/index.js": { + "bytesInOutput": 257 + }, + "node_modules/molstar/lib/mol-plugin-ui/plugin.js": { + "bytesInOutput": 6396 + }, + "node_modules/molstar/lib/mol-plugin-ui/controls.js": { + "bytesInOutput": 8109 + }, + "node_modules/comma-separated-tokens/index.js": { + "bytesInOutput": 130 + }, + "node_modules/estree-util-is-identifier-name/lib/index.js": { + "bytesInOutput": 190 + }, + "node_modules/estree-util-is-identifier-name/index.js": { + "bytesInOutput": 0 + }, + "node_modules/hast-util-whitespace/lib/index.js": { + "bytesInOutput": 149 + }, + "node_modules/hast-util-whitespace/index.js": { + "bytesInOutput": 0 + }, + "node_modules/property-information/lib/util/schema.js": { + "bytesInOutput": 154 + }, + "node_modules/property-information/lib/util/merge.js": { + "bytesInOutput": 136 + }, + "node_modules/property-information/lib/normalize.js": { + "bytesInOutput": 38 + }, + "node_modules/property-information/lib/util/info.js": { + "bytesInOutput": 353 + }, + "node_modules/property-information/lib/util/types.js": { + "bytesInOutput": 260 + }, + "node_modules/property-information/lib/util/defined-info.js": { + "bytesInOutput": 252 + }, + "node_modules/property-information/lib/util/create.js": { + "bytesInOutput": 323 + }, + "node_modules/property-information/lib/xlink.js": { + "bytesInOutput": 208 + }, + "node_modules/property-information/lib/xml.js": { + "bytesInOutput": 132 + }, + "node_modules/property-information/lib/util/case-sensitive-transform.js": { + "bytesInOutput": 38 + }, + "node_modules/property-information/lib/util/case-insensitive-transform.js": { + "bytesInOutput": 46 + }, + "node_modules/property-information/lib/xmlns.js": { + "bytesInOutput": 118 + }, + "node_modules/property-information/lib/aria.js": { + "bytesInOutput": 912 + }, + "node_modules/property-information/lib/html.js": { + "bytesInOutput": 4247 + }, + "node_modules/property-information/lib/svg.js": { + "bytesInOutput": 10135 + }, + "node_modules/property-information/lib/find.js": { + "bytesInOutput": 511 + }, + "node_modules/property-information/index.js": { + "bytesInOutput": 68 + }, + "node_modules/property-information/lib/hast-to-react.js": { + "bytesInOutput": 439 + }, + "node_modules/space-separated-tokens/index.js": { + "bytesInOutput": 42 + }, + "node_modules/style-to-object/esm/index.mjs": { + "bytesInOutput": 54 + }, + "node_modules/unist-util-position/lib/index.js": { + "bytesInOutput": 352 + }, + "node_modules/unist-util-position/index.js": { + "bytesInOutput": 0 + }, + "node_modules/unist-util-stringify-position/lib/index.js": { + "bytesInOutput": 316 + }, + "node_modules/unist-util-stringify-position/index.js": { + "bytesInOutput": 0 + }, + "node_modules/vfile-message/lib/index.js": { + "bytesInOutput": 1337 + }, + "node_modules/vfile-message/index.js": { + "bytesInOutput": 0 + }, + "node_modules/hast-util-to-jsx-runtime/lib/index.js": { + "bytesInOutput": 6047 + }, + "node_modules/hast-util-to-jsx-runtime/index.js": { + "bytesInOutput": 0 + }, + "node_modules/html-url-attributes/lib/index.js": { + "bytesInOutput": 301 + }, + "node_modules/html-url-attributes/index.js": { + "bytesInOutput": 0 + }, + "node_modules/react-markdown/lib/index.js": { + "bytesInOutput": 2779 + }, + "node_modules/mdast-util-to-string/lib/index.js": { + "bytesInOutput": 510 + }, + "node_modules/mdast-util-to-string/index.js": { + "bytesInOutput": 0 + }, + "node_modules/decode-named-character-reference/index.dom.js": { + "bytesInOutput": 166 + }, + "node_modules/micromark-util-chunked/index.js": { + "bytesInOutput": 302 + }, + "node_modules/micromark-util-combine-extensions/index.js": { + "bytesInOutput": 378 + }, + "node_modules/micromark-util-decode-numeric-character-reference/index.js": { + "bytesInOutput": 207 + }, + "node_modules/micromark-util-normalize-identifier/index.js": { + "bytesInOutput": 100 + }, + "node_modules/micromark-util-character/index.js": { + "bytesInOutput": 460 + }, + "node_modules/micromark-util-sanitize-uri/index.js": { + "bytesInOutput": 489 + }, + "node_modules/micromark-factory-space/index.js": { + "bytesInOutput": 190 + }, + "node_modules/micromark/lib/initialize/content.js": { + "bytesInOutput": 545 + }, + "node_modules/micromark/lib/initialize/document.js": { + "bytesInOutput": 2314 + }, + "node_modules/micromark-util-classify-character/index.js": { + "bytesInOutput": 70 + }, + "node_modules/micromark-util-resolve-all/index.js": { + "bytesInOutput": 124 + }, + "node_modules/micromark-core-commonmark/lib/attention.js": { + "bytesInOutput": 2150 + }, + "node_modules/micromark-core-commonmark/index.js": { + "bytesInOutput": 0 + }, + "node_modules/micromark-core-commonmark/lib/autolink.js": { + "bytesInOutput": 1052 + }, + "node_modules/micromark-core-commonmark/lib/blank-line.js": { + "bytesInOutput": 166 + }, + "node_modules/micromark-core-commonmark/lib/block-quote.js": { + "bytesInOutput": 764 + }, + "node_modules/micromark-core-commonmark/lib/character-escape.js": { + "bytesInOutput": 324 + }, + "node_modules/micromark-core-commonmark/lib/character-reference.js": { + "bytesInOutput": 930 + }, + "node_modules/micromark-core-commonmark/lib/code-fenced.js": { + "bytesInOutput": 2333 + }, + "node_modules/micromark-core-commonmark/lib/code-indented.js": { + "bytesInOutput": 877 + }, + "node_modules/micromark-core-commonmark/lib/code-text.js": { + "bytesInOutput": 1351 + }, + "node_modules/micromark-util-subtokenize/lib/splice-buffer.js": { + "bytesInOutput": 1659 + }, + "node_modules/micromark-util-subtokenize/index.js": { + "bytesInOutput": 1748 + }, + "node_modules/micromark-core-commonmark/lib/content.js": { + "bytesInOutput": 928 + }, + "node_modules/micromark-factory-destination/index.js": { + "bytesInOutput": 927 + }, + "node_modules/micromark-factory-label/index.js": { + "bytesInOutput": 638 + }, + "node_modules/micromark-factory-title/index.js": { + "bytesInOutput": 598 + }, + "node_modules/micromark-factory-whitespace/index.js": { + "bytesInOutput": 175 + }, + "node_modules/micromark-core-commonmark/lib/definition.js": { + "bytesInOutput": 1136 + }, + "node_modules/micromark-core-commonmark/lib/hard-break-escape.js": { + "bytesInOutput": 203 + }, + "node_modules/micromark-core-commonmark/lib/heading-atx.js": { + "bytesInOutput": 1099 + }, + "node_modules/micromark-util-html-tag-name/index.js": { + "bytesInOutput": 529 + }, + "node_modules/micromark-core-commonmark/lib/html-flow.js": { + "bytesInOutput": 3621 + }, + "node_modules/micromark-core-commonmark/lib/html-text.js": { + "bytesInOutput": 2494 + }, + "node_modules/micromark-core-commonmark/lib/label-end.js": { + "bytesInOutput": 3167 + }, + "node_modules/micromark-core-commonmark/lib/label-start-image.js": { + "bytesInOutput": 426 + }, + "node_modules/micromark-core-commonmark/lib/label-start-link.js": { + "bytesInOutput": 318 + }, + "node_modules/micromark-core-commonmark/lib/line-ending.js": { + "bytesInOutput": 166 + }, + "node_modules/micromark-core-commonmark/lib/thematic-break.js": { + "bytesInOutput": 408 + }, + "node_modules/micromark-core-commonmark/lib/list.js": { + "bytesInOutput": 2634 + }, + "node_modules/micromark-core-commonmark/lib/setext-underline.js": { + "bytesInOutput": 1175 + }, + "node_modules/micromark/lib/initialize/flow.js": { + "bytesInOutput": 488 + }, + "node_modules/micromark/lib/initialize/text.js": { + "bytesInOutput": 1511 + }, + "node_modules/micromark/lib/create-tokenizer.js": { + "bytesInOutput": 3139 + }, + "node_modules/micromark/lib/constructs.js": { + "bytesInOutput": 539 + }, + "node_modules/micromark/lib/parse.js": { + "bytesInOutput": 228 + }, + "node_modules/micromark/lib/postprocess.js": { + "bytesInOutput": 38 + }, + "node_modules/micromark/lib/preprocess.js": { + "bytesInOutput": 680 + }, + "node_modules/micromark/index.js": { + "bytesInOutput": 0 + }, + "node_modules/micromark-util-decode-string/index.js": { + "bytesInOutput": 267 + }, + "node_modules/mdast-util-from-markdown/lib/index.js": { + "bytesInOutput": 10530 + }, + "node_modules/mdast-util-from-markdown/index.js": { + "bytesInOutput": 0 + }, + "node_modules/remark-parse/lib/index.js": { + "bytesInOutput": 198 + }, + "node_modules/remark-parse/index.js": { + "bytesInOutput": 0 + }, + "node_modules/mdast-util-to-hast/lib/handlers/blockquote.js": { + "bytesInOutput": 142 + }, + "node_modules/mdast-util-to-hast/lib/handlers/break.js": { + "bytesInOutput": 143 + }, + "node_modules/mdast-util-to-hast/lib/handlers/code.js": { + "bytesInOutput": 324 + }, + "node_modules/mdast-util-to-hast/lib/handlers/delete.js": { + "bytesInOutput": 124 + }, + "node_modules/mdast-util-to-hast/lib/handlers/emphasis.js": { + "bytesInOutput": 123 + }, + "node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js": { + "bytesInOutput": 631 + }, + "node_modules/mdast-util-to-hast/lib/handlers/heading.js": { + "bytesInOutput": 130 + }, + "node_modules/mdast-util-to-hast/lib/handlers/html.js": { + "bytesInOutput": 122 + }, + "node_modules/mdast-util-to-hast/lib/revert.js": { + "bytesInOutput": 373 + }, + "node_modules/mdast-util-to-hast/lib/handlers/image-reference.js": { + "bytesInOutput": 293 + }, + "node_modules/mdast-util-to-hast/lib/handlers/image.js": { + "bytesInOutput": 235 + }, + "node_modules/mdast-util-to-hast/lib/handlers/inline-code.js": { + "bytesInOutput": 192 + }, + "node_modules/mdast-util-to-hast/lib/handlers/link-reference.js": { + "bytesInOutput": 288 + }, + "node_modules/mdast-util-to-hast/lib/handlers/link.js": { + "bytesInOutput": 196 + }, + "node_modules/mdast-util-to-hast/lib/handlers/list-item.js": { + "bytesInOutput": 1017 + }, + "node_modules/mdast-util-to-hast/lib/handlers/list.js": { + "bytesInOutput": 440 + }, + "node_modules/mdast-util-to-hast/lib/handlers/paragraph.js": { + "bytesInOutput": 122 + }, + "node_modules/mdast-util-to-hast/lib/handlers/root.js": { + "bytesInOutput": 101 + }, + "node_modules/mdast-util-to-hast/lib/handlers/strong.js": { + "bytesInOutput": 127 + }, + "node_modules/mdast-util-to-hast/lib/handlers/table.js": { + "bytesInOutput": 473 + }, + "node_modules/mdast-util-to-hast/lib/handlers/table-row.js": { + "bytesInOutput": 462 + }, + "node_modules/mdast-util-to-hast/lib/handlers/table-cell.js": { + "bytesInOutput": 123 + }, + "node_modules/trim-lines/index.js": { + "bytesInOutput": 416 + }, + "node_modules/mdast-util-to-hast/lib/handlers/text.js": { + "bytesInOutput": 102 + }, + "node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js": { + "bytesInOutput": 117 + }, + "node_modules/mdast-util-to-hast/lib/handlers/index.js": { + "bytesInOutput": 369 + }, + "node_modules/@ungap/structured-clone/esm/deserialize.js": { + "bytesInOutput": 707 + }, + "node_modules/@ungap/structured-clone/esm/serialize.js": { + "bytesInOutput": 1538 + }, + "node_modules/@ungap/structured-clone/esm/index.js": { + "bytesInOutput": 128 + }, + "node_modules/mdast-util-to-hast/lib/footer.js": { + "bytesInOutput": 1787 + }, + "node_modules/unist-util-is/lib/index.js": { + "bytesInOutput": 774 + }, + "node_modules/unist-util-is/index.js": { + "bytesInOutput": 0 + }, + "node_modules/unist-util-visit-parents/lib/index.js": { + "bytesInOutput": 829 + }, + "node_modules/unist-util-visit-parents/index.js": { + "bytesInOutput": 0 + }, + "node_modules/unist-util-visit/lib/index.js": { + "bytesInOutput": 205 + }, + "node_modules/unist-util-visit/index.js": { + "bytesInOutput": 0 + }, + "node_modules/mdast-util-to-hast/lib/state.js": { + "bytesInOutput": 2044 + }, + "node_modules/mdast-util-to-hast/lib/index.js": { + "bytesInOutput": 204 + }, + "node_modules/mdast-util-to-hast/index.js": { + "bytesInOutput": 0 + }, + "node_modules/remark-rehype/lib/index.js": { + "bytesInOutput": 173 + }, + "node_modules/remark-rehype/index.js": { + "bytesInOutput": 0 + }, + "node_modules/bail/index.js": { + "bytesInOutput": 28 + }, + "node_modules/unified/lib/index.js": { + "bytesInOutput": 4044 + }, + "node_modules/unified/node_modules/is-plain-obj/index.js": { + "bytesInOutput": 212 + }, + "node_modules/trough/lib/index.js": { + "bytesInOutput": 769 + }, + "node_modules/trough/index.js": { + "bytesInOutput": 0 + }, + "node_modules/vfile/lib/minpath.browser.js": { + "bytesInOutput": 2052 + }, + "node_modules/vfile/lib/minproc.browser.js": { + "bytesInOutput": 43 + }, + "node_modules/vfile/lib/minurl.shared.js": { + "bytesInOutput": 119 + }, + "node_modules/vfile/lib/minurl.browser.js": { + "bytesInOutput": 784 + }, + "node_modules/vfile/lib/index.js": { + "bytesInOutput": 2160 + }, + "node_modules/vfile/index.js": { + "bytesInOutput": 0 + }, + "node_modules/unified/lib/callable-instance.js": { + "bytesInOutput": 266 + }, + "node_modules/unified/index.js": { + "bytesInOutput": 0 + }, + "node_modules/react-markdown/index.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-plugin-ui/state/animation.js": { + "bytesInOutput": 1272 + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/components.js": { + "bytesInOutput": 11341 + }, + "node_modules/molstar/lib/mol-plugin-ui/state/update-transform.js": { + "bytesInOutput": 2258 + }, + "node_modules/molstar/lib/mol-plugin-ui/state/common.js": { + "bytesInOutput": 4951 + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/generic.js": { + "bytesInOutput": 3298 + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/measurements.js": { + "bytesInOutput": 10260 + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/selection.js": { + "bytesInOutput": 11895 + }, + "node_modules/molstar/lib/mol-script/util/id-list.js": { + "bytesInOutput": 1475 + }, + "node_modules/molstar/lib/mol-plugin-ui/viewport/help.js": { + "bytesInOutput": 6493 + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/source.js": { + "bytesInOutput": 8288 + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/focus.js": { + "bytesInOutput": 4669 + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/volume.js": { + "bytesInOutput": 9521 + }, + "node_modules/molstar/lib/mol-plugin-ui/state/apply-action.js": { + "bytesInOutput": 1462 + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/superposition.js": { + "bytesInOutput": 10882 + }, + "node_modules/molstar/lib/mol-math/linear-algebra/matrix/evd.js": { + "bytesInOutput": 2478 + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/minimize-rmsd.js": { + "bytesInOutput": 2210 + }, + "node_modules/molstar/lib/mol-model/sequence/alignment/substitution-matrix.js": { + "bytesInOutput": 2848 + }, + "node_modules/molstar/lib/mol-model/sequence/alignment/alignment.js": { + "bytesInOutput": 1946 + }, + "node_modules/molstar/lib/mol-model/sequence/alignment/sequence.js": { + "bytesInOutput": 1575 + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/superposition.js": { + "bytesInOutput": 1065 + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/superposition-sifts-mapping.js": { + "bytesInOutput": 2028 + }, + "node_modules/molstar/lib/mol-plugin-ui/structure/quick-styles.js": { + "bytesInOutput": 2672 + }, + "node_modules/molstar/lib/mol-plugin-ui/left-panel.js": { + "bytesInOutput": 5520 + }, + "node_modules/molstar/lib/mol-plugin-ui/state/actions.js": { + "bytesInOutput": 1040 + }, + "node_modules/molstar/lib/mol-plugin-ui/state/snapshots.js": { + "bytesInOutput": 12409 + }, + "node_modules/molstar/lib/mol-plugin-ui/state/tree.js": { + "bytesInOutput": 8421 + }, + "node_modules/molstar/lib/mol-plugin-ui/sequence.js": { + "bytesInOutput": 8395 + }, + "node_modules/molstar/lib/mol-plugin-ui/sequence/sequence.js": { + "bytesInOutput": 5661 + }, + "node_modules/molstar/lib/mol-plugin-ui/sequence/wrapper.js": { + "bytesInOutput": 172 + }, + "node_modules/molstar/lib/mol-plugin-ui/sequence/polymer.js": { + "bytesInOutput": 2489 + }, + "node_modules/molstar/lib/mol-plugin-ui/sequence/hetero.js": { + "bytesInOutput": 1526 + }, + "node_modules/molstar/lib/mol-plugin-ui/sequence/chain.js": { + "bytesInOutput": 1124 + }, + "node_modules/molstar/lib/mol-plugin-ui/sequence/element.js": { + "bytesInOutput": 1055 + }, + "node_modules/molstar/lib/mol-plugin-ui/task.js": { + "bytesInOutput": 2071 + }, + "node_modules/molstar/lib/mol-plugin-ui/hooks/use-behavior.js": { + "bytesInOutput": 505 + }, + "node_modules/molstar/lib/mol-plugin-ui/toast.js": { + "bytesInOutput": 1155 + }, + "node_modules/molstar/lib/mol-plugin-ui/viewport.js": { + "bytesInOutput": 4643 + }, + "node_modules/molstar/lib/mol-plugin-ui/viewport/canvas.js": { + "bytesInOutput": 1544 + }, + "node_modules/molstar/lib/mol-plugin-ui/viewport/screenshot.js": { + "bytesInOutput": 3245 + }, + "node_modules/molstar/lib/mol-plugin-ui/controls/screenshot.js": { + "bytesInOutput": 6484 + }, + "node_modules/molstar/lib/mol-plugin-ui/viewport/simple-settings.js": { + "bytesInOutput": 4202 + }, + "node_modules/molstar/lib/mol-util/param-mapping.js": { + "bytesInOutput": 218 + } + }, + "bytes": 2353747 + }, + "chunk-L7IOURQX.js": { + "imports": [ + { + "path": "chunk-TI7GFU47.js", + "kind": "import-statement" + }, + { + "path": "chunk-SAL4EXGL.js", + "kind": "import-statement" + }, + { + "path": "chunk-T4BLILQN.js", + "kind": "import-statement" + }, + { + "path": "chunk-MDWTV2PZ.js", + "kind": "dynamic-import" + } + ], + "exports": [ + "PageStructureViewerModule" + ], + "entryPoint": "projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.module.ts", + "inputs": { + "projects/ngx-structure-viewer/src/lib/colors.ts": { + "bytesInOutput": 144 + }, + "projects/ngx-structure-viewer/src/lib/services/molstar.service.ts": { + "bytesInOutput": 284 + }, + "projects/ngx-structure-viewer/src/lib/services/plugin.service.ts": { + "bytesInOutput": 618 + }, + "projects/ngx-structure-viewer/src/lib/services/structure.service.ts": { + "bytesInOutput": 1875 + }, + "projects/ngx-structure-viewer/src/lib/services/settings.service.ts": { + "bytesInOutput": 635 + }, + "projects/ngx-structure-viewer/src/lib/services/representation.service.ts": { + "bytesInOutput": 965 + }, + "projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts": { + "bytesInOutput": 86052 + }, + "projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.ts": { + "bytesInOutput": 1431 + }, + "projects/ngx-structure-viewer/src/public-api.ts": { + "bytesInOutput": 0 + }, + "projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.module.ts": { + "bytesInOutput": 194 + } + }, + "bytes": 92663 + }, + "chunk-TI7GFU47.js": { + "imports": [ + { + "path": "chunk-T4BLILQN.js", + "kind": "import-statement" + } + ], + "exports": [ + "$", + "$a", + "$b", + "$c", + "A", + "Aa", + "Ab", + "Ac", + "B", + "Ba", + "Bb", + "Bc", + "C", + "Ca", + "Cb", + "Cc", + "D", + "Da", + "Db", + "Dc", + "E", + "Ea", + "Eb", + "Ec", + "F", + "Fa", + "Fb", + "Fc", + "G", + "Ga", + "Gb", + "Gc", + "H", + "Ha", + "Hb", + "Hc", + "I", + "Ia", + "Ib", + "Ic", + "J", + "Ja", + "Jb", + "Jc", + "K", + "Ka", + "Kb", + "Kc", + "L", + "La", + "Lb", + "Lc", + "M", + "Ma", + "Mb", + "Mc", + "N", + "Na", + "Nb", + "Nc", + "O", + "Oa", + "Ob", + "Oc", + "P", + "Pa", + "Pb", + "Pc", + "Q", + "Qa", + "Qb", + "Qc", + "R", + "Ra", + "Rb", + "Rc", + "S", + "Sa", + "Sb", + "Sc", + "T", + "Ta", + "Tb", + "Tc", + "U", + "Ua", + "Ub", + "Uc", + "V", + "Va", + "Vb", + "Vc", + "W", + "Wa", + "Wb", + "Wc", + "X", + "Xa", + "Xb", + "Xc", + "Y", + "Ya", + "Yb", + "Yc", + "Z", + "Za", + "Zb", + "Zc", + "_", + "_a", + "_b", + "_c", + "a", + "aa", + "ab", + "ac", + "ad", + "b", + "ba", + "bb", + "bc", + "bd", + "c", + "ca", + "cb", + "cc", + "cd", + "d", + "da", + "db", + "dc", + "dd", + "e", + "ea", + "eb", + "ec", + "ed", + "f", + "fa", + "fb", + "fc", + "fd", + "g", + "ga", + "gb", + "gc", + "gd", + "h", + "ha", + "hb", + "hc", + "hd", + "i", + "ia", + "ib", + "ic", + "id", + "j", + "ja", + "jb", + "jc", + "jd", + "k", + "ka", + "kb", + "kc", + "kd", + "l", + "la", + "lb", + "lc", + "ld", + "m", + "ma", + "mb", + "mc", + "md", + "n", + "na", + "nb", + "nc", + "nd", + "o", + "oa", + "ob", + "oc", + "od", + "p", + "pa", + "pb", + "pc", + "pd", + "q", + "qa", + "qb", + "qc", + "qd", + "r", + "ra", + "rb", + "rc", + "rd", + "s", + "sa", + "sb", + "sc", + "sd", + "t", + "ta", + "tb", + "tc", + "td", + "u", + "ua", + "ub", + "uc", + "ud", + "v", + "va", + "vb", + "vc", + "vd", + "w", + "wa", + "wb", + "wc", + "wd", + "x", + "xa", + "xb", + "xc", + "xd", + "y", + "ya", + "yb", + "yc", + "z", + "za", + "zb", + "zc" + ], + "inputs": { + "node_modules/xhr2/lib/browser.js": { + "bytesInOutput": 61 + }, + "node_modules/molstar/lib/mol-script/language/type.js": { + "bytesInOutput": 677 + }, + "node_modules/molstar/lib/mol-script/language/expression.js": { + "bytesInOutput": 435 + }, + "node_modules/molstar/lib/mol-script/language/symbol.js": { + "bytesInOutput": 818 + }, + "node_modules/molstar/lib/mol-script/language/helpers.js": { + "bytesInOutput": 652 + }, + "node_modules/molstar/lib/mol-script/language/symbol-table/core.js": { + "bytesInOutput": 4162 + }, + "node_modules/molstar/lib/mol-script/language/symbol-table/structure-query.js": { + "bytesInOutput": 15140 + }, + "node_modules/molstar/lib/mol-script/language/symbol-table/internal.js": { + "bytesInOutput": 454 + }, + "node_modules/molstar/lib/mol-script/language/symbol-table.js": { + "bytesInOutput": 146 + }, + "node_modules/molstar/lib/mol-script/language/builder.js": { + "bytesInOutput": 862 + }, + "node_modules/molstar/lib/mol-data/generic/hash-set.js": { + "bytesInOutput": 519 + }, + "node_modules/molstar/lib/mol-data/generic.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-data/generic/linked-list.js": { + "bytesInOutput": 916 + }, + "node_modules/molstar/lib/mol-data/generic/unique-array.js": { + "bytesInOutput": 224 + }, + "node_modules/molstar/lib/mol-model/structure/structure/element/element.js": { + "bytesInOutput": 191 + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/common.js": { + "bytesInOutput": 43 + }, + "node_modules/molstar/lib/mol-math/interpolate.js": { + "bytesInOutput": 377 + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec3.js": { + "bytesInOutput": 8187 + }, + "node_modules/molstar/lib/mol-math/misc.js": { + "bytesInOutput": 479 + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat4.js": { + "bytesInOutput": 15451 + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/mat3.js": { + "bytesInOutput": 4967 + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec2.js": { + "bytesInOutput": 1586 + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/vec4.js": { + "bytesInOutput": 2869 + }, + "node_modules/molstar/lib/mol-util/type-helpers.js": { + "bytesInOutput": 132 + }, + "node_modules/molstar/lib/mol-math/linear-algebra/3d/quat.js": { + "bytesInOutput": 5288 + }, + "node_modules/molstar/lib/mol-math/linear-algebra.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-math/linear-algebra/tensor.js": { + "bytesInOutput": 5025 + }, + "node_modules/molstar/lib/mol-model/structure/structure/element/location.js": { + "bytesInOutput": 924 + }, + "node_modules/molstar/lib/mol-data/util/chunked-array.js": { + "bytesInOutput": 2409 + }, + "node_modules/molstar/lib/mol-data/util.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-data/util/sort.js": { + "bytesInOutput": 1442 + }, + "node_modules/molstar/lib/mol-data/util/buckets.js": { + "bytesInOutput": 898 + }, + "node_modules/molstar/lib/mol-data/util/equivalence-classes.js": { + "bytesInOutput": 547 + }, + "node_modules/molstar/lib/mol-data/util/hash-functions.js": { + "bytesInOutput": 811 + }, + "node_modules/molstar/lib/mol-data/db/column-helpers.js": { + "bytesInOutput": 823 + }, + "node_modules/molstar/lib/mol-io/reader/common/text/number-parser.js": { + "bytesInOutput": 788 + }, + "node_modules/molstar/lib/mol-data/db/column.js": { + "bytesInOutput": 7104 + }, + "node_modules/molstar/lib/mol-util/bit-flags.js": { + "bytesInOutput": 157 + }, + "node_modules/molstar/lib/mol-util/string-builder.js": { + "bytesInOutput": 1873 + }, + "node_modules/molstar/lib/mol-util/now.js": { + "bytesInOutput": 637 + }, + "node_modules/molstar/lib/mol-util/uuid.js": { + "bytesInOutput": 576 + }, + "node_modules/molstar/lib/mol-util/mask.js": { + "bytesInOutput": 1794 + }, + "node_modules/molstar/lib/mol-util/id-factory.js": { + "bytesInOutput": 90 + }, + "node_modules/molstar/lib/mol-util/value-cell.js": { + "bytesInOutput": 608 + }, + "node_modules/molstar/lib/mol-util/index.js": { + "bytesInOutput": 1488 + }, + "node_modules/molstar/lib/mol-data/db/table.js": { + "bytesInOutput": 3676 + }, + "node_modules/molstar/lib/mol-data/db/database.js": { + "bytesInOutput": 316 + }, + "node_modules/molstar/lib/mol-data/util/array.js": { + "bytesInOutput": 516 + }, + "node_modules/molstar/lib/mol-data/int/tuple.js": { + "bytesInOutput": 875 + }, + "node_modules/molstar/lib/mol-data/int/impl/interval.js": { + "bytesInOutput": 992 + }, + "node_modules/molstar/lib/mol-data/int/interval.js": { + "bytesInOutput": 397 + }, + "node_modules/molstar/lib/mol-data/int/impl/sorted-array.js": { + "bytesInOutput": 4454 + }, + "node_modules/molstar/lib/mol-data/int/sorted-array.js": { + "bytesInOutput": 526 + }, + "node_modules/molstar/lib/mol-data/int/impl/ordered-set.js": { + "bytesInOutput": 5353 + }, + "node_modules/molstar/lib/mol-data/int/ordered-set.js": { + "bytesInOutput": 722 + }, + "node_modules/molstar/lib/mol-data/int/impl/segmentation.js": { + "bytesInOutput": 1703 + }, + "node_modules/molstar/lib/mol-data/int/segmentation.js": { + "bytesInOutput": 130 + }, + "node_modules/molstar/lib/mol-data/int/linked-index.js": { + "bytesInOutput": 426 + }, + "node_modules/molstar/lib/mol-data/int/map.js": { + "bytesInOutput": 414 + }, + "node_modules/molstar/lib/mol-data/iterator.js": { + "bytesInOutput": 1328 + }, + "node_modules/molstar/lib/mol-math/geometry/symmetry-operator.js": { + "bytesInOutput": 4083 + }, + "node_modules/molstar/lib/mol-model/custom-property.js": { + "bytesInOutput": 661 + }, + "node_modules/molstar/lib/mol-util/object.js": { + "bytesInOutput": 962 + }, + "node_modules/molstar/lib/mol-util/array.js": { + "bytesInOutput": 1369 + }, + "node_modules/molstar/lib/mol-model/structure/model/util.js": { + "bytesInOutput": 570 + }, + "node_modules/molstar/lib/mol-model/structure/coordinates/coordinates.js": { + "bytesInOutput": 1565 + }, + "node_modules/molstar/lib/mol-model/structure/coordinates.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-task/util/scheduler.js": { + "bytesInOutput": 2092 + }, + "node_modules/molstar/lib/mol-util/debug.js": { + "bytesInOutput": 257 + }, + "node_modules/molstar/lib/mol-task/util/user-timing.js": { + "bytesInOutput": 382 + }, + "node_modules/molstar/lib/mol-task/execution/observable.js": { + "bytesInOutput": 2796 + }, + "node_modules/molstar/lib/mol-task/execution/synchronous.js": { + "bytesInOutput": 95 + }, + "node_modules/molstar/lib/mol-task/task.js": { + "bytesInOutput": 910 + }, + "node_modules/molstar/lib/mol-task/execution/progress.js": { + "bytesInOutput": 443 + }, + "node_modules/molstar/lib/mol-task/util/chunked.js": { + "bytesInOutput": 317 + }, + "node_modules/molstar/lib/mol-math/graph/int-adjacency-graph.js": { + "bytesInOutput": 5083 + }, + "node_modules/molstar/lib/mol-math/graph.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-model-formats/structure/common/property.js": { + "bytesInOutput": 879 + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/index-pair.js": { + "bytesInOutput": 1456 + }, + "node_modules/molstar/lib/mol-io/reader/common/text/column/token.js": { + "bytesInOutput": 666 + }, + "node_modules/molstar/lib/mol-io/reader/cif/data-model.js": { + "bytesInOutput": 3999 + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema.js": { + "bytesInOutput": 3408 + }, + "node_modules/molstar/lib/mol-math/geometry/common.js": { + "bytesInOutput": 92 + }, + "node_modules/molstar/lib/mol-math/geometry.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-math/geometry/spacegroup/tables.js": { + "bytesInOutput": 31137 + }, + "node_modules/molstar/lib/mol-math/geometry/spacegroup/construction.js": { + "bytesInOutput": 2636 + }, + "node_modules/molstar/lib/mol-math/geometry/lookup3d/common.js": { + "bytesInOutput": 365 + }, + "node_modules/molstar/lib/mol-math/geometry/primitives/axes3d.js": { + "bytesInOutput": 1014 + }, + "node_modules/molstar/lib/mol-math/linear-algebra/matrix/matrix.js": { + "bytesInOutput": 1385 + }, + "node_modules/molstar/lib/mol-math/linear-algebra/matrix/svd.js": { + "bytesInOutput": 2343 + }, + "node_modules/molstar/lib/mol-math/linear-algebra/matrix/principal-axes.js": { + "bytesInOutput": 1988 + }, + "node_modules/molstar/lib/mol-math/geometry/primitives/sphere3d.js": { + "bytesInOutput": 4548 + }, + "node_modules/molstar/lib/mol-math/geometry/primitives/box3d.js": { + "bytesInOutput": 3119 + }, + "node_modules/molstar/lib/mol-util/fibonacci-heap.js": { + "bytesInOutput": 2868 + }, + "node_modules/molstar/lib/mol-math/geometry/lookup3d/grid.js": { + "bytesInOutput": 5307 + }, + "node_modules/molstar/lib/mol-io/common/binary-cif/encoding.js": { + "bytesInOutput": 978 + }, + "node_modules/molstar/lib/mol-io/common/binary.js": { + "bytesInOutput": 419 + }, + "node_modules/molstar/lib/mol-io/common/binary-cif/decoder.js": { + "bytesInOutput": 2878 + }, + "node_modules/molstar/lib/mol-io/common/binary-cif.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-util/number.js": { + "bytesInOutput": 662 + }, + "node_modules/molstar/lib/mol-io/common/binary-cif/classifier.js": { + "bytesInOutput": 2370 + }, + "node_modules/molstar/lib/mol-io/common/binary-cif/array-encoder.js": { + "bytesInOutput": 5418 + }, + "node_modules/molstar/lib/mol-io/writer/cif/encoder.js": { + "bytesInOutput": 3705 + }, + "node_modules/molstar/lib/mol-io/writer/cif/encoder/util.js": { + "bytesInOutput": 578 + }, + "node_modules/molstar/lib/mol-io/writer/cif/encoder/text.js": { + "bytesInOutput": 3251 + }, + "node_modules/molstar/lib/mol-io/common/utf8.js": { + "bytesInOutput": 1383 + }, + "node_modules/molstar/lib/mol-io/common/msgpack/encode.js": { + "bytesInOutput": 2923 + }, + "node_modules/molstar/lib/mol-io/writer/cif/encoder/binary.js": { + "bytesInOutput": 2558 + }, + "node_modules/molstar/lib/mol-io/writer/cif.js": { + "bytesInOutput": 1600 + }, + "node_modules/molstar/lib/mol-model/structure/export/categories/atom_site_operator_mapping.js": { + "bytesInOutput": 1116 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/atomic.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/mmcif.js": { + "bytesInOutput": 14663 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/hierarchy.js": { + "bytesInOutput": 1077 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/measures.js": { + "bytesInOutput": 2694 + }, + "node_modules/molstar/lib/mol-util/color/spaces/lab.js": { + "bytesInOutput": 1868 + }, + "node_modules/molstar/lib/mol-util/color/spaces/hcl.js": { + "bytesInOutput": 938 + }, + "node_modules/molstar/lib/mol-util/color/color.js": { + "bytesInOutput": 2566 + }, + "node_modules/molstar/lib/mol-util/color/index.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-util/string.js": { + "bytesInOutput": 763 + }, + "node_modules/molstar/lib/mol-util/color/lists.js": { + "bytesInOutput": 8884 + }, + "node_modules/molstar/lib/mol-util/legend.js": { + "bytesInOutput": 129 + }, + "node_modules/molstar/lib/mol-util/color/scale.js": { + "bytesInOutput": 1013 + }, + "node_modules/molstar/lib/mol-model/structure/model/types/saccharides.js": { + "bytesInOutput": 6836 + }, + "node_modules/molstar/lib/mol-model/structure/structure/carbohydrates/constants.js": { + "bytesInOutput": 20339 + }, + "node_modules/molstar/lib/mol-util/set.js": { + "bytesInOutput": 1419 + }, + "node_modules/molstar/lib/mol-model/structure/model/types/lipids.js": { + "bytesInOutput": 1028 + }, + "node_modules/molstar/lib/mol-model/structure/model/types/ions.js": { + "bytesInOutput": 1208 + }, + "node_modules/molstar/lib/mol-model/structure/model/types.js": { + "bytesInOutput": 9005 + }, + "node_modules/molstar/lib/mol-model/structure/util.js": { + "bytesInOutput": 679 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/utils/atomic-derived.js": { + "bytesInOutput": 980 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/utils/atomic-index.js": { + "bytesInOutput": 4828 + }, + "node_modules/molstar/lib/mol-io/reader/common/text/tokenizer.js": { + "bytesInOutput": 3447 + }, + "node_modules/molstar/lib/mol-io/reader/result.js": { + "bytesInOutput": 376 + }, + "node_modules/molstar/lib/mol-io/reader/cif/text/parser.js": { + "bytesInOutput": 7982 + }, + "node_modules/molstar/lib/mol-io/reader/cif/binary/field.js": { + "bytesInOutput": 615 + }, + "node_modules/molstar/lib/mol-io/common/msgpack/decode.js": { + "bytesInOutput": 2073 + }, + "node_modules/molstar/lib/mol-io/reader/cif/binary/parser.js": { + "bytesInOutput": 803 + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/ccd.js": { + "bytesInOutput": 1311 + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/bird.js": { + "bytesInOutput": 1530 + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/dic.js": { + "bytesInOutput": 492 + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/density-server.js": { + "bytesInOutput": 632 + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/cif-core.js": { + "bytesInOutput": 2587 + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/segmentation.js": { + "bytesInOutput": 158 + }, + "node_modules/molstar/lib/mol-io/reader/cif.js": { + "bytesInOutput": 265 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/symmetry.js": { + "bytesInOutput": 914 + }, + "node_modules/molstar/lib/mol-model/structure.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-model/structure/topology/topology.js": { + "bytesInOutput": 128 + }, + "node_modules/molstar/lib/mol-model/structure/topology.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-model/structure/query/queries/internal.js": { + "bytesInOutput": 1649 + }, + "node_modules/molstar/lib/mol-data/int/sorted-ranges.js": { + "bytesInOutput": 1730 + }, + "node_modules/molstar/lib/mol-model/structure/structure/element/bundle.js": { + "bytesInOutput": 3600 + }, + "node_modules/molstar/lib/mol-model/structure/query/context.js": { + "bytesInOutput": 2220 + }, + "node_modules/molstar/lib/mol-model/structure/query/query.js": { + "bytesInOutput": 83 + }, + "node_modules/molstar/lib/mol-model/structure/query.js": { + "bytesInOutput": 93 + }, + "node_modules/molstar/lib/mol-model/structure/query/queries/generators.js": { + "bytesInOutput": 5581 + }, + "node_modules/molstar/lib/mol-model/structure/query/utils/structure-set.js": { + "bytesInOutput": 1753 + }, + "node_modules/molstar/lib/mol-model/structure/query/utils/builders.js": { + "bytesInOutput": 1324 + }, + "node_modules/molstar/lib/mol-model/structure/query/queries/modifiers.js": { + "bytesInOutput": 9957 + }, + "node_modules/molstar/lib/mol-math/geometry/centroid-helper.js": { + "bytesInOutput": 1430 + }, + "node_modules/molstar/lib/mol-math/graph/inter-unit-graph.js": { + "bytesInOutput": 1926 + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/data.js": { + "bytesInOutput": 472 + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds.js": { + "bytesInOutput": 3880 + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/common.js": { + "bytesInOutput": 4007 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/atomic/bonds.js": { + "bytesInOutput": 986 + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/chem_comp.js": { + "bytesInOutput": 1394 + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/bonds/struct_conn.js": { + "bytesInOutput": 2549 + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/intra-compute.js": { + "bytesInOutput": 3581 + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/inter-compute.js": { + "bytesInOutput": 4354 + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/rings/compute.js": { + "bytesInOutput": 4424 + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/rings.js": { + "bytesInOutput": 2455 + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/polymer.js": { + "bytesInOutput": 2175 + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/principal-axes.js": { + "bytesInOutput": 231 + }, + "node_modules/molstar/lib/mol-math/geometry/boundary-helper.js": { + "bytesInOutput": 2353 + }, + "node_modules/molstar/lib/mol-math/geometry/boundary.js": { + "bytesInOutput": 713 + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/bonds/element-set-intra-bond-cache.js": { + "bytesInOutput": 505 + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit/resonance.js": { + "bytesInOutput": 630 + }, + "node_modules/molstar/lib/mol-model/structure/structure/unit.js": { + "bytesInOutput": 9433 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/secondary-structure.js": { + "bytesInOutput": 64 + }, + "node_modules/molstar/lib/mol-util/nodejs-shims.js": { + "bytesInOutput": 592 + }, + "node_modules/molstar/lib/mol-util/zip/bin.js": { + "bytesInOutput": 1189 + }, + "node_modules/molstar/lib/mol-util/zip/checksum.js": { + "bytesInOutput": 281 + }, + "node_modules/molstar/lib/mol-util/zip/util.js": { + "bytesInOutput": 1990 + }, + "node_modules/molstar/lib/mol-util/zip/inflate.js": { + "bytesInOutput": 2440 + }, + "node_modules/molstar/lib/mol-util/zip/huffman.js": { + "bytesInOutput": 1007 + }, + "node_modules/molstar/lib/mol-util/zip/deflate.js": { + "bytesInOutput": 4637 + }, + "node_modules/molstar/lib/mol-util/zip/zip.js": { + "bytesInOutput": 2677 + }, + "node_modules/molstar/lib/mol-util/data-source.js": { + "bytesInOutput": 5717 + }, + "node_modules/molstar/lib/mol-util/assets.js": { + "bytesInOutput": 2008 + }, + "node_modules/molstar/lib/mol-util/param-definition.js": { + "bytesInOutput": 9066 + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/bends.js": { + "bytesInOutput": 522 + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/backbone-hbonds.js": { + "bytesInOutput": 1361 + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/common.js": { + "bytesInOutput": 168 + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/turns.js": { + "bytesInOutput": 322 + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/helices.js": { + "bytesInOutput": 684 + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/ladders.js": { + "bytesInOutput": 929 + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/bridges.js": { + "bytesInOutput": 635 + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/sheets.js": { + "bytesInOutput": 558 + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/dihedral-angles.js": { + "bytesInOutput": 705 + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/trace-lookup.js": { + "bytesInOutput": 262 + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp/protein-info.js": { + "bytesInOutput": 458 + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure/dssp.js": { + "bytesInOutput": 2297 + }, + "node_modules/molstar/lib/mol-model-props/common/custom-structure-property.js": { + "bytesInOutput": 1582 + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/secondary-structure.js": { + "bytesInOutput": 2912 + }, + "node_modules/molstar/lib/mol-model-props/computed/secondary-structure.js": { + "bytesInOutput": 1215 + }, + "node_modules/molstar/lib/mol-model/structure/structure/properties.js": { + "bytesInOutput": 6668 + }, + "node_modules/molstar/lib/mol-model/structure/structure/symmetry.js": { + "bytesInOutput": 4978 + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/unique-subset-builder.js": { + "bytesInOutput": 1334 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/utils/residue-set.js": { + "bytesInOutput": 1550 + }, + "node_modules/molstar/lib/mol-model/structure/query/queries/filters.js": { + "bytesInOutput": 4447 + }, + "node_modules/molstar/lib/mol-model/structure/query/utils/structure-distance.js": { + "bytesInOutput": 1814 + }, + "node_modules/molstar/lib/mol-model/structure/query/queries/combinators.js": { + "bytesInOutput": 751 + }, + "node_modules/molstar/lib/mol-model/structure/query/queries/atom-set.js": { + "bytesInOutput": 234 + }, + "node_modules/molstar/lib/mol-model/structure/query/predicates.js": { + "bytesInOutput": 1530 + }, + "node_modules/molstar/lib/mol-model/structure/trajectory.js": { + "bytesInOutput": 158 + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/assembly.js": { + "bytesInOutput": 1792 + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/symmetry.js": { + "bytesInOutput": 1536 + }, + "node_modules/molstar/lib/mol-model-formats/structure/property/anisotropic.js": { + "bytesInOutput": 940 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/global-transform.js": { + "bytesInOutput": 1078 + }, + "node_modules/molstar/lib/mol-io/reader/cif/schema/mmcif-extras.js": { + "bytesInOutput": 484 + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/util.js": { + "bytesInOutput": 585 + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/schema.js": { + "bytesInOutput": 750 + }, + "node_modules/molstar/lib/mol-model-formats/structure/common/entity.js": { + "bytesInOutput": 1214 + }, + "node_modules/molstar/lib/mol-model-formats/structure/common/component.js": { + "bytesInOutput": 4482 + }, + "node_modules/molstar/lib/mol-model-formats/structure/mmcif.js": { + "bytesInOutput": 3767 + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/atomic.js": { + "bytesInOutput": 3453 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/coarse.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/coarse/hierarchy.js": { + "bytesInOutput": 456 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/utils/coarse-keys.js": { + "bytesInOutput": 1342 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/utils/coarse-ranges.js": { + "bytesInOutput": 401 + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/coarse.js": { + "bytesInOutput": 1367 + }, + "node_modules/molstar/lib/mol-model/sequence/constants.js": { + "bytesInOutput": 457 + }, + "node_modules/molstar/lib/mol-model/sequence/sequence.js": { + "bytesInOutput": 2060 + }, + "node_modules/molstar/lib/mol-model/sequence.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/sequence.js": { + "bytesInOutput": 1644 + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/sequence.js": { + "bytesInOutput": 419 + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/sort.js": { + "bytesInOutput": 577 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/utils/atomic-ranges.js": { + "bytesInOutput": 1753 + }, + "node_modules/molstar/lib/mol-util/memoize.js": { + "bytesInOutput": 287 + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/properties.js": { + "bytesInOutput": 1744 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/common.js": { + "bytesInOutput": 42 + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/entities.js": { + "bytesInOutput": 2032 + }, + "node_modules/molstar/lib/mol-model-formats/structure/basic/parser.js": { + "bytesInOutput": 3816 + }, + "node_modules/molstar/lib/mol-model-props/common/custom-model-property.js": { + "bytesInOutput": 1516 + }, + "node_modules/molstar/lib/mol-model/structure/model/model.js": { + "bytesInOutput": 6150 + }, + "node_modules/molstar/lib/mol-model/structure/model/properties/custom/indexed.js": { + "bytesInOutput": 3146 + }, + "node_modules/molstar/lib/mol-model/structure/model.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/lookup3d.js": { + "bytesInOutput": 4735 + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/subset-builder.js": { + "bytesInOutput": 1649 + }, + "node_modules/molstar/lib/mol-data/util/combination.js": { + "bytesInOutput": 620 + }, + "node_modules/molstar/lib/mol-model/structure/structure/carbohydrates/data.js": { + "bytesInOutput": 149 + }, + "node_modules/molstar/lib/mol-model/structure/structure/carbohydrates/compute.js": { + "bytesInOutput": 5659 + }, + "node_modules/molstar/lib/mol-model/structure/structure/util/boundary.js": { + "bytesInOutput": 555 + }, + "node_modules/molstar/lib/mol-model/structure/structure/structure.js": { + "bytesInOutput": 20727 + }, + "node_modules/molstar/lib/mol-model/structure/structure/element/loci.js": { + "bytesInOutput": 11128 + }, + "node_modules/molstar/lib/mol-model/structure/structure/element/stats.js": { + "bytesInOutput": 5407 + }, + "node_modules/molstar/lib/mol-model/structure/structure/element/util.js": { + "bytesInOutput": 414 + }, + "node_modules/molstar/lib/mol-model/structure/structure.js": { + "bytesInOutput": 0 + }, + "node_modules/molstar/lib/mol-model-props/sequence/sifts-mapping.js": { + "bytesInOutput": 1538 + }, + "node_modules/molstar/lib/mol-model/structure/export/categories/atom_site.js": { + "bytesInOutput": 4673 + }, + "node_modules/molstar/lib/mol-model/structure/export/categories/secondary-structure.js": { + "bytesInOutput": 1583 + }, + "node_modules/molstar/lib/mol-model/structure/export/categories/utils.js": { + "bytesInOutput": 705 + }, + "node_modules/molstar/lib/mol-model/structure/export/categories/misc.js": { + "bytesInOutput": 933 + }, + "node_modules/molstar/lib/mol-model/structure/export/categories/sequence.js": { + "bytesInOutput": 350 + }, + "node_modules/molstar/lib/mol-model/structure/export/mmcif.js": { + "bytesInOutput": 884 + }, + "node_modules/molstar/lib/mol-model/structure/query/selection.js": { + "bytesInOutput": 2273 + } + }, + "bytes": 598010 + }, + "chunk-DUVKI6S6.js": { + "imports": [ + { + "path": "chunk-SAL4EXGL.js", + "kind": "import-statement" + }, + { + "path": "chunk-T4BLILQN.js", + "kind": "import-statement" + } + ], + "exports": [ + "PageFeaturesViewerModule" + ], + "entryPoint": "projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.module.ts", + "inputs": { + "projects/ngx-features-viewer/src/lib/ngx-features-viewer.directive.ts": { + "bytesInOutput": 371 + }, + "node_modules/d3-array/src/ascending.js": { + "bytesInOutput": 69 + }, + "node_modules/d3-array/src/descending.js": { + "bytesInOutput": 69 + }, + "node_modules/d3-array/src/bisector.js": { + "bytesInOutput": 502 + }, + "node_modules/d3-array/src/number.js": { + "bytesInOutput": 38 + }, + "node_modules/d3-array/src/bisect.js": { + "bytesInOutput": 60 + }, + "node_modules/d3-array/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/internmap/src/index.js": { + "bytesInOutput": 633 + }, + "node_modules/d3-array/src/ticks.js": { + "bytesInOutput": 878 + }, + "node_modules/d3/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-axis/src/identity.js": { + "bytesInOutput": 24 + }, + "node_modules/d3-axis/src/axis.js": { + "bytesInOutput": 2630 + }, + "node_modules/d3-axis/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-dispatch/src/dispatch.js": { + "bytesInOutput": 1550 + }, + "node_modules/d3-dispatch/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-selection/src/namespaces.js": { + "bytesInOutput": 203 + }, + "node_modules/d3-selection/src/namespace.js": { + "bytesInOutput": 147 + }, + "node_modules/d3-selection/src/creator.js": { + "bytesInOutput": 317 + }, + "node_modules/d3-selection/src/selector.js": { + "bytesInOutput": 89 + }, + "node_modules/d3-selection/src/selection/select.js": { + "bytesInOutput": 289 + }, + "node_modules/d3-selection/src/array.js": { + "bytesInOutput": 66 + }, + "node_modules/d3-selection/src/selectorAll.js": { + "bytesInOutput": 100 + }, + "node_modules/d3-selection/src/selection/selectAll.js": { + "bytesInOutput": 290 + }, + "node_modules/d3-selection/src/matcher.js": { + "bytesInOutput": 112 + }, + "node_modules/d3-selection/src/selection/selectChild.js": { + "bytesInOutput": 217 + }, + "node_modules/d3-selection/src/selection/selectChildren.js": { + "bytesInOutput": 225 + }, + "node_modules/d3-selection/src/selection/filter.js": { + "bytesInOutput": 234 + }, + "node_modules/d3-selection/src/selection/sparse.js": { + "bytesInOutput": 42 + }, + "node_modules/d3-selection/src/selection/enter.js": { + "bytesInOutput": 510 + }, + "node_modules/d3-selection/src/constant.js": { + "bytesInOutput": 43 + }, + "node_modules/d3-selection/src/selection/data.js": { + "bytesInOutput": 1101 + }, + "node_modules/d3-selection/src/selection/exit.js": { + "bytesInOutput": 75 + }, + "node_modules/d3-selection/src/selection/join.js": { + "bytesInOutput": 223 + }, + "node_modules/d3-selection/src/selection/merge.js": { + "bytesInOutput": 290 + }, + "node_modules/d3-selection/src/selection/order.js": { + "bytesInOutput": 199 + }, + "node_modules/d3-selection/src/selection/sort.js": { + "bytesInOutput": 321 + }, + "node_modules/d3-selection/src/selection/call.js": { + "bytesInOutput": 87 + }, + "node_modules/d3-selection/src/selection/nodes.js": { + "bytesInOutput": 38 + }, + "node_modules/d3-selection/src/selection/node.js": { + "bytesInOutput": 136 + }, + "node_modules/d3-selection/src/selection/size.js": { + "bytesInOutput": 53 + }, + "node_modules/d3-selection/src/selection/empty.js": { + "bytesInOutput": 33 + }, + "node_modules/d3-selection/src/selection/each.js": { + "bytesInOutput": 148 + }, + "node_modules/d3-selection/src/selection/attr.js": { + "bytesInOutput": 773 + }, + "node_modules/d3-selection/src/window.js": { + "bytesInOutput": 97 + }, + "node_modules/d3-selection/src/selection/style.js": { + "bytesInOutput": 495 + }, + "node_modules/d3-selection/src/selection/property.js": { + "bytesInOutput": 308 + }, + "node_modules/d3-selection/src/selection/classed.js": { + "bytesInOutput": 1002 + }, + "node_modules/d3-selection/src/selection/text.js": { + "bytesInOutput": 291 + }, + "node_modules/d3-selection/src/selection/html.js": { + "bytesInOutput": 283 + }, + "node_modules/d3-selection/src/selection/raise.js": { + "bytesInOutput": 101 + }, + "node_modules/d3-selection/src/selection/lower.js": { + "bytesInOutput": 133 + }, + "node_modules/d3-selection/src/selection/append.js": { + "bytesInOutput": 131 + }, + "node_modules/d3-selection/src/selection/insert.js": { + "bytesInOutput": 232 + }, + "node_modules/d3-selection/src/selection/remove.js": { + "bytesInOutput": 94 + }, + "node_modules/d3-selection/src/selection/clone.js": { + "bytesInOutput": 249 + }, + "node_modules/d3-selection/src/selection/datum.js": { + "bytesInOutput": 88 + }, + "node_modules/d3-selection/src/selection/on.js": { + "bytesInOutput": 1128 + }, + "node_modules/d3-selection/src/selection/dispatch.js": { + "bytesInOutput": 420 + }, + "node_modules/d3-selection/src/selection/iterator.js": { + "bytesInOutput": 120 + }, + "node_modules/d3-selection/src/selection/index.js": { + "bytesInOutput": 547 + }, + "node_modules/d3-selection/src/select.js": { + "bytesInOutput": 120 + }, + "node_modules/d3-selection/src/create.js": { + "bytesInOutput": 62 + }, + "node_modules/d3-selection/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-selection/src/sourceEvent.js": { + "bytesInOutput": 56 + }, + "node_modules/d3-selection/src/pointer.js": { + "bytesInOutput": 380 + }, + "node_modules/d3-drag/src/noevent.js": { + "bytesInOutput": 94 + }, + "node_modules/d3-drag/src/nodrag.js": { + "bytesInOutput": 469 + }, + "node_modules/d3-drag/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-color/src/define.js": { + "bytesInOutput": 145 + }, + "node_modules/d3-color/src/color.js": { + "bytesInOutput": 7105 + }, + "node_modules/d3-color/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-interpolate/src/basis.js": { + "bytesInOutput": 284 + }, + "node_modules/d3-interpolate/src/basisClosed.js": { + "bytesInOutput": 166 + }, + "node_modules/d3-interpolate/src/constant.js": { + "bytesInOutput": 16 + }, + "node_modules/d3-interpolate/src/color.js": { + "bytesInOutput": 302 + }, + "node_modules/d3-interpolate/src/rgb.js": { + "bytesInOutput": 509 + }, + "node_modules/d3-interpolate/src/numberArray.js": { + "bytesInOutput": 217 + }, + "node_modules/d3-interpolate/src/array.js": { + "bytesInOutput": 211 + }, + "node_modules/d3-interpolate/src/date.js": { + "bytesInOutput": 94 + }, + "node_modules/d3-interpolate/src/number.js": { + "bytesInOutput": 65 + }, + "node_modules/d3-interpolate/src/object.js": { + "bytesInOutput": 211 + }, + "node_modules/d3-interpolate/src/string.js": { + "bytesInOutput": 621 + }, + "node_modules/d3-interpolate/src/value.js": { + "bytesInOutput": 271 + }, + "node_modules/d3-interpolate/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-interpolate/src/round.js": { + "bytesInOutput": 78 + }, + "node_modules/d3-interpolate/src/transform/decompose.js": { + "bytesInOutput": 357 + }, + "node_modules/d3-interpolate/src/transform/parse.js": { + "bytesInOutput": 362 + }, + "node_modules/d3-interpolate/src/transform/index.js": { + "bytesInOutput": 1023 + }, + "node_modules/d3-interpolate/src/zoom.js": { + "bytesInOutput": 725 + }, + "node_modules/d3-timer/src/timer.js": { + "bytesInOutput": 1315 + }, + "node_modules/d3-timer/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-timer/src/timeout.js": { + "bytesInOutput": 92 + }, + "node_modules/d3-transition/src/transition/schedule.js": { + "bytesInOutput": 1685 + }, + "node_modules/d3-transition/src/interrupt.js": { + "bytesInOutput": 275 + }, + "node_modules/d3-transition/src/selection/interrupt.js": { + "bytesInOutput": 56 + }, + "node_modules/d3-transition/src/transition/tween.js": { + "bytesInOutput": 793 + }, + "node_modules/d3-transition/src/transition/interpolate.js": { + "bytesInOutput": 98 + }, + "node_modules/d3-transition/src/transition/attr.js": { + "bytesInOutput": 975 + }, + "node_modules/d3-transition/src/transition/attrTween.js": { + "bytesInOutput": 628 + }, + "node_modules/d3-transition/src/transition/delay.js": { + "bytesInOutput": 260 + }, + "node_modules/d3-transition/src/transition/duration.js": { + "bytesInOutput": 267 + }, + "node_modules/d3-transition/src/transition/ease.js": { + "bytesInOutput": 188 + }, + "node_modules/d3-transition/src/transition/easeVarying.js": { + "bytesInOutput": 211 + }, + "node_modules/d3-transition/src/transition/filter.js": { + "bytesInOutput": 254 + }, + "node_modules/d3-transition/src/transition/merge.js": { + "bytesInOutput": 316 + }, + "node_modules/d3-transition/src/transition/on.js": { + "bytesInOutput": 363 + }, + "node_modules/d3-transition/src/transition/remove.js": { + "bytesInOutput": 183 + }, + "node_modules/d3-transition/src/transition/select.js": { + "bytesInOutput": 345 + }, + "node_modules/d3-transition/src/transition/selectAll.js": { + "bytesInOutput": 319 + }, + "node_modules/d3-transition/src/transition/selection.js": { + "bytesInOutput": 88 + }, + "node_modules/d3-transition/src/transition/style.js": { + "bytesInOutput": 961 + }, + "node_modules/d3-transition/src/transition/styleTween.js": { + "bytesInOutput": 419 + }, + "node_modules/d3-transition/src/transition/text.js": { + "bytesInOutput": 228 + }, + "node_modules/d3-transition/src/transition/textTween.js": { + "bytesInOutput": 374 + }, + "node_modules/d3-transition/src/transition/transition.js": { + "bytesInOutput": 276 + }, + "node_modules/d3-transition/src/transition/end.js": { + "bytesInOutput": 276 + }, + "node_modules/d3-transition/src/transition/index.js": { + "bytesInOutput": 601 + }, + "node_modules/d3-ease/src/cubic.js": { + "bytesInOutput": 54 + }, + "node_modules/d3-ease/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-transition/src/selection/transition.js": { + "bytesInOutput": 441 + }, + "node_modules/d3-transition/src/selection/index.js": { + "bytesInOutput": 53 + }, + "node_modules/d3-transition/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-brush/src/brush.js": { + "bytesInOutput": 610 + }, + "node_modules/d3-brush/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-path/src/path.js": { + "bytesInOutput": 2088 + }, + "node_modules/d3-path/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-format/src/formatDecimal.js": { + "bytesInOutput": 277 + }, + "node_modules/d3-format/src/exponent.js": { + "bytesInOutput": 51 + }, + "node_modules/d3-format/src/formatGroup.js": { + "bytesInOutput": 213 + }, + "node_modules/d3-format/src/formatNumerals.js": { + "bytesInOutput": 88 + }, + "node_modules/d3-format/src/formatSpecifier.js": { + "bytesInOutput": 974 + }, + "node_modules/d3-format/src/formatTrim.js": { + "bytesInOutput": 201 + }, + "node_modules/d3-format/src/formatPrefixAuto.js": { + "bytesInOutput": 276 + }, + "node_modules/d3-format/src/formatRounded.js": { + "bytesInOutput": 190 + }, + "node_modules/d3-format/src/formatTypes.js": { + "bytesInOutput": 301 + }, + "node_modules/d3-format/src/identity.js": { + "bytesInOutput": 24 + }, + "node_modules/d3-format/src/locale.js": { + "bytesInOutput": 1838 + }, + "node_modules/d3-format/src/defaultLocale.js": { + "bytesInOutput": 130 + }, + "node_modules/d3-format/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-format/src/precisionFixed.js": { + "bytesInOutput": 51 + }, + "node_modules/d3-format/src/precisionPrefix.js": { + "bytesInOutput": 99 + }, + "node_modules/d3-format/src/precisionRound.js": { + "bytesInOutput": 80 + }, + "node_modules/d3-scale/src/init.js": { + "bytesInOutput": 132 + }, + "node_modules/d3-scale/src/ordinal.js": { + "bytesInOutput": 512 + }, + "node_modules/d3-scale/src/constant.js": { + "bytesInOutput": 43 + }, + "node_modules/d3-scale/src/number.js": { + "bytesInOutput": 24 + }, + "node_modules/d3-scale/src/continuous.js": { + "bytesInOutput": 1507 + }, + "node_modules/d3-scale/src/tickFormat.js": { + "bytesInOutput": 439 + }, + "node_modules/d3-scale/src/linear.js": { + "bytesInOutput": 577 + }, + "node_modules/d3-scale/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-shape/src/constant.js": { + "bytesInOutput": 43 + }, + "node_modules/d3-shape/src/path.js": { + "bytesInOutput": 208 + }, + "node_modules/d3-shape/src/array.js": { + "bytesInOutput": 100 + }, + "node_modules/d3-shape/src/curve/linear.js": { + "bytesInOutput": 504 + }, + "node_modules/d3-shape/src/point.js": { + "bytesInOutput": 54 + }, + "node_modules/d3-shape/src/line.js": { + "bytesInOutput": 763 + }, + "node_modules/d3-shape/src/index.js": { + "bytesInOutput": 0 + }, + "node_modules/d3-shape/src/curve/monotone.js": { + "bytesInOutput": 1675 + }, + "node_modules/d3-zoom/src/constant.js": { + "bytesInOutput": 16 + }, + "node_modules/d3-zoom/src/event.js": { + "bytesInOutput": 301 + }, + "node_modules/d3-zoom/src/transform.js": { + "bytesInOutput": 946 + }, + "node_modules/d3-zoom/src/noevent.js": { + "bytesInOutput": 107 + }, + "node_modules/d3-zoom/src/zoom.js": { + "bytesInOutput": 7908 + }, + "node_modules/d3-zoom/src/index.js": { + "bytesInOutput": 0 + }, + "projects/ngx-features-viewer/src/lib/services/initialize.service.ts": { + "bytesInOutput": 1115 + }, + "projects/ngx-features-viewer/src/lib/services/features.service.ts": { + "bytesInOutput": 1271 + }, + "projects/ngx-features-viewer/src/lib/services/resize.service.ts": { + "bytesInOutput": 1555 + }, + "projects/ngx-features-viewer/src/lib/services/zoom.service.ts": { + "bytesInOutput": 758 + }, + "projects/ngx-features-viewer/src/lib/services/draw.service.ts": { + "bytesInOutput": 8385 + }, + "projects/ngx-features-viewer/src/lib/ngx-features-viewer.component.ts": { + "bytesInOutput": 92055 + }, + "projects/ngx-features-viewer/src/public-api.ts": { + "bytesInOutput": 0 + }, + "projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.component.ts": { + "bytesInOutput": 5865 + }, + "projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.module.ts": { + "bytesInOutput": 195 + } + }, + "bytes": 180311 + }, + "chunk-BDFDQ2SB.js": { + "imports": [ + { + "path": "chunk-ED6QR4VZ.js", + "kind": "import-statement" + }, + { + "path": "chunk-SAL4EXGL.js", + "kind": "import-statement" + }, + { + "path": "chunk-T4BLILQN.js", + "kind": "import-statement" + } + ], + "exports": [ + "PageSequenceViewerModule" + ], + "entryPoint": "projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.module.ts", + "inputs": { + "projects/ngx-sequence-viewer/src/lib/colors.ts": { + "bytesInOutput": 1089 + }, + "projects/ngx-sequence-viewer/src/lib/services/index.service.ts": { + "bytesInOutput": 267 + }, + "projects/ngx-sequence-viewer/src/lib/services/selection.service.ts": { + "bytesInOutput": 656 + }, + "projects/ngx-sequence-viewer/src/lib/utils.ts": { + "bytesInOutput": 240 + }, + "projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.ts": { + "bytesInOutput": 10711 + }, + "projects/demo-showcase/src/app/page-sequence-viewer/multiple-sequence-alignment.component.ts": { + "bytesInOutput": 4329 + }, + "projects/demo-showcase/src/app/page-sequence-viewer/single-sequence-viewer.component.ts": { + "bytesInOutput": 1856 + }, + "projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.component.ts": { + "bytesInOutput": 344 + }, + "projects/ngx-sequence-viewer/src/public-api.ts": { + "bytesInOutput": 0 + }, + "projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.module.ts": { + "bytesInOutput": 193 + } + }, + "bytes": 20208 + }, + "chunk-ED6QR4VZ.js": { + "imports": [ + { + "path": "chunk-SAL4EXGL.js", + "kind": "import-statement" + }, + { + "path": "chunk-T4BLILQN.js", + "kind": "import-statement" + } + ], + "exports": [ + "a" + ], + "inputs": { + "projects/demo-showcase/src/app/theme-selector/theme-selector.service.ts": { + "bytesInOutput": 571 + } + }, + "bytes": 667 + }, + "chunk-SAL4EXGL.js": { + "imports": [ + { + "path": "chunk-T4BLILQN.js", + "kind": "import-statement" + } + ], + "exports": [ + "$", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "_", + "a", + "aa", + "b", + "ba", + "c", + "ca", + "d", + "da", + "e", + "ea", + "f", + "fa", + "g", + "ga", + "h", + "ha", + "i", + "ia", + "j", + "ja", + "k", + "ka", + "l", + "la", + "m", + "ma", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z" + ], + "inputs": { + "node_modules/@angular/core/fesm2022/primitives/signals.mjs": { + "bytesInOutput": 2316 + }, + "node_modules/@angular/core/fesm2022/core.mjs": { + "bytesInOutput": 109272 + }, + "node_modules/@angular/common/fesm2022/common.mjs": { + "bytesInOutput": 14994 + }, + "node_modules/@angular/common/fesm2022/http.mjs": { + "bytesInOutput": 19009 + }, + "node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs": { + "bytesInOutput": 11262 + }, + "node_modules/@angular/router/fesm2022/router.mjs": { + "bytesInOutput": 73165 + } + }, + "bytes": 230896 + }, + "chunk-T4BLILQN.js": { + "imports": [], + "exports": [ + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z" + ], + "inputs": { + "node_modules/rxjs/dist/esm/internal/util/isFunction.js": { + "bytesInOutput": 42 + }, + "node_modules/rxjs/dist/esm/internal/util/createErrorClass.js": { + "bytesInOutput": 146 + }, + "node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js": { + "bytesInOutput": 206 + }, + "node_modules/rxjs/dist/esm/internal/util/arrRemove.js": { + "bytesInOutput": 62 + }, + "node_modules/rxjs/dist/esm/internal/Subscription.js": { + "bytesInOutput": 1287 + }, + "node_modules/rxjs/dist/esm/internal/util/identity.js": { + "bytesInOutput": 23 + }, + "node_modules/rxjs/dist/esm/internal/util/pipe.js": { + "bytesInOutput": 130 + }, + "node_modules/rxjs/dist/esm/internal/config.js": { + "bytesInOutput": 141 + }, + "node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js": { + "bytesInOutput": 205 + }, + "node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js": { + "bytesInOutput": 84 + }, + "node_modules/rxjs/dist/esm/internal/util/noop.js": { + "bytesInOutput": 14 + }, + "node_modules/rxjs/dist/esm/internal/NotificationFactories.js": { + "bytesInOutput": 157 + }, + "node_modules/rxjs/dist/esm/internal/util/errorContext.js": { + "bytesInOutput": 270 + }, + "node_modules/rxjs/dist/esm/internal/Subscriber.js": { + "bytesInOutput": 1561 + }, + "node_modules/rxjs/dist/esm/internal/symbol/observable.js": { + "bytesInOutput": 67 + }, + "node_modules/rxjs/dist/esm/internal/Observable.js": { + "bytesInOutput": 929 + }, + "node_modules/rxjs/dist/esm/internal/util/lift.js": { + "bytesInOutput": 203 + }, + "node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js": { + "bytesInOutput": 588 + }, + "node_modules/rxjs/dist/esm/internal/operators/refCount.js": { + "bytesInOutput": 270 + }, + "node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js": { + "bytesInOutput": 741 + }, + "node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js": { + "bytesInOutput": 104 + }, + "node_modules/rxjs/dist/esm/internal/Subject.js": { + "bytesInOutput": 1970 + }, + "node_modules/rxjs/dist/esm/internal/BehaviorSubject.js": { + "bytesInOutput": 309 + }, + "node_modules/rxjs/dist/esm/internal/observable/empty.js": { + "bytesInOutput": 29 + }, + "node_modules/tslib/tslib.es6.mjs": { + "bytesInOutput": 1823 + }, + "node_modules/rxjs/dist/esm/internal/util/isArrayLike.js": { + "bytesInOutput": 61 + }, + "node_modules/rxjs/dist/esm/internal/util/isPromise.js": { + "bytesInOutput": 33 + }, + "node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js": { + "bytesInOutput": 30 + }, + "node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js": { + "bytesInOutput": 73 + }, + "node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js": { + "bytesInOutput": 233 + }, + "node_modules/rxjs/dist/esm/internal/symbol/iterator.js": { + "bytesInOutput": 106 + }, + "node_modules/rxjs/dist/esm/internal/util/isIterable.js": { + "bytesInOutput": 33 + }, + "node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js": { + "bytesInOutput": 233 + }, + "node_modules/rxjs/dist/esm/internal/observable/innerFrom.js": { + "bytesInOutput": 1041 + }, + "node_modules/rxjs/dist/esm/internal/util/executeSchedule.js": { + "bytesInOutput": 137 + }, + "node_modules/rxjs/dist/esm/internal/operators/observeOn.js": { + "bytesInOutput": 139 + }, + "node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js": { + "bytesInOutput": 78 + }, + "node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js": { + "bytesInOutput": 47 + }, + "node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js": { + "bytesInOutput": 47 + }, + "node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js": { + "bytesInOutput": 144 + }, + "node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js": { + "bytesInOutput": 211 + }, + "node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js": { + "bytesInOutput": 204 + }, + "node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js": { + "bytesInOutput": 36 + }, + "node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js": { + "bytesInOutput": 185 + }, + "node_modules/rxjs/dist/esm/internal/observable/from.js": { + "bytesInOutput": 38 + }, + "node_modules/rxjs/dist/esm/internal/util/isScheduler.js": { + "bytesInOutput": 39 + }, + "node_modules/rxjs/dist/esm/internal/util/args.js": { + "bytesInOutput": 184 + }, + "node_modules/rxjs/dist/esm/internal/observable/of.js": { + "bytesInOutput": 43 + }, + "node_modules/rxjs/dist/esm/internal/observable/throwError.js": { + "bytesInOutput": 93 + }, + "node_modules/rxjs/dist/esm/internal/util/isObservable.js": { + "bytesInOutput": 70 + }, + "node_modules/rxjs/dist/esm/internal/util/EmptyError.js": { + "bytesInOutput": 94 + }, + "node_modules/rxjs/dist/esm/internal/operators/map.js": { + "bytesInOutput": 90 + }, + "node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js": { + "bytesInOutput": 286 + }, + "node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js": { + "bytesInOutput": 101 + }, + "node_modules/rxjs/dist/esm/internal/util/createObject.js": { + "bytesInOutput": 60 + }, + "node_modules/rxjs/dist/esm/internal/observable/combineLatest.js": { + "bytesInOutput": 417 + }, + "node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js": { + "bytesInOutput": 379 + }, + "node_modules/rxjs/dist/esm/internal/operators/mergeMap.js": { + "bytesInOutput": 128 + }, + "node_modules/rxjs/dist/esm/internal/operators/mergeAll.js": { + "bytesInOutput": 32 + }, + "node_modules/rxjs/dist/esm/internal/operators/concatAll.js": { + "bytesInOutput": 26 + }, + "node_modules/rxjs/dist/esm/internal/observable/concat.js": { + "bytesInOutput": 41 + }, + "node_modules/rxjs/dist/esm/internal/observable/defer.js": { + "bytesInOutput": 54 + }, + "node_modules/rxjs/dist/esm/internal/operators/filter.js": { + "bytesInOutput": 91 + }, + "node_modules/rxjs/dist/esm/internal/operators/catchError.js": { + "bytesInOutput": 200 + }, + "node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js": { + "bytesInOutput": 74 + }, + "node_modules/rxjs/dist/esm/internal/operators/combineLatest.js": { + "bytesInOutput": 89 + }, + "node_modules/rxjs/dist/esm/internal/operators/combineLatestWith.js": { + "bytesInOutput": 34 + }, + "node_modules/rxjs/dist/esm/internal/operators/concatMap.js": { + "bytesInOutput": 45 + }, + "node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js": { + "bytesInOutput": 112 + }, + "node_modules/rxjs/dist/esm/internal/operators/take.js": { + "bytesInOutput": 115 + }, + "node_modules/rxjs/dist/esm/internal/operators/mapTo.js": { + "bytesInOutput": 31 + }, + "node_modules/rxjs/dist/esm/internal/operators/finalize.js": { + "bytesInOutput": 71 + }, + "node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js": { + "bytesInOutput": 143 + }, + "node_modules/rxjs/dist/esm/internal/operators/first.js": { + "bytesInOutput": 111 + }, + "node_modules/rxjs/dist/esm/internal/operators/takeLast.js": { + "bytesInOutput": 173 + }, + "node_modules/rxjs/dist/esm/internal/operators/last.js": { + "bytesInOutput": 111 + }, + "node_modules/rxjs/dist/esm/internal/operators/scanInternals.js": { + "bytesInOutput": 159 + }, + "node_modules/rxjs/dist/esm/internal/operators/scan.js": { + "bytesInOutput": 58 + }, + "node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js": { + "bytesInOutput": 62 + }, + "node_modules/rxjs/dist/esm/internal/ReplaySubject.js": { + "bytesInOutput": 895 + }, + "node_modules/rxjs/dist/esm/internal/operators/share.js": { + "bytesInOutput": 646 + }, + "node_modules/rxjs/dist/esm/internal/operators/shareReplay.js": { + "bytesInOutput": 222 + }, + "node_modules/rxjs/dist/esm/internal/operators/startWith.js": { + "bytesInOutput": 83 + }, + "node_modules/rxjs/dist/esm/internal/operators/switchMap.js": { + "bytesInOutput": 224 + }, + "node_modules/rxjs/dist/esm/internal/operators/takeUntil.js": { + "bytesInOutput": 100 + }, + "node_modules/rxjs/dist/esm/internal/operators/tap.js": { + "bytesInOutput": 490 + }, + "node_modules/rxjs/dist/esm/index.js": { + "bytesInOutput": 0 + }, + "node_modules/rxjs/dist/esm/internal/scheduler/Action.js": { + "bytesInOutput": 78 + }, + "node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js": { + "bytesInOutput": 212 + }, + "node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js": { + "bytesInOutput": 1121 + }, + "node_modules/rxjs/dist/esm/internal/Scheduler.js": { + "bytesInOutput": 165 + }, + "node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js": { + "bytesInOutput": 301 + }, + "node_modules/rxjs/dist/esm/internal/scheduler/async.js": { + "bytesInOutput": 22 + }, + "node_modules/rxjs/dist/esm/internal/util/isDate.js": { + "bytesInOutput": 51 + }, + "node_modules/rxjs/dist/esm/internal/observable/timer.js": { + "bytesInOutput": 220 + }, + "node_modules/rxjs/dist/esm/internal/observable/merge.js": { + "bytesInOutput": 97 + }, + "node_modules/rxjs/dist/esm/internal/operators/debounceTime.js": { + "bytesInOutput": 329 + }, + "node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js": { + "bytesInOutput": 156 + }, + "node_modules/rxjs/dist/esm/internal/operators/skip.js": { + "bytesInOutput": 37 + }, + "node_modules/rxjs/dist/esm/internal/operators/throttle.js": { + "bytesInOutput": 384 + }, + "node_modules/rxjs/dist/esm/internal/operators/throttleTime.js": { + "bytesInOutput": 54 + }, + "node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js": { + "bytesInOutput": 268 + }, + "node_modules/rxjs/dist/esm/operators/index.js": { + "bytesInOutput": 0 + } + }, + "bytes": 26156 + }, + "page-home.component-UPBKK4ZN.css": { + "imports": [], + "inputs": { + "projects/demo-showcase/src/app/page-home/page-home.component.scss": { + "bytesInOutput": 31 + } + }, + "bytes": 32, + "ng-component": true + }, + "theme-selector.component-X3ZX3LQ2.css": { + "imports": [], + "inputs": { + "projects/demo-showcase/src/app/theme-selector/theme-selector.component.scss": { + "bytesInOutput": 0 + } + }, + "bytes": 0, + "ng-component": true + }, + "ngx-sequence-viewer.component-3MHD6EOI.css": { + "imports": [], + "inputs": { + "projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss": { + "bytesInOutput": 1687 + } + }, + "bytes": 1688, + "ng-component": true + }, + "page-structure-viewer.component-AIQ2MO7P.css": { + "imports": [], + "inputs": { + "projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.scss": { + "bytesInOutput": 107 + } + }, + "bytes": 108, + "ng-component": true + }, + "app.component-QZKHSNQK.css": { + "imports": [], + "inputs": { + "projects/demo-showcase/src/app/app.component.scss": { + "bytesInOutput": 60 + } + }, + "bytes": 61, + "ng-component": true + }, + "media/bootstrap-icons-X6UQXWUS.woff2": { + "imports": [], + "exports": [], + "inputs": { + "angular:css-resource:node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6": { + "bytesInOutput": 130396 + } + }, + "bytes": 130396 + }, + "media/bootstrap-icons-OCU552PF.woff": { + "imports": [], + "exports": [], + "inputs": { + "angular:css-resource:node_modules/bootstrap-icons/font/fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6": { + "bytesInOutput": 176032 + } + }, + "bytes": 176032 + }, + "media/dssp-helix-OTIKI7SN.svg": { + "imports": [], + "exports": [], + "inputs": { + "angular:css-resource:projects/ngx-features-viewer/src/assets/dssp-helix.svg": { + "bytesInOutput": 3738 + } + }, + "bytes": 3738, + "ng-component": true + }, + "media/dssp-strand-tail-PA4GJMUI.svg": { + "imports": [], + "exports": [], + "inputs": { + "angular:css-resource:projects/ngx-features-viewer/src/assets/dssp-strand-tail.svg": { + "bytesInOutput": 1908 + } + }, + "bytes": 1908, + "ng-component": true + }, + "media/dssp-strand-head-QWRJLFK7.svg": { + "imports": [], + "exports": [], + "inputs": { + "angular:css-resource:projects/ngx-features-viewer/src/assets/dssp-strand-head.svg": { + "bytesInOutput": 2514 + } + }, + "bytes": 2514, + "ng-component": true + }, + "ngx-features-viewer.component-BEHVKIGG.css": { + "imports": [ + { + "path": "media/bootstrap-icons-X6UQXWUS.woff2", + "kind": "url-token" + }, + { + "path": "media/bootstrap-icons-OCU552PF.woff", + "kind": "url-token" + }, + { + "path": "media/dssp-helix-OTIKI7SN.svg", + "kind": "url-token" + }, + { + "path": "media/dssp-helix-OTIKI7SN.svg", + "kind": "url-token" + }, + { + "path": "media/dssp-strand-tail-PA4GJMUI.svg", + "kind": "url-token" + }, + { + "path": "media/dssp-strand-tail-PA4GJMUI.svg", + "kind": "url-token" + }, + { + "path": "media/dssp-strand-head-QWRJLFK7.svg", + "kind": "url-token" + }, + { + "path": "media/dssp-strand-head-QWRJLFK7.svg", + "kind": "url-token" + } + ], + "inputs": { + "projects/ngx-features-viewer/src/lib/ngx-features-viewer.component.scss": { + "bytesInOutput": 86568 + } + }, + "bytes": 86772, + "ng-component": true + }, + "ngx-structure-viewer.component-P5H3IJPL.css": { + "imports": [ + { + "path": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAMAAACzvE1FAAAADFBMVEUzMzMzMzMzMzMzMzMKAG/3AAAAA3RSTlMAf4C/aSLHAAAAPElEQVR42q3NMQ4AIAgEQTn//2cLdRKppSGzBYwzVXvznNWs8C58CiussPJj8h6NwgorrKRdTvuV9v16Afn0AYFOB7aYAAAAAElFTkSuQmCC", + "kind": "url-token", + "external": true + }, + { + "path": "data:image/png;base64,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", + "kind": "url-token", + "external": true + } + ], + "inputs": { + "projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.scss": { + "bytesInOutput": 81005 + } + }, + "bytes": 81006, + "ng-component": true + }, + "polyfills-6EAL64PA.js": { + "imports": [], + "exports": [], + "entryPoint": "angular:polyfills:angular:polyfills", + "inputs": { + "node_modules/zone.js/fesm2015/zone.js": { + "bytesInOutput": 34234 + }, + "angular:polyfills:angular:polyfills": { + "bytesInOutput": 0 + } + }, + "bytes": 34235 + }, + "styles-BGPFTTQU.css": { + "imports": [ + { + "path": "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e", + "kind": "url-token", + "external": true + }, + { + "path": "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e", + "kind": "url-token", + "external": true + }, + { + "path": "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e", + "kind": "url-token", + "external": true + }, + { + "path": "media/bootstrap-icons-X6UQXWUS.woff2?dd67030699838ea613ee6dbda90effa6", + "kind": "url-token" + }, + { + "path": "media/bootstrap-icons-OCU552PF.woff?dd67030699838ea613ee6dbda90effa6", + "kind": "url-token" + } + ], + "entryPoint": "angular:styles/global:styles", + "inputs": { + "projects/demo-showcase/src/styles.scss": { + "bytesInOutput": 207145 + }, + "angular:styles/global:styles": { + "bytesInOutput": 0 + } + }, + "bytes": 207163 + }, + "scripts-FR7HA4WI.js": { + "imports": [], + "exports": [], + "entryPoint": "angular:script/global:scripts.js", + "inputs": { + "angular:script/global:scripts.js": { + "bytesInOutput": 80552 + } + }, + "bytes": 80553 + } + } +} \ No newline at end of file diff --git a/docs/styles-BGPFTTQU.css b/docs/styles-BGPFTTQU.css new file mode 100644 index 0000000..ee770ea --- /dev/null +++ b/docs/styles-BGPFTTQU.css @@ -0,0 +1 @@ +@charset "UTF-8";:root,[data-bs-theme=light]{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #0d6efd;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-primary-rgb: 13, 110, 253;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 25, 135, 84;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 255, 193, 7;--bs-danger-rgb: 220, 53, 69;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 33, 37, 41;--bs-primary-text-emphasis: #052c65;--bs-secondary-text-emphasis: #2b2f32;--bs-success-text-emphasis: #0a3622;--bs-info-text-emphasis: #055160;--bs-warning-text-emphasis: #664d03;--bs-danger-text-emphasis: #58151c;--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: #cfe2ff;--bs-secondary-bg-subtle: #e2e3e5;--bs-success-bg-subtle: #d1e7dd;--bs-info-bg-subtle: #cff4fc;--bs-warning-bg-subtle: #fff3cd;--bs-danger-bg-subtle: #f8d7da;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #9ec5fe;--bs-secondary-border-subtle: #c4c8cb;--bs-success-border-subtle: #a3cfbb;--bs-info-border-subtle: #9eeaf9;--bs-warning-border-subtle: #ffe69c;--bs-danger-border-subtle: #f1aeb5;--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-color-rgb: 33, 37, 41;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(33, 37, 41, .75);--bs-secondary-color-rgb: 33, 37, 41;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(33, 37, 41, .5);--bs-tertiary-color-rgb: 33, 37, 41;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #0d6efd;--bs-link-color-rgb: 13, 110, 253;--bs-link-decoration: underline;--bs-link-hover-color: #0a58ca;--bs-link-hover-color-rgb: 10, 88, 202;--bs-code-color: #d63384;--bs-highlight-color: #212529;--bs-highlight-bg: #fff3cd;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, .175);--bs-border-radius: .375rem;--bs-border-radius-sm: .25rem;--bs-border-radius-lg: .5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-box-shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, .175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, .075);--bs-focus-ring-width: .25rem;--bs-focus-ring-opacity: .25;--bs-focus-ring-color: rgba(13, 110, 253, .25);--bs-form-valid-color: #198754;--bs-form-valid-border-color: #198754;--bs-form-invalid-color: #dc3545;--bs-form-invalid-border-color: #dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #212529;--bs-body-bg-rgb: 33, 37, 41;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, .75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(222, 226, 230, .5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: #2b3035;--bs-tertiary-bg-rgb: 43, 48, 53;--bs-primary-text-emphasis: #6ea8fe;--bs-secondary-text-emphasis: #a7acb1;--bs-success-text-emphasis: #75b798;--bs-info-text-emphasis: #6edff6;--bs-warning-text-emphasis: #ffda6a;--bs-danger-text-emphasis: #ea868f;--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: #031633;--bs-secondary-bg-subtle: #161719;--bs-success-bg-subtle: #051b11;--bs-info-bg-subtle: #032830;--bs-warning-bg-subtle: #332701;--bs-danger-bg-subtle: #2c0b0e;--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: #084298;--bs-secondary-border-subtle: #41464b;--bs-success-border-subtle: #0f5132;--bs-info-border-subtle: #087990;--bs-warning-border-subtle: #997404;--bs-danger-border-subtle: #842029;--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: #6ea8fe;--bs-link-hover-color: #8bb9fe;--bs-link-color-rgb: 110, 168, 254;--bs-link-hover-color-rgb: 139, 185, 254;--bs-code-color: #e685b5;--bs-highlight-color: #dee2e6;--bs-highlight-bg: #664d03;--bs-border-color: #495057;--bs-border-color-translucent: rgba(255, 255, 255, .15);--bs-form-valid-color: #75b798;--bs-form-valid-border-color: #75b798;--bs-form-invalid-color: #ea868f;--bs-form-invalid-border-color: #ea868f}*,*:before,*:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media (min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.clearfix:after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity, 1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity, 1))!important}.link-primary:hover,.link-primary:focus{color:RGBA(10,88,202,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity, 1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity, 1))!important}.link-secondary:hover,.link-secondary:focus{color:RGBA(86,94,100,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity, 1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity, 1))!important}.link-success:hover,.link-success:focus{color:RGBA(20,108,67,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity, 1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity, 1))!important}.link-info:hover,.link-info:focus{color:RGBA(61,213,243,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity, 1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity, 1))!important}.link-warning:hover,.link-warning:focus{color:RGBA(255,205,57,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity, 1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity, 1))!important}.link-danger:hover,.link-danger:focus{color:RGBA(176,42,55,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity, 1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity, 1))!important}.link-light:hover,.link-light:focus{color:RGBA(249,250,251,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity, 1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity, 1))!important}.link-dark:hover,.link-dark:focus{color:RGBA(26,30,33,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity, 1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity, 1))!important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity, .75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity, .75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, .5));text-underline-offset:.25em;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute!important}.stretched-link:after{position:absolute;inset:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: .5rem;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), .65);--bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), .8);--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), .3);--bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y: .3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x: .5rem;--bs-navbar-toggler-padding-y: .25rem;--bs-navbar-toggler-padding-x: .75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), .15);--bs-navbar-toggler-border-radius: var(--bs-border-radius);--bs-navbar-toggler-focus-width: .25rem;--bs-navbar-toggler-transition: box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: rgba(255, 255, 255, .55);--bs-navbar-hover-color: rgba(255, 255, 255, .75);--bs-navbar-disabled-color: rgba(255, 255, 255, .25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255, 255, 255, .1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: .125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.badge{--bs-badge-padding-x: .65em;--bs-badge-padding-y: .35em;--bs-badge-font-size: .75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: .5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y: .5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), .03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: .75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;inset:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: .5rem;--bs-dropdown-spacer: .125rem;--bs-dropdown-font-size: 1rem;--bs-dropdown-color: var(--bs-body-color);--bs-dropdown-bg: var(--bs-body-bg);--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: var(--bs-border-radius);--bs-dropdown-border-width: var(--bs-border-width);--bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: .5rem;--bs-dropdown-box-shadow: var(--bs-box-shadow);--bs-dropdown-link-color: var(--bs-body-color);--bs-dropdown-link-hover-color: var(--bs-body-color);--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: var(--bs-tertiary-color);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: .25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: .5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, .15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,#000c,#000 95%);mask-image:linear-gradient(130deg,#000 55%,#000c,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{to{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{object-fit:contain!important}.object-fit-cover{object-fit:cover!important}.object-fit-fill{object-fit:fill!important}.object-fit-scale{object-fit:scale-down!important}.object-fit-none{object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity: .1}.border-opacity-25{--bs-border-opacity: .25}.border-opacity-50{--bs-border-opacity: .5}.border-opacity-75{--bs-border-opacity: .75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{column-gap:0!important}.column-gap-1{column-gap:.25rem!important}.column-gap-2{column-gap:.5rem!important}.column-gap-3{column-gap:1rem!important}.column-gap-4{column-gap:1.5rem!important}.column-gap-5{column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity: 1;color:#00000080!important}.text-white-50{--bs-text-opacity: 1;color:#ffffff80!important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity: 1;color:inherit!important}.text-opacity-25{--bs-text-opacity: .25}.text-opacity-50{--bs-text-opacity: .5}.text-opacity-75{--bs-text-opacity: .75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10,.link-opacity-10-hover:hover{--bs-link-opacity: .1}.link-opacity-25,.link-opacity-25-hover:hover{--bs-link-opacity: .25}.link-opacity-50,.link-opacity-50-hover:hover{--bs-link-opacity: .5}.link-opacity-75,.link-opacity-75-hover:hover{--bs-link-opacity: .75}.link-opacity-100,.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity, 1))!important}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: .1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: .25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: .5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: .75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity: 1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity: .1}.bg-opacity-25{--bs-bg-opacity: .25}.bg-opacity-50{--bs-bg-opacity: .5}.bg-opacity-75{--bs-bg-opacity: .75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width: 576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{object-fit:contain!important}.object-fit-sm-cover{object-fit:cover!important}.object-fit-sm-fill{object-fit:fill!important}.object-fit-sm-scale{object-fit:scale-down!important}.object-fit-sm-none{object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{column-gap:0!important}.column-gap-sm-1{column-gap:.25rem!important}.column-gap-sm-2{column-gap:.5rem!important}.column-gap-sm-3{column-gap:1rem!important}.column-gap-sm-4{column-gap:1.5rem!important}.column-gap-sm-5{column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{object-fit:contain!important}.object-fit-md-cover{object-fit:cover!important}.object-fit-md-fill{object-fit:fill!important}.object-fit-md-scale{object-fit:scale-down!important}.object-fit-md-none{object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{column-gap:0!important}.column-gap-md-1{column-gap:.25rem!important}.column-gap-md-2{column-gap:.5rem!important}.column-gap-md-3{column-gap:1rem!important}.column-gap-md-4{column-gap:1.5rem!important}.column-gap-md-5{column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{object-fit:contain!important}.object-fit-lg-cover{object-fit:cover!important}.object-fit-lg-fill{object-fit:fill!important}.object-fit-lg-scale{object-fit:scale-down!important}.object-fit-lg-none{object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{column-gap:0!important}.column-gap-lg-1{column-gap:.25rem!important}.column-gap-lg-2{column-gap:.5rem!important}.column-gap-lg-3{column-gap:1rem!important}.column-gap-lg-4{column-gap:1.5rem!important}.column-gap-lg-5{column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{object-fit:contain!important}.object-fit-xl-cover{object-fit:cover!important}.object-fit-xl-fill{object-fit:fill!important}.object-fit-xl-scale{object-fit:scale-down!important}.object-fit-xl-none{object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{column-gap:0!important}.column-gap-xl-1{column-gap:.25rem!important}.column-gap-xl-2{column-gap:.5rem!important}.column-gap-xl-3{column-gap:1rem!important}.column-gap-xl-4{column-gap:1.5rem!important}.column-gap-xl-5{column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width: 1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{object-fit:contain!important}.object-fit-xxl-cover{object-fit:cover!important}.object-fit-xxl-fill{object-fit:fill!important}.object-fit-xxl-scale{object-fit:scale-down!important}.object-fit-xxl-none{object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{column-gap:0!important}.column-gap-xxl-1{column-gap:.25rem!important}.column-gap-xxl-2{column-gap:.5rem!important}.column-gap-xxl-3{column-gap:1rem!important}.column-gap-xxl-4{column-gap:1.5rem!important}.column-gap-xxl-5{column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width: 1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}@font-face{font-display:block;font-family:bootstrap-icons;src:url("./media/bootstrap-icons-X6UQXWUS.woff2?dd67030699838ea613ee6dbda90effa6") format("woff2"),url("./media/bootstrap-icons-OCU552PF.woff?dd67030699838ea613ee6dbda90effa6") format("woff")}.bi:before,[class^=bi-]:before,[class*=" bi-"]:before{display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-weight:400!important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bi-123:before{content:"\f67f"}.bi-alarm-fill:before{content:"\f101"}.bi-alarm:before{content:"\f102"}.bi-align-bottom:before{content:"\f103"}.bi-align-center:before{content:"\f104"}.bi-align-end:before{content:"\f105"}.bi-align-middle:before{content:"\f106"}.bi-align-start:before{content:"\f107"}.bi-align-top:before{content:"\f108"}.bi-alt:before{content:"\f109"}.bi-app-indicator:before{content:"\f10a"}.bi-app:before{content:"\f10b"}.bi-archive-fill:before{content:"\f10c"}.bi-archive:before{content:"\f10d"}.bi-arrow-90deg-down:before{content:"\f10e"}.bi-arrow-90deg-left:before{content:"\f10f"}.bi-arrow-90deg-right:before{content:"\f110"}.bi-arrow-90deg-up:before{content:"\f111"}.bi-arrow-bar-down:before{content:"\f112"}.bi-arrow-bar-left:before{content:"\f113"}.bi-arrow-bar-right:before{content:"\f114"}.bi-arrow-bar-up:before{content:"\f115"}.bi-arrow-clockwise:before{content:"\f116"}.bi-arrow-counterclockwise:before{content:"\f117"}.bi-arrow-down-circle-fill:before{content:"\f118"}.bi-arrow-down-circle:before{content:"\f119"}.bi-arrow-down-left-circle-fill:before{content:"\f11a"}.bi-arrow-down-left-circle:before{content:"\f11b"}.bi-arrow-down-left-square-fill:before{content:"\f11c"}.bi-arrow-down-left-square:before{content:"\f11d"}.bi-arrow-down-left:before{content:"\f11e"}.bi-arrow-down-right-circle-fill:before{content:"\f11f"}.bi-arrow-down-right-circle:before{content:"\f120"}.bi-arrow-down-right-square-fill:before{content:"\f121"}.bi-arrow-down-right-square:before{content:"\f122"}.bi-arrow-down-right:before{content:"\f123"}.bi-arrow-down-short:before{content:"\f124"}.bi-arrow-down-square-fill:before{content:"\f125"}.bi-arrow-down-square:before{content:"\f126"}.bi-arrow-down-up:before{content:"\f127"}.bi-arrow-down:before{content:"\f128"}.bi-arrow-left-circle-fill:before{content:"\f129"}.bi-arrow-left-circle:before{content:"\f12a"}.bi-arrow-left-right:before{content:"\f12b"}.bi-arrow-left-short:before{content:"\f12c"}.bi-arrow-left-square-fill:before{content:"\f12d"}.bi-arrow-left-square:before{content:"\f12e"}.bi-arrow-left:before{content:"\f12f"}.bi-arrow-repeat:before{content:"\f130"}.bi-arrow-return-left:before{content:"\f131"}.bi-arrow-return-right:before{content:"\f132"}.bi-arrow-right-circle-fill:before{content:"\f133"}.bi-arrow-right-circle:before{content:"\f134"}.bi-arrow-right-short:before{content:"\f135"}.bi-arrow-right-square-fill:before{content:"\f136"}.bi-arrow-right-square:before{content:"\f137"}.bi-arrow-right:before{content:"\f138"}.bi-arrow-up-circle-fill:before{content:"\f139"}.bi-arrow-up-circle:before{content:"\f13a"}.bi-arrow-up-left-circle-fill:before{content:"\f13b"}.bi-arrow-up-left-circle:before{content:"\f13c"}.bi-arrow-up-left-square-fill:before{content:"\f13d"}.bi-arrow-up-left-square:before{content:"\f13e"}.bi-arrow-up-left:before{content:"\f13f"}.bi-arrow-up-right-circle-fill:before{content:"\f140"}.bi-arrow-up-right-circle:before{content:"\f141"}.bi-arrow-up-right-square-fill:before{content:"\f142"}.bi-arrow-up-right-square:before{content:"\f143"}.bi-arrow-up-right:before{content:"\f144"}.bi-arrow-up-short:before{content:"\f145"}.bi-arrow-up-square-fill:before{content:"\f146"}.bi-arrow-up-square:before{content:"\f147"}.bi-arrow-up:before{content:"\f148"}.bi-arrows-angle-contract:before{content:"\f149"}.bi-arrows-angle-expand:before{content:"\f14a"}.bi-arrows-collapse:before{content:"\f14b"}.bi-arrows-expand:before{content:"\f14c"}.bi-arrows-fullscreen:before{content:"\f14d"}.bi-arrows-move:before{content:"\f14e"}.bi-aspect-ratio-fill:before{content:"\f14f"}.bi-aspect-ratio:before{content:"\f150"}.bi-asterisk:before{content:"\f151"}.bi-at:before{content:"\f152"}.bi-award-fill:before{content:"\f153"}.bi-award:before{content:"\f154"}.bi-back:before{content:"\f155"}.bi-backspace-fill:before{content:"\f156"}.bi-backspace-reverse-fill:before{content:"\f157"}.bi-backspace-reverse:before{content:"\f158"}.bi-backspace:before{content:"\f159"}.bi-badge-3d-fill:before{content:"\f15a"}.bi-badge-3d:before{content:"\f15b"}.bi-badge-4k-fill:before{content:"\f15c"}.bi-badge-4k:before{content:"\f15d"}.bi-badge-8k-fill:before{content:"\f15e"}.bi-badge-8k:before{content:"\f15f"}.bi-badge-ad-fill:before{content:"\f160"}.bi-badge-ad:before{content:"\f161"}.bi-badge-ar-fill:before{content:"\f162"}.bi-badge-ar:before{content:"\f163"}.bi-badge-cc-fill:before{content:"\f164"}.bi-badge-cc:before{content:"\f165"}.bi-badge-hd-fill:before{content:"\f166"}.bi-badge-hd:before{content:"\f167"}.bi-badge-tm-fill:before{content:"\f168"}.bi-badge-tm:before{content:"\f169"}.bi-badge-vo-fill:before{content:"\f16a"}.bi-badge-vo:before{content:"\f16b"}.bi-badge-vr-fill:before{content:"\f16c"}.bi-badge-vr:before{content:"\f16d"}.bi-badge-wc-fill:before{content:"\f16e"}.bi-badge-wc:before{content:"\f16f"}.bi-bag-check-fill:before{content:"\f170"}.bi-bag-check:before{content:"\f171"}.bi-bag-dash-fill:before{content:"\f172"}.bi-bag-dash:before{content:"\f173"}.bi-bag-fill:before{content:"\f174"}.bi-bag-plus-fill:before{content:"\f175"}.bi-bag-plus:before{content:"\f176"}.bi-bag-x-fill:before{content:"\f177"}.bi-bag-x:before{content:"\f178"}.bi-bag:before{content:"\f179"}.bi-bar-chart-fill:before{content:"\f17a"}.bi-bar-chart-line-fill:before{content:"\f17b"}.bi-bar-chart-line:before{content:"\f17c"}.bi-bar-chart-steps:before{content:"\f17d"}.bi-bar-chart:before{content:"\f17e"}.bi-basket-fill:before{content:"\f17f"}.bi-basket:before{content:"\f180"}.bi-basket2-fill:before{content:"\f181"}.bi-basket2:before{content:"\f182"}.bi-basket3-fill:before{content:"\f183"}.bi-basket3:before{content:"\f184"}.bi-battery-charging:before{content:"\f185"}.bi-battery-full:before{content:"\f186"}.bi-battery-half:before{content:"\f187"}.bi-battery:before{content:"\f188"}.bi-bell-fill:before{content:"\f189"}.bi-bell:before{content:"\f18a"}.bi-bezier:before{content:"\f18b"}.bi-bezier2:before{content:"\f18c"}.bi-bicycle:before{content:"\f18d"}.bi-binoculars-fill:before{content:"\f18e"}.bi-binoculars:before{content:"\f18f"}.bi-blockquote-left:before{content:"\f190"}.bi-blockquote-right:before{content:"\f191"}.bi-book-fill:before{content:"\f192"}.bi-book-half:before{content:"\f193"}.bi-book:before{content:"\f194"}.bi-bookmark-check-fill:before{content:"\f195"}.bi-bookmark-check:before{content:"\f196"}.bi-bookmark-dash-fill:before{content:"\f197"}.bi-bookmark-dash:before{content:"\f198"}.bi-bookmark-fill:before{content:"\f199"}.bi-bookmark-heart-fill:before{content:"\f19a"}.bi-bookmark-heart:before{content:"\f19b"}.bi-bookmark-plus-fill:before{content:"\f19c"}.bi-bookmark-plus:before{content:"\f19d"}.bi-bookmark-star-fill:before{content:"\f19e"}.bi-bookmark-star:before{content:"\f19f"}.bi-bookmark-x-fill:before{content:"\f1a0"}.bi-bookmark-x:before{content:"\f1a1"}.bi-bookmark:before{content:"\f1a2"}.bi-bookmarks-fill:before{content:"\f1a3"}.bi-bookmarks:before{content:"\f1a4"}.bi-bookshelf:before{content:"\f1a5"}.bi-bootstrap-fill:before{content:"\f1a6"}.bi-bootstrap-reboot:before{content:"\f1a7"}.bi-bootstrap:before{content:"\f1a8"}.bi-border-all:before{content:"\f1a9"}.bi-border-bottom:before{content:"\f1aa"}.bi-border-center:before{content:"\f1ab"}.bi-border-inner:before{content:"\f1ac"}.bi-border-left:before{content:"\f1ad"}.bi-border-middle:before{content:"\f1ae"}.bi-border-outer:before{content:"\f1af"}.bi-border-right:before{content:"\f1b0"}.bi-border-style:before{content:"\f1b1"}.bi-border-top:before{content:"\f1b2"}.bi-border-width:before{content:"\f1b3"}.bi-border:before{content:"\f1b4"}.bi-bounding-box-circles:before{content:"\f1b5"}.bi-bounding-box:before{content:"\f1b6"}.bi-box-arrow-down-left:before{content:"\f1b7"}.bi-box-arrow-down-right:before{content:"\f1b8"}.bi-box-arrow-down:before{content:"\f1b9"}.bi-box-arrow-in-down-left:before{content:"\f1ba"}.bi-box-arrow-in-down-right:before{content:"\f1bb"}.bi-box-arrow-in-down:before{content:"\f1bc"}.bi-box-arrow-in-left:before{content:"\f1bd"}.bi-box-arrow-in-right:before{content:"\f1be"}.bi-box-arrow-in-up-left:before{content:"\f1bf"}.bi-box-arrow-in-up-right:before{content:"\f1c0"}.bi-box-arrow-in-up:before{content:"\f1c1"}.bi-box-arrow-left:before{content:"\f1c2"}.bi-box-arrow-right:before{content:"\f1c3"}.bi-box-arrow-up-left:before{content:"\f1c4"}.bi-box-arrow-up-right:before{content:"\f1c5"}.bi-box-arrow-up:before{content:"\f1c6"}.bi-box-seam:before{content:"\f1c7"}.bi-box:before{content:"\f1c8"}.bi-braces:before{content:"\f1c9"}.bi-bricks:before{content:"\f1ca"}.bi-briefcase-fill:before{content:"\f1cb"}.bi-briefcase:before{content:"\f1cc"}.bi-brightness-alt-high-fill:before{content:"\f1cd"}.bi-brightness-alt-high:before{content:"\f1ce"}.bi-brightness-alt-low-fill:before{content:"\f1cf"}.bi-brightness-alt-low:before{content:"\f1d0"}.bi-brightness-high-fill:before{content:"\f1d1"}.bi-brightness-high:before{content:"\f1d2"}.bi-brightness-low-fill:before{content:"\f1d3"}.bi-brightness-low:before{content:"\f1d4"}.bi-broadcast-pin:before{content:"\f1d5"}.bi-broadcast:before{content:"\f1d6"}.bi-brush-fill:before{content:"\f1d7"}.bi-brush:before{content:"\f1d8"}.bi-bucket-fill:before{content:"\f1d9"}.bi-bucket:before{content:"\f1da"}.bi-bug-fill:before{content:"\f1db"}.bi-bug:before{content:"\f1dc"}.bi-building:before{content:"\f1dd"}.bi-bullseye:before{content:"\f1de"}.bi-calculator-fill:before{content:"\f1df"}.bi-calculator:before{content:"\f1e0"}.bi-calendar-check-fill:before{content:"\f1e1"}.bi-calendar-check:before{content:"\f1e2"}.bi-calendar-date-fill:before{content:"\f1e3"}.bi-calendar-date:before{content:"\f1e4"}.bi-calendar-day-fill:before{content:"\f1e5"}.bi-calendar-day:before{content:"\f1e6"}.bi-calendar-event-fill:before{content:"\f1e7"}.bi-calendar-event:before{content:"\f1e8"}.bi-calendar-fill:before{content:"\f1e9"}.bi-calendar-minus-fill:before{content:"\f1ea"}.bi-calendar-minus:before{content:"\f1eb"}.bi-calendar-month-fill:before{content:"\f1ec"}.bi-calendar-month:before{content:"\f1ed"}.bi-calendar-plus-fill:before{content:"\f1ee"}.bi-calendar-plus:before{content:"\f1ef"}.bi-calendar-range-fill:before{content:"\f1f0"}.bi-calendar-range:before{content:"\f1f1"}.bi-calendar-week-fill:before{content:"\f1f2"}.bi-calendar-week:before{content:"\f1f3"}.bi-calendar-x-fill:before{content:"\f1f4"}.bi-calendar-x:before{content:"\f1f5"}.bi-calendar:before{content:"\f1f6"}.bi-calendar2-check-fill:before{content:"\f1f7"}.bi-calendar2-check:before{content:"\f1f8"}.bi-calendar2-date-fill:before{content:"\f1f9"}.bi-calendar2-date:before{content:"\f1fa"}.bi-calendar2-day-fill:before{content:"\f1fb"}.bi-calendar2-day:before{content:"\f1fc"}.bi-calendar2-event-fill:before{content:"\f1fd"}.bi-calendar2-event:before{content:"\f1fe"}.bi-calendar2-fill:before{content:"\f1ff"}.bi-calendar2-minus-fill:before{content:"\f200"}.bi-calendar2-minus:before{content:"\f201"}.bi-calendar2-month-fill:before{content:"\f202"}.bi-calendar2-month:before{content:"\f203"}.bi-calendar2-plus-fill:before{content:"\f204"}.bi-calendar2-plus:before{content:"\f205"}.bi-calendar2-range-fill:before{content:"\f206"}.bi-calendar2-range:before{content:"\f207"}.bi-calendar2-week-fill:before{content:"\f208"}.bi-calendar2-week:before{content:"\f209"}.bi-calendar2-x-fill:before{content:"\f20a"}.bi-calendar2-x:before{content:"\f20b"}.bi-calendar2:before{content:"\f20c"}.bi-calendar3-event-fill:before{content:"\f20d"}.bi-calendar3-event:before{content:"\f20e"}.bi-calendar3-fill:before{content:"\f20f"}.bi-calendar3-range-fill:before{content:"\f210"}.bi-calendar3-range:before{content:"\f211"}.bi-calendar3-week-fill:before{content:"\f212"}.bi-calendar3-week:before{content:"\f213"}.bi-calendar3:before{content:"\f214"}.bi-calendar4-event:before{content:"\f215"}.bi-calendar4-range:before{content:"\f216"}.bi-calendar4-week:before{content:"\f217"}.bi-calendar4:before{content:"\f218"}.bi-camera-fill:before{content:"\f219"}.bi-camera-reels-fill:before{content:"\f21a"}.bi-camera-reels:before{content:"\f21b"}.bi-camera-video-fill:before{content:"\f21c"}.bi-camera-video-off-fill:before{content:"\f21d"}.bi-camera-video-off:before{content:"\f21e"}.bi-camera-video:before{content:"\f21f"}.bi-camera:before{content:"\f220"}.bi-camera2:before{content:"\f221"}.bi-capslock-fill:before{content:"\f222"}.bi-capslock:before{content:"\f223"}.bi-card-checklist:before{content:"\f224"}.bi-card-heading:before{content:"\f225"}.bi-card-image:before{content:"\f226"}.bi-card-list:before{content:"\f227"}.bi-card-text:before{content:"\f228"}.bi-caret-down-fill:before{content:"\f229"}.bi-caret-down-square-fill:before{content:"\f22a"}.bi-caret-down-square:before{content:"\f22b"}.bi-caret-down:before{content:"\f22c"}.bi-caret-left-fill:before{content:"\f22d"}.bi-caret-left-square-fill:before{content:"\f22e"}.bi-caret-left-square:before{content:"\f22f"}.bi-caret-left:before{content:"\f230"}.bi-caret-right-fill:before{content:"\f231"}.bi-caret-right-square-fill:before{content:"\f232"}.bi-caret-right-square:before{content:"\f233"}.bi-caret-right:before{content:"\f234"}.bi-caret-up-fill:before{content:"\f235"}.bi-caret-up-square-fill:before{content:"\f236"}.bi-caret-up-square:before{content:"\f237"}.bi-caret-up:before{content:"\f238"}.bi-cart-check-fill:before{content:"\f239"}.bi-cart-check:before{content:"\f23a"}.bi-cart-dash-fill:before{content:"\f23b"}.bi-cart-dash:before{content:"\f23c"}.bi-cart-fill:before{content:"\f23d"}.bi-cart-plus-fill:before{content:"\f23e"}.bi-cart-plus:before{content:"\f23f"}.bi-cart-x-fill:before{content:"\f240"}.bi-cart-x:before{content:"\f241"}.bi-cart:before{content:"\f242"}.bi-cart2:before{content:"\f243"}.bi-cart3:before{content:"\f244"}.bi-cart4:before{content:"\f245"}.bi-cash-stack:before{content:"\f246"}.bi-cash:before{content:"\f247"}.bi-cast:before{content:"\f248"}.bi-chat-dots-fill:before{content:"\f249"}.bi-chat-dots:before{content:"\f24a"}.bi-chat-fill:before{content:"\f24b"}.bi-chat-left-dots-fill:before{content:"\f24c"}.bi-chat-left-dots:before{content:"\f24d"}.bi-chat-left-fill:before{content:"\f24e"}.bi-chat-left-quote-fill:before{content:"\f24f"}.bi-chat-left-quote:before{content:"\f250"}.bi-chat-left-text-fill:before{content:"\f251"}.bi-chat-left-text:before{content:"\f252"}.bi-chat-left:before{content:"\f253"}.bi-chat-quote-fill:before{content:"\f254"}.bi-chat-quote:before{content:"\f255"}.bi-chat-right-dots-fill:before{content:"\f256"}.bi-chat-right-dots:before{content:"\f257"}.bi-chat-right-fill:before{content:"\f258"}.bi-chat-right-quote-fill:before{content:"\f259"}.bi-chat-right-quote:before{content:"\f25a"}.bi-chat-right-text-fill:before{content:"\f25b"}.bi-chat-right-text:before{content:"\f25c"}.bi-chat-right:before{content:"\f25d"}.bi-chat-square-dots-fill:before{content:"\f25e"}.bi-chat-square-dots:before{content:"\f25f"}.bi-chat-square-fill:before{content:"\f260"}.bi-chat-square-quote-fill:before{content:"\f261"}.bi-chat-square-quote:before{content:"\f262"}.bi-chat-square-text-fill:before{content:"\f263"}.bi-chat-square-text:before{content:"\f264"}.bi-chat-square:before{content:"\f265"}.bi-chat-text-fill:before{content:"\f266"}.bi-chat-text:before{content:"\f267"}.bi-chat:before{content:"\f268"}.bi-check-all:before{content:"\f269"}.bi-check-circle-fill:before{content:"\f26a"}.bi-check-circle:before{content:"\f26b"}.bi-check-square-fill:before{content:"\f26c"}.bi-check-square:before{content:"\f26d"}.bi-check:before{content:"\f26e"}.bi-check2-all:before{content:"\f26f"}.bi-check2-circle:before{content:"\f270"}.bi-check2-square:before{content:"\f271"}.bi-check2:before{content:"\f272"}.bi-chevron-bar-contract:before{content:"\f273"}.bi-chevron-bar-down:before{content:"\f274"}.bi-chevron-bar-expand:before{content:"\f275"}.bi-chevron-bar-left:before{content:"\f276"}.bi-chevron-bar-right:before{content:"\f277"}.bi-chevron-bar-up:before{content:"\f278"}.bi-chevron-compact-down:before{content:"\f279"}.bi-chevron-compact-left:before{content:"\f27a"}.bi-chevron-compact-right:before{content:"\f27b"}.bi-chevron-compact-up:before{content:"\f27c"}.bi-chevron-contract:before{content:"\f27d"}.bi-chevron-double-down:before{content:"\f27e"}.bi-chevron-double-left:before{content:"\f27f"}.bi-chevron-double-right:before{content:"\f280"}.bi-chevron-double-up:before{content:"\f281"}.bi-chevron-down:before{content:"\f282"}.bi-chevron-expand:before{content:"\f283"}.bi-chevron-left:before{content:"\f284"}.bi-chevron-right:before{content:"\f285"}.bi-chevron-up:before{content:"\f286"}.bi-circle-fill:before{content:"\f287"}.bi-circle-half:before{content:"\f288"}.bi-circle-square:before{content:"\f289"}.bi-circle:before{content:"\f28a"}.bi-clipboard-check:before{content:"\f28b"}.bi-clipboard-data:before{content:"\f28c"}.bi-clipboard-minus:before{content:"\f28d"}.bi-clipboard-plus:before{content:"\f28e"}.bi-clipboard-x:before{content:"\f28f"}.bi-clipboard:before{content:"\f290"}.bi-clock-fill:before{content:"\f291"}.bi-clock-history:before{content:"\f292"}.bi-clock:before{content:"\f293"}.bi-cloud-arrow-down-fill:before{content:"\f294"}.bi-cloud-arrow-down:before{content:"\f295"}.bi-cloud-arrow-up-fill:before{content:"\f296"}.bi-cloud-arrow-up:before{content:"\f297"}.bi-cloud-check-fill:before{content:"\f298"}.bi-cloud-check:before{content:"\f299"}.bi-cloud-download-fill:before{content:"\f29a"}.bi-cloud-download:before{content:"\f29b"}.bi-cloud-drizzle-fill:before{content:"\f29c"}.bi-cloud-drizzle:before{content:"\f29d"}.bi-cloud-fill:before{content:"\f29e"}.bi-cloud-fog-fill:before{content:"\f29f"}.bi-cloud-fog:before{content:"\f2a0"}.bi-cloud-fog2-fill:before{content:"\f2a1"}.bi-cloud-fog2:before{content:"\f2a2"}.bi-cloud-hail-fill:before{content:"\f2a3"}.bi-cloud-hail:before{content:"\f2a4"}.bi-cloud-haze-fill:before{content:"\f2a6"}.bi-cloud-haze:before{content:"\f2a7"}.bi-cloud-haze2-fill:before{content:"\f2a8"}.bi-cloud-lightning-fill:before{content:"\f2a9"}.bi-cloud-lightning-rain-fill:before{content:"\f2aa"}.bi-cloud-lightning-rain:before{content:"\f2ab"}.bi-cloud-lightning:before{content:"\f2ac"}.bi-cloud-minus-fill:before{content:"\f2ad"}.bi-cloud-minus:before{content:"\f2ae"}.bi-cloud-moon-fill:before{content:"\f2af"}.bi-cloud-moon:before{content:"\f2b0"}.bi-cloud-plus-fill:before{content:"\f2b1"}.bi-cloud-plus:before{content:"\f2b2"}.bi-cloud-rain-fill:before{content:"\f2b3"}.bi-cloud-rain-heavy-fill:before{content:"\f2b4"}.bi-cloud-rain-heavy:before{content:"\f2b5"}.bi-cloud-rain:before{content:"\f2b6"}.bi-cloud-slash-fill:before{content:"\f2b7"}.bi-cloud-slash:before{content:"\f2b8"}.bi-cloud-sleet-fill:before{content:"\f2b9"}.bi-cloud-sleet:before{content:"\f2ba"}.bi-cloud-snow-fill:before{content:"\f2bb"}.bi-cloud-snow:before{content:"\f2bc"}.bi-cloud-sun-fill:before{content:"\f2bd"}.bi-cloud-sun:before{content:"\f2be"}.bi-cloud-upload-fill:before{content:"\f2bf"}.bi-cloud-upload:before{content:"\f2c0"}.bi-cloud:before{content:"\f2c1"}.bi-clouds-fill:before{content:"\f2c2"}.bi-clouds:before{content:"\f2c3"}.bi-cloudy-fill:before{content:"\f2c4"}.bi-cloudy:before{content:"\f2c5"}.bi-code-slash:before{content:"\f2c6"}.bi-code-square:before{content:"\f2c7"}.bi-code:before{content:"\f2c8"}.bi-collection-fill:before{content:"\f2c9"}.bi-collection-play-fill:before{content:"\f2ca"}.bi-collection-play:before{content:"\f2cb"}.bi-collection:before{content:"\f2cc"}.bi-columns-gap:before{content:"\f2cd"}.bi-columns:before{content:"\f2ce"}.bi-command:before{content:"\f2cf"}.bi-compass-fill:before{content:"\f2d0"}.bi-compass:before{content:"\f2d1"}.bi-cone-striped:before{content:"\f2d2"}.bi-cone:before{content:"\f2d3"}.bi-controller:before{content:"\f2d4"}.bi-cpu-fill:before{content:"\f2d5"}.bi-cpu:before{content:"\f2d6"}.bi-credit-card-2-back-fill:before{content:"\f2d7"}.bi-credit-card-2-back:before{content:"\f2d8"}.bi-credit-card-2-front-fill:before{content:"\f2d9"}.bi-credit-card-2-front:before{content:"\f2da"}.bi-credit-card-fill:before{content:"\f2db"}.bi-credit-card:before{content:"\f2dc"}.bi-crop:before{content:"\f2dd"}.bi-cup-fill:before{content:"\f2de"}.bi-cup-straw:before{content:"\f2df"}.bi-cup:before{content:"\f2e0"}.bi-cursor-fill:before{content:"\f2e1"}.bi-cursor-text:before{content:"\f2e2"}.bi-cursor:before{content:"\f2e3"}.bi-dash-circle-dotted:before{content:"\f2e4"}.bi-dash-circle-fill:before{content:"\f2e5"}.bi-dash-circle:before{content:"\f2e6"}.bi-dash-square-dotted:before{content:"\f2e7"}.bi-dash-square-fill:before{content:"\f2e8"}.bi-dash-square:before{content:"\f2e9"}.bi-dash:before{content:"\f2ea"}.bi-diagram-2-fill:before{content:"\f2eb"}.bi-diagram-2:before{content:"\f2ec"}.bi-diagram-3-fill:before{content:"\f2ed"}.bi-diagram-3:before{content:"\f2ee"}.bi-diamond-fill:before{content:"\f2ef"}.bi-diamond-half:before{content:"\f2f0"}.bi-diamond:before{content:"\f2f1"}.bi-dice-1-fill:before{content:"\f2f2"}.bi-dice-1:before{content:"\f2f3"}.bi-dice-2-fill:before{content:"\f2f4"}.bi-dice-2:before{content:"\f2f5"}.bi-dice-3-fill:before{content:"\f2f6"}.bi-dice-3:before{content:"\f2f7"}.bi-dice-4-fill:before{content:"\f2f8"}.bi-dice-4:before{content:"\f2f9"}.bi-dice-5-fill:before{content:"\f2fa"}.bi-dice-5:before{content:"\f2fb"}.bi-dice-6-fill:before{content:"\f2fc"}.bi-dice-6:before{content:"\f2fd"}.bi-disc-fill:before{content:"\f2fe"}.bi-disc:before{content:"\f2ff"}.bi-discord:before{content:"\f300"}.bi-display-fill:before{content:"\f301"}.bi-display:before{content:"\f302"}.bi-distribute-horizontal:before{content:"\f303"}.bi-distribute-vertical:before{content:"\f304"}.bi-door-closed-fill:before{content:"\f305"}.bi-door-closed:before{content:"\f306"}.bi-door-open-fill:before{content:"\f307"}.bi-door-open:before{content:"\f308"}.bi-dot:before{content:"\f309"}.bi-download:before{content:"\f30a"}.bi-droplet-fill:before{content:"\f30b"}.bi-droplet-half:before{content:"\f30c"}.bi-droplet:before{content:"\f30d"}.bi-earbuds:before{content:"\f30e"}.bi-easel-fill:before{content:"\f30f"}.bi-easel:before{content:"\f310"}.bi-egg-fill:before{content:"\f311"}.bi-egg-fried:before{content:"\f312"}.bi-egg:before{content:"\f313"}.bi-eject-fill:before{content:"\f314"}.bi-eject:before{content:"\f315"}.bi-emoji-angry-fill:before{content:"\f316"}.bi-emoji-angry:before{content:"\f317"}.bi-emoji-dizzy-fill:before{content:"\f318"}.bi-emoji-dizzy:before{content:"\f319"}.bi-emoji-expressionless-fill:before{content:"\f31a"}.bi-emoji-expressionless:before{content:"\f31b"}.bi-emoji-frown-fill:before{content:"\f31c"}.bi-emoji-frown:before{content:"\f31d"}.bi-emoji-heart-eyes-fill:before{content:"\f31e"}.bi-emoji-heart-eyes:before{content:"\f31f"}.bi-emoji-laughing-fill:before{content:"\f320"}.bi-emoji-laughing:before{content:"\f321"}.bi-emoji-neutral-fill:before{content:"\f322"}.bi-emoji-neutral:before{content:"\f323"}.bi-emoji-smile-fill:before{content:"\f324"}.bi-emoji-smile-upside-down-fill:before{content:"\f325"}.bi-emoji-smile-upside-down:before{content:"\f326"}.bi-emoji-smile:before{content:"\f327"}.bi-emoji-sunglasses-fill:before{content:"\f328"}.bi-emoji-sunglasses:before{content:"\f329"}.bi-emoji-wink-fill:before{content:"\f32a"}.bi-emoji-wink:before{content:"\f32b"}.bi-envelope-fill:before{content:"\f32c"}.bi-envelope-open-fill:before{content:"\f32d"}.bi-envelope-open:before{content:"\f32e"}.bi-envelope:before{content:"\f32f"}.bi-eraser-fill:before{content:"\f330"}.bi-eraser:before{content:"\f331"}.bi-exclamation-circle-fill:before{content:"\f332"}.bi-exclamation-circle:before{content:"\f333"}.bi-exclamation-diamond-fill:before{content:"\f334"}.bi-exclamation-diamond:before{content:"\f335"}.bi-exclamation-octagon-fill:before{content:"\f336"}.bi-exclamation-octagon:before{content:"\f337"}.bi-exclamation-square-fill:before{content:"\f338"}.bi-exclamation-square:before{content:"\f339"}.bi-exclamation-triangle-fill:before{content:"\f33a"}.bi-exclamation-triangle:before{content:"\f33b"}.bi-exclamation:before{content:"\f33c"}.bi-exclude:before{content:"\f33d"}.bi-eye-fill:before{content:"\f33e"}.bi-eye-slash-fill:before{content:"\f33f"}.bi-eye-slash:before{content:"\f340"}.bi-eye:before{content:"\f341"}.bi-eyedropper:before{content:"\f342"}.bi-eyeglasses:before{content:"\f343"}.bi-facebook:before{content:"\f344"}.bi-file-arrow-down-fill:before{content:"\f345"}.bi-file-arrow-down:before{content:"\f346"}.bi-file-arrow-up-fill:before{content:"\f347"}.bi-file-arrow-up:before{content:"\f348"}.bi-file-bar-graph-fill:before{content:"\f349"}.bi-file-bar-graph:before{content:"\f34a"}.bi-file-binary-fill:before{content:"\f34b"}.bi-file-binary:before{content:"\f34c"}.bi-file-break-fill:before{content:"\f34d"}.bi-file-break:before{content:"\f34e"}.bi-file-check-fill:before{content:"\f34f"}.bi-file-check:before{content:"\f350"}.bi-file-code-fill:before{content:"\f351"}.bi-file-code:before{content:"\f352"}.bi-file-diff-fill:before{content:"\f353"}.bi-file-diff:before{content:"\f354"}.bi-file-earmark-arrow-down-fill:before{content:"\f355"}.bi-file-earmark-arrow-down:before{content:"\f356"}.bi-file-earmark-arrow-up-fill:before{content:"\f357"}.bi-file-earmark-arrow-up:before{content:"\f358"}.bi-file-earmark-bar-graph-fill:before{content:"\f359"}.bi-file-earmark-bar-graph:before{content:"\f35a"}.bi-file-earmark-binary-fill:before{content:"\f35b"}.bi-file-earmark-binary:before{content:"\f35c"}.bi-file-earmark-break-fill:before{content:"\f35d"}.bi-file-earmark-break:before{content:"\f35e"}.bi-file-earmark-check-fill:before{content:"\f35f"}.bi-file-earmark-check:before{content:"\f360"}.bi-file-earmark-code-fill:before{content:"\f361"}.bi-file-earmark-code:before{content:"\f362"}.bi-file-earmark-diff-fill:before{content:"\f363"}.bi-file-earmark-diff:before{content:"\f364"}.bi-file-earmark-easel-fill:before{content:"\f365"}.bi-file-earmark-easel:before{content:"\f366"}.bi-file-earmark-excel-fill:before{content:"\f367"}.bi-file-earmark-excel:before{content:"\f368"}.bi-file-earmark-fill:before{content:"\f369"}.bi-file-earmark-font-fill:before{content:"\f36a"}.bi-file-earmark-font:before{content:"\f36b"}.bi-file-earmark-image-fill:before{content:"\f36c"}.bi-file-earmark-image:before{content:"\f36d"}.bi-file-earmark-lock-fill:before{content:"\f36e"}.bi-file-earmark-lock:before{content:"\f36f"}.bi-file-earmark-lock2-fill:before{content:"\f370"}.bi-file-earmark-lock2:before{content:"\f371"}.bi-file-earmark-medical-fill:before{content:"\f372"}.bi-file-earmark-medical:before{content:"\f373"}.bi-file-earmark-minus-fill:before{content:"\f374"}.bi-file-earmark-minus:before{content:"\f375"}.bi-file-earmark-music-fill:before{content:"\f376"}.bi-file-earmark-music:before{content:"\f377"}.bi-file-earmark-person-fill:before{content:"\f378"}.bi-file-earmark-person:before{content:"\f379"}.bi-file-earmark-play-fill:before{content:"\f37a"}.bi-file-earmark-play:before{content:"\f37b"}.bi-file-earmark-plus-fill:before{content:"\f37c"}.bi-file-earmark-plus:before{content:"\f37d"}.bi-file-earmark-post-fill:before{content:"\f37e"}.bi-file-earmark-post:before{content:"\f37f"}.bi-file-earmark-ppt-fill:before{content:"\f380"}.bi-file-earmark-ppt:before{content:"\f381"}.bi-file-earmark-richtext-fill:before{content:"\f382"}.bi-file-earmark-richtext:before{content:"\f383"}.bi-file-earmark-ruled-fill:before{content:"\f384"}.bi-file-earmark-ruled:before{content:"\f385"}.bi-file-earmark-slides-fill:before{content:"\f386"}.bi-file-earmark-slides:before{content:"\f387"}.bi-file-earmark-spreadsheet-fill:before{content:"\f388"}.bi-file-earmark-spreadsheet:before{content:"\f389"}.bi-file-earmark-text-fill:before{content:"\f38a"}.bi-file-earmark-text:before{content:"\f38b"}.bi-file-earmark-word-fill:before{content:"\f38c"}.bi-file-earmark-word:before{content:"\f38d"}.bi-file-earmark-x-fill:before{content:"\f38e"}.bi-file-earmark-x:before{content:"\f38f"}.bi-file-earmark-zip-fill:before{content:"\f390"}.bi-file-earmark-zip:before{content:"\f391"}.bi-file-earmark:before{content:"\f392"}.bi-file-easel-fill:before{content:"\f393"}.bi-file-easel:before{content:"\f394"}.bi-file-excel-fill:before{content:"\f395"}.bi-file-excel:before{content:"\f396"}.bi-file-fill:before{content:"\f397"}.bi-file-font-fill:before{content:"\f398"}.bi-file-font:before{content:"\f399"}.bi-file-image-fill:before{content:"\f39a"}.bi-file-image:before{content:"\f39b"}.bi-file-lock-fill:before{content:"\f39c"}.bi-file-lock:before{content:"\f39d"}.bi-file-lock2-fill:before{content:"\f39e"}.bi-file-lock2:before{content:"\f39f"}.bi-file-medical-fill:before{content:"\f3a0"}.bi-file-medical:before{content:"\f3a1"}.bi-file-minus-fill:before{content:"\f3a2"}.bi-file-minus:before{content:"\f3a3"}.bi-file-music-fill:before{content:"\f3a4"}.bi-file-music:before{content:"\f3a5"}.bi-file-person-fill:before{content:"\f3a6"}.bi-file-person:before{content:"\f3a7"}.bi-file-play-fill:before{content:"\f3a8"}.bi-file-play:before{content:"\f3a9"}.bi-file-plus-fill:before{content:"\f3aa"}.bi-file-plus:before{content:"\f3ab"}.bi-file-post-fill:before{content:"\f3ac"}.bi-file-post:before{content:"\f3ad"}.bi-file-ppt-fill:before{content:"\f3ae"}.bi-file-ppt:before{content:"\f3af"}.bi-file-richtext-fill:before{content:"\f3b0"}.bi-file-richtext:before{content:"\f3b1"}.bi-file-ruled-fill:before{content:"\f3b2"}.bi-file-ruled:before{content:"\f3b3"}.bi-file-slides-fill:before{content:"\f3b4"}.bi-file-slides:before{content:"\f3b5"}.bi-file-spreadsheet-fill:before{content:"\f3b6"}.bi-file-spreadsheet:before{content:"\f3b7"}.bi-file-text-fill:before{content:"\f3b8"}.bi-file-text:before{content:"\f3b9"}.bi-file-word-fill:before{content:"\f3ba"}.bi-file-word:before{content:"\f3bb"}.bi-file-x-fill:before{content:"\f3bc"}.bi-file-x:before{content:"\f3bd"}.bi-file-zip-fill:before{content:"\f3be"}.bi-file-zip:before{content:"\f3bf"}.bi-file:before{content:"\f3c0"}.bi-files-alt:before{content:"\f3c1"}.bi-files:before{content:"\f3c2"}.bi-film:before{content:"\f3c3"}.bi-filter-circle-fill:before{content:"\f3c4"}.bi-filter-circle:before{content:"\f3c5"}.bi-filter-left:before{content:"\f3c6"}.bi-filter-right:before{content:"\f3c7"}.bi-filter-square-fill:before{content:"\f3c8"}.bi-filter-square:before{content:"\f3c9"}.bi-filter:before{content:"\f3ca"}.bi-flag-fill:before{content:"\f3cb"}.bi-flag:before{content:"\f3cc"}.bi-flower1:before{content:"\f3cd"}.bi-flower2:before{content:"\f3ce"}.bi-flower3:before{content:"\f3cf"}.bi-folder-check:before{content:"\f3d0"}.bi-folder-fill:before{content:"\f3d1"}.bi-folder-minus:before{content:"\f3d2"}.bi-folder-plus:before{content:"\f3d3"}.bi-folder-symlink-fill:before{content:"\f3d4"}.bi-folder-symlink:before{content:"\f3d5"}.bi-folder-x:before{content:"\f3d6"}.bi-folder:before{content:"\f3d7"}.bi-folder2-open:before{content:"\f3d8"}.bi-folder2:before{content:"\f3d9"}.bi-fonts:before{content:"\f3da"}.bi-forward-fill:before{content:"\f3db"}.bi-forward:before{content:"\f3dc"}.bi-front:before{content:"\f3dd"}.bi-fullscreen-exit:before{content:"\f3de"}.bi-fullscreen:before{content:"\f3df"}.bi-funnel-fill:before{content:"\f3e0"}.bi-funnel:before{content:"\f3e1"}.bi-gear-fill:before{content:"\f3e2"}.bi-gear-wide-connected:before{content:"\f3e3"}.bi-gear-wide:before{content:"\f3e4"}.bi-gear:before{content:"\f3e5"}.bi-gem:before{content:"\f3e6"}.bi-geo-alt-fill:before{content:"\f3e7"}.bi-geo-alt:before{content:"\f3e8"}.bi-geo-fill:before{content:"\f3e9"}.bi-geo:before{content:"\f3ea"}.bi-gift-fill:before{content:"\f3eb"}.bi-gift:before{content:"\f3ec"}.bi-github:before{content:"\f3ed"}.bi-globe:before{content:"\f3ee"}.bi-globe2:before{content:"\f3ef"}.bi-google:before{content:"\f3f0"}.bi-graph-down:before{content:"\f3f1"}.bi-graph-up:before{content:"\f3f2"}.bi-grid-1x2-fill:before{content:"\f3f3"}.bi-grid-1x2:before{content:"\f3f4"}.bi-grid-3x2-gap-fill:before{content:"\f3f5"}.bi-grid-3x2-gap:before{content:"\f3f6"}.bi-grid-3x2:before{content:"\f3f7"}.bi-grid-3x3-gap-fill:before{content:"\f3f8"}.bi-grid-3x3-gap:before{content:"\f3f9"}.bi-grid-3x3:before{content:"\f3fa"}.bi-grid-fill:before{content:"\f3fb"}.bi-grid:before{content:"\f3fc"}.bi-grip-horizontal:before{content:"\f3fd"}.bi-grip-vertical:before{content:"\f3fe"}.bi-hammer:before{content:"\f3ff"}.bi-hand-index-fill:before{content:"\f400"}.bi-hand-index-thumb-fill:before{content:"\f401"}.bi-hand-index-thumb:before{content:"\f402"}.bi-hand-index:before{content:"\f403"}.bi-hand-thumbs-down-fill:before{content:"\f404"}.bi-hand-thumbs-down:before{content:"\f405"}.bi-hand-thumbs-up-fill:before{content:"\f406"}.bi-hand-thumbs-up:before{content:"\f407"}.bi-handbag-fill:before{content:"\f408"}.bi-handbag:before{content:"\f409"}.bi-hash:before{content:"\f40a"}.bi-hdd-fill:before{content:"\f40b"}.bi-hdd-network-fill:before{content:"\f40c"}.bi-hdd-network:before{content:"\f40d"}.bi-hdd-rack-fill:before{content:"\f40e"}.bi-hdd-rack:before{content:"\f40f"}.bi-hdd-stack-fill:before{content:"\f410"}.bi-hdd-stack:before{content:"\f411"}.bi-hdd:before{content:"\f412"}.bi-headphones:before{content:"\f413"}.bi-headset:before{content:"\f414"}.bi-heart-fill:before{content:"\f415"}.bi-heart-half:before{content:"\f416"}.bi-heart:before{content:"\f417"}.bi-heptagon-fill:before{content:"\f418"}.bi-heptagon-half:before{content:"\f419"}.bi-heptagon:before{content:"\f41a"}.bi-hexagon-fill:before{content:"\f41b"}.bi-hexagon-half:before{content:"\f41c"}.bi-hexagon:before{content:"\f41d"}.bi-hourglass-bottom:before{content:"\f41e"}.bi-hourglass-split:before{content:"\f41f"}.bi-hourglass-top:before{content:"\f420"}.bi-hourglass:before{content:"\f421"}.bi-house-door-fill:before{content:"\f422"}.bi-house-door:before{content:"\f423"}.bi-house-fill:before{content:"\f424"}.bi-house:before{content:"\f425"}.bi-hr:before{content:"\f426"}.bi-hurricane:before{content:"\f427"}.bi-image-alt:before{content:"\f428"}.bi-image-fill:before{content:"\f429"}.bi-image:before{content:"\f42a"}.bi-images:before{content:"\f42b"}.bi-inbox-fill:before{content:"\f42c"}.bi-inbox:before{content:"\f42d"}.bi-inboxes-fill:before{content:"\f42e"}.bi-inboxes:before{content:"\f42f"}.bi-info-circle-fill:before{content:"\f430"}.bi-info-circle:before{content:"\f431"}.bi-info-square-fill:before{content:"\f432"}.bi-info-square:before{content:"\f433"}.bi-info:before{content:"\f434"}.bi-input-cursor-text:before{content:"\f435"}.bi-input-cursor:before{content:"\f436"}.bi-instagram:before{content:"\f437"}.bi-intersect:before{content:"\f438"}.bi-journal-album:before{content:"\f439"}.bi-journal-arrow-down:before{content:"\f43a"}.bi-journal-arrow-up:before{content:"\f43b"}.bi-journal-bookmark-fill:before{content:"\f43c"}.bi-journal-bookmark:before{content:"\f43d"}.bi-journal-check:before{content:"\f43e"}.bi-journal-code:before{content:"\f43f"}.bi-journal-medical:before{content:"\f440"}.bi-journal-minus:before{content:"\f441"}.bi-journal-plus:before{content:"\f442"}.bi-journal-richtext:before{content:"\f443"}.bi-journal-text:before{content:"\f444"}.bi-journal-x:before{content:"\f445"}.bi-journal:before{content:"\f446"}.bi-journals:before{content:"\f447"}.bi-joystick:before{content:"\f448"}.bi-justify-left:before{content:"\f449"}.bi-justify-right:before{content:"\f44a"}.bi-justify:before{content:"\f44b"}.bi-kanban-fill:before{content:"\f44c"}.bi-kanban:before{content:"\f44d"}.bi-key-fill:before{content:"\f44e"}.bi-key:before{content:"\f44f"}.bi-keyboard-fill:before{content:"\f450"}.bi-keyboard:before{content:"\f451"}.bi-ladder:before{content:"\f452"}.bi-lamp-fill:before{content:"\f453"}.bi-lamp:before{content:"\f454"}.bi-laptop-fill:before{content:"\f455"}.bi-laptop:before{content:"\f456"}.bi-layer-backward:before{content:"\f457"}.bi-layer-forward:before{content:"\f458"}.bi-layers-fill:before{content:"\f459"}.bi-layers-half:before{content:"\f45a"}.bi-layers:before{content:"\f45b"}.bi-layout-sidebar-inset-reverse:before{content:"\f45c"}.bi-layout-sidebar-inset:before{content:"\f45d"}.bi-layout-sidebar-reverse:before{content:"\f45e"}.bi-layout-sidebar:before{content:"\f45f"}.bi-layout-split:before{content:"\f460"}.bi-layout-text-sidebar-reverse:before{content:"\f461"}.bi-layout-text-sidebar:before{content:"\f462"}.bi-layout-text-window-reverse:before{content:"\f463"}.bi-layout-text-window:before{content:"\f464"}.bi-layout-three-columns:before{content:"\f465"}.bi-layout-wtf:before{content:"\f466"}.bi-life-preserver:before{content:"\f467"}.bi-lightbulb-fill:before{content:"\f468"}.bi-lightbulb-off-fill:before{content:"\f469"}.bi-lightbulb-off:before{content:"\f46a"}.bi-lightbulb:before{content:"\f46b"}.bi-lightning-charge-fill:before{content:"\f46c"}.bi-lightning-charge:before{content:"\f46d"}.bi-lightning-fill:before{content:"\f46e"}.bi-lightning:before{content:"\f46f"}.bi-link-45deg:before{content:"\f470"}.bi-link:before{content:"\f471"}.bi-linkedin:before{content:"\f472"}.bi-list-check:before{content:"\f473"}.bi-list-nested:before{content:"\f474"}.bi-list-ol:before{content:"\f475"}.bi-list-stars:before{content:"\f476"}.bi-list-task:before{content:"\f477"}.bi-list-ul:before{content:"\f478"}.bi-list:before{content:"\f479"}.bi-lock-fill:before{content:"\f47a"}.bi-lock:before{content:"\f47b"}.bi-mailbox:before{content:"\f47c"}.bi-mailbox2:before{content:"\f47d"}.bi-map-fill:before{content:"\f47e"}.bi-map:before{content:"\f47f"}.bi-markdown-fill:before{content:"\f480"}.bi-markdown:before{content:"\f481"}.bi-mask:before{content:"\f482"}.bi-megaphone-fill:before{content:"\f483"}.bi-megaphone:before{content:"\f484"}.bi-menu-app-fill:before{content:"\f485"}.bi-menu-app:before{content:"\f486"}.bi-menu-button-fill:before{content:"\f487"}.bi-menu-button-wide-fill:before{content:"\f488"}.bi-menu-button-wide:before{content:"\f489"}.bi-menu-button:before{content:"\f48a"}.bi-menu-down:before{content:"\f48b"}.bi-menu-up:before{content:"\f48c"}.bi-mic-fill:before{content:"\f48d"}.bi-mic-mute-fill:before{content:"\f48e"}.bi-mic-mute:before{content:"\f48f"}.bi-mic:before{content:"\f490"}.bi-minecart-loaded:before{content:"\f491"}.bi-minecart:before{content:"\f492"}.bi-moisture:before{content:"\f493"}.bi-moon-fill:before{content:"\f494"}.bi-moon-stars-fill:before{content:"\f495"}.bi-moon-stars:before{content:"\f496"}.bi-moon:before{content:"\f497"}.bi-mouse-fill:before{content:"\f498"}.bi-mouse:before{content:"\f499"}.bi-mouse2-fill:before{content:"\f49a"}.bi-mouse2:before{content:"\f49b"}.bi-mouse3-fill:before{content:"\f49c"}.bi-mouse3:before{content:"\f49d"}.bi-music-note-beamed:before{content:"\f49e"}.bi-music-note-list:before{content:"\f49f"}.bi-music-note:before{content:"\f4a0"}.bi-music-player-fill:before{content:"\f4a1"}.bi-music-player:before{content:"\f4a2"}.bi-newspaper:before{content:"\f4a3"}.bi-node-minus-fill:before{content:"\f4a4"}.bi-node-minus:before{content:"\f4a5"}.bi-node-plus-fill:before{content:"\f4a6"}.bi-node-plus:before{content:"\f4a7"}.bi-nut-fill:before{content:"\f4a8"}.bi-nut:before{content:"\f4a9"}.bi-octagon-fill:before{content:"\f4aa"}.bi-octagon-half:before{content:"\f4ab"}.bi-octagon:before{content:"\f4ac"}.bi-option:before{content:"\f4ad"}.bi-outlet:before{content:"\f4ae"}.bi-paint-bucket:before{content:"\f4af"}.bi-palette-fill:before{content:"\f4b0"}.bi-palette:before{content:"\f4b1"}.bi-palette2:before{content:"\f4b2"}.bi-paperclip:before{content:"\f4b3"}.bi-paragraph:before{content:"\f4b4"}.bi-patch-check-fill:before{content:"\f4b5"}.bi-patch-check:before{content:"\f4b6"}.bi-patch-exclamation-fill:before{content:"\f4b7"}.bi-patch-exclamation:before{content:"\f4b8"}.bi-patch-minus-fill:before{content:"\f4b9"}.bi-patch-minus:before{content:"\f4ba"}.bi-patch-plus-fill:before{content:"\f4bb"}.bi-patch-plus:before{content:"\f4bc"}.bi-patch-question-fill:before{content:"\f4bd"}.bi-patch-question:before{content:"\f4be"}.bi-pause-btn-fill:before{content:"\f4bf"}.bi-pause-btn:before{content:"\f4c0"}.bi-pause-circle-fill:before{content:"\f4c1"}.bi-pause-circle:before{content:"\f4c2"}.bi-pause-fill:before{content:"\f4c3"}.bi-pause:before{content:"\f4c4"}.bi-peace-fill:before{content:"\f4c5"}.bi-peace:before{content:"\f4c6"}.bi-pen-fill:before{content:"\f4c7"}.bi-pen:before{content:"\f4c8"}.bi-pencil-fill:before{content:"\f4c9"}.bi-pencil-square:before{content:"\f4ca"}.bi-pencil:before{content:"\f4cb"}.bi-pentagon-fill:before{content:"\f4cc"}.bi-pentagon-half:before{content:"\f4cd"}.bi-pentagon:before{content:"\f4ce"}.bi-people-fill:before{content:"\f4cf"}.bi-people:before{content:"\f4d0"}.bi-percent:before{content:"\f4d1"}.bi-person-badge-fill:before{content:"\f4d2"}.bi-person-badge:before{content:"\f4d3"}.bi-person-bounding-box:before{content:"\f4d4"}.bi-person-check-fill:before{content:"\f4d5"}.bi-person-check:before{content:"\f4d6"}.bi-person-circle:before{content:"\f4d7"}.bi-person-dash-fill:before{content:"\f4d8"}.bi-person-dash:before{content:"\f4d9"}.bi-person-fill:before{content:"\f4da"}.bi-person-lines-fill:before{content:"\f4db"}.bi-person-plus-fill:before{content:"\f4dc"}.bi-person-plus:before{content:"\f4dd"}.bi-person-square:before{content:"\f4de"}.bi-person-x-fill:before{content:"\f4df"}.bi-person-x:before{content:"\f4e0"}.bi-person:before{content:"\f4e1"}.bi-phone-fill:before{content:"\f4e2"}.bi-phone-landscape-fill:before{content:"\f4e3"}.bi-phone-landscape:before{content:"\f4e4"}.bi-phone-vibrate-fill:before{content:"\f4e5"}.bi-phone-vibrate:before{content:"\f4e6"}.bi-phone:before{content:"\f4e7"}.bi-pie-chart-fill:before{content:"\f4e8"}.bi-pie-chart:before{content:"\f4e9"}.bi-pin-angle-fill:before{content:"\f4ea"}.bi-pin-angle:before{content:"\f4eb"}.bi-pin-fill:before{content:"\f4ec"}.bi-pin:before{content:"\f4ed"}.bi-pip-fill:before{content:"\f4ee"}.bi-pip:before{content:"\f4ef"}.bi-play-btn-fill:before{content:"\f4f0"}.bi-play-btn:before{content:"\f4f1"}.bi-play-circle-fill:before{content:"\f4f2"}.bi-play-circle:before{content:"\f4f3"}.bi-play-fill:before{content:"\f4f4"}.bi-play:before{content:"\f4f5"}.bi-plug-fill:before{content:"\f4f6"}.bi-plug:before{content:"\f4f7"}.bi-plus-circle-dotted:before{content:"\f4f8"}.bi-plus-circle-fill:before{content:"\f4f9"}.bi-plus-circle:before{content:"\f4fa"}.bi-plus-square-dotted:before{content:"\f4fb"}.bi-plus-square-fill:before{content:"\f4fc"}.bi-plus-square:before{content:"\f4fd"}.bi-plus:before{content:"\f4fe"}.bi-power:before{content:"\f4ff"}.bi-printer-fill:before{content:"\f500"}.bi-printer:before{content:"\f501"}.bi-puzzle-fill:before{content:"\f502"}.bi-puzzle:before{content:"\f503"}.bi-question-circle-fill:before{content:"\f504"}.bi-question-circle:before{content:"\f505"}.bi-question-diamond-fill:before{content:"\f506"}.bi-question-diamond:before{content:"\f507"}.bi-question-octagon-fill:before{content:"\f508"}.bi-question-octagon:before{content:"\f509"}.bi-question-square-fill:before{content:"\f50a"}.bi-question-square:before{content:"\f50b"}.bi-question:before{content:"\f50c"}.bi-rainbow:before{content:"\f50d"}.bi-receipt-cutoff:before{content:"\f50e"}.bi-receipt:before{content:"\f50f"}.bi-reception-0:before{content:"\f510"}.bi-reception-1:before{content:"\f511"}.bi-reception-2:before{content:"\f512"}.bi-reception-3:before{content:"\f513"}.bi-reception-4:before{content:"\f514"}.bi-record-btn-fill:before{content:"\f515"}.bi-record-btn:before{content:"\f516"}.bi-record-circle-fill:before{content:"\f517"}.bi-record-circle:before{content:"\f518"}.bi-record-fill:before{content:"\f519"}.bi-record:before{content:"\f51a"}.bi-record2-fill:before{content:"\f51b"}.bi-record2:before{content:"\f51c"}.bi-reply-all-fill:before{content:"\f51d"}.bi-reply-all:before{content:"\f51e"}.bi-reply-fill:before{content:"\f51f"}.bi-reply:before{content:"\f520"}.bi-rss-fill:before{content:"\f521"}.bi-rss:before{content:"\f522"}.bi-rulers:before{content:"\f523"}.bi-save-fill:before{content:"\f524"}.bi-save:before{content:"\f525"}.bi-save2-fill:before{content:"\f526"}.bi-save2:before{content:"\f527"}.bi-scissors:before{content:"\f528"}.bi-screwdriver:before{content:"\f529"}.bi-search:before{content:"\f52a"}.bi-segmented-nav:before{content:"\f52b"}.bi-server:before{content:"\f52c"}.bi-share-fill:before{content:"\f52d"}.bi-share:before{content:"\f52e"}.bi-shield-check:before{content:"\f52f"}.bi-shield-exclamation:before{content:"\f530"}.bi-shield-fill-check:before{content:"\f531"}.bi-shield-fill-exclamation:before{content:"\f532"}.bi-shield-fill-minus:before{content:"\f533"}.bi-shield-fill-plus:before{content:"\f534"}.bi-shield-fill-x:before{content:"\f535"}.bi-shield-fill:before{content:"\f536"}.bi-shield-lock-fill:before{content:"\f537"}.bi-shield-lock:before{content:"\f538"}.bi-shield-minus:before{content:"\f539"}.bi-shield-plus:before{content:"\f53a"}.bi-shield-shaded:before{content:"\f53b"}.bi-shield-slash-fill:before{content:"\f53c"}.bi-shield-slash:before{content:"\f53d"}.bi-shield-x:before{content:"\f53e"}.bi-shield:before{content:"\f53f"}.bi-shift-fill:before{content:"\f540"}.bi-shift:before{content:"\f541"}.bi-shop-window:before{content:"\f542"}.bi-shop:before{content:"\f543"}.bi-shuffle:before{content:"\f544"}.bi-signpost-2-fill:before{content:"\f545"}.bi-signpost-2:before{content:"\f546"}.bi-signpost-fill:before{content:"\f547"}.bi-signpost-split-fill:before{content:"\f548"}.bi-signpost-split:before{content:"\f549"}.bi-signpost:before{content:"\f54a"}.bi-sim-fill:before{content:"\f54b"}.bi-sim:before{content:"\f54c"}.bi-skip-backward-btn-fill:before{content:"\f54d"}.bi-skip-backward-btn:before{content:"\f54e"}.bi-skip-backward-circle-fill:before{content:"\f54f"}.bi-skip-backward-circle:before{content:"\f550"}.bi-skip-backward-fill:before{content:"\f551"}.bi-skip-backward:before{content:"\f552"}.bi-skip-end-btn-fill:before{content:"\f553"}.bi-skip-end-btn:before{content:"\f554"}.bi-skip-end-circle-fill:before{content:"\f555"}.bi-skip-end-circle:before{content:"\f556"}.bi-skip-end-fill:before{content:"\f557"}.bi-skip-end:before{content:"\f558"}.bi-skip-forward-btn-fill:before{content:"\f559"}.bi-skip-forward-btn:before{content:"\f55a"}.bi-skip-forward-circle-fill:before{content:"\f55b"}.bi-skip-forward-circle:before{content:"\f55c"}.bi-skip-forward-fill:before{content:"\f55d"}.bi-skip-forward:before{content:"\f55e"}.bi-skip-start-btn-fill:before{content:"\f55f"}.bi-skip-start-btn:before{content:"\f560"}.bi-skip-start-circle-fill:before{content:"\f561"}.bi-skip-start-circle:before{content:"\f562"}.bi-skip-start-fill:before{content:"\f563"}.bi-skip-start:before{content:"\f564"}.bi-slack:before{content:"\f565"}.bi-slash-circle-fill:before{content:"\f566"}.bi-slash-circle:before{content:"\f567"}.bi-slash-square-fill:before{content:"\f568"}.bi-slash-square:before{content:"\f569"}.bi-slash:before{content:"\f56a"}.bi-sliders:before{content:"\f56b"}.bi-smartwatch:before{content:"\f56c"}.bi-snow:before{content:"\f56d"}.bi-snow2:before{content:"\f56e"}.bi-snow3:before{content:"\f56f"}.bi-sort-alpha-down-alt:before{content:"\f570"}.bi-sort-alpha-down:before{content:"\f571"}.bi-sort-alpha-up-alt:before{content:"\f572"}.bi-sort-alpha-up:before{content:"\f573"}.bi-sort-down-alt:before{content:"\f574"}.bi-sort-down:before{content:"\f575"}.bi-sort-numeric-down-alt:before{content:"\f576"}.bi-sort-numeric-down:before{content:"\f577"}.bi-sort-numeric-up-alt:before{content:"\f578"}.bi-sort-numeric-up:before{content:"\f579"}.bi-sort-up-alt:before{content:"\f57a"}.bi-sort-up:before{content:"\f57b"}.bi-soundwave:before{content:"\f57c"}.bi-speaker-fill:before{content:"\f57d"}.bi-speaker:before{content:"\f57e"}.bi-speedometer:before{content:"\f57f"}.bi-speedometer2:before{content:"\f580"}.bi-spellcheck:before{content:"\f581"}.bi-square-fill:before{content:"\f582"}.bi-square-half:before{content:"\f583"}.bi-square:before{content:"\f584"}.bi-stack:before{content:"\f585"}.bi-star-fill:before{content:"\f586"}.bi-star-half:before{content:"\f587"}.bi-star:before{content:"\f588"}.bi-stars:before{content:"\f589"}.bi-stickies-fill:before{content:"\f58a"}.bi-stickies:before{content:"\f58b"}.bi-sticky-fill:before{content:"\f58c"}.bi-sticky:before{content:"\f58d"}.bi-stop-btn-fill:before{content:"\f58e"}.bi-stop-btn:before{content:"\f58f"}.bi-stop-circle-fill:before{content:"\f590"}.bi-stop-circle:before{content:"\f591"}.bi-stop-fill:before{content:"\f592"}.bi-stop:before{content:"\f593"}.bi-stoplights-fill:before{content:"\f594"}.bi-stoplights:before{content:"\f595"}.bi-stopwatch-fill:before{content:"\f596"}.bi-stopwatch:before{content:"\f597"}.bi-subtract:before{content:"\f598"}.bi-suit-club-fill:before{content:"\f599"}.bi-suit-club:before{content:"\f59a"}.bi-suit-diamond-fill:before{content:"\f59b"}.bi-suit-diamond:before{content:"\f59c"}.bi-suit-heart-fill:before{content:"\f59d"}.bi-suit-heart:before{content:"\f59e"}.bi-suit-spade-fill:before{content:"\f59f"}.bi-suit-spade:before{content:"\f5a0"}.bi-sun-fill:before{content:"\f5a1"}.bi-sun:before{content:"\f5a2"}.bi-sunglasses:before{content:"\f5a3"}.bi-sunrise-fill:before{content:"\f5a4"}.bi-sunrise:before{content:"\f5a5"}.bi-sunset-fill:before{content:"\f5a6"}.bi-sunset:before{content:"\f5a7"}.bi-symmetry-horizontal:before{content:"\f5a8"}.bi-symmetry-vertical:before{content:"\f5a9"}.bi-table:before{content:"\f5aa"}.bi-tablet-fill:before{content:"\f5ab"}.bi-tablet-landscape-fill:before{content:"\f5ac"}.bi-tablet-landscape:before{content:"\f5ad"}.bi-tablet:before{content:"\f5ae"}.bi-tag-fill:before{content:"\f5af"}.bi-tag:before{content:"\f5b0"}.bi-tags-fill:before{content:"\f5b1"}.bi-tags:before{content:"\f5b2"}.bi-telegram:before{content:"\f5b3"}.bi-telephone-fill:before{content:"\f5b4"}.bi-telephone-forward-fill:before{content:"\f5b5"}.bi-telephone-forward:before{content:"\f5b6"}.bi-telephone-inbound-fill:before{content:"\f5b7"}.bi-telephone-inbound:before{content:"\f5b8"}.bi-telephone-minus-fill:before{content:"\f5b9"}.bi-telephone-minus:before{content:"\f5ba"}.bi-telephone-outbound-fill:before{content:"\f5bb"}.bi-telephone-outbound:before{content:"\f5bc"}.bi-telephone-plus-fill:before{content:"\f5bd"}.bi-telephone-plus:before{content:"\f5be"}.bi-telephone-x-fill:before{content:"\f5bf"}.bi-telephone-x:before{content:"\f5c0"}.bi-telephone:before{content:"\f5c1"}.bi-terminal-fill:before{content:"\f5c2"}.bi-terminal:before{content:"\f5c3"}.bi-text-center:before{content:"\f5c4"}.bi-text-indent-left:before{content:"\f5c5"}.bi-text-indent-right:before{content:"\f5c6"}.bi-text-left:before{content:"\f5c7"}.bi-text-paragraph:before{content:"\f5c8"}.bi-text-right:before{content:"\f5c9"}.bi-textarea-resize:before{content:"\f5ca"}.bi-textarea-t:before{content:"\f5cb"}.bi-textarea:before{content:"\f5cc"}.bi-thermometer-half:before{content:"\f5cd"}.bi-thermometer-high:before{content:"\f5ce"}.bi-thermometer-low:before{content:"\f5cf"}.bi-thermometer-snow:before{content:"\f5d0"}.bi-thermometer-sun:before{content:"\f5d1"}.bi-thermometer:before{content:"\f5d2"}.bi-three-dots-vertical:before{content:"\f5d3"}.bi-three-dots:before{content:"\f5d4"}.bi-toggle-off:before{content:"\f5d5"}.bi-toggle-on:before{content:"\f5d6"}.bi-toggle2-off:before{content:"\f5d7"}.bi-toggle2-on:before{content:"\f5d8"}.bi-toggles:before{content:"\f5d9"}.bi-toggles2:before{content:"\f5da"}.bi-tools:before{content:"\f5db"}.bi-tornado:before{content:"\f5dc"}.bi-trash-fill:before{content:"\f5dd"}.bi-trash:before{content:"\f5de"}.bi-trash2-fill:before{content:"\f5df"}.bi-trash2:before{content:"\f5e0"}.bi-tree-fill:before{content:"\f5e1"}.bi-tree:before{content:"\f5e2"}.bi-triangle-fill:before{content:"\f5e3"}.bi-triangle-half:before{content:"\f5e4"}.bi-triangle:before{content:"\f5e5"}.bi-trophy-fill:before{content:"\f5e6"}.bi-trophy:before{content:"\f5e7"}.bi-tropical-storm:before{content:"\f5e8"}.bi-truck-flatbed:before{content:"\f5e9"}.bi-truck:before{content:"\f5ea"}.bi-tsunami:before{content:"\f5eb"}.bi-tv-fill:before{content:"\f5ec"}.bi-tv:before{content:"\f5ed"}.bi-twitch:before{content:"\f5ee"}.bi-twitter:before{content:"\f5ef"}.bi-type-bold:before{content:"\f5f0"}.bi-type-h1:before{content:"\f5f1"}.bi-type-h2:before{content:"\f5f2"}.bi-type-h3:before{content:"\f5f3"}.bi-type-italic:before{content:"\f5f4"}.bi-type-strikethrough:before{content:"\f5f5"}.bi-type-underline:before{content:"\f5f6"}.bi-type:before{content:"\f5f7"}.bi-ui-checks-grid:before{content:"\f5f8"}.bi-ui-checks:before{content:"\f5f9"}.bi-ui-radios-grid:before{content:"\f5fa"}.bi-ui-radios:before{content:"\f5fb"}.bi-umbrella-fill:before{content:"\f5fc"}.bi-umbrella:before{content:"\f5fd"}.bi-union:before{content:"\f5fe"}.bi-unlock-fill:before{content:"\f5ff"}.bi-unlock:before{content:"\f600"}.bi-upc-scan:before{content:"\f601"}.bi-upc:before{content:"\f602"}.bi-upload:before{content:"\f603"}.bi-vector-pen:before{content:"\f604"}.bi-view-list:before{content:"\f605"}.bi-view-stacked:before{content:"\f606"}.bi-vinyl-fill:before{content:"\f607"}.bi-vinyl:before{content:"\f608"}.bi-voicemail:before{content:"\f609"}.bi-volume-down-fill:before{content:"\f60a"}.bi-volume-down:before{content:"\f60b"}.bi-volume-mute-fill:before{content:"\f60c"}.bi-volume-mute:before{content:"\f60d"}.bi-volume-off-fill:before{content:"\f60e"}.bi-volume-off:before{content:"\f60f"}.bi-volume-up-fill:before{content:"\f610"}.bi-volume-up:before{content:"\f611"}.bi-vr:before{content:"\f612"}.bi-wallet-fill:before{content:"\f613"}.bi-wallet:before{content:"\f614"}.bi-wallet2:before{content:"\f615"}.bi-watch:before{content:"\f616"}.bi-water:before{content:"\f617"}.bi-whatsapp:before{content:"\f618"}.bi-wifi-1:before{content:"\f619"}.bi-wifi-2:before{content:"\f61a"}.bi-wifi-off:before{content:"\f61b"}.bi-wifi:before{content:"\f61c"}.bi-wind:before{content:"\f61d"}.bi-window-dock:before{content:"\f61e"}.bi-window-sidebar:before{content:"\f61f"}.bi-window:before{content:"\f620"}.bi-wrench:before{content:"\f621"}.bi-x-circle-fill:before{content:"\f622"}.bi-x-circle:before{content:"\f623"}.bi-x-diamond-fill:before{content:"\f624"}.bi-x-diamond:before{content:"\f625"}.bi-x-octagon-fill:before{content:"\f626"}.bi-x-octagon:before{content:"\f627"}.bi-x-square-fill:before{content:"\f628"}.bi-x-square:before{content:"\f629"}.bi-x:before{content:"\f62a"}.bi-youtube:before{content:"\f62b"}.bi-zoom-in:before{content:"\f62c"}.bi-zoom-out:before{content:"\f62d"}.bi-bank:before{content:"\f62e"}.bi-bank2:before{content:"\f62f"}.bi-bell-slash-fill:before{content:"\f630"}.bi-bell-slash:before{content:"\f631"}.bi-cash-coin:before{content:"\f632"}.bi-check-lg:before{content:"\f633"}.bi-coin:before{content:"\f634"}.bi-currency-bitcoin:before{content:"\f635"}.bi-currency-dollar:before{content:"\f636"}.bi-currency-euro:before{content:"\f637"}.bi-currency-exchange:before{content:"\f638"}.bi-currency-pound:before{content:"\f639"}.bi-currency-yen:before{content:"\f63a"}.bi-dash-lg:before{content:"\f63b"}.bi-exclamation-lg:before{content:"\f63c"}.bi-file-earmark-pdf-fill:before{content:"\f63d"}.bi-file-earmark-pdf:before{content:"\f63e"}.bi-file-pdf-fill:before{content:"\f63f"}.bi-file-pdf:before{content:"\f640"}.bi-gender-ambiguous:before{content:"\f641"}.bi-gender-female:before{content:"\f642"}.bi-gender-male:before{content:"\f643"}.bi-gender-trans:before{content:"\f644"}.bi-headset-vr:before{content:"\f645"}.bi-info-lg:before{content:"\f646"}.bi-mastodon:before{content:"\f647"}.bi-messenger:before{content:"\f648"}.bi-piggy-bank-fill:before{content:"\f649"}.bi-piggy-bank:before{content:"\f64a"}.bi-pin-map-fill:before{content:"\f64b"}.bi-pin-map:before{content:"\f64c"}.bi-plus-lg:before{content:"\f64d"}.bi-question-lg:before{content:"\f64e"}.bi-recycle:before{content:"\f64f"}.bi-reddit:before{content:"\f650"}.bi-safe-fill:before{content:"\f651"}.bi-safe2-fill:before{content:"\f652"}.bi-safe2:before{content:"\f653"}.bi-sd-card-fill:before{content:"\f654"}.bi-sd-card:before{content:"\f655"}.bi-skype:before{content:"\f656"}.bi-slash-lg:before{content:"\f657"}.bi-translate:before{content:"\f658"}.bi-x-lg:before{content:"\f659"}.bi-safe:before{content:"\f65a"}.bi-apple:before{content:"\f65b"}.bi-microsoft:before{content:"\f65d"}.bi-windows:before{content:"\f65e"}.bi-behance:before{content:"\f65c"}.bi-dribbble:before{content:"\f65f"}.bi-line:before{content:"\f660"}.bi-medium:before{content:"\f661"}.bi-paypal:before{content:"\f662"}.bi-pinterest:before{content:"\f663"}.bi-signal:before{content:"\f664"}.bi-snapchat:before{content:"\f665"}.bi-spotify:before{content:"\f666"}.bi-stack-overflow:before{content:"\f667"}.bi-strava:before{content:"\f668"}.bi-wordpress:before{content:"\f669"}.bi-vimeo:before{content:"\f66a"}.bi-activity:before{content:"\f66b"}.bi-easel2-fill:before{content:"\f66c"}.bi-easel2:before{content:"\f66d"}.bi-easel3-fill:before{content:"\f66e"}.bi-easel3:before{content:"\f66f"}.bi-fan:before{content:"\f670"}.bi-fingerprint:before{content:"\f671"}.bi-graph-down-arrow:before{content:"\f672"}.bi-graph-up-arrow:before{content:"\f673"}.bi-hypnotize:before{content:"\f674"}.bi-magic:before{content:"\f675"}.bi-person-rolodex:before{content:"\f676"}.bi-person-video:before{content:"\f677"}.bi-person-video2:before{content:"\f678"}.bi-person-video3:before{content:"\f679"}.bi-person-workspace:before{content:"\f67a"}.bi-radioactive:before{content:"\f67b"}.bi-webcam-fill:before{content:"\f67c"}.bi-webcam:before{content:"\f67d"}.bi-yin-yang:before{content:"\f67e"}.bi-bandaid-fill:before{content:"\f680"}.bi-bandaid:before{content:"\f681"}.bi-bluetooth:before{content:"\f682"}.bi-body-text:before{content:"\f683"}.bi-boombox:before{content:"\f684"}.bi-boxes:before{content:"\f685"}.bi-dpad-fill:before{content:"\f686"}.bi-dpad:before{content:"\f687"}.bi-ear-fill:before{content:"\f688"}.bi-ear:before{content:"\f689"}.bi-envelope-check-fill:before{content:"\f68b"}.bi-envelope-check:before{content:"\f68c"}.bi-envelope-dash-fill:before{content:"\f68e"}.bi-envelope-dash:before{content:"\f68f"}.bi-envelope-exclamation-fill:before{content:"\f691"}.bi-envelope-exclamation:before{content:"\f692"}.bi-envelope-plus-fill:before{content:"\f693"}.bi-envelope-plus:before{content:"\f694"}.bi-envelope-slash-fill:before{content:"\f696"}.bi-envelope-slash:before{content:"\f697"}.bi-envelope-x-fill:before{content:"\f699"}.bi-envelope-x:before{content:"\f69a"}.bi-explicit-fill:before{content:"\f69b"}.bi-explicit:before{content:"\f69c"}.bi-git:before{content:"\f69d"}.bi-infinity:before{content:"\f69e"}.bi-list-columns-reverse:before{content:"\f69f"}.bi-list-columns:before{content:"\f6a0"}.bi-meta:before{content:"\f6a1"}.bi-nintendo-switch:before{content:"\f6a4"}.bi-pc-display-horizontal:before{content:"\f6a5"}.bi-pc-display:before{content:"\f6a6"}.bi-pc-horizontal:before{content:"\f6a7"}.bi-pc:before{content:"\f6a8"}.bi-playstation:before{content:"\f6a9"}.bi-plus-slash-minus:before{content:"\f6aa"}.bi-projector-fill:before{content:"\f6ab"}.bi-projector:before{content:"\f6ac"}.bi-qr-code-scan:before{content:"\f6ad"}.bi-qr-code:before{content:"\f6ae"}.bi-quora:before{content:"\f6af"}.bi-quote:before{content:"\f6b0"}.bi-robot:before{content:"\f6b1"}.bi-send-check-fill:before{content:"\f6b2"}.bi-send-check:before{content:"\f6b3"}.bi-send-dash-fill:before{content:"\f6b4"}.bi-send-dash:before{content:"\f6b5"}.bi-send-exclamation-fill:before{content:"\f6b7"}.bi-send-exclamation:before{content:"\f6b8"}.bi-send-fill:before{content:"\f6b9"}.bi-send-plus-fill:before{content:"\f6ba"}.bi-send-plus:before{content:"\f6bb"}.bi-send-slash-fill:before{content:"\f6bc"}.bi-send-slash:before{content:"\f6bd"}.bi-send-x-fill:before{content:"\f6be"}.bi-send-x:before{content:"\f6bf"}.bi-send:before{content:"\f6c0"}.bi-steam:before{content:"\f6c1"}.bi-terminal-dash:before{content:"\f6c3"}.bi-terminal-plus:before{content:"\f6c4"}.bi-terminal-split:before{content:"\f6c5"}.bi-ticket-detailed-fill:before{content:"\f6c6"}.bi-ticket-detailed:before{content:"\f6c7"}.bi-ticket-fill:before{content:"\f6c8"}.bi-ticket-perforated-fill:before{content:"\f6c9"}.bi-ticket-perforated:before{content:"\f6ca"}.bi-ticket:before{content:"\f6cb"}.bi-tiktok:before{content:"\f6cc"}.bi-window-dash:before{content:"\f6cd"}.bi-window-desktop:before{content:"\f6ce"}.bi-window-fullscreen:before{content:"\f6cf"}.bi-window-plus:before{content:"\f6d0"}.bi-window-split:before{content:"\f6d1"}.bi-window-stack:before{content:"\f6d2"}.bi-window-x:before{content:"\f6d3"}.bi-xbox:before{content:"\f6d4"}.bi-ethernet:before{content:"\f6d5"}.bi-hdmi-fill:before{content:"\f6d6"}.bi-hdmi:before{content:"\f6d7"}.bi-usb-c-fill:before{content:"\f6d8"}.bi-usb-c:before{content:"\f6d9"}.bi-usb-fill:before{content:"\f6da"}.bi-usb-plug-fill:before{content:"\f6db"}.bi-usb-plug:before{content:"\f6dc"}.bi-usb-symbol:before{content:"\f6dd"}.bi-usb:before{content:"\f6de"}.bi-boombox-fill:before{content:"\f6df"}.bi-displayport:before{content:"\f6e1"}.bi-gpu-card:before{content:"\f6e2"}.bi-memory:before{content:"\f6e3"}.bi-modem-fill:before{content:"\f6e4"}.bi-modem:before{content:"\f6e5"}.bi-motherboard-fill:before{content:"\f6e6"}.bi-motherboard:before{content:"\f6e7"}.bi-optical-audio-fill:before{content:"\f6e8"}.bi-optical-audio:before{content:"\f6e9"}.bi-pci-card:before{content:"\f6ea"}.bi-router-fill:before{content:"\f6eb"}.bi-router:before{content:"\f6ec"}.bi-thunderbolt-fill:before{content:"\f6ef"}.bi-thunderbolt:before{content:"\f6f0"}.bi-usb-drive-fill:before{content:"\f6f1"}.bi-usb-drive:before{content:"\f6f2"}.bi-usb-micro-fill:before{content:"\f6f3"}.bi-usb-micro:before{content:"\f6f4"}.bi-usb-mini-fill:before{content:"\f6f5"}.bi-usb-mini:before{content:"\f6f6"}.bi-cloud-haze2:before{content:"\f6f7"}.bi-device-hdd-fill:before{content:"\f6f8"}.bi-device-hdd:before{content:"\f6f9"}.bi-device-ssd-fill:before{content:"\f6fa"}.bi-device-ssd:before{content:"\f6fb"}.bi-displayport-fill:before{content:"\f6fc"}.bi-mortarboard-fill:before{content:"\f6fd"}.bi-mortarboard:before{content:"\f6fe"}.bi-terminal-x:before{content:"\f6ff"}.bi-arrow-through-heart-fill:before{content:"\f700"}.bi-arrow-through-heart:before{content:"\f701"}.bi-badge-sd-fill:before{content:"\f702"}.bi-badge-sd:before{content:"\f703"}.bi-bag-heart-fill:before{content:"\f704"}.bi-bag-heart:before{content:"\f705"}.bi-balloon-fill:before{content:"\f706"}.bi-balloon-heart-fill:before{content:"\f707"}.bi-balloon-heart:before{content:"\f708"}.bi-balloon:before{content:"\f709"}.bi-box2-fill:before{content:"\f70a"}.bi-box2-heart-fill:before{content:"\f70b"}.bi-box2-heart:before{content:"\f70c"}.bi-box2:before{content:"\f70d"}.bi-braces-asterisk:before{content:"\f70e"}.bi-calendar-heart-fill:before{content:"\f70f"}.bi-calendar-heart:before{content:"\f710"}.bi-calendar2-heart-fill:before{content:"\f711"}.bi-calendar2-heart:before{content:"\f712"}.bi-chat-heart-fill:before{content:"\f713"}.bi-chat-heart:before{content:"\f714"}.bi-chat-left-heart-fill:before{content:"\f715"}.bi-chat-left-heart:before{content:"\f716"}.bi-chat-right-heart-fill:before{content:"\f717"}.bi-chat-right-heart:before{content:"\f718"}.bi-chat-square-heart-fill:before{content:"\f719"}.bi-chat-square-heart:before{content:"\f71a"}.bi-clipboard-check-fill:before{content:"\f71b"}.bi-clipboard-data-fill:before{content:"\f71c"}.bi-clipboard-fill:before{content:"\f71d"}.bi-clipboard-heart-fill:before{content:"\f71e"}.bi-clipboard-heart:before{content:"\f71f"}.bi-clipboard-minus-fill:before{content:"\f720"}.bi-clipboard-plus-fill:before{content:"\f721"}.bi-clipboard-pulse:before{content:"\f722"}.bi-clipboard-x-fill:before{content:"\f723"}.bi-clipboard2-check-fill:before{content:"\f724"}.bi-clipboard2-check:before{content:"\f725"}.bi-clipboard2-data-fill:before{content:"\f726"}.bi-clipboard2-data:before{content:"\f727"}.bi-clipboard2-fill:before{content:"\f728"}.bi-clipboard2-heart-fill:before{content:"\f729"}.bi-clipboard2-heart:before{content:"\f72a"}.bi-clipboard2-minus-fill:before{content:"\f72b"}.bi-clipboard2-minus:before{content:"\f72c"}.bi-clipboard2-plus-fill:before{content:"\f72d"}.bi-clipboard2-plus:before{content:"\f72e"}.bi-clipboard2-pulse-fill:before{content:"\f72f"}.bi-clipboard2-pulse:before{content:"\f730"}.bi-clipboard2-x-fill:before{content:"\f731"}.bi-clipboard2-x:before{content:"\f732"}.bi-clipboard2:before{content:"\f733"}.bi-emoji-kiss-fill:before{content:"\f734"}.bi-emoji-kiss:before{content:"\f735"}.bi-envelope-heart-fill:before{content:"\f736"}.bi-envelope-heart:before{content:"\f737"}.bi-envelope-open-heart-fill:before{content:"\f738"}.bi-envelope-open-heart:before{content:"\f739"}.bi-envelope-paper-fill:before{content:"\f73a"}.bi-envelope-paper-heart-fill:before{content:"\f73b"}.bi-envelope-paper-heart:before{content:"\f73c"}.bi-envelope-paper:before{content:"\f73d"}.bi-filetype-aac:before{content:"\f73e"}.bi-filetype-ai:before{content:"\f73f"}.bi-filetype-bmp:before{content:"\f740"}.bi-filetype-cs:before{content:"\f741"}.bi-filetype-css:before{content:"\f742"}.bi-filetype-csv:before{content:"\f743"}.bi-filetype-doc:before{content:"\f744"}.bi-filetype-docx:before{content:"\f745"}.bi-filetype-exe:before{content:"\f746"}.bi-filetype-gif:before{content:"\f747"}.bi-filetype-heic:before{content:"\f748"}.bi-filetype-html:before{content:"\f749"}.bi-filetype-java:before{content:"\f74a"}.bi-filetype-jpg:before{content:"\f74b"}.bi-filetype-js:before{content:"\f74c"}.bi-filetype-jsx:before{content:"\f74d"}.bi-filetype-key:before{content:"\f74e"}.bi-filetype-m4p:before{content:"\f74f"}.bi-filetype-md:before{content:"\f750"}.bi-filetype-mdx:before{content:"\f751"}.bi-filetype-mov:before{content:"\f752"}.bi-filetype-mp3:before{content:"\f753"}.bi-filetype-mp4:before{content:"\f754"}.bi-filetype-otf:before{content:"\f755"}.bi-filetype-pdf:before{content:"\f756"}.bi-filetype-php:before{content:"\f757"}.bi-filetype-png:before{content:"\f758"}.bi-filetype-ppt:before{content:"\f75a"}.bi-filetype-psd:before{content:"\f75b"}.bi-filetype-py:before{content:"\f75c"}.bi-filetype-raw:before{content:"\f75d"}.bi-filetype-rb:before{content:"\f75e"}.bi-filetype-sass:before{content:"\f75f"}.bi-filetype-scss:before{content:"\f760"}.bi-filetype-sh:before{content:"\f761"}.bi-filetype-svg:before{content:"\f762"}.bi-filetype-tiff:before{content:"\f763"}.bi-filetype-tsx:before{content:"\f764"}.bi-filetype-ttf:before{content:"\f765"}.bi-filetype-txt:before{content:"\f766"}.bi-filetype-wav:before{content:"\f767"}.bi-filetype-woff:before{content:"\f768"}.bi-filetype-xls:before{content:"\f76a"}.bi-filetype-xml:before{content:"\f76b"}.bi-filetype-yml:before{content:"\f76c"}.bi-heart-arrow:before{content:"\f76d"}.bi-heart-pulse-fill:before{content:"\f76e"}.bi-heart-pulse:before{content:"\f76f"}.bi-heartbreak-fill:before{content:"\f770"}.bi-heartbreak:before{content:"\f771"}.bi-hearts:before{content:"\f772"}.bi-hospital-fill:before{content:"\f773"}.bi-hospital:before{content:"\f774"}.bi-house-heart-fill:before{content:"\f775"}.bi-house-heart:before{content:"\f776"}.bi-incognito:before{content:"\f777"}.bi-magnet-fill:before{content:"\f778"}.bi-magnet:before{content:"\f779"}.bi-person-heart:before{content:"\f77a"}.bi-person-hearts:before{content:"\f77b"}.bi-phone-flip:before{content:"\f77c"}.bi-plugin:before{content:"\f77d"}.bi-postage-fill:before{content:"\f77e"}.bi-postage-heart-fill:before{content:"\f77f"}.bi-postage-heart:before{content:"\f780"}.bi-postage:before{content:"\f781"}.bi-postcard-fill:before{content:"\f782"}.bi-postcard-heart-fill:before{content:"\f783"}.bi-postcard-heart:before{content:"\f784"}.bi-postcard:before{content:"\f785"}.bi-search-heart-fill:before{content:"\f786"}.bi-search-heart:before{content:"\f787"}.bi-sliders2-vertical:before{content:"\f788"}.bi-sliders2:before{content:"\f789"}.bi-trash3-fill:before{content:"\f78a"}.bi-trash3:before{content:"\f78b"}.bi-valentine:before{content:"\f78c"}.bi-valentine2:before{content:"\f78d"}.bi-wrench-adjustable-circle-fill:before{content:"\f78e"}.bi-wrench-adjustable-circle:before{content:"\f78f"}.bi-wrench-adjustable:before{content:"\f790"}.bi-filetype-json:before{content:"\f791"}.bi-filetype-pptx:before{content:"\f792"}.bi-filetype-xlsx:before{content:"\f793"}.bi-1-circle-fill:before{content:"\f796"}.bi-1-circle:before{content:"\f797"}.bi-1-square-fill:before{content:"\f798"}.bi-1-square:before{content:"\f799"}.bi-2-circle-fill:before{content:"\f79c"}.bi-2-circle:before{content:"\f79d"}.bi-2-square-fill:before{content:"\f79e"}.bi-2-square:before{content:"\f79f"}.bi-3-circle-fill:before{content:"\f7a2"}.bi-3-circle:before{content:"\f7a3"}.bi-3-square-fill:before{content:"\f7a4"}.bi-3-square:before{content:"\f7a5"}.bi-4-circle-fill:before{content:"\f7a8"}.bi-4-circle:before{content:"\f7a9"}.bi-4-square-fill:before{content:"\f7aa"}.bi-4-square:before{content:"\f7ab"}.bi-5-circle-fill:before{content:"\f7ae"}.bi-5-circle:before{content:"\f7af"}.bi-5-square-fill:before{content:"\f7b0"}.bi-5-square:before{content:"\f7b1"}.bi-6-circle-fill:before{content:"\f7b4"}.bi-6-circle:before{content:"\f7b5"}.bi-6-square-fill:before{content:"\f7b6"}.bi-6-square:before{content:"\f7b7"}.bi-7-circle-fill:before{content:"\f7ba"}.bi-7-circle:before{content:"\f7bb"}.bi-7-square-fill:before{content:"\f7bc"}.bi-7-square:before{content:"\f7bd"}.bi-8-circle-fill:before{content:"\f7c0"}.bi-8-circle:before{content:"\f7c1"}.bi-8-square-fill:before{content:"\f7c2"}.bi-8-square:before{content:"\f7c3"}.bi-9-circle-fill:before{content:"\f7c6"}.bi-9-circle:before{content:"\f7c7"}.bi-9-square-fill:before{content:"\f7c8"}.bi-9-square:before{content:"\f7c9"}.bi-airplane-engines-fill:before{content:"\f7ca"}.bi-airplane-engines:before{content:"\f7cb"}.bi-airplane-fill:before{content:"\f7cc"}.bi-airplane:before{content:"\f7cd"}.bi-alexa:before{content:"\f7ce"}.bi-alipay:before{content:"\f7cf"}.bi-android:before{content:"\f7d0"}.bi-android2:before{content:"\f7d1"}.bi-box-fill:before{content:"\f7d2"}.bi-box-seam-fill:before{content:"\f7d3"}.bi-browser-chrome:before{content:"\f7d4"}.bi-browser-edge:before{content:"\f7d5"}.bi-browser-firefox:before{content:"\f7d6"}.bi-browser-safari:before{content:"\f7d7"}.bi-c-circle-fill:before{content:"\f7da"}.bi-c-circle:before{content:"\f7db"}.bi-c-square-fill:before{content:"\f7dc"}.bi-c-square:before{content:"\f7dd"}.bi-capsule-pill:before{content:"\f7de"}.bi-capsule:before{content:"\f7df"}.bi-car-front-fill:before{content:"\f7e0"}.bi-car-front:before{content:"\f7e1"}.bi-cassette-fill:before{content:"\f7e2"}.bi-cassette:before{content:"\f7e3"}.bi-cc-circle-fill:before{content:"\f7e6"}.bi-cc-circle:before{content:"\f7e7"}.bi-cc-square-fill:before{content:"\f7e8"}.bi-cc-square:before{content:"\f7e9"}.bi-cup-hot-fill:before{content:"\f7ea"}.bi-cup-hot:before{content:"\f7eb"}.bi-currency-rupee:before{content:"\f7ec"}.bi-dropbox:before{content:"\f7ed"}.bi-escape:before{content:"\f7ee"}.bi-fast-forward-btn-fill:before{content:"\f7ef"}.bi-fast-forward-btn:before{content:"\f7f0"}.bi-fast-forward-circle-fill:before{content:"\f7f1"}.bi-fast-forward-circle:before{content:"\f7f2"}.bi-fast-forward-fill:before{content:"\f7f3"}.bi-fast-forward:before{content:"\f7f4"}.bi-filetype-sql:before{content:"\f7f5"}.bi-fire:before{content:"\f7f6"}.bi-google-play:before{content:"\f7f7"}.bi-h-circle-fill:before{content:"\f7fa"}.bi-h-circle:before{content:"\f7fb"}.bi-h-square-fill:before{content:"\f7fc"}.bi-h-square:before{content:"\f7fd"}.bi-indent:before{content:"\f7fe"}.bi-lungs-fill:before{content:"\f7ff"}.bi-lungs:before{content:"\f800"}.bi-microsoft-teams:before{content:"\f801"}.bi-p-circle-fill:before{content:"\f804"}.bi-p-circle:before{content:"\f805"}.bi-p-square-fill:before{content:"\f806"}.bi-p-square:before{content:"\f807"}.bi-pass-fill:before{content:"\f808"}.bi-pass:before{content:"\f809"}.bi-prescription:before{content:"\f80a"}.bi-prescription2:before{content:"\f80b"}.bi-r-circle-fill:before{content:"\f80e"}.bi-r-circle:before{content:"\f80f"}.bi-r-square-fill:before{content:"\f810"}.bi-r-square:before{content:"\f811"}.bi-repeat-1:before{content:"\f812"}.bi-repeat:before{content:"\f813"}.bi-rewind-btn-fill:before{content:"\f814"}.bi-rewind-btn:before{content:"\f815"}.bi-rewind-circle-fill:before{content:"\f816"}.bi-rewind-circle:before{content:"\f817"}.bi-rewind-fill:before{content:"\f818"}.bi-rewind:before{content:"\f819"}.bi-train-freight-front-fill:before{content:"\f81a"}.bi-train-freight-front:before{content:"\f81b"}.bi-train-front-fill:before{content:"\f81c"}.bi-train-front:before{content:"\f81d"}.bi-train-lightrail-front-fill:before{content:"\f81e"}.bi-train-lightrail-front:before{content:"\f81f"}.bi-truck-front-fill:before{content:"\f820"}.bi-truck-front:before{content:"\f821"}.bi-ubuntu:before{content:"\f822"}.bi-unindent:before{content:"\f823"}.bi-unity:before{content:"\f824"}.bi-universal-access-circle:before{content:"\f825"}.bi-universal-access:before{content:"\f826"}.bi-virus:before{content:"\f827"}.bi-virus2:before{content:"\f828"}.bi-wechat:before{content:"\f829"}.bi-yelp:before{content:"\f82a"}.bi-sign-stop-fill:before{content:"\f82b"}.bi-sign-stop-lights-fill:before{content:"\f82c"}.bi-sign-stop-lights:before{content:"\f82d"}.bi-sign-stop:before{content:"\f82e"}.bi-sign-turn-left-fill:before{content:"\f82f"}.bi-sign-turn-left:before{content:"\f830"}.bi-sign-turn-right-fill:before{content:"\f831"}.bi-sign-turn-right:before{content:"\f832"}.bi-sign-turn-slight-left-fill:before{content:"\f833"}.bi-sign-turn-slight-left:before{content:"\f834"}.bi-sign-turn-slight-right-fill:before{content:"\f835"}.bi-sign-turn-slight-right:before{content:"\f836"}.bi-sign-yield-fill:before{content:"\f837"}.bi-sign-yield:before{content:"\f838"}.bi-ev-station-fill:before{content:"\f839"}.bi-ev-station:before{content:"\f83a"}.bi-fuel-pump-diesel-fill:before{content:"\f83b"}.bi-fuel-pump-diesel:before{content:"\f83c"}.bi-fuel-pump-fill:before{content:"\f83d"}.bi-fuel-pump:before{content:"\f83e"}.bi-0-circle-fill:before{content:"\f83f"}.bi-0-circle:before{content:"\f840"}.bi-0-square-fill:before{content:"\f841"}.bi-0-square:before{content:"\f842"}.bi-rocket-fill:before{content:"\f843"}.bi-rocket-takeoff-fill:before{content:"\f844"}.bi-rocket-takeoff:before{content:"\f845"}.bi-rocket:before{content:"\f846"}.bi-stripe:before{content:"\f847"}.bi-subscript:before{content:"\f848"}.bi-superscript:before{content:"\f849"}.bi-trello:before{content:"\f84a"}.bi-envelope-at-fill:before{content:"\f84b"}.bi-envelope-at:before{content:"\f84c"}.bi-regex:before{content:"\f84d"}.bi-text-wrap:before{content:"\f84e"}.bi-sign-dead-end-fill:before{content:"\f84f"}.bi-sign-dead-end:before{content:"\f850"}.bi-sign-do-not-enter-fill:before{content:"\f851"}.bi-sign-do-not-enter:before{content:"\f852"}.bi-sign-intersection-fill:before{content:"\f853"}.bi-sign-intersection-side-fill:before{content:"\f854"}.bi-sign-intersection-side:before{content:"\f855"}.bi-sign-intersection-t-fill:before{content:"\f856"}.bi-sign-intersection-t:before{content:"\f857"}.bi-sign-intersection-y-fill:before{content:"\f858"}.bi-sign-intersection-y:before{content:"\f859"}.bi-sign-intersection:before{content:"\f85a"}.bi-sign-merge-left-fill:before{content:"\f85b"}.bi-sign-merge-left:before{content:"\f85c"}.bi-sign-merge-right-fill:before{content:"\f85d"}.bi-sign-merge-right:before{content:"\f85e"}.bi-sign-no-left-turn-fill:before{content:"\f85f"}.bi-sign-no-left-turn:before{content:"\f860"}.bi-sign-no-parking-fill:before{content:"\f861"}.bi-sign-no-parking:before{content:"\f862"}.bi-sign-no-right-turn-fill:before{content:"\f863"}.bi-sign-no-right-turn:before{content:"\f864"}.bi-sign-railroad-fill:before{content:"\f865"}.bi-sign-railroad:before{content:"\f866"}.bi-building-add:before{content:"\f867"}.bi-building-check:before{content:"\f868"}.bi-building-dash:before{content:"\f869"}.bi-building-down:before{content:"\f86a"}.bi-building-exclamation:before{content:"\f86b"}.bi-building-fill-add:before{content:"\f86c"}.bi-building-fill-check:before{content:"\f86d"}.bi-building-fill-dash:before{content:"\f86e"}.bi-building-fill-down:before{content:"\f86f"}.bi-building-fill-exclamation:before{content:"\f870"}.bi-building-fill-gear:before{content:"\f871"}.bi-building-fill-lock:before{content:"\f872"}.bi-building-fill-slash:before{content:"\f873"}.bi-building-fill-up:before{content:"\f874"}.bi-building-fill-x:before{content:"\f875"}.bi-building-fill:before{content:"\f876"}.bi-building-gear:before{content:"\f877"}.bi-building-lock:before{content:"\f878"}.bi-building-slash:before{content:"\f879"}.bi-building-up:before{content:"\f87a"}.bi-building-x:before{content:"\f87b"}.bi-buildings-fill:before{content:"\f87c"}.bi-buildings:before{content:"\f87d"}.bi-bus-front-fill:before{content:"\f87e"}.bi-bus-front:before{content:"\f87f"}.bi-ev-front-fill:before{content:"\f880"}.bi-ev-front:before{content:"\f881"}.bi-globe-americas:before{content:"\f882"}.bi-globe-asia-australia:before{content:"\f883"}.bi-globe-central-south-asia:before{content:"\f884"}.bi-globe-europe-africa:before{content:"\f885"}.bi-house-add-fill:before{content:"\f886"}.bi-house-add:before{content:"\f887"}.bi-house-check-fill:before{content:"\f888"}.bi-house-check:before{content:"\f889"}.bi-house-dash-fill:before{content:"\f88a"}.bi-house-dash:before{content:"\f88b"}.bi-house-down-fill:before{content:"\f88c"}.bi-house-down:before{content:"\f88d"}.bi-house-exclamation-fill:before{content:"\f88e"}.bi-house-exclamation:before{content:"\f88f"}.bi-house-gear-fill:before{content:"\f890"}.bi-house-gear:before{content:"\f891"}.bi-house-lock-fill:before{content:"\f892"}.bi-house-lock:before{content:"\f893"}.bi-house-slash-fill:before{content:"\f894"}.bi-house-slash:before{content:"\f895"}.bi-house-up-fill:before{content:"\f896"}.bi-house-up:before{content:"\f897"}.bi-house-x-fill:before{content:"\f898"}.bi-house-x:before{content:"\f899"}.bi-person-add:before{content:"\f89a"}.bi-person-down:before{content:"\f89b"}.bi-person-exclamation:before{content:"\f89c"}.bi-person-fill-add:before{content:"\f89d"}.bi-person-fill-check:before{content:"\f89e"}.bi-person-fill-dash:before{content:"\f89f"}.bi-person-fill-down:before{content:"\f8a0"}.bi-person-fill-exclamation:before{content:"\f8a1"}.bi-person-fill-gear:before{content:"\f8a2"}.bi-person-fill-lock:before{content:"\f8a3"}.bi-person-fill-slash:before{content:"\f8a4"}.bi-person-fill-up:before{content:"\f8a5"}.bi-person-fill-x:before{content:"\f8a6"}.bi-person-gear:before{content:"\f8a7"}.bi-person-lock:before{content:"\f8a8"}.bi-person-slash:before{content:"\f8a9"}.bi-person-up:before{content:"\f8aa"}.bi-scooter:before{content:"\f8ab"}.bi-taxi-front-fill:before{content:"\f8ac"}.bi-taxi-front:before{content:"\f8ad"}.bi-amd:before{content:"\f8ae"}.bi-database-add:before{content:"\f8af"}.bi-database-check:before{content:"\f8b0"}.bi-database-dash:before{content:"\f8b1"}.bi-database-down:before{content:"\f8b2"}.bi-database-exclamation:before{content:"\f8b3"}.bi-database-fill-add:before{content:"\f8b4"}.bi-database-fill-check:before{content:"\f8b5"}.bi-database-fill-dash:before{content:"\f8b6"}.bi-database-fill-down:before{content:"\f8b7"}.bi-database-fill-exclamation:before{content:"\f8b8"}.bi-database-fill-gear:before{content:"\f8b9"}.bi-database-fill-lock:before{content:"\f8ba"}.bi-database-fill-slash:before{content:"\f8bb"}.bi-database-fill-up:before{content:"\f8bc"}.bi-database-fill-x:before{content:"\f8bd"}.bi-database-fill:before{content:"\f8be"}.bi-database-gear:before{content:"\f8bf"}.bi-database-lock:before{content:"\f8c0"}.bi-database-slash:before{content:"\f8c1"}.bi-database-up:before{content:"\f8c2"}.bi-database-x:before{content:"\f8c3"}.bi-database:before{content:"\f8c4"}.bi-houses-fill:before{content:"\f8c5"}.bi-houses:before{content:"\f8c6"}.bi-nvidia:before{content:"\f8c7"}.bi-person-vcard-fill:before{content:"\f8c8"}.bi-person-vcard:before{content:"\f8c9"}.bi-sina-weibo:before{content:"\f8ca"}.bi-tencent-qq:before{content:"\f8cb"}.bi-wikipedia:before{content:"\f8cc"}.bi-alphabet-uppercase:before{content:"\f2a5"}.bi-alphabet:before{content:"\f68a"}.bi-amazon:before{content:"\f68d"}.bi-arrows-collapse-vertical:before{content:"\f690"}.bi-arrows-expand-vertical:before{content:"\f695"}.bi-arrows-vertical:before{content:"\f698"}.bi-arrows:before{content:"\f6a2"}.bi-ban-fill:before{content:"\f6a3"}.bi-ban:before{content:"\f6b6"}.bi-bing:before{content:"\f6c2"}.bi-cake:before{content:"\f6e0"}.bi-cake2:before{content:"\f6ed"}.bi-cookie:before{content:"\f6ee"}.bi-copy:before{content:"\f759"}.bi-crosshair:before{content:"\f769"}.bi-crosshair2:before{content:"\f794"}.bi-emoji-astonished-fill:before{content:"\f795"}.bi-emoji-astonished:before{content:"\f79a"}.bi-emoji-grimace-fill:before{content:"\f79b"}.bi-emoji-grimace:before{content:"\f7a0"}.bi-emoji-grin-fill:before{content:"\f7a1"}.bi-emoji-grin:before{content:"\f7a6"}.bi-emoji-surprise-fill:before{content:"\f7a7"}.bi-emoji-surprise:before{content:"\f7ac"}.bi-emoji-tear-fill:before{content:"\f7ad"}.bi-emoji-tear:before{content:"\f7b2"}.bi-envelope-arrow-down-fill:before{content:"\f7b3"}.bi-envelope-arrow-down:before{content:"\f7b8"}.bi-envelope-arrow-up-fill:before{content:"\f7b9"}.bi-envelope-arrow-up:before{content:"\f7be"}.bi-feather:before{content:"\f7bf"}.bi-feather2:before{content:"\f7c4"}.bi-floppy-fill:before{content:"\f7c5"}.bi-floppy:before{content:"\f7d8"}.bi-floppy2-fill:before{content:"\f7d9"}.bi-floppy2:before{content:"\f7e4"}.bi-gitlab:before{content:"\f7e5"}.bi-highlighter:before{content:"\f7f8"}.bi-marker-tip:before{content:"\f802"}.bi-nvme-fill:before{content:"\f803"}.bi-nvme:before{content:"\f80c"}.bi-opencollective:before{content:"\f80d"}.bi-pci-card-network:before{content:"\f8cd"}.bi-pci-card-sound:before{content:"\f8ce"}.bi-radar:before{content:"\f8cf"}.bi-send-arrow-down-fill:before{content:"\f8d0"}.bi-send-arrow-down:before{content:"\f8d1"}.bi-send-arrow-up-fill:before{content:"\f8d2"}.bi-send-arrow-up:before{content:"\f8d3"}.bi-sim-slash-fill:before{content:"\f8d4"}.bi-sim-slash:before{content:"\f8d5"}.bi-sourceforge:before{content:"\f8d6"}.bi-substack:before{content:"\f8d7"}.bi-threads-fill:before{content:"\f8d8"}.bi-threads:before{content:"\f8d9"}.bi-transparency:before{content:"\f8da"}.bi-twitter-x:before{content:"\f8db"}.bi-type-h4:before{content:"\f8dc"}.bi-type-h5:before{content:"\f8dd"}.bi-type-h6:before{content:"\f8de"}.bi-backpack-fill:before{content:"\f8df"}.bi-backpack:before{content:"\f8e0"}.bi-backpack2-fill:before{content:"\f8e1"}.bi-backpack2:before{content:"\f8e2"}.bi-backpack3-fill:before{content:"\f8e3"}.bi-backpack3:before{content:"\f8e4"}.bi-backpack4-fill:before{content:"\f8e5"}.bi-backpack4:before{content:"\f8e6"}.bi-brilliance:before{content:"\f8e7"}.bi-cake-fill:before{content:"\f8e8"}.bi-cake2-fill:before{content:"\f8e9"}.bi-duffle-fill:before{content:"\f8ea"}.bi-duffle:before{content:"\f8eb"}.bi-exposure:before{content:"\f8ec"}.bi-gender-neuter:before{content:"\f8ed"}.bi-highlights:before{content:"\f8ee"}.bi-luggage-fill:before{content:"\f8ef"}.bi-luggage:before{content:"\f8f0"}.bi-mailbox-flag:before{content:"\f8f1"}.bi-mailbox2-flag:before{content:"\f8f2"}.bi-noise-reduction:before{content:"\f8f3"}.bi-passport-fill:before{content:"\f8f4"}.bi-passport:before{content:"\f8f5"}.bi-person-arms-up:before{content:"\f8f6"}.bi-person-raised-hand:before{content:"\f8f7"}.bi-person-standing-dress:before{content:"\f8f8"}.bi-person-standing:before{content:"\f8f9"}.bi-person-walking:before{content:"\f8fa"}.bi-person-wheelchair:before{content:"\f8fb"}.bi-shadows:before{content:"\f8fc"}.bi-suitcase-fill:before{content:"\f8fd"}.bi-suitcase-lg-fill:before{content:"\f8fe"}.bi-suitcase-lg:before{content:"\f8ff"}.bi-suitcase:before{content:"\f900"}.bi-suitcase2-fill:before{content:"\f901"}.bi-suitcase2:before{content:"\f902"}.bi-vignette:before{content:"\f903"}.navbar,.bg-primary{background:#648fff}html,body{height:100vh}body{display:flex;flex-direction:column;flex-wrap:nowrap}header{flex-shrink:0;flex-grow:0}main{flex-shrink:0;flex-grow:1;margin-bottom:auto;margin-top:0}footer{flex-shrink:0;flex-grow:0;margin-bottom:0;margin-top:auto}.squared{width:100%;padding-top:100%;position:relative}.squared>*{position:absolute;top:0;left:0;width:100%;height:100%} diff --git a/docs/styles.2596d53c3a552682.css b/docs/styles.2596d53c3a552682.css deleted file mode 100644 index 12d670a..0000000 --- a/docs/styles.2596d53c3a552682.css +++ /dev/null @@ -1,5 +0,0 @@ -@charset "UTF-8";:root,[data-bs-theme=light]{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-primary: #0d6efd;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-primary-rgb: 13, 110, 253;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 25, 135, 84;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 255, 193, 7;--bs-danger-rgb: 220, 53, 69;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 33, 37, 41;--bs-primary-text-emphasis: #052c65;--bs-secondary-text-emphasis: #2b2f32;--bs-success-text-emphasis: #0a3622;--bs-info-text-emphasis: #055160;--bs-warning-text-emphasis: #664d03;--bs-danger-text-emphasis: #58151c;--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: #cfe2ff;--bs-secondary-bg-subtle: #e2e3e5;--bs-success-bg-subtle: #d1e7dd;--bs-info-bg-subtle: #cff4fc;--bs-warning-bg-subtle: #fff3cd;--bs-danger-bg-subtle: #f8d7da;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #9ec5fe;--bs-secondary-border-subtle: #c4c8cb;--bs-success-border-subtle: #a3cfbb;--bs-info-border-subtle: #9eeaf9;--bs-warning-border-subtle: #ffe69c;--bs-danger-border-subtle: #f1aeb5;--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size: 1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-color-rgb: 33, 37, 41;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(33, 37, 41, .75);--bs-secondary-color-rgb: 33, 37, 41;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(33, 37, 41, .5);--bs-tertiary-color-rgb: 33, 37, 41;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #0d6efd;--bs-link-color-rgb: 13, 110, 253;--bs-link-decoration: underline;--bs-link-hover-color: #0a58ca;--bs-link-hover-color-rgb: 10, 88, 202;--bs-code-color: #d63384;--bs-highlight-color: #212529;--bs-highlight-bg: #fff3cd;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, .175);--bs-border-radius: .375rem;--bs-border-radius-sm: .25rem;--bs-border-radius-lg: .5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);--bs-box-shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, .175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, .075);--bs-focus-ring-width: .25rem;--bs-focus-ring-opacity: .25;--bs-focus-ring-color: rgba(13, 110, 253, .25);--bs-form-valid-color: #198754;--bs-form-valid-border-color: #198754;--bs-form-invalid-color: #dc3545;--bs-form-invalid-border-color: #dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #212529;--bs-body-bg-rgb: 33, 37, 41;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, .75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(222, 226, 230, .5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: #2b3035;--bs-tertiary-bg-rgb: 43, 48, 53;--bs-primary-text-emphasis: #6ea8fe;--bs-secondary-text-emphasis: #a7acb1;--bs-success-text-emphasis: #75b798;--bs-info-text-emphasis: #6edff6;--bs-warning-text-emphasis: #ffda6a;--bs-danger-text-emphasis: #ea868f;--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: #031633;--bs-secondary-bg-subtle: #161719;--bs-success-bg-subtle: #051b11;--bs-info-bg-subtle: #032830;--bs-warning-bg-subtle: #332701;--bs-danger-bg-subtle: #2c0b0e;--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: #084298;--bs-secondary-border-subtle: #41464b;--bs-success-border-subtle: #0f5132;--bs-info-border-subtle: #087990;--bs-warning-border-subtle: #997404;--bs-danger-border-subtle: #842029;--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: #6ea8fe;--bs-link-hover-color: #8bb9fe;--bs-link-color-rgb: 110, 168, 254;--bs-link-hover-color-rgb: 139, 185, 254;--bs-code-color: #e685b5;--bs-highlight-color: #dee2e6;--bs-highlight-bg: #664d03;--bs-border-color: #495057;--bs-border-color-translucent: rgba(255, 255, 255, .15);--bs-form-valid-color: #75b798;--bs-form-valid-border-color: #75b798;--bs-form-invalid-color: #ea868f;--bs-form-invalid-border-color: #ea868f}*,*:before,*:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:.875em}mark,.mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media (min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.clearfix:after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity, 1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity, 1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity, 1))!important}.link-primary:hover,.link-primary:focus{color:RGBA(10,88,202,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity, 1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity, 1))!important}.link-secondary:hover,.link-secondary:focus{color:RGBA(86,94,100,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity, 1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity, 1))!important}.link-success:hover,.link-success:focus{color:RGBA(20,108,67,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity, 1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity, 1))!important}.link-info:hover,.link-info:focus{color:RGBA(61,213,243,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity, 1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity, 1))!important}.link-warning:hover,.link-warning:focus{color:RGBA(255,205,57,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity, 1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity, 1))!important}.link-danger:hover,.link-danger:focus{color:RGBA(176,42,55,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity, 1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity, 1))!important}.link-light:hover,.link-light:focus{color:RGBA(249,250,251,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity, 1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity, 1))!important}.link-dark:hover,.link-dark:focus{color:RGBA(26,30,33,var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity, 1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity, 1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity, 1))!important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity, .75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity, .75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, .5));text-underline-offset:.25em;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute!important}.stretched-link:after{position:absolute;inset:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: .5rem;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), .65);--bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), .8);--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), .3);--bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y: .3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x: .5rem;--bs-navbar-toggler-padding-y: .25rem;--bs-navbar-toggler-padding-x: .75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), .15);--bs-navbar-toggler-border-radius: var(--bs-border-radius);--bs-navbar-toggler-focus-width: .25rem;--bs-navbar-toggler-transition: box-shadow .15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: rgba(255, 255, 255, .55);--bs-navbar-hover-color: rgba(255, 255, 255, .75);--bs-navbar-disabled-color: rgba(255, 255, 255, .25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255, 255, 255, .1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.badge{--bs-badge-padding-x: .65em;--bs-badge-padding-y: .35em;--bs-badge-font-size: .75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size: .75rem;--bs-progress-bg: var(--bs-secondary-bg);--bs-progress-border-radius: var(--bs-border-radius);--bs-progress-box-shadow: var(--bs-box-shadow-inset);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #0d6efd;--bs-progress-bar-transition: width .6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: .125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: .5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y: .5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), .03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: .75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;inset:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{object-fit:contain!important}.object-fit-cover{object-fit:cover!important}.object-fit-fill{object-fit:fill!important}.object-fit-scale{object-fit:scale-down!important}.object-fit-none{object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity: .1}.border-opacity-25{--bs-border-opacity: .25}.border-opacity-50{--bs-border-opacity: .5}.border-opacity-75{--bs-border-opacity: .75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{column-gap:0!important}.column-gap-1{column-gap:.25rem!important}.column-gap-2{column-gap:.5rem!important}.column-gap-3{column-gap:1rem!important}.column-gap-4{column-gap:1.5rem!important}.column-gap-5{column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity: 1;color:#00000080!important}.text-white-50{--bs-text-opacity: 1;color:#ffffff80!important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity: 1;color:inherit!important}.text-opacity-25{--bs-text-opacity: .25}.text-opacity-50{--bs-text-opacity: .5}.text-opacity-75{--bs-text-opacity: .75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10,.link-opacity-10-hover:hover{--bs-link-opacity: .1}.link-opacity-25,.link-opacity-25-hover:hover{--bs-link-opacity: .25}.link-opacity-50,.link-opacity-50-hover:hover{--bs-link-opacity: .5}.link-opacity-75,.link-opacity-75-hover:hover{--bs-link-opacity: .75}.link-opacity-100,.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1,.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2,.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3,.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity, 1))!important}.link-underline-opacity-0,.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10,.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: .1}.link-underline-opacity-25,.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: .25}.link-underline-opacity-50,.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: .5}.link-underline-opacity-75,.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: .75}.link-underline-opacity-100,.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity: 1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity: .1}.bg-opacity-25{--bs-bg-opacity: .25}.bg-opacity-50{--bs-bg-opacity: .5}.bg-opacity-75{--bs-bg-opacity: .75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width: 576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{object-fit:contain!important}.object-fit-sm-cover{object-fit:cover!important}.object-fit-sm-fill{object-fit:fill!important}.object-fit-sm-scale{object-fit:scale-down!important}.object-fit-sm-none{object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{column-gap:0!important}.column-gap-sm-1{column-gap:.25rem!important}.column-gap-sm-2{column-gap:.5rem!important}.column-gap-sm-3{column-gap:1rem!important}.column-gap-sm-4{column-gap:1.5rem!important}.column-gap-sm-5{column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{object-fit:contain!important}.object-fit-md-cover{object-fit:cover!important}.object-fit-md-fill{object-fit:fill!important}.object-fit-md-scale{object-fit:scale-down!important}.object-fit-md-none{object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{column-gap:0!important}.column-gap-md-1{column-gap:.25rem!important}.column-gap-md-2{column-gap:.5rem!important}.column-gap-md-3{column-gap:1rem!important}.column-gap-md-4{column-gap:1.5rem!important}.column-gap-md-5{column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{object-fit:contain!important}.object-fit-lg-cover{object-fit:cover!important}.object-fit-lg-fill{object-fit:fill!important}.object-fit-lg-scale{object-fit:scale-down!important}.object-fit-lg-none{object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{column-gap:0!important}.column-gap-lg-1{column-gap:.25rem!important}.column-gap-lg-2{column-gap:.5rem!important}.column-gap-lg-3{column-gap:1rem!important}.column-gap-lg-4{column-gap:1.5rem!important}.column-gap-lg-5{column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{object-fit:contain!important}.object-fit-xl-cover{object-fit:cover!important}.object-fit-xl-fill{object-fit:fill!important}.object-fit-xl-scale{object-fit:scale-down!important}.object-fit-xl-none{object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{column-gap:0!important}.column-gap-xl-1{column-gap:.25rem!important}.column-gap-xl-2{column-gap:.5rem!important}.column-gap-xl-3{column-gap:1rem!important}.column-gap-xl-4{column-gap:1.5rem!important}.column-gap-xl-5{column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width: 1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{object-fit:contain!important}.object-fit-xxl-cover{object-fit:cover!important}.object-fit-xxl-fill{object-fit:fill!important}.object-fit-xxl-scale{object-fit:scale-down!important}.object-fit-xxl-none{object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{column-gap:0!important}.column-gap-xxl-1{column-gap:.25rem!important}.column-gap-xxl-2{column-gap:.5rem!important}.column-gap-xxl-3{column-gap:1rem!important}.column-gap-xxl-4{column-gap:1.5rem!important}.column-gap-xxl-5{column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width: 1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}/*! - * Bootstrap Icons v1.11.3 (https://icons.getbootstrap.com/) - * Copyright 2019-2024 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) - */@font-face{font-display:block;font-family:bootstrap-icons;src:url(bootstrap-icons.bfa90bda92a84a6a.woff2?24e3eb84d0bcaf83d77f904c78ac1f47) format("woff2"),url(bootstrap-icons.70a9dee9e5ab72aa.woff?24e3eb84d0bcaf83d77f904c78ac1f47) format("woff")}.bi:before,[class^=bi-]:before,[class*=" bi-"]:before{display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-weight:400!important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bi-123:before{content:"\f67f"}.bi-alarm-fill:before{content:"\f101"}.bi-alarm:before{content:"\f102"}.bi-align-bottom:before{content:"\f103"}.bi-align-center:before{content:"\f104"}.bi-align-end:before{content:"\f105"}.bi-align-middle:before{content:"\f106"}.bi-align-start:before{content:"\f107"}.bi-align-top:before{content:"\f108"}.bi-alt:before{content:"\f109"}.bi-app-indicator:before{content:"\f10a"}.bi-app:before{content:"\f10b"}.bi-archive-fill:before{content:"\f10c"}.bi-archive:before{content:"\f10d"}.bi-arrow-90deg-down:before{content:"\f10e"}.bi-arrow-90deg-left:before{content:"\f10f"}.bi-arrow-90deg-right:before{content:"\f110"}.bi-arrow-90deg-up:before{content:"\f111"}.bi-arrow-bar-down:before{content:"\f112"}.bi-arrow-bar-left:before{content:"\f113"}.bi-arrow-bar-right:before{content:"\f114"}.bi-arrow-bar-up:before{content:"\f115"}.bi-arrow-clockwise:before{content:"\f116"}.bi-arrow-counterclockwise:before{content:"\f117"}.bi-arrow-down-circle-fill:before{content:"\f118"}.bi-arrow-down-circle:before{content:"\f119"}.bi-arrow-down-left-circle-fill:before{content:"\f11a"}.bi-arrow-down-left-circle:before{content:"\f11b"}.bi-arrow-down-left-square-fill:before{content:"\f11c"}.bi-arrow-down-left-square:before{content:"\f11d"}.bi-arrow-down-left:before{content:"\f11e"}.bi-arrow-down-right-circle-fill:before{content:"\f11f"}.bi-arrow-down-right-circle:before{content:"\f120"}.bi-arrow-down-right-square-fill:before{content:"\f121"}.bi-arrow-down-right-square:before{content:"\f122"}.bi-arrow-down-right:before{content:"\f123"}.bi-arrow-down-short:before{content:"\f124"}.bi-arrow-down-square-fill:before{content:"\f125"}.bi-arrow-down-square:before{content:"\f126"}.bi-arrow-down-up:before{content:"\f127"}.bi-arrow-down:before{content:"\f128"}.bi-arrow-left-circle-fill:before{content:"\f129"}.bi-arrow-left-circle:before{content:"\f12a"}.bi-arrow-left-right:before{content:"\f12b"}.bi-arrow-left-short:before{content:"\f12c"}.bi-arrow-left-square-fill:before{content:"\f12d"}.bi-arrow-left-square:before{content:"\f12e"}.bi-arrow-left:before{content:"\f12f"}.bi-arrow-repeat:before{content:"\f130"}.bi-arrow-return-left:before{content:"\f131"}.bi-arrow-return-right:before{content:"\f132"}.bi-arrow-right-circle-fill:before{content:"\f133"}.bi-arrow-right-circle:before{content:"\f134"}.bi-arrow-right-short:before{content:"\f135"}.bi-arrow-right-square-fill:before{content:"\f136"}.bi-arrow-right-square:before{content:"\f137"}.bi-arrow-right:before{content:"\f138"}.bi-arrow-up-circle-fill:before{content:"\f139"}.bi-arrow-up-circle:before{content:"\f13a"}.bi-arrow-up-left-circle-fill:before{content:"\f13b"}.bi-arrow-up-left-circle:before{content:"\f13c"}.bi-arrow-up-left-square-fill:before{content:"\f13d"}.bi-arrow-up-left-square:before{content:"\f13e"}.bi-arrow-up-left:before{content:"\f13f"}.bi-arrow-up-right-circle-fill:before{content:"\f140"}.bi-arrow-up-right-circle:before{content:"\f141"}.bi-arrow-up-right-square-fill:before{content:"\f142"}.bi-arrow-up-right-square:before{content:"\f143"}.bi-arrow-up-right:before{content:"\f144"}.bi-arrow-up-short:before{content:"\f145"}.bi-arrow-up-square-fill:before{content:"\f146"}.bi-arrow-up-square:before{content:"\f147"}.bi-arrow-up:before{content:"\f148"}.bi-arrows-angle-contract:before{content:"\f149"}.bi-arrows-angle-expand:before{content:"\f14a"}.bi-arrows-collapse:before{content:"\f14b"}.bi-arrows-expand:before{content:"\f14c"}.bi-arrows-fullscreen:before{content:"\f14d"}.bi-arrows-move:before{content:"\f14e"}.bi-aspect-ratio-fill:before{content:"\f14f"}.bi-aspect-ratio:before{content:"\f150"}.bi-asterisk:before{content:"\f151"}.bi-at:before{content:"\f152"}.bi-award-fill:before{content:"\f153"}.bi-award:before{content:"\f154"}.bi-back:before{content:"\f155"}.bi-backspace-fill:before{content:"\f156"}.bi-backspace-reverse-fill:before{content:"\f157"}.bi-backspace-reverse:before{content:"\f158"}.bi-backspace:before{content:"\f159"}.bi-badge-3d-fill:before{content:"\f15a"}.bi-badge-3d:before{content:"\f15b"}.bi-badge-4k-fill:before{content:"\f15c"}.bi-badge-4k:before{content:"\f15d"}.bi-badge-8k-fill:before{content:"\f15e"}.bi-badge-8k:before{content:"\f15f"}.bi-badge-ad-fill:before{content:"\f160"}.bi-badge-ad:before{content:"\f161"}.bi-badge-ar-fill:before{content:"\f162"}.bi-badge-ar:before{content:"\f163"}.bi-badge-cc-fill:before{content:"\f164"}.bi-badge-cc:before{content:"\f165"}.bi-badge-hd-fill:before{content:"\f166"}.bi-badge-hd:before{content:"\f167"}.bi-badge-tm-fill:before{content:"\f168"}.bi-badge-tm:before{content:"\f169"}.bi-badge-vo-fill:before{content:"\f16a"}.bi-badge-vo:before{content:"\f16b"}.bi-badge-vr-fill:before{content:"\f16c"}.bi-badge-vr:before{content:"\f16d"}.bi-badge-wc-fill:before{content:"\f16e"}.bi-badge-wc:before{content:"\f16f"}.bi-bag-check-fill:before{content:"\f170"}.bi-bag-check:before{content:"\f171"}.bi-bag-dash-fill:before{content:"\f172"}.bi-bag-dash:before{content:"\f173"}.bi-bag-fill:before{content:"\f174"}.bi-bag-plus-fill:before{content:"\f175"}.bi-bag-plus:before{content:"\f176"}.bi-bag-x-fill:before{content:"\f177"}.bi-bag-x:before{content:"\f178"}.bi-bag:before{content:"\f179"}.bi-bar-chart-fill:before{content:"\f17a"}.bi-bar-chart-line-fill:before{content:"\f17b"}.bi-bar-chart-line:before{content:"\f17c"}.bi-bar-chart-steps:before{content:"\f17d"}.bi-bar-chart:before{content:"\f17e"}.bi-basket-fill:before{content:"\f17f"}.bi-basket:before{content:"\f180"}.bi-basket2-fill:before{content:"\f181"}.bi-basket2:before{content:"\f182"}.bi-basket3-fill:before{content:"\f183"}.bi-basket3:before{content:"\f184"}.bi-battery-charging:before{content:"\f185"}.bi-battery-full:before{content:"\f186"}.bi-battery-half:before{content:"\f187"}.bi-battery:before{content:"\f188"}.bi-bell-fill:before{content:"\f189"}.bi-bell:before{content:"\f18a"}.bi-bezier:before{content:"\f18b"}.bi-bezier2:before{content:"\f18c"}.bi-bicycle:before{content:"\f18d"}.bi-binoculars-fill:before{content:"\f18e"}.bi-binoculars:before{content:"\f18f"}.bi-blockquote-left:before{content:"\f190"}.bi-blockquote-right:before{content:"\f191"}.bi-book-fill:before{content:"\f192"}.bi-book-half:before{content:"\f193"}.bi-book:before{content:"\f194"}.bi-bookmark-check-fill:before{content:"\f195"}.bi-bookmark-check:before{content:"\f196"}.bi-bookmark-dash-fill:before{content:"\f197"}.bi-bookmark-dash:before{content:"\f198"}.bi-bookmark-fill:before{content:"\f199"}.bi-bookmark-heart-fill:before{content:"\f19a"}.bi-bookmark-heart:before{content:"\f19b"}.bi-bookmark-plus-fill:before{content:"\f19c"}.bi-bookmark-plus:before{content:"\f19d"}.bi-bookmark-star-fill:before{content:"\f19e"}.bi-bookmark-star:before{content:"\f19f"}.bi-bookmark-x-fill:before{content:"\f1a0"}.bi-bookmark-x:before{content:"\f1a1"}.bi-bookmark:before{content:"\f1a2"}.bi-bookmarks-fill:before{content:"\f1a3"}.bi-bookmarks:before{content:"\f1a4"}.bi-bookshelf:before{content:"\f1a5"}.bi-bootstrap-fill:before{content:"\f1a6"}.bi-bootstrap-reboot:before{content:"\f1a7"}.bi-bootstrap:before{content:"\f1a8"}.bi-border-all:before{content:"\f1a9"}.bi-border-bottom:before{content:"\f1aa"}.bi-border-center:before{content:"\f1ab"}.bi-border-inner:before{content:"\f1ac"}.bi-border-left:before{content:"\f1ad"}.bi-border-middle:before{content:"\f1ae"}.bi-border-outer:before{content:"\f1af"}.bi-border-right:before{content:"\f1b0"}.bi-border-style:before{content:"\f1b1"}.bi-border-top:before{content:"\f1b2"}.bi-border-width:before{content:"\f1b3"}.bi-border:before{content:"\f1b4"}.bi-bounding-box-circles:before{content:"\f1b5"}.bi-bounding-box:before{content:"\f1b6"}.bi-box-arrow-down-left:before{content:"\f1b7"}.bi-box-arrow-down-right:before{content:"\f1b8"}.bi-box-arrow-down:before{content:"\f1b9"}.bi-box-arrow-in-down-left:before{content:"\f1ba"}.bi-box-arrow-in-down-right:before{content:"\f1bb"}.bi-box-arrow-in-down:before{content:"\f1bc"}.bi-box-arrow-in-left:before{content:"\f1bd"}.bi-box-arrow-in-right:before{content:"\f1be"}.bi-box-arrow-in-up-left:before{content:"\f1bf"}.bi-box-arrow-in-up-right:before{content:"\f1c0"}.bi-box-arrow-in-up:before{content:"\f1c1"}.bi-box-arrow-left:before{content:"\f1c2"}.bi-box-arrow-right:before{content:"\f1c3"}.bi-box-arrow-up-left:before{content:"\f1c4"}.bi-box-arrow-up-right:before{content:"\f1c5"}.bi-box-arrow-up:before{content:"\f1c6"}.bi-box-seam:before{content:"\f1c7"}.bi-box:before{content:"\f1c8"}.bi-braces:before{content:"\f1c9"}.bi-bricks:before{content:"\f1ca"}.bi-briefcase-fill:before{content:"\f1cb"}.bi-briefcase:before{content:"\f1cc"}.bi-brightness-alt-high-fill:before{content:"\f1cd"}.bi-brightness-alt-high:before{content:"\f1ce"}.bi-brightness-alt-low-fill:before{content:"\f1cf"}.bi-brightness-alt-low:before{content:"\f1d0"}.bi-brightness-high-fill:before{content:"\f1d1"}.bi-brightness-high:before{content:"\f1d2"}.bi-brightness-low-fill:before{content:"\f1d3"}.bi-brightness-low:before{content:"\f1d4"}.bi-broadcast-pin:before{content:"\f1d5"}.bi-broadcast:before{content:"\f1d6"}.bi-brush-fill:before{content:"\f1d7"}.bi-brush:before{content:"\f1d8"}.bi-bucket-fill:before{content:"\f1d9"}.bi-bucket:before{content:"\f1da"}.bi-bug-fill:before{content:"\f1db"}.bi-bug:before{content:"\f1dc"}.bi-building:before{content:"\f1dd"}.bi-bullseye:before{content:"\f1de"}.bi-calculator-fill:before{content:"\f1df"}.bi-calculator:before{content:"\f1e0"}.bi-calendar-check-fill:before{content:"\f1e1"}.bi-calendar-check:before{content:"\f1e2"}.bi-calendar-date-fill:before{content:"\f1e3"}.bi-calendar-date:before{content:"\f1e4"}.bi-calendar-day-fill:before{content:"\f1e5"}.bi-calendar-day:before{content:"\f1e6"}.bi-calendar-event-fill:before{content:"\f1e7"}.bi-calendar-event:before{content:"\f1e8"}.bi-calendar-fill:before{content:"\f1e9"}.bi-calendar-minus-fill:before{content:"\f1ea"}.bi-calendar-minus:before{content:"\f1eb"}.bi-calendar-month-fill:before{content:"\f1ec"}.bi-calendar-month:before{content:"\f1ed"}.bi-calendar-plus-fill:before{content:"\f1ee"}.bi-calendar-plus:before{content:"\f1ef"}.bi-calendar-range-fill:before{content:"\f1f0"}.bi-calendar-range:before{content:"\f1f1"}.bi-calendar-week-fill:before{content:"\f1f2"}.bi-calendar-week:before{content:"\f1f3"}.bi-calendar-x-fill:before{content:"\f1f4"}.bi-calendar-x:before{content:"\f1f5"}.bi-calendar:before{content:"\f1f6"}.bi-calendar2-check-fill:before{content:"\f1f7"}.bi-calendar2-check:before{content:"\f1f8"}.bi-calendar2-date-fill:before{content:"\f1f9"}.bi-calendar2-date:before{content:"\f1fa"}.bi-calendar2-day-fill:before{content:"\f1fb"}.bi-calendar2-day:before{content:"\f1fc"}.bi-calendar2-event-fill:before{content:"\f1fd"}.bi-calendar2-event:before{content:"\f1fe"}.bi-calendar2-fill:before{content:"\f1ff"}.bi-calendar2-minus-fill:before{content:"\f200"}.bi-calendar2-minus:before{content:"\f201"}.bi-calendar2-month-fill:before{content:"\f202"}.bi-calendar2-month:before{content:"\f203"}.bi-calendar2-plus-fill:before{content:"\f204"}.bi-calendar2-plus:before{content:"\f205"}.bi-calendar2-range-fill:before{content:"\f206"}.bi-calendar2-range:before{content:"\f207"}.bi-calendar2-week-fill:before{content:"\f208"}.bi-calendar2-week:before{content:"\f209"}.bi-calendar2-x-fill:before{content:"\f20a"}.bi-calendar2-x:before{content:"\f20b"}.bi-calendar2:before{content:"\f20c"}.bi-calendar3-event-fill:before{content:"\f20d"}.bi-calendar3-event:before{content:"\f20e"}.bi-calendar3-fill:before{content:"\f20f"}.bi-calendar3-range-fill:before{content:"\f210"}.bi-calendar3-range:before{content:"\f211"}.bi-calendar3-week-fill:before{content:"\f212"}.bi-calendar3-week:before{content:"\f213"}.bi-calendar3:before{content:"\f214"}.bi-calendar4-event:before{content:"\f215"}.bi-calendar4-range:before{content:"\f216"}.bi-calendar4-week:before{content:"\f217"}.bi-calendar4:before{content:"\f218"}.bi-camera-fill:before{content:"\f219"}.bi-camera-reels-fill:before{content:"\f21a"}.bi-camera-reels:before{content:"\f21b"}.bi-camera-video-fill:before{content:"\f21c"}.bi-camera-video-off-fill:before{content:"\f21d"}.bi-camera-video-off:before{content:"\f21e"}.bi-camera-video:before{content:"\f21f"}.bi-camera:before{content:"\f220"}.bi-camera2:before{content:"\f221"}.bi-capslock-fill:before{content:"\f222"}.bi-capslock:before{content:"\f223"}.bi-card-checklist:before{content:"\f224"}.bi-card-heading:before{content:"\f225"}.bi-card-image:before{content:"\f226"}.bi-card-list:before{content:"\f227"}.bi-card-text:before{content:"\f228"}.bi-caret-down-fill:before{content:"\f229"}.bi-caret-down-square-fill:before{content:"\f22a"}.bi-caret-down-square:before{content:"\f22b"}.bi-caret-down:before{content:"\f22c"}.bi-caret-left-fill:before{content:"\f22d"}.bi-caret-left-square-fill:before{content:"\f22e"}.bi-caret-left-square:before{content:"\f22f"}.bi-caret-left:before{content:"\f230"}.bi-caret-right-fill:before{content:"\f231"}.bi-caret-right-square-fill:before{content:"\f232"}.bi-caret-right-square:before{content:"\f233"}.bi-caret-right:before{content:"\f234"}.bi-caret-up-fill:before{content:"\f235"}.bi-caret-up-square-fill:before{content:"\f236"}.bi-caret-up-square:before{content:"\f237"}.bi-caret-up:before{content:"\f238"}.bi-cart-check-fill:before{content:"\f239"}.bi-cart-check:before{content:"\f23a"}.bi-cart-dash-fill:before{content:"\f23b"}.bi-cart-dash:before{content:"\f23c"}.bi-cart-fill:before{content:"\f23d"}.bi-cart-plus-fill:before{content:"\f23e"}.bi-cart-plus:before{content:"\f23f"}.bi-cart-x-fill:before{content:"\f240"}.bi-cart-x:before{content:"\f241"}.bi-cart:before{content:"\f242"}.bi-cart2:before{content:"\f243"}.bi-cart3:before{content:"\f244"}.bi-cart4:before{content:"\f245"}.bi-cash-stack:before{content:"\f246"}.bi-cash:before{content:"\f247"}.bi-cast:before{content:"\f248"}.bi-chat-dots-fill:before{content:"\f249"}.bi-chat-dots:before{content:"\f24a"}.bi-chat-fill:before{content:"\f24b"}.bi-chat-left-dots-fill:before{content:"\f24c"}.bi-chat-left-dots:before{content:"\f24d"}.bi-chat-left-fill:before{content:"\f24e"}.bi-chat-left-quote-fill:before{content:"\f24f"}.bi-chat-left-quote:before{content:"\f250"}.bi-chat-left-text-fill:before{content:"\f251"}.bi-chat-left-text:before{content:"\f252"}.bi-chat-left:before{content:"\f253"}.bi-chat-quote-fill:before{content:"\f254"}.bi-chat-quote:before{content:"\f255"}.bi-chat-right-dots-fill:before{content:"\f256"}.bi-chat-right-dots:before{content:"\f257"}.bi-chat-right-fill:before{content:"\f258"}.bi-chat-right-quote-fill:before{content:"\f259"}.bi-chat-right-quote:before{content:"\f25a"}.bi-chat-right-text-fill:before{content:"\f25b"}.bi-chat-right-text:before{content:"\f25c"}.bi-chat-right:before{content:"\f25d"}.bi-chat-square-dots-fill:before{content:"\f25e"}.bi-chat-square-dots:before{content:"\f25f"}.bi-chat-square-fill:before{content:"\f260"}.bi-chat-square-quote-fill:before{content:"\f261"}.bi-chat-square-quote:before{content:"\f262"}.bi-chat-square-text-fill:before{content:"\f263"}.bi-chat-square-text:before{content:"\f264"}.bi-chat-square:before{content:"\f265"}.bi-chat-text-fill:before{content:"\f266"}.bi-chat-text:before{content:"\f267"}.bi-chat:before{content:"\f268"}.bi-check-all:before{content:"\f269"}.bi-check-circle-fill:before{content:"\f26a"}.bi-check-circle:before{content:"\f26b"}.bi-check-square-fill:before{content:"\f26c"}.bi-check-square:before{content:"\f26d"}.bi-check:before{content:"\f26e"}.bi-check2-all:before{content:"\f26f"}.bi-check2-circle:before{content:"\f270"}.bi-check2-square:before{content:"\f271"}.bi-check2:before{content:"\f272"}.bi-chevron-bar-contract:before{content:"\f273"}.bi-chevron-bar-down:before{content:"\f274"}.bi-chevron-bar-expand:before{content:"\f275"}.bi-chevron-bar-left:before{content:"\f276"}.bi-chevron-bar-right:before{content:"\f277"}.bi-chevron-bar-up:before{content:"\f278"}.bi-chevron-compact-down:before{content:"\f279"}.bi-chevron-compact-left:before{content:"\f27a"}.bi-chevron-compact-right:before{content:"\f27b"}.bi-chevron-compact-up:before{content:"\f27c"}.bi-chevron-contract:before{content:"\f27d"}.bi-chevron-double-down:before{content:"\f27e"}.bi-chevron-double-left:before{content:"\f27f"}.bi-chevron-double-right:before{content:"\f280"}.bi-chevron-double-up:before{content:"\f281"}.bi-chevron-down:before{content:"\f282"}.bi-chevron-expand:before{content:"\f283"}.bi-chevron-left:before{content:"\f284"}.bi-chevron-right:before{content:"\f285"}.bi-chevron-up:before{content:"\f286"}.bi-circle-fill:before{content:"\f287"}.bi-circle-half:before{content:"\f288"}.bi-circle-square:before{content:"\f289"}.bi-circle:before{content:"\f28a"}.bi-clipboard-check:before{content:"\f28b"}.bi-clipboard-data:before{content:"\f28c"}.bi-clipboard-minus:before{content:"\f28d"}.bi-clipboard-plus:before{content:"\f28e"}.bi-clipboard-x:before{content:"\f28f"}.bi-clipboard:before{content:"\f290"}.bi-clock-fill:before{content:"\f291"}.bi-clock-history:before{content:"\f292"}.bi-clock:before{content:"\f293"}.bi-cloud-arrow-down-fill:before{content:"\f294"}.bi-cloud-arrow-down:before{content:"\f295"}.bi-cloud-arrow-up-fill:before{content:"\f296"}.bi-cloud-arrow-up:before{content:"\f297"}.bi-cloud-check-fill:before{content:"\f298"}.bi-cloud-check:before{content:"\f299"}.bi-cloud-download-fill:before{content:"\f29a"}.bi-cloud-download:before{content:"\f29b"}.bi-cloud-drizzle-fill:before{content:"\f29c"}.bi-cloud-drizzle:before{content:"\f29d"}.bi-cloud-fill:before{content:"\f29e"}.bi-cloud-fog-fill:before{content:"\f29f"}.bi-cloud-fog:before{content:"\f2a0"}.bi-cloud-fog2-fill:before{content:"\f2a1"}.bi-cloud-fog2:before{content:"\f2a2"}.bi-cloud-hail-fill:before{content:"\f2a3"}.bi-cloud-hail:before{content:"\f2a4"}.bi-cloud-haze-fill:before{content:"\f2a6"}.bi-cloud-haze:before{content:"\f2a7"}.bi-cloud-haze2-fill:before{content:"\f2a8"}.bi-cloud-lightning-fill:before{content:"\f2a9"}.bi-cloud-lightning-rain-fill:before{content:"\f2aa"}.bi-cloud-lightning-rain:before{content:"\f2ab"}.bi-cloud-lightning:before{content:"\f2ac"}.bi-cloud-minus-fill:before{content:"\f2ad"}.bi-cloud-minus:before{content:"\f2ae"}.bi-cloud-moon-fill:before{content:"\f2af"}.bi-cloud-moon:before{content:"\f2b0"}.bi-cloud-plus-fill:before{content:"\f2b1"}.bi-cloud-plus:before{content:"\f2b2"}.bi-cloud-rain-fill:before{content:"\f2b3"}.bi-cloud-rain-heavy-fill:before{content:"\f2b4"}.bi-cloud-rain-heavy:before{content:"\f2b5"}.bi-cloud-rain:before{content:"\f2b6"}.bi-cloud-slash-fill:before{content:"\f2b7"}.bi-cloud-slash:before{content:"\f2b8"}.bi-cloud-sleet-fill:before{content:"\f2b9"}.bi-cloud-sleet:before{content:"\f2ba"}.bi-cloud-snow-fill:before{content:"\f2bb"}.bi-cloud-snow:before{content:"\f2bc"}.bi-cloud-sun-fill:before{content:"\f2bd"}.bi-cloud-sun:before{content:"\f2be"}.bi-cloud-upload-fill:before{content:"\f2bf"}.bi-cloud-upload:before{content:"\f2c0"}.bi-cloud:before{content:"\f2c1"}.bi-clouds-fill:before{content:"\f2c2"}.bi-clouds:before{content:"\f2c3"}.bi-cloudy-fill:before{content:"\f2c4"}.bi-cloudy:before{content:"\f2c5"}.bi-code-slash:before{content:"\f2c6"}.bi-code-square:before{content:"\f2c7"}.bi-code:before{content:"\f2c8"}.bi-collection-fill:before{content:"\f2c9"}.bi-collection-play-fill:before{content:"\f2ca"}.bi-collection-play:before{content:"\f2cb"}.bi-collection:before{content:"\f2cc"}.bi-columns-gap:before{content:"\f2cd"}.bi-columns:before{content:"\f2ce"}.bi-command:before{content:"\f2cf"}.bi-compass-fill:before{content:"\f2d0"}.bi-compass:before{content:"\f2d1"}.bi-cone-striped:before{content:"\f2d2"}.bi-cone:before{content:"\f2d3"}.bi-controller:before{content:"\f2d4"}.bi-cpu-fill:before{content:"\f2d5"}.bi-cpu:before{content:"\f2d6"}.bi-credit-card-2-back-fill:before{content:"\f2d7"}.bi-credit-card-2-back:before{content:"\f2d8"}.bi-credit-card-2-front-fill:before{content:"\f2d9"}.bi-credit-card-2-front:before{content:"\f2da"}.bi-credit-card-fill:before{content:"\f2db"}.bi-credit-card:before{content:"\f2dc"}.bi-crop:before{content:"\f2dd"}.bi-cup-fill:before{content:"\f2de"}.bi-cup-straw:before{content:"\f2df"}.bi-cup:before{content:"\f2e0"}.bi-cursor-fill:before{content:"\f2e1"}.bi-cursor-text:before{content:"\f2e2"}.bi-cursor:before{content:"\f2e3"}.bi-dash-circle-dotted:before{content:"\f2e4"}.bi-dash-circle-fill:before{content:"\f2e5"}.bi-dash-circle:before{content:"\f2e6"}.bi-dash-square-dotted:before{content:"\f2e7"}.bi-dash-square-fill:before{content:"\f2e8"}.bi-dash-square:before{content:"\f2e9"}.bi-dash:before{content:"\f2ea"}.bi-diagram-2-fill:before{content:"\f2eb"}.bi-diagram-2:before{content:"\f2ec"}.bi-diagram-3-fill:before{content:"\f2ed"}.bi-diagram-3:before{content:"\f2ee"}.bi-diamond-fill:before{content:"\f2ef"}.bi-diamond-half:before{content:"\f2f0"}.bi-diamond:before{content:"\f2f1"}.bi-dice-1-fill:before{content:"\f2f2"}.bi-dice-1:before{content:"\f2f3"}.bi-dice-2-fill:before{content:"\f2f4"}.bi-dice-2:before{content:"\f2f5"}.bi-dice-3-fill:before{content:"\f2f6"}.bi-dice-3:before{content:"\f2f7"}.bi-dice-4-fill:before{content:"\f2f8"}.bi-dice-4:before{content:"\f2f9"}.bi-dice-5-fill:before{content:"\f2fa"}.bi-dice-5:before{content:"\f2fb"}.bi-dice-6-fill:before{content:"\f2fc"}.bi-dice-6:before{content:"\f2fd"}.bi-disc-fill:before{content:"\f2fe"}.bi-disc:before{content:"\f2ff"}.bi-discord:before{content:"\f300"}.bi-display-fill:before{content:"\f301"}.bi-display:before{content:"\f302"}.bi-distribute-horizontal:before{content:"\f303"}.bi-distribute-vertical:before{content:"\f304"}.bi-door-closed-fill:before{content:"\f305"}.bi-door-closed:before{content:"\f306"}.bi-door-open-fill:before{content:"\f307"}.bi-door-open:before{content:"\f308"}.bi-dot:before{content:"\f309"}.bi-download:before{content:"\f30a"}.bi-droplet-fill:before{content:"\f30b"}.bi-droplet-half:before{content:"\f30c"}.bi-droplet:before{content:"\f30d"}.bi-earbuds:before{content:"\f30e"}.bi-easel-fill:before{content:"\f30f"}.bi-easel:before{content:"\f310"}.bi-egg-fill:before{content:"\f311"}.bi-egg-fried:before{content:"\f312"}.bi-egg:before{content:"\f313"}.bi-eject-fill:before{content:"\f314"}.bi-eject:before{content:"\f315"}.bi-emoji-angry-fill:before{content:"\f316"}.bi-emoji-angry:before{content:"\f317"}.bi-emoji-dizzy-fill:before{content:"\f318"}.bi-emoji-dizzy:before{content:"\f319"}.bi-emoji-expressionless-fill:before{content:"\f31a"}.bi-emoji-expressionless:before{content:"\f31b"}.bi-emoji-frown-fill:before{content:"\f31c"}.bi-emoji-frown:before{content:"\f31d"}.bi-emoji-heart-eyes-fill:before{content:"\f31e"}.bi-emoji-heart-eyes:before{content:"\f31f"}.bi-emoji-laughing-fill:before{content:"\f320"}.bi-emoji-laughing:before{content:"\f321"}.bi-emoji-neutral-fill:before{content:"\f322"}.bi-emoji-neutral:before{content:"\f323"}.bi-emoji-smile-fill:before{content:"\f324"}.bi-emoji-smile-upside-down-fill:before{content:"\f325"}.bi-emoji-smile-upside-down:before{content:"\f326"}.bi-emoji-smile:before{content:"\f327"}.bi-emoji-sunglasses-fill:before{content:"\f328"}.bi-emoji-sunglasses:before{content:"\f329"}.bi-emoji-wink-fill:before{content:"\f32a"}.bi-emoji-wink:before{content:"\f32b"}.bi-envelope-fill:before{content:"\f32c"}.bi-envelope-open-fill:before{content:"\f32d"}.bi-envelope-open:before{content:"\f32e"}.bi-envelope:before{content:"\f32f"}.bi-eraser-fill:before{content:"\f330"}.bi-eraser:before{content:"\f331"}.bi-exclamation-circle-fill:before{content:"\f332"}.bi-exclamation-circle:before{content:"\f333"}.bi-exclamation-diamond-fill:before{content:"\f334"}.bi-exclamation-diamond:before{content:"\f335"}.bi-exclamation-octagon-fill:before{content:"\f336"}.bi-exclamation-octagon:before{content:"\f337"}.bi-exclamation-square-fill:before{content:"\f338"}.bi-exclamation-square:before{content:"\f339"}.bi-exclamation-triangle-fill:before{content:"\f33a"}.bi-exclamation-triangle:before{content:"\f33b"}.bi-exclamation:before{content:"\f33c"}.bi-exclude:before{content:"\f33d"}.bi-eye-fill:before{content:"\f33e"}.bi-eye-slash-fill:before{content:"\f33f"}.bi-eye-slash:before{content:"\f340"}.bi-eye:before{content:"\f341"}.bi-eyedropper:before{content:"\f342"}.bi-eyeglasses:before{content:"\f343"}.bi-facebook:before{content:"\f344"}.bi-file-arrow-down-fill:before{content:"\f345"}.bi-file-arrow-down:before{content:"\f346"}.bi-file-arrow-up-fill:before{content:"\f347"}.bi-file-arrow-up:before{content:"\f348"}.bi-file-bar-graph-fill:before{content:"\f349"}.bi-file-bar-graph:before{content:"\f34a"}.bi-file-binary-fill:before{content:"\f34b"}.bi-file-binary:before{content:"\f34c"}.bi-file-break-fill:before{content:"\f34d"}.bi-file-break:before{content:"\f34e"}.bi-file-check-fill:before{content:"\f34f"}.bi-file-check:before{content:"\f350"}.bi-file-code-fill:before{content:"\f351"}.bi-file-code:before{content:"\f352"}.bi-file-diff-fill:before{content:"\f353"}.bi-file-diff:before{content:"\f354"}.bi-file-earmark-arrow-down-fill:before{content:"\f355"}.bi-file-earmark-arrow-down:before{content:"\f356"}.bi-file-earmark-arrow-up-fill:before{content:"\f357"}.bi-file-earmark-arrow-up:before{content:"\f358"}.bi-file-earmark-bar-graph-fill:before{content:"\f359"}.bi-file-earmark-bar-graph:before{content:"\f35a"}.bi-file-earmark-binary-fill:before{content:"\f35b"}.bi-file-earmark-binary:before{content:"\f35c"}.bi-file-earmark-break-fill:before{content:"\f35d"}.bi-file-earmark-break:before{content:"\f35e"}.bi-file-earmark-check-fill:before{content:"\f35f"}.bi-file-earmark-check:before{content:"\f360"}.bi-file-earmark-code-fill:before{content:"\f361"}.bi-file-earmark-code:before{content:"\f362"}.bi-file-earmark-diff-fill:before{content:"\f363"}.bi-file-earmark-diff:before{content:"\f364"}.bi-file-earmark-easel-fill:before{content:"\f365"}.bi-file-earmark-easel:before{content:"\f366"}.bi-file-earmark-excel-fill:before{content:"\f367"}.bi-file-earmark-excel:before{content:"\f368"}.bi-file-earmark-fill:before{content:"\f369"}.bi-file-earmark-font-fill:before{content:"\f36a"}.bi-file-earmark-font:before{content:"\f36b"}.bi-file-earmark-image-fill:before{content:"\f36c"}.bi-file-earmark-image:before{content:"\f36d"}.bi-file-earmark-lock-fill:before{content:"\f36e"}.bi-file-earmark-lock:before{content:"\f36f"}.bi-file-earmark-lock2-fill:before{content:"\f370"}.bi-file-earmark-lock2:before{content:"\f371"}.bi-file-earmark-medical-fill:before{content:"\f372"}.bi-file-earmark-medical:before{content:"\f373"}.bi-file-earmark-minus-fill:before{content:"\f374"}.bi-file-earmark-minus:before{content:"\f375"}.bi-file-earmark-music-fill:before{content:"\f376"}.bi-file-earmark-music:before{content:"\f377"}.bi-file-earmark-person-fill:before{content:"\f378"}.bi-file-earmark-person:before{content:"\f379"}.bi-file-earmark-play-fill:before{content:"\f37a"}.bi-file-earmark-play:before{content:"\f37b"}.bi-file-earmark-plus-fill:before{content:"\f37c"}.bi-file-earmark-plus:before{content:"\f37d"}.bi-file-earmark-post-fill:before{content:"\f37e"}.bi-file-earmark-post:before{content:"\f37f"}.bi-file-earmark-ppt-fill:before{content:"\f380"}.bi-file-earmark-ppt:before{content:"\f381"}.bi-file-earmark-richtext-fill:before{content:"\f382"}.bi-file-earmark-richtext:before{content:"\f383"}.bi-file-earmark-ruled-fill:before{content:"\f384"}.bi-file-earmark-ruled:before{content:"\f385"}.bi-file-earmark-slides-fill:before{content:"\f386"}.bi-file-earmark-slides:before{content:"\f387"}.bi-file-earmark-spreadsheet-fill:before{content:"\f388"}.bi-file-earmark-spreadsheet:before{content:"\f389"}.bi-file-earmark-text-fill:before{content:"\f38a"}.bi-file-earmark-text:before{content:"\f38b"}.bi-file-earmark-word-fill:before{content:"\f38c"}.bi-file-earmark-word:before{content:"\f38d"}.bi-file-earmark-x-fill:before{content:"\f38e"}.bi-file-earmark-x:before{content:"\f38f"}.bi-file-earmark-zip-fill:before{content:"\f390"}.bi-file-earmark-zip:before{content:"\f391"}.bi-file-earmark:before{content:"\f392"}.bi-file-easel-fill:before{content:"\f393"}.bi-file-easel:before{content:"\f394"}.bi-file-excel-fill:before{content:"\f395"}.bi-file-excel:before{content:"\f396"}.bi-file-fill:before{content:"\f397"}.bi-file-font-fill:before{content:"\f398"}.bi-file-font:before{content:"\f399"}.bi-file-image-fill:before{content:"\f39a"}.bi-file-image:before{content:"\f39b"}.bi-file-lock-fill:before{content:"\f39c"}.bi-file-lock:before{content:"\f39d"}.bi-file-lock2-fill:before{content:"\f39e"}.bi-file-lock2:before{content:"\f39f"}.bi-file-medical-fill:before{content:"\f3a0"}.bi-file-medical:before{content:"\f3a1"}.bi-file-minus-fill:before{content:"\f3a2"}.bi-file-minus:before{content:"\f3a3"}.bi-file-music-fill:before{content:"\f3a4"}.bi-file-music:before{content:"\f3a5"}.bi-file-person-fill:before{content:"\f3a6"}.bi-file-person:before{content:"\f3a7"}.bi-file-play-fill:before{content:"\f3a8"}.bi-file-play:before{content:"\f3a9"}.bi-file-plus-fill:before{content:"\f3aa"}.bi-file-plus:before{content:"\f3ab"}.bi-file-post-fill:before{content:"\f3ac"}.bi-file-post:before{content:"\f3ad"}.bi-file-ppt-fill:before{content:"\f3ae"}.bi-file-ppt:before{content:"\f3af"}.bi-file-richtext-fill:before{content:"\f3b0"}.bi-file-richtext:before{content:"\f3b1"}.bi-file-ruled-fill:before{content:"\f3b2"}.bi-file-ruled:before{content:"\f3b3"}.bi-file-slides-fill:before{content:"\f3b4"}.bi-file-slides:before{content:"\f3b5"}.bi-file-spreadsheet-fill:before{content:"\f3b6"}.bi-file-spreadsheet:before{content:"\f3b7"}.bi-file-text-fill:before{content:"\f3b8"}.bi-file-text:before{content:"\f3b9"}.bi-file-word-fill:before{content:"\f3ba"}.bi-file-word:before{content:"\f3bb"}.bi-file-x-fill:before{content:"\f3bc"}.bi-file-x:before{content:"\f3bd"}.bi-file-zip-fill:before{content:"\f3be"}.bi-file-zip:before{content:"\f3bf"}.bi-file:before{content:"\f3c0"}.bi-files-alt:before{content:"\f3c1"}.bi-files:before{content:"\f3c2"}.bi-film:before{content:"\f3c3"}.bi-filter-circle-fill:before{content:"\f3c4"}.bi-filter-circle:before{content:"\f3c5"}.bi-filter-left:before{content:"\f3c6"}.bi-filter-right:before{content:"\f3c7"}.bi-filter-square-fill:before{content:"\f3c8"}.bi-filter-square:before{content:"\f3c9"}.bi-filter:before{content:"\f3ca"}.bi-flag-fill:before{content:"\f3cb"}.bi-flag:before{content:"\f3cc"}.bi-flower1:before{content:"\f3cd"}.bi-flower2:before{content:"\f3ce"}.bi-flower3:before{content:"\f3cf"}.bi-folder-check:before{content:"\f3d0"}.bi-folder-fill:before{content:"\f3d1"}.bi-folder-minus:before{content:"\f3d2"}.bi-folder-plus:before{content:"\f3d3"}.bi-folder-symlink-fill:before{content:"\f3d4"}.bi-folder-symlink:before{content:"\f3d5"}.bi-folder-x:before{content:"\f3d6"}.bi-folder:before{content:"\f3d7"}.bi-folder2-open:before{content:"\f3d8"}.bi-folder2:before{content:"\f3d9"}.bi-fonts:before{content:"\f3da"}.bi-forward-fill:before{content:"\f3db"}.bi-forward:before{content:"\f3dc"}.bi-front:before{content:"\f3dd"}.bi-fullscreen-exit:before{content:"\f3de"}.bi-fullscreen:before{content:"\f3df"}.bi-funnel-fill:before{content:"\f3e0"}.bi-funnel:before{content:"\f3e1"}.bi-gear-fill:before{content:"\f3e2"}.bi-gear-wide-connected:before{content:"\f3e3"}.bi-gear-wide:before{content:"\f3e4"}.bi-gear:before{content:"\f3e5"}.bi-gem:before{content:"\f3e6"}.bi-geo-alt-fill:before{content:"\f3e7"}.bi-geo-alt:before{content:"\f3e8"}.bi-geo-fill:before{content:"\f3e9"}.bi-geo:before{content:"\f3ea"}.bi-gift-fill:before{content:"\f3eb"}.bi-gift:before{content:"\f3ec"}.bi-github:before{content:"\f3ed"}.bi-globe:before{content:"\f3ee"}.bi-globe2:before{content:"\f3ef"}.bi-google:before{content:"\f3f0"}.bi-graph-down:before{content:"\f3f1"}.bi-graph-up:before{content:"\f3f2"}.bi-grid-1x2-fill:before{content:"\f3f3"}.bi-grid-1x2:before{content:"\f3f4"}.bi-grid-3x2-gap-fill:before{content:"\f3f5"}.bi-grid-3x2-gap:before{content:"\f3f6"}.bi-grid-3x2:before{content:"\f3f7"}.bi-grid-3x3-gap-fill:before{content:"\f3f8"}.bi-grid-3x3-gap:before{content:"\f3f9"}.bi-grid-3x3:before{content:"\f3fa"}.bi-grid-fill:before{content:"\f3fb"}.bi-grid:before{content:"\f3fc"}.bi-grip-horizontal:before{content:"\f3fd"}.bi-grip-vertical:before{content:"\f3fe"}.bi-hammer:before{content:"\f3ff"}.bi-hand-index-fill:before{content:"\f400"}.bi-hand-index-thumb-fill:before{content:"\f401"}.bi-hand-index-thumb:before{content:"\f402"}.bi-hand-index:before{content:"\f403"}.bi-hand-thumbs-down-fill:before{content:"\f404"}.bi-hand-thumbs-down:before{content:"\f405"}.bi-hand-thumbs-up-fill:before{content:"\f406"}.bi-hand-thumbs-up:before{content:"\f407"}.bi-handbag-fill:before{content:"\f408"}.bi-handbag:before{content:"\f409"}.bi-hash:before{content:"\f40a"}.bi-hdd-fill:before{content:"\f40b"}.bi-hdd-network-fill:before{content:"\f40c"}.bi-hdd-network:before{content:"\f40d"}.bi-hdd-rack-fill:before{content:"\f40e"}.bi-hdd-rack:before{content:"\f40f"}.bi-hdd-stack-fill:before{content:"\f410"}.bi-hdd-stack:before{content:"\f411"}.bi-hdd:before{content:"\f412"}.bi-headphones:before{content:"\f413"}.bi-headset:before{content:"\f414"}.bi-heart-fill:before{content:"\f415"}.bi-heart-half:before{content:"\f416"}.bi-heart:before{content:"\f417"}.bi-heptagon-fill:before{content:"\f418"}.bi-heptagon-half:before{content:"\f419"}.bi-heptagon:before{content:"\f41a"}.bi-hexagon-fill:before{content:"\f41b"}.bi-hexagon-half:before{content:"\f41c"}.bi-hexagon:before{content:"\f41d"}.bi-hourglass-bottom:before{content:"\f41e"}.bi-hourglass-split:before{content:"\f41f"}.bi-hourglass-top:before{content:"\f420"}.bi-hourglass:before{content:"\f421"}.bi-house-door-fill:before{content:"\f422"}.bi-house-door:before{content:"\f423"}.bi-house-fill:before{content:"\f424"}.bi-house:before{content:"\f425"}.bi-hr:before{content:"\f426"}.bi-hurricane:before{content:"\f427"}.bi-image-alt:before{content:"\f428"}.bi-image-fill:before{content:"\f429"}.bi-image:before{content:"\f42a"}.bi-images:before{content:"\f42b"}.bi-inbox-fill:before{content:"\f42c"}.bi-inbox:before{content:"\f42d"}.bi-inboxes-fill:before{content:"\f42e"}.bi-inboxes:before{content:"\f42f"}.bi-info-circle-fill:before{content:"\f430"}.bi-info-circle:before{content:"\f431"}.bi-info-square-fill:before{content:"\f432"}.bi-info-square:before{content:"\f433"}.bi-info:before{content:"\f434"}.bi-input-cursor-text:before{content:"\f435"}.bi-input-cursor:before{content:"\f436"}.bi-instagram:before{content:"\f437"}.bi-intersect:before{content:"\f438"}.bi-journal-album:before{content:"\f439"}.bi-journal-arrow-down:before{content:"\f43a"}.bi-journal-arrow-up:before{content:"\f43b"}.bi-journal-bookmark-fill:before{content:"\f43c"}.bi-journal-bookmark:before{content:"\f43d"}.bi-journal-check:before{content:"\f43e"}.bi-journal-code:before{content:"\f43f"}.bi-journal-medical:before{content:"\f440"}.bi-journal-minus:before{content:"\f441"}.bi-journal-plus:before{content:"\f442"}.bi-journal-richtext:before{content:"\f443"}.bi-journal-text:before{content:"\f444"}.bi-journal-x:before{content:"\f445"}.bi-journal:before{content:"\f446"}.bi-journals:before{content:"\f447"}.bi-joystick:before{content:"\f448"}.bi-justify-left:before{content:"\f449"}.bi-justify-right:before{content:"\f44a"}.bi-justify:before{content:"\f44b"}.bi-kanban-fill:before{content:"\f44c"}.bi-kanban:before{content:"\f44d"}.bi-key-fill:before{content:"\f44e"}.bi-key:before{content:"\f44f"}.bi-keyboard-fill:before{content:"\f450"}.bi-keyboard:before{content:"\f451"}.bi-ladder:before{content:"\f452"}.bi-lamp-fill:before{content:"\f453"}.bi-lamp:before{content:"\f454"}.bi-laptop-fill:before{content:"\f455"}.bi-laptop:before{content:"\f456"}.bi-layer-backward:before{content:"\f457"}.bi-layer-forward:before{content:"\f458"}.bi-layers-fill:before{content:"\f459"}.bi-layers-half:before{content:"\f45a"}.bi-layers:before{content:"\f45b"}.bi-layout-sidebar-inset-reverse:before{content:"\f45c"}.bi-layout-sidebar-inset:before{content:"\f45d"}.bi-layout-sidebar-reverse:before{content:"\f45e"}.bi-layout-sidebar:before{content:"\f45f"}.bi-layout-split:before{content:"\f460"}.bi-layout-text-sidebar-reverse:before{content:"\f461"}.bi-layout-text-sidebar:before{content:"\f462"}.bi-layout-text-window-reverse:before{content:"\f463"}.bi-layout-text-window:before{content:"\f464"}.bi-layout-three-columns:before{content:"\f465"}.bi-layout-wtf:before{content:"\f466"}.bi-life-preserver:before{content:"\f467"}.bi-lightbulb-fill:before{content:"\f468"}.bi-lightbulb-off-fill:before{content:"\f469"}.bi-lightbulb-off:before{content:"\f46a"}.bi-lightbulb:before{content:"\f46b"}.bi-lightning-charge-fill:before{content:"\f46c"}.bi-lightning-charge:before{content:"\f46d"}.bi-lightning-fill:before{content:"\f46e"}.bi-lightning:before{content:"\f46f"}.bi-link-45deg:before{content:"\f470"}.bi-link:before{content:"\f471"}.bi-linkedin:before{content:"\f472"}.bi-list-check:before{content:"\f473"}.bi-list-nested:before{content:"\f474"}.bi-list-ol:before{content:"\f475"}.bi-list-stars:before{content:"\f476"}.bi-list-task:before{content:"\f477"}.bi-list-ul:before{content:"\f478"}.bi-list:before{content:"\f479"}.bi-lock-fill:before{content:"\f47a"}.bi-lock:before{content:"\f47b"}.bi-mailbox:before{content:"\f47c"}.bi-mailbox2:before{content:"\f47d"}.bi-map-fill:before{content:"\f47e"}.bi-map:before{content:"\f47f"}.bi-markdown-fill:before{content:"\f480"}.bi-markdown:before{content:"\f481"}.bi-mask:before{content:"\f482"}.bi-megaphone-fill:before{content:"\f483"}.bi-megaphone:before{content:"\f484"}.bi-menu-app-fill:before{content:"\f485"}.bi-menu-app:before{content:"\f486"}.bi-menu-button-fill:before{content:"\f487"}.bi-menu-button-wide-fill:before{content:"\f488"}.bi-menu-button-wide:before{content:"\f489"}.bi-menu-button:before{content:"\f48a"}.bi-menu-down:before{content:"\f48b"}.bi-menu-up:before{content:"\f48c"}.bi-mic-fill:before{content:"\f48d"}.bi-mic-mute-fill:before{content:"\f48e"}.bi-mic-mute:before{content:"\f48f"}.bi-mic:before{content:"\f490"}.bi-minecart-loaded:before{content:"\f491"}.bi-minecart:before{content:"\f492"}.bi-moisture:before{content:"\f493"}.bi-moon-fill:before{content:"\f494"}.bi-moon-stars-fill:before{content:"\f495"}.bi-moon-stars:before{content:"\f496"}.bi-moon:before{content:"\f497"}.bi-mouse-fill:before{content:"\f498"}.bi-mouse:before{content:"\f499"}.bi-mouse2-fill:before{content:"\f49a"}.bi-mouse2:before{content:"\f49b"}.bi-mouse3-fill:before{content:"\f49c"}.bi-mouse3:before{content:"\f49d"}.bi-music-note-beamed:before{content:"\f49e"}.bi-music-note-list:before{content:"\f49f"}.bi-music-note:before{content:"\f4a0"}.bi-music-player-fill:before{content:"\f4a1"}.bi-music-player:before{content:"\f4a2"}.bi-newspaper:before{content:"\f4a3"}.bi-node-minus-fill:before{content:"\f4a4"}.bi-node-minus:before{content:"\f4a5"}.bi-node-plus-fill:before{content:"\f4a6"}.bi-node-plus:before{content:"\f4a7"}.bi-nut-fill:before{content:"\f4a8"}.bi-nut:before{content:"\f4a9"}.bi-octagon-fill:before{content:"\f4aa"}.bi-octagon-half:before{content:"\f4ab"}.bi-octagon:before{content:"\f4ac"}.bi-option:before{content:"\f4ad"}.bi-outlet:before{content:"\f4ae"}.bi-paint-bucket:before{content:"\f4af"}.bi-palette-fill:before{content:"\f4b0"}.bi-palette:before{content:"\f4b1"}.bi-palette2:before{content:"\f4b2"}.bi-paperclip:before{content:"\f4b3"}.bi-paragraph:before{content:"\f4b4"}.bi-patch-check-fill:before{content:"\f4b5"}.bi-patch-check:before{content:"\f4b6"}.bi-patch-exclamation-fill:before{content:"\f4b7"}.bi-patch-exclamation:before{content:"\f4b8"}.bi-patch-minus-fill:before{content:"\f4b9"}.bi-patch-minus:before{content:"\f4ba"}.bi-patch-plus-fill:before{content:"\f4bb"}.bi-patch-plus:before{content:"\f4bc"}.bi-patch-question-fill:before{content:"\f4bd"}.bi-patch-question:before{content:"\f4be"}.bi-pause-btn-fill:before{content:"\f4bf"}.bi-pause-btn:before{content:"\f4c0"}.bi-pause-circle-fill:before{content:"\f4c1"}.bi-pause-circle:before{content:"\f4c2"}.bi-pause-fill:before{content:"\f4c3"}.bi-pause:before{content:"\f4c4"}.bi-peace-fill:before{content:"\f4c5"}.bi-peace:before{content:"\f4c6"}.bi-pen-fill:before{content:"\f4c7"}.bi-pen:before{content:"\f4c8"}.bi-pencil-fill:before{content:"\f4c9"}.bi-pencil-square:before{content:"\f4ca"}.bi-pencil:before{content:"\f4cb"}.bi-pentagon-fill:before{content:"\f4cc"}.bi-pentagon-half:before{content:"\f4cd"}.bi-pentagon:before{content:"\f4ce"}.bi-people-fill:before{content:"\f4cf"}.bi-people:before{content:"\f4d0"}.bi-percent:before{content:"\f4d1"}.bi-person-badge-fill:before{content:"\f4d2"}.bi-person-badge:before{content:"\f4d3"}.bi-person-bounding-box:before{content:"\f4d4"}.bi-person-check-fill:before{content:"\f4d5"}.bi-person-check:before{content:"\f4d6"}.bi-person-circle:before{content:"\f4d7"}.bi-person-dash-fill:before{content:"\f4d8"}.bi-person-dash:before{content:"\f4d9"}.bi-person-fill:before{content:"\f4da"}.bi-person-lines-fill:before{content:"\f4db"}.bi-person-plus-fill:before{content:"\f4dc"}.bi-person-plus:before{content:"\f4dd"}.bi-person-square:before{content:"\f4de"}.bi-person-x-fill:before{content:"\f4df"}.bi-person-x:before{content:"\f4e0"}.bi-person:before{content:"\f4e1"}.bi-phone-fill:before{content:"\f4e2"}.bi-phone-landscape-fill:before{content:"\f4e3"}.bi-phone-landscape:before{content:"\f4e4"}.bi-phone-vibrate-fill:before{content:"\f4e5"}.bi-phone-vibrate:before{content:"\f4e6"}.bi-phone:before{content:"\f4e7"}.bi-pie-chart-fill:before{content:"\f4e8"}.bi-pie-chart:before{content:"\f4e9"}.bi-pin-angle-fill:before{content:"\f4ea"}.bi-pin-angle:before{content:"\f4eb"}.bi-pin-fill:before{content:"\f4ec"}.bi-pin:before{content:"\f4ed"}.bi-pip-fill:before{content:"\f4ee"}.bi-pip:before{content:"\f4ef"}.bi-play-btn-fill:before{content:"\f4f0"}.bi-play-btn:before{content:"\f4f1"}.bi-play-circle-fill:before{content:"\f4f2"}.bi-play-circle:before{content:"\f4f3"}.bi-play-fill:before{content:"\f4f4"}.bi-play:before{content:"\f4f5"}.bi-plug-fill:before{content:"\f4f6"}.bi-plug:before{content:"\f4f7"}.bi-plus-circle-dotted:before{content:"\f4f8"}.bi-plus-circle-fill:before{content:"\f4f9"}.bi-plus-circle:before{content:"\f4fa"}.bi-plus-square-dotted:before{content:"\f4fb"}.bi-plus-square-fill:before{content:"\f4fc"}.bi-plus-square:before{content:"\f4fd"}.bi-plus:before{content:"\f4fe"}.bi-power:before{content:"\f4ff"}.bi-printer-fill:before{content:"\f500"}.bi-printer:before{content:"\f501"}.bi-puzzle-fill:before{content:"\f502"}.bi-puzzle:before{content:"\f503"}.bi-question-circle-fill:before{content:"\f504"}.bi-question-circle:before{content:"\f505"}.bi-question-diamond-fill:before{content:"\f506"}.bi-question-diamond:before{content:"\f507"}.bi-question-octagon-fill:before{content:"\f508"}.bi-question-octagon:before{content:"\f509"}.bi-question-square-fill:before{content:"\f50a"}.bi-question-square:before{content:"\f50b"}.bi-question:before{content:"\f50c"}.bi-rainbow:before{content:"\f50d"}.bi-receipt-cutoff:before{content:"\f50e"}.bi-receipt:before{content:"\f50f"}.bi-reception-0:before{content:"\f510"}.bi-reception-1:before{content:"\f511"}.bi-reception-2:before{content:"\f512"}.bi-reception-3:before{content:"\f513"}.bi-reception-4:before{content:"\f514"}.bi-record-btn-fill:before{content:"\f515"}.bi-record-btn:before{content:"\f516"}.bi-record-circle-fill:before{content:"\f517"}.bi-record-circle:before{content:"\f518"}.bi-record-fill:before{content:"\f519"}.bi-record:before{content:"\f51a"}.bi-record2-fill:before{content:"\f51b"}.bi-record2:before{content:"\f51c"}.bi-reply-all-fill:before{content:"\f51d"}.bi-reply-all:before{content:"\f51e"}.bi-reply-fill:before{content:"\f51f"}.bi-reply:before{content:"\f520"}.bi-rss-fill:before{content:"\f521"}.bi-rss:before{content:"\f522"}.bi-rulers:before{content:"\f523"}.bi-save-fill:before{content:"\f524"}.bi-save:before{content:"\f525"}.bi-save2-fill:before{content:"\f526"}.bi-save2:before{content:"\f527"}.bi-scissors:before{content:"\f528"}.bi-screwdriver:before{content:"\f529"}.bi-search:before{content:"\f52a"}.bi-segmented-nav:before{content:"\f52b"}.bi-server:before{content:"\f52c"}.bi-share-fill:before{content:"\f52d"}.bi-share:before{content:"\f52e"}.bi-shield-check:before{content:"\f52f"}.bi-shield-exclamation:before{content:"\f530"}.bi-shield-fill-check:before{content:"\f531"}.bi-shield-fill-exclamation:before{content:"\f532"}.bi-shield-fill-minus:before{content:"\f533"}.bi-shield-fill-plus:before{content:"\f534"}.bi-shield-fill-x:before{content:"\f535"}.bi-shield-fill:before{content:"\f536"}.bi-shield-lock-fill:before{content:"\f537"}.bi-shield-lock:before{content:"\f538"}.bi-shield-minus:before{content:"\f539"}.bi-shield-plus:before{content:"\f53a"}.bi-shield-shaded:before{content:"\f53b"}.bi-shield-slash-fill:before{content:"\f53c"}.bi-shield-slash:before{content:"\f53d"}.bi-shield-x:before{content:"\f53e"}.bi-shield:before{content:"\f53f"}.bi-shift-fill:before{content:"\f540"}.bi-shift:before{content:"\f541"}.bi-shop-window:before{content:"\f542"}.bi-shop:before{content:"\f543"}.bi-shuffle:before{content:"\f544"}.bi-signpost-2-fill:before{content:"\f545"}.bi-signpost-2:before{content:"\f546"}.bi-signpost-fill:before{content:"\f547"}.bi-signpost-split-fill:before{content:"\f548"}.bi-signpost-split:before{content:"\f549"}.bi-signpost:before{content:"\f54a"}.bi-sim-fill:before{content:"\f54b"}.bi-sim:before{content:"\f54c"}.bi-skip-backward-btn-fill:before{content:"\f54d"}.bi-skip-backward-btn:before{content:"\f54e"}.bi-skip-backward-circle-fill:before{content:"\f54f"}.bi-skip-backward-circle:before{content:"\f550"}.bi-skip-backward-fill:before{content:"\f551"}.bi-skip-backward:before{content:"\f552"}.bi-skip-end-btn-fill:before{content:"\f553"}.bi-skip-end-btn:before{content:"\f554"}.bi-skip-end-circle-fill:before{content:"\f555"}.bi-skip-end-circle:before{content:"\f556"}.bi-skip-end-fill:before{content:"\f557"}.bi-skip-end:before{content:"\f558"}.bi-skip-forward-btn-fill:before{content:"\f559"}.bi-skip-forward-btn:before{content:"\f55a"}.bi-skip-forward-circle-fill:before{content:"\f55b"}.bi-skip-forward-circle:before{content:"\f55c"}.bi-skip-forward-fill:before{content:"\f55d"}.bi-skip-forward:before{content:"\f55e"}.bi-skip-start-btn-fill:before{content:"\f55f"}.bi-skip-start-btn:before{content:"\f560"}.bi-skip-start-circle-fill:before{content:"\f561"}.bi-skip-start-circle:before{content:"\f562"}.bi-skip-start-fill:before{content:"\f563"}.bi-skip-start:before{content:"\f564"}.bi-slack:before{content:"\f565"}.bi-slash-circle-fill:before{content:"\f566"}.bi-slash-circle:before{content:"\f567"}.bi-slash-square-fill:before{content:"\f568"}.bi-slash-square:before{content:"\f569"}.bi-slash:before{content:"\f56a"}.bi-sliders:before{content:"\f56b"}.bi-smartwatch:before{content:"\f56c"}.bi-snow:before{content:"\f56d"}.bi-snow2:before{content:"\f56e"}.bi-snow3:before{content:"\f56f"}.bi-sort-alpha-down-alt:before{content:"\f570"}.bi-sort-alpha-down:before{content:"\f571"}.bi-sort-alpha-up-alt:before{content:"\f572"}.bi-sort-alpha-up:before{content:"\f573"}.bi-sort-down-alt:before{content:"\f574"}.bi-sort-down:before{content:"\f575"}.bi-sort-numeric-down-alt:before{content:"\f576"}.bi-sort-numeric-down:before{content:"\f577"}.bi-sort-numeric-up-alt:before{content:"\f578"}.bi-sort-numeric-up:before{content:"\f579"}.bi-sort-up-alt:before{content:"\f57a"}.bi-sort-up:before{content:"\f57b"}.bi-soundwave:before{content:"\f57c"}.bi-speaker-fill:before{content:"\f57d"}.bi-speaker:before{content:"\f57e"}.bi-speedometer:before{content:"\f57f"}.bi-speedometer2:before{content:"\f580"}.bi-spellcheck:before{content:"\f581"}.bi-square-fill:before{content:"\f582"}.bi-square-half:before{content:"\f583"}.bi-square:before{content:"\f584"}.bi-stack:before{content:"\f585"}.bi-star-fill:before{content:"\f586"}.bi-star-half:before{content:"\f587"}.bi-star:before{content:"\f588"}.bi-stars:before{content:"\f589"}.bi-stickies-fill:before{content:"\f58a"}.bi-stickies:before{content:"\f58b"}.bi-sticky-fill:before{content:"\f58c"}.bi-sticky:before{content:"\f58d"}.bi-stop-btn-fill:before{content:"\f58e"}.bi-stop-btn:before{content:"\f58f"}.bi-stop-circle-fill:before{content:"\f590"}.bi-stop-circle:before{content:"\f591"}.bi-stop-fill:before{content:"\f592"}.bi-stop:before{content:"\f593"}.bi-stoplights-fill:before{content:"\f594"}.bi-stoplights:before{content:"\f595"}.bi-stopwatch-fill:before{content:"\f596"}.bi-stopwatch:before{content:"\f597"}.bi-subtract:before{content:"\f598"}.bi-suit-club-fill:before{content:"\f599"}.bi-suit-club:before{content:"\f59a"}.bi-suit-diamond-fill:before{content:"\f59b"}.bi-suit-diamond:before{content:"\f59c"}.bi-suit-heart-fill:before{content:"\f59d"}.bi-suit-heart:before{content:"\f59e"}.bi-suit-spade-fill:before{content:"\f59f"}.bi-suit-spade:before{content:"\f5a0"}.bi-sun-fill:before{content:"\f5a1"}.bi-sun:before{content:"\f5a2"}.bi-sunglasses:before{content:"\f5a3"}.bi-sunrise-fill:before{content:"\f5a4"}.bi-sunrise:before{content:"\f5a5"}.bi-sunset-fill:before{content:"\f5a6"}.bi-sunset:before{content:"\f5a7"}.bi-symmetry-horizontal:before{content:"\f5a8"}.bi-symmetry-vertical:before{content:"\f5a9"}.bi-table:before{content:"\f5aa"}.bi-tablet-fill:before{content:"\f5ab"}.bi-tablet-landscape-fill:before{content:"\f5ac"}.bi-tablet-landscape:before{content:"\f5ad"}.bi-tablet:before{content:"\f5ae"}.bi-tag-fill:before{content:"\f5af"}.bi-tag:before{content:"\f5b0"}.bi-tags-fill:before{content:"\f5b1"}.bi-tags:before{content:"\f5b2"}.bi-telegram:before{content:"\f5b3"}.bi-telephone-fill:before{content:"\f5b4"}.bi-telephone-forward-fill:before{content:"\f5b5"}.bi-telephone-forward:before{content:"\f5b6"}.bi-telephone-inbound-fill:before{content:"\f5b7"}.bi-telephone-inbound:before{content:"\f5b8"}.bi-telephone-minus-fill:before{content:"\f5b9"}.bi-telephone-minus:before{content:"\f5ba"}.bi-telephone-outbound-fill:before{content:"\f5bb"}.bi-telephone-outbound:before{content:"\f5bc"}.bi-telephone-plus-fill:before{content:"\f5bd"}.bi-telephone-plus:before{content:"\f5be"}.bi-telephone-x-fill:before{content:"\f5bf"}.bi-telephone-x:before{content:"\f5c0"}.bi-telephone:before{content:"\f5c1"}.bi-terminal-fill:before{content:"\f5c2"}.bi-terminal:before{content:"\f5c3"}.bi-text-center:before{content:"\f5c4"}.bi-text-indent-left:before{content:"\f5c5"}.bi-text-indent-right:before{content:"\f5c6"}.bi-text-left:before{content:"\f5c7"}.bi-text-paragraph:before{content:"\f5c8"}.bi-text-right:before{content:"\f5c9"}.bi-textarea-resize:before{content:"\f5ca"}.bi-textarea-t:before{content:"\f5cb"}.bi-textarea:before{content:"\f5cc"}.bi-thermometer-half:before{content:"\f5cd"}.bi-thermometer-high:before{content:"\f5ce"}.bi-thermometer-low:before{content:"\f5cf"}.bi-thermometer-snow:before{content:"\f5d0"}.bi-thermometer-sun:before{content:"\f5d1"}.bi-thermometer:before{content:"\f5d2"}.bi-three-dots-vertical:before{content:"\f5d3"}.bi-three-dots:before{content:"\f5d4"}.bi-toggle-off:before{content:"\f5d5"}.bi-toggle-on:before{content:"\f5d6"}.bi-toggle2-off:before{content:"\f5d7"}.bi-toggle2-on:before{content:"\f5d8"}.bi-toggles:before{content:"\f5d9"}.bi-toggles2:before{content:"\f5da"}.bi-tools:before{content:"\f5db"}.bi-tornado:before{content:"\f5dc"}.bi-trash-fill:before{content:"\f5dd"}.bi-trash:before{content:"\f5de"}.bi-trash2-fill:before{content:"\f5df"}.bi-trash2:before{content:"\f5e0"}.bi-tree-fill:before{content:"\f5e1"}.bi-tree:before{content:"\f5e2"}.bi-triangle-fill:before{content:"\f5e3"}.bi-triangle-half:before{content:"\f5e4"}.bi-triangle:before{content:"\f5e5"}.bi-trophy-fill:before{content:"\f5e6"}.bi-trophy:before{content:"\f5e7"}.bi-tropical-storm:before{content:"\f5e8"}.bi-truck-flatbed:before{content:"\f5e9"}.bi-truck:before{content:"\f5ea"}.bi-tsunami:before{content:"\f5eb"}.bi-tv-fill:before{content:"\f5ec"}.bi-tv:before{content:"\f5ed"}.bi-twitch:before{content:"\f5ee"}.bi-twitter:before{content:"\f5ef"}.bi-type-bold:before{content:"\f5f0"}.bi-type-h1:before{content:"\f5f1"}.bi-type-h2:before{content:"\f5f2"}.bi-type-h3:before{content:"\f5f3"}.bi-type-italic:before{content:"\f5f4"}.bi-type-strikethrough:before{content:"\f5f5"}.bi-type-underline:before{content:"\f5f6"}.bi-type:before{content:"\f5f7"}.bi-ui-checks-grid:before{content:"\f5f8"}.bi-ui-checks:before{content:"\f5f9"}.bi-ui-radios-grid:before{content:"\f5fa"}.bi-ui-radios:before{content:"\f5fb"}.bi-umbrella-fill:before{content:"\f5fc"}.bi-umbrella:before{content:"\f5fd"}.bi-union:before{content:"\f5fe"}.bi-unlock-fill:before{content:"\f5ff"}.bi-unlock:before{content:"\f600"}.bi-upc-scan:before{content:"\f601"}.bi-upc:before{content:"\f602"}.bi-upload:before{content:"\f603"}.bi-vector-pen:before{content:"\f604"}.bi-view-list:before{content:"\f605"}.bi-view-stacked:before{content:"\f606"}.bi-vinyl-fill:before{content:"\f607"}.bi-vinyl:before{content:"\f608"}.bi-voicemail:before{content:"\f609"}.bi-volume-down-fill:before{content:"\f60a"}.bi-volume-down:before{content:"\f60b"}.bi-volume-mute-fill:before{content:"\f60c"}.bi-volume-mute:before{content:"\f60d"}.bi-volume-off-fill:before{content:"\f60e"}.bi-volume-off:before{content:"\f60f"}.bi-volume-up-fill:before{content:"\f610"}.bi-volume-up:before{content:"\f611"}.bi-vr:before{content:"\f612"}.bi-wallet-fill:before{content:"\f613"}.bi-wallet:before{content:"\f614"}.bi-wallet2:before{content:"\f615"}.bi-watch:before{content:"\f616"}.bi-water:before{content:"\f617"}.bi-whatsapp:before{content:"\f618"}.bi-wifi-1:before{content:"\f619"}.bi-wifi-2:before{content:"\f61a"}.bi-wifi-off:before{content:"\f61b"}.bi-wifi:before{content:"\f61c"}.bi-wind:before{content:"\f61d"}.bi-window-dock:before{content:"\f61e"}.bi-window-sidebar:before{content:"\f61f"}.bi-window:before{content:"\f620"}.bi-wrench:before{content:"\f621"}.bi-x-circle-fill:before{content:"\f622"}.bi-x-circle:before{content:"\f623"}.bi-x-diamond-fill:before{content:"\f624"}.bi-x-diamond:before{content:"\f625"}.bi-x-octagon-fill:before{content:"\f626"}.bi-x-octagon:before{content:"\f627"}.bi-x-square-fill:before{content:"\f628"}.bi-x-square:before{content:"\f629"}.bi-x:before{content:"\f62a"}.bi-youtube:before{content:"\f62b"}.bi-zoom-in:before{content:"\f62c"}.bi-zoom-out:before{content:"\f62d"}.bi-bank:before{content:"\f62e"}.bi-bank2:before{content:"\f62f"}.bi-bell-slash-fill:before{content:"\f630"}.bi-bell-slash:before{content:"\f631"}.bi-cash-coin:before{content:"\f632"}.bi-check-lg:before{content:"\f633"}.bi-coin:before{content:"\f634"}.bi-currency-bitcoin:before{content:"\f635"}.bi-currency-dollar:before{content:"\f636"}.bi-currency-euro:before{content:"\f637"}.bi-currency-exchange:before{content:"\f638"}.bi-currency-pound:before{content:"\f639"}.bi-currency-yen:before{content:"\f63a"}.bi-dash-lg:before{content:"\f63b"}.bi-exclamation-lg:before{content:"\f63c"}.bi-file-earmark-pdf-fill:before{content:"\f63d"}.bi-file-earmark-pdf:before{content:"\f63e"}.bi-file-pdf-fill:before{content:"\f63f"}.bi-file-pdf:before{content:"\f640"}.bi-gender-ambiguous:before{content:"\f641"}.bi-gender-female:before{content:"\f642"}.bi-gender-male:before{content:"\f643"}.bi-gender-trans:before{content:"\f644"}.bi-headset-vr:before{content:"\f645"}.bi-info-lg:before{content:"\f646"}.bi-mastodon:before{content:"\f647"}.bi-messenger:before{content:"\f648"}.bi-piggy-bank-fill:before{content:"\f649"}.bi-piggy-bank:before{content:"\f64a"}.bi-pin-map-fill:before{content:"\f64b"}.bi-pin-map:before{content:"\f64c"}.bi-plus-lg:before{content:"\f64d"}.bi-question-lg:before{content:"\f64e"}.bi-recycle:before{content:"\f64f"}.bi-reddit:before{content:"\f650"}.bi-safe-fill:before{content:"\f651"}.bi-safe2-fill:before{content:"\f652"}.bi-safe2:before{content:"\f653"}.bi-sd-card-fill:before{content:"\f654"}.bi-sd-card:before{content:"\f655"}.bi-skype:before{content:"\f656"}.bi-slash-lg:before{content:"\f657"}.bi-translate:before{content:"\f658"}.bi-x-lg:before{content:"\f659"}.bi-safe:before{content:"\f65a"}.bi-apple:before{content:"\f65b"}.bi-microsoft:before{content:"\f65d"}.bi-windows:before{content:"\f65e"}.bi-behance:before{content:"\f65c"}.bi-dribbble:before{content:"\f65f"}.bi-line:before{content:"\f660"}.bi-medium:before{content:"\f661"}.bi-paypal:before{content:"\f662"}.bi-pinterest:before{content:"\f663"}.bi-signal:before{content:"\f664"}.bi-snapchat:before{content:"\f665"}.bi-spotify:before{content:"\f666"}.bi-stack-overflow:before{content:"\f667"}.bi-strava:before{content:"\f668"}.bi-wordpress:before{content:"\f669"}.bi-vimeo:before{content:"\f66a"}.bi-activity:before{content:"\f66b"}.bi-easel2-fill:before{content:"\f66c"}.bi-easel2:before{content:"\f66d"}.bi-easel3-fill:before{content:"\f66e"}.bi-easel3:before{content:"\f66f"}.bi-fan:before{content:"\f670"}.bi-fingerprint:before{content:"\f671"}.bi-graph-down-arrow:before{content:"\f672"}.bi-graph-up-arrow:before{content:"\f673"}.bi-hypnotize:before{content:"\f674"}.bi-magic:before{content:"\f675"}.bi-person-rolodex:before{content:"\f676"}.bi-person-video:before{content:"\f677"}.bi-person-video2:before{content:"\f678"}.bi-person-video3:before{content:"\f679"}.bi-person-workspace:before{content:"\f67a"}.bi-radioactive:before{content:"\f67b"}.bi-webcam-fill:before{content:"\f67c"}.bi-webcam:before{content:"\f67d"}.bi-yin-yang:before{content:"\f67e"}.bi-bandaid-fill:before{content:"\f680"}.bi-bandaid:before{content:"\f681"}.bi-bluetooth:before{content:"\f682"}.bi-body-text:before{content:"\f683"}.bi-boombox:before{content:"\f684"}.bi-boxes:before{content:"\f685"}.bi-dpad-fill:before{content:"\f686"}.bi-dpad:before{content:"\f687"}.bi-ear-fill:before{content:"\f688"}.bi-ear:before{content:"\f689"}.bi-envelope-check-fill:before{content:"\f68b"}.bi-envelope-check:before{content:"\f68c"}.bi-envelope-dash-fill:before{content:"\f68e"}.bi-envelope-dash:before{content:"\f68f"}.bi-envelope-exclamation-fill:before{content:"\f691"}.bi-envelope-exclamation:before{content:"\f692"}.bi-envelope-plus-fill:before{content:"\f693"}.bi-envelope-plus:before{content:"\f694"}.bi-envelope-slash-fill:before{content:"\f696"}.bi-envelope-slash:before{content:"\f697"}.bi-envelope-x-fill:before{content:"\f699"}.bi-envelope-x:before{content:"\f69a"}.bi-explicit-fill:before{content:"\f69b"}.bi-explicit:before{content:"\f69c"}.bi-git:before{content:"\f69d"}.bi-infinity:before{content:"\f69e"}.bi-list-columns-reverse:before{content:"\f69f"}.bi-list-columns:before{content:"\f6a0"}.bi-meta:before{content:"\f6a1"}.bi-nintendo-switch:before{content:"\f6a4"}.bi-pc-display-horizontal:before{content:"\f6a5"}.bi-pc-display:before{content:"\f6a6"}.bi-pc-horizontal:before{content:"\f6a7"}.bi-pc:before{content:"\f6a8"}.bi-playstation:before{content:"\f6a9"}.bi-plus-slash-minus:before{content:"\f6aa"}.bi-projector-fill:before{content:"\f6ab"}.bi-projector:before{content:"\f6ac"}.bi-qr-code-scan:before{content:"\f6ad"}.bi-qr-code:before{content:"\f6ae"}.bi-quora:before{content:"\f6af"}.bi-quote:before{content:"\f6b0"}.bi-robot:before{content:"\f6b1"}.bi-send-check-fill:before{content:"\f6b2"}.bi-send-check:before{content:"\f6b3"}.bi-send-dash-fill:before{content:"\f6b4"}.bi-send-dash:before{content:"\f6b5"}.bi-send-exclamation-fill:before{content:"\f6b7"}.bi-send-exclamation:before{content:"\f6b8"}.bi-send-fill:before{content:"\f6b9"}.bi-send-plus-fill:before{content:"\f6ba"}.bi-send-plus:before{content:"\f6bb"}.bi-send-slash-fill:before{content:"\f6bc"}.bi-send-slash:before{content:"\f6bd"}.bi-send-x-fill:before{content:"\f6be"}.bi-send-x:before{content:"\f6bf"}.bi-send:before{content:"\f6c0"}.bi-steam:before{content:"\f6c1"}.bi-terminal-dash:before{content:"\f6c3"}.bi-terminal-plus:before{content:"\f6c4"}.bi-terminal-split:before{content:"\f6c5"}.bi-ticket-detailed-fill:before{content:"\f6c6"}.bi-ticket-detailed:before{content:"\f6c7"}.bi-ticket-fill:before{content:"\f6c8"}.bi-ticket-perforated-fill:before{content:"\f6c9"}.bi-ticket-perforated:before{content:"\f6ca"}.bi-ticket:before{content:"\f6cb"}.bi-tiktok:before{content:"\f6cc"}.bi-window-dash:before{content:"\f6cd"}.bi-window-desktop:before{content:"\f6ce"}.bi-window-fullscreen:before{content:"\f6cf"}.bi-window-plus:before{content:"\f6d0"}.bi-window-split:before{content:"\f6d1"}.bi-window-stack:before{content:"\f6d2"}.bi-window-x:before{content:"\f6d3"}.bi-xbox:before{content:"\f6d4"}.bi-ethernet:before{content:"\f6d5"}.bi-hdmi-fill:before{content:"\f6d6"}.bi-hdmi:before{content:"\f6d7"}.bi-usb-c-fill:before{content:"\f6d8"}.bi-usb-c:before{content:"\f6d9"}.bi-usb-fill:before{content:"\f6da"}.bi-usb-plug-fill:before{content:"\f6db"}.bi-usb-plug:before{content:"\f6dc"}.bi-usb-symbol:before{content:"\f6dd"}.bi-usb:before{content:"\f6de"}.bi-boombox-fill:before{content:"\f6df"}.bi-displayport:before{content:"\f6e1"}.bi-gpu-card:before{content:"\f6e2"}.bi-memory:before{content:"\f6e3"}.bi-modem-fill:before{content:"\f6e4"}.bi-modem:before{content:"\f6e5"}.bi-motherboard-fill:before{content:"\f6e6"}.bi-motherboard:before{content:"\f6e7"}.bi-optical-audio-fill:before{content:"\f6e8"}.bi-optical-audio:before{content:"\f6e9"}.bi-pci-card:before{content:"\f6ea"}.bi-router-fill:before{content:"\f6eb"}.bi-router:before{content:"\f6ec"}.bi-thunderbolt-fill:before{content:"\f6ef"}.bi-thunderbolt:before{content:"\f6f0"}.bi-usb-drive-fill:before{content:"\f6f1"}.bi-usb-drive:before{content:"\f6f2"}.bi-usb-micro-fill:before{content:"\f6f3"}.bi-usb-micro:before{content:"\f6f4"}.bi-usb-mini-fill:before{content:"\f6f5"}.bi-usb-mini:before{content:"\f6f6"}.bi-cloud-haze2:before{content:"\f6f7"}.bi-device-hdd-fill:before{content:"\f6f8"}.bi-device-hdd:before{content:"\f6f9"}.bi-device-ssd-fill:before{content:"\f6fa"}.bi-device-ssd:before{content:"\f6fb"}.bi-displayport-fill:before{content:"\f6fc"}.bi-mortarboard-fill:before{content:"\f6fd"}.bi-mortarboard:before{content:"\f6fe"}.bi-terminal-x:before{content:"\f6ff"}.bi-arrow-through-heart-fill:before{content:"\f700"}.bi-arrow-through-heart:before{content:"\f701"}.bi-badge-sd-fill:before{content:"\f702"}.bi-badge-sd:before{content:"\f703"}.bi-bag-heart-fill:before{content:"\f704"}.bi-bag-heart:before{content:"\f705"}.bi-balloon-fill:before{content:"\f706"}.bi-balloon-heart-fill:before{content:"\f707"}.bi-balloon-heart:before{content:"\f708"}.bi-balloon:before{content:"\f709"}.bi-box2-fill:before{content:"\f70a"}.bi-box2-heart-fill:before{content:"\f70b"}.bi-box2-heart:before{content:"\f70c"}.bi-box2:before{content:"\f70d"}.bi-braces-asterisk:before{content:"\f70e"}.bi-calendar-heart-fill:before{content:"\f70f"}.bi-calendar-heart:before{content:"\f710"}.bi-calendar2-heart-fill:before{content:"\f711"}.bi-calendar2-heart:before{content:"\f712"}.bi-chat-heart-fill:before{content:"\f713"}.bi-chat-heart:before{content:"\f714"}.bi-chat-left-heart-fill:before{content:"\f715"}.bi-chat-left-heart:before{content:"\f716"}.bi-chat-right-heart-fill:before{content:"\f717"}.bi-chat-right-heart:before{content:"\f718"}.bi-chat-square-heart-fill:before{content:"\f719"}.bi-chat-square-heart:before{content:"\f71a"}.bi-clipboard-check-fill:before{content:"\f71b"}.bi-clipboard-data-fill:before{content:"\f71c"}.bi-clipboard-fill:before{content:"\f71d"}.bi-clipboard-heart-fill:before{content:"\f71e"}.bi-clipboard-heart:before{content:"\f71f"}.bi-clipboard-minus-fill:before{content:"\f720"}.bi-clipboard-plus-fill:before{content:"\f721"}.bi-clipboard-pulse:before{content:"\f722"}.bi-clipboard-x-fill:before{content:"\f723"}.bi-clipboard2-check-fill:before{content:"\f724"}.bi-clipboard2-check:before{content:"\f725"}.bi-clipboard2-data-fill:before{content:"\f726"}.bi-clipboard2-data:before{content:"\f727"}.bi-clipboard2-fill:before{content:"\f728"}.bi-clipboard2-heart-fill:before{content:"\f729"}.bi-clipboard2-heart:before{content:"\f72a"}.bi-clipboard2-minus-fill:before{content:"\f72b"}.bi-clipboard2-minus:before{content:"\f72c"}.bi-clipboard2-plus-fill:before{content:"\f72d"}.bi-clipboard2-plus:before{content:"\f72e"}.bi-clipboard2-pulse-fill:before{content:"\f72f"}.bi-clipboard2-pulse:before{content:"\f730"}.bi-clipboard2-x-fill:before{content:"\f731"}.bi-clipboard2-x:before{content:"\f732"}.bi-clipboard2:before{content:"\f733"}.bi-emoji-kiss-fill:before{content:"\f734"}.bi-emoji-kiss:before{content:"\f735"}.bi-envelope-heart-fill:before{content:"\f736"}.bi-envelope-heart:before{content:"\f737"}.bi-envelope-open-heart-fill:before{content:"\f738"}.bi-envelope-open-heart:before{content:"\f739"}.bi-envelope-paper-fill:before{content:"\f73a"}.bi-envelope-paper-heart-fill:before{content:"\f73b"}.bi-envelope-paper-heart:before{content:"\f73c"}.bi-envelope-paper:before{content:"\f73d"}.bi-filetype-aac:before{content:"\f73e"}.bi-filetype-ai:before{content:"\f73f"}.bi-filetype-bmp:before{content:"\f740"}.bi-filetype-cs:before{content:"\f741"}.bi-filetype-css:before{content:"\f742"}.bi-filetype-csv:before{content:"\f743"}.bi-filetype-doc:before{content:"\f744"}.bi-filetype-docx:before{content:"\f745"}.bi-filetype-exe:before{content:"\f746"}.bi-filetype-gif:before{content:"\f747"}.bi-filetype-heic:before{content:"\f748"}.bi-filetype-html:before{content:"\f749"}.bi-filetype-java:before{content:"\f74a"}.bi-filetype-jpg:before{content:"\f74b"}.bi-filetype-js:before{content:"\f74c"}.bi-filetype-jsx:before{content:"\f74d"}.bi-filetype-key:before{content:"\f74e"}.bi-filetype-m4p:before{content:"\f74f"}.bi-filetype-md:before{content:"\f750"}.bi-filetype-mdx:before{content:"\f751"}.bi-filetype-mov:before{content:"\f752"}.bi-filetype-mp3:before{content:"\f753"}.bi-filetype-mp4:before{content:"\f754"}.bi-filetype-otf:before{content:"\f755"}.bi-filetype-pdf:before{content:"\f756"}.bi-filetype-php:before{content:"\f757"}.bi-filetype-png:before{content:"\f758"}.bi-filetype-ppt:before{content:"\f75a"}.bi-filetype-psd:before{content:"\f75b"}.bi-filetype-py:before{content:"\f75c"}.bi-filetype-raw:before{content:"\f75d"}.bi-filetype-rb:before{content:"\f75e"}.bi-filetype-sass:before{content:"\f75f"}.bi-filetype-scss:before{content:"\f760"}.bi-filetype-sh:before{content:"\f761"}.bi-filetype-svg:before{content:"\f762"}.bi-filetype-tiff:before{content:"\f763"}.bi-filetype-tsx:before{content:"\f764"}.bi-filetype-ttf:before{content:"\f765"}.bi-filetype-txt:before{content:"\f766"}.bi-filetype-wav:before{content:"\f767"}.bi-filetype-woff:before{content:"\f768"}.bi-filetype-xls:before{content:"\f76a"}.bi-filetype-xml:before{content:"\f76b"}.bi-filetype-yml:before{content:"\f76c"}.bi-heart-arrow:before{content:"\f76d"}.bi-heart-pulse-fill:before{content:"\f76e"}.bi-heart-pulse:before{content:"\f76f"}.bi-heartbreak-fill:before{content:"\f770"}.bi-heartbreak:before{content:"\f771"}.bi-hearts:before{content:"\f772"}.bi-hospital-fill:before{content:"\f773"}.bi-hospital:before{content:"\f774"}.bi-house-heart-fill:before{content:"\f775"}.bi-house-heart:before{content:"\f776"}.bi-incognito:before{content:"\f777"}.bi-magnet-fill:before{content:"\f778"}.bi-magnet:before{content:"\f779"}.bi-person-heart:before{content:"\f77a"}.bi-person-hearts:before{content:"\f77b"}.bi-phone-flip:before{content:"\f77c"}.bi-plugin:before{content:"\f77d"}.bi-postage-fill:before{content:"\f77e"}.bi-postage-heart-fill:before{content:"\f77f"}.bi-postage-heart:before{content:"\f780"}.bi-postage:before{content:"\f781"}.bi-postcard-fill:before{content:"\f782"}.bi-postcard-heart-fill:before{content:"\f783"}.bi-postcard-heart:before{content:"\f784"}.bi-postcard:before{content:"\f785"}.bi-search-heart-fill:before{content:"\f786"}.bi-search-heart:before{content:"\f787"}.bi-sliders2-vertical:before{content:"\f788"}.bi-sliders2:before{content:"\f789"}.bi-trash3-fill:before{content:"\f78a"}.bi-trash3:before{content:"\f78b"}.bi-valentine:before{content:"\f78c"}.bi-valentine2:before{content:"\f78d"}.bi-wrench-adjustable-circle-fill:before{content:"\f78e"}.bi-wrench-adjustable-circle:before{content:"\f78f"}.bi-wrench-adjustable:before{content:"\f790"}.bi-filetype-json:before{content:"\f791"}.bi-filetype-pptx:before{content:"\f792"}.bi-filetype-xlsx:before{content:"\f793"}.bi-1-circle-fill:before{content:"\f796"}.bi-1-circle:before{content:"\f797"}.bi-1-square-fill:before{content:"\f798"}.bi-1-square:before{content:"\f799"}.bi-2-circle-fill:before{content:"\f79c"}.bi-2-circle:before{content:"\f79d"}.bi-2-square-fill:before{content:"\f79e"}.bi-2-square:before{content:"\f79f"}.bi-3-circle-fill:before{content:"\f7a2"}.bi-3-circle:before{content:"\f7a3"}.bi-3-square-fill:before{content:"\f7a4"}.bi-3-square:before{content:"\f7a5"}.bi-4-circle-fill:before{content:"\f7a8"}.bi-4-circle:before{content:"\f7a9"}.bi-4-square-fill:before{content:"\f7aa"}.bi-4-square:before{content:"\f7ab"}.bi-5-circle-fill:before{content:"\f7ae"}.bi-5-circle:before{content:"\f7af"}.bi-5-square-fill:before{content:"\f7b0"}.bi-5-square:before{content:"\f7b1"}.bi-6-circle-fill:before{content:"\f7b4"}.bi-6-circle:before{content:"\f7b5"}.bi-6-square-fill:before{content:"\f7b6"}.bi-6-square:before{content:"\f7b7"}.bi-7-circle-fill:before{content:"\f7ba"}.bi-7-circle:before{content:"\f7bb"}.bi-7-square-fill:before{content:"\f7bc"}.bi-7-square:before{content:"\f7bd"}.bi-8-circle-fill:before{content:"\f7c0"}.bi-8-circle:before{content:"\f7c1"}.bi-8-square-fill:before{content:"\f7c2"}.bi-8-square:before{content:"\f7c3"}.bi-9-circle-fill:before{content:"\f7c6"}.bi-9-circle:before{content:"\f7c7"}.bi-9-square-fill:before{content:"\f7c8"}.bi-9-square:before{content:"\f7c9"}.bi-airplane-engines-fill:before{content:"\f7ca"}.bi-airplane-engines:before{content:"\f7cb"}.bi-airplane-fill:before{content:"\f7cc"}.bi-airplane:before{content:"\f7cd"}.bi-alexa:before{content:"\f7ce"}.bi-alipay:before{content:"\f7cf"}.bi-android:before{content:"\f7d0"}.bi-android2:before{content:"\f7d1"}.bi-box-fill:before{content:"\f7d2"}.bi-box-seam-fill:before{content:"\f7d3"}.bi-browser-chrome:before{content:"\f7d4"}.bi-browser-edge:before{content:"\f7d5"}.bi-browser-firefox:before{content:"\f7d6"}.bi-browser-safari:before{content:"\f7d7"}.bi-c-circle-fill:before{content:"\f7da"}.bi-c-circle:before{content:"\f7db"}.bi-c-square-fill:before{content:"\f7dc"}.bi-c-square:before{content:"\f7dd"}.bi-capsule-pill:before{content:"\f7de"}.bi-capsule:before{content:"\f7df"}.bi-car-front-fill:before{content:"\f7e0"}.bi-car-front:before{content:"\f7e1"}.bi-cassette-fill:before{content:"\f7e2"}.bi-cassette:before{content:"\f7e3"}.bi-cc-circle-fill:before{content:"\f7e6"}.bi-cc-circle:before{content:"\f7e7"}.bi-cc-square-fill:before{content:"\f7e8"}.bi-cc-square:before{content:"\f7e9"}.bi-cup-hot-fill:before{content:"\f7ea"}.bi-cup-hot:before{content:"\f7eb"}.bi-currency-rupee:before{content:"\f7ec"}.bi-dropbox:before{content:"\f7ed"}.bi-escape:before{content:"\f7ee"}.bi-fast-forward-btn-fill:before{content:"\f7ef"}.bi-fast-forward-btn:before{content:"\f7f0"}.bi-fast-forward-circle-fill:before{content:"\f7f1"}.bi-fast-forward-circle:before{content:"\f7f2"}.bi-fast-forward-fill:before{content:"\f7f3"}.bi-fast-forward:before{content:"\f7f4"}.bi-filetype-sql:before{content:"\f7f5"}.bi-fire:before{content:"\f7f6"}.bi-google-play:before{content:"\f7f7"}.bi-h-circle-fill:before{content:"\f7fa"}.bi-h-circle:before{content:"\f7fb"}.bi-h-square-fill:before{content:"\f7fc"}.bi-h-square:before{content:"\f7fd"}.bi-indent:before{content:"\f7fe"}.bi-lungs-fill:before{content:"\f7ff"}.bi-lungs:before{content:"\f800"}.bi-microsoft-teams:before{content:"\f801"}.bi-p-circle-fill:before{content:"\f804"}.bi-p-circle:before{content:"\f805"}.bi-p-square-fill:before{content:"\f806"}.bi-p-square:before{content:"\f807"}.bi-pass-fill:before{content:"\f808"}.bi-pass:before{content:"\f809"}.bi-prescription:before{content:"\f80a"}.bi-prescription2:before{content:"\f80b"}.bi-r-circle-fill:before{content:"\f80e"}.bi-r-circle:before{content:"\f80f"}.bi-r-square-fill:before{content:"\f810"}.bi-r-square:before{content:"\f811"}.bi-repeat-1:before{content:"\f812"}.bi-repeat:before{content:"\f813"}.bi-rewind-btn-fill:before{content:"\f814"}.bi-rewind-btn:before{content:"\f815"}.bi-rewind-circle-fill:before{content:"\f816"}.bi-rewind-circle:before{content:"\f817"}.bi-rewind-fill:before{content:"\f818"}.bi-rewind:before{content:"\f819"}.bi-train-freight-front-fill:before{content:"\f81a"}.bi-train-freight-front:before{content:"\f81b"}.bi-train-front-fill:before{content:"\f81c"}.bi-train-front:before{content:"\f81d"}.bi-train-lightrail-front-fill:before{content:"\f81e"}.bi-train-lightrail-front:before{content:"\f81f"}.bi-truck-front-fill:before{content:"\f820"}.bi-truck-front:before{content:"\f821"}.bi-ubuntu:before{content:"\f822"}.bi-unindent:before{content:"\f823"}.bi-unity:before{content:"\f824"}.bi-universal-access-circle:before{content:"\f825"}.bi-universal-access:before{content:"\f826"}.bi-virus:before{content:"\f827"}.bi-virus2:before{content:"\f828"}.bi-wechat:before{content:"\f829"}.bi-yelp:before{content:"\f82a"}.bi-sign-stop-fill:before{content:"\f82b"}.bi-sign-stop-lights-fill:before{content:"\f82c"}.bi-sign-stop-lights:before{content:"\f82d"}.bi-sign-stop:before{content:"\f82e"}.bi-sign-turn-left-fill:before{content:"\f82f"}.bi-sign-turn-left:before{content:"\f830"}.bi-sign-turn-right-fill:before{content:"\f831"}.bi-sign-turn-right:before{content:"\f832"}.bi-sign-turn-slight-left-fill:before{content:"\f833"}.bi-sign-turn-slight-left:before{content:"\f834"}.bi-sign-turn-slight-right-fill:before{content:"\f835"}.bi-sign-turn-slight-right:before{content:"\f836"}.bi-sign-yield-fill:before{content:"\f837"}.bi-sign-yield:before{content:"\f838"}.bi-ev-station-fill:before{content:"\f839"}.bi-ev-station:before{content:"\f83a"}.bi-fuel-pump-diesel-fill:before{content:"\f83b"}.bi-fuel-pump-diesel:before{content:"\f83c"}.bi-fuel-pump-fill:before{content:"\f83d"}.bi-fuel-pump:before{content:"\f83e"}.bi-0-circle-fill:before{content:"\f83f"}.bi-0-circle:before{content:"\f840"}.bi-0-square-fill:before{content:"\f841"}.bi-0-square:before{content:"\f842"}.bi-rocket-fill:before{content:"\f843"}.bi-rocket-takeoff-fill:before{content:"\f844"}.bi-rocket-takeoff:before{content:"\f845"}.bi-rocket:before{content:"\f846"}.bi-stripe:before{content:"\f847"}.bi-subscript:before{content:"\f848"}.bi-superscript:before{content:"\f849"}.bi-trello:before{content:"\f84a"}.bi-envelope-at-fill:before{content:"\f84b"}.bi-envelope-at:before{content:"\f84c"}.bi-regex:before{content:"\f84d"}.bi-text-wrap:before{content:"\f84e"}.bi-sign-dead-end-fill:before{content:"\f84f"}.bi-sign-dead-end:before{content:"\f850"}.bi-sign-do-not-enter-fill:before{content:"\f851"}.bi-sign-do-not-enter:before{content:"\f852"}.bi-sign-intersection-fill:before{content:"\f853"}.bi-sign-intersection-side-fill:before{content:"\f854"}.bi-sign-intersection-side:before{content:"\f855"}.bi-sign-intersection-t-fill:before{content:"\f856"}.bi-sign-intersection-t:before{content:"\f857"}.bi-sign-intersection-y-fill:before{content:"\f858"}.bi-sign-intersection-y:before{content:"\f859"}.bi-sign-intersection:before{content:"\f85a"}.bi-sign-merge-left-fill:before{content:"\f85b"}.bi-sign-merge-left:before{content:"\f85c"}.bi-sign-merge-right-fill:before{content:"\f85d"}.bi-sign-merge-right:before{content:"\f85e"}.bi-sign-no-left-turn-fill:before{content:"\f85f"}.bi-sign-no-left-turn:before{content:"\f860"}.bi-sign-no-parking-fill:before{content:"\f861"}.bi-sign-no-parking:before{content:"\f862"}.bi-sign-no-right-turn-fill:before{content:"\f863"}.bi-sign-no-right-turn:before{content:"\f864"}.bi-sign-railroad-fill:before{content:"\f865"}.bi-sign-railroad:before{content:"\f866"}.bi-building-add:before{content:"\f867"}.bi-building-check:before{content:"\f868"}.bi-building-dash:before{content:"\f869"}.bi-building-down:before{content:"\f86a"}.bi-building-exclamation:before{content:"\f86b"}.bi-building-fill-add:before{content:"\f86c"}.bi-building-fill-check:before{content:"\f86d"}.bi-building-fill-dash:before{content:"\f86e"}.bi-building-fill-down:before{content:"\f86f"}.bi-building-fill-exclamation:before{content:"\f870"}.bi-building-fill-gear:before{content:"\f871"}.bi-building-fill-lock:before{content:"\f872"}.bi-building-fill-slash:before{content:"\f873"}.bi-building-fill-up:before{content:"\f874"}.bi-building-fill-x:before{content:"\f875"}.bi-building-fill:before{content:"\f876"}.bi-building-gear:before{content:"\f877"}.bi-building-lock:before{content:"\f878"}.bi-building-slash:before{content:"\f879"}.bi-building-up:before{content:"\f87a"}.bi-building-x:before{content:"\f87b"}.bi-buildings-fill:before{content:"\f87c"}.bi-buildings:before{content:"\f87d"}.bi-bus-front-fill:before{content:"\f87e"}.bi-bus-front:before{content:"\f87f"}.bi-ev-front-fill:before{content:"\f880"}.bi-ev-front:before{content:"\f881"}.bi-globe-americas:before{content:"\f882"}.bi-globe-asia-australia:before{content:"\f883"}.bi-globe-central-south-asia:before{content:"\f884"}.bi-globe-europe-africa:before{content:"\f885"}.bi-house-add-fill:before{content:"\f886"}.bi-house-add:before{content:"\f887"}.bi-house-check-fill:before{content:"\f888"}.bi-house-check:before{content:"\f889"}.bi-house-dash-fill:before{content:"\f88a"}.bi-house-dash:before{content:"\f88b"}.bi-house-down-fill:before{content:"\f88c"}.bi-house-down:before{content:"\f88d"}.bi-house-exclamation-fill:before{content:"\f88e"}.bi-house-exclamation:before{content:"\f88f"}.bi-house-gear-fill:before{content:"\f890"}.bi-house-gear:before{content:"\f891"}.bi-house-lock-fill:before{content:"\f892"}.bi-house-lock:before{content:"\f893"}.bi-house-slash-fill:before{content:"\f894"}.bi-house-slash:before{content:"\f895"}.bi-house-up-fill:before{content:"\f896"}.bi-house-up:before{content:"\f897"}.bi-house-x-fill:before{content:"\f898"}.bi-house-x:before{content:"\f899"}.bi-person-add:before{content:"\f89a"}.bi-person-down:before{content:"\f89b"}.bi-person-exclamation:before{content:"\f89c"}.bi-person-fill-add:before{content:"\f89d"}.bi-person-fill-check:before{content:"\f89e"}.bi-person-fill-dash:before{content:"\f89f"}.bi-person-fill-down:before{content:"\f8a0"}.bi-person-fill-exclamation:before{content:"\f8a1"}.bi-person-fill-gear:before{content:"\f8a2"}.bi-person-fill-lock:before{content:"\f8a3"}.bi-person-fill-slash:before{content:"\f8a4"}.bi-person-fill-up:before{content:"\f8a5"}.bi-person-fill-x:before{content:"\f8a6"}.bi-person-gear:before{content:"\f8a7"}.bi-person-lock:before{content:"\f8a8"}.bi-person-slash:before{content:"\f8a9"}.bi-person-up:before{content:"\f8aa"}.bi-scooter:before{content:"\f8ab"}.bi-taxi-front-fill:before{content:"\f8ac"}.bi-taxi-front:before{content:"\f8ad"}.bi-amd:before{content:"\f8ae"}.bi-database-add:before{content:"\f8af"}.bi-database-check:before{content:"\f8b0"}.bi-database-dash:before{content:"\f8b1"}.bi-database-down:before{content:"\f8b2"}.bi-database-exclamation:before{content:"\f8b3"}.bi-database-fill-add:before{content:"\f8b4"}.bi-database-fill-check:before{content:"\f8b5"}.bi-database-fill-dash:before{content:"\f8b6"}.bi-database-fill-down:before{content:"\f8b7"}.bi-database-fill-exclamation:before{content:"\f8b8"}.bi-database-fill-gear:before{content:"\f8b9"}.bi-database-fill-lock:before{content:"\f8ba"}.bi-database-fill-slash:before{content:"\f8bb"}.bi-database-fill-up:before{content:"\f8bc"}.bi-database-fill-x:before{content:"\f8bd"}.bi-database-fill:before{content:"\f8be"}.bi-database-gear:before{content:"\f8bf"}.bi-database-lock:before{content:"\f8c0"}.bi-database-slash:before{content:"\f8c1"}.bi-database-up:before{content:"\f8c2"}.bi-database-x:before{content:"\f8c3"}.bi-database:before{content:"\f8c4"}.bi-houses-fill:before{content:"\f8c5"}.bi-houses:before{content:"\f8c6"}.bi-nvidia:before{content:"\f8c7"}.bi-person-vcard-fill:before{content:"\f8c8"}.bi-person-vcard:before{content:"\f8c9"}.bi-sina-weibo:before{content:"\f8ca"}.bi-tencent-qq:before{content:"\f8cb"}.bi-wikipedia:before{content:"\f8cc"}.bi-alphabet-uppercase:before{content:"\f2a5"}.bi-alphabet:before{content:"\f68a"}.bi-amazon:before{content:"\f68d"}.bi-arrows-collapse-vertical:before{content:"\f690"}.bi-arrows-expand-vertical:before{content:"\f695"}.bi-arrows-vertical:before{content:"\f698"}.bi-arrows:before{content:"\f6a2"}.bi-ban-fill:before{content:"\f6a3"}.bi-ban:before{content:"\f6b6"}.bi-bing:before{content:"\f6c2"}.bi-cake:before{content:"\f6e0"}.bi-cake2:before{content:"\f6ed"}.bi-cookie:before{content:"\f6ee"}.bi-copy:before{content:"\f759"}.bi-crosshair:before{content:"\f769"}.bi-crosshair2:before{content:"\f794"}.bi-emoji-astonished-fill:before{content:"\f795"}.bi-emoji-astonished:before{content:"\f79a"}.bi-emoji-grimace-fill:before{content:"\f79b"}.bi-emoji-grimace:before{content:"\f7a0"}.bi-emoji-grin-fill:before{content:"\f7a1"}.bi-emoji-grin:before{content:"\f7a6"}.bi-emoji-surprise-fill:before{content:"\f7a7"}.bi-emoji-surprise:before{content:"\f7ac"}.bi-emoji-tear-fill:before{content:"\f7ad"}.bi-emoji-tear:before{content:"\f7b2"}.bi-envelope-arrow-down-fill:before{content:"\f7b3"}.bi-envelope-arrow-down:before{content:"\f7b8"}.bi-envelope-arrow-up-fill:before{content:"\f7b9"}.bi-envelope-arrow-up:before{content:"\f7be"}.bi-feather:before{content:"\f7bf"}.bi-feather2:before{content:"\f7c4"}.bi-floppy-fill:before{content:"\f7c5"}.bi-floppy:before{content:"\f7d8"}.bi-floppy2-fill:before{content:"\f7d9"}.bi-floppy2:before{content:"\f7e4"}.bi-gitlab:before{content:"\f7e5"}.bi-highlighter:before{content:"\f7f8"}.bi-marker-tip:before{content:"\f802"}.bi-nvme-fill:before{content:"\f803"}.bi-nvme:before{content:"\f80c"}.bi-opencollective:before{content:"\f80d"}.bi-pci-card-network:before{content:"\f8cd"}.bi-pci-card-sound:before{content:"\f8ce"}.bi-radar:before{content:"\f8cf"}.bi-send-arrow-down-fill:before{content:"\f8d0"}.bi-send-arrow-down:before{content:"\f8d1"}.bi-send-arrow-up-fill:before{content:"\f8d2"}.bi-send-arrow-up:before{content:"\f8d3"}.bi-sim-slash-fill:before{content:"\f8d4"}.bi-sim-slash:before{content:"\f8d5"}.bi-sourceforge:before{content:"\f8d6"}.bi-substack:before{content:"\f8d7"}.bi-threads-fill:before{content:"\f8d8"}.bi-threads:before{content:"\f8d9"}.bi-transparency:before{content:"\f8da"}.bi-twitter-x:before{content:"\f8db"}.bi-type-h4:before{content:"\f8dc"}.bi-type-h5:before{content:"\f8dd"}.bi-type-h6:before{content:"\f8de"}.bi-backpack-fill:before{content:"\f8df"}.bi-backpack:before{content:"\f8e0"}.bi-backpack2-fill:before{content:"\f8e1"}.bi-backpack2:before{content:"\f8e2"}.bi-backpack3-fill:before{content:"\f8e3"}.bi-backpack3:before{content:"\f8e4"}.bi-backpack4-fill:before{content:"\f8e5"}.bi-backpack4:before{content:"\f8e6"}.bi-brilliance:before{content:"\f8e7"}.bi-cake-fill:before{content:"\f8e8"}.bi-cake2-fill:before{content:"\f8e9"}.bi-duffle-fill:before{content:"\f8ea"}.bi-duffle:before{content:"\f8eb"}.bi-exposure:before{content:"\f8ec"}.bi-gender-neuter:before{content:"\f8ed"}.bi-highlights:before{content:"\f8ee"}.bi-luggage-fill:before{content:"\f8ef"}.bi-luggage:before{content:"\f8f0"}.bi-mailbox-flag:before{content:"\f8f1"}.bi-mailbox2-flag:before{content:"\f8f2"}.bi-noise-reduction:before{content:"\f8f3"}.bi-passport-fill:before{content:"\f8f4"}.bi-passport:before{content:"\f8f5"}.bi-person-arms-up:before{content:"\f8f6"}.bi-person-raised-hand:before{content:"\f8f7"}.bi-person-standing-dress:before{content:"\f8f8"}.bi-person-standing:before{content:"\f8f9"}.bi-person-walking:before{content:"\f8fa"}.bi-person-wheelchair:before{content:"\f8fb"}.bi-shadows:before{content:"\f8fc"}.bi-suitcase-fill:before{content:"\f8fd"}.bi-suitcase-lg-fill:before{content:"\f8fe"}.bi-suitcase-lg:before{content:"\f8ff"}.bi-suitcase:before{content:"\f900"}.bi-suitcase2-fill:before{content:"\f901"}.bi-suitcase2:before{content:"\f902"}.bi-vignette:before{content:"\f903"}.navbar,.bg-primary{background:linear-gradient(45deg,#ff2600,#440064)}html,body{height:100vh}body{display:flex;flex-direction:column;flex-wrap:nowrap}header{flex-shrink:0;flex-grow:0}main{flex-shrink:0;flex-grow:1;margin-bottom:auto;margin-top:0}footer{flex-shrink:0;flex-grow:0;margin-bottom:0;margin-top:auto}.squared{width:100%;padding-top:100%;position:relative}.squared>*{position:absolute;top:0;left:0;width:100%;height:100%} diff --git a/projects/demo-showcase/src/app/app.component.ts b/projects/demo-showcase/src/app/app.component.ts index e9f9b2e..a2412a9 100644 --- a/projects/demo-showcase/src/app/app.component.ts +++ b/projects/demo-showcase/src/app/app.component.ts @@ -5,7 +5,6 @@ import { Component } from '@angular/core'; // Custom dependencies import { ThemeSelectorComponent } from './theme-selector/theme-selector.component'; import { ThemeSelectorService } from './theme-selector/theme-selector.service'; -import { PageSequenceViewerModule } from './page-sequence-viewer/page-sequence-viewer.module'; @Component({ @@ -14,8 +13,10 @@ import { PageSequenceViewerModule } from './page-sequence-viewer/page-sequence-v imports: [ // Custom components ThemeSelectorComponent, - // TODO Import pages - PageSequenceViewerModule, + // // TODO Import pages + // PageStructureViewerModule, + // PageFeaturesViewerModule, + // PageSequenceViewerModule, // Core modules CommonModule, RouterModule, diff --git a/projects/demo-showcase/src/app/app.config.ts b/projects/demo-showcase/src/app/app.config.ts index 0700d1c..b9781ec 100644 --- a/projects/demo-showcase/src/app/app.config.ts +++ b/projects/demo-showcase/src/app/app.config.ts @@ -1,7 +1,8 @@ import { ApplicationConfig } from '@angular/core'; -import { provideRouter } from '@angular/router'; +import { PreloadAllModules, provideRouter, withPreloading } from '@angular/router'; import { routes } from './app.routes'; export const appConfig: ApplicationConfig = { - providers: [provideRouter(routes)], + // Implement lazyu loading + providers: [provideRouter(routes, withPreloading(PreloadAllModules))], }; diff --git a/projects/demo-showcase/src/app/app.routes.ts b/projects/demo-showcase/src/app/app.routes.ts index 16944d0..236d74a 100644 --- a/projects/demo-showcase/src/app/app.routes.ts +++ b/projects/demo-showcase/src/app/app.routes.ts @@ -1,27 +1,10 @@ -// import { PageStructureViewerComponent } from './page-structure-viewer/page-structure-viewer.component'; -// import { PageSequenceViewerComponent } from './page-sequence-viewer/page-sequence-viewer.component'; -// import { PageFeaturesViewerComponent } from './page-features-viewer/page-features-viewer.component'; -import { PageStructureViewerComponent } from './page-structure-viewer/page-structure-viewer.component'; -import { PageSequenceViewerComponent } from './page-sequence-viewer/page-sequence-viewer.component'; import { PageHomeComponent } from './page-home/page-home.component'; import { Routes } from '@angular/router'; export const routes: Routes = [ - // { - // path: 'structure', - // loadComponent: () => import('./page-structure-viewer/page-structure-viewer.component').then(m => m.PageStructureViewerComponent) - // }, - // { - // path: 'sequence', - // loadComponent: () => import('./page-sequence-viewer/page-sequence-viewer.component').then(m => m.PageSequenceViewerComponent) - // }, - // { - // path: 'features', - // loadComponent: () => import('./page-features-viewer/page-features-viewer.component').then(m => m.PageFeaturesViewerComponent) - // }, - - { path: 'structure', component: PageStructureViewerComponent }, - { path: 'sequence', component: PageSequenceViewerComponent }, + { path: 'structure', loadChildren: () => import('./page-structure-viewer/page-structure-viewer.module').then(m => m.PageStructureViewerModule) }, + { path: 'features', loadChildren: () => import('./page-features-viewer/page-features-viewer.module').then(m => m.PageFeaturesViewerModule) }, + { path: 'sequence', loadChildren: () => import('./page-sequence-viewer/page-sequence-viewer.module').then(m => m.PageSequenceViewerModule) }, { path: '', component: PageHomeComponent }, { path: '**', redirectTo: '' } ]; diff --git a/projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.component.ts b/projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.component.ts index 5b0185f..76b9d41 100644 --- a/projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.component.ts +++ b/projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.component.ts @@ -1,6 +1,5 @@ -import { NgxFeaturesViewerLabelDirective, NgxFeaturesViewerComponent, Hierarchy, Settings } from '@ngx-features-viewer'; import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { CommonModule } from '@angular/common'; +import { Hierarchy, Settings } from '@ngx-features-viewer'; // >sp|P04637|P53_HUMAN Cellular tumor antigen p53 OS=Homo sapiens OX=9606 GN=TP53 PE=1 SV=4 const P04637 = 'MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSP' + @@ -16,12 +15,6 @@ const P04637 = 'MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSP' + @Component({ // eslint-disable-next-line @angular-eslint/component-selector selector: 'page-features-viewer', - // Handle dependencies - imports: [ - NgxFeaturesViewerLabelDirective, - NgxFeaturesViewerComponent, - CommonModule,], - standalone: true, // Handle representation templateUrl: './page-features-viewer.component.html', styleUrl: './page-features-viewer.component.scss', diff --git a/projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.module.ts b/projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.module.ts new file mode 100644 index 0000000..9b2d47e --- /dev/null +++ b/projects/demo-showcase/src/app/page-features-viewer/page-features-viewer.module.ts @@ -0,0 +1,22 @@ +import { NgxFeaturesViewerComponent, NgxFeaturesViewerLabelDirective } from '@ngx-features-viewer'; +import { PageFeaturesViewerComponent } from './page-features-viewer.component'; +import { RouterModule, Routes } from '@angular/router'; +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; + + +// Define sub-routes +const routes: Routes = [{ path: '', component: PageFeaturesViewerComponent }]; + +@NgModule({ + declarations: [ + PageFeaturesViewerComponent, + ], + imports: [ + NgxFeaturesViewerLabelDirective, + NgxFeaturesViewerComponent, + RouterModule.forChild(routes), + CommonModule + ] +}) +export class PageFeaturesViewerModule { } diff --git a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.module.ts b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.module.ts index 7a0236d..8664fbb 100644 --- a/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.module.ts +++ b/projects/demo-showcase/src/app/page-sequence-viewer/page-sequence-viewer.module.ts @@ -3,8 +3,12 @@ import { SingleSequenceViewerComponent } from './single-sequence-viewer.componen import { PageSequenceViewerComponent } from './page-sequence-viewer.component'; import { NgxSequenceViewerComponent } from '@ngx-sequence-viewer'; import { CommonModule } from '@angular/common'; +import { RouterModule, Routes } from '@angular/router'; import { NgModule } from '@angular/core'; +// Define sub-routes +const routes: Routes = [{ path: '', component: PageSequenceViewerComponent }]; + @NgModule({ declarations: [ MultipleSequenceAlignmentComponent, @@ -13,6 +17,7 @@ import { NgModule } from '@angular/core'; ], imports: [ NgxSequenceViewerComponent, + RouterModule.forChild(routes), CommonModule ] }) diff --git a/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.html b/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.html index ecafd3b..aa0a2a4 100644 --- a/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.html +++ b/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.html @@ -1,4 +1,4 @@ -
+

Structure viewer

@@ -8,12 +8,35 @@

Structure viewer

releases of Angular and automatized the most common features of Mol*.

+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+
- + -
\ No newline at end of file +
+ \ No newline at end of file diff --git a/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.ts b/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.ts index 679a9ba..a8458b3 100644 --- a/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.ts +++ b/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.ts @@ -1,29 +1,37 @@ -// import { SectionInteractionsComponent } from './sections/section-interactions.component'; -// import { SectionSourcesComponent } from './sections/section-sources.component'; -import { SectionChainsComponent } from './sections/section-chains.component'; -import { RouterModule } from '@angular/router'; -import { CommonModule } from '@angular/common'; +import { ThemeSelectorService } from '../theme-selector/theme-selector.service'; +import { Settings } from '@ngx-structure-viewer'; import { Component } from '@angular/core'; -// import { SectionHighlightsComponent } from './sections/section-highlights.component'; +import { map, Observable, shareReplay } from 'rxjs'; @Component({ // eslint-disable-next-line @angular-eslint/component-selector selector: 'page-structure-viewer', - // Handle dependencies - imports: [ - // NgxStructureViewerComponent, - // HttpClientModule, - // SectionInteractionsComponent, - // SectionHighlightsComponent, - // SectionSourcesComponent, - SectionChainsComponent, - RouterModule, - CommonModule, - ], - standalone: true, // Handle representation templateUrl: './page-structure-viewer.component.html', styleUrl: './page-structure-viewer.component.scss', }) export class PageStructureViewerComponent { + + readonly LIGHT: Partial = { + 'background-color': '#dee2e6', + 'backbone-color': '#ff0000', // '#1a1d20', + }; + + readonly DARK: Partial = { + 'background-color': '#1a1d20', + 'backbone-color': '#00ff00', // '#dee2e6', + }; + + public settings$: Observable>; + + constructor(public themeSelectorService: ThemeSelectorService) { + // Define settings observable + this.settings$ = this.themeSelectorService.theme$.pipe( + // Map theme to settings + map((theme) => theme === 'light' ? this.LIGHT : this.DARK), + // Cache results + shareReplay(1), + ); + } + } diff --git a/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.module.ts b/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.module.ts new file mode 100644 index 0000000..812e09e --- /dev/null +++ b/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.module.ts @@ -0,0 +1,28 @@ +// import { SectionInteractionsComponent } from './sections/section-interactions.component'; +// import { SectionSourcesComponent } from './sections/section-sources.component'; +// import { SectionChainsComponent } from './sections/section-chains.component'; +import { PageStructureViewerComponent } from './page-structure-viewer.component'; +import { NgxStructureViewerComponent } from "@ngx-structure-viewer"; +import { HttpClientModule } from '@angular/common/http'; +import { RouterModule, Routes } from '@angular/router'; +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; + +// Define sub-routes +const routes: Routes = [{ path: '', component: PageStructureViewerComponent }]; + +@NgModule({ + declarations: [ + PageStructureViewerComponent, + // SectionInteractionsComponent, + // SectionSourcesComponent, + // SectionChainsComponent, + ], + imports: [ + NgxStructureViewerComponent, + RouterModule.forChild(routes), + HttpClientModule, + CommonModule, + ] +}) +export class PageStructureViewerModule { } diff --git a/projects/demo-showcase/src/app/page-structure-viewer/sections/section-chains.component.ts b/projects/demo-showcase/src/app/page-structure-viewer/sections/section-chains.component.ts index 02ba080..3d1286d 100644 --- a/projects/demo-showcase/src/app/page-structure-viewer/sections/section-chains.component.ts +++ b/projects/demo-showcase/src/app/page-structure-viewer/sections/section-chains.component.ts @@ -1,16 +1,10 @@ -import { NgxStructureViewerComponent, Locus, Settings, Source } from '@ngx-structure-viewer'; import { ThemeSelectorService } from '../../theme-selector/theme-selector.service'; +import { Locus, Settings, Source } from '@ngx-structure-viewer'; import { Observable, interval, map, shareReplay, startWith } from 'rxjs'; import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { CommonModule } from '@angular/common'; @Component({ selector: 'app-section-chains', - imports: [ - NgxStructureViewerComponent, - CommonModule, - ], - standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, templateUrl: './section-chains.component.html', styleUrl: './section-chains.component.scss', diff --git a/projects/demo-showcase/src/app/page-structure-viewer/sections/section-highlights.component.ts b/projects/demo-showcase/src/app/page-structure-viewer/sections/section-highlights.component.ts index 6af09b7..3d49ce5 100644 --- a/projects/demo-showcase/src/app/page-structure-viewer/sections/section-highlights.component.ts +++ b/projects/demo-showcase/src/app/page-structure-viewer/sections/section-highlights.component.ts @@ -1,17 +1,11 @@ -import { NgxStructureViewerComponent, Settings, Source, Locus } from '@ngx-structure-viewer'; +import { Settings, Source, Locus } from '@ngx-structure-viewer'; import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { CommonModule } from '@angular/common'; import { ReplaySubject } from 'rxjs'; type Highlights = Locus | undefined; @Component({ selector: 'app-section-highlights', - imports: [ - NgxStructureViewerComponent, - CommonModule, - ], - standalone: true, templateUrl: './section-highlights.component.html', styleUrl: './section-highlights.component.scss', changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/projects/demo-showcase/src/app/page-structure-viewer/sections/section-interactions.component.ts b/projects/demo-showcase/src/app/page-structure-viewer/sections/section-interactions.component.ts index 4bd15dc..e53dd07 100644 --- a/projects/demo-showcase/src/app/page-structure-viewer/sections/section-interactions.component.ts +++ b/projects/demo-showcase/src/app/page-structure-viewer/sections/section-interactions.component.ts @@ -1,16 +1,11 @@ -import { NgxStructureViewerComponent, Source, Settings, Interaction } from '@ngx-structure-viewer'; +import { Source, Settings, Interaction } from '@ngx-structure-viewer'; import { Observable, interval, map, shareReplay, startWith } from 'rxjs'; import { Vec3 } from 'molstar/lib/mol-math/linear-algebra'; -import { CommonModule, Location } from '@angular/common'; +import { Location } from '@angular/common'; import { Component } from '@angular/core'; @Component({ selector: 'app-section-interactions', - standalone: true, - imports: [ - NgxStructureViewerComponent, - CommonModule, - ], templateUrl: './section-interactions.component.html', styleUrl: './section-interactions.component.scss' }) diff --git a/projects/demo-showcase/src/app/page-structure-viewer/sections/section-sources.component.ts b/projects/demo-showcase/src/app/page-structure-viewer/sections/section-sources.component.ts index 9ba75ee..4145928 100644 --- a/projects/demo-showcase/src/app/page-structure-viewer/sections/section-sources.component.ts +++ b/projects/demo-showcase/src/app/page-structure-viewer/sections/section-sources.component.ts @@ -1,17 +1,10 @@ -import { NgxStructureViewerComponent, Settings, Source } from '@ngx-structure-viewer'; -import { HttpClient, HttpClientModule } from '@angular/common/http'; -import { CommonModule } from '@angular/common'; -import { Component } from '@angular/core'; +import { Settings, Source } from '@ngx-structure-viewer'; import { Observable, map, of, tap } from 'rxjs'; +import { HttpClient } from '@angular/common/http'; +import { Component } from '@angular/core'; @Component({ selector: 'app-section-sources', - standalone: true, - imports: [ - NgxStructureViewerComponent, - HttpClientModule, - CommonModule, - ], templateUrl: './section-sources.component.html', styleUrl: './section-sources.component.scss' }) diff --git a/projects/demo-showcase/src/styles.scss b/projects/demo-showcase/src/styles.scss index d74a05a..60f7660 100644 --- a/projects/demo-showcase/src/styles.scss +++ b/projects/demo-showcase/src/styles.scss @@ -30,6 +30,7 @@ @import "bootstrap/scss/badge"; @import "bootstrap/scss/card"; @import "bootstrap/scss/dropdown"; +@import "bootstrap/scss/placeholders"; // 7. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss` @import "bootstrap/scss/utilities/api"; diff --git a/projects/ngx-structure-viewer/src/lib/molstar.spec.ts b/projects/ngx-structure-viewer/src/lib/molstar.spec.ts new file mode 100644 index 0000000..e69de29 diff --git a/projects/ngx-structure-viewer/src/lib/molstar.ts b/projects/ngx-structure-viewer/src/lib/molstar.ts new file mode 100644 index 0000000..cd05d83 --- /dev/null +++ b/projects/ngx-structure-viewer/src/lib/molstar.ts @@ -0,0 +1,77 @@ +import { Structure, StructureElement, StructureSelection } from 'molstar/lib/mol-model/structure'; +import { Loci } from 'molstar/lib/mol-model/structure/structure/element/loci'; +import { StateTransforms } from 'molstar/lib/mol-plugin-state/transforms'; +import { MolScriptBuilder } from "molstar/lib/mol-script/language/builder"; +import { Expression } from 'molstar/lib/mol-script/language/expression'; +import { Overpaint } from 'molstar/lib/mol-theme/overpaint'; +import { Script } from 'molstar/lib/mol-script/script'; +import { Color } from 'molstar/lib/mol-util/color'; + +export { DefaultPluginUISpec } from 'molstar/lib/mol-plugin-ui/spec'; +export { PluginUIContext } from 'molstar/lib/mol-plugin-ui/context'; +export { renderReact18 } from 'molstar/lib/mol-plugin-ui/react18'; +export { PluginUISpec } from 'molstar/lib/mol-plugin-ui/spec'; +export { createPluginUI } from 'molstar/lib/mol-plugin-ui'; +export { Asset } from 'molstar/lib/mol-util/assets'; + +export const OverpaintStructureRepresentation3DFromBundle = StateTransforms.Representation.OverpaintStructureRepresentation3DFromBundle; + +export function overpaintToBundle(filteredBundle: Overpaint) { + return Overpaint.toBundle(filteredBundle); +} + +export function colorFromHex(hex: string): [Color, number] { + // Declare hue string + let hue: string; + // Remove starting hashtag + hex = hex.replace(/^#/, ''); + // Split string in hex, alpha + [hue, hex] = [hex.slice(6, 8), hex.slice(0, 6)]; + // Define color + const color = Color.fromHexStyle('#' + hex); + // Define alpha component + const alpha = Number('0x' + (hue || 'ff')) / 255; + // Define color, alpha + return [color, 1.0 - alpha]; +} + +export function getBundleFromLoci(loci: Loci) { + // Just return bundle from loci + return StructureElement.Bundle.fromLoci(loci); +} + +export function getLocusFromQuery(query: Expression, structure: Structure): StructureElement.Loci { + // Execute query, retrieve selection + const selection: StructureSelection = Script.getStructureSelection(query, structure); + // Cast selection to loci + return StructureSelection.toLociWithSourceUnits(selection); +} + +export function getLocusFromSet(set: string[], structure: Structure): StructureElement.Loci { + // Override query + const query = MolScriptBuilder.struct.generator.atomGroups({ + // Select atoms between and atom IDs + 'residue-test': MolScriptBuilder.core.set.has([ + // Define subset of resdiue identifiers + MolScriptBuilder.set(...set), + // Define set of residue identifiers (author sequence identifiers) + MolScriptBuilder.core.str.concat([ + MolScriptBuilder.ammp('auth_asym_id'), ',', + MolScriptBuilder.ammp('auth_seq_id'), + MolScriptBuilder.ammp('pdbx_PDB_ins_code'), + ]), + ]), + }); + // Create loci + return getLocusFromQuery(query, structure); +} + +// Filter overpaint layers for given structure +export function getFilteredBundle(layers: Overpaint.BundleLayer[], structure: Structure) { + // Generate overpaint out of bundle + const overpaint: Overpaint = Overpaint.ofBundle(layers, structure.root); + // Merge overpaint layers together (order matters) + const merged: Overpaint = Overpaint.merge(overpaint); + // Apply overpaint on target structure + return Overpaint.filter(merged, structure); +} diff --git a/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.html b/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.html deleted file mode 100644 index 4ea4ec5..0000000 --- a/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.html +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.scss b/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.scss index 6e5cefe..f1c780e 100644 --- a/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.scss +++ b/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.scss @@ -1,9 +1,17 @@ :host { + // Cover the whole container overflow: hidden; display: block; height: 100%; width: 100%; + // Adapt inner container + div { + display: block; + height: inherit; + width: inherit; + } + ::ng-deep { @import 'molstar/lib/mol-plugin-ui/skin/dark.scss'; @@ -12,6 +20,10 @@ background: transparent !important; } + &.msp-logo { + display: none !important; + } + &.msp-plugin .msp-viewport { background: revert; } diff --git a/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts b/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts index 216278b..68f430b 100644 --- a/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts +++ b/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts @@ -1,73 +1,91 @@ -import { Component, ElementRef, Input, Output, ViewChild } from '@angular/core'; +import { AfterViewInit, Component, ElementRef, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core'; import { CommonModule } from '@angular/common'; +// Custom dependencies +// import { StructureService } from './services/structure.service'; +// import { PluginService } from './services/plugin.service'; +import { Settings } from './interfaces/settings'; +import { Source } from './interfaces/source'; +import { Locus } from './interfaces/locus'; + // Custom dependencies import { RepresentationService } from './services/representation.service'; -import { HighlightService } from './services/highlight.service'; +// import { HighlightService } from './services/highlight.service'; import { StructureService } from './services/structure.service'; import { SettingsService } from './services/settings.service'; +import { MolstarService } from './services/molstar.service'; import { PluginService } from './services/plugin.service'; -import { Interaction } from './interfaces/interaction'; -import { Settings } from './interfaces/settings'; -import { Source } from './interfaces/source'; -import { Locus } from './interfaces/locus'; import { map, shareReplay } from 'rxjs'; +// import { Interaction } from './interfaces/interaction'; +// import { Settings } from './interfaces/settings'; +// import { Source } from './interfaces/source'; +// import { Locus } from './interfaces/locus'; +// import { map, shareReplay } from 'rxjs'; @Component({ // eslint-disable-next-line @angular-eslint/component-selector selector: 'ngx-structure-viewer', + styleUrl: './ngx-structure-viewer.component.scss', + template: '
', // Handle dependencies - imports: [ - CommonModule, - ], + imports: [ CommonModule ], providers: [ RepresentationService, - HighlightService, + // HighlightService, StructureService, SettingsService, + MolstarService, PluginService, ], standalone: true, - // Handle representation - templateUrl: './ngx-structure-viewer.component.html', - styleUrl: './ngx-structure-viewer.component.scss', }) -export class NgxStructureViewerComponent { +export class NgxStructureViewerComponent implements AfterViewInit, OnChanges { @ViewChild('container') - set container(container: ElementRef) { - // Emit container - this.pluginService.initialize$.next(container); - } + public container!: ElementRef; - @Input() - set source(source: Source) { - this.structureService.source = source; - } - - @Input() - set loci(loci: Locus[]) { - this.representationService.loci = loci; - } + // @Input() + // set source(source: Source) { + // this.structureService.source = source; + // } - @Input() - set interactions(interactions: Interaction[]) { - this.representationService.interactions = interactions; - } + // @Input() + // set loci(loci: Locus[]) { + // this.representationService.loci = loci; + // } - @Input() - set settings(settings: Settings) { - this.settingsService.settings = settings; - } + // @Input() + // set interactions(interactions: Interaction[]) { + // this.representationService.interactions = interactions; + // } // @Input() - // set highlights(highlights: Highlights) { - // this.highlightService.highlights = highlights; + // set settings(settings: Settings) { + // this.settingsService.settings = settings; // } - // eslint-disable-next-line @angular-eslint/no-output-rename - @Output('highlights') - public highlights$ = this.highlightService.output$; + // // @Input() + // // set highlights(highlights: Highlights) { + // // this.highlightService.highlights = highlights; + // // } + + // // eslint-disable-next-line @angular-eslint/no-output-rename + // @Output('highlights') + // public highlights$ = this.highlightService.output$; + + // public background$ = this.settingsService.settings$.pipe( + // // Extract background color + // map((settings) => settings['background-color']), + // // Cache result + // shareReplay(1), + // ); + @Input() settings!: Partial | null; + + @Input() source!: Source | null; + + @Input() loci!: Locus[] | null; + + // Allow acces to background color in background public background$ = this.settingsService.settings$.pipe( // Extract background color map((settings) => settings['background-color']), @@ -77,11 +95,38 @@ export class NgxStructureViewerComponent { constructor( public representationService: RepresentationService, - public highlightService: HighlightService, + // public highlightService: HighlightService, public structureService: StructureService, public settingsService: SettingsService, + public molstarService: MolstarService, public pluginService: PluginService, ) { } + public ngOnChanges(changes: SimpleChanges): void { + // Handle settings changes + if (changes['settings']) { + // Get default settings + const { DEFAULT } = this.settingsService; + // Initialize settings + const settings = this.settings || {}; + // Emit settings + this.settingsService.settings$.next({ ...DEFAULT,...settings }); + } + // Handle source changes + if (changes['source']) { + // Emit source + this.structureService.source$.next(this.source); + } + // Handle loci changes + if (changes['loci']) { + // TODO + } + } + + public ngAfterViewInit(): void { + // Emit container + this.pluginService.container$.next(this.container); + } + } diff --git a/projects/ngx-structure-viewer/src/lib/services/molstar.service.spec.ts b/projects/ngx-structure-viewer/src/lib/services/molstar.service.spec.ts new file mode 100644 index 0000000..7f08275 --- /dev/null +++ b/projects/ngx-structure-viewer/src/lib/services/molstar.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { MolstarService } from './molstar.service'; + +describe('MolstarService', () => { + let service: MolstarService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(MolstarService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/projects/ngx-structure-viewer/src/lib/services/molstar.service.ts b/projects/ngx-structure-viewer/src/lib/services/molstar.service.ts new file mode 100644 index 0000000..7625adc --- /dev/null +++ b/projects/ngx-structure-viewer/src/lib/services/molstar.service.ts @@ -0,0 +1,21 @@ +import { from, shareReplay, tap } from 'rxjs'; +import { Injectable } from '@angular/core'; +import * as Molstar from '../molstar'; + +@Injectable({ providedIn: 'root' }) +export class MolstarService { + + protected _molstar!: typeof Molstar; + + public get molstar() { + return this._molstar; + } + + readonly molstar$ = from(import('../molstar')).pipe( + // Store lazily loaded module + tap((module) => this._molstar = module), + // Cache result + shareReplay(1), + ); + +} diff --git a/projects/ngx-structure-viewer/src/lib/services/plugin.service.ts b/projects/ngx-structure-viewer/src/lib/services/plugin.service.ts index 963ac4c..c79bfb2 100644 --- a/projects/ngx-structure-viewer/src/lib/services/plugin.service.ts +++ b/projects/ngx-structure-viewer/src/lib/services/plugin.service.ts @@ -1,57 +1,59 @@ -import { DefaultPluginUISpec, PluginUISpec } from 'molstar/lib/mol-plugin-ui/spec'; +import { combineLatest, from, Observable, ReplaySubject, shareReplay, switchMap } from 'rxjs'; import { PluginUIContext } from 'molstar/lib/mol-plugin-ui/context'; -import { renderReact18 } from 'molstar/lib/mol-plugin-ui/react18'; -import { PluginConfig } from 'molstar/lib/mol-plugin/config'; -import { createPluginUI } from 'molstar/lib/mol-plugin-ui'; -// import { PluginContext } from 'molstar/lib/mol-plugin/context'; -import { Observable, ReplaySubject, from, map, shareReplay, switchMap, tap } from 'rxjs'; +import { PluginUISpec } from 'molstar/lib/mol-plugin-ui/spec'; import { ElementRef, Injectable } from '@angular/core'; +import { MolstarService } from './molstar.service'; @Injectable() export class PluginService { - public plugin!: PluginUIContext; - - readonly specs: PluginUISpec = { ...DefaultPluginUISpec(), - // Show commands - config: [ - [PluginConfig.VolumeStreaming.Enabled, false] - ], - // TODO Remove this + // Define default specs + protected spec: Partial = { canvas3d: { - // renderer: { - // backgroundColor: Color(0x000000), - // } + // Make background transparent transparentBackground: true, - } - }; + }, + } - readonly initialize$ = new ReplaySubject(1); + // Define + readonly container$ = new ReplaySubject(1); + // NOTE This must be emitted after initialization, as it requires the container div readonly plugin$: Observable; - constructor() { - // Define plugin initialization pipeline - this.plugin$ = this.initialize$.pipe( - // Get HTML div container - map((container) => container.nativeElement as HTMLDivElement), - // Create plugin context - switchMap((div) => from(createPluginUI({ - // Define container div - target: div, - // Define rendered - render: renderReact18, - // Define plugin specs - spec: this.specs, - }))), - // TODO Remove this - tap((plugin) => { - console.log('Plugin created', plugin) - }), - // Get current plugin instance - map((plugin) => this.plugin = plugin), + protected _plugin!: PluginUIContext; + + public get plugin(): PluginUIContext { + return this._plugin; + } + + constructor( + public molstarService: MolstarService + ) { + const { molstar$ } = this.molstarService; + // Emit plugin after initialization + this.plugin$ = combineLatest([ this.container$, molstar$ ]).pipe( + // Initialize plugin + switchMap(([elementRef]) => from(this.initPlugin(elementRef))), // Cache result shareReplay(1), ); } + + public async initPlugin(elementRef: ElementRef): Promise { + // Load MolStar asynchronously + const { createPluginUI, renderReact18, DefaultPluginUISpec } = this.molstarService.molstar; + // Define plugin initial settings + const spec = { ...this.spec, ...DefaultPluginUISpec() }; + // Create plugin instance + return this._plugin = await createPluginUI({ + // Define container div + target: elementRef.nativeElement as HTMLDivElement, + // Define rendered + render: renderReact18, + // Define plugin specs + spec, + }); + } + } diff --git a/projects/ngx-structure-viewer/src/lib/services/representation.service.ts b/projects/ngx-structure-viewer/src/lib/services/representation.service.ts index 3547406..46d0b13 100644 --- a/projects/ngx-structure-viewer/src/lib/services/representation.service.ts +++ b/projects/ngx-structure-viewer/src/lib/services/representation.service.ts @@ -1,71 +1,41 @@ import { Observable, ReplaySubject, Subscription, combineLatestWith, filter, from, map, shareReplay, switchMap, withLatestFrom } from 'rxjs'; +import { Structure } from 'molstar/lib/mol-model/structure'; import { Injectable, OnDestroy } from '@angular/core'; // Molstar dependencies -import { Structure, StructureElement, StructureProperties as SP, StructureSelection } from 'molstar/lib/mol-model/structure'; -import { MolScriptBuilder as MS } from "molstar/lib/mol-script/language/builder"; -import { StateTransforms } from 'molstar/lib/mol-plugin-state/transforms'; -import { Expression } from 'molstar/lib/mol-script/language/expression'; -import { Overpaint } from 'molstar/lib/mol-theme/overpaint'; -import { Vec3 } from 'molstar/lib/mol-math/linear-algebra'; -import { Script } from 'molstar/lib/mol-script/script'; +// import { Structure, StructureElement, StructureProperties as SP, StructureSelection } from 'molstar/lib/mol-model/structure'; +// import { Structure, StructureElement } from 'molstar/lib/mol-model/structure'; +// import { StateTransforms } from 'molstar/lib/mol-plugin-state/transforms'; +// import { Overpaint } from 'molstar/lib/mol-theme/overpaint'; +// import { Vec3 } from 'molstar/lib/mol-math/linear-algebra'; // Custom dependencies -import { Interaction, Interactor } from '../interfaces/interaction'; -import { CreateMeshProvider } from './interactions.provider'; +// import { Interaction, Interactor } from '../interfaces/interaction'; +import { Interaction } from '../interfaces/interaction'; +// import { CreateMeshProvider } from './interactions.provider'; import { StructureService } from './structure.service'; import { SettingsService } from './settings.service'; +import { MolstarService } from './molstar.service'; import { PluginService } from './plugin.service'; import { Source } from '../interfaces/source'; import { Locus } from '../interfaces/locus'; import { fromHexString } from '../colors'; - -export function getLocusFromQuery(query: Expression, structure: Structure): StructureElement.Loci { - // Execute query, retrieve selection - const selection: StructureSelection = Script.getStructureSelection(query, structure); - // Cast selection to loci - return StructureSelection.toLociWithSourceUnits(selection); -} - -export function getLocusFromSet(set: string[], structure: Structure): StructureElement.Loci { - // Override query - const query = MS.struct.generator.atomGroups({ - // Select atoms between and atom IDs - 'residue-test': MS.core.set.has([ - // Define subset of resdiue identifiers - MS.set(...set), - // Define set of residue identifiers (author sequence identifiers) - MS.core.str.concat([MS.ammp('auth_asym_id'), MS.ammp('auth_seq_id'), MS.ammp('pdbx_PDB_ins_code')]), - ]), - }); - // Create loci - return getLocusFromQuery(query, structure); -} - -// Filter overpaint layers for given structure -export function getFilteredBundle(layers: Overpaint.BundleLayer[], structure: Structure) { - // Generate overpaint out of bundle - const overpaint: Overpaint = Overpaint.ofBundle(layers, structure.root); - // Merge overpaint layers together (order matters) - const merged: Overpaint = Overpaint.merge(overpaint); - // Apply overpaint on target structure - return Overpaint.filter(merged, structure); -} +import { Overpaint } from 'molstar/lib/mol-theme/overpaint'; @Injectable() export class RepresentationService implements OnDestroy { readonly loci$ = new ReplaySubject(1); - set loci(loci: Locus[]) { + public set loci(loci: Locus[]) { this.loci$.next(loci); } readonly interactions$ = new ReplaySubject(1); - set interactions(interactions: Interaction[]) { + public set interactions(interactions: Interaction[]) { this.interactions$.next(interactions); } - readonly structure$: Observable + // readonly structure$: Observable public representation$: Observable; @@ -74,6 +44,7 @@ export class RepresentationService implements OnDestroy { constructor( public structureService: StructureService, public settingsService: SettingsService, + public molstarService: MolstarService, public pluginService: PluginService, ) { // Get source @@ -82,9 +53,8 @@ export class RepresentationService implements OnDestroy { filter((source): source is Source => source != null), ); - - // Get structure - this.structure$ = this.structureService.structure$.pipe( + // Build component for structure + const component$: Observable = this.structureService.structure$.pipe( // Get latest source withLatestFrom(source$), // Generate structure @@ -92,38 +62,64 @@ export class RepresentationService implements OnDestroy { // Define reference for current plugin const plugin = this.pluginService.plugin; // Create component for the whole structure - const component = await plugin.builders.structure.tryCreateComponentStatic(structure, 'polymer', { label: source.label }); - // // Define color - // const [ value ] = fromHexString(this.settingsService.settings['backbone-color']); + const component = await plugin.builders.structure.tryCreateComponentStatic(structure as never, 'protein', { label: source.label }); // Initialize representation - await plugin.builders.structure.representation.addRepresentation(component!, { - type: 'cartoon', - color: 'uniform', - colorParams: { value: fromHexString('#FFFFFF') }, - }); - // Return initial structure - return structure.cell.obj.data as Structure; + await plugin.builders.structure.representation.addRepresentation(component!, { type: 'backbone', color: 'uniform' }); })())), // Cache result shareReplay(1), ); - - // Define loci representation pipeline - const loci$ = this.getLociRepresentation(); - // Define interactions representation pipeline - const interactions$ = this.getInteractionsRepresentation(); - - // Combine structure emission - this.representation$ = this.structure$.pipe( - // With loci representation pipeline - combineLatestWith(loci$), - // And interactions representation pipeline - combineLatestWith(interactions$), - // Return void + // Apply settings to represenatation + this.representation$ = component$.pipe( + // Combine with settings emission + combineLatestWith(this.settingsService.settings$), + // Get emitted structure + withLatestFrom(this.structureService.structure$), + // Apply given color to backbone + switchMap(([[, settings], structure]) => from(this.applyBackboneColor(structure as Structure, settings['backbone-color']))), + // TODO Remove this map(() => void 0), - // Cache result - shareReplay(1), + // // Apply settings to both background and representation + // switchMap(([, settings]) => from((async () => { + // // Get plugin instance + // const plugin = this.pluginService.plugin; + // // Get background color + // const [ color, alpha ] = fromHexString(settings['background-color']); + // // // Update plugin settings + // // plugin.canvas3d?.setProps({ + // // // Set background color + // // renderer: { backgroundColor: color }, + // // // Set background opacity + // // transparentBackground: alpha === 1, + // // }); + // })())), ); + + + // // Define loci representation pipeline + // const loci$ = this.structure$.pipe( + // // With loci emission + // combineLatestWith(this.loci$), + // // Apply loci representation + // // switchMap(([structure, loci]) => from(this.getLociRepresentation(structure, loci))), + // // Cache result + // shareReplay(1), + // ); + // this.getLociRepresentation(); + // // Define interactions representation pipeline + // const interactions$ = this.getInteractionsRepresentation(); + + // // Combine structure emission + // this.representation$ = this.structure$.pipe( + // // // With loci representation pipeline + // // combineLatestWith(loci$), + // // // And interactions representation pipeline + // // combineLatestWith(interactions$), + // // Return void + // map(() => void 0), + // // Cache result + // shareReplay(1), + // ); // Subscribe to representation pipeline this._representation = this.representation$.subscribe(); } @@ -133,176 +129,227 @@ export class RepresentationService implements OnDestroy { this._representation.unsubscribe(); } - protected getLociRepresentation(): Observable { - // Subscribe to structure emission - return this.structure$.pipe( - // Combine with loci emission - combineLatestWith(this.loci$), - // Wrap structure and loci into an object - map(([structure, loci]) => ({ structure, loci })), - // Map numeric locis to set of residue identifiers - map(({ structure, loci: prev }) => { - // Get residue identifiers - const ids = [...this.structureService.i2r.values()]; - // Initialize loci as list of residue ranges - const curr = prev.map((p) => { - // Case start psoition is defined, then initialize end position - if (p.start) { - // Initialize end position - p = { ...p, end: p.end || p.start }; - // Get numeric start index - const start = this.structureService.r2i.get(p.chain + p.start)!; - const end = this.structureService.r2i.get(p.chain + p.end)!; - // Add residue identifier to current locus - return { ...p, ids: ids.slice(start, end + 1) } - } - // Otherwise, filter residues by chain - else { - // Get list of identifiers whose value starts with given chain - return { ...p, ids: ids.filter((id) => id.startsWith(p.chain)) }; - } - }); - // Return updated loci, as well as structure (data) and plugin - return { structure, loci: curr }; - }), - // Combine with settings emission - combineLatestWith(this.settingsService.settings$), - // Apply colors - switchMap(([{ structure, loci }, settings]) => { - // Initialize color layers - const layers = [] as Overpaint.BundleLayer[]; - // Fill in map between color and residues - for (const { ids, color: hex } of loci) { - // Define current Mol* loci - // const locus = getLociFromRange(start, end, structure); - const locus = getLocusFromSet(ids, structure); - // Define current Mol* bundle - const bundle = StructureElement.Bundle.fromLoci(locus); - // Compute color - const [color] = fromHexString(hex || settings['backbone-color']); - // Define and store current layer - layers.push({ bundle, color, clear: false }); - } - // Define plugin instance - const plugin = this.pluginService.plugin; - // Initialize plugin update - const update = plugin.state.data.build(); - // Filter bundle of layers - const bundle = getFilteredBundle(layers, structure); - // Loop through structures in plugin - for (const structureRef of plugin.managers.structure.hierarchy.current.structures) { - // Loop through components in current structure - for (const componentRef of structureRef.components) { - // Loop through each representation in current component - for (const representationRef of componentRef.representations) { - // Apply update on current representation - update - .to(representationRef.cell.transform.ref) - .apply( - StateTransforms.Representation.OverpaintStructureRepresentation3DFromBundle, - Overpaint.toBundle(bundle as never) - ); - // TODO Define locus for all residues - const _locus = getLocusFromSet([...this.structureService.i2r.values()], structure); - const _bundle = StructureElement.Bundle.fromLoci(_locus); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const [_color, alpha] = fromHexString(this.settingsService.settings['backbone-color']); - // TODO Apply transparency to representation - update - .to(representationRef.cell.transform.ref) - .apply( - StateTransforms.Representation.TransparencyStructureRepresentation3DFromBundle, - { layers: [{ bundle: _bundle, value: alpha }] }, - ); - } - } + // TODO + protected async applyBackboneColor(structure: Structure, backboneColor: string): Promise { + // Initialize color layers + const bundleLayers: Overpaint.BundleLayer[] = []; + // Define all residue identifiers + const residueIdentifiers = Array.from(this.structureService.i2r.values()); + // Get locus from residue identifiers + const representationLoci = this.molstarService.molstar.getLocusFromSet(residueIdentifiers, structure); + // Define current Mol* bundle + const bundleLayer = this.molstarService.molstar.getBundleFromLoci(representationLoci); // StructureElement.Bundle.fromLoci(locus); + // Cast color to Mol* color + const [representationColor] = fromHexString(backboneColor); + // Define and store current layer + bundleLayers.push({ bundle: bundleLayer, color: representationColor, clear: true }); + // Define plugin instance + const { plugin } = this.pluginService; + // Initialize plugin update + const update = plugin.state.data.build(); + // Filter bundle of layers + const filteredBundle = this.molstarService.molstar.getFilteredBundle(bundleLayers, structure); + // Loop through structures in plugin + for (const structureRef of plugin.managers.structure.hierarchy.current.structures) { + // Loop through components in current structure + for (const componentRef of structureRef.components) { + // Loop through each representation in current component + for (const representationRef of componentRef.representations) { + const { OverpaintStructureRepresentation3DFromBundle, overpaintToBundle } = this.molstarService.molstar; + // Apply update on current representation + update.to(representationRef.cell.transform.ref).apply( + OverpaintStructureRepresentation3DFromBundle, + overpaintToBundle(filteredBundle as never) + ); } - // Cast promise to observable - return from(update.commit({ doNotUpdateCurrent: true })); - }), - ); + } + } } - protected getInteractionsRepresentation(): Observable { - // Initialize state object selector - let stateObjectRef: string; - // Subscribe to structure emission - return this.structure$.pipe( - // Combine with interactions emission - combineLatestWith(this.interactions$), - // Wrap structure and interactions into an object - map(([structure, interactions]) => ({ structure, interactions })), - // TODO When coodeinates are not available, extract them frim indices - map(({ structure, interactions }) => { - // Define interactors - const interactors = interactions.reduce((acc, { from, to }) => [...acc, from, to], [] as Interactor[]); - // Loop through each atom in the structure - Structure.eachAtomicHierarchyElement(structure, ({ - // Define function for each atom - atom: (a) => { - // Define coordinates vector - const coordinates = Vec3.create(SP.atom.x(a), SP.atom.y(a), SP.atom.z(a)); - // Loop through each interactor - for (const interactor of interactors) { - // Do only if coordinates are not already set - if (!interactor.coordinates) { - // Case chain, residue and atom match - if (interactor['atom.id'] === SP.atom.id(a)) { - // Update coordinates - interactor.coordinates = coordinates; - } - // Case residue matches - else if (interactor['chain.id'] === SP.chain.auth_asym_id(a)) { - // Case residue identifier matches - if (interactor['residue.id'] === SP.residue.auth_seq_id(a) + SP.residue.pdbx_PDB_ins_code(a)) { - // Case atom name matches - if (interactor['atom.name'] === SP.atom.auth_atom_id(a)) { - // Update coordinates - interactor.coordinates = coordinates; - } - } - } - } - } - }, - })); - // Filter out interactions whose interactors do not have coordinates - interactions = interactions.filter(({ from, to }) => from.coordinates && to.coordinates); - // Return both structure and filtered interactions - return { structure, interactions }; - }), - // Apply mesh representation - switchMap(({ interactions }) => { - // Define plugin instance - const plugin = this.pluginService.plugin; - // Initialize plugin update - const update = plugin.state.data.build(); - // Cast interactions to data - const data = interactions.map(({ from, to, color, label, size }) => ({ - // Extract coordinates from interactors - from: from.coordinates, - to: to.coordinates, - // Cast string to Color - color: fromHexString(color || this.settingsService.settings['interaction-color']).at(0), - // Define size - size: size || this.settingsService.settings['interaction-size'], - // Define label, if any - label, - })); - // Delete previous state object - if (stateObjectRef) update.delete(stateObjectRef); - // Apply representation - const updated = update.toRoot() - .apply(CreateMeshProvider, { data }) - .apply(StateTransforms.Representation.ShapeRepresentation3D); - // Store state object reference - stateObjectRef = updated.ref; - // Cast promise to observable - return from(update.commit({ doNotUpdateCurrent: true })); - }), - // Cache result - shareReplay(1), - ); - } + // protected async getLociRepresentation(structure: Structure, loci: Locus[]): Promise { + // // // Cast each locus as list of indices, rather than just [start, end] boundaries + // // const indices = loci.map((locus) => { + // // // Case start position is defined, then initialize end position + // // if (locus.start ) { + // // // Initialize end position + // // end = end || start; + // // // Get numeric start index + // // const startIdx = this.structureService.r2i.get(start)!; + // // const endIdx = this.structureService.r2i.get(end)!; + // // // Return list of indices + // // return Array.from({ length: endIdx - startIdx + 1 }, (_, i) => startIdx + i); + // // } + // // // Otherwise, filter residues by chain + // // else { + // // // Get list of identifiers whose value starts with given chain + // // return Array.from(this.structureService.i2r.values()).filter((id) => id.startsWith(loci[0].chain)); + // // } + // // }); + // // // Map numeric locis to set of residue identifiers + // // map(({ structure, loci: prev }) => { + // // // Get residue identifiers + // // const ids = [...this.structureService.i2r.values()]; + // // // Initialize loci as list of residue ranges + // // const curr = prev.map((p) => { + // // // Case start psoition is defined, then initialize end position + // // if (p.start) { + // // // Initialize end position + // // p = { ...p, end: p.end || p.start }; + // // // Get numeric start index + // // const start = this.structureService.r2i.get(p.chain + p.start)!; + // // const end = this.structureService.r2i.get(p.chain + p.end)!; + // // // Add residue identifier to current locus + // // return { ...p, ids: ids.slice(start, end + 1) } + // // } + // // // Otherwise, filter residues by chain + // // else { + // // // Get list of identifiers whose value starts with given chain + // // return { ...p, ids: ids.filter((id) => id.startsWith(p.chain)) }; + // // } + // // }); + // // // Return updated loci, as well as structure (data) and plugin + // // return { structure, loci: curr }; + // // }), + // // // // Combine with settings emission + // // // combineLatestWith(this.settingsService.settings$), + // // // Apply colors + // // // switchMap(([{ structure, loci }, settings]) => { + // // switchMap(({ structure, loci }) => { + // // // Initialize color layers + // // const layers = [] as Overpaint.BundleLayer[]; + // // // Fill in map between color and residues + // // for (const { ids, color: hex } of loci) { + // // // Define current Mol* loci + // // // const locus = getLociFromRange(start, end, structure); + // // const locus = getLocusFromSet(ids, structure); + // // // Define current Mol* bundle + // // const bundle = StructureElement.Bundle.fromLoci(locus); + // // // Compute color + // // // const [color] = fromHexString(hex || settings['backbone-color']); + // // const [color] = fromHexString(hex || '#000000'); + // // // Define and store current layer + // // layers.push({ bundle, color, clear: false }); + // // } + // // // Define plugin instance + // // const plugin = this.pluginService.plugin; + // // // Initialize plugin update + // // const update = plugin.state.data.build(); + // // // Filter bundle of layers + // // const bundle = getFilteredBundle(layers, structure); + // // // Loop through structures in plugin + // // for (const structureRef of plugin.managers.structure.hierarchy.current.structures) { + // // // Loop through components in current structure + // // for (const componentRef of structureRef.components) { + // // // Loop through each representation in current component + // // for (const representationRef of componentRef.representations) { + // // // Apply update on current representation + // // update + // // .to(representationRef.cell.transform.ref) + // // .apply( + // // StateTransforms.Representation.OverpaintStructureRepresentation3DFromBundle, + // // Overpaint.toBundle(bundle as never) + // // ); + // // // // TODO Define locus for all residues + // // // const _locus = getLocusFromSet([...this.structureService.i2r.values()], structure); + // // // const _bundle = StructureElement.Bundle.fromLoci(_locus); + // // // // eslint-disable-next-line @typescript-eslint/no-unused-vars + // // // const [_color, alpha] = fromHexString(this.settingsService.settings['backbone-color']); + // // // // TODO Apply transparency to representation + // // // update + // // // .to(representationRef.cell.transform.ref) + // // // .apply( + // // // StateTransforms.Representation.TransparencyStructureRepresentation3DFromBundle, + // // // { layers: [{ bundle: _bundle, value: alpha }] }, + // // // ); + // // } + // // } + // // } + // // // Cast promise to observable + // // return from(update.commit({ doNotUpdateCurrent: true })); + // // }), + // // ); + // } + + // protected getInteractionsRepresentation(): Observable { + // // Initialize state object selector + // let stateObjectRef: string; + // // Subscribe to structure emission + // return this.structure$.pipe( + // // Combine with interactions emission + // combineLatestWith(this.interactions$), + // // Wrap structure and interactions into an object + // map(([structure, interactions]) => ({ structure, interactions })), + // // TODO When coodeinates are not available, extract them frim indices + // map(({ structure, interactions }) => { + // // Define interactors + // const interactors = interactions.reduce((acc, { from, to }) => [...acc, from, to], [] as Interactor[]); + // // Loop through each atom in the structure + // Structure.eachAtomicHierarchyElement(structure, ({ + // // Define function for each atom + // atom: (a) => { + // // Define coordinates vector + // const coordinates = Vec3.create(SP.atom.x(a), SP.atom.y(a), SP.atom.z(a)); + // // Loop through each interactor + // for (const interactor of interactors) { + // // Do only if coordinates are not already set + // if (!interactor.coordinates) { + // // Case chain, residue and atom match + // if (interactor['atom.id'] === SP.atom.id(a)) { + // // Update coordinates + // interactor.coordinates = coordinates; + // } + // // Case residue matches + // else if (interactor['chain.id'] === SP.chain.auth_asym_id(a)) { + // // Case residue identifier matches + // if (interactor['residue.id'] === SP.residue.auth_seq_id(a) + SP.residue.pdbx_PDB_ins_code(a)) { + // // Case atom name matches + // if (interactor['atom.name'] === SP.atom.auth_atom_id(a)) { + // // Update coordinates + // interactor.coordinates = coordinates; + // } + // } + // } + // } + // } + // }, + // })); + // // Filter out interactions whose interactors do not have coordinates + // interactions = interactions.filter(({ from, to }) => from.coordinates && to.coordinates); + // // Return both structure and filtered interactions + // return { structure, interactions }; + // }), + // // Apply mesh representation + // switchMap(({ interactions }) => { + // // Define plugin instance + // const plugin = this.pluginService.plugin; + // // Initialize plugin update + // const update = plugin.state.data.build(); + // // Cast interactions to data + // const data = interactions.map(({ from, to, color, label, size }) => ({ + // // Extract coordinates from interactors + // from: from.coordinates, + // to: to.coordinates, + // // Cast string to Color + // color: fromHexString(color || this.settingsService.settings['interaction-color']).at(0), + // // Define size + // size: size || this.settingsService.settings['interaction-size'], + // // Define label, if any + // label, + // })); + // // Delete previous state object + // if (stateObjectRef) update.delete(stateObjectRef); + // // Apply representation + // const updated = update.toRoot() + // .apply(CreateMeshProvider, { data }) + // .apply(StateTransforms.Representation.ShapeRepresentation3D); + // // Store state object reference + // stateObjectRef = updated.ref; + // // Cast promise to observable + // return from(update.commit({ doNotUpdateCurrent: true })); + // }), + // // Cache result + // shareReplay(1), + // ); + // } } diff --git a/projects/ngx-structure-viewer/src/lib/services/settings.service.ts b/projects/ngx-structure-viewer/src/lib/services/settings.service.ts index 573cead..ea2c104 100644 --- a/projects/ngx-structure-viewer/src/lib/services/settings.service.ts +++ b/projects/ngx-structure-viewer/src/lib/services/settings.service.ts @@ -8,36 +8,33 @@ import { fromHexString } from '../colors'; export class SettingsService implements OnDestroy { // Define default settings - readonly defaults = { + readonly DEFAULT = { "backbone-color": "#000000", "background-color": "#FFFFFF", "interaction-color": "#FF0000", - "interaction-size": 1, + "interaction-size": .1, } - set settings(settings: Settings | null) { - // Emit settings - this.settings$.next({ ...this.defaults, ...settings }); - } + readonly settings$ = new BehaviorSubject(this.DEFAULT); - get settings(): Settings { + public get settings(): Settings { // Return internal settings return this.settings$.value; } - readonly settings$ = new BehaviorSubject(this.defaults); - readonly _settings: Subscription; constructor(public pluginService: PluginService) { + // Get plugin emission + const { plugin$ } = this.pluginService; // Subscribe to settings change and plugin instance - const settings$ = combineLatest([ this.pluginService.plugin$, this.settings$ ]); + const settings$ = combineLatest([ plugin$, this.settings$ ]); // Subscribe to settings change this._settings = settings$.subscribe(([plugin, settings]) => { // Get background color const [ color, alpha ] = fromHexString(settings["background-color"]); // Update plugin settings - plugin.canvas3d?.setProps({ + plugin.canvas3d?.setProps({ // Set background color renderer: { backgroundColor: color }, // Set background opacity diff --git a/projects/ngx-structure-viewer/src/lib/services/structure.service.ts b/projects/ngx-structure-viewer/src/lib/services/structure.service.ts index 2f89df6..4d1f38b 100644 --- a/projects/ngx-structure-viewer/src/lib/services/structure.service.ts +++ b/projects/ngx-structure-viewer/src/lib/services/structure.service.ts @@ -1,118 +1,82 @@ -import { BehaviorSubject, Observable, filter, from, map, shareReplay, switchMap, tap } from 'rxjs'; +import { BehaviorSubject, Observable, combineLatestWith, filter, from, shareReplay, switchMap, tap } from 'rxjs'; import { Structure, StructureProperties } from 'molstar/lib/mol-model/structure'; -// import { StateObjectRef } from 'molstar/lib/mol-state'; import { Asset } from 'molstar/lib/mol-util/assets'; import { Injectable } from '@angular/core'; // Custom services // import { SettingsService } from './settings.service'; +import { MolstarService } from './molstar.service'; import { PluginService } from './plugin.service'; -import { Residue, threeToOne } from '../interfaces/residue'; import { Source } from '../interfaces/source'; @Injectable() export class StructureService { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - readonly structure$: Observable; - readonly source$ = new BehaviorSubject(null); - set source(source: Source) { - this.source$.next(source); + // Get current source + public get source(): Source | null { + return this.source$.value; } public r2i!: Map; public i2r!: Map; - public residues!: Array; + // public residues!: Array; + + readonly structure$: Observable; constructor( // public settingsService: SettingsService, + public molstarService: MolstarService, public pluginService: PluginService, ) { // Combine all observables into a single one this.structure$ = this.pluginService.plugin$.pipe( - // Combine with source emission - switchMap((plugin) => { - // Combine with source emission - return this.source$.pipe( - // Filter out null values - filter((source): source is Source => source != null), - // Emit both plugin and source - map((source: Source) => ({ plugin, source })), - ); - }), - // Parse source data - switchMap(({ source }) => from((async () => { - // Case source is local - if (source.type === 'local') { - // Parse local source - const data = await this.parseLocalSource(source); - // Return data - return { data, source }; - } - // Otherwise, source is remote - const data = await this.parseRemoteSource(source); - // Return data - return { data, source }; - })())), + // Subscribe to source changes + combineLatestWith(this.source$), + // TODO Remove this + tap(([plugin, source]) => console.log('plugin', plugin, 'source', source)), + // Join source and plugin + switchMap(([, source]) => from(this.parseSource(source))), + // Case data is defined + filter((data) => data ? true : false), // Generate trajectory - switchMap(({ data, source }) => from((async () => { - // Define plugin instance - const plugin = this.pluginService.plugin; - // Parse trajectory - const trajectory = await plugin.builders.structure.parseTrajectory(data, source.format); - // Create model - const model = await plugin.builders.structure.createModel(trajectory, { modelIndex: 0 }); - // TODO Create structure - return plugin.builders.structure.createStructure(model, { name: 'model', params: {} }); - })())), - // Get residues data out of structure - tap((structure) => { - // Initialize index - let index = 0; - // Initialize residues array - this.residues = []; - // Initialize map between residue (sequence number, insertion code) to numeric index - const r2i = this.r2i = new Map(); - const i2r = this.i2r = new Map(); - // Loop through each residue - Structure.eachAtomicHierarchyElement(structure.cell?.obj?.data as Structure, ({ - // Do nothing on residue loop - residue: (r) => { - // Define residue index - const authSeqId = StructureProperties.residue.auth_seq_id(r); - // Get insertion code - const pdbInsCode = StructureProperties.residue.pdbx_PDB_ins_code(r); - // Define residue name - const authAsymId = StructureProperties.chain.auth_asym_id(r); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const authCompId = StructureProperties.atom.auth_comp_id(r); - // Define residue unique identifier - const identifier = (authAsymId + authSeqId + pdbInsCode).trim(); - // Map residue id to its index - r2i.set(identifier, index); - i2r.set(index, identifier); - // Store residue information in the residues array - this.residues.push({ - pdbInsCode, - authSeqId, - authAsymId, - authCompId3: threeToOne.has(authCompId) ? authCompId : 'XXX', - authCompId1: threeToOne.get(authCompId) || 'X', - }); - // Update index - index++; - }, - })); - }), + switchMap((data) => from(this.createStructure(data, this.source!))), + // Store mappings between residue and numeric index + tap((structure) => this.setResidues(structure.cell?.obj?.data as Structure)), // Cache results shareReplay(1), ); } + protected async parseSource(source: Source | null) { + // Get plugin instance + const plugin = this.pluginService.plugin; + // Clear plugin state + await plugin.clear(); + // Case source is defined + if (source) { + // Case source is local + if (source.type === 'local') { + // Parse local source + const data = await this.parseLocalSource(source); + // Return data + return data; + } + // Otherwise, source is remote + const data = await this.parseRemoteSource(source); + // Return data + return data; + } + // Otherwise, return null + return null; + } + protected async parseRemoteSource(source: Source & { type: 'remote' }) { + // Import asset from MolStar + const { Asset } = this.molstarService.molstar; + // Define source properties const url = Asset.Url(source.link); const label = source.label; const binary = source.binary; @@ -123,6 +87,8 @@ export class StructureService { } protected async parseLocalSource(source: Source & { type: 'local' }) { + // Import asset from MolStar + const { Asset } = this.molstarService.molstar; // Define source label const binary = source.binary; const label = source.label; @@ -154,4 +120,42 @@ export class StructureService { return data; } -} + // eslint-disable-next-line @typescript-eslint/no-explicit-any + protected async createStructure(data: any, source: Source) { + // Define plugin instance + const plugin = this.pluginService.plugin; + // Parse data + const parsed = await plugin.builders.structure.parseTrajectory(data, source.format); + // Create model + const model = await plugin.builders.structure.createModel(parsed, { modelIndex: 0 }); + // Create structure + return plugin.builders.structure.createStructure(model, { name: 'model', params: {} }); + } + + protected setResidues(structure: Structure): void { + // Initialize index + let index = 0; + // Initialize map between residue (sequence number, insertion code) to numeric index + const r2i = this.r2i = new Map(); + const i2r = this.i2r = new Map(); + // Loop through each residue + Structure.eachAtomicHierarchyElement(structure, ({ + residue: (r) => { + // Define residue index + const authSeqId = StructureProperties.residue.auth_seq_id(r); + // Get insertion code + const pdbInsCode = StructureProperties.residue.pdbx_PDB_ins_code(r); + // Define residue name + const authAsymId = StructureProperties.chain.auth_asym_id(r); + // Define residue unique identifier + const identifier = (authAsymId + ',' + authSeqId + pdbInsCode).trim(); + // Map residue id to its index + r2i.set(identifier, index); + i2r.set(index, identifier); + // Update index + index++; + } + })); + } + +} \ No newline at end of file diff --git a/projects/ngx-structure-viewer/src/public-api.ts b/projects/ngx-structure-viewer/src/public-api.ts index 7584cef..b55b999 100644 --- a/projects/ngx-structure-viewer/src/public-api.ts +++ b/projects/ngx-structure-viewer/src/public-api.ts @@ -4,6 +4,6 @@ export { Interaction, Interactor } from './lib/interfaces/interaction'; export { Settings } from './lib/interfaces/settings'; export { Source } from './lib/interfaces/source'; export { Locus } from './lib/interfaces/locus'; -// Export services -export { StructureService } from './lib/services/structure.service'; -export { PluginService } from './lib/services/plugin.service'; +// // Export services +// export { StructureService } from './lib/services/structure.service'; +// export { PluginService } from './lib/services/plugin.service'; diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 9041297..0000000 --- a/webpack.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - optimization: { - usedExports: true, - } -}; From f60a87d8a86dc34baeff2dd33e2a79b06750eebb Mon Sep 17 00:00:00 2001 From: Damiano Clementel Date: Sat, 27 Jul 2024 18:41:49 +0200 Subject: [PATCH 8/9] Fixes indes in sequence viewer; Updates structure viewer; Updates preview images. --- .../app/page-home/page-home.component.html | 9 +- .../app/page-home/page-home.component.scss | 2 +- .../src/app/page-home/page-home.component.ts | 10 +- .../src/app/page-home/page-home.module.ts | 17 + .../page-structure-viewer.component.html | 2 +- .../page-structure-viewer.component.ts | 15 +- projects/demo-showcase/src/assets/8vap.A.cif | 2673 -- projects/demo-showcase/src/assets/8vap.cif | 25235 ---------------- .../demo-showcase/src/assets/logo-dna.png | Bin 21191 -> 0 bytes .../src/assets/ngx-bio-tools.svg | 92 - .../src/assets/ngx-features-viewer.png | Bin 188309 -> 0 bytes .../src/assets/ngx-sequence-viewer-dark.png | Bin 0 -> 38383 bytes .../src/assets/ngx-sequence-viewer-light.png | Bin 0 -> 37367 bytes .../src/assets/ngx-structure-viewer-dark.png | Bin 0 -> 63515 bytes .../src/assets/ngx-structure-viewer-light.png | Bin 0 -> 61325 bytes .../src/assets/ngx-structure-viewer.png | Bin 213339 -> 0 bytes .../src/assets/structure-viewer.png | Bin 406693 -> 0 bytes projects/demo-showcase/src/styles.scss | 18 + .../lib/ngx-sequence-viewer.component.scss | 3 + .../src/lib/colors.spec.ts | 0 .../ngx-structure-viewer/src/lib/colors.ts | 16 - .../ngx-structure-viewer/src/lib/molstar.ts | 12 +- .../src/lib/ngx-structure-viewer.component.ts | 11 +- .../lib/services/representation.service.ts | 144 +- .../src/lib/services/settings.service.ts | 34 +- .../src/lib/services/structure.service.ts | 35 +- 26 files changed, 189 insertions(+), 28139 deletions(-) create mode 100644 projects/demo-showcase/src/app/page-home/page-home.module.ts delete mode 100644 projects/demo-showcase/src/assets/8vap.A.cif delete mode 100644 projects/demo-showcase/src/assets/8vap.cif delete mode 100644 projects/demo-showcase/src/assets/logo-dna.png delete mode 100644 projects/demo-showcase/src/assets/ngx-bio-tools.svg delete mode 100644 projects/demo-showcase/src/assets/ngx-features-viewer.png create mode 100644 projects/demo-showcase/src/assets/ngx-sequence-viewer-dark.png create mode 100644 projects/demo-showcase/src/assets/ngx-sequence-viewer-light.png create mode 100644 projects/demo-showcase/src/assets/ngx-structure-viewer-dark.png create mode 100644 projects/demo-showcase/src/assets/ngx-structure-viewer-light.png delete mode 100644 projects/demo-showcase/src/assets/ngx-structure-viewer.png delete mode 100644 projects/demo-showcase/src/assets/structure-viewer.png delete mode 100644 projects/ngx-structure-viewer/src/lib/colors.spec.ts delete mode 100644 projects/ngx-structure-viewer/src/lib/colors.ts diff --git a/projects/demo-showcase/src/app/page-home/page-home.component.html b/projects/demo-showcase/src/app/page-home/page-home.component.html index 343653e..13b15dd 100644 --- a/projects/demo-showcase/src/app/page-home/page-home.component.html +++ b/projects/demo-showcase/src/app/page-home/page-home.component.html @@ -16,7 +16,8 @@

ngx-structur

With supporting text below as a natural lead-in to additional content.

Go somewhere --> - Structure viewer + Structure viewer, light mode + Structure viewer, dark mode

Visualize and interact with 3D molecular structures. @@ -42,7 +43,8 @@

With supporting text below as a natural lead-in to additional content.

Go somewhere --> - Features viewer + Features viewer, light mode + Features viewer, dark mode

The ultimate tool for Angular developers who want to visualize and interact @@ -65,7 +67,8 @@

- Sequence viewer + Sequence viewer + Sequence viewer

Angular native component for single sequences or multiple sequence alignments. diff --git a/projects/demo-showcase/src/app/page-home/page-home.component.scss b/projects/demo-showcase/src/app/page-home/page-home.component.scss index cca0d37..01ee543 100644 --- a/projects/demo-showcase/src/app/page-home/page-home.component.scss +++ b/projects/demo-showcase/src/app/page-home/page-home.component.scss @@ -1,3 +1,3 @@ .cursor-pointer { cursor: pointer; -} \ No newline at end of file +} diff --git a/projects/demo-showcase/src/app/page-home/page-home.component.ts b/projects/demo-showcase/src/app/page-home/page-home.component.ts index d4cf291..3aa044f 100644 --- a/projects/demo-showcase/src/app/page-home/page-home.component.ts +++ b/projects/demo-showcase/src/app/page-home/page-home.component.ts @@ -1,16 +1,10 @@ -import { CommonModule, NgOptimizedImage } from '@angular/common'; import { Component } from '@angular/core'; -import { RouterModule } from '@angular/router'; @Component({ + templateUrl: './page-home.component.html', + styleUrl: './page-home.component.scss', // eslint-disable-next-line @angular-eslint/component-selector selector: 'page-home', - // Handle dependencies - imports: [CommonModule, RouterModule, NgOptimizedImage], - standalone: true, - // Handle representation - templateUrl: './page-home.component.html', - styleUrl: './page-home.component.scss' }) export class PageHomeComponent { diff --git a/projects/demo-showcase/src/app/page-home/page-home.module.ts b/projects/demo-showcase/src/app/page-home/page-home.module.ts new file mode 100644 index 0000000..4d6eced --- /dev/null +++ b/projects/demo-showcase/src/app/page-home/page-home.module.ts @@ -0,0 +1,17 @@ +import { PageHomeComponent } from './page-home.component'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { NgModule } from '@angular/core'; + + + +@NgModule({ + declarations: [ + PageHomeComponent, + ], + imports: [ + RouterModule, + CommonModule, + ] +}) +export class PageHomeModule { } diff --git a/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.html b/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.html index aa0a2a4..738edf7 100644 --- a/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.html +++ b/projects/demo-showcase/src/app/page-structure-viewer/page-structure-viewer.component.html @@ -17,7 +17,7 @@

Structure viewer

- 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%0DpgYvw5l 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 - - - - - - - - - diff --git a/projects/demo-showcase/src/assets/ngx-features-viewer.png b/projects/demo-showcase/src/assets/ngx-features-viewer.png deleted file mode 100644 index 9afcbc72764491ccc245ea36d67bf1fe73cedbc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188309 zcmeFYcT`hd_cab4jnZ1jpgX`M41}Wg6d#4AKh#2INn2?aQ<4a)Je?SV)o@jd{uZ(#b;LMIsP8QyryYu)tZFHsxW#R{|TRCwr z#J&i#nFobuN5x+0qAmZ7CuN!n>BKddXP7JRcU8@5v+>;%$sWv7w|Z5S7yFq}|1KBT z53hi-!{f)-uMeHS>^15DwfF2g@G>SW-yddCGa{H>qNH@ryK(hmpqTsW{peP9;7v~- z-!ytHogp?hw)Is>URBkLg|3w7#@@V!F5t2L=VfW}QTk|0E0E$~f1l@{e;zY1Fz|43 zsXIB96zbSqiK9s8m&?>xU0ro{bAwIP`?_r{YNSYdS76%D{vP2m??VySm+}0D14u1S z-vd%5pB{C9T(Lf?t-Cv(9XMErVBiu4+*oN@8N6EX_i3Q=i@EQvZji~aT-B7VnF#3$ zS4j|mV}$fEm$9+2+v;dFM(ND&gCFzeK|u&-XU)ftK~n-fa);}U)Wk7t<<*NaHt~P% zB!IVY98?9bv=?(D4#ehNcr4V~(xP5zKcsIKT;=tMT1X_Cf_Wu4dO#7cvzS8M9fL5lb?-t;^IIPd~C>QD! z7#JA*UoQ0L1W-W5RLI4z;hWNt-y0k0Zr#EUoBjRLQvRdvs~dqsT3rqGau-khN=coO zY{t&X`xm@czKn)cUE!1EPiX zLlIVC(-O&wGW@dwApS2u&%TVfFdj7mbEZvrEf8fZog97iS@xa%m|3?t=Nvp+)pu@D zN>*ftVm1ol5V){9j44n}e)Of`n2Z(#hY2Qi?vJhc$deV3l^P;*)9uRn0B4lF>U>d<#QqrQ3N^lsAA(pmyB9veYG!E>9L zy_I`=dxx>^4j3Dnd&)h&J7c*8=z4wm@H@TB=!T*??;XXcRG$rnF~0*65qOLh1oqmU zN9jNWzc4W|sX5+XHme*V|D-pz?9Gq`CbuAYa}~RW2hs$GvC(Cc_A>~j7r+yY{rMCq zFI`dxGN|0L_paSg>0A_gs$#@m>*>?CVu+PI8cx;4Fz9%drH|oqM-o)6a@?z6wf0sYU+AH96f`X@^X{^-;p)8I=N1-t`T13WC_n^`n+hi< zB_-WcOTDiU%er2uS0?Pa@tO}_Q3z2w_j`_ae|qmP<<8B|=LB7$H*)QK`M~n{aF2(F zM^jl@nO9r42ndSTwixQg_I{xo&ZT6W8}5O;pyeYBPOPQ z<<|WkAczEh{``rw=uY)I{MGEX*uz=}Bu-S;2O3V|2hP-ND(;yvZ($dn5Jf<$x9jsy%m6c=SYL*SW;Y8SHOjry8d{0j>U?{jc+ z+6)$()R6IT^0@a}D{xo-yNxVc#|LY=7oA&MTQ@d03$B{GxVS*vR}DIWFkZ%^`g7C# z@^^PVm?XW*_3MJES&CM6B|X;DMQjJtO&Z@>jn%jTlMNKD(ji;0uw~@Un>U3md;Xc5 zn?w4a96P(a>jHJ^A~mzY-mrOBGID3a-xvT5`Z{;{2xe5F!^!bc&0HK@*m3f)@9tDE zakRQDIVFWmCKwyLHaW{omfHs6M7CZW+|YO&!352rh*8%{ecG zm72x0^?b=pek<2j!mB|PMfo@ixq+1Cmb`+D>bzRV#th5MJNszVBsBJF3knKq+?I7l zNNp`Gk?ecByIcSsYkKC|r%Cy;D;ysm6MMb{0@-dvswa(9E+cbOPuE;gQL)@})7);P zLZxyHk<=8 ztu+whjzC-^Ypk!EHjhy2R1B|t^Kq0rRFtxh!!7FDumscBqM{;Ve{O`-$)Ssarh>u; z_N7=|Bjn0kR3uQVm+xd}XGgJT{`wBr($Ue`tFr!TkXBkM=zF}kuz$GO4KeSy&G(}C zF&06pnXUeMD^!-BpFd20AylBg=OcsA?8-_Z5MKXT$B2jsdn`$Wj+VBiy{A|Il&_J)9Hbi zl0SdWvq<%nLtyJtv2df%)HC-L!fz%eAJxqbU@KRGn9Rgyc$!O;MN9o65BKA!`E63K zO`bwIz-D^XQ!!g^_h*L zs%jiNd1Yub>WrfnUO`!TAX-fdNx|Zy4v@X!2LFcIy1LU$1qwrUR@P!if{?S5lLnA( z_SJK@PB9aQKV2UKLqm+~l4gpOA#+ojsEZtsJcT0mJF8>Eb>5Yy@GZH&n7O|oeKK@+ z?U#U_>@FiPRUArj+ENpVtPlQ7M1I+jZ6d@*XRfyZNQiyCe;YKF+(F{(xv9)NN<5KT zYa0tx%*=vYME>Rk9|kc4Hu*O)7j4Wl7j`x_`Z}Q#_bn_e5<1O~wksQO=}!X70q6p9 zL`~C^VioRCm)+9x9N;(B0FVF_gE(G?9S4f}y}F{PsGFz23Y2+(s}kHNd~-+au_{2U z_G_t0awrf9=(Kw(iCMr7TU!+fhVChpl$6?2d<143=r=Xx<=I$00B5h2Jzw&459Or;5 zOCImeI6t}rTnJ^TnjLo~z~4Dy+B!RNv#rq(r|D+^ z@-D4UHOAAa7U^RYWo2c(09>VGU_hR76abO>bd7yE6iW3`r|p8ab_`Hhvknh^m_(hQ zsY&f+0raTHc3Jxc06V9bq+%3#&O_}@LqkIc2IqH69TYl`0@(zx@mvaKkHnvS%Z_&JF%Mqpdle9 z=NQknDMZ*EiuzA%zG+~mEdBtw+YerTl^yYg2A`7e{3D;2e}^o(wG1kH8Tn+}p}Q?L zku8@I9h+IGyzNlgGFeP>eAe#zH-X;=f9=){rT7|aix}GR5m30hbK&f#JWu zfyPHyoS^P<}pc01wary zefj&a0OL!U?A29OEkKKPFIqv;dwYOd`Y^q=wiaJR^;jrxS2i4gtVN&?iTwFW!^GqZ zFai4i)j0}78-aLaGBYzfC72o-H!P0Nl48ESj6|c+5)u+Xqr#fm%N6*oXV~mdPnXWX zP}FejC2vFj=OYlP$_JBr=5K2Vvh=npQA-hCrc zopBU@y8b7V1Kv6QCxc5zNaw$iuBN>fH>n)qt@QqT3*hfljxE-hHv7s-1h?hA^Iu5; zo#xRvYrFqi&z_46S1&%DMEnb?3M&}gP6({|^FTe?7XzP&B&mobp)g9{%%-nSigegl zwp(Lv9{*|J()F~3nJX%V-jER3LJ_R32zCV_KUb1JhsOP5VZkXXF4{U&O=_?|J1LU? zN*eLq_|L-$b0&4(1D>AWnF~AirBtw>tq|ibB7W!EkS*|@8!^V-PMMp26%(yB;!CoV z{(c;kzZ**N_w>r`V!HCNRrQkW*{CT8yS73RI=JHNN^$+-(l}Yr=*1z@c3Xw(pX1Z- z{YT>%m^~QrVm2!qf@vFM1-<;FOSjRfMxNs;$NbTp1 zd(4Ej>$lrG9L9H!jmZQ$P~mZY=7wW9wJ6tnLNW;qx#c#^B6=aAjH0H}K>~>=#>x)d z+kaQ&2>n}bH8!tbXW2_sJVW2Bn5~iam-3}RR+94&Ozl>Gljkwh;o;#{(!?mM0>HR3 zOUvL=GgSb4oppSk1oa=vIskaRtw_?xruI-8_tjD00{}utXCX}2f)y3p6Mg)HqWT1@ zlMF^ii)uTE&lub|My!n+0yV2s)GhONm>kdyJ;{^{t0|nYwaoj(CeI@!WkfBx6?t0E z0kuVMe0&@%`1<{6%|0c|l$S4S000h13|>RaknKvov;Mw;IY+-9Qq{YCR=j^Jdu8}b zjG;JCpEBTY9SG$Ky+mKTi6*)!VgYLUjE#uy@Xz*} z4)a#<5EpkUuwST`SKRZWF*=`a+M|cW%aS)BGCSwJ44QrvZ7eaTucCGczjG%5VX?o( z0G9HpdIvNK!OUK}A%zS#1vLS*uPp@9Q9fzqEI)4h*FAO_%bOZ+>pKU z0(=Xm?7%OCFj8v^#Kd-d7apX}N`u${?46n$0xwpPt@vnH&qw5Byt%f*%L z(N0gXw|u+jjC5@3#P-hi@9ay*Foek^bk4Um8)6Z5zaZz%ox^1-(JSDP*J||wOkI84$GmbR_Vee#>E-a-51%$i zun+(pLip7W2Y#EP3j7({GThkYEoQ%N*>08Ellu0=GVbY_84d*&pYyb?(*|0e#aDaz^J&)r&`O622;*kF?K zDlX;PfMm3Mi_2PY$Ox=Hplrf1jQKTgo64Kc!(lS0RFT?htWAcVIgRU+L-$01ygSR% zvx?bKEhu?Mr-|TTv-!nGfwR0fH+Yr0=82y-l((#YnQl|;0O_CxH6w`?-Suqiw2blm zAuRduY1Bsf$x-aSM7z9iaPVT>xZehXSEK8Lq2j(RTCls}OMT#Ke_dcrOTP+FYx}^C zv0qMi1k6>65ohCCo_d>4fnk56le)Z;>#_S$Nv+UsLvY*4Czm>t+Pe;|{qpTl9z!Fd zcXJAOpdi$zb}TFEs-6GIIZ|6e!8P4Isv4~?P_i~>_l8*g@$0bd`@W^SHeTwFYae|Y=q#>PfeWo2b;9UAx%FNW9xL|7dYfOf{u?`#QvR{dl$bNfvdT6LhZZzydSz?I2y3uGcw6U zL8$CF_OZBPov?H7h`y_L1)e{l;InHhq4L>Wf+@1E!3&OFZP)VpkhHIooI7+SwSSzC zns`(@tlKVLWrVJ;RP!8{+3L{}A`{;Rf*DfM550(k-dg3UNetCu|O79!OX+Do=G!XDn`Z^@b?RObk#h;sJ4Q^sG;28 znyR^_AFWr?wY$9}085{&$tKwYN=8t>qqaah9LMEH*FiM;B+i(;I0EK;W!7SoMBgHgxKZSoWlU1E7yjzrxnaY|?vcvDe&q2T&bPr6av+lq(>R z0L`N7?z#zSv|0kab%OcYK*`_QcVuJ8`hYG_cv* z%gcJUmdm$UAElxk9g}BzEK|OhV@A*dlGSx5j?i-B* zLIScj*HYB%B_(H(H|JsvZkzGm*Zfe^GLm_Q(5=>A=ipFnM(XQr6GWBHn{i`btyx4c z3g@9+7c;4blkB5oklppG$d(&#h*LgKIc+sH<{vVN`@5U>@smlC%6^7f10DIB5QO-- z0!pC>;T(zo!X%QHzJaTfcG*ntP+V33_g%VOZ#`x-6|+Rm^Tp zb#=AZTx`QqNi#D6?MLRd8$Zm(7oqBfY?V8Bqp|>o67+5y2{dR=&<*uf-%?ua?5-^C zw;e4{7-^Vje94hIEN*L4#5m8v^=oYR%sPi?PkAlC@ABu`we^;I2=!nOV%5Gb*%nusAc*v{0BwQKi%j=HqM4)d{F<7&R%)!dwO zc^d+dAI)k~a%$vV-|~H3tfMA#SCnnn#^pOjkx%LdevZiSaDOW6&8wXst4==_Q(eU! z7kWePz6$YT9xO2Arie+MIP_lp?OpWr@pm;O##IW-0-dIjFGTKiUY^RVX$N03+VA!s zM-~F=wZe@X)Rv1qU&LG&z3YB8G4k-)y%fo4GSjmAnGajD-YJrd${GlyfM>r0)O++s zgLDCC7x2xjaD3@NFWm3d{8{;4(7ShSK*t*t6x8WejPUZR+22~q9Ix|U9&u-Bd9zP!nfM~R6U=R*oOPEi6C>f1ftMnu&)XwU5a@AVGlWpP z1nF{E-bStHbi~H->jWuDb1l!^1MjhsO7$dyt-3WXrlR@96nVGKZF?&+Nijy3 zU4d*EKTDry#4Nf$zsNB&vDsyHBEMW-IULu#{bW z8#YI*qrnY7{h8djv|3qekuts%0GOHVA5lSpv)7h4x89wo{U)LTX@S(z2B;F#wK$-a z-(H)@t#(#}{o3+P@ z)O;&LUHE!YhQx$5FH195PRjulZ}PIcA;ty?v~~r2aE$F9C7>SQ#4KDwBO(Yf+*(`T zDBK*R$7q2h0Jx?#AkOL6`&4(Bm&FMfAD4+yRGIINBrlvO_QmnR2XfU|RFWTQY%X-8 zT~+{v9pJ4zfJkQxS0^kiPOU)}<6e3i<5cPt0fF;>_5x^lO5^H+v1++pg6_+`|8DxX zv-S4{9>f?4DnhA##rAcr&5az%jV;16Ob^15lat>z30Ng795$ft=-g~lrOd;JHe?u* zod7b6A9#^7{#utRKT|tOu?*utx+{zJSNr7PpSAd*aygsNlZV?Wx*)#N^~3n^;W@^w z?GHTuW)k*2i{9S6rj7E$ei?@>N`!#xVfEkgNo(kSs3_$4Os6QaFp6=O(5TeLZ=9*5 zRyMj39+$QT*X(vv@Ox7?`)M<*9?g5w*{Yq2L5q3Db1nS%S=Ux%=re2RteF%|&21Q! zEROu)b)3UjCuITG*z^1*C1t&C)JY!DDAFDZMlAKqOz>{jQ$X(L#f#*! z-1PnWzbalp1v>|aEH^iIYy_Z#0ye3it%yq$otP(d5g`bzO0e3g$o?80RdlebY)X9o&lsJJ#l@ou~7!-D{V{Gb)$69MksEr zoW;t9BNWh1`}U?1=>QKkr>93fHYUaZamC$KEISs{O|=5U}gKG?Y)X?kFxz_V|J4Ij@aXh#(=O7qvKD!Cr4MTU&lnn@<)Z)MzP zk~GRoKf_wXW)XjFZfJICfi;u3o2D)4*24K1x;GRPtHqU+r016^7duP)SGyXn{rK@J z;BxyD0G@0Oa9Bzzs#t(P13OQqX9!%}+(=nG3D`4o8aO~726(_5N6Jtjx)Kr+C@(FJ zWr>dHQxx|u-iISG!!B2hJyro73dYRLygy=mB25Lj4;i8(QRbrL&4pWMy*)fEfqv{% zYCVmU($dmXgIMxlr7Th09grLj0YG6{1h8S_*RNg-!KlEhKWAw^$>G#Z27E(fn-LGw zN1~#zR7r!h?{ClA9lECYLFbuOJ|Ct_P3$5|%euJCdtG8p4{O|XpD(Tr%n^(BUz4o$ z?o&y&d!&uSD~u|;!*sUnY{-)bLyF0a$m(uB^{o|MNH6MH^LAZswc1Zhc_h0T?-cTR zwItB*eY!%s3bb%*JyE_k7*qL=$E5?ho8Rdz_hjrf6;ez4BCO>7_?8D!OLR5dnT*C9 zv|qSZnY%khE0((2HpBJTtuqukP`+*-?2WG@JxiuEb@IoR-~~ULR^F3FWygF!Zmc-x zuA*yP9vg*>8&~TklybW)i`lte!L9dr)4gujnujizn>hTuOE%b9E*KvNN{FSeY%FoG z2{QaZ;#uWYN|?V|W?_(?SPj|3b3L&d##q0l-IA_; zWq+mYL_yFJV7$%<1h9hffQ0U9K0iA_4ral|7v$$G z2+7R8TN)~Ww*!bw4%*_HcNfkfFs@y1mYI3$)LVE$3CXSwE2`D zT)1!n5CFA8|80PUfgy^3>kLG(JBo0Hl5z`hUabMw1CW}4EfJZ1BN+~pXu5suL&1bm zvMAvbBGw3iivk|ce-t6WJ}(>?7?A5+ zo}P9FSnBA|*D(v5+Y%m*(S-YanEdjUr}U1)C5>S<6Vj8zZPM79N9{QB#(3bc4%Rvok3ksY<6l?@wp_wjt!M)sxOz zIA|^9Zzpsg{;4COFFF*d!6XJtwsI2VrO;gvDrP!8g-3=(i`X{^16A)l40pQFFTX$7d9JySer?=3v6B#1SdFtaHS3XQm zzUu5`g@1(6^zo?$1m_HDsoiuyYs6oBX~1wTSVpG+bNt3q+9%jX@tGQvAvrv%437O{ zoUbcQuB?pCR|FKjtQ6O_<CPOVbbXCw1~;$26+@ivXV`I{Hah zm#Uzcc;(V$<=Hcij6g212RE_;BxpGM&oJpsj?T{3Wedmnp8$a_QdNyoveE6^xD+r_ z6|(L9^yQxe4X#;OEFc(;kNegySDfqW>H^ZN$QJgS6@ozEMoZzF#}za_A*6q!qoV;2 z3~*a6z5U~Cs0#oW=j7yM2x~&P%nJ;jtuX`y6u|5KA5ZlBw?CK412%5FY+pcxfU21C z!RJRv2tYml{^wQ#j2{Jl`v-UfgNgZ#JUlyzD4d4=Y0E*NL&2W@zngDBr1NL~n%JOn zn)6@(TnW^pdbxZ8fWbvv^a`N8_m!; zRNoY!kQSf#!8P4Wrzn-0nHx@J6*JO27PUbXejUB0FLV_6mOL zqsz^Da7e>+k>}s_KQcAQ@&=#x#o}J$dFGs3h8YUZ(X_sHd)ou6Gt-ZvD>%rXi(r@A zA>Nvwzu$Yd6dNHuu;Pa@r2TUvJyN)dGd_A98*6j?b~ZyWaC63NLuYRY8#&_H=Herd z8lw+MCt6!i;>m_8dVv7&o ztrY_JC}?OmcRj-HTu)auS{1CSD(HtCL00NTLyjae@q5mdsGh@S3rnBD=TyKU_VcQ- zJ2mc?)la5o=#DBqvTtd_6_9IPgpW>*1JbYSqY4bl3d15JrVbH3jixc?9|#`kjb@x* zO^5nh@}UZzwv$D@{Wh9{)>!nOo=XwR?Bkbcb05t)a@G&4<5?4;10wz)r6hkl-$jeI z((+x?`5j#-i#vnCRp+&v>2KVn()W0yV{LFh?^`K)`Gz-9qpO+?R}E{pUw(ZMR(o)! z(-VrRk5G<^+5i4k-x}?aGDBw!c{1@pCdK+A!|r#)&oCD>nJm4oK(Z0pI*2T>{WvNB z8wuD`M3Q`wox>E?9WzCr(77;{{?FZ$FF(GkCTK<<+(zX+I;VFl+wW#3gZs8FRKT6; zP)YGz=x-?r1R@fg&p4*ACd(puS$e*HGZkJSdvN$h^EQaz7524Fk4ea%#XStE-!u>N zJen>RTv&$EZSGV4^iSm>U+S&0DuWy(aD`oQjpq8kcXA54E^!HKf) zmLEND?$^8Ax~=|9pOxZJ zm7;(uBk~P(6H?zGAtg(+(E;DmY#I|epBdS*r@y-}l*mjJ$mZZ(iiU-ZXnGeLX-yVF z^rZ!=@S4l;^#mV29D2 zZxUwJQ4_a0Px3dxo!}kojB7q3#!n#l_OY78pyNM%y5r##k-uQTe-Inf;q*i?z z&nY3hEsGwT(&O!IXTIc{>}geZK38s^Ti-g0DC81{X|t zui#z=BW2#3DugXC=@s0W@qwZ0ze=wmA1(%%PW2Gc-)QUGK4~e1!PBl49_#z&isR#9 zEM*JbPjJny?;Q(~51TY9nr`%#SR3AxAMBG1CzrjwBb9H2=5|%sJBY+IJ*?A>wW-Sy z$EOKweBFfMh4&vd)%oU68@d;!SxcSxM9!#*TMzu2;gNqPAlebZjz9h~aL>Qa)GGoE z2{&4O1REI)*=f*?VJoR>+Y~>Zy(FxY(%5|CmlGMDwB^e+Lj271qOKx+!NzYKx3HcT zyU11KDe51__Fe7Tg)W3GYJUi_B=pE((>B;2N3f+t+#jvQm8@S&BTmq_-f-=8|BFGE zHMf>PQpIIOLI|O9YmGupUW(7I@*bbt4(vK9>m}E}_q=6C<(HV1AT!g>aw_XSO9S`s zkAI0wCm!WnjYQ#!{Rq6R88Hpvgk6HB_9*X*8RorcBfUe;pgqIepK5Hs=rA>`5BfAe z3Ua-F;xcLXjb6+eC93GbS$_!8kEUywIxK+HwC5^?nR$QgFYk48y-&!I`J9n+0fzQ7 zEqvu}Bq3}{rsQ~?L@R7p^Azkh=|a;$-Sko=O}nll#$A`Y+I(RT>R|mdZlkq-+*j*z zHBJC7(!|RRr%b&5Ws)bQQDy%s|IfsHy8hL^!|qVCYn1(4x%Aepn>Q#6D}}(nLkVP= z+#Z@<*o?8>zD-(Ehx{tzva?9cQnLM$oRGfD2b(s@)SG8!;$_))+xn!Ce>GCe{T{FG zoBZ1*sWo!mIe3v0tTH4}J~TW0pBnOP6@|@I^D@NOHC-(A__X-NvG z{in(sNN_RZSV8ml1%|ek*ws%h0x+!B;U)bq=fpOnT;CyD~6VasNuQw4a6%E-7=OLi1Lj0jiPaWZrSrEySmkrR-AMG2i8WC<0wQBEGqU-X&Sig&*24Et{8FsKoA}zlJkqkT z{Yrq!6aA_Q*5FK{S_xjc+BM$F-u#_&zJ0%q3NBRUs^IN5|C&zaJiMn>32nQkS?%1* zTBBqUxpPP2ryG-3rKC2NrrB6r{AC?%*)BWUiJj+po!6i|#L!k)5mq9rpmssKUi#gc zO`G#M)oqyPf){NLWB!4KDxJ=C@l%1WJDJDFXTW>P$(mONp5F_S6fwjh2>j1AS4wBw z_HXJmal_su-qFMGR+;dx9lXTva+~Du+qLhqtNvPO9Q=smrA@QTk7I>bpn5_!;V%~K z-|IdtQusy#)PNsj1KsJLlcO`j1r20<{c2S6y3h>uDTcw9Rv3|d z(TGP>n7VK!rt`?B{%KQPUQCF+Ql{Rwhz=cX%k)FB7cuMcmwwvXG_n?F4G(|rtd!>} z?B*EP$ZR;=*$H&R zsDN!bJZvc=(94^9WoSxYf^tHV(PsC%R&6#3 zD7WMHiSok|rDUXmon?B)^bVKD+*7_oe<#Jk1SgH_$tAz^I*pmWK%&9@1vWZAOry!u zoF$3{iyu1;G6&s_)FXAcSPAkbpZe#F7w*J!RU;>YDVd%Md%kVZ(LP_>rqPG}rHGZ1 z;jK{k7Me-xmW0*0kL|%ERqU($l#VU`i`KbL}$k%smeD#9 zd_{=sb>FNtQ)e6>FYQq-Gnih3b>gRs|JsO(;<`g(u|8rIFAtYBXG(r*lI~C6>Sula1gcG~ zAHh;&rnHb)*cy@`A^$6ZK9x8q@T@=WD54_go{dQ?sNBlLJUxT?O0*iTc>DR=oAnR5 zE%jrbCVIu#X*E#8sKV5r;bcPixD^LKvz}b;r^RbTb%cBtt5+o5;&4#bQEh%8`>|+F zd|;saPdb1s&2*(e+f@Bk>S;V`FUm<{u=v3THIxEr#Hq}X*yxeL=UwbtohoR)pFBlo zS!%)H5fFUaQcaO9-sYx%7^8Uc@UST3bWEh-gl~f49=i^&$iU51#HGGj9+!*zP_r^~ zq^U~lIS>=*esm)@P)=^6HHt{#FXqx zb%incgYX!dYQhDVJzr|MwB2b)#nMOXxj#SH#sY z&4Eecua{k2FFJ3J8y`_z?Qdz_j8!jF!9^9)ZN7?i&GLDogh-5nu4u@Gp)y^xqEDH) zRXp+K>g^2OapR2lJZD~a#od-Y?;efS<#Z$VDFEKvMs-eu+%fmm(@XrVrF?RxXU_@S zI+xE2glKeJaoKv@@<7%gg3^KlUc+NCENA{he;4@6Jvc`9M zWIprIEnYjN+Nc8C&C#qi85O@7x`#D)M|U(@23qrn7VZeU)x6~mA<^YHRT4@Z+<^K& zI>W8FFNX2@#}>myDmc%Pn}zIES^g7WkJ)Yme~XgYbt6rlce3k6He~V;o`zg@TkR}< zhxQZHJU7j;IZsc5BeCU{$ug6TcI<;W|;G#*Do?eQBeW* z?x*3rjaTbQ&h;Rb#G=-w+haaEA;dQYy@h%IYU$tfn&NJUI_Xzg22EFHaq*SCAX@57 zQaz!(7N$PHHbeX3#xrwH-tBGy>z|w>F^LImZd>vGFVo*TP-(o_eI0ZsBF@v^qG~=jvoBVP`V0k7X$4K^HYc;!3oWlUKJ6tM zQPy(5VEr<)byDVjQesE&tY0&J<2t{bP;BGgZfiitT@)hRWiP)xN?II{l+Eqp)=c5k zbyNKW&V6oo_GYx8Zsb>M1%~oSSN3}*?3Rz;<~)x%Z#bBBb2O3nk%GHP(kjC?d!~uK zgl>Ax&Ae4+FV562Lce;xE*zV1I^8_55m!x|mSWMo5bp0Ioz}gxxp{DWY&pylnX4Fe zGtr~YSjM8+^_ZaX^Hsc78rn6xZBv@0x%=%J#E$orP$k=ETTJMOi>T^avYn2<>6{}#)3h2K;|CIsD#EVfCY^CYDF#$8X-VbMN&Qd--dl z!@`+}N3X-8gJCrOSU5^0%=#)5jJ*VpJYz576ei{WOx)f*?|5%epL0G*fB`od9hUD_ zsJkp~lk$1_9|qidcMZ3TVt(%j4007z@HS_Kqv^GG#6c6=^0eEYH-W! zsI*-;XQoe>wm85Y^&0_yUA9TVACbQ%FOK(_K!vE?CDx-=mmO?+CKWrV(JqX2Ab!E1 z-+KX^I3P~>@G)sdo$_QbO?`Eds^$8UIj;JSwa1>hL)!MVg}2*mQJC{6j@O)2z~)ph z4Qa@i)ZaMFf20%)a8^+nZaYJYE;vke^UbW-P9KwYF8H;awx8<1Bd* z#Ptv8j`T=wc#as#Soceq8#%v0{AjI+DZkD%Gf~Yr;`R9Lo4IhzP=DTWH(re6rz5YU zKlZ!7Wou`V;puj1#Nm z{KvmEi3Ri67rocII7w8H%XZ-FMe*4Ku2|k4{XzRIqB!0Q|4w1SPy5T`V@P zSEY87WeW*;f!_B9<2=*?5r@U9WNGmIiF0ufzYFk$7q!uxOtM!$W)Gi-fyVw;|SQ zgl5H}W)SGY`G7I(@W7^}I>ecKJ%SDF2|Zdnasm5`{8KPMYrqVfZFFe5Ih4QMwy@cz zg~4-kb1KMAFz`*BBV>R6z`fD6k<;>_>_%9%#D=y)>VY^;yX`gRU)OZd&#gBw`@M?2 zITU~OLS1V$okx|t-N{cryGwbb1jGd!%{6wZkCrPTox1H9$wJw&Hr*XvY$3t*_>=#N z%NlW@Wr$xd*Gt$7a@4H0Kj5*Jo`3S|que;SuLo}7x;n<}DV=nGhQ>E}LsBBkg>#wK z(_9_eoq}N3ZDw0*f z$HAdMFk7|o#5p@FTWqK5uC*6nID+%*r1n+|`F$nJpPIcQt@aKcuz^1$_a?;a&!Wm_ zy)Bk-VnX@5@(i#o_OBePpKR_BgW2= z_9~ndJ6hTKk$0oZ%(J2@J3nBUWjlV|G^na~|KffhCf+R7la0&-3V^}-_|o}|Emza` zHrOHi9XH5F2a2g@D!mFxBrteYbFwKJ<0E9aqT4({&8t&EQ4}xWw11gNl+F-Ocm7xV zWvif~7+wyhmfRL8M;Ud)Ml{lw@ysObAq{Neq?ZqieGzBpUA5}Q>px~ZR%(>8C%+N> z-piPOvJL&TxgL1Fi&)y{EXj&K*Lz=NtDP}!@^jwDIky;ZyOSM(b+qY*EY%oj8&@Zi zzM^_uEL^A6kIRO2GpJ}KSYBuoob$J=2}Z_N6zfGJqutySGU%lrf!PMECarCHeySIa zou12_6rX*9qvNKDc>K4^;%X42G~ zx37}JbuUE6)33S*NRv^^CA}3nHRIN}4k3rEdbZ%@K_gK5XzcdYNj}yfALNP3vAMeZ zTe5Xkr5@EAFUX0H?JB~OM%qE!w^*Zd2ase{I1eeo+H*UaCG0l0BiOoVVs! zM_jYgF?9?kvMj1eO1ItXzVdUx-?)w_(`jv=uba}Kcf>;H-txe&0^aFPC@4Ydg}JY( zH%3rsS-p_+dzC9b;OL%j0A3yb67F7_H5YBdbmWA-Tk^hU%}#rHrA(b)&UI^ipx(AV z*NFTj6I}mUva5^U@~O<4D?aG&J0b-;=eYMY8uSCn*3Z|{_H)a|qy&*4wB&KVV)?VpGQ>-e{Jqxa z`FyiHGzwzg+T=GEArpkccUa;;4}*pTTZm*6 zVi4)RLM9C3oMWM`otFRVh_n#{{?p?+@S2T|3$PAP>%i>@dDKm!%Ibb{Hg)Z*%Cu?l zk*5uDNC?fYX*Q;Z?p($f9IxMi96OfbC+2&aSSqa7UlmRB))(cBf3#k2rW(FsslMrp zvaUlv!BnoP@5mz;L@~!btn!u*$a?_AkgPSGD!bq^%WW(k8B=q1wRPT=Wjqgf=JJ`6 z-mQbnVaLKpMtMf!Z<)YGt7YJ54Js+bGhY@tNY8j)lYHE`CKQgnpTBnWTD?5Y>95=Sw zGmq6e(m+{cicH`VySz1Na>caQ5SGo|TG_V&`oZSjEd}S3AM1wWmv*|gi7k?D!yZX8 z%gg$Z&n4Y1@fJCEM!I3)q9g84X}T-(SqJmx8^iKXrp)cehj@>2Yg}J&$RBk;w(0&4 z_TDqB$?fSE1{)g-Y(-SMg`(1=OSd7?kt#JRy@cK&1O-H?(n3!_=`B)1=%`2&2vP$C z2+~3ekrF}@lAP@4J?Fol^Zk5!ujl@fE4i}Pnl-a#*4%5&{N}4)>q@g)^}N?2H9dBaBll)!*zV`PrNoGT z-efKgB1yiIyf9I7XoJl!AY~a7AaxLgkareZV|(iI3`qy7?2@c(_HCbPOY4b8;T_@w z6kQt}I)a8)Uv(%_Z6<@mjORJ!%Xc{9_>pLoI!sPkru;L>Q7!sQ;lXsZx#x7Uxbo(5 z+Cd3YQxm0BMbz%#MX=j)1Fo7ZxwK72pgAVvawjPds(5L92zuu$H&LwhC>^N>gf(sD zJhDx4|I%PZL~N}#0~v)Fu1aGp~DJt+}3J&fkED5j^G+zDF4Kt z1OfMU@p;HeZG|wcSbSIYvMIfBC`SdpP#QKl={5D#sDKxicpLg0d`>X@tX-cAZD-6O z+zRuEb*poade@r}uM1fVgf&}zQn;_}GTN$N9rZ>^!*wo8(GJJOscBzYXR6amWx zFB-?T*=yV9Yj*x(yogq06k36BTw1HaBLD2uHwUX$md(U{Z9o4);28a*_WluFiwqgm691WB*fz7SNivIL9gY8>~G{6Bj9&SkpJ=WL4pTP zA7_DN?+my@q>OWkt{-F{lFE`~dh^4Z`Vx!jXxp$GFRLZ-YjcPLQagmb-N$VwxD5Lj zUsY>Qev2X%^H_8{AP4e{LUhgBePKVoH};+*xG$AA%o`R|8@T60OdE_{kL09r&_SZ9vIjU**tL0jbyrMe}LpU-0 zekQ$2rDH-+*^|`yUdB*tB9gWDR30!nW#bhdz;Ywhm!1-B*Qic%-MFQ>z# z-|08cDgnGkmrFfD4#UqGbnwbr807KfV6e&R)|DI=%0>7xc1odxT#V zs_Ov_k|Ae|yuhdo_v6NUv)$y#`d?q5KJq-fI+;VY>s7he2A9s^3b)$_uFfit?+-nj zl2s7R6!i$tViJ)6%F)+u)gO@_6S6ZKxmwzNZGXd;t9&mPH8YZT$NzPTQ+onkIcnv&xtic!B53B~Abgo@l z@K%CWzHF7k;08Jc^z-~vsEHmf%=y(sjl1Y$qAMsN8y@5)&&S#*Yl~-_Iyz;9x z?aSe}IKvZVsj!r*YvOq#_;0m@4n;2&q_yZD+sb4+UN5=dWvJn-^!aNhf2N(rBNJS0 z^foP8y@_+0j#37E4otC&9kwJPwwhZ$qJsZfIZ$0R!Xse7HN4fr>FhUvUjs zZy7LsnWw6rP) z%4YAd-ERi8H&g+FvwsB+rvUyFNja^p4*tucHJkHDRv*)*wS0aNciEiM7p*d>P za^~<+Zs3j!8X)0PYxzE671=Cw#GI3NLt;1+o+sNsB`gU+4QZ{NEg6VZv#}Lb?%R4D zG3Rh>ksLa_bVx}sT!#DQ{IS`v!kuj#(DRN->Pvf`*>}X*n75od5F0pCJHjMV1=*5F z*yYF9f0Pl$wTl8^_uRsQS`taW$w7|2Dh7k+uIev@0p7nx*OPlOpD=O5x!;3eD>?pB z(8t_zY;}1l@Rd3G>_>K0Nv;U5F8B(>lDPH}#f`8~;aNXJ@@oKT3xV4l zMjE@qzx@|ENu=z>cZn)#E{vI4vHjxJv2&~rp}4KBgODut`*x!DZD0vJ;qg{|7y-@% zUI)yTy;{z);r_?=%L}S7R7Ef*G5GQI-ZJuQA+Ht=`axZr^H;=quI~xL4$!!tRntyb1-%*e#1P zd>10N>bRBHI9Zh7H)~m-W9#YvoU0JwyDcBca*-PRQ$9mgi_in2*ks^dDAVCXPs~`* z<1pOMVB7fGAiWPy+$^t~g~@AfE_Y<>)=*!TS-aQM%1aiD zL_;+M%@{KQsM_-$e{`Q2*ffaUq8xtd-I*?VNpTFvHR1Q{1;(ef(-h?^eX}krtLOgQ z%6$J0)vFL0c0ce8*v~BW$@Rc<_?7Z^Mt!RoKK=Qonz1T8c-iD2x{fS<_6jak$GzR1 z8fQ#t@`mJ38XAZ#oyIEOJ6tR5_2RtUIG>BL4`BrL0E8x7>-&#~^xZbyAB_UaOc^xA zz#Z{F&ToV`T(57MyJEMw&qE^Ecvoqz4^AqMjQPf$ls3Brxp>pTYy+xrUL?<}fx4*4ThhAfkP{Wjb zjWMvgYzw%=tD;c6Qv2~l!^pjAjyvt*6-B0x&(*&3$EH#`{lksv7ff?o^FQ}hc$wge z4r*>lBIl5LAH)@Tr0W-6^i1I%QQk_}PC_Rn?^Z>hJt`iAxiAjuH#aBW8+Hn!52Gdb zq;L?s*p)k$s?U-)R|d)>*f!l9-#`Pm3A+8C`cXg&2zP(h=Asc`FRO z_MNh@5;q@q5M3B~7z5rp%x`jd_RS&7fGSxc4W$8H5Oa`X-ITX&?PHloZ(W8}oV|z5 zHZ0bEi-u|nPW&N%QheUnLg~CwxQM-<(VW&Q84C=(a@||AImGq|Ez_eOxL1-eu}5CX z$uX9{>xS4YTQ$YCF-%>c!12SJ{mpQ-YJuRX%H5s=;9DTZ#x~XTvF?uB^N?{rMf+z^ zKVlcVmc5|yYs-Z13JtKpyGPFw+B3yXEy!!R%3FJ6RwCG}thYNB+Z(KfLufS;d-hQC z77t`+;ZtocIEFy{kh44hYrlPD9rXzp7JAt>vcUoSE^3y*>AH#kO~(1T)QfXrc0DWd zmx=K|UE!UDO_oL;n|m1+l?*=u*kGB!S?&+FsY8Yb3csit4i3DX)|vhh2m?hvh!zUv z)@UBWcwD{5HZmiof4-d2%^S;kdJWl8qlIsqAB2`kJ|D7Hl*ESEgi!lCN^d*zO9r5< zCisQD!F6f=;c>PK_AONsRyL2$(rO;-3`$}}%c}1p--d6lH2WzV!Jy&QgKZW%qM7Zv z^sIbuW92?>riptJmX8&X^2rC-+r96cf!ARktF*g>a-O_h43(?`U8z4riTNAUW26b& zHQ|;X>J26!T@7=oQ1|?LiLztri9HLImDcWC!I>gu(&b+ZOpbM5$>ogom67e|_YhS; zxO|w(r;s{_k$9Ax?)|AW{>jBH8S{TT);n7Q>vF%-%-^~Za5lD<)XNfl$#1rjNpHotS|SCxx3q#Yitx`$Tz<3c~= zG~d)DOf72bC|61JFeGnq`$j1p`s!D5NQM|@`KQ~|R>|~8=~dpjsfl`u5ZE?f27ycJ zEFZZmPn0&Dj8&JGVoo!=auqccj?kXWWd2vQ1b>?UjP7MCs9$AisWpWl)8j0RT|!Dy zL3qt+QAWkBJ*;x^;+rc7TC>(0UU8$g{!e4C((j}^A}Li8-h=_^xWZhHrgHqZkL_gW zq>{LifS&$A6^`7{`eGx)U$k;PF@v!YbGmY9{OP$GX*uSQx|25ZIfG9_cgi7=IS$wo zBy2oWhA0sJ5XS|{w=m&?T}iJyCW?B4?2jXwUsK;o_-R)8D3Syk&tDvSMLdH&W|xs?#Lbkl;;~QSSOgc_==@>vt~Y)^t0tAu%*An`Kg^@#3l3gdh3N;^H~dxo*~n#1De4$ zk@e123s(w4kaCk((z;dlUQm)EK;b&e9<1@uEy+yealH?^c~$o*ciT<3UH+k3{q5cc z3BM#Xy65a600lJI6Z7_$a;ResQ@4GAEB-}YnJpVBs)Wpyyn+OqZ z>IyNj4i!|B#y|dbN?@~~L%_L28%VJKwQJYX$Bm&hPwVTCCYTH#KEi1XR-LO$k=D&q z+mqNY&iI7$INda|5~tPlxm`kMd`zKcA#AOo|0n5AsMCtaVPI?Gxw`u0aZl>|Ex-Ey zIu|V*j|jg<3%}`hr5@CPr^BYiW=C~wKQUjM>uSZ>%|EOuXU?$6Q#dtFOL2(T7wJ51 zVC^y4vkAa{NyN_&f!r$kD)xrj-U<0s>`p{jQJ}dKM_dUO6(y+ocv>Xn?FTJ~F@d63 zhsOv@`&CUT$g^2^pT%~zCd*tg1SHks0!}#5P!L>FtPAJp`jcy|C_z~ye|A@kum^J8 za<57aXtkm#TKY*P%pZybc7Puyd2_lhW@-qugd5|q*U%q2W*{(o1%b2W)VjzEpf%Gy z0llKEZ8nZUE(`R_@Tuq@sE(vr;0`s1JV%1vUH)bRlmD7pO3+`(c`#{62Bu2iWFS}dzGZ?o1)Y#AaT|t`&7t24z zpKh)a!qa&f1Yd+Y_tbQX%0%GpLTDnFl^;o*{=K)h>SExEXBWCf+EAK9Ks+*&3EbK1 zXw$TsT|nwOwW=Isk?LyFSp!*exfQ=~(Zr?qgFwqBt{#4+;CXKdaG;?|t1qr(xLYlCQ_^HYV}xV~8U*vy!5Pfs=lM3Sr)Qll zh^}@7`*u*EPLurb784>VR~= ztiH4Gjx6gM;?Uh%n#JSVT{o-XtkhDt+qV$g>FI_&pgOJ&@(BFWx5M_Hi*zEx=SAQM z$?Z?aXFr;s*+MjMW2*fGS+df*P+GD{+KycroutV#eiS{vk^aThl5myACsJB;y`)-i zujYR%L4JJm>4Qg8SFm$DzEh$pYVmg4nR=V|Q+*vw&a!#1L;93@aRtzhPyA4%UA6so+;&BpU zNYvgb(}vDG02h&SK8Q#5q=kp4&jPNE_RB?TG2pL~u6_a3@TRD>Rv)?WfRE)NDmL(6 za(W3;BgIno`u%l14U2a_>IYF(e3fg9$Ey};cD!K>*o3pzW%Bh`0OOWmb#9b3 zG{gY6;BGnm@OOqKp_}>O}2`22Dl4_D>cU#O zW-&i2`$OGJ->!Ly|CGcw9ehX)3anY#MX-q9vzID6ehvE}-|;PvwkgpjKa=EQwZaRB zCuFX7Irjz}q<+)FB3C-QMU?IQ%x6h6C?K}QH9toC$TI23TnEw+Cpa2!w zX|>*O{4}2D-HtGD*-_BaSzdn~i+X5L-_=$bC-WbgXk zAa)@u7yFvZJQ7{{Sv9e27P@AKlGGqO@3+p25lSV(OD0+{XNPEN!C}QIpW~fF^>sU! zUz4XC#6$l%5`8+z!6LnQ?#}v$jTIxRtO|9af!)>+$-m2P5FzR&TJ!Y80iwxGA`Ns{Lcc2P62*DoPnKGfA zr#!{f7CLTB+6hC&hJOC6d-P~uDZ1|XEI!cf zc-8BI{ZO{-<@Ve4D|3re2i~IcsTlzZxvd?Z7uBe_mygsw{hnb{8~P!Cv=$nAs5Gqp z`19hi?T2z|PF>4Dij$R}=TAZ51__-H%~B&fNZ_kjOs0CgAq;u>2m{5OEOjN-O-76`%^)0 z`I_qG-~ZfPGPuY^36uF@@J`n2+@pJ$4I%Qai!ax|2i)fNEKhV>f{l-`8vR%!0i=SQ zp8J4&?}ijUpPG54nNd>rc*-s9K}x{mTwg#`ijun1{wq^{n3@no)=?Xtm-q2kNtKC5}uqr2OVAt z0$Ul3&t8G;Y1S>%|3{7AcQyy;Btdznv;Z$&!HR#nD=R%4<$P+&c9iDZqX{^gEALrm zyw;;Y)%H>ba;^Y1jWn|jj)}Ka_C^F_IT7Vn zf#8Iz`7?vIYBl`u=SBOjQtXZ?A+Eszy2~17HDC=jZ0Vw#6HWc@K67P!F@2u5O_qV1h_o#UwSK-~ zC%@qAkcXP{h+pa*?ZMc}$K4I#Fj~oWsNDON0yV_b(cc z({G;q>Q}XEY&;cyG9K^wGo;C{f-Kqe&t_ZOuB&c{xU^sU8Vyarcx<@++19N7I`pL# z7JplV)Nye1k5O9MUzfp^?m33F4;}>{W)GYu^U2zAo=I#Q1D@bK z%r0`R{9EcgGOut1XgevmjN!Rg6nAE51(7Iicp>LclcJogrE_|zhs)Q4h<4XJQ{2$* z|j5waqit(6s zS%|b}t07cw7jPj5I@7K;;eaY0_j79;j0tAbUw<$i6U3(f=eGp4_2aRAQZ{Nnl53hz z@%PDxT+`#P4HI1|!@BJKG-{G{lYuJQbV zRKhv$z}&?vJZRLFafSO{YeB%;J^9{j@c zRb0>=JmLt*;UWNX^(;~Kw@W*-@5s>~C9v0>p2s>o)fhIh@NT?@Ju}$s9wEwn_Z@G+$kyVOo4SVn_gxK;^7c*H_g-Aa z?lw?Koj@PU55M8r4snWLGbOkEy&?0vMiv6^$-ibZJ1SXK%j=*Y@go4g&qF$c+&wxW z8gSdS-CSdwSam>!apYWq4Zbk6-tDqkMb71%C;BNuYjgz6a9I3H5gQ3{f`v1@fisf~L* zvXT6J7tXFem%bo&b?5_4aCvr7fetEg79M<2SFFCW9sb$*cv5j0dwqEZR@CThI=T-(ZH+ z;*D7^9un${TU%F84CzcF81S?}rdPiM<8_=T;b0zau=t>DLuEzI0s*d_m#CmNInku| zL3*v7fG}iV3)qjeCM&n75k_6m3@M05>re=a;YlPJ)_~`CoZ0Yts8uP7b9D1exE!2BN6zcWOj$ z^OG#r3#N;qfih+OYVE_y`>nvG`|o zsq)!pq7J>Gs#Mm|e%!!FDCQ49v_Smo$eHyjFv ztwpjTmUWXUA+LNXr9*Fh7aAtLPf$&l+rwS*c-~9hsd1V(?U0zGm@a0M2u@(CW_xd! znCEv@yWT(_*Cs_wH8&pTQPMOrhj*RL5C7?H3+Zcg$@8bXzx<%i1%iRGDbNG{ch{DF++l>v5sRK6%J-&H3aIHG2ypxovTzm68ne9NR|B zd}t8Z!^&0uQ7Qor>94yM0Ju2qe&tYsJIN=mSJm~on=`h8?A|xNztY%xsf>3u^5^GN zSEEDmFN0T>CA}h2*%T|4Lv6c23XM}b13=Nrowl~s&}9XMnxAt2pnF8|jr^QD!FyC{ z6@bwzygreaF&XwwqBGRlYwAksudm~vG3c+ig(?13mQdX|iN0Ks>SyD+hB(IMD1PTO zKeLt<>#cyf^Io&NqIl;KO)pQmb3&Z{-7UP6iw^VgLSea!|Df`F-Tkj%|M->ij7u;l zjRJ+DI-Jqn*8MM!Y^EfvSS;)wrCPq@wtO^dbZHNN;D!)tInQ!C*0fXGaQ*0E?I$Km z$=BgnmU~`OFs%vNUUn%wxq{F)A8%{Bb?P_Y8zw`4W{1IeEaXFl@{z zmt>MUL(If9TX%H+(}E>R;ki|RTy>4)X6Q{}!WrgORvf?FbK?9}3x?PRrzddS7@VM% zI~5>X;dql7_L$=8!_5Vit5HzcvmSe5lGb3cpn3(gxK~cGSB5_^Fvhb*)K6VcY7yZE zH5hfnUd%>*F?eI(Q6Tv5h*)7}yt$+@U9lKK`$m4bG1ORzc8d7UTuH-X-o41QG9kNk zmM=|#8$+%&?-)Sqg^pLJ^K-mK6~d~`wV^2kvo=BHsC%*pM zf4u20?ym~L%?TVCt%UMa4M~lM;@>(tbby$K_TA@jXoyJA{J3d$%sbfTlp`~;pRb;TW6ddo|Mi2C3i9MXzc#JV@VW{ZZU;&|=JV1*DuZ|n%C zJ?>X;TR3;7aLxy-3LUTPS9F8IySmSD^{ zGUKq^=_o&$Q0K@De{cCF+Tvdl$Y8e%`K-0mWBJQsvZAC7fLE16j+UhE`X;3iZ@+M2 zLNE+opkUt$Y^thD;nizX0r}5Iyxf)wA_M0d9w$kcKAN1J_*9fa;r@9Tj!_Bp`T}&D z6%GwTR^f#5R&qe_vCk08J_QYpilVr7y{>-+!(z2^fhFsQ-$3TY^92;#XLnbXiaUT8 zz!c=27jo2OZAlW_sxI4ubfE)}d;8zf3Cy$nE#u{)FKXnb9Q@%xreSDP*y=!pppQ9X zGeU#h6t*(7m#J)dCh%bQ{gPaoMAt0LJq>%+7*nTsT0%$8S1Z!bEZTBUL_*0U-LjM5 zvfzwK^G`6+fLShV@@?Mf`Ij=UmsNZ$_QG!DNjYDgbV6t8@_b+5ab4lu21}hkATQV5 zS@V7oJxd$sRl^Sg89VUh286(X zh292Z@-(g9%#H+a>4IGqW%WS2v40z~w9FZ^zBG@UY{C{qrcO+YcWj1*8h@CVbf2kL z)bX2x_+mD4w7i|$o4owl|K-utSQ0l2q-2p6x0=^cuQ&_eL6`iZ-LPYnF-k+a2svH& zeX~dVXtLqP9J1kl~ zDl?g!WhockqKKWHFSp|xldgTj-H}FTByh!}76if`8z+T3!<@D=JfvE5w8VPNjsFTM zSjlcH33&A3)EkF?iR`hmXStta`}c%CO5el1XDL%KR>(7>%_L2N%!%mlI+|$jK z&%JQTl5%-k8LYa#o-kb5MR=dg?`1|yIl~Pzzz#K*YK%;K4NC!G9q&U#Ynev2oQmt% zq=!DKyIIfq9|{-O%*|NtlTjBZThW8QHXUJ~dA#)lJo-A1PCRJpitu)&FSht zdHWAhD;Vv@8Pl>g%k9UxD0NMf@q)B`RsoH5$@`#POI`$dflj{e;b$g*ai8>6B#wa? z?6mQ^FUK~v^_R!jD>N>^lJr8Q?j35}FZTB)mIL9IACzoX;8p0)E|O#tVk2Y)yg5Y6 zaSN#0h(%AdjEFHq6RJ$&87h@e%nPg|(|p63KpTPBRrKhG1CK#?EyMo-K0LxtRnh9H%N>hKs)WE+mTT$L0`ED|m?oYoe_h@SAs}|&$N%E90g4#^^7xRiG z{`o(SZ^2*xkq^s*4X^kAS01RY_WvYz{x=!@zw&|pCuR2k$|p9f4LtE@cz+T`FO~+A z+D?P1O@k#iQ#InWJ}}dTGx4)C=|V(Soi*I524R)1RuiIu9c5u?$K zy3mu-@Sm-dV-!MhCwL=a;^|$p8@F!tSt5T@>K_5BOuF>Em!(DK@9OA2qkJw!o4fv$ zZS8qBX=#c%GIc8Hgk&5;Mh|KLZu4kl`KD3DzSgB=IJ1n>M%PE@PD#)f=NJ-P_S2@A zFwAWgCjKGjppOjfpSx*SW4QWx$-hPp9e`(6{`4P|Y;~Gf0by3HjUBrR=rw6_I_4m& z5>4tjOea%rj6}~8-q55Q7r{Ff{b&`BlBJWF^_HZv9EE$v$<2Yf0888PR(O}iDzk7h zmI7&f6)k)xQbEcgk^X)6DkW$YNsRLV|01NF+ai)Wsp{qnX`=?B>0{ntadWe0I{_WX z%iJLHWR|}Z)XHKCkF5Ii>5=KUX)ZKpDi{s21bfk1Iw=&U)P?8{-ZE{FOB7=FWbIN zKfRO?>&SZP`a{+ex|d4QVstChbj^wG;ncKn=M}-0-s6kDw{H23kYoWJVG)`*pC462 zFJzZ`lfnrEDPy}{navuNv=U*KMPr?}H6`w(Ut2xbiLWmv`SB>Sc!98azo5TC)G?oy z%G;U8{i|z>EItoBT@4@~^SR5R)gpMY5?Xnc;i(f}ht4EQzepXO(i(fadwr}#|}@M4w;mald!wx^r%UQZ$}4tftcHm1Lby zyG{!WJ2wjO=cm3zR`lO_P{9$x_n`bl`NzLwAtcSe9I&Uj0pHfambPDPzz zfpxGT&ECx8---YI>r%KG_`TLo`7tMf2V;JMh;{)3t+(@Au^vsgc115mJp;2;a$K(w zgWo!h?{X6|Mx1P@wHj)5c@rk^%)ReD`3>Y$jQXpPd_l?I{q>ONLSuWf!s)Y$CyPOs zDucKi0@)klE1j08BoCopR(T8-ID2`*Gj#B9$LE@2+{u32o7Wf3<6;^u5yu?M?Fn%^xb=Ze()He-X(we z>?}h+wB9$-9#chW5xmcGpZ|drTZV45R44(js^Ky1S&s4i$P%Kzaf;>d^CvU_s#pTT z`}uX55}qPw${g1!x^b=!W-E%nvzlx^sP6Tf!l z5(6qcDh+-l%*qUnw9`55FbQC}1%LrNb#OMTb*!_0Xz0nCCzdrQHX08ZDeoVRbb@9< zPcJ?YOoGHb(HR-kjp{hvFIc!8!>r$NH7rf;(xxJJ=R1L&R>v0D!pT|nLC2fMmz9nq z@sNX?Kg~_%+05C$pIJ1A<_Nfp?_> z{cVj@pMLOPiWT$7W?SjU7LJ2cOZ?G0*CV91WE8cOXR^*Pg9M-Ut}2_I@~qq-Z>ACw zB$T7noQoJ{8*Kh7F}7{4ys4*KXnN`g>QuI zl^8dmqh|SyiQV|A`p~Z#cs-tG^V1>&DfudFagPV%5z#;1IFH|MBmR_%Rjy#^vVLIT zcca9e+Q;li-Oxclw6oK}=DXP4VTzsabUYvDfI3OZ6&d2$?o@p22j;HpXEu6eu z5LLz=Ge|+D@Ym&Q*I7L2%#CXhdDR6K>nncjTA}#$)=5S){tkQ+H~i+L+*I_$xzqA@xtG1UFRi=_8d>AFntraWMSSc= zk?2W9-PM}0dbgd*Rtoz3;^eJWzMd8Pp1Zg3;cwzkJ^-CDKJn%Ahv=|S;WsB;zrHF4 zRcypsH+9+^k`KQ*1sA=T@M@d6v3^UpSfbFv7~*`rigg-4+i_-g#ByY>1iEX94{8)< zk5`G-_3!noValJ2aK*n>K7I+RwkTn}!1t*@`)@aZyK)hvF(LZcwwsZwxlWta|N8o1yOCrHgJwjAR!L!8;r zBdyi|glBfe?DcPFj2<(q?6H?uMXd}x4!rW)E$r_pEPy)>(!#eEqNq$f8&4sq5kD7t!CWFuUD zf86w;(0qmOu!Qq?)OuTH*J@196Fi|?zNnb>11Y}1eo zWi=1)RIJhdUTyZHI#+w1Lzt*{#f<->*)?GF$DdJmyYqL06;iUtBVqM#OLDYr9iAHt z8gp_3qXSiq1FW|8O`L=#-kq}#=Mk*}ag3tbVyPM-~%C>wmi|Eb&{>EXhmLfVnrwPCUmP8HMrPk|cD~wkX#)erpY-8k{Ap4W}+l=8HEiKS|HgVmx)yGo<6{t6_=fF)X33u1l66m^DLIhOSPoA z_&?kDW`JP5H`#5Dn2he;0&(peN2~g7ZKZtOy0Ah; zN=DAdD|O(P@6WTa@buC54DqD)<(g(<6X);W;^|%PPyVk5qd;c)v)lIPjkG{7vwHkr zqW9FH^>-5WET0$$_H*Q~H;#L{ zIe&M?btQEj<$Mmo66T}Ve@OE)%Yy&=j2`N1u-Il?OwYR4Reb@kek`Q%mbAd~K>1x< zmtfDZcbCDrITf$(d0>qg^0Lt_Yqj`rq4!I}jNcv219h5l#*OJT@`fyYm8a zd+;V-I&1%ZN{jSk`Xp(|PU$`2j4wv0{i>3(BR_5P`66Kcoz3yAh8H8Ro9xK6PnlBwynu*#4mig#1jlhaR!^sngH_~?NULMdTqxdHGR;#ILu4lQY!OrCXyBB5!~)C~ z6$V0Vz3R}|$PWx3ByKcATWooil|57#{9|t8^m?m7y59`HUqPP|Xn{;!)$gOF%Ry+k zdI21^4rEEmaM~gct$ma!!POr83e}Y386@bGjoYCCs6$OyEp^7XJwPg{(NhIxJL}i6 zV%xM8xuycm@)Sig{FNQZs<#FONVk#>3UT6Db;UwfhBgG!mn~+;q6Hga8pGtlFUL1; z4Ne_o>fK7OvlmiEgQ@v*pa^BO@9{%i`tSuqtlQRp?oJ5Z&u=R17_~oGk~)ll!BGck z!vUo*Tg$L7YVZPbbpB2=qn=3buU{o!3j@ow>>Qi!fHhZ=4{`>aRmW^NHc-@5MFw!# zyS0gMpZ?{zcAu<|^P4BR7>BJ-18~?DX0>TnvbhUoog6uQXvA4CV(Ai@nd;<0pUA=D zWbHPPTckjGdacqz`n ztQ3h6ZI{sE2DKc$TMinG8-$VHBjMWgsol`pW!ij$TIv?8vvs@y5utKG%fm|<1xJEk zk}LPgy1`j4XG+koh$$$N3y##b0L~fuN_l8WZu}e}5p0|CitL1=N*CZ!LaPtEkXz*S z&aQ%0SkY>#ErXhhT9rWizo1oB9nV-nHzcsmD)6$oObv;VU`q-D!lpV%Em&2R?An3} zt|SIh6D2q$go5Z$PaJJKM>DunXo!eTK9)fjXq=e@hn2+DZYf{y!b`vo!#deAwPkaX zk8h^$NC6z#ipy$oHPo1b6_0R2Yy?H|!Qrea_}hfRwPjK>!)~L6LELIx$k9jB?g@Fn zpfg!?&oJCnO7#z!|B%iLfsQftXm6d2|3!Ib88&=jSegxpCDI22H30>y7xgGRb6_~d zrjMAxmSLo_KUjO1l)U%MB@#o9IQS{ercNkW&8a=Uo7bQL=$_3}A!w^44MiQ-H$==? z!3dSo=R25OOvDA|4jQ* zr5^Agv~w%0G#nwsaXTeI1FpWAauOpHo*~_~HBQ^ddb&iSZ-D}k=<~NZ4_&4CCIr(^ z=SQ$-O3Li^I9uL>R5+U0qy~r{4DKHDA0ZjwuqXGb zPRaTh`VkyX zLmqvVZfEX3y{fxV#&Kjj$&%w_g@^?Ao05?Z&R~s75aN<*Odbd83&3}i-Fsf0H}3nO zK^JC&HJ7rKAU^c7KI?d;?+%pvM{-Ixrtc?}1U|6pJQqx#>X>D#Pt3CqzXpAZL5DMO~x7=V2;8PA8si(s7-BT#hTWbk$AtTAE zas`jxLlk7VIV$zpsWjmmHltw=W53@xrN%06GYsuZICV41lC_Y?d-jw{t@ia(@Zs3f zcqokR5$n)>k*^V878Z6q;pH{=VK(1~-QTVkzavLJiL%-voMaKn9Mk0NW)`56K#5&@ z_#;45g#b&{l;`a|G`7Q!+vIbn?+rcQ zyu4PaeJSf)>H`+ZJBh9Ti@moBiz{f_MF$PR0>M3j5G=SmAq1CTL4vzGGq}43g1ZEV z!QFKTHo@J4+YIiU`TpnG`<(Aw@5_C+o^`QScXf5uTW?i&+1&e8p+~IKL;?~~o&9O^ z0Y>UocahvvYla_!JsvEe1{ik$c$tI?)3llO#q-pg~x#R z8ueQ+udhNPs-~v50}Zxxo_R98@54KzB{53uKI;)D@74A1ow)E|x=lcN;`qIMwz1Z{5qgB_3I4A`l#o?3Kn{cGuH}_wrykBgen%JpJ*YpW*|MG=aXs~V zxZO0uTZ`a*xp^3e)E75@69{qX#CGm)AN?XaRU)V5`2jD$#Bt9mPy#joC)MBepSqq> zUk8V2`fAd1t0i)8ikzR3{)fK0_tfb&3N*qi4KeCCySgkS-)Y5oHw)l3_W?_W=5$`l zLh;|Ngvb^?jUFvM_vHf)*(e4mMDQ@*ZN+PM8G=(|&+WACm?^`cJM})@y7vBScfQ+a zCJ$abjOMeBoa~+HZ+KVVS1&<;=Zu3V{tw;Q=(JWD zYY_?GP%#Sh4RBEZW+Z%@kEg*!Z`^}E`tj^I<{JU{_+$2%5c@eW!rA{mRp#;%9~)`* z8ig=Y>RUzQ8+?TBB|Z+PkIDe>;wk3e7*r3lwU3qrV(fk($s_jia}Y5sKB7pkEoKNu zVN6z>C)s^u#3(Jk{~_Zk{uZMrtfolJq`9%$pM!MLFja8dM{@0_Gg4pgJH0Br!>xO1 zT3wyb{#_`67`nxgvy%B3WAWNr_tKI_z)ob&Zv_*0b_-i|9rONzzdnvxx)y;zMWOf%UD&AjI;UPd`-3+`9<0HS<3sI0tE80YZrdDhI<{S=2@goHCd8 z4)*jZEk?>9r31$G47XkOlZ$EU79$SqqJw%Lht6F5q-^uyeMZBm?eNO^`lBbJNilXp zqg4Y(n%C$kr2gVV_@yYE@s;mOvs4o}b_5QtU)Jkpf-sTD9($9=jr>^2(VD zzCQV(qd4&@t)C?r0v#NQvC$^2cw?^P5c>&e{TuWkJ+8{V#-AY3bLsZkmYvHyt@B)= zx_|kq)x+RRFW^ygR#qIbKbkBC68*+@@DtXVy?n(;u_c@v(05ZUwmeh6J{SsM$4{HC zOdBxf?~^KnzZl5Lz>=(taxQAt+)7{vC0*J7I%5dO?6|^BWEPIPmorI_C3F8H# z643@@yb9L6GklTcAndW5%`jYK=F=c2GWACprRxPqCO=;pS3Thu2tus<@pnWEMW*bo zR}2*17>u5AVxdWs#95=U>KLGS;}dcwc_ zaKlr1LWj!~k$88PSh+l(!AlqXcd4+dySe^px>&yW-jOu%Fuz`XttL=6Rya*J7LAutStm3M8SV4R zHHBl~%|mVvq{|dj`6ZE6-1f#j@*w7)!D;lr$)^82EV+N|Mu)Nc;H~@J2X~5Ntp(kzdn2EnT`lG}Z_vHT z?UNZ;*E;R1GJJA*xX|iA0p)tVI_0xJ=e(He^}X@sUb~BDfKB-GJWZdi#1eFyuKjw& z-~BLsd)+R+x;=oq&FX)Nr~IUPmiu4Alxp~)=!XjX%@gJy`rk{v1at(X{r9V(I$@Na zvJ&TcL(v#db21rmZ}AlH^&Q^-OJyLQ^ilpZj}OP~Xfz!+sA3*xvts!FHPHfF$SEa~ z;(rgr)b#)NGpl%`|NG{Di~s+uG_VDW0;B(&&x+yD7U(NjH-N91@FuAT9}ybhmuPQ> zrS(7<5pkU*RT~!Tb7hk|)TFPR4By(F=wv95-HoG)w#q;-#YlwbhrMWz{3w&FC66KhmxSnrm7V00Sq->NF0#_M#)-TQ zl_0mWu=SV2MJi!~4(;VyQ~b%xj+&nXlj;>(4?MD|)iX6oNr(^Y)puQ9>SXCg>Yq&K z>F@5BX%5q;{D^2eyrFK5i1%^a{LdhLpY-0Y3*@dOm= zWtw9UU~#^vVHvGXnnQrqSMY|54G2B|dABUp*@VfjQN>h?h3PoENprnBtG9@X@+pU{ zNjRR61xLio1&zJB7<7EwF4wu(cjkXZ>32bsGblsjLtPeBx8p0yE53?eC}q&A_Pw{r z%(@)12=0EK8x?4t7=m~VfgqISfBd=8$e+HrC9F^SZzJQ zl&ZTSjDa1jbVVASj_D$gQpOsG8Tp6TOktXA5G0u0{|oCFM`U!M1dfX}n;hCUtXp_qU_3O969g;_0DGuqdAE1dr_dm~uQepnJ3oS1f=*}5jY+TjUSw1ldC7&1s?QyqcF`5c?2@6~5 zkNSC-6U67Ni^g7(T;hf*lx6=hRNE2S1$kN$AD*<6s0#>nbDO7l`*#GroWsyWV12XR z-|GgMpARSZ;E*?>k@8Q6K%iZd#^YYMzYFBhzp#aJ+*FWr$t_~X2IcIbogr@q9IITI zNrndUwMA0S4Dsb=6Y(=9dVvibRQT$m*qcR1>;h#hLv5Ani)eqSadfwO3t8IFCNr*A z|4L%hXr7fzvtrj(j`=R`iJ^HZ~i#@i=~BU%NZ!yp^Xr?jQgvR zV3t3~YG|R;5{|vDT5km!)A}BTQ1;u=P1z4%xl_iV4HB*Sn6RSD%up$#cN8^x@d8zAHC|4K!{G$VgCwz9g!o%AAQo3L6 zzW$ZUmf9z*@YS%vnOR>8D7YkneclP^4w{k6U?p;Hjq$1vja`9tnEHuE2dP00idLPU z`&S;GG;c+Lj}U)n((b#9S8zxFQ_YAyAjpU{hyA^#(OMhPq6-moz_>owlD}}5n;p)d zmD4JAJzKRq%q>ANEjRmzwdh||e_f%b71|Lv{tP*W(5O*DYranHH+k@X1(0_s&1n9q>8`b@P&J~aygaGWqFd!f(>18vG7jI$ZH z12-h!${ngnREpLl3yT~)8;)DH?xr+K0vwt&k}lUaYFWXKp3e0l7e~LK8?HM-UT>rSz`awM8b3}{5yPe*d?QXJzE!I^ zZkXr^LsL^4hnh8gF*C;qQBq%EtL7_D3z%Zp8%0zHtb%bDs$|Bw1b~ejff@(QklZ!J z?S;M}*$183V1_@Bmq82__epXE^-c{r}R*hip6439vj|3uY z2hG#-)};!jguDt=&J(2Kxv1crxl?J}Kw|cLNWJZnFF zTRo5d&*F8$92qZ3UB$CX;dHV@gl3q$A6zhf9Kt!bET(cge-3h!aNQ>JOKrF>!B$`2 zh^&II6vGiU z-?vQy|63o-k}LdPr~Hd`Lk&k?n{1>BPOT))4po{YcL{%(fvqh-9B~}6Yq~JLbS(;T ztx#oA)APh=QlmXT@H1Y^oZb6so{fg(pTjCI2GJs)++(ZIgm9qxT|$Mr3bT{zbP%>; zCso4>Ei{D3e6MmKdf6xWmMt8||7k%ktED6EhXY3ccFpFT)|rfmR$t`kiLy?vcxzxG zN%3+^dkQlx*HLfm!`_CgU@fPlr%~F;SZU4A;a=lrWBW1Q%VK)-5q3TqQhU;In|Vi0 zzD4|$I~NrH>#ObCp#uei!#kIiXWa$^7a-!xGG#_rk9%#O&1`;Z5KPNr_<05PjCCKamXriu7@oyGzzGx$zptG z2!79-AD1&}hgL4+0~ofci;%AhteFq|Qtwb$|FoB@Go(K1vR=gdeM&IN7N^4^*YWrH zpmId|VgJEv^ng8nFHjW0XA4h6XNEpD2mXwd#-x;81N>{c_Ws@r#o90xUsI%Y556c8 z@UX}3mIwEmnS#5Bhff0%W0@L}|7|u)gdyDt4>n*LT=#Rvi;ljer7JwmguQcI^^KsY zwnnM4xYdkZ*|1hQLP@_B^LVjqIlRP;MG(!gXL&5%zBEc>-N~awuKeQ`cQyL7#EE$r zn%qJBxEx4r)c;A*sw$V8o~0 znyCT6#r%ToZnk|o-vT-}%(uw_*4OAt#DoGTQ*r+ue$Y#+%#gGG18s;vhoS^pyBe7U zZO4g;2|PPQHp_U<1Y09n%HZUCUnP!5Fw}daNA?brO6*@Pd3rm@7e0l_{UcoQe;ip@ z&WoEM)=dkuyp|2Lr4p6MT^UX!FkcQQb(^NK1^sG>#CtCMawPCoS z-xYqxX4}*44n-dz;0W2^_`(~0nXCkmXq+4OSVm$9L3;vU{D+Eg|sJ9 z=iI!^eo1}rSliK&!MxFvwO1Zvwf_}W?unWqk#5G`^qw&%RNJ`VU~d@;$)BOnmQ{2x zb2fnH`mnXb9dR@H-g@X}e{8PMvn6*=sM@V&U>k69u)jg)FDcWo?b)g6xA=8G;R7`O z!r~f5?*=SvSmUH?M4@WC4iaxWgP>e!;7k0eS0Cgx6*G|RoZQk~_^7HgI{iIydsej@ z#1xw~rC$<%uu~oT9z`PME#gr4xsbER92!8NGpSEqt6}5OA~)gcNT+JW(__y5b%%k{ zfeRIGCTeqk*l~zZ?RN?#pUd7~rI-5)tjOJWtmw|{_9M5KpozH7Y%WQLi|9-)W%iSa zbPje08}r^HTJ9fRz#ok{GgB95kN2@Hce6-YhE$Fr4tik8vc{j}`AYC~qLce-rB*f` zrvKURQeIEC`a{iCaPxLX=XEc6{UQY&7vI zchp!h+HE^fXIPyyGMQeEdYRZ7HAbZR321Y9(K-FxZISl_6{Z*A3(D5li*) z?oG1I)D%9)1aWFoTMJE90o5XQDu&3v9lS@%_ZyH+G@$ZNV*P|T6L&+s zJfMEDT1aIQirM81evt*?Gu~eDQ%cl*%k+AtE#70B13DTssc*TU)lwN?d2*)rOVUOk zV`RVC@@jR_d1Ggx__=5+#Pa>Zm<>{LPYhP~<00Mcytr@Y&V`oru9LC4!n$P&_mY}G z(Y?m>PrdTK!dHM*+;H>nc?M!Wmzc`9X=?%r74HlkVpaiI0Qt^9pQ11nq%$d*9J_G6 z^8TF~jCSw(w;q+yhSwz@+_}Y6XNd6ayr?63RXPLDgMB>pJ{U2sQ^vOjptrP zU03JhMX|JEu8$&OH!F|V$~CVp#*9KarSCF*Zw7fqyqUzx)a$gB&T`z(yqV@3(m8fT zPP@*oUGFbCvlAYtQ)Wlk7pWDr5@v0RV?4k?$!0GBesb)EjwRcWFARJjv)!E4(`a@n zZ*&5NlMd^Y$k2t;aS(H3c7RNL#=bQ+daSq7nREmMK+#hB`GCtS zz(I2~ziJeR5}aNHl2hLnbu?irR`T=^-7G4d(_wdx9V;CKa44e!KE`Q zuDUzFpPd}c**v%>J-#mm;(r&M#msc&G+8?9*M40ZF!6(xMExyhH9 z#=x;gom2wz<6PI?Dt<Wp@q?u5M&f}uS{W$Rzf^o%Bvd@E4ajJP)hs58e4Dr zc_1;S+aG9qmZqd$Qc!gXsODP=RN*9QShUR5r?KW~(aE2Z$e$W;)oPP*@V!`JrWRWk z2V_l7zetvcSSWmzOLw3%|HG3RBO;0C!juE?e;C2?_;+`JN)JxaEsQKsTZaQ+VboTl z^_(4he)3SufqmtR(!Q;bqj!;dWWfJe@wJN!y3gW=tOE+#zelNC&J(wP(!M=~->Ye@0$iLw%xZy4+ ztvm8Ty>jcDEK9g@`Lq>Jp#cTFcCKttpcD>pT z)K*KqGa~O*z$>H+`0OdHbQ{ys&tBPldL-wYTg5S%)o*AwYUx%>u$vQDjpnvPRM-g| zuCn@@xo7^208(8Ql{aBCvTD02hTyY|%5ZSlDJw%u+l+#UX%EZ_5 zsWF3jt7xZ!fAD@X+M2TSZ##8;4jV1ccG$G>GMwzkRH#q~Ta`U%Vo##&+ZX$oxYYs_ zExVAoqPi4_#qWW#nkBIF!?s*N)%2X9k!gJFj^x=q2cFLgnv)a@p`|Np z&1#NhbgAQoDbOMA+kbFwx|4?$8)D~H6V#q&X7$SaNe%qfb+IYK3&ntSsBLA2;SVd)7 z@{fhr)a+kFNkCUinSTBJ>BZ(CE6+zMC7k_2R0A1&mYEIEB3z*wdnu2#~6leKd9^<+)Y`4P>#4qUk^kRY23Rh z6MXI*j!BW(V-VSD*RaN z9DG%@_Y&mo;M8@)#S@)kHP3y`j`fS}J4Xrs+iRB(JXnA<1fSx<^Qu~%rCrfA>b{^L z)(Nda*`!gr!V&V8^Xa11>g8rKgIb${&!jjt#BZIpUbmz(Tie1oO|l3HVFJjSO@A|m zU+j?MMgw3W(g61T*raMPJmkM%sH2vgbpy+SFuuHu0~w+Xt~Ax;Tno$Tbu&|)<0LMXO- z-J|mw{2WRl>9l0;D-!~7p&x6@hV7qiR?R6rA0LVL#a9nBHQ1Nf6(QwLqo=O&)dHOK z9OqAuv27-9n#l+BRFc2hHVk=%XLS^yX_|hq;EFy{_+9lItlYkq>_&D0U)zanbbH-P zMv`@%{RUu($?I{&_qAKb)-)!z_O!_=oQ7{&rEyY9(Q$n(@-xY=9)tteY|Zo_-SO9!x2{E;b!e;TV8doyr4BwgAVBV!x4e@aUp8IwZA# zG4`*3lY^42&$7eDcSShiuV#_~JXT6# zBlwU-g?*#b|0aZ=Dp_<@=w{b6MB1QhDz zIvilVR?OEYSE~aU8}mzb)|Zy)Lp}gU0*syghw--p}?jXi4nP&m(at z@vWSkaFOHmQp}Xu6LV&Z-rie2OH%lAo^s~hREZYq_d^NWc7nh6WScuh<)9+LD#b=Y8BgGW`AC zN4{K;IQDdR?{Fxy6Mf4%$JoiH9hv`i+9IH+TYXk(9^M^Y@72bv(TIPwi(9$#diHaO zSw3=g{ms510478gaod@;{?nO01rlq_`jWFdri38!l{;g0f&1J}mrN{?mO#3aOPse6 z@4h&Ux$ptZqKIx+l})A2YxWwJthUa&L2KGr_T=X~2&W}%A);&+HujcYh>!-uYUl4v zi1epVQVJLo0-NrF@8lATwxK``8>Q_vEL?nmLk#eR+S{6nq~OFw;?s{omK*O)mj&nH zvwm)@U)i%gD}qieg+v5iqApWZl1N5$g`Js+%f~;3l@N?CA|%ZnT?BbSV-?B55gKF{ z!bA>nz8w6TWb01Zy>LnjTRh8#ct4-MW{jOYD@n6Vn-zh0qkkWr!LNUK>+ z_YY(;XPYYb^xBsBhQCgIw7J&kyX>4QARQUN9;I5@{{zp z_ABX}7Hn!r|0^%WDxwK?VXRYU^BjO_e=o z&ZG)OJ53xvw92(V7ysTkg0jbTRyk7_cYFr(ASl62;KD~fE5+Z?iGWpT(>kX6g2dWh{&4D^|RLhm2cd6M~Hu`L{ zu@k}E)K$vd6A~!+qr*5%>eUC?2fHhAk?eoCSrIY0Mm86#yq|T*NOjr}C?nJyUxS0+ zK!4#UJkqgCV9rmf$4w3G=Uz%f88biEYN*)7RoYxBchOSNs6#N+np>LRaL(I|?Z#?> zgzj9*s94*&!8;sh_!EsMoU7~N+)6zND_NI7ITPn|HO1GWNJJwRb}#67+eu1-s;ckO z0v4Sje|^^9u3t;L``q{*E2mz%CaAEMBhifM&6;PxR+ zZ0%+-A9BLzJDr+T-T+W~pdEd0N>_JZ#;sCc@v#geq6G zEvAHRAYsfJXS?2k6KCoa8$eRwZp!mhWQR9rZi+sn12@D+S&y1CmqUTD9Oj+vv|ul* zY=vpnIu#(3TRw8uM8_|gC(lC~+A)zZ@rCdlL<^{#$sEE)+p&)Ubk!J0@f2>PW2Gl} zIn9%^R(==}AiV6^Ziwd{cbVfUs@um-8rD=TYjkp`qJrtpQ{*+hJswLsg0XzG( z{c)jRoNy%YEv`>xaUW|rhVAz@_l3ydm`C%DV!z+T@97^|$xMGcGK=2l$G_&(IafM?^%}ibp$~W@oZ--U~Ck5yiO40?EGzNLdD#05KyHq z5zUleLB}%`rBhCP)%f*DiKta=mGOoq?W#b}_MKQS)5cdSuet4|DGVb{)*GM&=>f=I ziVjo`9bU?AAcYn#(dFru@ov^EB7&oLsmWk#rLVy^2@&6EC_y&k#>#9%_!;nxW3Tov z&&?`T2%32lK3W)0Ofm}8DE~EH*la4Q*?R=Opwp?`wDSSEp`r)im~wo65m{WBm|P_O zn0n;lz#8tDt+GXvd${^Xwc+AJ6UWtyvK&!`Rf9%loS-O7pg@o_bJoq0LwCB`b@*%` zX1Vr6wH*rHh1HrWv>4|$VGl08uLs5+j>(g|ijnly=dg~O6_xkM3x%^pPNFL^Hh#1a z!8QE=W0YF{o-gCeX9zZ(6K*l3%)?npzt9;4K3Fu0%$PS{tu(3G=FM4|%$@KEp*xtP z!YrBqsr_*t;F#orTWfD#{ehQ@G8!W}|9Fye9FJ^1kL;#|5obge^lrR&`h#VZ=BPiK zs`$Bg){u+q_FJlSbex}u4SCJRd#{oX%43V2{f^SJb4~P7n=a%FkHpO6m+agE$x?r1+`GB{)y|9qxzPix%h?=vIgZ@>_JBs6DqmMB z^WujYmCM3q8z;GT{rUO*vUTM*??T~o0JX~}Y~6JS%8N|vIN}32}{6>$CnH{;u3#qtNWtw-p>5ZMNaC1VRu2)B@Mr&~_ z0QX3Ap6`n3!=NV>to;)m?SO2iLgZ#L1^(q9d)G}Md~10`H^hRhvrpV1xJAuz%hEAz z8fp$}V!6MH$JL%UqSxUuSg@tziTN~$b-P7C0^iLQi{S6#ib?(6Fxh32J@oQm`NqUK zvrxIvrTwO0*}A?X=__5IfbFjcOSww?&AR2Lj^YJIVs11KN+4?I>d})j3qY@oH@1u* zv}RpY&98&X(Chpy!s+^MxJd!tr4rrh;f{9StpEutlnM(ja-VmO+K_unQZZYO5{N{c z!TOtTZyb`OKO4)P<-v0OPLfj)AtXYXQnbQh{;Mve;gX12tpoE97eth}Ua?25zeLF( zs$kv?;L@h6;Jxwz4^zd#TZ>g()D>I}3RWoy<#;;NJc1#>neU$(DK#rXYW`yT?pnw$ zWkXK9Km;~7AA)4G?@oZzF^yn|8RyAi2iYH*2moTui83B@k-n~MrWz0L6r4{y1@Qh# z%bP>2VkXk1kE8J|O?0bff0G`l$`lsyo{ap!c(xqn9cwvp5=O+o7ttzuk|J8YHsuko zR4#MNwI@qV{9ZEGjmU7Y0Zg5BVs=6$dnx8wi&mf%F0Fv^?7Ng{lPXsRuH?0|Rl72W zORHBO#nIdp!Q|Y@fD^7y0bs!GqZjVk^X2x!jDIl3@9-yG(}eMl??r!W-7DYj?X^>E zLr(J9N037Cg~*iDYIS8ihPa(Xf8^)!a2#3l!-$g5Ev`iJc{Zu{786ZAkxfEvaYJJQ zqTS45{#Px)+0pgGMuUPn7NDX$%Bvo&g!K>+Hto+fU6|AHs!$$fX_{0Z?1o( zScY6Z`nuT_<_YL|1GU=-9sF=TjyPE*>1$Sb!LfsYa|8w@RDSVuEyDXx^vH=0sZ@T| zrX~oKZ&8jhZUq4e+UduZ{?IJrYa6Kv;KS5D;Lh$!C#7PZyCR^I5bOpjj8#+^c&#PhwHFMs%-q$9V2{)<5w|3=L+ zBDI%aAnZsCttOr2R(@xmcIEc^P9CRPl(f%8Qh{J^zP^-S*W)T*kg~l)@VqOEK)W6| z#m9~5AhM4@5RiB+ki&p>cM&_F>Jx415v+|;-<)$)OmSy@;(mTdij1ut=jC({cS}ZV z%A*xBCVtY;Eqvqvs3}YR#lTCa#$J$Z^ETUI-nFRf2B_rt^7>96=6!-P527B7q$lGK z>%0YZ->NT&?+vD3{rR^T4Mz^*W|Mk6WmSsqOlK-wvy0_v&$p_;zF#p-79Rk11~q&w z3Ou^8rh=dQ3W-Dur8CmGxh&Erd9TQDqP1)@Mx;}?m4!QSm;csTc24%?`aeN#XH22_Ysc#r?1$yqRMk>{Z-qj^?UOm zE=d#+iu%lxpMuV2EP#v&M;K%0aIS|hu6UFL) zJq79hGscnsq4p%bHth7@07}kz$Gj+Ef+r~kb0(tQ$zvO-#$78CU)ZtjKsc{eCzs`W zhh3CSIw72?%?ST*x>RGV&K-pgxeVxgk*^Ctan-G15$fal3}OEO0Ce9E(P2ESwiMjx z5lojk{HxF=GcND_rE7N&m^YJ6&mz*jbZ4ZNv5K6l_51I4T^5STXWEkzo%M~1 z_bg39`hR1|Aoh%MxcjA4&tArDh7S8D;uzOz-XB9=ZS0k};JiOOHd=s%Bey&wa-_$? zqO>B_jUVj4Vc|FWy{7EuPG_}1Q$K?5Xu^A^e@c$dH zCDn0DQvKS5Np*lbbxS~CFL0VK+nbjuIph1jd;2jRns~D*_m82hWrR}~aP}N4o2^S0 zvJlZ_sQs+26-#GmpC%o>D1G?tBf0h09dY4*dIMt31ee-0e~}=H2z#Hvw(aJ0(16GK zp6f_*;jFK9cGEn2HVMdz8{P>MI5CY)VcA#5^rqz7&KiuNViI*qx)v)H!(R+5O7pe%|V5sfAbA+nm2!(65FH{Z>$c>f_F9*<`08c)uT3l}m3 zukQamTfZ=t0uSca4REJZ4^m3xsOa_=otPB*uBcX3X!@_MawFHUhHoerK_WKi7?Rm` zn?J3Q0B>&?uh1pMPFhd-SzEqoWMJ&icjZ|j8O2YdmnhZEn16h4SVpeEd3m9pAV`UM z4_oR-3h7Yxplo7AYm+mW=Rj$l-$FF%hOy2$xw?oGi zwMOi%XV00KmlqKNC;7n}Uwsr)I&l;iiRbmTZz(8nfBUw+3>zD8bl0+MEYriEj^88S z8R}Jt7Qg1)bK;~egk&#M&6I~!HEmWsS(we`^_QWTUpdMpEUi{Ph>v9=G!{`QaHP~i z1r#`LN=TtSG&{x9TrpX_OjmFob94h;zU`graJiEC%rR$K)T~Gcko0Ue#HUi^|$~$EZC1S%YFL? zI|$^5ckuf+Pn&e|8L{(|?q#O2`CA3nh(L6gqPSgBd*{x_D|JiQcB2#&I%kH4oB3M> z>15&h6ISLO^EIMb2(2GK+tA19Kx29xiJm=4qoL5)4zBMH9{^HUfgdLE=QK%>3Wh7^ za+oZ3?)INZ(9!RuM9b$1>*oH`$gg`mNRHe>nC9Uc7y;N zuY`rt!=pJGiHwWd0c)j_y-B-1Mc{1)HY=>Y=$>LI0$TRBrE!g&0kx&4A~r5d)mM>g zc-m&jmsup}vCI(^Mxk?+D^HB}%ZT70K(lczWO|Mo=~MBi$5sjyK!An}prs&wgedgN zrSWyMdeG?mE7qRsLv^`|a-liN<78a~JA#uyR@KvxICHASrS;|SQ9%Dk9rC-crVc*C z_aK<-wOwQUi_R8SHmP2q^4cNlvp4Yh$?GJca6jWut2vO>jK_fu2rvh&3HFDwtl~Z zbnfkrSB@>+^Y+rXK99NGc_5`wA98@cdWNk1r+N(oH1q zASL;~KA8Ly*jiKZWe>=ll2|NrR~;d<^DvEKnq1W-DIs>@;3ZN(BN)$#22*U*Y|}cH zYS-{A`2AdZ%pv@tH&oTLj<2s7G85LZIYG-VnTJ%XkIn149;RXkga0y|yb3n`p>R!(>$k1m3?H1=#`mb0A_{n{dR>_+4JDrXbbi;ECBef< zQZF5n{?tmsatrJK`nUwm9{k)-l*mQ}fymGZBN=%SFIe;s$xlj5VC!@a0Dnx>?oJn$ zTnIG&3_U^jaH4YNcf2Hw9Seh*{|eN57o>nD%_XXaETJ&k=oP^x4_FI=rYL za4?ANdds=?hpD23g5|rTPq8Jy^}sTwn%@U@o@yS=7KQKc5NV4p-UqSsV&pGxk|~;O z?K+wEus;zg^0YZH3rEaF6qLndzotC*abNLVt-9i*q~%gwsr5~AC9eyM@_h~Ha-A8p z>D>xe__H@%=lc&^lduvpu4e55OUlz^r{*U;$AAn3ZfuRIK~F#?EgENaBbqP3!RB{mxfcAg1))I)qy(>5Z)!Z} zs8N4eYd=ZqtU5s*CTAYeQIZuMo!k<%60C+MJJx1>{gRR^v-G^>fdsajgC)p(PY-$K z4AMw$3T`6U@NTvtMRw{$LJ24_0!&{x95RmxQiVeRfa!a=yz=}q^&f)z=>W+;#27B6 z@*f-h5`xo)U-@+AiS#F(PlRSg#`bUjQaQfJH`mwPCI9;~-S~o;z>X65HrY=$<00JM z_$_u=X_Flic*NLSOoKkSvNv~6d(~s%kPc;NzZTn_xfR}Zw0%t&Fu5vE@pV)p{Y{o5 zrF)J0%;(7|XNPngn89MTk_c`OdSZP?SC-|1+1%|L=;{Ff+KT)W2zi24zjv`N(l(iG zg)^pQ8`Ga-pvnd-75J-q83~G$in+VM+j@pxU=VZj8bsbyv!}yKPAAIp4iy*%Aa}i{ zJq7)Iu~Nf1U({-b#f#rei26&%8fLx^DDvA=Mfl)Zk6g zD}lHcdEA~EtD&+5B?{q2wxC|TqRK#oBsTH1tD!(W+LIPP4re?t1HdTdq0x(atz&vX zx+q@Q`vBk)Uri$iP@jjZ(!SnL>dd{yAC>(MnpEpyxfdm88$Dnaa$T6#X!kX9$0@3e zI}rqIjN815Mk4?*+nad^{p3zVy>t?wT#onL)WwO<`ea&^)*l;uc^}X-b8EyeTJNbI zT^d(O1(RTLodO5 z3Rk*vo%@#Wf)4A5`dB}NXJ@rA)4wvwH6yhQhUy97^(VRDwF@()c6u&Ieb<8TIj#@w zJdukzc?Irx`@ep8bRK92z}h+0$NI?YI{^smlw1&6nZL!+TWDT5HH28!CK8OlFh}t_ zqu*rifA_aDtjz0{*= z>x+_m5DUZ=1p)NO-$8y=2vY(+R@3V^q>}$Cs$}Am&uHKr8g{m$x>DU(GvQX+baK+w zBGS`tgvIhNe$X!3+>n|y8fPebJ$>Orh)qRQwt1eeP&l3U55?8xy>Kc?8f8P-n?P?9 zNjFNGSC1XV3H*gl9w-=TW0GP?87AQ;|3LRO=7njq3C%o|N|P-@c1y@v`opy${@ptp zrQ3N{<&3aCyG}8~UqyWczURfeOnm&lD!Czvx} z8TaCeTZ7j{|N0Pj4a62-MC(mFhwE)3Y9MT6dmuozKkvW~D@tA5m^`t0Q$nINsZk1| zw43*0Ok++`^jLkqmSNv03;zz=kK9_ZI}yJfvKwpg?7NO+Euyt8b>(C!i8bPosyKTM zYc{i1$BF*-v)g83<|lV!WaYAT;WoO-I+unyvmCYj(r6aGPG${_+bZCzdiD?G`(5KV z?W~sNS3_`Q&O8qG=-*Rjb8n+Psfx0~be9S8Ty!b<^gqF@z4g^C&bf{Ss1=nWW&7uf z!t@G{^8e%#rPF5-JFbwiE>-B0ct*=fOj}Ymc`-U?1{5JLhXarPcv78Iqp8yv1Li%Z z3x#)|kDDcl(Z0^Z^UKFBV*b^%IRxm=_m`Ovx0UB5(>gEgdzt{)9m}l-Gd{^sk@(+_ z01xjJG0zE$(N)(eB(w;VaE{EyPWKBjibf0D(vWYcT){kJx+c>Z?Ef8#x|D!_4REC>HE#RG5R>{|OoNv1u z2BX)L&dAys$V%fqfqCL@+P-ZyvScO2 zpJUb3wQ9d{aFAl7z2k7ibBzeo!nPM`EN3@d>KDITs;aH?iQ|v>cR*NPpoj(_AZYD7 z$`L>z1rWQUHxVpsT}ZEE*CNydIpWJ$c_Y{xq!<4 zjjBRiKHOz(Cd=BNmLtggB|p8;w7aecJozrYyNQA+*?aa3^!iB*lxaTwHpUqJR;z1d zJNV2g*MrjYW{x7V$;vyHI;{V_Lva8*Dv*tMtaknn968It%(qTpqki5^>N$yfX5i`b z>BX3Ej9+)~`JY=nm7+xmgQ2!e;oj;meu182b&OBlBs)bXHZ;#h0oil=Lhx+cS03Kg zvEeOI?>uL|GvIL#4XVz6NvVz=tc;T%9Wwgf+M)eZNs6;1`aMMFRl0e5@DggI4yWDN z(Xa1NNT%&^=K^_Q-q-#ixhuQ)qlbW2V6 +yI%4T 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 z z__@}Q7W6DjzoqPB-E)=l@l4GP!O>vLdc}Z=m$@-NVP$+j7fYmPaC}F{r3k@iVP07@ z@i)sI>y406G<*!gf=@W9#6Pds&xZZ5OsB9XqU_rxmT~ss!|d~7|E|DNQ9p}|sqstM zjVE~p&F5S`Ym3bo<13OId5G4Jzmv>;w!il;va|YbL&2|ETAh`<1Ep2{rmwCwy7;Jf z9cv$dr3fYzid-w7#8UJc+I1N)YCmO6OoN>H{+VJFmwj{Q@T+O#L)!H8UNP3U+ zJ%;JbS(D3xZ4!YV<>K`m$>kB^CD32~3vNjpvXIn$RCmvkZY{WYgXoqKv9wG_WAkv%Fj9gBqf(;+? zp+dPCfZ5Yq`@?#_vw06-Y_pRPNh1sA2J`Se$yH}b^oGlXvtecI zW?}7F>gmuw#+}A*tikI>UMC;b1tE9-)13{)&D6m@@VMYn=)%w&yqDI&QEB6;YXxeW zk85E#ZV4=EPV9m=oR$nW;&KJo^RVnYMu@JaiiY>4q;YsK+%#jqM8$rzoO*dFJD7y{ znU|e{7^)?qr_RpeU;~S!6-}FvAKmLD9DqVx>sV;%FqXmXeC&{qKAD6%_F1pufQBL- zE*uyy^{mS@=D1_PIR`qeOfIr{3qL(Z>Jw=B0B6y|S62zHOWp%!9D;6K9?9zW27AIA zka!(Z?eNv3Q304u$kZyGM~Zr41`1|Fi0WAt1OMJWv2O~HBleFPuV()m3U3MwZ&Krg z94rqJ9(HdXOEqug=cNM+y3cCV?1`?Uz;khX;yz)9pP$v9+@pDH^)|;>|7Y&kNdD7G zJJs$DyDjFvia$TNYXu3bEbV#Op}QB(63qQ0z)UK{j1+$)eInq0 z;0o+Wf)RbSz!SigS`aMX9jFw^3ClWeUVrkJwmG&H(U6*QHicOq&j(AG^W_$S4i0C0 zhS9|-FSU-+LHipSZ3UnuS|CnK3tulyD1X^6Au#js;JnOt-wqYBKXyVBWTYoVqak>7J1 zd#vECr4cf5+)imv>OZ^af7Q zaG+ONJ+eGzq#6fVYr}Vcafv&PT89;eFRU1blLuDF{DR-2Iermx5Qb9YC6By+U87c` zL)uBmQNM{|BcDyET{ll8=we0$Mh$k*ZLNwumRb3on!geOG?(G!U;pjcKsey23_8k8 zaoP!kt`29|Qe{NEGdT9zK(Rc4fY%2rkP4vNPcufA>)abp#Vgh-S`f&dd~1u-=DNnl z#yzXlqUTLbNi(miyRhfLkXKD@tZYC>Rz_K_SBex4vXP208gU|7*50y_)w{tA+HXaK z;P3*)^u^Bkoiqo!z2BW5VvMuQ7vr098L*3(Vik7aA`ff6 z*28w;*@%3=_uZKb`)uOshHMc)$I~pgv*8Jk{5dMg_3v>Mf}GJN7PyZE&;7A;TGZCr zB0;w;QIHSRbt1#ePG>XA#V~ct=7pu}{2o>612>H{8Fgr;X`Q&&^)8-a3e;;fvWrXe z7xnt$D6^~)-tR-UUE->i+dvL z0d8Ba`{DOlq_z9LgPKziqY3nZo>kGjgj6UqV-#4+W0(!Yx$94w*t;+`N?0{`qB>p>o@Mr)swB zf_BXYDJXB#6()^|L{rvDVh8!^8M(P<$>0HPp2`w4eP$h{^QXJ{{+*N~ zrod)$*hcyPd|>Scq<(9MeLW(WPg=HRd=oM^N>qI>a&7S1V7g3G+P3U~Zl*@Nn9hEp zb7oVq1nri;HEX0C<0_?o-aF@5$yy7i`wLrVjn=o_Y|9pf-s;|_y5b;({rr~wifHm- zMj>sL%8TaTJsiNBl`%rx4N1;=VEwHRkGfbh93%^)Llqb~4D!}R+^EE8ty@(3N{;Uf zd3;D6Ttj|Vr;sV0Un!{ha7uB%KaTmN?~9MaD0E{J%P#2Z5}Nc_`I-2fTbbsF6ZeP2 zS1vr!*!6qWv_@)8ZJY3DTVYDS5h3oSr-rG{ zQzYlSG%s)JN_Gy5Z4v03{70{K6p~gV%Z9`T@n5w+nZgCu51Vy*o*ueNj*9cDwiUE> zQ(ZPJVRTlt6;pcN^ZttT9j_wJ=-W@Pq#?eXa#f?FUEBG`4Lk2%xx?3a6tw@+^Bv>; z+$+_5wFPdNebs6f z>z!%Pu4o36(l{3!9(^A1WK{NBeKZ*!p)Mi*AZ~BBy?7e&P3BYYjL4gS zl=Fc6&x&c)Jgg3`MH}21Aq93Lr4kS~#^@h!kzLH-6>VmbcN{mPA1~S!Q@V&HIVwL_ znd|n~SZK()Ustaux8MD`yE4t3AbDKp+yBP%!IMN6mKC?F{7*Mi&MvFBk3P7W z51Zqp!>Z0(dktjaSc?8>e%i3WY{V0G`ELrUTFpJ4bJhMW8Nm%bxi(}|#=Dn?MV}N` zaqd=OcGw%**8=!vlB(^mG}O?~hKF!;|EQkieOB&VX^$D@dNubP1t+`rK#BH#j!In2 zeS>_}Y~#NQ$xb?S{s^H&sNNIr4SWe`l-*4hlx7<{XPB*#o$@R4$Nhcc z-Zi_;6P?lVE#y6)pnV#(M{5W5=8}N(d&7#52i8VMu6d0OU)v=NnyYEpjhOT9kZqv) zSc4VZh6Ee}*9B(=+tft9N4Eu%LI?(}n7!OB;yNFP_N6Y0oZ-f*c;H zkYQ5bT(Yc4Uv*EAA=FVwUntP=Q9WmS<;(YC;u-%^@L6SR=zaOLEuZZioTW9wgT;Cc zOqzc!1bW#X)AziaC3CXeSrLgy!;xQUKY?1UXm_&ZBOgTEEW>l#lC8e2hS}1}UQmsB zC|m^)w0wBq@dmQ7r%*a>GlVbabl%$rvSkpnxng={;uV+5SX!Ea26vY{%60q+Y@#EWzs6LN)3lIZ2AiT+_ ztlX@|wIIFMF7aekHmE|w{a?EM>mEtlB14n$#@2V#@U{7<9b!&&gspRG z3G}dk%m|vrLzeD|_-EmDjeOfIH$2~vRgL0&Bp;*BlX~`;ZVQ$n=~98zw_qZ#_zAUP2M`^a*RgZja*J(GIdNNBIoJw0M1CtIR_Wxcm-+FrETFPPb% zHeTv_li%c0)oGE(yJ18n7Q#s3df>3%^ceE>6n1Dkdp^U2Q{YDQ&`=>S(kX(s+M zpSaZ!gg{HvM5^I-#oy00+K-fOxkXCAVq#Z1muorq5nv(4)+HOF$BAGDMAn{YAG7xB zr@#NM$b8GUPn^NAyg;+siT!o^jL|b96PYdHNMw1pQ?l}VAuH6 z`OCF(a-(Q>H~uBS*pDo!h4zaN~qcsI@Ka4&kM;J>;B-`WZwSa4Z76ejc_TwFm0>(yf)#; za&o|dN7aCXwdknoU>-4-;ud(e5>Q34WIXbZ7X~~z(ig8?%hjqKbd(9&4+cxZqbmnB zZ{~jCFMV~m0{@i8YYLO1Yl|K4@x4)8@d0r&_vw3+>g>o~{*{m4f3!7g6Q8HRk1kJC zMg5e2QPyxWP-1X!vUQ3r|3r!jK6fBLS6G{+i94N{`2B)pFBMd9C;x=Q%`-|AU-LKk z=Zzqdb> zQANFfuUa$eK1Lt4h*zr;&}PF%@#thBNvXG;@g81=_&2? zzQ<5|PxtZ4ct`g+@3vXO;JR2uhKY5%Asa0@+nIJ~N;R8MSadWM7i;zH@{fPOkKa4b zl0I|cMByFS6@K8gA3^#mN(Itfz^z6zq3$-SudbjNU15IiC;woh`5jun(>GgIfmFDT z^>ARXiv`o2Tj!i0jD}!d;-zW%(}gBlf7Cf)LJL1x(!OPmxC( z{d70p1n*fj#~kV~Ju8zSUIvT)wpZ~>5#P>OnBAV$D`MQVO%E@Vz(tWR6%kO;XDn!+y0h73 zdX>j&F*zOJ!btw(T2vcV3B+4NbPD6A)#s^N{3zfvZvK+`{{w_9D4LPA7>W9Ef9`XX z^`kg|LR!i@(gPMy^s1nsfoU9IC17!%AB&pheB^;qBQ9{RZ`5(;$|348A?)>yh&%;{ z92+jWYPtFyw{JpM)UH9O!Ej2%)dg(ila4Ppg6*(^vx^p=WG(%MAypt$>SNUZ4Tp@Y zDW!eEgcTD{dmVQ;>b^9kHhv4!`7%5dDxKCm@e5V>FF@p6rq@^t;Hn_&oWZoX=_Z$1 zH%$2gY216WQV*KX&R(g0I?ZDyFlB6cV8>|Lh?b%9m67xO+4tGn&%~AEH9XH$B?dql zp-Q4S9+2&Gbyfe9c*Lw-XlP;4la@PLW2?KU{gD6ZlZeQ&bcrKs|L~}E`$ddtWnSZR z^2Lmtjnbxy?z$C{QAZM&KNA|1y?S)eU4Jmz$)ak>l1QO@#er(iIEAl}F%JKwdF-cbvZ-L4Wb3M^PhEI+Cp4HIr5Nmi_r18;{0~cED z5B1S^J*mE0%G{HrlU#QHm!9mhHW4Mp6M7?JzWK~e<^JQ|uqd|&Zq(2~eyH7Tq#{hoQ`GmXrzzIxY-PkI-;hFxP(#4-PVBdx6GQe(=yxJbsG5Bi#gUn%Ch!ZDCv7 zC?^q2OBVlsr6OCnu2s}i38)x5tz)?Tw`(QR-;+tYcE;vHf}$YC>6sz zv(gaqL#8;)n6|ILQJp2Tvb`F;iO7hleS)uze&E`g?HsKTc`SO zC=_Y#Nt5aMIKl=mjS;{>+l!{+eYEDSoXh7EY=Zxwa#cSn9Xs%+2TSP-Nx0XN-60M{ zap<>=nKE4wpqfJgoQyc`QE|tjgD6O*{KXk8JV?zKsy*Di7jm~Zy#t=6n8K+E?S8~wVOO8(Ke@|ncFJ+4I=0(5 zjOc$6jgXbdw8Il~mG#^A7e{H6F13>l^My?V_xT1gv74ho!dH(#e1%%7p-gE!3|mHe{->^YJJyUG~oloUcKXXxtp< zp8L+0XZ}f*kHjiSHFOM#V1R;pEN0B4?iikw&N#d70YRhV3+z~p*m;jsr3 zFt76=o-d_ZCXj|!9Xgcwn6TBtdeUALX&1UoV2x#{Ha+B~xOb_U?hc^7wkw`!ueRxN zi`duTbsQhI<<6eNhW(k5&;kx-wA9d(1Mta8l5g3^bgaW-(VX#jmfOcod}xNu)2Ub% zG@kXQXEm|<3u9A_vWjwH&by99wK=-qDB1gp3~5Tl3C9?!oER?KEg89Ci%C^&+PtNIqLiU8yP_k+o|V zS!ru#Za7Cy*w8kqyv4>P#jzv^be=0@=x+~gAD-=v5WpF#q;IRpVrxv8ri!=2_M@g_`qQXqS$BxV?@waT-FwIuS@wGjt{vw|u8FRY~ zX1mij$Ky&#n!h%A&J?kY4tWT~(NmwY_D;l6FeQI2zsaCdP`H3iO7v=vK3jpMHT2Gj z8M>0#!Ic$SLBcN{_cS}}E$K6TX+6EcuA-=3K2y$2KbCc9uHHV~nh_bd)jiP>h09Hu6bQ@=ho@I5om#18;bce5Ow zPJ>T6b^V&51aS8qu z-hOqyy+7Y)z4)VO_Hn>VfQq0Pr4$WH%Mv;p@Dz*u4~YVRzZxeT&DABt(boLb_80LF69VTX|MUMh^`-%vCfU~%3SD``G+LBxcwPN zxT@B0D{t*mhcn|v0TL`vyIgCx|A3a9OO?@XU{`myFS2NO{{+{sc#kM?U~-s03UnX2 zy&>P1eI=G#>dK@F+;ucjzxT6jsQfopvETPT=`< z_mn7i^TP56o2l=#sx1s>P1}5ih{a(x4*w~OW~Caf*TyrQi;5ffKi`&LVg5wut#7wu zx4g%+jA{5 z#HjVs4OT(J8-)fy4s<;pDzIv~eVKsG88Q*@TsEeBX)k(*2mKW16*JNZ*Wg;~F(VhC zTIS(-@8II1ac(P58AfAm@`%8`#i0bxbAago5_A0ma$p@*9{E=4nZ1Hmb2yxAh8h^C zv$=GCa$|m>D@$kb@C5LNAcKEbahGjjRfqKOEgC4>U4L09?EDH$|Syr@fV5@>KF^G#!$8QF85F5aI@J} z4fBLngq*PJyd^qNKitE2mabfSVoOdg@L`27MB2jQFS96o<<|1cYd&|Y@<>wZp*0JD z@sXFkf1Z=zFX+w&$bMD-Mp#k!C^8v!u4%#9FB75qP|=dcAth!e#RnG~YPyuA6*gX;!IYTz`6BZA0xJ%F{_P^?y#}5(LcG<9 zH{vlspt&o>`9C<-cwEO$^Tbo4!t5(m&gb z;j;pcjgR7_T(z{u zGD+pUV|@&}$i_tyVx?A9&r%pG5?M!?*X3!ZiJc-8~O??fX*x(j}MbGuI-E zLz(ww0@>4fLe;Xr8+9bqdwABn%R%@|sv|@=pe>e~(6Am+4BvtSl! z=IWbU72WBy(FrX(S+=Sg=rp#QYPdPN8xg<~pGYQ2x;3z=X+g~XXKWpl$^@cc4NKt) zU_#huTxW2$U8mS`$!YgX+4al&8dvZ5%IiI;62RjUMFK{<<1ukX)0ujN>ifvhDC@=8 z&Cl`|{N*#mVr32ZJEXeI?3C)feQ5=N(530EmTp%`?0{*?pc&W9@tylp%I%!8sm?K{_bRWsuq#3kpuath2aJq;!d3-Pq*`epzylA&$(p z;g;O|5Q9}@5VJgZo!f9pPFjlqV5_-+P@!zXqG8SdS!wzG+)7_hktVa;2{}a(QcmJ9 zrN??irA1P7!Xkq;-RUQb)nq15x60{mnx(08|BIoVA`Qb=dxX%or|0DQ133PtIjv}T zu^Y4KJ46@XYXTgAJt3^aZN#vC?u@NC(z-_%kfTNB7{qsN4K42eh%_gcwqP9u2J|2~ zRc3tkZ*kMi7Dwl}gj^p{ zme*L_RP!AlK0-Uqy(3jNS&xnbzF!w>#2n~*c?WLSTWZ96I_()W@E9_ zjq7T`gSVahPGc+A*0RYO2r|)0GfqaWo=z&K!!>n?wWXv`@0HoP2;hDWv+joFE+vcbs3a7*d){T;!ZS+m}nBl7#0TyUvczBB|;5> zj~}=7me!)H;y8;o?FlxBFl#rdxQf2^H9N%1IZ%=iM=OacE#UJ7otPS8KJP4}b|ql* ziAg}1|D*#J+uE zK95{zfBoGjfDd3zOi^S*uPGC63++x$&WRPk?sCGtF5LQGT(X_FH4L|LkGo@6n)|!C z01q*XD%Un{NKw^uhz(%YuhP7*8OfVTuks)wyE0VBQDW|^Vk}Q36ol+?}2cP?kf6a&EI~*HW71{Zx9?O4dd98hnn) zUAfC?cUha*+Q3T@cl3*DY9K6OkM1}jK|>E;#DRn4uM+c|cW{5Ex}Vk#1S3akt6wZ4 zaUYGNejF_=goy1h%D3wfBFMY5A+S01lc(AP{b6;SA30uKwhAUlJ_`~Eubo8l^dk@A}$536Yt{0YNp*S3c_zr|*XrF<3d(g+R7bB{d zI`0-dG`)K~VKh;KQB8(}%M}@HZx>{PnyV;yI-sqJe>HICf?nxxZJ(gK(a}ov=;`*s&JOa zmssNnC(RNmp_Kq`vlkk*Q#gc>a!ML(c(b!%i8WGn9oSQsv1?CUe*j!rD;4q=EF{{S zyrVHp`xRO&WR?5vn-i3Prz2GrHFsoFr`KGnKYKLzku}5(fV@{EVxi9s%V>7}#Y-WO zI;Ad+5T@O}g9Q|!l`a+ba~PCPoNU>&@6xHxQPEWxO@9&dacSHm?%S<}?KuQ_;tE_Vw15J1IMRk%VxN=yGb#Ea8^TXsH??Ji_ZGm>+uZ*jfRc|rM4kcveH5`U*;{+FfCfFjLwH@+sbwC z@aqcdeqo2eU+{b#tMMMxP=2)_^0hU9ihJJiW%xAbQaV*ZBp7-!S6pv1%W+)xV9np@GthuTZ26tIuF>^Xuv{-39;(}V! z{FgL0j-O2!IMib>l!Y6mVP{vaQq+EmMn1L&M{u@3Zot?%1(d*Bna|or?-xCuJTX$E zQO)dK-k#m0L+7w=?LWJ!p{tFfW0_);@~d#V!&Eh;EekE#_e%%3YPwr2cp}T>uRXE=-gEO_Ci?Uj@<~1l9 zMUS8H&@5||2*qRXp-D&~*N(>YM8SlBFxb}kx_UwH@c<1T4+CIVfJbW%@%ectXuk)| zaicb|yI4qZci~xyY!XzEXdT3-q;MCI7=XSGX4u#1+E%M)lKpg|l?c}NEQGx27{0eG ztV2eG(XAzNKglt`Ve|D1%f5;`&u(g9fhw9M-1yk-SP&vup>2jtX`6U_To(u2GLagt z_zXuX)dfC|e#EAhF4Y8aSChNfu4Zb$@yQK-i|Qyo?v!f0__JJT6I`xh7)pr&Q!&xr z{kV>DJN&Z9mN4HuXR>JNjG_0_0DcZRN{|_~Xk>a<$_A^6AJqU$_`xecT6QoqEEMTi zUD_{d)j6znPLEMe(~=Tlt^_8yV$@;zQidKL~9e9HkF8SweoI zB=k(6{ixB5#V0L(mo9&3$oII*IfS~)fg1*=(4iCYA?1~_2>jUVxZSyWV8ea_GM>~# zl)TFkmQC^_`1GJQW#rT`noC~X&UW3<$ub*9d*f29DU&yn{?Gj~bkFtQ`{j+JyjT7% z{cVH4#{mHFw+;Tb!R}i4_c-|527ix(zrBM0nO*@$a$zaysFB0!_HGa9-Zs!Ky7lzs FzX72_jZgpp diff --git a/projects/demo-showcase/src/assets/ngx-sequence-viewer-dark.png b/projects/demo-showcase/src/assets/ngx-sequence-viewer-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b5d00c38c11d2c2c8357ec4e9f32a5678f8af12f GIT binary patch literal 38383 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

u!HKX7_f>Y&WW6ONElg;uonbU6D<=%c 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 OEXMlgdKevd_&)#z{8oej literal 0 HcmV?d00001 diff --git a/projects/demo-showcase/src/assets/ngx-sequence-viewer-light.png b/projects/demo-showcase/src/assets/ngx-sequence-viewer-light.png new file mode 100644 index 0000000000000000000000000000000000000000..abf0f94fd2962205a9bba964635dc09cc572c30d GIT binary patch literal 37367 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 literal 0 HcmV?d00001 diff --git a/projects/demo-showcase/src/assets/ngx-structure-viewer-light.png b/projects/demo-showcase/src/assets/ngx-structure-viewer-light.png new file mode 100644 index 0000000000000000000000000000000000000000..ea80712755060ec223997b74eecd7800853c9504 GIT binary patch literal 61325 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 diff --git a/projects/demo-showcase/src/assets/structure-viewer.png b/projects/demo-showcase/src/assets/structure-viewer.png deleted file mode 100644 index d72673db36db96d1f3e84ee203193b46cd74dd30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406693 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�DThWUYzZJHn<6Jd)&Q4l?dIAP%lXpccl}Itf^}# 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 v_k%45&60UMPI02a}@* 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 HGVFf<{elgn diff --git a/projects/demo-showcase/src/styles.scss b/projects/demo-showcase/src/styles.scss index 60f7660..a3374da 100644 --- a/projects/demo-showcase/src/styles.scss +++ b/projects/demo-showcase/src/styles.scss @@ -35,6 +35,24 @@ // 7. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss` @import "bootstrap/scss/utilities/api"; +@include color-mode(dark) { + .dark-only { + display: initial; + } + .light-only { + display: none; + } +} + +@include color-mode(light) { + .dark-only { + display: none; + } + .light-only { + display: initial; + } +} + // 8. Add additional custom code here @import "bootstrap-icons"; @import "./styles/background"; diff --git a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss index 8a4ea1b..c6054bc 100644 --- a/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss +++ b/projects/ngx-sequence-viewer/src/lib/ngx-sequence-viewer.component.scss @@ -145,6 +145,9 @@ .position:last-child .placeholder.index { // Show only last index display: block; + // Unset opacity + opacity: unset; + background: inherit; } } diff --git a/projects/ngx-structure-viewer/src/lib/colors.spec.ts b/projects/ngx-structure-viewer/src/lib/colors.spec.ts deleted file mode 100644 index e69de29..0000000 diff --git a/projects/ngx-structure-viewer/src/lib/colors.ts b/projects/ngx-structure-viewer/src/lib/colors.ts deleted file mode 100644 index 090e9eb..0000000 --- a/projects/ngx-structure-viewer/src/lib/colors.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Color } from 'molstar/lib/mol-util/color'; - -export function fromHexString(hex: string): [Color, number] { - // Declare hue string - let hue: string; - // Remove starting hashtag - hex = hex.replace(/^#/, ''); - // Split string in hex, alpha - [hue, hex] = [hex.slice(6, 8), hex.slice(0, 6)]; - // Define color - const color = Color.fromHexStyle('#' + hex); - // Define alpha component - const alpha = Number('0x' + (hue || 'ff')) / 255; - // Define color, alpha - return [color, 1.0 - alpha]; -} \ No newline at end of file diff --git a/projects/ngx-structure-viewer/src/lib/molstar.ts b/projects/ngx-structure-viewer/src/lib/molstar.ts index cd05d83..3081d31 100644 --- a/projects/ngx-structure-viewer/src/lib/molstar.ts +++ b/projects/ngx-structure-viewer/src/lib/molstar.ts @@ -16,11 +16,13 @@ export { Asset } from 'molstar/lib/mol-util/assets'; export const OverpaintStructureRepresentation3DFromBundle = StateTransforms.Representation.OverpaintStructureRepresentation3DFromBundle; -export function overpaintToBundle(filteredBundle: Overpaint) { - return Overpaint.toBundle(filteredBundle); -} +export const TransparencyStructureRepresentation3DFromBundle = StateTransforms.Representation.TransparencyStructureRepresentation3DFromBundle; + +export const overpaintToBundle = Overpaint.toBundle; + +export type BundleLayer = Overpaint.BundleLayer & { alpha: number }; -export function colorFromHex(hex: string): [Color, number] { +export function colorFromHexString(hex: string): [Color, number] { // Declare hue string let hue: string; // Remove starting hashtag @@ -56,7 +58,7 @@ export function getLocusFromSet(set: string[], structure: Structure): StructureE MolScriptBuilder.set(...set), // Define set of residue identifiers (author sequence identifiers) MolScriptBuilder.core.str.concat([ - MolScriptBuilder.ammp('auth_asym_id'), ',', + MolScriptBuilder.ammp('auth_asym_id'), MolScriptBuilder.ammp('auth_seq_id'), MolScriptBuilder.ammp('pdbx_PDB_ins_code'), ]), diff --git a/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts b/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts index 68f430b..4a1f85e 100644 --- a/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts +++ b/projects/ngx-structure-viewer/src/lib/ngx-structure-viewer.component.ts @@ -14,7 +14,7 @@ import { StructureService } from './services/structure.service'; import { SettingsService } from './services/settings.service'; import { MolstarService } from './services/molstar.service'; import { PluginService } from './services/plugin.service'; -import { map, shareReplay } from 'rxjs'; +import { combineLatestWith, map, shareReplay, startWith } from 'rxjs'; // import { Interaction } from './interfaces/interaction'; // import { Settings } from './interfaces/settings'; // import { Source } from './interfaces/source'; @@ -87,8 +87,12 @@ export class NgxStructureViewerComponent implements AfterViewInit, OnChanges { // Allow acces to background color in background public background$ = this.settingsService.settings$.pipe( + // Wait for pluing to be loaded + combineLatestWith(this.pluginService.plugin$), // Extract background color - map((settings) => settings['background-color']), + map(([settings]) => settings['background-color']), + // Start with transparent background + startWith('transparent'), // Cache result shareReplay(1), ); @@ -120,7 +124,8 @@ export class NgxStructureViewerComponent implements AfterViewInit, OnChanges { } // Handle loci changes if (changes['loci']) { - // TODO + // Emit loci + this.representationService.loci$.next(this.loci || []); } } diff --git a/projects/ngx-structure-viewer/src/lib/services/representation.service.ts b/projects/ngx-structure-viewer/src/lib/services/representation.service.ts index 46d0b13..6c2bb86 100644 --- a/projects/ngx-structure-viewer/src/lib/services/representation.service.ts +++ b/projects/ngx-structure-viewer/src/lib/services/representation.service.ts @@ -1,33 +1,22 @@ -import { Observable, ReplaySubject, Subscription, combineLatestWith, filter, from, map, shareReplay, switchMap, withLatestFrom } from 'rxjs'; -import { Structure } from 'molstar/lib/mol-model/structure'; +import { BehaviorSubject, Observable, ReplaySubject, Subscription, combineLatestWith, filter, from, map, shareReplay, switchMap, withLatestFrom } from 'rxjs'; import { Injectable, OnDestroy } from '@angular/core'; -// Molstar dependencies -// import { Structure, StructureElement, StructureProperties as SP, StructureSelection } from 'molstar/lib/mol-model/structure'; -// import { Structure, StructureElement } from 'molstar/lib/mol-model/structure'; -// import { StateTransforms } from 'molstar/lib/mol-plugin-state/transforms'; -// import { Overpaint } from 'molstar/lib/mol-theme/overpaint'; -// import { Vec3 } from 'molstar/lib/mol-math/linear-algebra'; // Custom dependencies // import { Interaction, Interactor } from '../interfaces/interaction'; import { Interaction } from '../interfaces/interaction'; // import { CreateMeshProvider } from './interactions.provider'; -import { StructureService } from './structure.service'; +import { StructureService, StructureStateObject } from './structure.service'; import { SettingsService } from './settings.service'; import { MolstarService } from './molstar.service'; import { PluginService } from './plugin.service'; import { Source } from '../interfaces/source'; import { Locus } from '../interfaces/locus'; -import { fromHexString } from '../colors'; -import { Overpaint } from 'molstar/lib/mol-theme/overpaint'; +import { BundleLayer } from '../molstar'; +import { Structure } from 'molstar/lib/mol-model/structure'; @Injectable() export class RepresentationService implements OnDestroy { - readonly loci$ = new ReplaySubject(1); - - public set loci(loci: Locus[]) { - this.loci$.next(loci); - } + readonly loci$ = new BehaviorSubject([]); readonly interactions$ = new ReplaySubject(1); @@ -58,41 +47,30 @@ export class RepresentationService implements OnDestroy { // Get latest source withLatestFrom(source$), // Generate structure - switchMap(([structure, source]) => from((async () => { - // Define reference for current plugin - const plugin = this.pluginService.plugin; - // Create component for the whole structure - const component = await plugin.builders.structure.tryCreateComponentStatic(structure as never, 'protein', { label: source.label }); - // Initialize representation - await plugin.builders.structure.representation.addRepresentation(component!, { type: 'backbone', color: 'uniform' }); - })())), + switchMap(([structure]) => from(this.createRepresentation(structure))), // Cache result shareReplay(1), ); + // Apply settings to represenatation this.representation$ = component$.pipe( // Combine with settings emission combineLatestWith(this.settingsService.settings$), - // Get emitted structure - withLatestFrom(this.structureService.structure$), - // Apply given color to backbone - switchMap(([[, settings], structure]) => from(this.applyBackboneColor(structure as Structure, settings['backbone-color']))), - // TODO Remove this - map(() => void 0), - // // Apply settings to both background and representation - // switchMap(([, settings]) => from((async () => { - // // Get plugin instance - // const plugin = this.pluginService.plugin; - // // Get background color - // const [ color, alpha ] = fromHexString(settings['background-color']); - // // // Update plugin settings - // // plugin.canvas3d?.setProps({ - // // // Set background color - // // renderer: { backgroundColor: color }, - // // // Set background opacity - // // transparentBackground: alpha === 1, - // // }); - // })())), + // Combine with loci emission + combineLatestWith(this.loci$), + // Define color / alpha layers to be applied to structure + map(([[, settings], loci]) => { + // Define locus for backbone color + const backboneLayer = this.locusToBundleLayer({ color: settings['backbone-color'] }); + // Define layers for loci + const lociLayers = loci.map((locus) => this.locusToBundleLayer(locus)); + // Return bundle layers + return [backboneLayer, ...lociLayers]; + }), + // Apply colors to representation + switchMap((bundleLayers) => from(this.colorRepresentation(this.structureService.structure, bundleLayers))), + // Cache results + shareReplay(1), ); @@ -120,6 +98,7 @@ export class RepresentationService implements OnDestroy { // // Cache result // shareReplay(1), // ); + // Subscribe to representation pipeline this._representation = this.representation$.subscribe(); } @@ -129,41 +108,82 @@ export class RepresentationService implements OnDestroy { this._representation.unsubscribe(); } - // TODO - protected async applyBackboneColor(structure: Structure, backboneColor: string): Promise { - // Initialize color layers - const bundleLayers: Overpaint.BundleLayer[] = []; + protected locusToBundleLayer(locus: Partial): BundleLayer { + // Get Mol* lazy loaded dependencies + const Molstar = this.molstarService.molstar; // Define all residue identifiers - const residueIdentifiers = Array.from(this.structureService.i2r.values()); - // Get locus from residue identifiers - const representationLoci = this.molstarService.molstar.getLocusFromSet(residueIdentifiers, structure); + let residueIds = Array.from(this.structureService.i2r.values()); + // Initialize numeric start, end indices + let [locusNumericStart, locusNumericEnd] = [0, residueIds.length]; + // In case chain is defined + if (locus?.chain !== undefined) { + // Get chain start and end indices + [ locusNumericStart, locusNumericEnd ] = this.structureService.c2i.get(locus.chain) || [ locusNumericStart, locusNumericEnd]; + } + // Case both start and end indices are defined + if (locus.chain && (locus?.start !== undefined && locus?.end !== undefined)) { + // Define full locus start + const locusFullStart = locus.chain + locus.start; + const locusFullEnd = locus.chain + locus.end; + // Slice residues by start and end positions + locusNumericStart = Math.max(this.structureService.r2i.get(locusFullStart) || locusNumericStart); + locusNumericEnd = Math.min(this.structureService.r2i.get(locusFullEnd) || locusNumericEnd); + } + // Get residue identifiers + residueIds = residueIds.slice(locusNumericStart, locusNumericEnd + 1); + // Get Mol* locus + const representationLoci = Molstar.getLocusFromSet(residueIds, this.structureService.structure); // Define current Mol* bundle - const bundleLayer = this.molstarService.molstar.getBundleFromLoci(representationLoci); // StructureElement.Bundle.fromLoci(locus); - // Cast color to Mol* color - const [representationColor] = fromHexString(backboneColor); - // Define and store current layer - bundleLayers.push({ bundle: bundleLayer, color: representationColor, clear: true }); + const bundleLayer = Molstar.getBundleFromLoci(representationLoci); // StructureElement.Bundle.fromLoci(locus); + // Cast HEX color to Mol* color + const [representationColor, represenatationAlpha] = Molstar.colorFromHexString(locus?.color || '#ffffffff'); + // Return BundleLayer + return { bundle: bundleLayer, color: representationColor, alpha: represenatationAlpha, clear: false }; + } + + protected async createRepresentation(structure: StructureStateObject): Promise { + // Define plugin instance + const plugin = this.pluginService.plugin; + // Create component for the whole structure + const component = await plugin.builders.structure.tryCreateComponentStatic(structure, 'protein'); + // Initialize representation + await plugin.builders.structure.representation.addRepresentation(component!, { type: 'cartoon', color: 'uniform' }); + } + + protected async colorRepresentation(structure: Structure, layers: BundleLayer[]): Promise { + // Get Mol* lazy loaded dependencies + const Molstar = this.molstarService.molstar; + // Define color layers + const colorLayers = layers.map(({ bundle, color, clear }) => ({ bundle, color, clear })); + const alphaLayers = layers.map(({ bundle, alpha }) => ({ bundle, value: alpha })); + // // Filter bundle of layers + // const colorBundle = Molstar.getFilteredBundle(colorLayers, structure); // Define plugin instance const { plugin } = this.pluginService; // Initialize plugin update const update = plugin.state.data.build(); - // Filter bundle of layers - const filteredBundle = this.molstarService.molstar.getFilteredBundle(bundleLayers, structure); // Loop through structures in plugin for (const structureRef of plugin.managers.structure.hierarchy.current.structures) { // Loop through components in current structure for (const componentRef of structureRef.components) { // Loop through each representation in current component for (const representationRef of componentRef.representations) { - const { OverpaintStructureRepresentation3DFromBundle, overpaintToBundle } = this.molstarService.molstar; - // Apply update on current representation + // Apply color to current representation + update.to(representationRef.cell.transform.ref).apply( + Molstar.OverpaintStructureRepresentation3DFromBundle, + // TODO Fix this + { layers: colorLayers }, + ); + // Apply transparency to current representation update.to(representationRef.cell.transform.ref).apply( - OverpaintStructureRepresentation3DFromBundle, - overpaintToBundle(filteredBundle as never) + Molstar.TransparencyStructureRepresentation3DFromBundle, + { layers: alphaLayers} ); } } } + // Apply update + await update.commit({ canUndo: false, doNotUpdateCurrent: false }); } // protected async getLociRepresentation(structure: Structure, loci: Locus[]): Promise { diff --git a/projects/ngx-structure-viewer/src/lib/services/settings.service.ts b/projects/ngx-structure-viewer/src/lib/services/settings.service.ts index ea2c104..a3bb43f 100644 --- a/projects/ngx-structure-viewer/src/lib/services/settings.service.ts +++ b/projects/ngx-structure-viewer/src/lib/services/settings.service.ts @@ -1,11 +1,9 @@ -import { BehaviorSubject, combineLatest, Subscription } from 'rxjs'; -import { Injectable, OnDestroy } from '@angular/core'; import { Settings } from '../interfaces/settings'; -import { PluginService } from './plugin.service'; -import { fromHexString } from '../colors'; +import { Injectable } from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; @Injectable() -export class SettingsService implements OnDestroy { +export class SettingsService { // Define default settings readonly DEFAULT = { @@ -22,30 +20,4 @@ export class SettingsService implements OnDestroy { return this.settings$.value; } - readonly _settings: Subscription; - - constructor(public pluginService: PluginService) { - // Get plugin emission - const { plugin$ } = this.pluginService; - // Subscribe to settings change and plugin instance - const settings$ = combineLatest([ plugin$, this.settings$ ]); - // Subscribe to settings change - this._settings = settings$.subscribe(([plugin, settings]) => { - // Get background color - const [ color, alpha ] = fromHexString(settings["background-color"]); - // Update plugin settings - plugin.canvas3d?.setProps({ - // Set background color - renderer: { backgroundColor: color }, - // Set background opacity - transparentBackground: alpha === 1, - }); - }); - } - - public ngOnDestroy() { - // Unsubscribe from settings - this._settings.unsubscribe(); - } - } diff --git a/projects/ngx-structure-viewer/src/lib/services/structure.service.ts b/projects/ngx-structure-viewer/src/lib/services/structure.service.ts index 4d1f38b..85fbaaa 100644 --- a/projects/ngx-structure-viewer/src/lib/services/structure.service.ts +++ b/projects/ngx-structure-viewer/src/lib/services/structure.service.ts @@ -8,6 +8,10 @@ import { MolstarService } from './molstar.service'; import { PluginService } from './plugin.service'; import { Source } from '../interfaces/source'; +export type DataStateObject = Exclude>, null>; + +export type StructureStateObject = Awaited>; + @Injectable() export class StructureService { @@ -22,9 +26,21 @@ export class StructureService { public i2r!: Map; + // Define start, end indices for each chain + public c2i!: Map; + // public residues!: Array; - readonly structure$: Observable; + readonly structure$: Observable>>; + + // Inner structure wrapper + protected _structure!: Awaited>; + + // Return structure content + public get structure(): Structure { + // Return structure object + return this._structure.cell?.obj?.data as Structure; + } constructor( // public settingsService: SettingsService, @@ -40,11 +56,13 @@ export class StructureService { // Join source and plugin switchMap(([, source]) => from(this.parseSource(source))), // Case data is defined - filter((data) => data ? true : false), + filter((data): data is DataStateObject => data ? true : false), // Generate trajectory switchMap((data) => from(this.createStructure(data, this.source!))), + // Store structure wrapper + tap((structure) => this._structure = structure), // Store mappings between residue and numeric index - tap((structure) => this.setResidues(structure.cell?.obj?.data as Structure)), + tap(() => this.setResidues(this.structure)), // Cache results shareReplay(1), ); @@ -120,8 +138,7 @@ export class StructureService { return data; } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - protected async createStructure(data: any, source: Source) { + protected async createStructure(data: DataStateObject, source: Source) { // Define plugin instance const plugin = this.pluginService.plugin; // Parse data @@ -138,6 +155,8 @@ export class StructureService { // Initialize map between residue (sequence number, insertion code) to numeric index const r2i = this.r2i = new Map(); const i2r = this.i2r = new Map(); + // Initialize map between chain identifier to start, end indices + const c2i = this.c2i = new Map(); // Loop through each residue Structure.eachAtomicHierarchyElement(structure, ({ residue: (r) => { @@ -148,10 +167,14 @@ export class StructureService { // Define residue name const authAsymId = StructureProperties.chain.auth_asym_id(r); // Define residue unique identifier - const identifier = (authAsymId + ',' + authSeqId + pdbInsCode).trim(); + const identifier = (authAsymId + authSeqId + pdbInsCode).trim(); // Map residue id to its index r2i.set(identifier, index); i2r.set(index, identifier); + // Get chain start, end indices + const [cs, ] = c2i.get(authAsymId) || [index, index]; + // Update chain start, end indices + this.c2i.set(authAsymId, [cs, index]); // Update index index++; } From 08b3435bf3de54961f8e8f29c0a6c2cd1d092c7c Mon Sep 17 00:00:00 2001 From: Damiano Clementel Date: Sat, 27 Jul 2024 19:44:46 +0200 Subject: [PATCH 9/9] Minor update to home page. Introduces home page module. --- projects/demo-showcase/src/app/app.component.ts | 2 ++ .../src/app/page-home/page-home.component.html | 6 +++--- .../demo-showcase/src/app/page-home/page-home.module.ts | 5 ++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/projects/demo-showcase/src/app/app.component.ts b/projects/demo-showcase/src/app/app.component.ts index a2412a9..66979c0 100644 --- a/projects/demo-showcase/src/app/app.component.ts +++ b/projects/demo-showcase/src/app/app.component.ts @@ -5,6 +5,7 @@ import { Component } from '@angular/core'; // Custom dependencies import { ThemeSelectorComponent } from './theme-selector/theme-selector.component'; import { ThemeSelectorService } from './theme-selector/theme-selector.service'; +import { PageHomeModule } from './page-home/page-home.module'; @Component({ @@ -13,6 +14,7 @@ import { ThemeSelectorService } from './theme-selector/theme-selector.service'; imports: [ // Custom components ThemeSelectorComponent, + PageHomeModule, // // TODO Import pages // PageStructureViewerModule, // PageFeaturesViewerModule, diff --git a/projects/demo-showcase/src/app/page-home/page-home.component.html b/projects/demo-showcase/src/app/page-home/page-home.component.html index 13b15dd..c3771fe 100644 --- a/projects/demo-showcase/src/app/page-home/page-home.component.html +++ b/projects/demo-showcase/src/app/page-home/page-home.component.html @@ -19,7 +19,7 @@

ngx-structur Structure viewer, light mode Structure viewer, dark mode -

+

Visualize and interact with 3D molecular structures. Provides Mol* functionalities out-of-the-box for Angular developers.

@@ -46,7 +46,7 @@

Features viewer, light mode Features viewer, dark mode -

+

The ultimate tool for Angular developers who want to visualize and interact biological sequences and their features.

@@ -70,7 +70,7 @@

Sequence viewer Sequence viewer -

+

Angular native component for single sequences or multiple sequence alignments. Does not require any third party library.

diff --git a/projects/demo-showcase/src/app/page-home/page-home.module.ts b/projects/demo-showcase/src/app/page-home/page-home.module.ts index 4d6eced..d721be0 100644 --- a/projects/demo-showcase/src/app/page-home/page-home.module.ts +++ b/projects/demo-showcase/src/app/page-home/page-home.module.ts @@ -1,10 +1,9 @@ import { PageHomeComponent } from './page-home.component'; -import { CommonModule } from '@angular/common'; +// import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router'; +import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; - - @NgModule({ declarations: [ PageHomeComponent,